Sziasztok,
tobb bison (vagy yacc) leirasrol visszapattantam, mert nem talaltam _mukodo_ mintapeldat, mindig van valamilyen szintaktikai hiba, pedig copy-paste probalom a mintapeldakat. Most eppen ez az aktualis:
http://pastebin.com/6FSvQT2b
Ez meg az eredmenye:
steve@HP:/tmp$ yacc -dv parser1.y
parser1.y:7.7: invalid character: `\342'
parser1.y:7.8: invalid character: `\200'
parser1.y:7.9: invalid character: `\231'
parser1.y:7.10: invalid character: `-'
parser1.y:7.11: invalid character: `\342'
parser1.y:7.12: invalid character: `\200'
parser1.y:7.13: invalid character: `\231'
parser1.y:7.15: invalid character: `\342'
parser1.y:7.16: invalid character: `\200'
parser1.y:7.17: invalid character: `\231'
parser1.y:7.18: invalid character: `+'
parser1.y:7.19: invalid character: `\342'
parser1.y:7.20: invalid character: `\200'
parser1.y:7.21: invalid character: `\231'
parser1.y:8.1-5: syntax error, unexpected %left, expecting string or char or identifier or type
Lehet, hogy ez valami trivialis dolog, de mar az otodik bevezetest olvasom a temaban es meg nem talaltam lefordithato mintapeldat. Itt mi a baj?
- 5062 megtekintés
Hozzászólások
' idézőjel.
- A hozzászóláshoz be kell jelentkezni
parser1.y:7.7: invalid character: `\342'
parser1.y:7.8: invalid character: `\200'
parser1.y:7.9: invalid character: `\231'
U+2019 ’ e2 80 99 RIGHT SINGLE QUOTATION MARK
Ez valami UTF-8 "szemét" lesz, nem pedig rendes aposztróf. WinWordben készült a kód, vagy mi? Tessék rendes text editort használni, US-ASCII vagy Latin1 kódolással.
- A hozzászóláshoz be kell jelentkezni
En Ubuntu alatt probalkozom, de hogy az eredeti mivel keszult, gozom nincs. El nem irhattam, mert copy-paste modon masoltam,epp ezert van tele a hocipom, hogy mar az otodik tutorialt dobom a kukaba, mert eddig egy sem fordult le.
- A hozzászóláshoz be kell jelentkezni
Épp az a baj, hogy copy-paste módon próbálkoztál.
Elolvasod, begépeled. Nem olyan hosszú, hogy ne mehetne.
Alternatív megoldás: keresel egy open-source programot, aminél bisont használtak (tippre mondjuk a bc-t ilyennek gondolnám), és fájl szinten kimásolod a forrásából...
Amúgy nekem meg a kurva UTF-8-cal van tele a hócipőm, hogy mi a fasznak kellett ugyanannak az egy karakternek 2-3 különböző kódot is adni...
- A hozzászóláshoz be kell jelentkezni
Az ilyen szemét blogokból kimásolt példákban a legtöbb írásjel nem az, aminek látszik. Ők meg talán Wordből másolták ki. Kötőjel, idézőjel, aposztróf, stb. Tömegesen jelentkező igénytelenség, ennyi.
- A hozzászóláshoz be kell jelentkezni
Hahó!
Ezen a címen még forráskódok is vannak, a ,,copy-paste'' helyett próbáld meg ezekkel...
G.
============================================
"Share what you know. Learn what you don't."
- A hozzászóláshoz be kell jelentkezni
Igen, ezzel is probalkoztam. Sajnos, az elso yacc peldaban (13.oldal) mindjart belefutottam egy rejtelybe: honnan vegyem az #include "y.tab.h" filet. Annal inkabb nem ertem, mert a Figure 2 szerint ezt a yacc allitja elo a flex szamara. En, a kezdo meg allok es nezek hulyen magam ele.
Hogyan is van ez igazabol?
- A hozzászóláshoz be kell jelentkezni
Hahó!
Az 5. oldalon szereplő ábra alapján viszont az említett ,,y.tab.h'' állományt a yacc (bison) készíti el, tehát a 13. oldalon levő kódrészletet tartalmazó állományt -- de ez a szövegben is szerepel -- a (f)lexnek kell odaadni, de előbb a megfelelő állomány(ok)ra a yacc-ot (bison-t) kell ráereszteni, s majd abból készíti el az említett fájlt. Az ábra a programok futtatási sorrendjét is megadja.
A (f)lex és a yacc (bison) két külön állománnyal dolgozik. Az egyik -- általában .l kiterjesztésű -- a (f)lex-é, ebben vannak leírva a lexikális dolgok, a yacc (bison) -- melynek .y a kiterjesztése -- tartalmazza a szintaktikus elemző leírását (~parser).
A két program egyébként külön-külön is használható.
Megjegyzés: a letölthető tömörítvényben van olyan futtathatóvá tehető állomány is (build), amely a megfelelő programok paraméterezését és futtatását elvégzi. Most próbáltam ki, és szépen működik (Debian 6.0, flex 2.5.35, bison (GNU Bison) 2.4.1, gcc version 4.4.5 (Debian 4.4.5-8)).
G.
============================================
"Share what you know. Learn what you don't."
- A hozzászóláshoz be kell jelentkezni
Koszonom a segitsegedet!
- A hozzászóláshoz be kell jelentkezni