文件名称:ohm:用于解析和模式匹配的库和语言
文件大小:529KB
文件格式:ZIP
更新时间:2024-06-14 09:12:22
JavaScript
欧姆 是一种库和特定于域的语言,用于解析和模式匹配。 您可以使用它来解析自定义文件格式,转换复杂的数据结构,并快速构建用于编程语言的解析器,解释器和编译器。 Ohm语言基于(PEG),这是一种描述语法的正式方法,类似于正则表达式和无上下文语法。 Ohm库提供了一个JavaScript接口(称为Ohm / JS),用于根据您编写的语法创建解析器,解释器等。 像其较早的同级,Ohm支持面向对象的语法扩展,并允许对结构化数据和字符串进行模式匹配。 Ohm与其他解析工具的不同之处在于,它完全将语法与语义动作分开。 在Ohm中,语法定义了一种语言,语义动作指定了使用该语言的有效输入所要执行的操作。 语义动作是以宿主语言编写的,例如,对于Ohm / JS,宿主语言是JavaScript。 另一方面,欧姆语法在任何宿主语言中都无需修改即可工作。 这种分离提高了模块性,并使语法和语义动作都易于阅读和理解
【文件预览】:
ohm-master
----visualizer()
--------index.js(16KB)
--------index.html(6KB)
--------third_party()
--------README.md(500B)
--------style.css(741B)
----.travis.yml(480B)
----.eslintrc(2KB)
----bin()
--------update-env.sh(504B)
--------deploy-gh-pages.sh(686B)
--------ohm-visualizer(438B)
--------pre-commit(58B)
--------dev-setup.sh(1KB)
----.jscsrc(1KB)
----package.json(3KB)
----test()
--------arithmetic.ohm(341B)
--------test-errors.js(5KB)
--------ohm-spec.js(59KB)
--------test-recipes.js(1KB)
--------data()
--------test-semantics.js(13KB)
--------test-tracing.js(5KB)
--------test-parameterized-rules.js(4KB)
--------test-util.js(4KB)
--------test-doc.js(2KB)
--------test-examples.js(3KB)
--------testUtil.js(1KB)
----dist()
--------built-in-rules.js(1KB)
--------ohm.min.js(171KB)
--------ohm.js(624KB)
--------ohm-grammar.js(7KB)
----TODO.md(13KB)
----src()
--------pexprs-introduceParams.js(2KB)
--------nodes.js(3KB)
--------InputStream.js(2KB)
--------ohm-grammar.ohm(2KB)
--------Semantics.js(17KB)
--------pexprs.js(5KB)
--------ohm-cmd.js(693B)
--------MatchResult.js(4KB)
--------pexprs-toDisplayString.js(2KB)
--------Trace.js(5KB)
--------util.js(5KB)
--------PosInfo.js(3KB)
--------pexprs-eval.js(14KB)
--------Builder.js(2KB)
--------pexprs-outputRecipe.js(4KB)
--------pexprs-assertAllApplicationsAreValid.js(3KB)
--------pexprs-assertIteratedExprsAreNotNullable.js(3KB)
--------GrammarDecl.js(6KB)
--------main.js(13KB)
--------Namespace.js(2KB)
--------pexprs-check.js(4KB)
--------pexprs-toString.js(3KB)
--------State.js(6KB)
--------pexprs-getArity.js(2KB)
--------pexprs-isNullable.js(2KB)
--------pexprs-substituteParams.js(2KB)
--------common.js(5KB)
--------Grammar.js(11KB)
--------pexprs-assertChoicesHaveUniformArity.js(3KB)
--------pexprs-toExpected.js(1KB)
--------errors.js(10KB)
--------built-in-rules.ohm(428B)
--------Interval.js(3KB)
----eslint_rules()
--------camelcase-ohm.js(1KB)
--------third_party()
----.npmignore(217B)
----doc()
--------images()
--------tutorial.md(29B)
--------philosophy.md(2KB)
--------api-reference.md(13KB)
--------index.md(3KB)
--------syntax-reference.md(10KB)
----examples()
--------csv()
--------pl0()
--------lib.js(876B)
--------math()
--------ecmascript()
--------viz()
----.gitignore(79B)
----third_party()
--------UnicodeCategories.js(33KB)
----README.md(6KB)
----.eslintignore(114B)
----.gitattributes(130B)