/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
C streams,FILE* og stdin
Fra : Jonas Meyer Rasmusse~


Dato : 29-07-02 21:21

Hejsa.

Jeg sidder og benytter et bibliotek(flex & bison), som tilsyneladende kun
vil
tage input fra stdin. Det er fint nok, når jeg skal parse en fil, men
jeg har af og til brug for at sende blot en enkelt linie til koden genereret
af flex/bison...
Den eneste metode jeg kan få det til at fungere, er ved at genåbne stdin med
freopen,
igennem en fil, og det virker lidt uoptimalt.

Findes der ikke en alternativ metode til at skrive til stdin, uden at
genåbne en eller anden
fil?

mvh Jonas



 
 
Leo Laursen (29-07-2002)
Kommentar
Fra : Leo Laursen


Dato : 29-07-02 22:40

Mon, 29 Jul 2002 22:21:09 +0200, skrev Jonas Meyer Rasmussen
<meyer@remove.diku.this.dk>:
> Hejsa.

> Jeg sidder og benytter et bibliotek(flex & bison), som tilsyneladende
> kun vil tage input fra stdin. Det er fint nok, når jeg skal parse en
> fil, men jeg har af og til brug for at sende blot en enkelt linie til
> koden genereret af flex/bison... Den eneste metode jeg kan få det til
> at fungere, er ved at genåbne stdin med freopen, igennem en fil, og
> det virker lidt uoptimalt.

> Findes der ikke en alternativ metode til at skrive til stdin, uden at
> genåbne en eller anden fil?

Nu er jeg ikke helt sikker på hvad du mener, og heller ikke hvilket
system du er på, men hvad med noget i stil med
echo "en enkelt linie" | ./kode

Leo
--
BOFH excuse #223:
The lines are all busy (busied out, that is -- why let them in to begin with?).

Jonas Meyer Rasmusse~ (29-07-2002)
Kommentar
Fra : Jonas Meyer Rasmusse~


Dato : 29-07-02 22:48


"Leo Laursen" <l.laursen@mail1.stofanet.dk> wrote in message
news:ai4cn7$d64$1@sunsite.dk...
> Nu er jeg ikke helt sikker på hvad du mener, og heller ikke hvilket
> system du er på, men hvad med noget i stil med
> echo "en enkelt linie" | ./kode

Bare standard C(ikke C++, pga de to biblioteker).

Jonas



R. A. Larsen (30-07-2002)
Kommentar
Fra : R. A. Larsen


Dato : 30-07-02 00:39

In article <ai483p$kp9$1@eising.k-net.dk>, Jonas Meyer Rasmussen wrote:
> Hejsa.
>
> Jeg sidder og benytter et bibliotek(flex & bison), som tilsyneladende kun
> vil
> tage input fra stdin. Det er fint nok, når jeg skal parse en fil, men
> jeg har af og til brug for at sende blot en enkelt linie til koden genereret
> af flex/bison...
> Den eneste metode jeg kan få det til at fungere, er ved at genåbne stdin med
> freopen,
> igennem en fil, og det virker lidt uoptimalt.
>
> Findes der ikke en alternativ metode til at skrive til stdin, uden at
> genåbne en eller anden
> fil?

Hvis jeg forstår dig ret, ønsker du at kunne få flex til at læse fra en
streng?

Her kommer et eksempel fra bogen "lex & yacc" af Levine, Mason & Brown (jeg
vil anbefale dig at få fat i denne bog; du kan låne den på biblioteket):

%{
%undef YY_INPUT
%define YY_INPUT(b, r, ms) (r = my_yyinput(b, ms))
%}
...
%%
[selve reglerne er fjernet]
%%
...
extern char myinput[];
extern char *myinputptr; /* current position in myinput */
extern int *myinputlim; /* end of data */

int my_yyinput(char *buf, int max_size)
{
int n = min(max_size, myinputlim - myinputptr);
if (n > 0) {
memcpy(buf, myinputptr, n);
myinputptr += n;
}
return n;
}

Ovenstående er indtastet fra bogen (fra et afsnit om flex + læsning fra en
streng). Det skulle give dig noget at arbejde videre med.

Jeg kan ikke afprøve det, da *min* version af lex & yacc er en udgave, som er
omskrevet til Pascal/Delphi. Det giver mig nogle gange problemer ;)

MVH, René
--
Sent using Virtual Access 5.51 - download your freeware copy now
http://www.atlantic-coast.com/downloads/vasetup.exe



Jonas Meyer Rasmusse~ (30-07-2002)
Kommentar
Fra : Jonas Meyer Rasmusse~


Dato : 30-07-02 07:04


"R. A. Larsen" <rene.larsen@spamfilter.dk> wrote in message
news:VA.0000019b.00f91756@spamfilter.dk...
> Hvis jeg forstår dig ret, ønsker du at kunne få flex til at læse fra en
> streng?

Yep, rigtigt, og det løser fint mit problem.
Tak!

Jonas



Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste