Related articles |
---|
Sytnax Tree Construction chris@labino.net (2003-09-04) |
Re: Sytnax Tree Construction blackmarlin@asean-mail.com (2003-09-09) |
Re: Sytnax Tree Construction yves@news.be (Yves Deweerdt) (2003-09-09) |
From: | Yves Deweerdt <yves@news.be> |
Newsgroups: | comp.compilers |
Date: | 9 Sep 2003 23:05:31 -0400 |
Organization: | Planet Internet |
References: | 03-09-024 |
Keywords: | analysis |
Posted-Date: | 09 Sep 2003 23:05:31 EDT |
> I understand the generation of a tree from an expression: 4+2*var:
> +
> / \
> 4 *
> / \
> 2 var
>
> 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
>
why do you consider '+' to be an operation taking 2 operands?
and why don't you think of a DO WHILE as an operator too?
it also takes to operands, one being a condition and the other operand
being the statement to execute over and over again until the condition
expires.
let's keep it simple:
DO
x=x+2
LOOP WHILE x < 20
would be something like this:
DO-WHILE
/ \
= <
/ \ / \
x + x 20
/ \
x 2
when you take your expression, you know that when it holds a '+' you
have to take the 2 operands and count them together
now, for the 'DO-WHILE' node, you have to repeat the evaluation of the
left subtree until the right subtree condition evaluates to false...
Return to the
comp.compilers page.
Search the
comp.compilers archives again.