public static List <Token> Lex(string text) { Init(); var lexer = new LexerMachine(); foreach (char c in text) { if ((c == '_') || (Char.IsLetter(c))) { lexer.Letter(c); } else { if (Char.IsDigit(c)) { lexer.Digit(c); } else { if (IsOperator(c)) { lexer.Operator(c); } else { lexer.Whitespace(' '); } } } } lexer.Whitespace(' '); return(lexer.Tokens); }
public static List <Token> LexWeak(string text) { // item 475 Init(); var lexer = new LexerMachine(); foreach (char c in text) { // item 480 if ((c == '_') || (Char.IsLetter(c))) { // item 488 lexer.OnMessage( LexerMachine.LetterMessage, c ); } else { // item 485 if (Char.IsDigit(c)) { // item 495 lexer.OnMessage( LexerMachine.DigitMessage, c ); } else { // item 490 if (IsOperator(c)) { // item 496 lexer.OnMessage( LexerMachine.OperatorMessage, c ); } else { // item 497 lexer.OnMessage( LexerMachine.WhitespaceMessage, ' ' ); } } } } // item 498 lexer.OnMessage( LexerMachine.WhitespaceMessage, ' ' ); // item 478 return(lexer.Tokens); }
private static void CreateToken(LexerMachine lexer, TokenType type) { if (lexer.Buffer.Length == 0) { } else { string text = lexer.Buffer.ToString(); lexer.Buffer.Length = 0; Token token = new Token(text, type); lexer.Tokens.Add(token); } }
private static bool TryMakeLongOperator(LexerMachine lexer, char c) { char previous = lexer.Buffer[0]; char[] chars = { previous, c }; string text = new String(chars); if (LongOperators.Contains(text)) { lexer.Buffer.Length = 0; Token token = new Token(text, TokenType.Operator); lexer.Tokens.Add(token); return(true); } else { return(false); } }
public static List <Token> Lex(string text) { // item 310 Init(); var lexer = new LexerMachine(); foreach (char c in text) { // item 315 if ((c == '_') || (Char.IsLetter(c))) { // item 323 lexer.Letter(c); } else { // item 320 if (Char.IsDigit(c)) { // item 324 lexer.Digit(c); } else { // item 325 if (IsOperator(c)) { // item 328 lexer.Operator(c); } else { // item 329 lexer.Whitespace(' '); } } } } // item 314 lexer.Whitespace(' '); // item 313 return(lexer.Tokens); }
public static List<Token> Lex(string text) { IEnumerator<char> _it311 = null; char c = default(char); // item 310 Init(); var lexer = new LexerMachine(); // item 3110001 _it311 = ((IEnumerable<char>)text).GetEnumerator(); while (true) { // item 3110002 if (_it311.MoveNext()) { } else { break; } // item 3110004 c = _it311.Current; // item 315 if (c == '_') { // item 323 lexer.Letter(c); } else { // item 318 if (Char.IsLetter(c)) { // item 323 lexer.Letter(c); } else { // item 320 if (Char.IsDigit(c)) { // item 324 lexer.Digit(c); } else { // item 325 if (IsOperator(c)) { // item 328 lexer.Operator(c); } else { // item 329 lexer.Whitespace(' '); } } } } } // item 314 lexer.Whitespace(' '); // item 313 return lexer.Tokens; }
public static List <Token> Lex(string text) { IEnumerator <char> _it311 = null; char c = default(char); // item 310 Init(); var lexer = new LexerMachine(); // item 3110001 _it311 = ((IEnumerable <char>)text).GetEnumerator(); while (true) { // item 3110002 if (_it311.MoveNext()) { } else { break; } // item 3110004 c = _it311.Current; // item 315 if (c == '_') { // item 323 lexer.Letter(c); } else { // item 318 if (Char.IsLetter(c)) { // item 323 lexer.Letter(c); } else { // item 320 if (Char.IsDigit(c)) { // item 324 lexer.Digit(c); } else { // item 325 if (IsOperator(c)) { // item 328 lexer.Operator(c); } else { // item 329 lexer.Whitespace(' '); } } } } } // item 314 lexer.Whitespace(' '); // item 313 return(lexer.Tokens); }
private static void CreateOperator(LexerMachine lexer) { CreateToken(lexer, TokenType.Operator); }
private static void CreateNumber(LexerMachine lexer) { CreateToken(lexer, TokenType.Number); }
private static void CreateIdentifier(LexerMachine lexer) { CreateToken(lexer, TokenType.Identifier); }
private static void AddChar(LexerMachine lexer, char c) { lexer.Buffer.Append(c); }
public Lexer() { Machine = new LexerMachine(); }