feature: refactor api parse to g4 (#365)
* feature: refactor api parse to g4 * new g4 parser * add CHANGE_LOG.MD * refactor * fix byte bug * refactor * optimized * optimized * revert * update readme.md * update readme.md * update readme.md * update readme.md * remove no need * fix java gen * add upgrade * resolve confilits Co-authored-by: anqiansong <anqiansong@xiaoheiban.cn>
This commit is contained in:
46
tools/goctl/api/parser/g4/ApiLexer.g4
Normal file
46
tools/goctl/api/parser/g4/ApiLexer.g4
Normal file
@@ -0,0 +1,46 @@
|
||||
lexer grammar ApiLexer;
|
||||
|
||||
// Keywords
|
||||
ATDOC: '@doc';
|
||||
ATHANDLER: '@handler';
|
||||
INTERFACE: 'interface{}';
|
||||
ATSERVER: '@server';
|
||||
|
||||
// Whitespace and comments
|
||||
WS: [ \t\r\n\u000C]+ -> channel(HIDDEN);
|
||||
COMMENT: '/*' .*? '*/' -> channel(88);
|
||||
LINE_COMMENT: '//' ~[\r\n]* -> channel(88);
|
||||
STRING: '"' (~["\\] | EscapeSequence)* '"';
|
||||
RAW_STRING: '`' (~[`\\\r\n] | EscapeSequence)+ '`';
|
||||
LINE_VALUE: ':' [ \t]* (STRING|(~[\r\n"`]*));
|
||||
ID: Letter LetterOrDigit*;
|
||||
|
||||
|
||||
fragment ExponentPart
|
||||
: [eE] [+-]? Digits
|
||||
;
|
||||
|
||||
fragment EscapeSequence
|
||||
: '\\' [btnfr"'\\]
|
||||
| '\\' ([0-3]? [0-7])? [0-7]
|
||||
| '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit
|
||||
;
|
||||
fragment HexDigits
|
||||
: HexDigit ((HexDigit | '_')* HexDigit)?
|
||||
;
|
||||
fragment HexDigit
|
||||
: [0-9a-fA-F]
|
||||
;
|
||||
fragment Digits
|
||||
: [0-9] ([0-9_]* [0-9])?
|
||||
;
|
||||
|
||||
fragment LetterOrDigit
|
||||
: Letter
|
||||
| [0-9]
|
||||
;
|
||||
fragment Letter
|
||||
: [a-zA-Z$_] // these are the "java letters" below 0x7F
|
||||
| ~[\u0000-\u007F\uD800-\uDBFF] // covers all characters above 0x7F which are not a surrogate
|
||||
| [\uD800-\uDBFF] [\uDC00-\uDFFF] // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF
|
||||
;
|
||||
Reference in New Issue
Block a user