ÌåôáãëùôôéóôÝò. ÅéóáãùãÞ. ÅéóáãùãÞ (ii) Íßêïò Ðáðáóðýñïõ ÊùóôÞò Óáãþíáò. Áñ éêþ ãëþóóá L A A T ÔåëéêÞ ãëþóóá L T Y

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ÌåôáãëùôôéóôÝò. ÅéóáãùãÞ. ÅéóáãùãÞ (ii) Íßêïò Ðáðáóðýñïõ ÊùóôÞò Óáãþíáò. Áñ éêþ ãëþóóá L A A T ÔåëéêÞ ãëþóóá L T Y"

Transcript

1 ÌåôáãëùôôéóôÝò Íßêïò Ðáðáóðýñïõ ÊùóôÞò Óáãþíáò ÅéóáãùãÞ Ãëþóóåò ðñïãñáììáôéóìïý ÌåôáãëùôôéóôÝò Áíáãêáéüôçôá êáé éóôïñéêþ áíáäñïìþ ÅéóáãùãÞ Áñ éêþ ãëþóóá L A A T ÔåëéêÞ ãëþóóá L T Y Ãëþóóá õëïðïßçóçò L Y Óçìáóéïëïãßá ôïõ ðñïãñüììáôïò P óôç ãëþóóá L Åèíéêü Ìåôóüâéï Ðïëõôå íåßï Ó ïëþ Çëåêôñïëüãùí Ìç. êáé Ìç. Õðïëïãéóôþí ÅñãáóôÞñéï Ôå íïëïãßáò Ëïãéóìéêïý αρχικό πρόγραµµα µεταγλωττιστής τελικό πρόγραµµα [[P ]] L : Inp(P ) Out(P ) Óçìáóßá åíüò ìåôáãëùôôéóôþ C Ðïëõôå íåéïýðïëç, ÆùãñÜöïõ. Áðñßëéïò 2011 διαγνωστικά µηνύµατα [[C ]] LY : L A L T 1 / / / 216 ÅéóáãùãÞ ÅéóáãùãÞ (iv) ÅéóáãùãÞ (v) Ïñèüôçôá ôïõ ìåôáãëùôôéóôþ: \ôï ìåôáãëùôôéóìýíï ðñüãñáììá ðñýðåé íá åßíáé éóïäýíáìï ìå ôï áñ éêü" [[P ]] LA = [[[[C ]] LY (P )]] LT Åßäç ìåôáãëùôôéóôþí: Áðëïß Áíôßóôñïöïé (decompilers) Ìåôá-ìåôáãëùôôéóôÝò (meta-compilers) ÅéäéêÝò ðåñéðôþóåéò ìåôáãëùôôéóôþí: ÐñïåðåîåñãáóôÝò (preprocessors) ÓõìâïëïìåôáöñáóôÝò (assemblers) ÃåííÞôïñåò ðñïãñáììüôùí (program generators) ÓõíáöÞ åñãáëåßá Äéåñìçíåßò (interpreters) Äéá åéñéóôýò âéâëéïèçêþí (library managers) ÓõíäÝôåò (linkers) ÖïñôùôÝò (loaders) Åêäüôåò ðñïãñáììüôùí (program editors) ÅíôïðéóôÝò óöáëìüôùí (debuggers) Óôáôéóôéêïß áíáëõôýò (prolers) 4 / / / 216

2 ÊáôáóêåõÞ ìåôáãëùôôéóôþ ÊáôáóêåõÞ ìåôáãëùôôéóôþ ÖÜóåéò êáé ðñïúüíôá ôçò ìåôáãëþôôéóçò αρχικό πρόγραµµα ÂáóéêÝò áðáéôþóåéò: Íá ëåéôïõñãåß óùóôü Íá óõììïñöþíåôáé ìå ôéò ðñïäéáãñáöýò ôçò áñ éêþò êáé ôçò ôåëéêþò ãëþóóáò Íá ìåôáãëùôôßæåé ðñïãñüììáôá êüèå ìåãýèïõò Åðéðñüóèåôåò áðáéôþóåéò: Íá ðáñüãåé áðïäïôéêü êþäéêá Íá Ý åé ìéêñü ñüíï ìåôáãëþôôéóçò Íá Ý åé ìéêñýò áðáéôþóåéò ìíþìçò êáôü ôç ìåôáãëþôôéóç Íá äßíåé êáëü äéáãíùóôéêü ìçíýìáôá Íá óõíå ßæåé ýóôåñá áðü ëüèç Íá åßíáé ìåôáöýñóéìïò ËåêôéêÞ áíüëõóç ÓõíôáêôéêÞ áíüëõóç ÓçìáóéïëïãéêÞ áíüëõóç ÐáñáãùãÞ åíäéüìåóïõ êþäéêá Âåëôéóôïðïßçóç ÐáñáãùãÞ ôåëéêïý êþäéêá Πίνακας συµβόλων Λεκτική ανάλυση λεκτικές µονάδες Συντακτική Ανάλυση συντακτικό δέντρο Σηµασιολογική Ανάλυση συντακτικό δέντρο Παραγωγή ενδιάµεσου κώδικα ενδιάµεσος κώδικας Βελτιστοποίηση ενδιάµεσου κώδικα ενδιάµεσος κώδικας Παραγωγή τελικού κώδικα τελικός κώδικας Χειριστής σφαλµάτων Βελτιστοποίηση τελικού κώδικα τελικό πρόγραµµα 7 / / / 216 ÈÝìáôá õëïðïßçóçò Åêêßíçóç { bootstrapping ÏñãÜíùóç óå Ýíá ðýñáóìá Εµπρόσθιο τµήµα ÏñãÜíùóç óå ðåñüóìáôá ÏñãÜíùóç óå åìðñüóèéï êáé ïðßóèéï ôìþìá (front-end / back-end) ëåã ïò ïñèüôçôáò Åßäç äéáãíùóôéêþí ìçíõìüôùí êáé áíüíçøç ÅóùôåñéêÜ (internal) ÓöÜëìáôá (errors) ÐñïåéäïðïéçôéêÜ ìçíýìáôá (warnings) ÁðëÜ ìçíýìáôá (messages) A S A T S A T ÂÞìá 1: ÌåôáãëùôôéóôÞò ãéá S A óôçí T. ÂÞìá 2: ÌåôáãëùôôéóôÞò ãéá ôçí A óôçí S. ÂÞìá 3: ÌåôáãëùôôéóôÞò ãéá ôçí A óôçí A. T A T T A T T T Λεκτικός αναλυτής Πίνακας συµβόλων Συντακτικός αναλυτής Σηµασιολογικός αναλυτής Γεννήτορας ενδιάµεσου κώδικα Βελτιστοποιητής ενδιάµεσου κώδικα Γεννήτορας τελικού κώδικα Βελτιστοποιητής τελικού κώδικα Χειριστής σφαλµάτων Οπίσθιο τµήµα 10 / / / 216

3 ÔõðéêÝò ãëþóóåò ÔõðéêÝò ãëþóóåò ÊåöÜëáéï 2: ÔõðéêÝò ãëþóóåò ÂáóéêÝò Ýííïéåò ÁëöÜâçôï Óýìâïëï ÓõìâïëïóåéñÜ ÌÞêïò óõìâïëïóåéñüò Óýíïëï óõìâïëïóåéñþí ìþêïõò n Óýíïëï üëùí ôùí óõìâïëïóåéñþí Σ = Σ n n=0 Σ a α α Σ n ÂáóéêÝò Ýííïéåò (óõíý åéá) ÊåíÞ óõìâïëïóåéñü ÐáñÜèåóç óõìâïëïóåéñþí ÐáñÜèåóç óõìâïëïóåéñüò ìå ôïí åáõôü ôçò α 0 = ɛ α n+1 = αα n Ðñüèåìá, åðßèåìá, õðïóõìâïëïóåéñü ɛ αβ 13 / / / 216 ÔõðéêÝò ãëþóóåò ÔõðéêÝò ãëþóóåò (iv) ÔõðéêÝò ãëþóóåò (v) ÂáóéêÝò Ýííïéåò Ãëþóóá (óõíý åéá) íùóç ãëùóóþí L 1 L 2 = { α α L 1 α L 2 } ÐáñÜèåóç ãëùóóþí L 1 L 2 = { αβ α L 1 β L 2 } ÐáñÜèåóç ãëþóóáò ìå ôïí åáõôü ôçò L 0 = { ɛ } L n+1 = LL n Êëåßóéìï Þ Üóôñï ôïõ Kleene L = L n L + = LL n=0 L Σ ÃåííçôéêÜ ìïíôýëá ÃñáììáôéêÞ G = (T, N, P, S) T : ôåñìáôéêü óýìâïëá a N : ìç ôåñìáôéêü óýìâïëá A P : êáíüíåò ðáñáãùãþò α β S : áñ éêü óýìâïëï ÐáñáãùãÝò: áí α, β, γ, δ (T N) êáé (α β) P ôüôå γαδ γβδ Ãëþóóá: L(G) = { α T S + α } Éåñáñ ßá Chomsky Ôýðïõ 0: üëåò ïé ãñáììáôéêýò, α β Ôýðïõ 1: ãñáììáôéêýò ìå óõìöñáæüìåíá (context-sensitive), α β ìå α β Ôýðïõ 2: ãñáììáôéêýò ùñßò óõìöñáæüìåíá (context-free) A β Ôýðïõ 3: êáíïíéêýò ãñáììáôéêýò (regular) A ab Þ A a ÅéäéêÞ ðåñßðôùóç: ãëþóóåò ðïõ ðáñüãïõí ôçí êåíþ óõìâïëïóåéñü 16 / / / 216

4 ÔõðéêÝò ãëþóóåò (vi) ÊáíïíéêÝò ãëþóóåò ÊáíïíéêÝò ãëþóóåò ÁíáãíùñéóôÝò Ôýðïõ 0: ìç áíþ Turing Ôýðïõ 1: ãñáììéêü ðåñéïñéóìýíç ìç áíþ Turing Ôýðïõ 2: áõôüìáôá óôïßâáò (push-down automata) ñþóéìá óôç óõíôáêôéêþ áíüëõóç Ôýðïõ 3: ðåðåñáóìýíá áõôüìáôá (nite automata) ñþóéìá óôç ëåêôéêþ áíüëõóç ÊáíïíéêÝò ãñáììáôéêýò Ìüíï êáíüíåò A ab Þ A a éóïäýíáìá A Ba Þ A a ÊáíïíéêÝò åêöñüóåéò (regular expressions) ÊåíÞ óõìâïëïóåéñü: ɛ ÊÜèå óýìâïëï ôïõ Σ: a ÐáñÜèåóç äýï êáíïíéêþí åêöñüóåùí: (rs) ÄéÜæåõîç äýï êáíïíéêþí åêöñüóåùí: (r s) Êëåßóéìï (Þ Üóôñï) Kleene: (r ) Óõíôïìïãñáößåò: áðáëïéöþ ðåñéôôþí ðáñåíèýóåùí r + [a 1, a 2,..., a n ] [a 1 a 2 ] r?. Ðáñáäåßãìáôá êáíïíéêþí åêöñüóåùí ÁêÝñáéåò óôáèåñýò ùñßò ðñüóçìï óôçí Pascal Ýíá Þ ðåñéóóüôåñá äåêáäéêü øçößá [0-9] + ÁñéèìçôéêÝò óôáèåñýò ùñßò ðñüóçìï óôç C áêýñáéï ìýñïò ðïõ äåí áñ ßæåé ìå ìçäýí, åêôüò áí åßíáé ìçäåíéêü (ãéáôß;) ðñïáéñåôéêü: õðïäéáóôïëþ êáé êëáóìáôéêü ìýñïò ðñïáéñåôéêü: åêèýôçò ìå Þ ùñßò ðñüóçìï ([1-9][0-9] 0)(\.[0-9] + )?((E e)(+ )?[0-9] + )? 19 / / / 216 ÐåðåñáóìÝíá áõôüìáôá ÐåðåñáóìÝíá áõôüìáôá ÊáíïíéêÝò ãëþóóåò, áíáóêüðçóç A ÊáôáóôÜóåéò êáé ìåôáâüóåéò ÍôåôåñìéíéóôéêÜ (ÍÐÁ), ìç íôåôåñìéíéóôéêü (ÌÐÁ) êáé ÌÐÁ ìå êåíýò ìåôáâüóåéò (ÌÐÁ-ɛ) Áñ éêþ êáôüóôáóç, ôåëéêýò êáôáóôüóåéò B A Ðïéá ãëþóóá áíáãíùñßæåé; Ôç ãëþóóá ôùí óõìâïëïóåéñþí ðïõ áðïôåëïýíôáé áðü 0 êáé 1 êáé ðåñéý ïõí Üñôéï áñéèìü 1 B ÁíáãùãÝò êáé éóïäõíáìßåò êáíïíéêþ ãñáììáôéêþ ÌÐÁ-ɛ êáíïíéêþ Ýêöñáóç ÌÐÁ-ɛ ÌÐÁ-ɛ Åëá éóôïðïßçóç ÍÐÁ ÌÐÁ-ɛ êáíïíéêþ ãñáììáôéêþ ÌÐÁ-ɛ êáíïíéêþ Ýêöñáóç ÍÐÁ 22 / / / 216

5 ËåêôéêÞ áíüëõóç ÄéáãñÜììáôá ìåôüâáóçò ÁíáãíùñéóôéêÜ ôçò Pascal ÊåöÜëáéï 3: ËåêôéêÞ áíüëõóç ËåêôéêÝò ìïíüäåò (tokens) Áíáãíùñßæïíôáé ìå ðåðåñáóìýíá áõôüìáôá ðïõ: äéáâüæïõí åíäå ïìýíùò ðåñéóóüôåñïõò áñáêôþñåò ïðéóèïäñïìïýí áí ñåéáóôåß äéáèýôïõí Ýîïäï ðïõ ñçóéìïðïéåßôáé óôç óõíôáêôéêþ áíüëõóç Åéäéêüò óõìâïëéóìüò: äéáãñüììáôá ìåôüâáóçò 0 L L 1 L D L όχι L/D (T_id) D 25 / / / 216 ÄéáãñÜììáôá ìåôüâáóçò ÊáôáóêåõÞ ôïõ ËÁ ÊáôáóêåõÞ ôïõ ËÁ ÔåëåóôÝò > êáé >= 0 0 > > όχι = 1 1 = 2 2 (T_gt) ÊáôáãñáöÞ êáé ôáîéíüìçóç áñáêôþñùí mapping : (ASCII { EOF }) Σ ÊáôáãñáöÞ êáé ôáîéíüìçóç ëåêôéêþí ìïíüäùí Êùäéêïðïßçóç ëåêôéêþí ìïíüäùí Áêïëïõèßá áñáêôþñùí (lexeme) Ó åäßáóç ôïõ äéáãñüììáôïò ìåôüâáóçò Õëïðïßçóç ôïõ ëåêôéêïý áíáëõôþ ÅðéìÝñïõò èýìáôá Ôñüðïò äéá ùñéóìïý ëåêôéêþí ìïíüäùí Ó üëéá ÄéÜêñéóç ðåæþí / êåöáëáßùí ãñáììüôùí ÅíäéÜìåóç ìíþìç (buer) ÁíÜíçøç áðü óöüëìáôá = 3 (T_ge) 28 / / / 216

6 ÊáôáóêåõÞ ôïõ ËÁ ÊáôáóêåõÞ ôïõ ËÁ (iv) Õëïðïßçóç ËÁ ìå ôï ex W Ó åäßáóç óõíïëéêïý äéáãñüììáôïò ìåôüâáóçò 0 = 24 (T_assign) L E D D. : ; όχι = 21 ( 22 ) 23 (T_dot) (T_smcolon) (T_lparen) (T_rparen) (T_eq) (T_plus) (T_minus) 6 7 (T_colon) L E D _ = = όχι = = όχι = = όχι = όχι 25 (T_le) όχι L E D _ όχι D. Ε Ε. 8 < > / 45 (T_id) D 41 (T_lt) 27 (T_ge) E (T_gt) (T_ne) D (T_div) EOF όχι D D 45 (T_eof) όχι D Ε D 29 (T_power) 46 (T_const) 44 (T_times) Åíáëëáêôéêïß ôñüðïé õëïðïßçóçò: åéñùíáêôéêü Ìå ðßíáêá ìåôáâüóåùí Ìå ôï ìåôáåñãáëåßï ex Ìåôáåñãáëåßï ex: ãåííþôïñáò ËÁ Åßóïäïò: ìåôáðñüãñáììá ðïõ ðåñéãñüöåé ôéò ëåêôéêýò ìïíüäåò îïäïò: ðñüãñáììá óå C Ç óõíüñôçóç yylex õëïðïéåß ôï ËÁ ÅðéóôñÝöåé ôïí êùäéêü ôçò ëåêôéêþò ìïíüäáò ðïõ áíáãíùñßóôçêå, Þ 0 óôï ôýëïò ôçò óõìâïëïóåéñüò åéóüäïõ Ôïðïèåôåß óôç ìåôáâëçôþ yytext ôçí áíôßóôïé ç áêïëïõèßá áñáêôþñùí (lexeme) { 12 } 0 όχι } 31 / / / 216 Õëïðïßçóç ËÁ ìå ôï ex Õëïðïßçóç ËÁ ìå ôï ex Õëïðïßçóç ËÁ ìå ôï ex (iv) ÄïìÞ ôïõ ìåôáðñïãñüììáôïò ÌÝñïò Á %% ÌÝñïò  %% ÌÝñïò à Êáé ôá ôñßá ìýñç ìðïñïýí íá åßíáé êåíü ÌÝñïò Á, ðåñéý åé Ó üëéá, üðùò óôç C Êþäéêá C, ìýóá óå %{ êáé %} ÌíçìïíéêÜ ïíüìáôá ùò óõíôïìïãñáößåò êáíïíéêþí åêöñüóåùí Äçëþóåéò áñ éêþí êáôáóôüóåùí ÌÝñïò Á, ðáñüäåéãìá %{ #define T_eof 0 #define T_id 1 #define T_while 52 void ERROR (const char msg []); %} L [A-Za-z] / letters / D [0-9] / digits / W [ \t\n] / white space / 34 / / / 216

7 Õëïðïßçóç ËÁ ìå ôï ex (v) Õëïðïßçóç ËÁ ìå ôï ex (vi) Õëïðïßçóç ËÁ ìå ôï ex (vii) ÌÝñïò Â, ðåñéý åé êáíüíåò ôçò ìïñöþò êáíïíéêþ Ýêöñáóç ÊÜèå åíýñãåéá åßíáé ìéá åíôïëþ ôçò C åíýñãåéá Ëåéôïõñãßá: ÄéáâÜæåôáé ôï ìáêñýôåñï ðñüèåìá ôçò óõìâïëïóåéñüò åéóüäïõ ðïõ ìðïñåß íá áíáãíùñéóôåß áðü êüðïéá êáíïíéêþ Ýêöñáóç Åêôåëåßôáé ç áíôßóôïé ç åíýñãåéá ÊáíïíéêÝò åêöñüóåéò a Ï áñáêôþñáò a.. ÏðïéïóäÞðïôå áñáêôþñáò åêôüò ôçò áëëáãþò ãñáììþò. \x Áí x Ýíá áðü ôá a, b, f, n, r, t, v Þ 0, ôüôå üðùò óôç C, áëëéþò ï ßäéïò ï áñáêôþñáò x. \123 Ï áñáêôþñáò ASCII ìå ïêôáäéêþ ôéìþ 123. \x3f Ï áñáêôþñáò ASCII ìå äåêáåîáäéêþ ôéìþ 3F. "abc" Ç óõìâïëïóåéñü abc. [abc] íáò áðü ôïõò áñáêôþñåò a, b Þ c. [a-z] íáò áðü ôïõò áñáêôþñåò a Ýùò z. [ac-fs] íáò áðü ôïõò áñáêôþñåò a, c Ýùò f, Þ s. [^a-z] íáò áðü ôïõò áñáêôþñåò åêôüò üóùí áíþêïõí óôçí ðåñéï Þ a Ýùò z. ÊáíïíéêÝò åêöñüóåéò {name} (óõíý åéá) Ç êáíïíéêþ Ýêöñáóç ìå ìíçìïíéêü üíïìá name. rs Ç ðáñüèåóç ôùí r êáé s. r s Ç äéüæåõîç ôùí r êáé s. (r) Ç êáíïíéêþ Ýêöñáóç r. Ïé ðáñåíèýóåéò ñçóéìïðïéïýíôáé ãéá ïìáäïðïßçóç. r Ç r åðáíáëáìâüíåôáé ìçäýí Þ ðåñéóóüôåñåò öïñýò. r+ Ç r åðáíáëáìâüíåôáé ìéá Þ ðåñéóóüôåñåò öïñýò. r? Ç r åßíáé ðñïáéñåôéêþ (åðáíáëáìâüíåôáé ìçäýí Þ ìéá öïñü). r{7} Ç r åðáíáëáìâüíåôáé áêñéâþò 7 öïñýò. r{3,5} Ç r åðáíáëáìâüíåôáé áðü 3 Ýùò 5 öïñýò. r{4,} Ç r åðáíáëáìâüíåôáé 4 Þ ðåñéóóüôåñåò öïñýò. 37 / / / 216 Õëïðïßçóç ËÁ ìå ôï ex (viii) Õëïðïßçóç ËÁ ìå ôï ex (ix) Õëïðïßçóç ËÁ ìå ôï ex (x) ÊáíïíéêÝò åêöñüóåéò (óõíý åéá) ^r Ç r áëëü ìüíï óôçí áñ Þ ìéáò ãñáììþò. r$ Ç r áëëü ìüíï óôï ôýëïò ìéáò ãñáììþò. <<EOF>> Ôï ôýëïò ôïõ áñ åßïõ åéóüäïõ. r/s Ç êáíïíéêþ Ýêöñáóç r áëëü ìüíï áí áêïëïõèåß ç êáíïíéêþ Ýêöñáóç s. <S>r Ç r áëëü ìüíï üôáí ç ôñý ïõóá áñ éêþ êáôüóôáóç åßíáé ç S. <S 1,S 2,S 3 >r Ç r, áëëü ìüíï üôáí ç ôñý ïõóá áñ éêþ êáôüóôáóç åßíáé ìéá áðü ôéò S 1, S 2 Þ S 3. <>r Ç r óå ïðïéáäþðïôå áñ éêþ êáôüóôáóç. ÌÝñïò Â, ðáñüäåéãìá "and" { return T_and; } "while" { return T_while; } ":=" { return T_assign; } ":" { return T_colon; } {L}({L} {D} _) { return T_id; } {D}+(\.{D}(e\-?{D}+)?)? { return T_const; } {W}+ { / nothing / } "("([^]+ \+[^)])\+")" { / nothing / }. { ERROR("illegal token"); } ÌÝñïò Ã, ðåñéý åé êþäéêá C ÐáñÜäåéãìá void ERROR (const char msg []) { fprintf(stderr, "ERROR: %s\n", msg); exit(1); } 40 / / / 216

8 Õëïðïßçóç ËÁ ìå ôï ex (xi) Õëïðïßçóç ËÁ ìå ôï ex (xii) Õëïðïßçóç ËÁ ìå ôï ex (xiii) ÐáñÜäåéãìá int main () { int token; } (óõíý åéá) do { token = yylex(); printf("token=%d, lexeme=\"%s\"\n", token, yytext); } while (token!= T_eof); return 0; ÐáñÜäåéãìá: Áñßèìçóç ãñáììþí int lineno = 1; [ \t]+ { / nothing / } \n { lineno++; } void ERROR (const char msg []) { fprintf(stderr, "ERROR, line %d: %s\n", lineno, msg); exit(1); } Ðñüâëçìá: ËÜèïò áñßèìçóç óå ó üëéá Áñ éêýò êáôáóôüóåéò ÊïéíÝò: %s ÁðïêëåéóôéêÝò: %x Åíåñãïß êáíüíåò óå êüðïéá êáôüóôáóç ÌåôÜâáóç ìåôáîý êáôáóôüóåùí: BEGIN(s) Áñ éêþ êáôüóôáóç êáôü ôçí Ýíáñîç ëåéôïõñãßáò ôïõ ËÁ: INITIAL 43 / / / 216 Õëïðïßçóç ËÁ ìå ôï ex (xiv) Ãëþóóåò ùñßò óõìöñáæüìåíá ÐáñÜäåéãìá: Áñßèìçóç ãñáììþí (äéüñèùóç) %x COMMENT "(" { BEGIN(COMMENT); } <COMMENT>")" { BEGIN(INITIAL); } <COMMENT>\n { lineno++; } <COMMENT>"" { / nothing / } <COMMENT>[^\n]+ { / nothing / } ÊåöÜëáéï 2: ÔõðéêÝò ãëþóóåò (ìýñïò 2ï) ÃñáììáôéêÝò ùñßò óõìöñáæüìåíá: A α Óå êüèå ðáñáãùãþ Ýíá ìç ôåñìáôéêü óýìâïëï áíôéêáèßóôáôáé, âüóåé åíüò êáíüíá ÐïëëÝò äéáöïñåôéêýò ðáñáãùãýò äéáöýñïõí ìüíï óôç óåéñü ôùí áíôéêáôáóôüóåùí Áñéóôåñüôåñç / äåîéüôåñç ðáñáãùãþ (leftmost / rightmost derivation) ÓõíôáêôéêÜ äýíôñá (parse trees) 46 / / / 216

9 Ãëþóóåò ùñßò óõìöñáæüìåíá Ìßá ðáñáãùãþ S aa B c a A bbc acs B bbc ac S abbc acab B c acabac Áñéóôåñüôåñç ðáñáãùãþ S L a A BC L a A bbc L ac S BbBc L ac B bbc L acab B c L acabac Äåîéüôåñç ðáñáãùãþ S R aa B c R a A ac R a A bac R acs B bac R ac S abac R acabac S a A B c c S A S ε aabc ɛ A csb Ab B bb a B a b a Äéöïñïýìåíåò ãñáììáôéêýò Äýï ãñáììáôéêýò åßíáé éóïäýíáìåò üôáí ðáñüãïõí ôçí ßäéá ãëþóóá. Ìéá ãñáììáôéêþ åßíáé äéöïñïýìåíç (ambiguous) áí õðüñ ïõí äýï Þ ðåñéóóüôåñá óõíôáêôéêü äýíôñá ãéá ôçí ßäéá ðáñáãüìåíç óõìâïëïóåéñü ÃñáììáôéêÝò êáé ãëþóóåò åããåíþò äéöïñïýìåíåò (inherently ambiguous) ñþóç äéöïñïýìåíùí ãñáììáôéêþí óôçí ðåñéãñáöþ ôçò óýíôáîçò ãëùóóþí ðñïãñáììáôéóìïý Äéöïñïýìåíåò ãñáììáôéêýò ÐáñÜäåéãìá: îåêñýìáóôï if (dangling if) stmt if cond stmt else stmt if cond stmt s1 s2 cond c1 c2 Äéöïñïýìåíï: óå ðïéï if áíôéóôïé åß ôï else; if c1 if c2 s1 else s2 stmt stmt if cond stmt if cond stmt else stmt c1 if cond stmt else stmt c1 if cond stmt s2 c2 s1 s2 c2 s1 if c1 ( if c2 s1 else s2 ) if c1 ( if c2 s1 ) else s2 49 / / / 216 Ôñüðïé ðáñüóôáóçò ãñáììáôéêþí Ôñüðïé ðáñüóôáóçò ãñáììáôéêþí Ôñüðïé ðáñüóôáóçò ãñáììáôéêþí Backus-Naur Form (BNF) Óýìâïëï ::= óôïõò êáíüíåò Ìç ôåñìáôéêü óýìâïëá óå ãùíéáêýò ðáñåíèýóåéò, ð.. expr Óýìâïëï ãéá äéüæåõîç Extended Backus-Naur Form ÔåñìáôéêÜ óýìâïëá óå åéóáãùãéêü ÐáñåíèÝóåéò ãéá ïìáäïðïßçóç Áãêýëåò ãéá ðñïáéñåôéêü ôìþìáôá Óýìâïëá êáé + ãéá åðáíüëçøç (EBNF) ÓõíôáêôéêÜ äéáãñüììáôá ÔåñìáôéêÜ óýìâïëá óå ïâüë Ìç ôåñìáôéêü óýìâïëá óå ïñèïãþíéá Äéáäï Þ óõìâüëùí (ðáñüèåóç) ìå âýëç unsigned-number ::= integer-part dec-fraction exp-part integer-part dec-fraction exp-part sign ::= digit integer-part digit ::=. integer-part ɛ ::= E sign integer-part e sign integer-part ɛ ::= + ɛ digit ::= unsigned-number ::= digit + [ \." digit + ] [ (\E" \e") [ \+" \ " ] digit + ] digit ::= \0" \1" \2" \3" \4" \5" \6" \7" \8" \9" unsigned-number digit. digit E e + digit 52 / / / 216

10 ÓõíôáêôéêÞ áíüëõóç Top-down êáé bottom-up από πάνω προς τα κάτω (top-down) από κάτω προς τα πάνω (bottom-up) ÊåöÜëáéï 4: ÓõíôáêôéêÞ áíüëõóç Óõíôáêôéêü äýíôñï (parse tree) ÊáôáóêåõÜæåôáé ìå äýï ôñüðïõò: ÊáèïäéêÜ Áðü ðüíù ðñïò ôá êüôù (top-down) äçëáäþ îåêéíþíôáò áðü ôç ñßæá êáé ðñï ùñþíôáò ðñïò ôá öýëëá ÁíïäéêÜ Áðü êüôù ðñïò ôá ðüíù (bottom-up) äçëáäþ îåêéíþíôáò áðü ôá öýëëá êáé ðñï ùñþíôáò ðñïò ôç ñßæá 2 3 S 11 a A B c c A S 8 B b a 13 S 10 a A B c c 5 6 A S B b a 11 7 ε 9 a ε a 3 55 / / / 216 ÂïçèçôéêÝò Ýííïéåò ÂïçèçôéêÝò Ýííïéåò Õðïëïãéóìüò FIRST Óýíïëá FIRST óôù óõìâïëïóåéñü α (T N) Ôï óýíïëï FIRST(α) T { ɛ } ðåñéý åé ôá ôåñìáôéêü óýìâïëá áðü ôá ïðïßá áñ ßæïõí ïé óõìâïëïóåéñýò ðïõ ðáñüãïíôáé áðü ôçí α Áí α aβ ôüôå a FIRST(α) Áí α ɛ ôüôå ɛ FIRST(α) Óýíïëá FOLLOW óôù ìç ôåñìáôéêü óýìâïëï A Ôï óýíïëï FOLLOW(A) T { EOF } ðåñéý åé ôá ôåñìáôéêü óýìâïëá ðïõ ìðïñïýí íá áêïëïõèïýí ôï A óôç äéüñêåéá ìéáò ðáñáãùãþò Áí ôï A ìðïñåß íá åßíáé ôï ôåëåõôáßï óýìâïëï óå ìéá ðáñáãùãþ, ôüôå EOF FOLLOW(A) Áí S αaaβ ôüôå a FOLLOW(A) Áí S αa ôüôå EOF FOLLOW(A) FIRST(ɛ) = { ɛ } FIRST(aβ) = { a } áí ɛ FIRST(A) ôüôå FIRST(Aβ) = FIRST(A) áí ɛ FIRST(A) ôüôå FIRST(Aβ) = (FIRST(A) { ɛ }) FIRST(β) ãéá êüèå êáíüíá A α, ðñýðåé FIRST(α) FIRST(A) 58 / / / 216

11 Õðïëïãéóìüò FIRST Õðïëïãéóìüò FOLLOW Õðïëïãéóìüò FOLLOW ÐáñÜäåéãìá FIRST(E) = { id, ( } FIRST(T) = { id, ( } FIRST(F) = { id, ( } FIRST(E ) = { +, ɛ } FIRST(T ) = {, ɛ } E T E E ɛ E + T E T F T T ɛ T F T F ( E ) F id EOF FOLLOW(S) ãéá êüèå êáíüíá A αbβ (FIRST(β) { ɛ }) FOLLOW(B) áí ɛ FIRST(β) ôüôå FOLLOW(A) FOLLOW(B) ÐáñÜäåéãìá FOLLOW(E) = { ), EOF } FOLLOW(T) = { +, ), EOF } FOLLOW(F) = {, +, ), EOF } FOLLOW(E ) = { ), EOF } FOLLOW(T ) = { +, ), EOF } FIRST(E ) = { +, ɛ } FIRST(T ) = {, ɛ } E T E E ɛ E + T E T F T T ɛ T F T F ( E ) F id 61 / / / 216 ÓÁ bottom-up ÓÁ bottom-up ÓÁ bottom-up B B Ç óõíôáêôéêþ áíüëõóç îåêéíü áðü ôá öýëëá ÊÜèå öïñü, áíáæçôü: ôïí áñéóôåñüôåñï êüìâï ôïõ äýíôñïõ ðïõ äåí Ý åé áêüìá êáôáóêåõáóôåß åíþ üëá ôá ðáéäéü ôïõ Ý ïõí êáôáóêåõáóôåß ÅðáíáëáìâÜíåé ìý ñé íá êáôáóêåõáóôåß ç ñßæá ÅëÜôôùóç (reducing): ç åðéëïãþ ôùí êüìâùí ðïõ èá áðïôåëýóïõí ôá ðáéäéü åíüò íýïõ êüìâïõ S r B B D B, D D a b D r a. b B D r B D a. b D S D D r a. b B B D D ÓÁ ïëßóèçóçò-åëüôôùóçò (shift-reduce) ñçóéìïðïéïýí ìéá (áñ éêü êåíþ) óôïßâá üðïõ ôïðïèåôïýí óýìâïëá ôçò ãñáììáôéêþò Ïëßóèçóç (shift): ìåôáöïñü åíüò óõìâüëïõ áðü ôçí åßóïäï óôçí êïñõöþ ôçò óôïßâáò ÅëÜôôùóç (reduce): áöáßñåóç áðü ôçí êïñõöþ ôçò óôïßâáò ôïõ äåîéïý ìýëïõò åíüò êáíüíá êáé ðñüóèåóç ôïõ áñéóôåñïý ìýëïõò Åðéôõ ßá: ç óôïßâá ðåñéý åé ìüíï ôï S êáé ôá óýìâïëá ôçò åéóüäïõ Ý ïõí åîáíôëçèåß r a. b r a. b 64 / / / 216

12 ÓÁ bottom-up (iv) âþìá óôïßâá åßóïäïò êßíçóç 0 ɛ r a, b ïëßóèçóç 1 r a, b ïëßóèçóç 2 r a, b åëüôôùóç ìå D a 3 r D, b åëüôôùóç ìå B D 4 r B, b ïëßóèçóç (ü é åëüôôùóç ìå S r B) 5 r B, b ïëßóèçóç 6 r B, b ɛ åëüôôùóç ìå D b 7 r B, D ɛ åëüôôùóç ìå B B, D (ü é åëüôôùóç ìå B D) 8 r B ɛ åëüôôùóç ìå S r B 9 S ɛ áíáãíþñéóç S r B B D B, D D a b ÓÁ bottom-up LR(k) LR(0) SLR(1) LALR(1) LR(1) s m x m s 1 x 1 s 0 στοίβα (v) κορυφή συµβολοσειρά εισόδου a 1 a 2 a n EOF επόµενο σύµβολο Πίνακες ελέγχου συντακτικής ανάλυσης LR(1) ACTION NEXT Συντακτικός Αναλυτής LR(1) Õëïðïßçóç ÓÁ ìå ôï bison Ìåôáåñãáëåßï bison: ãåííþôïñáò ÓÁ LALR(1) Åßóïäïò: ìåôáðñüãñáììá ðïõ ðåñéãñüöåé ôç óýíôáîç êáé ôéò óçìáóéïëïãéêýò ñïõôßíåò îïäïò: ðñüãñáììá óå C Ç óõíüñôçóç yyparse õëïðïéåß ôï ÓÁ ÅðéóôñÝöåé 0 áí áíáãíùñéóôåß ç óõìâïëïóåéñü åéóüäïõ Þ 1 óå ðåñßðôùóç óõíôáêôéêïý óöüëìáôïò ÓõíåñãÜæåôáé ìå ôï ëåêôéêü áíáëõôþ (óõíüñôçóç yylex) 67 / / / 216 Õëïðïßçóç ÓÁ ìå ôï bison Õëïðïßçóç ÓÁ ìå ôï bison Õëïðïßçóç ÓÁ ìå ôï bison (iv) ÄïìÞ ôïõ ìåôáðñïãñüììáôïò ÌÝñïò Á %% ÌÝñïò  %% ÌÝñïò à Êáé ôá ôñßá ìýñç ìðïñïýí íá åßíáé êåíü ÌÝñïò Á, ðåñéý åé Ó üëéá, üðùò óôç C Êþäéêá C, ìýóá óå %{ êáé %} Äçëþóåéò ëåêôéêþí ìïíüäùí Äçëþóåéò ôåëåóôþí ôçò áñ éêþò ãëþóóáò (ðñïôåñáéüôçôá, ðñïóåôáéñéóôéêüôçôá) ÄÞëùóç ôïõ óõíüëïõ óçìáóéïëïãéêþí ôéìþí (ôýðïò YYSTYPE Þ ìå ñþóç ôïõ %union) ÄÞëùóç ôïõ ôýðïõ ôçò óçìáóéïëïãéêþò ôéìþò êüèå óõìâüëïõ ÌÝñïò Á, ðáñüäåéãìá %{ void ERROR (const char msg []); %} %token T_program "program" %token T_div T_mod %token T_if T_then T_else %nonassoc '=' '<' '>' %left '+' '-' %left '' '/' T_div T_mod 70 / / / 216

13 Õëïðïßçóç ÓÁ ìå ôï bison (v) Õëïðïßçóç ÓÁ ìå ôï bison (vi) Õëïðïßçóç ÓÁ ìå ôï bison (vii) ÌÝñïò Á, ðáñüäåéãìá %union{ int i; double f; char str[80]; } %token<str> T_id %token<i> T_int_const %token<f> T_float_const %type<f> expression (óõíý åéá) ÌÝñïò Â, ðåñéý åé: ôïõò êáíüíåò ðáñáãùãþò óå ìïñöþ BNF óçìáóéïëïãéêýò ñïõôßíåò ðïõ åêôåëïýíôáé êáôü ôç óõíôáêôéêþ áíüëõóç Ïé êáíüíåò Ý ïõí ôç ìïñöþ: A : x 1 1 x x 1 m 1 x 2 1 x x 2 m 2 x n 1 x n 2... x n m n ; ÌÝñïò Â, ðáñüäåéãìá program : { count=0; } block_list { printf("counted %d block(s)\n", count); } ; block_list : / nothing / block_list block { count++; } ; block : "begin" block_list "end" ; 73 / / / 216 Õëïðïßçóç ÓÁ ìå ôï bison (viii) Õëïðïßçóç ÓÁ ìå ôï bison (ix) Õëïðïßçóç ÓÁ ìå ôï bison (x) ÌÝñïò Ã, ðåñéý åé êþäéêá C Ôï ìåôáðñüãñáììá ôïõ bison áíáëáìâüíåé ôïí êåíôñéêü Ýëåã ï ôïõ ìåôáãëùôôéóôþ ðïõ åðéôõã Üíåôáé ìå ôç óõíåñãáóßá ôùí ðáñáêüôù: ôïõ ëåêôéêïý áíáëõôþ ôïõ óõíôáêôéêïý áíáëõôþ ôïõ ðßíáêá óõìâüëùí ôïõ óçìáóéïëïãéêïý áíáëõôþ ôïõ ãåííþôïñá åíäéüìåóïõ êþäéêá ÌÝñïò Ã, ðáñüäåéãìá void yyerror (const char msg) { fprintf(stderr, "syntax error in line %d: %s\n", linecount, msg); exit(1); } int main () { return yyparse(); } ÐáñÜäåéãìá ìå óçìáóéïëïãéêýò ôéìýò E T E E + T T F T T F F ( E ) F num Æçôïýìåíï: íá êáôáóêåõáóôåß ÓÁ ðïõ íá õðïëïãßæåé ôçí ôéìþ ìéáò áñéèìçôéêþò Ýêöñáóçò 76 / / / 216

