"Nick Sabalausky" <[email protected]> wrote in message news:[email protected]... > I've been trying to make a grammar for the Haxe langauge, and I've been > having a hell of a time emulating it's expression-based if/if-else (as > opposed to statement-based as in D). I'm sure a big part of it is my > inexperience with writing grammars, but I've also been starting to wonder > if it's impossible to do context-free. For those unfamiliar, here's how > the relevant parts in Haxe work: > > ------------------------------------------ .... > ------------------------------------------ > > So, anyone know if a grammar that handles this would need to be > context-sensitive? Or am I just *really* bad at this? ;) >
I guess the key I'm looking for is this: // With "if" being an expr, not a stmt: foo = if(blah) bar = 1; foo = if(blah) bar = 1; else bar = 2; If I make assignment bind tighter than the "if expressions", then I can't support "foo = if...", I can only support "foo = (if...)" But if I make the "if expressions" bind tighter than assignment, then I can't seem to solve the dangling-else conflict without introducing other ambiguities. Anyway, I'm not really looking to get an exact solution, just wondering if there's something about it that causes it to be impossible for a context-free grammar.
