问题标签 [jison]

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.

0 投票
0 回答
52 浏览

javascript - Jison 解析器:在特定标记之后检索 n 个文本

jison parser用来解析我的命令。我想解析命令:

grp <group_name> -i <id1> <id2> <id3> ......

并希望将数据检索为:

{ group: <group_name>, id: [id1, id2, id3...] }

但是要使用 jison 解析器进行解析,我可以尝试

GROUP TEXT ID TEXT TEXT TEXT ... 在这里,我将不得不指定 TEXT 标记“n”次。

谁能告诉我如何在不指定 n 个令牌的情况下解析它?

0 投票
1 回答
530 浏览

javascript - Jison:为 AND 和 OR 生成具有多个子节点的 AST 节点

我正在研究一个简单的 SQL 到 JavaScript 中的 Mongo 查询条件生成。我正在使用 Jison 来解析 SQL 的 where 子句。

以下语法以二叉树的形式返回一个 AST,其中 OR 和 AND 是嵌套的。我想要的是获得一个 AST,其中 OR 节点具有单个节点(平面树)中的所有术语。

当我解析以下内容时

它返回

但我希望它回来

使用Jison可以吗?如果是这样,需要进行哪些更改?

0 投票
1 回答
54 浏览

javascript - 与 Jison 中的并列项相乘?

我最近一直在尝试使用 Jison,我想我会尝试创建一种能够(至少部分)解析一些数学表达式的语法。

但是,现在我对如何创建一个规则感到困惑,该规则将允许乘以先前定义的变量的形式7a(例如) 。a我试图adjmul在我的代码中执行此操作,但解析器不起作用,除非在7and之间存在空格a。简而言之,如果它们在程序中相邻,我将如何创建一个允许数字和变量之间相乘的规则/规则?

由于我对 Jison 这样的解析器比较陌生,所以我也想知道是否有任何方法可以简化我当前的规则。

代码:

0 投票
1 回答
693 浏览

javascript - 如何在吉森中获得代币?

我在大学项目中使用 Jison,我需要switch为每个公认的令牌制作一个,所以我可以向教授展示如下内容:

有什么方法可以在不手动重复正则表达式的情况下完成这项工作?(我的意思是,Jison 在内部使用正则表达式,但这不关我的事)

我尝试做的是以下内容:

但我唯一得救的东西token是一个数字,当语法中没有定义符号时,它会逐个字符地返回标记。

提前致谢。

0 投票
1 回答
303 浏览

yacc - 用于 Verilog 分层和阵列标识符的 Yacc/Bison

我正在尝试解析 Verilog 语言中的标识符。完整的语法在这里

他们可以有以下表格:

或 EMBF 格式:

name是大多数编程语言中的典型标识符,而indexstartstop整数。

我是 yacc 的新手(我实际上正在使用 Jison),但我不确定这是否可以通过单个前瞻令牌限制来正确解释。如果name[在堆栈中,则无法区分 index 和 start 之间的区别。

到目前为止,这是我的语法:

这会产生几个 shift/reduce 和 reduce/reduce 错误,它根本不想解析 line foo[1:0]。它期望 a]代替:. 有什么办法可以解决这个问题?

0 投票
1 回答
223 浏览

flex-lexer - 没有空格的 Jison Lex

我有这个 Jison 词法分析器和解析器:

它会标记和解析D01 X45,但不会D01X45。我错过了什么?

0 投票
1 回答
143 浏览

compiler-construction - Jison:二元运算语法冲突

在尝试设置我的 Jison 语法时,我有:

但这导致了以下冲突消息:

当我替换消除Operator非终端并直接写出表达式模式时:

我没有收到这样的错误,为什么第一个语法有冲突,而第二个没有?它们似乎与我的理解相当。

提前致谢!

0 投票
1 回答
147 浏览

parsing - Jison:区分数字和数字

我有以下我想与 Jison 一起使用的最小语法示例。

在这里,我已经定义了NUMBERDIGIT,以便根据上下文同时允许数字和数字。我不知道的是我如何定义上下文。上面的例子总是返回

当我尝试在Jison 调试器中运行它时。如何定义语法以始终期望分隔符后有一个数字?我尝试了以下也不起作用

0 投票
1 回答
248 浏览

jison - <相当于什么> 使用 JSON 格式时的 jison

我正在阅读jison 文档,其中一个示例给出了一个匹配文件结尾 ( ) 的词法分析器规则<<EOF>>。但是,只有在您以 JISON 格式编写语法时才能使用它。相反,我使用 JSON 格式来描述我的语法,但在描述如何匹配文件结尾的文档中找不到任何内容。我曾尝试使用"<<EOF>>"as 词法分析器规则,但这实际上与 string 匹配<<EOF>>

我该怎么做呢?我缺少的地方是否有更多关于 jison 的文档?

0 投票
1 回答
204 浏览

javascript - 将数据传递给 Jison 解析器

有没有办法将数据传递给 Jison,以便它可以在解析期间引用它?作为一个开始的例子,假设我们正在使用calculator.jison并想要传递一个对象,比如说

这是添加了新案例的calculator.jison VARIABLE { $$ = data[text]; },它使用提供的数据对象解析变量: