[antlr-interest] How to Creating an end of file rule for **-| DFHMSD TYPE=FINAL END as per my BMS

din_wins din_wins at yahoo.com
Sun Aug 29 21:40:09 PDT 2004


Dear Friends,

I am writing grammar for BMS Mainframe. I am struck with the 
following issues.

1)       Spaces inside of a quoted string

2)       Creating an end of file rule for **-| DFHMSD TYPE=FINAL END

3)       The actual non-readable character at he the end of file

4)       The header should also include | IDENTIFIER IDENTIFIER 
assign. Once
this is fixed it may actually correct #2 as well.


below is my grammar file.

=========================================================

options {
 language = "CSharp";
 namespace = "Worksoft.Parsers";
}
class BMSLexer extends Lexer;
options 
{
 k = 2;
}
IDENTIFIER 
   :
   ( 'a'..'z'
   |'A'..'Z'
   |'0'..'9'
   |'.'|'/'
   |'~'|'`'|'!'|'@'|'#'|'$'|'%'|'^'|'&'|'*'|'-'|'_'|'+'
   |'['|']'|'{'|'}'|'\\'|'|'
   )+
   ;
/*  
NEWLINE  : '\r' '\n' | '\n'
   ;
*/   
QUOTATION : '\"'
   ;
   
TICK  : '\''
   ;
   
COMMA  : ','
   ;
EQUAL  : '='
   ;   

LPAREN  : '('
   ; 
RPAREN  : ')'
   ; 
 
WS   : ( ' '
   | '\t'
   |   '\r' '\n'
   |   '\n')
   { $setType(Token.SKIP); }
   ;
class BMSParser extends Parser;
options
{
 k = 3;
}
{
 private ParserHelper _parserHelper = new ParserHelper();
}
main returns [string xml = string.Empty]
   : 
   (
   file
     )
     {
      xml = _parserHelper.ToString();
     }
   ;
 
 
file  :
   {
     _parserHelper.Start();
     Console.WriteLine("Start file"); 
   }
   (head body EOF)
   {
     Console.WriteLine("End file"); 
     _parserHelper.End();
   }
   ;
  
head  :
   {
    Console.WriteLine("start head"); 
   }
   (a:IDENTIFIER b:IDENTIFIER assigngroup)
   {
    Console.WriteLine("End head - " + a.getText() + " - " + b.getText
()); 
   }
   ;
       
body  :
   {
    Console.WriteLine("Start body"); 
   }
   (parent)*
   {
    Console.WriteLine("End body"); 
   }
   ; 
   
assigngroup :
   {
    Console.WriteLine("Start assigngroup");
   }
   (assign (COMMA a:IDENTIFIER assign)*)+
   {
    Console.WriteLine("End assigngroup = " + a.getText());
   }
   ; 
   
assign  :
   {
    Console.WriteLine("Start assign");
   }
   a:IDENTIFIER EQUAL value
   {
    Console.WriteLine("End assign - " + a.getText());
   }
   |
   
   b:IDENTIFIER EQUAL valuegroup
   {
    Console.WriteLine("End assign - " + b.getText());
   }
   ;
              
valuegroup :
   {
    Console.WriteLine("Start valuegroup");
   }
   LPAREN value (COMMA value)* RPAREN 
   {
    Console.WriteLine("End valuegroup");
   }
   ;
   
value  :
   {
    Console.WriteLine("Start value");
   }
   a:IDENTIFIER
   {
    Console.WriteLine("End value = " + a.getText());
   }
   |
   TICK b:IDENTIFIER TICK
   {
    Console.WriteLine("End value = '" + b.getText() + "'");
   }
   ;
parent  :
   {
    Console.WriteLine("Start parent");
   }
   a:IDENTIFIER (obj)+
   {
    Console.WriteLine("End parent - " + a.getText());
   }
   ;      
   
obj  :
   {
    Console.WriteLine("Start obj");
   }
   a:IDENTIFIER assigngroup
   {
    Console.WriteLine("End obj - " + a.getText());
   }
   ; 

========================

below is my .bms file.
==========================
CHCM001  DFHMSD 
TYPE=MAP,                                              X
               
MODE=INOUT,                                             x
               
LANG=COBOL,                                             x
               
CTRL=FREEKB,                                            X
               
STORAGE=AUTO,                                           x
               
TERM=3270,                                              x
               TIOAPFX=YES
CHCM001  DFHMDI MAPATTS=
(COLOR,PS,HILIGHT,VALIDN),                     x
               DSATTS=
(COLOR,PS,HILIGHT,VALIDN),                       X
               SIZE=(24,80)
         DFHMDF POS=
(1,1),                                             x
               
LENGTH=007,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='CHCM001'
         DFHMDF POS=
(1,29),                                            x
               
LENGTH=022,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='CHC PERSONNEL TRACKING'
SYSDATE  DFHMDF POS=
(1,71),                                            x
               
LENGTH=008,                                             x
               
COLOR=YELLOW,                                           X
               ATTRB=(ASKIP,BRT)
         DFHMDF POS=
(4,26),                                            x
               
LENGTH=031,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='1. PERSONNEL LISTING'
         DFHMDF POS=
(6,26),                                            x
               
LENGTH=031,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='2. PERSONNEL INQUIRY'
         DFHMDF POS=
(8,26),                                            x
               
LENGTH=031,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='3. PERSONNEL MAINTENANCE'
         DFHMDF POS=
(10,26),                                           x
               
LENGTH=031,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='4. PERFORMANCE INQUIRY'
         DFHMDF POS=
(12,26),                                           x
               
LENGTH=031,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='5. PERFORMANCE MAINTENANCE'
         DFHMDF POS=
(14,26),                                           x
               
LENGTH=031,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='6. PERFORMANCE HISTORY'
         DFHMDF POS=
(18,26),                                           x
               
LENGTH=031,                                             x
               
COLOR=YELLOW,                                           X
               
ATTRB=ASKIP,                                            x
               INITIAL='12. PREVIOUS MENU/EXIT FUNCTION'
MSG      DFHMDF POS=
(24,1),                                            x
               
LENGTH=079,                                             x
               ATTRB=
(ASKIP,IC,BRT),                                   X
               
COLOR=RED,                                              X
               INITIAL='HIT PFKEY FOR CORRESPONDING MENU SELECTION'
**-|
        DFHMSD  TYPE=FINAL
        END



============

Regards,
P.Srinivasa Dinesh.

 



 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/antlr-interest/

<*> To unsubscribe from this group, send an email to:
    antlr-interest-unsubscribe at yahoogroups.com

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





More information about the antlr-interest mailing list