Grammar works fine with AntrlWorks but not on C target

37 views
Skip to first unread message

Moritz Wilfer

unread,
Jan 8, 2013, 5:13:42 PM1/8/13
to antlr-di...@googlegroups.com
Hi everybody,

I developed the attached grammar and it works fine with AntlrWorks 1.3 (Debug, Interpret). But when I build the lexer&parser for C, there are several errors using it:


test_input(1) : lexer error 3 :
    1:1: Tokens : ( T__60 | T__61 | T__62 | T__63 | SELECT | FROM | WHERE | AS | DOTSTAR | DOT | AND | OR | XOR | NOT | EXISTS | TRUE | FALSE | NIL | BETWEEN | LIKE | ASTERISK | COMMA | DIVIDE | MODULO | PLUS | MINUS | EQ | NEQ | GT | ST | ID | INT | FLOAT ); at offset 6, near ' ' :
     * FROM test
test_input(1) : lexer error 3 :
    1:1: Tokens : ( T__60 | T__61 | T__62 | T__63 | SELECT | FROM | WHERE | AS | DOTSTAR | DOT | AND | OR | XOR | NOT | EXISTS | TRUE | FALSE | NIL | BETWEEN | LIKE | ASTERISK | COMMA | DIVIDE | MODULO | PLUS | MINUS | EQ | NEQ | GT | ST | ID | INT | FLOAT ); at offset 8, near ' ' :
     FROM test
test_input(1) : lexer error 3 :
    1:1: Tokens : ( T__60 | T__61 | T__62 | T__63 | SELECT | FROM | WHERE | AS | DOTSTAR | DOT | AND | OR | XOR | NOT | EXISTS | TRUE | FALSE | NIL | BETWEEN | LIKE | ASTERISK | COMMA | DIVIDE | MODULO | PLUS | MINUS | EQ | NEQ | GT | ST | ID | INT | FLOAT ); at offset 13, near ' ' :
     test

It happens, when I do: parser->select(parser);

Input was: SELECT * FROM test

Can anybody help me? Where is the fault?

Regards
SimpleSQL.g.zip

angus....@gmail.com

unread,
Jan 11, 2013, 2:41:32 AM1/11/13
to antlr-di...@googlegroups.com
Have you got a valid whitespace rule?

I may have miscounted but it looks like the error occurs at the first space.

Also, have you considered just declaring the tokens with a simple 'SELECT' rather than one character at a time?

Angus

Moritz Wilfer

unread,
Jan 13, 2013, 11:58:04 AM1/13/13
to antlr-di...@googlegroups.com, angus....@gmail.com
Yeah, you a right, I missed a whitespace rule :)

Thank you!
Reply all
Reply to author
Forward
0 new messages