[antlr-interest] about space between operator

李志鹏 lizhipeng at gmail.com
Mon Dec 5 04:59:46 PST 2011


thank you
it works well


On Monday, December 5, 2011, Bart Kiers wrote:

> Ah, yeah, I forgot a `( ... )?` somewhere, sorry.
>
> This works:
>
> grammar AA;
>
> @parser::members {
>   public static void main(String[] args) throws Exception {
>     String src = "1.1<>1.2; 1.3<1.4; 1.5 <>  1.6; 1.7 < 1.8;";
>     AALexer lexer = new AALexer(new ANTLRStringStream(src));
>     AAParser parser = new AAParser(new CommonTokenStream(lexer));
>     parser.parse();
>   }
> }
>
> parse
>   :  (expression ';' {System.out.println("parsed: " +
> $expression.text);})+ EOF
>   ;
>
> expression
>   :  TYPE_DOUBLE (NOTEQUALS | LT)  TYPE_DOUBLE
>   ;
>
> NOTEQUALS
>   :  '<>'
>   ;
>
> LT
>   :  '<' (' '+ ('>' {$type=NOTEQUALS;})?)?
>   ;
>
> TYPE_DOUBLE
>   :  Digit+ '.' Digit*
>   |  '.' Digit+
>   ;
>
> WS
>   :  (' '|'\r'|'\t'|'\u000C'|'\n')+ {$channel=HIDDEN;}
>   ;
>
> fragment Digit : '0'..'9';
>
>
> Regards,
>
> Bart.
>
>
> On Mon, Dec 5, 2011 at 12:55 PM, 李志鹏 <lizhipeng at gmail.com<javascript:_e({}, 'cvml', 'lizhipeng at gmail.com');>
> > wrote:
>
>> thank you
>>
>> but not work.....
>>
>>
>> On Monday, December 5, 2011, Bart Kiers wrote:
>>
>>> Try this:
>>>
>>> NOTEQUALS
>>>   :  '<>'
>>>   ;
>>>
>>> LT
>>>   :  '<' (' '+ '>' {$type=NOTEQUALS;})?
>>>   ;
>>>
>>> Regards,
>>>
>>> Bart.
>>>
>>>
>>> On Mon, Dec 5, 2011 at 8:14 AM, 李志鹏 <lizhipeng at gmail.com> wrote:
>>>
>>>> hello all
>>>>
>>>> I have a very simple grammar like this:
>>>> grammar AA;
>>>>
>>>> expression
>>>> : TYPE_DOUBLE (NOTEQUALS | LT)  TYPE_DOUBLE EOF
>>>> ;
>>>>
>>>> NOTEQUALS
>>>> : '<>' | '<' (' '+) '>'
>>>> ;
>>>>
>>>> LT : '<';
>>>>
>>>> TYPE_DOUBLE
>>>> :   Digit+ '.' Digit*
>>>> |   '.' Digit+
>>>> ;
>>>>
>>>> fragment
>>>> Digit
>>>> : '0'..'9'
>>>> ;
>>>> WS
>>>> :  (' '|'\r'|'\t'|'\u000C'|'\n')+ {$channel=HIDDEN;}
>>>> ;
>>>>
>>>> if input "1.6<>1.7" or "1.6<1.7" or "1.6 <>  1.7", it is ok
>>>> but input "1.6 < 1.7"(has white space on both sides '<' ), the grammar
>>>> can't resolve it
>>>>
>>>> if I change as this
>>>> NOTEQUALS
>>>> : '<>'
>>>> ;
>>>> above all are ok, but "1.6 <   > 1.7" is not work, I wan't use "<>" to
>>>> mean
>>>> not equal,  and white space is allow between "< >", How Can i do?
>>>>
>>>> thank you all
>>>>
>>>> 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