我想解析一些文本記錄,其中記錄中的元素由'+'字符分隔,並且整個記錄由'#'字符終止。例如E1 + E2 + E3 + E4 + E5 + E6#ANTLR解析器問題
單個元素可能是必需的或可選的。如果一個元素是可選的,它的值就會丟失。例如,如果E2丟失,輸入字符串將爲:E1 ++ E3 + E4 + E5 + E6#。
但是,在處理空尾元素時,分隔符char('+')也可能丟失。例如,如果最後3個元素丟失,字符串可能是:E1 + E2 + E3#,但它也可能是: E1 + E2 + E3 +++#
我在Antlr中試過以下規則:
'R1''E1 + E2 + E3''+'? 'E4'? '+'? 'E5'? '+'? 'E6'? '#
但是Antlr抱怨說這當然是正確的(E3之後的每個標記都可能是E4,E5或E6)。輸入語法是固定的(它來自傳統的大型機系統),所以我想知道是否有人可以解決這個問題?
另一種方法是在規則中指定所有不同的排列,但這將是一項重大任務。
最好的問候和感謝,
邁克爾
你能發佈*所有*你的詞法分析規則嗎? (假設它們不是那麼多) – 2010-02-24 21:22:42