タグ

オリジナル言語に関するtaka222のブックマーク (14)

  • Super Technique 講座~ungetcってどう使う?

    ungetc ってどう使う? stdio.h には、あまり使わない関数も多いが、特にこの ungetc(3) は、特別なテクニックと共に使われるものなので、知らないプログラマは絶対知らないが、使い方を知っているプログラマにとっては、非常に汎用的に使える関数(というかアイデア)なのである。筆者はインタプリタが得意なので、この ungetc(3) は必須アイテムの一つなのである。というわけで、ungetc(3) の使い方を解説しよう。 とはいえ、この ungetch.htm は結構気合いを入れて書いたにも関わらず、アクセスが少ない! 重要なテクニックなんだけど、一般認知が低いな! これがクヤシイので、ここにBNFのちゃんとした解説を入れることにする。前半もちゃんと読むのだぞ! 字句の先読み 単純な数式処理 自然数式処理 lex と yacc 字句の先読み ungetc(3) は文字列をトークン

  • nScript

    C言語ライクな簡易スクリプトです。 ちょっとしたバッチ処理などを簡単に作成できます。 スクリプトには以下の特徴があります。 コンソールで動作 (WindowsCE版は擬似コンソールで動作) C言語ライクな構文 ファイル、ソケット 配列、連想配列 正規表現 引数マッチによる関数実行 nScript Ver 0.0.3 (2002/10/26) Japanese version Win32 (Windows 95, 98, Me, NT4, 2000, XP, Vista, 7, 8, 8.1, 10) ns003win32.zip (size 68 KB) WindowsCE2.11以上 (MIPS, SH-3, SH-4, ARM) ns003ce211.zip (size 202 KB) PocketPC (MIPS, SH-3, ARM) ns003ppc.zip (size 159

  • C言語-目次

    ・プログラムの書式、定数・変数・配列  ・演算子  ・制御文(if, switch, for, while, do, break, continue, return, goto)  ・ポインタと文字列  ・標準ライブラリ(入出力関数・文字処理関数・文字列処理関数・ファイル入出力関数・その他)  ・ユーザ関数の作成  ・main 関数に引数を渡す  ・構造体、共用体、列挙型  ・プリプロセッサ ・文字列処理 文字コード、文字列、文字列処理関数、ポインタ ・ファイル処理 テキストファイルの読み書き ・変数の有効範囲 ローカル・グローバル・スタティック変数、ローカル変数の有効期間 ・関数の作成 関数定義、関数の作成 ・ファイルの分割 コマンドmake、makefileの記述形式 など

  • 数値計算インタプリタを作ろう

    数値計算用インタプリタを作るのは難しいことではない。2001年前期の早稲田大学理工学部情報学科における2つの講義(数値計算,現代応用解析B)においては,数値計算インタプリタを作成せよとの課題を課した。その成果(学生がどのように反応してくれたか)の一端を,講義を社会に還元する意味でも,ここにまとめておくことにする。 数値計算ツールについて知ろう プログラミング言語の売りは「何がすごいところか」である。したがって,数値計算用インタプリタを作るとしたら,その売りは「すごい数値計算用のプログラムが含まれる」というところになる。その意味で,数値計算用のプログラムパッケージとして,プロが何を開発してきて,何が成功しているかを知らなくてはならない。この知識に関してはホームページのもう一つの柱のコーナー精度保証付き数値計算に詳しく解説している(学生の講義では,数値計算アルゴリズムの理論も解説したが,情報

  • インタプリタ

    インタプリタのしくみ プログラミング言語処理系には、コンパイラ、 アセンブラ以外にインタプリタと呼ばれるものもある。 コンパイラを用いた場合、 ソースプログラムは CPU が直接理解可能な機械語に変換されるので、 コンパイル後にできたプログラムはそれ単独で動く。 つまり、実行時には処理系(コンパイラ)の介在を必要としない。 ┌─────────┐ コンパイル ┌─────────┐ │ ソースプログラム │─────→│ 機械語プログラム │ └─────────┘ └─────────┘ ↑ CPU が直接 実行 これに対して、インタプリタはソースプログラムをコンパイルしない。 ソースプログラムを読んでその内容を解釈しながら実行する。 従って、実行時にインタプリタ処理系がなければプログラムを動かすことができない。 ┌─────────┐ │ ソースプログラム │ └─────────┘

  • LISPMEMO

    Emacs から SLIME を起動すると (http://lispuser.net/emacs/lisphacking.html , http://lispuser.net/commonlisp/clisp.html 参照) 、 CL-USER> というプロンプトが表示されていると思います。 CL-USER> ここに、プログラムを入力することで、 Lisp にプログラムを解釈させて結果を確認することができます。 さっそく Lisp にプログラムを実行させてみましょう。 CL-USER> (+ 1 2) 3 これは、 1 + 2 を計算させるプログラムです。 (+ 1 2) の意味は、関数 + パラメータとして 1 と 2 を渡す、という意味になります。 乗算を行いたい場合には関数 * を使用してみてください。 CL-USER> (* 3 4) 12 もちろん、式を入れ個にする事もできます

  • L2Lisp in Ruby

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    L2Lisp in Ruby
  • JavaScriptでつくるSchemeインタプリタの基礎の基礎

    はじめに 現存するプログラミング言語の中で2番目に古いのがLispです。生まれは古くても、いまだに使われ続け、また、Rubyなどの新しい言語にも影響を与えています。そのLispの派生であり、シンプルさが売りなのがSchemeです。 ここではSchemeの簡単なインタプリタをJavaScriptで作ってみます。 対象読者 稿はLispやSchemeは少し触ったことはあるけど、インタプリタは書いたことがないという方を読者対象としています。また、JavaScriptの文法や、簡単なデータ構造についての知識を前提とし、説明は省きます。 必要な環境 テキストエディタと、JavaScriptが動くWebブラウザがあれば十分です。他に特に用意するものはありません。 概要 作成するインタプリタについて インタプリタのコードはJavaScriptで書き、HTMLのフォームを使って、Schemeのプログラム

    JavaScriptでつくるSchemeインタプリタの基礎の基礎
  • 機械語 - Wikipedia

    機械語(きかいご、英: machine language、machine code[1][2]、 binary machine language[3]あるいはbinary machine code)は、コンピュータの中央処理装置(CPU)が直接理解し実行することができる命令からなる言語[1]。マシン語(マシンご)とも[2]。 機械語は0や1を並べた形、ビットの組み合わせパターン(ビット列)で表されるものであり[2][1]、人間が日常使う言葉とはかけ離れていて読み書きしやすい形式ではない[2][1]。 そのため、コンピュータのプログラムの開発に機械語が直接使われることはほとんどない[1]。通常は人間が読みやすい形式(高級言語)でプログラムを書いてそれをコンパイラで機械語に翻訳してその機械語でコンピュータを動かしている[1][※ 1]。 機械語は中央処理装置(CPUやMPU)の動作をひとつひと

    機械語 - Wikipedia
  • Part4 Javaで作るオリジナル言語

    Part4では,Lisp(リスプ:List Processor)インタプリタをJava言語を使って作っていきます。Lispは非常に歴史が古く,様々な分野で利用されている言語です。しかし,皆さんの中にはLisp自体をよく知らないという方もいらっしゃるかもしれません。どんなものを作るかわからないままでは面白みも半減してしまいますから,まずはLispのごく基的な動作を紹介しましょう。 まずは簡単Lisp講座 Lispの質は,すべてがリスト(正確にはS式,詳細は後述)で表現されることにあります。リストは要素を順序付きで並べたもので,“(1 2 3 4)”のように要素の並びをカッコでくくって表記します。このリストの要素は1,2,3,4の四つです。 「すべてがリストで表現される」という言葉の通り,Lispではプログラムもこのようなリストとして表現します。Lisp処理系は,与えられたリストの一つ目の

    Part4 Javaで作るオリジナル言語
  • プログラミング言語を作る

    このページの目的は、「独自のプログラミング言語を作る」ことです。 「プログラミング言語を作る」というのは、 やったことのない方からすれば、ずいぶん無謀な目標に見えるのかもしれません。 でも、いくつかの基礎知識さえ修得すれば、技術的には、 実はそんなに難しいものでもありません。 だったら、ひとつぐらい作ってみたいと思いませんか? なにしろプログラミング言語を作るなんて、 いかにもかっこ良さげじゃないですか。 私は作ってみたいと思いました。だから作ります。 プログラミング言語なんてもう山ほどあるのに、 今さら新しい言語なんて付け足して何をしたいんだよ! などというツッコミは入れてはいけません。 「なぜプログラミング言語なんか作るんですか?」 と聞かれたら、その答は そこにyaccがあるからだ。 で充分だろうと私は思います(yaccが何かは後述します)。 というわけで―― ただ私なんぞが新言語を

  • プログラム言語を作る!---目次

    プログラム言語は使うだけの道具ではありません。アイデアとやる気があれば,自分にとって一番使いやすいオリジナルの言語を作ることだってできるのです。言語処理系の実装には,ソフトウエア開発の様々な技術やノウハウがぎっしり詰まっています。何より,とてもクリエイティブで楽しい作業です。プログラムはどのようにして解析/実行されるのかといった言語処理の中身を知るだけでも,普段のプログラミングに大きなプラスになります。 誰かが作った言語をただ使うだけの日常からちょっと離れ,言語処理の世界を探検してみましょう!

    プログラム言語を作る!---目次
  • ソースコードを読むための技術

    $Id: readingcode.html,v 1.13 2003/12/06 00:01:08 aamine Exp $ 2006-05-02 gonzui 追加。thanks: 冨山さん 2003-12-03 ltrace と sotrace を追加 2003-12-03 ツールのところに DDD を追加。thanks: 和田さん 2003-05-27 VCG, SXT などについて追加。thanks: 梅沢さん 2003-05-27 これもすっかり忘れていた strace, ktrace, truss, etags などについて追加 2002-08-30 すっかり忘れていた ctags を追加 2002-07-07 匿名希望さんからメールでいただいた情報を追加 (動的コールグラフ) 2002-06-13 日記経由でいただいた意見をもとに文章を追加。thanks: 柳川さん、まつもとさ

  • Rubyソースコード完全解説 / 青木峰郎

    $Id: index.html,v 1.6 2004/07/20 23:08:12 aamine Exp $ この文書は書籍『Rubyソースコード完全解説』のHTML版です。 ただし初校段階の原稿をベースにしているため、 書籍では修正されている間違いが残っている場合があります。 予め御了承ください。 2004-02-16 に全章を公開しました。 目次 まえがき 序章 第 1 部「オブジェクト」 第 1 章「Ruby言語ミニマム」 第 2 章「オブジェクト」 第 3 章「名前と名前表」 第 4 章「クラス」 第 5 章「ガーベージコレクション」 第 6 章「変数と定数」 第 7 章「セキュリティ」 第 2 部「構文解析」 第 8 章「Ruby言語の詳細」 第 9 章「速習yacc」 第 10 章「パーサ」 第 11 章「状態付きスキャナ」 第 12 章「構文木の構築」 第 3 部「評価」 第

  • 1