Das erste Flex oder Bison Programm kann schnell zu
einem Frust Erlebnis werden, weil in der Dokumenation
lang und breit die Syntax erklärt wird, aber wie man
jetzt tatsächlich ein lauffähiges Programm bekommt
steht irgendwo gut versteckt.

Hier sind die Regeln wie man ein flex programm scanner.l
kompilieren kann.

scanner.c:scanner.yy
        flex -o scanner.c scanner.l

scanner.o:scanner.c
        gcc -c -o scanner.o scanner.c

scanner:scanner.o
        gcc -o scanner scanner.o -lfl


Wichtig dabei ist, dass fl dazugelinkt wird. Das linken
funktioniert nur an letzter stelle (-lfl muss hinten
stehen).


Will man bison verwenden, braucht man ein von flex
generiertes scanner.o (bzw. könnte man natürlich auch
die von flex generierte Funktion yylex selber schreiben).

Hier sind die Regeln wie man ein bison Programm parser.y
kompilieren kann.

parser.c:parser.y
        bison -d -o parser.c parser.y

parser.o:parser.c parser.h
        gcc -c -o parser.o parser.c

parser:parser.o scanner.o
        gcc -o parser parser.o scanner.o -lfl -ly


Jetzt muss neben der Library fl auch die Library y
und das von flex generierte Objectfile dazugelinkt
werden.

bison muss mit dem Parameter -d aufgerufen werden,
diese Headerdatei kann dann im scanner verwendet
werden (bei obiger Regel scanner.o:scanner.c muss
noch scanner.h hinzugefügt werden).

Mit dem Wissen sollte das ganze zumindest einmal kompilieren.
Damit es auch das macht was es soll ist ein Buch und/oder
die bison/flex Dokumentation unverzichtbar.

Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif