アプリ版:「スタンプのみでお礼する」機能のリリースについて

自分で言語を作成したいと思っています。
とても簡単なことではないと思います。
自分の出来るところからはじめたいと思っているのですが、どのようなステップが良いでしょうか?
どうかよきアドバイスをいただけないでしょうか?

お願いします。

A 回答 (7件)

唐突にお勧めしてみます。

本当に良いかどうかはあれなんですが・・

ConputerToday別冊1988/11
「自分自信のためのプログラム言語の作り方」

相当古い本なんで古本やさんでもあるかどうかわかりませんが・・

ステップだけかきますと
・言語の概略設計
・言語仕様の決定
 ・機能仕様の決定
 ・構文仕様の決定
・言語処理系の設計
・作成
・デバッグ
てな感じみたいですね。
がんばってください。
    • good
    • 0

仕様を決める。


コンパイラーにすると大変なので.当座はインタープリターで.
解釈部.解釈した内容を実行するための実行指示ルーチン.実行部
をつくる。これで.なんとかなります。注意点は.これら3つのルーチンはそれぞれ独立して実行可能なことです。最終的には.細かな命令を含めると1000を超えてしまうでしょう。その時に.もしお互いに関係していると.正体不明のエラーで苦しみます。特に初期化ルーチンには注意が必要です。
私は直接作りませんけど.子供の同級生は.某インタープリターを作っていますし.子供も表計算ソフト・簡易データベースソフトとこれら用のマクロ言語を作っていますので.そんなに難しいこととは思いません。ただ.アセンブラで領域を削って..なんて今の流行ではありません。適当に巨大な配列を作って領域を割り当てて...でしょうから.できたソフトが若干巨大になります。メモリーとの戦いが最後にまっています。子供の場合には.外部配列を管理している命令が16ビット符号付き整数しかサポートしていない関係で.3000*3000の配列までしか作れませんでした。プログラムはソースで2-3MBです。
    • good
    • 0

先月で連載が終了しましたが、マイコンBASICマガジンという月刊誌で(URL参照)、独自言語を作る連載をしていました。

なかなか分かりやすいので、例題で作っていたのと同等ならば、出来る様になると思います。

いつからいつまでか今ちょっと分からないので、よろしければ調べます。とりあえず今は送信…

参考URL:http://www.basicmagazine.net/
    • good
    • 0

「門前の小僧習わぬ経を読む」という諺があります。

本件は経=コンパイラです。私は小僧でさえもなく、寺の表札だけを見て通りすぎた通行人=未経験者です。車の好きな人が、「一度自分で自分の車を」と思うように、若い頃以来の憧れでした。どうぞ頑張ってください。
下記一言でもお目に留まれば。
(対象とする石の選択)
インテル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円)
中田先生の本(上記とは別)、コンパイラの作り方と言う題名の本は見たことがあります。その他単行本は大型書店でも見かけません。後は「トランジスタ技術」など時々特集があった記憶があります(不正確)。情報系、工科系研究室サイドでは、当たり前の作業のように聞きます。
若い時に一時にかかるハシカ(昔の私)に終わらぬよう祈ります。
    • good
    • 0

プログラム言語は創造の産物です。


コンパイラは製作によって生み出されます。
その両方を行うとなるとかなりの知識と労力が…

まず、言語の設計はコンピュータの基礎知識と数学(特に「群の理論」)が大前提となります。
これらを(大雑把にでも)理解できていないと文法が破綻したり、文法はあってるけど文脈が通らないという状況が発生します。
自然言語は理論があと付けなので破綻した文脈をいとも簡単に生成することができます。

例えば初代のC言語はa+=1ではなくa=+1でした。
これでは「aに1を足しこむ」のか「aに+1を代入」なのかがわかりません。
結果、現在の文法に置き換えられました。
Cのような超メジャー言語でも初期のころは混乱があったのです。

技術的な観点ではyacc/lexの登場以来、コンパイラコンパイラ(コンパイラを作るためのツール)が実用レベルに近づいてきています。
言語の創造が完了していればコンパイラの作成自体は(簡単ではありませんが)困難ではありません。

まずは「数学」と「数学に基づく言語理論」を学んでプロトタイプ言語を作りましょう(言語A)。
言語Aをコンパイル可能なコンパイラを(既存の言語で)作りましょう(コンパイラA)。
コンパイラAを使って言語Aをコンパイル可能なコンパイラを作りましょう(コンパイラA2)。
コンパイラA2の作成途中で言語Aの悪い点が見えてきます。
そこで、言語Aの使用を練り直し言語Bを設計します。
これを繰り返せば破綻の少ない言語が作成できるでしょう。

プログラム言語の文法はバッカス記法などの「文法記述法」を使用すれば文法レベルでの破綻は見つけることができます。
しかし、「前置宣言か後置宣言か?」「宣言/参照の関係」などの問題は見つけることができません。
    • good
    • 0

どのくらいのレベルの言語を作りたいのかはわかりませんが、


そこそこのものを作ろうと思うのなら、プログラミング言語の
理論を徹底的に勉強することが先決でしょう。基本的には
数学メインだと思います。ものによってはλ計算とか一階述語
論理というのがでてくるのでしょう。

それができたら、言語処理系に関する勉強ですね。コンパイラの
理論はオートマトンがどうこうという話しか覚えてませんが、
かなり奥が深いです。

それができたらやっと言語仕様の設計です。ここでは、ソースを
JAVAのように中間言語に落すのか、バイナリを作ってしまうかとか、
バイナリならexe形式にするかelf形式にするかとか、オブジェクト
指向にするか手続き型はたまた独自形式のものにするかなどを
まず決めます。そして、tokenの定義や構文の定義を行なっていきます。

ここまでできたらあとは、仕様に沿って作るだけです。まずは、
lex&yacc(flec&bison)を使ってやるもよし、全部自力でつくるも
よし。基本的なコンパイラの構成は、字句解析、構文解析、コード生成
の3つのフェーズから成り立っています。あとは、いろんな手法が
世の中で提案されてますから、どれを使うかを考えながら組み立てる
ことになるでしょう。

ちなみに、簡単な言語仕様なら、K&Rの本に載ってます。また
手始めとして、JAVAあたりの現存する言語のコンパイラを自力で
作ってみるところから始めてもいいかもしれませんね。
    • good
    • 0

言語の解釈 構文解析(パーサ)部を作ります、とはいっても、ゼロから書き上げるのは大変ですから、コンパイラを作るコンパイラ yacc の助けを借りましょう、そして、先達の知恵を借りましょう。


自作コンパイラの部屋
yaccの実験室
kmyacc
HPを覗いて見てください、きっと啓示を得られますよ。

参考URL:http://www.netlaputa.ne.jp/~T-Satoh/yacc/yacc.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!