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つ以上の引数を持つ関数として定義する感じ。