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;
|
package lexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fragments
|
||||||
fragment FIRST_DIGIT : [1-9] ;
|
fragment FIRST_DIGIT : [1-9] ;
|
||||||
fragment DIGIT : [0-9] ;
|
fragment DIGIT : [0-9] ;
|
||||||
|
|
||||||
NUMBER : FIRST_DIGIT DIGIT* ;
|
fragment LOWERCASE : [a-z] ;
|
||||||
WHITESPACE : ' ' -> skip ;
|
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