<strong>Diplomarbeit</strong>: Modulares System Anhang Anhang program block . PROGRAM ident ; block CONST ident VAR PROCEDURE FUNCTION statement factor ident number ( express ) GET ( express , express ) Abbildung A.1 - Syntaxgraphen in PL0 ; , ident statement ident := express CALL ; , ident = number ident ; block ; IF condition THEN statement ELSE statement WHILE condition DO statement BEGIN statement END ? ident ! express ; PUT ( express , express , express ) condition ODD express express express term factor + - * / = # < >= term + - 26.07.2004 Seite 72 von 85
<strong>Diplomarbeit</strong>: Modulares System Anhang /* Zeichenklassenvektor */ static char vZKI[256]= /* 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F */ /*--------------------------------------------------------------------------------*/ /* 0 */ {7,7, 7,7,7,7,7,7,7,7,7,7,7,7, 7,7, // /* 1 */ 7,7, 7,7,7,7,7,7,7,7,7,7,7,7, 7,7, // /* 2 */ 7,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0, // ! " # $ % & ' ( ) * + , - . / /* 3 */ 1,1, 1,1,1,1,1,1,1,1,3,0,5,4, 6,0, // 0 1 2 3 4 5 6 7 8 9 : ; < = > ? /* 4 */ 0,2, 2,2,2,2,2,2,2,2,2,2,2,2, 2,2, // @ A B C D E F G H I J K L M N O /* 5 */ 2,2, 2,2,2,2,2,2,2,2,2,0,0,0, 0,0, // P Q R S T U V W X Y Z [ \ ] ^ _ /* 6 */ 0,2, 2,2,2,2,2,2,2,2,2,2,2,2, 2,2, // ` a b c d e f g h i j k l m n o /* 7 */ 2,2, 2,2,2,2,2,2,2,2,2,8,0,9, 0,0, // p q r s t u v w x y z { | } ~ /* 8 */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0, // € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž /* 9 */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0, // ‘ ’ “ ” • - — ˜ š › œ ž Ÿ /* A */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0, // ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ /* B */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0, // ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ /* C */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0, // À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï /* D */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0, // Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß /* E */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0, // à á â ã ä å æ ç è é ê ë ì í î ï /* F */ 0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0}; // ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ /* Schaltmatrix des Automaten */ static char vSMatrix[9][12]= /* So Zi Bu ':' '=' '' Space { } . " */ /*-------0--------1-------2-------3-------4-------5--------6-------7-------8------- 9-------10-------11------*/ /* 0 */ {0+ifslb, 1+ifsl, 2+ifgl, 3+ifsl, 0+ifslb, 4+ifsl, 5+ifsl, 0+ifl, 6+ifl, 0+ifslb, 0+ifslb, 8+ifl, // normal /* 1 */ 0+ifb, 1+ifsl, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 7+ifsl, 0+ifb, // oNumber /* 2 */ 0+ifb, 2+ifsl, 2+ifgl, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, // char /* 3 */ 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifslb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, // : /* 4 */ 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifslb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, // < /* 5 */ 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifslb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, // > /* 6 */ 6+ifsl, 6+ifsl, 6+ifsl, 6+ifsl, 6+ifsl, 6+ifsl, 6+ifsl, 6+ifsl, 6+ifsl,0+iflb, 6+ifsl, 6+ifsl, // {} /* 7 */ 0+ifb, 7+ifsl, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, 0+ifb, // fNumber /* 8 */ 8+ifsl, 8+ifsl, 8+ifsl, 8+ifsl, 8+ifsl, 8+ifsl, 8+ifsl, 8+ifsl, 8+ifsl,8+ifsl, 8+ifsl, 0+iflb // "" }; // Symboltabelle const int vWSymbCount=19; char* vWSymb[vWSymbCount]={"BEGIN", "CALL", "CONST", "DO", "ELSE", "END", "IF", "ODD", "PROCEDURE", "FUNCTION", "THEN", "VAR", "WHILE", "PROGRAM", "INTEGER", "FLOAT", "STRING", "GET", "PUT"}; Abbildung A.2 - Tabellen der lexikalischen Analyse in PL0 26.07.2004 Seite 73 von 85