[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/23 13:47 / Filesize : 226 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [03/11/29 15:59]
yaccやlexの使い方やら言語仕様やらの話題。

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Streaming SIMD Extensions 2 (SSE2)
developer.intel.com/software/products/college/ia32/sse2/index.htm


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

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

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

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

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

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

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

Cygwin
www.cygwin.com/

GNU utilities for Win32
unxutils.sourceforge.net/

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

YACC link
www2.dewa.or.jp/rock/camp/yacc/whatyacc.htm

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



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

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

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

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


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

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

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

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

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

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

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

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



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


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

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

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

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


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


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

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

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

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

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

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

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


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

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

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


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

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

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

ちなみに、

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

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


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

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


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

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

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

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




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

32 名前:デフォルトの名無しさん mailto:sage [03/12/09 00:00]
>>31
21st Century Compilers
www.amazon.co.jp/exec/obidos/ASIN/0321131436

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




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

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

expr : '~' expr | expr '~'

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


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

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

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

***

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

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


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

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

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

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

ちょっと期待。


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


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



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

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


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

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

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

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

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


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

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

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



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

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

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

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

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

int main() {

// 以下略
// 以上妄想

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

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


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

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

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

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

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



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


62 名前:デフォルトの名無しさん mailto:sage [03/12/13 10:38]
www.levenez.com/lang/

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




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


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


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

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

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


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

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


69 名前:デフォルトの名無しさん mailto:sage [03/12/15 00:15]
これ?
www.amazon.co.jp/exec/obidos/ASIN/4844317210/
良さそうな本じゃん。Perlでこういう本ってあったっけ?

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



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

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

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


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

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

The Implemetation of the Icon Programming Language
www.cs.arizona.edu/icon/ibsale.htm

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

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


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


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

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


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

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

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

な領域ですよね?

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


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

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

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






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


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

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


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

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

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


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

88 名前:85 mailto:sage [03/12/16 23:09]
>>87
だからオライリーのサイトにあるよ。
examples.oreilly.com/lex/

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


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

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




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

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

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

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


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

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

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

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

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

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

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

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

100 名前:デフォルトの名無しさん mailto:sage [03/12/18 16:03]
www.wnishida.com/~wmemo/?date=20031125
こんなんとか。



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

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

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

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

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

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

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

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

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

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



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


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

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

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

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


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

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

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

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

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

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



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


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


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

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

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

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

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

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


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

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

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

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

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



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

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



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


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

133 名前:46 [03/12/23 17:14]

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

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

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

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

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

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

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

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

134 名前:46 [03/12/23 17:14]
8.K&A 死

9.K&A      来世

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

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

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

13.K&A    1.に戻る

これは事実。広めようぜ

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

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

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



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


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


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

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


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




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



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

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




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


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

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

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

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

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


149 名前:デフォルトの名無しさん [03/12/25 01:57]
>>132
C/C++インタプリター cii
ttp://village.infoweb.ne.jp/~fwgi5816/CI/


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



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

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

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

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


154 名前:デフォルトの名無しさん mailto:sage [03/12/25 19:11]
>>153
きみは walk でも使ってなさい。
www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/awk/

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

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

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


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

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

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

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



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

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

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

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

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

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

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

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

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

flex入門(ASCII)には、

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

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


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

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




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

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

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

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

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

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

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

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


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

main {
  print "Hello World!"
}

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


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

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

177 名前:デフォルトの名無しさん mailto:sage [03/12/28 18:54]


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

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


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

Game Scripting 何とか

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



181 名前:デフォルトの名無しさん mailto:sage [03/12/29 01:34]
>>180
ttp://www.amazon.com/exec/obidos/ASIN/1931841578/
漏れも前にちょっと買ってみようかと思った。
amazon.co.jpだと在庫切れ。

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

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

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

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


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

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


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

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

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

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

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



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


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


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

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


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

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

これって、本当ですか?


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


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

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

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

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

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

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


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

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


200 名前:デフォルトの名無しさん mailto:sage [04/01/01 05:02]
ttp://www.futamura.info.waseda.ac.jp/~futamura/

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



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


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

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

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

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

compilers.iecc.com/comparch/article/93-05-016
compilers.iecc.com/comparch/article/93-05-045


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

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

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

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

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

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

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


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

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


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



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




211 名前:デフォルトの名無しさん mailto:sage [04/01/02 21:52]
海外掲示板用オフラインリーダーを作るスレ
pc2.2ch.net/test/read.cgi/tech/1072883528/

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

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

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


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

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

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

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

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


215 名前:デフォルトの名無しさん mailto:sage [04/01/03 01:52]
ttp://www.cs.bell-labs.com/cm/cs/upe/index.html

ここにあるやつ?

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

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


218 名前:デフォルトの名無しさん mailto:sage [04/01/03 23:03]
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# で実装。

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

220 名前:デフォルトの名無しさん mailto:sage [04/01/04 14:04]
www.google.co.jp/search?q=タグビット
www.google.co.jp/search?q=タグ付きポインタ
www.google.co.jp/search?q=%22tagged+pointer%22



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


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

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

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

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


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

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

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


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

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

知ってるのはこことか。
ttp://www.shiro.dreamhost.com/scheme/gauche/memo-stack-j.html

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


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

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



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

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


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

234 名前:デフォルトの名無しさん mailto:sage [04/01/11 15:46]
merd.net/pixel/language-study/syntax-across-languages/
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 はちょっと良い感じ。

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

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

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

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


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

お礼にパトレイバーのプロトタイプをのせとく
www.enryu.jp/


240 名前:デフォルトの名無しさん mailto:sage [04/01/11 21:43]
夢のプログラミング言語@いちごびびえす
www.ichigobbs.net/cgi/readres.cgi?bo=proglam&vi=0071&rm=50



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

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

頭の程度が知れたな

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

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


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


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

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

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

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

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

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

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

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

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

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



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


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

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

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

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

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

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

257 名前:デフォルトの名無しさん mailto:sage [04/01/12 06:24]
cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/index.html
www.cminusminus.org/

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

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


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

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

苦笑・・・



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

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


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

SableCC
www.sablecc.org/home/

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

ANTLR 
www.antlr.org/

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

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



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

www.sablecc.org/


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

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

266 名前:デフォルトの名無しさん mailto:sage [04/01/12 11:01]
>>262
¬<><∪∪ ttp://ne.cs.uec.ac.jp/~koto/notavacc/
LALR(1)
も追加しておいて。

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

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

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

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

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



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

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

272 名前:デフォルトの名無しさん mailto:sage [04/01/13 04:18]
ttp://www.fujitv.co.jp/

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


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

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

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


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

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

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


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

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




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

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

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

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

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

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

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


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

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


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

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


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

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



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

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

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

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

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

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

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

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

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

300 名前:デフォルトの名無しさん mailto:sage [04/01/18 23:16]
図書館から
www.amazon.co.jp/exec/obidos/ASIN/4785620501/qid=1074435361/sr=1-7/ref=sr_1_10_7/249-4431792-9641118
借りてきた

意味わkらnしn



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

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

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

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

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

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

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

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

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

SECDR-Scheme. これも Scheme
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu

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


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


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


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

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




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


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

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

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

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

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

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

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

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


318 名前:316 mailto:sage [04/01/20 02:13]
>>317
( ・∀・)つ〃∩ ヘェ〜ヘェ〜ヘェ〜ヘェ〜ヘェ

thx

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

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




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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

326 名前:321 mailto:sage [04/01/20 03:53]
すまん、>>325の修正。

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

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


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

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

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

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


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

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

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

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

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




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


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

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


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

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

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

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

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

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

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

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

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

339 名前:デフォルトの名無しさん mailto:sage [04/01/22 00:26]
21st century compilers
www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html

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

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



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

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

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

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

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

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

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

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

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

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



351 名前:デフォルトの名無しさん mailto:sage [04/01/22 22:34]
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/

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

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

353 名前:338 mailto:sage [04/01/25 06:37]
(*^〜^ゞ いや〜

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

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

355 名前:デフォルトの名無しさん mailto:sage [04/01/27 22:02]
>>354
板違い。
この辺で訊いてみ。
JavaScript:document.body.innerHTMLのガイドライン
that.2ch.net/test/read.cgi/gline/1070715430/

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

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

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


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

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

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

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



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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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



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

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

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

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

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

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

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

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

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

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



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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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





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

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


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

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

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


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

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


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

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

機械語なら俺に質問しろ!
pc2.2ch.net/test/read.cgi/tech/1035288252/


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

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

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

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

400 名前:デフォルトの名無しさん mailto:sage [04/02/06 08:36]
こっちのスレも使える。
Linker && Loader
pc2.2ch.net/test/read.cgi/tech/1033403294/



401 名前:デフォルトの名無しさん mailto:sage [04/02/06 12:46]
MSによるPEフォーマット仕様書(日本語)
www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html

402 名前:デフォルトの名無しさん mailto:sage [04/02/06 13:16]
>>401
げ、こんなページがあったとは・・・

403 名前:デフォルトの名無しさん mailto:sage [04/02/06 14:26]
どっからこんなもんを。
>>401すげー。

以前はMSDN Onlineで公開されてたのか?

404 名前:デフォルトの名無しさん mailto:sage [04/02/06 15:31]
>>401
初めてみたぞ。 GJ!


405 名前:デフォルトの名無しさん mailto:sage [04/02/06 17:26]
ていうか普通にMSDNに日本語資料あるし

406 名前:デフォルトの名無しさん mailto:sage [04/02/06 17:46]
貧乏人にはMSDNなんて読めねえと思いますが

407 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:02]
貧乏人向けMSDN
www.microsoft.com/japan/msdn/library/default.asp


408 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:04]
おまいらどうでもいいけどスレ違いですよ

409 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:28]
今までの糞レスに比べたらだいぶマシだろうが(w

410 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:31]
そして誰もいなくなった・・・



411 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:43]
>>407
そこは知ってますが、
どうやっても>>401の様な情報には辿りつかなかったです・・

412 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:16]
日本語MSDN Onlineにはその情報無いね

413 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:31]
イエロー人種にはあえて多くを教えないとか
差別されてるんじゃないか?(w

414 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:32]
いや、MSDN買えってことだろ

415 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:34]
人種制限か。
アメ公ならやりそうな事だな。

416 名前:デフォルトの名無しさん mailto:sage [04/02/06 21:48]
単にMSKKが無能揃いなだけだろ。>>413-415を否定する根拠もないがな。

417 名前:デフォルトの名無しさん mailto:sage [04/02/06 22:53]
字句解析
文字をハッシュで調べる
・変数、関数名、キーワードを判別
ハッシュのない場合
・数値
・変数名
・関数名
をSwitch分で単語に区切る


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

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

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

リンカ
・関数
・グローバル変数
・相対的なラベルを絶対値にする

418 名前:デフォルトの名無しさん mailto:sage [04/02/07 02:52]
独り言はスルーか。

419 名前:デフォルトの名無しさん mailto:sage [04/02/07 02:59]
GCC frontend弄ってる人いない?

420 名前:名無し@沢村 [04/02/07 21:13]
おい、おまーら聞け、おれのマシン語のサイトにPEフォーマットの仕様をUPしたからな。
恐ろしすぎるぞ!!おまーら↓

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




421 名前:デフォルトの名無しさん mailto:sage [04/02/08 11:50]
むしろlibelfの使い方が知りたい。

422 名前:デフォルトの名無しさん mailto:sage [04/02/09 00:52]
質問させてください。
LLとLRの解析処理の違いは何となく理解できたのですが、
記述能力という面でどういった違いがあるのでしょうか?
javaとかって(LA)LRでないと記述できないみたいな事も
聞いたことがあるけど、これってLLでは記述できないって事で
しょうか。


423 名前:デフォルトの名無しさん mailto:sage [04/02/09 01:38]
>>422
LL(1)で書けるかどうかはわかりませんが、
ANTLRというパーサー生成系で書かれたJavaの文法がありますから
LL(k)で記述可能なのは確かです。




424 名前:デフォルトの名無しさん mailto:sage [04/02/09 07:50]
>>420
無駄ではなーい。
乙。
各ページにTOPへのリンク付けて、ロボット検索でどっかのページへ直接着いた時にも
他のページへ辿れるようにしとけー。

425 名前:デフォルトの名無しさん mailto:sage [04/02/09 13:27]
>>423
ANT"LR"ってLR系かと思い込んでました。
LL(k)だったんですね。ありがとうございました。



426 名前:デフォルトの名無しさん [04/02/11 22:07]
一般的なコンパイラやスクリプトでは、
yacc&lexのソースコードは何行ぐらいになりますか?


427 名前:デフォルトの名無しさん mailto:sage [04/02/11 22:18]
千差万別。

428 名前:デフォルトの名無しさん [04/02/12 00:05]
いきなり質問すみません。
以下のコードを最適化(局所的に?)するとどーなるんですか?
低レベルかもしれませんが私にはさっぱりです。

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


429 名前:デフォルトの名無しさん mailto:sage [04/02/12 00:07]
とりあえずstrength-reduceだな

430 名前:デフォルトの名無しさん mailto:sage [04/02/12 00:41]
>>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におきかえるとか。




431 名前:デフォルトの名無しさん mailto:sage [04/02/12 01:03]
>>426
手元にあるANSI Cのyaccによる定義。ソースが766行(宣言部と文法定義のみ)。
終端記号、還元規則の数などは:

83 terminal symbols
80 nonterminal symbols
224 productions
364 states

フリーな言語処理系はたくさんあるから、入手して眺めてみては?


432 名前:デフォルトの名無しさん mailto:sage [04/02/12 01:06]
>>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;

433 名前:428 mailto:sage [04/02/12 01:17]
>>430
ありがとうございます。
たぶん気合はいってないコンパイラなんでc[k]がループ不変だから外に出すってことは

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

これでOKですか?




