2009-09-19 40 views
0

比方說,我有一個像下面的兩個規則:如何在ANTLR中「減去」詞法分析器規則?

printable_characters : '\u0020' .. '\uFFEF' ; 

newline_characters : '\n' | '\r' ; 

現在,讓我們說,我想創建一個名爲printable_no_newlines新規則。我想減去newline_charactersprintable_characters要做到這一點,像這樣:

printable_no_newlines : printable_characters - newline_characters ; 

這句法不會ANTLR3工作,但沒有人知道什麼是最好的辦法是效仿這種無需重新輸入整個規則?

回答

1

我不認爲這是可能的。我也懷疑它會做你想做的事情:例如,你的printable_new_newlines將包括"foo\nbar",因爲它匹配printable_characters,但不匹配newline_characters(因爲它只匹配一個字符的字符串)。

+0

嗨馬丁。我編輯了我的示例以便更有意義。我不應該使用*作爲printable_characters規則。如果現在重新審視這個問題,那麼我想要做什麼更有意義? – 2009-09-20 02:24:32

+0

馬丁的一些評論已不再相關,但如果不手動編寫設置的差異,關鍵是不可能的。 – 2009-09-20 02:32:26

+0

@Jeffrey:你的編輯仍然沒有使請求變得明智。由於'newline_characters'不包含在'printable_characters'中(因爲它們在U + 0020以下),無論如何,'printable_no_newlines'將與'printable_characters'相同。 – 2009-09-20 06:54:05

相關問題