|Yacco2 - Inroduction to some of its features firstname.lastname@example.org (Dave Bone) (2015-02-26)|
|From:||Dave Bone <email@example.com>|
|Date:||Thu, 26 Feb 2015 09:10:55 -0800|
|Posted-Date:||01 Mar 2015 13:46:08 EST|
|Authentication-Results:||iecc.com; spf=none firstname.lastname@example.org spf.helo=nm30-vm3.bullet.mail.ne1.yahoo.com; dkim=pass header.d=yahoo.ca header.b="DLasJYoc"; dmarc=pass header.from=yahoo.ca policy=none|
Hi Compiler people,
I would like to in(tro))duce you to some of Yacco2's features for your cerebral considerations/investigations.
At www.ctan.org, you will find the Yacco2 project with a link to its
distribution pdf describing ``how to install'', and documents to read
in acclimatizing / acquainting yourself to Yacco2.
For the Computer Science people consideration/study:
1) Nondeterministic Lr(1) multi-threaded grammars. 2 grammar types: monolithic and threaded
1.5) Nested parallel parsing with compiler writer grammar code to arbitrate on potential multiple outcomes .
The arbitration is within each grammar's context to deal with its called threads's outcomes.
A grammar can have many different arbitration code points throughout it.
1.6) Due to threading Yacco2 handles without any ambiguity subset / super set grammar expressions:
For simple example, try defining a grammar that defines an identifier and also a keyword
2) Modular grammars can be reused/shared in other projects
For example, the C++ comment type can be recycled into another project's language definition
3) Look ahead boundary expressions tuneable per threaded grammar
4) Wild card grammar expressions
5) Optimizations on threading versus procedural grammars dispatching
6) C++ emitted user syntax-directed code
7) Full C++ inheritance/template facilities open to grammar writer: Yacco2's input / output containers use this
8) API has complete tree based creators/walkers with token filters
9) Ambiguity avoidance
10) Out-of-the-box error reporting where a grammar is used to process error(s). Self dealing with errant self ;}
11) Various dynamic tracing facilities for debugging: both global to the project, and specific to a grammar
12) Bottom-up and top-down (recursive decent) parsing genre mixture supported
1) All grammars can produce pdf documents using Cweb's cweave program and mpost's graphic program along with full TeX support.
The grammar's expressions are drawn in the spirit of Pascal's railroad diagrams accompanied by their syntax directed code
2) Lr(1) tables can be pdf / TeX generated
3) An overall compendium of your project grammars with a table of contents with each grammar's summary.
Each grammar is described and contains its hierarchy of called grammars.
The distribution contains all the documents for Yacco2 including the generated grammar documents in the ../docs folder.
There is a Quality Assurance folder that tests out the distribution against various published grammars verifying lrness.
For example grammars from Pager, Knuth, Deremer and Pennello, Spector, Kristensen and Madsen.
The testout pdf document in ../docs folder uses one of Pager's
grammars to illustrate how one would go about using Yacco2 for one's
It is written as a ``literate program'' describing what one would go through to create your own compiler/translator.
Hope this entices yew to evaluate Yacco2 and its usefulness. I look forward hearing from yew.
Return to the
Search the comp.compilers archives again.