434 名前:デフォルトの名無しさん mailto:sage [04/02/12 01:32]
↑…よく読め…あと式に全角使わない (´・ω・`)

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



435 名前:デフォルトの名無しさん [04/02/12 01:40]
COFFの仕様の日本語のドキュメントってどこにある?

436 名前:430 mailto:sage [04/02/12 02:32]
>>432
おお、そうですね。aliase問題をすっかり忘れていました。


437 名前:デフォルトの名無しさん mailto:sage [04/02/12 02:40]
>>435
タイミング的にD言語スレの人だよな?
どっちでもスレ違いになっちゃうけど、
とりあえず向こうにレスしておいたYO。

438 名前:Amazon.co.jp よりお知らせ mailto:sage [04/02/12 02:58]
誠に申し訳ございませんが、大変残念なご報告があります。お客様のご注文内容のうち、
以下の商品については入手できないことが判明いたしました。

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

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

ガ━━(゚Д゚;)━━ソ!


439 名前:デフォルトの名無しさん mailto:sage [04/02/12 08:15]
ワラタ

440 名前:デフォルトの名無しさん mailto:sage [04/02/12 13:36]
>>438
注文しなおせw
今はちゃんと「予約する」になってるから。



441 名前:デフォルトの名無しさん mailto:sage [04/02/12 13:39]
駄目元で黒猫にも頼んでみたら
絶版モノでも結構しつこく在庫捜してくれたよ>猫


442 名前:デフォルトの名無しさん mailto:sage [04/02/12 15:12]
>>441
いや、絶版じゃなくて「まだ出版されてない」本なんです。

>>440
2004年8月1日に伸びてますね。気長に待つしかないか。


443 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:03]
parrotの追っかけをやってる人はいませんか?

444 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:08]
2005年1月に延びましたよ…。残念ながら。
www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html

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

となっているのは2006年まで延期するという布石かな

445 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:24]
だーーーなんじゃそら。
ホントに出版されるんだろうなあ・・・

446 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:43]
クラスってどうやって実装すりゃいいの?関数は
わかるんだけどクラスがさっぱりわからん

447 名前:デフォルトの名無しさん mailto:sage [04/02/12 18:56]
ああ?

448 名前:デフォルトの名無しさん mailto:sage [04/02/12 20:35]
>>444
ガ━━━━ΣΣ(゚Д゚;)━━━━ン

449 名前:デフォルトの名無しさん mailto:sage [04/02/12 23:29]
yacc&lexは知らないけど、
java.io.StreamTokenizerは便利だと思った。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/StreamTokenizer.html

450 名前:デフォルトの名無しさん mailto:sage [04/02/12 23:42]
Cライブラリにもこういったtokenizerはあるよな
自作する人もそれなりに居るだろう
で、それに満足できなくなったらlexに進むってわけだ



451 名前:デフォルトの名無しさん mailto:sage [04/02/12 23:45]
strtok は作りがよろしくないからねえ。

452 名前:デフォルトの名無しさん mailto:sage [04/02/13 06:52]
>>446
vptrで検索。

453 名前:デフォルトの名無しさん mailto:sage [04/02/13 13:19]
Boost.Spirit
spirit.sourceforge.net/repository/applications/show_contents.php

いい時代だ

454 名前:デフォルトの名無しさん mailto:sage [04/02/13 13:57]
そこのc.zipって、プリプロセッサ入ってないんだから
full ANSI C とはとても呼べたもんではないよなあ
Cはプリプロセッサがないと魅力半減だし

455 名前:デフォルトの名無しさん mailto:sage [04/02/13 14:53]
>>454
ラッパーのスクリプトでも書けばいいんじゃないの?

456 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:14]
>>454
つうか、プリプロセッサは
あるものを使えばいいんじゃないの。
プリプロセッサまで自作する意味ってある?

457 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:15]
>>455
書き方わかんないから
最後まで責任とってほしいよ
なんなんだよあの中途半端さは

458 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:16]
>>456
馬鹿かおめえは
んなこといったらc.zipの存在そのものが
まるっきり無意味じゃねえかよ

459 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:36]
>>458
プ
本気でそう思ってるの?

460 名前:デフォルトの名無しさん mailto:sage [04/02/13 16:34]
>>454 同じページにwaveがあるだろうに。




461 名前:デフォルトの名無しさん mailto:sage [04/02/13 16:53]
>>459
ほんとに馬鹿まるだしだな
哀れでしょうがないぞ
頭大丈夫かい?

>>460
何なのか説明しろよ。

462 名前:デフォルトの名無しさん mailto:sage [04/02/13 17:26]
>>461
Spirit で記述された C/C++ プリプロセッサ。
つーか、ドキュメント嫁

463 名前:デフォルトの名無しさん mailto:sage [04/02/13 18:20]
spilitだかsplitだか非常にまぎらわしい

464 名前:デフォルトの名無しさん mailto:sage [04/02/13 18:31]
と思ったらspiritか
漏れの目が腐ってるだけでした

465 名前:デフォルトの名無しさん mailto:sage [04/02/13 19:18]
boostのソースは吐き気がするよ。
これほんとに使ってる奴いるの?

466 名前:デフォルトの名無しさん mailto:sage [04/02/13 19:21]
そう思うよな、でもどうやら仕事じゃあ使えないと話にならないらしい。
boostとかLokiを採用してるプロジェクトなんて見たこと無いんだけどさ。

467 名前:デフォルトの名無しさん mailto:sage [04/02/13 20:02]
人間には言語の限界へと向かって突進しようとする衝動がある

                     ウィトゲンシュタイン

468 名前:デフォルトの名無しさん mailto:sage [04/02/13 20:16]
boost含んだコード納品するなんて機会あるんか?

469 名前:デフォルトの名無しさん mailto:sage [04/02/13 20:45]
この人等はboostで何かいやな思いしたのかな。
boost知らなくてバカにされたとか?

470 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:07]
まわりがboostの話ばかりしててついて行けなくてストレス溜まったとかな



471 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:18]
そんなあなたには Let's boost がおすすめ。
ttp://www.kmonos.net/alang/boost/
日本語解説でわかりやすいよ。

ここみて必要性を感じなければ使わなければ良いだけの話。
ましてや他の人がboostを使ったコードを納品する機会が
あるかどうかなんて知らなくていいでしょ。

472 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:34]
boostにはiostreamクラスの演算子オーバーロードのような
構文そのものの意味を変えてコーディングするスタイルを
強要するライブラリ(spiritとか)があるから
なんかあんまり好きになれない。

473 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:43]
>>472
基本的にはやりすぎだと思うけど、boost::filesystem の
パス結合演算子を「/」にした辺りはなかなか面白いと思ったり。

Boost っていろいろごたまぜだから、
俺は気に入ったところだけつまみ食いという感じ。

474 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:50]
おまえらスレ違い

475 名前:デフォルトの名無しさん mailto:sage [04/02/13 22:04]
すまん、ナチュラルにテンプレートスレかとおもてたよ。

476 名前:デフォルトの名無しさん mailto:sage [04/02/13 22:04]
すまん、ナチュラルにテンプレートスレかとおもてたよ。

477 名前:デフォルトの名無しさん [04/02/14 17:09]
>>431
ご親切にありがとうござい居ます。
やはり、かなりの数のシンボルが有るんですね。


478 名前:デフォルトの名無しさん mailto:sage [04/02/14 21:24]
lispでは新しい構文を定義するのは普通だけど

479 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:03]
lisp はクソ。マクロは可読性を下げてユーザビリティがイクナイ。
) より end のほうがユーザビリティがイイんだよ。ボケが。

480 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:12]
よそでやれ
どうしても此処でやりたきゃ、可読性の悪い理由書け >>479
そうすりゃ、言語仕様やらの話題になる。



481 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:26]
コンパイラってアセンブラ吐く所まで作れば良いの?
それともオブジェクトコード作ってリンクする所まで?

482 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:26]
言語設計と言語処理系の話は分けるべき?
それとも不可分と考えるべき?

483 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:57]
言語によってはコンパイラだけで完結出来なかったりするんだよなー。

484 名前:デフォルトの名無しさん mailto:sage [04/02/15 22:04]
J*V*厨の香りがプンプンするな

485 名前:デフォルトの名無しさん mailto:sage [04/02/15 22:12]
そなん?
C++とかコンパイラだけしか見ないって条件だと殆ど無理じゃね?

486 名前:デフォルトの名無しさん mailto:sage [04/02/15 23:55]
>>481
アセンブラを呼出してオブジェクトにすればいい。
ただし権利関係やソースのフォーマット等で既存のが使えない場合は
アセンブラも自前で作らなきゃならない場合も多い。


487 名前:デフォルトの名無しさん mailto:sage [04/02/16 06:41]
lispはあれでいいんだよ。読みやすさをちょっと犠牲にしただけで
物凄いメリットが生まれたんだから。

488 名前:デフォルトの名無しさん mailto:sage [04/02/16 13:01]
ゲーデルの証明が理解出来なかったカッコ嫌いLISP嫌い厨


489 名前:488 mailto:sage [04/02/16 13:19]


490 名前:デフォルトの名無しさん mailto:sage [04/02/16 14:07]
>>488-489
ワロタ



491 名前:デフォルトの名無しさん mailto:sage [04/02/16 14:37]
Lispさんは悪くない。
Paul Grahamの文章を読んで勘違いしたLisp厨が悪い。

つかPaulはさっさとArcを世に問えよ、と。

492 名前:デフォルトの名無しさん mailto:sage [04/02/17 14:42]
)とendを置き換えるプリプロセッサ(sed使えば一行で書けるなw)を使えば糸冬了(<-何故か変換できる)。

493 名前:デフォルトの名無しさん mailto:sage [04/02/17 18:01]
endだらけになってもっと悲惨

494 名前:デフォルトの名無しさん mailto:sage [04/02/17 19:59]
( )を{ }に置き換えたらC言語っぽく見えますか?

495 名前:デフォルトの名無しさん mailto:sage [04/02/17 23:02]
Lispスレで聞いてくれ。

496 名前:デフォルトの名無しさん mailto:sage [04/02/17 23:31]
>>494
curl という(ダウンローダじゃないよ)のがあったな。確か昔スレたったと思う。
Arc は使ってみたいね。[] 萌え。Lisp は適度に [] を入れれば結構読み易くなりそうな
気がするんで期待してます。

いつか Scheme コンパイラ作ってみたいな。

497 名前:デフォルトの名無しさん mailto:sage [04/02/18 13:37]
俺は()&前置記法で統一されているのがベストと思う。

498 名前:名無し@沢村 [04/02/18 22:06]
おれのマシン語のサイトに掲示板ができたぞ!
ほんにおまいら〜♪

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


499 名前:デフォルトの名無しさん mailto:sage [04/02/19 01:58]
既出だけど、TinyCC って面白そう。

ttp://fabrice.bellard.free.fr/tcc/
ttp://2.csx.jp/users/bitwalk/tcc.html

500 名前:デフォルトの名無しさん mailto:sage [04/02/20 02:46]
500ゲト。

i.loveruby.net/ja/rhg/
ついに来た。



501 名前:デフォルトの名無しさん mailto:sage [04/02/22 08:31]
home.in.tum.de/~baueran/thesis/
www.cobalt.co.jp/writing/index.html

just a memo.

502 名前:デフォルトの名無しさん [04/02/26 15:07]
クラスベースよりプロトタイプベースの方が実装ラクだな
メタメタしなくていいしw

503 名前:デフォルトの名無しさん [04/02/26 20:38]
スクリプトで、 printfとかを実装しようとすると、
たんなるラッパーでは通用しませんよね?

やはり、これって自前で実装しなければならないんでしょうか?


504 名前:デフォルトの名無しさん mailto:sage [04/02/26 20:41]
いいえ

505 名前:デフォルトの名無しさん mailto:sage [04/02/26 20:57]
Perlは色んな関数自前で用意することが多いよな。

506 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:06]
>>503
可変長引数の処理ができれば
実装しなくてもvprintfかvsprintfでどうにかなりそうだけど

507 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:12]
>>506
C言語の仕様だけで任意の可変長引数を作り出すのってできたっけ?
スタック弄らないとだめ?

508 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:15]
>>507
できる。stdarg.hの説明でも見れ。

509 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:24]
>>508
www.catnet.ne.jp/kouno/c_faq/c15.html#13
には出来ないって書いてあるみたいだけど?

なんか間違ってる?

510 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:30]
>>509
あー、そっか。
実行時は確かにできないや。スマソ。
素直にスタック弄ってくらさい。



511 名前:デフォルトの名無しさん [04/02/26 22:06]
やはり出来んみたいね!
スタックいじるのって禁じ手かも。


512 名前:デフォルトの名無しさん [04/02/26 22:10]
>>509
15.13あたりかな?
やはり、printfのwrapperは無理みたい。


513 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:11]
移植性考えればスタック弄るのは止めた方が良いと思う。

514 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:28]
移植性つってもpushの順番程度の違いでしかないがなあ

515 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:40]
スタックとは限らない。

516 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:49]
お遊びでつくるプログラムに、移植性の必要は皆無。

517 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:49]
>>503
スクリプト言語での1回のprintf呼びだしを、
1回のCのprintf関数呼びだしで実現しようとすると大変だが、
引数をひとつずつ処理して、何度もprintf呼べばいいんでない?



518 名前:デフォルトの名無しさん [04/02/27 08:06]
>>517
フォーマットを解析する必要があるので、
移植性は優れるが手間は余計にかかると思われ。


519 名前:デフォルトの名無しさん mailto:sage [04/02/27 11:33]
yacc/lex,bison/flexの話題もこっちでOKですか?

520 名前:デフォルトの名無しさん mailto:sage [04/02/27 13:35]
>>519
OK




521 名前:デフォルトの名無しさん mailto:sage [04/02/27 18:43]
Windowsで汎用的なスクリプト用途考えると、
VBScriptみたいにCOM扱えないと話にならない気がする。
と、VBScript書いてて思った。
でもCOM扱うの面倒なんだよな。
自作の言語をWSHに対応させたって人いる?
たぶんえらい手間掛かってると思うけど。

522 名前:デフォルトの名無しさん mailto:sage [04/02/27 21:23]
させようとしたことはあります。
が、IE中でscriptタグで動かすと凍るのであきらめた。
コンソールからだと、WScript.CreateObjectが上手く行く時と行かない時があったような、記憶はある。
だいぶ前の話です。

523 名前:デフォルトの名無しさん mailto:sage [04/02/28 06:12]
DMonkeyってwsh対応してなかったっけ

524 名前:デフォルトの名無しさん [04/02/28 13:46]
>>517
Good Idea!

ただし、scanfには使えない可能性が...


525 名前:デフォルトの名無しさん mailto:sage [04/02/28 13:52]
直接pushで積んだ方が楽だし変な不具合もない。
なんつうか、潔さ?

526 名前:デフォルトの名無しさん [04/02/28 21:47]
>>525
GCCでもできますか?


527 名前:デフォルトの名無しさん mailto:sage [04/02/28 22:12]
できますが?

528 名前:デフォルトの名無しさん mailto:sage [04/02/28 23:17]
>>524
format I/Oの処理は、printf(3)に下請させる場合でも、
format指定と引数の方が合ってるかどうかなど、
適切なチェックを行わなければ、処理系の状態がおかしくなってしまうので、(e.g. core dump)
言語の仕様として、C風の書式処理じゃなくて、C++風にした方がいい。


529 名前:デフォルトの名無しさん mailto:sage [04/02/29 00:06]
C++形式はアホとしかいいようがありませんな。
言語側の都合というか。

530 名前:デフォルトの名無しさん [04/02/29 00:45]
>>527
どのように実現されるのでしょうか?
もしよろしければ、HPアドレス等お教え下さい。




531 名前:sage [04/02/29 00:47]
>>529
どのあたりがアフォですかね?


532 名前:デフォルトの名無しさん mailto:sage [04/02/29 00:53]
>>531
一目で書式がわからない時点で相当のアホかと。

533 名前:527 mailto:sage [04/02/29 00:55]
>>530
インラインアセンブラ使えよ。
それだけだよ。
何を迷ってるんだが。

534 名前:デフォルトの名無しさん mailto:sage [04/02/29 01:40]
x86と68kとarmとppcとG3〜G5くらいまで対応すれば普通の人は困らないかな?

535 名前:デフォルトの名無しさん mailto:sage [04/02/29 12:38]
SPARCO...

536 名前:デフォルトの名無しさん mailto:sage [04/02/29 14:14]
今ドラゴンブックを読んでいるんですが、
LRの構文解析は、yacc等のツールを使わないと作成できないんですか?
手動で書くと非常にめんどくさいとかいうのをどこかで読んだ気がするんですが、
なぜですか?

537 名前:デフォルトの名無しさん mailto:sage [04/02/29 14:23]
なぜですかって、自分で書いてみろよ(w
アホか?

538 名前:536 mailto:sage [04/02/29 14:28]
>>537

いや、自分、まだそんなレベルじゃないので。
構文解析などはまったくわからず、ドラゴンブックの最初の一章を読んでいる途中です。

539 名前:デフォルトの名無しさん mailto:sage [04/02/29 14:53]
プログラム書けない情報系の学生

540 名前:536 mailto:sage [04/02/29 14:56]
>>539
情報系ではありません。

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

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





541 名前:デフォルトの名無しさん mailto:sage [04/02/29 15:04]
>>536
まだいたのか(w
「めんどくさい」ってことは「作成できる」ってことだろ。
聞いた話とか鵜呑みにするんじゃなくて、
こういうのは自主的に確かめるとかしないと身にならないよ。

542 名前:デフォルトの名無しさん mailto:sage [04/02/29 15:21]
コンパイラのようなこんな人間もいるのだな。

543 名前:デフォルトの名無しさん mailto:sage [04/02/29 15:32]
クリリンの事かぁー!

544 名前:デフォルトの名無しさん mailto:sage [04/02/29 17:48]
>>536
最後まで読んでから聞け
社会に出てから苦労するぞ


545 名前:デフォルトの名無しさん mailto:sage [04/02/29 21:42]
allocaってどうやって実装してるの?
引数に渡す値って可変なんでしょ?
後付けでadd esp, nとかわかんの?
ソース嫁とかなしでおながいします。
サムイので

546 名前:デフォルトの名無しさん mailto:sage [04/02/29 21:56]
ソース嫁

547 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:07]
サム・・・

548 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:11]
gccだとbuiltin_allocaでinline風の処理。

549 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:25]
どうやっても何もねーし
スタックポインタ動かす→そのアドレス返す、で終わりだろ

550 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:40]
これだからソース嫁ない香具師は・・・・



551 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:54]
>>545
allocaはコンパイラの組み込み関数です。

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

でも最適化のレベルの高いコンパイラでは危険ですね。


552 名前:デフォルトの名無しさん [04/03/01 20:45]
ahhoca()


553 名前:デフォルトの名無しさん [04/03/01 20:46]
>>548
ahoca?



554 名前:デフォルトの名無しさん mailto:sage [04/03/01 20:50]
assoca!

555 名前:デフォルトの名無しさん mailto:sage [04/03/01 20:55]
>>554
asoccaじゃねーの?

556 名前:デフォルトの名無しさん mailto:sage [04/03/01 23:05]
alloca(n)を
sub esp, n
mov eax, esp
に展開してやればいいの?


最後に
mov esp, ebp
pop ebp
する関数なら大丈夫ってこと?


557 名前:デフォルトの名無しさん mailto:sage [04/03/02 00:53]
>>556
それだと危険だね。Win32だと単純にスタックポインタをいじるだけだと、
2ページ以上境界をまたいだ時に例外飛ぶよ。
他のOSは実験してないからしらん。

確か1ページずつ動かしてくコードになってたはず>_alloca()
隣のページを触った時に初めてメモリ確保するんだっけな?

558 名前:デフォルトの名無しさん [04/03/02 18:56]
>>557
え、ページなんて概念があったんですか。
ちなみに1ページって何バイトでしょうか?
その辺の情報で何か適当なWebリソースってありますでしょうか。

そういえば、自作の処理系でスタックから配列を確保すると、
16000バイト付近でおかしなことになるんですが、これも
ページと関係ありですか?
コンパイラ側でスタックサイズを確保するだけじゃだめなのか。

559 名前:デフォルトの名無しさん [04/03/02 19:25]
ごめん、ググったらx86の1ページは4kてわかりました。

今ためしにVC6で大きい配列確保するテストしてみたら、
ある大きさになったら密かに__chkstkっていうのを呼んでる。
ちょうど4kバイトを境に。
まいったなあこれ。
全く知らなかった。

560 名前:デフォルトの名無しさん [04/03/02 19:37]
つまり4kを超える固定配列をスタックに確保する場合は、
sub esp, 4096
の代わりに、
mov eax, 4096
call __chkstk
に書き換えなくてはいけないわけだ。
やだなあこれ・・

allocaだと+余分を計算しないといけない?
無条件で_chkstk呼べばいいのかな。



561 名前:デフォルトの名無しさん [04/03/02 19:39]
でもこれでスタック確保でおかしくなる原因がすっきりわかりました。
ありがとうございました。>557

562 名前:558 mailto:sage [04/03/03 02:41]
いまどきのOSはスタックの割り当ては動的だからね。

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

フレーム割り当てのタイミングでサイズが決まってるのなら、
sub esp, 4096; sub esp, 4096; sub esp, 200
みたいな感じで展開しちゃってもいいと思うよ。

563 名前:デフォルトの名無しさん mailto:sage [04/03/03 05:37]
>>562
espの値を変えただけでは、ページを触ったことにはならないと思うが。

564 名前:デフォルトの名無しさん mailto:sage [04/03/03 06:15]
つーかさー、いい加減ソース見ろよ。
ページ処理をどーすればいいのかとかもわかるし。

565 名前:デフォルトの名無しさん mailto:sage [04/03/03 07:36]
>>558
ところで、自作の処理系ってアクティブ何とか?

566 名前:デフォルトの名無しさん mailto:sage [04/03/03 12:21]
やっぱりMacOSXみたいにスタックもallocしたほうが分り易いよな

567 名前:デフォルトの名無しさん mailto:sage [04/03/03 18:12]
>>562
名前557の間違いですか?
ちなみにCRTの_chkstkを呼ぶ様にして解決しました。
おかげで既知のバグがすべて潰せました。

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

>>565
アクティブ何とかの話はよくわかりませんが、
目標はネイティブ実行できるLISPっぽいCみたいな感です。

568 名前:デフォルトの名無しさん [04/03/04 23:56]
どーでもいいけど、
スタックとるahhocaって制限多すぎでない?

大きな自動変数は、普通process即氏けどな。


569 名前:557 mailto:sage [04/03/05 01:12]
>>563
IA-32(+Win32?)の場合だとesp、ebpは明示的に参照しなくても
ポインタが指し示すだけでAccess Violation飛んだはず。
かなり前の記憶なんで確証ないけど・・・

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

関数が呼び出されるまで厳密なサイズはわからないが、
スタック食いつぶすほどのサイズにはなりえない場合とか、
シグナルハンドラから突如longjmp()されようが、絶対に
メモリリークしたくない場合などに使える。


570 名前:デフォルトの名無しさん mailto:sage [04/03/05 19:07]
>>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)




571 名前:デフォルトの名無しさん [04/03/05 19:40]
>>570
linuxでもちょっと大きな奴渡すとすぐにsegfault!です


572 名前:558 [04/03/05 20:39]
>>571
自分も最初そう思ったけど、
10分の1の0x10000にしても落ちたから違うと思う。
ポインタ変えただけじゃ駄目なんじゃないかな。
_chkstkのまわりくどいソースとあわせて考えると。

573 名前:デフォルトの名無しさん mailto:sage [04/03/05 22:14]
>>571
大小は関係ない。
> esp、ebpは明示的に参照しなくても
> ポインタが指し示すだけでAccess Violation飛んだはず。
というのは誤り。espを変更しただけでは落ちないで、参照したときに落ちる。

>>570のテスト内容ちゃんと見た?

574 名前:デフォルトの名無しさん [04/03/05 22:46]
>>570
つーかそれ関数すぐ戻ってるから、プログラム的に
スタックが有効かどうかというテストにはならんのでは?
badstack() {
 char baduse[0x100000];
 return baduse;
}
と同じことだし・・

575 名前:デフォルトの名無しさん [04/03/05 23:15]
あー勘違いした

576 名前:デフォルトの名無しさん [04/03/05 23:17]
なので、>>571が正解!


577 名前:545 mailto:sage [04/03/09 22:36]
alloca実装でけたよ
疲れた

578 名前:デフォルトの名無しさん [04/03/20 13:15]
Windowsで使えるlexってないんでしょうか?
Cygwin上でうごかすのではなく、純粋にWindows用として。

579 名前:デフォルトの名無しさん mailto:sage [04/03/20 13:33]
ttp://sourceforge.net/project/showfiles.php?group_id=23617


580 名前:578 [04/03/20 14:04]
>579
ありがとう。
でも俺がいうのもなんだが甘やかしすぎでは。



581 名前:デフォルトの名無しさん mailto:sage [04/03/20 18:02]
>>580
何だそりゃw

582 名前:デフォルトの名無しさん mailto:sage [04/03/20 19:30]
>>578
こんなんもあるけどな
www.vector.co.jp/soft/dos/prog/se002362.html

583 名前:デフォルトの名無しさん mailto:sage [04/03/20 20:18]
579は鉄オタに優しいNHKみたいですね<あまやかしすぎ

584 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:46]
おれはNHK料金払ってない

585 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:53]
>>584
同じく、見てないし。

586 名前:デフォルトの名無しさん mailto:sage [04/03/20 23:24]
つーかNHKあまやかしすぎ

587 名前:デフォルトの名無しさん mailto:sage [04/03/23 00:12]
教育テレビで歌のお姉さんが胸もまれてたよ。

588 名前:デフォルトの名無しさん mailto:sage [04/03/23 07:16]
なんと。

589 名前:デフォルトの名無しさん [04/04/07 19:36]
yacc か bison のサンプル集みたいなサイトご存知ないですか?
ちょっと、書籍で勉強してるんですがサンプルが少なくて困ってます。


590 名前:名無し@沢村 [04/04/07 22:06]
おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!!
プログラム言語の歴史が変わった歴史的瞬間だ。

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




591 名前:デフォルトの名無しさん mailto:sage [04/04/08 19:16]
>>590
Windoze用かよ _| ̄|○

592 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:52]
逆に聞くが、Windows用以外に何があるんだ?

593 名前:デフォルトの名無しさん mailto:sage [04/04/10 01:45]
>>592
(゚Д゚)ハァ?Macに決まってんだろ!


594 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:25]
>>592
SPARCでSolarisかLinux。PPCでMac OS X用。
これだといじれるんだけどな。Windozeなんざ動く環境がないんで試す事すらできねぇ。

あ、StrongARMなLinuxZAURUSも有るか。

595 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:44]
> Windoze
スペルは正しく書きましょう Windows :p

596 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:41]
>>595
ネタだとは思うけど一応...

ttp://d.hatena.ne.jp/keyword/Windoze

597 名前:デフォルトの名無しさん mailto:sage [04/04/10 10:37]
ネタをネタで :D

598 名前:デフォルトの名無しさん [04/04/11 11:00]
最適化技法について分かりやすく説明してくれている HP ってありませんか?

599 名前:デフォルトの名無しさん mailto:sage [04/04/11 19:46]
yacc の勉強とかはみんなどこでやったんですか?
書籍は相当限られていると思うのですが。

600 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:34]
yaccなんて1、2回使えばわかる気がするけど。



601 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:53]
>>599
みんな、yacc のソースコードを必死に読んだんだよ。
そのために bison はオープンソースになっているんじゃないか。
お前も頑張れ。

因みに yacc のスキャナ自体も yacc で書かれているが
頑張れば何とかなる。


602 名前:デフォルトの名無しさん [04/04/12 21:54]
いやいや、yaccのサンプルはないの?


603 名前:デフォルトの名無しさん mailto:sage [04/04/12 22:55]
>>602 >>88見れ


604 名前:名無し@沢村 [04/04/12 23:12]
ちんぽ

605 名前:デフォルトの名無しさん mailto:sage [04/04/12 23:25]
それで?

606 名前:デフォルトの名無しさん [04/04/18 09:21]
>>603
書籍はもってるらしいぞ。


607 名前:デフォルトの名無しさん mailto:sage [04/04/23 00:13]
gcc 3.4のC++パーサは手書きなんだと。


608 名前:デフォルトの名無しさん [04/04/24 23:06]
>>607
みんな手書きだろう?
口述パーサなんてあるか?


609 名前:デフォルトの名無しさん mailto:sage [04/04/24 23:27]
>>608
> みんな手書きだろう?
3.3.3まではyaccに生成させてたんだよ。
これは手書きとは言わんだろう?

610 名前:  [04/04/24 23:48]
ところで、コンパイラの仕事ってどうやって
発生するの?
どんな会社がそういった仕事の最先端を行っているの?
なんとなく興味あります

わたしはしがない下請けなので
コンパイラ、と聞くとちょいと憧れますね




611 名前:デフォルトの名無しさん mailto:sage [04/04/25 12:35]
知ってるけど教えてあげない

612 名前:デフォルトの名無しさん [04/04/26 19:19]
>>609
なるほど、そういう意味ね!



613 名前:デフォルトの名無しさん [04/04/26 19:25]
>>529
ほほえましいな。レス番違うし。


614 名前:デフォルトの名無しさん [04/04/26 19:36]
>>613

615 名前:デフォルトの名無しさん mailto:sage [04/04/27 04:59]
ワロタ

616 名前:デフォルトの名無しさん mailto:sage [04/04/27 23:10]
じわじわ来るねw

617 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:26]
すんません、Exceptionのthrowとcatchって、どうやって実装されてるんですか?
なんとなく、setjump()とlongjump()をつかうんだろうなーとは思うんですが、いまいち自信ないです。
どう実装してるのかを紹介したサイトなりがあれば教えていただけますか。
#「例外 実装」とかでぐぐってもそれらしいのは見つからない。

618 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:44]
exception setjmp longjump でググってみてみれ。

www.google.co.jp/search?q=cache:qXwDJ7nZF0EJ:maborosi.kobe-du.ac.jp/sugiura/soft/super/longjmp.htm+exception+setjmp+longjump

619 名前:618 mailto:sage [04/05/08 10:24]
longjmp だった。言い訳なんかするもんか・・・

620 名前:デフォルトの名無しさん mailto:sage [04/05/08 11:06]
How a C++ compiler implements exception handling
www.codeproject.com/cpp/Exceptionhandler.asp



621 名前:デフォルトの名無しさん mailto:sage [04/05/08 12:27]
>>617
ちゃんとしたcontinuationがあれば、それを使って実装すればいい。

622 名前:デフォルトの名無しさん [04/05/09 00:19]
どういう意味だ?


623 名前:!621 mailto:sage [04/05/09 00:48]
>>622
exception を実装する為に continuation を実装するというのも本末転倒な感じが
するけど。

ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html

624 名前:デフォルトの名無しさん [04/05/09 19:17]
longjumpは制約が多すぎないか?
スクリプトレベルでうまく動かすためには、相当なサポートコードが必要に
なると思うが…


625 名前:デフォルトの名無しさん mailto:sage [04/05/16 12:21]
Rubyはlongjmp使ってなかったっけか。

626 名前:デフォルトの名無しさん mailto:sage [04/05/17 05:33]
自分も先読みが結構必要なときの
マッチしなかったときの処理にlongjmpを使ってるよ。

627 名前:デフォルトの名無しさん mailto:sage [04/05/18 09:34]
>>610
ARM,MIPS,SHとかの組み込み用アーキテクチャとかなら新規開発したあとコンパイラもそれにあわせて最適化とかが必要だから仕事があるんじゃない?

628 名前:デフォルトの名無しさん mailto:sage [04/05/18 21:58]
Schemeでいうcontinuationの機構を作りたいのですが、
setjmpとlongjmpの他に何が必要ですか?
スタックの内容を退避しなければ駄目ってのはなんとなくわかるのですが。
インアセ使わずにC言語だけでできるものでしょうか?
とりあえずi386以降で動けばいいです。

629 名前:デフォルトの名無しさん mailto:sage [04/05/19 02:28]
>>628
「スタックなぞ一切使わない」というのが王道です。

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

関数型言語スレ(総合スレは荒れてるので、HaskellかML)
で質問すると詳しい人が教えてくれるでしょう。


630 名前:デフォルトの名無しさん mailto:sage [04/05/19 19:26]
ういー、むづかしそうです。
SchemeのCPSてやつですね。




631 名前:デフォルトの名無しさん mailto:sage [04/05/20 02:21]
「スタックなぞ一切使わない」という方法は、ここでいう (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

632 名前:デフォルトの名無しさん mailto:sage [04/05/21 02:19]
>>630
やりたいこととは違うと思うけど、Schemeを普通のCにコンパイルする方法。
home.pipeline.com/~hbaker1/CheneyMTA.html

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

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




633 名前:デフォルトの名無しさん mailto:sage [04/05/23 00:00]
bison / yacc の使い方の質問です。

bison とか yacc って、みんな初めは電卓作りますよね。
3 + 5 (Return)
って入力すると「画面上に」8をprintfするやつ。
これ、画面上で8を返すんじゃなくて、
yyparseの返り値とかそういう感じで yyparse の呼び出し元に
8 を何とかして知らせる方法ないですか?
ただし、グローバル変数は使わないものとして。


634 名前:デフォルトの名無しさん mailto:sage [04/05/23 15:40]
>>633
/usr/lib/yaccpar とか /usr/share/bison/bison.simpleを書き換える。

bisonは

#define YYPARSE_PARAM foo

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

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





635 名前:名無し@沢村 [04/05/24 21:41]
おまいらよ、おれはつい最近つーか、たったいまさっき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知らなかっただろう?


636 名前:デフォルトの名無しさん mailto:sage [04/05/24 22:11]
>>635
tcl/tkって「チックル・チーコ」って読むんだよね?


637 名前:デフォルトの名無しさん mailto:sage [04/05/24 23:11]
>>635
お前だけ。

638 名前:名無し@沢村 [04/05/24 23:49]
Tcl/Tk、DLしたが、何やこれわぁ!?スクリプトやないか?
実行ファイル作成できんのか?HSP以下か?ゴミソフト!!!


639 名前:デフォルトの名無しさん mailto:sage [04/05/25 00:46]
セックル・チンコ

640 名前:デフォルトの名無しさん mailto:sage [04/05/25 01:35]
>>638
tclsh, wish という位だから、tcl/tk は一種のシェルだよ。
C から system() でシェルのコマンドを実行するのと似た様な感じで使える。
まぁ、もちっと面倒だけど。

俺も以前 tcl/tk からパクれる所が無いかなとソース眺めてみたけど、
C で実装されている部分は低レベルな所だけだったような。



641 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:49]
TclつったらPerlと同じくらい歴史の長いスクリプトなんだが
アホは知らなかったのね。

642 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:54]
>>641
言語で大事なのは歴史の長さよりも話者人口だよ。
歴史の短い Java をみんなが使うのはなぜだと思う?
Algol や Prolog が滅びたのは?

643 名前:デフォルトの名無しさん mailto:sage [04/05/25 12:04]
今頃Tcl持ち出してくるなんて100%ネタだと思ってたんですが。
釣りだよね?親切に説明してる640が気の毒だ。


644 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:29]
>>642
Algolはともかく、Prologは滅びてはいないだろ。
Algolにしたって、形を変えてその思想は受け継がれているわけだし。

645 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:53]
>>642
知名度の話をしてるんだが。なにが言語で大事なのは、だ。
かってに妄想してチンコ膨らましてんじゃねーよキモイ。

646 名前:デフォルトの名無しさん mailto:sage [04/05/25 19:15]
642じゃないけど、
 妄 想 ま で 制 限 さ れ て た ま る か
妄想でチンコ膨らそうぜ

647 名前:デフォルトの名無しさん mailto:sage [04/05/25 21:40]
>>642
Tclはハード設計ツールの組込みスクリプト言語ではメジャーです。
(Tclはいやだけど、独自言語よりはましだよな)

もともとTclはアプリ組込み用だし。tclshもwishも組込みのサンプル
みたいなもんです。

648 名前:デフォルトの名無しさん mailto:sage [04/05/25 22:13]
でも結局、Tk のほうが Tcl よりも何倍もメジャー。

649 名前:名無し@沢村 [04/05/26 21:18]
Starpack
Tcl/Tkでつくったスクリプトを実行ファイルに変換するツールだな。
が、わし英文読めんけん、このページのどっからDLしていいかわからんのよ。
このページの何行目の何という文字をクリックするとDLできるか、教えて〜♪

www.interq.or.jp/japan/s-imai/tcltk/tclkit.html


650 名前:デフォルトの名無しさん mailto:sage [04/05/26 21:45]
沢村師ねよ



651 名前:デフォルトの名無しさん [04/05/29 19:38]
ここは沢村を呪うスレとなりました。

652 名前:デフォルトの名無しさん mailto:sage [04/05/29 22:11]
              -=、 ̄`―''" |\ `'''―'''"   |  ||          |ヽ、_____,へ、
         ,...--、    `―‐ァ‐...::', \:::::::::::::::::::: |  ||    |ヽ、___,ヘ、| ┌───┐ i´
        ,. '  ..::....`'''‐--‐''"~...:::::::::ヽ  ` 、::::::::::::::::|  ||    | ┌─┐ i´ | |     │ |
    -=ニ"_,...、-- ヾヽ、::::::::::::::::::::::::::::::::ヽ  `、 `,::::::|  ||    | |  │ | | |      .| |
          `''‐-`ヽ.`''‐-..._:::::::〃:::l:::l`ヽ..ノヽヾ,: |  ||    | |  │ | | |____| |
     ,..-‐''''‐----'":::::::`ヽ、 /l:/|::::/l:::lヾ.‐'""' i| l |  ||    | |  │ | |.┌─‐┐┌┐.|
  __,. ' ......:::::::::::::::::::::::::::::::::::: `''1 l! l::::i lヾ|,...-==l. l:|  ||    | └─┘ | |ノ ,ヘ、 | | レ'
  `ー--‐' ̄`>   ....:::::::::::::::::ノ.._,...ヾ!ノ-':::/~   ノ i |  ||    .| | ̄ ̄|ノ  / /` .| |
       ,.. '"  ...::::::::::::::::::::::::::ヽ< ̄`>'" `ー‐‐''"ノ..|  ||     |ノ      / /  | |
-‐'"゛`''‐''" .......::::::::::::::::::::::::::::::::::::::{ `‐',ヘ |  ,..、_  .|  ||             / /   | |     /|    
....__...:::::::::::::::::::::::::::::::::::::::::::::::::::::::!、  !  ,..-`    ,. |  ||           /./   .| |   . / |
  -"--- ....___,...--- ._::::::::::::::::::::`、 `‐'    _ィ' V|  ||     ._ _/./    . | └──'´ .,)
           , '" ̄..::::::::::::::::::::::::::〉__,..w、ァ'"Vハノ |  ||      `ー─‐'´      `ー───'´
   ,..--- ....__,. ' ....:::::::::::::::::::::::::::::::::::::::::Vi,..ハ---'" |  ||
  ,. '    .....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::'、. ―   .|  ||
-=-‐-‐'゛`''‐-.._   _,..-----==-  .:::::::::::`ー.`--‐'",'|  ||



653 名前:デフォルトの名無しさん mailto:sage [04/05/30 08:43]
沢村が全てを台無しにしたんだな。

654 名前:デフォルトの名無しさん mailto:sage [04/06/02 01:19]
マルチスレッドが良く分からない。マルチスレッドなコードを生成するのには
コンパイラ側で何かしてあげなくてはいけない事があるのでしょうか。
それともランタイム環境の問題なのかな。

655 名前:デフォルトの名無しさん mailto:sage [04/06/02 03:04]
tls(thread local storage)なんてのが言語仕様として定義されていればコンパイラはそれを意識する必要があります。


656 名前:デフォルトの名無しさん mailto:sage [04/06/02 07:57]
>>655
完全にライブラリレベルなのかなと思っていたのですが、そういう訳でもないんですね。
pthread ライブラリを wrap して、他のライブラリも MT-Safe に作れば良いのかと
思ってました。どうもありがとうございます。

657 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:05]
インタープリタなんかではスレッド作るとそのスレッド専用の VM が起動する処理系が
あるみたい。コンパイルされる言語でも、スレッド毎にランタイム環境を作ってあげれ
ば良いのかな。

658 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:48]
>>657
コンパイルされる言語の場合は、ホスト環境のpthreadライブラリを呼び出す様に
すればいいのでは?
今後主流になると思われるSMP環境を考えたら、複数のCPUを有効に使えるかも


659 名前:デフォルトの名無しさん mailto:sage [04/06/10 00:20]
>>658
pthread_create() が C の関数を引数に取るので、クロージャとかを渡したい場合に
何となく面倒じゃないかなと思ってました。変数部分は引数として渡してあげれば
問題無いような気がしてきました。

660 名前:デフォルトの名無しさん mailto:sage [04/06/16 10:58]
bison と flex を使っています。
flex では yylval をガンガン使っています。
bison で %pure_parser したら flex が吐き出す C コードのコンパイルで氏にました。
どうすれば %pure_parser しても yylval (と同じような機能) を flex で使えるでしょうか。



661 名前:デフォルトの名無しさん mailto:sage [04/06/16 16:28]
>>660
自己レス
www.timeparadocs.net/bab/flex_bison/flex_bison.htm
これで解決しますた。
が、flex のファイルに yylval.hoge と書いていたのを yylval->hoge と書かないと逝けないようです。

662 名前:デフォルトの名無しさん mailto:sage [04/06/17 23:22]
boostのspiritっていじって遊ぶにはよいけど、
実際問題使えるものなのかな?

663 名前:デフォルトの名無しさん [04/06/18 16:14]
boost::spirit便乗質問なんですがパースした後
parse_infoのfullを調べるとエラーが発生したか確認できますが
エラーが発生した行番号を取得するにはどうやったら良いんでしょうか?

664 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:33]
position_iterator(勘

665 名前:デフォルトの名無しさん [04/06/19 22:30]
うわ、みてみると確かにそれらしい気配が・・・
しかし、よく意味が分からない罠・・・

666 名前:読まずにレス mailto:sage [04/06/22 00:47]
JJTreeでJVM上で起動するスクリプトを書くのはアリですか?

667 名前:デフォルトの名無しさん mailto:sage [04/06/22 10:17]
だめ

668 名前:デフォルトの名無しさん [04/06/23 23:35]
このようなコンパイラ誰か作ってもらえません?
イメージ的にはVMを介さない.NETみたいな。
開発の形態はApacheみたいに元となるものがあって
ユーザーが拡張プラグインを自由に作って公開できるようなのがいいな。

・ネイティブコードを吐く
・OSは問わない
・VMなどを介さない
・メインとなる構文はあるが、ユーザーが自由に構文を追加・変更できる。

669 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38]
>>668
D言語でええやん

670 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38]
>>668
ttp://hp.vector.co.jp/authors/VA015412/



671 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:42]
>>669
D言語って名前くらいは聞いたことあるんですけど、
>>668で書いたようなことを実現しているんでしょうか?

672 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:03]
Lisp系を使えばいいんでないかとオモタ

673 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:15]
>>668
このようなコンパイラ誰か作ってもらえません?

というクレクレな割に

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

