Parsing C#-like generics

"Harold Aptroot" <harold.aptroot@gmail.com>
Mon, 11 Jul 2011 20:22:34 +0200

          From comp.compilers

Related articles
Parsing C#-like generics harold.aptroot@gmail.com (Harold Aptroot) (2011-07-11)
Re: Parsing C#-like generics DrDiettrich1@aol.com (Hans-Peter Diettrich) (2011-07-12)
Re: Parsing C#-like generics cr88192@hotmail.com (BGB) (2011-07-12)
Re: Parsing C#-like generics ben.titzer@gmail.com (Ben L. Titzer) (2011-07-13)
Re: Parsing C#-like generics cr88192@hotmail.com (BGB) (2011-07-14)
| List of all articles for this month |
From: "Harold Aptroot" <harold.aptroot@gmail.com>
Newsgroups: comp.compilers
Date: Mon, 11 Jul 2011 20:22:34 +0200
Organization: A noiseless patient Spider
Keywords: parse, question
Posted-Date: 12 Jul 2011 07:04:26 EDT

Hi,


I'm having some trouble parsing generics when mixed with comparisons. The
way I try to do it, there is an ambiguity between LessThan and a "list of
types between angle brackets".
For example, x<x>(x<x) should be syntactically OK, and it should be parsed
to a function call x with a type parameter list < x > and a single argument
which is the expression x<x (ok not really, I threw in semantics here to
make it clearer, the actual result should just be an AST).
My parser generator (GOLD parsing system) complains about a shift-reduce
error, and the parser it produces doesn't want to parse any expression with
a LessThan in it because it believes that to be a incomplete type list
(lacking a closing > )


I know it is actually inherently ambiguous, because t<t2>(t3) could mean two
things:
- LessThan(t, BiggerThan(t2, t3)
- invoke t<t2> with argument t3
In that case I want to pick option two.
For t<t2>t3 I want to pick option one, not report "missing ( "


Can this be done with an LALR parser at all? If so, how?


harold


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.