質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

4回答

4909閲覧

c++でcコンパイラを作りたい

ALGOL69

総合スコア10

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2016/08/30 08:18

初心者ですがC++を使ってC言語のコンパイラを作りたいと思っています。
最初に字句解析をすると思うのですがどのようにしたらいいのかわからず手も足もでない状況です。
初歩的な質問かもしれませんが、回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

コンパイラを作るということは、「初歩的」どころではない、相当に大変な作業です。

多くの場合、字句解析・構文解析は構文が決まってしまえば自動で生成できるので、そういったツールを使うことが多いです。

C言語系だと、字句解析にはlexやflex、構文解析にはyaccやbisonといったツールがあります。

投稿2016/08/30 08:23

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初心者ですがC++を使ってC言語のコンパイラを作りたいと思っています

コンパイラ制作は初心者に向かないジャンルです。おそらく大変苦労します。
それを長期的な目標として掲げつつ、基本を学習するのがおすすめのコースです。

あえて挑戦するとしても、まず学習するための書籍が必須ですし、
その本も理系っぽい不親切な本が多いです。需要が少ないので。
少なくともサンプルコードは解説なしでスラスラ読めないと苦しいです。


最初に字句解析をすると思うのですがどのようにしたらいいのか

字句解析はツールを使うか、自力でやる場合でも
正規表現で終わりなのですが、やはり正規表現が
スラスラ読み書きできないと苦しいでしょう。

構文解析もツールを使うか、自力でやる場合には
抽象構文木を書きますが、これはデザインパターンの
「Interpreterパターン」です。やはりデザパタを
スラスラ読み書きできないと苦しいです。

また、その際にBNF記法を書き下すことになるでしょうが、
これも再帰を使った文法がスラスラ読み書きできないと……。
さらには実行を最適化するためにはアセンブラがスラスラ……。


ほかにもオートマトンとか、計算機科学の基本が詰まっている分野なので、
プログラミングの上級者になったら意外とスラスラ書けるでしょうが、
初心者が挑戦するには、覚えることが多くて大変険しい道のりです。

そこをどうしてもやりたいのであれば、学習書がある前提で、
まずインタプリタ、それも四則演算器みたいな基礎的なものを
最初に作ってみるのがとっつきやすいと思います。

投稿2016/08/30 08:57

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

llvmを使うと比較的簡単にコンパイラを自作できるらしいです。
きつねさんでもわかるLLVMは分かりやすそうです。

コンパイラ開発はプログラム開発の中でも難易度の高い方と思いますので、比較的簡単と言ってもなかなか歯ごたえはある筈です。しかし、挑戦するだけでもかなり技術力がつくと思います。頑張って下さい。

投稿2016/08/30 09:46

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初心者ってどういうレベルの初心者ですか?

  1. C/C++には精通しているけどコンパイラの自作は全くわからない
  2. C/C++の初心者

もし、1なら「Cコンパイラ 自作」などでググってみれば色々出て来ると思います。
2ならまず、C言語を勉強した方がいいと思います。

投稿2016/08/30 08:28

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問