如何在Flex中定义布尔值(2)

时间:2018-02-03 01:13:32

标签: c regex flex-lexer

我正在使用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?

1 个答案:

答案 0 :(得分:1)

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