[英]Context-Free-Grammar for assignment statements in ANTLR
我正在為上下文無關的語法編寫ANTLR詞法分析器。
這就是我現在所擁有的:
statement
: assignment_statement
;
assignment_statement
: IDENTIFIER '=' expression ';'
;
term
: IDENT
| '(' expression ')'
| INTEGER
| STRING_LITERAL
| CHAR_LITERAL
| IDENT '(' actualParameters ')'
;
negation
: 'not'* term
;
unary
: ('+' | '-')* negation
;
mult
: unary (('*' | '/' | 'mod') unary)*
;
add
: mult (('+' | '-') mult)*
;
relation
: add (('=' | '/=' | '<' | '<=' | '>=' | '>') add)*
;
expression
: relation (('and' | 'or') relation)*
;
IDENTIFIER : LETTER (LETTER | DIGIT)*;
fragment DIGIT : '0'..'9';
fragment LETTER : ('a'..'z' | 'A'..'Z');
因此,我的工作分配聲明由以下表格標識
IDENTIFIER = expression;
但是,賦值語句還應考慮到右側是函數調用(語句的返回值)的情況。 例如,
items = getItems();
我應該為此添加什么語法規則? 我曾考慮過將函數調用添加到“表達式”規則中,但是我不確定是否應該將函數調用視為表達式。
謝謝
這種語法對我來說很好。 我假設IDENT和IDENTIFIER相同,並且其余終端還有其他產品。
這個生產似乎定義了一個函數調用。
| IDENT '(' actualParameters ')'
您需要一個生產實際參數的東西,像這樣。
actualParameters : nothing | expression ( ',' expression )*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.