Skip to content

toHartel/coba-2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Übungsblatt 2

Generelles

Diese beiden Aufgaben dienen dem Einstieg in die Zerlegung von Text mit der logos crate. Sie implementieren die lexikalische Analyse für unseren Praktikumsinterpreter der Sprache C1.

Allgemeine Hinweise

Für diese und alle folgenden Praktikumsaufgaben gilt, dass Einsendungen, die in der jeweils mitgegebenen Testumgebung nicht laufen, Punktabzug erhalten! Das beinhaltet insbesondere alle Programme, die sich nicht fehlerfrei kompilieren lassen. Da Cargo für die Ausführung verantwortlich ist, sollte das Projekt bei Ihnen am Ende mit cargo test ohne Fehler und Warnungen durchlaufen.

Abgabemodus

Die Lösung ist in einem eigenen Git-Repository abzugeben. Sie können in ihrer Lösung jedoch beliebige Hilfstypen und Module selbst definieren. Die grundlegende Struktur des hier mitgegebenen Templates sollte jedoch nicht verändert werden.

Zur Lösung der Aufgaben steht für Sie dieses Repository mit

zur Verfügung.

Sie können die Implementierung mit cargo test prüfen. Mit cargo test -- --nocapture werden Konsolenausgaben auch bei korrekten Tests angezeigt.

Aufgabe 1 (50 Punkte)

Kurzbeschreibung

Implementieren Sie mithilfe von logos einen Scanner, der in einem Eingabestrom bzw. in einer Eingabedatei die Token der Sprache C1 erkennt.

Aufgabenstellung

Mittels logos sollen sie einen Scanner implementieren, der aus einem Eingabestrom die Token der Sprache C1 extrahiert.

Die Lexik der Sprache C1 befindet sich hier. Zusätzlich sind folgende Punkte zu beachten:

  • die Implementation befindet sich in der Datei c1
  • Whitespaces (Leerzeichen, Tabulatoren, Zeilenenden) sollen vom Scanner ignoriert werden
  • C- (/* */) und C++- (//) Kommentare sollen überlesen werden
  • alle nicht in C1 erlaubten Zeichen (etwa "&") sollen zur Rückgabe der Error Variante führen
  • wenn Sie den Scanner auf das mitgelieferte C1-Beispielprogramm demorgan.c1 ansetzen, sollte cargo test -- --nocapture die in demorgan_tokens stehende Ausgabe erzeugen

Aufgabe 2 (50 Punkte)

Kurzbeschreibung

Implementieren Sie mit Hilfe von logos einen Scanner, der in einem Eingabestrom bzw. aus einer Eingabedatei URLs und damit verbundene Linkbeschreibungen extrahiert.

Aufgabenstellung

Der zweite zu implementierende Scanner soll mittels logos aus einem Eingabestrom im xhtml-Format die URLs und die Linktexte extrahieren und ausgeben.

Zur Vereinfachung der Analyse gelten folgende Konventionen:

  • der Eingabestrom ist valides xhtml, das keinen CDATA Abschnitt enthält. Die Links haben das Format <a ... href="URL" ... >LINKTEXT, wobei im schließenden Tag nach dem 'a' null oder mehr Leerzeichen und Newlines stehen dürfen. Innerhalb des öffnenden Tags dürfen vor und nach href weitere Attribute auftreten, die überlesen werden
  • Newlines innerhalb von LINKTEXT gehören zum Linktext. D.h. alles innerhalb des a-Tags gehört zum Linktext
  • zwischen <a ...> und </a> treten keine anderen Tags auf
  • a-Tags, die kein href-Attribut beinhalten, werden komplett ignoriert
  • die Eingabe enthält keinerlei Kommentare

Wenn Sie den Scanner auf urls.html ansetzen, sollte cargo test -- --nocapture die in url_tokens stehende Ausgabe erzeugen.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •