问题标签 [pegjs]
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 - 如何在 PEG 语法中描述函数参数
我仍在与 Qt 的 qmake 模棱两可的语法作斗争。
现在我找不到一种方法来描述可以包含括号的函数参数(例如正则表达式):
我试图描述这样的函数调用:
如何在这种语法中添加对没有引号/双引号的嵌入式括号的支持?如何区分函数参数内的括号和函数关闭一个?
有效的函数调用示例:
javascript - 在 Pegjs 中递归查找和扩展变量
寻找使用 PegJS 之类的解决方案(对其他建议开放)以递归方式查找和扩展变量。
程序可以将变量设置为其他变量或数字
给定这样的结构:
{$a: '1', $b: '$a + 2', $c: '$b + 10'}
完成此任务的最佳方法(工具或其他方式)是什么?
javascript - PegJS - 匹配所有字符,包括 ) 除非 ) 是最后一个字符
我正在编写一个 PegJS 语法来解析 SQL 语句。我正在将一个函数拆分为function_id(function_args)
. 对于函数 args,我想匹配所有字符,包括(
最后)
一个除外)
,这对于嵌套函数是必需的。
如何编写规则以匹配所有字符,包括字符串中的最后一个字符)
除外。)
语法如下
并且测试字符串是
javascript - PEGjs 可以将语句的“结束”字符作为输入吗?
我一直在研究 PEGjs 语法。大多数都有效,但我在最后一件事上遇到了麻烦。我的解析器接受如下所示的输入:First:[content];
并返回类型(第一个或第二个)和内容中的每个元素(“c”、“o”...)。我还需要它能够]
作为输入,因此它应该能够解析以下内容:First:[co]nt];
.
有谁知道我该怎么做?这是我到目前为止所拥有的:
context-free-grammar - 如何为此编写语法(Peg.js 中的负前瞻)?
编辑:更多信息在Peg.js 引擎在像正则表达式一样前瞻之后后退吗?
所以我一直在学习一般的解释器,特别是我最近一直在使用 peg.js 从语法创建解析器。
这是我遇到的问题的示例。其中,以下包含三个“术语”('abc def'、'ghi'和'jkl')和两个“分隔符”('.'),我该如何编写语法:
这样做对我来说没有问题:
我用这个:
但是,这样做对我来说是一个大问题:
一旦术语本身和分隔符共享一个标记 - 空格 - 我就无法继续。例如,这不起作用:
问题是我尝试的任何事情似乎都要求词法分析器或指针,我不确定正确的术语,移动到完成术语之前的句点,所以它失败了,认为它已经通过了空格它正在寻找分隔符。
我基本上无法向前看,啊这个空格实际上是分隔符的第一个值,而不是表达式的最后一个值。
像“&”这样的先行类型运算符仅控制是否使用匹配项,但仍将指针移动到该位置。
事实上,我想在我的术语中使用我的两个分隔符,如下所示:
我怎样才能做到这一点?
regex - Peg.js 引擎是否像正则表达式一样在前瞻之后后退?
根据关于lookarounds的regular-expressions.info,引擎在前瞻后后退:
让我们再看一下内部,以确保您了解前瞻的含义。让我们应用 q(?=u)i 退出。前瞻现在是积极的,然后是另一个令牌。同样,q 匹配 q,u 匹配 u。同样,来自前瞻的匹配必须被丢弃,因此引擎从字符串中的 i 退回到 u。前瞻成功,因此引擎继续执行 i。但我无法匹配你。所以这个匹配尝试失败了。所有剩余的尝试也都失败了,因为字符串中没有更多的 q。
然而,在 Peg.js 中,它看起来像引擎仍然通过了&
or!
这样实际上它不是与正则表达式相同意义上的前瞻,而是对消费的决定,并且没有后退,因此没有真正的前瞻.
是这样吗?
(如果是这样,那么某些解析甚至不可能,比如这个?)
pegjs - Why pegjs not match Expression when __ not matched? Program = __/Expression
Example code:
In my mind , pegjs while match Expression when __
is not matched?
But this get a error
Line 1, column 1: Expected [ \t\r\n]
or end of input but "2"
found.
Expected behavior:
I want to know why it is not work. And I what to know is it possible to get all function callees in js use pegjs?
Actual behavior:
A parse error: Line 1, column 1: Expected [ \t\r\n]
or end of input but "2"
found.
javascript - pegjs 正则表达式组内参数的深度标记
考虑以下语法:
它应该描述正整数列表。
问题是tail
未定义,因为它在括号内。
所以我不得不做以下事情:
这在较长的语法中可能非常麻烦。
有没有办法标记(',' item)
正则表达式组内的内容?
javascript - PegJS 数学解析
目前,我的语法支持基本的变量赋值,我将在这个例子中使用它,但是我在数学解析方面遇到了一些问题。尝试使用时它会正确返回:
例如,但它返回:
尝试使用时:
奇怪的是,尝试使用它似乎工作正常:
这是我的语法:
javascript - 如何为类似液体的模板语言编写简单的 peg 语法?
编辑:您可以在此处关注进度:https ://github.com/simple-updates/template
我正在使用peg.js并尝试编写一些可以解释模板的东西,例如:
我尝试了很多事情,但假设这是我的起点:
例如,当我尝试字符串时{{ test }}
,它只会将其解释为字符而不是插值。
知道我该怎么做吗?
(显然嵌套“标记”会更复杂)