次: Semantic Values, 前: Language and Grammar, 上: Concepts
形式文法(formal grammer)は、数学的な構成です。 Bisonのために言語を定義するためには、Bisonの書式で文法を記述した Bison文法(Bison grammer)ファイルを書く必要があります。 See Bison Grammar Files。
形式文法の中での1つの非終端記号は、Bisonの入力の中で、
Cの識別子のような、1つの識別子として表現されます。
expr
、stmt
、declaration
のように、
通常、非終端記号は小文字で書きます。
終端記号に対するBisonの表現は、
トークン型(token type)ともいいます。
トークン型は、C言語で使われるような識別子であるかもしれません。
通常、非終端記号からこれらを区別するために、大文字で書きます。
たとえば、INTEGER
、IDENTIFIER
、IF
、RETURN
のように書きます。
言語の個々のキーワードを表す終端記号は、
キーワードを大文字に変換してから命名するべきです。
終端記号error
は、エラーからの回復処理のために予約されています。
See Symbols。
ある終端記号は、C言語の文字定数のような、1文字リテラルを表している かもしれません。 トークンがちょうど1文字である(たとえば、かっこ、プラス記号など)ならば必ず、 そのトークンに対する終端記号として、同じ文字を使うべきです。
終端記号を表す第3の方法は、何文字かを含むC言語の文字列定数です。 詳細はSee Symbols。
文法規則は、Bisonの文法の中で、もう1つの式を持ちます。
たとえば、C言語のreturn
文に対するBisonの規則があります。
クォート(')で囲まれたセミコロンは、文に対するC言語の文法の一部分を表す、
1文字のリテラルトークンです。
クォートで囲まれていないセミコロンとコロンは、
あらゆる規則の中で使われる、Bisonの区切り文字です。
stmt: RETURN expr ';' ;