Related articles |
---|
code generation malal884@student.liu.se (2002-01-24) |
Re: code generation idbaxter@semdesigns.com (Ira D. Baxter) (2002-01-28) |
Re: code generation boesler@ipd.info.uni-karlsruhe.de (Boris Boesler) (2002-01-28) |
Re: code generation abate@students.cs.unibo.it (Pietro) (2002-01-28) |
Re: code generation casse@netcourrier.com (=?ISO-8859-15?q?=22Cass=E9=.Hugues@free.fr) (2002-02-06) |
code generation vri@navigator.lv (Viesturs Rikards) (2004-11-14) |
Re: code generation torbenm@diku.dk (2004-11-17) |
Code generation mcvax!ruuinf!piet@uunet.uu.net (1989-02-14) |
From: | Viesturs Rikards <vri@navigator.lv> |
Newsgroups: | comp.compilers |
Date: | 14 Nov 2004 22:42:43 -0500 |
Organization: | Compilers Central |
Keywords: | code, question |
Posted-Date: | 14 Nov 2004 22:42:43 EST |
Hello,
I'd like to ask some questions about compilers.
What datatype (data structure) would you suggest to use for
nonterminals like 'conditional_expr', 'expr', 'identifier_expr' etc in
yacc file for a C like language.
For example, if one of rules looks like this:
expr
: some_expr
| identifier_expr '=' expr { code("=",$1,$3); }
;
Assuming that 'some_expr' and 'expr' can be expanded further (and
contain many other expression that have operators, parentheses etc)
how would you suggest to generate quadruples or triples (intermediate
code)? For instance 'expr' can be a single number like "99" or it can
be a string "x+1", for instance.
I guess 'expr' must be some type of union but how then intermediate
code (triples/quads) can be generated in this instance?
If "code" is some function that generates code then passing argument
$3
doesnt give the correct value because it can be both number or string.
However, if terminals are used as here:
expr: VAR '=' NUMBER { code('=',$1,$3) }
Then variables $1 and $3 give the correct values i.e. the variable
name and some number.
Thank you.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.