14 Õëïðïßçóç ÓÁ ìå ôï bison (xi) Õëïðïßçóç ÓÁ ìå ôï bison (xii) Õëïðïßçóç ÓÁ ìå ôï bison (xiii) ÐáñÜäåéãìá (óõíý åéá) %{ typedef int YYSTYPE; %} %token T_num %% program : expression { printf("value: %d\n", $1); } ; ÐáñÜäåéãìá (óõíý åéá) expression : term { $$ = $1; } expression '+' term { $$ = $1 + $3; } ; term : factor { $$ = $1; } term '' factor { $$ = $1 $3; } ; ÐáñÜäåéãìá (óõíý åéá) factor : '(' expression ')' { $$ = $2; } T_num { $$ = $1; } ; %% Ðáñáëåßðïíôáé óôï ÌÝñïò Ã: ç óõíüñôçóç yylex (ðéèáíþò óå îå ùñéóôü áñ åßï, áí ñçóéìïðïéçèåß ôï ex) ïé óõíáñôþóåéò yyerror êáé main 79 / / / 216 Õëïðïßçóç ÓÁ ìå ôï bison (xiv) Õëïðïßçóç ÓÁ ìå ôï bison (xv) Õëïðïßçóç ÓÁ ìå ôï bison (xvi) ÐáñÜäåéãìá Õëïðïßçóç ËÁ åéñùíáêôéêü int yylex () { int c; while (isspace(c = fgetc(stdin))); if (isdigit(c)) { yylval = c - '0'; while (isdigit(c = fgetc(stdin))) yylval = yylval 10 + c - '0'; ungetc(c, stdin); return T_num; } Óôï ìýñïò à ÐáñÜäåéãìá (óõíý åéá) if (strchr("+()", c)) return c; if (c!= EOF) fprintf(stderr, "Illegal character: %c\n", c); return 0; } Áõôïìáôïðïßçóç ôçò ìåôáãëþôôéóçò ôïõ ÓÁ mytest1: mytest1.y bison mytest1.y gcc -o mytest1 mytest1.tab.c Makele ÐáñÜäåéãìá Õëïðïßçóç ËÁ ìå ôï ex %{ #include "mytest2.tab.h" %} %% [0-9]+ { yylval = atoi(yytext); return T_num; } \( \) \+ \ { return yytext[0]; } [ \t\n]+ { / nothing / }. { yyerror("illegal character"); } %% mytest2.l 82 / / / 216

15 Õëïðïßçóç ÓÁ ìå ôï bison (xvii) ÓÁ top-down ÃñáììáôéêÝò LL(1) Áõôïìáôïðïßçóç ôçò ìåôáãëþôôéóçò ËÁ êáé ÓÁ mytest2: mytest2.l mytest2.y bison -d mytest2.y flex -s mytest2.l gcc -o mytest2 mytest2.tab.c lex.yy.c \ -lfl Åðßëõóç óõãêñïýóåùí óôï bison shift-reduce: ðüíôá shift reduce-reduce: ï ðñþôïò êáíüíáò Makele Ç óõíôáêôéêþ áíüëõóç îåêéíü áðü ôç ñßæá ÊÜèå öïñü, áíáæçôü: ôï ìç ôåñìáôéêü óýìâïëï ðïõ èá áíôéêáôáóôáèåß óõíþèùò åðéëýãåôáé ôï áñéóôåñüôåñï ôïí êáíüíá ðáñáãùãþò ðïõ èá åöáñìïóôåß âüóåé ôùí åðüìåíùí k ëåêôéêþí ìïíüäùí óôç óõìâïëïóåéñü åéóüäïõ: LL(k) ÅðáíáëáìâÜíåôáé ìý ñé íá åîáíôëçèïýí ôá ìç ôåñìáôéêü Áðáñáßôçôåò ðñïûðïèýóåéò: Áðïõóßá áñéóôåñþò áíáäñïìþò (Üìåóçò Þ Ýììåóçò) Áðïõóßá êïéíïý ðñïèýìáôïò óå åíáëëáêôéêïýò êáíüíåò ÌåñéêÝò öïñýò åßíáé äõíáôüò ï ìåôáó çìáôéóìüò ìéáò ãñáììáôéêþò óå éóïäýíáìç LL(1) áðáëïéöþ áñéóôåñþò áíáäñïìþò áñéóôåñþ ðáñáãïíôïðïßçóç 85 / / / 216 Ìåôáó çìáôéóìüò óå LL(1) ÓÁ áíáäñïìéêþò êáôüâáóçò ÓÁ LL(1) ÁíôéêáôÜóôáóç A α 1... α n B β 1 Aβ 2 A α 1... α n B β 1 α 1 β 2... β 1 α n β 2 ÁñéóôåñÞ ðáñáãïíôïðïßçóç A αβ 1... αβ n A αb B β 1... β n ÁðáëïéöÞ Üìåóçò áñéóôåñþò áíáäñïìþò A Aα 1... Aα n β 1... β m A β 1 B... β m B B α 1 B... α n B ɛ A α 1... α n ìåôáôñýðåôáé óå êþäéêá ôçò ìïñöþò: if token FIRST(α 1 ) then êþäéêáò ãéá ôçí áíáãíþñéóç ôçò α 1... else if token FIRST(α n ) then êþäéêáò ãéá ôçí áíáãíþñéóç ôçò α n else if ɛ FIRST(α 1 )... FIRST(α n ) then óõíôáêôéêü óöüëìá else if token FOLLOW(A) then óõíôáêôéêü óöüëìá end if ñçóéìïðïéïýí ìéá óôïßâá üðïõ ôïðïèåôïýí óýìâïëá ôçò ãñáììáôéêþò áñ éêü ìüíï ôï S ÊÜèå öïñü åîåôüæåôáé ç êïñõöþ ôçò óôïßâáò: Áí åßíáé ôåñìáôéêü óýìâïëï êáé åßíáé ôï ßäéï ìå ôï åðüìåíï ôçò óõìâïëïóåéñüò åéóüäïõ, ôüôå áöáéñïýíôáé êáé ôá äýï Áí åßíáé ìç ôåñìáôéêü óýìâïëï, ôüôå áíüëïãá ìå ôï åðüìåíï ôçò óõìâïëïóåéñüò åéóüäïõ åöáñìüæåôáé êüðïéïò êáíüíáò Åðéôõ ßá: ç óôïßâá êáé ç óõìâïëïóåéñü åéóüäïõ åßíáé Üäåéåò 88 / / / 216

16 ÓÁ LL(1) ÊáôáóêåõÞ ÓÁ LL(1) Ëåéôïõñãßá ÓÁ LL(1) Ï áëãüñéèìïò êáôáóêåõþò ôïõ ðßíáêá M ïñßæåé ôçí ïéêïãýíåéá ôùí ãëùóóþí LL(1) x m x 2 x 1 στοίβα κορυφή συµβολοσειρά εισόδου a 1 a 2 a n EOF επόµενο σύµβολο Πίνακας M συντακτικής ανάλυσης LL(1) Συντακτικός Αναλυτής LL(1) E T E E + T E ɛ T F T T F T ɛ F ( E ) id FIRST(E) = FIRST(T) = FIRST(F) = { id, ( } FIRST(E ) = { +, ɛ } FIRST(T ) = {, ɛ } FOLLOW(E) = FOLLOW(E ) = { ), EOF } FOLLOW(T) = FOLLOW(T ) = { +, ), EOF } FOLLOW(F) = {, +, ), EOF } id + ( ) EOF E E TE E TE E E +TE E ɛ E ɛ T T FT T FT T T ɛ T FT T ɛ T ɛ F F id F (E) 0 E id + id id EOF E T E 1 E T id + id id EOF T F T 2 E T F id + id id EOF F id 3 E T id id + id id EOF 4 E T + id id EOF T ɛ 5 E + id id EOF E + T E 6 E T + + id id EOF 7 E T id id EOF T F T 8 E T F id id EOF F id 9 E T id id id EOF 10 E T id EOF T F T 11 E T F id EOF 12 E T F id EOF F id 13 E T id id EOF 14 E T EOF T ɛ 15 E EOF E ɛ 16 ɛ EOF áíáãíþñéóç 91 / / / 216 ÊáôçãïñéêÝò ãñáììáôéêýò ÊáôçãïñéêÝò ãñáììáôéêýò ÊåöÜëáéï 2: ÔõðéêÝò ãëþóóåò (ìýñïò 3ï) ÊáôçãïñéêÞ ãñáììáôéêþ (attribute grammar): ãñáììáôéêþ ùñßò óõìöñáæüìåíá üðïõ êüèå óýìâïëï öýñåé Ýíá óýíïëï êáôçãïñçìüôùí Ïé ôéìýò ôùí êáôçãïñçìüôùí õðïëïãßæïíôáé âüóåé ôïõ óõíôáêôéêïý äýíôñïõ: ÓõíèåôéêÜ êáôçãïñþìáôá: ïé ôéìýò ôïõò åîáñôþíôáé ìüíï áðü êáôçãïñþìáôá ôùí ðáéäéþí êüèå êüìâïõ Êëçñïíïìïýìåíá êáôçãïñþìáôá: ïé ôéìýò ôïõò åîáñôþíôáé ìüíï áðü êáôçãïñþìáôá ôïõ \ðáôýñá" êáé ôùí \áäåëöþí" êüèå êüìâïõ E E + T { E 1.val := E 2.val + T.val } E T { E.val := T.val } T T F { T 1.val := T 2.val F.val } T F { T.val := F.val } F ( E ) { F.val := E.val } F num { F.val := num.val } Óçìáóéïëïãéêïß êáíüíåò 94 / / / 216

17 Ðßíáêáò óõìâüëùí áñáêôçñéóôéêü ïíïìüôùí ÊåöÜëáéï 5: Ðßíáêáò óõìâüëùí Óõãêåíôñþíåé ðëçñïöïñßåò ãéá ôá ïíüìáôá ðïõ åìöáíßæïíôáé óôï áñ éêü ðñüãñáììá Ïíüìáôá åßíáé: ôï ðñüãñáììá ïé ìåôáâëçôýò ôá õðïðñïãñüììáôá (äéáäéêáóßåò, óõíáñôþóåéò) ïé ðáñüìåôñïé ôùí õðïðñïãñáììüôùí ïé åôéêýôôåò åíôïëþí ïé óôáèåñýò ïé ôýðïé äåäïìýíùí Êáôçãïñßá áðïèþêåõóçò (storage class) ÊáèïëéêÝò ìåôáâëçôýò (global variables) ÌåôáâëçôÝò óôïßâáò (stack variables) ÓôáôéêÝò ìåôáâëçôýò (static variables) ÅìâÝëåéá (scope) Ïñáôüôçôá (visibility) ÄéÜñêåéá æùþò (lifetime) 97 / / / 216 Ðåñéå üìåíá ðßíáêá óõìâüëùí ÏñãÜíùóç ðßíáêá óõìâüëùí Õëïðïßçóç ìå ÐÊ ÅìâÝëåéá (Ýììåóá) Ïñáôüôçôá (Ýììåóá) ÄéÜñêåéá æùþò Ôýðïò ÈÝóç (äéåýèõíóç ìíþìçò, êáôá ùñçôþò, ) Áñéèìüò ðáñáìýôñùí õðïðñïãñüììáôïò Ôýðïò ðáñáìýôñùí õðïðñïãñüììáôïò Ôñüðïò ðåñüóìáôïò ðáñáìýôñùí õðïðñïãñüììáôïò Ôýðïò áðïôåëýóìáôïò óõíüñôçóçò ÂáóéêÝò ëåéôïõñãßåò ÐñïóèÞêç ïíüìáôïò ÁíáæÞôçóç ïíüìáôïò ÄéáãñáöÞ ïíüìáôïò Þ ïìüäáò ïíïìüôùí Êüóôïò ðñïóèþêçò Þ áíáæþôçóçò áíüëïãá ìå ôçí õëïðïßçóç: ãñáììéêþ ëßóôá O(n) äõáäéêü äýíôñï áíáæþôçóçò O(log n) ðßíáêáò êáôáêåñìáôéóìïý O(n/k) k 2 k 1 πίνακας κατακερµατισµού b c x a aa y c b a στοίβα αποθήκευσης εµβέλεια 3 εµβέλεια 2 εµβέλεια στοίβα εµβελειών 100 / / / 216

18 Óýíôáîç êáé óçìáóéïëïãßá ÓôáôéêÞ óçìáóéïëïãßá ÐåñéâÜëëïíôá ôýðùí ÊåöÜëáéï 6: ÓçìáóéïëïãéêÞ áíüëõóç Óýíôáîç: ìïñöþ êáé äïìþ ôùí êáëþò ó çìáôéóìýíùí ðñïãñáììüôùí Óçìáóéïëïãßá: åñìçíåßá ôùí êáëþò ó çìáôéóìýíùí ðñïãñáììüôùí ÓôáôéêÞ óçìáóéïëïãßá: åíôïðéóìüò óçìáóéïëïãéêþí óöáëìüôùí êáôü ôç äéüñêåéá ôçò ìåôáãëþôôéóçò ÄõíáìéêÞ óçìáóéïëïãßá: áðüäïóç åñìçíåßáò óôá ðñïãñüììáôá êáôü ôçí åêôýëåóþ ôïõò Γ 1 = { i integer, x real } Ó Ýóç áíôéóôïß éóçò ôýðùí Γ E : τ Êáíüíåò ôýðùí Γ E 1 : integer Γ E 2 : integer Γ E 1 +E 2 : integer 103 / / / 216 ÓôáôéêÞ óçìáóéïëïãßá ÄõíáìéêÞ óçìáóéïëïãßá ÄõíáìéêÞ óçìáóéïëïãßá ÐáñáãùãÝò ôýðùí Γ 1 i : integer Γ 1 1 : integer Γ 1 i+1 : integer Γ 1 (i+1)x : real Γ 1 x : real Ç áíôéóôïß éóç ôýðùí ìå êáíüíåò ôýðùí åðåêôåßíåôáé óå üëá ôá ôìþìáôá ðñïãñüììáôïò Γ E : boolean Γ S : stmt Γ while E do S : stmt ËåéôïõñãéêÞ óçìáóéïëïãßá (operational semantics) áêïëïõèßá õðïëïãéóôéêþí âçìüôùí ÄçëùôéêÞ óçìáóéïëïãßá (denotational semantics) ìáèçìáôéêþ óõíüñôçóç áðü ôï ðåäßï ôùí äåäïìýíùí åéóüäïõ óôï ðåäßï ôùí áðïôåëåóìüôùí ÁîéùìáôéêÞ óçìáóéïëïãßá (axiomatic semantics) ç åñìçíåßá êáèïñßæåôáé Ýììåóá ìýóù ëïãéêþí ðñïôüóåùí ðïõ ðåñéãñüöïõí éäéüôçôåò ôïõ ðñïãñüììáôïò Ç åíôïëþ áíüèåóçò I=E ËåéôïõñãéêÞ óçìáóéïëïãßá ÄçëùôéêÞ óçìáóéïëïãßá E, σ v I=E, σ σ[i v] C[[I=E ]](s) = s[i E[[E ]](s)] ÁîéùìáôéêÞ óçìáóéïëïãßá { P [I E] } I=E { P } 106 / / / 216

19 Óçìáóéïëïãéêüò Ýëåã ïò Óçìáóéïëïãéêüò Ýëåã ïò Óýóôçìá ôýðùí ëåã ïò ôýðùí ð.. ïé ôåëåóôýò åöáñìüæïíôáé óå êáôüëëçëá ôåëïýìåíá ëåã ïò ñïþò ð.. ü é continue Ýîù áðü âñü ï ð.. ïé ìåôáâëçôýò áñ éêïðïéïýíôáé ðñéí ôç ñþóç ëåã ïò ýðáñîçò ïíïìüôùí ð.. ïé ìåôáâëçôýò ïñßæïíôáé ðñéí ôç ñþóç ôïõò ëåã ïò ìïíáäéêüôçôáò ð.. ïé óôáèåñýò óå ìßá äïìþ case åßíáé ìïíáäéêýò ëåã ïò óõíýðåéáò ð.. óùóôü üíïìá õðïðñïãñüììáôïò óôï end (C) (Java) (Pascal) (Ada) Áðïõóßá óçìáóéïëïãéêþí óöáëìüôùí áðïõóßá óöáëìüôùí åêôýëåóçò ÌåñéêÝò öïñýò üìùò åßíáé äõíáôü íá ðñïâëåöèïýí óöüëìáôá åêôýëåóçò program p; var x, y : integer; begin read(x); y := 5/(x-x) end. Âáóéêïß ôýðïé (integer, boolean, real, char, ) Óýíèåôïé ôýðïé Ðßíáêåò (arrays) Æåýãç (products) êáé ðëåéüäåò (tuples) ÅããñáöÝò (records) Äåßêôåò (pointers) ÓõíáñôÞóåéò (functions) Ôýðïé êáé ôéìýò ðñþôçò ôüîçò (rst class) 109 / / / 216 ÁðëÝò åêöñüóåéò, âáóéêïß ôýðïé ÁðëÝò åêöñüóåéò, âáóéêïß ôýðïé ÁðëÝò åêöñüóåéò, âáóéêïß ôýðïé ÓçìáóéïëïãéêÞ áíüëõóç óôï bison Óêïðüò: õðïëïãéóìüò ôïõ ðåäßïõ type %{ typedef enum { TY_int, TY_real, TY_bool } Type; %} %union{ char n; Type t; struct { Type type; / other fields / } v; } %type<n> T_id %type<t> typename %type<v> expression expression : T_intconst { $$.type = TY_int; } T_realconst { $$.type = TY_real; } '(' expression ')' { $$.type = $2.type; } ; expression : T_id { Entry id = lookup($1); if (id!= NULL && id->kind == K_variable) $$.type = id->type; else yyerror("identifier not found"); } ; expression : expression "mod" expression { if ($1.type == TY_int && $3.type == TY_int) $$.type = TY_int; else yyerror("type mismatch"); } ; statement : "while" expression "do" statement { if ($2.type!= TY_bool) yyerror("condition type mismatch") } ; 112 / / / 216

20 ÌåôáôñïðÝò ôýðùí Õðåñöüñôùóç ôåëåóôþí Ðïëõìïñöéêïß ôåëåóôýò ìåóç ìåôáôñïðþ (type casting) expression : '(' typename ')' expression { if (iscastallowed($2, $4.type)) $$.type = $2; else yyerror("illegal type cast"); } ; ììåóç ìåôáôñïðþ { åîáíáãêáóìüò (coercion) expression : expression '+' expression { if ($1.type == TY_int) if ($3.type == TY_int) $$.type = TY_int; else if ($3.type == TY_real) $$.type = TY_real; else yyerror("type mismatch"); else if ($1.type == TY_real) if ($3.type == TY_int) $$.type = TY_real; else if ($3.type == TY_real) $$.type = TY_real; else yyerror("type mismatch"); else yyerror("type mismatch"); } ; typedef struct type_str { enum { TY_integer, TY_real, TY_boolean, TY_ptr } code; struct type_str ptr_type; } Type; expression : expression '^' { if ($1.type.code == TY_ptr) $$.type = ($$.type.ptr_type); else yyerror("type mismatch"); } ; Óõíþíõìá êáé éóïäõíáìßá ôýðùí 115 / 216 Õðïóýíïëá ôýðùí êáé õðïôýðïé 116 / 216 Ðïëõìïñöéêïß ôýðïé 117 / 216 Óõíþíõìá ôýðùí (type aliases) type complex = record re, im : real end; Éóïäõíáìßá ôýðùí (type equivalence) ÄïìéêÞ éóïäõíáìßá ÏíïìáóôéêÞ éóïäõíáìßá (ÄçëùôéêÞ éóïäõíáìßá) Γ E : τ τ <: τ Γ E : τ var indexsmall : 1..10; indexlarge : ; indexgeneral : integer; indexgeneral := indexsmall; ( OK: <: integer ) indexlarge := indexgeneral; ( äõíáìéêüò Ýëåã ïò! ) Õðïôýðïé êõñßùò óå áíôéêåéìåíïóôñåöåßò ãëþóóåò Ðáñáìåôñéêüò ðïëõìïñöéóìüò (templates, generics) template <class T> bool exists (int length, T array [], T element) { for (int i=0; i < length; i++) if (array[i] == element) return true; return false; } ÓõíáñôçóéáêÝò ãëþóóåò 118 / / / 216

21 Áíôéóôïß éóç ôýðùí ÅîáãùãÞ ôýðùí Äõíáìéêüò Ýëåã ïò ôýðùí ÓôáôéêÞ ñçôþ Ýììåóç ÄõíáìéêÞ x := 5; ( x : integer ) x := "hello"; ( ôþñá üìùò x : string ) val pi = ; ( pi : real ) fun inc x = x + 1; ( inc : int -> int ) fun add x y = x + y; ( add : int -> int -> int ) fun add1 (x : real) y = x + y; fun add2 x y : real = x + y; ( add1, add2 : real -> real -> real ) fun id x = x; ( id : 'a -> 'a ) ÅðéâÜëëåôáé üôáí õðüñ åé äõíáìéêþ áíôéóôïß éóç ôýðùí ÐïëëÝò öïñýò üìùò áðáéôåßôáé êáé óå óôáôéêþ áíôéóôïß éóç ôýðùí, ð.. Ýëåã ïò ïñßùí óå arrays: var a : array [0..100] of integer; a[i] := 42 if i 0 and i 100 then êþäéêáò ãéá ôçí áíüèåóç ôïõ 42 óôï a[i] else óöüëìá åêôýëåóçò end if 121 / / / 216 ÅíäéÜìåóïò êþäéêáò ÅíäéÜìåóïò êþäéêáò ÊåöÜëáéï 7: ÅíäéÜìåóïò êþäéêáò Ëüãïé ýðáñîçò Äéåõêïëýíåé ôï Ýñãï ôçò ìåôüöñáóçò Äéåõêïëýíåé ôç âåëôéóôïðïßçóç Äéåõêïëýíåé ôçí êáôüôìçóç óå åìðñüóèéï êáé ïðßóèéï ôìþìá ÌåôÜöñáóç ïäçãïýìåíç áðü ôç óýíôáîç (syntax-directed translation) Ãéá êüèå äïìþ ôçò ãëþóóáò ðñïóäéïñßæåôáé ï áíôßóôïé ïò åíäéüìåóïò êþäéêáò Äéåõñýíåôáé ï óõíôáêôéêüò áíáëõôþò ìå óçìáóéïëïãéêýò ñïõôßíåò ðïõ ðáñüãïõí åíäéüìåóï êþäéêá Ó Ýäéï ðáñáãùãþò åíäéüìåóïõ êþäéêá ÌåôáâëçôÝò éäéïôþôùí (attributes) ãéá êüèå óýìâïëï ôçò ãñáììáôéêþò 124 / / / 216

22 ÅíäéÜìåóç ãëþóóá ÅíäéÜìåóç ãëþóóá ÅíäéÜìåóç ãëþóóá ÔåôñÜäåò (quadruples) n: op, x, y, z ÔñéÜäåò (triples) n: op, x, y ÁöçñçìÝíá óõíôáêôéêü äýíôñá (abstract syntax trees) ÐáñÜäåéãìá: bb-4ac ÐáñÜäåéãìá: 1:, b, b, $1 2:, 4, a, $2 3:, $2, c, $3 4:, $1, $3, $4 bb-4ac ÐáñÜäåéãìá: 1:, b, b 2:, 4, a 3:, (2), c 4:, (1), (3) bb-4ac b b c 4 a 127 / / / 216 ÅíäéÜìåóç ãëþóóá (iv) ÅíäéÜìåóç ãëþóóá (v) Ãëþóóá ôåôñüäùí Ðñïèåìáôéêüò êáé åðéèåìáôéêüò êþäéêáò (prex/postx code) ÐáñÜäåéãìá: b b 4 a c b b 4 a c bb-4ac ðñïèåìáôéêüò åðéèåìáôéêüò Êáôåõèõíüìåíïé áêõêëéêïß ãñüöïé (directed acyclic graphs) ÐáñÜäåéãìá: b + b+(a+1)(a+1)+c-(a+1)(a+1)+2/(a+1) + c + + a 1 + c a 1 + a 1 2 / + b / ÌïñöÞ ôåôñüäáò: n: op, x, y, z üðïõ: n: åôéêýôá ôåôñüäáò (öõóéêüò áñéèìüò) op: ôåëåóôþò x, y, z: ôåëïýìåíá ÁíÜëïãá ìå ôï åßäïò ôïõ ôåëåóôþ, êüðïéá ôåëïýìåíá åíäå ïìýíùò ðáñáëåßðïíôáé a 1 a 1 a / / / 216

23 Ôåëïýìåíá Ôåëïýìåíá ÔåëåóôÝò ÓôáèåñÜ áêýñáéá, ðñáãìáôéêþ, ëïãéêþ áñáêôþñáò, óõìâïëïóåéñü, nil ¼íïìá ìåôáâëçôþ, ðáñáìýôñïò, õðïðñüãñáììá ÐñïóùñéíÞ ìåôáâëçôþ: $n ÁðïôÝëåóìá óõíüñôçóçò: $$ Áðïäåéêôïäüôçóç: [x] x áðëü ôåëïýìåíï Äéåýèõíóç: {x} x áðëü ôåëïýìåíï ÅôéêÝôá åíôïëþò óôï áñ éêü ðñüãñáììá ôåôñüäáò Ôñüðïò ðåñüóìáôïò V : êáô' áîßá R : êáô' áíáöïñü RET : èýóç áðïôåëýóìáôïò óõíüñôçóçò Êåíü : ÐñïóùñéíÜ êåíü : (ãéá backpatching) unit, I,, endu, I,, áñ Þ êáé ôýëïò äïìéêþò ìïíüäáò op, x, y, z op {+, -,, /, %} z := x op y :=, x,, z z := x array, x, y, z z := ç äéåýèõíóç ôïõ óôïé åßïõ x[y] 133 / / / 216 ÔåëåóôÝò ÔåëåóôÝò ÌåôáâëçôÝò éäéïôþôùí op, x, y, z op {=, <>, >, <, >=, <=} áí x op y ôüôå ðþãáéíå óôçí ôåôñüäá z ifb, x,, z áí ç ëïãéêþ ôéìþ x åßíáé áëçèþò ôüôå ðþãáéíå óôçí ôåôñüäá z jump,,, z ðþãáéíå óôçí ôåôñüäá z label, I,, jumpl,,, I ïñéóìüò åôéêýôáò êáé Üëìá ðñïò áõôþí call,,, I êüëåóå ôç äïìéêþ ìïíüäá I par, x, m, ðýñáóå ôçí ðñáãìáôéêþ ðáñüìåôñï x ìå ôñüðï ðåñüóìáôïò m ret,,, åðéóôñïöþ áðü ôçí ôñý ïõóá äïìéêþ ìïíüäá PLACE: èýóç üðïõ âñßóêåôáé áðïèçêåõìýíç ç ôéìþ ìéáò l-value Þ ìéáò r-value TYPE: ôýðïò ìéáò l-value Þ ìéáò r-value NEXT : ëßóôá áðü åôéêýôåò ôåôñüäùí ðïõ ðåñéý ïõí Üëìáôá óôçí åðüìåíç åíôïëþ TRUE, FALSE: ëßóôåò áðü åôéêýôåò ôåôñüäùí ðïõ ðåñéý ïõí Üëìáôá óôïí êþäéêá ðïõ ðñýðåé íá åêôåëåóôåß áí ìéá óõíèþêç åßíáé áëçèþò Þ øåõäþò 136 / / / 216

24 ÂïçèçôéêÝò õðïñïõôßíåò ÂïçèçôéêÝò õðïñïõôßíåò ÁñéèìçôéêÝò åêöñüóåéò NEXTQUAD() ÅðéóôñÝöåé ôïí áñéèìü ôçò åðüìåíçò ôåôñüäáò GENQUAD(op, x, y, z) ÃåííÜ ôçí åðüìåíç ôåôñüäá op, x, y, z NEWTEMP(t) Äçìéïõñãåß ìéá íýá ðñïóùñéíþ ìåôáâëçôþ ôýðïõ t EMPTYLIST() Äçìéïõñãåß ìéá êåíþ ëßóôá åôéêåôþí ôåôñüäùí MAKELIST(x) Äçìéïõñãåß ìéá ëßóôá åôéêåôþí ôåôñüäùí ðïõ ðåñéý åé ìüíï ôï óôïé åßï x MERGE(l 1,..., l n ) ÓõíÝíùóç ôùí ëéóôþí åôéêåôþí ôåôñüäùí l 1... l n BACKPATCH(l, z) ÁíôéêáèéóôÜ óå üëåò ôéò ôåôñüäåò ðïõ ðåñéý ïíôáé óôçí l ôçí Üãíùóôç åôéêýôá ôåôñüäáò ìå ôç z (backpatching) ÁêÝñáéåò óôáèåñýò r-value ::= integer-const { P 1 } P 1 : { r-value.place = integer-const ; } ÔåëåóôÝò ìå äýï ôåëïýìåíá r-value ::= expr binop expr { P 14 } P 14 : { W = NEWTEMP( r-value.type); GENQUAD( binop.name, expr 1.PLACE, expr 2.PLACE, W ); r-value.place = W ; } 139 / / / 216 ËïãéêÝò åêöñüóåéò ËïãéêÝò åêöñüóåéò ËïãéêÝò åêöñüóåéò <cond> jump,,, 31 jump,,, 42 jump,,, 31 jump,,, 31 jump,,, 42 ËïãéêÝò åêöñüóåéò óå óõìâïëéóìü 0/1 cond ::= expr <cond> <expr> ifb, <expr>.place,, jump,,, ËïãéêÝò åêöñüóåéò óå óõìâïëéóìü 0/1 cond ::= expr { P 21 } P 21 : { cond.true = MAKELIST(NEXTQUAD()); GENQUAD(ifb, expr.place,, ); cond.false = MAKELIST(NEXTQUAD()); GENQUAD(jump,,, ); } <cond>.false <cond>.true FALSE TRUE 142 / / / 216

25 ËïãéêÝò åêöñüóåéò (iv) ËïãéêÝò åêöñüóåéò (v) ËïãéêÝò åêöñüóåéò (vi) ÔåëåóôÝò óýãêñéóçò cond ::= expr 1 relop expr 2 <cond> ÔåëåóôÝò óýãêñéóçò cond ::= expr 1 relop expr 2 { P 23 } ñíçóç cond ::= \not" cond <expr> 1 <expr> 2 relop, <expr> 1.PLACE, <expr> 2.PLACE, jump,,, P 23 : { cond.true = MAKELIST(NEXTQUAD()); GENQUAD( relop.name, expr 1.PLACE, expr 2.PLACE, ); cond.false = MAKELIST(NEXTQUAD()); GENQUAD(jump,,, ); } <cond> TRUE FALSE <cond> FALSE TRUE FALSE TRUE 145 / / / 216 ËïãéêÝò åêöñüóåéò (vii) ËïãéêÝò åêöñüóåéò (viii) ÁðëÝò åíôïëýò Óýæåõîç cond ::= cond 1 \and" cond 2 Óýæåõîç ÊåíÞ åíôïëþ stmt ::= ɛ { P 29 } <cond> cond ::= cond 1 \and" { P 25 } cond 2 { P 26 } P 29 : { stmt.next = EMPTYLIST(); } FALSE FALSE FALSE <cond> 1 <cond> 2 TRUE TRUE TRUE P 25 : { BACKPATCH( cond 1.TRUE, NEXTQUAD()); } P 26 : { cond.false = MERGE( cond 1.FALSE, cond 2.FALSE); cond.true = cond 2.TRUE; } ÅíôïëÞ áíüèåóçò stmt ::= l-value \:=" expr { P 30 } P 30 : { GENQUAD(\:=", expr.place,, l-value.place); stmt.next = EMPTYLIST(); } 148 / / / 216

26 Óýíèåôç åíôïëþ Óýíèåôç åíôïëþ ÅíôïëÞ if stmt ::= block block ::= \begin" stmt ( \;" stmt ) <block> NEXT <stmt> 1 NEXT <stmt> 2 \end" stmt ::= block { P 34 } P 34 : { stmt.next = block.next ; } block ::= \begin" stmt 1 { P 35 } ( \;" { P 36 } stmt 2 { P 37 } ) \end" { P 38 } P 35 : { L = stmt 1.NEXT ; } P 36 : { BACKPATCH(L, NEXTQUAD()); } P 37 : { L = stmt 2.NEXT ; } P 38 : { block.next = L; } stmt ::= \if " cond \then" stmt [ \else" stmt ] <stmt> FALSE TRUE <cond> <stmt> NEXT <stmt> 1 TRUE FALSE <cond> jump,,, NEXT NEXT <stmt> 1 <stmt> 2 NEXT NEXT NEXT 151 / / / 216 ÅíôïëÞ if ÅíôïëÞ while ÅíôïëÞ while stmt ::= \if " cond { P 39 } \then" stmt 1 [ \else" { P 40 } stmt 2 { P 41 } ] { P 42 } P 39 : { BACKPATCH( cond.true, NEXTQUAD()); L 1 = cond.false; L 2 = EMPTYLIST(); } P 40 : { L 1 = MAKELIST(NEXTQUAD()); GENQUAD(jump,,, ); BACKPATCH( cond.false, NEXTQUAD()); } P 41 : { L 2 = stmt 2.NEXT ; } stmt ::= \while" cond \do" stmt <stmt> FALSE <cond> <stmt> 1 jump,,, TRUE NEXT stmt ::= \while" { P 43 } cond \do" { P 44 } stmt 1 { P 45 } P 43 : { Q = NEXTQUAD(); } P 44 : { BACKPATCH( cond.true, NEXTQUAD()); } P 45 : { BACKPATCH( stmt 1.NEXT, Q); GENQUAD(jump,,, Q); stmt.next = cond.false; } P 42 : { stmt.next = MERGE(L 1, stmt 1.NEXT, L 2 ); } NEXT 154 / / / 216

27 ÊëÞóç õðïðñïãñáììüôùí ÊëÞóç õðïðñïãñáììüôùí ÊëÞóç õðïðñïãñáììüôùí call ::= id \(" [ expr ( \," expr ) ] \)" r-value ::= call stmt ::= call ÐÝñáóìá ðáñáìýôñùí ìå ôåôñüäåò par ÐÝñáóìá èýóçò áðïôåëýóìáôïò ìå ôåôñüäá par áí ðñüêåéôáé ãéá óõíüñôçóç ÊëÞóç ìå ôåôñüäá call call ::= id \(" { P 46 } [ expr 1 { P 47 } ( \," expr 2 { P 48 } ) ] \)" { P 49 } P 46 : { N = 1; } P 47 : { GENQUAD(\par", expr 1.PLACE, PARAMMODE( id, N ), ); N = N + 1; } P 48 : { GENQUAD(\par", expr 2.PLACE, PARAMMODE( id, N ), ); N = N + 1; } call ::= id \(" { P 46 } [ expr 1 { P 47 } ( \," expr 2 { P 48 } ) ] \)" { P 49 } (óõíý åéá) P 49 : { if (ISFUNCTION( id )) { W = NEWTEMP(FUNCRESULT( id )); GENQUAD(par, RET, W, ); call.place = W ; } GENQUAD(call,,, id ); } 157 / / / 216 ÊëÞóç õðïðñïãñáììüôùí (iv) ÊëÞóç õðïðñïãñáììüôùí (v) ÐáñÜäåéãìá ÊëÞóç óõíüñôçóçò r-value ::= call { P 50 } P 50 : { r-value.place = call.place; } ÊëÞóç äéáäéêáóßáò stmt ::= call { P 51 } P 51 : { stmt.next = EMPTYLIST(); } ÅðéóôñïöÞ áðü õðïðñüãñáììá stmt ::= \return" [ expr { P 52 } ] { P 53 } P 52 : { GENQUAD(retv, expr.place,, ); } P 53 : { GENQUAD(ret,,, ); } ÄÞëùóç õðïðñïãñüììáôïò body ::= ( local ) { P 56 } block \;" { P 57 } P 56 : { GENQUAD(unit, I,, ); } P 57 : { BACKPATCH( block.next, NEXTQUAD()); GENQUAD(endu, I,, ); } procedure quicksort (var a : array of integer; m, n : integer); var i, j, temp : integer; begin if n <= m then return; i := m; j := n; while i <= j do begin while a[i] < a[(m+n) div 2] do i := i+1; while a[j] > a[(m+n) div 2] do j := j-1; if i <= j then begin temp := a[i]; a[i] := a[j]; a[j] := temp; i := i+1; j := j-1 end end; quicksort(a, m, j); quicksort(a, i, n) end; 160 / / / 216

28 ÐáñÜäåéãìá ÐáñÜäåéãìá ÐáñÜäåéãìá (iv) procedure quicksort (var a : array of integer; m, n : integer); var i, j, temp : integer; begin if n <= m then return; i := m; j := n; 1: unit, quicksort,, 2: <=, n, m, 4 3: jump,,, 5 4: ret,,, 5: :=, m,, i 6: :=, n,, j while i <= j do begin while a[i] < a[(m+n) div 2] do i := i+1; while a[j] > a[(m+n) div 2] do j := j-1; 7: <=, i, j, 9 8: jump,,, 9: array, a, i, $1 10: +, m, n, $2 11: /, $2, 2, $3 12: array, a, $3, $4 13: <, [$1], [$4], 15 14: jump,,, 18 15: +, i, 1, $5 16: :=, $5,, i 17: jump,,, 9 18: array, a, j, $6 19: +, m, n, $7 20: /, $7, 2, $8 21: array, a, $8, $9 22: >, [$6], [$9], 24 23: jump,,, 27 24:, j, 1, $10 25: :=, $10,, j 26: jump,,, 18 if i <= j then begin temp := a[i]; a[i] := a[j]; a[j] := temp; i := i+1; j := j-1 end 27: <=, i, j, 29 28: jump,,, 29: array, a, i, $11 30: :=, [$11],, temp 31: array, a, i, $12 32: array, a, j, $13 33: :=, [$13],, [$12] 34: array, a, j, $14 35: :=, temp,, [$14] 36: +, i, 1, $15 37: :=, $15,, i 38:, j, 1, $16 39: :=, $16,, j 163 / / / 216 ÐáñÜäåéãìá (v) ÐáñÜäåéãìá (vi) while i <= j do begin while a[i] < a[(m+n) div 2] do i := i+1; while a[j] > a[(m+n) div 2] do j := j-1; if i <= j then begin temp := a[i]; a[i] := a[j]; a[j] := temp; i := i+1; j := j-1 end end; 7: <=, i, j, 9 8: jump,,, 41 27: <=, i, j, 29 28: jump,,, 7 40: jump,,, 7 quicksort(a, m, j); quicksort(a, i, n) end; 41: par, a, R, 42: par, m, V, 43: par, j, V, 44: call,,, quicksort 45: par, a, R, 46: par, i, V, 47: par, n, V, 48: call,,, quicksort 49: endu, quicksort,, ÊåöÜëáéï 9: Ôåëéêüò êþäéêáò 166 / / / 216

29 Ôåëéêüò êþäéêáò Ôåëéêüò êþäéêáò Ôåëéêüò õðïëïãéóôþò Áðü èåùñçôéêþò Üðïøçò, ôï ðñüâëçìá ôçò êáôáóêåõþò âýëôéóôïõ ôåëéêïý êþäéêá äåí Ý åé ëýóç (undecidable) ÌïñöÝò ôåëéêïý êþäéêá: Ãëþóóá ìç áíþò óå áðüëõôç ìïñöþ (absolute) Ãëþóóá ìç áíþò óå åðáíáôïðïèåôþóéìç êáé äéáóõíäýóéìç ìïñöþ (relocatable, linkable) ÓõìâïëéêÞ ãëþóóá (assembly) ëëç ãëþóóá áìçëïý åðéðýäïõ ÅðéìÝñïõò ðñïâëþìáôá: ÅðéëïãÞ åíôïëþí Ðþò ìåôáöñüæåôáé êüèå åíôïëþ ôïõ åíäéüìåóïõ êþäéêá Ðþò ìåôáöñüæïíôáé áêïëïõèßåò ôýôïéùí åíôïëþí Äéá åßñéóç ôçò ìíþìçò óôï ñüíï åêôýëåóçò Ðïý áðïèçêåýïíôáé ôá äåäïìýíá Ðþò ãßíåôáé ç åðéêïéíùíßá áíüìåóá óôéò äïìéêýò ìïíüäåò áñáêôçñéóôéêü: ÅðåîåñãáóôÞò: Intel 8086 Ëåéôïõñãéêü óýóôçìá: MS-DOS ÌïíôÝëï ìíþìçò: COM / tiny ÓõíïëéêÞ ìíþìç 64 K ÏñãÜíùóç óå Ýíá segment Áñ éêþ äéåýèõíóç ôïõ ðñïãñüììáôïò ç 100h ÓõìâïëéêÞ ãëþóóá: óõìâáôþ ìå ôï óõìâïëïìåôáöñáóôþ MASM (Microsoft macro assembler) 169 / / / 216 Ôåëéêüò õðïëïãéóôþò Ôåëéêüò õðïëïãéóôþò Ôåëéêüò õðïëïãéóôþò (iv) Êáôá ùñçôýò, ìåãýèïõò 16 bit ÃåíéêÞò öýóçò: ax, bx, cx, dx óå æåýãç ôùí 8 bit: ah, al, ê.ëð. Êáôá ùñçôýò äåßêôåò: sp (äåßêôçò óôïßâáò) êáé bp (äåßêôçò âüóçò) Êáôá ùñçôýò áíáöïñüò: si êáé di Êáôá ùñçôýò ôìçìüôùí: cs (code), ds (data), ss (stack) êáé es (extra) Åéäéêïß êáôá ùñçôýò: ip (instruction pointer) êáé êáôá ùñçôþò óçìáéþí (ags) Äéåõèýíóåéò: address = segment 16 + offset ÌïñöÞ åíôïëþò: [ label ] opname [ operand 1 [, operand 2 ] ] ÅíôïëÝò: ÌåôáöïñÜò: mov, lea Áñéèìçôéêþí ðñüîåùí: add, sub, neg, imul, idiv, cmp, cwd Ëïãéêþí ðñüîåùí: and, or, xor, not, test ëìáôïò: jmp, jz, jnz, jl, jle, jg, jge Äéá åßñéóçò óôïßâáò: push, pop ÕðïðñïãñáììÜôùí: call, ret ÐñÜîåùí êéíçôþò õðïäéáóôïëþò (x87 FPU) 172 / / / 216

30 ÅíôïëÝò ìåôáöïñüò ÁñéèìçôéêÝò ðñüîåéò ËïãéêÝò ðñüîåéò mov destination, source mov ax, 42 mov ax, bx mov ax, [1000h] mov ax, [si] mov ax, [si + 6] mov ax, [bp + 6] mov ax, [si + bp + 6] lea destination, source Êáèïñéóìüò ìåãýèïõò äåäïìýíùí (move) (load eective address) add op 1, op 2 op 1 := op 1 + op 2 sub op 1, op 2 op 1 := op 1 op 2 neg op op := op imul op idiv op cwd (dx, ax) := ax op ax := (dx, ax) div op dx := (dx, ax) mod op åðýêôáóç ðñïóþìïõ ôïõ ax óôïí dx and op 1, op 2 op 1 := op 1 and op 2 or op 1, op 2 op 1 := op 1 or op 2 not op op := not op xor op 1, op 2 op 1 := op 1 xor op 2 test op 1, op 2 op 1 and op 2 åíçìýñùóå ôéò óçìáßåò mov ax, word ptr [bp + 6] mov al, byte ptr [bp + 6] cmp op 1, op 2 óýãêñéíå ôá op 1 êáé op 2 åíçìýñùóå ôéò óçìáßåò 175 / / / 216 ÅíôïëÝò Üëìáôïò ÅíôïëÝò óôïßâáò ÅíôïëÝò õðïðñïãñáììüôùí jmp address jz address Þ je address jnz address Þ jne address jl address jle address jg address jge address ùñßò óõíèþêç ìçäýí / ßóï ü é ìçäýí / äéüöïñï ìéêñüôåñï ìéêñüôåñï Þ ßóï ìåãáëýôåñï ìåãáëýôåñï Þ ßóï push op pop op ðñüóèåóç óôç óôïßâá sp := sp 2, [sp] := op áöáßñåóç áðü ôç óôïßâá op := [sp], sp := sp + 2 Ç óôïßâá áõîüíåé ðñïò ôá êüôù, äçëáäþ ðñïò ìéêñüôåñåò äéåõèýíóåéò call address ret êëþóç sp := sp 2, [sp] := ip, ip := address åðéóôñïöþ ip := [sp], sp := sp + 2 Ç ôéìþ ôïõ ip ðïõ ôïðïèåôåßôáé óôç óôïßâá áðü ôçí call åßíáé ç äéåýèõíóç ôçò åíôïëþò ðïõ áêïëïõèåß ôçí call 178 / / / 216

31 ÅíôïëÝò x87 FPU ÅíôïëÝò x87 FPU Äéá åßñéóç ìíþìçò ÅéäéêÞ óôïßâá 8 êáôá ùñçôþí: ST(0), ST(7) fld source fld tbyte fild source fild word ptr [bp 2] fstp destination fld tbyte ptr [bp 10] fistp destination fild word ptr [bp 2] (load real & push) (load integer & push) (pop & store real) (pop & store integer) faddp ST(1), ST(0) fsubp ST(1), ST(0) fmulp ST(1), ST(0) fdivp ST(1), ST(0) fchs fcompp fstsw destination fstsw ax fstsw word ptr [bp 2] ST(1) := ST(1) + ST(0) & pop ST(1) := ST(1) ST(0) & pop ST(1) := ST(1) ST(0) & pop ST(1) := ST(1)/ST(0) & pop ST(0) := ST(0) ST(1) ST(0) & pop both (store x87 FPU ags) ÄïìÞ åíïôþôùí (block structure) Ìç ôïðéêü äåäïìýíá ÅããñÜöçìá äñáóôçñéïðïßçóçò (activation record / frame) ÐáñÜìåôñïé ÁðïôÝëåóìá Ðëçñïöïñßåò êáôüóôáóçò ìç áíþò ÔïðéêÝò ìåôáâëçôýò ÐñïóùñéíÝò ìåôáâëçôýò 181 / / / 216 Äéá åßñéóç ìíþìçò Äéá åßñéóç ìíþìçò ÐñïóðÝëáóç ïíïìüôùí bp+8 bp+6 bp+4 bp+2 bp bp-2 bp-4 Παράµετρος 1 Παράµετρος 2 Παράµετρος n ιεύθυνση αποτελέσµατος Σύνδεσµος προσπέλασης ιεύθυνση επιστροφής Προηγούµενο bp Τοπική µεταβλητή 1 Τοπική µεταβλητή 2 Τοπική µεταβλητή m Προσωρινή µεταβλητή 1 Προσωρινή µεταβλητή 2 Προσωρινή µεταβλητή k Παράµετρος 1 Παράµετρος 2 Παράµετρος n ιεύθυνση αποτελέσµατος ιεύθυνση επιστροφής Προηγούµενο display Προηγούµενο bp Τοπική µεταβλητή 1 Τοπική µεταβλητή 2 Τοπική µεταβλητή m Προσωρινή µεταβλητή 1 Προσωρινή µεταβλητή 2 Προσωρινή µεταβλητή k α) Σύνδεσµοι προσπέλασης β) Πίνακας δεικτών Παράµετροι Σταθερό Τµήµα Τοπικές µεταβλητές Προσωρινές µεταβλητές αρχή βάση τέλος Ε κύριου προγράµµατος Ε υποπρογράµµατος 1 Ε υποπρογράµµατος m µεταφρασµένος κώδικας στοίβα εκτέλεσης ελεύθερη µνήµη δυναµικό δεδοµένο k σωρός δυναµικό δεδοµένο 1 µνήµη για αποθήκευση δεδοµένων µνήµη για αποθήκευση του κώδικα του προγράµµατος συνολική διαθέσιµη µνήµη 64Κ 0Κ ÔïðéêÜ: [bp + offset] Ìç ôïðéêü: [si + offset] ï si ðñýðåé íá äåß íåé óôç âüóç ôïõ åããñáöþìáôïò äñáóôçñéïðïßçóçò üðïõ ôá äåäïìýíá åßíáé ôïðéêü Ôï ðñüâëçìá áíüãåôáé óôïí åíôïðéóìü ôïõ áíôßóôïé ïõ åããñáöþìáôïò äñáóôçñéïðïßçóçò Ëýóåéò ðïõ âáóßæïíôáé óôï âüèïò öùëéüóìáôïò: Óýíäåóìïé ðñïóðýëáóçò (access links) Ðßíáêåò äåéêôþí (link tables / displays) 184 / / / 216

