C# 語言規范使用文法產生式 定義詞法與語法結構。理解這套表示法,是閱讀規范、實現編譯器、深度掌握語言語法的基礎。本文對應規范第 2.2.1 節「文法表示法」。
非終結符名稱:
可能的展開序列1
可能的展開序列2
...
while-statement:
while ( boolean-expression ) embedded-statement
含義:`while` 語句由關鍵字 `while`、左括號、布爾表達式、右括號、嵌入語句構成。
statement-list:
statement
statement-list statement
含義:語句列表要么是單條語句,要么是語句列表後跟一條語句。這是左遞歸定義,表示一個或多條語句。
block:
{ statement-listopt }
下標 `opt` 表示可選。等價於展開為兩條產生式:
block:
{ }
{ statement-list }
定義:代碼塊由大括號包裹的可選語句列表組成。
real-type-suffix: one of
F f D d M m
簡寫形式,等價於逐行列出:
real-type-suffix:
F
f
D
d
M
m
| 符號/約定 | 含義 | 示例 |
|---|---|---|
| 斜體 | 非終結符 | while-statement |
| 等寬字體 | 終結符 | while, (, ) |
| 冒號 `:` | 產生式定義開始 | block: |
| 縮進換行 | 替代展開選項 | 見 statement-list |
| `opt` | 可選項 | statement-listopt |
| `one of` | 單行列出多個單字符替代項 | real-type-suffix: one of F f D d M m |
| 遞歸引用 | 非終結符引用自身定義列表 | statement-list: statement-list statement |
C# 規范的文法表示法簡而強大:斜體非終結符、等寬終結符、冒號定義、縮進選項、下標可選、one of 簡寫。掌握這套元語言,能讓你像閱讀數學定義一樣精確理解 C# 每一條語法規則的結構邊界,是從「會用」走向「懂原理」的關鍵一步。