Dinamicamente aggiornare le norme in fase di esecuzione
Domanda
Quando si invia un comando AT è normalmente terminato da \ r \ n, ma, in realtà, questi sono davvero due 'registrare variabili' S3 e S4.
Per impostazione predefinita S3 == '\ r' e S4 == '\ n', ma l'utente può cambiare queste in fase di esecuzione con il comando ATSx =
Come posso gestire questo nel mio Antlr lexer / parser?
Ogni comando ha la forma AT [parametri] S3S4, come posso gestire che, se l'utente cambia il valore di S3 o S4?
Grazie in anticipo per qualsiasi aiuto ...
Soluzione
No, non non c'è alcuna possibilità di cambiare dinamicamente parser-regole lexer- o per quanto ne so. Naturalmente, ci sono work-around possibile, come ricreare il lexer / parser sulla modifica delle variabili di registro, ma non sarà abbastanza, immagino ...
Modifica
ha scritto mawg
ricreare l'lexr & poarser (beh, lexer solo, immagino) -? Potrebbe leaborate su quel
Riscrivere il file di grammatica originale (solo le regole lexer, come si parla correttamente) e ricompilata al volo. Vedere: http://java.sun.com/ JavaSE / 6 / docs / api / javax / tools / JavaCompiler.html