2017-04-18 6 views
0

私はCの文法を探していて、このリンクが見つかった問題はcとlexコードの文法がありますが、私は加算、乗算のようなセマンティクスは見当たりません。構文チェックがありますが、他のツールで実装されているセマンティクスはどこにあるのかについてはセマンティクスを記述することもできます。セマンティクステートメントとyacc

私はセマンティクスを書くには小さなコンパイラを実装しようとしていますが、関数を使ってyaccで記述するのは良いですか?

答えて

2

この例の文法(非常に古いバージョンのC)は、特定のセマンティクスを含んでいません。あなたは確かにそれらを追加することができます。セマンティックルールは、あなたが構築しているツールの種類に依存します。

Bison/yaccは確かにコンパイラをビルドするためのツールです。多くの人がそうしてきました。セマンティックコードを再利用可能な関数にリファクタリングするか、コードを各アクションに直接入れるかは、あなた次第である設計上の選択です。私は、コードの繰り返しを避けるために、関数の使用をお勧めしたいと思います。

+0

新しいC文法にリンクすることができます –

+0

@jeevansai:C標準には1つありますが、バイソン形式にするにはいくつかの作業が必要です。完全なCコンパイラを構築することは、最初のコンパイラプロジェクトではおそらく野心的です。より簡単な言語のための文法を書くことをお勧めします。あなたはそれを理解せずに複雑なものを複写するよりも多くのことを学びます。もちろん、Cの文法の一部が参考になるかもしれません。 – rici

+0

bisonの変数を保存する方法 –