1
解析數學表達式將會更好地處理不可見乘法(例如ab,意味着時間b或(ab)c或(ab)(c + d)等)。詞法分析器還是解析器?代數表達式中的不可見乘法
解析數學表達式將會更好地處理不可見乘法(例如ab,意味着時間b或(ab)c或(ab)(c + d)等)。詞法分析器還是解析器?代數表達式中的不可見乘法
隱式乘法是一種語法結構。 Lexing純粹是關於識別個人符號的。由於詞法分析器不知道「表達式」,兩個相鄰表達式應該相乘的事實不是詞彙概念。解析器的確如此。
如果詞法分析器負責,則必須添加大量有關相鄰令牌的規則。例如,插入兩個IDENTIFIER
S,或IDENTIFIER
和NUMBER
或NUMBER
和IDENTIFIER
之間,或)
和IDENTIFIER
,或IDENTIFIER
和(
...之間的×
令牌除了嗯哦,IDENTIFIER (
可能是一個函數調用,所以也許我需要在符號表中查找IDENTIFIER
以查看它是否是函數名稱...
真是一團糟!
另一方面,解析器可以通過單個語法規則來實現。
E → E '×' E
| E E