0
我有兩個lex
文件,功能分別爲xxlex()
和yylex()
,我有一個yacc
語法文件。我想要一個語法規則來總是調用xxlex()
。但是xxlex()
只被調用一次,我希望它總是被調用。我該怎麼做?lex和yacc - 結合兩個詞法分析器和一個yacc
我有兩個lex
文件,功能分別爲xxlex()
和yylex()
,我有一個yacc
語法文件。我想要一個語法規則來總是調用xxlex()
。但是xxlex()
只被調用一次,我希望它總是被調用。我該怎麼做?lex和yacc - 結合兩個詞法分析器和一個yacc
默認情況下,Yacc語法調用yylex()
來獲取新的令牌。
如果您想在某些時間撥打xxlex()
,那麼您會安排在適當的時間從yylex()
撥打電話。
如果你想xxlex()
被稱爲每次,然後要麼將其重命名yylex()
和重命名原始xxlex()
到zzlex()
,或使用bison -p xx
使一切(包括解析器函數)xx
代替yy
開始。 (同樣的標誌,-p
,還與POSIX兼容的yacc
的flex
程序需要-P xx
生成符號的所有開始的xx
代替yy
; POSIX lex
沒有一個選項,這樣做,但我已經看到許多makefile
使用sed
腳本編輯由lex
生成的源,以將前綴從yy
更改爲其他字母,如xx
。)
我認爲分享您的代碼將是一個好的開始。 – gkovacs90
我認爲分享你的*實際問題*是個好主意。你爲什麼需要兩個詞法分析器?有兩個輸入源嗎? – EJP