[antlr-interest] Re: 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 23:22:07 PDT 2004


Hi Joan Jesús Pujol Espinar, 

thanks for clarifying me...then how i need to go about in solving 
issue number 4.

regards,
P.Srinivasa Dinesh.

--- In antlr-interest at yahoogroups.com, Joan Pujol <joanpujol at g...> 
wrote:
> Hi,
> 
> I think that is better to don't send the same message severeal 
times.
> 
> On Mon, 30 Aug 2004 04:40:09 -0000, din_wins <din_wins at y...> wrote:
> > 
> > Dear Friends,
> > 
> > I am writing grammar for BMS Mainframe. I am struck with the
> > following issues.
> I think that your big problem is that you use all the power of the 
lexer.
> 
> > 
> > 1)       Spaces inside of a quoted string
> Define a token in the lexer similar to
> 
> QUOTEDSTRING:  '\'' ~('\'')* '\'';
> 
>  
> > 2)       Creating an end of file rule for **-| DFHMSD TYPE=FINAL 
END
> The same that 1:
> FINALTOKEN: "**-| DFHMSD TYPE=FINAL END";
> If you have some token that starts with * you will have to use
> syntatic predicates.
>  
> > 3)       The actual non-readable character at he the end of file
> I have no time to look at this.
> 
> > 4)       The header should also include | IDENTIFIER IDENTIFIER
> > assign. Once
> > this is fixed it may actually correct #2 as well.
> 2 is corrected ;)
> 
> And, don't use the Console.Write(XXX) to debug  in the parser. ANTLR
> has the option -traceParcer that does it for you and you have a
> cleanaer more redeable grammar.
> 
> Cheers,
> 
> > 
> > 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
> > 
> > 
> > 
> > 
> > 
> 
> 
> -- 
> Joan Jesús Pujol Espinar



 
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