Date: Thu, 28 Nov 1996 12:59:00 +0100 (MEZ) From: "Hr.Ladavac" <lada@ws2301.gud.siemens.co.at> To: rb@gid.co.uk (Bob Bishop) Cc: terry@lambert.org, stesin@gu.net, chuckr@Glue.umd.edu, hackers@FreeBSD.org Subject: Re: Lex/Yacc question Message-ID: <199611281159.AA245952340@ws2301.gud.siemens.co.at> In-Reply-To: <v01540b0caec30fb3ed73@[194.32.164.2]> from "Bob Bishop" at Nov 28, 96 09:57:45 am
next in thread | previous in thread | raw e-mail | index | archive | help
E-mail message from Bob Bishop contained:
> At 10:14 am 28/11/96, Andrew Stesin wrote:
> >> > echo This is an undelimited yytext[] to my eol to pass to echo()
> >
> >lex:
> >
> >[^\n]+\n return UNDELIMITED_YYTEXT;
> >
> >yacc:
> >
> >UNDELIMITED_YYTEXT
> > {
> > echo($1);
> > }
> >
> >or something like the above (I used lex+yacc years ago).
>
> I think that's right (except that yytext (ie $1) will include the trailing
> newline which you may want to strip). The main pitfall to watch out for is
> that `.' in a lex RE will never match newline.
How about:
lex:
'\n' /* ignore? */
^.*$ { yyval = strdup( yyytext ); return UNDELIMITED_YYTEXT; }
yacc:
UNDELIMITED_YYTEXT: { echo( $1 ); }
This strips newlines and returns everything on the line (and the empty string
for an empty line).
/Marino
>
> IMHO, the original papers are still the best general texts on lex and yacc;
> they can be found in the 4.4-Lite distribution under /usr/share/doc/psd.
>
> Come to think of it, why doesn't /usr/share/doc figure in FreeBSD distributions?
>
>
> --
> Bob Bishop (0118) 977 4017 international code +44 118
> rb@gid.co.uk fax (0118) 989 4254 between 0800 and 1800 UK
>
>
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611281159.AA245952340>
