Compiler ist eine Software, die ein in Hochsprache (Quellsprache) geschriebenes Programm in Niedersprache (Objekt-/Ziel-/Maschinensprache) umwandelt. 

  • Cross-Compiler , der auf einer Maschine „A“ läuft und einen Code für eine andere Maschine „B“ erzeugt. Es ist in der Lage, Code für eine andere Plattform als die zu erstellen, auf der der Compiler läuft.
  • Source-to-Source-Compiler oder Transcompiler oder Transpiler ist ein Compiler, der in einer Programmiersprache geschriebenen Quellcode in Quellcode einer anderen Programmiersprache übersetzt.

Sprachverarbeitungssysteme (mit Compiler) – 
Wir wissen, dass ein Computer eine logische Zusammenstellung von Software und Hardware ist. Die Hardware kennt eine Sprache, die für uns schwer zu verstehen ist, folglich neigen wir dazu, Programme in Hochsprache zu schreiben, die für uns viel weniger kompliziert zu verstehen und in Gedanken zu behalten ist. Jetzt durchlaufen diese Programme eine Reihe von Transformationen, damit sie problemlos von Maschinen verwendet werden können. Hier kommen Sprachverfahrenssysteme ins Spiel. 
 

  • Hochsprache – Wenn ein Programm #define oder #include Direktiven wie #include oder #define enthält, wird es HLL genannt. Sie sind näher am Menschen, aber weit entfernt von Maschinen. Diese (#)-Tags werden Präprozessordirektiven genannt. Sie weisen den Vorprozessor an, was zu tun ist.
  • Vorprozessor – Der Vorprozessor entfernt alle #include-Anweisungen, indem er die Dateien mit der Bezeichnung Dateieinschluss und alle #define-Anweisungen mithilfe der Makroerweiterung einschließt. Es führt Dateieinbindung, Erweiterung, Makroverarbeitung usw. durch.
  • Assemblersprache – Es ist weder in binärer Form noch auf hohem Niveau. Es ist ein Zwischenzustand, der eine Kombination aus Maschinenanweisungen und einigen anderen nützlichen Daten ist, die für die Ausführung benötigt werden.
  • Assembler – Für jede Plattform (Hardware + Betriebssystem) haben wir einen Assembler. Sie sind nicht universell, da wir für jede Plattform eine haben. Die Ausgabe von Assembler wird als Objektdatei bezeichnet. Es übersetzt Assemblersprache in Maschinencode.
  • Interpreter – Ein Interpreter konvertiert Hochsprache in Maschinensprache auf niedriger Ebene, genau wie ein Compiler. Aber sie unterscheiden sich in der Art, wie sie die Eingabe lesen. Der Compiler liest in einem Rutsch die Eingaben, führt die Verarbeitung durch und führt den Quellcode aus, während der Interpreter das Gleiche Zeile für Zeile tut. Der Compiler scannt das gesamte Programm und übersetzt es als Ganzes in Maschinencode, während ein Interpreter das Programm Anweisung für Anweisung übersetzt. Interpretierte Programme sind normalerweise langsamer als kompilierte.
  • Verschiebbarer Maschinencode – Er kann an jeder Stelle geladen und ausgeführt werden. Die Adresse innerhalb des Programms wird so sein, dass sie für die Programmbewegung mitwirkt.
  • Loader/Linker – Er wandelt den verschiebbaren Code in absoluten Code um und versucht, das Programm auszuführen, was zu einem laufenden Programm oder einer Fehlermeldung führt (oder manchmal kann beides passieren). Linker lädt eine Vielzahl von Objektdateien in eine einzige Datei, um sie ausführbar zu machen. Dann lädt der Loader es in den Speicher und führt es aus.

Phasen eines Compilers – 
Es gibt zwei Hauptphasen der Kompilierung, die wiederum viele Teile haben. Jeder von ihnen bezieht Input aus dem Output der vorherigen Ebene und arbeitet auf koordinierte Weise. 
 

Analysephase – Aus dem gegebenen Quellcode wird eine Zwischendarstellung erstellt: 
 

  1. Lexikalischer Analysator
  2. Syntaxanalysator
  3. Semantischer Analysator
  4. Zwischencode-Generator

Der lexikalische Analysator unterteilt das Programm in „Token“, der Syntaxanalysator erkennt „Sätze“ im Programm anhand der Syntax der Sprache und der semantische Analysator überprüft die statische Semantik jedes Konstrukts. Der Intermediate Code Generator generiert „abstrakten“ Code. 
Synthesephase – Aus der Zwischendarstellung wird ein äquivalentes Zielprogramm erstellt. Es hat zwei Teile: 
 

  1. Code-Optimierer
  2. Code Generator

Der Code Optimizer optimiert den abstrakten Code, und der finale Code Generator übersetzt den abstrakten Zwischencode in spezifische Maschinenanweisungen. 

Fragen zur GATE CS-Ecke 

Das Üben der folgenden Fragen hilft Ihnen, Ihr Wissen zu testen. Alle Fragen wurden in den vergangenen Jahren in GATE oder in GATE Mock Tests gestellt. Es wird dringend empfohlen, sie zu üben. 
 

  1. GATE CS 2011, Frage 1
  2. GATE CS 2011, Frage 19
  3. GATE CS 2009, Frage 17
  4. GATE CS 1998, Frage 27
  5. GATE CS 2008, Frage 85
  6. GATE CS 1997, Frage 8
  7. GATE CS 2014 (Set 3), Frage 65
  8. GATE CS 2015 (Set 2), Frage 29

Referenzen –  
Einführung in das Kompilieren – viden.io  
slideshare 

Lernen Sie alle GATE CS-Konzepte mit kostenlosen Live-Kursen auf unserem YouTube-Kanal kennen.