[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2ch.scのread.cgiへ]
Update time : 07/24 14:25 / Filesize : 172 KB / Number-of Response : 672
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 11:16:19.37 ID:p6eMVAxc.net]
プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

Wikiのまとめページ
www6.atwiki.jp/compilerandscriptengine/

152 名前:デフォルトの名無しさん [2014/12/10(水) 21:57:46.01 ID:dcz7kjCK.net]
指導教授に聞けば。

153 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 22:28:57.42 ID:ZSLSh1LL.net]
www

卒研なら自分で考えいw

154 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 22:32:59.96 ID:eXNtCHKb.net]
>>146
まさか卒業研究の本体がなんの新規性もない構文解析なわけじゃないだろう。
それが本質的な部分じゃなければ人に手伝ってもらうのもありだよ。

もし、構文解析そのものが君の卒業研究なら……
楽してでっち上げるという考えは即座に捨てて、143のいうようにちゃんと勉強して理解しな。

155 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 22:55:57.69 ID:Lctd7lUm.net]
卒研かよ
フォローして損した

156 名前:117 mailto:sage [2014/12/10(水) 23:23:29.27 ID:pQyEQrGQ.net]
>>147
Javaの研究室ではありますけど、先生は構文解析などの経験はないそうなので・・・。
ゼミのときに負の数と引き算の問題も一応聞いてみたんですけど、
残念ながら大したアドバイスをもらえませんでした。

ちなみに、研究室ではネットワーク関連のことやってる人が多いです。

157 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 23:27:11.16 ID:bWIayA6r.net]
うーん、その卒業研究、どこか新規性あるの?

158 名前:デフォルトの名無しさん [2014/12/10(水) 23:46:18.31 ID:lFxVBhH5.net]
文法を作ることの難しさを理解できていないんだよ。
嘘ではなく、本当に難しい。

実用性は無くとも理論通りに動作する生成系を自分で作るのは絶対必要。
遠回りに見えるだろうけど、これが最短の道なんだよ。

「俺の考えた言語」の文法をきちんと作れるなら、生成系程度すぐ作れる。
その逆は無いよ。

何か考え違いをしてるんだと思う。
文法程度すぐ作れるけど、生成系を作るのは難しいと思っていそう。
まるっきり逆。

159 名前:デフォルトの名無しさん [2014/12/10(水) 23:48:44.51 ID:lFxVBhH5.net]
さらに言えば、理論通り動く生成系を作っても、それは実用性を持たない。
学習のために作るんだ。

実用には、既存の生成系を使うんだよ。

そういう順番が良い。

160 名前:117 mailto:sage [2014/12/11(木) 00:04:58.83 ID:TxaNdaYp.net]
>>148 >>150
すいません・・・。

>>149 >>152
"こういうところが新しいです"
と言える自信はありません・・・。 すいません。
一番の理由は"自分で作ってみたい"と思ったからです。
あと、先生に止められることもなかったですし。
構文解析が目的と言うよりは、半分ノリで付けてしまったテーマが
「初めでも使いやすい日本語で書けるプログラミング言語を作る」
なんてテーマです。
"日本語なら初めてでもとっつきやすいかな?"なんて安易な考えで
「初めてでも」なんてつけて付けてしまいました。
構文を考える上で自分で後悔してたりします;

>>153
文法を考えるのも構文規則を作るのも楽なものではないと思ってます。
それよりも構文解析器を作るほうが難しそうと感じてしまっているのは事実です。



161 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 01:55:24.44 ID:pP5Pqqse.net]
>>153=154が優しく言ってくれてる
あなたが本当に本気なら明日にでも図書館行って、ドラゴンブック借りるといいよ
難しいけど必ず価値はあるから

162 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 06:06:17.74 ID:sSshpgwI.net]
数学の知識もないのにアンチョコ片手にMathematica使えば何でもできると思ってるようなもんだな。まあ、無理。

163 名前:117 mailto:sage [2014/12/11(木) 07:22:36.95 ID:TxaNdaYp.net]
>>156
プログラミングの棚にはなかったと思うんですけど、
とりあえず今日大学の図書館探してみます。
「ふつうのコンパイラをつくろう」の方は図書館にも置いてあったので。

164 名前:デフォルトの名無しさん [2014/12/11(木) 07:41:13.71 ID:JXHpp2tS.net]
空気読め

165 名前:117 mailto:sage [2014/12/11(木) 17:45:33.30 ID:TxaNdaYp.net]
ドラゴンブックは残念ながら大学の図書館にはありませんでしたが、
市内(他区)の図書館にはあるとのことなので取り寄せて読みます。
1万円ほどの本を買うには残念ながらお金がないもので・・・;

他に大学にあった以下のコンパイルの本び中でおすすめってありますか?
コンパイラの基礎 / 徳田雄洋著
命令レベル並列処理 : プロセッサアーキテクチャとコンパイラ / 安藤秀樹著
コンパイラ入門 : 文法から設計・製作まで / 小田一博著
Cコンパイラ設計 : yacc/lexの応用 / A.T.シュライナー,H.G.フリードマン 著 ; 矢吹道郎 〔ほか〕訳
超並列処理コンパイラ / 村岡洋一著
コンパイラ / 疋田輝雄 著
DIANA入門/言語仕様/応用 : Adaコンパイラ実現のための中間言語
やさしいコンパイラの作り方 / 中西正和 共著 ; 大野義夫 共著
新言語作成の技法 : オリジナル・コンパイラ / 大貫広幸 著
N88日本語BASIC(86)コンパイラ活用法 : Personal computer MS-DOS版 / 肥田野登 著
コンパイラの技法 / 中田育男 著
コンパイラのうちとそと / 島内剛一ほか共著
コンパイラの設計と構築 / Arthur B.Pyster 著 ; 松尾正信 訳
コンパイラの技法 / F.R.A.ホップグッド著 ; 首藤勝, 関本彰次共訳
コンパイラ構成法 / 原田賢一著
コンパイラ : プログラム言語処理の基礎 / 井上謙蔵著
コンパイラ設計技法 : 理論と実践 / T. ピットマン, J. ピーターズ著 ; 今泉貴史訳
dBASE ・ PLUSコンパイラ & アセンブラ ゜ / 桑村幸雄,池端良一 著. -- 2版
コンパイラ・コンパイラ / 井上謙蔵著. -- 産業図書, 1970.
Let's C(Ver3.0)プログラミングハンドブック : MS-DOS用Cコンパイラ / PMC研究所 編
やさしいコンパイラの作り方 / 中西正和,大野義夫 共著
Microsoft QuickC コンパイラ Ver.2.0 ランタイム ライブラリ リファレンス
コンパイラ作成の技法 / David Gries著 ; 牛島和夫訳
コンパイラ / 中田育男著

166 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 18:35:53.94 ID:yZEE5pFs.net]
文芸的なcobol+日本語ななでしこ?
>>160
あるなら手にとって読んでみればいいのに
アドバイスはできないすまん

167 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 18:43:18.72 ID:tbxqmm74.net]
>>160
中田先生の本は良い本(というか国内で学者が書いてる数少ない本)
買うかどうかとは別に読んで損はしない。

先生は多忙なのか執筆が遅いので最新を追うとちょっと遅れるけど

168 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:08:42.05 ID:O2yGUM7o.net]
>>143
んなアホな

169 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:21:08.66 ID:ED9Fc+9a.net]
中田本は結構いいね。でもドラゴンブックも読んどくべきだけどね。

170 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:26:34.20 ID:URNWWvBk.net]
ドラゴンブックに限らずあの手の堅い文章は頭に入りにくい



171 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:51:29.95 ID:HAPX7Bnj.net]
>>162
> 先生は多忙なのか執筆が遅いので最新を追うとちょっと遅れるけど

まだ執筆してるの?
最初に買った真っ白表紙のコンパイラなんて 30年以上前だったのに

172 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:58:28.23 ID:hXJaCtwW.net]
やさしいコンパイラの作り方と
コンパイラのうちとそとは
読み物として面白い。
でもたぶん(今じゃ)なんの役にも立たないw

173 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:22:50.68 ID:tbxqmm74.net]
>>166
2011年が最後かな
言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで
ってのをオライリーから共著で出してたはず

でも一番読み応えあるのは1999年発行の
コンパイラの構成と最適化
だと思う、この本はドラゴンブックと一緒に是非買うべきって

174 名前:言っても良い []
[ここ壊れてます]

175 名前:117 mailto:sage [2014/12/11(木) 21:35:13.25 ID:TxaNdaYp.net]
>>161
>文芸的なcobol+日本語ななでしこ?

cobolやなでしこは使ったことないのでわかりませんが、
私は英語を用いた言語よりはわかりやすいと思います。
コメント文での説明が要らないかどうかは作るものによりますけど。

>あるなら手にとって読んでみればいいのに

いろんな図書館に点々としてるそうで、
中にはどこにあるのかわからない図書館にある本だったりも・・・;
ちなみに、上げた24冊のうち私の工学部の校舎にある図書館に絞ると3冊しかないそうです。

>>162 >>164
中田先生の本読んでみます。
ドラゴンブックの方も取り寄せが届いたら読みます。

>>167
面白いならその2冊も読んでみます。

176 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:37:16.34 ID:Q8kAUXaJ.net]
>>167
> やさしいコンパイラの作り方と
> コンパイラのうちとそとは
> 読み物として面白い。

両方読んだ気がするが、内容覚えてないわ

> でもたぶん(今じゃ)なんの役にも立たないw

色々な人を呼び込むと言うのも、重要な役目だと思う
誰か「漫画で読むコンパイラ」とか書かないかなぁ w

177 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:40:57.95 ID:KrH9mSC/.net]
まともにやる気あるなら、その中のどれでも一つ真剣に取り組めばいいよ。

迷うのはそれからでも遅くない

178 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:42:20.07 ID:tbxqmm74.net]
>>170
麻宮騎亜がアップを始めたようです。

179 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:57:20.15 ID:JvQXLAia.net]
CPUの創り方が萌えキャラで出る時代だから
コンパイラ版が出る日も近いな

180 名前:デフォルトの名無しさん mailto:sage [2014/12/12(金) 03:52:20.71 ID:yYnp70gr.net]
疲れた時は白と黒のとびらとか。読み物だけど



181 名前:デフォルトの名無しさん mailto:sage [2014/12/13(土) 11:59:00.15 ID:KEKavmkB.net]
>>168
共著じゃなくてAntlrの作者が書いた本の監訳だよ

182 名前:名無しさん@そうだ選挙に行こう mailto:sage [2014/12/13(土) 19:31:14.67 ID:LmsGKyNP.net]
正直ドラゴンブックって内容はともかく説明はとても優しいよね
洋書はIT系に限らず懇切丁寧な事が多いと思う

183 名前:名無しさん@そうだ選挙に行こう mailto:sage [2014/12/13(土) 22:13:39.97 ID:aWFoLZL3.net]
虎も仲間に入れてやってください
サンプルがアレだが

184 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 11:19:23.48 ID:cYd/ZsDZ.net]
kmoriさん亡くなったって。

185 名前:デフォルトの名無しさん [2015/01/19(月) 11:34:19.54 ID:CzsUjspG.net]
yaccの一実装書いてた人か。南無

https://web.archive.org/web/20080206191946/d.hatena.ne.jp/kmori58/20060702/p3

186 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 15:30:26.84 ID:cYd/ZsDZ.net]
kmyaccも有名だが、「LSI-Cの作者の一人」だった。

187 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 21:04:04.33 ID:wHr1vYS1.net]
熊ヤックと読んでいた

188 名前:片山博文MZ ◆T6xkBnTXz7B0 [2015/02/18(水) 16:40:51.07 ID:9VF3MRJc.net]
C++11の正規表現でCのスキャナーをスマートに書きたい。
しかし、コメントの扱いがややこしく、また、行番号の情報を取得する必要がある。
一行ごとに読み込むべきか、従来どおりトークンに切り分けて読み込むべきか。
全部をいっぺんに読み込んで'\n'でsplitする方法は実行時のメモリーと時間がかかると思う。
どういう戦略にすべきか?

189 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/18(水) 17:03:37.74 ID:9VF3MRJc.net]
改行に特別なトークンを割り当てて、すべてのトークンを読み
込んだ後でトークンに行番号をつけてから改行のトークンを取り除くという
方法についてはどう思いますか?

190 名前:デフォルトの名無しさん mailto:sage [2015/02/18(水) 21:19:15.31 ID:po3oOzQK.net]
Cってマクロとかインクルードとか有るん?



191 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/19(木) 01:08:43.02 ID:XXveEoOV.net]
マクロやインクルードは、プリプロセッサーがやってくれるよ

192 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 12:19:19.08 ID:b9Ke1XGw.net]
プリプロセッサーの展開後の行番号って要るのかね?

193 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 19:51:00.22 ID:rp3PUwqb.net]
無かったらエラー表示するとき不便だろ

194 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 21:27:05.57 ID:wg16DBik.net]
展開後の行番号の方がいらなくね?

プリプロセッサ文てコンパイラ側でも処理するよね?
#line とか

195 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 21:31:56.28 ID:uOq48O3O.net]
コメントはプリプロセサで置き換えたらいかんのか

196 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 01:08:42.33 ID:XnZFjwve.net]
SmalltalkのVM上にJavaVMを構築してんだけど、
VMの話もここで良いんだよね。

197 名前:デフォルトの名無しさん [2015/02/21(土) 12:59:06.48 ID:eVOI8zE3.net]
OK

198 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 23:58:08.89 ID:bst4VCEg.net]
>>182
Cのスキャナって正規表現だけで表現できるんか?(構文解析しないで良いエディタのhilightingとかは大丈夫だけど)

199 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 01:27:09.68 ID:0QFgdJ2i.net]
>>191
了解。

SmalltalkのVM上でDalvik VM用のclassも動かしたいんですが、
いちいちDalvik用のVMまで作るのがメンドイです。
Dalvik用のclass形式からJavaVM用のclass形式に変換するオススメのLibraryを教えて下さい。
Libraryの言語はSmalltalkに書き直しますので何でもいいです。

200 名前:デフォルトの名無しさん [2015/02/23(月) 17:30:23.57 ID:FikKUZMK.net]
>>192
scannerってlexerの一部。
lexer=scanner+tokenizer



201 名前:デフォルトの名無しさん [2015/02/23(月) 17:38:19.44 ID:FikKUZMK.net]
>>193
JEBはDalvikのdecompilerだから、コンパイルすればJVMのbytecodeに出来る。
https://www.pnfsoftware.com/

202 名前:デフォルトの名無しさん [2015/02/23(月) 17:41:10.47 ID:FikKUZMK.net]
javaで書いたDalvikのVM
www.eflow.jp/topics/090317.html

203 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 22:14:05.07 ID:Fe2dvIpV.net]
C++で完結するって所に惹かれてboost::spiritを試してみたが…、これは死ねる。

204 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 01:43:04.58 ID:f8A7qwV2.net]
共通部分式の除去のやり方がわかんねえ
定数伝播、四則演算も含む組み込み関数の畳み込み、使わない変数の除去、
ループ展開等を同じパスでやってるんだけど
共通部分式の除去とそれをやるのに必要な不変式の判定はまた別でやった方がいいのかな
不変式かどうかはループ最適化でも使えそうなんだけど混乱してきた

205 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/24(火) 08:04:58.95 ID:UGr8Bbp/.net]
>>198
ある計算式eについて、eの部分式を互いに参照するエントリーとして再帰的にテーブルに登録する。
登録するときにソートと重複チェックを行えば、テーブルは一意化できる。
テーブルの各エントリーの参照構造は、木構造のノードを成す。

206 名前:デフォルトの名無しさん [2015/02/24(火) 11:33:08.23 ID:wemgVVUb.net]
>>198
式の属性に関する再帰方程式の近似解をニュートン法のように求めること、
これがデータフロー計算解法の本質と理解できてないんじゃない?
ドラゴンブックのavailable, killedの説明の所読んでみれば?
同じパス内でループしながら収束するまで計算するのよ。

207 名前:デフォルトの名無しさん [2015/02/24(火) 11:35:18.85 ID:wemgVVUb.net]
ドラゴンブックのどの節か書こうとしたけど本が見つからない...
とりあえず、ここのp.10から。
dragonbook.stanford.edu/lecture-notes/Stanford-CS143/20-Optimization.pdf

208 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 17:44:49.00 ID:H95vOz7j.net]
>>199
そのテーブルに式を入れるときその式が不変かどうかを判断する部分でわからなくなってくる

>>200
ほとんど読んでないドラゴンブック見たら最適化部分についても書いてるな
これ読むの辛いな
頑張って読んで出直すか

209 名前:デフォルトの名無しさん [2015/02/24(火) 17:53:23.22 ID:avE+zAm1.net]
多分ちゃんと読んだ方がかえって早い。

共通部分式A,Bがあって、例えばBの方の除去をやると、
Bの到達性がAの到達性にも付与される。
このことは他の属性に影響を及ぼしうる。
よってもう一度計算をしないとより正確な属性を求められない。
以下ループ。
よって収束するまで繰り返すことになる。

210 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 18:04:39.54 ID:H95vOz7j.net]
変化がなくなるまで最適化処理を繰り返すのはわかった



211 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 19:26:42.04 ID:wUDy2moe.net]
>>197
コンパイル時間がか?

212 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/24(火) 20:45:40.84 ID:UGr8Bbp/.net]
__declspecとか__attribute__などをパースできないと正確な構造体型のサイズ
を求めることができない。しかしattribute周りの文法がメチャクチャやなあ。

213 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/03/03(火) 01:05:04.60 ID:t6l1EelO.net]
次は"typed value"の扱いだな。定数にも型がある。型付きの値を
扱えなければ、正確な定数値を求めることはできない。

214 名前:デフォルトの名無しさん mailto:sage [2015/03/03(火) 04:49:45.03 ID:ZU1MaIS8.net]
最適化なんてイラナイよね、何処まで処理系に依存する気なんだよw

215 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 14:52:45.39 ID:u8r5MR2m.net]
初心者だがHSPって凄いね
自分でHSPみたいなの作ろうとすると途端につまづくw
内部でメッセージハンドルに登録していく言語だと思うんだけど
こんなにwinを感じさせない文法でwinと親和性高く作れるとは

216 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 17:15:18.44 ID:8c6PRT7L.net]
ランタイムの機能の量で躓くならともかくあの文法でつまづくなら>>1で概要把握して本読めば

217 名前:デフォルトの名無しさん [2015/03/09(月) 14:52:03.75 ID:MIZIuI1f.net]
文法とOSに何の関係が?

218 名前:デフォルトの名無しさん mailto:sage [2015/03/09(月) 16:12:25.65 ID:J8WIpDef.net]
いただきジャンガリアンに辛酸をなめさせられたのだろうよ

219 名前:デフォルトの名無しさん mailto:sage [2015/03/09(月) 17:25:40.74 ID:VM1FVYaf.net]
うーん初心者だから言い方わかんないんだけど
コマンドプロンプトのスクリプトってコマンドに従って単に実行していくだけだよね
でもwinだと実行されるのは素直に考えるとメッセージが来たとき
cでウインアプリつくるときはメッセージ毎に処理を書くけど上から順に読むスクリプトは
それはできないわけだからどう整合性取るのかなってことで悩んでた

結局メッセージ毎にリストがあってコマンドを読んだらそのリストに関数ポインタ名で追加、
メッセージ毎に呼ばれる関数はその種別のリストを上から順に実行していく
こんな感じで作ったけどこれでいいのかな

220 名前:デフォルトの名無しさん [2015/03/12(木) 21:28:48.21 ID:BlO2EFmA.net]
そりゃ文法じゃなくて実行モデルだな。
イベント駆動ってことでしょ。



221 名前:デフォルトの名無しさん [2015/04/13(月) 21:09:38.60 ID:qtTodoaL.net]
「Cのコンパイラなら何日かかけて作っても良いが、C++は、一人で
作るのは嫌だ。文法をきちんとカバーするのに日数がかかりすぎるから」
と言われたよ。

222 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 02:22:50.19 ID:eOWj6Ffd.net]
javaに近い構文の言語をつくろうとしてるんだけど、
ようやくchar配列に変換したソースから関数の外側を構文解析できた。

山括弧<>、文字列リテラル、コメントに気をつけつつ、
なんとか関数の中を無視してクラス・変数・関数の名前や型名を取得して
関数の中身にとりかかるところ。

関数の中身は丸括弧()が難関になりそう。
AAAA bbbb = ((HHHH)cccc.dddd.eeee(ffff.gggg(), jjjj)).iiii();
bbbb.kkkk = -10/(8-3)-9/-3

223 名前:デフォルトの名無しさん [2015/04/22(水) 20:33:48.48 ID:rBARkljm.net]
>>216
まるで違う言語に見えてしまうのだが。

224 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 21:30:55.14 ID:eOWj6Ffd.net]
>>217
最初はクラス名、メンバ変数、メンバ関数を全部調べてからじゃないと
関数の中身に取り掛かれないと思ってた。

でもクラス名・変数名・関数名に区別は不要で、記号をヒントに階層を分解して、
それから型名の存在の有無・整合性を調べるという風にフェーズを分けれそう。

でも()が演算の優先順位、型キャスト、メソッド...どれに使われているのか
区別できるかは不安。for文とかは最初に予約語が入るからやりやすそうだけど。

Person person = ((Factory)group.cache.getFactory(provider.getResource(), url)).create();
person.id = -10/(8-3)-9/-3;

225 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 22:59:19.66 ID:LKLiXgla.net]
いまいち分からないけど、識別子の次にあったら関数呼び出しで
それ以外は式とかでいけないの

226 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 23:28:51.38 ID:eOWj6Ffd.net]
いけるか分からない。とりあえずやってみるってところ

227 名前:デフォルトの名無しさん mailto:sage [2015/04/23(木) 08:14:58.39 ID:+O6VWDUu.net]
>>219
構文次第
てか、普通識別子に続くカッコを見て初めて関数/メソッドってわかるわけだし

228 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 01:02:40.49 ID:RiYFohCl.net]
メソッドの中が上手くいかんというか何から始めたら良いのか分からん
コンパイル速度が遅くなるけど、分解フェーズを何層にも分けて
何度もループで調べていけば良いのかな

229 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 06:59:39.15 ID:EFAP6joI.net]
コンパイラの教科書の一冊でも読んで構文解析を勉強してみ

230 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 09:38:16.26 ID:ZDDsb7dY.net]
C系のクソみたいな構文ルールをそのまま真似てどうすんの
自作なら作りやすいようにキーワード追加すればいいのよ

キャスト式にキーワード付けなかったのは最大の誤りの一つ



231 名前:デフォルトの名無しさん [2015/04/27(月) 09:56:10.90 ID:qDIHhHi0.net]
SSA形式からスタックマシンのコード生成の最適化みたいなのに参考になる文献ってないかな?

232 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 14:22:00.53 ID:RiYFohCl.net]
>>224
そうだね。HaxeとかFlashからぱくって、C形式のキャストは無くしてみるわ
int i = cast Integer ( 0.005f );
int i = 0.005f as Integer;

233 名前:デフォルトの名無しさん [2015/04/28(火) 18:20:14.24 ID:PlNb5vya.net]
最終的に何を目指そうかしら

1)LLVMで動かす 
→ 超難しそう

2)Luaのように組み込みスクリプトとして動かす 
→ 重そう。メモリ管理は全部ウィークポインタで良いのかな
(C/C++組み込みならnew&deleteするようなスクリプトでも良さそう)

3)JavaScriptなどに変換 
→ たぶん例外のバックトレースとかを変換するデバッグ環境が必須

234 名前:片山博文MZ ◆T6xkBnTXz7B0 [2015/05/05(火) 23:02:55.34 ID:p1RbtT4Y.net]
コンパイラーの品質保証は、数学で証明する時代だ!!!
Coqと数学でコンパイラーが作れる!!!
compcert.inria.fr/compcert-C.html

235 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 18:57:31.49 ID:SYpntI8c.net]
バイトコードインタプリタつくっているんだけど
スタックマシンのコンパイラについて
パラメータスタック(データスタック)はヒープ上におくべき?
それともネイティブの領域におくべき?

