CEXあらためCLS
CEX(仮)のことを寝ながら考えてるのだけど、やっぱ式じゃないと思った。
文を含むものだなと。
CLS: (Number|Symbol|Operator)[文]\(文\){文}
文: (式;)*
式: (センテンス,)*
センテンス: (atom )*
なかんじ。いんちき正規表現ですまぬ。用語はかなりむちゃくちゃだ。
class Sentence{//スペース区切りのCLSの集まり CLS w; } class Expression{//,で区切られるもの。 Sentence c; } class Statement{//;で区切られるもの。 Expression[] s; } class CLS{ Atom k; Statement array; Statement paren; Statement block; }
て感じかなと。でStatementが親元かなぁと。
a = (1 + (2 * 3));
は、
a.=(1.+(2.*(3)));
は、
a.opEqual(1.opPlus(2.opMult(3)));
で、
equal(a,plus(1,mult(2,3)));
かなみたいな。
だから、
a = (1 + (2 * 3,4 * 5));
は
a.opEqual(1.opPlus(2.opMult(3),4.opMult(5)));
で
equal(a,plus(1,mult(2,3),mult(4,5)));
かなと。うーん。plusの定義は2つ以上の引数を持つ関数として定義する感じ。