【发布时间】:2015-08-04 18:31:22
【问题描述】:
我正在尝试编写一个表达式求值器,我尝试在其中添加下划线 _ 作为表示某个常数值的保留字。
这是我的语法,它成功解析了5 ^ _,但无法解析_^ 5(没有空格)。它只对 ^ 运算符起作用。
COMPILER Formula
CHARACTERS
digit = '0'..'9'.
letter = 'A'..'z'.
TOKENS
number = digit {digit}.
identifier = letter {letter|digit}.
self = '_'.
IGNORE '\r' + '\n'
PRODUCTIONS
Formula = Term{ ( '+' | '-') Term}.
Term = Factor {( '*' | "/" |'%' | '^' ) Factor}.
Factor = number | Self.
Self = self.
END Formula.
我错过了什么?我正在使用 Coco/R 编译器生成器。
【问题讨论】:
-
除了
Formula制作之后的一段缺失时间,我认为这是一个错字,我没有看到任何明显的问题。_ * 5输入出现什么错误? -
@500-InternalServerError 发布了更新
-
去掉
letter和identifier定义(目前未引用)是否有效? - 我认为您的letter定义可能会导致问题,因为它包含“Z”(大写)和“a”(小写)之间的字符。 -
@500-InternalServerError 是的,它有效。请发表你的答案,我会接受的。我将编辑我的问题以突出真正的问题