Rule 式の評価順
HerbertOnlineJudgeの場合、式の内側、つまりカッコの内側から評価されて行きます。
例を追いながら見ていきましょう。
a(X):XXXX // プロシージャ定義部分 b(X):XXr // プロシージャ定義部分 c(X):X // プロシージャ定義部分 a(b(c(sss))) // 式実行部分
*式の下線部が現在評価している評価部分になります。
- まずは式の内側"a(b(c(sss)))"が評価されます
- これはc(X):Xですので、
- "a(b(sss))"となります。
- 次にカッコの内側"a(b(sss)))"が評価されて
- b(X):XXrなので
- "a(ssssssr)"となります
- 最後に一番外側、最後のカッコを評価するので
- "a(ssssssr)"となって
- a(X):XXXXなので
- "ssssssrssssssrssssssrssssssr"となり、
- 無事全部の式が評価され終わりました。
式部分だけ抜き出して羅列するとこうなります。
a(b(c(sss))) a(b(sss)) a(ssssssr) ssssssrssssssrssssssrssssssr