Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Lexikális elemző: lex (flex)
bemenet: X.lex (ezt írjuk meg mi) Fordítás flex -oX.c X.lex ennek hatására elkészíti a lexikális elemző programját, amit majd fel tudunk használni később a szintaktikus elemzőnél gcc X.c -lfl a .lex file általános szerkezete %{ bevezető rész, deklarációk (C nyelven) %} %% lexikai szabályok %% maradék rész, pl. függvények törzse
2
Lexikális elemző: lex (flex)
a lexikai szabályok általános alakja szabály { működés } a szabályok reguláris kifejezések x? 0 vagy 1 x x* és x+ valahány x (plusz: legalább egy) x | y x vagy y \x speciális, pl. \n (sor vége), \t (tab), \|, \/, \\ . pont: egy tetszőleges karakter [] zárójel, csoportosításra [a-z] intervallum, a és z közötti 1 karakter példa: a?b*[c|d]+[\n|\t| ].[0-9] ; “c 7” illeszkedik
3
Lexikális elemző: lex (flex)
a lex. elemző a blokkjai végén return-nel adja vissza a megtalált szimbólumot a szimbólum ált. előre definiált konstans 256-től felfelé (0-255-ig az ASCII karakterek vannak) #define IF 256 /* ezt a szintaktikus elemzőből fogjuk majd kinyerni */ if { return IF; } amíg csak a lexikai elemzőről van szó, visszatérés helyett printf-fel írjuk ki a felismert szimbólumot
4
Lexikális elemző: lex (flex)
az elemzőben használható néhány fontosabb változó és függvény yyleng: a felismert lexikai elem hossza yytext: a lexikai elem szövege input(): egy karakter beolvasása, pl. kommentek felismeréséhez jöhet jól unput(): az input()-olás végén lehet, hogy vissza kell tenni egy-két beolvasott karaktert
5
Lexikális elemző: lex (flex)
a lexikális elemző feladatai a lexikai elemek felismerése és továbbadása a szintaktikus elemzőnek a listafile elkészítése, aminek a tartalma sorszám a sorok eredeti alakjukban ennek is része lesz a “jól formázott kimeneti file” létrehozásában; erről bővebben később a lexikális hibák felismerése; ezt a szintaktikus elemzővel együtt kérem majd
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.