diff --git a/src/services/syntax/SyntaxGenerator.js b/src/services/syntax/SyntaxGenerator.js index c567290fd08..81a5b340878 100644 --- a/src/services/syntax/SyntaxGenerator.js +++ b/src/services/syntax/SyntaxGenerator.js @@ -2154,16 +2154,28 @@ function max(array, func) { } return max; } +function generateUtilities() { + var result = ""; + result += " var fixedWidthArray = ["; + for (var i = 0; i <= TypeScript.SyntaxKind.LastFixedWidth; i++) { + if (i) { + result += ", "; + } + if (i < TypeScript.SyntaxKind.FirstFixedWidth) { + result += "0"; + } + else { + result += TypeScript.SyntaxFacts.getText(i).length; + } + } + result += "];\r\n"; + result += " export function fixedWidthTokenLength(kind: SyntaxKind) {\r\n"; + result += " return fixedWidthArray[kind];\r\n"; + result += " }\r\n"; + return result; +} function generateScannerUtilities() { var result = "///\r\n" + "\r\n" + "module TypeScript {\r\n" + " export module ScannerUtilities {\r\n"; - result += " export function fixedWidthTokenLength(kind: SyntaxKind) {\r\n"; - result += " switch (kind) {\r\n"; - for (var k = TypeScript.SyntaxKind.FirstFixedWidth; k <= TypeScript.SyntaxKind.LastFixedWidth; k++) { - result += " case SyntaxKind." + syntaxKindName(k) + ": return " + TypeScript.SyntaxFacts.getText(k).length + ";\r\n"; - } - result += " default: throw new Error();\r\n"; - result += " }\r\n"; - result += " }\r\n\r\n"; var i; var keywords = []; for (i = TypeScript.SyntaxKind.FirstKeyword; i <= TypeScript.SyntaxKind.LastKeyword; i++) { @@ -2275,9 +2287,11 @@ var walker = generateWalker(); var scannerUtilities = generateScannerUtilities(); var visitor = generateVisitor(); var servicesUtilities = generateServicesUtilities(); +var utilities = generateUtilities(); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxInterfaces.generated.ts", syntaxInterfaces, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker.generated.ts", walker, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxVisitor.generated.ts", visitor, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxUtilities.generated.ts", servicesUtilities, false); +sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\utilities.generated.ts", utilities, false); diff --git a/src/services/syntax/scanner.ts b/src/services/syntax/scanner.ts index f7064c36ca1..51d8fc221ed 100644 --- a/src/services/syntax/scanner.ts +++ b/src/services/syntax/scanner.ts @@ -1708,114 +1708,8 @@ module TypeScript.Scanner { }; } + var fixedWidthArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 5, 8, 8, 7, 6, 2, 4, 5, 7, 3, 8, 2, 2, 10, 3, 4, 6, 6, 4, 5, 4, 3, 6, 3, 4, 5, 4, 5, 5, 4, 6, 7, 6, 5, 10, 9, 3, 7, 7, 9, 6, 6, 5, 3, 7, 11, 7, 3, 6, 7, 6, 3, 6, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 2, 2, 2, 1, 2]; function fixedWidthTokenLength(kind: SyntaxKind) { - switch (kind) { - case SyntaxKind.BreakKeyword: return 5; - case SyntaxKind.CaseKeyword: return 4; - case SyntaxKind.CatchKeyword: return 5; - case SyntaxKind.ContinueKeyword: return 8; - case SyntaxKind.DebuggerKeyword: return 8; - case SyntaxKind.DefaultKeyword: return 7; - case SyntaxKind.DeleteKeyword: return 6; - case SyntaxKind.DoKeyword: return 2; - case SyntaxKind.ElseKeyword: return 4; - case SyntaxKind.FalseKeyword: return 5; - case SyntaxKind.FinallyKeyword: return 7; - case SyntaxKind.ForKeyword: return 3; - case SyntaxKind.FunctionKeyword: return 8; - case SyntaxKind.IfKeyword: return 2; - case SyntaxKind.InKeyword: return 2; - case SyntaxKind.InstanceOfKeyword: return 10; - case SyntaxKind.NewKeyword: return 3; - case SyntaxKind.NullKeyword: return 4; - case SyntaxKind.ReturnKeyword: return 6; - case SyntaxKind.SwitchKeyword: return 6; - case SyntaxKind.ThisKeyword: return 4; - case SyntaxKind.ThrowKeyword: return 5; - case SyntaxKind.TrueKeyword: return 4; - case SyntaxKind.TryKeyword: return 3; - case SyntaxKind.TypeOfKeyword: return 6; - case SyntaxKind.VarKeyword: return 3; - case SyntaxKind.VoidKeyword: return 4; - case SyntaxKind.WhileKeyword: return 5; - case SyntaxKind.WithKeyword: return 4; - case SyntaxKind.ClassKeyword: return 5; - case SyntaxKind.ConstKeyword: return 5; - case SyntaxKind.EnumKeyword: return 4; - case SyntaxKind.ExportKeyword: return 6; - case SyntaxKind.ExtendsKeyword: return 7; - case SyntaxKind.ImportKeyword: return 6; - case SyntaxKind.SuperKeyword: return 5; - case SyntaxKind.ImplementsKeyword: return 10; - case SyntaxKind.InterfaceKeyword: return 9; - case SyntaxKind.LetKeyword: return 3; - case SyntaxKind.PackageKeyword: return 7; - case SyntaxKind.PrivateKeyword: return 7; - case SyntaxKind.ProtectedKeyword: return 9; - case SyntaxKind.PublicKeyword: return 6; - case SyntaxKind.StaticKeyword: return 6; - case SyntaxKind.YieldKeyword: return 5; - case SyntaxKind.AnyKeyword: return 3; - case SyntaxKind.BooleanKeyword: return 7; - case SyntaxKind.ConstructorKeyword: return 11; - case SyntaxKind.DeclareKeyword: return 7; - case SyntaxKind.GetKeyword: return 3; - case SyntaxKind.ModuleKeyword: return 6; - case SyntaxKind.RequireKeyword: return 7; - case SyntaxKind.NumberKeyword: return 6; - case SyntaxKind.SetKeyword: return 3; - case SyntaxKind.StringKeyword: return 6; - case SyntaxKind.OpenBraceToken: return 1; - case SyntaxKind.CloseBraceToken: return 1; - case SyntaxKind.OpenParenToken: return 1; - case SyntaxKind.CloseParenToken: return 1; - case SyntaxKind.OpenBracketToken: return 1; - case SyntaxKind.CloseBracketToken: return 1; - case SyntaxKind.DotToken: return 1; - case SyntaxKind.DotDotDotToken: return 3; - case SyntaxKind.SemicolonToken: return 1; - case SyntaxKind.CommaToken: return 1; - case SyntaxKind.LessThanToken: return 1; - case SyntaxKind.GreaterThanToken: return 1; - case SyntaxKind.LessThanEqualsToken: return 2; - case SyntaxKind.GreaterThanEqualsToken: return 2; - case SyntaxKind.EqualsEqualsToken: return 2; - case SyntaxKind.EqualsGreaterThanToken: return 2; - case SyntaxKind.ExclamationEqualsToken: return 2; - case SyntaxKind.EqualsEqualsEqualsToken: return 3; - case SyntaxKind.ExclamationEqualsEqualsToken: return 3; - case SyntaxKind.PlusToken: return 1; - case SyntaxKind.MinusToken: return 1; - case SyntaxKind.AsteriskToken: return 1; - case SyntaxKind.PercentToken: return 1; - case SyntaxKind.PlusPlusToken: return 2; - case SyntaxKind.MinusMinusToken: return 2; - case SyntaxKind.LessThanLessThanToken: return 2; - case SyntaxKind.GreaterThanGreaterThanToken: return 2; - case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: return 3; - case SyntaxKind.AmpersandToken: return 1; - case SyntaxKind.BarToken: return 1; - case SyntaxKind.CaretToken: return 1; - case SyntaxKind.ExclamationToken: return 1; - case SyntaxKind.TildeToken: return 1; - case SyntaxKind.AmpersandAmpersandToken: return 2; - case SyntaxKind.BarBarToken: return 2; - case SyntaxKind.QuestionToken: return 1; - case SyntaxKind.ColonToken: return 1; - case SyntaxKind.EqualsToken: return 1; - case SyntaxKind.PlusEqualsToken: return 2; - case SyntaxKind.MinusEqualsToken: return 2; - case SyntaxKind.AsteriskEqualsToken: return 2; - case SyntaxKind.PercentEqualsToken: return 2; - case SyntaxKind.LessThanLessThanEqualsToken: return 3; - case SyntaxKind.GreaterThanGreaterThanEqualsToken: return 3; - case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: return 4; - case SyntaxKind.AmpersandEqualsToken: return 2; - case SyntaxKind.BarEqualsToken: return 2; - case SyntaxKind.CaretEqualsToken: return 2; - case SyntaxKind.SlashToken: return 1; - case SyntaxKind.SlashEqualsToken: return 2; - default: throw new Error(); - } + return fixedWidthArray[kind]; } } \ No newline at end of file diff --git a/src/services/syntax/scannerUtilities.generated.ts b/src/services/syntax/scannerUtilities.generated.ts index 9e1a018006b..97f0093a672 100644 --- a/src/services/syntax/scannerUtilities.generated.ts +++ b/src/services/syntax/scannerUtilities.generated.ts @@ -2,117 +2,6 @@ module TypeScript { export module ScannerUtilities { - export function fixedWidthTokenLength(kind: SyntaxKind) { - switch (kind) { - case SyntaxKind.BreakKeyword: return 5; - case SyntaxKind.CaseKeyword: return 4; - case SyntaxKind.CatchKeyword: return 5; - case SyntaxKind.ContinueKeyword: return 8; - case SyntaxKind.DebuggerKeyword: return 8; - case SyntaxKind.DefaultKeyword: return 7; - case SyntaxKind.DeleteKeyword: return 6; - case SyntaxKind.DoKeyword: return 2; - case SyntaxKind.ElseKeyword: return 4; - case SyntaxKind.FalseKeyword: return 5; - case SyntaxKind.FinallyKeyword: return 7; - case SyntaxKind.ForKeyword: return 3; - case SyntaxKind.FunctionKeyword: return 8; - case SyntaxKind.IfKeyword: return 2; - case SyntaxKind.InKeyword: return 2; - case SyntaxKind.InstanceOfKeyword: return 10; - case SyntaxKind.NewKeyword: return 3; - case SyntaxKind.NullKeyword: return 4; - case SyntaxKind.ReturnKeyword: return 6; - case SyntaxKind.SwitchKeyword: return 6; - case SyntaxKind.ThisKeyword: return 4; - case SyntaxKind.ThrowKeyword: return 5; - case SyntaxKind.TrueKeyword: return 4; - case SyntaxKind.TryKeyword: return 3; - case SyntaxKind.TypeOfKeyword: return 6; - case SyntaxKind.VarKeyword: return 3; - case SyntaxKind.VoidKeyword: return 4; - case SyntaxKind.WhileKeyword: return 5; - case SyntaxKind.WithKeyword: return 4; - case SyntaxKind.ClassKeyword: return 5; - case SyntaxKind.ConstKeyword: return 5; - case SyntaxKind.EnumKeyword: return 4; - case SyntaxKind.ExportKeyword: return 6; - case SyntaxKind.ExtendsKeyword: return 7; - case SyntaxKind.ImportKeyword: return 6; - case SyntaxKind.SuperKeyword: return 5; - case SyntaxKind.ImplementsKeyword: return 10; - case SyntaxKind.InterfaceKeyword: return 9; - case SyntaxKind.LetKeyword: return 3; - case SyntaxKind.PackageKeyword: return 7; - case SyntaxKind.PrivateKeyword: return 7; - case SyntaxKind.ProtectedKeyword: return 9; - case SyntaxKind.PublicKeyword: return 6; - case SyntaxKind.StaticKeyword: return 6; - case SyntaxKind.YieldKeyword: return 5; - case SyntaxKind.AnyKeyword: return 3; - case SyntaxKind.BooleanKeyword: return 7; - case SyntaxKind.ConstructorKeyword: return 11; - case SyntaxKind.DeclareKeyword: return 7; - case SyntaxKind.GetKeyword: return 3; - case SyntaxKind.ModuleKeyword: return 6; - case SyntaxKind.RequireKeyword: return 7; - case SyntaxKind.NumberKeyword: return 6; - case SyntaxKind.SetKeyword: return 3; - case SyntaxKind.StringKeyword: return 6; - case SyntaxKind.OpenBraceToken: return 1; - case SyntaxKind.CloseBraceToken: return 1; - case SyntaxKind.OpenParenToken: return 1; - case SyntaxKind.CloseParenToken: return 1; - case SyntaxKind.OpenBracketToken: return 1; - case SyntaxKind.CloseBracketToken: return 1; - case SyntaxKind.DotToken: return 1; - case SyntaxKind.DotDotDotToken: return 3; - case SyntaxKind.SemicolonToken: return 1; - case SyntaxKind.CommaToken: return 1; - case SyntaxKind.LessThanToken: return 1; - case SyntaxKind.GreaterThanToken: return 1; - case SyntaxKind.LessThanEqualsToken: return 2; - case SyntaxKind.GreaterThanEqualsToken: return 2; - case SyntaxKind.EqualsEqualsToken: return 2; - case SyntaxKind.EqualsGreaterThanToken: return 2; - case SyntaxKind.ExclamationEqualsToken: return 2; - case SyntaxKind.EqualsEqualsEqualsToken: return 3; - case SyntaxKind.ExclamationEqualsEqualsToken: return 3; - case SyntaxKind.PlusToken: return 1; - case SyntaxKind.MinusToken: return 1; - case SyntaxKind.AsteriskToken: return 1; - case SyntaxKind.PercentToken: return 1; - case SyntaxKind.PlusPlusToken: return 2; - case SyntaxKind.MinusMinusToken: return 2; - case SyntaxKind.LessThanLessThanToken: return 2; - case SyntaxKind.GreaterThanGreaterThanToken: return 2; - case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: return 3; - case SyntaxKind.AmpersandToken: return 1; - case SyntaxKind.BarToken: return 1; - case SyntaxKind.CaretToken: return 1; - case SyntaxKind.ExclamationToken: return 1; - case SyntaxKind.TildeToken: return 1; - case SyntaxKind.AmpersandAmpersandToken: return 2; - case SyntaxKind.BarBarToken: return 2; - case SyntaxKind.QuestionToken: return 1; - case SyntaxKind.ColonToken: return 1; - case SyntaxKind.EqualsToken: return 1; - case SyntaxKind.PlusEqualsToken: return 2; - case SyntaxKind.MinusEqualsToken: return 2; - case SyntaxKind.AsteriskEqualsToken: return 2; - case SyntaxKind.PercentEqualsToken: return 2; - case SyntaxKind.LessThanLessThanEqualsToken: return 3; - case SyntaxKind.GreaterThanGreaterThanEqualsToken: return 3; - case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: return 4; - case SyntaxKind.AmpersandEqualsToken: return 2; - case SyntaxKind.BarEqualsToken: return 2; - case SyntaxKind.CaretEqualsToken: return 2; - case SyntaxKind.SlashToken: return 1; - case SyntaxKind.SlashEqualsToken: return 2; - default: throw new Error(); - } - } - export function identifierKind(str: string, start: number, length: number): SyntaxKind { switch (length) { case 2: // do, if, in diff --git a/src/services/syntax/syntaxGenerator.ts b/src/services/syntax/syntaxGenerator.ts index 79b815cdfeb..e14b2e05daa 100644 --- a/src/services/syntax/syntaxGenerator.ts +++ b/src/services/syntax/syntaxGenerator.ts @@ -1401,22 +1401,44 @@ function max(array: T[], func: (v: T) => number): number { return max; } +function generateUtilities(): string { + var result = ""; + result += " var fixedWidthArray = ["; + for (var i = 0; i <= TypeScript.SyntaxKind.LastFixedWidth; i++) { + if (i) { + result += ", "; + } + + if (i < TypeScript.SyntaxKind.FirstFixedWidth) { + result += "0"; + } + else { + result += TypeScript.SyntaxFacts.getText(i).length; + } + } + result += "];\r\n"; + + result += " function fixedWidthTokenLength(kind: SyntaxKind) {\r\n"; + result += " return fixedWidthArray[kind];\r\n"; + + //result += " switch (kind) {\r\n"; + + //for (var k = TypeScript.SyntaxKind.FirstFixedWidth; k <= TypeScript.SyntaxKind.LastFixedWidth; k++) { + // result += " case SyntaxKind." + syntaxKindName(k) + ": return " + TypeScript.SyntaxFacts.getText(k).length + ";\r\n"; + //} + //result += " default: throw new Error();\r\n"; + //result += " }\r\n"; + result += " }\r\n"; + + return result; +} + function generateScannerUtilities(): string { var result = "///\r\n" + "\r\n" + "module TypeScript {\r\n" + " export module ScannerUtilities {\r\n"; - result += " export function fixedWidthTokenLength(kind: SyntaxKind) {\r\n"; - result += " switch (kind) {\r\n"; - - for (var k = TypeScript.SyntaxKind.FirstFixedWidth; k <= TypeScript.SyntaxKind.LastFixedWidth; k++) { - result += " case SyntaxKind." + syntaxKindName(k) + ": return " + TypeScript.SyntaxFacts.getText(k).length + ";\r\n"; - } - result += " default: throw new Error();\r\n"; - result += " }\r\n"; - result += " }\r\n\r\n"; - var i: number; var keywords: { text: string; kind: TypeScript.SyntaxKind; }[] = []; @@ -1566,6 +1588,7 @@ var walker = generateWalker(); var scannerUtilities = generateScannerUtilities(); var visitor = generateVisitor(); var servicesUtilities = generateServicesUtilities(); +var utilities = generateUtilities(); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxInterfaces.generated.ts", syntaxInterfaces, false); @@ -1573,3 +1596,4 @@ sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxVisitor.generated.ts", visitor, false); sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxUtilities.generated.ts", servicesUtilities, false); +sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\utilities.generated.ts", utilities, false); diff --git a/src/services/syntax/utilities.generated.ts b/src/services/syntax/utilities.generated.ts new file mode 100644 index 00000000000..6a71842c624 --- /dev/null +++ b/src/services/syntax/utilities.generated.ts @@ -0,0 +1,4 @@ + var fixedWidthArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 5, 8, 8, 7, 6, 2, 4, 5, 7, 3, 8, 2, 2, 10, 3, 4, 6, 6, 4, 5, 4, 3, 6, 3, 4, 5, 4, 5, 5, 4, 6, 7, 6, 5, 10, 9, 3, 7, 7, 9, 6, 6, 5, 3, 7, 11, 7, 3, 6, 7, 6, 3, 6, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 2, 2, 2, 1, 2]; + export function fixedWidthTokenLength(kind: SyntaxKind) { + return fixedWidthArray[kind]; + }