[erlang-questions] Leex scanners and default token matching

Robert Virding <>
Mon Jul 2 02:48:52 CEST 2012


It would probably be a good idea to catch that and flag it as an error, if I can work out a good way to do it as for some cases it might work.

Robert

----- Original Message -----
> Hi Robert,
> 
> Thanks for the explanation, that makes sense now. I wasn't sure about
> the escape sequence, but clearly I had it wrong, as the match wants
> to be something more like ([\+\*-/]{1}), although clearly my ILLEGAL
> regex isn't account for the '+' which is wrong.
> 
> On 1 Jul 2012, at 03:12, Robert Virding wrote:
> 
> > The reason for the infinite loop is the macro definition:
> > 
> > AOP     = (\\+|-|\\*|/)
> > 
> > The double \\ means you are quoting the '\' not the '+' and '-'. So
> > that regex means:
> > 
> > match one-or-more '+'
> 
> Because what I'm quoting is the '\', presumably you mean 'match one
> or more (+) of '\' yes?
> 
> > or
> > match '-'
> > or
> > match zero-or-more '*'    <<<===
> 
> Yep, I see why that's screwed up - thanks!
> 
> > or
> > match '/'
> > 
> > This will match zero of any non-matching character so you get a
> > match but no character will be consumed and the scanner will loop
> > over the same character again. For matching characters this is not
> > a problem as you always get the longest match which is always
> > longer than the empty match. When you add your illegal regex this
> > is what happens.
> > 
> > Having regex which contain just '*' qualified regex is very
> > dangerous as they can match the empty string and so create a loop.
> > I know of no good way to handle this as it is not a bug, it is
> > doing what you told it to do. The only way would be to disallow
> > empty matches.
> > 
> > Your string regex '([^''])*' looks a little strange.
> > 
> 
> Well it's meant to say something more like '([^']+)' [immediately
> following a single quote, match one or more of any character apart
> from a single quote, followed immediately after by a single quote]
> but I it was late at night! :)
> 
> > Robert
> 
> 



More information about the erlang-questions mailing list