我正在使用flex为我的编译器项目编写一个扫描程序,并用decaf(一种类似于C / C ++和Java的语言)编写,我的扫描程序已启动并运行,但失败了在识别布尔常量(true,false)时,我在下面写了模式和C代码:
<dt>
@Html.Label("Head of Department:")
</dt>
<dd>
@Html.DisplayFor(model => model.employeeDetails.getName)
</dd>
但不是返回"true" { yylval.boolConstant = 1;
return T_BoolConstant; }
"false" { yylval.boolConstant = 0;
return T_BoolConstant; }
而是继续返回T_BoolConstant
。扫描仪基本上都认识到“真实”和“真实”。 “false”作为文本有效被视为标识符而不是布尔二进制变量。
对于类似类型的问题,我有this个答案,但它对我不起作用!
有没有猜到为什么它没有返回true / false?
答案 0 :(得分:1)
这是因为您有超出这些规则的标识符规则。 Flex从上到下匹配规则。