Parse tree design

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
(Removed old stuff)
 
(4 intermediate revisions by 3 users not shown)
Line 9: Line 9:
 
== Terminology ==
 
== Terminology ==
 
In parsing lingo a ''symbol'' is a name in a grammar.  Each symbol is either a ''terminal'' or a ''non-terminal''.  Non-terminals appear on the left hand side of a grammar production; terminals don't.
 
In parsing lingo a ''symbol'' is a name in a grammar.  Each symbol is either a ''terminal'' or a ''non-terminal''.  Non-terminals appear on the left hand side of a grammar production; terminals don't.
 
== Issues Discussed ==
 
Around this design we constructed a variety of patterns and discussed them.
 
=== Patterns in Use ===
 
* DTSTTCPW Design
 
 
=== Standard Composite Solution ===
 
 
[[image:parse-tree-sol-basic-composite.png]]
 
 
=== Wal's Solution ===
 
 
[[image:parse-tree-sol-wals.png]]
 
 
=== Wal's Solution Refactored ===
 
 
[[image:parse-tree-sol-wals-refactored.png]]
 
 
=== Downcasting vs No-ops vs [[DBC]] based superclasses ===
 
=== Data Redundancy ===
 
=== Test Driven Development & Refactoring ===
 
 
== See Also ==
 
* [[Avoid no-ops]]
 
* [[Beware type switches]]
 
* [[Decorator]]
 
* [[Refactoring]]
 

Latest revision as of 01:44, 11 August 2010

A context free grammar defines a language, e.g.

Grammar.gif

A parse tree shows how a sentence in the language is structured according to the grammar.

Parsetree.gif

Terminology

In parsing lingo a symbol is a name in a grammar. Each symbol is either a terminal or a non-terminal. Non-terminals appear on the left hand side of a grammar production; terminals don't.

Personal tools