トップページ⇒tech
1001コメント304KB

「コンパイラ・スクリプトエンジン」相談室 3

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
yaccやlexの使い方やら言語仕様やらの話題。

前スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)

関連リンクは多分 >>2-8 あたり
0002デフォルトの名無しさんNGNG
コンパイラ等を扱ったドキュメント

色々なツールの紹介
http://catalog.compilertools.net/

コンパイラおよびコンパイラコンパイラに関する本
http://www.ulis.ac.jp/library/Kanpo/Vol14No3/nakai.html

コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml

スクリプティング言語資料室(仮) (リンク)
http://www.kt.rim.or.jp/~kbk/

Compiler Construction
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html

Compiler Construction (1997)
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html

再帰下降構文解析の手法
http://member.nifty.ne.jp/nakamula/recurs.htm

情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html

正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm

コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/
0003デフォルトの名無しさんNGNG
Asm関係

Links and Selected Readings
http://www.gnu.org/software/gcc/readings.html

NASM Manual (翻訳は途中まで)
http://guriponn.at.infoseek.co.jp/nasmdoc0.htm

Intel(R) Literature Center (Intelのドキュメントはこちらから)
http://www.intel.co.jp/jp/developer/design/litcentr/index.htm

インテル(R) Itanium(TM) プロセッサ
http://www.intel.co.jp/jp/developer/design/itanium/family/index.htm

Streaming SIMD Extensions 2 (SSE2)
http://developer.intel.com/software/products/college/ia32/sse2/index.htm
0004デフォルトの名無しさんNGNG
Lex(Flex) Yacc(Bison) 構文解析

UNIX板
yacc & lex
http://pc.2ch.net/test/read.cgi/unix/1031801314/

Lex and YACC primer/HOWTO (邦訳)
http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html

Turbo Pascal Lex/Yacc
http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html

Jim Roskind's LALR(1) C++ Grammar
http://www.empathy.com/pccts/roskind.html

Flexと Bisonを同時に使う
http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html

KITE_ASM (yacc,lex)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/lex/

Cygwin
http://www.cygwin.com/

GNU utilities for Win32
http://unxutils.sourceforge.net/
0005デフォルトの名無しさんNGNG
その他のパーサジェネレータ等

ANTLR(非yaccのパーサジェネレータ)
http://www.antlr.org/

JavaCC(Java Compiler Compiler)
https://javacc.dev.java.net/
http://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html

¬<><∪∪ (notavacc)
http://ne.cs.uec.ac.jp/~koto/notavacc/

boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
http://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
http://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0006デフォルトの名無しさんNGNG
ガベコレ

GC FAQ -- draft
http://www.iecc.com/gclist/GC-faq.html

A garbage collector for C and C++
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
0007デフォルトの名無しさんNGNG
処理系,スクリプト

kikyou.info (吉里吉里というゲームのスクリプト)
http://kikyou.info/

tiny C コンパイラ (C)
http://www.watalab.cs.uec.ac.jp/tinyCabs.html

Portable Object Compiler (Obj-C >> C のトランスレータ?)
http://users.pandora.be/stes/compiler.html

自作コンパイラの部屋(PL/1, Pascal等)
http://www.tokumaru.org/
0008デフォルトの名無しさんNGNG
参考書籍

●コンパイラ 原理・技法・ツール 1&2
http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
通称ドラゴンブック。バイブル。

●コンパイラ構成法 原田 賢一
http://www.amazon.co.jp/exec/obidos/ASIN/4320029224/
http://www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード)

●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
一冊で済ませたい人へ。

●コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
最適化がメイン。

●コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
薄い奴(185p)を読みたい人に。
0009デフォルトの名無しさんNGNG
以下未整理とネタ

shuJIT (JITについて)
http://www.shudo.net/jit/index-j.html

ギコBASIC
C言語版
http://page.freett.com/gikob/gikobw00047.zip
C++版
http://page.freett.com/gikob/gbtl-beta3.zip

計算機能論ホームページ
(消えているので、どうしても見たければarchive.org等を利用する事)
http://buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/index.html

YACC link
http://www2.dewa.or.jp/rock/camp/yacc/whatyacc.htm
0010デフォルトの名無しさんNGNG
なお、byaccはどこへリンクするか迷ったので、日和って省いてあります。
ソース読んで学習する用途に、って事でkmyaccなんかも入れて良かったかも。
Compilers and Compiler Generators も迷い迷って結局入れてません。
(http://www.scifac.ru.ac.za/compilers/)
spiritの位置も少し迷ったのですが、一応パーサジェネレータ「等」って事で。
リンクは一応チェックしたつもりですが、間違ってても勘弁して下さい。
以上。
0011デフォルトの名無しさんNGNG
>>1
>(dat落ち)
この部分はいらなかったな。失敗。
0012デフォルトの名無しさんNGNG
12
0013デフォルトの名無しさんNGNG
糞スレさらしあげ
0014デフォルトの名無しさんNGNG
             __.ノ)
            ( _(
            (.___.)
          || 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
0015デフォルトの名無しさんNGNG
>>1
サンクス、自分も立てようかと思ってたんだけど、リンクが揃えられなくて・・・
しかし、いきなりの素敵な洗礼ですな。
>>13-14
殆どこの板を使った事のないド素人はすっこんでろっつーの
0016デフォルトの名無しさんNGNG
(;´Д`)ハァハァ
0017デフォルトの名無しさんNGNG
ハウディー!(^O^*)
0018デフォルトの名無しさんNGNG
            ,,、、、,,,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;;:;;.;.;:.',
0019デフォルトの名無しさんNGNG
>>1乙。
洋書だけど重要そうなのでこれも貼っとく。

21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
ペーパーバック版: http://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
ハードカバー版: http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
0020デフォルトの名無しさんNGNG
>>19
やべ、前スレ最後に出た一番重要な奴を忘れてた。
しかし高いなあ……。

あと書き忘れましたが、
beroさんとこの機械翻訳ベースの資料は軒並み消えてしまったので
NASM Manualのリンク先をFreeDOSのぐりぽんさんの所へ変えています。
まあ気合い入れて英語読めば問題無いんですが。
0021デフォルトの名無しさんNGNG
Compilers Principles, Techniques, and Tools
すなわち、通称「赤ドラゴンブック」でコンパイラのこと一般を勉強しているものです。
最近、「ドラゴンブックも内容が古くなってきた」という意見を耳にしたのですが、
どこらへんが古くなってきているのか教えて下さい。
0022デフォルトの名無しさんNGNG
>>21
1985年の本ですから古くなるのも無理はないでしょう。
あの本以降に発展した技術には、思いつくものだけでも

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

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

dragon bookが終ったら、次は最適化に的を絞った本を読めばいいでしょう。
日本語なら>>8の中田先生の本あたりでしょうか。
002321NGNG
>>22 ありがとうございました。調べてみます。
0024デフォルトの名無しさんNGNG
新スレ乙。

21世紀ドラゴンブックまだコネー。
0025デフォルトの名無しさんNGNG
洩れはタイガースフアンだ!
というのはおいといてw

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

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

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

どこかおかしいですか???
0026デフォルトの名無しさんNGNG
>>25
単項演算子に優先順位指定は必要ないのでは?
文法の書き方にもよるけど、普通は

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

てな感じでうまく行きますよ。
002725NGNG
>>26
情報ありがとうございます。

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

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

ちなみに、

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

みたいに、指定しています。
0028デフォルトの名無しさんNGNG
やっぱ、%rightが正解かなぁ?

%left で ---5 の場合だと、(--) を処理せんあかんから、
0029デフォルトの名無しさんNGNG
ahoの発売は来年に持ち越しか

…知らない人がこのレスを見たら意味不明だろうな
0030デフォルトの名無しさんNGNG
%left と %right の結果をbisonで比べてみても変化なし、
どちらも、正しく ---5 を処理できる。

で、生成されたcソースを見てみたが、なんと(ry
0031デフォルトの名無しさんNGNG
>>29
それってなんデすか?
0032デフォルトの名無しさんNGNG
>>31
21st Century Compilers
http://www.amazon.co.jp/exec/obidos/ASIN/0321131436

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


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

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

expr : '~' expr | expr '~'

このとき、%left '~' なら、~x~は(~x)~と解釈され、%rightなら~(x~)と解釈
されます。
003427NGNG
>>33
なるほど!明解な回答をありがとうございました。

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

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

***

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

ちょっと高めですが、参考になるのなら、と思っています。
0035デフォルトの名無しさんNGNG
rubyのってもうすぐWeb上でも全公開じゃなかったっけ?
確か初めの章だけは既に公開されてるよね。
0036デフォルトの名無しさんNGNG
>>34
あんなのに金払う意味無いって。
どうしても読みたいなら図書館行ってこい。
0037デフォルトの名無しさんNGNG
>>36
煽りじゃなく、できれば理由を教えてくれ。
おれの場合、あの本読んでいて苛々するんだが、理由を明確に
説明できるほどのスキルがないんで、他の人の意見も聞きたい。
0038デフォルトの名無しさんNGNG
>>35
なるほど、HPみたら、そんな感じに宣言されてますね。
しかも、この12月でほぼ1年たつ模様。

ちょっと期待。
0039デフォルトの名無しさんNGNG
>>34
>>8 にある本ではダメなの?
0040デフォルトの名無しさんNGNG
全文公開は延期してもらってもかまわないから、青木さんにはオライリーの
lex & yacc に変わるような本を書いてほしい。
0041デフォルトの名無しさんNGNG
>>8
佐々 政孝さんの本は出版が少し古いんですね。
0042デフォルトの名無しさんNGNG
>>39
全部コンパイラ系の本、
rubyはインタプリター
0043デフォルトの名無しさんNGNG
>>42
コンパイラはネイティブコードを生成することが多くて、
インタプリタはしないことが多いくらいで
やることは大体一緒だと思うけど。
0044デフォルトの名無しさんNGNG
インタプリタはしないことが多いんじゃなくてしないだろ。
0045デフォルトの名無しさんNGNG
Java VM の HotSpot とか。
0046デフォルトの名無しさんNGNG
>>43
違うのは最適化くらいか?
0047デフォルトの名無しさんNGNG
はっきりいって全然ちがう。(コンパイラとインタプリタ)
同じように使えるのは、字句解析器ぐらいか?
0048デフォルトの名無しさんNGNG
構文解析も意味解析も共通なはずだが。
なんで字句解析だけ?
0049デフォルトの名無しさんNGNG
>>47
C言語にはコンパイラとインタプリタが存在します。
本当に、同じように使えるのは字句解析だけだと思いますか?
0050デフォルトの名無しさんNGNG
構文木作るまでは大方一緒な気がする
0051デフォルトの名無しさんNGNG
釣れた?
0052デフォルトの名無しさんNGNG
LISPはいきなり構文木が手に入る
0053デフォルトの名無しさんNGNG
>>49
コンパイラとインタプリタを備えた C の処理系なんてあったっけ?
大抵どっちかだから、共通している部分が多い事の事例にならないような。

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

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

int main() {

// 以下略
// 以上妄想
0054デフォルトの名無しさんNGNG
>コンパイラとインタプリタを備えた C の処理系なんてあったっけ?
作らない(作っても意味無い)だけだろ
0055デフォルトの名無しさんNGNG
>>54
だから、共通している部分が多い事の事例にならないだろ。
0056デフォルトの名無しさんNGNG
>>55
同様な構文を持つ言語のインタプリタとコンパイラで
構文解析が共通化できない理由は何ですか?
0057デフォルトの名無しさんNGNG
>>56
そこには異論は無いです。細かい突っ込みスマソ。
0058デフォルトの名無しさんNGNG
Dylan や OCAML や Haskell はインタプリタとコンパイラの両方持ってるね。
Common Lisp もだけど。
0059デフォルトの名無しさんNGNG
>>58
源流がLISPだからね。
0060デフォルトの名無しさんNGNG
MLの源流はlispでねーぞ
0061デフォルトの名無しさんNGNG
っつーかDylanだけじゃん
0062デフォルトの名無しさんNGNG
http://www.levenez.com/lang/
0063デフォルトの名無しさんNGNG
>>62
SchemeがAlgolから受け継いでるのって何?


0064デフォルトの名無しさんNGNG
>>63
lexical scopeじゃないかな?
0065デフォルトの名無しさんNGNG
構文解析器は、理論上はインタプリターやコンパイラに無関係に
整理可能であるが、現実問題としては、そうはならないということだろう。
0066デフォルトの名無しさんNGNG
きょう、rubyのソース開設本みつけたけど、
高いなぁ〜と感じた。

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

とりあえず、公開待ちます。
貧乏人で、スマソ
0067デフォルトの名無しさんNGNG
>>66
2000 円で買えるコンピューター書籍はそれほどないと思うが?
なにが売ってても買わないの?
0068デフォルトの名無しさんNGNG
bison本やlex本(GNUプレス)は
みんな安いよw
0069デフォルトの名無しさんNGNG
これ?
http://www.amazon.co.jp/exec/obidos/ASIN/4844317210/
良さそうな本じゃん。Perlでこういう本ってあったっけ?
0070デフォルトの名無しさんNGNG
>>69
Perlはソースコードが多すぎる。
0071デフォルトの名無しさんNGNG
>>68
それってinfoで全文ローカルで読めるやつのこと?
007268NGNG
>>71
infoは使ってないのでよくわからんが、そうかもしれない。
実はもれも、本文はどこかで(英語???)読んだ記憶があった。

でも、手元に書籍であると、またちがうんだな、これが!
0073デフォルトの名無しさんNGNG
>>72
たしか、利益の一部は FSF に寄付されるんじゃなかったかな。

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

The Implemetation of the Icon Programming Language
http://www.cs.arizona.edu/icon/ibsale.htm
0074デフォルトの名無しさんNGNG
yacc/lex使ってSQLパーサ作りたいんだけど、挑戦したことあるひといますか?
0075デフォルトの名無しさんNGNG
lex & yacc のサンプルがそのままSQLパーサだったような記憶。
0076デフォルトの名無しさんNGNG
>>75
そうそうあったあった。どこかにサンプルコード落ちてたよ。
英語版だけど
0077デフォルトの名無しさんNGNG
>>76
コードが英語なのは普通じゃ…。
0078デフォルトの名無しさんNGNG
>>73
flexは読みやすかったけど、bisonは読みにくかった。
やはり、難しいからですかね???
0079デフォルトの名無しさんNGNG

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

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

な領域ですよね?

みなさん、本職は何をされているんでしょうか?
やはり、プロのコンパイラorスクリプト屋さんなんでしょうか?
0080デフォルトの名無しさんNGNG
>>79
プロのコンパイラ屋(コンパイラだけ作っててメシが喰える人)ってかなり少な
いと思う。(OS屋はもっと少ないけど。)

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

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


0081デフォルトの名無しさんNGNG
>>79
ゲーム屋も多いと思う。
0082デフォルトの名無しさんNGNG
出来合いのエンジンを利用する場合でも、実装を知っていないと
どうにもならんからね。
0083デフォルトの名無しさんNGNG
>>82
ネタw
008474NGNG
>>75、76 そのサンプルってどこにありますか?
もし知っていたら教えてください。
0085デフォルトの名無しさんNGNG
オライリーの yacc/lex 本。
008674NGNG
おおおー。なるほど。早速買ってみようと思います。
008774NGNG
ところでネットで見つけようとしても見つからないですね。
PostgreSQLとかのソースを見ればいいのかしらん。
008885NGNG
>>87
だからオライリーのサイトにあるよ。
http://examples.oreilly.com/lex/
008974NGNG
>>85
きゃーありがとうございます。
0090デフォルトの名無しさんNGNG
>>80
おお〜、すごい!
本職&プロですか!

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

俺はフリーのプログラマだけど、
お金をもらえてこういう楽しい仕事が出来るときが一番嬉しいね。
0092デフォルトの名無しさんNGNG
>>91
おお〜、「フリーのプログラマ」で、しかもコンパイラまで
書けるのですか!
なんか括弧イイ!ですねぇ〜!

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

キーワードは Bison/Flex (またはYacc/Lex)。
これらのツールが食べられるような特殊な書式さえ覚えれば、
サルでも※簡※単※な※コンパイラなら書ける。
# ただし、サルにはGCCは書けない。
0095デフォルトの名無しさんNGNG
簡単なコンパイラ書くぐらいならGCCの移植作法を覚える方が
まだ ※簡※単※?
0096デフォルトの名無しさんNGNG
簡単なコンパイラ書く方が※簡※単※
0097デフォルトの名無しさんNGNG
※強※調※し※た※い※語※句※を※※※で※強※調※す※る※ス※レ※は※こ※こ※で※す※か※
0098デフォルトの名無しさんNGNG
*** おおっと テレポーター ***
0099デフォルトの名無しさんNGNG
>>95
UNIX USERのGCCプログラミング工房とか読んでると
すんげーキツそうなんですが。
0100デフォルトの名無しさんNGNG
http://www.wnishida.com/~wmemo/?date=20031125
こんなんとか。
0101デフォルトの名無しさんNGNG
誰かが移植してくれるのを待つのが一番簡単。
0102デフォルトの名無しさんNGNG
>>98
年 * 寄 * り * は * カ * エ * レ * !
0103デフォルトの名無しさんNGNG
*** いしのなかにいる! ***
0104デフォルトの名無しさんNGNG
>>103
俺がさんざん書こうと思って我慢してたのに(w
0105デフォルトの名無しさんNGNG
>>103-104 わらた
0106デフォルトの名無しさんNGNG
VC++でyaccとlexを使ってexeを作りたいのですが、
うまくいきません。みなさんはどうやってやっていますか?
0107デフォルトの名無しさんNGNG
>>106
yaccとlexの出力ファイルをコンパイルして使ってる。
0108デフォルトの名無しさんNGNG
なんでlex/yaccつかうひつようあるの?
win系で?
0109デフォルトの名無しさんNGNG
>>108
ちなみに自分は何を使ってるんだ?
0110デフォルトの名無しさんNGNG
>>109
それはあんたしか知らない。
0111デフォルトの名無しさんNGNG
まともに使えるスクリプト言語って、なんでこんなに少ないんでしょうね?
0112デフォルトの名無しさんNGNG
>>110
その突っ込みは板違い
0113デフォルトの名無しさんNGNG
>>111
それはお前が使えてないだk(ry
0114デフォルトの名無しさんNGNG
>>110
質の低い書き込みするなよ
0115デフォルトの名無しさんNGNG
>111
マジできくが、それじゃどんなスクリプトが欲しい?
0116デフォルトの名無しさんNGNG
>>111
では、使えないと思ったスクリプト言語を理由と共に列挙してみよ
0117デフォルトの名無しさんNGNG
perl ウンコ
0118デフォルトの名無しさんNGNG
Perlが一番速いんじゃない?汎用的なスクリプト言語の中では。
ああいう方向もありだと思うよ。
0119デフォルトの名無しさんNGNG
速くはないだろperlは、早いけど
0120デフォルトの名無しさんNGNG
インタプリタを初めてつくりたい人に「これをよめ」という本はありますか?
洋書・和書は問いません。

上の方のレスを見るとコンパイラとインタプリタは少し違うようなので、、、
0121デフォルトの名無しさんNGNG
ホントーに初めてで右も左もわからないならCマガジン2000年5月号がお薦め。
0122デフォルトの名無しさんNGNG
http://www.cmagazine.jp/contents/200005.html
特集1 スクリプト言語を作ろう インタプリタの構造と設計
0123デフォルトの名無しさんNGNG
>>120
bison, flex のドキュメント。
gcc の *.y ファイル。
0124デフォルトの名無しさんNGNG
字句解析は正規表現のようにした方がいいですか・・・

ハッシュにして48個(64個)を作ってそれぞれをチャインで
繋いで予約語と関数名と変数等を検索して方が早くないですか・・・
0125デフォルトの名無しさんNGNG
>>124
そう思うならそうすればいい。
っていうかそれでいい。
なにか問題でも?
0126111NGNG
パール:記述方法が暗号的すぎ
オーク:使用目的が限定的すぎ
るび〜:モデル化が変態的すぎ

>>122
もう手にはいらんのとちゃう?
0127デフォルトの名無しさんNGNG
>>126
バックナンバー情報をチェックしたら
2000年のは無いみたいだね。
だが、大学の図書館とかなら多分ある。
漏れの母校の資料室にもあった。
っていうか俺んちの図書室にもある。
公的な図書館なら申請すれば
他の図書館から取り寄せてくれたりもする。
絶望的なほどではない。
でも、そこまでするなら本屋で他の本見繕った方がいい罠。
0128デフォルトの名無しさんNGNG
>>124
自分もハッシュです。
256でチェインしてます。
記号の"{"ごとにハッシュ表を新たに作り、
新しいハッシュ表から古い方に向かって調べます。
グローバル用は別に1個作り、
関数を呼ぶ場合にも、全く別のセットを作ります。
(じゃないと、下部の関数から上位の変数がみえたりしちゃいますからね)

ちなみに、ハッシュを使わずに作った物は、
6万語ぐらいの定義、10万回くらいの参照、マクロ展開があるファイルのコンパイルに10分、
ハッシュを使った物は30秒ぐらいでした。
0129デフォルトの名無しさんNGNG
>>124
今まではハッシュだったけど、
最近、キーワードだけswitch文の羅列で分別するようにしてみた。

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

0130デフォルトの名無しさんNGNG
>>127
> 公的な図書館なら申請すれば
> 他の図書館から取り寄せてくれたりもする。

こんど近所の図書館でも聞いてみよ。
千葉県だけど取り寄せてもらえるかな、、、
0131>>124NGNG
単純にflexじゃあかんの?
0132デフォルトの名無しさんNGNG
Cコンパイラのソースで読みやすいの教えろ
013346NGNG

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

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

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

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

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

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

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

7.K 正常な人間   A 異常な人間(レッテル)
013446NGNG
8.K&A 死

9.K&A      来世

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

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

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

13.K&A    1.に戻る

これは事実。広めようぜ

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

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

0136デフォルトの名無しさんNGNG
最近のスクリプト言語って、オブジェクト指向ばっかりね。
0137デフォルトの名無しさんNGNG
>>132
Bruce evans C Compiler (BCC) がおすすめ
16bitコード生成の最適化無しだけど、ソース分量も多くないし
再帰下降なんでyaccとかも使ってない
作者のBruce EvansはMinix386パッチ開発などで知られる
一応ELKSのコンパイルにも使用されている
0138デフォルトの名無しさんNGNG
えー・・・
0139デフォルトの名無しさんNGNG
>>137
YACC使ってるほうが、圧倒的にソース簡単なんじゃない?
なんで、勉強には不向きと思われ。
0140デフォルトの名無しさんNGNG
C+AWKみたなスクリプト言語ありますか?
0141デフォルトの名無しさんNGNG
>>140
そりゃperlでは…

0142デフォルトの名無しさんNGNG

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


0143デフォルトの名無しさんNGNG
>>141
変数に$つけんとあかんのとちゃう?
0144デフォルトの名無しさんNGNG
>>143
それが?
0145デフォルトの名無しさんNGNG
Appel本の java 版のソースは ML の移植と聞いたのですが、実際にそうなのですか?
読んだ方の意見を聞いてみたのですが。
0146デフォルトの名無しさんNGNG
コンパイラって、入出力なんかのハードウェアに近いレイヤとか、FFI 等で自分の環境外に
アクセスする部分ってどうなってるのかしらん。インタープリタだと外のライブラリ使えば
良さそうなんだけど。
0147デフォルトの名無しさんNGNG
>>146
出力したオブジェクトにAPI呼ぶライブラリをリンクする。
あるいはAPIを呼ぶコードを吐く。
別に疑問なところはないとおもいますが。
0148デフォルトの名無しさんNGNG
>>147
レスどうもありがとうございます。
冬休みになったらコンパイラの勉強をしたいなと思ってるのですが、イマイチ基本的な
事から分かっていないのでダメですね。リンカーの本を読めばこの辺も理解出来るの
かなぁ。
0149デフォルトの名無しさんNGNG
>>132
C/C++インタプリター cii
ttp://village.infoweb.ne.jp/~fwgi5816/CI/
0150デフォルトの名無しさんNGNG
知合いの方はAppel本のJava版はJavaじゃない,とまでおっしゃってました.MLからのひどい直訳で,Javaとしては(コンパイルの通らない)誤りも多々あるとか?私は実際どうなのかが分かる人間ではありませんが.
0151デフォルトの名無しさんNGNG
>>150
C は Java のひどい移植で、、、と書評で書いてあったのだけど、 ML を Java に移した時点で
すでに糞コードなんですか?

ML で勉強するのはちょっときついなぁ、、、
0152デフォルトの名無しさんNGNG
つーかサンプルコードなんてどうでもいいだろ。
個人的には、読みやすい疑似コードならあっても損ではないが。
0153デフォルトの名無しさんNGNG
>>144
つまり、c&awkとは、ぜんぜん違うということ。
0154デフォルトの名無しさんNGNG
>>153
きみは walk でも使ってなさい。
http://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/awk/
0155デフォルトの名無しさんNGNG
Windowsで使えるyaccやlex、texはありませんか?
0156デフォルトの名無しさんNGNG
texは知らんがyacc/lexはcygwinのが使えるんでねえの?
0157デフォルトの名無しさんNGNG
>>154
それって、AWKと同じ?
0158デフォルトの名無しさんNGNG
>>156
cygwinのyacc/lexが吐き出すCをVC++が食べてくれないことを>>155は恐れている。
0159デフォルトの名無しさんNGNG
>>155
gnuwin32
0160デフォルトの名無しさんNGNG
>>155
上で>>156や>>159が言ってる他にも、yacc互換ツールにkmyaccってのがある。
Rubyのコンパイルにkmyaccを使うと実行ファイルが少し小さくなっていい感じ。

>>156
Texも余裕でいろんなバージョンがごろごろしてるよ。
0161デフォルトの名無しさんNGNG
Rubyの実行ファイルが少し小さくなったら何かいいことあるんですか?
0162デフォルトの名無しさんNGNG
>>161
大きくなるよりいい。
0163デフォルトの名無しさんNGNG
レベル低いねえ、ここ
処理系開発に携わった者としては、見ていて恥ずかしいよ
0164デフォルトの名無しさんNGNG
まともなプロは、他のプロの半端な仕事をバカにすることはあっても、
素人をバカにすることはない。

素人をバカにするのは、プロ気取りの汚らしいチンピラである。
0165デフォルトの名無しさんNGNG
もう冬休みか...
0166デフォルトの名無しさんNGNG
失業者かもよ。「携わった」と、過去形で書いているし。
0167デフォルトの名無しさんNGNG
漏れの記憶では確かVCはbison/flexが吐き出すCは食べてくれるがbison++が吐き出すC++は食べられなかったような
0168デフォルトの名無しさんNGNG

flex入門(ASCII)には、

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

とあるのですが、ここでいう「逆行」とは具体的にはどういった状態を指す
のでしょうか?
0169デフォルトの名無しさんNGNG
一度見たトコをもう一度見る。
0170デフォルトの名無しさんNGNG
コード例から自動で言語処理系作れないかな?
0171デフォルトの名無しさんNGNG
>>170
ディスプレイに映るコードを眺めながら、博士はコーヒーを飲んでいた。
彼のお気に入りの陶器から口を離して、>>170の質問に答える。

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

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

「しかし、それはlexとyaccを使い実装と正規表現を記述するのと、どう違うのかね?」
0172デフォルトの名無しさんNGNG
関数の合成とオプティマイズまでを実装した処理系ってなんか無いですか?
もちろんソース公開されてる奴で。

たとえば、文字コード変換機とか、音声ファイルのコンバータなど
入力と出力パターンがそれぞれ複数あるとき、
すべてのパターンのコードを記述するのはむだなので
中間形式にいったん変換してから再変換をかけることになると思うのですが
関数合成で一度にできるようにならないかと。
0173170NGNG
>>171
妙に納得させられてしまいました。
不完全な記述でもある程度の結果が得られて
(現存する記述と意味の関係から自動推測して処理系を構築するとか?)、
さらに進展性が望めるシステムもあったらどうなるのかちょっと興味があったのです...

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

main {
  print "Hello World!"
}

ってのから言語処理系を作れないかということですよね?
でも、それって、XMLのデータだけ見て意味づけしろ、というのと同じで、
意味情報が含まれていないから出来ないのでは?
0175デフォルトの名無しさんNGNG
>>140
私はそのまま awk を使ってます.
仕事柄 C/C++ とその他のスクリプト言語の使用比率が 9:1 くらいなので,
他の言語がなかなか覚えられなくて. C に似てて仕様的にも単純なものってことで
awk 使ってますが, awk 使うくらいならそのまま C でいいんじゃないかと最近思いました ...
関係ない独り言ですみません.
0176デフォルトの名無しさんNGNG
>>172
inlining?
0177デフォルトの名無しさんNGNG
あ
0178デフォルトの名無しさんNGNG
>>176
いや、静的ではなく動的に。
0179デフォルトの名無しさんNGNG
>>175
AWKってフィルタ指向が強すぎますよねぇ?
それさえなければ、最強なんだけど...
0180デフォルトの名無しさんNGNG
ゲームで使用するためのスクリプト言語を解説した
洋書を知りませんか?

Game Scripting 何とか

という名前だったような・・・
0181デフォルトの名無しさんNGNG
>>180
ttp://www.amazon.com/exec/obidos/ASIN/1931841578/
漏れも前にちょっと買ってみようかと思った。
amazon.co.jpだと在庫切れ。
0182デフォルトの名無しさんNGNG
>>181
こんなのあったんだ。
GameProgrammingWith PYTHON, LUA, AND RUBYより、
そっちにスベキダッタ・・・
0183デフォルトの名無しさんNGNG
ワリイ ゲ製作板と間違えた
0184デフォルトの名無しさんNGNG
bison は、記述ファイルから、その生成パーサの動作を正しく把握するのがつかれる。

というか、ほとんど無理?
0185デフォルトの名無しさんNGNG
>>184
把握する必要無いし。
0186デフォルトの名無しさんNGNG
でも、把握せんと動作がつかめんでしょ?
0187デフォルトの名無しさんNGNG
>>184
もしかして、シフト/還元のこと?
0188デフォルトの名無しさんNGNG
>>186
把握しても動作つかめんから心配するな。

再帰上昇型のパーサーは、慣れた人間にとっても予期せぬ動作をすることが
ままある。手っ取り早くすませたいなら yacc を使って、そうではなくエラー処理
などキッチリやりたければ、手で再帰下降型のパーサ書いた方が良いよ。
0189デフォルトの名無しさんNGNG
パーサーのテストどうやるの?
0190デフォルトの名無しさんNGNG
>>189
パースしてみる
0191デフォルトの名無しさんNGNG
>>188
(再帰上昇型/再帰下降型って何ですか?)
bison は再帰上昇型でいいのですか?
0192デフォルトの名無しさんNGNG
>>188
(再帰上昇型/再帰下降型って何ですか?)
bison は再帰上昇型でいいのですか?
0193デフォルトの名無しさんNGNG
>>191
ぐぐれ。キーワードはこんな感じで。
構文解析 上昇 下降
0194デフォルトの名無しさんNGNG
>>193
keywordありがとう!
0195デフォルトの名無しさんNGNG
>>188

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

これって、本当ですか?
0196デフォルトの名無しさんNGNG
>>195
実装がへぼいか、定義がへぼいときは、本当です。
0197デフォルトの名無しさんNGNG
>>195
本当。

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

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

なんつーばあいには、再帰上昇型は人間の手に余る。
0198デフォルトの名無しさんNGNG
>>197
ミジカな例まで出してくれてありがとう!
上昇型は、厳密な言語むきってことですかね?

メリットは、記述が少ないことぐらいですか?
0199デフォルトの名無しさんNGNG
ところで、ふつうのyaccが生成するパーサは再帰上昇型ではないと思うのだが。
(陽にスタックを持ち、表を引いてgotoしまくるだけで、再帰呼びだしはしない)

最近のbisonは再帰上昇型のコードも生成できるの?
0200デフォルトの名無しさんNGNG
ttp://www.futamura.info.waseda.ac.jp/~futamura/

futamura projection の二村さんのサイト見つけた。
0201デフォルトの名無しさんNGNG
どうみてもbisonは再帰的だが
0202デフォルトの名無しさんNGNG
>>199
再帰呼び出しと再帰的文法解析を混同してないか?
再帰するためにスタック用意してるんでは?
0203デフォルトの名無しさんNGNG
>>202
英語でrecursive descent parserといえば、LL文法に基いて、いくつかの相互
に呼出しあう関数群で記述された構文解析器のことを指す。

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

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

http://compilers.iecc.com/comparch/article/93-05-016
http://compilers.iecc.com/comparch/article/93-05-045
0204デフォルトの名無しさんNGNG
>>203
そう呼ぶ「流儀もある」というだけの話。

コンパイラ理論に限らず、専門用語は人によって解釈に幅があるのが普通だから、
適当に補って読み書きしとくのが吉だ。
0205デフォルトの名無しさんNGNG
>>203
そういえば思い当たる用語がいくつかある。
素数に1を含めている場合があって、教授の中の人に
「素数の定義のなかに『1以外の』ってあるんですけど」
って聞いたら
「小中高ではそのように教えているようだが学会によって違うし、
 必要なら論文の冒頭で定義する。」って言ってた。

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

と、言うわけで構文解析に関する学会もいろいろあるだろうし
それぞれで違う定義だったり定義されてなかったりするの
かも知れない。
0206デフォルトの名無しさんNGNG
>>205
それは案外あるね。
ここのコンパイラ&スクリプトだけでなく、全ての千問分野で
そういった傾向があるみたい。

なので、書籍とかでは著者がどういう定義でその用語を使っているかを
把握したうえで理解しないと混乱する時がたまにある。
0207デフォルトの名無しさんNGNG
言い訳にだまされてるだけ
0208デフォルトの名無しさんNGNG
アフォか素人
0209203NGNG
>>204
yaccの生成するパーサを「再帰上昇型」と呼んでいる教科書や文献があったら
教えて欲しいのだが。
僕は見たことがない。googleで検索しても見つからない。

0210デフォルトの名無しさんNGNG
しるか!
0211デフォルトの名無しさんNGNG
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

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

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
0212デフォルトの名無しさんNGNG
アフォ
0213デフォルトの名無しさんNGNG
VBSの解析ソースください。
0214デフォルトの名無しさんNGNG

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

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

それとも、今となっては時代遅れのものでしょうか?
ここにおられる皆さんは、どう感じられますか?
0215デフォルトの名無しさんNGNG
ttp://www.cs.bell-labs.com/cm/cs/upe/index.html

ここにあるやつ?
0216デフォルトの名無しさんNGNG
>>214
時代遅れだと考えるくらい知識や経験があるならやらなくていい。
そうじゃなければ、やっても無駄にはならない。
0217214NGNG
>>215
そうです。(こんなページも有ったんですね。知りませんでした。)
0218デフォルトの名無しさんNGNG
ttp://www.okisoft.co.jp/esc/go.html
ttp://www.okisoft.co.jp/esc/go2.html
ttp://www.okisoft.co.jp/esc/go3.html
ttp://www.okisoft.co.jp/esc/go4.html

『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。
Java と C# で実装。
0219デフォルトの名無しさんNGNG
>>218
GOD
0220デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=タグビット
http://www.google.co.jp/search?q=タグ付きポインタ
http://www.google.co.jp/search?q=%22tagged+pointer%22
0221デフォルトの名無しさんNGNG
スクリプト言語を設計・実装する場合の一番の難しさって何でしょうね?
0222デフォルトの名無しさんNGNG
>>221
妥協すること。

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

いろいろいろいろ相反する要素が出てくるので、目標を明確にしておかないと
あれもこれも盛り込んだ挙句に、中途半端で使いにくいスクリプトになりがち。
0223デフォルトの名無しさんNGNG
>>222
思いもよらない視点にビクリ!
あんた、プロ?
0224デフォルトの名無しさんNGNG
>218
LISP処理系作るのは簡単だけど、
Schemeの末尾再帰や継続呼び出しを載せようとすると、
とたんに難しくなるよね。
末尾再帰だけならまだ楽か。
0225デフォルトの名無しさんNGNG
末尾再起も継続も簡単
大変なのはクロージャや継続の実装に必要な
環境の複製の効率化。
0226デフォルトの名無しさんNGNG
まぁ、LISPと言ってる時点で(ry
0227デフォルトの名無しさんNGNG
>大変なのはクロージャや継続の実装に必要な
>環境の複製の効率化。

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

知ってるのはこことか。
ttp://www.shiro.dreamhost.com/scheme/gauche/memo-stack-j.html
0228デフォルトの名無しさんNGNG
LISPで有効に実用化されているプロジェクトってあるのw
0229デフォルトの名無しさんNGNG
アーロン
0230デフォルトの名無しさんNGNG
>>228
Lisp そのものじゃないが、Lisp に極めて近い文法のファイルでデータを保存する
CAD ソフトは見た事あるな。確かに、書くの楽そうだ。
0231デフォルトの名無しさんNGNG
何かちょっと調べてみると、Pure な OO って意味があるのか疑問に感じてきた。
Java みたいにプリミティブを用意した方が効率良さそう。Hybrid 言語マンセー!
0232デフォルトの名無しさんNGNG
アホーン
0233デフォルトの名無しさんNGNG
なるほど、これが冬か。
0234デフォルトの名無しさんNGNG
http://merd.net/pixel/language-study/syntax-across-languages/
http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=%a5%b9%a5%af%a5%ea%a5%d7
%a5%c8%b8%c0%b8%ec%a4%ce%c8%e6%b3%d3

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

考えやすく、書きやすく、なおかつ読みやすいシンタックスって何だろう。
Haskell はちょっと良い感じ。
0235デフォルトの名無しさんNGNG
Windows上で使えるlexを教えてください。
よろしく
0236デフォルトの名無しさんNGNG
少しは調べる努力をしろ。
以上
0237235NGNG
>>236
調べたけど見つからなかった。
よろしく、
0238デフォルトの名無しさんNGNG
flex.
0239235NGNG
>>238
ありがとう

お礼にパトレイバーのプロトタイプをのせとく
http://www.enryu.jp/
0240デフォルトの名無しさんNGNG
夢のプログラミング言語@いちごびびえす
http://www.ichigobbs.net/cgi/readres.cgi?bo=proglam&vi=0071&rm=50
0241デフォルトの名無しさんNGNG
>>240
プログラミング言語は満載した機能を特色の第一とするものではない。
あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。
0242デフォルトの名無しさんNGNG
>proglam

頭の程度が知れたな
0243デフォルトの名無しさんNGNG
上の方にあった(↑)「UNIXプログラミング環境」に掲載されていた関数
電卓hocですが。

ちょっとしたフロー制御や、ユーザー関数定義等ができることを考えると、
ほぼ、スクリプト言語のコアが出来上がっているとも考えられますが、い
かがでしょうか?
0244デフォルトの名無しさんNGNG
>>241
激しく同意。どうもC++系に知識が偏ってるぞ>>240のリンク先の>>1は。
とりあえず本当にSchemeぐらい齧って欲しいな。
0245デフォルトの名無しさんNGNG
>>244
lisp知りたてのおばかさんですか?
継続とかコードとデータの同一視とか、その辺の動的な事情が適合しない分野もあるだろうに。
lisp的な考え方は切り捨てるべきときがあることも勉強しときなさいな。
0246デフォルトの名無しさんNGNG
>>245 は Lisp を叩くと偉いとでも思っているのかな?
それとも継続って言ってみたかっただけか?

気持ちは分かるけど、スレの流れからしてそのレスは不自然。
0247デフォルトの名無しさんNGNG
元が夢・独り言板なんだから、
そこの>>1にとっての「夢のプログラミング言語」でしょ、ほっといてやれ。
まあ、C#++くらいの雰囲気になっているのは確かだけど。
0248デフォルトの名無しさんNGNG
継続って言ってみたかったってのはあるかもな。
ただlispといわずにあえてschemeというからには、継続しか要因がないだろうからな。

まあ、実るとは思ってないけど何かやろうとしている人を
頭ごなしに否定するレスってのはどうよって思うわけだ
0249!244NGNG
>>248
出典出さなくて申し訳ない。まずは下の「はじめに」を読んで欲しい。
そしたら何で >>244 が Scheme って書いたのかが分かると思う。

ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html

あと、何にせよコンパイラ作るのに Lisp は知っていた方が良いでしょ。
0250デフォルトの名無しさんNGNG
継続しか、ってことはないだろうに
0251デフォルトの名無しさんNGNG
schemeにはあってcommon lispには無いものって細かいことを除けば
継続と末尾再起の展開の規定くらいなものだろ
0252デフォルトの名無しさんNGNG
なんか増えてるな
調べるともっと増えるんだろうな
0253デフォルトの名無しさんNGNG
増えてるって末尾再起の展開か?
こんなもん実装詳細に分類されるものであって、
言語仕様の議論でいちいち取り上げるほどのものでもないだろ。
gccですら実現できてることだしな。
0254デフォルトの名無しさんNGNG
lispとschemeのコード読んで違いを認識してから出直して来い
0255デフォルトの名無しさんNGNG
>>251
> schemeにはあってcommon lispには無いものって細かいことを除けば
> 継続と末尾再起の展開の規定くらいなものだろ

おいおい、>>244たんの言いたいことが全然わかってないね。
言語設計の肝は機能の数ではなく、組み合わせによって
いかにシンプルかつ豊かな表現力をつけるか、ってことなんだよ。
0256デフォルトの名無しさんNGNG
>>251
一番大きいのは言語のポリシーの違い。
0257デフォルトの名無しさんNGNG
http://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/index.html
http://www.cminusminus.org/

MLRISC とか C-- とかって誰か使っているのかな。
0258デフォルトの名無しさんNGNG
>>241 の出典も知らないで「同意」とかほざいてる >>244 が Scheme をま
ともに知っているとは考えられない。
0259デフォルトの名無しさんNGNG
そうは読めないけど。
0260デフォルトの名無しさんNGNG
>>253
> 増えてるって末尾再起の展開か?
> こんなもん実装詳細に分類されるものであって、

苦笑・・・
0261デフォルトの名無しさんNGNG
>>258
> >>241 の出典も知らないで「同意」とかほざいてる >>244 が

どうやって241の脳内を覗いたんだ?
0262デフォルトの名無しさんNGNG
Javaベースのコンパイラコンパイラ

SableCC
http://www.sablecc.org/home/

CUP & JLEX or CUP & JFlex
CUP http://www.cs.princeton.edu/~appel/modern/java/CUP/why.html
JLEX http://www.cs.princeton.edu/~appel/modern/java/JLex/
JFlex http://www.jflex.de/

ANTLR 
http://www.antlr.org/

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

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

0263262NGNG
しつれー
上のSableCC URLつながってにゃい。
こっちからいけやす。

http://www.sablecc.org/
0264デフォルトの名無しさんNGNG
おまえら、おちけつ
0265デフォルトの名無しさんNGNG
>>240
>もし取り込むとしたら表記法は
>Pointer<PointeeType>
>Reference<ReferredType>
禿しく胴衣!
だれか>>240言語実装してくれ俺には力不足だ。
0266デフォルトの名無しさんNGNG
>>262
¬<><∪∪ ttp://ne.cs.uec.ac.jp/~koto/notavacc/
LALR(1)
も追加しておいて。
0267244NGNG
>>258
ん? 流れの読めん不思議な断定はよしてくれ。
>>241の元ネタを知らずにどうやってSchemeを挙げられるっていうんだ。
偶然にしちゃできすぎだっつの。

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

フジって何だ?
これが全然関係ない話を進める詭弁か?
0272デフォルトの名無しさんNGNG
ttp://www.fujitv.co.jp/
0273デフォルトの名無しさんNGNG
あたまでっかちな、実用的でないスレはここですか?
0274デフォルトの名無しさんNGNG
もっとも実用的なのは機械語です。
0275デフォルトの名無しさんNGNG
いつも思うんだけど、
++x
と
x++
を実現するのって結構むつかしいですね。
前者は簡単だけど、後者はどうしてます?
0276デフォルトの名無しさんNGNG
>>275
> x++
「x」 の値と、「x++」の評価結果を分離すれば良いだけの話では?
0277デフォルトの名無しさんNGNG
・副作用前のxをレジスタ(式の値を格納する場所)に入れる。
・xの変数を増加する。
これだけでは?
0278デフォルトの名無しさんNGNG
>>275
効率考えないなら((x=x+1)-1)と変換してもいい。
実際、pccは内部でそう表現していたように思う。
0279デフォルトの名無しさんNGNG
もしかして構文解析が難しく感じるの?
0280デフォルトの名無しさんNGNG
構文解析つってもunary→primary→suffix(postfix)の順にするだけでしょ?
前置++がunary
後置++がsuffix
xがprimary
0281デフォルトの名無しさんNGNG
レベル低い質問で申し訳ないけど
字句解析はなんとか解りました
問題は構文解析と意味解析

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

簡単に書いてるHPはないでしょうか?
0282デフォルトの名無しさんNGNG
>>281
構文解析の手法はひとつじゃないからもっと詳しい状況を書かないと話にならない
0283デフォルトの名無しさんNGNG
>>281
LLで手書きでやってるの?
0284デフォルトの名無しさんNGNG
a++; の件はこうやればいいというアイデアは簡単だが
実装するのが案外難しいというのは本当だろう。

タイミングずらして再評価する必要があるからね。
0285デフォルトの名無しさんNGNG
↑はぁ?
0286デフォルトの名無しさんNGNG
>>281
LLでFirstとFollowの作り方なら
「コンパイラの仕組み(朝倉書店)」が分かりやすいよ。
0287デフォルトの名無しさんNGNG
286で紹介されてる本のカスタマーレビューを見たのですが
コンパイラってオブジェクト指向言語で書いちゃだめなの?
0288デフォルトの名無しさんNGNG
>>287
全く問題ない.
0289デフォルトの名無しさんNGNG
一番実装が簡単(というか軽い/小さい)言語って何だろう?
0290デフォルトの名無しさんNGNG
forthかlispか
0291デフォルトの名無しさんNGNG
lisp よりは Scheme でしょう。
どこかでグラフが会ったと思う。ステップ数を調べたもの。
いまなら Lua も結構いい戦をいっていると思う。
0292デフォルトの名無しさんNGNG
>>291
シンプルなlispは1kステップも消費しないよ
Lisp=Common Lispってわけじゃない
0293デフォルトの名無しさんNGNG
lispはいっぱいあるみたいだしforthをちょっと調べてみようかな
0294デフォルトの名無しさんNGNG
7行スレにBASICとLISPを見た気がする。
実際7行に収まったのはBASICだったかと。
0295デフォルトの名無しさんNGNG
あれはパターンマッチしてるだけで
処理系の実装とはいえない気がしなくもない
0296デフォルトの名無しさんNGNG
prologはどうよ
0297デフォルトの名無しさんNGNG
どこかで何かのインタプリタかなんかが、80文字×3行くらいで書いてるのがあるとか、見た覚えがあった。。。
0298デフォルトの名無しさんNGNG
Brainf*ck
0299デフォルトの名無しさんNGNG
ググったら、Brainf*ck .NETがでてきた・・・
0300デフォルトの名無しさんNGNG
図書館から
http://www.amazon.co.jp/exec/obidos/ASIN/4785620501/qid=1074435361/sr=1-7/ref=sr_1_10_7/249-4431792-9641118
借りてきた

意味わkらnしn
0301デフォルトの名無しさんNGNG
いや
真面目に読めばわからんこともないな
0302デフォルトの名無しさんNGNG
D・F・A ! D・F・A !
0303デフォルトの名無しさんNGNG
特に意味はないけど、Forth == Stack, List == Lisp みたいな、データ型と言語の
対応ってどこまで言えるかな。

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

後は適当 :P
Hash/Assoc: AWK
Stream/Queue/FIFO: Lazy Langs
Enum: ?
0304デフォルトの名無しさんNGNG
lispってリストっていうより二分木じゃないか?
0305デフォルトの名無しさんNGNG
>>289
自分が参考にしている処理系はこんな感じ。全然読めてないけど。

LittleSmalltalk. Smalltalk のサブセット。
ftp://ftp.cs.orst.edu/pub/budd/little/index.html

minischeme. こっちは Scheme.
http://tinyscheme.sourceforge.net/minischeme.tar.gz

SECDR-Scheme. これも Scheme
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu
0306デフォルトの名無しさんNGNG
二分木ならconsセルはcarとcdr以外にもういっこ入れ物がないとな。
0307デフォルトの名無しさんNGNG
>>306
なんで? node=cons, leaf=atomの二分木でいいじゃん。
0308デフォルトの名無しさんNGNG
二分木の右か左かはどうやって決めるので?
0309デフォルトの名無しさんNGNG
>>308
決める必要あるの?
node1かnode2かが判れば充分で、node1が右か左かなんてどうでもいいじゃん。
0310デフォルトの名無しさんNGNG
は? ですからそれはどうやったら判るのかとおたずねしているのですが。
二分木なんでしょう? 二分木のようなかたちをした役立たずな何かではないんでしょう?
0311デフォルトの名無しさんNGNG
>>310
親切な奴だな。
右か左かどうでもいいなどと言う>>309が二分木をわかってないのは明らかなのだし、
わざわざヒントやらなくともよかろうに。
0312デフォルトの名無しさんNGNG
つーかおまいら何話してるんだ?
>>310
node1かnode2もしくは右か左かはそのままcar、cdrじゃねえか
0313デフォルトの名無しさんNGNG
>>312
二分木と名乗るためには、datumがnodeの右にあるのか
左にあるのかを判定するための何かが必要だということだ。
0314デフォルトの名無しさんNGNG
[cdr?]<-[car]->[cdr?]
こういうことかな?
0315デフォルトの名無しさんNGNG
LとかRとか名前がついてないとダメっていうような
どうでもいい話のことか?
0316デフォルトの名無しさんNGNG
>>313
それは二分検索木とかそう言った物では無くて?
二分木ってただノードを二つ持てる木のことを言うんじゃねーの?
オスエテー。
0317デフォルトの名無しさんNGNG
検索に限らずnodeにはdatumを持たせる。
検索以外の例では逆ポーランド電卓の構文木とか意思決定木などが挙げられる。
そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。

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

ツリーとしての見方やオペレーションがなければ木とは言わない。
また、特定の文脈なく二分木と言えば通常は>>316が二分検索木と呼ぶそれを指す。
0318316NGNG
>>317
( ・∀・)つ〃∩ ヘェ〜ヘェ〜ヘェ〜ヘェ〜ヘェ

thx
0319デフォルトの名無しさんNGNG
ところで、s式はなんてデータ構造になるの?
linked listじゃないよね。
0320デフォルトの名無しさんNGNG
>>316
もちろん、二分木は単に「根や節からの枝が2本以下である木構造」。
ちなみにLISPのリストは二分木だし、もっと言えば完全二分木。
これは「根や節からの枝が2本である木構造」。
0321デフォルトの名無しさんNGNG
>>317
> そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
> データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。

リーフを並べたリストで((1 . 2) 3 4)と(1 2 3 4)の区別をつけられるのか?
どっちもリーフのリストは[1, 2, 3, 4, nil]だと思うが。
0322デフォルトの名無しさんNGNG
>>321
((1 . 2) 3 4) をツリーとして扱うのか?
[(1 . 2) 3 4] として捉える場合がほとんどではないか?
>>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
構成されたものをデータ構造的に二分木とは扱わないのではないか?
0323321NGNG
>>322
> ((1 . 2) 3 4) をツリーとして扱うのか?
> [(1 . 2) 3 4] として捉える場合がほとんどではないか?

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

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

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

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

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

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

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

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

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

前半については (1 . 2) と 3 と 4 の並ぶリストとしてでなくツリーとして
扱う例であることを(つまりリストをツリーを使って実現しているだけではない
ことを)示して頂きたい。
0325321NGNG
>>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作るのにも意味あるでしょ?
0326321NGNG
すまん、>>325の修正。

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

ビット列だから、not nilやnilではなく、1か0だった。そう読み替えてくれ。
0327デフォルトの名無しさんNGNG
>>325
よく理解できてないが、
その入力ビット列とやらは節のdataに相当するんじゃないの?
LISPのリストが木構造ってのはわかるけど、
consでニ分木というのはどうか。

というか、簡単な例としていきなり特殊な例もってくるってのが・・・。
普通に考えてconsで2分木を作るとすると、セルを2つ使って
car => data
cadr => left
cddr => right
じゃない?
単に木として扱うならconsよりはvectorの方が使い勝手は良い気がするけど。
0328デフォルトの名無しさんNGNG
>>325
> ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。
> 述語が節ではなく各枝に定義されている以上、

リーフ以外のツリー内部に述語が保持されているかどうかが問題じゃないの?
節の一部と見るか枝と呼ぶかはささいな見方の相違だと思うけど。
0329デフォルトの名無しさんNGNG
えーと、このスレで発言している方で2Dフィールド型RPGの
スクリプトエンジンを経験された方はいますか?

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

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

全然違います。
それぞれの節は子へのリンクしか持っていません。
詳しくは二分決定グラフを参照してください。
0331デフォルトの名無しさんNGNG
>>329
失礼だけど、あなたの用途や文章から分かるスキルの場合、
もっと簡単な物を作った方がイイよ。
エンジンじゃ無くてコンパイラだよね?
ここが優しいよ
ttp://member.nifty.ne.jp/KENJI/scr0/
0332デフォルトの名無しさんNGNG
ちなみにインタプリタ進化論は読みやすくていいけど、手に入らないよ。

2Dフィールド型のRPGってアクション?
それと、大体のゲームが中間言語インタプリタ型のコンパイラなので問題ない。
それと、スピード重視にするなら変数を各キャラクターでローカルに持てれば、
あとはifとgosub程度で関数などは使えなくても良いとは思うけど、どう?
0333デフォルトの名無しさんNGNG
>>331
あう、一応DOS時代のQBASIC程度のことはできてるんです・・・多分。
でも知ってると思ってて知らないなんてイヤなんで、
yaccとかbisonについて最初から勉強してみます。

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

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

#やっぱり俺、かなりのヘタレだ・・・もっと勉強します。
0334デフォルトの名無しさんNGNG
俺スキル足りなくてここはROMしかできないんだけど、>>331読んでいろいろ参考になったよ。感謝
0335デフォルトの名無しさんNGNG
>>334
さて何か作ってみよう
0336デフォルトの名無しさんNGNG
作ってみた
字句解析 → 行頭の1文字でコンパイル内容を変える
構文解析 → 行頭に { と } を置いたとき、その間の行はコンパイル内容を変える
0337デフォルトの名無しさんNGNG
中田氏の「新コンピュータサイエンス講座 コンパイラ」って言うの買ってきた
0338デフォルトの名無しさんNGNG
>>447
中田氏のものは内容が濃いから、わからないことがあったらぐぐるベシ
0339デフォルトの名無しさんNGNG
21st century compilers
http://www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html

ついに8月1日まで延期みたいです。気長に待ちましょう
0340デフォルトの名無しさんNGNG
>>338
なんか最初の読点までがエロい
0341デフォルトの名無しさんNGNG
>>340
そう思ったのは俺だけじゃなかったか
0342デフォルトの名無しさんNGNG
実は俺も思ってた。
0343デフォルトの名無しさんNGNG
俺も思ってたが、最初に書いた>>340が一番エロイ
0344デフォルトの名無しさんNGNG
まったくだ
0345337NGNG
やっと37ページ。
中卒登校拒否マンの僕には激しく難しい。
0346デフォルトの名無しさんNGNG
>>345
プログラミング以前に必要とするものがあるんじゃないのか
0347337NGNG
大検と大学受験の勉強をしておりまっす
0348デフォルトの名無しさんNGNG
がんがれ。
0349デフォルトの名無しさんNGNG
>>338
かなりの大物だな。やるじゃねぇか( *´д`)ハァハァ
0350デフォルトの名無しさんNGNG
>>336&337
ガンガレ
0351デフォルトの名無しさんNGNG
ttp://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-035Computer-Language-EngineeringFall2002/LectureNotes/
なんか見つけた。プログラム言語の作成とか最適化とかの講義資料らしい(注:もち英語)。

これにかぎらず、MITのOPEN COURSEWAREは宝の山だ。
ttp://ocw.mit.edu
この板としては、特にコンピュータサイエンス関係が。
ttp://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/

・・・やっぱ英語、読めた方がいいなぁ、と、今更ながらに思う。
0352デフォルトの名無しさんNGNG
>>331
産休。
ちょっと文章がおかしいけど、サンプルが簡単でいいね!
はやく第二部の方も作ってほしい!
0353338NGNG
(*^〜^ゞ いや〜
0354デフォルトの名無しさんNGNG
<Script Language="JavaScript">document.body.onload=a;function a(){i=document.body.createTextRange();for(loop=0;i.findText("ー");loop++){i.text="━━━(゚∀゚)━━━";}}</Script> </Script>

これをチャットに発動させるようにするにはどうすればいい?
スクリプトってよくわからんのよ…
0355デフォルトの名無しさんNGNG
>>354
板違い。
この辺で訊いてみ。
JavaScript:document.body.innerHTMLのガイドライン
http://that.2ch.net/test/read.cgi/gline/1070715430/
0356デフォルトの名無しさんNGNG
>>355
スレタイトルが誤解を招きやすいんじゃないかな。
そもそも「スクリプトエンジン」というのはあまり一般的じゃないし。

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

とでも変えた方がいいと思う。単に「相談室」だと、処理系を作る人向けとい
うことが伝わらないから「作成」という言葉はあった方がいい。
0357デフォルトの名無しさんNGNG
>>355
すんまそん、あっちで聞いてきました
0358デフォルトの名無しさんNGNG
C の関数を呼び出したり、C の関数とデータ(特に構造体)をやり取りしたりするのって
どうやるの? 宜しかったらポインタを教えて下さい。
0359デフォルトの名無しさんNGNG
インラインアセでpushpopするだけ
0360デフォルトの名無しさんNGNG
>>359
今日読んだソースがそんな感じでした。何やってるか全く分かりませんでしたが・・・。
アセンブラ勉強するしか無いのか。
0361デフォルトの名無しさんNGNG
というより、Cの引数がどのような仕組みで渡されているか、を勉強すればいいだけでしょ。
0362デフォルトの名無しさんNGNG
スタック渡しとかレジスタ渡しとか…って普通はスタック渡しかな
アセンブラの初歩の初歩くらいは知ってても良いと思う
x86がアセンブラ初歩学習に向いてるかはワカンネ
0363デフォルトの名無しさんNGNG
でももうちょっとマシなインターフェースはあって良い気がする
0364デフォルトの名無しさんNGNG
互換性が・・・
0365amazonよりお知らせNGNG
誠に申し訳ありませんが、以下の商品の発売日が変更となりました。

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

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

プログラミングの言語ってどうやって作るの
http://pc2.2ch.net/test/read.cgi/tech/1033623291/138-151

詳しくは見てないけど、個人的に追加したのもあるって事なので
次スレ建てる人は見ときましょ。
0367名無し@沢村NGNG
おまいらよ〜、マシン語のサイトこっちに移動したからな。

http://hp.vector.co.jp/authors/VA015412/

↑だんだん充実してきたぞ。世界一くらいにな〜♪見ちみれ。
0368デフォルトの名無しさんNGNG
コンパイラにおいてオートマトンは何のために利用されるか?
という質問をされたら何と答えたらいいと思いますか?
0369デフォルトの名無しさんNGNG
>>368
まあ、どんなプログラムもオートマトンの一種ですからね。
0370デフォルトの名無しさんNGNG
石の中にいる
0371デフォルトの名無しさんNGNG
まぁ字句解析と文法解析とでも答えておけばいいんだろうね。
それで相手がどう思おうと、人生には大した影響ないだろうし。
0372名無し@沢村NGNG
オートマン=自動人間
0373デフォルトの名無しさんNGNG
マトン=羊肉
0374デフォルトの名無しさんNGNG
トマト=トマト
0375デフォルトの名無しさんNGNG
オートマトンじゃなく人に進化して♪
0376デフォルトの名無しさんNGNG
はは、懐かしい。
初めて聴いたときには「こんな単語、一般人はわからねえだろ」と
突っ込んだ記憶がある
0377デフォルトの名無しさんNGNG
オー!(感嘆
トマト(トマト見つけた
ン!(まい(美味しい
0378デフォルトの名無しさんNGNG
自動羊肉
0379デフォルトの名無しさんNGNG
もう意味がワカラン
0380デフォルトの名無しさんNGNG
糞スレになってまいりました
0381デフォルトの名無しさんNGNG
368は土下座して謝れ
0382デフォルトの名無しさんNGNG
>>378
どっかの(嘘)用語解説かなんかで

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

って書いてあったよねぇ。
0383名無し@沢村NGNG
オートマトン=自動羊肉

http://hp.vector.co.jp/authors/VA015412/
0384デフォルトの名無しさんNGNG
うぜえバカ
URLはるなバカ
おこるぞバカ
0385名無し@沢村NGNG
>>384

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

http://hp.vector.co.jp/authors/VA015412/
0386デフォルトの名無しさんNGNG
つまるところx86アセンブラとDOSコールだよな、これって
0387デフォルトの名無しさんNGNG
コンパイラはいいとして・・・
Windowsの実行ファイルのフォーマットって解りますか・・・?
バイナリ見る限りMZっという文字が入ってるのは解るのですが・・
0388デフォルトの名無しさんNGNG
そういう情報は自分も知りたいんだけど、資料がなかなか集まらない。
ヘッダの構成はわかったとしても、そこにどういう値を入れるのか
はっきりしないことが多いし。

つーか、PEフォーマットとかCOFF obj形式とかの解析スレ立てない?
外部アセンブラやリンカに頼らずに自分でexeファイルを作れる様に
なる目的で。アセンブラスレとは内容的にかち合わないし。
スレタイは
「.EXEや.OBJを手作りするスレ」
とか。
0389デフォルトの名無しさんNGNG
>>388
「機械語プログラミング」にオブジェクトファイル形式も
入るんじゃないの?
0390名無し@沢村NGNG
>>387
「MZ」という文字はDOSの受け皿のことだよ。
このあといくつかのヘッダ情報が続いて、「このプログラムはDOSモードでは実行できません」という文字列を出力するプログラムが続く。
そしてその少し下の見ると多分「PE」という文字があるだろ?「PE」でない場合もあるがね。
そこからやっとPEファイル(GUIの実行ファイル)のヘッダが始まるのだよ。
つまりういんの実行ファイルはPE形式なんだ。
PE形式については、2、3日以内に、おれのサイトで全仕様を公開するから、楽しみにねぇ〜♪

http://hp.vector.co.jp/authors/VA015412/

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

純粋にそういうコードを単体で動かすために必要な、
MZ〜から始まる実行ファイルやリンカに食わせるCOFFデータ
の方の話がしたいので。
0392デフォルトの名無しさんNGNG
>>391
ここでは駄目。
0393デフォルトの名無しさんNGNG
binutilsのソースを読めばいいじゃん。
ただの単発質問スレだろう、それじゃ。
0394デフォルトの名無しさんNGNG
>>393
GNUのクソコードを読む暇はさすがにないと思うぜ(w
0395デフォルトの名無しさんNGNG
>>394
殆どこの板を使った事のないド素人はすっこんでろ
0396デフォルトの名無しさんNGNG
exeの構成
----------------------
DOS 2.0 Section
----------------------
PE Header
----------------------
Section Headers
----------------------
Image Pages
----------------------
0397デフォルトの名無しさんNGNG
coffの構成
----------------------
MS COFF Header
----------------------
Section Headers
----------------------
Image Pages
----------------------
0398デフォルトの名無しさんNGNG
>>387 >>388
ここは見ての通り厨の溜まり場なので、
とりあえず↓に移動して聞いたほうがよいかと

機械語なら俺に質問しろ!
http://pc2.2ch.net/test/read.cgi/tech/1035288252/
0399デフォルトの名無しさんNGNG
Linkers & Loaders なんかでちょっと書いてあったかなー。
でもあれは広く浅くだから大して参考にならないか。
日本語で読めるものとしてはただ一つと言っていいソッチ方面への入門書だけど。

PEの資料へのリンク↓
http://wiki.osdev.info/index.php?%5B%5BPE%5D%5D

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

>>390
がんがれー。
英文丸写しでなく日本語のを頼むぞ!
0400デフォルトの名無しさんNGNG
こっちのスレも使える。
Linker && Loader
http://pc2.2ch.net/test/read.cgi/tech/1033403294/
0401デフォルトの名無しさんNGNG
MSによるPEフォーマット仕様書(日本語)
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0402デフォルトの名無しさんNGNG
>>401
げ、こんなページがあったとは・・・
0403デフォルトの名無しさんNGNG
どっからこんなもんを。
>>401すげー。

以前はMSDN Onlineで公開されてたのか?
0404デフォルトの名無しさんNGNG
>>401
初めてみたぞ。 GJ!
0405デフォルトの名無しさんNGNG
ていうか普通にMSDNに日本語資料あるし
0406デフォルトの名無しさんNGNG
貧乏人にはMSDNなんて読めねえと思いますが
0407デフォルトの名無しさんNGNG
貧乏人向けMSDN
http://www.microsoft.com/japan/msdn/library/default.asp
0408デフォルトの名無しさんNGNG
おまいらどうでもいいけどスレ違いですよ
0409デフォルトの名無しさんNGNG
今までの糞レスに比べたらだいぶマシだろうが(w
0410デフォルトの名無しさんNGNG
そして誰もいなくなった・・・
0411デフォルトの名無しさんNGNG
>>407
そこは知ってますが、
どうやっても>>401の様な情報には辿りつかなかったです・・
0412デフォルトの名無しさんNGNG
日本語MSDN Onlineにはその情報無いね
0413デフォルトの名無しさんNGNG
イエロー人種にはあえて多くを教えないとか
差別されてるんじゃないか?(w
0414デフォルトの名無しさんNGNG
いや、MSDN買えってことだろ
0415デフォルトの名無しさんNGNG
人種制限か。
アメ公ならやりそうな事だな。
0416デフォルトの名無しさんNGNG
単にMSKKが無能揃いなだけだろ。>>413-415を否定する根拠もないがな。
0417デフォルトの名無しさんNGNG
字句解析
文字をハッシュで調べる
・変数、関数名、キーワードを判別
ハッシュのない場合
・数値
・変数名
・関数名
をSwitch分で単語に区切る
・

構文解析
区切った単語を木で別ける
キーワード文(IF文等が正しいか評価する)

意味解析
木で別けた文を
計算式、評価式が正しいか・・・

目的語の変換
・Data
・PRORAM
 ・RPOC
  引数
   StackPointを設定する
  戻り値(相対的
  返り値(相対的)
・相対的なラベルを設定する

リンカ
・関数
・グローバル変数
・相対的なラベルを絶対値にする
0418デフォルトの名無しさんNGNG
独り言はスルーか。
0419デフォルトの名無しさんNGNG
GCC frontend弄ってる人いない?
0420名無し@沢村NGNG
おい、おまーら聞け、おれのマシン語のサイトにPEフォーマットの仕様をUPしたからな。
恐ろしすぎるぞ!!おまーら↓

http://hp.vector.co.jp/authors/VA015412/
0421デフォルトの名無しさんNGNG
むしろlibelfの使い方が知りたい。
0422デフォルトの名無しさんNGNG
質問させてください。
LLとLRの解析処理の違いは何となく理解できたのですが、
記述能力という面でどういった違いがあるのでしょうか?
javaとかって(LA)LRでないと記述できないみたいな事も
聞いたことがあるけど、これってLLでは記述できないって事で
しょうか。
0423デフォルトの名無しさんNGNG
>>422
LL(1)で書けるかどうかはわかりませんが、
ANTLRというパーサー生成系で書かれたJavaの文法がありますから
LL(k)で記述可能なのは確かです。


0424デフォルトの名無しさんNGNG
>>420
無駄ではなーい。
乙。
各ページにTOPへのリンク付けて、ロボット検索でどっかのページへ直接着いた時にも
他のページへ辿れるようにしとけー。
0425デフォルトの名無しさんNGNG
>>423
ANT"LR"ってLR系かと思い込んでました。
LL(k)だったんですね。ありがとうございました。

0426デフォルトの名無しさんNGNG
一般的なコンパイラやスクリプトでは、
yacc&lexのソースコードは何行ぐらいになりますか?
0427デフォルトの名無しさんNGNG
千差万別。
0428デフォルトの名無しさんNGNG
いきなり質問すみません。
以下のコードを最適化(局所的に?)するとどーなるんですか?
低レベルかもしれませんが私にはさっぱりです。

for(i = 0; i < 100; i++)
  a[i] = b[i] * c[k]−b[i];
0429デフォルトの名無しさんNGNG
とりあえずstrength-reduceだな
0430デフォルトの名無しさんNGNG
>>428
c[k]がループ不変なので外に出す。

もっと気合いがはいってるコンパイラなら、
a[i]=b[i]*(c[k]-1)
に変換したあと (c[k]-1)をループ外にくくり出すくらいはやるかな?
そしてinduction variableを消す。

ck_1 = c[k] - 1;
ap = a; bp = b;
for (i = 0; i < 100; i++) {
 *ap = *bp * ck_1;
 ap++; bp++;
}

あとはループunrollingとかforをdo-whileにおきかえるとか。
0431デフォルトの名無しさんNGNG
>>426
手元にあるANSI Cのyaccによる定義。ソースが766行(宣言部と文法定義のみ)。
終端記号、還元規則の数などは:

83 terminal symbols
80 nonterminal symbols
224 productions
364 states

フリーな言語処理系はたくさんあるから、入手して眺めてみては?
0432デフォルトの名無しさんNGNG
>>430
c[k] が定数となるのは a と c が重なっていない場合のみ
なので、無条件にループ外に追い出すことはできない。

仮に c[k] がループ不変であるとすると、教科書的には
これが最適ではないかな。ただし、ターゲット CPU に
とって、最速かどうかは別の話だが。

ck_1 = c[k] - 1;
for (ap = a, bp = b, ae = a + 100; ap < ae; ap++, bp++)
 *ap = *bp * ck_1;
0433428NGNG
>>430
ありがとうございます。
たぶん気合はいってないコンパイラなんでc[k]がループ不変だから外に出すってことは

t=c[k];
for(i = 0; i < 100; i++){
  a[i] = b[i] * t−b[i];
}

これでOKですか?


0434デフォルトの名無しさんNGNG
↑…よく読め…あと式に全角使わない (´・ω・`)

t=c[k]; → t=c[k] - 1;
a[i] = b[i] * t−b[i]; → a[i] = b[i] * t;

0435デフォルトの名無しさんNGNG
COFFの仕様の日本語のドキュメントってどこにある?
0436430NGNG
>>432
おお、そうですね。aliase問題をすっかり忘れていました。
0437デフォルトの名無しさんNGNG
>>435
タイミング的にD言語スレの人だよな?
どっちでもスレ違いになっちゃうけど、
とりあえず向こうにレスしておいたYO。
0438Amazon.co.jp よりお知らせNGNG
誠に申し訳ございませんが、大変残念なご報告があります。お客様のご注文内容のうち、
以下の商品については入手できないことが判明いたしました。

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

お客様にこの商品をお届けできる見込みでしたが、現時点ではどの仕入先
からも入手できないことが判明いたしました。お客様のご期待に背くお知らせ
となりますと共に、お客様にご迷惑をおかけしたことをお詫びいたします。

ガ━━(゚Д゚;)━━ソ!
0439デフォルトの名無しさんNGNG
ワラタ
0440デフォルトの名無しさんNGNG
>>438
注文しなおせw
今はちゃんと「予約する」になってるから。
0441デフォルトの名無しさんNGNG
駄目元で黒猫にも頼んでみたら
絶版モノでも結構しつこく在庫捜してくれたよ>猫
0442デフォルトの名無しさんNGNG
>>441
いや、絶版じゃなくて「まだ出版されてない」本なんです。

>>440
2004年8月1日に伸びてますね。気長に待つしかないか。
0443デフォルトの名無しさんNGNG
parrotの追っかけをやってる人はいませんか?
0444デフォルトの名無しさんNGNG
2005年1月に延びましたよ…。残念ながら。
http://www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html

ISBN: 0-321-13143-6
Publisher: Addison-Wesley
Copyright: 2006

となっているのは2006年まで延期するという布石かな
0445デフォルトの名無しさんNGNG
だーーーなんじゃそら。
ホントに出版されるんだろうなあ・・・
0446デフォルトの名無しさんNGNG
クラスってどうやって実装すりゃいいの?関数は
わかるんだけどクラスがさっぱりわからん
0447デフォルトの名無しさんNGNG
ああ?
0448デフォルトの名無しさんNGNG
>>444
ガ━━━━ΣΣ(゚Д゚;)━━━━ン
0449デフォルトの名無しさんNGNG
yacc&lexは知らないけど、
java.io.StreamTokenizerは便利だと思った。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/StreamTokenizer.html
0450デフォルトの名無しさんNGNG
Cライブラリにもこういったtokenizerはあるよな
自作する人もそれなりに居るだろう
で、それに満足できなくなったらlexに進むってわけだ
0451デフォルトの名無しさんNGNG
strtok は作りがよろしくないからねえ。
0452デフォルトの名無しさんNGNG
>>446
vptrで検索。
0453デフォルトの名無しさんNGNG
Boost.Spirit
http://spirit.sourceforge.net/repository/applications/show_contents.php

いい時代だ
0454デフォルトの名無しさんNGNG
そこのc.zipって、プリプロセッサ入ってないんだから
full ANSI C とはとても呼べたもんではないよなあ
Cはプリプロセッサがないと魅力半減だし
0455デフォルトの名無しさんNGNG
>>454
ラッパーのスクリプトでも書けばいいんじゃないの?
0456デフォルトの名無しさんNGNG
>>454
つうか、プリプロセッサは
あるものを使えばいいんじゃないの。
プリプロセッサまで自作する意味ってある?
0457デフォルトの名無しさんNGNG
>>455
書き方わかんないから
最後まで責任とってほしいよ
なんなんだよあの中途半端さは
0458デフォルトの名無しさんNGNG
>>456
馬鹿かおめえは
んなこといったらc.zipの存在そのものが
まるっきり無意味じゃねえかよ
0459デフォルトの名無しさんNGNG
>>458
プ
本気でそう思ってるの?
0460デフォルトの名無しさんNGNG
>>454 同じページにwaveがあるだろうに。
0461デフォルトの名無しさんNGNG
>>459
ほんとに馬鹿まるだしだな
哀れでしょうがないぞ
頭大丈夫かい?

>>460
何なのか説明しろよ。
0462デフォルトの名無しさんNGNG
>>461
Spirit で記述された C/C++ プリプロセッサ。
つーか、ドキュメント嫁
0463デフォルトの名無しさんNGNG
spilitだかsplitだか非常にまぎらわしい
0464デフォルトの名無しさんNGNG
と思ったらspiritか
漏れの目が腐ってるだけでした
0465デフォルトの名無しさんNGNG
boostのソースは吐き気がするよ。
これほんとに使ってる奴いるの?
0466デフォルトの名無しさんNGNG
そう思うよな、でもどうやら仕事じゃあ使えないと話にならないらしい。
boostとかLokiを採用してるプロジェクトなんて見たこと無いんだけどさ。
0467デフォルトの名無しさんNGNG
人間には言語の限界へと向かって突進しようとする衝動がある

                     ウィトゲンシュタイン
0468デフォルトの名無しさんNGNG
boost含んだコード納品するなんて機会あるんか?
0469デフォルトの名無しさんNGNG
この人等はboostで何かいやな思いしたのかな。
boost知らなくてバカにされたとか?
0470デフォルトの名無しさんNGNG
まわりがboostの話ばかりしててついて行けなくてストレス溜まったとかな
0471デフォルトの名無しさんNGNG
そんなあなたには Let's boost がおすすめ。
ttp://www.kmonos.net/alang/boost/
日本語解説でわかりやすいよ。

ここみて必要性を感じなければ使わなければ良いだけの話。
ましてや他の人がboostを使ったコードを納品する機会が
あるかどうかなんて知らなくていいでしょ。
0472デフォルトの名無しさんNGNG
boostにはiostreamクラスの演算子オーバーロードのような
構文そのものの意味を変えてコーディングするスタイルを
強要するライブラリ(spiritとか)があるから
なんかあんまり好きになれない。
0473デフォルトの名無しさんNGNG
>>472
基本的にはやりすぎだと思うけど、boost::filesystem の
パス結合演算子を「/」にした辺りはなかなか面白いと思ったり。

Boost っていろいろごたまぜだから、
俺は気に入ったところだけつまみ食いという感じ。
0474デフォルトの名無しさんNGNG
おまえらスレ違い
0475デフォルトの名無しさんNGNG
すまん、ナチュラルにテンプレートスレかとおもてたよ。
0476デフォルトの名無しさんNGNG
すまん、ナチュラルにテンプレートスレかとおもてたよ。
0477デフォルトの名無しさんNGNG
>>431
ご親切にありがとうござい居ます。
やはり、かなりの数のシンボルが有るんですね。
0478デフォルトの名無しさんNGNG
lispでは新しい構文を定義するのは普通だけど
0479デフォルトの名無しさんNGNG
lisp はクソ。マクロは可読性を下げてユーザビリティがイクナイ。
) より end のほうがユーザビリティがイイんだよ。ボケが。
0480デフォルトの名無しさんNGNG
よそでやれ
どうしても此処でやりたきゃ、可読性の悪い理由書け >>479
そうすりゃ、言語仕様やらの話題になる。
0481デフォルトの名無しさんNGNG
コンパイラってアセンブラ吐く所まで作れば良いの?
それともオブジェクトコード作ってリンクする所まで?
0482デフォルトの名無しさんNGNG
言語設計と言語処理系の話は分けるべき?
それとも不可分と考えるべき?
0483デフォルトの名無しさんNGNG
言語によってはコンパイラだけで完結出来なかったりするんだよなー。
0484デフォルトの名無しさんNGNG
J*V*厨の香りがプンプンするな
0485デフォルトの名無しさんNGNG
そなん?
C++とかコンパイラだけしか見ないって条件だと殆ど無理じゃね?
0486デフォルトの名無しさんNGNG
>>481
アセンブラを呼出してオブジェクトにすればいい。
ただし権利関係やソースのフォーマット等で既存のが使えない場合は
アセンブラも自前で作らなきゃならない場合も多い。
0487デフォルトの名無しさんNGNG
lispはあれでいいんだよ。読みやすさをちょっと犠牲にしただけで
物凄いメリットが生まれたんだから。
0488デフォルトの名無しさんNGNG
ゲーデルの証明が理解出来なかったカッコ嫌いLISP嫌い厨
↓
0489488NGNG
0490デフォルトの名無しさんNGNG
>>488-489
ワロタ
0491デフォルトの名無しさんNGNG
Lispさんは悪くない。
Paul Grahamの文章を読んで勘違いしたLisp厨が悪い。

つかPaulはさっさとArcを世に問えよ、と。
0492デフォルトの名無しさんNGNG
)とendを置き換えるプリプロセッサ(sed使えば一行で書けるなw)を使えば糸冬了(<-何故か変換できる)。
0493デフォルトの名無しさんNGNG
endだらけになってもっと悲惨
0494デフォルトの名無しさんNGNG
( )を{ }に置き換えたらC言語っぽく見えますか?
0495デフォルトの名無しさんNGNG
Lispスレで聞いてくれ。
0496デフォルトの名無しさんNGNG
>>494
curl という(ダウンローダじゃないよ)のがあったな。確か昔スレたったと思う。
Arc は使ってみたいね。[] 萌え。Lisp は適度に [] を入れれば結構読み易くなりそうな
気がするんで期待してます。

いつか Scheme コンパイラ作ってみたいな。
0497デフォルトの名無しさんNGNG
俺は()&前置記法で統一されているのがベストと思う。
0498名無し@沢村NGNG
おれのマシン語のサイトに掲示板ができたぞ!
ほんにおまいら〜♪

http://hp.vector.co.jp/authors/VA015412/
0499デフォルトの名無しさんNGNG
既出だけど、TinyCC って面白そう。

ttp://fabrice.bellard.free.fr/tcc/
ttp://2.csx.jp/users/bitwalk/tcc.html
0500デフォルトの名無しさんNGNG
500ゲト。

http://i.loveruby.net/ja/rhg/
ついに来た。
0501デフォルトの名無しさんNGNG
http://home.in.tum.de/~baueran/thesis/
http://www.cobalt.co.jp/writing/index.html

just a memo.
0502デフォルトの名無しさんNGNG
クラスベースよりプロトタイプベースの方が実装ラクだな
メタメタしなくていいしw
0503デフォルトの名無しさんNGNG
スクリプトで、 printfとかを実装しようとすると、
たんなるラッパーでは通用しませんよね?

やはり、これって自前で実装しなければならないんでしょうか?
0504デフォルトの名無しさんNGNG
いいえ
0505デフォルトの名無しさんNGNG
Perlは色んな関数自前で用意することが多いよな。
0506デフォルトの名無しさんNGNG
>>503
可変長引数の処理ができれば
実装しなくてもvprintfかvsprintfでどうにかなりそうだけど
0507デフォルトの名無しさんNGNG
>>506
C言語の仕様だけで任意の可変長引数を作り出すのってできたっけ?
スタック弄らないとだめ?
0508デフォルトの名無しさんNGNG
>>507
できる。stdarg.hの説明でも見れ。
0509デフォルトの名無しさんNGNG
>>508
http://www.catnet.ne.jp/kouno/c_faq/c15.html#13
には出来ないって書いてあるみたいだけど?

なんか間違ってる?
0510デフォルトの名無しさんNGNG
>>509
あー、そっか。
実行時は確かにできないや。スマソ。
素直にスタック弄ってくらさい。
0511デフォルトの名無しさんNGNG
やはり出来んみたいね!
スタックいじるのって禁じ手かも。
0512デフォルトの名無しさんNGNG
>>509
15.13あたりかな?
やはり、printfのwrapperは無理みたい。
0513デフォルトの名無しさんNGNG
移植性考えればスタック弄るのは止めた方が良いと思う。
0514デフォルトの名無しさんNGNG
移植性つってもpushの順番程度の違いでしかないがなあ
0515デフォルトの名無しさんNGNG
スタックとは限らない。
0516デフォルトの名無しさんNGNG
お遊びでつくるプログラムに、移植性の必要は皆無。
0517デフォルトの名無しさんNGNG
>>503
スクリプト言語での1回のprintf呼びだしを、
1回のCのprintf関数呼びだしで実現しようとすると大変だが、
引数をひとつずつ処理して、何度もprintf呼べばいいんでない?

0518デフォルトの名無しさんNGNG
>>517
フォーマットを解析する必要があるので、
移植性は優れるが手間は余計にかかると思われ。
0519デフォルトの名無しさんNGNG
yacc/lex,bison/flexの話題もこっちでOKですか?
0520デフォルトの名無しさんNGNG
>>519
OK
0521デフォルトの名無しさんNGNG
Windowsで汎用的なスクリプト用途考えると、
VBScriptみたいにCOM扱えないと話にならない気がする。
と、VBScript書いてて思った。
でもCOM扱うの面倒なんだよな。
自作の言語をWSHに対応させたって人いる?
たぶんえらい手間掛かってると思うけど。
0522デフォルトの名無しさんNGNG
させようとしたことはあります。
が、IE中でscriptタグで動かすと凍るのであきらめた。
コンソールからだと、WScript.CreateObjectが上手く行く時と行かない時があったような、記憶はある。
だいぶ前の話です。
0523デフォルトの名無しさんNGNG
DMonkeyってwsh対応してなかったっけ
0524デフォルトの名無しさんNGNG
>>517
Good Idea!

ただし、scanfには使えない可能性が...
0525デフォルトの名無しさんNGNG
直接pushで積んだ方が楽だし変な不具合もない。
なんつうか、潔さ?
0526デフォルトの名無しさんNGNG
>>525
GCCでもできますか?
0527デフォルトの名無しさんNGNG
できますが?
0528デフォルトの名無しさんNGNG
>>524
format I/Oの処理は、printf(3)に下請させる場合でも、
format指定と引数の方が合ってるかどうかなど、
適切なチェックを行わなければ、処理系の状態がおかしくなってしまうので、(e.g. core dump)
言語の仕様として、C風の書式処理じゃなくて、C++風にした方がいい。
0529デフォルトの名無しさんNGNG
C++形式はアホとしかいいようがありませんな。
言語側の都合というか。
0530デフォルトの名無しさんNGNG
>>527
どのように実現されるのでしょうか?
もしよろしければ、HPアドレス等お教え下さい。
0531sageNGNG
>>529
どのあたりがアフォですかね?
0532デフォルトの名無しさんNGNG
>>531
一目で書式がわからない時点で相当のアホかと。
0533527NGNG
>>530
インラインアセンブラ使えよ。
それだけだよ。
何を迷ってるんだが。
0534デフォルトの名無しさんNGNG
x86と68kとarmとppcとG3〜G5くらいまで対応すれば普通の人は困らないかな?
0535デフォルトの名無しさんNGNG
SPARCO...
0536デフォルトの名無しさんNGNG
今ドラゴンブックを読んでいるんですが、
LRの構文解析は、yacc等のツールを使わないと作成できないんですか?
手動で書くと非常にめんどくさいとかいうのをどこかで読んだ気がするんですが、
なぜですか?
0537デフォルトの名無しさんNGNG
なぜですかって、自分で書いてみろよ(w
アホか?
0538536NGNG
>>537

いや、自分、まだそんなレベルじゃないので。
構文解析などはまったくわからず、ドラゴンブックの最初の一章を読んでいる途中です。
0539デフォルトの名無しさんNGNG
プログラム書けない情報系の学生
0540536NGNG
>>539
情報系ではありません。

ただし、学生ではあります。

(プログラム書けないってのは、まあ、当たらずとも遠からじと言えるかも)

0541デフォルトの名無しさんNGNG
>>536
まだいたのか(w
「めんどくさい」ってことは「作成できる」ってことだろ。
聞いた話とか鵜呑みにするんじゃなくて、
こういうのは自主的に確かめるとかしないと身にならないよ。
0542デフォルトの名無しさんNGNG
コンパイラのようなこんな人間もいるのだな。
0543デフォルトの名無しさんNGNG
クリリンの事かぁー!
0544デフォルトの名無しさんNGNG
>>536
最後まで読んでから聞け
社会に出てから苦労するぞ
0545デフォルトの名無しさんNGNG
allocaってどうやって実装してるの?
引数に渡す値って可変なんでしょ?
後付けでadd esp, nとかわかんの?
ソース嫁とかなしでおながいします。
サムイので
0546デフォルトの名無しさんNGNG
ソース嫁
0547デフォルトの名無しさんNGNG
サム・・・
0548デフォルトの名無しさんNGNG
gccだとbuiltin_allocaでinline風の処理。
0549デフォルトの名無しさんNGNG
どうやっても何もねーし
スタックポインタ動かす→そのアドレス返す、で終わりだろ
0550デフォルトの名無しさんNGNG
これだからソース嫁ない香具師は・・・・
0551デフォルトの名無しさんNGNG
>>545
allocaはコンパイラの組み込み関数です。

コンパイラの生成するコードが読み切れる―例えばauto変数の参照にはフレー
ムポインタのみを使い、SPは関数出口でsp <- fpのように設定して元に戻すま
で参照しない―なら、後付けで実装もできます。

でも最適化のレベルの高いコンパイラでは危険ですね。
0552デフォルトの名無しさんNGNG
ahhoca()
0553デフォルトの名無しさんNGNG
>>548
ahoca?

0554デフォルトの名無しさんNGNG
assoca!
0555デフォルトの名無しさんNGNG
>>554
asoccaじゃねーの?
0556デフォルトの名無しさんNGNG
alloca(n)を
sub esp, n
mov eax, esp
に展開してやればいいの?


最後に
mov esp, ebp
pop ebp
する関数なら大丈夫ってこと?
0557デフォルトの名無しさんNGNG
>>556
それだと危険だね。Win32だと単純にスタックポインタをいじるだけだと、
2ページ以上境界をまたいだ時に例外飛ぶよ。
他のOSは実験してないからしらん。

確か1ページずつ動かしてくコードになってたはず>_alloca()
隣のページを触った時に初めてメモリ確保するんだっけな?
0558デフォルトの名無しさんNGNG
>>557
え、ページなんて概念があったんですか。
ちなみに1ページって何バイトでしょうか?
その辺の情報で何か適当なWebリソースってありますでしょうか。

そういえば、自作の処理系でスタックから配列を確保すると、
16000バイト付近でおかしなことになるんですが、これも
ページと関係ありですか?
コンパイラ側でスタックサイズを確保するだけじゃだめなのか。
0559デフォルトの名無しさんNGNG
ごめん、ググったらx86の1ページは4kてわかりました。

今ためしにVC6で大きい配列確保するテストしてみたら、
ある大きさになったら密かに__chkstkっていうのを呼んでる。
ちょうど4kバイトを境に。
まいったなあこれ。
全く知らなかった。
0560デフォルトの名無しさんNGNG
つまり4kを超える固定配列をスタックに確保する場合は、
sub esp, 4096
の代わりに、
mov eax, 4096
call __chkstk
に書き換えなくてはいけないわけだ。
やだなあこれ・・

allocaだと+余分を計算しないといけない?
無条件で_chkstk呼べばいいのかな。
0561デフォルトの名無しさんNGNG
でもこれでスタック確保でおかしくなる原因がすっきりわかりました。
ありがとうございました。>557
0562558NGNG
いまどきのOSはスタックの割り当ては動的だからね。

最小限のサイズのみを割り当てて、スタックの次のページを
さわった瞬間にメモリ未割り当てのページフォルトが発生して、
そのタイミングで実際の仮想メモリを割り当てる実装になってる。
で、そのページフォルトを判定するのが隣接ページのみってこと。

フレーム割り当てのタイミングでサイズが決まってるのなら、
sub esp, 4096; sub esp, 4096; sub esp, 200
みたいな感じで展開しちゃってもいいと思うよ。
0563デフォルトの名無しさんNGNG
>>562
espの値を変えただけでは、ページを触ったことにはならないと思うが。
0564デフォルトの名無しさんNGNG
つーかさー、いい加減ソース見ろよ。
ページ処理をどーすればいいのかとかもわかるし。
0565デフォルトの名無しさんNGNG
>>558
ところで、自作の処理系ってアクティブ何とか?
0566デフォルトの名無しさんNGNG
やっぱりMacOSXみたいにスタックもallocしたほうが分り易いよな
0567デフォルトの名無しさんNGNG
>>562
名前557の間違いですか?
ちなみにCRTの_chkstkを呼ぶ様にして解決しました。
おかげで既知のバグがすべて潰せました。

>>564
557氏みたいなヒントがないとソースみてもわかんなかったよ。

>>565
アクティブ何とかの話はよくわかりませんが、
目標はネイティブ実行できるLISPっぽいCみたいな感です。
0568デフォルトの名無しさんNGNG
どーでもいいけど、
スタックとるahhocaって制限多すぎでない?

大きな自動変数は、普通process即氏けどな。
0569557NGNG
>>563
IA-32(+Win32?)の場合だとesp、ebpは明示的に参照しなくても
ポインタが指し示すだけでAccess Violation飛んだはず。
かなり前の記憶なんで確証ないけど・・・

>>568
用途が違う。大きなサイズが必要ならHeapを使えばいい。

関数が呼び出されるまで厳密なサイズはわからないが、
スタック食いつぶすほどのサイズにはなりえない場合とか、
シグナルハンドラから突如longjmp()されようが、絶対に
メモリリークしたくない場合などに使える。
0570デフォルトの名無しさんNGNG
>>569
> かなり前の記憶なんで確証ないけど・・・
明らかに記憶違い。

$ uname -ms
CYGWIN_NT-5.0 i686

$ cat a.c
#include <stdio.h>
static void *
badstack()
{
    __asm__("mov %esp, %edx; sub $0x100000, %esp; mov %esp, %eax; mov %edx, %esp");
}

int main()
{
    char *p = badstack();
    printf("%p\n", p);
    fflush(stdout);
    printf("%x\n", *p);
    return 0;
}

$ gcc a.c

$ ./a.exe
0x12ef18
Segmentation fault (core dumped)
0571デフォルトの名無しさんNGNG
>>570
linuxでもちょっと大きな奴渡すとすぐにsegfault!です
0572558NGNG
>>571
自分も最初そう思ったけど、
10分の1の0x10000にしても落ちたから違うと思う。
ポインタ変えただけじゃ駄目なんじゃないかな。
_chkstkのまわりくどいソースとあわせて考えると。
0573デフォルトの名無しさんNGNG
>>571
大小は関係ない。
> esp、ebpは明示的に参照しなくても
> ポインタが指し示すだけでAccess Violation飛んだはず。
というのは誤り。espを変更しただけでは落ちないで、参照したときに落ちる。

>>570のテスト内容ちゃんと見た?
0574デフォルトの名無しさんNGNG
>>570
つーかそれ関数すぐ戻ってるから、プログラム的に
スタックが有効かどうかというテストにはならんのでは?
badstack() {
 char baduse[0x100000];
 return baduse;
}
と同じことだし・・
0575デフォルトの名無しさんNGNG
あー勘違いした
0576デフォルトの名無しさんNGNG
なので、>>571が正解!
0577545NGNG
alloca実装でけたよ
疲れた
0578デフォルトの名無しさんNGNG
Windowsで使えるlexってないんでしょうか?
Cygwin上でうごかすのではなく、純粋にWindows用として。
0579デフォルトの名無しさんNGNG
ttp://sourceforge.net/project/showfiles.php?group_id=23617
0580578NGNG
>579
ありがとう。
でも俺がいうのもなんだが甘やかしすぎでは。
0581デフォルトの名無しさんNGNG
>>580
何だそりゃw
0582デフォルトの名無しさんNGNG
>>578
こんなんもあるけどな
http://www.vector.co.jp/soft/dos/prog/se002362.html
0583デフォルトの名無しさんNGNG
579は鉄オタに優しいNHKみたいですね<あまやかしすぎ
0584デフォルトの名無しさんNGNG
おれはNHK料金払ってない
0585デフォルトの名無しさんNGNG
>>584
同じく、見てないし。
0586デフォルトの名無しさんNGNG
つーかNHKあまやかしすぎ
0587デフォルトの名無しさんNGNG
教育テレビで歌のお姉さんが胸もまれてたよ。
0588デフォルトの名無しさんNGNG
なんと。
0589デフォルトの名無しさんNGNG
yacc か bison のサンプル集みたいなサイトご存知ないですか?
ちょっと、書籍で勉強してるんですがサンプルが少なくて困ってます。
0590名無し@沢村NGNG
おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!!
プログラム言語の歴史が変わった歴史的瞬間だ。

http://hp.vector.co.jp/authors/VA015412/
0591デフォルトの名無しさんNGNG
>>590
Windoze用かよ _| ̄|○
0592デフォルトの名無しさんNGNG
逆に聞くが、Windows用以外に何があるんだ?
0593デフォルトの名無しさんNGNG
>>592
(゚Д゚)ハァ?Macに決まってんだろ!
0594デフォルトの名無しさんNGNG
>>592
SPARCでSolarisかLinux。PPCでMac OS X用。
これだといじれるんだけどな。Windozeなんざ動く環境がないんで試す事すらできねぇ。

あ、StrongARMなLinuxZAURUSも有るか。
0595デフォルトの名無しさんNGNG
> Windoze
スペルは正しく書きましょう Windows :p
0596デフォルトの名無しさんNGNG
>>595
ネタだとは思うけど一応...

ttp://d.hatena.ne.jp/keyword/Windoze
0597デフォルトの名無しさんNGNG
ネタをネタで :D
0598デフォルトの名無しさんNGNG
最適化技法について分かりやすく説明してくれている HP ってありませんか?
0599デフォルトの名無しさんNGNG
yacc の勉強とかはみんなどこでやったんですか?
書籍は相当限られていると思うのですが。
0600デフォルトの名無しさんNGNG
yaccなんて1、2回使えばわかる気がするけど。
0601デフォルトの名無しさんNGNG
>>599
みんな、yacc のソースコードを必死に読んだんだよ。
そのために bison はオープンソースになっているんじゃないか。
お前も頑張れ。

因みに yacc のスキャナ自体も yacc で書かれているが
頑張れば何とかなる。
0602デフォルトの名無しさんNGNG
いやいや、yaccのサンプルはないの?
0603デフォルトの名無しさんNGNG
>>602 >>88見れ
0604名無し@沢村NGNG
ちんぽ
0605デフォルトの名無しさんNGNG
それで?
0606デフォルトの名無しさんNGNG
>>603
書籍はもってるらしいぞ。
0607デフォルトの名無しさんNGNG
gcc 3.4のC++パーサは手書きなんだと。
0608デフォルトの名無しさんNGNG
>>607
みんな手書きだろう?
口述パーサなんてあるか?
0609デフォルトの名無しさんNGNG
>>608
> みんな手書きだろう?
3.3.3まではyaccに生成させてたんだよ。
これは手書きとは言わんだろう?
0610 NGNG
ところで、コンパイラの仕事ってどうやって
発生するの?
どんな会社がそういった仕事の最先端を行っているの?
なんとなく興味あります

わたしはしがない下請けなので
コンパイラ、と聞くとちょいと憧れますね
0611デフォルトの名無しさんNGNG
知ってるけど教えてあげない
0612デフォルトの名無しさんNGNG
>>609
なるほど、そういう意味ね!

0613デフォルトの名無しさんNGNG
>>529
ほほえましいな。レス番違うし。
0614デフォルトの名無しさんNGNG
>>613
0615デフォルトの名無しさんNGNG
ワロタ
0616デフォルトの名無しさんNGNG
じわじわ来るねw
0617デフォルトの名無しさんNGNG
すんません、Exceptionのthrowとcatchって、どうやって実装されてるんですか?
なんとなく、setjump()とlongjump()をつかうんだろうなーとは思うんですが、いまいち自信ないです。
どう実装してるのかを紹介したサイトなりがあれば教えていただけますか。
#「例外 実装」とかでぐぐってもそれらしいのは見つからない。
0618デフォルトの名無しさんNGNG
exception setjmp longjump でググってみてみれ。

http://www.google.co.jp/search?q=cache:qXwDJ7nZF0EJ:maborosi.kobe-du.ac.jp/sugiura/soft/super/longjmp.htm+exception+setjmp+longjump
0619618NGNG
longjmp だった。言い訳なんかするもんか・・・
0620デフォルトの名無しさんNGNG
How a C++ compiler implements exception handling
http://www.codeproject.com/cpp/Exceptionhandler.asp
0621デフォルトの名無しさんNGNG
>>617
ちゃんとしたcontinuationがあれば、それを使って実装すればいい。
0622デフォルトの名無しさんNGNG
どういう意味だ?
0623!621NGNG
>>622
exception を実装する為に continuation を実装するというのも本末転倒な感じが
するけど。

ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html
0624デフォルトの名無しさんNGNG
longjumpは制約が多すぎないか?
スクリプトレベルでうまく動かすためには、相当なサポートコードが必要に
なると思うが…
0625デフォルトの名無しさんNGNG
Rubyはlongjmp使ってなかったっけか。
0626デフォルトの名無しさんNGNG
自分も先読みが結構必要なときの
マッチしなかったときの処理にlongjmpを使ってるよ。
0627デフォルトの名無しさんNGNG
>>610
ARM,MIPS,SHとかの組み込み用アーキテクチャとかなら新規開発したあとコンパイラもそれにあわせて最適化とかが必要だから仕事があるんじゃない?
0628デフォルトの名無しさんNGNG
Schemeでいうcontinuationの機構を作りたいのですが、
setjmpとlongjmpの他に何が必要ですか?
スタックの内容を退避しなければ駄目ってのはなんとなくわかるのですが。
インアセ使わずにC言語だけでできるものでしょうか?
とりあえずi386以降で動けばいいです。
0629デフォルトの名無しさんNGNG
>>628
「スタックなぞ一切使わない」というのが王道です。

すなわち、関数呼出しはCALLでなく、JMPになります。
return addressは、「次の処理の関数」として表現し、引数として渡すのです。
通常スタックフレームに置かれる変数は、ヒープに置くことになります。

関数型言語スレ(総合スレは荒れてるので、HaskellかML)
で質問すると詳しい人が教えてくれるでしょう。
0630デフォルトの名無しさんNGNG
ういー、むづかしそうです。
SchemeのCPSてやつですね。
0631デフォルトの名無しさんNGNG
「スタックなぞ一切使わない」という方法は、ここでいう (4) の前者だよね。

ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000018.html
ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000019.html
0632デフォルトの名無しさんNGNG
>>630
やりたいこととは違うと思うけど、Schemeを普通のCにコンパイルする方法。
http://home.pipeline.com/~hbaker1/CheneyMTA.html

- 関数呼出しはCの関数呼出しとしてコンパイルされるが、CPSなのでreturnは決してしない
- スタック領域をヒープとして用いる
- スタックがあふれそうになったら、copying GCで新しいスタック領域に移し計算を続行する
- GCのスタックを走査する部分にはCPUに依存しないので、Cだけで書ける

昔Sigplan Noticesで読んで面白いと思った。


0633デフォルトの名無しさんNGNG
bison / yacc の使い方の質問です。

bison とか yacc って、みんな初めは電卓作りますよね。
3 + 5 (Return)
って入力すると「画面上に」8をprintfするやつ。
これ、画面上で8を返すんじゃなくて、
yyparseの返り値とかそういう感じで yyparse の呼び出し元に
8 を何とかして知らせる方法ないですか?
ただし、グローバル変数は使わないものとして。
0634デフォルトの名無しさんNGNG
>>633
/usr/lib/yaccpar とか /usr/share/bison/bison.simpleを書き換える。

bisonは

#define YYPARSE_PARAM foo

を定義しておくと、void *fooが引数として渡されるから、アクションでその中に
答を入れて返すようにすればいいのでは。

プログラム中からyyparseを複数回呼出す場合は、先読みバッファの再初期化に注意。



0635名無し@沢村NGNG
おまいらよ、おれはつい最近つーか、たったいまさっきtcl/tkつーコンパイラの存在を知ったよ。
いまDLしてるところで、まだ開けて見てないんだが、Webでの説明を見た限りじゃなんか良さげだった。
つーか、GUIに関しては、Visual C++よりもちゃんとしたGUIアプリが簡単につくれるとのことだ。
ただ計算的な処理には不向きということだが、そこは何かC言語で書いて追加できるとのことだ。
おれはちょっとこのtcl/tkを調べてみるが、ホントにGUIに関して良さげだったら、いま開発中の「Vicual E++」は、
このtcl/tkで書き直してもいいな。Visual C++じゃエディタの予約語の色づけとかチョー面倒だしな…
そして内部のメインの処理だけをC言語で書くようにすればいいからな…
それができそうかどうかをまず調べてみようと思う。
次に調べたいことは、おれが次につくりたい高級言語に、tcl/tkはオープンソースらしいから、パクレる部分があるかどうかということだ。
ともあれ、おれのコンパイラの開発は飛躍的に前進しそうだな。
おまいらよ、おれはtcl/tkいま知ったぞ。おまいらは、tcl/tk知らなかっただろう?
0636デフォルトの名無しさんNGNG
>>635
tcl/tkって「チックル・チーコ」って読むんだよね?
0637デフォルトの名無しさんNGNG
>>635
お前だけ。
0638名無し@沢村NGNG
Tcl/Tk、DLしたが、何やこれわぁ!?スクリプトやないか?
実行ファイル作成できんのか?HSP以下か?ゴミソフト!!!
0639デフォルトの名無しさんNGNG
セックル・チンコ
0640デフォルトの名無しさんNGNG
>>638
tclsh, wish という位だから、tcl/tk は一種のシェルだよ。
C から system() でシェルのコマンドを実行するのと似た様な感じで使える。
まぁ、もちっと面倒だけど。

俺も以前 tcl/tk からパクれる所が無いかなとソース眺めてみたけど、
C で実装されている部分は低レベルな所だけだったような。
0641デフォルトの名無しさんNGNG
TclつったらPerlと同じくらい歴史の長いスクリプトなんだが
アホは知らなかったのね。
0642デフォルトの名無しさんNGNG
>>641
言語で大事なのは歴史の長さよりも話者人口だよ。
歴史の短い Java をみんなが使うのはなぜだと思う?
Algol や Prolog が滅びたのは?
0643デフォルトの名無しさんNGNG
今頃Tcl持ち出してくるなんて100%ネタだと思ってたんですが。
釣りだよね?親切に説明してる640が気の毒だ。
0644デフォルトの名無しさんNGNG
>>642
Algolはともかく、Prologは滅びてはいないだろ。
Algolにしたって、形を変えてその思想は受け継がれているわけだし。
0645デフォルトの名無しさんNGNG
>>642
知名度の話をしてるんだが。なにが言語で大事なのは、だ。
かってに妄想してチンコ膨らましてんじゃねーよキモイ。
0646デフォルトの名無しさんNGNG
642じゃないけど、
 妄 想 ま で 制 限 さ れ て た ま る か
妄想でチンコ膨らそうぜ
0647デフォルトの名無しさんNGNG
>>642
Tclはハード設計ツールの組込みスクリプト言語ではメジャーです。
(Tclはいやだけど、独自言語よりはましだよな)

もともとTclはアプリ組込み用だし。tclshもwishも組込みのサンプル
みたいなもんです。
0648デフォルトの名無しさんNGNG
でも結局、Tk のほうが Tcl よりも何倍もメジャー。
0649名無し@沢村NGNG
Starpack
Tcl/Tkでつくったスクリプトを実行ファイルに変換するツールだな。
が、わし英文読めんけん、このページのどっからDLしていいかわからんのよ。
このページの何行目の何という文字をクリックするとDLできるか、教えて〜♪

http://www.interq.or.jp/japan/s-imai/tcltk/tclkit.html
0650デフォルトの名無しさんNGNG
沢村師ねよ
0651デフォルトの名無しさんNGNG
ここは沢村を呪うスレとなりました。
0652デフォルトの名無しさんNGNG
              -=、 ̄`―''" |\ `'''―'''"   |  ||          |ヽ、_____,へ、
         ,...--、    `―‐ァ‐...::', \:::::::::::::::::::: |  ||    |ヽ、___,ヘ、| ┌───┐ i´
        ,. '  ..::....`'''‐--‐''"~...:::::::::ヽ  ` 、::::::::::::::::|  ||    | ┌─┐ i´ | |     │ |
    -=ニ"_,...、-- ヾヽ、::::::::::::::::::::::::::::::::ヽ  `、 `,::::::|  ||    | |  │ | | |      .| |
          `''‐-`ヽ.`''‐-..._:::::::〃:::l:::l`ヽ..ノヽヾ,: |  ||    | |  │ | | |____| |
     ,..-‐''''‐----'":::::::`ヽ、 /l:/|::::/l:::lヾ.‐'""' i| l |  ||    | |  │ | |.┌─‐┐┌┐.|
  __,. ' ......:::::::::::::::::::::::::::::::::::: `''1 l! l::::i lヾ|,...-==l. l:|  ||    | └─┘ | |ノ ,ヘ、 | | レ'
  `ー--‐' ̄`>   ....:::::::::::::::::ノ.._,...ヾ!ノ-':::/~   ノ i |  ||    .| | ̄ ̄|ノ  / /` .| |
       ,.. '"  ...::::::::::::::::::::::::::ヽ< ̄`>'" `ー‐‐''"ノ..|  ||     |ノ      / /  | |
-‐'"゛`''‐''" .......::::::::::::::::::::::::::::::::::::::{ `‐',ヘ |  ,..、_  .|  ||             / /   | |     /|    
....__...:::::::::::::::::::::::::::::::::::::::::::::::::::::::!、  !  ,..-`    ,. |  ||           /./   .| |   . / |
  -"--- ....___,...--- ._::::::::::::::::::::`、 `‐'    _ィ' V|  ||     ._ _/./    . | └──'´ .,)
           , '" ̄..::::::::::::::::::::::::::〉__,..w、ァ'"Vハノ |  ||      `ー─‐'´      `ー───'´
   ,..--- ....__,. ' ....:::::::::::::::::::::::::::::::::::::::::Vi,..ハ---'" |  ||
  ,. '    .....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::'、. ―   .|  ||
-=-‐-‐'゛`''‐-.._   _,..-----==-  .:::::::::::`ー.`--‐'",'|  ||

0653デフォルトの名無しさんNGNG
沢村が全てを台無しにしたんだな。
0654デフォルトの名無しさんNGNG
マルチスレッドが良く分からない。マルチスレッドなコードを生成するのには
コンパイラ側で何かしてあげなくてはいけない事があるのでしょうか。
それともランタイム環境の問題なのかな。
0655デフォルトの名無しさんNGNG
tls(thread local storage)なんてのが言語仕様として定義されていればコンパイラはそれを意識する必要があります。
0656デフォルトの名無しさんNGNG
>>655
完全にライブラリレベルなのかなと思っていたのですが、そういう訳でもないんですね。
pthread ライブラリを wrap して、他のライブラリも MT-Safe に作れば良いのかと
思ってました。どうもありがとうございます。
0657デフォルトの名無しさんNGNG
インタープリタなんかではスレッド作るとそのスレッド専用の VM が起動する処理系が
あるみたい。コンパイルされる言語でも、スレッド毎にランタイム環境を作ってあげれ
ば良いのかな。
0658デフォルトの名無しさんNGNG
>>657
コンパイルされる言語の場合は、ホスト環境のpthreadライブラリを呼び出す様に
すればいいのでは?
今後主流になると思われるSMP環境を考えたら、複数のCPUを有効に使えるかも
0659デフォルトの名無しさんNGNG
>>658
pthread_create() が C の関数を引数に取るので、クロージャとかを渡したい場合に
何となく面倒じゃないかなと思ってました。変数部分は引数として渡してあげれば
問題無いような気がしてきました。
0660デフォルトの名無しさんNGNG
bison と flex を使っています。
flex では yylval をガンガン使っています。
bison で %pure_parser したら flex が吐き出す C コードのコンパイルで氏にました。
どうすれば %pure_parser しても yylval (と同じような機能) を flex で使えるでしょうか。
0661デフォルトの名無しさんNGNG
>>660
自己レス
http://www.timeparadocs.net/bab/flex_bison/flex_bison.htm
これで解決しますた。
が、flex のファイルに yylval.hoge と書いていたのを yylval->hoge と書かないと逝けないようです。
0662デフォルトの名無しさんNGNG
boostのspiritっていじって遊ぶにはよいけど、
実際問題使えるものなのかな?
0663デフォルトの名無しさんNGNG
boost::spirit便乗質問なんですがパースした後
parse_infoのfullを調べるとエラーが発生したか確認できますが
エラーが発生した行番号を取得するにはどうやったら良いんでしょうか?
0664デフォルトの名無しさんNGNG
position_iterator(勘
0665デフォルトの名無しさんNGNG
うわ、みてみると確かにそれらしい気配が・・・
しかし、よく意味が分からない罠・・・
0666読まずにレスNGNG
JJTreeでJVM上で起動するスクリプトを書くのはアリですか?
0667デフォルトの名無しさんNGNG
だめ
0668デフォルトの名無しさんNGNG
このようなコンパイラ誰か作ってもらえません?
イメージ的にはVMを介さない.NETみたいな。
開発の形態はApacheみたいに元となるものがあって
ユーザーが拡張プラグインを自由に作って公開できるようなのがいいな。

・ネイティブコードを吐く
・OSは問わない
・VMなどを介さない
・メインとなる構文はあるが、ユーザーが自由に構文を追加・変更できる。
0669デフォルトの名無しさんNGNG
>>668
D言語でええやん
0670デフォルトの名無しさんNGNG
>>668
ttp://hp.vector.co.jp/authors/VA015412/
0671デフォルトの名無しさんNGNG
>>669
D言語って名前くらいは聞いたことあるんですけど、
>>668で書いたようなことを実現しているんでしょうか?
0672デフォルトの名無しさんNGNG
Lisp系を使えばいいんでないかとオモタ
0673デフォルトの名無しさんNGNG
>>668
このようなコンパイラ誰か作ってもらえません?

というクレクレな割に

> ・ネイティブコードを吐く
> ・OSは問わない

いきなりハードル高い
0674デフォルトの名無しさんNGNG
>>673
APIの類を使わなければ大丈夫
CPUは限定されるが
0675読まずにレスNGNG
ダメですか…orzガックリ こっそり作ることにします。
0676デフォルトの名無しさんNGNG
.NETだから、膨大なライブラリで動的な言語で言語非依存のバイナリインターフェイスを持ってないとダメだな
0677デフォルトの名無しさんNGNG
>>668
死ねボケ
0678デフォルトの名無しさんNGNG
>>677
お前が死ねカス
0679デフォルトの名無しさんNGNG
>>678
お前も死ねタコ
0680デフォルトの名無しさんNGNG
goto 677
0681デフォルトの名無しさんNGNG
nop

0682デフォルトの名無しさんNGNG
lea eax, dword ptr[eax]
0683673NGNG
>>674
> APIの類を使わなければ大丈夫

画面を含む一切の入出力ができなくなりますが
0684デフォルトの名無しさんNGNG
ブートから初めてVESAなり叩けば良い
0685デフォルトの名無しさんNGNG
>>668は実行可能ファイルとは一言もいってない訳だが。
0686デフォルトの名無しさんNGNG
このページ挙がってないのかな?
http://www.csg.is.titech.ac.jp/~chiba/lecture/os/
0687デフォルトの名無しさんNGNG
gosub 687
0688デフォルトの名無しさんNGNG
>>683
>画面を含む一切の入出力ができなくなりますが
要求事項にないから、いいんじゃない?
0689デフォルトの名無しさんNGNG
>>683
GCC があるんだから自分の好きな言語のフロントエンドを書けばいいじゃん。
0690デフォルトの名無しさんNGNG
簡単に言ってくれるが、gcc難解すぎて弄る気にならん
0691デフォルトの名無しさんNGNG
>>689
GCCのフロントエンド書いたときあるの?
0692デフォルトの名無しさんNGNG
>>689
gcc使っても>>668の用件に合わせるのは難しいままだろ?
無知蒙昧な人?
0693デフォルトの名無しさんNGNG
>>689-692
GNU Common Lispでマクロをいじれば何とかなりそう。
0694デフォルトの名無しさんNGNG
http://www.cminusminus.org/
http://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html
http://llvm.cs.uiuc.edu/Features.html
http://gcc.gnu.org/onlinedocs/gccint/RTL.html

C--, MLRISC, LLVM, RTL...
色々在るけど、誰か使った事ある?
0695デフォルトの名無しさんNGNG
>>685
まあ、ここ見てる奴は「ネイティブコード」と書いてあるからそんな疑問は浮かばんわけだが。
0696デフォルトの名無しさんNGNG
ネイティブコードと、オブジェクト(実行可能)ファイルを混同して考えるのはお前くらいなものだが。
0697デフォルトの名無しさんNGNG
C--は使ったことあるよ。
結構面白いけど、関数型言語とか論理型言語とか、
実装研究がまだまだ行われている言語向けだなあ。
0698デフォルトの名無しさんNGNG
Common Lispのプリプロセッサ(マクロ)って
そんなに自由度が高いの?
0699デフォルトの名無しさんNGNG
>>698
自由度は高いよ。
マクロ定義とは実質的にLispコードを生成する関数だとか。

まあ、C++のtemplateもだけど自由度が高ければ高いほど解読しにくいわけで、
達人以外が使っても生産性が大して上がらない気もする。
0700デフォルトの名無しさんNGNG
Lispのマクロは
評価時に展開されるから
*プリ*プロセッサとは言わない
0701デフォルトの名無しさんNGNG
>>700
評価に先駆けて展開しといたり、
コンパイル時にも展開できるわけだが。
まあ話を平たくすると、いつでもできるわけだ。
0702700NGNG
>>701
Lispの評価器に関する知識が必要な話を
マクロ=プリプロセッサという世界のの人に
今説明しても混乱するだけかと
0703デフォルトの名無しさんNGNG
>>698
S式を二回評価すると思ってね。(おおざっぱ)
一回目でプログラムの生成、二回目で生成されたプログラムの実行。
LispはデータもプログラムもS式だから、
こういうのは機構的にもプログラミング的にも簡単。
一度遊んでみると良い。
0704デフォルトの名無しさんNGNG
C, C++だと
MYMACRO(a,b,c) { ... } // a,b,c,..は可変個引数
から
 int a=0;
 int b=1;
 int c=2;
 ...
 my_macro_end(a,b,c);
を生成するようなのは書けないでしょ? Lispのマクロはできます。

C++やJavaだとデザインパターンなどで似たようなコードをクラス毎にあちこち
で書かないといけない(が、C++のテンプレートでは表現できない)ことがある。
そういう場合にパラメータを与えて雛形からコードを生成するスクリプトをRuby
などで書くことを考えましょう。
Lispのマクロなら全部Lispだけでできます。
0705デフォルトの名無しさんNGNG
後はなんだろう。処理に必要なデータを静的に持っておきたいとしましょう。
例えば、isdigit()のために、その文字が数字かどうかを記録した1バイト文字
256個分のテーブル(文字が数字なら1、数字でなければ0)を定義したいとします。
そこで、
int isdigit_table[] = {
 0, 0, 0, ...., 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...., 0
};
と書く代わりに
int isdigit_table[] = {
 (eval-when-compile // コンパイル時に実行
  int table[256];
  char* digits="0123456789";
  memset(table, 0, 256);
  for (char* d=digits; *d!='\0'; d++)
    table[*d] = 1;
  return table;)
};
みたいなことを書けば、(eval-when-compile ...)で囲んだ処理をコンパイラが
実行して、その結果のテーブルとして同じ中身のisdigit_tableを定義できると
思ってください。
C++だとコンストラクタでもできますね(コンパイル時でなく実行時になりますが)。

要するに、C/C++のマクロ(cpp)が格段に高機能な言語になったとしましょう
(C自体では嬉しくないから、RubyとかPHPとか?)。その場合のC,C++に相当する本
体の言語がLispであり、ついでにcppの言語も同じLispになったと考えればいいです。
0706デフォルトの名無しさんNGNG
まあLispは面白い言語なので
SICPは読んで損がない本だと思うよ
0707デフォルトの名無しさんNGNG
まぁ、LISPやる奴で実用的なプログラム書ける奴見たこと無いんだけど?
0708デフォルトの名無しさんNGNG
>>707
emacsってそんなに使い物にならない環境なのか。なるほど。

やっぱvi?(違
0709デフォルトの名無しさんNGNG
xyzzyがWin emacsの筆頭?
0710デフォルトの名無しさんNGNG
>>704
C++でならTypeList or boost::mpl使えば書けそう。
まあ流石に100個も200個も可変長引数を渡されると無理だろうけど。
0711デフォルトの名無しさんNGNG
ECMAScriptを解析してくれて、しかも組み込み関数・オブジェクトを定義できるライブラリが欲しい
自作すると変数宣言と組み込み関数・オブジェクトのみになりそうだ
0712デフォルトの名無しさんNGNG
Schemeは括弧さえ折り合いつけば最高の言語の一つだ
0713デフォルトの名無しさんNGNG
>>711
クロスプラットフォームなら spidermonkey とか、
Windows だけでいいなら ActiveScript とか。
どちらでも簡単にできるよ。
0714デフォルトの名無しさんNGNG
>>709
>Win emacsの筆頭

Meadowの方が広く使われてます。
0715デフォルトの名無しさんNGNG
>>713
SpiderMonkeyはかなりよさげだね
しかし英語だらけで組み込めるのは当分先か・・w
0716デフォルトの名無しさんNGNG
>>704
そういうプリプロセサ書いて、差し替えれば済む話だと思うけど。

全部 C/C++ でできますよ。(藁
0717デフォルトの名無しさんNGNG
C/C++ではたしかpreprocessor commandsも規格の一部な罠。
0718デフォルトの名無しさんNGNG
プリプロセッサを差し替えるオプションなんてあるの?
Visual C++とgccを見たけど見つからなかった。
0719デフォルトの名無しさんNGNG
>>716 それじゃ「コンパイラ書けばできますよ」ってのと変わらないやん.
0720デフォルトの名無しさんNGNG
>>718
自分のプリプロセッサから、コンパイラ呼べばイイだけじゃない?
0721デフォルトの名無しさんNGNG
>>720
そりゃそうだ。でも差し替えるとは言わんな。下らないことをきいてしまった……。
0722デフォルトの名無しさんNGNG
差し換えるならspecファイルだろ。
0723デフォルトの名無しさんNGNG
>>718
GCC とかならソースあるんだから、適当に修正して実行ファイル入れ替えれば良いんじゃないのか ?

>>719
まあ、そりゃそうだけど、コンパイラ書くより多少難易度は低いだろ。
0724デフォルトの名無しさんNGNG
結局使い物にはならないと。
普通のアプリケーション書くのに特定のコンパイラのバージョンとそれへのパッ
チ込みで保守したくはねーなあ。
0725デフォルトの名無しさんNGNG
まあ、このスレ的にはコンパイラまで作ってしまえって事になるかな。
TinyC->.asm位だったら簡単だしね。

俺は#defineなどC言語準拠なプリプロセッサに
アセンブラ風の複数行マクロを使えるような物を作って、
言語ごとに微調整しているよ。
()を使わないバージョンなどね。

エラーを探知するために、##lineっていう
現在のコンパイル行をプリプロセッサ->コンパイラへ通知する命令をつくって、
デバックもしやすくしているよ。
0726デフォルトの名無しさんNGNG
>>724
て言うか、普通のアプリケーション書くのに >>704 みたいなことはあまり必要ないだろ。
マクロプロセサやプリプロセサが高機能だと色々おもしろいけど、実際のところ後の保守が大変だったりするからあまり使わん。

昔使った PL/I のプリプロセサは、IF 文は当然、FOR/WHILE の制御構造や PROCEDURE/FUNCTION なんかの手続き/関数定義までできた。
だから凝った定義を書けば、ソースを短く書けたけど、プリプロセサ文をデバッグする手間を考えたら素直にソースを手で展開した方が早かったよ。(藁

MASM なんかのマクロアセンブラでも同じような経験したことある人は多いと思うよ。
0727デフォルトの名無しさんNGNG
俺はわりとしょっちゅう欲しくなる方だな。
Lispのマクロで俺言語を作ることを考えると>>726も想像はできるけど。
>>726とは逆に最初書くときはベタに展開したソースを書くけど後から
保守性を考えてマクロでまとめることも。あまり凝ったことはしないけどさ。
cppに変数とifとfor eachだけでもあれば世の中もうちっと良かったろうに。
0728デフォルトの名無しさんNGNG
コンパイラとかの参考図書は、よくありますが
スクリプト言語の参考図書(定番)は、ごぞんじないですか?
0729デフォルトの名無しさんNGNG
各OS毎のリソースコンパイラの作り方に触れたサイトってありますか?
0730デフォルトの名無しさんNGNG
>>728
その二つに大きな違いはない。
0731デフォルトの名無しさんNGNG
>>728
コンピュータアーキテクチャの本じゃないか?

>>730
構文解析だけじゃなくて、実行機の話してるんじゃないの?
0732デフォルトの名無しさんNGNG
すいませんyacc/lex初心者の質問です。
WIN XPのコンソールから
GNUのFLEXとBISONとボーランドのBcc32でコンパイルしてるのですが
bisonとflexは通過するのですが
最後のCコンパイラのリンク時に"yyllocが定義されてない"というエラーが出てしまいます。
bison.simpleとbison.hairを見てもよくわからないので
なにがまずいのでしょうか?
0733デフォルトの名無しさんNGNG
>実行機

ってなんじゃらほい?
0734デフォルトの名無しさんNGNG
>>728
『インタプリタ進化論』なんかいいのでは。スクリプトに特化した内容ってわけでもないけど。
0735デフォルトの名無しさんNGNG
このスレでよく出てくるyaccやlexってのはソフトウェアなの?
それともライブラリの類?
で、実際にはどのようなことをするものなの?
0736デフォルトの名無しさんNGNG
>>735
ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
0737735NGNG
つまり、字句解析や構文解析をするソフトウェアね。
コンパイラにおけるそれらの処理を外部のソフトウェアに
頼ると言うのは有りかね?
0738デフォルトの名無しさんNGNG
>>737
何を言ってるの?
0739ほんたまNGNG
おみゃ〜らよ、おれのスリムドカンはある意味コンパイラよ。
スリムドカンはおれのページにあるから見ちみれ?

http://hp.vector.co.jp/authors/VA015412/
おみゃ〜らよ、おれはいまリソースエディタをつくってるのよ。
スリムドカンに装備させるためよ。
おみゃ〜らよ、コンパイラをつくるのはいいが、リソースエディタのないコンパイラはコンパイラとはいわんぞ!
自分じわかるかな?
0740デフォルトの名無しさんNGNG
>>737
字句解析や構文解析をするソースコードを生成してくれるソフト
これ以上は自分で調べてくれ
0741デフォルトの名無しさんNGNG
>>735
あなた、最高に頭悪そうですよ?
0742デフォルトの名無しさんNGNG
昔、OL進化論っていうのがあったなぁ〜
ちょっと思い出したw
0743デフォルトの名無しさんNGNG
インタプリタ進化論って、絶版じゃなかったっけ?
読みやすい本でいい本だと思うけど、
実行環境の話はそれほど無かったような気がします。
とはいっても、字句/構文/意味解析を作るより
実行環境を作るのって、力業でできますしそんなに難しくないと思いますよ。
0744デフォルトの名無しさんNGNG
My VMをレジスタマシンにするかスタックマシンにするか悩む

スタックマシンにすると決めた、するとbytecodeにするかwordcodeにするかまた悩む

スピードの為にwordcodeにするならそもそもレジスタマシンにするべきなのかと悩む

一向に前に進みましぇん
0745ほんたまNGNG
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪
「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
0746デフォルトの名無しさんNGNG
全部作れ。
0747ほんたまNGNG
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。
つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。
おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか?
「Slim de Can」ってすげ〜な〜。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
0748デフォルトの名無しさんNGNG
コンパイラ作るならBNF記法(拡張)についての理解は必須ですか?
0749デフォルトの名無しさんNGNG
無くても作れるよ。あった方が楽だけど。
0750デフォルトの名無しさんNGNG
context free grammerについては「理解」という程大変なことはない気がする。
# オートマトンを理解するにはちっと勉強が必要になるが、
# それこそ知らなくても何とかなりそう

なおLL(1)文法と属性文法を学んでしまえばりっぱな「コンパイラ」が作れると思う。
# リンカとかアセンブラとかの知識は既習だとして
0751デフォルトの名無しさんNGNG
言語設計はともかく、コンパイラ設計となったら
フロントエンドよりバックエンドのが難しいというか
面白いと思うんだが、どうしてフロントエンドの話しか出ないんだろうか?
0752デフォルトの名無しさんNGNG
たぶん、そこまで行きつかない奴しかこのスレにいないから。
0753デフォルトの名無しさんNGNG
バック部のトピックス

・並列化(ループ,タスク.手続き間解析は必須)
・別名解析(フロー依存はまだ重い)
・SSA(冗長コピーをどう減らす? 別名の扱いも)
・コピー伝播(非常に重要.でも語ることは余りないか)
・部分冗長性削除(やりすぎると性能悪化することも.ライブレンジを考慮)
・CPS(手続き型ではやらんか)
・レジスタ割付け(PowerPCとかなら素直だが,制約のきついCPUだと面倒)
・ソフトウェアパイプライン(最内からやらない手法が最近発表されてた)
・命令スケジューリング(コンパイル時間爆発の主犯)
・SIMD命令やDSP命令の生成(上から下までからむので大変.パターンマッチしかない?)
0754デフォルトの名無しさんNGNG
本日、佐々政孝氏の「プログラミング言語処理系」という本買いました。
コンパイラについてちゃんと学んでいこうかと思います。
0755デフォルトの名無しさんNGNG
バック部はCにトランスレートする事で済ませちゃってるから、あんまやらないんだよな。
とはいっても、最近の仕事でそういうのをする必要もあったりして
書籍紹介とかやってもらえます?
0756デフォルトの名無しさんNGNG
そういや 21st Century Compilers 読んだ人いる?
0757デフォルトの名無しさんNGNG
あぁ、それね…。2005年11月15日に延びたみたい。_| ̄|○
http://www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html
 Copyright: 2006ってなってるからもっと延びるかも…
0758デフォルトの名無しさんNGNG
バックエンド「も」それなりに解説している本としては龍本はもちろんのこと、appel本や中田本がありますね。
龍本がバックエンド概要集だとすれば、
appel本が実践本、中田本が理論本といった感じでしょうか?

バックエンドオンリーな変り種としては
Robert Morgan: Building an Optimizing Compiler (ISBN 1-55558-179-X)
ってのがあります。こいつは本当にバックエンドしか書いていません。
0759デフォルトの名無しさんNGNG
いまだに龍本なの?
進歩ないね。
0760デフォルトの名無しさんNGNG
何でそんなに詳しいのに新たな言語を作ろうとしないの?
0761デフォルトの名無しさんNGNG
>>760
何でそんな労力割かなきゃならぬ?
0762デフォルトの名無しさんNGNG
>>757
がぁん。評判よければ夏休みにでも読もうと思ってたんだが。
0763デフォルトの名無しさんNGNG
目を通すだけで満足だから何も作らんのだろうな
0764デフォルトの名無しさんNGNG
バックエンドまで作りこんだ言語を書いても、それで食ってける人はごく少数だし。
理屈を理解して普段のプログラミングに生かせれば、それで良いかと。
0765デフォルトの名無しさんNGNG
>>761
本当はコンパイラの原理とかよく分かって無いんだよな?
0766デフォルトの名無しさんNGNG
原理を理解→新しい言語、でもあるまいに
0767デフォルトの名無しさんNGNG
>>760
一番多い需要は新しい言語の作成ではなく、特定分野特化物だからだよ
趣味の人は確かに新しい言語って事になるんだろうけどね。
0768デフォルトの名無しさんNGNG
言語ビジネスは死々累々とはMatz氏の言
0769デフォルトの名無しさんNGNG
>>768
つまり「俺ってば勝ち組w」と主張されたのですね?
0770デフォルトの名無しさんNGNG
>>764
その反対でバックエンドがほとんどのお仕事もあるよ、
特殊なDSPとかの強力オプティマイザ付き簡易言語関係とか。
0771デフォルトの名無しさんNGNG
割込みすいません、bisonの-v出力で得られる

State番号と、もとのソースの行番号を関連づける情報ってどこでしょうか?
同様に、 Rule番号と、もとのソースの行番号を関連づける情報ってどこでしょうか?

bisonマニュアルやbison本(といっても古いだけですが)を見ても、載ってませんでした。
0772デフォルトの名無しさんNGNG
>>771
行番号との関連?
別に行番号とは関連しないんじゃない?
0773771NGNG
どうも、Conflict が発生するようで、いろいろと原因を探ってるんですが、
「State何番が何番とconflictした。」とか出て来るんですが、
具体的にソースのどこがいけないのか場所を探すのに、いつも苦労しているのです。

0774デフォルトの名無しさんNGNG
構文解析器を作るのに正規表現が必要になりますけど、
正規表現の構文解析ってどうすりゃいいんでしょうか?
ものすごく再帰してるんですけど?
0775デフォルトの名無しさんNGNG
再帰っつーか永久ループですね。
0776デフォルトの名無しさんNGNG
>>774
>構文解析器を作るのに正規表現が必要になりますけど、
無くてもできます
0777デフォルトの名無しさんNGNG
>>774
有限オートマトンでぐぐるか、適当な正規表現ライブラリのソースを読め。

0778デフォルトの名無しさんNGNG

FLEXについて調べているんですが、よくわからないので質問させてください。
UNIXで書かれた字句解析ソース(moto.l)をWindows上で使いたいのですが、
これってWin用のFLEXを使用してmoto.lから、moto.cを作成して
それをVisualStudio.Netなんかで、ビルドすればいいんでしょうか?

Win用FLEXで吐き出されたmoto.cをビルドしてもエラー出まくりなもので・・・・
なにかうまい方法などあるんですか?

(なぜか元の字句解析ソース(moto.l)も一緒にビルドしてしまいエラーになりま
す。。。)

わかる方がいらっしゃいましたら、
ご教授お願いします。
0779デフォルトの名無しさんNGNG
>>778
なんのエラーが出てます?
0780デフォルトの名無しさんNGNG
なんとなく改行コードの問題?
0781>>778ですNGNG
>>779 >>780 
レスありがとうございます

改行コードは、LFからCR+LF 文字コードEUCからSJIS
に変更をかけ、「bison & flex compiler for Windows GUI」を使って
コンパイルをかけ、できたCソースを.NET2003でビルドかけました。

一応、エラーは
「Zsscanf:1番目の引数を'unsigned char*'から'const char*'に変換できません」
というのが、大量にでました。
(これは、Zsscanf関数を大量に使用しているんででています。)

また、warningとして
「C4244 '=' _W64 int から intに変換しましたデータが失われているかもしれません」
というのが、たいりょうに出ています。

もしよかったら、ソースをお送りしますが・・・
よろしくお願いします。
0782デフォルトの名無しさんNGNG
>>781
そういう場合は、ここに貼り付けて
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
0783>NGNG
>>782さん
こちらにCソースファイルを貼り付けました。
よくわからなかったので、まちがってスレを立ててしまいましたorz

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50

すみませんが、よろしくお願いします。
これでだめでしたら、FLEXソースも貼り付けますので・・・
0784デフォルトの名無しさんNGNG
>>783
あぅ、上手く行っても、変更点の説明がしにくいと思うので、ソースもよろしこ。
#なんとなく見えてますが、上手く行くかどうかは不明。
0785>NGNG
>>784さん

元のFLEXソースを
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50
においておきます
0786784じゃないけどNGNG
yytext は YY_CHAR* 型で,これは unsigned char * の typedef になっている.
Zsscanf は Zsscanf(const char*, ...) と定義されている.
Zsscanf(yytext, ....) というように呼び出しをしたい.

ということで
1. Zsscanf の第1引数の型を unsigned char * にするか
2. Zsscanf の呼び出し時に毎回キャストするか
のどっちかで対処できるんじゃないかと思う.
0787デフォルトの名無しさんNGNG
3. コンパイラのcharをunsignedにするオプションを指定する
0788ありがとうございます!!NGNG
みなさん ありがとうございます。

とりあえず>>786さんの
「1. Zsscanf の第1引数の型を unsigned char * にするか」で
対応し、エラーを回避させました。

それともう一つ基本的な質問ですが、
この作成されたCソースファイルは、
どのように動作させればいいのでしょうか?
ライブラリとして動作させる場合、
どの関数をよべばよろしいのでしょうか?
(main関数を作成し、それから呼ぶのもどうすればいいのでしょうか?)

すみませんが、ご教授お願いします。
0789デフォルトの名無しさんNGNG
>>785
とりあえず、こちらはCygwinのflexしかないので、それでのやり方を説明しておきます。
まず、この部分
int nmatch = 0;
int len;
const char *base;
char buf[255];
va_list ap;
va_start(ap, fmt);
char skipflag;
va_start(ap, fmt) の後に char skipflag がありますが、これはC言語の構文として許されません。
以下のように書きます。
char skipflag;
int nmatch = 0;
int len;
const char *base;
char buf[255];
va_list ap;
va_start(ap, fmt);
コンパイル方法
http://www.cygwin.com/
より "Install or update now!" をクリックして実行してください。
あとはメッセージにしたがって、インストールするのですが、パッケージの選択のところで flex を入れておく事。
flexの入っているフォルダーにパスを通したら、
flex flex_test.l
cl flex_test.c
以上です、
あと、_yywrap _yylex はちゃんと定義して置いてください。
出力結果をC++としてコンパイルしたいのであれば、786氏の意見を参考すれば良いかと思います。
0790デフォルトの名無しさんNGNG
>>788
yylexを呼び出します。
そのあたりは初歩の初歩部分なので、適当に参考書でも買ってきて調べてみるとよいでしょう。
入出力の特化は結構ややこしいので・・・
0791>>778ですNGNG
みなさん いろいろ教えてくださってありがとうございます。。。

>>790さん 
yylex()を呼び出すというのまでは、調べたのですが
これを呼び出すとDOS窓で入力待ちなのかどうかは、わかりませんが
止まったままになってしまします。
いろんなサンプルを見てみたら
単に
return yylex();
としているだけなのが、あったので
このように書いていたのですが・・・・
こういう呼び出し方ではいけないのでしょうか?

何度も何度もすみませんが、
ご教授お願いします。
0792デフォルトの名無しさんNGNG
>>791
一番簡単な方法は
yyin = fopen( ... ) ;
として
yylex()
を呼び出します。
0793>>778ですNGNG
>>792さん

ファイルからの読み込みではなく
指定された文字列を受け取って
それを変換かけてから、変換後の文字列を
返すというようなプログラムを組みたいのです。

yytextに指定文字列を入れてから
yylex()を呼び出せばよろしいのでしょうか?
(どこかのサンプルでこのような形のものがあったのですが・・・)
0794デフォルトの名無しさんNGNG
>>793
ちがいまーす!!(^^;
実は貴方のやりたい事は、書き始めると結構ヘビーです。
素直にflexの本を買ったほうが良いかと・・・・
どうしても買いたくなげは YY_INPUT マクロを気合で読んでみるとか?
0795>NGNG
>>794 さん
では、入力したい文字列を
一度ファイルに落としてから
再度、yyin = fopen( ... ) ;
で読み込むという方法だと
まずいでしょうか?
0796デフォルトの名無しさんNGNG
>>795
それで問題がなければ、それでも良いかと・・・・
0797>>778ですNGNG
今のサンプルFLEXプログラムは「H16/7/16」を「平成16年7月16日」に
変換するものなんですが、ファイルに「H16/7/16」を書き込み、保存してから
yyin = fopen( ... ) ;
として
yylex()
を呼び出すと、「ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ」などと
文字化けが出てしまい、途中で終了してしまいます。
これって何が原因があるのでしょうか?
0798デフォルトの名無しさんNGNG
cygwin でやるんだったら、ソースファイルとテスト用入力ファイルは EUC にしておく。lex(flex) はマルチバイト文字をマルチバイト文字として扱わないからDIGIT [0123456789]
の書き方だとダメ。
DIGIT (0|1|2|3|4|5|6|7|8|9)
だと動くみたい。
0799デフォルトの名無しさんNGNG
すいませんが、bison.output の見方を解説しているページとか
ご存知ありませんか?
0800デフォルトの名無しさんNGNG
>>799
見方を理解しようとしないで、LR解析をある程度理解した方
が良いと思うよ。
そうするとbison.outputの意味が分かるようになる。
0801799NGNG
LR解析を理解するための、書籍とかありますか?
0802デフォルトの名無しさんNGNG
はじめてのLR
0803デフォルトの名無しさんNGNG
1つの先読みだけしか許されないというのは、かなり不自由かも。
LR(1)を完璧に実装した yacc もどきってご存知ないですか?
0804800NGNG
800ゴット

>>799=801
コンパイラ系の書籍ならば、大抵構文解析の説明はあるでしょ。
手元の本だと『ドラゴンブック』と『コンパイラの理論と実現』と
『コンパイラ(昭昇堂)』にLR解析の話が書いてある。

>>803
知らないけど、あまり不自由を感じたこと無いな>先読み1
たいしたもの作ってないからかな。
0805デフォルトの名無しさんNGNG
Catalog of Free Compilers and Interpreters.
http://www.idiom.com/free-compilers/
0806デフォルトの名無しさんNGNG
>>803
LLだけとboost::splitを使ってみるとか。
http://boost.cppll.jp/HEAD/libs/spirit/index.html

でも、文法を変えたほうがいいかもね
LALR(1)の鬼畜パーススピードを捨てるのはもったいないべ。
0807デフォルトの名無しさんNGNG
LR
LL
LALR
ってなんの略?
(1)
ってのは1つ先見るってことでよい?
0808デフォルトの名無しさんNGNG
manの番号
0809デフォルトの名無しさんNGNG
>>807
Lonely Rotary
Lonely Lolita
Lolita and Lonely Rotary
0810デフォルトの名無しさんNGNG
>>807
LR:左から読んで右から導出
LL:左から読んで左から導出
LALR:ルックアヘッド付きLR
0811デフォルトの名無しさんNGNG
【LR】Left-to-right scanning, Right-most derivation in reverse
【SLR】Simple LR
【LALR】LookAhead LR

括弧内は先読みのこと
0812デフォルトの名無しさんNGNG
LALR(3) ぐらい欲しい。
0813デフォルトの名無しさんNGNG
>>812
探せば GLR 使えるパーサジェネレータもあるぞ。
0814デフォルトの名無しさんNGNG
>>812
漏れはむしろ「欲しい例」を出して欲しい。
0815デフォルトの名無しさんNGNG
世の中LALR(1)が圧倒的な主流。
それ以外はただの学問的な研究対象か趣味。

まぁ、炉利趣味と同レベルw
0816デフォルトの名無しさんNGNG
DelphiはLALRじゃないのでは?
0817デフォルトの名無しさんNGNG
>>815
C++ は LALR(1) に収まらないワケだが。
0818デフォルトの名無しさんNGNG
>>817
それは書き方が悪いからでしょ?
あんなもん、書こうとおもえばいくらでも当てはめられる。
(と思う。)
0819デフォルトの名無しさんNGNG
俺はめんどくさいから再起下降でいいよ
0820デフォルトの名無しさんNGNG
俺は再帰降下でいいや
0821デフォルトの名無しさんNGNG
抗菌加工でいいや
0822>>778ですNGNG
お礼が遅れましてもうしわけございません。
ありがとうございました。

>>794さんがおっしゃっていた YY_INPUT のサンプルをいろいろ
探したのですが、これの他にもDOS窓から入力された文字列を
変換するなんていうマクロなどありますでしょうか?
0823デフォルトの名無しさんNGNG
>>822
YY_INPUTのサンプルって例えば何?
サンプルとかじゃなくて、実際のflexが生成するYY_INPUTマクロを見た方がいいよ。

さらにlexの実装によっては、どう工夫してもお望みのことができないもの
もあるから、「文字列から入力」っていうのは可搬性の面ではよくない。

とりあえず、flexだったらYY_INPUTを定義し直せばOK
YY_INPUTってのは
YY_INPUT(buffer, result, bufsize)
buffer:文字列を格納するバッファ
result:実際に読み込んだ長さ
bufsize:バッファの大きさ

で、デフォルトではFILE *yyinから読むようになってるはずだから、それを
君が解析した文字列から読む(コピーする)コードにすれば良いね。

そのまま他の環境にコピーしても動かない可能性があるので注意。
0824>>778ですNGNG
>>823 さん レスありがとうございます。

確かにYY_INPUTは、FILE* yyinを使って処理していますね。
っということは、scanfなどで入力した文字列をYY_INPUT(buffer, result, bufsize)
のbufferにコピーしてあげるようなコードを書けばよいということでしょうか?

また、違う例として、DBに格納されているデータを取得してきて、
字句変換させるために
FILE* yyinならぬextern char* yyin_charなるものを作成して
まずはそこにDBのデータをコピーし、YY_INPUT内でbufferにyyin_charを
コピーしてあげるような動きでよいのでしょうか?

また、実際にmain関数などから、YY_INPUTを呼ぶには、直接呼んでも
よろしいのでしょうか?

質問攻めでもうしわけございませんが
よろしくお願いします。

0825823NGNG
>>842
おいおい、なんか間違えてるぞ。前半は正しい感じだけど、最後のが…?
質問に答えるのは構わないけど、その前に一つ質問させてくれ。

Q. YY_INPUTマクロとは何でしょうか?
(何をするものか、誰が使うものか、どこから使うものか、yylex()と
YY_INPUTの関係とかに注目。)

これに適切に答えられれば、>>824にあるような質問は無いと思う。
さらにおまけとして…、YY_UNPUTとは何?
(ヒント:flexの生成するlex.yy.cにすべての答えがある。)
0826デフォルトの名無しさんNGNG
結局 >>815は正しいの?
0827デフォルトの名無しさんNGNG
>>800
質問です。
Lex & Yacc (Nutshell) はいかがでしょうか?
これもLRを解説してますか?
0828デフォルトの名無しさんNGNG
>>826
すぐ下で答えが出てるじゃん。
0829800NGNG
>>827
解説してないね。
でも、典型的なシフト還元衝突などの説明と回避方法の解説はある。
ってかこの本もう絶版じゃない? 手に入るの?
0830デフォルトの名無しさんNGNG
>>791
yyinを指定しないと入力が標準入力になるからそうなるのでしょう
0831デフォルトの名無しさんNGNG
yyworld
0832デフォルトの名無しさんNGNG
>>829
一応あるみたいです。

やはり、ドラゴンを理解しないと
shift/reduce & reduce/reduce の衝突を完全回避することは難しいですかね?
0833デフォルトの名無しさんNGNG
在庫だと思われます。↑
0834デフォルトの名無しさんNGNG
注文してしまった。
0835デフォルトの名無しさんNGNG
age!

0836デフォルトの名無しさんNGNG
「コンパイラ構成法」の原田賢一氏の研究室のサイトが見つかりません。
移転したんでしょうか?
どなたか、ブックマークつけてらっしゃる方います?

コンパイラ構成法のソースコードをゲットしたいんですが。
0837デフォルトの名無しさんNGNG
う〜ん。名前空間の実装法がわからん。
だれか、参考になるサイトか書籍、知らないか?

クラス定義と同じ方法で良いのかなぁ?
0838デフォルトの名無しさんNGNG
>>837
シンボルテーブルのスタックを作ればいいだけじゃないか?
0839デフォルトの名無しさんNGNG
>>838
>シンボルテーブルのスタックを作ればいいだけじゃないか?

それってディスプレイ・・・・・だよねぇ。
ブロックを開くときに名前を覚えておくようにするんだろうか?
0840デフォルトの名無しさんNGNG
例えばC++には複数の名前空間があってややこしい

キーワード
演算子
プリプロセッサ
型
変数
namespace

これらは関係を持ったりするしね
まあプリプロセッサを除いて基本はみな同じだけど
0841デフォルトの名無しさんNGNG
名前空間は
関数 namespace クラス
だけじゃないのか?
0842デフォルトの名無しさんNGNG
::、using、export、importが絡むとさらに複雑になる
0843デフォルトの名無しさんNGNG
:: using は簡単
export importはどうだろ
0844デフォルトの名無しさんNGNG
>>840
何を持って基本というか知らんが、実装しようと思うと namespace は深いぞ。
ADL と関数テンプレートとか。
0845デフォルトの名無しさんNGNG
所詮 namespace は、バカ避けの機能。

優秀なコンパイラ屋が血反吐を吐きながら実装するものの、
それによって実行速度が向上する訳も無く・・・

そもそも優秀なプログラマならば、最初から namespace など
必要としない確固としたコーディングスタイルを身に着けている。

そしてバカなプログラマは、せっかく実装してもらった機能の
使い方自体が分からない。バカは所詮バカ。

namespace って、一体何の為にあるんだろう・・・
0846デフォルトの名無しさんNGNG
↑ホームラン級のバカ
0847デフォルトの名無しさんNGNG
所詮 型 は、バカ避けの機能。

優秀なコンパイラ屋が血反吐を吐きながら実装するものの、
それによって実行速度が向上する訳も無く・・・

そもそも優秀なプログラマならば、最初から 型 など
必要としない確固としたコーディングスタイルを身に着けている。

そしてバカなプログラマは、せっかく実装してもらった機能の
使い方自体が分からない。バカは所詮バカ。

型 って、一体何の為にあるんだろう・・・
0848デフォルトの名無しさんNGNG
ダウト。残念ながら、型によって実行速度は上がるんだよ。
0849デフォルトの名無しさんNGNG
いくらなんでも型は重要だろう。
0850デフォルトの名無しさんNGNG
>>845
評価尺度が実行速度だけとは……。1960 年代の人間ですかい?
0851デフォルトの名無しさんNGNG
60年代だったら消費メモリも重要だな。
0852デフォルトの名無しさんNGNG
所詮「コンパイラ・スクリプトエンジン」相談室 は、バカ避けのスレ。

優秀なプログラマが血反吐を吐きながら回答するものの、
それによって理解が向上する訳も無く・・・

そもそも優秀なプログラマならば、最初からこのスレ など
必要としない確固とした技術を身に着けている。

そしてバカなプログラマは、せっかく回答してもらった説明の
内容自体が分からない。バカは所詮バカ。

このスレって、一体何の為にあるんだろう・・・
0853デフォルトの名無しさんNGNG
>>852
ワラタ
0854マイク ◆yrBrqfF1Ew NGNG
namespaceは最高だな。
感動もんだ。
0855デフォルトの名無しさんNGNG
>>852
無理してまで回答は僕もしないし、他の人もしてないんじゃない。
コンパイラやスクリプトを作ろうという人口は少ないから過疎なのは仕方が無いが
僕は日ごろから巡回しているし、このスレ向きの質問書けば回答は帰ってくるよ。
もちろん僕もクレクレ君とOO厨房の言語論争的な話題は放置してるけどね。;-P
キミには分らないかもしれないが機能しいてない掲示板ではないよ、
進行が遅いに加えて近頃アホっぽい話題が充満しているだけだ。
0856デフォルトの名無しさんNGNG
>>855
( д ) ゚ ゚
0857デフォルトの名無しさんNGNG
ひさびさにコピペにマジレス見た・・・
0858デフォルトの名無しさんNGNG
型の実装について教えてください。
現在 int のみのコンパイラは作れたのですが
float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて
実行するときに int か float か if で判断するしか無いのでしょうか?
2つならまだしも double とか char を追加するとなると代入するとき等の型判定で
組み合わせの爆発が起きそうなのですがなにか良い方法はないでしょうか?
速度的に。
0859デフォルトの名無しさんNGNG
テーブル作るか int float を別文法にしてしまうか……
てか、こんな事は自分で考えろ。
0860デフォルトの名無しさんNGNG
>>858
>現在 int のみのコンパイラは作れたのですが
>float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて
>実行するときに int か float か if で判断するしか無いのでしょうか?

って、そんなのコンパイル出来たって言えないやん。。。
何の為の型なのさ?
0861デフォルトの名無しさんNGNG
変数に型情報があってコンパイラを作っているのなら、
コンパイルの時点で型にあったコードを生成するだけだろ。
実行時じゃなくて。
0862デフォルトの名無しさんNGNG
>>860 ハァ
0863デフォルトの名無しさんNGNG
>>860
バカ避けの機能
0864デフォルトの名無しさんNGNG
>>859-861
おぼろげながら自分の間違いが分かってきました。
どうもです。

もう少し考えてみます。
0865デフォルトの名無しさんNGNG
>>858
実行時に型チェックするかコンパイル時に型チェックするかは、言語の設計に
大きく関わってくるけど、まぁどっちでも良い。

コンパイル時に型チェックしたければ、たとえば Yacc 風に書くと

IDENT '=' experssion:
  {
    // まず IDENT が変数名であることを確認
    // 次に experssion の型が IDENT の型に変換できることを確認
    // 型変換して代入するコードを生成
  }
  ;

ってな感じ。型変換判定は素直に実装すると型の数の 2 乗のオーダーで増えるが、
テーブルにでも書いておけば大した手間ではない。ベタに if - else とかで書くと死ぬ。
0866デフォルトの名無しさんNGNG
YACC はバカ避けのソフト。
0867デフォルトの名無しさんNGNG
作ってて楽しけりゃなんだっていい
0868デフォルトの名無しさんNGNG
( ゚д゚)、ペッ
0869デフォルトの名無しさんNGNG
型についてはシンボルテーブルで管理すれば良いでしょ。

シンボル表のエントリに型情報をもたせ、それが基本型を
ポイントすることで、個々のシンボルの型を表現します。
struct や class などの基本型をまとめた型を作るときも
シンボル表にそれらの新しい型のエントリを作って、基本型を
リスト状にポイントしていけばよいです。
0870デフォルトの名無しさんNGNG
所詮 lex は、バカ避けのソフト。
(以下ry
0871デフォルトの名無しさんNGNG
>>855
wrota
0872デフォルトの名無しさんNGNG
>>870-871
意味の無いレスいれるの止めてくんない、近頃こんなレスばっかりで
前後の見通しが悪くてかなわないんだよ、邪魔だから適当な言語死滅スレにでもいってくれ。
0873デフォルトの名無しさんNGNG
その発言は結局荒れるもとになるよ。
そして、大量に無駄な情報のなかから有用なものを抜き出すのが2chの利用法だと思う。
0874デフォルトの名無しさんNGNG
過疎スレでやってくれるなよなとは思う
0875デフォルトの名無しさんNGNG
855=872
0876デフォルトの名無しさんNGNG
>>872
お前のレスこそ余計。
0877デフォルトの名無しさんNGNG
>>872
wrota
0878デフォルトの名無しさんNGNG
876=877
wrota書くのに一分もかかってんじゃねーよ。
0879デフォルトの名無しさんNGNG
>>878
!= だが何か?
0880デフォルトの名無しさんNGNG
3日後

870 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん

871 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん

872 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん

〜略〜

879 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん

880 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん



何のためのスレなんだか
0881デフォルトの名無しさんNGNG
なんか恐ろしく自己中なヤツがいるようですが…
0882デフォルトの名無しさんNGNG
名前もあぼーんになるはずだが
0883デフォルトの名無しさんNGNG
このスレ869までしか表示されないな。
0884デフォルトの名無しさんNGNG
まぁ、もしアボーンされるとしても、
>>880 が最初だろw
0885デフォルトの名無しさんNGNG
gccの&&label(Labels as Values)みたいな機能を実現するには、
ラベルは相対じゃなくて、絶対アドレスを取得しなきゃならんのだよね。

void *ptr = &&label;
goto *ptr;
label:

の場合は

// void *ptr = &&label;
mov DWORD PTR[ebp-04h], label_EA

// goto *ptr;
mov eax, DWORD PTR[ebp-04h]
jmp eax

label:

こんな感じかな?
でも

なんで
goto ptr;
じゃないんだろう?
ptrと
*ptr
は何を指すのか
はて。。。
0886デフォルトの名無しさんNGNG
できたできた。
どうやら型をvoid*にしたのはgccの気まぐれらしい。
ラベルの型なんてないからねえ。

int ptr = &&label;
goto ptr;

これだとラベルと区別つかないからvoid*にしただけか。
gccは変な構文ばっかだな。
0887デフォルトの名無しさんNGNG
VC++でflex++/bison++でリンカエラー回避できますか?
0888デフォルトの名無しさんNGNG
アフォはスルーされるという典型例だなw
0889デフォルトの名無しさんNGNG
C++、Javaで同じスクリプトを動かしたいんですが、
自作するしかないでしょうか。
LuaがJavaに対応していれば一番いいんですが。
0890デフォルトの名無しさんNGNG
>>889
Schemeとか、どっちでも使える言語も結構ある。
0891デフォルトの名無しさんNGNG
そういう意味ではLISP系探すと強いね。
とりあえずS式が読めればなんでもいいわけだし。
0892デフォルトの名無しさんNGNG
>>889
TCLとか
0893デフォルトの名無しさんNGNG
>>889
JavaSript というか ECMAScript がいいんじゃない?
簡単だし。
0894デフォルトの名無しさんNGNG
みんな自分が使っているのを薦めている予感。
0895デフォルトの名無しさんNGNG
bashスクリプトがイイと思うよ。
0896889NGNG
どうもです。
その辺りのキーワードを頼りに探してみます。
ありがとうございました。
0897デフォルトの名無しさんNGNG
とりあえずECMAScript(の実装)が簡単だという意見が本気でわからん
0898デフォルトの名無しさんNGNG
LISPは1000行も書けばそこそこ使えるものができる
Javaだともっと短いかも
0899デフォルトの名無しさんNGNG
>>897
>C++、Javaで同じスクリプトを動かしたいんですが、
>自作するしかないでしょうか。

って質問だったので、C++とJava での実装が容易に利用できる ECMAScript を勧めました。
0900デフォルトの名無しさんNGNG
ECMA Scriptだと、MozillaのSpiderMonkeyとRhinoが
良さそうだね。
0901デフォルトの名無しさんNGNG
Pythonは?
0902デフォルトの名無しさんNGNG
>>901
ぴちょん(・∀・)!
0903デフォルトの名無しさんNGNG
ネイティブコンパイルする処理系を作成中です
0904デフォルトの名無しさんNGNG
完成です
0905デフォルトの名無しさんNGNG
じりじり
0906デフォルトの名無しさんNGNG
>>904
晒せ
0907デフォルトの名無しさんNGNG
処理系のテストってみなさんどうしてますか
構文、演算子ごとに全パターン網羅できてますか?
ある組み合わせで不具合が出る可能性もあるから、
どうがんばっても全部網羅したとはいえませんよね
某スレのD言語なんかろくにテストされてないのがまるわかりですし
ある程度テストパターンの自動作成ができればよいのですが
そういうアイデアで何かありませんか?
0908デフォルトの名無しさんNGNG
例えばifが構文のキーワードならif + 1のような並びは構文エラーとなるべきですが、
こういうのはyaccを使った場合も含めてエラーとなることは予測できたとしても
実際にエラーになることの検証まではされていないのが現状だと思います。
これは言語処理系に限った話ではないですが、予測の付かないユーザーの
ランダムな入力に対し、はたして適切な処理をしているのかどうか?を検証する
確立された方法はあるのでしょうか?

test_if_branch() {
int x;

x = 0;
if (x) x = 2;
test_assert(x==0);

x = 1;
if (x) x = 2;
test_assert(x==2);

x = 0;
if (x) x = 2;
else x = 3;
test_assert(x==3);

x = 1;
if (x) x = 2;
else x = 3;
test_assert(x==2);

}
こんなものを延々と記述していくしかないのでしょうか。
0909デフォルトの名無しさんNGNG
>>907
全部網羅って C∞ のテストをしたいって事?
0910デフォルトの名無しさんNGNG
確立した方式など無いと思うが…
なので、実績の積み上げしか無いと思われ。
0911デフォルトの名無しさんNGNG
>>908
行カバレッジが100%になるようなテストセットを作るとか。
0912デフォルトの名無しさんNGNG
Bisonでparseした時、エラーの出た行をしらべるにはどうするの?
0913デフォルトの名無しさんNGNG
flexからbisonに渡すTokenに行番号の情報を入れといて、エラー発生時に取り出して使う、
でいいんじゃない?
0914912NGNG
>>913どうもです、flexのhelpみてたらoptionでありました
0915デフォルトの名無しさんNGNG
>>914
それはflexの中だけだろ?
bisonとは微妙にずれる場合も多い。

>>913 が王道かも。
0916デフォルトの名無しさんNGNG
DLLの関数呼び出しって、参照が一回挟まると思うんだけど、
ループで何べんも呼ぶと普通の関数呼び出しよりパフォーマンスに影響出る?
自分の処理系では参照をはさまない様に(つまりLoadLibraryと同じ方式)
してるけどいまいち差がわからない。
それよりも配置情報テーブルのサイズ減らした方が得なのかなと思ったり。
0917デフォルトの名無しさんNGNG
>>916
間接参照になる分だけ、パフォーマンスは落ちる。でも関数内部が
一行だけとかでない限り、あまり気にしないで良いと思うぞ。

とりあえず計ってみたら?
0918デフォルトの名無しさんNGNG
>>917
コンテキスト切り替えとか食らうと凄く影響するけど、
間接参照が一個増えた程度ではパフォーマンスにそれほど影響しないような…

昔、C++ で virtual ありと無しのメンバ関数で速度測ったら
virtual ありの方が速くてびっくりした事もあるし。
0919デフォルトの名無しさんNGNG
それはお前の計り方が間違ってただけだろう。
0920デフォルトの名無しさんNGNG
>>919
誤差で逆転しただけかもしれんがね。

っつか、測定前から virtualありの方が遅いと決め付けてるなら測定する意味が無いような。
0921デフォルトの名無しさんNGNG
>>920
その測定ソース、どんな感じに作ったのか晒してみ。
0922デフォルトの名無しさんNGNG
>>921
virtualありの関数を持つクラスとなしの関数を持つクラス作って
ループでn回関数を呼び出す、ループ前とループ後の時間から
かかった時間を割り出す普通のマイクロベンチだったと思うが。

関数の中身は空だったか、軽い計算させてたかは覚えてない。

あとはアセンブラの出力を見て最適化で関数呼び出しが削除されてない事と
virtualありの方は間接参照を介している事を確認した。
0923デフォルトの名無しさんNGNG
まぁ、システムをスタティックリンクにしてからだな
0924デフォルトの名無しさんNGNG
>>923
それは >>916-922 と関係あるのか?
0925デフォルトの名無しさんNGNG
日経ソフトウェアの推薦書籍コーナーで、中田さんの本が2冊あげられていた。
取り上げていた人はどちらもすごい方なので、ちと読んでみようかなという気が沸き起こった。
0926925NGNG
それにしても\10000を超えるって、やっぱり高い。

コンパイラの構成と最適化
中田 育男 (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
0927デフォルトの名無しさんNGNG
>>926
ドラゴンブックより良い?
0928デフォルトの名無しさんNGNG
>>927
ドラゴンブックよりも内容が新しいらしい。
0929デフォルトの名無しさんNGNG
>>927
かなり難解ですよ。
ドラゴンブックとかプログラミング言語処理系を読んで
それでも物足りない人向け。
0930927NGNG
読んでみたくなったけど、高いなあ…
0931デフォルトの名無しさんNGNG
そもそも「最適化」をタイトルに冠してる時点でかなりのレベルが予想されるわけだが... < 中田本

それにしてもドラゴンブックの改訂版(に当たる本),いつ出るんでしょうね...
0932デフォルトの名無しさんNGNG
>>926
ドラゴンブック揃えるより安いじゃん。
0933デフォルトの名無しさんNGNG
>>931
もう出たんじゃね?
ttp://www.amazon.co.jp/exec/obidos/ASIN/0321131436/

ペーパーバック版は来年らしい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
0934デフォルトの名無しさんNGNG
>>933
「この商品を予約注文する」と表示されたから、まだ出てないのかも…待ちくたびれたよ。
0935デフォルトの名無しさんNGNG
>>934
うはwwwwwwwwwwwwwww
昨日見たときはショッピングカートに入れるになってたんだがw
amazonの罠だったか。
0936デフォルトの名無しさんNGNG
http://i.loveruby.net/ja/rhg/index.html

これってどうよ?
0937デフォルトの名無しさんNGNG
>>932
そろえるって何?
1つしかないのでは?
0938デフォルトの名無しさんNGNG
>>937
お前、現物見た事あるのか?
0939デフォルトの名無しさんNGNG
>>938
http://www.amazon.com/exec/obidos/tg/detail/-/0201100886/
洋書の方は全1巻みたいです。
0940デフォルトの名無しさんNGNG
揃えるといったら、グリーンとレッドでは?
0941デフォルトの名無しさんNGNG
ポケモンみたい
0942デフォルトの名無しさんNGNG
21st Century Compilersが待てない人は↓がオススメ。

Modern Compiler Design / John Wiley & Sons, ltd
  Dic Grune / Henri E. Bal / Geriel J. H. Jacobs / Koen G. Langendoen

実装本ではなくアルゴリズム本。
ある程度のコンパイラ実装経験がある人なら買って損はないと思います。
私は「コンパイラ構成法」→「プログラミング言語処理系」→本書、の順で
学んできましたが、頭の中がすっきりまとまって、今の私にちょうど良い
レベルだと思います。アルゴリズムがスードウ・コードで書かれているので
最初はちょっと戸惑いましたが、すぐに慣れるでしょう。

私の英語レベルでも、見開きに知らなかったり忘れていたりする単語が、
ひとつあるかないか、といった程度なので本書を読み進めるのは、それほど
困難ではありません。
ちなみに私の英語遍歴は、「Grammar in Use Basic/Intermediateを一通りやる」→
「Duo 3.0丸暗記」→「TOFELテスト 英単語3800のランク3を暗記中」と
いったところ。それほど高い英語力がなくても大丈夫でしょう。
0943デフォルトの名無しさんNGNG
>>942
コンパイラの勉強をする前、した後とでなにか大きく変わったことはありますか?
0944デフォルトの名無しさんNGNG
>>942
紹介を少しみたところ、コンパイラの(可能な限りの)自動生成に力点を置いてるようですが、
その辺りどうでしたか?
0945デフォルトの名無しさんNGNG
>>942
pseudo codeを「スードウ・コード」と書かれているので戸惑いました。
0946デフォルトの名無しさんNGNG
>>943
昔俺が本読んで実際うまくいった最適化と言える物は
せいぜい定数畳み込みと覗き窓ぐらいだったな。
頭悪いと「それはそれ、これはこれ」って言葉の意味が実感できるぜ!
コンパイラの勉強もいいけどCPUやアセンブラにも詳しくないと
速いコードにはならないぜ。
VMを作るときにも困るぜ?
0947デフォルトの名無しさんNGNG
>>938
英語音痴w
0948デフォルトの名無しさんNGNG
次スレには>>936もリンクに加えておいて下さい
0949デフォルトの名無しさんNGNG
>>943
今まで努力するのが面倒で、yaccでやっていましたが、
そんな自分が嫌でコンパイラの勉強を始めました。
その甲斐あって仕事もはかどり、昇進も決まり、彼女も出来ました。
6月には結婚します。これも全てコンパイラの勉強をした成果です。
                                (27歳・会社員)
0950デフォルトの名無しさんNGNG
おれは今まで金無し君だったけど(ry
0951デフォルトの名無しさんNGNG
>>950
今ではすっかり能無し君か。
0952デフォルトの名無しさんNGNG
コンパイラの勉強をしたら負け(ry
0953デフォルトの名無しさんNGNG
コンパマダァ-? (・∀・ )っ/凵⌒☆チンチン
0954デフォルトの名無しさんNGNG
最近、パチンコ行っても付きまくりな訳だが、
そういえばコンパイラの勉強し始めてからだったことに気づいた。
0955デフォルトの名無しさんNGNG
俺もコンパイラを勉強していて出てきた数字で
ロト6を買ったら2等が当たりました。2000万くらい。
0956デフォルトの名無しさんNGNG
じゃあ俺もコンパイラの勉強していたら
株が上がったことにしよう
0957デフォルトの名無しさんNGNG
LISP最強
0958sageNGNG
スモールコンパイラの制作で学ぶプログラムのしくみ
http://www.cbook24.com/bm_detail.asp?sku=4774121770
0959デフォルトの名無しさんNGNG
>>958
おっ、新作ですかね?
この分野では珍しい。

しかも、やさしそう
あと安い。

すべて型破り!w
0960デフォルトの名無しさんNGNG
宣伝乙
借金でもできたんですか?
0961959NGNG
著者は有名な方ですか?
あと、目次とかはないんでしょうか?
0962デフォルトの名無しさんNGNG
>>958
中身もなさそう。
0963ほんたまNGNG
おみゃ〜らよ、system32フォルダにあるDLLの関数を呼び出すには、インポートセクションにDLL名と関数名を書き込んでいくだけで、呼び出せるんだが、
VC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出せないんだ…
おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな?
windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの?
教えてくだされ〜♪
0964デフォルトの名無しさんNGNG
マルチにレス不要
0965デフォルトの名無しさんNGNG
どうせstdcallつけてないだけなんだろうな
0966デフォルトの名無しさんNGNG
>>958
プログラミング言語処理系とか買ったけどチンプンかんぷんだった俺にはちょうどいい
こういう本もっとでてほしいな
安いしな・・・
0967デフォルトの名無しさんNGNG
>>966
オレは「UNIX プログラミング環境」が初体験だったが。今はもう流行らんか。
0968デフォルトの名無しさんNGNG
>>967
洩れもそれだ!w
但し英語番だけど、
0969デフォルトの名無しさんNGNG
>>967
hocのソースにバグがあったと聞いたけど、どこか知ってる?
0970デフォルトの名無しさんNGNG
>>969
いろいろあった気がするが、具体的に何だったかは忘れた。
0971ほんたまNGNG
おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪
おみゃ〜らよ、なぜ宇宙一すげーかわかるかな?
おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる?
おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ?
おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。
だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる?
つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪
おみゃ〜らよ、おりは宇宙一画期的だと思わないか?
おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪
おみゃ〜らよ、自分じどうじ?
0972デフォルトの名無しさんNGNG
>>969
煽りでなくて、
バグでなく仕様じゃないの?
本だし
0973デフォルトの名無しさんNGNG
次スレまだ〜?
0974デフォルトの名無しさんNGNG
>>972
伝聞だけど煽りじゃないよ。
知り合いが「打ちこんで動かしたけどいくつかバグがあった」って。
もちろん打ち間違いの類いじゃなくね。
0975デフォルトの名無しさんNGNG
ひょっとして脳内の知り合いですかぁ?
そんで俺らにデバッグさせようってことですかぁ?
0976デフォルトの名無しさんNGNG
三銃士で、アトスが友人の身に起こったことだと言って話すけど
ダルタニアンはそれは友人ではなくてアトス自身のことなのではない
かと考える場面がある。
0977デフォルトの名無しさんNGNG
懐かしー。
0978デフォルトの名無しさんNGNG
俺がhocを動かせなくて困ってるとでも思ったのか?www

ほらソース
ttp://www.bsddiary.net/d/200012.html#15
5段目の段落をよく読め
0979デフォルトの名無しさんNGNG
脳内の知り合いじゃないのなら
どこがどうバグってるのか聞いてくれ。
0980デフォルトの名無しさんNGNG
わかったよ知り合いじゃないよ
一読者だよ
直接聞けないからここで聞いたんだよ
0981デフォルトの名無しさんNGNG
誰だお前は
0982デフォルトの名無しさんNGNG
オレだよオレ
0983デフォルトの名無しさんNGNG
>>958
が気になる。
0984デフォルトの名無しさんNGNG
そろそろ新スレの季節だよ。
0985デフォルトの名無しさんNGNG
新テンプラどうしよう
0986デフォルトの名無しさんNGNG
LISPスレと統合しよう
つーかきみらもっとLISPを知っときなさい
0987デフォルトの名無しさんNGNG
Mathematicaマンセー
0988デフォルトの名無しさんNGNG
LISP?はぁ?
負け組言語は不要w
0989デフォルトの名無しさんNGNG
スレ立てるよ
0990スレ立てられませんでした(テンプレ1)NGNG
yaccやlexの使い方やら言語仕様やらの話題。

前スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)
3 http://pc5.2ch.net/test/read.cgi/tech/1070089173/ (前スレ)

関連リンクは多分 >>2-8 あたり
0991(テンプレ2)NGNG
コンパイラ等を扱ったドキュメント

色々なツールの紹介
http://catalog.compilertools.net/

コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml

スクリプティング言語資料室(仮) (リンク)
http://www.kt.rim.or.jp/~kbk/

Compiler Construction
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html

Compiler Construction (1997)
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html

情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html

OS/Programming 簡単な C コンパイラ
http://www.csg.is.titech.ac.jp/~chiba/lecture/os/

正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm

コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/

Links and Selected Readings
http://www.gnu.org/software/gcc/readings.html
0992Intelの資料リンク切れになってる(テンプレ3)NGNG
Lex(Flex) Yacc(Bison) 構文解析

UNIX板
yacc & lex
http://pc.2ch.net/test/read.cgi/unix/1031801314/

Lex and YACC primer/HOWTO (邦訳)
http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html

Turbo Pascal Lex/Yacc
http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html

Jim Roskind's LALR(1) C++ Grammar
http://www.empathy.com/pccts/roskind.html

Flexと Bisonを同時に使う
http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html

KITE_ASM (yacc,lex)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/lex/

Cygwin
http://www.cygwin.com/

GNU utilities for Win32
http://unxutils.sourceforge.net/
0993(4)NGNG
その他のパーサジェネレータ等

ANTLR(非yaccのパーサジェネレータ)
http://www.antlr.org/

JavaCC(Java Compiler Compiler)
https://javacc.dev.java.net/
http://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html

CUP & JLEX or CUP & JFlex
CUP http://www.cs.princeton.edu/~appel/modern/java/CUP/why.html
JLEX http://www.cs.princeton.edu/~appel/modern/java/JLex/
JFlex http://www.jflex.de/

SableCC
http://www.sablecc.org/

¬<><∪∪ (notavacc)LALR(1)
http://ne.cs.uec.ac.jp/~koto/notavacc/

JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1)
でもANTLRはC++なんかにも対応。

boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
http://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
http://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0994(5)NGNG
ガベコレ

GC FAQ -- draft
http://www.iecc.com/gclist/GC-faq.html

A garbage collector for C and C++
http://www.hpl.hp.com/personal/Hans_Boehm/gc/

一般教養としての Garbage Collection
http://www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html

Garbage Collection : Algorithms for Automatic Dynamic Memory Management
http://www.amazon.com/exec/obidos/ASIN/0471941484/
0995(6)NGNG
参考書籍

●コンパイラ 原理・技法・ツール 1&2
http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
通称ドラゴンブック。バイブル。

●コンパイラ構成法 原田 賢一
http://www.amazon.co.jp/exec/obidos/ASIN/4320029224/
http://www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード)

●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
一冊で済ませたい人へ。

●コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
最適化がメイン。

●コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
薄い奴(185p)を読みたい人に。

●21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
ペーパーバック版: http://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
ハードカバー版: http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/

●スモールコンパイラの制作で学ぶプログラムのしくみ
http://www.cbook24.com/bm_detail.asp?sku=4774121770
0996デフォルトの名無しさんNGNG
では立ててみるか。
0997(7)NGNG
処理系,スクリプト

kikyou.info (吉里吉里というゲームのスクリプト)
http://kikyou.info/

tiny C コンパイラ (C)
http://www.watalab.cs.uec.ac.jp/tinyCabs.html

6809用 Micro C コンパイラ
http://www.axe-inc.co.jp/pds/mc09.html

Portable Object Compiler (Obj-C >> C のトランスレータ?)
http://users.pandora.be/stes/compiler.html

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

『Rubyソースコード完全解説』サポートページ
http://i.loveruby.net/ja/rhg/

『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。
Java と C# で実装。
ttp://www.okisoft.co.jp/esc/go.html
ttp://www.okisoft.co.jp/esc/go2.html
ttp://www.okisoft.co.jp/esc/go3.html
ttp://www.okisoft.co.jp/esc/go4.html

MSによるPEフォーマット仕様書(日本語)
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0998デフォルトの名無しさんNGNG
連続投稿規制のため、テンプレ(7)は貼れなかった。
誰か頼みます。
0999デフォルトの名無しさんNGNG
新スレッド

「コンパイラ・スクリプトエンジン」相談室4

http://pc5.2ch.net/test/read.cgi/tech/1100097050/
1000デフォルトの名無しさんNGNG
ふと思ったのですが、新スレたちました。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。