Διεκπεραιωτές – Μεταφραστές
description
Transcript of Διεκπεραιωτές – Μεταφραστές
-
Compilers Translators
, 06 2005 , 11
-
, , .
T ( ) .
-
COMPILERS TRANSLATORS ( )
.
, (loop) - - , .
-
Compilers Translators , :H (Lexical analysis) .
H (Syntactical analysis) .
, (Code genertion) , , H. Y.
-
(..) .
:
(grammar syntax),
T (semantics)- (meaning)
-
:
(grammar) (syntax)
(mening) (semantics).
-
To , , '', , ' '.
-
..., , ... FORTRN ( BSIC) :
=B+C
. :
=+-)5.6.7
, .
-
BACKUS-NAUR Backus-Naur Form (BNF) , ., BNF () ::= , - . (recursion), number .TA: : (digit) : :=0|1|2|3|4|5|6|7|8|9 (letter) ::=|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
: 0 1 2 .. . 9 , ; : .. . .
-
:
:
:=
:
:=
, HGK123N 135GKL123N, .
-
, BNF ( ): :=|
: , .
-
, ( ), (recognition tree), . Parsing ( - ).
-
.. 4338 (to be parsed) : ,
:=
-
, , . , .
.
: .. ALGOL68 (syntax) (semantics) .
-
(LEXICAL ANALYSIS)
-
- - , - ( ) , PASCAL ( ; )... : var n,c : integer ;
.
-
, ( ... Pascal):
program average;var n,c: integer: x,y: real; begin read(n); x=0; for c: 1 to n dobegin read(y); if y49.25then writeln (y, 'IS OUT OF RANGE') else x:=x+yend;writeln('AVERAGE=, x/n)end.
-
, : , , , IF, THEN, ELSE, END . , . COMPILER , ., : 15, 0, 771, 5.54367 . (strings) (quote marks) - .-, , , .
-
(), ( ).
-
(number table). (string table), (token table), , tokens , , (1, 2, 3 4) () tokens
-
1, , Pascal, . Pascal :
-1
orintegerrealwritelnsincossqrtRead2526272829303132
-
, 2 (number table) Token (pointer) . .. , :-2
To token (2,3) 3.5
-
, 3 (string table) :-3
To token (3,2) "AVERAGE ="
StringLocation12TableValueIS OUT OF RANGEAVERAGE=
-
() , 4 (nametable) :
-4
To token (4,4) 'x' , .
Name 12345TableAVERAGEncxy
-
Token token, , , , . , token :
-
, ( ... Pascal):
program average; var n,c: integer; ! n x,y: real; ! 3.5 begin read(n); x=0; ! 49.25for c: 1 to n dobegin read(y); if y49.25then writeln (y, 'IS OUT OF RANGE') else x:=x+yend;writeln('AVERAGE=' ,x/n)end.
1 2 3 4
-
compiler program end. TokenTo 47o Token 2 4 49.25, 53 Token 3 1 strings IS OUT OF RANGE
-
, 13, 37, 41, 45, 51 60, Token 4 5 , ( ) , . , , strings Tokens