TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Java低速GUI Swing 10
(´・ω・`)人間はプログラムやがな
【wasm】ブラウザでC++。Emscriptenを語ろう
C言語なら俺に聞け 155
【マウスだけで】Scratch【プログラミング】その1
プログラミング言語 Rust 4【ワッチョイ】
リファクタリングをただのコード修正と思ってる人へ
Ruby 初心者スレッド Part 66
Google Maps API 質問箱
本当に必要ものは人工知能ではなくて検索エンジン

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


1 :2014/07/20 〜 最終レス :2019/03/21
プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。
Wikiのまとめページ
http://www6.atwiki.jp/compilerandscriptengine/

2 :
誰も立てないので立てた。
需要なければこのまま放置ということで。

3 :
前スレ
「コンパイラ・スクリプトエンジン」相談室15
http://peace.2ch.sc/test/read.cgi/tech/1296214398/

4 :
前スレ落ちたの気づかなかった>>1

5 :
というわけでCaperをRubyで使えるようにしなきゃいけない。。。

6 :
最近はみんなLLVMに集まる流れなのかな

7 :
お手軽に言語作ってみますた なら
バックエンドは インタプリタか JVM かLLVM のどれかになるべ
あとは JSへのトランスレータか
意外に選択肢多いな

8 :
jonigataさん、Rubyのサポートを追加しました。

9 :
JVM上で動く言語をガチで作ってる人ってバイトコードを直接出力するコンパイラ作ってるのかな。
JVM上で動くエンジン用のコードじゃなくて。

10 :
そりゃそうだ。

11 :
jonigataさんと連絡取れない。。。

12 :
caperにRubyサポートが追加されたよ

13 :
>>10
やっぱりですか。
ただ目標がゲームエンジンで将来的にスマホも視野に入れると直接バイトコードってのもどうかという気もします。
ただクッション入れると速度的にどうなんだろう、悩ましい。

14 :
>>1
もっと参考URLを置いてほしいぜ

15 :
caperにPHPサポートが追加されたよ!

16 :
>>15
サポートヨロっていわれてんじゃん、がんばれ

17 :
>>13
俺は前に自作スクリプト→Javaソース→javassistでバイトコードに変換と
やってたけど遂に完成させずに投げてしまったxp

18 :
つかC並にJVM上で低レベルに動く言語が・・・ってどっかにありそうな気がする。

19 :
ちょっと何言ってるかわかりませんね

20 :
>>18
日本語でおk

21 :
JVMのバイトコード吐くライブラリってもあるけど
こっちはバイトコードの知識必須
言語仕様だけ考えて満足しようぜw

22 :
どうせ中間言語に落とし込むんだしバイトコードくらい余裕だろ

23 :
http://www.buzzword.jp/img/face10.png

24 :
guro

25 :
>>23
あんた誰?

26 :
>>13
まず簡単なのを作って、次は作りなおせばいいじゃん。

27 :
>>7
最近はasm.jsみたいなのもあるしね。

28 :
>>23はウィルス注意

29 :
マークスイープのようにGC以外のところでGCを考えずに済み
参照カウントみたいに最大停止時間が短いGCってある?
速度は問いません

30 :
GCアルゴリズム詳細解説
http://seesaawiki.jp/w/author_nari/d/GC
なんと日本語!! …俺はまだ少し読んだだけだが

31 :
>>29
実装簡単なのだとCOPY GCかぬ?
これに寿命を意識すると世代別GCに発展したのがある。
コレより先は実は最先端だったり

32 :
>>31
コピーgcはやっぱメモリ効率がーんー
今のところ遅延マークスイープをなんとか使おうかと思うけどーなー
悩ましい。。。

33 :
>>32
EdenだけCopy GC,OLDに行ったらMarkSweepとか色んな掛け合わせもあるみたいだね

34 :
mostly-concurrentマーク&スイープGCは?
1. ミューテータを止めてルートセットをマーク
2. ミューテータと並行に別スレッドでマーク
3. ミューテータを止めて再度ルートセット+残り全部をマーク
4. ミューテータと並行に別スレッドでスイープ
ってやるやつ
ライトバリアがいるからGC以外のところでGCを考えずには済まないけど (そのへんは世代別も一緒だが)
最大停止時間は短いと思うよ

35 :
caperが改善されて大規模なパーサーでも
早く生成できるようになったようです。

36 :
あんまりでっかいの書かないんで今まで困った事ないのだが、吉報には違いなかったりするのでお礼を述べさせて貰います、ありがとう。
>>Thanks for ジョニガタさんとMZさん

37 :
やること
★Ruby RaccとCaperの比較レビュー。
★CaperでCSVパーサーの作成。
★CaperでXMLパーサーの作成。

38 :
winXP visual studio 2010 expressで
antlr4の導入できた方いらっしゃいませんでしょうか?

39 :
ANTLRWorks とか言うヤツはダメなん?

40 :
バッチファイルみたいなのに定義ファイルかませば出せると思いきや、
JAVAしか出てこない。。。
英語よく読めない

41 :
akiramero

42 :
やっと簡単な電卓インタプリタができたー

43 :
おめおめ
四則演算と簡単な制御構造が実装できると
あとは応用だから
扱う型の種類が増えない限り楽に拡張できそうだね

44 :
演算子って四則演算以上のことやらすと必ずそいつが決めた優先順位に縛られて破綻するし
電卓ならLISPの(+ 1 2 3 4 5)みたいに演算子相当が無くてオペランド側をいくらでも増やせる構文の方が楽

45 :
それもそいつが決めた優先順位なわけだが

46 :
LISPはLISPで解析器に都合の良い構文だと思う
もちろんそういう意味で(作る側が)楽と言ってるんじゃないのは分かっているが
もう少し使う人間のことも考えてやれと
……で行き着くのも例えばpythonだったりするのでそれはそれでうーん

47 :
古代言語なんだから人間向きなわけがない

48 :
慣れたら何とも無いけど

49 :
>>46
FORTHが一番解析器に優しいと思う、Lispは少なくとも関数に渡す引数の数は解析で判断できるけど、FORTHはそれすら捨ててる
あとLispは支援するエディタがあれば書く事に戸惑いは殆どないよ。
読むのは適切なインデントがされていないと辛いのは本当だけどそれだってRubyやらCやらでインデント無しと変わらないと思う。
なお、Pythonはインデントが構文に含まれているのが嫌い(エディタで再フォーマットできない)

50 :
ある海外のファンタジー小説で、異世界召喚されたプログラマが魔法でFORTHを実装して
最強魔導師になってた。

51 :
May the forth be with you.

52 :
Lispは見た目的に「目にひっかからない」(関数もマクロもみんな同じようにしか見えない)のが問題なんだけど、
最近流行ってる(?)みたいに ( ) と [ ] を使い分けるとかすると、だいぶ感じが違うと思う。

53 :
>>52
Clojureが凄い良くできてる
()でリスト,[]でベクタ,{}でマップ、#{}でセットとリテラルの扱いが凄い綺麗

54 :
{} はすごくいいね。素の lisp だとほとんど使われない記号でもったいなかった。しかも数式とも合ってる。
ただ[] は好きになれないなぁ。個人的趣味だけど。

55 :
変わった趣味だw

56 :
エラーメッセージを楽して、素晴らしく表示したいんですけど
いい方法を教えてください。

57 :
>>56
センスのいい奴に頼む

58 :
言うても行桁理由以外に何か必要かね

59 :
ファイル名…かな

60 :
エラー表示は?だけでいい
というネタがあったな

61 :
人間が見てるのとコンパイラが解釈してるので大きくズレがある場合とか
エラーメッセージ見てわからんことが多々ある
xxの前にxxがあります/ありません系のエラーはウンザリ

62 :
print " _人人 人人_ \n",
"> 突然の死 < ", col, ",", row, " in ",filename,":", reason, "\n",
"  ̄Y^Y^Y^Y ̄\n";
die;
楽して素晴らしい方向を考えた

63 :
$ nmlc -run examples/lablgl/triangle.nml
Fatal error: exception Failure("
_人人 人人_
> 突然の死 < parse error line 33
 ̄Y^Y^Y^Y^Y ̄
")
って出るようにしてみた。

64 :
何のエラーか
なぜ起こったか
どうすれば良いか
のうちどこまでエラー表示するか
表示しないものはマニュアルに書くか
統一しておくと良い

65 :
何のエラーか数字で提示
あとはknowledge baseで
knowledge baseは迷宮

66 :
基本的には書いた人の頭のエラーだからな。
コンパイラ的には「チェンジ!チェンジ!この子変えて!!!」
だけでいい。

67 :
> 関西型プログラミング言語のひとつ Kyoto のコンパイラは,文法ミスのあるコードを与えると「ふうがわりなコードどすなぁ」とだけ返すので,何が間違っているかはこちらで推測する必要がある.

68 :
何回も間違ったらぶぶ漬けが出てきそうだな

69 :
>>64
> どうすれば良いか
これは余計なお世話だわ

70 :
この道路は工事中なので次の迂回路をご利用ください

71 :
コンパイル速ければ、エラーは1個で十分だったりするよなぁっとか。
大量に出すなら、一番先頭のエラーを一番下に出すと嬉しいとか。

72 :
>> 70
迂回は出来ないんだなぁ

73 :
最近のghcとかだと、関数名をタイポすると似た存在する関数名を示してくれる。外してる時もあるけど。
ああいう親切さをもっと充実させるのも方向性としてはありだと思う。
あらゆるコンパイルエラーがクラウドサーバに送られ続けて典型的なミスを蓄積し続ける、とかね。

74 :
大量のデータをまとめて整理した結果をどこかで見たけど
よくあるスペルミス・インポート忘れ・宣言忘れが飛び抜けていて
それ以外はごくわずかでどうでもいいという印象だった

75 :
中級者以上と入門者はつまずく所が全く違うから
後者のデータだけを集めれば「入門者に最適」な言語やツールが作れるかもしれない

76 :
C言語は、研究結果;はあった方が良いみたいな話を聞いた事があるような気がする。
けど、最後だけ無しとかだったのかもしれないし、良く覚えてないなぁ。
今作ってる言語は必要な所だけ;を書くって作ってるのだけど。
初心者には難しいのかもしれないです。

77 :
気の利いたエディタサポートまで考えるなら改行をまたぐ構文を禁止すべき
VBはそうなってる

78 :
lispとかでマクロ展開したときに中でエラーが起こったら行と桁の表示は諦めるしかないのかな
前に作ったとき展開後も展開前の行を引き継ぐやり方をしてたけど

79 :
>>78
トークンに文字列だけじゃなく、もとあった位置の情報も付けたら?
>>76
どんな言語でも、ある程度本格的なプロダクトなら、たいてい、「やたら長くなるから改行を挟みたい式」と
「やたら短くて似たようなのが連続するから1行にまとめたい文」の両方が出てくるので、
どちらを強制するのも一長一短。
構文的には (a, b, c, d) と {a; b; c; d;} の、どちらも似たようなものだけど、機械的なコード生成では
後者のほうが以前は楽だった(最近は可変長配列みたいなオブジェクトに入れて、最後に
joinとか、ライブラリが充実してる言語を使うのが普通なので、あまり差は無い)。
人間の作業としては、複数行にまたがるものでは前者のほうはちょっとめんどい。
(最後の行を削ったあとで、前の行の最後も削る必要があるので)
{a,
b,
c}
みたいに閉じカッコを行末に付けてしまえばそうでもないかもだが。
あとそもそもC言語の構文では ; の規則がちょっと変則的。

80 :
Lispマクロのデバッグはちょっと難しいよな。
backquoteのように構文上の構造を引き継ぐような奴ばかりならいいんだけど。

81 :
デバッグ→デバッグ情報

82 :
複雑なマクロでもたいていは展開系見れば何とかなるね。それでも動かないマクロがたまーにあって辛いけど。

83 :
自作のコンパイラなりなんなりはデバッグと最適化を考えたらなにも出来ない
むしろ潔く投げ捨てる勢いと割り切りで走らないとダメっしょ
俺様考えたルールで動いた万歳終わりな感じ
四則演算と条件文、あとGOTOなりCALLなりがあれば立派
それ以上の高度化は努力しだいってことで
それとも大人しくCommon Lispあたりを使って妥協するとか
Lispだと関数を生成して実行できるんだよね
例えば入力画面の項目数とか要件とかを与えて関数の形で生成して実行な感じの
俺様コンパイラ、Lispコード生成するからコンパイルや実行デバッグはそちらでオネガイみたくw

84 :
そこまで楽するなら構文をリードマクロで定義したほうが早そう

85 :
xmlってスクリプト言語なの?データ構造なの?
xmlを使ったスクリプト言語らしきモノもあるみたいだし、よーわからん

86 :
>>83
C とかのソース吐いて、最適化よろしくね(はーと)でいいだろ

87 :
>>85
データ構造だろ
パーサ作るのが楽というか有りものが使えるからxxxxMLみたいに拡張して使われるんだろう

88 :
>>85
プレーンテキストってスクリプト言語なの?データ構造なの?

89 :
>>88
只の文字列だよ
そこに意味を付けるのはまた別の事

90 :
シェルスクリプトとかみたいな意味でスクリプトではない。
XSLTとか、あとワドラー氏が冗談で提案していたと思うがXMLで表現するプログラミング言語と
いうものもありうるけど、XML自体は単なるデータ構造でしかない。

91 :
XMLにロジックを書く者は呪われる。やめておいた方がいい。あれはデータ形式としても冗長すぎるし、良いところはない。
S式を使うといい。

92 :
XSLTは割とよくできてるよw

93 :
閉じ括弧重ね書き文化は誰も止めなかったのかねえ))))))))))))))))))))

94 :
Cみたいな中括弧、改行、インデントを繰り返すのもイマイチ

95 :
整ってると思うがなあ
switch, caseだけはアレだが

96 :
switchとcaseは同じインデントにしてbreakだけ字下げだよね?ね?

97 :
>>96 に一票

98 :
(,)は特別な意味持たせたいとかあるので難しいですね。
(a,)はタプルにしようか、タプルじゃないのかとか。(,a)はタプルとか。

99 :
Pythonの「1要素のタプル」はトリッキーだが面白いとは思った。
kなんとかの人が言ってるように、カッコなしでもそうなるのは罠だがw

100 :
lispだと(a)とaの違いかな


100〜のスレッドの続きを読む
ふらっと C#,C♯,C#(初心者用) Part142
【JavaScript】スクリプト バトルロワイヤル55【php,py,pl,rb】
ふらっと C#,C♯,C#(初心者用) Part138
学ぶ言語は「広く浅く」か「狭く深く」のどっちか
ふらっと C#,C♯,C#(初心者用) Part127
【統計分析】機械学習・データマイニング25
シェルスクリプト総合 その28
JAVAってこんなことも出来ないの?
PowerShell -Part 4
GCは失敗。メモリは自分で管理せよ! その2
--------------------
【NEVADA】長崎小6女児カッター殺人事件 3切り目
【自動運転】”中国のグーグル” バイドゥが日本で自動運転の実証実験へ
普段の素材の意外なレシピ
◆スレッド作成&継続依頼スレッド★202◆ 記者キャップを取得したいコテ(トリップ付)募集中!
パチンコ依存症、536万人 [422186189]
【戦コン】20卒コンサルティングファーム【外資】7
日本の女が世界一モテない理由
レッド・スパロー Red Sparrow★2
[CoH]Company of Heroes 85thカンパニー
ドンキがうまい棒54000本誤発注 [796936532]
TowerDefense 攻略スレ Level 23
【日産】3代目エクストレイル【タフギア】 Part51
韓国ガールズグループ売り上げスレ
【陸上競技】跳躍種目のトレーニング方法
【メガテンD2】 D×2 真・女神転生リベレーション まったりスレ★34
「ネットワーク機能は使えなくなったが、ドリームキャストで誰かとつながれる」 “今でもドリキャスを遊んでいる人”インタビュー [朝一から閉店までφ★]
【共産】即位の礼を欠席へ=「政教分離と両立せず」
《出禁厳守》ずんだ餅704
(´・д・`)DOn'15です251
昭和59年度(1984年)生まれのヒキ166
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