「コンパイラ・スクリプトエンジン」相談室16 (649レス)
上下前次1-新
59: デフォルトの名無しさん [sage] 2014/11/01(土) 19:25:31.66 ID:etXlBO/A(1) AAS
ファイル名…かな
60: デフォルトの名無しさん [sage] 2014/11/01(土) 20:57:55.11 ID:68QCuiUg(1) AAS
エラー表示は?だけでいい
というネタがあったな
61: デフォルトの名無しさん [sage] 2014/11/02(日) 00:04:36.51 ID:FPvqJpqA(1/3) AAS
人間が見てるのとコンパイラが解釈してるので大きくズレがある場合とか
エラーメッセージ見てわからんことが多々ある
xxの前にxxがあります/ありません系のエラーはウンザリ
62: デフォルトの名無しさん [sage] 2014/11/02(日) 00:22:55.85 ID:E/aMB+tP(1) AAS
print " _人人 人人_ \n",
"> 突然の死 < ", col, ",", row, " in ",filename,":", reason, "\n",
"  ̄Y^Y^Y^Y ̄\n";
die;
楽して素晴らしい方向を考えた
63: デフォルトの名無しさん [sage] 2014/11/02(日) 04:19:14.28 ID:l3Xq9EsR(1/2) AAS
$ nmlc -run examples/lablgl/triangle.nml
Fatal error: exception Failure("
_人人 人人_
> 突然の死 < parse error line 33
 ̄Y^Y^Y^Y^Y ̄
")
って出るようにしてみた。
64(1): デフォルトの名無しさん [sage] 2014/11/02(日) 07:10:13.81 ID:Pf8ySLA3(1) AAS
何のエラーか
なぜ起こったか
どうすれば良いか
のうちどこまでエラー表示するか
表示しないものはマニュアルに書くか
統一しておくと良い
65: デフォルトの名無しさん [sage] 2014/11/02(日) 10:22:44.88 ID:P2QTHoYV(1) AAS
何のエラーか数字で提示
あとはknowledge baseで
knowledge baseは迷宮
66: デフォルトの名無しさん [sage] 2014/11/02(日) 11:43:14.80 ID:6U4Atlhd(1) AAS
基本的には書いた人の頭のエラーだからな。
コンパイラ的には「チェンジ!チェンジ!この子変えて!!!」
だけでいい。
67: デフォルトの名無しさん [] 2014/11/02(日) 12:31:43.49 ID:4dYx0WR7(1) AAS
> 関西型プログラミング言語のひとつ Kyoto のコンパイラは,文法ミスのあるコードを与えると「ふうがわりなコードどすなぁ」とだけ返すので,何が間違っているかはこちらで推測する必要がある.
68: デフォルトの名無しさん [sage] 2014/11/02(日) 12:39:13.58 ID:FPvqJpqA(2/3) AAS
何回も間違ったらぶぶ漬けが出てきそうだな
69: デフォルトの名無しさん [sage] 2014/11/02(日) 12:58:18.94 ID:i2BOrYsG(1) AAS
>>64
> どうすれば良いか
これは余計なお世話だわ
70: デフォルトの名無しさん [sage] 2014/11/02(日) 13:03:44.74 ID:FPvqJpqA(3/3) AAS
この道路は工事中なので次の迂回路をご利用ください
71: デフォルトの名無しさん [sage] 2014/11/02(日) 16:35:04.02 ID:l3Xq9EsR(2/2) AAS
コンパイル速ければ、エラーは1個で十分だったりするよなぁっとか。
大量に出すなら、一番先頭のエラーを一番下に出すと嬉しいとか。
72: デフォルトの名無しさん [sage] 2014/11/03(月) 12:49:03.39 ID:ljM6XCm0(1) AAS
>> 70
迂回は出来ないんだなぁ
73: デフォルトの名無しさん [sage] 2014/11/03(月) 18:22:08.25 ID:6fFurIEN(1) AAS
最近のghcとかだと、関数名をタイポすると似た存在する関数名を示してくれる。外してる時もあるけど。
ああいう親切さをもっと充実させるのも方向性としてはありだと思う。
あらゆるコンパイルエラーがクラウドサーバに送られ続けて典型的なミスを蓄積し続ける、とかね。
74: デフォルトの名無しさん [sage] 2014/11/04(火) 11:17:19.99 ID:bZGUB4M2(1/3) AAS
大量のデータをまとめて整理した結果をどこかで見たけど
よくあるスペルミス・インポート忘れ・宣言忘れが飛び抜けていて
それ以外はごくわずかでどうでもいいという印象だった
75: デフォルトの名無しさん [sage] 2014/11/04(火) 11:19:32.39 ID:bZGUB4M2(2/3) AAS
中級者以上と入門者はつまずく所が全く違うから
後者のデータだけを集めれば「入門者に最適」な言語やツールが作れるかもしれない
76(1): デフォルトの名無しさん [sage] 2014/11/04(火) 13:56:57.87 ID:OXvDS9Yh(1) AAS
C言語は、研究結果;はあった方が良いみたいな話を聞いた事があるような気がする。
けど、最後だけ無しとかだったのかもしれないし、良く覚えてないなぁ。
今作ってる言語は必要な所だけ;を書くって作ってるのだけど。
初心者には難しいのかもしれないです。
77: デフォルトの名無しさん [sage] 2014/11/04(火) 15:36:24.07 ID:bZGUB4M2(3/3) AAS
気の利いたエディタサポートまで考えるなら改行をまたぐ構文を禁止すべき
VBはそうなってる
78(1): デフォルトの名無しさん [sage] 2014/11/04(火) 15:58:19.03 ID:vqrMdBMn(1) AAS
lispとかでマクロ展開したときに中でエラーが起こったら行と桁の表示は諦めるしかないのかな
前に作ったとき展開後も展開前の行を引き継ぐやり方をしてたけど
79: デフォルトの名無しさん [sage] 2014/11/04(火) 17:04:17.39 ID:99dxtSJ/(1) AAS
>>78
トークンに文字列だけじゃなく、もとあった位置の情報も付けたら?
>>76
どんな言語でも、ある程度本格的なプロダクトなら、たいてい、「やたら長くなるから改行を挟みたい式」と
「やたら短くて似たようなのが連続するから1行にまとめたい文」の両方が出てくるので、
どちらを強制するのも一長一短。
構文的には (a, b, c, d) と {a; b; c; d;} の、どちらも似たようなものだけど、機械的なコード生成では
後者のほうが以前は楽だった(最近は可変長配列みたいなオブジェクトに入れて、最後に
joinとか、ライブラリが充実してる言語を使うのが普通なので、あまり差は無い)。
人間の作業としては、複数行にまたがるものでは前者のほうはちょっとめんどい。
(最後の行を削ったあとで、前の行の最後も削る必要があるので)
{a,
b,
c}
みたいに閉じカッコを行末に付けてしまえばそうでもないかもだが。
あとそもそもC言語の構文では ; の規則がちょっと変則的。
80: デフォルトの名無しさん [sage] 2014/11/04(火) 23:11:55.77 ID:DC7Ttoit(1/2) AAS
Lispマクロのデバッグはちょっと難しいよな。
backquoteのように構文上の構造を引き継ぐような奴ばかりならいいんだけど。
81: デフォルトの名無しさん [sage] 2014/11/04(火) 23:12:32.22 ID:DC7Ttoit(2/2) AAS
デバッグ→デバッグ情報
82: デフォルトの名無しさん [sage] 2014/11/04(火) 23:31:17.91 ID:6PskSs9/(1) AAS
複雑なマクロでもたいていは展開系見れば何とかなるね。それでも動かないマクロがたまーにあって辛いけど。
83(1): デフォルトの名無しさん [] 2014/11/04(火) 23:40:21.11 ID:cufVHbaO(1) AAS
自作のコンパイラなりなんなりはデバッグと最適化を考えたらなにも出来ない
むしろ潔く投げ捨てる勢いと割り切りで走らないとダメっしょ
俺様考えたルールで動いた万歳終わりな感じ
四則演算と条件文、あとGOTOなりCALLなりがあれば立派
それ以上の高度化は努力しだいってことで
それとも大人しくCommon Lispあたりを使って妥協するとか
Lispだと関数を生成して実行できるんだよね
例えば入力画面の項目数とか要件とかを与えて関数の形で生成して実行な感じの
俺様コンパイラ、Lispコード生成するからコンパイルや実行デバッグはそちらでオネガイみたくw
上下前次1-新書関写板覧索設栞歴
あと 566 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.141s*