问题标签 [lepl]

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 投票
1 回答
860 浏览

python - 带有 Lepl 的解析器

我想解析一个文本文件,例如,像这样的东西:

它类似于 reStructuredText。
每个标签都以 结尾::并且可以有一些属性attr:value。我想获得这样的东西,一个 Python 字典:

sub之后是缩进标签,如果标签后面有东西,::它会进入'content'.

我会使用 Lepl,但我什至不知道从哪里开始,有什么建议吗?

谢谢,
魔方

0 投票
1 回答
127 浏览

python - 解析重复字符

我是解析新手(显然)。我正在使用LEPL库来解析一些标记语言。

我对这段代码有疑问(为了清楚起见,我省略了细节)。

最后一行应该给我 ['a','b','aa','b','aaa','b']

没有错误,但它挂起(可能是无限递归?)。谁能指出我正确的方向?

编辑

我可以这样做

但是a不会被分组。

0 投票
1 回答
296 浏览

python - Lepl 中的 Token() 对象

所以我正在学习 Lepl 教程,一个 Python 解析器,但我无法弄清楚 likeToken(Real())和 just之间到底有什么区别Real()。我找到了有关该功能的文档,但它们非常无用。

那么,Token() 类究竟做了什么?为什么它与常规 Lepl 课程不同?

0 投票
1 回答
1157 浏览

python - 使用 LEPL 解析布尔搜索查询

我正在尝试编写LEPL语法来描述布尔搜索语言。这是我到目前为止所拥有的:

最后一个parse产生这个:

它应该产生这个:

我该如何解决这个问题以获得我想要的解析?tuple我认为如果我可以说“whatever AND whatever”变成 a ,并且“whatever OR whatever”变成a ,它会解决这个问题list

0 投票
1 回答
404 浏览

python - 如何使用 Python Lepl 解析领域特定语言的子集?

我使用 Lepl 作为解析器,我正在解析的语言非常复杂,我只关心一小部分。我想不出办法让 Lepl 解析我关心的语法,然后只为其他所有内容返回字符串。如果我添加如下规则:

然后它被用来代替我关心的东西。我认为它正在发生,因为它比我的其他规则更长。Lepl 中是否有配置设置或其他东西,以便我可以拥有一个不完美的解析器?

更新 按要求添加一些细节。我只想解析出等于数字的顶级变量定义。那些依赖于他人或者是我想忽略的数学表达式。我还想忽略块定义中的内容我想忽略语言中的许多其他构造。所以这里有一个例子:

所以我只真正关心variable Word() = Real()在块定义之外定义的文件中的信息。我想将其余部分保留为字符串,以便我可以构建 AST 并修改变量值,然后再次写出控制文件。

0 投票
1 回答
140 浏览

python - AppEngine LEPL parser.py 语法错误

在开发环境中,它工作得很好。但是在部署到 AppEngine 之后,它就中断了。在项目中包含必要的文件。

正在使用 LEPL 5.1.3。

破损:

对 appengine 给出的这个错误消息感到非常困惑。我查看了 parser.py 中的第 182 行,它看起来不错……甚至很棒。真的很漂亮的东西。

...

...

0 投票
1 回答
68 浏览

parsing - 解析表达式!运营商链

嗨,我知道如何解析表达式(包括括号)。但通常解析表达式假定“操作数运算符操作数”。铁:

如您所见,值始终为两个。我正在寻找的是机制(语法),它可以将类似运算符的链解析为单个项目,即贪婪的 Fe 假设我有以下表达式:

我希望解析器将总和作为一个单一的“动作”吞噬,乘法也是如此。

这是非工作语法的一个示例,但您可能会明白我想要做什么(python - LEPL 模块):

0 投票
1 回答
72 浏览

python - 将程序语言与动态优先级配对?

正如您在 Prolog 中所知道的,您可以使用 op/3 动态定义优先级。我正在用 Python 实现自己的 Prolog。已经有工作原型,但我仍然通过有限的 python 伪序言更新数据库。我的下一步是实现解析器。我可以做没有 op-precedence 的静态语法。

我的问题一般是如何实现优先级的?有什么说法吗?

它不必是完全动态的 op/3 即我会没事的,即使我必须在开始解析之前预加载 op-table。我想我可以事先通过字符串操作来修改语法。

如果重要的话,我可能会使用 LEPL:http ://www.acooke.org/lepl/。