Parser Awesome
约 2 分钟阅读
标签:资源精选
- Antlr笔记Antlr 4antlr/antlr4 · BSD-3 · ANTLR - ANother Tool for Language Recognition · 语言支持 · Java · C# · Python 2/3 · JavaScript · Go · C++打开:/notes/languages/parser/antlr
- Adaptive LL(*)
- JavaCC笔记JavaCCJavaCC - The Java Parser Generator · javacc/javacc · 默认 LL(1) 可 LL(k) · - · 生成的代码没有运行时依赖 · grammar repository打开:/notes/languages/parser/javacc
- LL(k)
- Grammer
- yacc - Yet Another Compiler-Compiler
- bison - YACC-compatible Parser Generator
- LALR(1), LR(1), IELR(1), GLR
- Lexer - DFA
- lex - Lexical Analyzer Generator
- flex
- skvadrik/re2cGitHubskvadrik/re2c
- Lexer generator for C, C++, Go and Rust
- jflex.de
- Diagram - railroad diagrams - wikipedia Syntax diagramWikipediaSyntax diagram
- tabatkins/railroad-diagramsGitHubtabatkins/railroad-diagrams
- MIT, JS, Python
- dundalek/GrammKitGitHubdundalek/GrammKit
- PEG.js -> Railroad Diagram
- dundalek.com/GrammKit
- www.bottlecaps.de/rr/ui
- Railroad Diagram Generator
- tabatkins/railroad-diagramsGitHubtabatkins/railroad-diagrams
- Languages
- adrian-thurston/ragelGitHubadrian-thurston/ragel
- Ragel State Machine Compiler
- BNF, ABNF, EBNF
- lezer-parser/lrGitHublezer-parser/lr
- Incremental parsing system
- Comparison of parser generatorsWikipediaComparison of parser generators
- dinosaur.compilertools.net
- ldapwiki.com/wiki/ABNF
PEG
- Golang
- Java
- sirthias/parboiledGitHubsirthias/parboiled
- Apache-2.0, Java
- 不生成代码,直接通过注解执行 - 简单易用
- Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.
- sirthias/parboiledGitHubsirthias/parboiled
- JavaScript
- peggy笔记peggypeggyjs/peggy · PEG.js 后继 · 参考 · https://github.com/peggyjs/peggy/blob/main/src/parser.pegjs · https://peggyjs.org/online打开:/notes/languages/parser/peg/peggy
- successor of PEG.js
- PEG.js笔记PEG.jspegjs/pegjs · 最后更新 2019 - 活跃 fork peggy · JavaScript PEG 语法解析生成器 · 语法 · - 单引号字符串忽略大小写 · - 双引号字符串大小写敏感 · - 用于条件预测 - 类似于前向环视 - Lookahead打开:/notes/languages/parser/peg/pegjs
- ⚠️ 不再维护
- 生成代码
- pegjs/pegjsGitHubpegjs/pegjspegjs/pegjs · 最后更新 2019 - 活跃 fork peggy · JavaScript PEG 语法解析生成器 · 语法 · - 单引号字符串忽略大小写 · - 双引号字符串大小写敏感 · - 用于条件预测 - 类似于前向环视 - Lookahead笔记:PEG.js
- parser.pegjsGitHub 文件pegjs/pegjs/src/parser.pegjs
- Simple and expressive grammar syntax
- Integrates both lexical and syntactical analysis
- Parsers have excellent error reporting out of the box
- Based on parsing expression grammar formalism — more powerful than traditional LL(k) and LR(k) parsers
- Usable from your browser, from the command line, or via JavaScript API
- harc/ohm笔记ohmjsharc/ohm · MIT, JS · 133kB, 36kB · 不生成代码,使用类似 Regex - 注语法解析 · 规则复用 - · 语法继承 - · 通过 semantics 添加执行逻辑 - 而不是在 grammar 里嵌入 · 参考打开:/notes/languages/parser/ohmjs
- MIT, JS
- 不生成代码 - 运行时解析
- 使用类似 Regex - 给语法解析执行
- ohmjs.org/editor
- ohmjs.org/docs/syntax-reference
- chevrotainGitHubChevrotain/chevrotainApache-2.0, TS · LL(K) · 使用代码的方式定义 - 有运行时依赖 · 写起来会有点冗长 · 非常动态 · https://chevrotain.io/playground/ · 性能好 · https://chevrotain.io/performance/笔记:chevrotain
- LL(K)
- 使用代码的方式定义
- 写起来会有点冗长
- 非常动态
- chevrotain.io/playground
- 性能好
- zaach/jisonGitHubzaach/jison
- Bison in JS
kach/nearleyGitHubkach/nearley- MIT, JS
jneen/parsimmonGitHubjneen/parsimmon- MIT, JS
- monadic LL(infinity) parser combinator
kach/nearleyGitHubkach/nearley- parser toolkit
- peggy笔记peggypeggyjs/peggy · PEG.js 后继 · 参考 · https://github.com/peggyjs/peggy/blob/main/src/parser.pegjs · https://peggyjs.org/online打开:/notes/languages/parser/peg/peggy
- 案例
- jgm/peg-markdown/markdown_parser.legGitHub 文件jgm/peg-markdown/markdown_parser.leg
- Markdown
- jgm/peg-markdown/markdown_parser.legGitHub 文件jgm/peg-markdown/markdown_parser.leg
- 参考
- The Packrat Parsing and Parsing Expression Grammars Page
- LL(*): The Foundation of the ANTLR Parser Generator
- orlandohill/peg-left-recursionGitHuborlandohill/peg-left-recursion - An idea to handle left-recursion in Parsing Expression Grammars (PEGs)
- PhilippeSigaud/Pegged/wiki/Left-RecursionGitHubPhilippeSigaud/Pegged/wiki/Left-Recursion
AST
关联信息
反向链接、本文链接的其他页面和外部资料。
站内链接
- Antlr 4笔记 · Antlr
antlr/antlr4 · BSD-3 · ANTLR - ANother Tool for Language Recognition · 语言支持 · Java · C# · Python 2/3 · JavaScript · Go · C++
- JavaCC笔记 · JavaCC
JavaCC - The Java Parser Generator · javacc/javacc · 默认 LL(1) 可 LL(k) · - · 生成的代码没有运行时依赖 · grammar repository
- ohmjs笔记 · harc/ohm
harc/ohm · MIT, JS · 133kB, 36kB · 不生成代码,使用类似 Regex - 注语法解析 · 规则复用 - · 语法继承 - · 通过 semantics 添加执行逻辑 - 而不是在 grammar 里嵌入 · 参考
- PEG.js笔记 · PEG.js
pegjs/pegjs · 最后更新 2019 - 活跃 fork peggy · JavaScript PEG 语法解析生成器 · 语法 · - 单引号字符串忽略大小写 · - 双引号字符串大小写敏感 · - 用于条件预测 - 类似于前向环视 - Lookahead
- peggy笔记 · peggy
peggyjs/peggy · PEG.js 后继 · 参考 · https://github.com/peggyjs/peggy/blob/main/src/parser.pegjs · https://peggyjs.org/online
参考资料
GitHub23 条
- kach/nearleygithub.com/kach/nearley
- adrian-thurston/ragelgithub.com/adrian-thurston/ragel
- Chevrotain/chevrotaingithub.com/Chevrotain/chevrotain
- dundalek/GrammKitgithub.com/dundalek/GrammKit
- fkling/astexplorergithub.com/fkling/astexplorer
- jflex-de/jflexgithub.com/jflex-de/jflex
- jgm/peg-markdown/markdown_parser.leggithub.com/jgm/peg-markdown/blob/master/markdown_parser.leg
- jneen/parsimmongithub.com/jneen/parsimmon
- lezer-parser/lrgithub.com/lezer-parser/lr
- mingodad/squilugithub.com/mingodad/squilu
- nikic/PHP-Parsergithub.com/nikic/PHP-Parser
- orlandohill/peg-left-recursiongithub.com/orlandohill/peg-left-recursion
- pegjs/pegjsgithub.com/pegjs/pegjs
- pegjs/pegjs/src/parser.pegjsgithub.com/pegjs/pegjs/blob/master/src/parser.pegjs
- PhilippeSigaud/Pegged/wiki/Left-Recursiongithub.com/PhilippeSigaud/Pegged/wiki/Left-Recursion
- pointlander/peggithub.com/pointlander/peg
- sirthias/parboiledgithub.com/sirthias/parboiled
- skvadrik/re2cgithub.com/skvadrik/re2c
- syntax-treegithub.com/syntax-tree
- tabatkins/railroad-diagramsgithub.com/tabatkins/railroad-diagrams
- textlint/textlint/packages/@textlint/markdown-to-astgithub.com/textlint/textlint/tree/master/packages/@textlint/markdown-to-ast
- zaach/jisongithub.com/zaach/jison
- zyedidia/gpeggithub.com/zyedidia/gpeg
Wikipedia2 条
- Comparison of parser generatorsWikipedia:Comparison of parser generators
- Syntax diagramWikipedia:Syntax diagram
标准文档1 条
- RFC 5234datatracker.ietf.org/doc/html/rfc5234RFC
IETF Request for Comments standard document.
其他外链12 条
- astexplorer.netastexplorer.net/
- bford.info/packratbford.info/packrat
- chevrotain.io/performancechevrotain.io/performance
- chevrotain.io/playgroundchevrotain.io/playground
- dinosaur.compilertools.netdinosaur.compilertools.net/
- dundalek.com/GrammKitdundalek.com/GrammKit
- jflex.dejflex.de/
- ldapwiki.com/wiki/ABNFldapwiki.com/wiki/ABNF
- ohmjs.org/docs/syntax-referenceohmjs.org/docs/syntax-reference
- ohmjs.org/editorohmjs.org/editor
- www.antlr.org/papers/LL-star-PLDI11.pdfwww.antlr.org/papers/LL-star-PLDI11.pdf
- www.bottlecaps.de/rr/uiwww.bottlecaps.de/rr/ui