private JSKeyword(JSToken token, string name, JSKeyword next) { m_name = name; m_token = token; m_length = m_name.Length; m_next = next; }
private JSKeyword(JSToken token, string name, JSKeyword next) { this.name = name; this.next = next; this.token = token; this.length = this.name.Length; }
internal bool Exists(string target) { JSKeyword keyword = this; while (keyword != null) { if (keyword.m_name == target) { return(true); } keyword = keyword.m_next; } return(false); }
/*internal bool Exists(string target) * { * JSKeyword keyword = this; * while (keyword != null) * { * if (keyword.m_name == target) * { * return true; * } * keyword = keyword.m_next; * } * return false; * }*/ internal JSToken GetKeyword(string source, int startPosition, int wordLength) { JSKeyword keyword = this; nextToken: while (null != keyword) { if (wordLength == keyword.m_length) { // equal number of characters // we know the first char has to match, so start with the second for (int i = 1, j = startPosition + 1; i < wordLength; i++, j++) { char ch1 = keyword.m_name[i]; char ch2 = source[j]; if (ch1 == ch2) { // match -- continue continue; } else if (ch2 < ch1) { // because the list is in order, if the character for the test // is less than the character for the keyword we are testing against, // then we know this isn't going to be in any other node return(JSToken.Identifier); } else { // must be greater than the current token -- try the next one keyword = keyword.m_next; goto nextToken; } } // if we got this far, it was a complete match return(keyword.m_token); } else if (wordLength < keyword.m_length) { // in word-length order first of all, so if the length of the test string is // less than the length of the keyword node, this is an identifier return(JSToken.Identifier); } keyword = keyword.m_next; } return(JSToken.Identifier); }
internal JSToken GetKeyword(Context context, int wordLength) { JSKeyword keyword = this; nextToken: while (null != keyword) { if (wordLength == keyword.m_length) { // we know the first char has to match for (int i = 1, j = context.StartPosition + 1; i < wordLength; i++, j++) { char ch1 = keyword.m_name[i]; char ch2 = context.SourceString[j]; if (ch1 == ch2) { continue; } else if (ch2 < ch1) { return(JSToken.Identifier); } else { keyword = keyword.m_next; goto nextToken; } } return(keyword.m_token); } else if (wordLength < keyword.m_length) { return(JSToken.Identifier); } keyword = keyword.m_next; } return(JSToken.Identifier); }
internal JSToken GetKeyword(Context token, int length) { JSKeyword keyword = this; nextToken: while (null != keyword) { if (length == keyword.length) { // we know the first char has to match for (int i = 1, j = token.startPos + 1; i < length; i++, j++) { char ch1 = keyword.name[i]; char ch2 = token.source_string[j]; if (ch1 == ch2) { continue; } else if (ch2 < ch1) { return(JSToken.Identifier); } else { keyword = keyword.next; goto nextToken; } } return(keyword.token); } else if (length < keyword.length) { return(JSToken.Identifier); } keyword = keyword.next; } return(JSToken.Identifier); }
// each list must in order or length first, shortest to longest. // for equal length words, in alphabetical order internal static JSKeyword[] InitKeywords() { JSKeyword[] keywords = new JSKeyword[26]; // a // b keywords['b' - 'a'] = new JSKeyword(JSToken.Break, "break"); // c keywords['c' - 'a'] = new JSKeyword(JSToken.Case, "case", new JSKeyword(JSToken.Catch, "catch", new JSKeyword(JSToken.Class, "class", new JSKeyword(JSToken.Const, "const", new JSKeyword(JSToken.Continue, "continue"))))); // d keywords['d' - 'a'] = new JSKeyword(JSToken.Do, "do", new JSKeyword(JSToken.Delete, "delete", new JSKeyword(JSToken.Default, "default", new JSKeyword(JSToken.Debugger, "debugger")))); // e keywords['e' - 'a'] = new JSKeyword(JSToken.Else, "else", new JSKeyword(JSToken.Enum, "enum", new JSKeyword(JSToken.Export, "export", new JSKeyword(JSToken.Extends, "extends")))); // f keywords['f' - 'a'] = new JSKeyword(JSToken.For, "for", new JSKeyword(JSToken.False, "false", new JSKeyword(JSToken.Finally, "finally", new JSKeyword(JSToken.Function, "function")))); // g keywords['g' - 'a'] = new JSKeyword(JSToken.Get, "get"); // i keywords['i' - 'a'] = new JSKeyword(JSToken.If, "if", new JSKeyword(JSToken.In, "in", new JSKeyword(JSToken.Import, "import", new JSKeyword(JSToken.Interface, "interface", new JSKeyword(JSToken.Implements, "implements", new JSKeyword(JSToken.InstanceOf, "instanceof")))))); // l keywords['l' - 'a'] = new JSKeyword(JSToken.Let, "let"); // m //keywords['m' - 'a'] = new JSKeyword(JSToken.Module, "module"); // n keywords['n' - 'a'] = new JSKeyword(JSToken.New, "new", new JSKeyword(JSToken.Null, "null", new JSKeyword(JSToken.Native, "native"))); // p keywords['p' - 'a'] = new JSKeyword(JSToken.Public, "public", new JSKeyword(JSToken.Package, "package", new JSKeyword(JSToken.Private, "private", new JSKeyword(JSToken.Protected, "protected")))); // r keywords['r' - 'a'] = new JSKeyword(JSToken.Return, "return"); // s keywords['s' - 'a'] = new JSKeyword(JSToken.Set, "set", new JSKeyword(JSToken.Super, "super", new JSKeyword(JSToken.Static, "static", new JSKeyword(JSToken.Switch, "switch")))); // t keywords['t' - 'a'] = new JSKeyword(JSToken.Try, "try", new JSKeyword(JSToken.This, "this", new JSKeyword(JSToken.True, "true", new JSKeyword(JSToken.Throw, "throw", new JSKeyword(JSToken.TypeOf, "typeof"))))); // u // v keywords['v' - 'a'] = new JSKeyword(JSToken.Var, "var", new JSKeyword(JSToken.Void, "void")); // w keywords['w' - 'a'] = new JSKeyword(JSToken.With, "with", new JSKeyword(JSToken.While, "while")); // y keywords['y' - 'a'] = new JSKeyword(JSToken.Yield, "yield"); return(keywords); }
internal static JSKeyword[] InitKeywords() { JSKeyword[] keywords = new JSKeyword[26]; JSKeyword keyword; // a keyword = new JSKeyword(JSToken.Abstract, "abstract"); keyword = new JSKeyword(JSToken.Assert, "assert", keyword); keywords['a' - 'a'] = keyword; // b keyword = new JSKeyword(JSToken.Boolean, "boolean"); keyword = new JSKeyword(JSToken.Break, "break", keyword); keyword = new JSKeyword(JSToken.Byte, "byte", keyword); keywords['b' - 'a'] = keyword; // c keyword = new JSKeyword(JSToken.Continue, "continue"); keyword = new JSKeyword(JSToken.Const, "const", keyword); keyword = new JSKeyword(JSToken.Class, "class", keyword); keyword = new JSKeyword(JSToken.Catch, "catch", keyword); keyword = new JSKeyword(JSToken.Char, "char", keyword); keyword = new JSKeyword(JSToken.Case, "case", keyword); keywords['c' - 'a'] = keyword; // d keyword = new JSKeyword(JSToken.Debugger, "debugger"); keyword = new JSKeyword(JSToken.Default, "default", keyword); keyword = new JSKeyword(JSToken.Double, "double", keyword); keyword = new JSKeyword(JSToken.Delete, "delete", keyword); keyword = new JSKeyword(JSToken.Do, "do", keyword); keywords['d' - 'a'] = keyword; // e keyword = new JSKeyword(JSToken.Extends, "extends"); keyword = new JSKeyword(JSToken.Export, "export", keyword); keyword = new JSKeyword(JSToken.Ensure, "ensure", keyword); //keyword = new JSKeyword(JSToken.Event, "event", keyword); keyword = new JSKeyword(JSToken.Enum, "enum", keyword); keyword = new JSKeyword(JSToken.Else, "else", keyword); keywords['e' - 'a'] = keyword; // f keyword = new JSKeyword(JSToken.Function, "function"); keyword = new JSKeyword(JSToken.Finally, "finally", keyword); keyword = new JSKeyword(JSToken.Float, "float", keyword); keyword = new JSKeyword(JSToken.Final, "final", keyword); keyword = new JSKeyword(JSToken.False, "false", keyword); keyword = new JSKeyword(JSToken.For, "for", keyword); keywords['f' - 'a'] = keyword; // g keyword = new JSKeyword(JSToken.GoTo, "goto"); keyword = new JSKeyword(JSToken.Get, "get", keyword); keywords['g' - 'a'] = keyword; // i keyword = new JSKeyword(JSToken.InstanceOf, "instanceof"); keyword = new JSKeyword(JSToken.Implements, "implements", keyword); keyword = new JSKeyword(JSToken.Invariant, "invariant", keyword); keyword = new JSKeyword(JSToken.Interface, "interface", keyword); keyword = new JSKeyword(JSToken.Internal, "internal", keyword); keyword = new JSKeyword(JSToken.Import, "import", keyword); keyword = new JSKeyword(JSToken.Int, "int", keyword); keyword = new JSKeyword(JSToken.In, "in", keyword); keyword = new JSKeyword(JSToken.If, "if", keyword); keywords['i' - 'a'] = keyword; // l keyword = new JSKeyword(JSToken.Long, "long"); keywords['l' - 'a'] = keyword; // n keyword = new JSKeyword(JSToken.Namespace, "namespace"); keyword = new JSKeyword(JSToken.Native, "native", keyword); keyword = new JSKeyword(JSToken.Null, "null", keyword); keyword = new JSKeyword(JSToken.New, "new", keyword); keywords['n' - 'a'] = keyword; // p keyword = new JSKeyword(JSToken.Protected, "protected"); keyword = new JSKeyword(JSToken.Private, "private", keyword); keyword = new JSKeyword(JSToken.Package, "package", keyword); keyword = new JSKeyword(JSToken.Public, "public", keyword); keywords['p' - 'a'] = keyword; // r keyword = new JSKeyword(JSToken.Require, "require"); keyword = new JSKeyword(JSToken.Return, "return", keyword); keywords['r' - 'a'] = keyword; // s keyword = new JSKeyword(JSToken.Synchronized, "synchronized"); keyword = new JSKeyword(JSToken.Switch, "switch", keyword); keyword = new JSKeyword(JSToken.Static, "static", keyword); keyword = new JSKeyword(JSToken.Super, "super", keyword); keyword = new JSKeyword(JSToken.Short, "short", keyword); keyword = new JSKeyword(JSToken.Set, "set", keyword); keywords['s' - 'a'] = keyword; // t keyword = new JSKeyword(JSToken.Transient, "transient"); keyword = new JSKeyword(JSToken.TypeOf, "typeof", keyword); keyword = new JSKeyword(JSToken.Throws, "throws", keyword); keyword = new JSKeyword(JSToken.Throw, "throw", keyword); keyword = new JSKeyword(JSToken.True, "true", keyword); keyword = new JSKeyword(JSToken.This, "this", keyword); keyword = new JSKeyword(JSToken.Try, "try", keyword); keywords['t' - 'a'] = keyword; // v keyword = new JSKeyword(JSToken.Volatile, "volatile"); keyword = new JSKeyword(JSToken.Void, "void", keyword); keyword = new JSKeyword(JSToken.Var, "var", keyword); keywords['v' - 'a'] = keyword; // u keyword = new JSKeyword(JSToken.Use, "use"); keywords['u' - 'a'] = keyword; // w keyword = new JSKeyword(JSToken.While, "while"); keyword = new JSKeyword(JSToken.With, "with", keyword); keywords['w' - 'a'] = keyword; return(keywords); }
// each list must in order or length first, shortest to longest. // for equal length words, in alphabetical order internal static JSKeyword[] InitKeywords() { JSKeyword[] keywords = new JSKeyword[26]; // a // b keywords['b' - 'a'] = new JSKeyword(JSToken.Break, "break"); // c keywords['c' - 'a'] = new JSKeyword(JSToken.Case, "case", new JSKeyword(JSToken.Catch, "catch", new JSKeyword(JSToken.Class, "class", new JSKeyword(JSToken.Const, "const", new JSKeyword(JSToken.Continue, "continue"))))); // d keywords['d' - 'a'] = new JSKeyword(JSToken.Do, "do", new JSKeyword(JSToken.Delete, "delete", new JSKeyword(JSToken.Default, "default", new JSKeyword(JSToken.Debugger, "debugger")))); // e keywords['e' - 'a'] = new JSKeyword(JSToken.Else, "else", new JSKeyword(JSToken.Enum, "enum", new JSKeyword(JSToken.Export, "export", new JSKeyword(JSToken.Extends, "extends")))); // f keywords['f' - 'a'] = new JSKeyword(JSToken.For, "for", new JSKeyword(JSToken.False, "false", new JSKeyword(JSToken.Finally, "finally", new JSKeyword(JSToken.Function, "function")))); // g keywords['g' - 'a'] = new JSKeyword(JSToken.Get, "get"); // i keywords['i' - 'a'] = new JSKeyword(JSToken.If, "if", new JSKeyword(JSToken.In, "in", new JSKeyword(JSToken.Import, "import", new JSKeyword(JSToken.Interface, "interface", new JSKeyword(JSToken.Implements, "implements", new JSKeyword(JSToken.InstanceOf, "instanceof")))))); // l keywords['l' - 'a'] = new JSKeyword(JSToken.Let, "let"); // n keywords['n' - 'a'] = new JSKeyword(JSToken.New, "new", new JSKeyword(JSToken.Null, "null")); // p keywords['p' - 'a'] = new JSKeyword(JSToken.Public, "public", new JSKeyword(JSToken.Package, "package", new JSKeyword(JSToken.Private, "private", new JSKeyword(JSToken.Protected, "protected")))); // r keywords['r' - 'a'] = new JSKeyword(JSToken.Return, "return"); // s keywords['s' - 'a'] = new JSKeyword(JSToken.Set, "set", new JSKeyword(JSToken.Super, "super", new JSKeyword(JSToken.Static, "static", new JSKeyword(JSToken.Switch, "switch")))); // t keywords['t' - 'a'] = new JSKeyword(JSToken.Try, "try", new JSKeyword(JSToken.This, "this", new JSKeyword(JSToken.True, "true", new JSKeyword(JSToken.Throw, "throw", new JSKeyword(JSToken.TypeOf, "typeof"))))); // u // v keywords['v' - 'a'] = new JSKeyword(JSToken.Var, "var", new JSKeyword(JSToken.Void, "void")); // w keywords['w' - 'a'] = new JSKeyword(JSToken.With, "with", new JSKeyword(JSToken.While, "while")); // y keywords['y' - 'a'] = new JSKeyword(JSToken.Yield, "yield"); return keywords; }
private JSKeyword(JSToken token, string name, JSKeyword next){ this.name = name; this.next = next; this.token = token; this.length = this.name.Length; }
internal static JSKeyword[] InitKeywords(){ JSKeyword[] keywords = new JSKeyword[26]; JSKeyword keyword; // a keyword = new JSKeyword(JSToken.Abstract, "abstract"); keyword = new JSKeyword(JSToken.Assert, "assert", keyword); keywords['a' - 'a'] = keyword; // b keyword = new JSKeyword(JSToken.Boolean, "boolean"); keyword = new JSKeyword(JSToken.Break, "break", keyword); keyword = new JSKeyword(JSToken.Byte, "byte", keyword); keywords['b' - 'a'] = keyword; // c keyword = new JSKeyword(JSToken.Continue, "continue"); keyword = new JSKeyword(JSToken.Const, "const", keyword); keyword = new JSKeyword(JSToken.Class, "class", keyword); keyword = new JSKeyword(JSToken.Catch, "catch", keyword); keyword = new JSKeyword(JSToken.Char, "char", keyword); keyword = new JSKeyword(JSToken.Case, "case", keyword); keywords['c' - 'a'] = keyword; // d keyword= new JSKeyword(JSToken.Debugger, "debugger"); keyword = new JSKeyword(JSToken.Default, "default", keyword); keyword = new JSKeyword(JSToken.Double, "double", keyword); keyword = new JSKeyword(JSToken.Delete, "delete", keyword); keyword = new JSKeyword(JSToken.Do, "do", keyword); keywords['d' - 'a'] = keyword; // e keyword = new JSKeyword(JSToken.Extends, "extends"); keyword = new JSKeyword(JSToken.Export, "export", keyword); keyword = new JSKeyword(JSToken.Ensure, "ensure", keyword); keyword = new JSKeyword(JSToken.Event, "event", keyword); keyword = new JSKeyword(JSToken.Enum, "enum", keyword); keyword = new JSKeyword(JSToken.Else, "else", keyword); keywords['e' - 'a'] = keyword; // f keyword = new JSKeyword(JSToken.Function, "function"); keyword = new JSKeyword(JSToken.Finally, "finally", keyword); keyword = new JSKeyword(JSToken.Float, "float", keyword); keyword = new JSKeyword(JSToken.Final, "final", keyword); keyword = new JSKeyword(JSToken.False, "false", keyword); keyword = new JSKeyword(JSToken.For, "for", keyword); keywords['f' - 'a'] = keyword; // g keyword = new JSKeyword(JSToken.Goto, "goto"); keyword = new JSKeyword(JSToken.Get, "get", keyword); keywords['g' - 'a'] = keyword; // i keyword = new JSKeyword(JSToken.Instanceof, "instanceof"); keyword = new JSKeyword(JSToken.Implements, "implements", keyword); keyword = new JSKeyword(JSToken.Invariant, "invariant", keyword); keyword = new JSKeyword(JSToken.Interface, "interface", keyword); keyword = new JSKeyword(JSToken.Internal, "internal", keyword); keyword = new JSKeyword(JSToken.Import, "import", keyword); keyword = new JSKeyword(JSToken.Int, "int", keyword); keyword = new JSKeyword(JSToken.In, "in", keyword); keyword = new JSKeyword(JSToken.If, "if", keyword); keywords['i' - 'a'] = keyword; // l keyword = new JSKeyword(JSToken.Long, "long"); keywords['l' - 'a'] = keyword; // n keyword = new JSKeyword(JSToken.Namespace, "namespace"); keyword = new JSKeyword(JSToken.Native, "native", keyword); keyword = new JSKeyword(JSToken.Null, "null", keyword); keyword = new JSKeyword(JSToken.New, "new", keyword); keywords['n' - 'a'] = keyword; // p keyword = new JSKeyword(JSToken.Protected, "protected"); keyword = new JSKeyword(JSToken.Private, "private", keyword); keyword = new JSKeyword(JSToken.Package, "package", keyword); keyword = new JSKeyword(JSToken.Public, "public", keyword); keywords['p' - 'a'] = keyword; // r keyword = new JSKeyword(JSToken.Require, "require"); keyword = new JSKeyword(JSToken.Return, "return", keyword); keywords['r' - 'a'] = keyword; // s keyword = new JSKeyword(JSToken.Synchronized, "synchronized"); keyword = new JSKeyword(JSToken.Switch, "switch", keyword); keyword = new JSKeyword(JSToken.Static, "static", keyword); keyword = new JSKeyword(JSToken.Super, "super", keyword); keyword = new JSKeyword(JSToken.Short, "short", keyword); keyword = new JSKeyword(JSToken.Set, "set", keyword); keywords['s' - 'a'] = keyword; // t keyword = new JSKeyword(JSToken.Transient, "transient"); keyword = new JSKeyword(JSToken.Typeof, "typeof", keyword); keyword = new JSKeyword(JSToken.Throws, "throws", keyword); keyword = new JSKeyword(JSToken.Throw, "throw", keyword); keyword = new JSKeyword(JSToken.True, "true", keyword); keyword = new JSKeyword(JSToken.This, "this", keyword); keyword = new JSKeyword(JSToken.Try, "try", keyword); keywords['t' - 'a'] = keyword; // v keyword = new JSKeyword(JSToken.Volatile, "volatile"); keyword = new JSKeyword(JSToken.Void, "void", keyword); keyword = new JSKeyword(JSToken.Var, "var", keyword); keywords['v' - 'a'] = keyword; // u keyword = new JSKeyword(JSToken.Use, "use"); keywords['u' - 'a'] = keyword; // w keyword = new JSKeyword(JSToken.While, "while"); keyword = new JSKeyword(JSToken.With, "with", keyword); keywords['w' - 'a'] = keyword; return keywords; }