如何在JavaCC中为Integers写正则表达式?

时间:2018-10-17 17:07:04

标签: compiler-construction javacc

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

整数由一个或多个数字0-9和 可以以减号“-”开头,例如246,-789。除非数字为0,否则数字不能以0开头。 0123,这是非法的。

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

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

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

1 个答案:

答案 0 :(得分:0)

您的问题有些不清楚。但是类似以下的内容可能会起作用

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

当然IDENTIFIER可能会匹配保留字,因此您还需要处理该方面。有关常见方法,请参见常见问题解答。

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