いきなりハードル高い


674 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:25]
>>673
APIの類を使わなければ大丈夫
CPUは限定されるが

675 名前:読まずにレス mailto:sage [04/06/24 00:36]
ダメですか…orzガックリ こっそり作ることにします。

676 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:39]
.NETだから、膨大なライブラリで動的な言語で言語非依存のバイナリインターフェイスを持ってないとダメだな

677 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:13]
>>668
死ねボケ

678 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:20]
>>677
お前が死ねカス

679 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:23]
>>678
お前も死ねタコ

680 名前:デフォルトの名無しさん mailto:sage [04/06/24 09:50]
goto 677



681 名前:デフォルトの名無しさん mailto:sage [04/06/24 09:58]
nop



682 名前:デフォルトの名無しさん mailto:sage [04/06/24 10:11]
lea eax, dword ptr[eax]

683 名前:673 mailto:sage [04/06/24 13:10]
>>674
> APIの類を使わなければ大丈夫

画面を含む一切の入出力ができなくなりますが

684 名前:デフォルトの名無しさん mailto:sage [04/06/24 14:11]
ブートから初めてVESAなり叩けば良い

685 名前:デフォルトの名無しさん mailto:sage [04/06/24 21:45]
>>668は実行可能ファイルとは一言もいってない訳だが。

686 名前:デフォルトの名無しさん mailto:sage [04/06/25 00:58]
このページ挙がってないのかな?
www.csg.is.titech.ac.jp/~chiba/lecture/os/

687 名前:デフォルトの名無しさん mailto:sage [04/06/26 03:09]
gosub 687

688 名前:デフォルトの名無しさん mailto:sage [04/06/27 04:13]
>>683
>画面を含む一切の入出力ができなくなりますが
要求事項にないから、いいんじゃない?

689 名前:デフォルトの名無しさん mailto:sage [04/06/27 05:13]
>>683
GCC があるんだから自分の好きな言語のフロントエンドを書けばいいじゃん。

690 名前:デフォルトの名無しさん mailto:sage [04/06/27 08:28]
簡単に言ってくれるが、gcc難解すぎて弄る気にならん



691 名前:デフォルトの名無しさん mailto:sage [04/06/27 10:36]
>>689
GCCのフロントエンド書いたときあるの?

692 名前:デフォルトの名無しさん mailto:sage [04/06/27 11:41]
>>689
gcc使っても>>668の用件に合わせるのは難しいままだろ?
無知蒙昧な人?

693 名前:デフォルトの名無しさん mailto:sage [04/06/27 17:10]
>>689-692
GNU Common Lispでマクロをいじれば何とかなりそう。

694 名前:デフォルトの名無しさん mailto:sage [04/06/27 17:10]
www.cminusminus.org/
cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html
llvm.cs.uiuc.edu/Features.html
gcc.gnu.org/onlinedocs/gccint/RTL.html

C--, MLRISC, LLVM, RTL...
色々在るけど、誰か使った事ある?

695 名前:デフォルトの名無しさん mailto:sage [04/06/27 23:04]
>>685
まあ、ここ見てる奴は「ネイティブコード」と書いてあるからそんな疑問は浮かばんわけだが。

696 名前:デフォルトの名無しさん mailto:sage [04/06/28 00:10]
ネイティブコードと、オブジェクト(実行可能)ファイルを混同して考えるのはお前くらいなものだが。

697 名前:デフォルトの名無しさん mailto:sage [04/06/28 00:28]
C--は使ったことあるよ。
結構面白いけど、関数型言語とか論理型言語とか、
実装研究がまだまだ行われている言語向けだなあ。

698 名前:デフォルトの名無しさん [04/06/29 18:16]
Common Lispのプリプロセッサ(マクロ)って
そんなに自由度が高いの?

699 名前:デフォルトの名無しさん mailto:sage [04/06/29 20:58]
>>698
自由度は高いよ。
マクロ定義とは実質的にLispコードを生成する関数だとか。

まあ、C++のtemplateもだけど自由度が高ければ高いほど解読しにくいわけで、
達人以外が使っても生産性が大して上がらない気もする。

700 名前:デフォルトの名無しさん mailto:sage [04/06/29 22:39]
Lispのマクロは
評価時に展開されるから
*プリ*プロセッサとは言わない




701 名前:デフォルトの名無しさん mailto:sage [04/06/30 22:18]
>>700
評価に先駆けて展開しといたり、
コンパイル時にも展開できるわけだが。
まあ話を平たくすると、いつでもできるわけだ。


702 名前:700 mailto:sage [04/06/30 23:25]
>>701
Lispの評価器に関する知識が必要な話を
マクロ=プリプロセッサという世界のの人に
今説明しても混乱するだけかと


703 名前:デフォルトの名無しさん mailto:sage [04/07/01 00:28]
>>698
S式を二回評価すると思ってね。(おおざっぱ)
一回目でプログラムの生成、二回目で生成されたプログラムの実行。
LispはデータもプログラムもS式だから、
こういうのは機構的にもプログラミング的にも簡単。
一度遊んでみると良い。

704 名前:デフォルトの名無しさん mailto:sage [04/07/01 12:02]
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だけでできます。


705 名前:デフォルトの名無しさん mailto:sage [04/07/01 12:03]
後はなんだろう。処理に必要なデータを静的に持っておきたいとしましょう。
例えば、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になったと考えればいいです。


706 名前:デフォルトの名無しさん mailto:sage [04/07/01 13:58]
まあLispは面白い言語なので
SICPは読んで損がない本だと思うよ

707 名前:デフォルトの名無しさん [04/07/01 23:20]
まぁ、LISPやる奴で実用的なプログラム書ける奴見たこと無いんだけど?


708 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:36]
>>707
emacsってそんなに使い物にならない環境なのか。なるほど。

やっぱvi?(違

709 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:38]
xyzzyがWin emacsの筆頭?

710 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:58]
>>704
C++でならTypeList or boost::mpl使えば書けそう。
まあ流石に100個も200個も可変長引数を渡されると無理だろうけど。




711 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:12]
ECMAScriptを解析してくれて、しかも組み込み関数・オブジェクトを定義できるライブラリが欲しい
自作すると変数宣言と組み込み関数・オブジェクトのみになりそうだ

712 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:38]
Schemeは括弧さえ折り合いつけば最高の言語の一つだ

713 名前:デフォルトの名無しさん mailto:sage [04/07/02 14:23]
>>711
クロスプラットフォームなら spidermonkey とか、
Windows だけでいいなら ActiveScript とか。
どちらでも簡単にできるよ。

714 名前:デフォルトの名無しさん mailto:sage [04/07/02 17:21]
>>709
>Win emacsの筆頭

Meadowの方が広く使われてます。

715 名前:デフォルトの名無しさん mailto:sage [04/07/02 22:36]
>>713
SpiderMonkeyはかなりよさげだね
しかし英語だらけで組み込めるのは当分先か・・w

716 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:17]
>>704
そういうプリプロセサ書いて、差し替えれば済む話だと思うけど。

全部 C/C++ でできますよ。(藁

717 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:38]
C/C++ではたしかpreprocessor commandsも規格の一部な罠。


718 名前:デフォルトの名無しさん mailto:sage [04/07/03 11:22]
プリプロセッサを差し替えるオプションなんてあるの?
Visual C++とgccを見たけど見つからなかった。


719 名前:デフォルトの名無しさん mailto:sage [04/07/03 15:40]
>>716 それじゃ「コンパイラ書けばできますよ」ってのと変わらないやん.

720 名前:デフォルトの名無しさん mailto:sage [04/07/03 22:50]
>>718
自分のプリプロセッサから、コンパイラ呼べばイイだけじゃない?



721 名前:デフォルトの名無しさん mailto:sage [04/07/04 02:06]
>>720
そりゃそうだ。でも差し替えるとは言わんな。下らないことをきいてしまった……。


722 名前:デフォルトの名無しさん mailto:sage [04/07/04 09:28]
差し換えるならspecファイルだろ。

723 名前:デフォルトの名無しさん mailto:sage [04/07/04 11:46]
>>718
GCC とかならソースあるんだから、適当に修正して実行ファイル入れ替えれば良いんじゃないのか ?

>>719
まあ、そりゃそうだけど、コンパイラ書くより多少難易度は低いだろ。

724 名前:デフォルトの名無しさん mailto:sage [04/07/04 16:57]
結局使い物にはならないと。
普通のアプリケーション書くのに特定のコンパイラのバージョンとそれへのパッ
チ込みで保守したくはねーなあ。


725 名前:デフォルトの名無しさん mailto:sage [04/07/04 18:28]
まあ、このスレ的にはコンパイラまで作ってしまえって事になるかな。
TinyC->.asm位だったら簡単だしね。

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

エラーを探知するために、##lineっていう
現在のコンパイル行をプリプロセッサ->コンパイラへ通知する命令をつくって、
デバックもしやすくしているよ。

726 名前:デフォルトの名無しさん mailto:sage [04/07/04 21:39]
>>724
て言うか、普通のアプリケーション書くのに >>704 みたいなことはあまり必要ないだろ。
マクロプロセサやプリプロセサが高機能だと色々おもしろいけど、実際のところ後の保守が大変だったりするからあまり使わん。

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

MASM なんかのマクロアセンブラでも同じような経験したことある人は多いと思うよ。

727 名前:デフォルトの名無しさん mailto:sage [04/07/05 01:31]
俺はわりとしょっちゅう欲しくなる方だな。
Lispのマクロで俺言語を作ることを考えると>>726も想像はできるけど。
>>726とは逆に最初書くときはベタに展開したソースを書くけど後から
保守性を考えてマクロでまとめることも。あまり凝ったことはしないけどさ。
cppに変数とifとfor eachだけでもあれば世の中もうちっと良かったろうに。


728 名前:デフォルトの名無しさん [04/07/13 22:28]
コンパイラとかの参考図書は、よくありますが
スクリプト言語の参考図書(定番)は、ごぞんじないですか?


729 名前:デフォルトの名無しさん mailto:sage [04/07/13 22:52]
各OS毎のリソースコンパイラの作り方に触れたサイトってありますか?

730 名前:デフォルトの名無しさん mailto:sage [04/07/14 00:35]
>>728
その二つに大きな違いはない。



731 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:11]
>>728
コンピュータアーキテクチャの本じゃないか?

>>730
構文解析だけじゃなくて、実行機の話してるんじゃないの?


732 名前:デフォルトの名無しさん [04/07/14 01:26]
すいませんyacc/lex初心者の質問です。
WIN XPのコンソールから
GNUのFLEXとBISONとボーランドのBcc32でコンパイルしてるのですが
bisonとflexは通過するのですが
最後のCコンパイラのリンク時に"yyllocが定義されてない"というエラーが出てしまいます。
bison.simpleとbison.hairを見てもよくわからないので
なにがまずいのでしょうか?


733 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:39]
>実行機

ってなんじゃらほい?

734 名前:デフォルトの名無しさん mailto:sage [04/07/14 11:23]
>>728
『インタプリタ進化論』なんかいいのでは。スクリプトに特化した内容ってわけでもないけど。

735 名前:デフォルトの名無しさん [04/07/14 19:49]
このスレでよく出てくるyaccやlexってのはソフトウェアなの?
それともライブラリの類?
で、実際にはどのようなことをするものなの?

736 名前:デフォルトの名無しさん mailto:sage [04/07/14 20:00]
>>735
ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html

737 名前:735 [04/07/14 21:00]
つまり、字句解析や構文解析をするソフトウェアね。
コンパイラにおけるそれらの処理を外部のソフトウェアに
頼ると言うのは有りかね?

738 名前:デフォルトの名無しさん mailto:sage [04/07/14 21:02]
>>737
何を言ってるの?

739 名前:ほんたま [04/07/14 21:26]
おみゃ〜らよ、おれのスリムドカンはある意味コンパイラよ。
スリムドカンはおれのページにあるから見ちみれ?

hp.vector.co.jp/authors/VA015412/
おみゃ〜らよ、おれはいまリソースエディタをつくってるのよ。
スリムドカンに装備させるためよ。
おみゃ〜らよ、コンパイラをつくるのはいいが、リソースエディタのないコンパイラはコンパイラとはいわんぞ!
自分じわかるかな?


740 名前:デフォルトの名無しさん mailto:sage [04/07/15 00:53]
>>737
字句解析や構文解析をするソースコードを生成してくれるソフト
これ以上は自分で調べてくれ



741 名前:デフォルトの名無しさん mailto:sage [04/07/15 04:40]
>>735
あなた、最高に頭悪そうですよ?

742 名前:デフォルトの名無しさん [04/07/15 18:37]
昔、OL進化論っていうのがあったなぁ〜
ちょっと思い出したw


743 名前:デフォルトの名無しさん mailto:sage [04/07/15 19:34]
インタプリタ進化論って、絶版じゃなかったっけ?
読みやすい本でいい本だと思うけど、
実行環境の話はそれほど無かったような気がします。
とはいっても、字句/構文/意味解析を作るより
実行環境を作るのって、力業でできますしそんなに難しくないと思いますよ。

744 名前:デフォルトの名無しさん mailto:sage [04/07/15 23:56]
My VMをレジスタマシンにするかスタックマシンにするか悩む

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

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

一向に前に進みましぇん

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

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


746 名前:デフォルトの名無しさん mailto:sage [04/07/16 01:05]
全部作れ。


747 名前:ほんたま [04/07/16 13:55]
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。
つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。
おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか?
「Slim de Can」ってすげ〜な〜。
おりはもう神だね♪どうよ?

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


748 名前:デフォルトの名無しさん [04/07/16 22:00]
コンパイラ作るならBNF記法(拡張)についての理解は必須ですか?

749 名前:デフォルトの名無しさん mailto:sage [04/07/16 22:13]
無くても作れるよ。あった方が楽だけど。

750 名前:デフォルトの名無しさん mailto:sage [04/07/17 00:00]
context free grammerについては「理解」という程大変なことはない気がする。
# オートマトンを理解するにはちっと勉強が必要になるが、
# それこそ知らなくても何とかなりそう

なおLL(1)文法と属性文法を学んでしまえばりっぱな「コンパイラ」が作れると思う。
# リンカとかアセンブラとかの知識は既習だとして



751 名前:デフォルトの名無しさん [04/07/17 03:09]
言語設計はともかく、コンパイラ設計となったら
フロントエンドよりバックエンドのが難しいというか
面白いと思うんだが、どうしてフロントエンドの話しか出ないんだろうか?


752 名前:デフォルトの名無しさん mailto:sage [04/07/17 03:43]
たぶん、そこまで行きつかない奴しかこのスレにいないから。


753 名前:デフォルトの名無しさん mailto:sage [04/07/17 09:41]
バック部のトピックス

・並列化(ループ,タスク.手続き間解析は必須)
・別名解析(フロー依存はまだ重い)
・SSA(冗長コピーをどう減らす? 別名の扱いも)
・コピー伝播(非常に重要.でも語ることは余りないか)
・部分冗長性削除(やりすぎると性能悪化することも.ライブレンジを考慮)
・CPS(手続き型ではやらんか)
・レジスタ割付け(PowerPCとかなら素直だが,制約のきついCPUだと面倒)
・ソフトウェアパイプライン(最内からやらない手法が最近発表されてた)
・命令スケジューリング(コンパイル時間爆発の主犯)
・SIMD命令やDSP命令の生成(上から下までからむので大変.パターンマッチしかない?)

754 名前:デフォルトの名無しさん [04/07/17 18:50]
本日、佐々政孝氏の「プログラミング言語処理系」という本買いました。
コンパイラについてちゃんと学んでいこうかと思います。

755 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:02]
バック部はCにトランスレートする事で済ませちゃってるから、あんまやらないんだよな。
とはいっても、最近の仕事でそういうのをする必要もあったりして
書籍紹介とかやってもらえます?


756 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:07]
そういや 21st Century Compilers 読んだ人いる?

757 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:57]
あぁ、それね…。2005年11月15日に延びたみたい。_| ̄|○
www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html
 Copyright: 2006ってなってるからもっと延びるかも…

758 名前:デフォルトの名無しさん [04/07/17 20:18]
バックエンド「も」それなりに解説している本としては龍本はもちろんのこと、appel本や中田本がありますね。
龍本がバックエンド概要集だとすれば、
appel本が実践本、中田本が理論本といった感じでしょうか?

バックエンドオンリーな変り種としては
Robert Morgan: Building an Optimizing Compiler (ISBN 1-55558-179-X)
ってのがあります。こいつは本当にバックエンドしか書いていません。


759 名前:デフォルトの名無しさん [04/07/17 20:21]
いまだに龍本なの?
進歩ないね。

760 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:54]
何でそんなに詳しいのに新たな言語を作ろうとしないの?



761 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:57]
>>760
何でそんな労力割かなきゃならぬ?

762 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:05]
>>757
がぁん。評判よければ夏休みにでも読もうと思ってたんだが。

763 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:17]
目を通すだけで満足だから何も作らんのだろうな

764 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:21]
バックエンドまで作りこんだ言語を書いても、それで食ってける人はごく少数だし。
理屈を理解して普段のプログラミングに生かせれば、それで良いかと。

765 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:36]
>>761
本当はコンパイラの原理とかよく分かって無いんだよな?

766 名前:デフォルトの名無しさん mailto:sage [04/07/17 22:08]
原理を理解→新しい言語、でもあるまいに

767 名前:デフォルトの名無しさん mailto:sage [04/07/17 23:31]
>>760
一番多い需要は新しい言語の作成ではなく、特定分野特化物だからだよ
趣味の人は確かに新しい言語って事になるんだろうけどね。

768 名前:デフォルトの名無しさん mailto:sage [04/07/18 00:44]
言語ビジネスは死々累々とはMatz氏の言

769 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:01]
>>768
つまり「俺ってば勝ち組w」と主張されたのですね?

770 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:11]
>>764
その反対でバックエンドがほとんどのお仕事もあるよ、
特殊なDSPとかの強力オプティマイザ付き簡易言語関係とか。




771 名前:デフォルトの名無しさん [04/07/18 13:04]
割込みすいません、bisonの-v出力で得られる

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

bisonマニュアルやbison本(といっても古いだけですが)を見ても、載ってませんでした。


772 名前:デフォルトの名無しさん mailto:sage [04/07/18 14:25]
>>771
行番号との関連?
別に行番号とは関連しないんじゃない?

773 名前:771 [04/07/18 17:10]
どうも、Conflict が発生するようで、いろいろと原因を探ってるんですが、
「State何番が何番とconflictした。」とか出て来るんですが、
具体的にソースのどこがいけないのか場所を探すのに、いつも苦労しているのです。



774 名前:デフォルトの名無しさん [04/07/20 17:56]
構文解析器を作るのに正規表現が必要になりますけど、
正規表現の構文解析ってどうすりゃいいんでしょうか?
ものすごく再帰してるんですけど?

775 名前:デフォルトの名無しさん mailto:sage [04/07/20 17:57]
再帰っつーか永久ループですね。

776 名前:デフォルトの名無しさん mailto:sage [04/07/20 18:22]
>>774
>構文解析器を作るのに正規表現が必要になりますけど、
無くてもできます

777 名前:デフォルトの名無しさん mailto:sage [04/07/21 00:38]
>>774
有限オートマトンでぐぐるか、適当な正規表現ライブラリのソースを読め。



778 名前:デフォルトの名無しさん [04/07/29 19:55]

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

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

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

わかる方がいらっしゃいましたら、
ご教授お願いします。


779 名前:デフォルトの名無しさん mailto:sage [04/07/29 20:01]
>>778
なんのエラーが出てます?

780 名前:デフォルトの名無しさん mailto:sage [04/07/29 22:05]
なんとなく改行コードの問題?



781 名前:>>778です [04/07/30 11:15]
>>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に変換しましたデータが失われているかもしれません」
というのが、たいりょうに出ています。

もしよかったら、ソースをお送りしますが・・・
よろしくお願いします。

782 名前:デフォルトの名無しさん mailto:sage [04/07/30 11:54]
>>781
そういう場合は、ここに貼り付けて
do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html


783 名前:> [04/07/30 12:32]
>>782さん
こちらにCソースファイルを貼り付けました。
よくわからなかったので、まちがってスレを立ててしまいましたorz

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

すみませんが、よろしくお願いします。
これでだめでしたら、FLEXソースも貼り付けますので・・・

784 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:00]
>>783
あぅ、上手く行っても、変更点の説明がしにくいと思うので、ソースもよろしこ。
#なんとなく見えてますが、上手く行くかどうかは不明。

785 名前:> [04/07/30 13:09]
>>784さん

元のFLEXソースを
do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50
においておきます

786 名前:784じゃないけど mailto:sage [04/07/30 13:35]
yytext は YY_CHAR* 型で,これは unsigned char * の typedef になっている.
Zsscanf は Zsscanf(const char*, ...) と定義されている.
Zsscanf(yytext, ....) というように呼び出しをしたい.

ということで
1. Zsscanf の第1引数の型を unsigned char * にするか
2. Zsscanf の呼び出し時に毎回キャストするか
のどっちかで対処できるんじゃないかと思う.


787 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:55]
3. コンパイラのcharをunsignedにするオプションを指定する

788 名前:ありがとうございます!! [04/07/30 14:18]
みなさん ありがとうございます。

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

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

すみませんが、ご教授お願いします。


789 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:23]
>>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);
コンパイル方法
www.cygwin.com/
より "Install or update now!" をクリックして実行してください。
あとはメッセージにしたがって、インストールするのですが、パッケージの選択のところで flex を入れておく事。
flexの入っているフォルダーにパスを通したら、
flex flex_test.l
cl flex_test.c
以上です、
あと、_yywrap _yylex はちゃんと定義して置いてください。
出力結果をC++としてコンパイルしたいのであれば、786氏の意見を参考すれば良いかと思います。


790 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:35]
>>788
yylexを呼び出します。
そのあたりは初歩の初歩部分なので、適当に参考書でも買ってきて調べてみるとよいでしょう。
入出力の特化は結構ややこしいので・・・




791 名前:>>778です [04/07/30 14:53]
みなさん いろいろ教えてくださってありがとうございます。。。

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

何度も何度もすみませんが、
ご教授お願いします。

792 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:59]
>>791
一番簡単な方法は
yyin = fopen( ... ) ;
として
yylex()
を呼び出します。


793 名前:>>778です [04/07/30 15:18]
>>792さん

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

yytextに指定文字列を入れてから
yylex()を呼び出せばよろしいのでしょうか?
(どこかのサンプルでこのような形のものがあったのですが・・・)

794 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:22]
>>793
ちがいまーす!!(^^;
実は貴方のやりたい事は、書き始めると結構ヘビーです。
素直にflexの本を買ったほうが良いかと・・・・
どうしても買いたくなげは YY_INPUT マクロを気合で読んでみるとか?


795 名前:> [04/07/30 15:32]
>>794 さん
では、入力したい文字列を
一度ファイルに落としてから
再度、yyin = fopen( ... ) ;
で読み込むという方法だと
まずいでしょうか?

796 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:36]
>>795
それで問題がなければ、それでも良いかと・・・・

797 名前:>>778です [04/07/30 16:27]
今のサンプルFLEXプログラムは「H16/7/16」を「平成16年7月16日」に
変換するものなんですが、ファイルに「H16/7/16」を書き込み、保存してから
yyin = fopen( ... ) ;
として
yylex()
を呼び出すと、「ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ」などと
文字化けが出てしまい、途中で終了してしまいます。
これって何が原因があるのでしょうか?

798 名前:デフォルトの名無しさん mailto:sage [04/07/30 17:17]
cygwin でやるんだったら、ソースファイルとテスト用入力ファイルは EUC にしておく。lex(flex) はマルチバイト文字をマルチバイト文字として扱わないからDIGIT [0123456789]
の書き方だとダメ。
DIGIT (0|1|2|3|4|5|6|7|8|9)
だと動くみたい。


799 名前:デフォルトの名無しさん [04/07/31 00:18]
すいませんが、bison.output の見方を解説しているページとか
ご存知ありませんか?


800 名前:デフォルトの名無しさん mailto:sage [04/07/31 01:14]
>>799
見方を理解しようとしないで、LR解析をある程度理解した方
が良いと思うよ。
そうするとbison.outputの意味が分かるようになる。



801 名前:799 [04/07/31 22:52]
LR解析を理解するための、書籍とかありますか?


802 名前:デフォルトの名無しさん mailto:sage [04/07/31 22:54]
はじめてのLR

803 名前:デフォルトの名無しさん [04/07/31 22:54]
1つの先読みだけしか許されないというのは、かなり不自由かも。
LR(1)を完璧に実装した yacc もどきってご存知ないですか?


804 名前:800 mailto:sage [04/08/01 00:44]
800ゴット

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

>>803
知らないけど、あまり不自由を感じたこと無いな>先読み1
たいしたもの作ってないからかな。

805 名前:デフォルトの名無しさん mailto:sage [04/08/01 01:08]
Catalog of Free Compilers and Interpreters.
www.idiom.com/free-compilers/

806 名前:デフォルトの名無しさん mailto:sage [04/08/01 02:53]
>>803
LLだけとboost::splitを使ってみるとか。
boost.cppll.jp/HEAD/libs/spirit/index.html

でも、文法を変えたほうがいいかもね
LALR(1)の鬼畜パーススピードを捨てるのはもったいないべ。


807 名前:デフォルトの名無しさん mailto:sage [04/08/01 03:41]
LR
LL
LALR
ってなんの略?
(1)
ってのは1つ先見るってことでよい?

808 名前:デフォルトの名無しさん mailto:sage [04/08/01 04:04]
manの番号

809 名前:デフォルトの名無しさん mailto:sage [04/08/01 06:21]
>>807
Lonely Rotary
Lonely Lolita
Lolita and Lonely Rotary

810 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:50]
>>807
LR:左から読んで右から導出
LL:左から読んで左から導出
LALR:ルックアヘッド付きLR




811 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:54]
【LR】Left-to-right scanning, Right-most derivation in reverse
【SLR】Simple LR
【LALR】LookAhead LR

括弧内は先読みのこと

812 名前:デフォルトの名無しさん [04/08/01 15:47]
LALR(3) ぐらい欲しい。


813 名前:デフォルトの名無しさん mailto:sage [04/08/01 15:57]
>>812
探せば GLR 使えるパーサジェネレータもあるぞ。

814 名前:デフォルトの名無しさん mailto:sage [04/08/01 16:49]
>>812
漏れはむしろ「欲しい例」を出して欲しい。

815 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:10]
世の中LALR(1)が圧倒的な主流。
それ以外はただの学問的な研究対象か趣味。

まぁ、炉利趣味と同レベルw


816 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:11]
DelphiはLALRじゃないのでは?

817 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:40]
>>815
C++ は LALR(1) に収まらないワケだが。

818 名前:デフォルトの名無しさん [04/08/01 21:49]
>>817
それは書き方が悪いからでしょ?
あんなもん、書こうとおもえばいくらでも当てはめられる。
(と思う。)


819 名前:デフォルトの名無しさん mailto:sage [04/08/01 21:59]
俺はめんどくさいから再起下降でいいよ

820 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:38]
俺は再帰降下でいいや




821 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:40]
抗菌加工でいいや

822 名前:>>778です [04/08/02 15:41]
お礼が遅れましてもうしわけございません。
ありがとうございました。

>>794さんがおっしゃっていた YY_INPUT のサンプルをいろいろ
探したのですが、これの他にもDOS窓から入力された文字列を
変換するなんていうマクロなどありますでしょうか?

823 名前:デフォルトの名無しさん mailto:sage [04/08/02 16:56]
>>822
YY_INPUTのサンプルって例えば何?
サンプルとかじゃなくて、実際のflexが生成するYY_INPUTマクロを見た方がいいよ。

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

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

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

そのまま他の環境にコピーしても動かない可能性があるので注意。

824 名前:>>778です [04/08/02 17:55]
>>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を呼ぶには、直接呼んでも
よろしいのでしょうか?

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



825 名前:823 mailto:sage [04/08/02 19:18]
>>842
おいおい、なんか間違えてるぞ。前半は正しい感じだけど、最後のが…?
質問に答えるのは構わないけど、その前に一つ質問させてくれ。

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

これに適切に答えられれば、>>824にあるような質問は無いと思う。
さらにおまけとして…、YY_UNPUTとは何?
(ヒント:flexの生成するlex.yy.cにすべての答えがある。)

826 名前:デフォルトの名無しさん [04/08/02 22:21]
結局 >>815は正しいの?


827 名前:デフォルトの名無しさん [04/08/02 22:22]
>>800
質問です。
Lex & Yacc (Nutshell) はいかがでしょうか?
これもLRを解説してますか?


828 名前:デフォルトの名無しさん mailto:sage [04/08/02 22:31]
>>826
すぐ下で答えが出てるじゃん。

829 名前:800 mailto:sage [04/08/02 22:46]
>>827
解説してないね。
でも、典型的なシフト還元衝突などの説明と回避方法の解説はある。
ってかこの本もう絶版じゃない? 手に入るの?

830 名前:デフォルトの名無しさん mailto:sage [04/08/03 17:27]
>>791
yyinを指定しないと入力が標準入力になるからそうなるのでしょう



831 名前:デフォルトの名無しさん mailto:sage [04/08/03 17:55]
yyworld

832 名前:デフォルトの名無しさん [04/08/06 23:12]
>>829
一応あるみたいです。

やはり、ドラゴンを理解しないと
shift/reduce & reduce/reduce の衝突を完全回避することは難しいですかね?


833 名前:デフォルトの名無しさん [04/08/06 23:13]
在庫だと思われます。↑


834 名前:デフォルトの名無しさん [04/08/09 23:38]
注文してしまった。


835 名前:デフォルトの名無しさん [04/08/30 00:46]
age!



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

コンパイラ構成法のソースコードをゲットしたいんですが。

837 名前:デフォルトの名無しさん mailto:sage [04/09/01 10:01]
う〜ん。名前空間の実装法がわからん。
だれか、参考になるサイトか書籍、知らないか?

クラス定義と同じ方法で良いのかなぁ?

838 名前:デフォルトの名無しさん mailto:sage [04/09/01 10:32]
>>837
シンボルテーブルのスタックを作ればいいだけじゃないか?

839 名前:デフォルトの名無しさん mailto:sage [04/09/01 13:55]
>>838
>シンボルテーブルのスタックを作ればいいだけじゃないか?

それってディスプレイ・・・・・だよねぇ。
ブロックを開くときに名前を覚えておくようにするんだろうか?

840 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:40]
例えばC++には複数の名前空間があってややこしい

キーワード
演算子
プリプロセッサ

変数
namespace

これらは関係を持ったりするしね
まあプリプロセッサを除いて基本はみな同じだけど



841 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:42]
名前空間は
関数 namespace クラス
だけじゃないのか?

842 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:46]
::、using、export、importが絡むとさらに複雑になる

843 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:57]
:: using は簡単
export importはどうだろ

844 名前:デフォルトの名無しさん mailto:sage [04/09/01 20:24]
>>840
何を持って基本というか知らんが、実装しようと思うと namespace は深いぞ。
ADL と関数テンプレートとか。

845 名前:デフォルトの名無しさん mailto:sage [04/09/03 18:29]
所詮 namespace は、バカ避けの機能。

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

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

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

namespace って、一体何の為にあるんだろう・・・


846 名前:デフォルトの名無しさん mailto:sage [04/09/03 18:50]
↑ホームラン級のバカ

847 名前:デフォルトの名無しさん mailto:sage [04/09/03 19:24]
所詮 型 は、バカ避けの機能。

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

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

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

型 って、一体何の為にあるんだろう・・・


848 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:04]
ダウト。残念ながら、型によって実行速度は上がるんだよ。


849 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:15]
いくらなんでも型は重要だろう。

850 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:16]
>>845
評価尺度が実行速度だけとは……。1960 年代の人間ですかい?



851 名前:デフォルトの名無しさん mailto:sage [04/09/03 21:23]
60年代だったら消費メモリも重要だな。

852 名前:デフォルトの名無しさん [04/09/04 01:00]
所詮「コンパイラ・スクリプトエンジン」相談室 は、バカ避けのスレ。

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

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

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

このスレって、一体何の為にあるんだろう・・・

853 名前:デフォルトの名無しさん mailto:sage [04/09/04 01:01]
>>852
ワラタ

854 名前:マイク ◆yrBrqfF1Ew mailto:sage [04/09/04 01:22]
namespaceは最高だな。
感動もんだ。

855 名前:デフォルトの名無しさん mailto:sage [04/09/04 11:21]
>>852
無理してまで回答は僕もしないし、他の人もしてないんじゃない。
コンパイラやスクリプトを作ろうという人口は少ないから過疎なのは仕方が無いが
僕は日ごろから巡回しているし、このスレ向きの質問書けば回答は帰ってくるよ。
もちろん僕もクレクレ君とOO厨房の言語論争的な話題は放置してるけどね。;-P
キミには分らないかもしれないが機能しいてない掲示板ではないよ、
進行が遅いに加えて近頃アホっぽい話題が充満しているだけだ。

856 名前:デフォルトの名無しさん mailto:age [04/09/04 12:52]
>>855
( д ) ゚ ゚

857 名前:デフォルトの名無しさん mailto:sage [04/09/04 16:13]
ひさびさにコピペにマジレス見た・・・

858 名前:デフォルトの名無しさん mailto:sage [04/09/04 16:48]
型の実装について教えてください。
現在 int のみのコンパイラは作れたのですが
float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて
実行するときに int か float か if で判断するしか無いのでしょうか?
2つならまだしも double とか char を追加するとなると代入するとき等の型判定で
組み合わせの爆発が起きそうなのですがなにか良い方法はないでしょうか?
速度的に。

859 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:02]
テーブル作るか int float を別文法にしてしまうか……
てか、こんな事は自分で考えろ。

860 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:07]
>>858
>現在 int のみのコンパイラは作れたのですが
>float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて
>実行するときに int か float か if で判断するしか無いのでしょうか?

って、そんなのコンパイル出来たって言えないやん。。。
何の為の型なのさ?




861 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:11]
変数に型情報があってコンパイラを作っているのなら、
コンパイルの時点で型にあったコードを生成するだけだろ。
実行時じゃなくて。


862 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:12]
>>860 ハァ

863 名前:デフォルトの名無しさん mailto:sage [04/09/04 18:27]
>>860
バカ避けの機能

864 名前:デフォルトの名無しさん mailto:sage [04/09/04 18:59]
>>859-861
おぼろげながら自分の間違いが分かってきました。
どうもです。

もう少し考えてみます。

865 名前:デフォルトの名無しさん mailto:sage [04/09/04 20:09]
>>858
実行時に型チェックするかコンパイル時に型チェックするかは、言語の設計に
大きく関わってくるけど、まぁどっちでも良い。

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

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

ってな感じ。型変換判定は素直に実装すると型の数の 2 乗のオーダーで増えるが、
テーブルにでも書いておけば大した手間ではない。ベタに if - else とかで書くと死ぬ。

866 名前:デフォルトの名無しさん [04/09/04 21:46]
YACC はバカ避けのソフト。


867 名前:デフォルトの名無しさん mailto:sage [04/09/04 22:46]
作ってて楽しけりゃなんだっていい

868 名前:デフォルトの名無しさん mailto:sage [04/09/05 06:46]
( ゚д゚)、ペッ

869 名前:デフォルトの名無しさん mailto:sage [04/09/05 15:32]
型についてはシンボルテーブルで管理すれば良いでしょ。

シンボル表のエントリに型情報をもたせ、それが基本型を
ポイントすることで、個々のシンボルの型を表現します。
struct や class などの基本型をまとめた型を作るときも
シンボル表にそれらの新しい型のエントリを作って、基本型を
リスト状にポイントしていけばよいです。

870 名前:デフォルトの名無しさん [04/09/05 17:16]
所詮 lex は、バカ避けのソフト。
(以下ry




871 名前:デフォルトの名無しさん mailto:sage [04/09/05 17:47]
>>855
wrota

872 名前:デフォルトの名無しさん mailto:sage [04/09/05 19:51]
>>870-871
意味の無いレスいれるの止めてくんない、近頃こんなレスばっかりで
前後の見通しが悪くてかなわないんだよ、邪魔だから適当な言語死滅スレにでもいってくれ。

873 名前:デフォルトの名無しさん mailto:sage [04/09/05 20:08]
その発言は結局荒れるもとになるよ。
そして、大量に無駄な情報のなかから有用なものを抜き出すのが2chの利用法だと思う。

874 名前:デフォルトの名無しさん mailto:sage [04/09/05 20:12]
過疎スレでやってくれるなよなとは思う

875 名前:デフォルトの名無しさん mailto:sage [04/09/07 17:20]
855=872

876 名前:デフォルトの名無しさん [04/09/13 23:46:35]
>>872
お前のレスこそ余計。


877 名前:デフォルトの名無しさん [04/09/13 23:47:49]
>>872
wrota

878 名前:デフォルトの名無しさん mailto:sage [04/09/14 18:08:01]
876=877
wrota書くのに一分もかかってんじゃねーよ。


879 名前:デフォルトの名無しさん [04/09/14 23:04:15]
>>878
!= だが何か?


880 名前:デフォルトの名無しさん mailto:sage [04/09/14 23:09:55]
3日後

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

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

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

〜略〜

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

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



何のためのスレなんだか




881 名前:デフォルトの名無しさん mailto:sage [04/09/14 23:28:47]
なんか恐ろしく自己中なヤツがいるようですが…

882 名前:デフォルトの名無しさん [04/09/15 00:36:49]
名前もあぼーんになるはずだが

883 名前:デフォルトの名無しさん mailto:sage [04/09/15 01:04:33]
このスレ869までしか表示されないな。

884 名前:デフォルトの名無しさん [04/09/15 22:07:01]
まぁ、もしアボーンされるとしても、
>>880 が最初だろw


885 名前:デフォルトの名無しさん [04/09/20 01:53:27]
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
は何を指すのか
はて。。。

886 名前:デフォルトの名無しさん [04/09/20 03:29:47]
できたできた。
どうやら型をvoid*にしたのはgccの気まぐれらしい。
ラベルの型なんてないからねえ。

int ptr = &&label;
goto ptr;

これだとラベルと区別つかないからvoid*にしただけか。
gccは変な構文ばっかだな。

887 名前:デフォルトの名無しさん mailto:sage [04/09/29 19:53:22]
VC++でflex++/bison++でリンカエラー回避できますか?

888 名前:デフォルトの名無しさん [04/09/30 22:56:07]
アフォはスルーされるという典型例だなw


889 名前:デフォルトの名無しさん [04/10/05 23:30:22]
C++、Javaで同じスクリプトを動かしたいんですが、
自作するしかないでしょうか。
LuaがJavaに対応していれば一番いいんですが。

890 名前:デフォルトの名無しさん mailto:sage [04/10/06 00:42:29]
>>889
Schemeとか、どっちでも使える言語も結構ある。



891 名前:デフォルトの名無しさん mailto:sage [04/10/06 00:57:17]
そういう意味ではLISP系探すと強いね。
とりあえずS式が読めればなんでもいいわけだし。

892 名前:デフォルトの名無しさん mailto:sage [04/10/06 10:39:52]
>>889
TCLとか


893 名前:デフォルトの名無しさん mailto:sage [04/10/06 12:59:19]
>>889
JavaSript というか ECMAScript がいいんじゃない?
簡単だし。

894 名前:デフォルトの名無しさん mailto:sage [04/10/06 18:10:12]
みんな自分が使っているのを薦めている予感。

895 名前:デフォルトの名無しさん [04/10/06 21:08:06]
bashスクリプトがイイと思うよ。


896 名前:889 mailto:sage [04/10/06 21:33:47]
どうもです。
その辺りのキーワードを頼りに探してみます。
ありがとうございました。

897 名前:デフォルトの名無しさん mailto:sage [04/10/06 22:50:27]
とりあえずECMAScript(の実装)が簡単だという意見が本気でわからん

898 名前:デフォルトの名無しさん mailto:sage [04/10/06 22:53:42]
LISPは1000行も書けばそこそこ使えるものができる
Javaだともっと短いかも

899 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:04:05]
>>897
>C++、Javaで同じスクリプトを動かしたいんですが、
>自作するしかないでしょうか。

って質問だったので、C++とJava での実装が容易に利用できる ECMAScript を勧めました。


900 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:14:01]
ECMA Scriptだと、MozillaのSpiderMonkeyとRhinoが
良さそうだね。



901 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:28:14]
Pythonは?

902 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:31:24]
>>901
ぴちょん(・∀・)!


903 名前:デフォルトの名無しさん mailto:sage [04/10/08 08:18:15]
ネイティブコンパイルする処理系を作成中です

904 名前:デフォルトの名無しさん mailto:sage [04/10/09 09:13:05]
完成です

905 名前:デフォルトの名無しさん mailto:sage [04/10/09 14:51:55]
じりじり

906 名前:デフォルトの名無しさん mailto:sage [04/10/09 16:05:06]
>>904
晒せ


907 名前:デフォルトの名無しさん [04/10/09 22:31:21]
処理系のテストってみなさんどうしてますか
構文、演算子ごとに全パターン網羅できてますか?
ある組み合わせで不具合が出る可能性もあるから、
どうがんばっても全部網羅したとはいえませんよね
某スレのD言語なんかろくにテストされてないのがまるわかりですし
ある程度テストパターンの自動作成ができればよいのですが
そういうアイデアで何かありませんか?


908 名前:デフォルトの名無しさん [04/10/09 23:31:27]
例えば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);

}
こんなものを延々と記述していくしかないのでしょうか。

909 名前:デフォルトの名無しさん mailto:sage [04/10/10 15:30:32]
>>907
全部網羅って C∞ のテストをしたいって事?

910 名前:デフォルトの名無しさん [04/10/10 19:19:42]
確立した方式など無いと思うが…
なので、実績の積み上げしか無いと思われ。




911 名前:デフォルトの名無しさん mailto:sage [04/10/10 20:24:50]
>>908
行カバレッジが100%になるようなテストセットを作るとか。

912 名前:デフォルトの名無しさん [04/10/11 21:40:00]
Bisonでparseした時、エラーの出た行をしらべるにはどうするの?

913 名前:デフォルトの名無しさん mailto:sage [04/10/12 00:36:07]
flexからbisonに渡すTokenに行番号の情報を入れといて、エラー発生時に取り出して使う、
でいいんじゃない?


914 名前:912 mailto:sage [04/10/12 23:08:03]
>>913どうもです、flexのhelpみてたらoptionでありました

915 名前:デフォルトの名無しさん [04/10/13 21:00:24]
>>914
それはflexの中だけだろ?
bisonとは微妙にずれる場合も多い。

>>913 が王道かも。


916 名前:デフォルトの名無しさん mailto:sage [04/10/15 20:56:20]
DLLの関数呼び出しって、参照が一回挟まると思うんだけど、
ループで何べんも呼ぶと普通の関数呼び出しよりパフォーマンスに影響出る?
自分の処理系では参照をはさまない様に(つまりLoadLibraryと同じ方式)
してるけどいまいち差がわからない。
それよりも配置情報テーブルのサイズ減らした方が得なのかなと思ったり。

917 名前:デフォルトの名無しさん mailto:sage [04/10/15 22:32:51]
>>916
間接参照になる分だけ、パフォーマンスは落ちる。でも関数内部が
一行だけとかでない限り、あまり気にしないで良いと思うぞ。

とりあえず計ってみたら?

918 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:20:18]
>>917
コンテキスト切り替えとか食らうと凄く影響するけど、
間接参照が一個増えた程度ではパフォーマンスにそれほど影響しないような…

昔、C++ で virtual ありと無しのメンバ関数で速度測ったら
virtual ありの方が速くてびっくりした事もあるし。

919 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:38:42]
それはお前の計り方が間違ってただけだろう。

920 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:52:11]
>>919
誤差で逆転しただけかもしれんがね。

っつか、測定前から virtualありの方が遅いと決め付けてるなら測定する意味が無いような。



921 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:58:21]
>>920
その測定ソース、どんな感じに作ったのか晒してみ。

922 名前:デフォルトの名無しさん mailto:sage [04/10/16 12:14:42]
>>921
virtualありの関数を持つクラスとなしの関数を持つクラス作って
ループでn回関数を呼び出す、ループ前とループ後の時間から
かかった時間を割り出す普通のマイクロベンチだったと思うが。

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

あとはアセンブラの出力を見て最適化で関数呼び出しが削除されてない事と
virtualありの方は間接参照を介している事を確認した。

923 名前:デフォルトの名無しさん [04/10/16 13:49:08]
まぁ、システムをスタティックリンクにしてからだな


924 名前:デフォルトの名無しさん mailto:sage [04/10/16 14:15:49]
>>923
それは >>916-922 と関係あるのか?

925 名前:デフォルトの名無しさん mailto:sage [04/10/28 21:26:06]
日経ソフトウェアの推薦書籍コーナーで、中田さんの本が2冊あげられていた。
取り上げていた人はどちらもすごい方なので、ちと読んでみようかなという気が沸き起こった。

926 名前:925 mailto:sage [04/10/28 21:40:42]
それにしても\10000を超えるって、やっぱり高い。

コンパイラの構成と最適化
中田 育男 (著)
www.amazon.co.jp/exec/obidos/ASIN/4254121393/

927 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:03:22]
>>926
ドラゴンブックより良い?

928 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:10:24]
>>927
ドラゴンブックよりも内容が新しいらしい。

929 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:19:39]
>>927
かなり難解ですよ。
ドラゴンブックとかプログラミング言語処理系を読んで
それでも物足りない人向け。

930 名前:927 mailto:sage [04/10/28 22:43:04]
読んでみたくなったけど、高いなあ…



931 名前:デフォルトの名無しさん mailto:sage [04/10/28 23:07:51]
そもそも「最適化」をタイトルに冠してる時点でかなりのレベルが予想されるわけだが... < 中田本

それにしてもドラゴンブックの改訂版(に当たる本),いつ出るんでしょうね...

932 名前:デフォルトの名無しさん mailto:sage [04/10/28 23:14:58]
>>926
ドラゴンブック揃えるより安いじゃん。

933 名前:デフォルトの名無しさん mailto:sage [04/10/29 18:29:03]
>>931
もう出たんじゃね?
ttp://www.amazon.co.jp/exec/obidos/ASIN/0321131436/

ペーパーバック版は来年らしい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/0321210913/

934 名前:デフォルトの名無しさん mailto:sage [04/10/30 00:24:51]
>>933
「この商品を予約注文する」と表示されたから、まだ出てないのかも…待ちくたびれたよ。


935 名前:デフォルトの名無しさん mailto:sage [04/10/30 08:51:24]
>>934
うはwwwwwwwwwwwwwww
昨日見たときはショッピングカートに入れるになってたんだがw
amazonの罠だったか。

936 名前:デフォルトの名無しさん mailto:sage [04/10/31 00:42:43]
i.loveruby.net/ja/rhg/index.html

これってどうよ?

937 名前:デフォルトの名無しさん [04/10/31 18:50:33]
>>932
そろえるって何?
1つしかないのでは?


938 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:00:25]
>>937
お前、現物見た事あるのか?


939 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:15:08]
>>938
www.amazon.com/exec/obidos/tg/detail/-/0201100886/
洋書の方は全1巻みたいです。

940 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:56:06]
揃えるといったら、グリーンとレッドでは?




941 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:39:14]
ポケモンみたい

942 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:39:42]
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を暗記中」と
いったところ。それほど高い英語力がなくても大丈夫でしょう。

943 名前:デフォルトの名無しさん mailto:sage [04/10/31 21:07:52]
>>942
コンパイラの勉強をする前、した後とでなにか大きく変わったことはありますか?

944 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:18:01]
>>942
紹介を少しみたところ、コンパイラの(可能な限りの)自動生成に力点を置いてるようですが、
その辺りどうでしたか?

945 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:18:53]
>>942
pseudo codeを「スードウ・コード」と書かれているので戸惑いました。


946 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:25:20]
>>943
昔俺が本読んで実際うまくいった最適化と言える物は
せいぜい定数畳み込みと覗き窓ぐらいだったな。
頭悪いと「それはそれ、これはこれ」って言葉の意味が実感できるぜ!
コンパイラの勉強もいいけどCPUやアセンブラにも詳しくないと
速いコードにはならないぜ。
VMを作るときにも困るぜ?

947 名前:デフォルトの名無しさん [04/11/01 21:36:17]
>>938
英語音痴w


948 名前:デフォルトの名無しさん mailto:sage [04/11/02 10:51:27]
次スレには>>936もリンクに加えておいて下さい

949 名前:デフォルトの名無しさん mailto:sage [04/11/02 13:03:18]
>>943
今まで努力するのが面倒で、yaccでやっていましたが、
そんな自分が嫌でコンパイラの勉強を始めました。
その甲斐あって仕事もはかどり、昇進も決まり、彼女も出来ました。
6月には結婚します。これも全てコンパイラの勉強をした成果です。
                                (27歳・会社員)


950 名前:デフォルトの名無しさん [04/11/02 22:20:28]
おれは今まで金無し君だったけど(ry




951 名前:デフォルトの名無しさん mailto:sage [04/11/02 22:22:11]
>>950
今ではすっかり能無し君か。

952 名前:デフォルトの名無しさん mailto:sage [04/11/02 23:44:04]
コンパイラの勉強をしたら負け(ry

953 名前:デフォルトの名無しさん [04/11/03 09:12:07]
コンパマダァ-? (・∀・ )っ/凵⌒☆チンチン

954 名前:デフォルトの名無しさん [04/11/03 12:48:01]
最近、パチンコ行っても付きまくりな訳だが、
そういえばコンパイラの勉強し始めてからだったことに気づいた。


955 名前:デフォルトの名無しさん mailto:sage [04/11/03 21:25:51]
俺もコンパイラを勉強していて出てきた数字で
ロト6を買ったら2等が当たりました。2000万くらい。

956 名前:デフォルトの名無しさん mailto:sage [04/11/05 18:44:42]
じゃあ俺もコンパイラの勉強していたら
株が上がったことにしよう

957 名前:デフォルトの名無しさん mailto:sage [04/11/05 22:11:26]
LISP最強

958 名前:sage [04/11/06 05:48:47]
スモールコンパイラの制作で学ぶプログラムのしくみ
www.cbook24.com/bm_detail.asp?sku=4774121770

959 名前:デフォルトの名無しさん [04/11/06 12:31:17]
>>958
おっ、新作ですかね?
この分野では珍しい。

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

すべて型破り!w


960 名前:デフォルトの名無しさん mailto:sage [04/11/06 13:42:32]
宣伝乙
借金でもできたんですか?



961 名前:959 [04/11/06 17:41:07]
著者は有名な方ですか?
あと、目次とかはないんでしょうか?


962 名前:デフォルトの名無しさん mailto:sage [04/11/06 18:00:39]
>>958
中身もなさそう。

963 名前:ほんたま [04/11/06 20:32:28]
おみゃ〜らよ、system32フォルダにあるDLLの関数を呼び出すには、インポートセクションにDLL名と関数名を書き込んでいくだけで、呼び出せるんだが、
VC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出せないんだ…
おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな?
windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの?
教えてくだされ〜♪

964 名前:デフォルトの名無しさん mailto:sage [04/11/06 20:57:32]
マルチにレス不要

965 名前:デフォルトの名無しさん mailto:sage [04/11/06 23:18:33]
どうせstdcallつけてないだけなんだろうな

966 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:44:04]
>>958
プログラミング言語処理系とか買ったけどチンプンかんぷんだった俺にはちょうどいい
こういう本もっとでてほしいな
安いしな・・・

967 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:46:29]
>>966
オレは「UNIX プログラミング環境」が初体験だったが。今はもう流行らんか。

968 名前:デフォルトの名無しさん [04/11/08 01:09:20]
>>967
洩れもそれだ!w
但し英語番だけど、


969 名前:デフォルトの名無しさん mailto:sage [04/11/08 19:02:04]
>>967
hocのソースにバグがあったと聞いたけど、どこか知ってる?

970 名前:デフォルトの名無しさん mailto:sage [04/11/08 20:01:57]
>>969
いろいろあった気がするが、具体的に何だったかは忘れた。



971 名前:ほんたま [04/11/08 23:02:02]
おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪
おみゃ〜らよ、なぜ宇宙一すげーかわかるかな?
おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる?
おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ?
おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。
だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる?
つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪
おみゃ〜らよ、おりは宇宙一画期的だと思わないか?
おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪
おみゃ〜らよ、自分じどうじ?


972 名前:デフォルトの名無しさん [04/11/08 23:50:12]
>>969
煽りでなくて、
バグでなく仕様じゃないの?
本だし


973 名前:デフォルトの名無しさん mailto:sage [04/11/09 01:48:39]
次スレまだ〜?


974 名前:デフォルトの名無しさん mailto:sage [04/11/09 17:00:50]
>>972
伝聞だけど煽りじゃないよ。
知り合いが「打ちこんで動かしたけどいくつかバグがあった」って。
もちろん打ち間違いの類いじゃなくね。

975 名前:デフォルトの名無しさん mailto:sage [04/11/10 02:14:00]
ひょっとして脳内の知り合いですかぁ?
そんで俺らにデバッグさせようってことですかぁ?

976 名前:デフォルトの名無しさん mailto:sage [04/11/10 04:01:03]
三銃士で、アトスが友人の身に起こったことだと言って話すけど
ダルタニアンはそれは友人ではなくてアトス自身のことなのではない
かと考える場面がある。

977 名前:デフォルトの名無しさん mailto:sage [04/11/10 10:24:26]
懐かしー。


978 名前:デフォルトの名無しさん mailto:sage [04/11/10 11:23:03]
俺がhocを動かせなくて困ってるとでも思ったのか?www

ほらソース
ttp://www.bsddiary.net/d/200012.html#15
5段目の段落をよく読め


979 名前:デフォルトの名無しさん mailto:sage [04/11/10 13:56:46]
脳内の知り合いじゃないのなら
どこがどうバグってるのか聞いてくれ。

980 名前:デフォルトの名無しさん mailto:sage [04/11/10 14:31:35]
わかったよ知り合いじゃないよ
一読者だよ
直接聞けないからここで聞いたんだよ



981 名前:デフォルトの名無しさん mailto:sage [04/11/10 14:42:49]
誰だお前は

982 名前:デフォルトの名無しさん mailto:sage [04/11/10 18:01:59]
オレだよオレ

983 名前:デフォルトの名無しさん mailto:sage [04/11/10 19:27:26]
>>958
が気になる。


984 名前:デフォルトの名無しさん mailto:sage [04/11/10 20:09:33]
そろそろ新スレの季節だよ。

985 名前:デフォルトの名無しさん mailto:sage [04/11/10 20:47:19]
新テンプラどうしよう

986 名前:デフォルトの名無しさん mailto:sage [04/11/10 22:19:51]
LISPスレと統合しよう
つーかきみらもっとLISPを知っときなさい

987 名前:デフォルトの名無しさん mailto:sage [04/11/10 22:47:27]
Mathematicaマンセー

988 名前:デフォルトの名無しさん [04/11/10 22:47:40]
LISP?はぁ?
負け組言語は不要w


989 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:08:54]
スレ立てるよ

990 名前:スレ立てられませんでした(テンプレ1) mailto:sage [04/11/10 23:11:46]
yaccやlexの使い方やら言語仕様やらの話題。

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

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



991 名前:(テンプレ2) mailto:sage [04/11/10 23:12:21]
コンパイラ等を扱ったドキュメント

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

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

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

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

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

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

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

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

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

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


992 名前:Intelの資料リンク切れになってる(テンプレ3) mailto:sage [04/11/10 23:13:36]
Lex(Flex) Yacc(Bison) 構文解析

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

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

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

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

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

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

Cygwin
www.cygwin.com/

GNU utilities for Win32
unxutils.sourceforge.net/


993 名前:(4) mailto:sage [04/11/10 23:15:40]
その他のパーサジェネレータ等

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

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

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

SableCC
www.sablecc.org/

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

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

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


994 名前:(5) mailto:sage [04/11/10 23:17:53]
ガベコレ

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

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

一般教養としての Garbage Collection
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
www.amazon.com/exec/obidos/ASIN/0471941484/


995 名前:(6) mailto:sage [04/11/10 23:21:42]
参考書籍

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

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

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

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

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

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

●スモールコンパイラの制作で学ぶプログラムのしくみ
www.cbook24.com/bm_detail.asp?sku=4774121770


996 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:26:12]
では立ててみるか。

997 名前:(7) mailto:sage [04/11/10 23:26:28]
処理系,スクリプト

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

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

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

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

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

『Rubyソースコード完全解説』サポートページ
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フォーマット仕様書(日本語)
www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html


998 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:36:47]
連続投稿規制のため、テンプレ(7)は貼れなかった。
誰か頼みます。

999 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:37:55]
新スレッド

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

pc5.2ch.net/test/read.cgi/tech/1100097050/

1000 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:40:47]
ふと思ったのですが、新スレたちました。



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<226KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef