[antlr-interest] howto ignore unknown tokenstreams/recordsets

Oliver Kowalke oliver.kowalke at gmx.de
Mon Jan 17 04:32:58 PST 2005


Hi,

I'm writing a parser which parses a dokument (datasets separated by
semicolon). 
How can I ignore unknown datasets (in my example recordsets X and Y)?

with best regards
Oliver

document structure:

A  1 2;
B 2;
X 1 2;
C "xyz";
Y "ijk";
D "uvw" 123;

The parser grammar looks like this:

...

class MyLexer extends Lexer;

options 
{ k=2; }

tokens
{
A="A";
B="B";
C="C";
D="D";
}


INT : ( '0'..'9' )+;
STRING : '"'!
    ( ~( '\'' | '"' | '\n' | '\r' ) )*
    ( '"'!
    | // nothing -- write error message
    )
;

EODS : ';';

DELIM : ( ' '
	| '\t'
	|	( "\r\n"
		| '\r'
		| '\n'
		)
		{ newline(); }
	)
	{ $setType( antlr::Token::SKIP ); }
;


class MyParser extends Parser;

options { k=2; }

start_rule : sec_1_rule sec_2_rule EOF;

sec_1_rule : ( a_rule | b_rule )*;

sec_2_rule : ( c_rule | d_rule )*;

a_rule : A INT INT EODS;

b_rule : B INT EODS;

c_rule : C STRING EODS;

d_rule : D STRING INT EODS;

-- 
10 GB Mailbox, 100 FreeSMS http://www.gmx.net/de/go/topmail
+++ GMX - die erste Adresse für Mail, Message, More +++


More information about the antlr-interest mailing list