32 Óýíäåóìïé ðñïóðýëáóçò Óýíäåóìïé ðñïóðýëáóçò ÐÝñáóìá ðáñáìýôñùí Áñ Þ ëåéôïõñãßáò óôù üôé ç äïìéêþ ìïíüäá p âñßóêåôáé öùëéáóìýíç ìýóá óôç äïìéêþ ìïíüäá q Óôï ÅÄ ôçò p ôïðïèåôåßôáé Ýíá óýíäåóìïò ðñïò ôç âüóç ôïõ ÅÄ ôçò ðéï ðñüóöáôçò êëþóçò ôçò q ÊáôÜ ôçí êëþóç õðïðñïãñáììüôùí, áðáéôåßôáé ôåëéêüò êþäéêáò ãéá ôçí åíçìýñùóç ôùí óõíäýóìùí ðñïóðýëáóçò Ôñüðïò ñþóçò óôù üôé æçôåßôáé ôï äåäïìýío a ðïõ åßíáé ôïðéêü óå ìéá äïìéêþ ìïíüäá ìå âüèïò öùëéüóìáôïò n a óôù üôé âñéóêüìáóôå óå ìéá äïìéêþ ìïíüäá p ìå âüèïò öùëéüóìáôïò n p n a Áêïëïõèïýìå n p n a óõíäýóìïõò ðñïóðýëáóçò ÊáôÜ ôçí ðñïóðýëáóç ïíïìüôùí, áðáéôåßôáé ôåëéêüò êþäéêáò ãéá ôçí õëïðïßçóç ôùí ðáñáðüíù ÊëÞóç êáô' áîßá ÊëÞóç êáô' áíáöïñü ÊëÞóç êáô' üíïìá ÊëÞóç êáô' áíüãêç ÊëÞóç êáô' áîßá êáé áðïôýëåóìá Ôñüðïò õëïðïßçóçò êáèåíüò (call by value) (call by reference) (call by name) (call by need) (call by value-result) 187 / / / 216 ÄÝóìåõóç êáôá ùñçôþí ÄÝóìåõóç êáôá ùñçôþí ÅðéëïãÞ åíôïëþí Ðñüâëçìá 1: åðéëïãþ ôåëïõìýíùí ðïõ èá áðïèçêåõôïýí óå êáôá ùñçôýò Ðñüâëçìá 2: åðéëïãþ êáôá ùñçôþí üðïõ èá áðïèçêåõôïýí ôá ôåëïýìåíá Ôï ðñüâëçìá ôçò âýëôéóôçò ñþóçò êáôá ùñçôþí åßíáé NP-complete, áêüìá êáé ùñßò åéäéêïýò ðåñéïñéóìïýò Ç ëýóç ôïõ áíüãåôáé óôçí êáôáóêåõþ ôïõ ãñüöïõ áëëçëåðéäñüóåùí ìåôáîý ôùí ìåôáâëçôþí êáé óôï ñùìáôéóìü áõôïý ìå ôüóá ñþìáôá üóïé ïé êáôá ùñçôýò ÐáñÜäåéãìá: 1:, b, b, $1 2:, 4, a, $2 3:, $2, c, $3 4:, $1, $3, $4 5: :=, $4,, d $1 $3 d := bb-4ac $2 ax $4 bx ÁðëÞ áëëü êáêþ ðñïóýããéóç: åíéáßï ó Þìá ðáñáãùãþò ôåëéêïý êþäéêá ãéá êüèå äïìþ ôïõ åíäéüìåóïõ êþäéêá Êáëýôåñç ðñïóýããéóç: ðëáêüóôñùóç (tiling) ôåìá éóìüò ôïõ åíäéüìåóïõ êþäéêá óå ôìþìáôá êüèå ôìþìá áíôéóôïé åß óå ìéá åíôïëþ ÂÝëôéóôç áëëü ñïíïâüñá ðñïóýããéóç: äõíáìéêüò ðñïãñáììáôéóìüò (dynamic programming) 190 / / / 216

33 ÅðéëïãÞ åíôïëþí ÅðéëïãÞ åíôïëþí ÅðéëïãÞ åíôïëþí (iv) ÐáñÜäåéãìá: d := bb-4ac ÐáñÜäåéãìá: tiling ìå åíôïëýò ôïõ 8086 ÐáñÜäåéãìá: tiling ìå åíôïëýò ôïõ d := b b 4 a c bp mem + offset d := mem + 4 mem bp offset b bp + offset a mem + bp offset c R 1 mem + CONST R bi mov R 1,[R bi +CONST] ax ax R 1 imul R 1 mem + bp offset d := ax ax mem ax ax bx ax bx mem ax bx + 4 mem + bp offset b + bp offset c bp offset a mem CONST 2 + R bi CONST 1 imul R 1,[R bi +CONST 1 ],CONST 2 R 1 mem + bp offset d := ax ax bx ax ax mem + 4 mem bp offset b + bp offset a mem + bp offset c 193 / / / 216 Ôï ôåëéêü ðñüãñáììá Ôï ôåëéêü ðñüãñáììá ÂïçèçôéêÝò ñïõôßíåò Óêåëåôüò: xseg segment public code assume cs : xseg, ds : xseg, ss : xseg org 100h main proc near call near ptr program mov ax, 4C00h int 21h main endp ôåëéêüò êþäéêáò ðïõ ðáñüãåôáé xseg ends end main ÂéâëéïèÞêç ñüíïõ åêôýëåóçò (run-time library) extrn function : proc ÓôáèåñÝò óõìâïëïóåéñýò êáé êéíçôþò db this is db 10 db an example db dt 1e dt 2.0 getar(a) (öüñôùóç äéåýèõíóçò ÅÄ) mov si, word ptr [bp + 4] mov si, word ptr [si + 4]... (n cur n a 1 öïñýò) mov si, word ptr [si + 4] updateal() (åíçìýñùóç óõíäýóìùí ðñïóðýëáóçò) (á) push bp áí n p < n x (â) push word ptr [bp + 4] áí n p = n x (ã) mov si, word ptr [bp + 4] mov si, word ptr [si + 4] áí n p > n x... mov si, word ptr [si + 4] (n p n x 1 öïñýò) push word ptr [si + 4] 196 / / / 216

34 ÂïçèçôéêÝò ñïõôßíåò ÂïçèçôéêÝò ñïõôßíåò ÂïçèçôéêÝò ñïõôßíåò (iv) load(r, a) (öüñôùóç ôåëïõìýíïõ) Åßäïò ôïõ a Êþäéêáò ðïõ ðáñüãåôáé (á1) áñéèìçôéêþ óôáèåñü mov R, a (á2) ëïãéêþ óôáèåñü true mov R, 1 (á3) ëïãéêþ óôáèåñü false mov R, 0 (á4) óôáèåñü áñáêôþñá mov R, ASCII(a) (á6) óôáèåñü nil mov R, 0 (â1) ôïðéêþ ïíôüôçôá: ìåôáâëçôþ, mov R, size ptr [bp + offset] (â2) ðáñüìåôñïò êáô' áîßá, Þ ðñïóùñéíþ ìåôáâëçôþ ôïðéêþ ïíôüôçôá: ðáñüìåôñïò êáô' áíáöïñü mov si, word ptr [bp + offset] mov R, size ptr [si] load(r, a) (ã1) Åßäïò ôïõ a ìç ôïðéêþ ïíôüôçôá: ìåôáâëçôþ, ðáñüìåôñïò êáô' áîßá, Þ (öüñôùóç ôåëïõìýíïõ) Êþäéêáò ðïõ ðáñüãåôáé getar(a) mov R, size ptr [si + offset] ðñïóùñéíþ ìåôáâëçôþ (ã2) ìç ôïðéêþ ïíôüôçôá: getar(a) ðáñüìåôñïò êáô' áíáöïñü mov si, word ptr [si + offset] mov R, size ptr [si] (ä) [x] load(di, x) mov R, size ptr [di] (å) {x} loadaddr(r, x) loadaddr(r, a) (öüñôùóç äéåýèõíóçò ôåëïõìýíïõ) Åßäïò ôïõ a Êþäéêáò ðïõ ðáñüãåôáé (á5) óôáèåñþ óõìâïëïóåéñü lea R, byte ptr a (â1) ôïðéêþ ïíôüôçôá: ðáñüìåôñïò êáô' áîßá, Þ lea R, size ptr [bp + offset] ðñïóùñéíþ ìåôáâëçôþ (â2) ôïðéêþ ïíôüôçôá: mov R, word ptr [bp + offset] ðáñüìåôñïò êáô' áíáöïñü (ã1) ìç ôïðéêþ ïíôüôçôá: getar(a) ðáñüìåôñïò êáô' áîßá, Þ lea R, size ptr [si + offset] ðñïóùñéíþ ìåôáâëçôþ (ã2) ìç ôïðéêþ ïíôüôçôá: getar(a) ðáñüìåôñïò êáô' áíáöïñü mov R, word ptr [si + offset] (ä) [x] load(r, x) 199 / / / 216 ÂïçèçôéêÝò ñïõôßíåò (v) ÐáñáãùãÞ êþäéêá ÐáñáãùãÞ êþäéêá Ðáñüìïéá õëïðïßçóç ãéá ôéò: loadreal(a) store(r, a) storereal(a) Ñïõôßíåò ãéá åôéêýôåò ôåëéêïý êþäéêá: name(p) p num num num l ÔåôñÜäá load(r, x) store(r, z) ÔåôñÜäá :=, x,, z load(ax, y) mov cx, size imul cx loadaddr(cx, x) add ax, cx store(ax, z) array, x, y, z loadreal(x) storereal(z) ÔåôñÜäåò +, x, y, z, x, y, z load(ax, x) load(dx, y) instr ax, dx store(ax, z) instr = add Þ sub loadreal(x) loadreal(y) finstr ST(1), ST(0) storereal(z) ÔåôñÜäåò, x, y, z /, x, y, z %, x, y, z load(ax, x) load(cx, y) imul cx store(ax, z) load(ax, x) cwd load(cx, y) idiv cx store(ax, z) finstr = faddp ê.ëð. load(ax, x) cwd load(cx, y) idiv cx store(dx, z) 202 / / / 216

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Ενδιάμεσος Κώδικας Νίκος Παπασπύου, Κωστής Σαγώνας

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Ενδιάμεσος Κώδικας Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Ενδιάμεσος Κώδικας Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

Σημασιολογική ανάλυση

