首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaCC IntegerLiteral

JavaCC IntegerLiteral
EN

Stack Overflow用户
提问于 2014-05-01 21:25:32
回答 2查看 195关注 0票数 0

我正在使用JavaCC构建一个词法分析器和一个解析器,我有以下代码:

代码语言:javascript
复制
TOKEN:
{
   < #DIGIT : [ "0"-"9" ] >
  |< INTEGER_LITERAL : (<DIGIT>)+ >
}


SimpleNode IntegerLiteral() :
{
  Token t;
}
{
(t=<INTEGER_LITERAL>)
{
    Integer n = new Integer(t.image);
    jjtThis.jjtSetValue( n );
    return jjtThis;
}
}

因此,它应该只接受整数,但它也接受4.或4%等。

EN

回答 2

Stack Overflow用户

发布于 2015-01-29 03:05:56

尝试在解析器规范文件中打开调试,如下所示:

代码语言:javascript
复制
OPTIONS {
  DEBUG_TOKEN_MANAGER=true
}

这将创建TokenManager在解析时所做的打印输出。

票数 1
EN

Stack Overflow用户

发布于 2015-08-18 01:06:49

"4.“和"4%%%%“并不是真正被接受的,因为如果您设置DEBUG_PARSER =true,解析器读取的内容总是"4”;在选项部分,您将看到当前读取的标记。我认为如果你像这样改变你的语法,你可以看到当它读取未处理的字符时抛出一个TokenMgrError

代码语言:javascript
复制
    SimpleNode IntegerLiteral() :
    {
      Token t;
    }
    {
    (
        t=<DIGIT>
    {
        Integer n = new Integer(t.image);
        jjtThis.jjtSetValue( n );
        return jjtThis;
    })+
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23408633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档