2
我設計的,我想支持使用以下語法陣列的聲明中低標點符號語言:如何編寫一個匹配「x by y by a」的語法?
512 by 512 of 255 // a 512x512 array filled with 255
100 of 0 // a 100-element array filled with 0
expr1 by expr2 by expr3 ... by exprN of exprFill
這些數組聲明是其中很多隻是一種表達方式。
我很難搞清楚如何編寫語法規則。我已經簡化我的語法到再現我的麻煩最簡單的事情:
grammar Dimensions;
program
: expression EOF
;
expression
: expression (BY expression)* OF expression
| INT
;
BY : 'by';
OF : 'of';
INT : [0-9]+;
WHITESPACE : [ \t\n\r]+ -> skip;
當我在10 of 1
喂,我得到了我想要的解析:
當我20 by 10 of 1
飼料,中間的expression
非終端向上傾斜10 of 1
,留下任何與規則匹配的內容OF expression
:
而且我得到以下警告:
line 2:0 mismatched input '<EOF>' expecting 'of'
我想看到的分析是
(program (expression (expression 20) by (expression 10) of (expression 1)) <EOF>)
有沒有一種方法可以讓我重新制定我的語法來實現這一目標?我覺得我需要的是BY和OF之間的正確聯繫,但我不知道如何在兩個運營商之間進行表達。