如何在Flex中定义一个boolean(二)

How to define a boolean in Flex (2)

我正在使用 flex and writing it in decaf(一种类似于 C/C++ 和 Java 的语言)为我的编译器项目编写一个扫描器,我的扫描器已启动并且 运行 , 除了它无法识别布尔常量 (true, false) 我在下面写了模式和 C 代码:

"true" { yylval.boolConstant = 1;
       return T_BoolConstant; }

"false" { yylval.boolConstant = 0;
        return T_BoolConstant; }

但不是返回 T_BoolConstant,而是一直返回 T_Identifier。基本上,扫描仪将 "true" 和 "false" 都识别为有效文本,可被视为标识符而不是布尔二进制变量。

类似问题有 个答案,但对我来说仍然不起作用!

猜猜为什么它没有返回 true/false?

这是因为您的标识符规则高于这些规则。 Flex 从上到下匹配规则。