1
AntlrWorks說輸入{'AND','OR'..'XOR'}
可以匹配兩種選擇。即使有圖形顯示,我也無法弄清楚比賽是怎麼發生的! 下面的語法怎麼會出現歧義,是否有辦法將其刪除?ANTLR語法中的歧義
grammar testg;
rul : contains_expr ;
contains_expr: 'CONTAINS' contains_expression
//'CONTAINS' contains_or
;
contains_expression : primary (('OR'|'AND'|'XOR') primary)*
;
primary options{backtrack = true;}
: '(' contains_expression ')'
| class_expression
;
class_expression : simple_class_expr
| '(' simple_class_expr contains_expr ')'
|(simple_class_expr contains_expr)
;
simple_class_expr: identifier // RM_TYPE_NAME
| identifier identifier // RM_TYPE_NAME variable
| archetype_class_expr
| versioned_class_expression
| version_class_expression
// | identified_obj_expression // need to be used once VersionedClassExpr is removed
;
identifier
: ID
;
archetype_class_expr
: '.ace'
;
versioned_class_expression
: '.vce'
;
version_class_expression
: '.vnce'
;
temp :
;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
sarnold已經解釋了爲什麼ANTLR抱怨你的語法。如果您仍然需要幫助,我建議您不要僅發佈語法,而是要解釋*您正在嘗試編寫哪種語言的語法。你能舉一些例子並解釋它嗎?我很難通過單獨看看你的語法來搞清楚你想要解析什麼語言。 – 2012-01-08 19:27:39
嗨巴特。這是來自openRHR原型查詢語言Antlr端口的一個片段:http://www.openehr.org/wiki/display/spec/Archetype+Query+Language+Description現有的語法是用一個LR解析器生成器構建的, m試圖擺脫左遞歸和LR分析器很容易的其他事情。我設法解決了我在這裏提出的問題,這要歸功於sarnold和句法謂詞。我可能不得不問更多的Antlr問題:) – mahonya 2012-01-10 11:13:00
您是否知道以下語法:http://www.openehr.org/wiki/display/spec/ANTLR+AQL+grammar? (沒有測試!) – 2012-01-10 13:02:54