我在寫一個語言規範,我需要解決以下基本問題。假設我有(被認爲是人爲的)抽象語法:我如何表示這個語法的語義?
<A> ::= <B> | <C>
<B> ::= 1 | 2 | 3
<C> ::= 4 | 5 | 6
這種語言的指稱語義是什麼樣的?非終端包含在'<'和'>'中,終端不是。我想將1
... 6
映射到自然數域。我不清楚的是我是否需要爲非終端提供映射。似乎我不需要,因爲,例如,<A> ::= <B> | <C>
沒有意義;它只是一個結構。忽略,暫時我們可能完全消除這個規則。
所以,它的立場,這是我認爲整個指稱定義應該是什麼樣子,在右手邊(以斜體)表示從自然數相應的值:
[[1]] =
一個
[[2]] =
[[3]] =
[[4]] =
[[5]] =
[[6]] =
美學,它似乎很奇怪何況A
,B
,或C
所有,但我想,那些符號將永遠不會出現在實際程序中 (如:4
),所以也許這就夠了。關於這個主題的所有資料都省略了這些非常簡單的細節,從他們的討論中可以看出語言定義過程的方方面面。