Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zurückweisen von "zu wenig geklammerten" PropFormulas #224

Closed
jvoigtlaender opened this issue Nov 19, 2024 · 10 comments
Closed

Zurückweisen von "zu wenig geklammerten" PropFormulas #224

jvoigtlaender opened this issue Nov 19, 2024 · 10 comments

Comments

@jvoigtlaender
Copy link
Member

jvoigtlaender commented Nov 19, 2024

Vielleicht sollte für den Moment die Erwartung eher sein:
fromRight (Atomic 'X') $ parse parser "" "A /\\ B => C"
führt zu Error?

Originally posted by @jvoigtlaender in #150 (comment)

@jvoigtlaender
Copy link
Member Author

Das Issue dort wurde "completed", aber das betraf einen anderen Aspekt als den aus dem Kommentar? @owestphal

Also dieses A /\ B => C wird weiterhin akzeptiert, obwohl es im Kontext der Vorlesung "nicht erlaubt" ist?

@jvoigtlaender
Copy link
Member Author

Ein temporärer Fix, auch im Kontext der "Konzert-Aufgabe" könnte das ebenso bereits in besagtem Issue Gesagte sein:

(Es bestünde natürlich die Möglichkeit, es dann nochmal als (A /\\ B) => C auszugeben, als Teil der Syntax-Vorabprüfung, und Studierende könnten dann merken, dass sie Klammern nutzen müssten, wenn sie mit A /\\ B => C eigentlich A /\\ (B => C) meinten.)

@jvoigtlaender
Copy link
Member Author

Als was wird denn A /\ B => C eigentlich konkret geparset? Kommt da ein PropFormula-Wert mit oder ohne Brackets-Konstruktor raus?

@patritzenfeld
Copy link
Member

(Assoc Impl (Assoc And (Atomic 'A') (Atomic 'B')) (Atomic 'C'))

Also ohne Klammern.

@jvoigtlaender
Copy link
Member Author

Okay, das ist inhaltlich ja irgendwie falsch, unter anderem da Impl gar kein assoziativer Operator ist. Da muss also geeignet drumrumgearbeitet werden.

@jvoigtlaender
Copy link
Member Author

Um eine PropFormula mit "zusätzlichen" Klammern auszugeben, könnte wohl

toTree (Atomic c) = Leaf c
toTree (Neg p) = Not $ toTree p
toTree (Brackets p) = toTree p
toTree (Assoc op l r) = Binary op (toTree l) (toTree r)
verwendet werden, dann display oder simplestDisplay.

@jvoigtlaender
Copy link
Member Author

jvoigtlaender commented Nov 19, 2024

Wenn nötig, ließe sich damit wohl auch Herausfinden/Zurückweisen, wenn Studierende Klammern weggelassen haben, die im Kontext von Komedia nicht weggelassen werden dürften:

  • String als PropFormula parsen
  • toTree auf die PropFormula anwenden
  • simplestDisplay auf den SynTree anwenden
  • mit originalem String vergleichen (bzw., um Unterschiede im Whitespace wegzunormalisieren, mit dem show der PropFormula)

@owestphal
Copy link
Member

Das Issue dort wurde "completed", aber das betraf einen anderen Aspekt als den aus dem Kommentar? @owestphal

Also dieses A /\ B => C wird weiterhin akzeptiert, obwohl es im Kontext der Vorlesung "nicht erlaubt" ist?

Die Änderungen, mit denen ich die Issue geschlossen hatte, haben einfach die vorher nicht korrekt berücksichtigten Textbuch Präzedenzen korregiert. Das Verhalten ist also zu dem geworden was auch im ersten Kommentar aus #150 steht:

fromRight (Atomic 'X') $ parse parser "" "A /\\ B => C"

Erwartung: Assoc Impl (Assoc And (Atomic 'A') (Atomic 'B')) (Atomic 'C')

Tatsächliches Resultat: Assoc And (Atomic 'A') (Assoc Impl (Atomic 'B') (Atomic 'C')) (enspricht A /\\ (B => C))

Jetzt kommt bei Eingabe von "A /\ B => C" das zu erwartende (A /\ B) => C raus.
Eine spezielle Behandlung die zu einem Fehler führt hatte ich da nicht eingebaut, insofern ist der Teil quasi offen geblieben.

@jvoigtlaender
Copy link
Member Author

Jetzt kommt bei Eingabe von "A /\ B => C" das zu erwartende (A /\ B) => C raus.

Nicht ganz, da in PropFormula die Klammern um A /\ B explizit mittels Brackets-Konstruktor zu repräsentieren wären, aber tatsächlich ein PropFormula-Wert ohne Brackets rauskommt.

@jvoigtlaender
Copy link
Member Author

Ersetzt durch #221 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants