DarkMo schrieb:also ich hab mir jetzt mal MinGW besorgt. da is auch ne gcc.exe dabei und läuft in windoof. vin hier: Lexikalische Analyse mit Lex - Kiesler phpWebsite consulting hab ich mal den aufruf ausm makefile nachgestellt (das .c file in den selben ordner kopiert) und es kommt folgende fehlermeldung:
warning: no newline at end of file
cannot find -lfl
collect2: ld returned 1 exit status
aufruf (nur mit dem standard lex.yy.c file da): gcc -o wc wc.c -lfl
erklrärung dazu: 3. Wenn Flex erfolgreich war, kompilieren wir es mit dem C-Compiler gcc, verlinken es mit der Flex-Bibliothek fl (-lfl) und erhalten die Ausführbare Datei wc (-o wc).
hat hier jemand nen anhaltspunkt für mich, wie ich das lösen kann? muss ich die wiedermal extra von irgendwoher ziehen? wenn ja, wäre nen link kuhl, da ne google suche nach fl sicher nich sehr erfolgreich enden wird :/ und ausserdem ne hilfestellung, wie ich das einbinden kann wäre dann noch schön



.gif)
/* Word Count with Lex.
part of a lex-tutorial on
http://www.kiesler.at/
*/
int words=0;
int lines=0;
WORD [a-zA-Z0-9_]+
PUNCTUATION [\.\ ?\;\,\!\-\&]+
WHITESPACE [ \t]+
IGNORE {PUNCTUATION}|{WHITESPACE}
NEWLINE [\n]+
%%
{WORD} words++;
{IGNORE} /* */
{NEWLINE} lines++;
%%
main(int argc, char **argv) {
yyin=argc>1 ? fopen(argv[1], "r") : stdin;
yylex();
printf("%d word(s), %d line(s).\n",
words, lines);
exit(0);
}
als test.txt im selben ordner wie die wc.exe mit dem oben geschriebenen aufruf.hallo welt
dies ist ein test
palimmel palummel palam
Code:/* Word Count with Lex. part of a lex-tutorial on http://www.kiesler.at/ */ int words=0; int lines=0; WORD [a-zA-Z0-9_]+ PUNCTUATION [\.\ ?\;\,\!\-\&]+ WHITESPACE [ \t]+ IGNORE {PUNCTUATION}|{WHITESPACE} NEWLINE [\n]+ %% {WORD} words++; {IGNORE} /* */ {NEWLINE} lines++; %% main(int argc, char **argv) { yyin=argc>1 ? fopen(argv[1], "r") : stdin; yylex(); printf("%d word(s), %d line(s).\n", words, lines); exit(0); }
das (wc.lex) hab ich da durch flex gejagt -> lex.yy.c -> durchn gcc -> wc.exe
also muss ich die dann so aufrufen, dass der erste parameter größer 1 is um den 2. paramter (ein text file) dann ausgewertet wird. sprich sowas wie "wc 2 test.txt"? gleich mal probieren...
ihr seid guuut ^^).
-> wandelt meine .lex per flex in eine .c und diese dann per gcc in die .exemake.bat schrieb:@echo on
C:\Programme\GnuWin32\bin\flex -oC:\Dokume~1\DarkMo\Desktop\compiler\wc.c C:\Dokume~1\DarkMo\Desktop\compiler\wc.lex
C:\Programme\MinGW\bin\gcc -o C:\Dokume~1\DarkMo\Desktop\compiler\wc C:\Dokume~1\DarkMo\Desktop\compiler\wc.c -lfl
del C:\Dokume~1\DarkMo\Desktop\compiler\wc.c
exit
-> verwendet die test.txt mit den eingabedaten mit der erstellten .exe und gibt eine ergebnis.txt zurück. was da drin steht, sollte klar sein ^^ funzt wunderbar. grad getestet.use.bat schrieb:@echo on
C:\Dokume~1\DarkMo\Desktop\compiler\wc test.txt > ergebnis.txt
exit



