Frage

Ich arbeite an einer Aufgabe, in der ich einen Parser für eine Prefix-Notation-arithmetische Sprache erstellt habe.Ich muss ein Prädikat schreiben, das ein AST für einen bestimmten Wert V (d. H. Erstellen eines AST A AST A AST baut, wann immer ein Wert bewertet wird, ist v).Meine Idee war einfach genug:

generasacodicetagpre.

wo eV das Evaluet-Prädikat ist.Wenn ich das renne, bekomme ich den Fehler auf dem Titel, der diesen Teil des EV-Prädikats betreffend ist:

generasacodicetagpre.

wo beide v und n ungebunden sind.Ich habe Schwierigkeiten zu kämpfen, an weitere elegante Weise zu denken, um dies zu tun, weiß jemand, wie ich Prolog für diese beiden Variablen generieren könnte?

Ich hoffe das war verständlich :)

War es hilfreich?

Lösung

Wie posiert, erscheint Ihr Problem unlösbar, dann denke ich, dass ich das gesamte Problem anders nähern würde, und erzeugte alle Asts bis zu einer maximalen Anzahl von Token.

generasacodicetagpre.

Erträge

generasacodicetagpre.

Begrenzung der Länge der Eingabe in diesem DCG ist aufgrund der rechten rekursiven Nicht-Anschlusssumme // 1

erforderlich.

Andere Tipps

Verwenden Sie library(clpfd) .Es enthält genau diese Art von Funktionalität.Und es ist nicht erforderlich, konkrete Werte zu erzeugen, solange Sie sie nicht brauchen!

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top