E 'possibile avere due o più parser Lex / Yacc nella stessa applicazione
-
06-09-2019 - |
Domanda
Ho una domanda in cui ho già un parser per una sorta di grammatica e ho bisogno di aggiungere un secondo grammatica diversa per un altro scopo.
E 'possibile avere più di un?
E se sì, come si fa a ottenere un altro punto di ingresso?
Grazie
David Allan Finch
Soluzione
penso che si può a questo utilizzando l'opzione --name-prefix
a Bison, e l'opzione --prefix
a Flex.
In entrambi i casi essi permettono di sostituire il prefisso predefinito "yy
" utilizzato sulle funzioni generate con un prefisso di vostra scelta.
Altri suggerimenti
Si, è possibile.
yacc dovrebbe avere un'opzione -p, in cui è possibile specificare un prefisso diverso invece del default "aa".
Il file generato da conatins lex un solo simbolo utilizzato al di fuori: yylex. È possibile compilare con -Dyylex = mySecondLex, per esempio.
Non è una risposta diretta, ma si consiglia di considerare l'utilizzo di un approccio più generico come GoldParser , che consente di utilizzare un motore di generica per elaborare il LALR e DFA presentato generato dai vostri grammatiche.
In questo modo intorno, è possibile utilizzare qualsiasi numero di differenti grammatiche nella stessa applicazione, e cambiando la grammatica non creare nuovo codice sorgente, ma piuttosto solo i nuovi file di tabella (che potrebbero essere inclusi come risorsa incorporata o simili).
lex standard e yacc non hanno modo di farlo. Flex e Bison fanno, come fanno alcune altre implementazioni. Dal momento che lei ha detto (in un commento), che non si sta utilizzando flex e bisonti, quali versioni di lex e yacc sono si utilizza?