Article View: at.fido.linux
Article #2143Re: Lex
From: Joachim Fabini
Date: Wed, 13 Dec 1995 00:00
Date: Wed, 13 Dec 1995 00:00
59 lines
2298 bytes
2298 bytes
Walter Fuehrer wrote:
>
> Hallo!
>
> Kennt sich wer etwas naeher mit LEX aus?
>
> STDIN wird mit fgets gelesen und einer Prozedur: get_key_event uebergeben.
> Diese Prozedur sollte dann in dem von LEX generierten C-Module stehen und die
> Auswertungen der Tokens zurueckliefern (Das bedeutet, dass nicht
> standardmaessig von STDIN gelesen werden soll).
>
> Wie muss nun diese Prozedur in das LEX-Prg. eingebunden werden und wie kann
> dabei verhindert werden, dassss von STDIN gelesen wird?
>
> Danke im voraus!
>
> Ciao, Walter
Hallo Walter!
Ein Tip - schau Dir einmal die manualpage zu flex an - da sind
ein paar sehr gute Beispiele drin.
Abgesehen davon - der FILE* von dem (f)lex liesst ist global
definiert. (yyin) Dh. Du kannst mit
yyin = fopen("filename", r);
direkt vom File statt von stdin lesen.
Ich habe das einmal gebraucht, um ein Programm beim start
entweder von einem File oder von stdin lesen zu lassen.
int main(int argc, char **argv)
{
FILE *fp;
if(argc > 1)
/* parameter soll filename sein ... */
if((yyin = fopen(argv[1], "r")) == NULL) {
perror("...."); exit(1);
}
else
yyin = stdin; /* waere eigentlich nicht einmal notwendig */
return yylex();
}
Vielleicht hilft Dir das weiter ...
--Jo
******************************************************************
Joachim Fabini
jo@vmars.tuwien.ac.at
e9027595@stud1.tuwien.ac.at
******************************************************************
"Programming graphics in X is like finding sqrt(pi) using Roman
numerals."
-- Henry Spencer
******************************************************************
Technical Details
Message-ID:
<30CEE4A7.41C6@vmars.tuwien.ac.at>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<MSGID_2=3A313=2F17.4=40fidonet.org_ac0abe7b@fidonet>Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: 109314,c92afb313aace26b X-Google-Attributes: gid109314,public From: Joachim Fabini <jo@vmars.tuwien.ac.at> Subject: Re: Lex Date: 1995/12/13 Message-ID: <30CEE4A7.41C6@vmars.tuwien.ac.at> X-Deja-AN: 121717903 references: <MSGID_2=3A313=2F17.4=40fidonet.org_ac0abe7b@fidonet> to: Walter Fuehrer <Walter.Fuehrer@2-313-17-4.st.co.at> content-type: text/plain; charset=us-ascii organization: Vienna University of Technology, Austria mime-version: 1.0 newsgroups: at.fido.linux x-mailer: Mozilla 2.0b1 (X11; I; OSF1 V2.1 alpha)