Yacco2 - Inroduction to some of its features

Dave Bone <cc.yacco2@yahoo.ca>
Thu, 26 Feb 2015 09:10:55 -0800

          From comp.compilers

Related articles
Yacco2 - Inroduction to some of its features cc.yacco2@yahoo.ca (Dave Bone) (2015-02-26)
| List of all articles for this month |

From: Dave Bone <cc.yacco2@yahoo.ca>
Newsgroups: comp.compilers
Date: Thu, 26 Feb 2015 09:10:55 -0800
Organization: Compilers Central
Keywords: tools, available
Posted-Date: 01 Mar 2015 13:46:08 EST
Authentication-Results: iecc.com; spf=none spf.mailfrom=cc.yacco2@yahoo.ca 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

Document(s) generation:
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
own project.

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.

Dave Bone

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.