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

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top