2009-04-08 57 views

回答

8

我想你可以到這個使用--name-prefix選項野牛,以及--prefix選項的Flex。

在這兩種情況下,它們允許您替換使用您自己選擇的前綴生成的函數上使用的默認「yy」前綴。

+0

我使用lex和yacc,但是如果我們更改爲免費版本,這很好。謝謝戴夫 – 2009-04-08 14:03:34

+0

啊,但你確實提到他們在你的標籤... – Alnitak 2009-04-08 15:04:31

+0

真的。如果他們只能使用flex和bison,那麼它才能工作。我們將會改變使用它們。 – 2009-04-09 09:28:58

2

是的,這是可能的。

yacc應該有一個-p標誌,你可以指定一個不同的前綴而不是默認的「yy」。

由lex conatins生成的文件只有一個符號在外部使用:yylex。例如,您可以使用-Dyylex = mySecondLex進行編譯。

1

不是一個直接的答案,但您可能需要考慮使用更通用的方法,例如GoldParser,它允許您使用通用引擎處理由語法生成的LALR和DFA表格。

通過這種方法,您可以在同一個應用程序中使用任意數量的不同語法,並且更改語法不會創建新的源代碼,而只是新的表格文件(可能包含爲嵌入式資源或類似文件)。

1

標準lex和yacc沒有辦法做到這一點。 Flex和Bison也是如此,就像其他一些實現一樣。既然你說(在評論中)你沒有使用flex和bison,你使用哪個版本的lex和yacc

相關問題