0
我想創建的minilang友好的函數名
這是我的示例腳本和預期的聲明
保留關鍵字VS長Identider(多字)
// actual // expected
set a = true; // 'set a' -> IDs // 'set' -> Set, 'a' -> IDS
Set name ('hello'); // 'Set name' -> IDs // 'Set name' -> IDs
set b = my friendly variable; // 'set b' -> IDs // 'set' -> Set, 'b' -> IDS
set my variable = 10; // 'set my variable' -> IDs // 'set' -> Set, 'my variable' -> IDs
Calculate sum (1, 2, 4); // 'Calculate sum' -> IDs // 'Calculate sum' -> IDs
我想有些保留關鍵字將在ID(具有多個詞的標識符)之前匹配。但ANTLR4只匹配ID。我嘗試在ID之前定義關鍵字但不起作用。
如何定義規則語句的關鍵詞ID之前匹配
謝謝!
這是我的語法
grammar MiniLang;
document
: (stmt NL*)+ EOF
;
stmt
: Set Space+ IDs Space* '=' Space* expr Space* ';' # SetStatement
| IDs Space* '(' Space* (expr (Space*(',' expr))*)? Space* ')' Space* ';' # FunctionCall
;
expr
: atom
;
atom
: IDs
| Number
| String
;
Set
: 'set'
;
Space
: ' '
;
Number
: [0-9]+
;
ID
: [a-zA-Z][a-zA-Z0-9]*
;
IDs
: ID (Space ID)*
;
String
: ['] (~['\r\n\\] | EscapeSequence)* [']
;
EscapeSequence
: '\\' [']
;
NL
: [\r\n]
;
太謝謝你了!我更清楚地理解詞法分析器和解析器。 – hoangitk