236 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 19:41:52.28 ID:SYpntI8c.net]
>>229
訂正
コンパイラー>仮想機械

237 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 20:41:51.08 ID:DhZyBtDK.net]
>>230
ネイティブスタックにデータも置くって事だよね?
データスタックは分けておいた方がイロイロ楽だったので列挙
たしかこんなの

GC使う様な実装の時の仕分け
実行パスがJITでコンパイルコードと非コンパイルVMコードの行ったり来たりするとき
例外のスタックトレース(これもJIT時のアレコレあり)
チープマシンにVM仕込むときアセンブラで書くのが楽しい

最後はちげぇけど

238 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 21:02:43.06 ID:SYpntI8c.net]
>>231
自分のVMは典型的なスタックマシンで
パラメータスタック(データスタック)とコールスタックは別です。
そのうちデータスタックをヒープ内におくか
アセンブリでかかれたほうのネイティブの領域におくかってことです。
ネイティブ領域においたほうが実際のアドレスとVM上でのアドレスの変換がないので
速度としては速いのですが
欠点としてバイトコードからスタックを参照することができません
焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
基本的になければネイティブ領域におこうかとおもっています
これまでつくった経験がないので設計としてどちらがよいかわからずお聞きしました

239 名前:デフォルトの名無しさん mailto:sage [2015/05/10(日) 09:31:50.02 ID:ZQGgJB6p.net]
>>232
> 焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
バイトコードの設計は終わってるんじゃないのか?
バイトコードの設計終わってりゃ参照の必要があるかどうかはわかってるだろうし、バイトコードの設計終わってないのに VM の構成考えてるならお前が終わってる

240 名前:デフォルトの名無しさん mailto:sage [2015/05/10(日) 09:50:11.77 ID:YKkUWNQO.net]
>>233
その通りわ
出直して来ます



241 名前:デフォルトの名無しさん [2015/05/19(火) 18:50:21.34 ID:a+aajTcz.net]
番兵の文字は
utf-8でも16でも32でも-1でいいんですか?

242 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 17:14:03.39 ID:ZsIPeucp.net]
動的型付けってLLVMだとどうやって実装するんだろ

243 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 19:59:28.32 ID:h+kJ9m+3.net]
構文解析+Cに変換して内部でgcc呼んでコンパイルするプログラムはコンパイラって呼んでいいの?

244 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 20:11:15.28 ID:tLjH7MQJ.net]
トランスレータじゃねえの

245 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 08:23:11.34 ID:SvdcMd32.net]
>>238
変換したCコードを出すならトランスレーターだけどバイナリまで出すならコンパイラーでいいだろ

246 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/28(火) 03:30:13.81 ID:92wk7rzR.net]
果たして文法を仮想化できるか

247 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 08:24:37.58 ID:zh/OeKTd.net]
凄いこと発見したんだけれどもΛの記号は上の尖がったところがルートで
下の二つの棒が辺を表しているんだな

248 名前:デフォルトの名無しさん [2015/08/19(水) 22:05:03.04 ID:caRlC37E.net]
言語非依存の仮想マシンっていうアイデアがいまいち大成功していないように見えるのって
なんか理由があるのかな。

249 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 22:59:51.18 ID:7Z0FzJPx.net]
落ちてたllvmスレを立て直した

【最速へ】LowLevelVirtualMachine 2【LLVM】
peace.2ch.net/test/read.cgi/tech/1439992758/

250 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/19(水) 23:17:16.98 ID:ynuNSl9L.net]
>>242
めちゃくちゃ成功してまんがな。LLVM,clang知らないの?



251 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 00:06:05.42 ID:BI1Ot8hx.net]
>>244
実際に成功していても成功していないよ・う・に・見・え・るって話

252 名前:じゃないの?
XCodeのコンパイラがllvm,clangだってのは開発者にしか見えないしclangの話だけ聞いているとgccが組み込み機のCPUに対応してたころみたいに派手に活躍してるとは感じられないって事じゃ無いの?
[]
[ここ壊れてます]






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<172KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef