我有以下语法定义,包含两个保留关键字和两个类似语句:
module Test
// parse(#Statement,"do c") succeeds
// parse(#Statement,"define c") gives an ambiguity
start syntax Statement =
do: "do" Identifier+
| define: "define" Identifier+;
layout MyLayout = [\t\n\ \r\f]*;
lexical Identifier = ([a-z0-9] !<< [a-z][a-z0-9]* !>> [a-z0-9]) \ MyKeywords;
keyword MyKeywords = "do" | "define";
然后
parse(#Statement,"do c")
解析罚款,类似案例
parse(#Statement,"define c")
含糊不清。
我做错了什么?
答案 0 :(得分:0)
对不起大家,案件已经解决,测试模块受到另一个导致歧义的模块的干扰。