Eric, thank you very much. I managed to run the code and also the debugger - my java_home was wrong - and I found out that the grammar I sent actually worked in the debugger. I wonder though why it doesn't in the interpreter.
Regards, Gabriel MirĂ³ ANTLR Newbie On Mon, Sep 12, 2011 at 1:39 PM, The Researcher <[email protected]>wrote: > Opps. There's a semi-colon missing. > > > grammar Mail001; > > > > stmt: val EOF; > > > > val : '(' '\'' ID '\'' ')'; > > > > ID : ('a'..'z'|'A'..'Z')+ ; > > NEWLINE:'\r'? '\n' {skip();} ; > > WS : (' '|'\t')+ {skip();} ; > > > Eric > > On Mon, Sep 12, 2011 at 12:17 PM, The Researcher > <[email protected]>wrote: > > > > > > > On Mon, Sep 12, 2011 at 9:45 AM, Gabriel Miro <[email protected]> wrote: > > > >> Eric, > >> > >> Here's the grammar I'm using: > >> > >> grammar test; > >> > >> rule : STRING; > >> > >> RPAREN : ')'; > >> LPAREN : '('; > >> > >> WS : ( ' ' > >> | '\t' > >> | '\r' > >> | '\n' > >> ) {$channel=HIDDEN;} > >> ; > >> > >> CHAR: '\'' ( ESC_SEQ | ~('\''|'\\') ) '\'' > >> ; > >> > >> STRING > >> : '\'' ( ESC_SEQ | ~('\\'|'\'') )* '\'' > >> ; > >> > >> fragment > >> HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ; > >> > >> fragment > >> ESC_SEQ > >> : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\') > >> | UNICODE_ESC > >> | OCTAL_ESC > >> ; > >> > >> fragment > >> OCTAL_ESC > >> : '\\' ('0'..'3') ('0'..'7') ('0'..'7') > >> | '\\' ('0'..'7') ('0'..'7') > >> | '\\' ('0'..'7') > >> ; > >> > >> fragment > >> UNICODE_ESC > >> : '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT > >> ; > >> > > > > Since the Debugger is giving you problems, use the command line. > > > > Create these four files and run the highlighted commands. I showed you a > > full run show you could see what to expect. > > > > > > Mail001.g > > > > grammar Mail001; > > > > > > > > stmt: val EOF; > > > > > > > > val : '(' '\'' ID '\'' ')' > > > > > > > > ID : ('a'..'z'|'A'..'Z')+ ; > > > > NEWLINE:'\r'? '\n' {skip();} ; > > > > WS : (' '|'\t')+ {skip();} ; > > > > > > > > Mail001.java > > > > import org.antlr.runtime.*; > > > > > > > > public class Mail001 { > > > > public static void main(String[] args) throws Exception { > > > > ANTLRInputStream input = new ANTLRInputStream(System.in); > > > > Mail001Lexer lexer = new Mail001Lexer(input); > > > > CommonTokenStream tokens = new CommonTokenStream(lexer); > > > > Mail001Parser parser = new Mail001Parser(tokens); > > > > parser.stmt(); > > > > } > > > > } > > > > > > > > Mail001.dat > > > > ('val') > > > > > > > > bad.dat > > > > (val) > > > > > > > > student@antlr:~/projects/antlr/mail/mail001$ ls -l > > > > total 16 > > > > -rw-r--r-- 1 student student 6 Sep 12 12:05 bad.dat > > > > -rw-r--r-- 1 student student 9 Sep 12 11:48 Mail001.dat > > > > -rw-r--r-- 1 student student 157 Sep 12 12:04 Mail001.g > > > > -rw-r--r-- 1 student student 389 Sep 12 11:41 Mail001.java > > > > student@antlr:~/projects/antlr/mail/mail001$ java org.antlr.Tool > Mail001.g > > > > student@antlr:~/projects/antlr/mail/mail001$ ls -l > > > > total 36 > > > > -rw-r--r-- 1 student student 6 Sep 12 12:05 bad.dat > > > > -rw-r--r-- 1 student student 9 Sep 12 11:48 Mail001.dat > > > > -rw-r--r-- 1 student student 157 Sep 12 12:04 Mail001.g > > > > -rw-r--r-- 1 student student 389 Sep 12 11:41 Mail001.java > > > > -rw-r--r-- 1 student student 9218 Sep 12 12:09 Mail001Lexer.java > > > > -rw-r--r-- 1 student student 3237 Sep 12 12:09 Mail001Parser.java > > > > -rw-r--r-- 1 student student 60 Sep 12 12:09 Mail001.tokens > > > > student@antlr:~/projects/antlr/mail/mail001$ javac *.java > > > > student@antlr:~/projects/antlr/mail/mail001$ ls -l > > > > total 48 > > > > -rw-r--r-- 1 student student 6 Sep 12 12:05 bad.dat > > > > -rw-r--r-- 1 student student 744 Sep 12 12:09 Mail001.class > > > > -rw-r--r-- 1 student student 9 Sep 12 11:48 Mail001.dat > > > > -rw-r--r-- 1 student student 157 Sep 12 12:04 Mail001.g > > > > -rw-r--r-- 1 student student 389 Sep 12 11:41 Mail001.java > > > > -rw-r--r-- 1 student student 4028 Sep 12 12:09 Mail001Lexer.class > > > > -rw-r--r-- 1 student student 9218 Sep 12 12:09 Mail001Lexer.java > > > > -rw-r--r-- 1 student student 2754 Sep 12 12:09 Mail001Parser.class > > > > -rw-r--r-- 1 student student 3237 Sep 12 12:09 Mail001Parser.java > > > > -rw-r--r-- 1 student student 60 Sep 12 12:09 Mail001.tokens > > > > student@antlr:~/projects/antlr/mail/mail001$ java Mail001 < bad.dat > > > > line 1:1 missing '\'' at 'val' > > > > line 1:4 missing '\'' at ')' > > > > student@antlr:~/projects/antlr/mail/mail001$ java Mail001 < Mail001.dat > > > > student@antlr:~/projects/antlr/mail/mail001$ > > > > > > > > Notice that using Mail001.dat is valid data so no errors will be > presented. > > > > > > > > Hope that helps, > > > > > > > > Eric > > > > > > > >> > >> Please not that, apart from the parenthesis, the rest is generated by > >> ANTLRWorks. Using the interpreter to match the string ' ' (single quotes > >> and > >> one space, or any letter between the quotes), I get a > >> MismatchedTokenException(4!=10). It only matches '' (single quote > without > >> space). > >> > >> I tried removing the CHAR rule and then, for the same input, I get: > >> > >> MismatchedTokenException(-1!=9) > >> > >> and in the console > >> > >> problem matching token at 1:3 NoViableAltException('?'@[()* loopback of > >> 17:13: ( ESC_SEQ |~ ( '\\' | '\'' ) )*]) > >> > >> I tried using the debugger, but on Windows I get a javac, cannot create > >> process error and In my Mac, I get compile time errors in the generated > >> classes because it cannot find antlr classes (probably just a classpath > >> problem). Is there any documentation on how to use AntlrWorks features? > >> The > >> site documentation is pretty shallow and I cannot find any tutorials. > >> > >> Regards, > >> Gabriel MirĂ³ > >> ANTLR Newbie > >> > >> > -----Original Message----- > >> > From: [email protected] [mailto:antlr-interest- > >> > [email protected]] On Behalf Of The Researcher > >> > Sent: Friday, September 09, 2011 2:46 PM > >> > To: [email protected] > >> > Subject: Re: [antlr-interest] How to recognize a String > >> > > >> > Hi Gabriel, > >> > > >> > It would help if you could post your entire grammar and the exact > error > >> > message here. > >> > > >> > Also, don't you mean > >> > > >> > LPAREN: '("; > >> > RPAREN: ')'; > >> > > >> > Don't worry we have all been there. > >> > > >> > Thanks, Eric > >> > > >> > >> List: http://www.antlr.org/mailman/listinfo/antlr-interest > >> Unsubscribe: > >> http://www.antlr.org/mailman/options/antlr-interest/your-email-address > >> > > > > > > List: http://www.antlr.org/mailman/listinfo/antlr-interest > Unsubscribe: > http://www.antlr.org/mailman/options/antlr-interest/your-email-address > List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address -- You received this message because you are subscribed to the Google Groups "il-antlr-interest" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.
