Fix for A=<<1>>

Raimo Niskanen raimo.niskanen@REDACTED
Mon May 5 09:12:55 CEST 2003


I have just rewritten the scanner for R9C to make it twice as fast, and 
the reentrancy issues you worry about has been solved in that rewrite 
(presumably).

About the '=<<' problem I was just about to fix that when I checked with 
the other guys, and this is the problem.

How should the scanner interpret '=<<<' as in "if A =< <<1,2>>" without 
spaces; that's easy:  '=<' '<<'.

But since sub-binaries are allowed when constructing: how about '=<<<<<' 
as in "if A =< << <<1>>/binary, 2>>", then one can see that the scanning 
of '=<<' depends on if the number of '<' characters following is odd or 
even, so the scanner might have to scan infinitely ahead. A look ahead 
scan of limited small length would be fine, but this is ugly.

/ Raimo Niskanen, Erlang/OTP, Ericsson AB



James Hague wrote:
>>What I observed in erl_scan.erl is that this kind of
>>cheating is already done when matching "<<", ">>", ">=",
>>"->", etc.
> 
> 
> I thought the same thing, and I wouldn't have even tried to special-case
> "=<<" if there already hadn't been support in the same function for
> multi-character tokens like "=<".  But I agree with your concern, and I'm
> curious how those are handled properly by erl_scan.




More information about the erlang-questions mailing list