我在 Coco/R 中有一个悬空的问题。我尝试了解Coco/R 用户手册并询问 Google,但我无法自己解决问题。
我将问题简化为以下 Coco/R 语法(保存在 中new4.atg
):
COMPILER Expr
CHARACTERS
digit = '0'..'9'.
letter = 'A'..'Z'.
TOKENS
number = digit { digit }.
name = letter { digit | letter }.
PRODUCTIONS
Expr = Test | Id Test.
Test = Test2.
Test2=Id | "(" Test ")".
Id=IdName|IdNumber.
IdName = name.
IdNumber = number.
END Expr.
当我想用 构建编译器时coco.bat
,我得到了这个答案:
Coco/R (Dec 22, 2014)
checking
new 4.atg(15,1): LL1 warning in Expr: number is start of several alternatives
new 4.atg(15,1): LL1 warning in Expr: name is start of several alternatives
parser + scanner generated
0 errors detected
在Google的最佳结果中,我读到我可以声明IF(isXXXFollowYYY())
声明,但我不知道它如何以及是否是最佳解决方案。(在我的例子中:Expr = Test | If(isTestFollowID)Id Test
。但是在哪里isTestFollowID
声明?)
当我开始时,我不想收到任何警告coco.bat
。