问题标签 [ometa]
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.
parsing - 是什么让 Ometa 与众不同?
Ometa是“一种新的面向对象的模式匹配语言”。我之前在 Oz 工具等语言中遇到过模式匹配,用于解析 Lexx/Yacc 或 Pyparsing 等语法。尽管查看示例代码、阅读讨论并与朋友交谈,但我仍然无法真正理解 Ometa 的特别之处(或者至少,为什么有些人认为它如此)。有什么解释吗?
parsing - 如何将单词与 OMetaJS 匹配?
我一直在尝试使用OMeta/JS来学习 OMeta ,但我似乎陷入了一些应该非常简单的事情上。如果我有语法
它产生预期的输出
我也可以使用
哪个生产
但是当我尝试使用解析整个单词时
我收到一个错误
我误解了什么,如何修复 W2 语法以输出“hi”?
javascript - 如何使用 ometa-js
任何人都可以解释如何让示例运行?
我从github下载了ometa-js rep,打开了index.htm,结果报错。每当我做任何事情时, http: //www.tinlizzie.org/ometa-js上的托管版本都会在源代码中显示错误。
// 一个简单的识别器,不会产生有用的值
ometa L { number = digit+, addExpr = addExpr '+' mulExpr | addExpr '-' mulExpr | mulExpr, mulExpr = mulExpr '*' primExpr | mulExpr '/' primExpr | primExpr, primExpr = '(' expr ')' | 数,expr = addExpr }
L.matchAll('6*(4+3)', 'expr')
javascript - 使用 OMetaJS 创建包含令牌值和位置的 AST
我正在尝试使用 OMetaJS 解析 DSL 并生成一个包含令牌值及其在原始流中的索引的 AST。
我知道我可以使用索引捕获规则语法 ( @<rule>
) 为我提供一个包含构建标记的索引的对象,但是是否可以捕获它以及标记值?
例如对于语法:
解析“鲍勃”给出:
如果我从“标识符”中删除“@”,那么解析会给出“Bob”作为结果。我最想得到的是两者的结合:
我当然可以破解源代码,但是有更好的方法吗?
我想要同时拥有价值和位置,因为我正在尝试创建 DSL 的可视化表示,例如它允许编辑标识符名称。在这种情况下,我需要知道标识符出现在原始源中的哪个位置,以便我可以修改它。
python - 如何在 Python Parsley 中访问整个匹配的字符串?
我正在使用 OMeta 和 Python Parsley ( http://parsley.readthedocs.org/ ) 进行解析。有没有办法访问特定规则匹配的字符串?
例如,考虑以下代码:
我正在寻找一种方法来引用整个匹配以返回如下内容:
以下代码适用于此目的:
但是,我有数百条规则,我想避免包装每一条。
glob - 文件路径通配符 (glob) 的 BNF 语法定义
我正在寻找一些用 BFN 规则描述的广泛扩展的方言(比如https://github.com/vmeurisse/wildmatch + globstar **)。
任何格式或语言。OMeta 或 PEG 会很棒。