オレオレ小型言語 NO001 演算子案

[iscript]
var opr_s = %[];
opr_s.set_ID = 1111;
opr_s.set_opr = 1112;
opr_s.push_p1 = 1113;
opr_s.push_p2 = 1114;
opr_s.calc = 1121;
opr_s.add = 1211;
opr_s.sub = 1212;
opr_s.mul = 1213;
opr_s.div = 1214;
opr_s.mod = 1215;
opr_s.join = 1216;
opr_s.add_set = 1221;
opr_s.sub_set = 1222;
opr_s.mul_set = 1223;
opr_s.div_set = 1224;
opr_s.mod_set = 1225;
opr_s.join_set= 1226;
opr_s.pp = 1411;
opr_s.ppp = 1412;
opr_s.mm = 1413;
opr_s.mmm = 1414;
opr_s.minus= 1415;
opr_s.plus = 1416;
opr_s.eq = 1511;
opr_s.neq = 1512;
opr_s.lt = 1521;
opr_s.le = 1522;
opr_s.gt = 1523;
opr_s.ge = 1524;
opr_s.not = 1611;
opr_s.and = 1612;
opr_s.or = 1613;
opr_s.xor = 1614;
opr_s.b_not = 1621;
opr_s.b_and = 1622;
opr_s.b_or = 1623;
opr_s.b_xor = 1624;

var opr = %[];
opr[“set_ID”] = 1111;
opr[“set_opr”] = 1112;
opr[“push_p1”] = 1113;
opr[“push_p2”] = 1114;
opr[“calc”]= 1121;
opr[“!+”] = 1211;
opr[“!-“] = 1212;
opr[“!*”] = 1213;
opr[“!/”] = 1214;
opr[“!//”] = 1215;
opr[“!&/”] = 1216;
opr[“!+=”] = 1221;
opr[“!-=”] = 1222;
opr[“!*=”] = 1223;
opr[“!/=”] = 1224;
opr[“!/==”]= 1225;
opr[“!&/=”]= 1226;
opr[“!++”] = 1411;
opr[“!+++”]= 1412;
opr[“!–“] = 1413;
opr[“!—“]= 1414;
opr[“!-/”] = 1415;
opr[“!+/”] = 1416;
opr[“!==”] = 1511;
opr[“!!=”] = 1512;
opr[“!<"] = 1521;
opr[“!<="] = 1522;
opr[“!>”] = 1523;
opr[“!>=”] = 1524;
opr[“!!”] = 1611;
opr[“!&&/”]= 1612;
opr[“!||”] = 1613;
opr[“!^”] = 1614;
opr[“!!b”] = 1621;
opr[“!&&/b”]= 1622;
opr[“!||b”] = 1623;
opr[“!^b”] = 1624;
[endscript]
[s]

吉里吉里に定数はないので、
演算子を定数として扱うこと前提で、
ハッシュに入れてみました。

演算子は!から始めます。
そうすることによって、
演算子以外で制御文字の
選択肢が広がりますって
あんまり広がらないようなw

命令等を&から始まるような仕様なので、
and命令は/で閉めてます。
単項マイナス、単項プラスは
addとmainusの演算子と別にしてます。
前置インクリメントと後置インクリメントも、
別演算子にしています。
ビットor演算等には制御文字ではない、
bという文字を含んでみました。

計算演算子では、数値演算と、実数演算を、
別にした方がいいかは考え中です。

演算の種類とか数は、決定してないので、
数値を富豪的に使ってます。
どうせ吉里吉里はlong long intしかないしw

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です