问题标签 [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.
parsing - 在 Java 中解析类乳胶语言
我正在尝试用Java 编写一个类似于Latex 的简单语言的解析器,即它包含许多非结构化文本,其中有几个\commands[with]{some}{parameters}。像 \\ 这样的转义序列也必须考虑在内。
我尝试使用 JavaCC 为其生成解析器,但看起来像 JavaCC 这样的编译器编译器只适用于高度结构化的代码(通常用于通用编程语言),而不适用于凌乱的类似 Latex 的标记。到目前为止,似乎我必须走低级并编写自己的有限状态机。
所以我的问题是,解析大部分非结构化输入的最简单方法是什么,中间只有几个类似 Latex 的命令?
编辑:使用有限状态机进行低级处理很困难,因为 Latex 命令可以嵌套,例如 \cmd1{\cmd2{\cmd3{...}}}
python - 从 JavaCC 源代码生成 Python 语言的解析器?
我的意思是???
标题中的,因为我不确定。让我解释一下情况。
我不是计算机科学专业的学生,而且我从未上过任何编译器课程。到目前为止,我一直认为编译器编写者或修过编译器课程的学生很优秀,因为他们必须用他们编写编译器的任何语言编写编译器的 Parser 组件。这不是一件容易的工作,对吧?
我正在处理信息检索问题。我想要的编程语言是 Python。
Parser Nature: http:
//ir.iit.edu/~dagr/frDocs/fr940104.0.txt是样本语料库。该文件包含大约 50 个带有一些 XML 样式标记的文档。(您可以在上面的链接中看到它)。我需要记下其他一些其他值,例如<DOCNO> FR940104-2-00001 </DOCNO>
& <PARENT> FR940104-2-00001 </PARENT>
,我只需要索引<TEXT> </TEXT>
文档的一部分,其中包含一些我需要删除的不同标签以及许多<!-- -->
要忽略的注释和一些&hyph; &space; &
字符实体。我不知道为什么语料库有这样的东西,因为它知道它既不是要由浏览器呈现,也不是正确的 XML 文档。
我想过使用任何 Python XML 解析器并提取所需的文本。但经过一番搜索后,我找到了我在这里使用的同一个语料库的JavaCC 解析器源代码 (Parser.jj)。快速查看JavaCC和 Compiler-compiler后发现,编译器编写者并没有我想象的那么好。他们使用 Compiler-compiler 生成所需语言的解析器代码。Wiki 说编译器的输入是一种语法(通常在 BNF 中)。这就是我迷路的地方。
- Parser.jj是语法(输入到称为 JavaCC 的编译器编译器)吗?这绝对不是 BNF。这个语法叫什么?为什么这个语法有Java语言?没有通用的语法语言吗?
- 我想要python解析器来解析语料库。有什么方法可以翻译 Parser.jj 以获得等效的 python 吗?如果是,那是什么?如果没有,我的其他选择是什么?
- 有没有人知道这个语料库是什么?它的原始来源在哪里?我想看看它的一些描述。它以名称分布在互联网上
frDocs.tar.gz
java - 为什么我的 JavaCC 解析器不解析小于 2 个字符的标记?
我正在研究应该解析 BBcodes 的 JavaCC 解析器。
我的 Javacc 源代码:patebin.com(Junit 测试:这里)
源代码有点工作,但它不想接受带有单个字符的标记,只能识别多字符串。
它确实解析了这个字符串:
"test[b]bold[/b]nothing[b]bold[/b]after"
但不是:
"t[b]bold[/b]nothing[b]bold[/b]after"
我有点迷路了,这里欢迎任何提示。
java - 如何匹配 JavaCC 中的可选打开/关闭标签?
JavaCC 语法确实实现了可以解析这些行的语法:
尽管 JavaCC 解析器需要解析所有行,但它必须区分正确和不正确的标记行为。
正确的标签就像第一行一样,它们有一个打开和关闭标签。当标签匹配时,这将输出一个粗体格式的文本。
不正确的标签就像第 2 行和第 3 行一样,它们没有匹配的打开或关闭标签。当这些发生时,它们按原样写入输出,不会被解释为标签。
我已经尝试过下面的 JavaCC 代码(LOOKAHEAD = 999999)。问题是,这种语法总是将所有内容匹配为 invalidTag()而不是bold()。我如何确保 JavaCC 解析器尽可能匹配bold() ?
java - JavaCC 中的解析器和 SKIP 指令
我正在使用 JavaCC 构建一个复杂的解析器。有一次,我想跳过我看到的所有字符,直到我的语法中出现所需的标记......让我们以以下为例
/* bla bla bla bla bla bla bla bla */ => 我想定义一种语法,比如
<OPEN_COMMENT> SKIP ~[] until <CLOSE_COMMENT>
即使“bla”是常规标记,我也希望它是真的
谢谢你的帮助
parsing - 在 javacc 中解析特定数量的行
我有一个要解析的特定格式的文件。在这个文件中,我在一行上有一个数字,它指定跟随它的行数。
该文件的示例摘录:
我想读取数字(本例中为 3),然后仅读取以下 3 行。如果有更少或更多的行,我想生成一个错误。我怎样才能在 javacc 中做到这一点?
谢谢
java - 如何使用 JavaCC / JJTree 存储令牌?
我为一种 DSL 编写了 JJTree (JavaCC) 配置,它成功地标记了给定的文件格式,并在请求时转储 AST。
问题是树中的每个节点都是空的,因为我当前没有存储令牌(我无法理解示例)。
这是我的 .jjt 文件的一部分:
我希望根节点存储对 Section1、Section2 的引用以及对 Section3 的引用列表。我希望 Section3 节点存储标识符、标题块并保留详细信息块的列表。
我填充的.jjt 文件有数百行,但我觉得如果我能理解这两部分的内容,我就能理解JJTree 是如何工作的。请让我知道如何正确使用 JJTree。
谢谢。
java - 如何在 JavaCC 中处理文本块中的令牌?
我有一个 DSL 的简单方面,我可以在其中定义一个键和一个值:
在这个例子中我想要的三个标记(用于价值部分)是
- ValueLiteral == 这是我的
- 价值参考 == $REF{有用}
- ValueLiteral == 多行等....
我为该值定义了一个规则,如下所示:
这是我对多行字符串类型的 TOKEN 定义:
我的问题是我的多行字符串标记类型也使用了 '$REF{' 字符的字符序列。
我想修改这个多行字符串,以便在遇到未转义的“$REF{”时停止使用字符(但会继续读取“\$REF{”序列)。
任何帮助将不胜感激。
html - javacc,从 dir/x/s 转换为 HTML
我想从 dir/x/s 语言翻译成 html。
我有 Analyzer.j :
源代码是:
并导致 HTML 语言应为:
我如何将一个代码解析为另一个?并将 html 代码保存到文件中。
warnings - JavaCC:警告太多
我正在使用 JavaCC 5.0 版。与 Eclipse 伽利略。
但是当我在我的 jj 文件中设置选项“static=true”时,生成的 TokenManager 文件有许多警告,例如“应以静态方式访问 SimpleCharStream 类型的静态方法 readChar()”。此外,我的 jj 文件中的所有导入都已复制到 TokenManager,在那里它们被标记为未使用。有没有办法防止这种情况发生?
看来这个问题在 JavaCC v4.1 中已经修复了,那我为什么还要面对这个问题呢?