[antlr-interest] Spaces issues
Fabien Hermenier
hermenierfabien at gmail.com
Tue Mar 29 07:08:16 PDT 2011
Le 29/03/11 07:23, Jim Idle a écrit :
> 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
I just tried my tests using the debugger and I have the same issues. But
the output
is not really the same (even it is a fail). Is this normal to have a
different behaviour depending
on the way I test my grammar ?
How may the number of fragment impacts on the interpreter ?
Fabien.
>> -----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
> 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