Σημασιολογική ανάλυση Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Σημασιολογική ανάλυση Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Λεκτική Ανάλυση. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Λεκτική Ανάλυση. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Λεκτική Ανάλυση Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 1ο) Νίκος Παπασπύου, Κωστής Σαγώνας

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 1ο) Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Τυπικές Γλώσσες (μέρος 1ο) Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Εισαγωγή. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Εισαγωγή. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Εισαγωγή Νίκος Παπασπύου, Κωστής Σαγώνας Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 1ον) Νίκος Παπασπύου, Κωστής Σαγώνας

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 1ον) Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Συντακτική ανάλυση (μέρος 1ον) Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 2ο) Νίκος Παπασπύου, Κωστής Σαγώνας

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 2ο) Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Τυπικές Γλώσσες (μέρος 2ο) Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Ãëþóóá ôåôñüäùí. ÌïñöÞ ôåôñüäáò: n: op, x, y, z üðïõ:

Ãëþóóá ôåôñüäùí. ÌïñöÞ ôåôñüäáò: n: op, x, y, z üðïõ: Ãëþóóá ôåôñüäùí ÌïñöÞ ôåôñüäáò: n: op, x, y, z üðïõ: n: åôéêýôá ôåôñüäáò (öõóéêüò áñéèìüò) op: ôåëåóôþò x, y, z: ôåëïýìåíá ÁíÜëïãá ìå ôï åßäïò ôïõ ôåëåóôþ, êüðïéá ôåëïýìåíá åíäå ïìýíùò ðáñáëåßðïíôáé Íßêïò

Διαβάστε περισσότερα

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Τελικός Κώδικας. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Τελικός Κώδικας. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Τελικός Κώδικας Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Υλοποίηση ΣΑ με το bison

Υλοποίηση ΣΑ με το bison (i) 69 / 216 Μεταεργαλείο bison: γεννήτορας ΣΑ LALR(1) Είσοδος: μεταπρόγραμμα που περιγράφει τη σύνταξη και τις σημασιολογικές ρουτίνες Έξοδος: πρόγραμμα σε C Η συνάρτηση yyparse υλοποιεί το ΣΑ Επιστρέφει

Διαβάστε περισσότερα

Υλοποίηση ΣΑ με το bison

Υλοποίηση ΣΑ με το bison (i) Μεταεργαλείο bison: γεννήτορας ΣΑ LALR(1) Είσοδος: μεταπρόγραμμα που περιγράφει τη σύνταξη και τις σημασιολογικές ρουτίνες Έξοδος: πρόγραμμα σε C Η συνάρτηση yyparse υλοποιεί το ΣΑ Επιστρέφει 0 αν

Διαβάστε περισσότερα

ÌåôáãëùôôéóôÝò. Áðñßëéïò 2011

ÌåôáãëùôôéóôÝò.  Áðñßëéïò 2011 ÌåôáãëùôôéóôÝò Íßêïò Ðáðáóðýñïõ {nickie}@softlab.ntua.gr ÊùóôÞò Óáãþíáò {kostis}@cs.ntua.gr Åèíéêü Ìåôóüâéï Ðïëõôå íåßï Ó ïëþ Çëåêôñïëüãùí Ìç. êáé Ìç. Õðïëïãéóôþí ÅñãáóôÞñéï Ôå íïëïãßáò Ëïãéóìéêïý Ðïëõôå

Διαβάστε περισσότερα

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 3ον) Νίκος Παπασπύου, Κωστής Σαγώνας

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 3ον) Νίκος Παπασπύου, Κωστής Σαγώνας Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Μεταγλωττιστές Νίκος Παπασπύου, Κωστής Σαγώνας Συντακτική ανάλυση (μέρος 3ον) Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Υλοποίηση ΛΑ με το flex

Υλοποίηση ΛΑ με το flex (i) Μεταεργαλείο flex: γεννήτορας ΛΑ Είσοδος: μεταπρόγραμμα που περιγράφει τις λεκτικές μονάδες Έξοδος: πρόγραμμα σε C Η συνάρτηση yylex υλοποιεί το ΛΑ Επιστρέφει τον κωδικό της λεκτικής μονάδας που αναγνωρίστηκε,

Διαβάστε περισσότερα

ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ Á

ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ Á ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ 2008 - ÏÌÁÄÁ ÈÅÌÁÔÙÍ Á ÈÝìá. Èåùñïýìå ôï óýíïëï Ω {; 2; ; 2008}. (á ( âáèìüò Ðüóåò åßíáé ïé ìåôáèýóåéò ôùí óôïé åßùí ôïõ Ω óôéò ïðïßåò ôï óôïé åßï âñßóêåôáé óå êüðïéá áðü ôéò

Διαβάστε περισσότερα

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 9 Σημασιολογική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Σύνταξη και Σημασιολογία Σε οποιαδήποτε γλώσσα (προγραμματισμού ή μη) υπάρχουν δύο βασικές

Διαβάστε περισσότερα

ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ B

ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ B ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ 2008 - ÏÌÁÄÁ ÈÅÌÁÔÙÍ B ÈÝìá. Èåùñïýìå ôï óýíïëï Ω {; 2; ; 2008}. (á ( âáèìüò Ðüóåò åßíáé ïé ìåôáèýóåéò ôùí óôïé åßùí ôïõ Ω óôéò ïðïßåò ôá Üñôéá óôïé åßá êáôáëáìâüíïõí ôéò ôåëåõôáßåò

Διαβάστε περισσότερα

Κεφάλαιο 2: Τυπικές γλώσσες

Κεφάλαιο 2: Τυπικές γλώσσες Κεφάλαιο 2: Τυπικές γλώσσες (μέρος 2ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 47 / 216 Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό

Διαβάστε περισσότερα

ÊåöÜëáéï 3 ÏÑÉÆÏÕÓÅÓ. 3.1 ÅéóáãùãÞ

ÊåöÜëáéï 3 ÏÑÉÆÏÕÓÅÓ. 3.1 ÅéóáãùãÞ 28 ÊåöÜëáéï 3 ÏÑÉÆÏÕÓÅÓ 3.1 ÅéóáãùãÞ Ãéá êüèå ôåôñáãùíéêü ðßíáêá A áíôéóôïé åß Ýíáò ðñáãìáôéêüò áñéèìüò ï ïðïßïò êáëåßôáé ïñßæïõóá êáé óõíþèùò óõìâïëßæåôáé ìå A Þ det(a). ÌåôáèÝóåéò: Ìéá áðåéêüíéóç ôïõ

Διαβάστε περισσότερα

Ç ãëþóóá Grace. ÌåôáãëùôôéóôÝò 2009 ÈÝìá åñãáóßáò

Ç ãëþóóá Grace. ÌåôáãëùôôéóôÝò 2009 ÈÝìá åñãáóßáò Åèíéêü Ìåôóüâéï Ðïëõôå íåßï Ó ïëþ Çëåêôñïëüãùí Ìç áíéêþí & Ìç áíéêþí Õðïëïãéóôþí ÔïìÝáò Ôå íïëïãßáò ÐëçñïöïñéêÞò & Õðïëïãéóôþí ÅñãáóôÞñéï Ôå íïëïãßáò Ëïãéóìéêïý ÌåôáãëùôôéóôÝò 2009 ÈÝìá åñãáóßáò Ç ãëþóóá

Διαβάστε περισσότερα

Ç ãëþóóá Alan. ÌåôáãëùôôéóôÝò 2011 ÈÝìá åñãáóßáò

Ç ãëþóóá Alan. ÌåôáãëùôôéóôÝò 2011 ÈÝìá åñãáóßáò Åèíéêü Ìåôóüâéï Ðïëõôå íåßï Ó ïëþ Çëåêôñïëüãùí Ìç áíéêþí & Ìç áíéêþí Õðïëïãéóôþí ÔïìÝáò Ôå íïëïãßáò ÐëçñïöïñéêÞò & Õðïëïãéóôþí ÅñãáóôÞñéï Ôå íïëïãßáò Ëïãéóìéêïý ÌåôáãëùôôéóôÝò 0 ÈÝìá åñãáóßáò Ç ãëþóóá

Διαβάστε περισσότερα

ÊåöÜëáéï 4 ÄÉÁÍÕÓÌÁÔÁ. 4.1 ÅéóáãùãÞ (ÃåùìåôñéêÞ)

ÊåöÜëáéï 4 ÄÉÁÍÕÓÌÁÔÁ. 4.1 ÅéóáãùãÞ (ÃåùìåôñéêÞ) 44 ÊåöÜëáéï 4 ÄÉÁÍÕÓÌÁÔÁ 4.1 ÅéóáãùãÞ (ÃåùìåôñéêÞ) Óå äéüöïñåò öõóéêýò åöáñìïãýò õðüñ ïõí ìåãýèç ôá ïðïßá ìðïñïýí íá áñáêôçñéóèïýí ìüíï ìå Ýíá áñéèìü. ÔÝôïéá ìåãýèç, üðùò ãéá ðáñüäåéãìá, ç èåñìïêñáóßá

Διαβάστε περισσότερα

Στοιχεία από Assembly Γιώργος Μανής

Στοιχεία από Assembly Γιώργος Μανής Στοιχεία από Assembly 8086 Γιώργος Μανής Καταχωρητές καταχωρητές γενικής φύσης καταχωρητές δείκτες καταχωρητές αναφοράς καταχωρητές τµηµάτων ειδικοί καταχωρητές Καταχωρητές γενικής φύσης 16 bit ax, bx,

Διαβάστε περισσότερα

Ç ãëþóóá Tony. ÌåôáãëùôôéóôÝò 2010 ÈÝìá åñãáóßáò

Ç ãëþóóá Tony. ÌåôáãëùôôéóôÝò 2010 ÈÝìá åñãáóßáò Åèíéêü Ìåôóüâéï Ðïëõôå íåßï Ó ïëþ Çëåêôñïëüãùí Ìç áíéêþí & Ìç áíéêþí Õðïëïãéóôþí ÔïìÝáò Ôå íïëïãßáò ÐëçñïöïñéêÞò & Õðïëïãéóôþí ÅñãáóôÞñéï Ôå íïëïãßáò Ëïãéóìéêïý ÌåôáãëùôôéóôÝò 2010 ÈÝìá åñãáóßáò Ç ãëþóóá

Διαβάστε περισσότερα

ÏñãÜíùóç ÐñïãñÜììáôïò

ÏñãÜíùóç ÐñïãñÜììáôïò ÊåöÜëáéï 4 ÏñãÜíùóç ÐñïãñÜììáôïò Åðéäéùêüìåíïé óôü ïé: ¼ôáí ïëïêëçñþóåôå ôç ìåëýôç áõôïý ôïõ êåöáëáßïõ, èá åßóôå éêáíïß: é íá ðåñéãñüöåôå ôéò åíôïëýò ðïõ ñçóéìïðïéïýíôáé óôá õðïðñïãñüììáôá êáé óôï êýñéï

Διαβάστε περισσότερα

¼ñãáíá Èåñìïêñáóßáò - ÓõóêåõÝò Øõêôéêþí Ìç áíçìüôùí

¼ñãáíá Èåñìïêñáóßáò - ÓõóêåõÝò Øõêôéêþí Ìç áíçìüôùí ¼ñãáíá Èåñìïêñáóßáò - ÓõóêåõÝò Øõêôéêþí Ìç áíçìüôùí ÈåñìïóôÜôçò ÓõíôÞñçóçò REF-DF-SM ÅëÝã åé Ýíá èåñìïóôïé åßï PTC Êëßìáêá èåñìïêñáóßáò: -19? +99 C ëåã ïò áðüøõîçò - dfrst Ôñßá ñåëý: óõìðéåóôþò (30Á, 2ÇÑ),

Διαβάστε περισσότερα

ÄéáêñéôÝò êáé óõíå åßò ôõ áßåò ìåôáâëçôýò ÁóêÞóåéò

ÄéáêñéôÝò êáé óõíå åßò ôõ áßåò ìåôáâëçôýò ÁóêÞóåéò ÄéáêñéôÝò êáé óõíå åßò ôõ áßåò ìåôáâëçôýò ÁóêÞóåéò Áíôþíçò Ïéêïíüìïõ aeconom@math.uoa.gr ÌáÀïõ óêçóç (Ross, Exer. 4.8) Áí E[X] êáé V ar[x] 5 íá âñåßôå. E[( + X) ],. V ar[4 + X]. óêçóç (Ross, Exer. 4.64)

Διαβάστε περισσότερα

16. ÌåëÝôç ôùí óõíáñôþóåùí y=çìx, y=óõíx êáé ôùí ìåôáó çìáôéóìþí ôïõò.

16. ÌåëÝôç ôùí óõíáñôþóåùí y=çìx, y=óõíx êáé ôùí ìåôáó çìáôéóìþí ôïõò. 55 16. ÌåëÝôç ôùí óõíáñôþóåùí y=çìx, y=óõíx êáé ôùí ìåôáó çìáôéóìþí ôïõò. A ÌÝñïò 1. Íá êáôáóêåõüóåéò óôï Function Probe ôç ãñáöéêþ ðáñüóôáóç ôçò y=çìx. Óôïí ïñéæüíôéï Üîïíá íá ïñßóåéò êëßìáêá áðü ôï -4ð

Διαβάστε περισσότερα

Ç ãëþóóá Dana. ÌåôáãëùôôéóôÝò 2008 ÈÝìá åñãáóßáò

Ç ãëþóóá Dana. ÌåôáãëùôôéóôÝò 2008 ÈÝìá åñãáóßáò Åèíéêü Ìåôóüâéï Ðïëõôå íåßï Ó ïëþ Çëåêôñïëüãùí Ìç áíéêþí & Ìç áíéêþí Õðïëïãéóôþí ÔïìÝáò Ôå íïëïãßáò ÐëçñïöïñéêÞò & Õðïëïãéóôþí ÅñãáóôÞñéï Ôå íïëïãßáò Ëïãéóìéêïý ÌåôáãëùôôéóôÝò 2008 ÈÝìá åñãáóßáò Ç ãëþóóá

Διαβάστε περισσότερα

Ó ÅÄÉÁÓÌÏÓ - ÊÁÔÁÓÊÅÕÇ ÓÔÏÌÉÙÍ & ÅÉÄÉÊÙÍ ÅÎÁÑÔÇÌÁÔÙÍ ÊËÉÌÁÔÉÓÌÏÕ V X

Ó ÅÄÉÁÓÌÏÓ - ÊÁÔÁÓÊÅÕÇ ÓÔÏÌÉÙÍ & ÅÉÄÉÊÙÍ ÅÎÁÑÔÇÌÁÔÙÍ ÊËÉÌÁÔÉÓÌÏÕ V X V X A B+24 AEROGRAMÌI Ïé äéáóôüóåéò ôùí óôïìßùí ôçò óåéñüò Å öáßíïíôáé óôï ðáñáêüôù ó Þìá. Áíôßóôïé á, ïé äéáóôüóåéò ôùí óôïìßùí ôçò óåéñüò ÂÔ öáßíïíôáé óôï Ó Þìá Å. Ãéá ôïí ðñïóäéïñéóìü ôçò ðáñáããåëßáò

Διαβάστε περισσότερα

ÁðáñéèìçôÝò- ÓõãêñéôÝò

ÁðáñéèìçôÝò- ÓõãêñéôÝò ÊåöÜëáéï 5 ÁðáñéèìçôÝò- ÓõãêñéôÝò Åðéäéùêüìåíïé óôü ïé: ¼ôáí ïëïêëçñþóåôå ôç ìåëýôç áõôïý ôïõ êåöáëáßïõ, èá åßóôå éêáíïß: é íá ðåñéãñüöåôå ôéò åíôïëýò ðïõ ñçóéìïðïéïýíôáé ãéá ôïí ðñïãñáììáôéóìü ôùí áðáñéèìçôþí

Διαβάστε περισσότερα

Παρουσίαση του εργαλείου BISON

Παρουσίαση του εργαλείου BISON Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unix yacc. Σχετικά εύκολο

Διαβάστε περισσότερα

3.1 Íá âñåèåß ôï ðåäßï ïñéóìïý ôçò óõíüñôçóçò f: 4 x. (iv) f(x, y, z) = sin x 2 + y 2 + 3z Íá âñåèïýí ôá üñéá (áí õðüñ ïõí): lim

3.1 Íá âñåèåß ôï ðåäßï ïñéóìïý ôçò óõíüñôçóçò f: 4 x. (iv) f(x, y, z) = sin x 2 + y 2 + 3z Íá âñåèïýí ôá üñéá (áí õðüñ ïõí): lim 3.1 Íá âñåèåß ôï ðåäßï ïñéóìïý ôçò óõíüñôçóçò f: 4 x (i) f(x, y) = sin 1 2 (x + y) (ii) f(x, y) = y 2 + 3 (iii) f(x, y, z) = 25 x 2 y 2 z 2 (iv) f(x, y, z) = z +ln(1 x 2 y 2 ) 3.2 (i) óôù f(x, y, z) =

Διαβάστε περισσότερα

3.1 H Ýííïéá ôçò óõíüñôçóçò ÐÁÑÁÄÅÉÃÌÁÔÁ - ÅÖÁÑÌÏÃÅÓ

3.1 H Ýííïéá ôçò óõíüñôçóçò ÐÁÑÁÄÅÉÃÌÁÔÁ - ÅÖÁÑÌÏÃÅÓ .1 Ç Ýííïéá ôçò óõíüñôçóçò 55.1 H Ýííïéá ôçò óõíüñôçóçò Åñþ ôçóç 1 Ôé ëýãåôáé óõíüñôçóç; ÁðÜíôçóç Ç ó Ýóç åêåßíç ðïõ êüèå ôéìþ ôçò ìåôáâëçôþò x, áíôéóôïé ßæåôáé óå ìéá ìüíï ôéìþ ôçò ìåôáâëçôþò y ëýãåôáé

Διαβάστε περισσότερα

ÊåöÜëáéï 5 ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ. 5.1 ÅéóáãùãÞ. 56 ÊåöÜëáéï 5. ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ

ÊåöÜëáéï 5 ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ. 5.1 ÅéóáãùãÞ. 56 ÊåöÜëáéï 5. ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ 55 56 ÊåöÜëáéï 5. ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ ÊåöÜëáéï 5 ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ 5.1 ÅéóáãùãÞ Ïñéóìüò: íá óýíïëï V êáëåßôáé äéáíõóìáôéêüò þñïò Þ ãñáììéêüò þñïò ðüíù óôïí IR áí (á) ôï V åßíáé êëåéóôü ùò ðñïò ôç ðñüóèåóç,

Διαβάστε περισσότερα

2.4 ñçóéìïðïéþíôáò ôïí êáíüíá áëõóßäáò íá âñåèåß ç dr

2.4 ñçóéìïðïéþíôáò ôïí êáíüíá áëõóßäáò íá âñåèåß ç dr 2.1 i) Íá âñåèïýí ïé óõíôåôáãìýíåò ôïõ óçìåßïõ óôï ïðïßï ç åõèåßá r = 2 + t)i + 1 2t)j + 3tk ôýìíåé ôï åðßðåäï xz. ii) Íá âñåèïýí ïé óõíôåôáãìýíåò ôïõ óçìåßïõ óôï ïðïßï ç åõèåßá r = ti + 1 + 2t)j 3tk ôýìíåé

Διαβάστε περισσότερα

Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Start Condition Μόλις βρεί τα (quotation mark), αφαιρεί όλα τα text μέχρι να βρεί το

Διαβάστε περισσότερα

ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâüëëïí

ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâüëëïí 10. ÕðïðñïãñÜììáôá 204 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâüëëïí ÅéóáãùãÞ Ç åðßëõóç åíüò ðñïâëþìáôïò äéåõêïëýíåôáé ìå ôç äéáßñåóç ôïõ óå ìéêñüôåñá õðïðñïâëþìáôá. Ç åðßëõóç ôùí õðïðñïâëçìüôùí áõôþí

Διαβάστε περισσότερα

ÓÕÍÈÇÊÇ ÁÌÅÔÁÈÅÔÏÔÇÔÁÓ ÓÕÓÔÇÌÁÔÏÓ ÔÏÉ ÙÌÁÔÙÍ ÐÁÑÁÑÔÇÌÁ Â

ÓÕÍÈÇÊÇ ÁÌÅÔÁÈÅÔÏÔÇÔÁÓ ÓÕÓÔÇÌÁÔÏÓ ÔÏÉ ÙÌÁÔÙÍ ÐÁÑÁÑÔÇÌÁ Â ÓÕÍÈÇÊÇ ÁÌÅÔÁÈÅÔÏÔÇÔÁÓ ÓÕÓÔÇÌÁÔÏÓ ÔÏÉ ÙÌÁÔÙÍ ÐÁÑÁÑÔÇÌÁ Â ÐÁÑÁÑÔÇÌÁ Â 464 ÅÊÙÓ 000 - Ó ÏËÉÁ ÓÕÍÈÇÊÇ ÁÌÅÔÁÈÅÔÏÔÇÔÁÓ ÓÕÓÔÇÌÁÔÏÓ ÔÏÉ ÙÌÁÔÙÍ Â.1 ÁÓÕÌÌÅÔÑÏ ÓÕÓÔÇÌÁ Η N / ( 0. + 0.1 η) 0.6 ν ν, η 3, η > 3...

Διαβάστε περισσότερα

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216 Κεφάλαιο 2: Τυπικές γλώσσες Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 13 / 216 Τυπικές γλώσσες (i) Βασικές έννοιες Αλφάβητο Σύμβολο Συμβολοσειρά Μήκος συμβολοσειράς Σύνολο συμβολοσειρών

Διαβάστε περισσότερα

Óõíå Þ êëüóìáôá & Áöáéñåôéêüò Åõêëåßäåéïò áëãüñéèìïò

Óõíå Þ êëüóìáôá & Áöáéñåôéêüò Åõêëåßäåéïò áëãüñéèìïò Óõíå Þ êëüóìáôá & Áöáéñåôéêüò Åõêëåßäåéïò áëãüñéèìïò Áããåëßíá ÂéäÜëç åðéâëýðùí êáèçãçôþò: ÃéÜííçò Ìïó ïâüêçò Q 13 Éïõíßïõ, 2009 ÄïìÞ äéðëùìáôéêþò åñãáóßáò 1o êåö. ÅéóáãùãÞ óôá óõíå Þ êëüóìáôá 2ï êåö. Ëßãç

Διαβάστε περισσότερα

DOS Microsoft Windows... 65

DOS Microsoft Windows... 65 Åõ áñéóôßåò... x ÅéóáãùãÞ... xi 1 Áðü Ðïý ÎåêéíÜù;... 1 Áðü Ðïý ÎåêéíÜìå;... 2 Ðñïãñáììáôßæïíôáò ìå ôïí Åýêïëï Ôñüðï... 3 Ï Ðñïãñáììáôéóìüò åíüò ÐñïãñÜììáôïò Åßíáé óáí ôïí Ðñïãñá ììáôéóìü ôïõ Êôéóßìáôïò

Διαβάστε περισσότερα

8. ÅðéëïãÞ êáé åðáíüëçøç

8. ÅðéëïãÞ êáé åðáíüëçøç 8. ÅðéëïãÞ êáé åðáíüëçøç 164 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâüëëïí ÅéóáãùãÞ Óôï ðñïçãïýìåíï êåöüëáéï áíáðôýîáìå ðñïãñüììáôá, ôá ïðïßá Þôáí ðïëý áðëü êáé ïé åíôïëýò ôùí ïðïßùí åêôåëïýíôáé ç

Διαβάστε περισσότερα

ιαδικασία åãêáôüóôáóçò MS SQL Server, SingularLogic Accountant, SingularLogic Accountant Ìéóèïäïóßá

ιαδικασία åãêáôüóôáóçò MS SQL Server, SingularLogic Accountant, SingularLogic Accountant Ìéóèïäïóßá 1.1 ÃåíéêÝò ðëçñïöïñßåò ãéá ôçí Express Ýêäïóç ôïõ SQL Server... 3 1.2 ÃåíéêÝò ðëçñïöïñßåò ãéá ôçí åãêáôüóôáóç... 3 2.1 ÅãêáôÜóôáóç Microsoft SQL Server 2008R2 Express Edition... 4 2.1 Åíåñãïðïßçóç ôïõ

Διαβάστε περισσότερα

ÌÅÑÏÓ 3 ΥΠΗΡΕΣΙΕΣ ΥΠΟΣΤΗΡΙΞΗΣ ΤΗΣ ΚΛΙΝΙΚΗΣ ΠΡΑΞΗΣ ÁÐÁÉÔÇÓÅÙÍ ÕÐÇÑÅÓÉÙÍ. Υπηρεσίες Ιατρικής Πληροφορικής και Τηλεϊατρικής 9 ÂÁÓÉÊÅÓ ÊÁÔÅÕÈÕÍÓÅÉÓ

ÌÅÑÏÓ 3 ΥΠΗΡΕΣΙΕΣ ΥΠΟΣΤΗΡΙΞΗΣ ΤΗΣ ΚΛΙΝΙΚΗΣ ΠΡΑΞΗΣ ÁÐÁÉÔÇÓÅÙÍ ÕÐÇÑÅÓÉÙÍ. Υπηρεσίες Ιατρικής Πληροφορικής και Τηλεϊατρικής 9 ÂÁÓÉÊÅÓ ÊÁÔÅÕÈÕÍÓÅÉÓ 138 Υπηρεσίες Ιατρικής Πληροφορικής και Τηλεϊατρικής ÌÅÑÏÓ 3 ΥΠΗΡΕΣΙΕΣ ΥΠΟΣΤΗΡΙΞΗΣ ΤΗΣ ΚΛΙΝΙΚΗΣ ΠΡΑΞΗΣ 9 ÂÁÓÉÊÅÓ ÊÁÔÅÕÈÕÍÓÅÉÓ 10 ÌÏÍÔÅËÏ ÁÐÏÔÉÌÇÓÇÓ ÔÙÍ ÁÐÁÉÔÇÓÅÙÍ 11 ÔÏÌÅÉÓ ÅÖÁÑÌÏÃÇÓ ÔÙÍ ÕÐÇÑÅÓÉÙÍ 139

Διαβάστε περισσότερα

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

Διαβάστε περισσότερα

9. ÁíÜðôõîç ðñïãñáììüôùí ìå ñïíéêýò ëåéôïõñãßåò.

9. ÁíÜðôõîç ðñïãñáììüôùí ìå ñïíéêýò ëåéôïõñãßåò. 9. ÁíÜðôõîç ðñïãñáììüôùí ìå ñïíéêýò ëåéôïõñãßåò. 9.1 ÃåíéêÜ. Ôá ðåñéóóüôåñá PLC äéáèýôïõí óçìáíôéêýò åõêïëßåò üóïí áöïñü óôïí ðñïãñáììáôéóìü ñïíéêþí ëåéôïõñãéþí ìå ñçóéìïðïßçóç ôùí ñïíéêþí ëåéôïõñãéþí

Διαβάστε περισσότερα

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Μεταγλωττιστές Εργαστήριο 5 Εισαγωγή στο BISON Γεννήτρια Συντακτικών Αναλυτών 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Φάσεις Μεταγλώττισης

Διαβάστε περισσότερα

Ðñïêýðôïõí ôá ðáñáêüôù äéáãñüììáôá.

Ðñïêýðôïõí ôá ðáñáêüôù äéáãñüììáôá. ÌÅÈÏÄÏËÏÃÉÁ Ãéá Ýíá óþìá ðïõ åêôåëåß åõèýãñáììç ïìáëü ìåôáâáëëüìåíç êßíçóç éó ýïõí ïé ôýðïé: õ=õ ï +á. t x=õ. ï t+ át. ÅÜí ôï óþìá îåêéíüåé áðü ôçí çñåìßá, äçëáäþ ç áñ éêþ ôá ýôçôá åßíáé õ ï =0, ôüôå ïé

Διαβάστε περισσότερα

( ) ξî τέτοιο, + Ý åé ìßá ôïõëü éóôïí ñßæá óôï äéüóôçìá ( ) h x =,να δείξετε ότι υπάρχει ( α,β) x ΕΦΑΡΜΟΓΕΣ ΣΤΙΣ ΠΑΡΑΓΩΓΟΥΣ

( ) ξî τέτοιο, + Ý åé ìßá ôïõëü éóôïí ñßæá óôï äéüóôçìá ( ) h x =,να δείξετε ότι υπάρχει ( α,β) x ΕΦΑΡΜΟΓΕΣ ΣΤΙΣ ΠΑΡΑΓΩΓΟΥΣ . Äßíåôáé ç óõíüñôçóç : [, + ) R óõíå Þò óôï äéüóôçìá [,+ ) êáé ðáñáãùãßóéìç óôï äéüóôçìá (,+ ), ãéá ôçí ïðïßá éó ýåé ( ) = α. óôù üôé õðüñ åé κî R, þóôå íá éó ýåé ( ) κ ãéá êüèå Î (,+ ). Íá äåßîåôå üôé

Διαβάστε περισσότερα

7. ÂáóéêÜ óôïé åßá ðñïãñáììáôéóìïý

7. ÂáóéêÜ óôïé åßá ðñïãñáììáôéóìïý 7. ÂáóéêÜ óôïé åßá ðñïãñáììáôéóìïý 146 ÁíÜðôõîç åöáñìïãþí óå ðñïãñáììáôéóôéêü ðåñéâüëëïí ÅéóáãùãÞ ÊÜèå ãëþóóá ðñïãñáììáôéóìïý, üðùò áíáöýñèçêå, Ý åé ôï äéêü ôçò ëåîéëüãéï êáé ôá ðñïãñüììáôá ôçò áêïëïõèïýí

Διαβάστε περισσότερα

1. Íá ëõèåß ç äéáöïñéêþ åîßóùóç (15 ìïí.) 2. Íá âñåèåß ç ãåíéêþ ëýóç ôçò äéáöïñéêþò åîßóùóçò (15 ìïí.)

1. Íá ëõèåß ç äéáöïñéêþ åîßóùóç (15 ìïí.) 2. Íá âñåèåß ç ãåíéêþ ëýóç ôçò äéáöïñéêþò åîßóùóçò (15 ìïí.) ÔÅÉ ËÜñéóáò, ÔìÞìá Ìç áíïëïãßáò ÌáèçìáôéêÜ ÉI, ÅîÝôáóç Ðåñéüäïõ Éïõíßïõ 24/6/21 ÄéäÜóêùí: Á éëëýáò Óõíåöáêüðïõëïò 1. Íá ëõèåß ç äéáöïñéêþ åîßóùóç (15 ìïí.) (3x 2 + 6xy 2 )dx + (6x 2 y + 4y 3 )dy = 2. Íá

Διαβάστε περισσότερα

Παρουσίαση του εργαλείου BISON

Παρουσίαση του εργαλείου BISON Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unixyacc. Σχετικά εύκολο

Διαβάστε περισσότερα

ÅñãáóôÞñéï 1. ÄïìÝò ÄåäïìÝíùí. 1.1 Óôü ïé. 1.2 Áðáñáßôçôï Õëéêü

ÅñãáóôÞñéï 1. ÄïìÝò ÄåäïìÝíùí. 1.1 Óôü ïé. 1.2 Áðáñáßôçôï Õëéêü 1 ÅñãáóôÞñéï 1 ÄïìÝò ÄåäïìÝíùí ôìþìá: Äéá åßñéóçò Ðëçñïöïñéþí, ÔÅÉ ÊáâÜëáò äéäüóêùí: Äñ. Âáóßëåéïò áôæþò, Åð. ÊáèçãçôÞò ôï êåßìåíï áõôü âñßóêåôáé óôï äéáäßêôõï óôç óåëßäá www.it.teithe.gr/ chatzis 1.1

Διαβάστε περισσότερα

Äéá åßñéóç äåäïìýíùí

Äéá åßñéóç äåäïìýíùí ÊåöÜëáéï 3 Äéá åßñéóç äåäïìýíùí Åðéäéùêüìåíïé óôü ïé: ¼ôáí ïëïêëçñþóåôå ôç ìåëýôç áõôïý ôïõ êåöáëáßïõ, èá åßóôå éêáíïß: é íá ðåñéãñüöåôå ôïí ôñüðï êáôá þñçóçò ôùí äåäïìýíùí óå äéüöïñåò ìïñöýò é íá ñçóéìïðïéåßôå

Διαβάστε περισσότερα

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

Διαβάστε περισσότερα

ΕΛΕΝΗ ΓΕΡΟΥΛΑΝΟΥ. Εικονογράφηση ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΓΙΑ ΠΑΙΔΙΑ ΝΗΠΙΑΓΩΓΕΙΟΥ ΛΗΔΑ ΒΑΡΒΑΡΟΥΣΗ ΕΚΔΟΣΕΙΣ ΠΑΠΑΔΟΠΟΥΛΟΣ

ΕΛΕΝΗ ΓΕΡΟΥΛΑΝΟΥ. Εικονογράφηση ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΓΙΑ ΠΑΙΔΙΑ ΝΗΠΙΑΓΩΓΕΙΟΥ ΛΗΔΑ ΒΑΡΒΑΡΟΥΣΗ ΕΚΔΟΣΕΙΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΓΙΑ ΠΑΙΔΙΑ ΝΗΠΙΑΓΩΓΕΙΟΥ ΕΛΕΝΗ ΓΕΡΟΥΛΑΝΟΥ Εικονογράφηση ΛΗΔΑ ΒΑΡΒΑΡΟΥΣΗ ΕΚΔΟΣΕΙΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΕΚΔΟΣΕΙΣ ΠΑΠΑΔΟΠΟΥΛΟΣ Ï ðéï ìåãüëïò êáé ï ðéï óçìáíôéêüò ðáéäáãùãéêüò êáíüíáò äåí åßíáé ôï íá

Διαβάστε περισσότερα

Cel animation. ÅöáñìïãÝò ðïëõìýóùí

Cel animation. ÅöáñìïãÝò ðïëõìýóùí ÅöáñìïãÝò ðïëõìýóùí Cel animation Ç ôå íéêþ áõôþ óõíßóôáôáé óôçí êáôáóêåõþ ðïëëþí ó åäßùí ðïõ äéáöýñïõí ìåôáîý ôïõò óå óõãêåêñéìýíá óçìåßá. Ôá ó Ýäéá áõôü åíáëëüóóïíôáé ôï Ýíá ìåôü ôï Üëëï äßíïíôáò ôçí

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γεννήτριες Συντακτικών Αναλυτών Bison/yacc

Διαβάστε περισσότερα

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 7: Οριακή Τιμή Συνάρτησης. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 7: Οριακή Τιμή Συνάρτησης. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας Ανώτερα Μαθηματικά Ι Ενότητα 7: Οριακή Τιμή Συνάρτησης Αθανάσιος Μπράτσος Τμήμα Ναυπηγών Μηχανικών ΤΕ Το περιεχόμενο του μαθήματος διατίθεται

Διαβάστε περισσότερα

Áóõìðôùôéêïß Óõìâïëéóìïß êáé Éåñáñ ßá ÓõíáñôÞóåùí

Áóõìðôùôéêïß Óõìâïëéóìïß êáé Éåñáñ ßá ÓõíáñôÞóåùí Áóõìðôùôéêïß Óõìâïëéóìïß êáé Éåñáñ ßá ÓõíáñôÞóåùí Çëßáò Ê. Óôáõñüðïõëïò Ïêôþâñéïò 006 1 Áóõìðôùôéêïß Óõìâïëéóìïß ÎåêéíÜìå äéáôõðþíïíôáò ôïõò ïñéóìïýò ôùí ðýíôå ãíùóôþí áóõìðôùôéêþí óõìâïëéóìþí: Ïñéóìüò

Διαβάστε περισσότερα

Üóêçóç 15. ÕëéêÜ - åîáñôþìáôá äéêôýïõ ðåðéåóìýíïõ áýñá êáé ðíåõìáôéêýò óõóêåõýò

Üóêçóç 15. ÕëéêÜ - åîáñôþìáôá äéêôýïõ ðåðéåóìýíïõ áýñá êáé ðíåõìáôéêýò óõóêåõýò ÕëéêÜ - åîáñôþìáôá äéêôýïõ ðåðéåóìýíïõ áýñá êáé ðíåõìáôéêýò óõóêåõýò Óôü ïé ôçò Üóêçóçò äéüñêåéá Üóêçóçò: 6 äéäáêôéêýò þñåò Óôï ôýëïò ôçò Üóêçóçò ïé ìáèçôýò èá åßíáé éêáíïß: é íá áíáãíùñßæïõí ôá åîáñôþìáôá

Διαβάστε περισσότερα

4.5 ÁóêÞóåéò çìéêþò éóïññïðßáò ìå åðßäñáóç óôç èýóç éóïññïðßáò

4.5 ÁóêÞóåéò çìéêþò éóïññïðßáò ìå åðßäñáóç óôç èýóç éóïññïðßáò 4.5 ÁóêÞóåéò çìéêþò éóïññïðßáò ìå åðßäñáóç óôç èýóç éóïññïðßáò Óôéò áóêþóåéò ìå åðßäñáóç óôç èýóç ìéáò éóïññïðßáò ãßíåôáé áíáöïñü óå ðåñéóóüôåñåò áðü ìßá èýóåéò éóïññïðßáò. Ïé èýóåéò éóïññïðßáò åßíáé äéáäï

Διαβάστε περισσότερα

ÐïëëÝò åôáéñßåò ðñïóöýñïõí õðçñåóßåò

ÐïëëÝò åôáéñßåò ðñïóöýñïõí õðçñåóßåò Ferral Ferral Της Πηνελόπης Λεονταρά Σήμανση CE: Πως γίνεται ο έλεγχος της παραγωγικής Ï êáèïñéóìüò ôïõ åëýã ïõ ðáñáãùãþò óå Ýíá êáôáóêåõáóôéêü óýìöùíá ìå ôéò ôå íéêýò ðñïäéáãñáöýò ãéá ôá êïõöþìáôá, óôçí

Διαβάστε περισσότερα

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ.

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ µ : 430223-151 2007 Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ µ µ µ ÐñïóèÞêç ìéáò ìïíüäáò ìíþìçò óôçí õðïäï Þ ìïíüäáò åðýêôáóçò ìíþìçò......................

Διαβάστε περισσότερα

Chi-Square Goodness-of-Fit Test*

Chi-Square Goodness-of-Fit Test* Chi-Square Goodness-of-Fit Test* Öþôçò ÓéÜííçò ÐáíåðéóôÞìéï Áèçíþí, ÔìÞìá Ìáèçìáôéêü fsiannis@mathuoagr February 6, 2009 * Áðü ôéò óçìåéþóåéò "ÓôáôéóôéêÞ Óõìðåñáóìáôïëïãßá" ôïõ Ô ÐáðáúùÜííïõ êáé ôá âéâëßá

Διαβάστε περισσότερα

Εισαγωγή. Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα και ιστορική αναδρομή

Εισαγωγή. Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα και ιστορική αναδρομή (i) Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα και ιστορική αναδρομή Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 2 / 216 (i) Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα

Διαβάστε περισσότερα

ÌÁÈÇÌÁÔÉÊÇ ËÏÃÉÊÇ Ë1 5ï ðáêýôï áóêþóåùí

ÌÁÈÇÌÁÔÉÊÇ ËÏÃÉÊÇ Ë1 5ï ðáêýôï áóêþóåùí ÌÁÈÇÌÁÔÉÊÇ ËÏÃÉÊÇ Ë1 5ï ðáêýôï áóêþóåùí ñþóôïò ÊïíáîÞò, A.M. 200416 ìðë 30-06-2005 óêçóç 1. óôù R N n ; n 1. ËÝìå üôé ç R åßíáé "áñéèìçôéêþ" áí õðüñ åé ôýðïò ö(x 1 ; : : : ; x n ) ôçò Ã1 èá ôýôïéïò ðïõ

Διαβάστε περισσότερα

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ.

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ µ : 419435-151 2007 Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ µ µ µ ÐñïóèÞêç ìïíüäáò ìíþìçò óôçí õðïäï Þ ìïíüäáò åðýêôáóçò ìíþìçò......................

Διαβάστε περισσότερα

ÁñéèìçôéêÞ ÁíÜëõóç É - ÓÅÌÖÅ Åñãáóßá 2 ìåóåò êáé åðáíáëçðôéêýò ìýèïäïé

