Parsing
The term for the process of turning an input stream into an abstract syntax tree. Parsing generally depends on the complexity of the grammar or syntax, and in the most general cases can require a Turing-complete program, i.e. its own programming language.- The book Parsing Techniques - A Practical Guide (there are many others) is available online.
- The book Prolog Parsers - Parsing techniques in Prolog by Klaus von Bremen, available online.
- [MIA] Lex And Yacc Tutorial (a copy).
- A Compact Guide to Lex & Yacc.
- Parser and Scanner Generators.
- Concurrent, Object-Oriented Natural Language Parsing: The ParseTalk Model (.pdf).
- Let's Build a Compiler, by Jack Crenshaw, Ph.D. - an introduction to program translators, using a simplified approach inspired by Small C.
- Mark van den Brand, Alex Sellink, Chris Verhoef,
Current Parsing Techniques in Software Renovation Considered Harmful (.ps).Abstract. We evaluate the parsing technology used by people working in the reengineering industry. We discuss parser generators and complete systems like Yacc, TXL, TAMPR, REFINE, CobolTransformer, COSMOS, and ASF+SDF. We explain the merits and drawbacks of the various techniques. We conclude that current technology may cause problems for the reengineering industry and that modular and/or compositional parsing techniques are a possible solution.
This paper is higly relevant for the Meta-Translator subproject
- ANTLR ANother Tool for Language Recognition, FKA PCCTS, a framework for constructing recognizers, compilers, and translators.
- Attribute Grammars home page.
- basil (SourceForge entry) a parsing and modeling environment for working with, code in, and integrate any computer language.
- The BNF Converter a BNF-based compiler construction tool written for Haskell.
- C++ Compiler Compiler (CppCC) at SourceForge an object-oriented scanner and LL(k) parser generator. It aims to replace LEX&YACC for those who write C++ applications that involve parsing.
- Compiler Generation Tools for C#.
- CTool a C lexer/parser with a symbol table.
- ddgen by Kjell Post, a parser generator for dynamic operator languages.
- Dendra (old link MIA) Lisp style syntax parsing and printing code.
- dparser (freshmeat entry) a scannerless GLR parser generator based on the Tomita algorithm.
- Essence, an LR parser generator for Scheme.
- Functional Parsers.
- Gray a parser generator in FORTH.
- ipars Incremental scanner/PARSer.
- lambdayacc Lambda Prolog Parser Generator.
- Lextools a toolkit for finite-state linguistic analysis.
- lfg a parser for an LFG-like grammar formalism for Scheme.
- locos an OO framework for building parsers and other language processing tools.
- lrc a system for generating efficient incremental attribute evaluators, used to generate language based editors and other advanced interactive environments
- metafront, a tool for specifying syntactic transformations between languages, defined by context-free grammars, which uses specificity parsing, that is designed to support gradual extensions of a grammar.
- O2C2 OO Compiler Construction, recursive descent LL (k)-based parsers from syntactic specification (EBNF notation).
- Olex (at SourceForge) a LL(1) parser generator for C++.
- Plex a Python module for constructing lexical analysers/scanners.
- Parsec, a fast combinator parser.
- Ratatosk ftp directory (Ratatosk.tar.Z), a lexer/parser generator for Gofer (Haskell) by Torben Ęgidius Mogensen.
- REGEX/CLAWK/LEXER Packages (CLiki entry) regex matcher/interesting bits of AWK/ lexer-generator macro.
- The SLK Parser Generator.
- SHACC Shaggy's Homebrew Alternative Compiler Compiler, YACC replacement.
- SLG Simple Language Generator, stochastic context-free grammar tool.
- SPARK Scanning, Parsing and Rewriting Kit.
- T-GenT-Gen - The Parser Generator for Visualworks ftp a SmallTalk parser generator.
- TGrep2 the next-generation search engine for parse trees.
- Yacc to LaTeX (y2l) Yacc to Latex, yacc grammar description file as input, EBNF grammar in latex as output.
- Yapps Yet Another Python Parser System.
Pages in this topic: metafront SLK Parser Generator
Also linked from: BNF EBNF Language Implementation