📄 fuzzyjava.g
字号:
lexer grammar FuzzyJava;options { language=Python; filter=true;}IMPORT : 'import' WS name=QIDStar WS? ';' ; /** Avoids having "return foo;" match as a field */RETURN : 'return' (options {greedy=false;}:.)* ';' ;CLASS : 'class' WS name=ID WS? ('extends' WS QID WS?)? ('implements' WS QID WS? (',' WS? QID WS?)*)? '{' {print "found class "+$name.text} ; METHOD : TYPE WS name=ID WS? '(' ( ARG WS? (',' WS? ARG WS?)* )? ')' WS? ('throws' WS QID WS? (',' WS? QID WS?)*)? '{' {print "found method "+$name.text} ;FIELD : TYPE WS name=ID '[]'? WS? (';'|'=') {print "found var "+$name.text} ;STAT: ('if'|'while'|'switch'|'for') WS? '(' ; CALL : name=QID WS? '(' {print "found call "+$name.text} ;COMMENT : '/*' (options {greedy=false;} : . )* '*/' {print "found comment "+self.getText()} ;SL_COMMENT : '//' (options {greedy=false;} : . )* '\n' {print "found // comment "+self.getText()} ; STRING : '"' (options {greedy=false;}: ESC | .)* '"' ;CHAR : '\'' (options {greedy=false;}: ESC | .)* '\'' ;WS : (' '|'\t'|'\n')+ ;fragmentQID : ID ('.' ID)* ; /** QID cannot see beyond end of token so using QID '.*'? somewhere won't * ever match since k=1 lookahead in the QID loop of '.' will make it loop. * I made this rule to compensate. */fragmentQIDStar : ID ('.' ID)* '.*'? ;fragmentTYPE: QID '[]'? ; fragmentARG : TYPE WS ID ;fragmentID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')* ;fragmentESC : '\\' ('"'|'\''|'\\') ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -