【问题标题】:Define variable name except reservred worsd in a compiler在编译器中定义除保留字之外的变量名
【发布时间】:2011-10-10 05:12:03
【问题描述】:

我正在尝试使用 JavaCC 为 Java 的一个子集做一个词法分析器。变量名可以是字母、数字和_的任意组合,以字母开头。我只有一个问题,保留字(例如intnew,...)不能用作变量名,我想知道如何声明它。现在我有这个,首先声明保留字,然后是变量名的规则,是否足够,然后由解析器处理它?

//Reserved words
TOKEN:{
  < TOK_BOOLEAN : "boolean" > |
  < TOK_BREAK : "break" > |
  < TOK_CLASS : "class" >
}

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

TOK_ID 是变量名的规则。

谢谢,有不清楚的地方可以问我。

【问题讨论】:

    标签: compiler-construction lexer javacc


    【解决方案1】:

    JavaCC 词法分析器选择获得最长匹配的第一个定义,因此您的定义应该足够了。

    此行为记录在JavaCC TokenManager Tutorial 中。 JavaCC FAQ 解释它here

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多