首页 > 解决方案 > 如何在 JavaCC 中为整数编写正则表达式?

问题描述

如何为整数和标识符编写正则表达式:

整数由一个或多个数字 0-9 组成的字符串表示,并且可以以减号“-”开头,例如 246、-789。除非它的 0。数字不能以 0 开头,例如 0123,这是非法的。

标识符可以是一串以字母开头的字母、数字或下划线(“_”)。标识符不能是保留字。

这是我到目前为止所拥有的,这是不正确的。我将如何编写上面在 JavaCC 中指定的正则表达式。

TOKEN :
    {
        < #LETTER: ["a"-"z","A"-"Z"] >
    |   < DIGIT: ["0"] | (["1"-"9"])+>
    |   < IDENTIFIER: < LETTER > | < DIGIT > | (< LETTER > | ["_"]) >
    }

标签: compiler-constructionjavacc

解决方案


你的问题有些不清楚。但是像下面这样的东西可能会起作用

TOKEN :
    {
      < #LETTER: ["a"-"z","A"-"Z"] >
    | < #DIGIT: ["0"-"9"]>
    | < IDENTIFIER: <LETTER> ( <LETTER> | <DIGIT> | "_")* >
    | < INTEGER: "0" | ("-")? ["1"-"9"] (<DIGIT>)* >
    }

当然 IDENTIFIER 可能匹配保留字,所以你还需要处理那个方面。有关常用方法,请参阅常见问题解答。

如果这是一项作业,请务必引用此答案。


推荐阅读