Patrick~ On 10/10/05, Patrick R. Michaud <[EMAIL PROTECTED]> wrote: > On Mon, Oct 10, 2005 at 10:45:54AM -0400, Matt Fowles wrote: > > Perhaps a better approach would be to perform a bit > > of static analysis on the grammar and look for left recursions at > > creation time (I believe that is a known problem). Then we can just > > warn once up front and go on our merry way recursing at matchtime. > > I think this approach falls back into my category of > "unless someone wants to take on the task of implementation it's not > likely to be resolved anytime soon..." :-) :-) > > In a dynamic environment like the one we have (parrot/perl) I find it's > really hard to say what constitutes "creation time", especially since > we can refer to subrules dynamically ( <$foo>, <::$foo>, etc. ) and > our grammars have inheritance in which a rule defined by a parent > grammar can invoke a rule defined later in a child grammar. As with > closures, we could probably punt on performing any analysis of > rules with dynamic references or that refer to rules outside of > the current grammar. But given that we can't really know until > matchtime what subrule will be invoked by an expression like <binary>, > it's hard for me to imagine a whole lot we can do in the way of > static analysis beforehand. However, that could easily just be a > limit of my imagination.
I completely forgot about inheritance. That basically throws static analysis out the window. Matt -- "Computer Science is merely the post-Turing Decline of Formal Systems Theory." -Stan Kelly-Bootle, The Devil's DP Dictionary