help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: for loops in C style


From: Ilyes Gouta
Subject: Re: for loops in C style
Date: Fri, 29 Feb 2008 11:15:31 +0100

Hi Laurence,

Thanks for your comments!

>  fexpr: /* Empty  */
>  {
>   /* Action for empty case  */
>  };
>
>  fexpr: expr
>  {
>   /* Action for `expr' case  */
> };

I wasn't aware the one could duplicate a rule so that it has two
possible bodies. But it's alright, there is a second, much prettier
approach.

>  I'm not sure about your `block'.  It may make sense from the point of
>  view of a formal grammar, but in practice, it means parsing the same
>  input multiple times.  Have you got a solution for this yet?

Well, my purpose is to construct an abstract syntax tree given a
script. The block rule in may grammar is defined as following:

block: '{' {ctx->scope++;} declarations statements '}' {ctx->scope--;
fancy_stuff();} ;

Basically, parsing the input multiple time isn't really an issue for
my case (actually I don't understand your point here), since what I'm
doing is just recognizing/reducing the different script components,
building the ast nodes (filling the right information) and linking
these nodes properly to form the final tree once everything is reduced
to the primary block. I've got pretty much everything working (this
includes nodes for identifiers, unary and binary operations, array
fetches and stores (indexed accesses), jumps and conditional jumps).
Once the ast is constructed, I switch off flex/bison and all the
remaining work is done using that tree, this includes types
propagation (for the float and int conversions), registers allocations
and then native opcode emitters.

Best regards,
Ilyes Gouta.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]