1 package org.simantics.parser.grammar.input2;
3 import org.simantics.parser.grammar.input2.Token;
13 %yylexthrow RuntimeException
14 %scanerror RuntimeException
16 return sym(GrammarTerminals.EOF);
20 private Token sym(int id) {
21 return new Token(id, yychar, yychar+yylength(), yytext());
27 nonterminal = [a-z]{idChar}*
28 terminal = [A-Z]{idChar}*
30 whitespace = [ \n\r\t]+
31 c_comment = "//" [^\n\r]*
32 cpp_comment = "/*" ~"*/"
39 "=" { return sym(GrammarTerminals.EQUALS); }
40 "|" { return sym(GrammarTerminals.BAR); }
41 ";" { return sym(GrammarTerminals.SEMICOLON); }
42 "#" { return sym(GrammarTerminals.HASH); }
43 "," { return sym(GrammarTerminals.COMMA); }
44 "(" { return sym(GrammarTerminals.LPAREN); }
45 ")" { return sym(GrammarTerminals.RPAREN); }
46 "*" { return sym(GrammarTerminals.STAR); }
47 "+" { return sym(GrammarTerminals.PLUS); }
48 "?" { return sym(GrammarTerminals.OPTIONAL); }
49 initial { return sym(GrammarTerminals.INITIAL); }
50 shift { return sym(GrammarTerminals.SHIFT); }
51 reduce { return sym(GrammarTerminals.REDUCE); }
52 {terminal} { return sym(GrammarTerminals.TERMINAL); }
53 {nonterminal} { return sym(GrammarTerminals.NONTERMINAL); }
55 . { throw new RuntimeException("Illegal character '" + yytext() + "'."); }