Related articles |
---|
[4 earlier articles] |
Re: coupling LALR with a scanner? armelasselin@hotmail.com (Armel) (2011-08-04) |
Re: coupling LALR with a scanner? paul@paulbmann.com (Paul B Mann) (2011-09-13) |
Re: coupling LALR with a scanner? armelasselin@hotmail.com (Armel) (2011-09-16) |
Re: coupling LALR with a scanner? paul@paulbmann.com (Paul B Mann) (2011-09-17) |
Re: coupling LALR with a scanner? armelasselin@hotmail.com (Armel) (2011-09-19) |
Re: coupling LALR with a scanner? paul@paulbmann.com (Paul B Mann) (2011-09-19) |
Re: coupling LALR with a scanner? armelasselin@hotmail.com (Armel) (2011-09-20) |
Re: coupling LALR with a scanner? cdodd@acm.org (Chris Dodd) (2011-09-23) |
Re: coupling LALR with a scanner? cfc@shell01.TheWorld.com (Chris F Clark) (2011-09-29) |
Re: coupling LALR with a scanner? armelasselin@hotmail.com (Armel) (2011-10-02) |
Re: coupling LALR with a scanner? cfc@shell01.TheWorld.com (Chris F Clark) (2011-10-03) |
Re: coupling LALR with a scanner? gah@ugcs.caltech.edu (glen herrmannsfeldt) (2011-10-03) |
From: | "Armel" <armelasselin@hotmail.com> |
Newsgroups: | comp.compilers |
Date: | Tue, 20 Sep 2011 09:40:23 +0200 |
Organization: | les newsgroups par Orange |
References: | 11-07-013 11-07-015 11-07-018 11-08-004 11-09-016 11-09-017 11-09-022 |
Keywords: | parse |
Posted-Date: | 20 Sep 2011 23:19:23 EDT |
"Paul B Mann" a icrit dans le message de groupe de discussion :
>> IELR was exactly made for that reason, as a first step to PSLR: some
>IELR(1) does not solve this problem. It solves the problem of reduce-
>reduce conflicts in an LR(0) [...]
OK I did not sentenced that right, this is PSLR which does all the
lexer/parser integration (hence Pseudo Scannerless LR).
>What you described with Javascript is a little language inside of
>another language. Why not switch parsers when a slash ('/') is
>encountered if necessary?
The problem is that / is used as a normal token AND as the start for regular
expression.
For example these are two valid sequences:
var regexpr = / b + a /
2;
var numeric_var = 1 / b + a /
2;
The 2; on the following lines will have two different meanings, in case
'regexpr', it is an instruction setting the expression value (as used in
eval() ), in the case second case, 2 is the second operand to a / operator.
I insist a bit on this to show there is no 'right side' heuristic to
determine / b + a / is a regular expression. On the other hand the '1'
expression could be as complex as you can imagine.
Of course in the presence of something like expr / expr the parser knows the
/ is for a division, and if the / is found where expr is expected it knows
there is a regular expression coming.
I don't see how I could hack this into a scanner only. maybe some specific
preceding tokens. I have pass again some time on that question.
Armel
Return to the
comp.compilers page.
Search the
comp.compilers archives again.