标签: javacc

为什么019不是JavaScript语法错误?或者为什么019> 020

如果我输入019 > 020JavaScript控制台(在Chrome和Firefox中测试),我会得到答案true.

这是因为020被解释为OctalIntegerLiteral(等于16),而019显然被解释为DecimalLiteral(和等于19).由于19是大于16,019 > 020true.

令我困惑的是为什么019被解释为DecimalLiteral第一名.它是哪种产品?DecimalIntegerLiteral不允许019:

DecimalIntegerLiteral ::
    0
    NonZeroDigit DecimalDigits_opt
Run Code Online (Sandbox Code Playgroud)

OctalIntegerLiteral也不允许019(因为9不是八进制数字):

OctalIntegerLiteral ::
    0 OctalDigit
    OctalIntegerLiteral OctalDigit

OctalDigit :: one of
    0 1 2 3 4 5 6 7
Run Code Online (Sandbox Code Playgroud)

因此,从我在规范中看到的,019实际应该被拒绝,我不明白为什么它被解释为十进制整数.

我想这里有一些兼容性规则,但我找不到正式的定义.可以请任何人帮我这个吗?

(为什么我需要这个:我正在使用JavaCC为Java开发一个JavaScript/ECMAScript解析器,并且必须特别注意规范 - 以及它的偏差.)

javascript grammar javacc language-lawyer ecmascript-5

78
推荐指数
1
解决办法
2544
查看次数

什么更好,ANTLR或JavaCC?

关注的是文档/可学习性,eclipse集成,工具,社区支持和性能(大致按此顺序).

antlr javacc

45
推荐指数
6
解决办法
2万
查看次数

解析Objective-C代码进行静态分析

我喜欢静态分析和编译时检查,几乎是出错,但我今天的大部分工作都是在Objective-C中.为了解决这种紧张局势,我希望能够编写自己的分析工具,我可以在Objective-C项目上运行.

但是在互联网上搜索网络表明,人们很难将完整的Objective-C语法整合在一起.一个网站 基本上建议放弃.

我确实在ANTLR网站上找到了一个语法,但是当我把它解雇时,我根本无法解析它.例如,它回应了该行:

void x();
Run Code Online (Sandbox Code Playgroud)

src/main/resources/somecode.m line 1:0 no viable alternative at input 'void'

