问题标签 [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.
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 个令牌的情况下解析它?
javascript - Jison:为 AND 和 OR 生成具有多个子节点的 AST 节点
我正在研究一个简单的 SQL 到 JavaScript 中的 Mongo 查询条件生成。我正在使用 Jison 来解析 SQL 的 where 子句。
以下语法以二叉树的形式返回一个 AST,其中 OR 和 AND 是嵌套的。我想要的是获得一个 AST,其中 OR 节点具有单个节点(平面树)中的所有术语。
当我解析以下内容时
它返回
但我希望它回来
使用Jison可以吗?如果是这样,需要进行哪些更改?
javascript - 与 Jison 中的并列项相乘?
我最近一直在尝试使用 Jison,我想我会尝试创建一种能够(至少部分)解析一些数学表达式的语法。
但是,现在我对如何创建一个规则感到困惑,该规则将允许乘以先前定义的变量的形式7a
(例如) 。a
我试图adjmul
在我的代码中执行此操作,但解析器不起作用,除非在7
and之间存在空格a
。简而言之,如果它们在程序中相邻,我将如何创建一个允许数字和变量之间相乘的规则/规则?
由于我对 Jison 这样的解析器比较陌生,所以我也想知道是否有任何方法可以简化我当前的规则。
代码:
javascript - 如何在吉森中获得代币?
我在大学项目中使用 Jison,我需要switch
为每个公认的令牌制作一个,所以我可以向教授展示如下内容:
有什么方法可以在不手动重复正则表达式的情况下完成这项工作?(我的意思是,Jison 在内部使用正则表达式,但这不关我的事)
我尝试做的是以下内容:
但我唯一得救的东西token
是一个数字,当语法中没有定义符号时,它会逐个字符地返回标记。
提前致谢。
yacc - 用于 Verilog 分层和阵列标识符的 Yacc/Bison
我正在尝试解析 Verilog 语言中的标识符。完整的语法在这里。
他们可以有以下表格:
或 EMBF 格式:
这name
是大多数编程语言中的典型标识符,而index
和start
是stop
整数。
我是 yacc 的新手(我实际上正在使用 Jison),但我不确定这是否可以通过单个前瞻令牌限制来正确解释。如果name
和[
在堆栈中,则无法区分 index 和 start 之间的区别。
到目前为止,这是我的语法:
这会产生几个 shift/reduce 和 reduce/reduce 错误,它根本不想解析 line foo[1:0]
。它期望 a]
代替:
. 有什么办法可以解决这个问题?
flex-lexer - 没有空格的 Jison Lex
我有这个 Jison 词法分析器和解析器:
它会标记和解析D01 X45
,但不会D01X45
。我错过了什么?
compiler-construction - Jison:二元运算语法冲突
在尝试设置我的 Jison 语法时,我有:
但这导致了以下冲突消息:
当我替换消除Operator
非终端并直接写出表达式模式时:
我没有收到这样的错误,为什么第一个语法有冲突,而第二个没有?它们似乎与我的理解相当。
提前致谢!
parsing - Jison:区分数字和数字
我有以下我想与 Jison 一起使用的最小语法示例。
在这里,我已经定义了NUMBER
和DIGIT
,以便根据上下文同时允许数字和数字。我不知道的是我如何定义上下文。上面的例子总是返回
当我尝试在Jison 调试器中运行它时。如何定义语法以始终期望分隔符后有一个数字?我尝试了以下也不起作用
jison - <相当于什么> 使用 JSON 格式时的 jison
我正在阅读jison 文档,其中一个示例给出了一个匹配文件结尾 ( ) 的词法分析器规则<<EOF>>
。但是,只有在您以 JISON 格式编写语法时才能使用它。相反,我使用 JSON 格式来描述我的语法,但在描述如何匹配文件结尾的文档中找不到任何内容。我曾尝试使用"<<EOF>>"
as 词法分析器规则,但这实际上与 string 匹配<<EOF>>
。
我该怎么做呢?我缺少的地方是否有更多关于 jison 的文档?
javascript - 将数据传递给 Jison 解析器
有没有办法将数据传递给 Jison,以便它可以在解析期间引用它?作为一个开始的例子,假设我们正在使用calculator.jison
并想要传递一个对象,比如说
这是添加了新案例的calculator.jison VARIABLE { $$ = data[text]; }
,它使用提供的数据对象解析变量: