「コンパイラ・スクリ ..
[2ch|▼Menu]
477:デフォルトの名無しさん
05/06/14 23:31:32
ありえん。
数式処理屋、エキスパートシステム屋、AI屋、あと画像処理屋くらいなもんだろう
Lisp専用機使ってたのは

478:デフォルトの名無しさん
05/06/14 23:37:11
LISPのアンチというのがわからんな。
LISPの機能とかは他の言語で代用は無理だからなあ。
まあEmacsなかったらm4以下の存在だったかもしれない。

479:デフォルトの名無しさん
05/06/14 23:39:59
アンチを作りたくてしょうがなさそうな発言だね。

480:デフォルトの名無しさん
05/06/14 23:42:36
>>478のようなやつがなんでこのスレにいるんだ…あきらかに無縁だろ…

481:472
05/06/14 23:50:38
>>475
やはり本がないと(汗

>>477
専用器なんてあったんですか!
ある意味凄い。


482:デフォルトの名無しさん
05/06/14 23:56:08
シンボリ


483:デフォルトの名無しさん
05/06/15 00:02:03
>>477
「Lisp専用機」という存在自体が今の人間にとってはそれこそ「ありえん」だろう。
この黄金期も短かった。
最大の理由は、当時登場した万能太陽神に信仰を奪われたこと。
おまけの理由としては、一大国家施策としてヤンキーでなくおふらんすの言語を推進したこと。

今となっては>>478が言うように、エディタのおまけ言語としてしかLispをさわったことのない
人間のほうが多くなってしまった。

484:デフォルトの名無しさん
05/06/15 00:04:03
IPSJ>コンピュータ博物館>年表と日本の歴史的コンピュータ
 ワークステーション・Lispマシン
  URLリンク(www.ipsj.or.jp)
  URLリンク(www.ipsj.or.jp)

 1974:MIT:CONSマシン
 1974:Xerox PaloAlto:Altoワークステーション上にInterLispを移植
 1976:MIT AIラボ:CADRマシン
     →Symbolics、LMI(LISP Machine Inc.)社の商用Lispマシンの原型となった

 1979:神戸大:神戸大Lispマシン開発
  URLリンク(www.ipsj.or.jp)
 1982:大阪大:LispマシンEVLIS開発
  URLリンク(www.ipsj.or.jp)
 1983:電電公社:通研LISPマシンELIS試作機稼動
  URLリンク(www.ipsj.or.jp)
 1984:理研:数式処理計算機FLATS開発
  URLリンク(www.ipsj.or.jp)
 1984:富士通:Lispマシン FACOM α 発表
  URLリンク(www.ipsj.or.jp)

485:デフォルトの名無しさん
05/06/15 00:08:57
>483
フランス産はどれも優雅だねぇ。

486:デフォルトの名無しさん
05/06/15 00:29:25
フランスの言語って何?
OCaml は何やら汚らしい感じがするが

487:デフォルトの名無しさん
05/06/15 00:37:50
Prolog?Ada?

488:デフォルトの名無しさん
05/06/15 01:59:55
>>484
すげーな富士通までやってたのかw
当時どれだけ影響力あったかわかるな。

489:デフォルトの名無しさん
05/06/15 02:15:24
技術的系譜はこんな感じだそうです。(IPSJ情報)

 神戸大TAKITEC→富士通FACOM α(試作機)→理研FLATS(発案:故後藤英一先生, 設計協力:富士通, 製作:三井造船)→FLATS2
                              →富士通FACOM α(製品版)

 阪大EVLIS(並列処理)…→?

湯浅先生達の超並列機は、どういう技術的系譜にあるのだろう・・・?

490:489
05/06/15 02:29:29
訂正。FLATSは各種の高速化技法を導入したオリジナルですね。

・神戸大TAKITEC→富士通FACOM α(試作機)→富士通FACOM α(製品版)
            \NTT武蔵野通研 ELIS → NTT-IT ELIS-8100/VME/8200 (LSI開発協力:沖電気)

            ・理研FLATS(発案:故後藤英一先生, 設計協力:富士通, 製作:三井造船)
                              →後藤磁束量子情報プロジェクト FLATS2

・阪大EVLIS(並列処理)…→?


491:デフォルトの名無しさん
05/06/15 02:29:36
やっぱりこのスレでLISPとRubyの話は厳禁

492:デフォルトの名無しさん
05/06/15 02:31:33
………………………… >>491 は げ ん き ん …………………………

493:デフォルトの名無しさん
05/06/15 02:41:27
Lispは別に問題ないよ
Rubyが出てくると荒れてるだけ

494:デフォルトの名無しさん
05/06/15 02:51:33
>>493
これだけスレ違いのレスが続いて何が「Lispは別に問題ないよ」だよ

495:デフォルトの名無しさん
05/06/15 03:19:40
荒らしてる本人に自覚が無いだけだな

496:デフォルトの名無しさん
05/06/15 08:25:59
スレ違いなんだよ こっちでやれ
CommonLisp Scheme Part13
スレリンク(tech板)

497:デフォルトの名無しさん
05/06/15 13:18:50
スレが進んでるなぁ……


地面に置かれた砂糖に集まるアリみたい。
アリは嫌いだよ。急所噛まれた事あるから。

498:デフォルトの名無しさん
05/06/15 14:30:40
>コンパイルの定義で揉める巧妙な書き込みがなされているな
>なんだRubyの人って説明不足で揉めるような書き込みが大得意なんだな。

この内容で揉めたほうがマシだったな。現状よりは。

499:デフォルトの名無しさん
05/06/15 18:51:24
>>484
LISP専用マシンが何故必要とされたの?
今に例えると、例えば、 Ruby専用マシンみたいなものだよね?
全然考えられない!


500:デフォルトの名無しさん
05/06/15 19:15:09
頭悪すぎ

501:デフォルトの名無しさん
05/06/15 19:26:30
>>499
速いからだよ

502:デフォルトの名無しさん
05/06/15 20:16:45
>>499
特定の言語を効率よく実行できる専用マシンは、昔のようにハードのオマケでソフトが在った時代には普通だった
ちなみに、今の御時世では Java 専用マシンがあったりする

別に不思議じゃない

503:デフォルトの名無しさん
05/06/15 20:27:33
・当時、汎用機アーキテクチャの標準(IBM/360〜370)は姿を現していたが、
 それ以外のアーキテクチャはまだまだ未発達もしくは未普及だった。
 当時の汎用機アーキテクチャでは必ずしも効率的に実行できない処理のために、
 科学技術計算専用マシンや特定言語専用マシンの研究が始まりつつあった。

・MITのMacプロジェクトでLispアプリケーションを蓄積したが、
 実行には高価な中〜大型汎用機(ITS, GE Multics, DEC-10/20)が必要で、
 小回りが効かなかった。
 そこでPDP並みの価格で中〜大型機並みの性能を持つ
 Lisp用パーソナル・ワークステーションが開発された。

504:デフォルトの名無しさん
05/06/15 22:11:57
>>499には時代という物が理解できないんだろうな。


505:デフォルトの名無しさん
05/06/15 22:22:50
>>499
>>500-504まで、誰もわかってないようだからわからないことを気に病むことはないよ。
同時代のおっさんにはあまりに自明のことなんだが、
わかったからといって何かの足しになるわけでもなし。
スレ違いだし、このへんでひっぱるのはやめよう。



506:デフォルトの名無しさん
05/06/15 22:34:42
最近見た中で一番ショボいハッタリだ

507:デフォルトの名無しさん
05/06/15 22:50:41
20代のLISP使いだけど
おっさんネタはさっぱりわからんなあ

昔のPC板ってのがあるから
いいかげん懐古ネタは他所でやんなさいよ

昔のPC
URLリンク(bubble3.2ch.net)

508:デフォルトの名無しさん
05/06/15 22:54:22
>>507
いやPCの話じゃないんだが…

と一応ツッコミは入れとくが、スレ違いということには同意

509:デフォルトの名無しさん
05/06/15 23:04:49
>>507
ちらっとその板みたが、自分からみたらちっとも昔ではないのですな。
すでにPC前提ってあたりで昔ではないのですよ。

荒らすつもりじゃ無く純粋に懐古趣味としての昔話かと思って期待がはずれたのです。


510:デフォルトの名無しさん
05/06/15 23:42:23
>>507
アホか。リアルタイムで知らない事でも、
文献やWebを駆使して勉強するもんだよ。
特にLispなんて80年代に最盛期を迎えた言語だからな

511:デフォルトの名無しさん
05/06/16 19:36:39
LISPの全盛期はいつだ? 80年代か? MLは今なんだよ…。

512:デフォルトの名無しさん
05/06/16 20:28:40
>>511
> MLは今なんだよ…。
いいえ。

513:デフォルトの名無しさん
05/06/16 21:22:31
80年代つーと洋楽だなあ

514:デフォルトの名無しさん
05/06/16 21:24:57
>>511
桜木君…

515:デフォルトの名無しさん
05/06/16 22:03:41
いいかげんにしろ、スレ違いだ。

516:デフォルトの名無しさん
05/06/16 23:46:50
そ /                  _r  、    、   .ヽ、 R
| L_   , - ´  ̄ ̄ ` ヽ 、   ',ヽー/_ヽーヽ/ヽイ _) u
な < /           ヽ,  /     λ       ヽ. b
の //    イ      ヽ   .i く  チ\イ_レヽ_/ルノヽ ) y
か \! !イ-/─レイ、ル─ヽ, / >i .レイ ,r=、   ,.-=ゝiイ  ヽ, y
| .| ̄i /イ,r=-、   ,-=ヽiミ}<] !レイレi { !_r!   i、_r! リ  ) 最
,、 / .レ| i { i、r!   i、_r!} ア   |   | !,""  ___ "" ! !  く. 高
 `   | i,""  ____  "" | | | .|  ! i ヽ、 !   j  ,イレ  > ! !
     i リヽ、 !   `j   ,イ !|  | |ノル `レ ,_--_イiレ - 、/ ̄ヽ、
     レi レ`レ ,--_イ レ、 リレ'    rイくi-/ / , ---ヽ、/__
人/ヽ、_    ,イくi--//__人__人_   ,く,_[><]__//_(⌒)-、i,_ ノ
はあ /  / i  (>Y<) ) 最R今 (   ,ヽi  '    (_ゝ_ヽ_ノノノ ´
はは i  / .!   `´  ). 高u 夜 (  ./ .!      ヽ、___ノ
はは > / イ、    ヽ, ! b も (  / <、_ 、     _ く
はは < /  ヽr----─> ! y  ( / /  /      ヽ\

517:516
05/06/17 00:33:33
誤爆しました

518:俺の学生時代はi386でGoferかな
05/06/17 00:36:23
>>516
さっさと氏ねよ

>>511-512
定理証明系の開発は70年代
SML/NJの開発は80年代半ば
その後87〜98がHaskell標準化・・・もしかして進歩止まってるやん

519:デフォルトの名無しさん
05/06/17 00:39:16
>>518
スレ違いのお前もな

520:デフォルトの名無しさん
05/06/17 00:42:57
>>519 はぁ?煽りやり過ぎて、話題がスレ違いかどうか判断もできなくなってるのか。

521:デフォルトの名無しさん
05/06/17 00:44:16
>>520
どこからどう見てもスレ違い

522:デフォルトの名無しさん
05/06/17 00:45:07
キチガイが粘着中

                まともな人はしばらくお待ち下さい

523:デフォルトの名無しさん
05/06/17 00:47:39
やっぱりこのスレでLISPとRubyの話は厳禁だな

524:デフォルトの名無しさん
05/06/17 03:45:37
MLじゃないの?

525:デフォルトの名無しさん
05/06/17 20:09:56
>>523
ではmallocとfreeについて話そう。

526:デフォルトの名無しさん
05/06/17 20:11:36
>>525
やっぱこのスレではコンパイラについて話さないとな

527:デフォルトの名無しさん
05/06/17 21:22:29
lambda liftingについて分り易く教えてください

528:デフォルトの名無しさん
05/06/19 04:50:11
荒らしがいなくなるとスレが止まるんだなぁ。
つかLispもMLも禁止の言語処理系スレって…。

>>526
コンパイラの定義を教えてくれ。

>>527
URLリンク(foldoc.doc.ic.ac.uk)

529:デフォルトの名無しさん
05/06/19 09:55:44
LALR(1) を勉強するのにお勧めの書籍かサイトありましたら
教えて下さい。


530:デフォルトの名無しさん
05/06/19 11:02:50
・コンパイラの構成と最適化 中田 育男
 URLリンク(www.amazon.co.jp)


531:デフォルトの名無しさん
05/06/19 15:27:01
>>528
よくわからない
変数が増えただけに見えるorz
引数渡しにするってことかな?

532:デフォルトの名無しさん
05/06/19 16:10:29
だいたいLispやMLの全盛期の話のどこがスレの趣旨に沿ってるんだよ?
そんな話はLispやMLのスレでやれよ

533:デフォルトの名無しさん
05/06/19 16:52:39
>>531
処理系を作る立場で考えてみると良いんじゃないかな。

534:デフォルトの名無しさん
05/06/19 18:01:40
>>530
それって最適化でしょ?メインは


535:デフォルトの名無しさん
05/06/19 19:57:38
>>529
Dragon Bookでいいんじゃないの。


536:デフォルトの名無しさん
05/06/19 20:34:44
>>530
良書には違いないが、LALRつーわけどもないだろ。


537:デフォルトの名無しさん
05/06/19 20:56:36
>つーわけどもないだろ。


538:デフォルトの名無しさん
05/06/19 21:05:16
>>536をparseするのにお勧めの書籍かサイトありましたら
教えて下さい。



539:デフォルトの名無しさん
05/06/19 21:08:06
>>538
・コンパイラの構成と最適化 中田 育男
 URLリンク(www.amazon.co.jp)

540:デフォルトの名無しさん
05/06/19 21:13:07
>>538
Dragon Bookでいいんじゃないの。

541:536
05/06/19 22:33:02
スマソ、「つー訳でもないだろ」の誤りorz


542:デフォルトの名無しさん
05/06/20 00:02:19
>>536
> LALRつーわけでもないだろ。

 ?
 コンパイラ本の一つも読まずにアフォレス、とても痛い小学生だな


543:デフォルトの名無しさん
05/06/20 07:23:45
>>541を意味解析するのにお勧めの書籍かサイトありましたら
教えて下さい。


LALRの良書っていうわけでも無いだろ
ってことか?
じゃあ>>541がLALRの良書を薦めてくれ。

544:デフォルトの名無しさん
05/06/20 17:15:35
そもLALR一つに絞った本が良書と言えるのか?

545:デフォルトの名無しさん
05/06/20 19:51:09
>>544
それってyaccの入門書のレベルな希ガス

546:デフォルトの名無しさん
05/06/20 21:58:07
>>545
いや、案外その手の本は扱ってない。


547:デフォルトの名無しさん
05/06/20 22:17:16
はぁ?
LALRわかんなきゃyacc/bisonは使えないじゃん

548:デフォルトの名無しさん
05/06/20 22:28:32
>>547
理屈ではそうだけど、実際はそうじゃないんだよ。


549:デフォルトの名無しさん
05/06/21 01:20:40
全然自慢にならねぇ主張だな。
わけわかんないけど使ってるって?へ

550:デフォルトの名無しさん
05/06/21 01:31:52
紳士的に解釈すれば、ツールの使い方がわかれば
LALRアルゴリズムの詳細なんて知らなくても良い
ということじゃないかなあ。
いや、ある程度は知ってないとまずいかな。
yaccの作成するテーブルがどういう理屈で作成されてるかぐらいは・・

551:デフォルトの名無しさん
05/06/21 01:33:23
いやちゃう。
単にyaccが吐いたコードにアクション追加したり文法をデバッグするのが無理

552:デフォルトの名無しさん
05/06/21 04:07:32
>>550
どうだろう?yaccって結構簡単に使えるけど、それとLALRの理解は別だと思う。
極端な話し、関数電卓ぐらいのパーサならLALRの知識なんて必要ないし。

ちがうかな?


553:デフォルトの名無しさん
05/06/21 04:29:04
それで結局、今出てるyacc/lex本のLALRの解説は充実してるのか?

554:デフォルトの名無しさん
05/06/21 09:30:36
何するつもりか知らないけど、
LALRだけ勉強しようというのは効率が悪いから
普通の文法解析の教科書では一通りの文法を説明している。

・再帰下降パーサで書ける文法
・LALRパーサじゃないと書きにくい文法
・その他、演算子順位文法、属性文法
とか知っておくと、扱いたい文法が上記のいずれに近いのか、
素早くもしくは効率的に実装するには、どうすれば良いか
判断できるようになると思う。


555:デフォルトの名無しさん
05/06/21 11:58:26
[課題Q]3角形の底辺の長さ,高さをキーボードから読込み,その面積を計算するプログラムを作成しなさい.
ただし,底辺の長さ,高さ,面積の値を入れる変数名をそれぞれteihen, takasa,mensekiとし,いずれも実数型(double型)とする.


void main( void )
{
double teihen, takasa, menseki;

printf( "底辺は?\n" ); /* 入力を促すメッセージを表示 */
scanf( "%d", &teihen );

menseki = teihen * takasa / 2;
printf("%f\n",menseki);
}

これ誰か完成させてくれ

556:デフォルトの名無しさん
05/06/21 12:28:11
>>555=スレ違いのキチガイ

557:デフォルトの名無しさん
05/06/21 13:09:35
次スレから「相談室」ってのを外そうよ。
この文字だけ見て書き込んでいるとしか思えない致傷多すぎる。


558:デフォルトの名無しさん
05/06/21 13:24:09
>>555は単なる構ってチャンだろ。キチガイはさっさと逝け

559:デフォルトの名無しさん
05/06/21 21:03:15
標準入力から直接入力すると、行末の改行が削れてしまうんですが、
それを考慮すると行番号の計測ってどうやるんでしょうか

560:デフォルトの名無しさん
05/06/21 21:13:37
>>559 スレ違い。初心者向け相談室へ逝け

561:デフォルトの名無しさん
05/06/21 23:43:16
LALRの話しもすれ違い???


562:デフォルトの名無しさん
05/06/22 01:15:48
構文解析の話なんてつまらんだろ

563:デフォルトの名無しさん
05/06/22 01:24:54
おれはおもしろいと思うよ。
むしろ他人の作った完成品を貶したり褒めたりするのはよそでやってほしい。

564:デフォルトの名無しさん
05/06/22 04:10:23
文法なんて結局は宗教戦争みたいなもんじゃん。
他人の作った完成品の工夫を見て学ぶのもおもしろいよ。
つか、このスレはいつまでたっても構文解析か荒らしの話しかしてないし…。

565:デフォルトの名無しさん
05/06/22 13:00:54
字句解析・構文解析 ⇒ つまらん。話したくない
意味解析・目的コード生成 ⇒ 各々の機械語スレへどうぞ
各種言語に依存した…… ⇒ 厨は引っ込め


このスレは、何について話すスレなんだ?

566:デフォルトの名無しさん
05/06/22 13:20:55
>>565
実装レベルの話はどうでもいい。

567:デフォルトの名無しさん
05/06/22 13:21:16
>>565
というか厨はお前だろ。

568:デフォルトの名無しさん
05/06/22 16:42:34
>>565
うーん、そこで「他でヤレ」っつってるのは、
単なる荒らしだと思うよ。相手にする必要なし。

つか荒らし被害者のフリして荒らすなって(笑

569:デフォルトの名無しさん
05/06/22 18:08:49
>>1
> 字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,
> CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,
> それにVM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。
> 意味論に関する話題も歓迎です。

字句解析・構文解析以外にも沢山話題はあるじゃない。

570:デフォルトの名無しさん
05/06/22 18:12:09
じゃとりあえず話題をどうぞ(マジ

最近、プログラミング言語系の開発とかやってないなぁ〜(遠い目


571:デフォルトの名無しさん
05/06/22 18:17:23
んじゃ制御フローの話題でも。
最近は制御フロー解析はstructuralな手法に移りつつあるようだけど、reducibleでないループ
はどうしてる? そこだけ古典的な方法でやってる?

572:デフォルトの名無しさん
05/06/22 18:20:19
質問するときは、まず相手を探し、次に質問を選ばなきゃ。
>>570に書いたとおり、俺はスルー

573:572
05/06/22 18:23:37
つか俺、ドラゴンブックの和訳出る手前で
コンパイラーに関する体系的な勉強が止まってる。
ドラゴンブックに型変数の話がちょこっとしか載ってなくて、興味が萎えたんだよなぁ。


574:デフォルトの名無しさん
05/06/22 18:33:58
subset型が欲しいなと思うときはある。
y : { x in Int | P(x)}みたいな感じで。
ただしimpredicativeなものは勘弁。

575:デフォルトの名無しさん
05/06/22 18:34:32
Matz召還して議論したらどぉーお?

576:デフォルトの名無しさん
05/06/22 18:52:50
>>574
Pascalの範囲型みたいな話だね。
構文上の判りやすさはさておいて、
そーゆーのはObject指向で解決できるのでわ?
(constractorや各種演算子で範囲型を外れないようにチェックして、
 もし外れたら例外発生、とか)

577:デフォルトの名無しさん
05/06/22 18:55:32
オブジェクト指向と型は何の関係もない

578:デフォルトの名無しさん
05/06/22 19:10:02
オブジェクト指向のクラスを型とみなす事「も」できる。
通常のOOプログラミングでは、型とクラスの相違は曖昧にされる事が多い。
理論では識別したがるみたいだけどw

579:デフォルトの名無しさん
05/06/22 19:12:12
なんで区別したがるんだっけ?
何度か読んだ覚えがあるけどど忘れした

580:デフォルトの名無しさん
05/06/22 20:13:18
俺も教えて欲しい

581:デフォルトの名無しさん
05/06/22 20:31:22
Haskellなんか、クラスと型は別もんだけど
そういう意味じゃないの?

582:デフォルトの名無しさん
05/06/22 20:32:48
クラスがあるのに静的型が無い言語とか、そもそもクラスが無い言語とかもあることから来たのでは?

583:デフォルトの名無しさん
05/06/22 21:06:03
言語処理系に関する研究の進展によって、
それまで言語処理系の内部機構だったものが、
言語ユーザに安全かつ判りやすい形で開放される事がある。
・・・メモリー・アロケーション然り、ユーザ定義型しかり。型変数、型推論も。

Lispとか、OOとか、そーゆー「開放」を前倒しした形で試すには、
良いプラットフォームなのでわ?と

584:デフォルトの名無しさん
05/06/22 21:11:57
>>583
日本語でお願いします

585:583じゃないが
05/06/22 21:15:44
言語として本格的に実装する前の実験段階の実装には、LISP や OO を使うと良いのではないか?


って読んだ

586:デフォルトの名無しさん
05/06/22 21:21:16
お前の日本語力、理解力が低いのは、よく判った。

これまでの言語処理系発展の歴史の中で、
それまで言語処理系内部の仕組みとしてユーザの立ち入りを禁止していた機構
  例えば:メモリーの動的アロケーション、型の追加定義、型を推測する仕組み
が、簡潔かつ安全な形でユーザに開放されてきた。

・Lispのように高階関数で言語の実行機構を弄る事ができる言語、
・オブジェクト指向言語のように、データと操作をカプセル化して新しい型を定義しやすい言語、
は、上記のような「新しい機構のユーザへの開放」を実験するのに適しているのではないか?

                                                       以上


587:583=586
05/06/22 21:22:41
>>585
介錯かたじけないっす。
>>586>>584宛ての熱いラブレターでつ・・・

588:583じゃないが
05/06/22 21:25:17
読みにくいです

589:デフォルトの名無しさん
05/06/22 21:28:39
はい。反省。
さっき翻訳の真似事で下訳してたから、
むちゃくちゃな語順の日本語をしゃべってるかもしれない・・・

590:デフォルトの名無しさん
05/06/23 00:07:11
>>586
アフォ


591:デフォルトの名無しさん
05/06/23 00:11:25
哀れな奴

592:デフォルトの名無しさん
05/06/23 02:12:10
字句解析はできる
コンパイルも通って実行もできる
でも実行した結果は意味不明

そんな感じの文章

593:デフォルトの名無しさん
05/06/23 04:16:57
重箱の隅つつくだけ

594:デフォルトの名無しさん
05/06/24 04:24:43
>>553
O'Reilly の Lex & Yacc には少なくても無い。
用語の説明コーナーに出ているだけ


595:デフォルトの名無しさん
05/06/24 22:01:28
bison でのエラーメッセージの出し方で質問です。

スクリプト言語を作ろうとしてて
入力にエラーがあったときに詳細なエラーメッセージを出したいんですが
どのようにしたらいいでしょうか?

例えば
if x != 0 {
^
'(' expected.
とか出したいんですが、そもそも「if文の途中」というのが
取れるんでしょうか?

また、現在注目しているトークンの値(yylexからの戻り値)
はどこかに格納されてるでしょうか?


596:デフォルトの名無しさん
05/06/24 22:08:57
まあ>>595くらいのレベルがこのスレにちょうどあってる気がする

597:デフォルトの名無しさん
05/06/24 23:12:59
見てると、LispとRuby、両方ともアンチが厨なだけに見える。
厨だから、ちょっとこの二つが出てくるとすぐ暴れだして
荒れる。

598:デフォルトの名無しさん
05/06/24 23:18:57
>>597
わかってないな。
何かを貶す時の基本は度外れに褒めまくること。
そうすれば>>597のようなアホがほいほいつられてくれる。

599:デフォルトの名無しさん
05/06/25 00:32:42
>>595
lexerはどうしてるの?
Lex等を使わずに自分で書いたのなら、どこまで処理してるかは把握してるのでは?

lookahead tokenの値は変数yycharにおさめられてます。


600:デフォルトの名無しさん
05/06/25 01:21:33
>>595 bisonのオプション
#define YYERROR_VERBOSE 1 /* Enable verbose error messages. */
マニュアルにも出てるはず

> そもそも「if文の途中」というのが
> 取れるんでしょうか?
bison の error を使えば if文の途中でパース失敗した
ときのアクションとか付けられる
なんか説明しづらいけどマニュアルのサンプルに出てそう

601:デフォルトの名無しさん
05/06/25 09:59:34
>>595
すれ違い。

Lisperより


602:595
05/06/25 10:03:24
みなさんありがとうございます。これから試してみようと思います。

>599
flexを使ってます。bison側で「@x」と書けば、トークンの位置が取れると
URLリンク(www1.kcn.ne.jp)
に書いてあったんですがまだ試してません。yycharですか、ありがとうございます。

>600
YYERROR_VERBOSE は試してみました。多少わかりやすいエラーメッセージが
yyerrorに与えられるようになったんですが、自動生成じゃなく自分でエラーメッセージを
決めたいんです(Cコンパイラが出すような)。

error は今のところトップレベルでやっちゃってるんで、
そこを文それぞれにもってかないとだめなんですね。


603:デフォルトの名無しさん
05/06/25 12:44:21
>>601
死ね。


604:デフォルトの名無しさん
05/06/25 19:51:54
>>601 ってなにもの?
Lisp 屋からみてもはずかすぃんだけど...


605:デフォルトの名無しさん
05/06/25 22:03:06
>>604
おまぃLisp屋を騙ってる素人だろ。
Lispはプログラムとしていきなり構文木書かせるから、
文法パーサ(yacc, bison, Rie)はイラネェ〜んだよ

だから、「コンパイラ/スクリプトの話題に文法パーサはイラネェ」
プログラミングに精通してる人向けのジョークなんじゃねぇ?
;; あ、素人の人には判らない話だから、
;; そこの人、ムキになって否定しないように・・・



606:デフォルトの名無しさん
05/06/25 22:06:14
よく分からんが、>>605 が素人だということはよく分かった

607:デフォルトの名無しさん
05/06/25 22:15:28
はいはい、わかったわかった(苦笑

608:デフォルトの名無しさん
05/06/25 22:16:27
まあ、大体はあってるんじゃないか。
全くいらないってわけじゃないが、他と比べて
簡単であることは間違いない。

609:デフォルトの名無しさん
05/06/25 22:19:30
文法パーサ・ジェネレータは 使わない。
S式に関する文法は      ある。

妙に関心してるのも出てくる始末(苦笑
素人相手にジョーク飛ばすのも大変だなぁ。


610:デフォルトの名無しさん
05/06/25 22:22:26
なるほど。
>>605 みたいにスーパーな Lisp 屋ならば、
SICP の超循環評価器なんてイラネェ〜んだろうな。


611:デフォルトの名無しさん
05/06/25 22:42:27
>>609
なんだ、お前は「文法パーサ」って言葉でツールの類を指してたのか。

612:デフォルトの名無しさん
05/06/25 22:49:41
601でギャグを言ったつもりだったっぽいなw

613:デフォルトの名無しさん
05/06/25 22:50:45
yacc の検索結果のうち 日本語のページ 約 17,600 件中 1 - 10 件目 (0.15 秒)

構文解析器 の検索結果のうち 日本語のページ 約 10,200 件中 1 - 10 件目 (0.23 秒)

パーサ の検索結果のうち 日本語のページ 約 53,700 件中 1 - 10 件目 (0.19 秒)

パーザ の検索結果のうち 日本語のページ 約 8,720 件中 1 - 10 件目 (0.04 秒)


文法パーサ の検索結果のうち 日本語のページ 約 24 件中 1 - 5 件目 (0.22 秒)


614:デフォルトの名無しさん
05/06/25 22:58:59
久しぶりにに揚足鶏取れたんで、大喜びか。
下らない人間だ


615:デフォルトの名無しさん
05/06/25 23:00:52
「LALR文法パーサ」=構文パーサの一種

バカは覚えときな。

616:デフォルトの名無しさん
05/06/25 23:06:07
LALR文法パーサに該当するページが見つかりませんでした。

検索のヒント
- キーワードに誤字・脱字がないか確かめてください。
- 違うキーワードを使ってみてください。
- より一般的な言葉を使ってみてください。
- キーワードの数を少なくしてみてください。


617:デフォルトの名無しさん
05/06/25 23:13:04
荒らすなよ

618:デフォルトの名無しさん
05/06/25 23:14:09
Googleで検索できない単語は間違っていると信じている、
痛い素人が粘着しているな。哀れな奴

619:デフォルトの名無しさん
05/06/25 23:27:41
以前、LALR(1)の書籍orサイトを尋ねたものですが、
なかなかLALRのみっていうのは無いんですね。

ところで、皆さんはどうやって学習されましたか?
学習されたときの書籍とか覚えていましたら、教えて下さい。


620:デフォルトの名無しさん
05/06/26 00:25:28
>>604
おまぃLisp屋を騙ってる素人だろ。
Lispはプログラムとしていきなり構文木書かせるから、
文法パーサ(yacc, bison, Rie)はイラネェ〜んだよ

だから、「コンパイラ/スクリプトの話題に文法パーサはイラネェ」
プログラミングに精通してる人向けのジョークなんじゃねぇ?
;; あ、素人の人には判らない話だから、
;; そこの人、ムキになって否定しないように・・・


621:デフォルトの名無しさん
05/06/26 00:31:50
>>620 が素人なのはよくわかった。


622:デフォルトの名無しさん
05/06/26 00:32:51
はいはい、わかったわかった(苦笑


623:デフォルトの名無しさん
05/06/26 00:34:45
別に文法パーサって言葉自体はいいだろ。
ただし、yaccなどのジェネレータを「文法パーサ」と言ってしまってるから
誤解を生むってこと。
なお、googleで検索してる奴はほっとけ。

624:デフォルトの名無しさん
05/06/26 00:36:46
URLリンク(en.wikipedia.org)

625:デフォルトの名無しさん
05/06/26 00:38:46
>>624
で?w

626:デフォルトの名無しさん
05/06/26 00:42:29
いいですか〜

yaccはパーサではありません。
yaccはパーサを作ってくれるものです。

はい、ここ!試験に出ますよ〜
良い子は覚えておきましょうねぇ〜

627:デフォルトの名無しさん
05/06/26 01:14:56
>>626
foo.yを解釈するパーサと言えなくもないけどな

628:デフォルトの名無しさん
05/06/26 01:41:04
俺の頭はパッパラパーさ(parser)!

629:デフォルトの名無しさん
05/06/26 02:09:28
>>619
旧DragonBook。
あれを読んでたのは大学のころだな。みんなで輪講して、手でLR(0)itemを列
挙して、lookaheadを求めて、表を作成して…とかやった覚えがある。

ところで、LRパーサーの生成方法を知りたいの?
それともyaccの使い方を知りたいの?
前者だったらやっぱりDragonBookを熟読。読んでるだけでは意味不明でも、
簡単な文法(足し算だけの電卓プログラムとか)のLR表を手で生成して
みるとわかってくるよ。

後者ならO'Reilly本で足りるでしょう。


630:デフォルトの名無しさん
05/06/26 05:31:33
>>627
yacc全体をそうは言えない。パース以外の仕事もするから。

631:デフォルトの名無しさん
05/06/26 10:31:04
「パーサ=構文解析器」だから「文法パーサ」って馬から落馬系じゃなければ
*.yなどの文法をパースするパーサのこと。
609の「文法パーサ・ジェネレータ」は「コンパイラ・コンパイラ・コンパイラ」って意味だな。

632:デフォルトの名無しさん
05/06/26 14:18:10
yaccは内部にパーサを持ってはいるんだろうけど、
lispはパーサが要らないんだ!って文章を強引に正しくするために
それを持ち出すのは苦しすぎる。

633:デフォルトの名無しさん
05/06/26 14:21:07
yaccは、*.yをパースしたあと、その情報を使って
新たなパーサを作り出すツールであって、
ただ仕事の過程でパーサを使ってるだけ。
だから、yacc=パーサとは普通いわないし、誤解を生むだけ。
間違ってるといえるかもしれない。


634:デフォルトの名無しさん
05/06/26 21:28:17
yaccはパーサージェネレーターだろ

635:デフォルトの名無しさん
05/06/26 21:30:42
lisp にはパーサは要らないって言っているけど、
「んじゃパーサ無しでどうやってS式をパースするんだい」 って話になるんだけどどうしよう

636:デフォルトの名無しさん
05/06/26 21:31:30
>>629
ちょっと横レスすまんが、

> 旧DragonBook。

って何?新ドラゴンってあるの?
それとも21世紀本のこと?

> 後者ならO'Reilly本で足りるでしょう。

どうだろうね。俺もその本持ってるけど、
あんまり役に立つとは思えないんだけど。


637:デフォルトの名無しさん
05/06/26 23:05:19
相変わらず変なのが粘着してるスレだな。

638:デフォルトの名無しさん
05/06/27 00:20:14
>>636
初版は1977年、もう絶版だから今の若い人は知らんか。

Principles of Compiler Design
Alfred V. Aho, Jeffrey D. Ullman
Addison Wesley
ISBN 0-201-00022-9

Amazonにも画像が無かったが、ぐぐってみたら
URLリンク(www-users.cs.york.ac.uk)
の上から二番目にあるな。



639:デフォルトの名無しさん
05/06/27 04:44:46
ああ。その本なら随分前に培風館から出ていたな、Winston Lisp第一版と同じシリーズで

640:636
05/06/27 21:02:19
>>629
失礼いたしやした。
大変参考になりやした。

m(_ _)m


641:デフォルトの名無しさん
05/06/28 21:23:10
素人です。

相乗り質問で恐縮ですが、LALR(1) の1って先読みトークンの数ですよね?
このことは、YACCにシフトされているシンボルの数の最大値が1ということにはつながらないのですか?



642:デフォルトの名無しさん
05/06/28 21:26:35
素人です。

>>641
知りません。

643:デフォルトの名無しさん
05/06/28 21:27:41
っていうかマジレスすると

>YACCにシフトされているシンボルの数の最大値が1

は合っているんだっけ?

644:デフォルトの名無しさん
05/06/28 22:19:16
ヒロシです。
分からんとです。


645:デフォルトの名無しさん
05/06/29 00:10:28
>>641
そうです。
LR(k)、LL(k)のkは、高々k個の先読みでパースできる文法(のクラス)を表しています。


646:619
05/06/29 06:55:18
>>629

> 旧DragonBook。
> あれを読んでたのは大学のころだな。みんなで輪講して、手でLR(0)itemを列
> 挙して、lookaheadを求めて、表を作成して…とかやった覚えがある。

情報ありがとうございます。
でも、もう手に入らないんですね。

> ところで、LRパーサーの生成方法を知りたいの?
> それともyaccの使い方を知りたいの?
|
> 後者ならO'Reilly本で足りるでしょう。

パーサー自体の生成方法までは、とても考えが及びません。

目的としては、後者です。だとすると、
やはり、O'Reillyの本が定番なんですかね。

入手して、若い頃のようにじっくり勉強してみたいと思います。 (^^;
ありがとうございました。


647:デフォルトの名無しさん
05/06/29 07:47:49
>>646
O'ReillyってLALRの説明まではしてなかったような。
とりあえず使いたいならO'Reillyでいいけど、
yaccを使いこなしたいなら、LALRをきちんと勉強したほうがいい。
コンフリクトしたらシフト優先とか、
自分で変な書式の式を追加するときに、%left とかがどう動くのかとかは
LALRを知らないと理解できない。

648:デフォルトの名無しさん
05/06/29 08:05:26
>>641
LALR(n)だと、
「シフトするトークンは1つだけど、n個先読みしてからシフトするか還元するか決める」
という考え方と
「最大n個シフトしてみて、ダメだったらシフトしなかったことにして還元する」
という考え方ができそう。

649:デフォルトの名無しさん
05/06/29 12:40:16
LALR(k): k-token LookAhead, Left-to-right parse, Rightmost-derivation,
LL(1):   Left-to-right and Left-most Parsing

650:デフォルトの名無しさん
05/07/01 21:58:05
>>647
で、貴方のお勧めは?


651:デフォルトの名無しさん
05/07/02 21:06:34
りん(ry


652:デフォルトの名無しさん
05/07/02 21:52:02
…………… く ず れ す ……………

653:デフォルトの名無しさん
05/07/04 19:03:27
>>652
恐らく lisper w


654:デフォルトの名無しさん
05/07/04 20:28:29
↑間違いなくアンチLISPer w

655:デフォルトの名無しさん
05/07/04 21:55:27
…………… き ち が い ね ん ち ぁ く ち う 。 よ う ち ゅ う い ……………

656:デフォルトの名無しさん
05/07/05 00:54:08
>>655
お前が一番の粘着だw


657:デフォルトの名無しさん
05/07/06 21:55:12
VC++でlexファイル(lex.yy.c)をコンパイルすることはできますか?
Windows版のflexとbisonは見つけたんですが、よく考えたら
gccで-ll(flexなら-lfl)オプションを付けないとコンパイルすることができない・・・

そもそも、gccがlflで何を取り込んでいるのかがわからず。
windowsでflex&bisonを使っているひとがいれば、教えていただけないでしょうか。

658:デフォルトの名無しさん
05/07/06 21:58:34
>>657
lfl は付けなくても平気。中に入っているのは確か main 関数だけだった筈だから

659:デフォルトの名無しさん
05/07/07 12:19:19
>>657 >>658

yywrap()も入ってるよ。
以下の関数定義をどっかに入れれば大丈夫。

int yywrap(void)
{
return 1;
}


660:デフォルトの名無しさん
05/07/09 18:00:12
PHPやPerlでは、変数を $var のように表します。
「$」と「var」のあいだにはスペースを入れることができません。
ということは、字句解析でトークンに分解するときに、「$」と「var」の2つに分解するのではなく、
「$var」というひとつのトークンとして認識しているのでしょうか。
(字句解析が「$」と「var」の2つに分解すると、間にスペースを入れられると思うから。)

「$var」を認識するのに、字句解析で1つのトークンとして認識するのがいいのか、それとも
2つに分解して構文解析時に「$var」であると認識するのがいいのか、迷ってます。

661:デフォルトの名無しさん
05/07/09 18:26:38
>>660
1トークンでいいと思うが。2トークンにするメリットが特に見当たらんし。

662:デフォルトの名無しさん
05/07/09 20:03:51
1トークンと考える方が不自然。
2トークンでしょう。(Perl/PHPのソース確認してないけど)

理由:
1. Perlの場合、変数名の前に異なるプリフィクスを使う場合がある。
   例)配列宣言    @array、 配列参照    $array[index]
     連想配列宣言 %assoc、連想配列参照 $assoc{key}
 左側(配列コンテキスト)と、右側(スカラーコンテキスト)を、異なるトークンと認識したら、
 変数名管理上、トークンからプリフィクス(@, %, $)を外した名前を切り出す必要があり、
 トークンの扱いとして不自然。

2.プリフィクス(@, %, $)と、識別子(var, array, assoc)の間に空白を許すか否かは、
 単なる構文定義上の問題であり、2トークンで空白を許さない定義が可能。

                                                   いじょ

663:デフォルトの名無しさん
05/07/09 20:23:45
PHPに@や%ないじゃん

664:660
05/07/09 20:27:10
>>661
ありがとうございます。そんな気はするんですが、いまいち確信がなくて。

>>662
1.の場合でも、プリフィックスと変数名は別々に渡しませんか?
今はトークンを取得する関数gettoken()と、文字列を取得する関数getvalue()を用意していて、次のようにしています。
入力   gettoken()     getvalue()
------------------------------
'foo'   STRING      "foo"
100   INTEGER     "100"
3.14   DOUBLE     "3.14"
x     NAME       "x"
$var   VAR_SCALAR  "var"
@var   VAR_ARRAY  "var"
%var   VAR_ASSOC  "var"

(最後の2つはつけくわえてみました。)
特に不自然ではないと思うのですが、どうでしょう。自信もないですが。

2. について、「2トークンで空白を許さない」ためのうまい方法がよくわかりません。
よろしければ教えてください。

665:デフォルトの名無しさん
05/07/09 20:34:41
空白もトークンとして切り出せ

666:デフォルトの名無しさん
05/07/09 21:59:11
>>665
空白をトークンにするぐらいなら、プリフィクス込みでトークン切り出して、
プリフィクスを取り除いたシンボル名でシンボルテーブル検索した方が
楽だと思うけどなぁ。

まぁ、どっちでも動けば構わんので、あとは趣味の問題だが。

667:デフォルトの名無しさん
05/07/09 22:27:32
>>663
PHPにも
$hoge = 1;
$varname = "hoge";
echo $$varname; // => 1

とかあるけどな!


668:デフォルトの名無しさん
05/07/09 23:13:32
Perlで$$は、ポインターの値参照だったっけ

669:デフォルトの名無しさん
05/07/09 23:38:16
ああ、そうか。

Perl5 だと参照使えるから ${$foo->{'a'}} なんてのもアリなんだな。それだと
確かに字句解析レベルではプリフィクスとシンボル名を分けた方が無難だ。

670:デフォルトの名無しさん
05/07/10 00:40:01
>>665
ええっー、空白をトークンとするんですか。
構文解析がかなり面倒になるんですけど。

>>669
「$」のあとに英数字が続けば変数名、それ以外なら「$」であるというのじゃだめでしょうか。

671:デフォルトの名無しさん
05/07/10 00:44:50
>>664
了解。1トークンで充分だと思う。

Perlの

672:671
05/07/10 00:46:02
>>664
了解。1トークンで充分だと思う。

Perlの $って、Cのポインタ演算子みたいな扱いするから、誤解した。

673:デフォルトの名無しさん
05/07/10 00:47:00
>>670
そもそも「Perl5 のようなスカラー・配列・ハッシュ、さらにその参照を任意に
組み合わせてデータ構造を作れるような言語にするのか?」ってトコロから
考える必要があるかと。

単に $foo, @foo, %foo, $$foo ぐらいで済む程度の文法なら 670 の案や
1トークン方式で良し。Perl5 フルコンパチにしたければ変数関係だけで
{}, [] の のネストが発生するので、ネストは正規言語では処理できない
ことを考えると、ある程度は構文解析に逃がした方が楽そう。

674:デフォルトの名無しさん
05/07/10 21:13:41
いずれにせよ、スレ違い
Li(ry)


675:デフォルトの名無しさん
05/07/10 21:17:02
LISPなら字句解析も構文解析も要らないのに。

676:デフォルトの名無しさん
05/07/10 21:24:23
すまん。素でわかんないんだが、「LISP は字句解析が要らない」ってのは
    1.0
ってのが出てきたとき、それがシンボルか数値かリストかどうかを判断しなくても良いってことなのか?

あと、「LISP は構文解析が要らない」ってのは、カッコの対応が取れて無くても気にしないってことなのか?

677:デフォルトの名無しさん
05/07/10 21:27:15
>>675-676 ネタ決定

678:デフォルトの名無しさん
05/07/10 21:56:58
字句解析がいらない
→入力をreadするとS式が出てくる

構文解析がいらない
→S式をevalすると結果が出てくる

679:デフォルトの名無しさん
05/07/10 22:00:33
それは要らないんじゃなくて、組み込みになってるだけじゃないの
自分で一から作るなら、どっちも必要でしょ

680:デフォルトの名無しさん
05/07/10 22:15:01
自分で一から作るつもりならLISP必要ないよ

681:676
05/07/10 22:25:03
なんかよく分かった。そりゃ必要ないよな LISP 側で全部用意してもらえてるんだし

682:デフォルトの名無しさん
05/07/10 22:32:57
あえてLISPを使う意味は中間形式としてS式で処理できるからじゃないかと
S式に優位性を感じないなら必要ない

683:デフォルトの名無しさん
05/07/10 22:34:15
昔prologスレで見た流れだ。
prologインタプリタをprologで書ける人とCで書ける人ではどちらが優れているか?

684:デフォルトの名無しさん
05/07/10 22:44:38
>>678
つまんねぇネタ。

685:デフォルトの名無しさん
05/07/11 01:56:10
ネタに見えるのか。

686:デフォルトの名無しさん
05/07/11 03:28:22
>>685
お前が言わんと欲する所が、あまりに陳腐過ぎて、
細かい説明するのが面倒つうこと。

687:デフォルトの名無しさん
05/07/11 06:30:49
Lisper は他でやってくれ


688:デフォルトの名無しさん
05/07/11 11:37:21
そのLIPSぐらいしか話題ないってことなんじゃないの。

689:デフォルトの名無しさん
05/07/11 16:37:20
>>688
燃料投下(>>674)までの流れを見た上で言ってるのか?

690:デフォルトの名無しさん
05/07/11 18:35:40
燃料に見えるのか。

691:デフォルトの名無しさん
05/07/11 18:55:26
688はキヤノン社員

692:デフォルトの名無しさん
05/07/11 19:22:03
ここはLisp擦れ


693:デフォルトの名無しさん
05/07/11 19:49:05
内部イテレータのある言語を設計してみたいと思ってるんですが、
Ruby以外に内部イテレータを持ってる言語って何がありますか?
Rubyの内部イテレータではなく、一般に内部イテレータとは
匿名関数と本質的にどの点で違うものなんでしょうか。

694:デフォルトの名無しさん
05/07/11 20:15:01
「Rubyの内部イテレータ」について説明してくれたら答えられるかも。

695:デフォルトの名無しさん
05/07/11 21:29:03
>>693
>Ruby以外に内部イテレータを持ってる言語って何がありますか?
このスレでさんざん出てきてるLISPというやヴぁい言語のインライン関数が元ネタ。
Rubyで内部イテレータとわざわざ限定してるのは対象データの
コンテナを抽象化して取り出すことを目的にしてるからじゃないかと。

>一般に内部イテレータとは匿名関数と本質的にどの点で違うものなんでしょうか。
質問の意図が不明だけど、まず役割が違うでしょ。
内部イテレータに匿名関数(ブロック)を渡してぶん回すんだし。
匿名関数側は取り出す要素の構造以外知らなくていいし、
内部イテレータはぶん回すコンテナの構造以外知らなくていい。
外部イテレータとの違いはここにある。



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

5007日前に更新/221 KB
担当:undef