:(

我仔细研究了语法,发现以下令人沮丧的免责声明:

it's a work in progress, most of the .h file can be parsed
Run Code Online (Sandbox Code Playgroud)

但是我需要能够解析接口和实现的东西.

某处有完整的Objective-C 2.0语法吗?我更喜欢可以与Scala一起使用的东西(所以任何与Java兼容的东西,比如ANTLR,都是完美的),但是在这一点上,我愿意为另一个解析器工具包设计一些东西.

parsing antlr static-analysis objective-c javacc

19
推荐指数
2
解决办法
4343
查看次数

将javacc设置为使用命令提示符

我一直在尝试设置javacc但是遇到了问题.当我输入javacc adder.jj时(在adder.jj所在的目录中)我得到"'javacc'不被识别为内部或外部命令,可操作程序或批处理文件".

根据我的理解,我必须转到环境变量,TEMP并将PATH更改为C:\ javacc-6.0\bin; 添加到开头.(我将javacc zip解压缩到C :).我试过这个,并没有运气重新启动我的电脑.我也尝试添加C:\ javacc-6.0\bin\lib但是再没有运气.当我安装java以获取cmd以识别javac并且它工作时,我这样做了!

这可能是微不足道的,但我无法让它工作!

谢谢

亨利

java path javacc

18
推荐指数
1
解决办法
1万
查看次数

有没有人有javacc教程的链接?

在线找到这种文件非常困难.

我在JAVAWORLD中找到了一个,但这个不包括jjTree和访客.

有没有人碰巧有一些指向教程的链接?

javacc

16
推荐指数
2
解决办法
1万
查看次数

如何在语法上实现JJTree

我有一个任务是使用JavaCC为讲师提供的语言制作一个带有语义分析的自上而下的解析器.我已经写出了生产规则,没有错误.我完全坚持如何将JJTree用于我的代码,而我在互联网上搜索教程的时间并没有让我任何地方.只是想知道是否有人可以抽出时间来解释如何在代码中实现JJTree?或者,如果有一个隐藏的分步教程那里的某个地方将是一个很大的帮助!

以下是我的一些生产规则,以防他们提供帮助.提前致谢!

void program() : {}
{
  (decl())* (function())* main_prog()
}

void decl() #void : {}
{
  (
    var_decl() | const_decl()
   )
}

void var_decl() #void : {}
{
  <VAR> ident_list() <COLON> type()
 (<COMMA> ident_list() <COLON> type())* <SEMIC>
}

void const_decl()  #void : {}
{
  <CONSTANT> identifier() <COLON> type() <EQUAL> expression()
 ( <COMMA> identifier() <COLON> type() <EQUAL > expression())* <SEMIC>
} 

void function() #void : {}
{
  type() identifier() <LBR> param_list() <RBR>
  <CBL>
  (decl())*
  (statement() <SEMIC> )*
  returnRule() (expression() | …
Run Code Online (Sandbox Code Playgroud)

java compiler-construction parsing javacc abstract-syntax-tree

14
推荐指数
1
解决办法
1万
查看次数

Javacc解析器选项LOOKAHEAD,Java

我最近开始使用javacc开始使用语法分析器,其中一个字段是选项...我有一个类似下面的代码:

options
{
  LOOKAHEAD=1;
}
PARSER_BEGIN(Calculator)

public class Calculator
{
 ...
}
PARSER_END(Calculator)
Run Code Online (Sandbox Code Playgroud)

LOOKAHEAD选项究竟是什么意思?谢谢

java javacc

9
推荐指数
2
解决办法
7778
查看次数

使用Java/JavaCC解析RTF文档

是否有人熟悉RTF文档格式并使用任何Java库进行解析.人们这样做的标准方法是使用JDK Swing API中的RTFEditorKit:

Swing RTFEditorKit API

但是在解析RTF文档方面并不准确.事实上,API中有一条评论:

RTF支持不是由Swing团队编写的.在未来,我们希望改善所提供的支持.

我不认为我会等待这件事发生:)

另一种方法是使用JavaCC定义语法并生成解析器.这样做效果更好,但我找不到完整的语法.我试过了:

PMD应用JavaCC语法

这是好的和以下(这是迄今为止最好的).

Koders RTFParserDelegate和ETranslate Grammar

有关ETranslate语法的各种实现(我知道Nutch API可能会使用它). 有谁知道哪个是最准确的语法或者是否有更好的方法?

我可以开始通过JavaCC文档来理解.jj文件并针对RTF文件进行测试......这是我目前的方法,但它需要一段时间...任何帮助将不胜感激

java parsing rtf javacc

8
推荐指数
1
解决办法
6440
查看次数

JavaCC入门

我是JavaCC的新手,无法弄清楚如何让它运行.我使用的是Mac OS X,我安装了javacc-6.0.zip并将其解压缩.我无法从我的路径访问javacc脚本,因为在javacc终端上键入时我收到以下消息:

    -bash: javacc: command not found
Run Code Online (Sandbox Code Playgroud)

如何从我的路径访问javacc脚本?

我的解压缩文件夹javacc-6.0位于以下目录中:/Users/Rishabh/Desktop/javacc

所以我在终端上做了以下事情:

    PATH=$PATH\:/Users/Rishabh/Desktop/javacc/javacc-6.0/
Run Code Online (Sandbox Code Playgroud)

javacc接下来打字给我同样的信息.

jar javacc

7
推荐指数
1
解决办法
6847
查看次数

我如何在intellij IDEA中设置javacc

我搜索了插件仓库并下载了javacc插件.

现在我有了插件,我如何在IntelliJ中使用它.

我的项目看起来像这样.

在此输入图像描述

java intellij-idea javacc

7
推荐指数
1
解决办法
3179
查看次数