「コンパイラ・スクリプトエンジン」相談室16 (649レス)
「コンパイラ・スクリプトエンジン」相談室16 http://mevius.5ch.net/test/read.cgi/tech/1405822579/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
504: デフォルトの名無しさん [sage] 2016/04/22(金) 20:39:29.07 ID:FoP6yTJa 誰がもこみちにそれているねん!! (´・ω・`)b http://mevius.5ch.net/test/read.cgi/tech/1405822579/504
505: デフォルトの名無しさん [sage] 2016/04/22(金) 20:40:58.67 ID:FoP6yTJa >>502 スクリプト言語を利用してスクリプトを作っているという意味か? それとも自分でスクリプト言語の仕様決めて実装設計しているということか? http://mevius.5ch.net/test/read.cgi/tech/1405822579/505
506: デフォルトの名無しさん [sage] 2016/04/22(金) 21:49:45.09 ID:cAq2nbH2 スレタイ嫁 http://mevius.5ch.net/test/read.cgi/tech/1405822579/506
507: デフォルトの名無しさん [sage] 2016/04/22(金) 23:35:58.89 ID:Eun++jyx >>505 後者の実装にスクリプト言語使っても問題はないんじゃなかろうか? http://mevius.5ch.net/test/read.cgi/tech/1405822579/507
508: デフォルトの名無しさん [] 2016/04/23(土) 07:12:36.15 ID:FJYQwL85 ここで産まれたスクリプトあんの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/508
509: デフォルトの名無しさん [] 2016/04/23(土) 12:40:11.44 ID:OaaA/Nov 秀丸は、スクリプトを自作するときの参考になるのかね? 一応、役に立ったことは事実だが。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/509
510: デフォルトの名無しさん [] 2016/04/23(土) 18:35:58.00 ID:vG+aKQwy 禿丸エディタを何の参考にする気だ http://mevius.5ch.net/test/read.cgi/tech/1405822579/510
511: デフォルトの名無しさん [] 2016/04/24(日) 00:18:07.79 ID:dKv+k22E 秀丸は、「作業の自動化スクリプト」を書くのに便利だからな。 その仕様を元にすれば、スクリプトを自作するのに役に立つのではないかと 思ったのだが。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/511
512: デフォルトの名無しさん [] 2016/04/24(日) 01:48:37.36 ID:M7ZCbRga 「作業の自動化スクリプト」専用のスクリプトならgradleあたりが参考に良さそうだな ちなみに俺はantは好きだけどmavenは大嫌い http://mevius.5ch.net/test/read.cgi/tech/1405822579/512
513: デフォルトの名無しさん [sage] 2016/04/25(月) 02:57:23.38 ID:ouB2BnTZ まあ秀丸はテキスト処理に特化した 自動化スクリプトの参考にはなるかもね あれはスクリプトっていうよりマクロだけど http://mevius.5ch.net/test/read.cgi/tech/1405822579/513
514: デフォルトの名無しさん [] 2016/04/25(月) 10:50:38.19 ID:9hQeUDgV しかし秀丸には、CやWindows APIの命令が、多数というか、 かなり含まれている感じだが。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/514
515: デフォルトの名無しさん [] 2016/04/25(月) 17:05:01.77 ID:lstHaTya だからなんだよって感じだが。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/515
516: デフォルトの名無しさん [sage] 2016/04/25(月) 17:27:42.97 ID:ouB2BnTZ そのまま車輪の再発明をしてしまうと 元の秀丸を使った方が便利だから 自作スクリプトを秀丸と差別化する必要はある http://mevius.5ch.net/test/read.cgi/tech/1405822579/516
517: デフォルトの名無しさん [] 2016/04/26(火) 03:16:17.88 ID:r83feNEN そうか。秀丸に存在しない命令を考えなければならないな。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/517
518: デフォルトの名無しさん [] 2016/04/27(水) 00:31:37.93 ID:Toh8P/+A 相変わらず手書きパーサー書いてるが、できるだけ1発でパースしつつ(LR法?) 外側から順に何度も段階分けながらパースする(LL法?)なコードも混じってる… 意味解析までたどり着くまでで力尽きそうw http://mevius.5ch.net/test/read.cgi/tech/1405822579/518
519: デフォルトの名無しさん [sage] 2016/04/27(水) 06:02:05.40 ID:vmi3tpS2 よほどの理由がないなら手書きなんかやめといた方が Bison GLR 使ってた時は不自由さがなくてよかった semantic predicate 機能は成熟しただろうか http://mevius.5ch.net/test/read.cgi/tech/1405822579/519
520: デフォルトの名無しさん [sage] 2016/04/27(水) 07:02:50.92 ID:h/kgFFlp 趣味でやってるんだろ ほっといてやれや http://mevius.5ch.net/test/read.cgi/tech/1405822579/520
521: デフォルトの名無しさん [] 2016/04/27(水) 23:38:58.25 ID:Toh8P/+A 手書きパーサー製作も残すは四則演算&関数呼び出しとなったが ツリーの形状はこんな感じで良いのだろうか? https://pastebin.mozilla.org/8868990 >>519 本よむところから始めるのはしんどいのでな・・・ http://mevius.5ch.net/test/read.cgi/tech/1405822579/521
522: デフォルトの名無しさん [] 2016/04/28(木) 00:23:38.80 ID:mWNt94gr 関数呼び出しだとこれでいけそう https://pastebin.mozilla.org/8868995 小さな計算でもツリーが深くなってnew()するノードの数がもりもり増えるけど 何かもっと良い方法あったら教えてちょ http://mevius.5ch.net/test/read.cgi/tech/1405822579/522
523: デフォルトの名無しさん [sage] 2016/04/28(木) 12:59:47.77 ID:Jc879At1 手書きパーサなら 木構造にせずに操車場アルゴリズムかその亜種でLL(1)するのも手だぞ。 文法と文をそれぞれ入力したらテーブル作ってLR(1)するクラスを作るって手もあるけど 大真面目に書いてc++で500行〜1000行くらいにはなったと思う。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/523
524: デフォルトの名無しさん [] 2016/04/28(木) 14:16:09.66 ID:7cooGRk/ lexとyaccは、既存のものを使うべきか、自作すべきか、悩ましいね。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/524
525: デフォルトの名無しさん [sage] 2016/04/28(木) 15:44:59.86 ID:Jc879At1 yaccは、やる気と暇があるなら どういう文法なら曖昧性が無いか、とか、shift/reduce conflictとdangling elseとは何か、とか いろんな事についてよく理解できるようになるって点で一度試しに書いてみる事をお勧めしたい 今までに俺が余暇でC実装した名の付いたアルゴリズムの内だとかなり難しい部類に入るけどな。 lexは文法全く固まってないなら使ったらどう?って程度じゃない? 割と簡単に使えるけど、同じくらいとは言わないものの簡単に自作できるし ASCII範囲の
文字は簡単に指定できるけどUnicodeなんかに対応する為にカスタムコードを挟むなら普通に全部組んだほうが楽な事もあるし。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/525
526: デフォルトの名無しさん [sage] 2016/04/28(木) 15:46:10.30 ID:Jc879At1 個人的にはPEGが気になるのですよー http://mevius.5ch.net/test/read.cgi/tech/1405822579/526
527: デフォルトの名無しさん [sage] 2016/04/28(木) 18:30:43.97 ID:FI1Tv7gT コンパイラを作るはずがコンパイラジェネレーター作りがメインになってしまう不思議 http://mevius.5ch.net/test/read.cgi/tech/1405822579/527
528: デフォルトの名無しさん [sage] 2016/04/28(木) 18:36:57.28 ID:Jc879At1 そして思うのだ コンパイラジェネレータを書くのに向いてる言語とは・・・・・・ http://mevius.5ch.net/test/read.cgi/tech/1405822579/528
529: デフォルトの名無しさん [sage] 2016/04/28(木) 22:17:59.57 ID:mWNt94gr >>523 そうだな。ここだけツリーにしないで、再帰関数で直接出力すれば良さそうだ http://mevius.5ch.net/test/read.cgi/tech/1405822579/529
530: デフォルトの名無しさん [] 2016/04/29(金) 05:30:33.58 ID:o23yQzXI バイトコードのテキストを読み込んだら バイトコードの1行と対の関係になる命令ノードを 行数だけ配列にして上から順に実行するイメージであってる? なんか構文木のまま実行するのと大して変わらない気がするけど メモリの節約とかどうなんだろう http://mevius.5ch.net/test/read.cgi/tech/1405822579/530
531: デフォルトの名無しさん [sage] 2016/04/29(金) 10:04:10.82 ID:GdtJdaFL バイトコードのテキストってのが若干意味不明だが バイトコードならアセンブル(バイナリ化)しておかないか普通 a = b + c * d を二分木のASTで (st (ldptr local[0]) (add (ld local[1]) (mul (ld local[2]) (ld local[3])))) みたいに格納して、ポインタ1つあたり64 bits、ノード構造体のサイズが24 bytesと仮定して glibc mallocを使うことを仮定して全部で32 bytes * 7 = 224 bytesのヒープを消費する。 一方でレジスタ型VMを仮定して、簡単の為に1命令32 bits固定
長とすると、例えば ldptr r0, local[0] / ld r1, local[1] / ld r2, local[2] / ld r3, local[3] / mul r4, r2, r3 / add r5, r1, r4 / st r0, r5 の7命令で与式が表現できるから、 配列の中身の長さが2^nに拡大されて予約される事を仮定すると4 bytes * 8 = 32 bytes これに配列の管理領域が2ワード16 bytes、 glibc mallocを使うことを仮定すると2箇所の領域の管理で2ワード16 bytes必要で 合計で64 bytesのヒープを消費する。 ただ、配列には配列の問題点と言うかでっかい領域を再確保するのが難しい事があるから 文単位ではリストや木を、式単位
では配列を使うってのがインタプリタとしては良いんじゃないかなとは思う。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/531
532: デフォルトの名無しさん [] 2016/04/29(金) 13:14:44.61 ID:mG1yRheY コンパイラ作りって、インタプリタよりも、10倍の労力がかかるよな。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/532
533: デフォルトの名無しさん [sage] 2016/04/29(金) 15:48:32.50 ID:qwAEwLKu この辺はlispやschemeで思索しながらやると楽なんだよ http://mevius.5ch.net/test/read.cgi/tech/1405822579/533
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 116 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.024s