「コンパイラ・スクリプトエンジン」相談室16 (649レス)
「コンパイラ・スクリプトエンジン」相談室16 http://mevius.5ch.net/test/read.cgi/tech/1405822579/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん [sage] 2014/07/20(日) 11:16:19.37 ID:p6eMVAxc プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 Wikiのまとめページ http://www6.atwiki
.jp/compilerandscriptengine/ http://mevius.5ch.net/test/read.cgi/tech/1405822579/1
2: デフォルトの名無しさん [sage] 2014/07/20(日) 11:18:41.91 ID:p6eMVAxc 誰も立てないので立てた。 需要なければこのまま放置ということで。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/2
3: デフォルトの名無しさん [sage] 2014/07/20(日) 11:19:36.24 ID:b1uNa6xY 前スレ 「コンパイラ・スクリプトエンジン」相談室15 http://peace.2ch.net/test/read.cgi/tech/1296214398/ http://mevius.5ch.net/test/read.cgi/tech/1405822579/3
4: デフォルトの名無しさん [sage] 2014/07/20(日) 13:22:32.46 ID:6KMBfrlQ 前スレ落ちたの気づかなかった>>1乙 http://mevius.5ch.net/test/read.cgi/tech/1405822579/4
5: 片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 [sage] 2014/07/22(火) 13:31:35.08 ID:itpt16Wl というわけでCaperをRubyで使えるようにしなきゃいけない。。。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/5
6: デフォルトの名無しさん [sage] 2014/07/23(水) 00:33:25.56 ID:6DA6PhLu 最近はみんなLLVMに集まる流れなのかな http://mevius.5ch.net/test/read.cgi/tech/1405822579/6
7: デフォルトの名無しさん [sage] 2014/07/24(木) 10:32:17.75 ID:w2uo6knu お手軽に言語作ってみますた なら バックエンドは インタプリタか JVM かLLVM のどれかになるべ あとは JSへのトランスレータか 意外に選択肢多いな http://mevius.5ch.net/test/read.cgi/tech/1405822579/7
8: 片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 [] 2014/07/27(日) 13:36:28.20 ID:YSqiGYKe jonigataさん、Rubyのサポートを追加しました。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/8
9: デフォルトの名無しさん [sage] 2014/07/27(日) 21:59:50.89 ID:aStfmk5+ JVM上で動く言語をガチで作ってる人ってバイトコードを直接出力するコンパイラ作ってるのかな。 JVM上で動くエンジン用のコードじゃなくて。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/9
10: デフォルトの名無しさん [] 2014/07/27(日) 22:00:59.03 ID:UgznbaEB そりゃそうだ。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/10
11: 片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 [sage] 2014/07/28(月) 14:12:21.53 ID:DUvGztkP jonigataさんと連絡取れない。。。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/11
12: 片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 [] 2014/07/28(月) 16:55:40.10 ID:SnQo0cO4 caperにRubyサポートが追加されたよ http://mevius.5ch.net/test/read.cgi/tech/1405822579/12
13: 9 [sage] 2014/07/28(月) 21:54:34.37 ID:zEAFz2i4 >>10 やっぱりですか。 ただ目標がゲームエンジンで将来的にスマホも視野に入れると直接バイトコードってのもどうかという気もします。 ただクッション入れると速度的にどうなんだろう、悩ましい。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/13
14: 片山博文MZ次期CEO ◆T6xkBnTXz7B0 [sage] 2014/07/29(火) 01:15:58.91 ID:qgm2mseY >>1 もっと参考URLを置いてほしいぜ http://mevius.5ch.net/test/read.cgi/tech/1405822579/14
15: 片山博文MZ次期CEO ◆T6xkBnTXz7B0 [sage] 2014/08/01(金) 11:03:08.58 ID:fIgY7BmT caperにPHPサポートが追加されたよ! http://mevius.5ch.net/test/read.cgi/tech/1405822579/15
16: デフォルトの名無しさん [sage] 2014/08/01(金) 15:28:56.80 ID:ARdX3qTq >>15 サポートヨロっていわれてんじゃん、がんばれ http://mevius.5ch.net/test/read.cgi/tech/1405822579/16
17: デフォルトの名無しさん [sage] 2014/08/02(土) 16:23:44.47 ID:jWpcYE6C >>13 俺は前に自作スクリプト→Javaソース→javassistでバイトコードに変換と やってたけど遂に完成させずに投げてしまったxp http://mevius.5ch.net/test/read.cgi/tech/1405822579/17
18: デフォルトの名無しさん [sage] 2014/08/03(日) 01:07:00.19 ID:MH7BOvZw つかC並にJVM上で低レベルに動く言語が・・・ってどっかにありそうな気がする。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/18
19: デフォルトの名無しさん [sage] 2014/08/03(日) 12:20:45.13 ID:q8fBalr7 ちょっと何言ってるかわかりませんね http://mevius.5ch.net/test/read.cgi/tech/1405822579/19
20: デフォルトの名無しさん [sage] 2014/08/03(日) 16:19:28.19 ID:/m+nZnOr >>18 日本語でおk http://mevius.5ch.net/test/read.cgi/tech/1405822579/20
21: デフォルトの名無しさん [sage] 2014/08/04(月) 00:28:33.88 ID:5WaCX4TM JVMのバイトコード吐くライブラリってもあるけど こっちはバイトコードの知識必須 言語仕様だけ考えて満足しようぜw http://mevius.5ch.net/test/read.cgi/tech/1405822579/21
22: デフォルトの名無しさん [sage] 2014/08/04(月) 02:12:43.16 ID:BTc2ko+M どうせ中間言語に落とし込むんだしバイトコードくらい余裕だろ http://mevius.5ch.net/test/read.cgi/tech/1405822579/22
23: デフォルトの名無しさん [sage] 2014/08/08(金) 03:06:15.46 ID:W/TCi66w http://www.buzzword.jp/img/face10.png http://mevius.5ch.net/test/read.cgi/tech/1405822579/23
24: デフォルトの名無しさん [] 2014/08/08(金) 08:30:38.85 ID:pWDxpd5M guro http://mevius.5ch.net/test/read.cgi/tech/1405822579/24
25: デフォルトの名無しさん [sage] 2014/08/08(金) 08:47:25.07 ID:19ZqYpH8 >>23 あんた誰? http://mevius.5ch.net/test/read.cgi/tech/1405822579/25
26: デフォルトの名無しさん [] 2014/08/08(金) 12:06:16.40 ID:MJ5RFc2h >>13 まず簡単なのを作って、次は作りなおせばいいじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/26
27: デフォルトの名無しさん [] 2014/08/08(金) 12:31:17.41 ID:U1h/L2RD >>7 最近はasm.jsみたいなのもあるしね。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/27
28: デフォルトの名無しさん [sage] 2014/08/08(金) 16:22:46.37 ID:F5/v+VI2 >>23はウィルス注意 http://mevius.5ch.net/test/read.cgi/tech/1405822579/28
29: デフォルトの名無しさん [] 2014/08/12(火) 11:48:49.30 ID:AbgWlUoH マークスイープのようにGC以外のところでGCを考えずに済み 参照カウントみたいに最大停止時間が短いGCってある? 速度は問いません http://mevius.5ch.net/test/read.cgi/tech/1405822579/29
30: デフォルトの名無しさん [sage] 2014/08/12(火) 12:44:46.12 ID:A03Bg3Wq GCアルゴリズム詳細解説 http://seesaawiki.jp/w/author_nari/d/GC なんと日本語!! …俺はまだ少し読んだだけだが http://mevius.5ch.net/test/read.cgi/tech/1405822579/30
31: デフォルトの名無しさん [sage] 2014/08/12(火) 12:44:50.65 ID:+sDF17YZ >>29 実装簡単なのだとCOPY GCかぬ? これに寿命を意識すると世代別GCに発展したのがある。 コレより先は実は最先端だったり http://mevius.5ch.net/test/read.cgi/tech/1405822579/31
32: デフォルトの名無しさん [] 2014/08/13(水) 00:05:07.82 ID:5Fn9SOB/ >>31 コピーgcはやっぱメモリ効率がーんー 今のところ遅延マークスイープをなんとか使おうかと思うけどーなー 悩ましい。。。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/32
33: デフォルトの名無しさん [sage] 2014/08/13(水) 00:29:26.50 ID:IvuVUKO/ >>32 EdenだけCopy GC,OLDに行ったらMarkSweepとか色んな掛け合わせもあるみたいだね http://mevius.5ch.net/test/read.cgi/tech/1405822579/33
34: デフォルトの名無しさん [sage] 2014/08/14(木) 01:15:17.94 ID:nk1V5Hss mostly-concurrentマーク&スイープGCは? 1. ミューテータを止めてルートセットをマーク 2. ミューテータと並行に別スレッドでマーク 3. ミューテータを止めて再度ルートセット+残り全部をマーク 4. ミューテータと並行に別スレッドでスイープ ってやるやつ ライトバリアがいるからGC以外のところでGCを考えずには済まないけど (そのへんは世代別も一緒だが) 最大停止時間は短いと思うよ http://mevius.5ch.net/test/read.cgi/tech/1405822579/34
35: デフォルトの名無しさん [] 2014/09/20(土) 16:42:37.06 ID:Vt9JAeIo caperが改善されて大規模なパーサーでも 早く生成できるようになったようです。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/35
36: デフォルトの名無しさん [sage] 2014/09/20(土) 17:18:58.94 ID:INF4B04G あんまりでっかいの書かないんで今まで困った事ないのだが、吉報には違いなかったりするのでお礼を述べさせて貰います、ありがとう。 >>Thanks for ジョニガタさんとMZさん http://mevius.5ch.net/test/read.cgi/tech/1405822579/36
37: デフォルトの名無しさん [sage] 2014/09/21(日) 00:08:58.31 ID:+YftySIr やること ★Ruby RaccとCaperの比較レビュー。 ★CaperでCSVパーサーの作成。 ★CaperでXMLパーサーの作成。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/37
38: sage [] 2014/09/26(金) 04:19:50.66 ID:VUi+/UsP winXP visual studio 2010 expressで antlr4の導入できた方いらっしゃいませんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1405822579/38
39: デフォルトの名無しさん [sage] 2014/09/26(金) 10:04:23.12 ID:8tItaSRz ANTLRWorks とか言うヤツはダメなん? http://mevius.5ch.net/test/read.cgi/tech/1405822579/39
40: デフォルトの名無しさん [sage] 2014/09/27(土) 01:39:11.71 ID:oNml76ai バッチファイルみたいなのに定義ファイルかませば出せると思いきや、 JAVAしか出てこない。。。 英語よく読めない http://mevius.5ch.net/test/read.cgi/tech/1405822579/40
41: デフォルトの名無しさん [sage] 2014/09/27(土) 01:53:39.94 ID:PIGMRS01 akiramero http://mevius.5ch.net/test/read.cgi/tech/1405822579/41
42: デフォルトの名無しさん [sage] 2014/10/12(日) 13:57:53.54 ID:fouZ38nR やっと簡単な電卓インタプリタができたー http://mevius.5ch.net/test/read.cgi/tech/1405822579/42
43: デフォルトの名無しさん [] 2014/10/12(日) 15:26:51.34 ID:s0CJmRCd おめおめ 四則演算と簡単な制御構造が実装できると あとは応用だから 扱う型の種類が増えない限り楽に拡張できそうだね http://mevius.5ch.net/test/read.cgi/tech/1405822579/43
44: デフォルトの名無しさん [sage] 2014/10/13(月) 01:35:36.78 ID:UPM0IlOC 演算子って四則演算以上のことやらすと必ずそいつが決めた優先順位に縛られて破綻するし 電卓ならLISPの(+ 1 2 3 4 5)みたいに演算子相当が無くてオペランド側をいくらでも増やせる構文の方が楽 http://mevius.5ch.net/test/read.cgi/tech/1405822579/44
45: デフォルトの名無しさん [sage] 2014/10/19(日) 05:56:05.61 ID:irMeVnbo それもそいつが決めた優先順位なわけだが http://mevius.5ch.net/test/read.cgi/tech/1405822579/45
46: デフォルトの名無しさん [sage] 2014/10/19(日) 07:29:43.65 ID:Ww99Jszp LISPはLISPで解析器に都合の良い構文だと思う もちろんそういう意味で(作る側が)楽と言ってるんじゃないのは分かっているが もう少し使う人間のことも考えてやれと ……で行き着くのも例えばpythonだったりするのでそれはそれでうーん http://mevius.5ch.net/test/read.cgi/tech/1405822579/46
47: デフォルトの名無しさん [sage] 2014/10/19(日) 19:43:22.93 ID:U9zncy/O 古代言語なんだから人間向きなわけがない http://mevius.5ch.net/test/read.cgi/tech/1405822579/47
48: デフォルトの名無しさん [sage] 2014/10/19(日) 19:50:43.83 ID:wwCHsqfk 慣れたら何とも無いけど http://mevius.5ch.net/test/read.cgi/tech/1405822579/48
49: デフォルトの名無しさん [sage] 2014/10/19(日) 23:32:38.99 ID:zZJPnNDh >>46 FORTHが一番解析器に優しいと思う、Lispは少なくとも関数に渡す引数の数は解析で判断できるけど、FORTHはそれすら捨ててる あとLispは支援するエディタがあれば書く事に戸惑いは殆どないよ。 読むのは適切なインデントがされていないと辛いのは本当だけどそれだってRubyやらCやらでインデント無しと変わらないと思う。 なお、Pythonはインデントが構文に含まれているのが嫌い(エディタで再フォーマットできない) http://mevius.5ch.net/test/read.cgi/tech/1
405822579/49
50: デフォルトの名無しさん [sage] 2014/10/20(月) 07:07:45.12 ID:vNvY5rmm ある海外のファンタジー小説で、異世界召喚されたプログラマが魔法でFORTHを実装して 最強魔導師になってた。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/50
51: デフォルトの名無しさん [sage] 2014/10/20(月) 07:26:17.53 ID:fcKonDPy May the forth be with you. http://mevius.5ch.net/test/read.cgi/tech/1405822579/51
52: デフォルトの名無しさん [sage] 2014/10/20(月) 11:16:47.94 ID:6/LNQkyp Lispは見た目的に「目にひっかからない」(関数もマクロもみんな同じようにしか見えない)のが問題なんだけど、 最近流行ってる(?)みたいに ( ) と [ ] を使い分けるとかすると、だいぶ感じが違うと思う。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/52
53: デフォルトの名無しさん [sage] 2014/10/20(月) 16:23:26.53 ID:s/tFnXbk >>52 Clojureが凄い良くできてる ()でリスト,[]でベクタ,{}でマップ、#{}でセットとリテラルの扱いが凄い綺麗 http://mevius.5ch.net/test/read.cgi/tech/1405822579/53
54: デフォルトの名無しさん [sage] 2014/10/25(土) 10:10:07.27 ID:9gGhLYaB {} はすごくいいね。素の lisp だとほとんど使われない記号でもったいなかった。しかも数式とも合ってる。 ただ[] は好きになれないなぁ。個人的趣味だけど。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/54
55: デフォルトの名無しさん [sage] 2014/10/25(土) 13:15:04.28 ID:rVCkRMh+ 変わった趣味だw http://mevius.5ch.net/test/read.cgi/tech/1405822579/55
56: デフォルトの名無しさん [sage] 2014/11/01(土) 16:34:43.21 ID:5yNYNAVX エラーメッセージを楽して、素晴らしく表示したいんですけど いい方法を教えてください。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/56
57: デフォルトの名無しさん [sage] 2014/11/01(土) 18:28:37.68 ID:yfMW+WpF >>56 センスのいい奴に頼む http://mevius.5ch.net/test/read.cgi/tech/1405822579/57
58: デフォルトの名無しさん [sage] 2014/11/01(土) 19:12:18.30 ID:md1XyPQH 言うても行桁理由以外に何か必要かね http://mevius.5ch.net/test/read.cgi/tech/1405822579/58
59: デフォルトの名無しさん [sage] 2014/11/01(土) 19:25:31.66 ID:etXlBO/A ファイル名…かな http://mevius.5ch.net/test/read.cgi/tech/1405822579/59
60: デフォルトの名無しさん [sage] 2014/11/01(土) 20:57:55.11 ID:68QCuiUg エラー表示は?だけでいい というネタがあったな http://mevius.5ch.net/test/read.cgi/tech/1405822579/60
61: デフォルトの名無しさん [sage] 2014/11/02(日) 00:04:36.51 ID:FPvqJpqA 人間が見てるのとコンパイラが解釈してるので大きくズレがある場合とか エラーメッセージ見てわからんことが多々ある xxの前にxxがあります/ありません系のエラーはウンザリ http://mevius.5ch.net/test/read.cgi/tech/1405822579/61
62: デフォルトの名無しさん [sage] 2014/11/02(日) 00:22:55.85 ID:E/aMB+tP print " _人人 人人_ \n", "> 突然の死 < ", col, ",", row, " in ",filename,":", reason, "\n", "  ̄Y^Y^Y^Y ̄\n"; die; 楽して素晴らしい方向を考えた http://mevius.5ch.net/test/read.cgi/tech/1405822579/62
63: デフォルトの名無しさん [sage] 2014/11/02(日) 04:19:14.28 ID:l3Xq9EsR $ nmlc -run examples/lablgl/triangle.nml Fatal error: exception Failure(" _人人 人人_ > 突然の死 < parse error line 33  ̄Y^Y^Y^Y^Y ̄ ") って出るようにしてみた。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/63
64: デフォルトの名無しさん [sage] 2014/11/02(日) 07:10:13.81 ID:Pf8ySLA3 何のエラーか なぜ起こったか どうすれば良いか のうちどこまでエラー表示するか 表示しないものはマニュアルに書くか 統一しておくと良い http://mevius.5ch.net/test/read.cgi/tech/1405822579/64
65: デフォルトの名無しさん [sage] 2014/11/02(日) 10:22:44.88 ID:P2QTHoYV 何のエラーか数字で提示 あとはknowledge baseで knowledge baseは迷宮 http://mevius.5ch.net/test/read.cgi/tech/1405822579/65
66: デフォルトの名無しさん [sage] 2014/11/02(日) 11:43:14.80 ID:6U4Atlhd 基本的には書いた人の頭のエラーだからな。 コンパイラ的には「チェンジ!チェンジ!この子変えて!!!」 だけでいい。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/66
67: デフォルトの名無しさん [] 2014/11/02(日) 12:31:43.49 ID:4dYx0WR7 > 関西型プログラミング言語のひとつ Kyoto のコンパイラは,文法ミスのあるコードを与えると「ふうがわりなコードどすなぁ」とだけ返すので,何が間違っているかはこちらで推測する必要がある. http://mevius.5ch.net/test/read.cgi/tech/1405822579/67
68: デフォルトの名無しさん [sage] 2014/11/02(日) 12:39:13.58 ID:FPvqJpqA 何回も間違ったらぶぶ漬けが出てきそうだな http://mevius.5ch.net/test/read.cgi/tech/1405822579/68
69: デフォルトの名無しさん [sage] 2014/11/02(日) 12:58:18.94 ID:i2BOrYsG >>64 > どうすれば良いか これは余計なお世話だわ http://mevius.5ch.net/test/read.cgi/tech/1405822579/69
70: デフォルトの名無しさん [sage] 2014/11/02(日) 13:03:44.74 ID:FPvqJpqA この道路は工事中なので次の迂回路をご利用ください http://mevius.5ch.net/test/read.cgi/tech/1405822579/70
71: デフォルトの名無しさん [sage] 2014/11/02(日) 16:35:04.02 ID:l3Xq9EsR コンパイル速ければ、エラーは1個で十分だったりするよなぁっとか。 大量に出すなら、一番先頭のエラーを一番下に出すと嬉しいとか。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/71
72: デフォルトの名無しさん [sage] 2014/11/03(月) 12:49:03.39 ID:ljM6XCm0 >> 70 迂回は出来ないんだなぁ http://mevius.5ch.net/test/read.cgi/tech/1405822579/72
73: デフォルトの名無しさん [sage] 2014/11/03(月) 18:22:08.25 ID:6fFurIEN 最近のghcとかだと、関数名をタイポすると似た存在する関数名を示してくれる。外してる時もあるけど。 ああいう親切さをもっと充実させるのも方向性としてはありだと思う。 あらゆるコンパイルエラーがクラウドサーバに送られ続けて典型的なミスを蓄積し続ける、とかね。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/73
74: デフォルトの名無しさん [sage] 2014/11/04(火) 11:17:19.99 ID:bZGUB4M2 大量のデータをまとめて整理した結果をどこかで見たけど よくあるスペルミス・インポート忘れ・宣言忘れが飛び抜けていて それ以外はごくわずかでどうでもいいという印象だった http://mevius.5ch.net/test/read.cgi/tech/1405822579/74
75: デフォルトの名無しさん [sage] 2014/11/04(火) 11:19:32.39 ID:bZGUB4M2 中級者以上と入門者はつまずく所が全く違うから 後者のデータだけを集めれば「入門者に最適」な言語やツールが作れるかもしれない http://mevius.5ch.net/test/read.cgi/tech/1405822579/75
76: デフォルトの名無しさん [sage] 2014/11/04(火) 13:56:57.87 ID:OXvDS9Yh C言語は、研究結果;はあった方が良いみたいな話を聞いた事があるような気がする。 けど、最後だけ無しとかだったのかもしれないし、良く覚えてないなぁ。 今作ってる言語は必要な所だけ;を書くって作ってるのだけど。 初心者には難しいのかもしれないです。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/76
77: デフォルトの名無しさん [sage] 2014/11/04(火) 15:36:24.07 ID:bZGUB4M2 気の利いたエディタサポートまで考えるなら改行をまたぐ構文を禁止すべき VBはそうなってる http://mevius.5ch.net/test/read.cgi/tech/1405822579/77
78: デフォルトの名無しさん [sage] 2014/11/04(火) 15:58:19.03 ID:vqrMdBMn lispとかでマクロ展開したときに中でエラーが起こったら行と桁の表示は諦めるしかないのかな 前に作ったとき展開後も展開前の行を引き継ぐやり方をしてたけど http://mevius.5ch.net/test/read.cgi/tech/1405822579/78
79: デフォルトの名無しさん [sage] 2014/11/04(火) 17:04:17.39 ID:99dxtSJ/ >>78 トークンに文字列だけじゃなく、もとあった位置の情報も付けたら? >>76 どんな言語でも、ある程度本格的なプロダクトなら、たいてい、「やたら長くなるから改行を挟みたい式」と 「やたら短くて似たようなのが連続するから1行にまとめたい文」の両方が出てくるので、 どちらを強制するのも一長一短。 構文的には (a, b, c, d) と {a; b; c; d;} の、どちらも似たようなものだけど、機械的なコード生成では 後者のほうが以前は楽だった(最近は可変長
配列みたいなオブジェクトに入れて、最後に joinとか、ライブラリが充実してる言語を使うのが普通なので、あまり差は無い)。 人間の作業としては、複数行にまたがるものでは前者のほうはちょっとめんどい。 (最後の行を削ったあとで、前の行の最後も削る必要があるので) {a, b, c} みたいに閉じカッコを行末に付けてしまえばそうでもないかもだが。 あとそもそもC言語の構文では ; の規則がちょっと変則的。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/79
80: デフォルトの名無しさん [sage] 2014/11/04(火) 23:11:55.77 ID:DC7Ttoit Lispマクロのデバッグはちょっと難しいよな。 backquoteのように構文上の構造を引き継ぐような奴ばかりならいいんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/80
81: デフォルトの名無しさん [sage] 2014/11/04(火) 23:12:32.22 ID:DC7Ttoit デバッグ→デバッグ情報 http://mevius.5ch.net/test/read.cgi/tech/1405822579/81
82: デフォルトの名無しさん [sage] 2014/11/04(火) 23:31:17.91 ID:6PskSs9/ 複雑なマクロでもたいていは展開系見れば何とかなるね。それでも動かないマクロがたまーにあって辛いけど。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/82
83: デフォルトの名無しさん [] 2014/11/04(火) 23:40:21.11 ID:cufVHbaO 自作のコンパイラなりなんなりはデバッグと最適化を考えたらなにも出来ない むしろ潔く投げ捨てる勢いと割り切りで走らないとダメっしょ 俺様考えたルールで動いた万歳終わりな感じ 四則演算と条件文、あとGOTOなりCALLなりがあれば立派 それ以上の高度化は努力しだいってことで それとも大人しくCommon Lispあたりを使って妥協するとか Lispだと関数を生成して実行できるんだよね 例えば入力画面の項目数とか要件とかを与えて関数の形で生成して実行な感じの 俺様コンパイラ
、Lispコード生成するからコンパイルや実行デバッグはそちらでオネガイみたくw http://mevius.5ch.net/test/read.cgi/tech/1405822579/83
84: デフォルトの名無しさん [sage] 2014/11/05(水) 01:50:49.88 ID:j8mQRcC4 そこまで楽するなら構文をリードマクロで定義したほうが早そう http://mevius.5ch.net/test/read.cgi/tech/1405822579/84
85: デフォルトの名無しさん [sage] 2014/11/05(水) 07:49:49.12 ID:xr1YCX3/ xmlってスクリプト言語なの?データ構造なの? xmlを使ったスクリプト言語らしきモノもあるみたいだし、よーわからん http://mevius.5ch.net/test/read.cgi/tech/1405822579/85
86: デフォルトの名無しさん [sage] 2014/11/05(水) 08:22:34.79 ID:Fpn6fvq+ >>83 C とかのソース吐いて、最適化よろしくね(はーと)でいいだろ http://mevius.5ch.net/test/read.cgi/tech/1405822579/86
87: デフォルトの名無しさん [sage] 2014/11/05(水) 09:54:15.68 ID:gfolKTI3 >>85 データ構造だろ パーサ作るのが楽というか有りものが使えるからxxxxMLみたいに拡張して使われるんだろう http://mevius.5ch.net/test/read.cgi/tech/1405822579/87
88: デフォルトの名無しさん [sage] 2014/11/05(水) 11:54:58.98 ID:bBYPRYMe >>85 プレーンテキストってスクリプト言語なの?データ構造なの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/88
89: デフォルトの名無しさん [sage] 2014/11/05(水) 17:03:13.23 ID:I87EWij/ >>88 只の文字列だよ そこに意味を付けるのはまた別の事 http://mevius.5ch.net/test/read.cgi/tech/1405822579/89
90: デフォルトの名無しさん [sage] 2014/11/05(水) 17:58:10.42 ID:uuXXn0N9 シェルスクリプトとかみたいな意味でスクリプトではない。 XSLTとか、あとワドラー氏が冗談で提案していたと思うがXMLで表現するプログラミング言語と いうものもありうるけど、XML自体は単なるデータ構造でしかない。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/90
91: デフォルトの名無しさん [sage] 2014/11/05(水) 21:09:37.17 ID:WN8UKbpt XMLにロジックを書く者は呪われる。やめておいた方がいい。あれはデータ形式としても冗長すぎるし、良いところはない。 S式を使うといい。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/91
92: デフォルトの名無しさん [sage] 2014/11/05(水) 21:32:19.82 ID:uuXXn0N9 XSLTは割とよくできてるよw http://mevius.5ch.net/test/read.cgi/tech/1405822579/92
93: デフォルトの名無しさん [sage] 2014/11/06(木) 01:58:37.08 ID:Rw7wEfhr 閉じ括弧重ね書き文化は誰も止めなかったのかねえ)))))))))))))))))))) http://mevius.5ch.net/test/read.cgi/tech/1405822579/93
94: デフォルトの名無しさん [sage] 2014/11/06(木) 02:08:22.53 ID:rrEEAzVB Cみたいな中括弧、改行、インデントを繰り返すのもイマイチ http://mevius.5ch.net/test/read.cgi/tech/1405822579/94
95: デフォルトの名無しさん [sage] 2014/11/07(金) 19:44:15.64 ID:XxPyN8W7 整ってると思うがなあ switch, caseだけはアレだが http://mevius.5ch.net/test/read.cgi/tech/1405822579/95
96: デフォルトの名無しさん [sage] 2014/11/07(金) 20:31:09.14 ID:sXupdHKX switchとcaseは同じインデントにしてbreakだけ字下げだよね?ね? http://mevius.5ch.net/test/read.cgi/tech/1405822579/96
97: デフォルトの名無しさん [sage] 2014/11/07(金) 20:52:59.78 ID:4yd7iQ66 >>96 に一票 http://mevius.5ch.net/test/read.cgi/tech/1405822579/97
98: デフォルトの名無しさん [sage] 2014/11/07(金) 22:25:11.01 ID:fMVGCDH+ (,)は特別な意味持たせたいとかあるので難しいですね。 (a,)はタプルにしようか、タプルじゃないのかとか。(,a)はタプルとか。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/98
99: デフォルトの名無しさん [sage] 2014/11/09(日) 11:22:54.52 ID:/PoG0aeo Pythonの「1要素のタプル」はトリッキーだが面白いとは思った。 kなんとかの人が言ってるように、カッコなしでもそうなるのは罠だがw http://mevius.5ch.net/test/read.cgi/tech/1405822579/99
100: デフォルトの名無しさん [] 2014/11/09(日) 12:10:23.68 ID:6nixZySy lispだと(a)とaの違いかな http://mevius.5ch.net/test/read.cgi/tech/1405822579/100
101: デフォルトの名無しさん [sage] 2014/11/09(日) 16:44:48.42 ID:7O7eobU9 >> 100 そんな感じ。名前のない構造体 http://mevius.5ch.net/test/read.cgi/tech/1405822579/101
102: デフォルトの名無しさん [sage] 2014/11/09(日) 20:23:26.03 ID:15ZMIIuR いや名前ある、タプル http://mevius.5ch.net/test/read.cgi/tech/1405822579/102
103: デフォルトの名無しさん [sage] 2014/11/10(月) 01:34:25.20 ID:zIX5GD/A ここって正規表現エンジンの話もいいのかな nfaとdfaのハイブリッドエンジンを実装したいんだけど dfaの中にnfaがあったらどう処理するかとかどこまでdfaにしていいかとかさっぱり分からない 調べてもon-the-flyという単語ぐらいしか出てこなくて実装方法とかは見つからない 知ってる人いたら教えてほしい http://mevius.5ch.net/test/read.cgi/tech/1405822579/103
104: デフォルトの名無しさん [sage] 2014/11/10(月) 07:33:01.86 ID:XDoaKxdi schemeの自作コンパイラ作成の過程で、cps変換につまづいています。 よくネット上で「簡単な処理で実現できる」という感じで書いてあるのを良く見るのですが、 実際にやろうとするとなかなかできません。 具体的に何をやったらいいのでしょうか? ちなみにlambdaでのcps変換はぎりぎり理解できてると思います。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/104
105: デフォルトの名無しさん [] 2014/11/10(月) 09:06:04.50 ID:hP+YfTbo Scheme使ってるならEoPLの最後のほうの章読んだらええで。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/105
106: デフォルトの名無しさん [sage] 2014/11/10(月) 12:08:25.51 ID:s3EMdqhf >>103 つ ドラゴンブック, lazy transiyiOn evaluation 古典実装だとoriginal egrep http://mevius.5ch.net/test/read.cgi/tech/1405822579/106
107: デフォルトの名無しさん [sage] 2014/11/10(月) 17:06:44.93 ID:G4zfChd8 >>100 Lisp の (a) は (a . nil) だからちょっと違う。 >>101 構造体とかそういう別の名前を持ち出したりするとややこしくなるだけ。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/107
108: デフォルトの名無しさん [sage] 2014/11/11(火) 02:10:53.26 ID:85SNGvMw >>106 ありがとう でも自分の望んでるのとは違うみたい http://mevius.5ch.net/test/read.cgi/tech/1405822579/108
109: デフォルトの名無しさん [sage] 2014/11/12(水) 01:44:27.15 ID:DTrQhtqP >>108 この延長線上にある話だと理解できてないか、 SFA(semi-deterministic finite automata)を勘違いしてon-the-flyだと思っている。 前者ならGNU Rxを読めばいい。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/109
110: デフォルトの名無しさん [sage] 2014/11/12(水) 01:57:21.21 ID:/4vNcbkH >>109 多分後者かもしれない 自分の考えてるのは(X)*aときたら 1 ==(X)==> 1 1 ==a==> 2 というdfaを作って次のノードへの遷移条件が文字じゃなくてnfaなら それを優先して見てマッチしたらその先に行く方法を考えてた それならnfaとdfaをうまく組みあわせられると思って あとsfaは今初めて知った sfaとかon-the-flyは調べてもちゃんとした説明が出てこなくて困る http://mevius.5ch.net/test/read.cgi/tech/1405822579/110
111: デフォルトの名無しさん [sage] 2014/11/12(水) 01:59:11.10 ID:/4vNcbkH あとnfaだけかdfaだけなら偶然持ってたドラゴンブックやネットの情報が十分にあって実装出来た ハイブリッドにする方法が分からなくて途方に暮れてる http://mevius.5ch.net/test/read.cgi/tech/1405822579/111
112: デフォルトの名無しさん [sage] 2014/11/12(水) 11:39:32.29 ID:b8dDlQST SFAでググったらランク上位の日本語の記述がこれだった http://www.slideshare.net/mobile/sinya8282/ss-12170832 役に立つかは知らないけどマッチングの並列実行だってさ http://mevius.5ch.net/test/read.cgi/tech/1405822579/112
113: デフォルトの名無しさん [sage] 2014/11/15(土) 04:11:51.30 ID:2wuAQ8Y6 DFAで出来ないこと、やると遅いことをNFAでやる。 DFAにならない正規表現の拡張や状態が爆発するn回繰り返しなど。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/113
114: 片山博文MZ次期CEO ◆T6xkBnTXz7B0 [] 2014/11/29(土) 15:46:21.26 ID:AWiICJMh Caperで、Haxe用のパーサーが作れるようになったらしいぞ!!! http://jonigata.github.io/caper/caper.html http://mevius.5ch.net/test/read.cgi/tech/1405822579/114
115: デフォルトの名無しさん [sage] 2014/11/29(土) 19:24:39.29 ID:bjHueY84 ということはjavaとphpとC#に対応したということか http://mevius.5ch.net/test/read.cgi/tech/1405822579/115
116: デフォルトの名無しさん [sage] 2014/11/29(土) 19:25:23.30 ID:bjHueY84 って元からしてんじゃん… http://mevius.5ch.net/test/read.cgi/tech/1405822579/116
117: デフォルトの名無しさん [sage] 2014/12/04(木) 17:14:51.41 ID:hjxCxC4V スレ立てるまでもない質問はここで 139匹目から来ました。 JavaCCで負の数と引き算を識別したいんですけど、どう定義したらいいでしょうか? 以下現状の一部抜粋(メソッド名についてはスルーしてください) void enzan3() : {} { enzan4()((<TASU>|<HIKU>)right=enzan4())* } void enzan4() : {} { enzan5()((<KAKERU>|<WARU>)enzan5())* } void enzan5() : {} { <MOZI>|[<HIKU>]<SUUZI>|"(" e=enzan3() ")
" } http://mevius.5ch.net/test/read.cgi/tech/1405822579/117
118: デフォルトの名無しさん [sage] 2014/12/04(木) 18:52:41.09 ID:jHjIGczB >>117 そのスレの997以降のはやってないの? number=0..9 plus::=<expr> + <expr> minus::=<expr> - <expr> expr::=<number>|<plus>|<minus> な感じになるだろうし 単項のマイナスはexprにかからない形式で-が出てきた時だし間違いようがなさそうに思うんだけど http://mevius.5ch.net/test/read.cgi/tech/1405822579/118
119: デフォルトの名無しさん [sage] 2014/12/04(木) 20:49:24.04 ID:hjxCxC4V あ。 そこの >単項演算子と二項演算子の区別 についてはまだ調べてないです。 調べてみます。 二項演算子+,-の間に二項演算子*,/を含む式があって、 その中にカッコか数字か変数呼び出しなどがあるように定義するのではないのですか? 例えば -1 1-2 -2*4 2/(-2+5) などの書き方が使えるようになるといいなとか考えています。 >>118 ::=って書き方は確かBNF記法でしたっけ? その書き方についてぜんぜん知らないのでそれも調べてみます。 http://mevius.5ch.
net/test/read.cgi/tech/1405822579/119
120: デフォルトの名無しさん [sage] 2014/12/06(土) 17:09:31.69 ID:evyQIgPT みんなBNFとかやってるのか char配列にして解析してるから常に最後が';'だと楽なんだよね '{'で+1、'}'で-1、+-0の状態で';'がきたらその構文が完結する int a;, class {}; switch{}; void hey(){}; if(true){}; for(){}; http://mevius.5ch.net/test/read.cgi/tech/1405822579/120
121: デフォルトの名無しさん [sage] 2014/12/06(土) 17:17:29.59 ID:djm9MkQZ 演算子の優先順位はどうしてんの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/121
122: デフォルトの名無しさん [sage] 2014/12/06(土) 17:30:21.62 ID:5oGFUyw+ べつに区切り文字が = だろうが : だろうが ::= だろうが BNF は BNF だ http://mevius.5ch.net/test/read.cgi/tech/1405822579/122
123: 117 [sage] 2014/12/06(土) 23:05:55.88 ID:BPhK2Nlg >>120 >みんなBNFとかやってるのか JavaCCの場合字句解析でトークン列に分解してくれて、 >>117にあるようにそのトークンの並びを書いて構文解析の定義をします。 なのでBNF記法とは違った書き方になります。 >>121 >演算子の優先順位はどうしてんの? いい説明文が思い浮かばないので、 まずは例として1+2*3/4-5という式を構文木にしたものを以下にアップします。 http://fast-uploader.com/file/6973429321730/ こんなかんじのまとまりです。 演算子:/ 左辺:
3(enzan5) 右辺:4(enzan5) → ?(enzan4) 演算子:* 左辺:2(enzan5) 右辺:?(enzan4) → ?(enzan4) 演算子:- 左辺:?(enzan4) 右辺:5(enzan5) → ?(enzan4) 演算子:+ 左辺:1(enzan5) 右辺:?(enzan4) →?(enzan3) http://mevius.5ch.net/test/read.cgi/tech/1405822579/123
124: 117 [sage] 2014/12/06(土) 23:06:51.00 ID:BPhK2Nlg とりあえずenzan3の定義の先頭にマイナスの記号があるかもしれないという意味合いで 以下のようなコードに変えてみました。 void enzan3() : {} { [<HIKU>]enzan4() //★ ((<TASU>|<HIKU>)enzan4())* } void enzan4() : {} { enzan5() ((<KAKERU>|<WARU>)enzan5() } void enzan5() : {} { <MOZI>|<SUUZI>|"(" enzan3() ")" } <>:トークン |:左右のどちらかの構文(||やOr演算子のようなもの) []:省略可能構文
http://mevius.5ch.net/test/read.cgi/tech/1405822579/124
125: 117 [sage] 2014/12/06(土) 23:07:27.16 ID:BPhK2Nlg すると、以下のような警告が出ました。 Warning: Choice conflict in (...)* construct at line 608, column 9. Expansion nested within construct and expansion following construct have common prefixes, one of which is: <HIKU> Consider using a lookahead of 2 or more for nested expansion. 内容は選択の突出(Choice conflict)と言うもので、 私が作った構文の定義があいまいのようで 608行目(ここでは★を付けた行)の定義が他の定義とかぶっているらしく、 先頭に出てく
る<HIKU>トークンが共通点らしいです。 そもそもの考え方が間違っているかもしれませんが、 それを抜きにしてもまずなぜこのような警告が出ているかわかりません。 一体なぜ出ているかわかる人いれば教えてださい。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/125
126: デフォルトの名無しさん [sage] 2014/12/06(土) 23:08:41.58 ID:q7blqefO >>120 java(というよりC)のforは()の内部に;が出てくるのが >>119 javaccの書き方と大差ないみたいよ http://mevius.5ch.net/test/read.cgi/tech/1405822579/126
127: デフォルトの名無しさん [sage] 2014/12/06(土) 23:27:12.88 ID:5oGFUyw+ この文脈でconflictは「衝突」と言う。 そのメッセージの通り、複数の定義で共通してるトークンがあるから、どっちの定義のほうだとして 解釈していいかわからないからエラーになる。 そのメッセージでは「Consider using a lookahead of 2 or more for nested expansion.」2個あるいはそれ以上の 先読みを使うことを検討してみろ、と言っているが、それに従ったところでうまくいくかどうかは わからんけどね。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/12
7
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 522 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s