PL/0'コンパイラはCで書かれていましたが,それをyaccで書き直したものを作りました. C版のファイルのうち、table.h、codegen.hはそのまま使い、 table.cとcodegen.cはほとんどそのまま使い、それ以外をlex(またはflex) とyacc(またはbison)で書きました。 以下のファイルからlex(またはflex) とyacc(またはbison)を使ってPL/0'コンパイラを構成することが出来ます。 pl0.l(ファイル名がpl0.l.txtに変更してあります) pl0.y(ファイル名がpl0.y.txtに変更してあります) table.h table.c codegen.h codegen.c たとえば、bisonとflexを使う場合は、 $ bison -d -y pl0.y によって、y.tab.hとy.tab.cを生成し、 $ flex -l pl0
■ソースのダウンロード lzh形式で圧縮されています。各種解凍ソフトを使用して解凍してください。 解凍後はコマンドラインから で実行できます。終了するときには、Ctrl-Z(Ctrlキーを押しながらZキーを押す)の後にリターン(エンター)キーを押してください(MacではCtrl-D)。この手順はどの章でも変わりありません。 Eclipseを使っている方は、ワークスペースのJoyToyフォルダ(Eclipseをインストールしたフォルダ\workspace\JoyToy\)に展開したソースをコピーして使用してください。 なお、Javaが動く環境であれば、Microsoft Windowsに限らずMac OSXなどでも動作すると思います。 第3章までのソース → chapter3.lzh 第4章までのソース → chapter4.lzh 第5章までのソース → chapter5.lzh 第6章ま
EclipseでJavaCCを使ってみたのでメモ. 今回は,整数のみを受け付けるコンソールを作ってみる. 1. はじめに 1.1 実行環境 JavaCC 6.0 (入手先) Eclipse 4.4.2 Windows 8.1 Java version 1.7 1.2 JavaCC Java Compiler Compiler の略. ざっくり言うと,構文解析をするJavaファイル(Parser)を作成してくれるライブラリ. JavaCCを使うことで,独自の文法(BNF)を定義でき,その文法でしか入力を受け付けないコンパイラを作ることができる. 1.3 JJTree 構文解析木を勝手に作ってくれる便利なツール. 基本的にはJJTreeファイル(.jjt)に文法を定義する. 2. 準備 以下の画像のように, 1. libフォルダにダウンロードしたjavacc.jarを置き,パスを通しておく.
Javaで使える有名なコンパイラコンパイラと特徴 jay ( http://www.cs.rit.edu/~ats/projects/lp/doc/jay/package-summary.html ) yaccに書き方が近い(LALR) 字句解析には、JFlexを利用する C#版がある JavaCC ( http://javacc.dev.java.net/ ) 再帰的下向き構文解析 字句定義と構文定義を一緒に書ける 資料が豊富/参考書もある ANTLR ( http://javacc.dev.java.net/ ) 字句定義と構文定義を一緒に書ける 参考 コンパイラ演習で使うツールと演習問題 - 中田先生のページ - 基本を押さえる http://cis.k.hosei.ac.jp/~nakata/lectureCompiler/index.html 「コンパイラ・スクリプトエンジン」相
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
はじめにKompira では、ジョブフロー言語の構文解析に、PLY (Python Lex-Yacc) [1] を使用しています。PLY は Yacc/Lex という定番の構文字句解析ツールの Python による実装です。Python から利用できるパーサジェネレータは [2] のように数多くあるのですが、筆者自身が使いなれた Yacc/Lex ベースということと、Python ネイティブな実装ということで、PLY を選んでました。 今回は前から気になっていたパーサジェネレータである ANTLR [3] を使って、簡単な式言語の構文解析を実現してみようかと思います。ANTLR は、LL(*) [4] という強力なトップダウン解析手法にもとづいており、サンフランシスコ大学の Terence Parr 教授が中心となって開発しています。ちなみに Terence Parr 教授は「言語実装パタ
プログラミングをしたことがあるひとなら、誰でも1度くらい自分の理想の言語を作ってみたいと思うのではないでしょうか。このテキストは、オリジナルのプログラミング言語のコンパイラ作成を通して、パーサコンビネータの使い方を紹介していくものです。 2分でわかる、俺の俺による俺のためのプログラミング言語を作る大まかな手順 自分のオリジナルなプログラミング言語を作るには、典型的には次のような手順を踏みます。 既存のプログラミング言語を使ってみる その既存の言語の気に入らないところを徹底的になじる(ただし心のなかで) 己の内に秘める中二力を卍解し、最強プログラミング言語の仕様を妄想する コンパイラを作る その言語を教典とする宗教団体を設立し、慈悲深き終身の独裁者を名乗る 自分の言語が思ったよりしょぼいことに気付く 桶屋が儲かる このテキストではこのうち手順 4 だけ、特にコンパイラのパーサ部分を解説します
★アドバイス ・スクリプト言語を自作したいようですね。 >(HSP3で作成:未定)→ActiveBasicで作成→C言語の勉強→作成 この順で作成するより最初からC言語をお勉強しながら作り上げていくのはどうでしょうか。 『HSP3』そのものがスクリプト言語のような感じですのでこれで作るのは無理・無駄です。 『ActiveBasic』の方がしっかりとした言語です。 コンパイルして機械語になった exe を作成してくれます。 ・まずは言語の仕様を決めた方が良いです。 私も11年前に簡単なインタプリタを作成しましたが、ころころと仕様を変えてしまったために 完成するまでに時間が掛かりました。そのときに参考にしたのが N88-BASIC です。 インタプリタを作るためにわざわざ N88-BASIC 日本語版を買いました。 買った理由はマニュアルを参考にするためでした。 ・仕様も最初は簡単なタイプが良
勉強ノートを、自分を追い詰めるためにも置いておきます...笑 1日目である第1章は、言語処理系の基本みたいな感じ。 ノート 言語処理系は2つに分かれる。 インタプリタ 実際にプログラムを実行するソフトウェア。プログラムが仮想的な機械語で書かれている場合はインタプリタと呼ばずに仮想マシンと呼ぶこともある。 コンパイラ ある言語で書かれたプログラム(ソースプログム)を別の言語で書かれたプログラム(ターゲットプログラム)に変換するソフトウェア。 インタプリタでもコンパイラでも構文木を生成するところまでは同じ。そこからコンパイラならコード生成、インタプリタならプログラムの実行を行う。 きたないけど、ノート。 これから 実装するのはインタプリタなのだけど、内部ではコンパイラも実際は動いているので(高速化のため)コンパイラの設計も勉強する。 コード最適化には触れない。 まずは普通にこの本通りにプログラ
言語の仕様を作るだけでは、何も行なえません。 その言語の開発環境を作ってこそ、その言語を活用することが可能になります。 技術的な意味においては、その開発環境の作成の技法のほうが、重要になります。 2の件から先に回答します。 [開発環境を作ることは、不思議ではないことについて] OS を作りたいとか、開発環境を作りたいとか言うと、笑う人が多いです。 一般のアプリケーションの作成をしている方には、そう思っても無理ないのですが、ある分野を専門にしているプログラマー達にとっては、そう不思議ではないです。 むしろ、普通に OS や 開発環境を作ります。 それは、C言語、又は、C++ の分野です。 C/C++ でも、一般のアプリケーションの作成を専門にしている方達は、OS を作る、開発環境を作ると言うと、不思議に思う人のほうが多いと思います。 C/C++ プログラマーで、ハード制御を専門のしている場合
このページでは自作のソフトを紹介します。どのソフトもフリーですので、ご自由にダウンロードして頂いて構いません。 ただし、ダウンロードや実行は全てご自身の責任で行ってください。故意に被害を与えるつもりは有りませんが、 作者はこれらのソフトによって引き起される、(データやハードウェアの破損を含む)いかなる結果についても責を負わないことと致します。 なお、これらのソフトはLZH形式で圧縮を行なっておりますので、これらのファイルを解凍するためのソフトを入手しておく必要があります。 Reasonable Distortion 1.0.0.0 本ソフトはいわゆるディストーション(歪み)系のオーディオエフェクトを実現する VSTプラグインです。 うっすらとしたライトな歪みから、ブリブリのハードロックサウンドまで バリエーション豊かな、そして高音質でヌケの良い歪みサウンドを堪能して頂けます。 ダウンロード
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く