我正在使用LEX和YACC。我有一個關於如何定義標記,我的意思是我有分享一些字符兩個正則表達式問題,請參見下面的例子:LEX?共享正則表達式
SHARED "+"|"-"|"/"|"="|"%"|"?"|"!"|"."|"$"|"_"|"~"|"&"|"^"|"<"|">"|"("|")"|","
REXP_1 {SHARED}|[a-zA-Z]|[ \t]+|[\\][\\\"]
REXP_2 {SHARED}|[a-zA-Z]|[ \t]+|"*"
現在,我的觀點是如何確定何時從共享正則表達式的字符對應當我在.lex文件的第三部分中定義標記時,將其添加到REXP_1或REXP_2。
我覺得我誤解了一些東西,我想我寫正則表達式的方式是錯誤的,但我沒有找到一種更好的方法。你能給我一些提示嗎?
如果有人能指導我一些標準來確定何時定義一個標記(file.lex)或何時在語法(file.y)中定義一個符號,我將不勝感激。對於某些符號,很容易弄清楚它是一個符號還是一個語法符號,但對於其他符號,我覺得很難定義它們放在哪裏。
通過我與this grammar
難道你不能在這裏使用C預處理器嗎?只需'#define SHARED'即可,然後將其與字符串粘貼工具一起使用。 – tripleee
我對LEX或YACC不熟悉,但大概'SHARED'可以用'[/=%?!.$_〜&^ <>(),+ - ]'來代替,那麼它不是那麼大,所以你可以只是將其包含在每個正則表達式中。 – OGHaza
感謝您的幫助。我所做的是將一個類似於@OGHaza的regext定義爲一個標記,然後將其用在語法本身(file.y)中。我要去測試它。 – pafede2