Related articles |
---|
Sytnax Tree Construction chris@labino.net (2003-09-04) |
Re: Syntax Tree Construction Martin.Ward@durham.ac.uk (Martin Ward) (2003-09-14) |
Re:Syntax Tree Construction robert.thorpe@antenova.com (Rob Thorpe) (2003-09-14) |
From: | Martin Ward <Martin.Ward@durham.ac.uk> |
Newsgroups: | comp.compilers |
Date: | 14 Sep 2003 17:00:28 -0400 |
Organization: | Compilers Central |
References: | 03-09-024 |
Keywords: | parse |
Posted-Date: | 14 Sep 2003 17:00:28 EDT |
> But for instance, how do you handle the actual language keywords. For
> instance, how would a tree be build for the BASIC code:
>
> DO
> x=x+2
> IF x=12
> PRINT "x=12"
> ELSEIF x=14
> PRINT "x=14"
> ELSE CALL function()
> ENDIF
> LOOP WHILE x<>20
Here's how the FermaT transformation system represents a syntax tree.
The following MetaWSL program parses some WSL code
and prints the syntax tree:
@New_Program(FILL Statements
WHILE x<>20 DO
x:=x+2;
IF x=12
THEN PRINT("x=12")
ELSIF x=14
THEN PRINT("x=14")
ELSE @function() FI OD
ENDFILL);
@Print_WSL(@Program, "")
Here is the output it produces:
Statements
While
: Not_Equal
: Variable x
: Number 20
: Statements
: Assignment
: : Assign
: : Var_Lvalue x
: : Plus
: : Variable x
: : Number 2
: Cond
: : Guarded
: : Equal
: : Variable x
: : Number 12
: : Statements
: : Print
: : : Expressions
: : : String x=12
: : Guarded
: : Equal
: : Variable x
: : Number 14
: : Statements
: : Print
: : : Expressions
: : : String x=14
: : Guarded
: : True
: : Statements
: : MW_Proc_Call
: : : Name @function
: : : Expressions
: : : Lvalues
The WHILE statement has two components: a condition (Not_Equal in this case)
and a statement sequence. The IF statement is called a Cond and has
a variable number of Guarded components (if the last Guarded has
True as its first component, then it is displayed as an ELSE clause).
And so on...
FermaT can be downloaded from:
http://www.cse.dmu.ac.uk/~mward/fermat.html
--
Martin
Martin.Ward@durham.ac.uk http://www.cse.dmu.ac.uk/~mward/ Erdos number: 4
G.K.Chesterton web site: http://www.cse.dmu.ac.uk/~mward/gkc/
Return to the
comp.compilers page.
Search the
comp.compilers archives again.