[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 02/13 17:41 / Filesize : 228 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:30:50]
言語仕様や処理系の話題に関するスレッドです。

字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,CPS変換,
レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,それに
VM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。

前スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)
3 pc5.2ch.net/test/read.cgi/tech/1070089173/ (前スレ)

関連リンクは多分 >>2-10 あたり

835 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:17:09]
>>834
では何の話なの?わかりやすく教えて。

836 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:18:18]
本がないという理由なら、WEB上のリソースでも十分だけど。

837 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:32:26]
なぞなぞです

838 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:36:59]
>>834
関数型言語と手続き型言語では、さすがにプログラミングの定石からして
全く違うだろ。

記法が書籍毎に異なるなんてのは、良くある話。コンパイラ系の書籍だと
BNF 記法が良く出てくるが、あれも書籍毎に微妙に違ったりするし。その
あたりを自分で吸収できないようだと、専門書と取り組むのは難しい。

839 名前:デフォルトの名無しさん mailto:sage [05/01/08 18:10:28]
記法が多少違うなんてのはコンピュータに限らず、
大学で勉強すれば大抵でくわす話。


840 名前:デフォルトの名無しさん mailto:sage [05/01/09 09:13:32]
>>829
それはあんたはすでにパスカルを知っているから。
またはあんたが十分かしこいから。
よのなかの人間はあんたほど賢くないんだよ。

>>830
はげどう。
Javaが広まった理由のひとつが、「CやC++と見た目が似てるから」。
そのくらい、自分の知ってる言語に似ているかどうかは重要。かしこくない人間にとっては。


841 名前:デフォルトの名無しさん mailto:sage [05/01/09 09:53:52]
pascalライクな擬似コードくらい読めるだろ普通。
ま、おまいが読めなかったとしても
CSを志すような人間は大抵おまいより賢いから心配ご無用。
少なくともそんなつまらん理由で萎縮しない程度にはな。


842 名前:デフォルトの名無しさん mailto:sage [05/01/09 10:25:49]
>>840のように賢くない人間はコンパイラなんか書くなということだな。

843 名前:デフォルトの名無しさん mailto:sage [05/01/09 10:43:32]
大丈夫、そんな人間に自力でコンパイラなんて書けない。
時間の無駄を省けていいじゃん。
大学入試の足切りみたいなもんだと思え(入ったってついてけない奴もいるが)。




844 名前:デフォルトの名無しさん mailto:sage [05/01/09 11:46:44]
真面目な話の途中で申し訳ないんだけど、parrot って結構良いね。
これをターゲットにコンパイラ書いたら面白そう(楽出来そう)。

www.parrotcode.org/docs/

845 名前:デフォルトの名無しさん mailto:sage [05/01/09 11:50:24]
Javaの二番煎じ

846 名前:デフォルトの名無しさん mailto:sage [05/01/09 11:59:39]
JVM や CLR の系列だろうけど、ベンダーフリーでライセンスも緩いから使い易いと思う。

847 名前:デフォルトの名無しさん mailto:sage [05/01/09 12:31:33]
結構早いしな

848 名前:デフォルトの名無しさん mailto:sage [05/01/09 12:34:28]
てかParrot自体はちゃんと動くのか?
作ってもParrotのバグのせいでまともに動かなかったら悲しいぞ。

849 名前:デフォルトの名無しさん mailto:sage [05/01/09 13:31:32]
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Parrot
でかい顔するなぼけ
糞ぺrぇrはしね

850 名前:デフォルトの名無しさん [05/01/09 20:42:58]
字句解析でコードをトークン列にする際に、
if、forなどのキーワードは「keyword」という大きな
括りにするのと、それぞれ「keyword_if」、「keyword_for」
などのように細かく分けるのとどちらがよろしいでしょうか?

851 名前:デフォルトの名無しさん mailto:sage [05/01/09 20:49:53]
構文解析で必要な方。


852 名前:デフォルトの名無しさん mailto:sage [05/01/09 21:45:12]
>>850
作りたい言語似よるが、C や Pascal ライクな言語を作りたければ
後者の方が楽。

853 名前:デフォルトの名無しさん [05/01/10 02:02:26]
洗練されたPerl: Perl 6文法と正規表現
www-6.ibm.com/jp/developerworks/linux/041203/j_l-cpregex.html



854 名前:デフォルトの名無しさん [05/01/10 02:08:04]
Win32コンソール形式の実行ファイルを作りたいのですが
参考になるページはありませんか?
A := B + C
GOTO(L)
のような3番地文の中間コード形式の出力までは出来ています。

855 名前:デフォルトの名無しさん mailto:sage [05/01/10 02:39:22]
>>854
>>826

856 名前:デフォルトの名無しさん [05/01/10 09:03:09]
>854
x86ならnasmのinfoやIntelのwebサイト、
exeならPE形式、
実際の実装方法はgccのソース
を見ろよ

857 名前:デフォルトの名無しさん [05/01/10 23:52:39]
スモールコンパイラ買って着た。
結構美人


858 名前:デフォルトの名無しさん mailto:sage [05/01/11 19:31:43]
オライリyacc本が初売り在庫処分で100円だったので買ってしまった。
かなりすすけてるよ(´・ω・`)
読んでみますか。

859 名前:デフォルトの名無しさん mailto:sage [05/01/11 23:06:22]
ほ、欲しかった

860 名前:デフォルトの名無しさん [05/01/13 20:23:21]
構文解析ではよく構文木を作るって言うけど、
プログラムのデータとしてはどのように持てばいいのでしょうか?

861 名前:デフォルトの名無しさん mailto:sage [05/01/13 20:36:53]
リスト(木のノードも含む)とか配列じゃないかね。
LISPの場合はコードがそのまんま構文木なんだよな。
LISPに慣れてるならLISPと同じ構造を目指すとよい。
でもLISPのセルは普通の言語だとGCないから扱いにくい。


862 名前:デフォルトの名無しさん mailto:sage [05/01/13 20:48:38]
a = (b[0] + 2) * 3;

だったら、

       root
       |
      assign
      /  \
      a    |
          mul
         /  \
        |    3
        add
       /  \
      |    1
      |
      array_ref
     /  \
     b    0

LISPのS式で表現すると
(assign a (mul (add (array_ref b 0) 1) 3))
S式は木のデバッグに都合がいい
gccの内部表現もそうだったかと

863 名前:デフォルトの名無しさん mailto:sage [05/01/13 20:52:15]
型やシンボルの属性情報はどうしてます?




864 名前:デフォルトの名無しさん mailto:sage [05/01/13 21:06:58]
記号表で別管理

865 名前:デフォルトの名無しさん mailto:sage [05/01/13 21:13:32]
(´・∀・`)ヘー


866 名前:デフォルトの名無しさん [05/01/13 23:45:42]
treeなんて意識しなくても大丈夫だよ。
あれはあくまでも学問。実務はパーサがやってくれる。


867 名前:デフォルトの名無しさん mailto:sage [05/01/14 00:20:49]
>>866
構文解析して即コードに落としちゃう場合はともかく、もう一ステージ挟む場合
(最適化するとか)は、いちど明示的にツリー作る必要があるよ。

868 名前:860 mailto:sage [05/01/14 00:39:11]
>>861-862
なんとなく考えが具現化してきました。
ただ今一分からないのが、字句解析で得たトークンを
構文解析でtree構造のデータとして持つとして
それを後の意味解析でどのように使うのでしょうか?

869 名前:デフォルトの名無しさん mailto:sage [05/01/14 00:43:25]
>>868
単純な最適化だと

        add
       /  \
       2     1

ってツリーがあったら、コンパイル時に計算して 3 に置き換えちゃうとか。

870 名前:デフォルトの名無しさん mailto:sage [05/01/14 01:03:05]
データフロー解析をする時は、ツリーを3つ組表現すると楽かも

871 名前:デフォルトの名無しさん mailto:sage [05/01/14 08:43:21]
>>869のような定数伝播ぐらいなら1パスでもできる
ただし1 + a + 2とかをa + 3にはできない
1 + aを読み終えた時点の出力を保留する様な仕組みは
もはや2パスとみなせるし、そこまでするなら木を作った方がいい


