[antlr-interest] Fixed field

Jim Idle jimi at temporal-wave.com
Fri Jul 30 10:26:08 PDT 2010


I think that you are barking up the wrong tree here. All your rules are
completely ambiguous and if any of the fields do not exactly correspond to
the number of letters, this will all fall over. ANTLR is not really meant
for parsing fixed width fields where each field is just some arbitrary text.
You should just use something like awk to do this, or even a very simple
java class that just reads a buffered input stream line by line and picks
out the fields.

Jim

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Brian Lavender
> Sent: Friday, July 30, 2010 10:04 AM
> To: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Fixed field
> 
> Hello empty antlr echo chambers. Is there anybody out there?
> 
> I figured out that if I create a lexer rule to match the newline, that it
will
> match rather than putting it in the parser rule. Now, it only seems to
parse
> the first bill that it finds. When I test it in the antlr works, it parses
both
> entries from input. Any ideas?
> 
> 
> grammar Agenda;
> 
> agenda	:	bill+;
> bill	:	title author NL { System.out.println("All " + $bill.text +
"\n"); }
> ;
> title 	:	LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR
LTR LTR {
> System.out.println("Title " + $title.text + "\n"); };
> author	:	LTR LTR LTR LTR LTR LTR LTR LTR LTR {
> System.out.println("Author " + $author.text + "\n"); };
> 
> 
> LTR  :   ('a'..'z'|'A'..'Z' | ' ' | '1'..'9') ;
> NL	:	('\n'|'\r');
> 
> 
> import org.antlr.runtime.*;
> 
> public class Test {
>     public static void main(String[] args) throws Exception {
>         ANTLRInputStream input = new ANTLRInputStream(System.in);
>         AgendaLexer lexer = new AgendaLexer(input);
>         CommonTokenStream tokens = new CommonTokenStream(lexer);
>         AgendaParser parser = new AgendaParser(tokens);
>         parser.agenda();
>     }
> }
> 
> Sample input
> 
> 
> construct bill frank burn
> eazememnt bill billy bob
> 
> 
> 
> 
> 
> On Thu, Jul 29, 2010 at 06:07:40PM -0700, Brian Lavender wrote:
> > Well, it looks like my attempt isn't so feeble, but I can't seem to
> > get the input to match on the newline. Do I need to do something
> different?
> >
> >
> > grammar Agenda;
> >
> > agenda	:	bill+;
> > bill	:	title author '\n' { System.out.println($bill.text);
}
> > ;
> > author	:	LTR LTR LTR LTR LTR LTR LTR LTR LTR {
> System.out.println($author.text); };
> > title 	:	LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR LTR
LTR LTR {
> System.out.println($title.text); };
> >
> > LTR  :   ('a'..'z'|'A'..'Z' | ' ' | '1'..'9') ;
> >
> > Input is the following.
> > Bill to allow eBill Joy
> > Bill to preventFrank Dist
> >
> >
> >
> >
> > On Mon, Jul 26, 2010 at 08:27:41PM -0700, Brian Lavender wrote:
> > > What's the best way to get the words out of a fixed field file? Say
> > > the title is in the first 20 columns, and then the author is in the
next 20?
> > >
> > > Below is a feeble attempt that will get four letters, but I would
> > > like to ignore any whitespace that occurs after the last letter before
the
> end column.
> > >
> > > brian
> > >
> > >
> > > grammar Foo;
> > >
> > > title	:	LTR LTR LTR LTR
'\n'{System.out.println($title.text);};
> > >
> > > LTR 	:	('a'..'z'|'A'..'Z');
> > >
> > > --
> > > Brian Lavender
> > > http://www.brie.com/brian/
> > >
> > > "There are two ways of constructing a software design. One way is to
> > > make it so simple that there are obviously no deficiencies. And the
> > > other way is to make it so complicated that there are no obvious
> deficiencies."
> > >
> > > Professor C. A. R. Hoare
> > > The 1980 Turing award lecture
> > >
> > > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > > Unsubscribe:
> > > http://www.antlr.org/mailman/options/antlr-interest/your-email-addre
> > > ss
> >
> > --
> > Brian Lavender
> > http://www.brie.com/brian/
> >
> > "There are two ways of constructing a software design. One way is to
> > make it so simple that there are obviously no deficiencies. And the
> > other way is to make it so complicated that there are no obvious
> deficiencies."
> >
> > Professor C. A. R. Hoare
> > The 1980 Turing award lecture
> >
> > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > Unsubscribe:
> > http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 
> --
> Brian Lavender
> http://www.brie.com/brian/
> 
> "There are two ways of constructing a software design. One way is to make
it
> so simple that there are obviously no deficiencies. And the other way is
to
> make it so complicated that there are no obvious deficiencies."
> 
> Professor C. A. R. Hoare
> The 1980 Turing award lecture
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address



More information about the antlr-interest mailing list