问题标签 [javacc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 是否有输出 javascript 代码的 Javacc 版本?
我正在寻找一个解析器生成器,它接受 Javacc 语法文件 (.jj) 并在 Javascript(而不是 Java)中生成解析器。这样的事情存在吗?或者,将 .jj 文件转换为 ANTLR(可以输出 Javascript)可以理解的东西会有多困难?
string - 如何在 JavaCC 中为新行使用反斜杠转义字符?
我的任务是创建一个词法分析器,除了一点点之外,我已经完成了所有工作。我需要创建一个将接受新行的字符串,并且该字符串由双引号分隔。该字符串接受分隔符内的任何数字、字母、某些指定的标点符号、反斜杠和双引号。我似乎无法弄清楚如何转义换行符。是否有某种转义字符的方法,例如换行符和制表符?
这是我的一些代码可能会有所帮助
所以我的字符串应该允许一个引号,然后是以下任何字符,如反斜杠、空格、数字等,然后是另一个引号。像 "\n" 这样的换行符不起作用。提前致谢!
json - 如何让javacc在生成源代码时不转义字符?
我使用 javacc 5.0 生成带有语法文件的 json 解析器:https ://github.com/inqwell/json/blob/master/src/main/javacc/com/inqwell/json/JSON.jj
但是生成的java源代码有一些错误。
和
在语法文件中,它们是:
和
这些大小写字符不应该被转义,但是怎么做呢?
更新
代码无法在我的IDEA中编译,请看我的截图:
parsing - javacc 令牌前缀
我试图在我的查询语言中允许这样的字符串:
其中第一个-
表示要排除该术语。问题是-
最终包含在令牌文本中,而不是被解析为排除令牌。我确定我错过了一些简单的东西,但我无法弄清楚。
java - 在不向前看的情况下删除选择冲突 - JavaCC
我正在尝试在 JavaCC 中制定以下生产规则,但出现选择冲突错误。我知道如何使用前瞻来修复它,但我的印象是我们不允许将它用于我们的任务。
任何想法表示赞赏!
java - 如何在语法上实现 JJTree
我的任务是使用 JavaCC 为讲师提供的语言制作带有语义分析的自上而下的解析器。我写出了生产规则,没有错误。我完全被困在如何在我的代码中使用 JJTree 并且我在互联网上搜索教程的时间并没有让我到任何地方。只是想知道有人可以花一些时间来解释如何在代码中实现 JJTree 吗?或者,如果有一个隐藏的分步教程,那将是一个很大的帮助!
以下是我的一些生产规则,以防万一。提前致谢!
grammar - 如何解决这个选择冲突 - JavaCC
我有一个 javacc 语法,它使用简单的表达式和条件语句定义了一种简单的脚本语言,我正在审查并尝试更正大致如下定义:
第一个明显的问题是表达式的定义方式,因为它用于定义 IfStatement,我很容易得到这样的结果: If (variable1 < variable2 >= variable3 )
我试图通过将条件表达式的逻辑与一般表达式的逻辑分开来纠正这一点,如下所示:
编译生成的 jj 文件时,我收到以下警告:警告:第 210 行第 3 列的 (...)* 构造中的选择冲突。嵌套在构造中的扩展和扩展后的构造具有共同的前缀,其中之一是:“+ " 考虑使用 2 或更多的前瞻进行嵌套扩展。
错误行号是生成的 jj 文件中的一行。我认为冲突是在遇到 SimpleExpression 时发生的,因为它无法确定正在解析的是 ConditionalExpression 还是 Expression 所以我尝试了:
接着
但它并没有消失。jj 文件中说存在选择冲突的行是
另一个问题是运算符优先级以某种方式搞砸了,例如 IF ( "a" == "a" | "c"=="c" ) 导致 | 在使用“c”作为其第二个操作数并给出 ClassCastException 的第二个 == 运算符之前被解释,我得出结论,解决这个问题需要重写整个语法,所以我想可能在复合的单个条件周围强制使用括号像这样的条件语句 if ( ("a" == "a") | ("c" == "c" ) ) 我只是不知道该怎么做。
java - 使用 JavaCC 删除 C 注释
我知道如何使用 SKIP 声明跳过这些注释,但我需要做的就是获取一个 C 源代码并输出相同的源代码而没有注释。
所以我声明了一个标记 <GENERIC_TEXT: (~[])+ >,它被复制到输出,并且不会跳过注释。我怀疑这个令牌会自己获取所有输入。
有人能帮助我吗?
谢谢