「コンパイラ・スクリプトエンジン」相談室 3at TECH
「コンパイラ・スクリプトエンジン」相談室 3 - 暇つぶし2ch1:デフォルトの名無しさん
03/11/29 15:59
yaccやlexの使い方やら言語仕様やらの話題。

前スレ
1 URLリンク(pc.2ch.net)
2 スレリンク(tech板) (dat落ち)

関連リンクは多分 >>2-8 あたり

2:デフォルトの名無しさん
03/11/29 16:00
コンパイラ等を扱ったドキュメント

色々なツールの紹介
URLリンク(catalog.compilertools.net)

コンパイラおよびコンパイラコンパイラに関する本
URLリンク(www.ulis.ac.jp)

コンパイラ関連のリンク集
URLリンク(www.ulis.ac.jp)

スクリプティング言語資料室(仮) (リンク)
URLリンク(www.kt.rim.or.jp)

Compiler Construction
URLリンク(rananim.ie.u-ryukyu.ac.jp)

Compiler Construction (1997)
URLリンク(rananim.ie.u-ryukyu.ac.jp)

再帰下降構文解析の手法
URLリンク(member.nifty.ne.jp)

情報システム工学実験 III コンパイラ・コンパイラ
URLリンク(math.cs.kitami-it.ac.jp)

正規表現
URLリンク(hp.vector.co.jp)

コンパイラ研究・開発情報の一集積所
URLリンク(compilers.cs.uec.ac.jp)


3:デフォルトの名無しさん
03/11/29 16:00
Asm関係

Links and Selected Readings
URLリンク(www.gnu.org)

NASM Manual (翻訳は途中まで)
URLリンク(guriponn.at.infoseek.co.jp)

Intel(R) Literature Center (Intelのドキュメントはこちらから)
URLリンク(www.intel.co.jp)

インテル(R) Itanium(TM) プロセッサ
URLリンク(www.intel.co.jp)

Streaming SIMD Extensions 2 (SSE2)
URLリンク(developer.intel.com)


4:デフォルトの名無しさん
03/11/29 16:01
Lex(Flex) Yacc(Bison) 構文解析

UNIX板
yacc & lex
スレリンク(unix板)

Lex and YACC primer/HOWTO (邦訳)
URLリンク(www.linux.or.jp)

Turbo Pascal Lex/Yacc
URLリンク(www.musikwissenschaft.uni-mainz.de)

Jim Roskind's LALR(1) C++ Grammar
URLリンク(www.empathy.com)

Flexと Bisonを同時に使う
URLリンク(guppy.eng.kagawa-u.ac.jp)

KITE_ASM (yacc,lex)
URLリンク(www.arch.cs.kumamoto-u.ac.jp)
URLリンク(www.arch.cs.kumamoto-u.ac.jp)

Cygwin
URLリンク(www.cygwin.com)

GNU utilities for Win32
URLリンク(unxutils.sourceforge.net)

5:デフォルトの名無しさん
03/11/29 16:02
その他のパーサジェネレータ等

ANTLR(非yaccのパーサジェネレータ)
URLリンク(www.antlr.org)

JavaCC(Java Compiler Compiler)
URLリンク(javacc.dev.java.net)
URLリンク(village.infoweb.ne.jp)
URLリンク(www.asahi-net.or.jp)

¬<><∪∪ (notavacc)
URLリンク(ne.cs.uec.ac.jp)

boost::spirit(C++のテンプレートでEBNFの構文を模倣)
URLリンク(spirit.sourceforge.net)
URLリンク(boost.cppll.jp)(マニュアル日本語化プロジェクト)
URLリンク(www.fides.dti.ne.jp)


6:デフォルトの名無しさん
03/11/29 16:02
ガベコレ

GC FAQ -- draft
URLリンク(www.iecc.com)

A garbage collector for C and C++
URLリンク(www.hpl.hp.com)

7:デフォルトの名無しさん
03/11/29 16:02
処理系,スクリプト

kikyou.info (吉里吉里というゲームのスクリプト)
URLリンク(kikyou.info)

tiny C コンパイラ (C)
URLリンク(www.watalab.cs.uec.ac.jp)

Portable Object Compiler (Obj-C >> C のトランスレータ?)
URLリンク(users.pandora.be)

自作コンパイラの部屋(PL/1, Pascal等)
URLリンク(www.tokumaru.org)

8:デフォルトの名無しさん
03/11/29 16:08
参考書籍

●コンパイラ 原理・技法・ツール 1&2
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)
通称ドラゴンブック。バイブル。

●コンパイラ構成法 原田 賢一
URLリンク(www.amazon.co.jp)
URLリンク(www.hara.cs.keio.ac.jp) (ソース、正誤表のダウンロード)

●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
URLリンク(www.amazon.co.jp)
一冊で済ませたい人へ。

●コンパイラの構成と最適化 中田 育男
URLリンク(www.amazon.co.jp)
最適化がメイン。

●コンパイラの仕組み 渡邊 坦
URLリンク(www.amazon.co.jp)
薄い奴(185p)を読みたい人に。

9:デフォルトの名無しさん
03/11/29 16:09
以下未整理とネタ

shuJIT (JITについて)
URLリンク(www.shudo.net)

ギコBASIC
C言語版
URLリンク(page.freett.com)
C++版
URLリンク(page.freett.com)

計算機能論ホームページ
(消えているので、どうしても見たければarchive.org等を利用する事)
URLリンク(buri.sfc.keio.ac.jp)

YACC link
URLリンク(www2.dewa.or.jp)

10:デフォルトの名無しさん
03/11/29 16:17
なお、byaccはどこへリンクするか迷ったので、日和って省いてあります。
ソース読んで学習する用途に、って事でkmyaccなんかも入れて良かったかも。
Compilers and Compiler Generators も迷い迷って結局入れてません。
URLリンク(www.scifac.ru.ac.za)
spiritの位置も少し迷ったのですが、一応パーサジェネレータ「等」って事で。
リンクは一応チェックしたつもりですが、間違ってても勘弁して下さい。
以上。

11:デフォルトの名無しさん
03/11/29 16:28
>>1
>(dat落ち)
この部分はいらなかったな。失敗。

12:デフォルトの名無しさん
03/11/29 16:31
12

13:デフォルトの名無しさん
03/11/29 19:04
糞スレさらしあげ

14:デフォルトの名無しさん
03/11/29 22:11
             __.ノ)
            ( _(
            (.___.)
          || l
          || l、-‐ー、ー‐- 、
          ,.|| l       ヽ ,、-‐ー、
       iヽ ./  ,    i     `、
       l::::::i .,' / _,、-‐つ l l   ',._,、i
       l::::::l i ,' / ,、-'"ノ ,'i l ! l ヽ::l
       l:::r.'lr/   /ノリ リノi l l iノヽ
       レゝ/   /  ニ・ニ=lノノリ、
       i /  ,、-'  . .   ll|l i ll,、-'´
        /  /、  ヽフ   ノ lノ |    ま、また 立てやがった・・・
     ,-'  ./l lノ. `‐、.___ ,、-'´l |l
   ,、-'´  /_rl .lヽ``‐、 ,-'"i、l l l     
,、-'i    / ̄ l lヽ\ i l ノ l l l
i  l    /   i .l lヽ   r-、 ノ l lヽ、
l .l  / i 丶 |l `‐/ ゝソ\/ ノ  7、
!、 ヽ / ヽ   ヽ /  / ヽ_ ノ i / i
 ヽ ``/   ヽ,  / /    \ l    l
    ̄l      !/      ヽ    l


15:デフォルトの名無しさん
03/11/29 22:30
>>1
サンクス、自分も立てようかと思ってたんだけど、リンクが揃えられなくて・・・
しかし、いきなりの素敵な洗礼ですな。
>>13-14
殆どこの板を使った事のないド素人はすっこんでろっつーの

16:デフォルトの名無しさん
03/11/29 22:31
(;´Д`)ハァハァ

17:デフォルトの名無しさん
03/11/29 22:36
ハウディー!(^O^*)

18:デフォルトの名無しさん
03/11/29 22:37
            ,,、、、,,,r‐--、、,,_
                ,、‐'''r."           `゙ー、
             ,:'.:::::,イ".  .: ...:.::i_;、、、;;_;|;   ゙L
          _,,.-‐''ノ   ヽ;、‐"´,,,.........,,__`ヽ:i `,
      ,、‐'''""´,,、-‐f  .:.::/,:-'"..:..::::::::::::::.゛:‐、',i.,'
     く-‐''''ゞ"´, .:;;;;゙.、..:.:::/´".,.::./.:;ィ:::;;,イ:;':::::;::...'、ヽ.
.     `'ヽ、 . :ー-ァ;;;;;;;ト'":;;|::;/:;.'::::;;;'.';;ィ;':;/i::::;;i;:::;;:,';.`;"''ァ
        ゙''‐-、 z-;::l:.:::::;;!、:';;'_;;.'__;;:'゙/"' .l:::;;ハ.;;':l;::l,、‐'"
            |..::`'''‐i..::::;;;|/ィ ' =-、.,''.   l'/、_r';'゙l;r'
            l::::|:::i:;;| .::::;;l: ,''';:/ ゙   r=''';-!.i/'
.          !:::l!::ll:;;i .::;;;;l::..'‐-'      ,';/゙/;:l:|
            ',:i.!::!l::;'; :|:;;i:: ..:: :.    ..''::,'|;;:|:l
            '!.';l. ';.l゙、l::;;!、      ,.   ,,イi;;,';;'
.            ゙  '! '!';;l:..゙''‐; 、_,,,、.,;i'.i':/ l:/リ
                厂 ';! ̄!トト,ィ_'リ、''_.''  '
            ,r.:'´`゙'= 、r'";;';ヘ_〉'';:ヽ':,
              /.:::.;;.;.;;;;;`、ヽ.:.:::;;ri'ヽ_;,'., 'Y':,
          /..:.;.;.;.;;;;.:.;;;;`、.'l''"´!';__;!/ .人 ',
          ,'...:.:;..;;;;_;;;-‐‐;,' '-‐' ..:r'  ゙ヽ', ',
           '.;-‐‐'".:;;.;.;.;;;;ヽ. ‐‐-'',':.. .::.:ノ:..ノ
          `"'''‐、.:;.;...;;;:.;;',::. ./`、;,_;;r'"''゙゙i
              ヽ.:;;.;.;;;;;;l/;:.:.:;.;;;;、'l;;:;;.;.;:.',

19:デフォルトの名無しさん
03/11/29 23:15
>>1乙。
洋書だけど重要そうなのでこれも貼っとく。

21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
ペーパーバック版: URLリンク(www.amazon.co.jp)
ハードカバー版: URLリンク(www.amazon.co.jp)

20:デフォルトの名無しさん
03/11/30 00:17
>>19
やべ、前スレ最後に出た一番重要な奴を忘れてた。
しかし高いなあ……。

あと書き忘れましたが、
beroさんとこの機械翻訳ベースの資料は軒並み消えてしまったので
NASM Manualのリンク先をFreeDOSのぐりぽんさんの所へ変えています。
まあ気合い入れて英語読めば問題無いんですが。

21:デフォルトの名無しさん
03/11/30 14:17
Compilers Principles, Techniques, and Tools
すなわち、通称「赤ドラゴンブック」でコンパイラのこと一般を勉強しているものです。
最近、「ドラゴンブックも内容が古くなってきた」という意見を耳にしたのですが、
どこらへんが古くなってきているのか教えて下さい。


22:デフォルトの名無しさん
03/11/30 15:45
>>21
1985年の本ですから古くなるのも無理はないでしょう。
あの本以降に発展した技術には、思いつくものだけでも

SSA
CDG/PDG
JIT
関数型言語の実現法

などがあります。しかし入門用としては今でも十分な内容だと思います。

dragon bookが終ったら、次は最適化に的を絞った本を読めばいいでしょう。
日本語なら>>8の中田先生の本あたりでしょうか。


23:21
03/11/30 16:13
>>22 ありがとうございました。調べてみます。


24:デフォルトの名無しさん
03/12/02 20:49
新スレ乙。

21世紀ドラゴンブックまだコネー。

25:デフォルトの名無しさん
03/12/04 21:17
洩れはタイガースフアンだ!
というのはおいといてw

bisonとも限らないのですが、単項の負を処理するときに、

%left NEG
...
| '-' exp %prec NEG {...}

とよく書きますけど、厳密には %left でなくて %right じゃないでしょうか?
たとえば、---5というのは、普通-(-(-5))だと思うんですが...

どこかおかしいですか???


26:デフォルトの名無しさん
03/12/05 01:59
>>25
単項演算子に優先順位指定は必要ないのでは?
文法の書き方にもよるけど、普通は

unary_expr:
   postfix_expr
  | '*' unary_expr
  | '&' unary_expr
  | '-' unary_expr
  | '~' unary_expr
  | '!' unary_expr
...

てな感じでうまく行きますよ。


27:25
03/12/06 02:54
>>26
情報ありがとうございます。

でも、そうなんですか、知りませんでした。
いま、アスキーのbison入門という本を見ているですが、
どこにもそんな記述がありませんでした。

ふう~、奥が深いですね。

ちなみに、

%right '='
%left '+' '-'
%left '*' '/'
%left NEG → 単項-用です。
%right '^'

みたいに、指定しています。


28:デフォルトの名無しさん
03/12/07 22:11
やっぱ、%rightが正解かなぁ?

%left で ---5 の場合だと、(--) を処理せんあかんから、


29:デフォルトの名無しさん
03/12/08 00:33
ahoの発売は来年に持ち越しか

…知らない人がこのレスを見たら意味不明だろうな

30:デフォルトの名無しさん
03/12/08 20:00
%left と %right の結果をbisonで比べてみても変化なし、
どちらも、正しく ---5 を処理できる。

で、生成されたcソースを見てみたが、なんと(ry


31:デフォルトの名無しさん
03/12/08 22:34
>>29
それってなんデすか?

32:デフォルトの名無しさん
03/12/09 00:00
>>31
21st Century Compilers
URLリンク(www.amazon.co.jp)

Amazon.co.jpによれば
> 発売予定日は 2003/12/15 です。
> ただいま予約受付中です。




33:デフォルトの名無しさん
03/12/09 01:15
>>27
%left/%rightは同じ順位の演算子がならんでいるときに生じるshift/reduce
conflictを解決するためのもの。単項演算子が前置のみなら、そもそも
conflict はおきないので、どちらでもかまわないです。

前置と後置の両方があるときは、%left/%rightが効いてきます。
たとえば、~という演算子が前置にも後置にも使えるような構文を考えます。

expr : '~' expr | expr '~'

このとき、%left '~' なら、~x~は(~x)~と解釈され、%rightなら~(x~)と解釈
されます。


34:27
03/12/09 20:07
>>33
なるほど!明解な回答をありがとうございました。

ちなみに、それぞれに指定したbisonソースの変換出力(C出力)
を比べてみましたが、両者は実質的に同じものでした。

重ねてお礼を申し上げます。
ありがとうございました。

***

ところで、rubyのソースコードについての書籍があると聞きましたが、
これはインタプリター等の理解&構築にはよい本でしょうか?

ちょっと高めですが、参考になるのなら、と思っています。


35:デフォルトの名無しさん
03/12/09 21:55
rubyのってもうすぐWeb上でも全公開じゃなかったっけ?
確か初めの章だけは既に公開されてるよね。

36:デフォルトの名無しさん
03/12/10 07:28
>>34
あんなのに金払う意味無いって。
どうしても読みたいなら図書館行ってこい。

37:デフォルトの名無しさん
03/12/10 10:55
>>36
煽りじゃなく、できれば理由を教えてくれ。
おれの場合、あの本読んでいて苛々するんだが、理由を明確に
説明できるほどのスキルがないんで、他の人の意見も聞きたい。

38:デフォルトの名無しさん
03/12/10 23:26
>>35
なるほど、HPみたら、そんな感じに宣言されてますね。
しかも、この12月でほぼ1年たつ模様。

ちょっと期待。


39:デフォルトの名無しさん
03/12/10 23:41
>>34
>>8 にある本ではダメなの?


40:デフォルトの名無しさん
03/12/11 00:07
全文公開は延期してもらってもかまわないから、青木さんにはオライリーの
lex & yacc に変わるような本を書いてほしい。

41:デフォルトの名無しさん
03/12/11 00:11
>>8
佐々 政孝さんの本は出版が少し古いんですね。

42:デフォルトの名無しさん
03/12/11 00:34
>>39
全部コンパイラ系の本、
rubyはインタプリター


43:デフォルトの名無しさん
03/12/11 01:21
>>42
コンパイラはネイティブコードを生成することが多くて、
インタプリタはしないことが多いくらいで
やることは大体一緒だと思うけど。

44:デフォルトの名無しさん
03/12/11 01:23
インタプリタはしないことが多いんじゃなくてしないだろ。

45:デフォルトの名無しさん
03/12/11 01:28
Java VM の HotSpot とか。

46:デフォルトの名無しさん
03/12/11 01:39
>>43
違うのは最適化くらいか?

47:デフォルトの名無しさん
03/12/12 20:24
はっきりいって全然ちがう。(コンパイラとインタプリタ)
同じように使えるのは、字句解析器ぐらいか?


48:デフォルトの名無しさん
03/12/12 20:54
構文解析も意味解析も共通なはずだが。
なんで字句解析だけ?

49:デフォルトの名無しさん
03/12/12 22:46
>>47
C言語にはコンパイラとインタプリタが存在します。
本当に、同じように使えるのは字句解析だけだと思いますか?

50:デフォルトの名無しさん
03/12/12 23:18
構文木作るまでは大方一緒な気がする

51:デフォルトの名無しさん
03/12/12 23:26
釣れた?

52:デフォルトの名無しさん
03/12/12 23:48
LISPはいきなり構文木が手に入る

53:デフォルトの名無しさん
03/12/13 01:06
>>49
コンパイラとインタプリタを備えた C の処理系なんてあったっけ?
大抵どっちかだから、共通している部分が多い事の事例にならないような。

こんな事が出来たら嬉しい人も多いだろうに。

#! /bin/env gcc <-- shbang で呼び出せる
//load Xlib <-- ライブラリのロードはコメント文で ==> コンパイラに通す時も透過的
#include <X11/Xlib.h>

int main() {

// 以下略
// 以上妄想

54:デフォルトの名無しさん
03/12/13 01:19
>コンパイラとインタプリタを備えた C の処理系なんてあったっけ?
作らない(作っても意味無い)だけだろ

55:デフォルトの名無しさん
03/12/13 01:20
>>54
だから、共通している部分が多い事の事例にならないだろ。


56:デフォルトの名無しさん
03/12/13 01:24
>>55
同様な構文を持つ言語のインタプリタとコンパイラで
構文解析が共通化できない理由は何ですか?

57:デフォルトの名無しさん
03/12/13 01:27
>>56
そこには異論は無いです。細かい突っ込みスマソ。

58:デフォルトの名無しさん
03/12/13 02:56
Dylan や OCAML や Haskell はインタプリタとコンパイラの両方持ってるね。
Common Lisp もだけど。

59:デフォルトの名無しさん
03/12/13 04:18
>>58
源流がLISPだからね。

60:デフォルトの名無しさん
03/12/13 08:41
MLの源流はlispでねーぞ

61:デフォルトの名無しさん
03/12/13 09:29
っつーかDylanだけじゃん


62:デフォルトの名無しさん
03/12/13 10:38
URLリンク(www.levenez.com)

63:デフォルトの名無しさん
03/12/13 11:32
>>62
SchemeがAlgolから受け継いでるのって何?




64:デフォルトの名無しさん
03/12/13 18:30
>>63
lexical scopeじゃないかな?


65:デフォルトの名無しさん
03/12/13 19:22
構文解析器は、理論上はインタプリターやコンパイラに無関係に
整理可能であるが、現実問題としては、そうはならないということだろう。


66:デフォルトの名無しさん
03/12/14 23:36
きょう、rubyのソース開設本みつけたけど、
高いなぁ~と感じた。

(2000円までだったら、速攻でかったんだけど)

とりあえず、公開待ちます。
貧乏人で、スマソ


67:デフォルトの名無しさん
03/12/14 23:57
>>66
2000 円で買えるコンピューター書籍はそれほどないと思うが?
なにが売ってても買わないの?

68:デフォルトの名無しさん
03/12/15 00:03
bison本やlex本(GNUプレス)は
みんな安いよw


69:デフォルトの名無しさん
03/12/15 00:15
これ?
URLリンク(www.amazon.co.jp)
良さそうな本じゃん。Perlでこういう本ってあったっけ?

70:デフォルトの名無しさん
03/12/15 01:17
>>69
Perlはソースコードが多すぎる。

71:デフォルトの名無しさん
03/12/15 07:18
>>68
それってinfoで全文ローカルで読めるやつのこと?

72:68
03/12/15 21:36
>>71
infoは使ってないのでよくわからんが、そうかもしれない。
実はもれも、本文はどこかで(英語???)読んだ記憶があった。

でも、手元に書籍であると、またちがうんだな、これが!


73:デフォルトの名無しさん
03/12/15 22:10
>>72
たしか、利益の一部は FSF に寄付されるんじゃなかったかな。

ところで、参考文献としてこの本は既出?
Icon 自体が面白い言語なので読んで損はないと思う。無料だし。

The Implemetation of the Icon Programming Language
URLリンク(www.cs.arizona.edu)

74:デフォルトの名無しさん
03/12/15 22:49
yacc/lex使ってSQLパーサ作りたいんだけど、挑戦したことあるひといますか?

75:デフォルトの名無しさん
03/12/15 23:37
lex & yacc のサンプルがそのままSQLパーサだったような記憶。


76:デフォルトの名無しさん
03/12/15 23:41
>>75
そうそうあったあった。どこかにサンプルコード落ちてたよ。
英語版だけど


77:デフォルトの名無しさん
03/12/15 23:42
>>76
コードが英語なのは普通じゃ…。

78:デフォルトの名無しさん
03/12/15 23:47
>>73
flexは読みやすかったけど、bisonは読みにくかった。
やはり、難しいからですかね???


79:デフォルトの名無しさん
03/12/15 23:58

すいません、ふと疑問に思ったんですけど、
正直、このスレってとっても

(良く言えば)→高度&専門的
(悪く言えば)→難しいばっかりで、地味&マイナー

な領域ですよね?

みなさん、本職は何をされているんでしょうか?
やはり、プロのコンパイラorスクリプト屋さんなんでしょうか?


80:デフォルトの名無しさん
03/12/16 13:54
>>79
プロのコンパイラ屋(コンパイラだけ作っててメシが喰える人)ってかなり少な
いと思う。(OS屋はもっと少ないけど。)

他の仕事でミニ言語が必要になったので書いてるとか、大学で論文書くために
作ったとか、あるいは趣味でやってる人がほとんどじゃないでしょうか。

僕はたまたま今仕事でコンパイラを書いていますが、100%のコンパイラ屋では
ありません。




81:デフォルトの名無しさん
03/12/16 16:47
>>79
ゲーム屋も多いと思う。


82:デフォルトの名無しさん
03/12/16 18:02
出来合いのエンジンを利用する場合でも、実装を知っていないと
どうにもならんからね。

83:デフォルトの名無しさん
03/12/16 21:39
>>82
ネタw


84:74
03/12/16 22:42
>>75、76 そのサンプルってどこにありますか?
もし知っていたら教えてください。

85:デフォルトの名無しさん
03/12/16 22:49
オライリーの yacc/lex 本。

86:74
03/12/16 22:54
おおおー。なるほど。早速買ってみようと思います。


87:74
03/12/16 22:57
ところでネットで見つけようとしても見つからないですね。
PostgreSQLとかのソースを見ればいいのかしらん。

88:85
03/12/16 23:09
>>87
だからオライリーのサイトにあるよ。
URLリンク(examples.oreilly.com)

89:74
03/12/16 23:31
>>85
きゃーありがとうございます。


90:デフォルトの名無しさん
03/12/17 22:16
>>80
おお~、すごい!
本職&プロですか!

ちなみに、どんなコンパイラ書いてるんですか?
差し支えない程度で結構ですので、


91:デフォルトの名無しさん
03/12/17 23:58
俺は80氏じゃないけれど、組み込み系に利用するためのコンパイラを書いたことがある。
独自のインストラクションセットを吐き出すCコンパイラだけど、
80氏と同じく本職じゃないために、とりあえず動くコンパイラを作っただけ。
最適化とかは必要最低限くらいにしか要求されていなかったし。

俺はフリーのプログラマだけど、
お金をもらえてこういう楽しい仕事が出来るときが一番嬉しいね。

92:デフォルトの名無しさん
03/12/18 00:19
>>91
おお~、「フリーのプログラマ」で、しかもコンパイラまで
書けるのですか!
なんか括弧イイ!ですねぇ~!

わたしも、フリーではあるのですが、フリーはフリーでも(ry


93:デフォルトの名無しさん
03/12/18 03:27
ASICとかFPGA屋さんもいるかも知れず。

94:デフォルトの名無しさん
03/12/18 11:28
>>90>>92
コンパイラ書くのはそんなに難しくないよ。
漏れも大学や専門学校でプログラム勉強したことなんか一度もないけど、
コンパイラを一回書いたことがある。
そのときのネタは、スクリプトを解釈して整数、浮動小数、文字列の計算をしながら、
その結果を GP-IB (RS232 の遠い親戚みたいなもの) に送り込むヤツね。

キーワードは Bison/Flex (またはYacc/Lex)。
これらのツールが食べられるような特殊な書式さえ覚えれば、
サルでも※簡※単※な※コンパイラなら書ける。
# ただし、サルにはGCCは書けない。

95:デフォルトの名無しさん
03/12/18 14:20
簡単なコンパイラ書くぐらいならGCCの移植作法を覚える方が
まだ ※簡※単※?

96:デフォルトの名無しさん
03/12/18 14:40
簡単なコンパイラ書く方が※簡※単※

97:デフォルトの名無しさん
03/12/18 15:02
※強※調※し※た※い※語※句※を※※※で※強※調※す※る※ス※レ※は※こ※こ※で※す※か※

98:デフォルトの名無しさん
03/12/18 15:10
*** おおっと テレポーター ***

99:デフォルトの名無しさん
03/12/18 15:58
>>95
UNIX USERのGCCプログラミング工房とか読んでると
すんげーキツそうなんですが。

100:デフォルトの名無しさん
03/12/18 16:03
URLリンク(www.wnishida.com)
こんなんとか。

101:デフォルトの名無しさん
03/12/18 17:37
誰かが移植してくれるのを待つのが一番簡単。

102:デフォルトの名無しさん
03/12/18 20:25
>>98
年 * 寄 * り * は * カ * エ * レ * !

103:デフォルトの名無しさん
03/12/18 21:07
*** いしのなかにいる! ***

104:デフォルトの名無しさん
03/12/18 21:22
>>103
俺がさんざん書こうと思って我慢してたのに(w

105:デフォルトの名無しさん
03/12/19 18:45
>>103-104 わらた

106:デフォルトの名無しさん
03/12/20 18:08
VC++でyaccとlexを使ってexeを作りたいのですが、
うまくいきません。みなさんはどうやってやっていますか?

107:デフォルトの名無しさん
03/12/20 21:06
>>106
yaccとlexの出力ファイルをコンパイルして使ってる。

108:デフォルトの名無しさん
03/12/20 21:07
なんでlex/yaccつかうひつようあるの?
win系で?

109:デフォルトの名無しさん
03/12/20 21:09
>>108
ちなみに自分は何を使ってるんだ?

110:デフォルトの名無しさん
03/12/20 21:11
>>109
それはあんたしか知らない。

111:デフォルトの名無しさん
03/12/20 21:14
まともに使えるスクリプト言語って、なんでこんなに少ないんでしょうね?


112:デフォルトの名無しさん
03/12/20 21:18
>>110
その突っ込みは板違い

113:デフォルトの名無しさん
03/12/20 21:31
>>111
それはお前が使えてないだk(ry

114:デフォルトの名無しさん
03/12/20 22:34
>>110
質の低い書き込みするなよ

115:デフォルトの名無しさん
03/12/21 00:20
>111
マジできくが、それじゃどんなスクリプトが欲しい?


116:デフォルトの名無しさん
03/12/21 01:10
>>111
では、使えないと思ったスクリプト言語を理由と共に列挙してみよ

117:デフォルトの名無しさん
03/12/21 01:27
perl ウンコ

118:デフォルトの名無しさん
03/12/21 04:44
Perlが一番速いんじゃない?汎用的なスクリプト言語の中では。
ああいう方向もありだと思うよ。

119:デフォルトの名無しさん
03/12/21 13:34
速くはないだろperlは、早いけど

120:デフォルトの名無しさん
03/12/22 02:42
インタプリタを初めてつくりたい人に「これをよめ」という本はありますか?
洋書・和書は問いません。

上の方のレスを見るとコンパイラとインタプリタは少し違うようなので、、、

121:デフォルトの名無しさん
03/12/22 07:42
ホントーに初めてで右も左もわからないならCマガジン2000年5月号がお薦め。


122:デフォルトの名無しさん
03/12/22 08:38
URLリンク(www.cmagazine.jp)
特集1 スクリプト言語を作ろう インタプリタの構造と設計


123:デフォルトの名無しさん
03/12/22 12:02
>>120
bison, flex のドキュメント。
gcc の *.y ファイル。

124:デフォルトの名無しさん
03/12/22 13:02
字句解析は正規表現のようにした方がいいですか・・・

ハッシュにして48個(64個)を作ってそれぞれをチャインで
繋いで予約語と関数名と変数等を検索して方が早くないですか・・・

125:デフォルトの名無しさん
03/12/22 18:00
>>124
そう思うならそうすればいい。
っていうかそれでいい。
なにか問題でも?

126:111
03/12/22 21:59
パール:記述方法が暗号的すぎ
オーク:使用目的が限定的すぎ
るび~:モデル化が変態的すぎ

>>122
もう手にはいらんのとちゃう?


127:デフォルトの名無しさん
03/12/23 00:18
>>126
バックナンバー情報をチェックしたら
2000年のは無いみたいだね。
だが、大学の図書館とかなら多分ある。
漏れの母校の資料室にもあった。
っていうか俺んちの図書室にもある。
公的な図書館なら申請すれば
他の図書館から取り寄せてくれたりもする。
絶望的なほどではない。
でも、そこまでするなら本屋で他の本見繕った方がいい罠。

128:デフォルトの名無しさん
03/12/23 02:32
>>124
自分もハッシュです。
256でチェインしてます。
記号の"{"ごとにハッシュ表を新たに作り、
新しいハッシュ表から古い方に向かって調べます。
グローバル用は別に1個作り、
関数を呼ぶ場合にも、全く別のセットを作ります。
(じゃないと、下部の関数から上位の変数がみえたりしちゃいますからね)

ちなみに、ハッシュを使わずに作った物は、
6万語ぐらいの定義、10万回くらいの参照、マクロ展開があるファイルのコンパイルに10分、
ハッシュを使った物は30秒ぐらいでした。

129:デフォルトの名無しさん
03/12/23 02:47
>>124
今まではハッシュだったけど、
最近、キーワードだけswitch文の羅列で分別するようにしてみた。

もちろん手書きでは大変なので、perlで簡単なプリプロセッサを書いて
そいつに展開させてる。



130:デフォルトの名無しさん
03/12/23 05:26
>>127
> 公的な図書館なら申請すれば
> 他の図書館から取り寄せてくれたりもする。

こんど近所の図書館でも聞いてみよ。
千葉県だけど取り寄せてもらえるかな、、、

131:>>124
03/12/23 15:53
単純にflexじゃあかんの?


132:デフォルトの名無しさん
03/12/23 17:07
Cコンパイラのソースで読みやすいの教えろ

133:46
03/12/23 17:14

Kさん 好循環  Aさん 悪循環  
 (健康体)  (喘息)

1.(神が喘息であるかないかを決める)

2.K 喘息でない人 A 喘息の人は
は体力がある    体力がなくなる

3.K        A 行動力、
          五感(嗅覚)が鈍り感性が変化する

4.K&P 神は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。

5.K 変化なし   A アトピーになる

6.K 正常な感性  A 外に出なくなりさらに異常な感性になる

7.K 正常な人間   A 異常な人間(レッテル)

134:46
03/12/23 17:14
8.K&A 死

9.K&A      来世

10.K&A 神は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。

11.K&A 神が喘息であるかないかを決める

12.K 喘息でない  A 喘息である

13.K&A    1.に戻る

これは事実。広めようぜ

解決法:体力をつけると感覚が正常に戻り、
    アトピーも快癒に向かう。
    目安としてグランドを10週くらい。
あとはウォーキング、なるべく長い間歩く
(ウインドーショッピングや散歩、五時間ぐらいを目安)。
無論最初は、無理なので徐々に体を慣らしていくといい

鼻に変な違和感があったり、頭がぼおっとする時の解決法。
口をつぐんだまま、口の中で空間を作る、すると口の中に空気がたまるのでそれを吐き出す。無論息が苦しくなったら、呼吸をして良い。
これを、100回くらい。

135:デフォルトの名無しさん
03/12/23 18:04
>>132
gcc



136:デフォルトの名無しさん
03/12/23 18:28
最近のスクリプト言語って、オブジェクト指向ばっかりね。


137:デフォルトの名無しさん
03/12/23 19:16
>>132
Bruce evans C Compiler (BCC) がおすすめ
16bitコード生成の最適化無しだけど、ソース分量も多くないし
再帰下降なんでyaccとかも使ってない
作者のBruce EvansはMinix386パッチ開発などで知られる
一応ELKSのコンパイルにも使用されている


138:デフォルトの名無しさん
03/12/23 21:21
えー・・・

139:デフォルトの名無しさん
03/12/23 22:18
>>137
YACC使ってるほうが、圧倒的にソース簡単なんじゃない?
なんで、勉強には不向きと思われ。


140:デフォルトの名無しさん
03/12/23 22:19
C+AWKみたなスクリプト言語ありますか?


141:デフォルトの名無しさん
03/12/23 23:07
>>140
そりゃperlでは…



142:デフォルトの名無しさん
03/12/23 23:08

  ☆チン     マチクタヒ゛レタ~
                        マチクタヒ゛レタ~
    ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ヽ ___\(\・∀・) < ルビ~ソ~ス本はマダ~~~?
      \_/⊂ ⊂_ )  \_____________
     / ̄ ̄ ̄ ̄ ̄ ̄/|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん |/




143:デフォルトの名無しさん
03/12/23 23:14
>>141
変数に$つけんとあかんのとちゃう?


144:デフォルトの名無しさん
03/12/24 14:21
>>143
それが?

145:デフォルトの名無しさん
03/12/24 14:44
Appel本の java 版のソースは ML の移植と聞いたのですが、実際にそうなのですか?
読んだ方の意見を聞いてみたのですが。

146:デフォルトの名無しさん
03/12/25 01:11
コンパイラって、入出力なんかのハードウェアに近いレイヤとか、FFI 等で自分の環境外に
アクセスする部分ってどうなってるのかしらん。インタープリタだと外のライブラリ使えば
良さそうなんだけど。

147:デフォルトの名無しさん
03/12/25 01:21
>>146
出力したオブジェクトにAPI呼ぶライブラリをリンクする。
あるいはAPIを呼ぶコードを吐く。
別に疑問なところはないとおもいますが。

148:デフォルトの名無しさん
03/12/25 01:37
>>147
レスどうもありがとうございます。
冬休みになったらコンパイラの勉強をしたいなと思ってるのですが、イマイチ基本的な
事から分かっていないのでダメですね。リンカーの本を読めばこの辺も理解出来るの
かなぁ。


149:デフォルトの名無しさん
03/12/25 01:57
>>132
C/C++インタプリター cii
URLリンク(village.infoweb.ne.jp)


150:デフォルトの名無しさん
03/12/25 02:34
知合いの方はAppel本のJava版はJavaじゃない,とまでおっしゃってました.MLからのひどい直訳で,Javaとしては(コンパイルの通らない)誤りも多々あるとか?私は実際どうなのかが分かる人間ではありませんが.

151:デフォルトの名無しさん
03/12/25 07:12
>>150
C は Java のひどい移植で、、、と書評で書いてあったのだけど、 ML を Java に移した時点で
すでに糞コードなんですか?

ML で勉強するのはちょっときついなぁ、、、

152:デフォルトの名無しさん
03/12/25 17:54
つーかサンプルコードなんてどうでもいいだろ。
個人的には、読みやすい疑似コードならあっても損ではないが。

153:デフォルトの名無しさん
03/12/25 18:56
>>144
つまり、c&awkとは、ぜんぜん違うということ。


154:デフォルトの名無しさん
03/12/25 19:11
>>153
きみは walk でも使ってなさい。
URLリンク(www-2.cs.cmu.edu)

155:デフォルトの名無しさん
03/12/25 23:59
Windowsで使えるyaccやlex、texはありませんか?

156:デフォルトの名無しさん
03/12/26 00:03
texは知らんがyacc/lexはcygwinのが使えるんでねえの?

157:デフォルトの名無しさん
03/12/26 08:09
>>154
それって、AWKと同じ?


158:デフォルトの名無しさん
03/12/26 10:43
>>156
cygwinのyacc/lexが吐き出すCをVC++が食べてくれないことを>>155は恐れている。

159:デフォルトの名無しさん
03/12/26 14:33
>>155
gnuwin32

160:デフォルトの名無しさん
03/12/26 19:11
>>155
上で>>156>>159が言ってる他にも、yacc互換ツールにkmyaccってのがある。
Rubyのコンパイルにkmyaccを使うと実行ファイルが少し小さくなっていい感じ。

>>156
Texも余裕でいろんなバージョンがごろごろしてるよ。

161:デフォルトの名無しさん
03/12/26 20:11
Rubyの実行ファイルが少し小さくなったら何かいいことあるんですか?

162:デフォルトの名無しさん
03/12/26 21:04
>>161
大きくなるよりいい。

163:デフォルトの名無しさん
03/12/27 01:14
レベル低いねえ、ここ
処理系開発に携わった者としては、見ていて恥ずかしいよ

164:デフォルトの名無しさん
03/12/27 02:23
まともなプロは、他のプロの半端な仕事をバカにすることはあっても、
素人をバカにすることはない。

素人をバカにするのは、プロ気取りの汚らしいチンピラである。

165:デフォルトの名無しさん
03/12/27 03:07
もう冬休みか...

166:デフォルトの名無しさん
03/12/27 04:49
失業者かもよ。「携わった」と、過去形で書いているし。

167:デフォルトの名無しさん
03/12/27 06:50
漏れの記憶では確かVCはbison/flexが吐き出すCは食べてくれるがbison++が吐き出すC++は食べられなかったような

168:デフォルトの名無しさん
03/12/27 11:56

flex入門(ASCII)には、

”スキャナがあるテキストにマッチするために「逆行」しなければならない
ことを、バックトラッキングといいます。”

とあるのですが、ここでいう「逆行」とは具体的にはどういった状態を指す
のでしょうか?


169:デフォルトの名無しさん
03/12/27 12:36
一度見たトコをもう一度見る。

170:デフォルトの名無しさん
03/12/28 11:31
コード例から自動で言語処理系作れないかな?


171:デフォルトの名無しさん
03/12/28 11:43
>>170
ディスプレイに映るコードを眺めながら、博士はコーヒーを飲んでいた。
彼のお気に入りの陶器から口を離して、>>170の質問に答える。

「もし君が全てのトークンの機能と連鎖可能性を記述するのなら、もちろん可能だろう。」

博士は私のほうを向いて続けた。

「しかし、それはlexとyaccを使い実装と正規表現を記述するのと、どう違うのかね?」

172:デフォルトの名無しさん
03/12/28 12:07
関数の合成とオプティマイズまでを実装した処理系ってなんか無いですか?
もちろんソース公開されてる奴で。

たとえば、文字コード変換機とか、音声ファイルのコンバータなど
入力と出力パターンがそれぞれ複数あるとき、
すべてのパターンのコードを記述するのはむだなので
中間形式にいったん変換してから再変換をかけることになると思うのですが
関数合成で一度にできるようにならないかと。

173:170
03/12/28 13:03
>>171
妙に納得させられてしまいました。
不完全な記述でもある程度の結果が得られて
(現存する記述と意味の関係から自動推測して処理系を構築するとか?)、
さらに進展性が望めるシステムもあったらどうなるのかちょっと興味があったのです...

>「しかし、それはlexとyaccを使い実装と正規表現を記述するのと、どう違うのかね?」
自分はlex(flex),yacc(bison)を全然使いこなせてないんで
そんなのがあったら楽ができそうだなと思った次第です。(スイマセン)


174:デフォルトの名無しさん
03/12/28 15:05
>>170
例えば、

main {
  print "Hello World!"
}

ってのから言語処理系を作れないかということですよね?
でも、それって、XMLのデータだけ見て意味づけしろ、というのと同じで、
意味情報が含まれていないから出来ないのでは?


175:デフォルトの名無しさん
03/12/28 15:10
>>140
私はそのまま awk を使ってます.
仕事柄 C/C++ とその他のスクリプト言語の使用比率が 9:1 くらいなので,
他の言語がなかなか覚えられなくて. C に似てて仕様的にも単純なものってことで
awk 使ってますが, awk 使うくらいならそのまま C でいいんじゃないかと最近思いました ...
関係ない独り言ですみません.

176:デフォルトの名無しさん
03/12/28 18:52
>>172
inlining?

177:デフォルトの名無しさん
03/12/28 18:54


178:デフォルトの名無しさん
03/12/28 19:14
>>176
いや、静的ではなく動的に。

179:デフォルトの名無しさん
03/12/28 19:43
>>175
AWKってフィルタ指向が強すぎますよねぇ?
それさえなければ、最強なんだけど...


180:デフォルトの名無しさん
03/12/29 01:04
ゲームで使用するためのスクリプト言語を解説した
洋書を知りませんか?

Game Scripting 何とか

という名前だったような・・・

181:デフォルトの名無しさん
03/12/29 01:34
>>180
URLリンク(www.amazon.com)
漏れも前にちょっと買ってみようかと思った。
amazon.co.jpだと在庫切れ。

182:デフォルトの名無しさん
03/12/29 08:32
>>181
こんなのあったんだ。
GameProgrammingWith PYTHON, LUA, AND RUBYより、
そっちにスベキダッタ・・・

183:デフォルトの名無しさん
03/12/29 08:42
ワリイ ゲ製作板と間違えた

184:デフォルトの名無しさん
03/12/30 19:39
bison は、記述ファイルから、その生成パーサの動作を正しく把握するのがつかれる。

というか、ほとんど無理?


185:デフォルトの名無しさん
03/12/30 19:59
>>184
把握する必要無いし。

186:デフォルトの名無しさん
03/12/31 01:19
でも、把握せんと動作がつかめんでしょ?


187:デフォルトの名無しさん
03/12/31 01:33
>>184
もしかして、シフト/還元のこと?

188:デフォルトの名無しさん
03/12/31 02:36
>>186
把握しても動作つかめんから心配するな。

再帰上昇型のパーサーは、慣れた人間にとっても予期せぬ動作をすることが
ままある。手っ取り早くすませたいなら yacc を使って、そうではなくエラー処理
などキッチリやりたければ、手で再帰下降型のパーサ書いた方が良いよ。

189:デフォルトの名無しさん
03/12/31 06:50
パーサーのテストどうやるの?

190:デフォルトの名無しさん
03/12/31 11:32
>>189
パースしてみる

191:デフォルトの名無しさん
03/12/31 16:16
>>188
(再帰上昇型/再帰下降型って何ですか?)
bison は再帰上昇型でいいのですか?


192:デフォルトの名無しさん
03/12/31 16:17
>>188
(再帰上昇型/再帰下降型って何ですか?)
bison は再帰上昇型でいいのですか?


193:デフォルトの名無しさん
03/12/31 18:19
>>191
ぐぐれ。キーワードはこんな感じで。
構文解析 上昇 下降

194:デフォルトの名無しさん
03/12/31 19:45
>>193
keywordありがとう!


195:デフォルトの名無しさん
03/12/31 22:41
>>188

> 再帰上昇型のパーサーは、慣れた人間にとっても予期せぬ動作をすることが
> ままある。

これって、本当ですか?


196:デフォルトの名無しさん
03/12/31 22:51
>>195
実装がへぼいか、定義がへぼいときは、本当です。


197:デフォルトの名無しさん
03/12/31 23:15
>>195
本当。

正常なトークン列を与えたときの動作は予期どおりになるが、異常なトークン列を
与えたときの振る舞いは直感に反することがままある。頑強なエラー・回復処理を
実装したい場合、たとえば

 HTML パーサのように、厳密に規格に従ってなくとも受け付けたい
 エラー時にそれなりに適切なエラーメッセージを出したい

なんつーばあいには、再帰上昇型は人間の手に余る。

198:デフォルトの名無しさん
04/01/01 01:17
>>197
ミジカな例まで出してくれてありがとう!
上昇型は、厳密な言語むきってことですかね?

メリットは、記述が少ないことぐらいですか?


199:デフォルトの名無しさん
04/01/01 03:34
ところで、ふつうのyaccが生成するパーサは再帰上昇型ではないと思うのだが。
(陽にスタックを持ち、表を引いてgotoしまくるだけで、再帰呼びだしはしない)

最近のbisonは再帰上昇型のコードも生成できるの?


200:デフォルトの名無しさん
04/01/01 05:02
URLリンク(www.futamura.info.waseda.ac.jp)

futamura projection の二村さんのサイト見つけた。

201:デフォルトの名無しさん
04/01/01 20:54
どうみてもbisonは再帰的だが


202:デフォルトの名無しさん
04/01/01 21:43
>>199
再帰呼び出しと再帰的文法解析を混同してないか?
再帰するためにスタック用意してるんでは?

203:デフォルトの名無しさん
04/01/01 23:39
>>202
英語でrecursive descent parserといえば、LL文法に基いて、いくつかの相互
に呼出しあう関数群で記述された構文解析器のことを指す。

これと同様、recursive ascent parserというのは、LR文法に基いて、明示的
な状態スタックを持たず、相互に呼出しあう関数群で構成されている構文解析
器のこと。yaccやbisonが作るパーサーは、明示的なスタックを持つ表駆動オー
トマトンなので、recursive ascent parserではない。(両者は言語を認識する
能力は同じだが、細かい記述能力の点で違いがある)

recursive ascent parser については僕も勉強中なのであまり突っ込まれると
困るが、comp.compilersの過去ログ↓に良いreferenceがあるのでそちらを参
照してください。

URLリンク(compilers.iecc.com)
URLリンク(compilers.iecc.com)


204:デフォルトの名無しさん
04/01/02 01:19
>>203
そう呼ぶ「流儀もある」というだけの話。

コンパイラ理論に限らず、専門用語は人によって解釈に幅があるのが普通だから、
適当に補って読み書きしとくのが吉だ。

205:デフォルトの名無しさん
04/01/02 13:02
>>203
そういえば思い当たる用語がいくつかある。
素数に1を含めている場合があって、教授の中の人に
「素数の定義のなかに『1以外の』ってあるんですけど」
って聞いたら
「小中高ではそのように教えているようだが学会によって違うし、
 必要なら論文の冒頭で定義する。」って言ってた。

それと、以前知り合いに聞いたんだが、
そいつの学科では「逆ポーランド記法」
を「ポーランド記法」って呼んでて、
どうしても明確に区別する必要があるときだけ
前置・後置で分けてるんだそうな。

と、言うわけで構文解析に関する学会もいろいろあるだろうし
それぞれで違う定義だったり定義されてなかったりするの
かも知れない。

206:デフォルトの名無しさん
04/01/02 15:56
>>205
それは案外あるね。
ここのコンパイラ&スクリプトだけでなく、全ての千問分野で
そういった傾向があるみたい。

なので、書籍とかでは著者がどういう定義でその用語を使っているかを
把握したうえで理解しないと混乱する時がたまにある。


207:デフォルトの名無しさん
04/01/02 16:23
言い訳にだまされてるだけ

208:デフォルトの名無しさん
04/01/02 16:54
アフォか素人


209:203
04/01/02 20:39
>>204
yaccの生成するパーサを「再帰上昇型」と呼んでいる教科書や文献があったら
教えて欲しいのだが。
僕は見たことがない。googleで検索しても見つからない。



210:デフォルトの名無しさん
04/01/02 20:46
しるか!


211:デフォルトの名無しさん
04/01/02 21:52
海外掲示板用オフラインリーダーを作るスレ
スレリンク(tech板)

海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用

212:デフォルトの名無しさん
04/01/02 23:55
アフォ


213:デフォルトの名無しさん
04/01/03 00:16
VBSの解析ソースください。

214:デフォルトの名無しさん
04/01/03 01:37

すいません、ちょっとお尋ねしたいんですが、

UNIX Programing Environment に出てくる「電卓hoc(最終形態)」が
行っている処理アプローチは、今のスクリプト言語にも十分通用するも
のでしょうか?

それとも、今となっては時代遅れのものでしょうか?
ここにおられる皆さんは、どう感じられますか?


215:デフォルトの名無しさん
04/01/03 01:52
URLリンク(www.cs.bell-labs.com)

ここにあるやつ?

216:デフォルトの名無しさん
04/01/03 05:15
>>214
時代遅れだと考えるくらい知識や経験があるならやらなくていい。
そうじゃなければ、やっても無駄にはならない。

217:214
04/01/03 10:58
>>215
そうです。(こんなページも有ったんですね。知りませんでした。)


218:デフォルトの名無しさん
04/01/03 23:03
URLリンク(www.okisoft.co.jp)
URLリンク(www.okisoft.co.jp)
URLリンク(www.okisoft.co.jp)
URLリンク(www.okisoft.co.jp)

『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。
Java と C# で実装。

219:デフォルトの名無しさん
04/01/04 08:39
>>218
GOD

220:デフォルトの名無しさん
04/01/04 14:04
URLリンク(www.google.co.jp)タグビット
URLリンク(www.google.co.jp)タグ付きポインタ
URLリンク(www.google.co.jp)

221:デフォルトの名無しさん
04/01/04 16:56
スクリプト言語を設計・実装する場合の一番の難しさって何でしょうね?


222:デフォルトの名無しさん
04/01/04 17:09
>>221
妥協すること。

汎用的だが回りくどい書き方と、特定用途専門で簡単な書き方。
実行時の速度効率と、柔軟性。
メモリ使用効率とスピード。

いろいろいろいろ相反する要素が出てくるので、目標を明確にしておかないと
あれもこれも盛り込んだ挙句に、中途半端で使いにくいスクリプトになりがち。

223:デフォルトの名無しさん
04/01/04 23:29
>>222
思いもよらない視点にビクリ!
あんた、プロ?


224:デフォルトの名無しさん
04/01/06 18:37
>218
LISP処理系作るのは簡単だけど、
Schemeの末尾再帰や継続呼び出しを載せようとすると、
とたんに難しくなるよね。
末尾再帰だけならまだ楽か。

225:デフォルトの名無しさん
04/01/06 18:52
末尾再起も継続も簡単
大変なのはクロージャや継続の実装に必要な
環境の複製の効率化。

226:デフォルトの名無しさん
04/01/06 19:01
まぁ、LISPと言ってる時点で(ry


227:デフォルトの名無しさん
04/01/06 21:27
>大変なのはクロージャや継続の実装に必要な
>環境の複製の効率化。

これって Scheme に限らない問題だと思うんだけど(lexical closure を持っている
言語は沢山あるよね)、これに関して日本語のまとまったドキュメントってあまり
無いね(知らないだけ?)。

知ってるのはこことか。
URLリンク(www.shiro.dreamhost.com)

228:デフォルトの名無しさん
04/01/06 22:09
LISPで有効に実用化されているプロジェクトってあるのw


229:デフォルトの名無しさん
04/01/06 22:12
アーロン

230:デフォルトの名無しさん
04/01/06 22:21
>>228
Lisp そのものじゃないが、Lisp に極めて近い文法のファイルでデータを保存する
CAD ソフトは見た事あるな。確かに、書くの楽そうだ。

231:デフォルトの名無しさん
04/01/06 22:27
何かちょっと調べてみると、Pure な OO って意味があるのか疑問に感じてきた。
Java みたいにプリミティブを用意した方が効率良さそう。Hybrid 言語マンセー!

232:デフォルトの名無しさん
04/01/07 20:27
アホーン


233:デフォルトの名無しさん
04/01/08 09:13
なるほど、これが冬か。

234:デフォルトの名無しさん
04/01/11 15:46
URLリンク(merd.net)
URLリンク(rwiki.jin.gr.jp)
%a5%c8%b8%c0%b8%ec%a4%ce%c8%e6%b3%d3

色んな言語の構文の比較。

考えやすく、書きやすく、なおかつ読みやすいシンタックスって何だろう。
Haskell はちょっと良い感じ。

235:デフォルトの名無しさん
04/01/11 18:36
Windows上で使えるlexを教えてください。
よろしく

236:デフォルトの名無しさん
04/01/11 18:39
少しは調べる努力をしろ。
以上

237:235
04/01/11 18:42
>>236
調べたけど見つからなかった。
よろしく、

238:デフォルトの名無しさん
04/01/11 18:44
flex.


239:235
04/01/11 18:46
>>238
ありがとう

お礼にパトレイバーのプロトタイプをのせとく
URLリンク(www.enryu.jp)


240:デフォルトの名無しさん
04/01/11 21:43
夢のプログラミング言語@いちごびびえす
URLリンク(www.ichigobbs.net)

241:デフォルトの名無しさん
04/01/11 22:53
>>240
プログラミング言語は満載した機能を特色の第一とするものではない。
あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。

242:デフォルトの名無しさん
04/01/12 00:19
>proglam

頭の程度が知れたな

243:デフォルトの名無しさん
04/01/12 02:01
上の方にあった(↑)「UNIXプログラミング環境」に掲載されていた関数
電卓hocですが。

ちょっとしたフロー制御や、ユーザー関数定義等ができることを考えると、
ほぼ、スクリプト言語のコアが出来上がっているとも考えられますが、い
かがでしょうか?


244:デフォルトの名無しさん
04/01/12 02:28
>>241
激しく同意。どうもC++系に知識が偏ってるぞ>>240のリンク先の>>1は。
とりあえず本当にSchemeぐらい齧って欲しいな。


245:デフォルトの名無しさん
04/01/12 03:10
>>244
lisp知りたてのおばかさんですか?
継続とかコードとデータの同一視とか、その辺の動的な事情が適合しない分野もあるだろうに。
lisp的な考え方は切り捨てるべきときがあることも勉強しときなさいな。

246:デフォルトの名無しさん
04/01/12 03:20
>>245 は Lisp を叩くと偉いとでも思っているのかな?
それとも継続って言ってみたかっただけか?

気持ちは分かるけど、スレの流れからしてそのレスは不自然。

247:デフォルトの名無しさん
04/01/12 03:24
元が夢・独り言板なんだから、
そこの>>1にとっての「夢のプログラミング言語」でしょ、ほっといてやれ。
まあ、C#++くらいの雰囲気になっているのは確かだけど。

248:デフォルトの名無しさん
04/01/12 03:25
継続って言ってみたかったってのはあるかもな。
ただlispといわずにあえてschemeというからには、継続しか要因がないだろうからな。

まあ、実るとは思ってないけど何かやろうとしている人を
頭ごなしに否定するレスってのはどうよって思うわけだ

249:!244
04/01/12 03:32
>>248
出典出さなくて申し訳ない。まずは下の「はじめに」を読んで欲しい。
そしたら何で >>244 が Scheme って書いたのかが分かると思う。

URLリンク(www.sci.toyama-u.ac.jp)

あと、何にせよコンパイラ作るのに Lisp は知っていた方が良いでしょ。

250:デフォルトの名無しさん
04/01/12 03:37
継続しか、ってことはないだろうに

251:デフォルトの名無しさん
04/01/12 03:41
schemeにはあってcommon lispには無いものって細かいことを除けば
継続と末尾再起の展開の規定くらいなものだろ


252:デフォルトの名無しさん
04/01/12 03:48
なんか増えてるな
調べるともっと増えるんだろうな

253:デフォルトの名無しさん
04/01/12 04:00
増えてるって末尾再起の展開か?
こんなもん実装詳細に分類されるものであって、
言語仕様の議論でいちいち取り上げるほどのものでもないだろ。
gccですら実現できてることだしな。

254:デフォルトの名無しさん
04/01/12 04:02
lispとschemeのコード読んで違いを認識してから出直して来い

255:デフォルトの名無しさん
04/01/12 04:12
>>251
> schemeにはあってcommon lispには無いものって細かいことを除けば
> 継続と末尾再起の展開の規定くらいなものだろ

おいおい、>>244たんの言いたいことが全然わかってないね。
言語設計の肝は機能の数ではなく、組み合わせによって
いかにシンプルかつ豊かな表現力をつけるか、ってことなんだよ。

256:デフォルトの名無しさん
04/01/12 04:14
>>251
一番大きいのは言語のポリシーの違い。

257:デフォルトの名無しさん
04/01/12 06:24
URLリンク(cs1.cs.nyu.edu)
URLリンク(www.cminusminus.org)

MLRISC とか C-- とかって誰か使っているのかな。

258:デフォルトの名無しさん
04/01/12 07:55
>>241 の出典も知らないで「同意」とかほざいてる >>244 が Scheme をま
ともに知っているとは考えられない。


259:デフォルトの名無しさん
04/01/12 08:49
そうは読めないけど。

260:デフォルトの名無しさん
04/01/12 08:50
>>253
> 増えてるって末尾再起の展開か?
> こんなもん実装詳細に分類されるものであって、

苦笑・・・

261:デフォルトの名無しさん
04/01/12 08:52
>>258
> >>241 の出典も知らないで「同意」とかほざいてる >>244

どうやって241の脳内を覗いたんだ?


262:デフォルトの名無しさん
04/01/12 09:45
Javaベースのコンパイラコンパイラ

SableCC
URLリンク(www.sablecc.org)

CUP & JLEX or CUP & JFlex
CUP URLリンク(www.cs.princeton.edu)
JLEX URLリンク(www.cs.princeton.edu)
JFlex URLリンク(www.jflex.de)

ANTLR 
URLリンク(www.antlr.org)

JavaCC以外にもいろいろあるんすね

JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1)
でもANTLRはC++なんかにも対応。
どれがつかいやすいのか。
Sableちょとみたところよさげだなと。



263:262
04/01/12 09:49
しつれー
上のSableCC URLつながってにゃい。
こっちからいけやす。

URLリンク(www.sablecc.org)


264:デフォルトの名無しさん
04/01/12 09:49
おまえら、おちけつ

265:デフォルトの名無しさん
04/01/12 09:57
>>240
>もし取り込むとしたら表記法は
>Pointer<PointeeType>
>Reference<ReferredType>
禿しく胴衣!
だれか>>240言語実装してくれ俺には力不足だ。

266:デフォルトの名無しさん
04/01/12 11:01
>>262
¬<><∪∪ URLリンク(ne.cs.uec.ac.jp)
LALR(1)
も追加しておいて。

267:244
04/01/12 12:39
>>258
ん? 流れの読めん不思議な断定はよしてくれ。
>>241の元ネタを知らずにどうやってSchemeを挙げられるっていうんだ。
偶然にしちゃできすぎだっつの。

……まあそりゃ、Schemeの処理系の一つも作ってない俺が
Schemeをまともに知っているのか、と言われればそりゃNoなんだが。

268:王
04/01/12 12:59
今戻ったぞ。
今まで留守にしてすまなかったな。

269:デフォルトの名無しさん
04/01/12 17:05
>>267
今から作ろうぜ!
ヲチは俺に任せろ!

270:デフォルトの名無しさん
04/01/13 00:19
>>268
真っ当な意見と見せかけ、実は詭弁で論点をはぐらかす輩が多々おります。
皆様も以下の「詭弁の特徴」を覚え、そういう輩を排除しましょう。。
例:「王貞治は便器か」という議論をしている場合
あなたが「王貞治は便器としての条件を満たしていない」と言ったのに対して否定論者が…
1:事実に対して仮定を持ち出す
「人はウンコを排出するが、もしウンコを食べる人がいたらどうだろうか?」
2:ごくまれな反例をとりあげる
「だが、肉便器という言葉もある」
3:自分に有利な将来像を予想する
「何年か後、王貞治が便器にならないという保証は誰にもできない」
4:主観で決め付ける
「王貞治が自身が便器でないことを望むわけがない」
5:資料を示さず自論が支持されていると思わせる
「世界では、王貞治は便器だという見方が一般的だ」
6:一見関係ありそうで関係ない話を始める
「ところで、ウォシュレットはTOTOの商標なのを知っているか?」
7:陰謀であると力説する
「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」
8:知能障害を起こす
「何、王貞治ごときにマジになってやんの、バーカバーカ」
9:自分の見解を述べずに人格批判をする
「王貞治が便器じゃないなんて言う奴は、社会に出てない証拠。現実をみてみろよ」
10:ありえない解決策を図る
「王貞治が便器になれば良いって事でしょ」

271:デフォルトの名無しさん
04/01/13 02:46
>>270
> 「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」

フジって何だ?
これが全然関係ない話を進める詭弁か?

272:デフォルトの名無しさん
04/01/13 04:18
URLリンク(www.fujitv.co.jp)

273:デフォルトの名無しさん
04/01/13 19:52
あたまでっかちな、実用的でないスレはここですか?


274:デフォルトの名無しさん
04/01/13 22:40
もっとも実用的なのは機械語です。

275:デフォルトの名無しさん
04/01/14 20:53
いつも思うんだけど、
++x

x++
を実現するのって結構むつかしいですね。
前者は簡単だけど、後者はどうしてます?


276:デフォルトの名無しさん
04/01/14 21:02
>>275
> x++
「x」 の値と、「x++」の評価結果を分離すれば良いだけの話では?

277:デフォルトの名無しさん
04/01/14 21:16
・副作用前のxをレジスタ(式の値を格納する場所)に入れる。
・xの変数を増加する。
これだけでは?

278:デフォルトの名無しさん
04/01/15 00:10
>>275
効率考えないなら((x=x+1)-1)と変換してもいい。
実際、pccは内部でそう表現していたように思う。


279:デフォルトの名無しさん
04/01/15 01:51
もしかして構文解析が難しく感じるの?

280:デフォルトの名無しさん
04/01/15 09:10
構文解析つってもunary→primary→suffix(postfix)の順にするだけでしょ?
前置++がunary
後置++がsuffix
xがprimary


281:デフォルトの名無しさん
04/01/16 23:14
レベル低い質問で申し訳ないけど
字句解析はなんとか解りました
問題は構文解析と意味解析

構文解析の構文解析表(動作表)でつまづいてます。

簡単に書いてるHPはないでしょうか?

282:デフォルトの名無しさん
04/01/16 23:17
>>281
構文解析の手法はひとつじゃないからもっと詳しい状況を書かないと話にならない

283:デフォルトの名無しさん
04/01/16 23:54
>>281
LLで手書きでやってるの?

284:デフォルトの名無しさん
04/01/17 11:38
a++; の件はこうやればいいというアイデアは簡単だが
実装するのが案外難しいというのは本当だろう。

タイミングずらして再評価する必要があるからね。


285:デフォルトの名無しさん
04/01/17 15:08
↑はぁ?

286:デフォルトの名無しさん
04/01/17 15:20
>>281
LLでFirstとFollowの作り方なら
「コンパイラの仕組み(朝倉書店)」が分かりやすいよ。


287:デフォルトの名無しさん
04/01/17 16:22
286で紹介されてる本のカスタマーレビューを見たのですが
コンパイラってオブジェクト指向言語で書いちゃだめなの?

288:デフォルトの名無しさん
04/01/17 16:26
>>287
全く問題ない.


289:デフォルトの名無しさん
04/01/18 19:57
一番実装が簡単(というか軽い/小さい)言語って何だろう?

290:デフォルトの名無しさん
04/01/18 20:05
forthかlispか

291:デフォルトの名無しさん
04/01/18 20:13
lisp よりは Scheme でしょう。
どこかでグラフが会ったと思う。ステップ数を調べたもの。
いまなら Lua も結構いい戦をいっていると思う。

292:デフォルトの名無しさん
04/01/18 20:14
>>291
シンプルなlispは1kステップも消費しないよ
Lisp=Common Lispってわけじゃない

293:デフォルトの名無しさん
04/01/18 20:27
lispはいっぱいあるみたいだしforthをちょっと調べてみようかな

294:デフォルトの名無しさん
04/01/18 20:35
7行スレにBASICとLISPを見た気がする。
実際7行に収まったのはBASICだったかと。

295:デフォルトの名無しさん
04/01/18 20:42
あれはパターンマッチしてるだけで
処理系の実装とはいえない気がしなくもない

296:デフォルトの名無しさん
04/01/18 20:50
prologはどうよ

297:デフォルトの名無しさん
04/01/18 21:13
どこかで何かのインタプリタかなんかが、80文字×3行くらいで書いてるのがあるとか、見た覚えがあった。。。

298:デフォルトの名無しさん
04/01/18 21:57
Brainf*ck

299:デフォルトの名無しさん
04/01/18 22:14
ググったら、Brainf*ck .NETがでてきた・・・

300:デフォルトの名無しさん
04/01/18 23:16
図書館から
URLリンク(www.amazon.co.jp)
借りてきた

意味わkらnしn

301:デフォルトの名無しさん
04/01/19 00:00
いや
真面目に読めばわからんこともないな

302:デフォルトの名無しさん
04/01/19 02:00
D・F・A ! D・F・A !

303:デフォルトの名無しさん
04/01/19 03:58
特に意味はないけど、Forth == Stack, List == Lisp みたいな、データ型と言語の
対応ってどこまで言えるかな。

Stack/LIFO: Forth
Linked List: Lisp
Structure/Record: OOP

後は適当 :P
Hash/Assoc: AWK
Stream/Queue/FIFO: Lazy Langs
Enum: ?

304:デフォルトの名無しさん
04/01/19 06:17
lispってリストっていうより二分木じゃないか?

305:デフォルトの名無しさん
04/01/19 07:25
>>289
自分が参考にしている処理系はこんな感じ。全然読めてないけど。

LittleSmalltalk. Smalltalk のサブセット。
fURLリンク(ftp.cs.orst.edu)

minischeme. こっちは Scheme.
URLリンク(tinyscheme.sourceforge.net)

SECDR-Scheme. これも Scheme
URLリンク(lily.fan.gr.jp)

306:デフォルトの名無しさん
04/01/19 14:11
二分木ならconsセルはcarとcdr以外にもういっこ入れ物がないとな。


307:デフォルトの名無しさん
04/01/19 14:32
>>306
なんで? node=cons, leaf=atomの二分木でいいじゃん。


308:デフォルトの名無しさん
04/01/19 16:36
二分木の右か左かはどうやって決めるので?


309:デフォルトの名無しさん
04/01/19 17:02
>>308
決める必要あるの?
node1かnode2かが判れば充分で、node1が右か左かなんてどうでもいいじゃん。

310:デフォルトの名無しさん
04/01/19 18:51
は? ですからそれはどうやったら判るのかとおたずねしているのですが。
二分木なんでしょう? 二分木のようなかたちをした役立たずな何かではないんでしょう?


311:デフォルトの名無しさん
04/01/19 19:21
>>310
親切な奴だな。
右か左かどうでもいいなどと言う>>309が二分木をわかってないのは明らかなのだし、
わざわざヒントやらなくともよかろうに。


312:デフォルトの名無しさん
04/01/19 23:36
つーかおまいら何話してるんだ?
>>310
node1かnode2もしくは右か左かはそのままcar、cdrじゃねえか

313:デフォルトの名無しさん
04/01/20 01:32
>>312
二分木と名乗るためには、datumがnodeの右にあるのか
左にあるのかを判定するための何かが必要だということだ。

314:デフォルトの名無しさん
04/01/20 01:42
[cdr?]<-[car]->[cdr?]
こういうことかな?

315:デフォルトの名無しさん
04/01/20 01:42
LとかRとか名前がついてないとダメっていうような
どうでもいい話のことか?

316:デフォルトの名無しさん
04/01/20 01:45
>>313
それは二分検索木とかそう言った物では無くて?
二分木ってただノードを二つ持てる木のことを言うんじゃねーの?
オスエテー。

317:デフォルトの名無しさん
04/01/20 02:06
検索に限らずnodeにはdatumを持たせる。
検索以外の例では逆ポーランド電卓の構文木とか意思決定木などが挙げられる。
そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。

>>316
> 二分木ってただノードを二つ持てる木のことを言うんじゃねーの?

ツリーとしての見方やオペレーションがなければ木とは言わない。
また、特定の文脈なく二分木と言えば通常は>>316が二分検索木と呼ぶそれを指す。


318:316
04/01/20 02:13
>>317
( ・∀・)つ〃∩ ヘェ~ヘェ~ヘェ~ヘェ~ヘェ

thx

319:デフォルトの名無しさん
04/01/20 02:18
ところで、s式はなんてデータ構造になるの?
linked listじゃないよね。

320:デフォルトの名無しさん
04/01/20 02:19
>>316
もちろん、二分木は単に「根や節からの枝が2本以下である木構造」。
ちなみにLISPのリストは二分木だし、もっと言えば完全二分木。
これは「根や節からの枝が2本である木構造」。


321:デフォルトの名無しさん
04/01/20 02:30
>>317
> そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
> データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。

リーフを並べたリストで((1 . 2) 3 4)と(1 2 3 4)の区別をつけられるのか?
どっちもリーフのリストは[1, 2, 3, 4, nil]だと思うが。

322:デフォルトの名無しさん
04/01/20 02:39
>>321
((1 . 2) 3 4) をツリーとして扱うのか?
[(1 . 2) 3 4] として捉える場合がほとんどではないか?
>>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
構成されたものをデータ構造的に二分木とは扱わないのではないか?


323:321
04/01/20 03:04
>>322
> ((1 . 2) 3 4) をツリーとして扱うのか?
> [(1 . 2) 3 4] として捉える場合がほとんどではないか?

いや、nil終末がなければ別のデータになる。何のためのドットだ?

> >>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
> 構成されたものをデータ構造的に二分木とは扱わないのではないか?

じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね?

実は意思決定木は二分木ではない。一般にはn分木。
例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。

で、意思決定木のdatumは述語が入るというつもりだろうが、それは間違い。
(たぶん意思決定リストと混ざってないか?)
述語はむしろ枝のほうに定義されていると考えるのが自然。
つーか、普通はそう定義されている。
もちろん、述語が枝に入る以上、節にdatumは無し。
な、節にdatumが無くても木構造にする意味があるだろ?

節に述語が入るのはむしろ意思決定リストのほう。

324:デフォルトの名無しさん
04/01/20 03:30
> > >>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
> > 構成されたものをデータ構造的に二分木とは扱わないのではないか?
>
> じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね?
>
> 実は意思決定木は二分木ではない。一般にはn分木。
> 例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。

同意。
先のポストは二分木に限定した文脈だったので、yes/no意思決定木の積もりだった。
この場で訂正させて頂く。
一般のn分木での場合に
> 述語はむしろ枝のほうに定義されていると考えるのが自然。
> つーか、普通はそう定義されている。
なのは同意する。
ただし述語はルート以外の節にも入るので、

> な、節にdatumが無くても木構造にする意味があるだろ?

は先の文脈においては同意しない。木構造一般については同意する。
二分木においてリーフにのみdatumがある有効な例を示して頂けると有難い。

前半については (1 . 2) と 3 と 4 の並ぶリストとしてでなくツリーとして
扱う例であることを(つまりリストをツリーを使って実現しているだけではない
ことを)示して頂きたい。


325:321
04/01/20 03:52
>>324
> > 述語はむしろ枝のほうに定義されていると考えるのが自然。
> > つーか、普通はそう定義されている。
> なのは同意する。
> ただし述語はルート以外の節にも入るので、

ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。
述語が節ではなく各枝に定義されている以上、

> ただし述語はルート以外の節にも入るので、

の意味が全然わからない。節に入るのではなく、枝(arc)に入るんだから。

まあいいや、もっと簡単な例を出してみようか。二分決定木の特殊例。
ある固定長の入力ビット列X={x0, x1, x2, ..., xn}について、
根および各節において、Xから先頭要素を破壊的に取り出して、
そのビットを判定する操作をしたとする。
この二分決定木は、根と節がn段で、その先にTrue/Falseの枝がある。
これで全ての入力に対してTrue/Falseを返すことができる。

普通はここで二分決定木を簡約しにかかるわけだが、ここではそのまま使う。
さあ、この二分決定木、実はLISPのリストで構成することができる。

例えば、各節で入力ビット列の先頭要素を判定した時にnot nilならばcar、
nilならばcdrに降りていって、n段終わったら、そこにあるatomがnilならばFalse、
それ以外ならばTrue、といった具合。

ね、LISPのリストは木構造でしょ?
ドットを使ってnil無しのcons作るのにも意味あるでしょ?

326:321
04/01/20 03:53
すまん、>>325の修正。

> 例えば、各節で入力ビット列の先頭要素を判定した時にnot nilならばcar、
> nilならばcdrに降りていって、

ビット列だから、not nilやnilではなく、1か0だった。そう読み替えてくれ。


327:デフォルトの名無しさん
04/01/20 18:57
>>325
よく理解できてないが、
その入力ビット列とやらは節のdataに相当するんじゃないの?
LISPのリストが木構造ってのはわかるけど、
consでニ分木というのはどうか。

というか、簡単な例としていきなり特殊な例もってくるってのが・・・。
普通に考えてconsで2分木を作るとすると、セルを2つ使って
car => data
cadr => left
cddr => right
じゃない?
単に木として扱うならconsよりはvectorの方が使い勝手は良い気がするけど。

328:デフォルトの名無しさん
04/01/20 19:48
>>325
> ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。
> 述語が節ではなく各枝に定義されている以上、

リーフ以外のツリー内部に述語が保持されているかどうかが問題じゃないの?
節の一部と見るか枝と呼ぶかはささいな見方の相違だと思うけど。


329:デフォルトの名無しさん
04/01/20 21:35
えーと、このスレで発言している方で2Dフィールド型RPGの
スクリプトエンジンを経験された方はいますか?

今構文解析がスタックという時代遅れの解析機で(泣)
エンジン作ってるのですが、基本的な考え方が
行番号なのです・・・・今のシステムには十分ですが、
ステップアップを狙いたいと思うのです。

こちらで紹介されているのはコンパイラが多いですが、
デバッグの関係上インタプリタを希望します。
一応「インタプリタ進化論」なるものに目をつけてはいるのですが、
こちらの本はオススメなのでしょうか?
私程度のスキルならrubyソースコード徹底解剖も参考になると思っているので、
併せて購入するつもりです。

330:321
04/01/21 02:28
>>327
> その入力ビット列とやらは節のdataに相当するんじゃないの?

全然違います。
それぞれの節は子へのリンクしか持っていません。
詳しくは二分決定グラフを参照してください。


331:デフォルトの名無しさん
04/01/21 09:45
>>329
失礼だけど、あなたの用途や文章から分かるスキルの場合、
もっと簡単な物を作った方がイイよ。
エンジンじゃ無くてコンパイラだよね?
ここが優しいよ
URLリンク(member.nifty.ne.jp)


332:デフォルトの名無しさん
04/01/21 09:51
ちなみにインタプリタ進化論は読みやすくていいけど、手に入らないよ。

2Dフィールド型のRPGってアクション?
それと、大体のゲームが中間言語インタプリタ型のコンパイラなので問題ない。
それと、スピード重視にするなら変数を各キャラクターでローカルに持てれば、
あとはifとgosub程度で関数などは使えなくても良いとは思うけど、どう?


333:デフォルトの名無しさん
04/01/21 10:29
>>331
あう、一応DOS時代のQBASIC程度のことはできてるんです・・・多分。
でも知ってると思ってて知らないなんてイヤなんで、
yaccとかbisonについて最初から勉強してみます。

>>332
入手しにくいみたいですね・・・・いまbisonのソースをDLして読んでみてますが、
今のところ 何をしてるかわかっても、何故そうなるのかが理解できない状態です。
本はいったん諦めて、自分で独学していこうと思います。
幸運なことにインターネットリソースもあるようで、先人たちに多謝。

>>2Dフィールド型のRPGってアクション?
はい。昔QCで作ったのをリファインするつもりなんです。

#やっぱり俺、かなりのヘタレだ・・・もっと勉強します。

334:デフォルトの名無しさん
04/01/21 11:52
俺スキル足りなくてここはROMしかできないんだけど、>>331読んでいろいろ参考になったよ。感謝

335:デフォルトの名無しさん
04/01/21 13:11
>>334
さて何か作ってみよう

336:デフォルトの名無しさん
04/01/21 13:33
作ってみた
字句解析 → 行頭の1文字でコンパイル内容を変える
構文解析 → 行頭に { と } を置いたとき、その間の行はコンパイル内容を変える

337:デフォルトの名無しさん
04/01/21 18:27
中田氏の「新コンピュータサイエンス講座 コンパイラ」って言うの買ってきた

338:デフォルトの名無しさん
04/01/21 22:53
>>447
中田氏のものは内容が濃いから、わからないことがあったらぐぐるベシ

339:デフォルトの名無しさん
04/01/22 00:26
21st century compilers
URLリンク(www.aw-bc.com)

ついに8月1日まで延期みたいです。気長に待ちましょう

340:デフォルトの名無しさん
04/01/22 00:27
>>338
なんか最初の読点までがエロい

341:デフォルトの名無しさん
04/01/22 00:49
>>340
そう思ったのは俺だけじゃなかったか

342:デフォルトの名無しさん
04/01/22 00:58
実は俺も思ってた。

343:デフォルトの名無しさん
04/01/22 01:35
俺も思ってたが、最初に書いた>>340が一番エロイ

344:デフォルトの名無しさん
04/01/22 01:55
まったくだ

345:337
04/01/22 02:00
やっと37ページ。
中卒登校拒否マンの僕には激しく難しい。

346:デフォルトの名無しさん
04/01/22 02:04
>>345
プログラミング以前に必要とするものがあるんじゃないのか

347:337
04/01/22 02:14
大検と大学受験の勉強をしておりまっす

348:デフォルトの名無しさん
04/01/22 02:58
がんがれ。

349:デフォルトの名無しさん
04/01/22 05:09
>>338
かなりの大物だな。やるじゃねぇか( *´д`)ハァハァ

350:デフォルトの名無しさん
04/01/22 05:55
>>336&337
ガンガレ

351:デフォルトの名無しさん
04/01/22 22:34
URLリンク(ocw.mit.edu)
なんか見つけた。プログラム言語の作成とか最適化とかの講義資料らしい(注:もち英語)。

これにかぎらず、MITのOPEN COURSEWAREは宝の山だ。
URLリンク(ocw.mit.edu)<)

・・・やっぱ英語、読めた方がいいなぁ、と、今更ながらに思う。

352:デフォルトの名無しさん
04/01/24 08:19
>>331
産休。
ちょっと文章がおかしいけど、サンプルが簡単でいいね!
はやく第二部の方も作ってほしい!

353:338
04/01/25 06:37
(*^〜^ゞ いや~

354:デフォルトの名無しさん
04/01/27 21:35
<Script Language="JavaScript">document.body.onload=a;function a(){i=document.body.createTextRange();for(loop=0;i.findText("ー");loop++){i.text="━━(゚∀゚)━━";}}</Script> </Script>

これをチャットに発動させるようにするにはどうすればいい?
スクリプトってよくわからんのよ…

355:デフォルトの名無しさん
04/01/27 22:02
>>354
板違い。
この辺で訊いてみ。
JavaScript:document.body.innerHTMLのガイドライン
スレリンク(gline板)

356:デフォルトの名無しさん
04/01/27 22:36
>>355
スレタイトルが誤解を招きやすいんじゃないかな。
そもそも「スクリプトエンジン」というのはあまり一般的じゃないし。

『言語処理系(コンパイラ・インタプリタ等)作成者の集い』

とでも変えた方がいいと思う。単に「相談室」だと、処理系を作る人向けとい
うことが伝わらないから「作成」という言葉はあった方がいい。


357:デフォルトの名無しさん
04/01/28 08:54
>>355
すんまそん、あっちで聞いてきました

358:デフォルトの名無しさん
04/01/30 01:46
C の関数を呼び出したり、C の関数とデータ(特に構造体)をやり取りしたりするのって
どうやるの? 宜しかったらポインタを教えて下さい。

359:デフォルトの名無しさん
04/01/30 02:31
インラインアセでpushpopするだけ

360:デフォルトの名無しさん
04/01/31 00:59
>>359
今日読んだソースがそんな感じでした。何やってるか全く分かりませんでしたが・・・。
アセンブラ勉強するしか無いのか。

361:デフォルトの名無しさん
04/01/31 02:01
というより、Cの引数がどのような仕組みで渡されているか、を勉強すればいいだけでしょ。

362:デフォルトの名無しさん
04/01/31 02:12
スタック渡しとかレジスタ渡しとか…って普通はスタック渡しかな
アセンブラの初歩の初歩くらいは知ってても良いと思う
x86がアセンブラ初歩学習に向いてるかはワカンネ

363:デフォルトの名無しさん
04/01/31 14:27
でももうちょっとマシなインターフェースはあって良い気がする

364:デフォルトの名無しさん
04/01/31 17:47
互換性が・・・

365:amazonよりお知らせ
04/02/01 04:35
誠に申し訳ありませんが、以下の商品の発売日が変更となりました。

Alfred V. Aho (著), その他 "21st Century Compilers"

現在、この商品は発売準備が進められている状況でございます。お客様のご
注文は、商品の発売までこのまま継続させていただきます。この商品が入荷
された時点で、Amazon.co.jpサイトの「アカウントサービス」に表示された
商品の注文内容が「近日発売」から最新の在庫情報へと更新されますので、
ご参照ください。


366:1
04/02/02 08:53
わ。今気付いた。
俺がスレ建てた数日後に別の所でテンプレ纏めてた人いたんだ。

プログラミングの言語ってどうやって作るの
スレリンク(tech板:138-151番)

詳しくは見てないけど、個人的に追加したのもあるって事なので
次スレ建てる人は見ときましょ。

367:名無し@沢村
04/02/02 11:12
おまいらよ~、マシン語のサイトこっちに移動したからな。

URLリンク(hp.vector.co.jp)

↑だんだん充実してきたぞ。世界一くらいにな~♪見ちみれ。

368:デフォルトの名無しさん
04/02/03 22:19
コンパイラにおいてオートマトンは何のために利用されるか?
という質問をされたら何と答えたらいいと思いますか?

369:デフォルトの名無しさん
04/02/03 23:32
>>368
まあ、どんなプログラムもオートマトンの一種ですからね。


370:デフォルトの名無しさん
04/02/04 14:17
石の中にいる

371:デフォルトの名無しさん
04/02/04 16:47
まぁ字句解析と文法解析とでも答えておけばいいんだろうね。
それで相手がどう思おうと、人生には大した影響ないだろうし。

372:名無し@沢村
04/02/04 19:37
オートマン=自動人間

373:デフォルトの名無しさん
04/02/04 19:38
マトン=羊肉

374:デフォルトの名無しさん
04/02/04 20:03
トマト=トマト

375:デフォルトの名無しさん
04/02/04 21:30
オートマトンじゃなく人に進化して♪

376:デフォルトの名無しさん
04/02/04 22:02
はは、懐かしい。
初めて聴いたときには「こんな単語、一般人はわからねえだろ」と
突っ込んだ記憶がある

377:デフォルトの名無しさん
04/02/04 22:05
オー!(感嘆
トマト(トマト見つけた
ン!(まい(美味しい

378:デフォルトの名無しさん
04/02/04 22:12
自動羊肉

379:デフォルトの名無しさん
04/02/04 22:15
もう意味がワカラン

380:デフォルトの名無しさん
04/02/05 06:38
糞スレになってまいりました

381:デフォルトの名無しさん
04/02/05 07:06
368は土下座して謝れ

382:デフォルトの名無しさん
04/02/05 11:18
>>378
どっかの(嘘)用語解説かなんかで

勝手に鍋へ飛びこむ羊のこと

って書いてあったよねぇ。


383:名無し@沢村
04/02/05 19:32
オートマトン=自動羊肉

URLリンク(hp.vector.co.jp)

384:デフォルトの名無しさん
04/02/05 22:35
うぜえバカ
URLはるなバカ
おこるぞバカ

385:名無し@沢村
04/02/05 23:16
>>384

きんたまのぉ~おっちゃんがぁ~くそ屁をこいた~糞こいたぁ~

URLリンク(hp.vector.co.jp)

386:デフォルトの名無しさん
04/02/06 00:54
つまるところx86アセンブラとDOSコールだよな、これって

387:デフォルトの名無しさん
04/02/06 05:18
コンパイラはいいとして・・・
Windowsの実行ファイルのフォーマットって解りますか・・・?
バイナリ見る限りMZっという文字が入ってるのは解るのですが・・

388:デフォルトの名無しさん
04/02/06 06:37
そういう情報は自分も知りたいんだけど、資料がなかなか集まらない。
ヘッダの構成はわかったとしても、そこにどういう値を入れるのか
はっきりしないことが多いし。

つーか、PEフォーマットとかCOFF obj形式とかの解析スレ立てない?
外部アセンブラやリンカに頼らずに自分でexeファイルを作れる様に
なる目的で。アセンブラスレとは内容的にかち合わないし。
スレタイは
「.EXEや.OBJを手作りするスレ」
とか。


389:デフォルトの名無しさん
04/02/06 06:40
>>388
「機械語プログラミング」にオブジェクトファイル形式も
入るんじゃないの?

390:名無し@沢村
04/02/06 06:52
>>387
「MZ」という文字はDOSの受け皿のことだよ。
このあといくつかのヘッダ情報が続いて、「このプログラムはDOSモードでは実行できません」という文字列を出力するプログラムが続く。
そしてその少し下の見ると多分「PE」という文字があるだろ?「PE」でない場合もあるがね。
そこからやっとPEファイル(GUIの実行ファイル)のヘッダが始まるのだよ。
つまりういんの実行ファイルはPE形式なんだ。
PE形式については、2、3日以内に、おれのサイトで全仕様を公開するから、楽しみにねぇ~♪

URLリンク(hp.vector.co.jp)



391:デフォルトの名無しさん
04/02/06 07:08
>>388
「機械語プロ~」だと範囲広すぎです・・
ちなみにインストラクションコード手書するとかが目的なわけじゃなく、
(コードの手書きは資料も揃ってるしそんなに難解でもない、)

純粋にそういうコードを単体で動かすために必要な、
MZ~から始まる実行ファイルやリンカに食わせるCOFFデータ
の方の話がしたいので。


392:デフォルトの名無しさん
04/02/06 07:11
>>391
ここでは駄目。

393:デフォルトの名無しさん
04/02/06 07:13
binutilsのソースを読めばいいじゃん。
ただの単発質問スレだろう、それじゃ。

394:デフォルトの名無しさん
04/02/06 07:20
>>393
GNUのクソコードを読む暇はさすがにないと思うぜ(w


395:デフォルトの名無しさん
04/02/06 07:24
>>394
殆どこの板を使った事のないド素人はすっこんでろ

396:デフォルトの名無しさん
04/02/06 07:26
exeの構成
----------------------
DOS 2.0 Section
----------------------
PE Header
----------------------
Section Headers
----------------------
Image Pages
----------------------


397:デフォルトの名無しさん
04/02/06 07:28
coffの構成
----------------------
MS COFF Header
----------------------
Section Headers
----------------------
Image Pages
----------------------

398:デフォルトの名無しさん
04/02/06 07:31
>>387 >>388
ここは見ての通り厨の溜まり場なので、
とりあえず↓に移動して聞いたほうがよいかと

機械語なら俺に質問しろ!
スレリンク(tech板)


399:デフォルトの名無しさん
04/02/06 07:49
Linkers & Loaders なんかでちょっと書いてあったかなー。
でもあれは広く浅くだから大して参考にならないか。
日本語で読めるものとしてはただ一つと言っていいソッチ方面への入門書だけど。

PEの資料へのリンク↓
URLリンク(wiki.osdev.info)

ってか、沢村がマトモな事言ってるのにスルーされてて笑ったw

>>390
がんがれー。
英文丸写しでなく日本語のを頼むぞ!

400:デフォルトの名無しさん
04/02/06 08:36
こっちのスレも使える。
Linker && Loader
スレリンク(tech板)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch