Tabelle IDS

Es gibt ein Problem mit dem Compiler, der in seinem aktuellen Zustand: er tut nichts für die Variable, wenn wir es erklären. So dass der Compiler ganz ruhig wird Speicher für mehrere Variablen mit dem gleichen Namen. Sie können leicht überprüfen, indem Sie eine Zeichenfolge Typ Pvavavabe eingeben. Hier haben wir angekündigt, die Variable A drei mal. Wie Sie können […]

Boolean Logik

Der nächste Schritt sollte auch Ihnen vertraut. Wir müssen hinzufügen, Boolesche Ausdrücke und Operatoren Beziehungen. Wieder, da arbeiteten wir mit Ihnen nicht einmal, ich werde nicht im Detail zu zerlegen, außer Momente, in denen Sie sich unterscheiden von dem, was wir vorher getan haben. Wieder, Wir werden nicht einfach aus anderen Dateien da kopieren […]

Kontrollstrukturen

Wir sind fast zu Hause. Mit Boolesche Ausdrücke einfach hinzufügen Kontrollstrukturen. Für TINY lösen wir nur zwei von Ihnen, IF und WHILE: <if> ::= IF <bool-expression> <block> [ ELSE <block>] ENDIF <while> ::= WHILE <bool-expression> <block> ENDWHILE lassen Sie wieder mich Entscheidung erklären, stillschweigend in dieser Syntax, das unterscheidet sich stark von der Syntax der C-oder Pascal. In […]

Machbar Genehmigung

Zu dieser Zeit können wir erzeugen eine leere Programm, das hat mehrere deklarierten Variablen und vielleicht initialisierten. Aber solange wir nicht генерировали keiner Zeile durchführbare Code. Ob Sie glauben oder nicht, aber wir haben fast Fit für den Einsatz der Compiler! Fehlt nur durchführbar Code, das muss sich im Hauptprogramm. Aber dieser Code ist der einzige Vorgang […]

Initialisierer

Während wir arbeiteten mit anzeigen von Daten, mich gestört hat ist die eine Sache – das, dass Pascal nicht erlaubt initialisieren Daten in der Anzeige. Diese Möglichkeit ist zugegebenermaßen eine Art Overkill, und es kann nicht sein, in der Sprache, die als minimal Sprache. Aber es ist auch so einfach hinzufügen, was wäre eine Schande, es nicht zu tun. BNF wird: […]

Anzeigen und IDS

Es sieht ziemlich gut, aber wir erzeugen nur eine leere Programm. Ein echter Assembler ausgeben soll der Richtlinie Assembler für die Verteilung der Speicher für die Variablen. Es ist Zeit, wirklich etwas Code. Mit einem kleinen zusätzlichen Code einfach im Verfahren Decl. Ändern Sie diese wie folgt: Analysieren Sie und übersetzen Sie eine Datendeklaration Prozedur Decl; var Name: char; begin […]

Vorbereitung

Vor vielen Jahren gab es Sprachen, genannte Tiny BASIC, Tiny Pascal und Tiny C, jeder von denen war eine Teilmenge Ihrer vollen übergeordneten Sprache. Tiny BASIC, zum Beispiel, hatte nur односимвольные die Namen der Variablen und Globale Variablen. Er unterstützte die nur eine Art von Daten. Klingt vertraut? Zu diesem Zeitpunkt haben wir fast alle Instrumente, erforderlich, einen solchen Compiler erstellen […]

Anzeigen von Prozeduren/Funktionen

Offensichtlich im nächsten Schritt müssen Sie entscheiden, was verstehen wir unter der Anzeige. Ich beabsichtige, haben zwei Arten von anzeigen: Variablen und Prozeduren/Funktionen. Auf der oberen Ebene sind nur Globale anzeigen, genau wie in C. Nun, hier werden nur die anzeigen von Variablen, erkennbar Schlüsselwort VAR (kurz “v”). <top-level decls> ::= ( <data declaration> )* <data declaration> ::= […]

Anzeigen

BNF für anzeigen in Pascal solche: <declarations> ::= ( <label list> | <constant list> | <type list> | <variable list> | <procedure> | <function> )* (Beachten Sie, dass ich mehr als die liberale Definition, verwendet in Turbo Pascal. In der Definition von Standard-Pascal jedes dieser Teile sollte Folgen, die in einer bestimmten Reihenfolge in Bezug auf andere). Als übliche lassen […]

Die Struktur Der Si

Die Sprache C ist eine ganz andere Frage, wie Sie sehen werden. Bücher über C umfassen selten BNF Bestimmung der Sprache. Vielleicht die Tatsache,, dass diese Sprache ist sehr schwierig zu beschreiben, in der BNF. Einer der Gründe, dass ich zeige Ihnen jetzt diese Strukturen in der Tatsache, dass ich kann, um Sie zu beeindrucken, zwei Tatsachen: 1. Die Definition der Sprache bestimmt die Struktur des Compilers. Dass […]