implement lexer grammar
This commit is contained in:
7
.idea/sonarlint/issuestore/index.pb
generated
7
.idea/sonarlint/issuestore/index.pb
generated
@ -0,0 +1,7 @@
|
||||
|
||||
O
|
||||
src/main/java/util/ast/AST.java,1/d/1db155d1c826f7ce81093ab2ee88b0afa9c698d8
|
||||
P
|
||||
src/main/java/util/ast/Node.java,a/e/ae3ca6b6b8a06fc2cba3a596d8a0d8d2acd8a16f
|
||||
S
|
||||
#src/main/java/parser/LL1Parser.java,8/1/8144fa070804a52542f36f405b65ca25f794ce3c
|
@ -7,8 +7,76 @@ lexer grammar StupsLexer;
|
||||
package lexer;
|
||||
}
|
||||
|
||||
// Fragments
|
||||
fragment FIRST_DIGIT : [1-9] ;
|
||||
fragment DIGIT : [0-9] ;
|
||||
|
||||
NUMBER : FIRST_DIGIT DIGIT* ;
|
||||
WHITESPACE : ' ' -> skip ;
|
||||
fragment LOWERCASE : [a-z] ;
|
||||
fragment UPPERCASE : [A-Z] ;
|
||||
fragment LETTER : LOWERCASE | UPPERCASE ;
|
||||
|
||||
fragment LETTER_DIGIT : LETTER | DIGIT ;
|
||||
|
||||
fragment WHITE : [\t\r\n\u0020] ; // HORIZONTAL TAB, CARRIAGE RETURN, LINE FEED, SPACE
|
||||
fragment ANY : [\u0000-\u007F] ;
|
||||
fragment ANY_NOBREAK : ~[\r\n] ;
|
||||
fragment ANY_NOWHITE : ~[\t\r\n\u0020] ;
|
||||
|
||||
// Discard
|
||||
WHITESPACE : WHITE+ -> skip ;
|
||||
MULTILINE_COMMENT : '/*' ANY* '*/' -> skip ;
|
||||
LINE_COMMENT : '//' ANY_NOBREAK* -> skip ;
|
||||
|
||||
// Keywords
|
||||
CLASS : 'class' ;
|
||||
PUBLIC : 'public' ;
|
||||
STATIC : 'static' ;
|
||||
|
||||
VOID_TYPE : 'void' ;
|
||||
BOOLEAN_TYPE : 'boolean' ;
|
||||
STRING_TYPE : 'String' ;
|
||||
|
||||
IF : 'if' ;
|
||||
ELSE : 'else' ;
|
||||
WHILE : 'while' ;
|
||||
|
||||
PRINTLN : 'System.out.println' ;
|
||||
|
||||
// Operators
|
||||
ASSIGN : '=' ;
|
||||
|
||||
ADD : '+' ;
|
||||
SUB : '-' ;
|
||||
MUL : '*' ;
|
||||
DIV : '/' ;
|
||||
MOD : '%' ;
|
||||
|
||||
NOT : '!' ;
|
||||
AND : '&&' ;
|
||||
OR : '||' ;
|
||||
|
||||
EQUAL : '==' ;
|
||||
NOT_EQUAL : '!=' ;
|
||||
LESS : '<' ;
|
||||
LESS_EQUAL : '<=' ;
|
||||
GREATER : '>' ;
|
||||
GREATER_EQUAL : '>=' ;
|
||||
|
||||
// Structural
|
||||
L_PAREN : '(' ;
|
||||
R_PAREN : ')' ;
|
||||
L_BRACE : '{' ;
|
||||
R_BRACE : '}' ;
|
||||
L_BRACKET : '[' ;
|
||||
R_BRACKET : ']' ;
|
||||
SEMICOLON : ';' ;
|
||||
COMMA : ',' ;
|
||||
DOT : '.' ;
|
||||
|
||||
// Literals
|
||||
INTEGER_LIT : '-'? DIGIT+ ;
|
||||
STRING_LIT : '"' ANY_NOBREAK* '"' ;
|
||||
BOOLEAN_LIT : 'true' | 'false' ;
|
||||
|
||||
// Identifier
|
||||
IDENTIFIER : LETTER LETTER_DIGIT* ;
|
||||
|
Reference in New Issue
Block a user