[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