Related articles |
---|
YYLess equivalent in JLex binesh@hex21.com (Binesh Bannerjee) (1999-06-12) |
Re: YYLess equivalent in JLex lsf@gmx.net (Gerwin Klein) (1999-06-14) |
Re: YYLess equivalent in JLex binesh@hex21.com (Binesh Bannerjee) (1999-06-19) |
Re: YYLess equivalent in JLex lsf@gmx.net (Gerwin Klein) (1999-06-27) |
From: | "Binesh Bannerjee" <binesh@hex21.com> |
Newsgroups: | comp.compilers |
Date: | 19 Jun 1999 17:53:45 -0400 |
Organization: | Hex21 Inc. |
References: | 99-06-046 99-06-061 |
Keywords: | lex, Java |
Gerwin Klein <lsf@gmx.net> wrote:
: For the yyless-thing (if you still like it better):
: AFAIK there is no yyless in JLex, but with JFlex (http://www.jflex.de)
: you could use the void yypushback(int) method like this (analogous to
: yyless):
Cool... I read the docs on JFlex, and am sold... Just one thing tho...
When I converted my program to jflex, one of the things I decided to do
was use %unicode, since it's supported by JFlex... After doing this,
JFlex choked on input that worked with the input that was accepted by
JLex... I decided to dig a little, and came up with this test scanner...
JFlex seems to choke on %unicode or %full... Which isn't too encouraging...
%7bit seems to work fine... What am I doing wrong? I'm including the
lexer spec, the input I fed the lexer, and the output from both
JLex and JFlex generated scanners...
Thanks in advance...
Binesh Bannerjee
--- BEGIN SCANNER
%%
identifier=([a-zA-Z_][a-zA-Z0-9_]*)
digits=([0-9]+)
whitespace=([\ \t\r\n\f]+)
%class JFlexScanner
%integer
%full
%{
public static void main(String argv[]) {
try {
JFlexScanner y = new JFlexScanner(System.in);
y.yylex();
}
catch (Exception e) {
e.printStackTrace();
}
}
%}
%%
{identifier} { System.out.println("Identifier:`" + yytext() + "'"); }
{digits} { System.out.println(" Digits:`" + yytext() + "'"); }
{whitespace} { System.out.println("Whitespace:`" + yytext() + "'"); }
(.|[\ \t\r\n\f]) { System.out.println("Unknown:`" + yytext() + "'"); }
--- END SCANNER
-- BEGIN INPUT
HTML
"Something"
Whatever=17
43
blah balh
-- END INPUT
-- BEGIN OUTPUT FROM JLEX (Correct)
Identifier:`HTML'
Whitespace:`
'
Unknown:`"'
Identifier:`Something'
Unknown:`"'
Whitespace:`
'
Identifier:`Whatever'
Unknown:`='
Digits:`17'
Whitespace:`
'
Digits:`43'
Whitespace:`
'
Identifier:`blah'
Whitespace:` '
Identifier:`balh'
Whitespace:`
'
-- END OUTPUT FROM JLEX (Correct)
-- BEGIN OUTPUT FROM JFLEX (Incorrect)
Identifier:`HTML'
Whitespace:`
'
Identifier:`"Something"'
Whitespace:`
'
Identifier:`Whatever=17'
Whitespace:`
'
Identifier:`43'
Whitespace:`
'
Identifier:`blah'
Whitespace:` '
Identifier:`balh'
Whitespace:`
'
-- END OUTPUT FROM JFLEX (Incorrect)
Return to the
comp.compilers page.
Search the
comp.compilers archives again.