我正在寫一個LR(1)解析器,並且我一直在將我的測試語法建立在C語言之外。我看了看語法適用於C和Python:上下文無語法區分整數和浮點常量
https://www.lysator.liu.se/c/ANSI-C-grammar-y.html https://docs.python.org/3/reference/grammar.html
Ç似乎使用符號常量整數和浮點常量和Python使用數量。
我想知道的是爲什麼這些不會被分成單獨的符號,如INT和FLOAT,以便稍後可以將它們放入抽象語法樹中的單獨節點中?
由於我們已經知道詞法分析器解析後的數字是什麼類型,爲什麼要將它們合併爲一個通用的'NUMBER',然後嘗試找出它又是哪一個?
它只是使語法更大,並沒有提供任何真正的好處。 –
@ n.m。如何'int x = 2; double y = x/3.0;'處理?顯然,分母是整數還是浮點常量是有區別的。因此,有些事情需要跟蹤分母是浮點常量的事實。 – user3386109
@ user3386109有些東西確實記錄了這一點。這個「某些東西」只是不是語法,因爲在語法中跟蹤這些是沒有意義的。 –