Ometa是"一种新的面向对象的模式匹配语言".我在Oz工具等语言中遇到了模式匹配,以解析之前的Lexx/Yacc或Pyparsing等语法.尽管查看示例代码,阅读讨论以及与朋友交谈,我仍然无法真正理解Ometa的特殊之处(或者至少为什么有些人认为是这样).任何解释?
我正在寻找一些用BFN规则描述的广泛扩展的方言(比如这一个https://github.com/vmeurisse/wildmatch + globstar**).
任何格式或语言.OMeta或PEG会很棒.
您好我需要修改以下OMeta PEG:
using OMetaSharp;
using System.Collections;
using System.Text;
ometa SExpression.GeneratedCode.SExpressionParser : Parser {
SExpression = Spaces Atom:a Spaces -> { a }
| Spaces List:l Spaces -> { l.As<SExprList>() },
EscapeChar = '\\' Character:c -> { c },
Atom = String:s -> { new SExprAtomString(s.ToString()) }
| Number:n -> { new SExprAtomNumber(n.ToString()) }
| Symbol:sy -> { new SExprAtomSymbol(sy.ToString()) },
Symbol = FirstAndRest("Letter", "LetterOrDigit") | '+' | '-' | '*' | '/' | '^',
String = '"' (EscapeChar | …Run Code Online (Sandbox Code Playgroud)