872 名前:デフォルトの名無しさん [05/01/14 13:00:57]
自分の自作言語でC言語の構造体のアラインメントを
エミュレートしたいのですが、メンバオフセットの決め方がよくわかりません。

例えば#pragma pack(4)のとき、

typedef struct {
 int a; // offset 0
 char b[1]; // offset 4
 int c; // offset 8
} X;

となるのはいいんですが、

typedef struct {
 int a; // offset 0
 char b[1]; // offset 4
 short c; // offset 6
 short d; // offset 8
 int e; // offset 12
} Y;

shortが offset=6になる理屈がわかりません。
これは暗黙的にwordのアラインメントも働いているということでしょうか?


873 名前:デフォルトの名無しさん mailto:sage [05/01/14 14:02:03]
>>872
かなり複雑だよ

typedef struct {
char c[1];
short s;
char cc[1];
} C;

これのsizeof(C)は6。
Cのアラインメントはshortを持つので2になる。
これをメンバに持つ構造体を作るとわかる。
typedef struct {
C c[3];
}CC;
これで sizeof(CC) すると 18。

次に
typedef struct {
 char c[1];
 short s;
 char cc[1];
 int i;
} D;
これのsizeof(C)は12。
んで、アラインメントはintを含んでるので4。
typedef struct {
D d[3];
}DD;
sizeof(DD) => 36
つまり構造体はその中のメンバの基本型のサイズが関係する
例えばcharしか持たない構造体はアラインメントが1になる



874 名前:デフォルトの名無しさん [05/01/14 16:10:43]
>>873

仰るとおり理解するのが大変でした。
アラインメント指定された値は、あくまでもその大きさの型が出現した
ときに影響するってことで、それ以下のサイズについても
アラインメント指定された値以下であれば位置調整をしなくてはならない
ということですかね。

> 例えばcharしか持たない構造体はアラインメントが1になる

この言葉でようやくわかりました。

構造体を外から見るだけじゃなくて、その中の基本型まで遡って
把握しないと作れませんね。
お答えありがとうございました。

875 名前:デフォルトの名無しさん mailto:sage [05/01/14 18:45:57]
難しいね。

λ......         λ......       λ......
  λ......            λ......

876 名前:デフォルトの名無しさん [05/01/14 19:52:58]
名前の分からないライブラリ関数を、動的に与えられた名前を用いて
コールすることとかって出来ますか?


877 名前:デフォルトの名無しさん mailto:sage [05/01/14 19:54:21]
アドレスが分かればできるよ

878 名前:デフォルトの名無しさん mailto:sage [05/01/15 00:43:44]
ld

879 名前:デフォルトの名無しさん mailto:sage [05/01/15 09:18:20]
興味があったのでアラインメントの計算を考えてみました。

構造体が
typedef struct {
 char a;  // 1byte
 int  b;  // 4byte
 char c;  // 1byte
 double d;  // 8byte
} C; とすると、

 #define N 4 // 構造体メンバ数
 int member_size[N] = { 1, 4, 1, 8, }; // 各メンバのサイズ(構造体Cの場合)
 int member_offset[N]; // メンバのオフセット(求める値)
 #define PACK 2 // #pragma pack() への指定サイズ

 member_offset[0] = 0; // 1個目のメンバのオフセットは0固定
 int pos = 0; // 次のメンバを置くことができる位置
 pos += member_size[0]; // 1個目のメンバのサイズ分すすめる

 for(int i = 1; i < N; ++i){
  int size = member_size[i];
  /* 次のメンバのオフセットをoffsetとすると、
     offset >= pos;
     offset >= min(PACK * n, size * m); // n, mは0, 1, 2... */
  int n = (pos + (PACK - 1)) / PACK;
  int m = (pos + (size - 1)) / size;
  int offset = min(PACK * n, size * m);

  member_offset[i] = offset;
  pos = offset + size; // 次のメンバを置ける位置を再計算
 }

880 名前:デフォルトの名無しさん [05/01/15 11:23:28]
言語処理って文型向きでしょうか?理系向きでしょうか?


881 名前:デフォルトの名無しさん mailto:sage [05/01/15 11:27:32]
玄人向き

882 名前:デフォルトの名無しさん mailto:sage [05/01/15 11:28:11]
よくわからんが、構造体がネストしてたらそれを再帰的にやるんだろう。

Cの型定義をパースしてサイズやオフセットを返すだけの
モジュールでも作れば需要ありそうだな。
C言語作ってるならともかく、自作言語のFFI周りの作成とかでは
誰もがやりたくない部分の1つだし。


883 名前:デフォルトの名無しさん mailto:sage [05/01/15 11:30:26]
>>880
理系崩れ向き



884 名前:デフォルトの名無しさん mailto:sage [05/01/15 11:32:42]
>>880
廃人ムキ!

885 名前:デフォルトの名無しさん [05/01/15 13:05:54]
>>882
既存のC処理系にあわせなければならないなら
offsetofやsizeofを表示するプログラムを生成して
Cコンパイラにやらせるのが楽そうだな。どうせ
どう配置されるかなんて処理系依存なんだし、
いちいち調べるのはかったるい。



886 名前:デフォルトの名無しさん mailto:sage [05/01/15 14:07:25]
構造体のアラインメントの話、結構興味深いね。
久々のヒット、トンクス。

887 名前:デフォルトの名無しさん mailto:sage [05/01/15 14:10:17]
質問ですが、言語処理系の仕事って年収どれぐらいもらえるのでしょうか?
もちろん、条件によりさまざまだと思いますが、
平均的な所を知りたく思います。

お金の話は、禁句かもしれまえんが、
生活が出来ての仕事だと思います。


888 名前:デフォルトの名無しさん mailto:sage [05/01/15 14:29:32]
「『言語処理系』の仕事」って業種があるのですか?

私は寡聞にして聞かない。

889 名前:デフォルトの名無しさん mailto:sage [05/01/15 14:38:52]
>>887
実際に、応募してみれば良いじゃん。

890 名前:デフォルトの名無しさん mailto:sage [05/01/15 14:40:29]
   俺の”コンパイラ屋” 想像図↓

                 ┌─┐
                 |コ.|
                 |ン |
                 │パ│
                 │ゐ│
                 │ラ .|
                 │屋 .|
                 │ !!.│
                 └─┤     ∧∧
                    │     ( `Д)
                 | ̄ ̄ ̄|─□( ヽ┐U
                  ̄◎ ̄   ◎−>┘◎

891 名前:デフォルトの名無しさん mailto:sage [05/01/15 15:03:15]
まあ実際そんなもんだ

892 名前:デフォルトの名無しさん mailto:sage [05/01/15 15:03:25]
流しのコンパイラ屋や一匹狼のコンパイラ屋なんて聞かないから
メーカーのコンパイラ開発部門の社員に過ぎないだろうよ。
サラリーマンとして給料をもらうだけ。

893 名前:デフォルトの名無しさん mailto:sage [05/01/15 15:05:29]
Digitalmarsとかは最初は一匹狼のコンパイラ屋だったに違いない



894 名前:デフォルトの名無しさん mailto:sage [05/01/15 15:29:55]
>>892
そのサラリーマンの給料が知りたい、って話じゃないの? IT 系といっても
給料はピンキリだからなぁ。

個人的には、職種よりも企業の方が効いて来るに一票だが。Microsoft なら
たぶん高いよ。

895 名前:デフォルトの名無しさん mailto:sage [05/01/15 15:38:18]
スレ本来の技術的な話題で湧いた直後なのに・・。 可哀想な俺達。

896 名前:デフォルトの名無しさん [05/01/15 20:00:18]
>>894
おれも、そう思うに1トークン。

ただ、システム系やら(言語を利用した)開発系よりかは
悪いと思われる。

>>892
> 流しのコンパイラ屋や一匹狼のコンパイラ屋

ワロタ


897 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:23:06]
アタマワルソ

898 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:30:10]
HSP作者のおにたま氏はある意味コンパイラ屋?
本とかで儲けてるんだろうな。いいなぁ。

899 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:31:53]
るby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>。hsp

900 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:32:13]
HSPはインタプリタ

901 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:32:36]
Rubyモナー

902 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:33:16]
>>898
あなたもやってみればいいのに。
俺はコンパイラじゃないけど、チャレンジしてるよ。

903 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:41:32]
matz師とおにたまでは格が違いすぎて比較にならないだろ。
ぶっちゃけ頭の出来が違う。



904 名前:デフォルトの名無しさん mailto:sage [05/01/15 20:53:22]
( ゚∀゚)・∵.ブバッ

905 名前:デフォルトの名無しさん mailto:sage [05/01/15 21:02:49]
>>887
ボクチンの場合、一般のプログラマと変わらないです。
仕事の内容が違うだけ

906 名前:デフォルトの名無しさん mailto:sage [05/01/15 22:37:33]
>>902
実は俺もコンパイラ作ってます。
って言っても字句解析までしかできてませんが・・・
つーかコンパイラ作るのって楽しすぎ。

907 名前:デフォルトの名無しさん mailto:sage [05/01/15 22:42:10]
m4スレ立てました。
ここの住人なら興味深い言語でしょう。

m4スレ
pc5.2ch.net/test/read.cgi/tech/1105796351/


908 名前:デフォルトの名無しさん mailto:sage [05/01/15 22:46:52]
どうしてもブギャーに見えるw
OpenMCL が m4 使ってたな。

909 名前:デフォルトの名無しさん [05/01/15 23:47:01]
>>890
ワロタw

おれも、今の仕事やめて憧れだった
流しのコンパイラ屋でもやろうかな?


910 名前:デフォルトの名無しさん mailto:sage [05/01/16 00:04:22]
>>909
(・∀・)イイヨーイイヨーー

911 名前:デフォルトの名無しさん [05/01/16 00:18:36]
まずは、屋台を調達しろw


912 名前:デフォルトの名無しさん mailto:sage [05/01/16 00:19:46]
老後は屋台を引いて駅前で(ry


913 名前:デフォルトの名無しさん mailto:sage [05/01/16 00:55:47]
>906
あっしはプロトタイプベースのコンパイラ・インタプリタ作成中
ベースオブジェクトの設計にメドがたってきたから、ようやっと
字句解析にいけそう。

文法作るの楽しいよね。




914 名前:デフォルトの名無しさん mailto:sage [05/01/16 01:23:21]
3件の屋台が駅前で軒を連ねるのを思い浮かべてみた。
構文解析屋、字句解析屋、コード生成屋

       / / / / / / / / / / / / / /`、 ヽ
    ./ / / / / / / / / / / / / /=== 、ヽ
    / /_ / / / / / / / / / / / /     、ヽ
  |=構 ギ_l ̄||  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
  |=文∫  =:| ||               ||
  |= 解 コ..:| ||               ||
  |=析 =:|  || グツグツ       ∧∧ ||┌────────────────
  ~~~~~~~ | ||  ==┻==     (゚Д゚;) <構文解析屋の新装開店だ、ゴラァ!
        | ||   | ̄ ̄|      (|ギ ∪ || \_______________
      ┌┴┸───────┴─┴┸┐
    ┌┴─────────────┴┐
    └─┬───────────┬─┘
        | | ̄ ̄|    | ̄  ̄|  ....:.:::::|
        | |    |  ..:::::::|     |  ....::.::.:::|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


915 名前:デフォルトの名無しさん mailto:sage [05/01/16 01:28:20]
あー邪魔くせえ

916 名前:デフォルトの名無しさん mailto:sage [05/01/16 01:50:12]
LISP勉強するのに、この本は買いでしょうか?
www.amazon.co.jp/exec/obidos/ASIN/4781904548/

917 名前:デフォルトの名無しさん mailto:sage [05/01/16 01:52:56]
ここはLISPや推薦図書のスレじゃありませんが。

918 名前:デフォルトの名無しさん mailto:sage [05/01/16 09:49:18]
ここは流しのコンパイラ屋スレです。

919 名前:デフォルトの名無しさん mailto:sage [05/01/16 10:05:53]
糞コテのほんたまって自分でアセンブラとリンカ書いたの?
それともnasmとかのフロントエンド書いただけ?

920 名前:デフォルトの名無しさん mailto:sage [05/01/16 11:41:50]
”Slim de Can”のこと言ってるなら、たぶん>>919の勘違い

921 名前:デフォルトの名無しさん mailto:sage [05/01/16 13:41:51]
"Slim de Can"って前はE言語という名前じゃなかったっけ?

922 名前:デフォルトの名無しさん mailto:sage [05/01/16 13:50:24]
Slim de CanってPEヘッダとかセクション分けは自力で吐いてるの?

923 名前:デフォルトの名無しさん mailto:sage [05/01/16 14:49:08]
そんなん聞いてどうすんだよ。てか本人に聞け。



924 名前:デフォルトの名無しさん [05/01/16 17:42:27]
収入の話だけど、最近は(善し悪しは別として)成果主義が結構
浸透していて、利益につながらないorつながりにくいと判断され
てしまっているところが多いみたい。


925 名前:デフォルトの名無しさん mailto:sage [05/01/16 17:52:34]
ふーん

926 名前:デフォルトの名無しさん mailto:sage [05/01/16 18:35:13]
学部生なのか専門学校生なのか知らんが、
こっちに移住してやってくれ ↓ 

pc5.2ch.net/test/read.cgi/prog/1071367436/

927 名前:デフォルトの名無しさん [05/01/16 22:21:21]
基本的な事で申し訳ないんですが、
文(Statement)と式(Expression)の違いは何ですか?
あと、2つの違いは言語に依存しますか?


928 名前:デフォルトの名無しさん mailto:sage [05/01/16 23:28:12]
式は結果の値を持つ。
文は制御構造しか持たず、結果の値はない。
Cは両方あるが、
Lispは式しかない。

929 名前:927 mailto:sage [05/01/17 19:39:40 ,]
・値を持つもの→式(Expression)
・値を持たないもの→文(Statement)

ということですね。明確な回答ありがとうございます。
言語によっては必ずしも両方持たないものもあるようですが、
この定義が異なるようなケースor言語ってありますか?

それとも、この定義は一般的なものですか?

質問ばかりですいません。
いろいろ調べてはいるのですが、明確に定義or区別しているものに出会えず、
いままでなんとなく津かって来ましたので。。。


930 名前:デフォルトの名無しさん mailto:sage [05/01/17 20:48:43 ]
> いろいろ調べてはいるのですが、明確に定義or区別しているものに出会えず、
その「いろいろ」に言語仕様書は入って無いのか。

931 名前:デフォルトの名無しさん mailto:sage [05/01/17 22:18:36 ]
>>929
一般用語としてはそうだけど、
最終的には言語仕様でどう言葉を定義するかによる。
C言語で戻り値voidの関数呼び出しなんて
式なのに値がないかも(void型の値を持ってるのかもしれんが)。
あと、昔オレがCに似た構文のスクリプト言語作ったときは
Cの文に似たものを文と呼ぶことにしたが、文は全て値を持ってた。

932 名前:デフォルトの名無しさん mailto:sage [05/01/17 23:34:26 ]
それは式だよ
値を返すなら文と呼ぶ意味が無いし
Rubyも制御構造が式だけど用語の整理ができてないみたい

933 名前:デフォルトの名無しさん mailto:sage [05/01/17 23:47:28 ]
>>932
用語の統一なんて、あって無いようなものだろ?




934 名前:デフォルトの名無しさん mailto:age [05/01/17 23:50:50 ]
ちょっと気になったんで、K&R(古〜)を取り出してみた。
確かに、式に含まれる式の種類や、文に含まれる文の種類は
細かく書かれてあったが、式自体の定義と文自体の定義(そ
の違いを含む)は書かれてないな。


935 名前:デフォルトの名無しさん mailto:sage [05/01/17 23:55:23 ]
C言語の <expr> ; は式文(expression-statement)と呼ばれるから
区別はつくでしょ。

式の中にif文やfor文置けるわけじゃないし
そういう拡張したならif式とかfor式と呼ぶべき






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

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

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