[antlr-interest] Spaces issues
Jim Idle
jimi at temporal-wave.com
Tue Mar 29 06:23:45 PDT 2011
The interpreter is not likely to succeed with all those embedded fragments
and so on. Use the debugger and it will probably be fine.
Jim
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Fabien Hermenier
> Sent: Monday, March 28, 2011 11:47 PM
> To: antlr-interest at antlr.org
> Subject: [antlr-interest] Spaces issues
>
> Hi
>
> I starting to use ANTLR3 with AntlrWorks 3.4.1 on OS X and I have some
> issues with spaces. I've attached a sample antlr file describing my
> grammar (see 1st grammar)
>
> I'm trying to test 'litteralRange'. So using the interpreter, I write
> "[2 ..3]" or "[2 .. 3]" as input and it works fine. However, if I give
> the string "[2..3]" it does not work. I have followed the tutorial and
> declare the Lexer WS with the channel hidden to ignore spaces, but I
> still have strange issues with this.
>
> Another strange fact is that if I write a reduced grammar that just
> isolate the rule I want to test, it is fine (see 2nd grammar).
>
> Does anyone have a solution or a hint ?
>
> Regards
> Fabien.
>
> --- 1st grammar ---
> grammar ANTLRVJob5;
>
> options {
> language = Java;
> output = AST;
> }
> fragment Digit :'0'..'9';
> fragment Letter :'a'..'z'|'A'..'Z';
> fragment HexDigit : (Digit|'a'..'f'|'A'..'F'); fragment HexPrefix:
> '0x'|'0X'; fragment HexNumber: HexPrefix HexDigit+; fragment OctNumber:
> '0' Digit+; fragment DecNumber: '0'|'1'..'9'Digit*; fragment Integer:
> HexNumber|OctNumber|DecNumber;
> fragment Name : Fqdn;/*Letter(InnerContent*(Digit|Letter))?;*/
> fragment VarPrefix: '$';
> fragment EnumSep: ',';
> fragment Fqdn: Domain ('.' Domain)*;
> fragment Domain: Letter ('-'?(Letter|Digit))*;
> fragment InnerContent: (Letter
> |Digit
> |'_'
> |'-'
> |'.'(Letter|Digit));
> fragment RRange: ']' (InnerContent*(Letter|Digit))?; fragment LRange:
> (Letter (Digit|Letter|'-'|'_'|'.')*)? '[';
>
>
> INTEGER : Integer;
> NAME: Name;
> ENUMSEP: EnumSep;
> EQUALS : '=';
> ENDL : ';';
> PLUS : '+';
> MINUS : '-';
> TIMES : '*';
> VARIABLE: VarPrefix(Letter|'_')(Letter|Digit|'_')*;
>
> COMMENT
> : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
> | '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
> ;
>
> WS : ('\n'|'\r'|'\t'|' ') {$channel=HIDDEN;};
>
>
> INNERCONTENT: InnerContent+;
> RRANGE:RRange;
> LRANGE: LRange;
> LVRANGE: VarPrefix LRange;
> CONSTRAINTIDENTIFIER: Letter(Letter|Digit|'_')*'(';
>
> litteral: NAME|INTEGER;
> operator: PLUS|TIMES;
>
> litteralRange: '[' INTEGER '..' INTEGER ']';
>
> litteralEnum: LRANGE INNERCONTENT /*(ENUMSEP INNERCONTENT)+']'
> RRANGE*/;
>
> variableEnum: LVRANGE INNERCONTENT (ENUMSEP INNERCONTENT)+ RRANGE;
> variableRange: LVRANGE INTEGER '..' INTEGER RRANGE;
>
> explodedSet:('{}'| '{'expression (ENUMSEP expression)*'}');
>
> atom : '(' expression ')'
> |litteralRange
> ;
>
>
> expression: atom/* (operator expression)?*/;
>
> var_decl: VARIABLE EQUALS expression ';';
>
> instruction: var_decl;
>
> vjob_decl: instruction*;
> ---
>
> --- 2nd grammar ---
> grammar some;
>
> COMMENT
> : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
> | '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
> ;
>
> WS : ( ' '
> | '\t'
> | '\r'
> | '\n'
> ) {$channel=HIDDEN;}
> ;
> fragment Digit :'0'..'9';
> fragment HexDigit : (Digit|'a'..'f'|'A'..'F'); fragment HexPrefix:
> '0x'|'0X'; fragment HexNumber: HexPrefix HexDigit+; fragment OctNumber:
> '0' Digit+; fragment DecNumber: '0'|'1'..'9'Digit*; fragment Integer:
> HexNumber|OctNumber|DecNumber;
>
> INTEGER : Integer;
> litteralRange: '[' INTEGER '..' INTEGER ']';
> //litteralRange: '[' INTEGER '..' INTEGER ']';
> ---
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address
More information about the antlr-interest
mailing list