ÁñéèìçôéêÞ ÁíÜëõóç É - ÓÅÌÖÅ Åñãáóßá 2 ìåóåò êáé åðáíáëçðôéêýò ìýèïäïé ÁñéèìçôéêÞ ÁíÜëõóç É - ÓÅÌÖÅ Åñãáóßá 2 ìåóåò êáé åðáíáëçðôéêýò ìýèïäïé Íéêüëáò ÊÜñáëçò Á/Ì : 91442 ÔìÞìá 1ï 28 Óåðôåìâñßïõ, 26 1 ìåóåò ÌÝèïäïé 1.1 Åñþôçìá 1 ñçóéìïðïéþíôáò ôçí gauss.m êáé ôçí herm5.m,

Διαβάστε περισσότερα

µµ Setup : µ 2005

µµ Setup : µ 2005 µµ Setup : 389194-152 µ 2005 µ 1 µµ Setup 2 µµ Setup 3 µµ Setup 4 µµ Setup 0DLQ ± 6H XULW\ ± 6\VWHP&RQILJXUDWLRQ ± 'LDJQRVWL V± µµ Setup ii 1 µµ Setup Ôï âïçèçôéêü ðñüãñáììá Setup óüò äßíåé ôç äõíáôüôçôá

Διαβάστε περισσότερα

ÏÑÉÁÊÇ ÔÉÌÇ ÓÕÍÁÑÔÇÓÇÓ

ÏÑÉÁÊÇ ÔÉÌÇ ÓÕÍÁÑÔÇÓÇÓ ÌÜèçìá 7 ÏÑÉÁÊÇ ÔÉÌÇ ÓÕÍÁÑÔÇÓÇÓ Óôï ìüèçìá áõôü èá äïèåß ç Ýííïéá ôïõ ïñßïõ ìéáò ðñáãìáôéêþò óõíüñôçóçò ìå ôñüðï ðñïóáñìïóìýíï óôéò áðáéôþóåéò ôùí äéáöüñùí åöáñìïãþí, ðïõ áðáéôïýíôáé óôçí åðéóôþìç ôïõ.

Διαβάστε περισσότερα

Μαθηματικά ΙΙΙ. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 15: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος Ι. Αθανάσιος Μπράτσος

Μαθηματικά ΙΙΙ. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 15: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος Ι. Αθανάσιος Μπράτσος Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας Μαθηματικά ΙΙΙ Ενότητα 15: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος Ι Αθανάσιος Μπράτσος Τμήμα Μηχανικών Ενεργειακής Τεχνολογίας

Διαβάστε περισσότερα

1.1 Ïé öõóéêïß áñéèìïß - ÄéÜôáîç öõóéêþí, Óôñïããõëïðïßçóç

1.1 Ïé öõóéêïß áñéèìïß - ÄéÜôáîç öõóéêþí, Óôñïããõëïðïßçóç 1.1 Ïé öõóéêïß áñéèìïß - ÄéÜôáîç öõóéêþí, Óôñïããõëïðïßçóç 7 1.1 Ïé öõóéêïß áñéèìïß - ÄéÜôáîç öõóéêþí, Óôñïããõëïðïßçóç Åñþ ôçóç 1 Ðïéïé áñéèìïß ïíïìüæïíôáé öõóéêïß; Ðþò ôïõò óõìâïëßæïõìå êáé ðþò ùñßæïíôáé;

Διαβάστε περισσότερα

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ.

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ µ : 419585-151 2007 Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ µ µ µ ÐñïóèÞêç ìéáò ìïíüäáò ìíþìçò óôçí õðïäï Þ ìïíüäáò åðýêôáóçò ìíþìçò......................

Διαβάστε περισσότερα

Estimation Theory Exercises*

Estimation Theory Exercises* Estimation Theory Exercises* Öþôçò ÓéÜííçò ÐáíåðéóôÞìéï Áèçíþí, ÔìÞìá Ìáèçìáôéêü fsiannis@math.uoa.gr December 22, 2009 * Áðü ôéò óçìåéþóåéò "ÓôáôéóôéêÞ Óõìðåñáóìáôïëïãßá" ôïõ Ô. ÐáðáúùÜííïõ, ôéò óçìåéþóåéò

Διαβάστε περισσότερα

ÖÅÊ 816 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ) ÏÄÇÃÉÅÓ ÐÁ ÔÇ ÓÕÌÐËÇÑÙÓÇ ÔÇÓ ÁÉÔÇÓÇÓ ÅÃÊÅÊÑÉÌÅÍÏÕ ÁÐÏÈÇÊÅÕÔÇ Ï ÇÌÁÔÙÍ 1. ÇÌÅÑÏÌÇÍÉÁ: ÁíáãñÜöåô

ÖÅÊ 816 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ) ÏÄÇÃÉÅÓ ÐÁ ÔÇ ÓÕÌÐËÇÑÙÓÇ ÔÇÓ ÁÉÔÇÓÇÓ ÅÃÊÅÊÑÉÌÅÍÏÕ ÁÐÏÈÇÊÅÕÔÇ Ï ÇÌÁÔÙÍ 1. ÇÌÅÑÏÌÇÍÉÁ: ÁíáãñÜöåô 11544 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ) ÖÅÊ 816 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ) 11545 ÏÄÇÃÉÅÓ ÐÁ ÔÇ ÓÕÌÐËÇÑÙÓÇ ÔÇÓ ÁÉÔÇÓÇÓ ÅÃÊÅÊÑÉÌÅÍÏÕ ÁÐÏÈÇÊÅÕÔÇ Ï ÇÌÁÔÙÍ 1. ÇÌÅÑÏÌÇÍÉÁ: ÁíáãñÜöåôáé

Διαβάστε περισσότερα

8.1 Ãåíéêüò äéäáêôéêüò óêïðüò

8.1 Ãåíéêüò äéäáêôéêüò óêïðüò ÅðéëïãÞ êáé åðáíüëçøç ÊåöÜëáéï 8 ÅðéëïãÞ êáé åðáíüëçøç 8.1 Ãåíéêüò äéäáêôéêüò óêïðüò Ï ãåíéêüò óêïðüò ôïõ êåöáëáßïõ åßíáé íá êáôáóôïýí éêáíïß ïé ìáèçôýò íá óõíôüóóïõí êáé íá åêôåëïýí óå äïìçìýíç ãëþóóá

Διαβάστε περισσότερα

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and alpha Language (1/5) ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language Στην alpha δεν υπάρχει main() συνάρτηση, ο κώδικας ξεκινάει την εκτέλεση από την αρχή του

Διαβάστε περισσότερα

Μαθηματικά ΙΙΙ. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 16: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος ΙΙ. Αθανάσιος Μπράτσος

Μαθηματικά ΙΙΙ. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 16: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος ΙΙ. Αθανάσιος Μπράτσος Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας Μαθηματικά ΙΙΙ Ενότητα 16: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος ΙΙ Αθανάσιος Μπράτσος Τμήμα Μηχανικών Ενεργειακής Τεχνολογίας

Διαβάστε περισσότερα

ÐÉÍÁÊÅÓ ÔÉÌÙÍ ÁÍÔÉÊÅÉÌÅÍÉÊÙÍ ÁÎÉÙÍ

ÐÉÍÁÊÅÓ ÔÉÌÙÍ ÁÍÔÉÊÅÉÌÅÍÉÊÙÍ ÁÎÉÙÍ ÕÐÏÕÑÃÅÉÏ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ÏÉÊÏÍÏÌÉÊÙÍ ÃÅÍÉÊÇ ÄÉÅÕÈÕÍÓÇ ÄÇÌÏÓÉÁÓ ÐÅÑÉÏÕÓÉÁÓ & ÅÈÍÉÊÙÍ ÊËÇÑÏÄÏÔÇÌÁÔÙÍ ÄÉÅÕÈÕÍÓÇ ÔÅ ÍÉÊÙÍ ÕÐÇÑÅÓÉÙÍ & ÓÔÅÃÁÓÇÓ ÔÌÇÌÁ ÁÍÔÉÊÅÉÌÅÍÉÊÏÕ ÐÑÏÓÄÉÏÑÉÓÌÏÕ ÖÏÑÏËÏÃÇÔÅÁÓ ÁÎÉÁÓ ÁÊÉÍÇÔÙÍ

Διαβάστε περισσότερα

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ.

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ µ : 406852-151 2006 Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ. µ 1 µ µ µ ÐñïóèÞêç ìïíüäáò ìíþìçò óôçí õðïäï Þ ìïíüäáò åðýêôáóçò ìíþìçò....................

Διαβάστε περισσότερα

ÁÑÉÈÌÇÔÉÊÇ ËÕÓÇ ÓÕÍÇÈÙÍ ÄÉÁÖÏÑÉÊÙÍ ÅÎÉÓÙÓÅÙÍ

ÁÑÉÈÌÇÔÉÊÇ ËÕÓÇ ÓÕÍÇÈÙÍ ÄÉÁÖÏÑÉÊÙÍ ÅÎÉÓÙÓÅÙÍ ÌÜèçìá 8 ÁÑÉÈÌÇÔÉÊÇ ËÕÓÇ ÓÕÍÇÈÙÍ ÄÉÁÖÏÑÉÊÙÍ ÅÎÉÓÙÓÅÙÍ 8.1 ÅéóáãùãéêÝò Ýííïéåò Åßíáé Þäç ãíùóôü óôïí áíáãíþóôç üôé ç åðßëõóç ôùí ðåñéóóüôåñùí ðñïâëçìüôùí ôùí èåôéêþí åðéóôçìþí ïäçãåß óôç ëýóç ìéáò äéáöïñéêþò

Διαβάστε περισσότερα

B i o f l o n. Ãéá åöáñìïãýò ìåôáöïñüò çìéêþí

B i o f l o n. Ãéá åöáñìïãýò ìåôáöïñüò çìéêþí B i o f l o n Ãéá åöáñìïãýò ìåôáöïñüò çìéêþí Ç åôáéñåßá Aflex, ç ïðïßá éäñýèçêå ôï 1973, Þôáí ç ðñþôç ðïõ ó åäßáóå ôïí åýêáìðôï óùëþíá PTFE ãéá ôç ìåôáöïñü çìéêþí õãñþí ðñßí áðü 35 ñüíéá. Ï åëéêïåéäþò

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση Γλώσσες Προγραμματισμού Μεταγλωττιστές Σημασιολογική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Σημασιολογικής Ανάλυσης Στατική και Δυναμική Σημασιολογία Σημασιολογικοί

Διαβάστε περισσότερα

Do Loop. Do While. Loop. Do While. Loop. Loop

Do Loop. Do While. Loop. Do While. Loop. Loop Do For Next Do For Next Do... Do Do Do While Do While Do While Years NewAmount Amount, NperCent Years = 0 NewAmount = Amount 'Áñ éêü íýï êåöüëáéï Do While (NewAmount < 2*Amount) Years = Years + 1 'ÁëëáãÞ

Διαβάστε περισσότερα

Ìáèáßíïõìå ôéò áðïäåßîåéò

Ìáèáßíïõìå ôéò áðïäåßîåéò 50. Βήµα ο Μαθαίνουµε τις αποδείξεις ã) Ùò ðñïò ôçí áñ Þ ôùí áîüíùí, áí êáé ìüíï áí Ý ïõí áíôßèåôåò óõíôåôáãìýíåò. ÄçëáäÞ: á = á êáé â = â ÂÞìá Ìáèáßíïõìå ôéò áðïäåßîåéò ä) Ùò ðñïò ôç äé ïôüìï ôçò çò êáé

Διαβάστε περισσότερα

J-Y(St)Y Ôçëåöùíéêü êáëþäéï åóùôåñéêïý þñïõ ìå èùñüêéóç êáôü VDE 0815

J-Y(St)Y Ôçëåöùíéêü êáëþäéï åóùôåñéêïý þñïõ ìå èùñüêéóç êáôü VDE 0815 J-Y(St)Y Ôçëåöùíéêü êáëþäéï åóùôåñéêïý þñïõ ìå èùñüêéóç êáôü VDE 0815 ÅÖÁÑÌÏÃÇ ñçóéìïðïéïýíôáé óå ìüíéìåò åãêáôáóôüóåéò ãéá ôç ìåôüäïóç áíáëïãéêïý Þ øçöéáêïý óþìáôïò. Ôï ðåäßï åöáñìïãþí ôïõò ðåñéëáìâüíåé

Διαβάστε περισσότερα

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 11: Διανυσματική Συνάρτηση. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 11: Διανυσματική Συνάρτηση. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας Ανώτερα Μαθηματικά Ι Ενότητα 11: Διανυσματική Συνάρτηση Αθανάσιος Μπράτσος Τμήμα Ναυπηγών Μηχανικών ΤΕ Το περιεχόμενο του μαθήματος διατίθεται

Διαβάστε περισσότερα

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Συντακτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Συντακτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Συντακτική Ανάλυση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Συντακτική Ανάλυση Το συντακτικό μιας γλώσσας καθορίζει ποιες συμβολοσειρές

Διαβάστε περισσότερα

ÅõñùðáúêÞ íùóç Áëïõìéíßïõ Ý åé äçìïóéåýóåé Ýíáí ìßíé - ïäçãü åðåîþãçóçò

ÅõñùðáúêÞ íùóç Áëïõìéíßïõ Ý åé äçìïóéåýóåé Ýíáí ìßíé - ïäçãü åðåîþãçóçò Ôå íéêü èýìáôá CE marking of curtain walling This FAECF Guidance Sheet provides an explanation to the product standard on curtain walling EN 13830 with more details for the manufacturer and reader of the

Διαβάστε περισσότερα

å) Íá âñåßôå ôï äéüóôçìá ðïõ äéáíýåé ôï êéíçôü êáôü ôï ñïíéêü äéüóôçìá áðü ôï ðñþôï Ýùò ôï Ýâäïìï äåõôåñüëåðôï ôçò êßíçóþò ôïõ.

å) Íá âñåßôå ôï äéüóôçìá ðïõ äéáíýåé ôï êéíçôü êáôü ôï ñïíéêü äéüóôçìá áðü ôï ðñþôï Ýùò ôï Ýâäïìï äåõôåñüëåðôï ôçò êßíçóþò ôïõ. ÌÁÈÇÌÁÔÉÊÁ ÃÅÍÉÊÇÓ ÐÁÉÄÅÉÁÓ Ã ËÕÊÅÉÏÕ È Å Ì Á 1 ï 3 ï Ä É Á Ã Ù Í É Ó Ì Á á êéçôü êéåßôáé ðüù óôï Üîïá x~x. Ç èýóç ôïõ êüèå ñïéêþ óôéãìþ t äßåôáé áðü ôç 3 óõüñôçóç x(t) = t 1t + 60t + 1, üðïõ ôï t ìåôñéýôáé

Διαβάστε περισσότερα

Ενότητα 7: Διαδικασιακός Προγραμματισμός

Ενότητα 7: Διαδικασιακός Προγραμματισμός Συμβολικές Γλώσσες Προγραμματισμού Ενότητα 7: Διαδικασιακός Προγραμματισμός Νικόλαος Καραμπετάκης Τμήμα Μαθηματικών Άδειες Χρήσης è Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Ðåñéå üìåíá ìå Ìéá ÌáôéÜ

Ðåñéå üìåíá ìå Ìéá ÌáôéÜ Ðåñéå üìåíá ìå Ìéá ÌáôéÜ ÅéóáãùãÞ 1 ÌÅÑÏÓ 1 Ìå Ìéá ÌáôéÜ 5 ÊÅÖÁËÁÉÏ 1 Îåêßíçìá ìå ôçí C 7 «Ðëçêôñïëüãçóç & ÅêôÝëåóç» 1 25 ÊÅÖÁËÁÉÏ 2 Ôá ÓõóôáôéêÜ Åíüò ÐñïãñÜììáôïò C 29 ÊÅÖÁËÁÉÏ 3 ÁðïèÞêåõóç Ðëçñïöïñéþí:

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ Τελικές Εξετάσεις Απαντήστε όλα τα θέματα του Μέρους Α και ένα θέμα από

Διαβάστε περισσότερα

Μεταγλωττιστές. Συντακτικός Αναλυτής Κατασκευή Πίνακα Συμβόλων (ΠΣ) Εργαστήριο 7. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Μεταγλωττιστές. Συντακτικός Αναλυτής Κατασκευή Πίνακα Συμβόλων (ΠΣ) Εργαστήριο 7. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 7 Συντακτικός Αναλυτής Κατασκευή Πίνακα Συμβόλων (ΠΣ) Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Πίνακας Συμβόλων Συγκεντρώνει πληροφορίες για τα ονόματα

Διαβάστε περισσότερα

ÓÕÍÁÑÔÇÓÅÉÓ ÐÏËËÙÍ ÌÅÔÁÂËÇÔÙÍ

ÓÕÍÁÑÔÇÓÅÉÓ ÐÏËËÙÍ ÌÅÔÁÂËÇÔÙÍ 66 ÊåöÜëáéï 3 ÓÕÍÁÑÔÇÓÅÉÓ ÐÏËËÙÍ ÌÅÔÁÂËÇÔÙÍ 3.1 ÅéóáãùãÞ óôù üôé S åßíáé Ýíá óýíïëï áðü óçìåßá óôïí n äéüóôáôï þñï. Ìéá óõíüñôçóç (ðïõ ïñßæåôáé óôï S) åßíáé ìéá ó Ýóç ç ïðïßá ó åôßæåé êüèå óôïé åßï ôïõ

Διαβάστε περισσότερα

Προτεινόμενα θέματα Πανελλαδικών εξετάσεων. Χημεία Θετικής Κατεύθυνσης ΕΛΛΗΝΟΕΚΔΟΤΙΚΗ

Προτεινόμενα θέματα Πανελλαδικών εξετάσεων. Χημεία Θετικής Κατεύθυνσης ΕΛΛΗΝΟΕΚΔΟΤΙΚΗ Προτεινόμενα θέματα Πανελλαδικών εξετάσεων Χημεία Θετικής Κατεύθυνσης 2o ΕΛΛΗΝΟΕΚΔΟΤΙΚΗ 1.1. ÓùóôÞ áðüíôçóç åßíáé ç Ä. ΘΕΜΑ 1ο 1.2. ñçóéìïðïéïýìå ôçí êáôáíïìþ ôùí çëåêôñïíßùí óå áôïìéêü ôñï éáêü óýìöùíá

Διαβάστε περισσότερα

Union of Pure and Applied Chemistry).

Union of Pure and Applied Chemistry). .5 Ç ãëþóóá ôçò çìåßáò Ãñáö çìéêþí ôýðùí êáé åéóáãùã óôçí ïíïìáôïëïãßá ôùí áíüñãáíùí åíþóåùí..5.1 ÃåíéêÜ. Ç çìåßá Ý åé ôç äéê ôçò äéåèí ãëþóóá, ç ïðïßá êáèïñßæåôáé áðü êáíüíåò ðïõ Ý ïõí ðñïôáèåß êáé ðñïôåßíïíôáé

Διαβάστε περισσότερα

1. i) ÊÜèå üñïò ðñïêýðôåé áðü ôçí ðñüóèåóç ôïõ óôáèåñïý áñéèìïý 3 óôïí ðñïçãïýìåíï, ïðüôå Ý ïõìå áñéèìçôéêþ ðñüïäï á í ìå ðñþôï üñï

1. i) ÊÜèå üñïò ðñïêýðôåé áðü ôçí ðñüóèåóç ôïõ óôáèåñïý áñéèìïý 3 óôïí ðñïçãïýìåíï, ïðüôå Ý ïõìå áñéèìçôéêþ ðñüïäï á í ìå ðñþôï üñï 5. ÐÑÏÏÄÏÉ 7 5. ÁñéèìçôéêÞ ðñüïäïò Á ÏìÜäá. i) ÊÜèå üñïò ðñïêýðôåé áðü ôçí ðñüóèåóç ôïõ óôáèåñïý áñéèìïý 3 óôïí ðñïçãïýìåíï, ïðüôå Ý ïõìå áñéèìçôéêþ ðñüïäï á í ìå ðñþôï üñï á = 7 êáé äéáöïñü ù = 3. Óõíåðþò

Διαβάστε περισσότερα