[antlr-interest] Question about example Ansi C grammar for antlr v3
Mark Wright
markwright at internode.on.net
Fri Jun 19 18:33:14 PDT 2009
Hi Fredrik,
I think the correct approach (for parsing an ambiguous language
which requires symbol table knowledge to parse) is while
parsing the code in the first parse, to:
* insert each symbol into the symbol table, which needs to know
all the scoping rules.
* in each situation where the language is ambiguous, to use a
dis-ambiguating semantic predicate to lookup the symbol in the
symbol table, and based on the answer from the dis-ambiguating
semantic predicates, the correct rule is selected.
Thanks, Mark
On Wed, 17 Jun 2009 16:19:28 +0200
Fredrik Ohrstrom <oehrstroem at gmail.com> wrote:
> Sadly enough ;-) , the following c-code compiles both using gcc and
> cl.exe
>
> ---------------
> typedef int alfa;
> typedef int beta;
>
> struct { struct { int z; } alfa; } c;
>
> int main(int alfa)
> {
> beta beta;
> }
> ---------------
>
> The example antlv3 c-parser found on the antlr homepage will wrongly
> parse the alfa inside the struct as a type_id and not a
> direct_declarator. In the same way it wrongly parses the argument
> alfa and the function local beta.
>
> I have tried to extend the grammar to fix this, unfortunately I have
> not been able to solve all the cases in the example, only the arg and
> local var case.
>
> What is the correct way of solving this?
>
> //Fredrik
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
--
More information about the antlr-interest
mailing list