Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.compilers > #1537

Yacco2 - Inroduction to some of its features

From Dave Bone <cc.yacco2@yahoo.ca>
Newsgroups comp.compilers
Subject Yacco2 - Inroduction to some of its features
Date 2015-02-26 09:10 -0800
Organization Compilers Central
Message-ID <15-03-001@comp.compilers> (permalink)

Show all headers | View raw


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.

Regards
Dave Bone

Back to comp.compilers | Previous | Next | Find similar | Unroll thread


Thread

Yacco2 - Inroduction to some of its features Dave Bone <cc.yacco2@yahoo.ca> - 2015-02-26 09:10 -0800

csiph-web