A 回答 (7件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
唐突にお勧めしてみます。
本当に良いかどうかはあれなんですが・・ConputerToday別冊1988/11
「自分自信のためのプログラム言語の作り方」
相当古い本なんで古本やさんでもあるかどうかわかりませんが・・
ステップだけかきますと
・言語の概略設計
・言語仕様の決定
・機能仕様の決定
・構文仕様の決定
・言語処理系の設計
・作成
・デバッグ
てな感じみたいですね。
がんばってください。
No.2
- 回答日時:
仕様を決める。
コンパイラーにすると大変なので.当座はインタープリターで.
解釈部.解釈した内容を実行するための実行指示ルーチン.実行部
をつくる。これで.なんとかなります。注意点は.これら3つのルーチンはそれぞれ独立して実行可能なことです。最終的には.細かな命令を含めると1000を超えてしまうでしょう。その時に.もしお互いに関係していると.正体不明のエラーで苦しみます。特に初期化ルーチンには注意が必要です。
私は直接作りませんけど.子供の同級生は.某インタープリターを作っていますし.子供も表計算ソフト・簡易データベースソフトとこれら用のマクロ言語を作っていますので.そんなに難しいこととは思いません。ただ.アセンブラで領域を削って..なんて今の流行ではありません。適当に巨大な配列を作って領域を割り当てて...でしょうから.できたソフトが若干巨大になります。メモリーとの戦いが最後にまっています。子供の場合には.外部配列を管理している命令が16ビット符号付き整数しかサポートしていない関係で.3000*3000の配列までしか作れませんでした。プログラムはソースで2-3MBです。
No.3
- 回答日時:
先月で連載が終了しましたが、マイコンBASICマガジンという月刊誌で(URL参照)、独自言語を作る連載をしていました。
なかなか分かりやすいので、例題で作っていたのと同等ならば、出来る様になると思います。いつからいつまでか今ちょっと分からないので、よろしければ調べます。とりあえず今は送信…
参考URL:http://www.basicmagazine.net/
No.4
- 回答日時:
「門前の小僧習わぬ経を読む」という諺があります。
本件は経=コンパイラです。私は小僧でさえもなく、寺の表札だけを見て通りすぎた通行人=未経験者です。車の好きな人が、「一度自分で自分の車を」と思うように、若い頃以来の憧れでした。どうぞ頑張ってください。下記一言でもお目に留まれば。
(対象とする石の選択)
インテル86系とその互換、MacなどのモトローラIBM系、その他日立製H,SHシリーズなど特徴や流行性。
(大仕様の選択)
原理だけの勉強か、実用をめざすか。
(1)マルチジョブ・マルチタスクかシングルか。
(2)GUIを採りこむか(Windowsライク)。
(3)オブジェクト指向(ライク)にするか。
(4)ポインター利用を許すか。文字列の扱い。
(5)APIを使ってしまうか。
(6)重点分野(ビジネス、機械制御、通信、論理・数式など)
(7)コンパイラ方式、インタプリタ方式
(6)C言語ライク、Basicライク、Cobolライク、Pascalライク、Fortranタイプ、Lisp・Prologタイプなど。
(7)OSは。Unix系の下で動かすかその他か。
(8)DataBaseとの接続を考えるか。
(必要とする勉強)
(1)C言語のマスター
(2)出来ればUnixOsのソース解析。
(3)構文解析法
(4)演算式の解析法・アルゴリズム
(5)メモリアロケーションのアルゴリズム
(6)最適化の手法
(7)ガーベージコレクション
ある程度定石が出来あがっているようですので、「我流に陥らず」いろいろの分野に目配りを忘れず。
まず電卓のプログラムから手がけられては。
(書籍)コンパイラの構成と最適化(中田育男、朝倉書店、9800円)
中田先生の本(上記とは別)、コンパイラの作り方と言う題名の本は見たことがあります。その他単行本は大型書店でも見かけません。後は「トランジスタ技術」など時々特集があった記憶があります(不正確)。情報系、工科系研究室サイドでは、当たり前の作業のように聞きます。
若い時に一時にかかるハシカ(昔の私)に終わらぬよう祈ります。
No.5
- 回答日時:
プログラム言語は創造の産物です。
コンパイラは製作によって生み出されます。
その両方を行うとなるとかなりの知識と労力が…
まず、言語の設計はコンピュータの基礎知識と数学(特に「群の理論」)が大前提となります。
これらを(大雑把にでも)理解できていないと文法が破綻したり、文法はあってるけど文脈が通らないという状況が発生します。
自然言語は理論があと付けなので破綻した文脈をいとも簡単に生成することができます。
例えば初代のC言語はa+=1ではなくa=+1でした。
これでは「aに1を足しこむ」のか「aに+1を代入」なのかがわかりません。
結果、現在の文法に置き換えられました。
Cのような超メジャー言語でも初期のころは混乱があったのです。
技術的な観点ではyacc/lexの登場以来、コンパイラコンパイラ(コンパイラを作るためのツール)が実用レベルに近づいてきています。
言語の創造が完了していればコンパイラの作成自体は(簡単ではありませんが)困難ではありません。
まずは「数学」と「数学に基づく言語理論」を学んでプロトタイプ言語を作りましょう(言語A)。
言語Aをコンパイル可能なコンパイラを(既存の言語で)作りましょう(コンパイラA)。
コンパイラAを使って言語Aをコンパイル可能なコンパイラを作りましょう(コンパイラA2)。
コンパイラA2の作成途中で言語Aの悪い点が見えてきます。
そこで、言語Aの使用を練り直し言語Bを設計します。
これを繰り返せば破綻の少ない言語が作成できるでしょう。
プログラム言語の文法はバッカス記法などの「文法記述法」を使用すれば文法レベルでの破綻は見つけることができます。
しかし、「前置宣言か後置宣言か?」「宣言/参照の関係」などの問題は見つけることができません。
No.6
- 回答日時:
どのくらいのレベルの言語を作りたいのかはわかりませんが、
そこそこのものを作ろうと思うのなら、プログラミング言語の
理論を徹底的に勉強することが先決でしょう。基本的には
数学メインだと思います。ものによってはλ計算とか一階述語
論理というのがでてくるのでしょう。
それができたら、言語処理系に関する勉強ですね。コンパイラの
理論はオートマトンがどうこうという話しか覚えてませんが、
かなり奥が深いです。
それができたらやっと言語仕様の設計です。ここでは、ソースを
JAVAのように中間言語に落すのか、バイナリを作ってしまうかとか、
バイナリならexe形式にするかelf形式にするかとか、オブジェクト
指向にするか手続き型はたまた独自形式のものにするかなどを
まず決めます。そして、tokenの定義や構文の定義を行なっていきます。
ここまでできたらあとは、仕様に沿って作るだけです。まずは、
lex&yacc(flec&bison)を使ってやるもよし、全部自力でつくるも
よし。基本的なコンパイラの構成は、字句解析、構文解析、コード生成
の3つのフェーズから成り立っています。あとは、いろんな手法が
世の中で提案されてますから、どれを使うかを考えながら組み立てる
ことになるでしょう。
ちなみに、簡単な言語仕様なら、K&Rの本に載ってます。また
手始めとして、JAVAあたりの現存する言語のコンパイラを自力で
作ってみるところから始めてもいいかもしれませんね。
No.7
- 回答日時:
言語の解釈 構文解析(パーサ)部を作ります、とはいっても、ゼロから書き上げるのは大変ですから、コンパイラを作るコンパイラ yacc の助けを借りましょう、そして、先達の知恵を借りましょう。
自作コンパイラの部屋
yaccの実験室
kmyacc
HPを覗いて見てください、きっと啓示を得られますよ。
参考URL:http://www.netlaputa.ne.jp/~T-Satoh/yacc/yacc.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(悩み相談・人生相談) あくまでも私の考えですが親のエゴで子供って産まれてくるじゃないですか、、 今自分がこの世に存在してい 1 2022/04/25 23:16
- 留学・ワーキングホリデー 今高校三年生です。高校卒業後留学しようと思っています。語学学校に通ったあと大学(観光科)に行こうと思 4 2023/05/17 12:30
- JavaScript Javascriptで出来ること 1 2022/05/16 20:19
- YouTube Youtubeとかの外国語の動画に、日本語の字幕をつけたのを自分のアカウントから公開扱いでアップした 1 2023/04/11 00:25
- その他(言語学・言語) ハワイ語を勉強するためのおすすめの教材について 1 2022/11/23 18:51
- 知人・隣人 アラフォーですとか、アラフィフです、っていう女性って若作りか自分をおばさんと認めたくない勢なのでしょ 6 2023/08/18 23:18
- 哲学 日本に安楽死制度を作るには、どうすれば良いと思われますか? 2 2022/10/11 21:25
- 片思い・告白 バイトで、同い年で後輩の女の子がいます。 その子は控えめだけど、男女問わず愛想が良い子です。 バイト 3 2022/12/09 19:33
- 知人・隣人 上司に疲れた 1 2022/09/01 23:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
gcc のコンパイラオプションに...
-
パーサとコンパイラの違いって?
-
組み込みソフト。ROM領域にデータ
-
C言語はC言語でできている?
-
C言語
-
cc と gcc の違い
-
#pragmaとは
-
C言語インタプリタ
-
C言語のプログラミングのソフト...
-
AIXとCOBOLについて
-
『独習C』第3版と第4版の違い
-
C++でデスクトップGUIアプリ開...
-
C言語で画像を出力したい
-
組み込みソフトってなんですか?
-
<conio.h>?
-
C言語の規格
-
ALGOL・PL/Iのフリーのコンパイ...
-
関数形式マクロ dtaは戻り値が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
組み込みソフト。ROM領域にデータ
-
cc と gcc の違い
-
C++Builder → Visual C++ 移植...
-
printfなど、標準関数のソース...
-
COBOLのALPHABET...
-
COBOLの論理演算子について質問...
-
Visual Studio でmakefileを使...
-
cobolで実行環境って何ですか?
-
パーサとコンパイラの違いって?
-
昔のgraph.hというファイル
-
未使用引数の注意文出力を回避...
-
C言語でのコンパイラの作成方法
-
C言語はC言語でできている?
-
COBOL計算式の中間ワーク桁数に...
-
リリースモードとデバッグモー...
-
『Bin』ディレクトリは何の略語?
-
POWERCOBOLのSQL...
おすすめ情報