[antlr-interest] Problemns with Predicate using last version...
Alexandre Porcelli
porcelli at uol.com.br
Wed Apr 11 19:43:02 PDT 2007
I started today develop a Visual Basic 6 grammar based using ANTLR v3
(last build).
I started with just the lexer rules... here is my job result:
grammar VBGrammar;
@lexer::members
{
boolean isLineContinuation = false;
}
compilationUnit
: statementList*
;
statementList
: identifier
| numeric
| label
;
identifier
: IDENTIFIER
;
numeric : NUMERIC
;
label : LABEL_STATEMENT
;
LABEL_STATEMENT
: {!isLineContinuation && getCharPositionInLine() == 0}?=> WS?
(LABEL_NAME|DIGIT+ { token = Token.SKIP_TOKEN;})
;
COMMENT
: '\'' (ANY_EXCLUDING_NL
{
if(input.LA(1) == '_' && (input.LA(2) == '\r' || input.LA(2) == '\n')){
input.consume();
input.consume();
if (input.LA(1) == '\n'){
input.consume();
}
}
})*
{token = Token.SKIP_TOKEN;}
;
IDENTIFIER
: (DIGIT|'_')* LETTER ('-' | LETTER|DIGIT|'_' | '$' | '#')*
;
NUMERIC
: DIGIT+ ('.' DIGIT+)
| DIGIT+
;
WS : (' ' | '\t' )+
{ token = Token.SKIP_TOKEN;}
;
LINE_CONTINUATION
: '_' F_NL
{ isLineContinuation = true; }
;
NL : ('\r' | '\n')+
{ token = Token.SKIP_TOKEN; isLineContinuation = false;}
;
fragment
LABEL_NAME
: LETTER (LETTER | '_' | DIGIT)+ ':'
;
fragment
LETTER
: 'a'..'z' | 'A'..'Z'
;
fragment
DIGIT
: '0'..'9'
;
fragment
ANY_EXCLUDING_NL
: '\u0000'..'\t'|'\u000B'..'\f'|'\u000E'..'\uFFFE'
;
fragment
F_NL : ('\r' | '\n')+
;
I use to test this grammar this file:
'teste
'dkjshfkjs ksjdhf lksjhdf lskjhf lskjdhf ldfsdf _
dsdfsgfhsffd _
asdkjhskjdhfhkj _
soghskjs djkfhglksj lkjshdf glkjhsdf gsfg sdfg
20 teste _
30 teste _
40 sss
50 asdsdfsdf dsfad fjjh
label: teste
Everything seens to be fine... but I got this error when I try to test
this grammar:
line 8:2 no viable alternative at character ' '
line 8:3 no viable alternative at character 't'
line 8:4 no viable alternative at character 'e'
line 8:5 no viable alternative at character 's'
line 8:6 no viable alternative at character 't'
line 8:7 no viable alternative at character 'e'
line 8:8 no viable alternative at character ' '
line 9:0 no viable alternative at character '3'
line 9:1 no viable alternative at character '0'
line 9:2 no viable alternative at character ' '
line 9:3 no viable alternative at character 't'
line 9:4 no viable alternative at character 'e'
line 9:5 no viable alternative at character 's'
line 9:6 no viable alternative at character 't'
line 9:7 no viable alternative at character 'e'
line 9:8 no viable alternative at character ' '
line 10:0 no viable alternative at character '4'
line 10:1 no viable alternative at character '0'
line 10:2 no viable alternative at character ' '
line 10:3 no viable alternative at character 's'
line 10:4 no viable alternative at character 's'
line 10:5 no viable alternative at character 's'
line 11:2 no viable alternative at character ' '
line 11:3 no viable alternative at character 'a'
line 11:4 no viable alternative at character 's'
line 11:5 no viable alternative at character 'd'
line 11:6 no viable alternative at character 's'
line 11:7 no viable alternative at character 'd'
line 11:8 no viable alternative at character 'f'
line 11:9 no viable alternative at character 's'
line 11:10 no viable alternative at character 'd'
line 11:11 no viable alternative at character 'f'
line 11:12 no viable alternative at character ' '
line 11:13 no viable alternative at character 'd'
line 11:14 no viable alternative at character 's'
line 11:15 no viable alternative at character 'f'
line 11:16 no viable alternative at character 'a'
line 11:17 no viable alternative at character 'd'
line 11:18 no viable alternative at character ' '
line 11:19 no viable alternative at character 'f'
line 11:20 no viable alternative at character 'j'
line 11:21 no viable alternative at character 'j'
line 11:22 no viable alternative at character 'h'
line 12:5 no viable alternative at character ':'
line 12:6 no viable alternative at character ' '
line 12:7 no viable alternative at character 't'
line 12:8 no viable alternative at character 'e'
line 12:9 no viable alternative at character 's'
line 12:10 no viable alternative at character 't'
line 12:11 no viable alternative at character 'e'
Any suggestion?
Best Regards,
Alexandre Porcelli
More information about the antlr-interest
mailing list