问题标签 [lpeg]
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.
lua - 每场比赛的 LPeg 增量
我正在为 Lua 制作一个序列化库,并且我正在使用 LPeg 来解析字符串。我已经让 K/V 对工作(使用明确命名的键),但现在我要添加自动索引。
它会像这样工作:
将评估为
我已经使值匹配工作(字符串、表格、数字和布尔值都可以正常工作),所以我不需要帮助;我正在寻找的是索引。对于@[value pattern] 的每个匹配,它应该捕获找到的@[value pattern] 的数量 - 换句话说,我可以匹配一系列值(“@”value1“@”value2”)但我不'不知道如何根据匹配数为它们分配索引。如果还不够清楚,请发表评论,我会尝试更好地解释它。
这是我当前模式的样子(使用压缩符号):
正如您在最后一行代码中看到的那样,我有一个执行此操作的函数:
lua - 在 Windows 上通过 luarocks 安装 Moonscript
当我尝试通过 luarocks 安装moonscript 时,安装moonscript 依赖项的过程出错,说“cl”不是已安装/识别的程序。
我不确定在这里做什么;过去几天我一直在谷歌搜索解决方案,但找不到任何相关的东西。如果有帮助,我正在使用Lua for Windows提供的 Lua 5.1.4 安装。
lua - 使用 lpeg 解析类 TeX 语言
我正在努力了解 LPEG。我已经设法产生了一种语法,它可以满足我的需求,但是我一直在努力反对这个语法并且没有走远。这个想法是解析一个TeX的简化形式的文档。我想将文档拆分为:
- Environments,它们是
\begin{cmd}
和\end{cmd}
对。 - 命令可以接受这样的参数:
\foo{bar}
或者可以是裸的:\foo
。 - 环境和命令都可以具有如下参数:
\command[color=green,background=blue]{content}
. - 其他东西。
我还想跟踪行号信息以进行错误处理。这是我到目前为止所拥有的:
它几乎可以工作!
但!首先,我根本无法让行号处理部分工作。内部的函数incrementline
永远不会被触发。
我也不太清楚嵌套的捕获信息是如何传递给处理函数的(这就是为什么我在语法上分散和半随机的Cg
原因C
) 。Ct
这意味着从 a 中只返回一个项目command_with
:
我也希望能够检查环境的开始和结束是否匹配,但是当我尝试这样做时,当我到达“结束”时,“开始”的反向引用不在范围内。我不知道从这里去哪里。
regex - 匹配 Lua 模式中的可选数字
我正在解析 diff3 命令的输出,有些行如下所示:
我对中间的数字很感兴趣。它可以是单个数字,也可以是用逗号分隔的一对数字。使用正则表达式,我可以像这样捕获它们:
Lua 中最简单的等价物是什么?由于可选的第二个数字,我无法将该正则表达式的直接翻译传递给 string.match。
lua - 如何在 Windows 上构建 lpeg?
我已经从http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-0.12.tar.gz下载了 lpeg 源代码 如何获取 dll?我不能用包含的makefile来做到这一点。我正在使用mingw32。
lua - 创建递归 LPeg 模式
在普通的 PEG(解析表达式语法)中,这是一个有效的语法:
但是,如果我尝试使用 LPeg 编写此规则,则该规则的递归性质将失败:
尽管在这个简单的示例中我可以重写规则以不使用递归,但我有一些现有的语法我不想重写。
如何在 LPeg 中编写自引用规则?
lua - 如何使用 LPeg 正确进行前瞻
要匹配以 开头dog
,后跟cat
(但不消耗cat
)的字符串,这样可以:
输出:dog
要匹配以 开头的字符串dog
,后跟任何字符序列,然后是cat
(但不使用它),例如正则表达式 lookahead (dog.+?)(?=cat)
,我尝试了这个:
我的预期结果是dog and
,但它返回nil
。
如果我丢弃前瞻部分(即使用模式lpeg.C(lpeg.P("dog") * lpeg.P(1) ^ 1)
),它可以成功匹配整个字符串。这意味着* lpeg.P(1) ^ 1
part 正确匹配任何字符序列,不是吗?
如何解决?
lua - Lua lunadry 错误
我一直在使用 lunadry 为我重新格式化我的代码,但我遇到了错误,即,当我尝试它时会发生这种情况:
现在我已经浏览了一大段代码,并将这个错误的来源追溯到这个特定的函数......
(是的,它应该看起来像那样的格式)。
更具体地说,去掉这段代码可以让它再次工作:
是 ...else 和 ...end 位导致它搞砸了。
我一直试图让它重新格式化该代码,使其看起来很漂亮,但它会导致错误。据我所知,这可能只是在作者的代码中复制一大堆错误,但我希望不会。这是具有魔力的文件的来源:单击我。
有人可以看看这个并告诉我需要改变什么来解决这个非常烦人的错误吗?谢谢!
lua - 如何准确匹配Lua中模式的n次重复?
我正在编写一个包含三个字母字符的语法。这是我的代码:
我匹配的输入是这样的:
[4/23/15 4:49:49:371 CDT]
如何让表达式只匹配时区中的三个字母字符?该代码现在的工作方式是匹配三个或更多字母字符。
奇怪的!这行得通吗?
似乎是,但我在这里找不到引用的语法: