【发布时间】:2016-03-29 10:02:31
【问题描述】:
我有以下带有两个保留关键字和两个类似语句的语法定义:
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")
产生歧义。
我做错了什么?
【问题讨论】: