Fw: [antlr-interest] Parsing expressions inside a double quoted string?

Matthew Ford Matthew.Ford at forward.com.au
Fri Jul 11 21:50:39 PDT 2003


Just another point
Note that the switching takes place in the Lexer and is controlled by the
Lexer.  This means limited context parsing (none?)
But you don't have the parser feeding back to the lexer trying to control
the Lexer which gives look ahead problems.

----- Original Message -----
From: "Matthew Ford" <Matthew.Ford at forward.com.au>
To: <antlr-interest at yahoogroups.com>
Sent: Saturday, July 12, 2003 2:41 PM
Subject: Re: [antlr-interest] Parsing expressions inside a double quoted
string?


>
> I my case the problem was inside [  ]   (array indexing)
> The language I was parsing suddenly became whitespace sensitive when
inside
> [ ]
> So I used the following in the lexer to control the return of whitespace
> You might be able to do something similar inside "  " to return different
> tokens in these cases for '${' and  '}'
> and drive your parser that way.
>
> matthew
>
> LBRACK  options { paraphrase = "'['";}
>   : '[' {booleanStack.push(true); } // return white space
>   ;
> RBRACK  options { paraphrase = "']'";}
>  : ']' {
>         booleanStack.pop();
>          if (booleanStack.empty()) {
>           throw new RecognitionException("Unmatched ']'",getFilename(),
> getLine());
>          }
>         } // restore last state
>
> // Whitespace -- ignored ,   well mostly except inside  [ ]
> WS options { paraphrase = "'white-space'";}
>    : ( ' '
>   | '\t'
>   | '\f' {$setText(" "); } // replace with space. I use to delimit [] in
> printer output
>   | '\b' {$setText(" "); } // replace with space. I use to delimit [] in
> printer output
>   // handle newlines
>   | ( '\r'('\n')?    // Macintosh or Dos
>    | '\n'    // Unix (the right way according to Ter)
>    )
>    { newline(); }
>   )
>   {
>    if (!booleanStack.peek()) {   // skip if not inside  [ ]
>      _ttype = Token.SKIP;
>    }
>   }
>  ;
>
> ----- Original Message -----
> From: "Andrew Deren" <andrew at adersoftware.com>
> To: <antlr-interest at yahoogroups.com>
> Sent: Saturday, July 12, 2003 4:20 AM
> Subject: RE: [antlr-interest] Parsing expressions inside a double quoted
> string?
>
>
> > I had similar problem a while ago. I was doing lexer/parser for cold
> fusion
> > which has expressions inside of # ("Hello #foo# #2+2#")
> > What I did was to use predicates. It would be easier to do with rule
based
> > parser generator.
> > Just have a variable that holds current lexer "mode".
> > Default mode, InString and expressionInString. Initially I wanted to use
2
> > lexers/parsers, but couldn't find enough docs on that. My current
solution
> > works as expected, but I don't like it.
> > Andrew
> >
> > -----Original Message-----
> > From: Rodrigo B. de Oliveira [mailto:rodrigobamboo at hotmail.com]
> > Sent: Friday, July 11, 2003 12:26 PM
> > To: antlr-interest at yahoogroups.com
> >
> > Oh, I see.
> >
> > I didn't think it was possible... I've just went through all the docs
and
> > it's clear how it works now, thanks.
> >
> > I still haven't been able to figure it all out. For a start I want the
> > lexers to transform this:
> >
> > "Hello ${foo}, ${2 + 2}"
> >
> > into this:
> >
> > "Hello" + (foo) + ", " + (2 + 2)
> >
> > I'll give it some thought again later tonite.
> >
> > Thanks again,
> > Rodrigo
> >
> > ----- Original Message -----
> > From: "Pete Forman" <pete.forman at westerngeco.com>
> > To: <antlr-interest at yahoogroups.com>; <antlr-interest at yahoogroups.com>
> > Sent: Wednesday, July 09, 2003 11:19 AM
> > Subject: Re: [antlr-interest] Parsing expressions inside a double quoted
> > string?
> >
> >
> > > At 2003-07-09 07:43 -0300, Rodrigo Oliveira wrote:
> > > >You mean by using a filter?
> > >
> > > Not a filter but a second lexer.  The main lexer should switch to the
> > > second when it finds the opening double quote.  One example is in the
> Java
> > > parser for javadoc comments IIRC.
> > >
> > > --
> > > Pete Forman                -./\.-  Disclaimer: This post is originated
> > > WesternGeco                  -./\.-   by myself and does not represent
> > > pete.forman at westerngeco.com    -./\.-   opinion of Schlumberger, Baker
> > > http://petef.port5.com           -./\.-   Hughes or their divisions.
> > >
> > >
> > >
> > >
> > > Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
> > >
> > >
> > >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
> >
> >
> >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
> >
> >
>


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 




More information about the antlr-interest mailing list