Dynamische Regeln zur Laufzeit zu aktualisieren
Frage
Wenn Sie einen AT-Befehl sendet es normalerweise von \ r \ n beendet ist, aber in der Tat, diese sind wirklich zwei 'Register Variablen' S3 und S4.
Standardmäßig S3 == '\ r' und S4 == '\ n', aber der Benutzer kann diese zur Laufzeit mit dem Befehl ändern ATSx =
Wie kann ich damit umgehen in meine Antlr Lexer / Parser?
Jeder Befehl hat die Form AT [Parameter] S3S4, wie kann ich damit umgehen, dass, wenn der Benutzer ändert den Wert von S3 oder S4?
Vielen Dank im Voraus für jede Hilfe ...
Lösung
Nein, gibt es keine solche Option dynamisch AFAIK lexer- oder Parser-Regeln zu ändern. Natürlich gibt es Workarounds möglich wie neu zu erstellen, die Lexer / Parser beim Ändern Registervariablen ist, aber es wird nicht schön sein, ich denke ...
Bearbeiten
mawg schrieb
neu zu erstellen, die lexr & poarser (na ja, Lexer nur, ich denke) - könnte man auf dem leaborate
Umschreiben der ursprüngliche Grammatikdatei (nur die Lexer Regeln, wie Sie richtig erwähnen) und im laufenden Betrieb neu zu kompilieren. Siehe: http://java.sun.com/ JavaSE / 6 / docs / api / javax / tools / JavaCompiler.html