Vorschläge zur automatischen Vervollständigung durch Analysefehler

9

Ich schreibe einen Parser für einen benutzerdefinierten Jupiter-Kernel mit megaparsec. Ich konnte den Parser auch für die Vervollständigung verwenden: Die benutzerdefinierte Fehlermeldung, die von der megaparsec-Bibliothek generiert wurde, wird in die Liste der erwarteten Symbole umgewandelt. Auf diese Weise passt sich die Komplettierung automatisch an, wenn ich den Parser ändere. Was toll ist.

Das Einzige, was ich kämpfe, ist, wie man Informationen von den optionalen Parsern erhält. Das minimale Beispiel, das zeigt, was ich erreichen möchte, ist folgendes:

%Vor%

Im ersten Fall schlägt der Parser fehl und ich erhalte die Liste aller Fehler von allen Alternativen. Idealerweise möchte ich im zweiten Fall auch den Fehler des fehlerhaften optionalen Parsers sehen.

Dieses Beispiel kann einfach gelöst werden, indem option entfernt wird und zwei Zweige mit <|> erstellt werden: eins mit Option und das andere ohne. Im tatsächlichen Fall ist der optionale Teil jedoch ein Permutationsparser, der aus mehreren optionalen Teilen besteht, so dass ein solcher Trick nicht durchführbar ist.

    
ttylec 19.10.2017, 12:05
quelle

0 Antworten

Tags und Links