[antlr-interest] Re: Need help for grammar of TL1 (a language use d in North America in Telecom)

ilkerpasa135 ilkerpasa135 at yahoo.com
Fri Oct 3 09:00:38 PDT 2003


Hello Monty,

I had missed your filter example, which I'm starting to read now.

I thought I read Ter's Lexer class notes, but I'll read it again too.

And will get back after that.

-- ilker


--- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> You've got some serious ambiguities there.  I would recommend maybe 
using
> lexer states or a parser filter as I've outlined at
> http://www.codetransform.com/filterexample.html
> 
> Also read Ter's lecture on lexers.  Actually read them all, it's 
worth it.
> Should be prominently available from the antlr.org home page.
> 
> Monty
> 
> -----Original Message-----
> From: ilkerpasa135 [mailto:ilkerpasa135 at y...] 
> Sent: Thursday, October 02, 2003 4:17 PM
> To: antlr-interest at yahoogroups.com
> Subject: [antlr-interest] Need help for grammar of TL1 (a language 
used in
> North America in Telecom)
> 
> I'm new to antlr. And trying to learn antlr and prepare the grammar 
> for TL1, a language used in North America for all Telecom 
equipment. 
> Hence when I get it, it could be an interesting addition to antlr 
> grammars.
> 
> Of course since I'm a newbei, when I run the following grammar I 
get 
> many nondeterminism warnings, basically all over the place.
> 
> Past couple of days (not full time tough), I went through antlr 
> tutorials, documents, etc , but obviously I haven't gotten it and 
> need help. Hence any help is appreciated.
> 
> Here is what the TL1 command structure is like;
>  VERB-modifier1-modifier2 : TID:AID:CTAG: : NAME=VALUE,NAME=VALUE ;
>  VERB-modifier1-modifier2 : TID:AID:CTAG: : VALUE,VALUE ;
>  Following are some TL1 command examples;
>    ENT-EQPT-OC3:TID1:1-1-#-#-3:ctag123::attrib1=123,attrib2=456;
>    ENT-EQPT-OC1:TID1:1-1-#-#-3:ctag123::123,456;
> 
> 
> Here is the grammar that I have;
> 
> class TL1Parser extends Parser;
> options { buildAST=true; }
> 
> // first just get TL1command grammar working
> //tl1Message       : tl1Command | tl1Acknow | tl1Response | tl1Auto;
> tl1Message       : tl1Command;
> 
> tl1Command       : (command_code DOUBL^ staging_blocks (DOUBL^ 
> payload_blocks)?) SEMI!;
> 
> command_code     : VERB (DASH^ modifier1 (DASH^ modifier2)?)?;
> modifier1        : NAME;
> modifier2        : NAME;
> 
> staging_blocks   : TID DOUBL^ AID DOUBL^ CTAG (DOUBL^ 
general_block)?;
> // general_block could be improved
> general_block    : NAME;
> 
> payload_blocks   : data_block_list (DOUBL^ data_block_list)*;
> data_block_list  : data_block (COMMA^ data_block)*;
> data_block       : data_block_positional | data_block_named;
> data_block_positional : VALUE (COMMA^ VALUE)*;
> data_block_named : (NAME EQUAL^ VALUE) (COMMA^ (NAME EQUAL^ VALUE))
*;
> 
> 
> 
> class TL1Lexer extends Lexer;
> 
> AID   : ('a'..'z'|'A'..'Z'|'0'..'9'|'.'|'-'|'_'|'/'|'#')+;
> CTAG  : ('a'..'z'|'A'..'Z'|'0'..'9')+;
> NAME  : ('a'..'z'|'A'..'Z'|'0'..'9')+;
> TID   : ('a'..'z'|'A'..'Z'|'0'..'9'|'.'|'-'|'_'|'/')+;
> VALUE : ('a'..'z'|'A'..'Z'|'0'..'9')+;
> VERB  : ('a'..'z'|'A'..'Z')+;
> 
> COMMA : ',';
> DASH  : '-';
> DOUBL : ':';
> EQUAL : '=';
> SEMI  : ';';
> 
> WS    : (' ' | '\t'
>          | '\r' '\n' { newline(); }
>          | '\n'      { newline(); }
>         ) 
>           { $setType(Token.SKIP); };
> 
> 
> 
>  
> 
> Your use of Yahoo! Groups is subject to 
http://docs.yahoo.com/info/terms/


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 




More information about the antlr-interest mailing list