У меня проблема с зависанием в 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
.