问题标签 [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.
python - 带有 Lepl 的解析器
我想解析一个文本文件,例如,像这样的东西:
它类似于 reStructuredText。
每个标签都以 结尾::
并且可以有一些属性attr:value
。我想获得这样的东西,一个 Python 字典:
在sub之后是缩进标签,如果标签后面有东西,::
它会进入'content'
.
我会使用 Lepl,但我什至不知道从哪里开始,有什么建议吗?
谢谢,
魔方
python - 解析重复字符
我是解析新手(显然)。我正在使用LEPL库来解析一些标记语言。
我对这段代码有疑问(为了清楚起见,我省略了细节)。
最后一行应该给我 ['a','b','aa','b','aaa','b']
没有错误,但它挂起(可能是无限递归?)。谁能指出我正确的方向?
编辑
我可以这样做
但是a不会被分组。
python - Lepl 中的 Token() 对象
所以我正在学习 Lepl 教程,一个 Python 解析器,但我无法弄清楚 likeToken(Real())
和 just之间到底有什么区别Real()
。我找到了有关该功能的文档,但它们非常无用。
那么,Token() 类究竟做了什么?为什么它与常规 Lepl 课程不同?
python - 使用 LEPL 解析布尔搜索查询
我正在尝试编写LEPL语法来描述布尔搜索语言。这是我到目前为止所拥有的:
最后一个parse
产生这个:
它应该产生这个:
我该如何解决这个问题以获得我想要的解析?tuple
我认为如果我可以说“whatever AND whatever”变成 a ,并且“whatever OR whatever”变成a ,它会解决这个问题list
。
python - 如何使用 Python Lepl 解析领域特定语言的子集?
我使用 Lepl 作为解析器,我正在解析的语言非常复杂,我只关心一小部分。我想不出办法让 Lepl 解析我关心的语法,然后只为其他所有内容返回字符串。如果我添加如下规则:
然后它被用来代替我关心的东西。我认为它正在发生,因为它比我的其他规则更长。Lepl 中是否有配置设置或其他东西,以便我可以拥有一个不完美的解析器?
更新 按要求添加一些细节。我只想解析出等于数字的顶级变量定义。那些依赖于他人或者是我想忽略的数学表达式。我还想忽略块定义中的内容我想忽略语言中的许多其他构造。所以这里有一个例子:
所以我只真正关心variable Word() = Real()
在块定义之外定义的文件中的信息。我想将其余部分保留为字符串,以便我可以构建 AST 并修改变量值,然后再次写出控制文件。
python - AppEngine LEPL parser.py 语法错误
在开发环境中,它工作得很好。但是在部署到 AppEngine 之后,它就中断了。在项目中包含必要的文件。
正在使用 LEPL 5.1.3。
破损:
对 appengine 给出的这个错误消息感到非常困惑。我查看了 parser.py 中的第 182 行,它看起来不错……甚至很棒。真的很漂亮的东西。
...
...
parsing - 解析表达式!运营商链
嗨,我知道如何解析表达式(包括括号)。但通常解析表达式假定“操作数运算符操作数”。铁:
如您所见,值始终为两个。我正在寻找的是机制(语法),它可以将类似运算符的链解析为单个项目,即贪婪的 Fe 假设我有以下表达式:
我希望解析器将总和作为一个单一的“动作”吞噬,乘法也是如此。
这是非工作语法的一个示例,但您可能会明白我想要做什么(python - LEPL 模块):
python - 将程序语言与动态优先级配对?
正如您在 Prolog 中所知道的,您可以使用 op/3 动态定义优先级。我正在用 Python 实现自己的 Prolog。已经有工作原型,但我仍然通过有限的 python 伪序言更新数据库。我的下一步是实现解析器。我可以做没有 op-precedence 的静态语法。
我的问题一般是如何实现优先级的?有什么说法吗?
它不必是完全动态的 op/3 即我会没事的,即使我必须在开始解析之前预加载 op-table。我想我可以事先通过字符串操作来修改语法。
如果重要的话,我可能会使用 LEPL:http ://www.acooke.org/lepl/。