詞法文法和句法文法用文法產生式來表示。每個文法產生式定義一個非結束符號和它可能的擴展(由非結束符或結束符組成的序列)。在文法產生式中,非結束符號顯示為斜體,而結束符號顯示為等寬字體。
文法產生式的第一行是該產生式所定義的非結束符號的名稱,後跟一個冒號。每個後續的縮進行列出一個可能的擴展,它是以非結束符或結束符組成的序列的形式給出的。例如,產生式:
定義了一個 while 語句,它是這樣構成的:由標記 while
開始,後跟標記“(
”、布爾表達式、標記“)
”和嵌入的語句。
當有不止一個可能的非結束符號擴展時,列出這些可能的擴展(每個擴展單獨占一行)。例如,產生式:
定義一個語句列表,它或僅含有一個語句,或由一個語句列表和隨後跟著的一個語句組成。換言之,定義是遞歸的,語句列表由一個或多個語句組成。
一個符號若以下標“可選”作其後綴,就表明該符號是可選的。產生式:
是以下產生式的簡短形式:
它定義了一個塊,此塊由一個用“{
”和“}
”標記括起來的可選語句列表組成。
可選項通常在單獨的行上列出,但是當有許多可選項時,可以在單行上給定的擴展列表之前加上短語“下列之一”。這只是在單獨一行上列出每個可選項的簡短形式。例如,產生式:
是以下產生式的簡短形式: