public bool Product() /*Product * { //semantic rule related block using C# as host language * double v; * bool save_() {v= result;result=0; return true;} * bool mul_() {v*= result;result=0; return true;} * bool div_() {v/= result;result=0;return true;} * bool store_() {result= v;return true;} * } : * Value save_ * ('*' S Value mul_ * /'/' S Value div_)* store_ ;*/ { var _sem = new _Product(this); var result = And(() => Value() && _sem.save_() && OptRepeat(() => And(() => Char('*') && S() && Value() && _sem.mul_()) || And(() => Char('/') && S() && Value() && _sem.div_())) && _sem.store_()); return(result); }
public bool Product() /*Product * { //semantic rule related block using C# as host language (block can be implemented as nested struct) * internal _Product(calc0_direct parent){parent_=parent;} * calc0_direct parent_; * double v; * internal bool save_(){v= parent_.top.result;parent_.top.result=0; return true;} * internal bool mul_(){v*= parent_.top.result;parent_.top.result=0; return true;} * internal bool div_(){v/= parent_.top.result;parent_.top.result=0;return true;} * internal bool store_(){parent_.top.result= v;return true;} * } : * Value save_ * ('*' S Value mul_ * /'/' S Value div_)* store_ ;*/ { var _sem = new _Product(this); return(And(() => Value() && _sem.save_() && OptRepeat(() => And(() => Char('*') && S() && Value() && _sem.mul_()) || And(() => Char('/') && S() && Value() && _sem.div_())) && _sem.store_())); }
public bool Product() /*Product { //semantic rule related block using C# as host language (block can be implemented as nested struct) internal _Product(calc0_direct parent){parent_=parent;} calc0_direct parent_; double v; internal bool save_(){v= parent_.top.result;parent_.top.result=0; return true;} internal bool mul_(){v*= parent_.top.result;parent_.top.result=0; return true;} internal bool div_(){v/= parent_.top.result;parent_.top.result=0;return true;} internal bool store_(){parent_.top.result= v;return true;} } : Value save_ ('*' S Value mul_ /'/' S Value div_)* store_ ;*/ { var _sem= new _Product(this); return And(()=> Value() && _sem.save_() && OptRepeat(()=> And(()=> Char('*') && S() && Value() && _sem.mul_() ) || And(()=> Char('/') && S() && Value() && _sem.div_() ) ) && _sem.store_() ); }
/*Product { //semantic rule related block using C# as host language double v; bool save_() {v= result;result=0; return true;} bool mul_() {v*= result;result=0; return true;} bool div_() {v/= result;result=0;return true;} bool store_() {result= v;return true;} } : Value save_ ('*' S Value mul_ /'/' S Value div_)* store_ ;*/ public bool Product() { var _sem= new _Product(this); return And(()=> Value() && _sem.save_() && OptRepeat(()=> And(()=> Char('*') && S() && Value() && _sem.mul_() ) || And(()=> Char('/') && S() && Value() && _sem.div_() ) ) && _sem.store_() ); }
public bool Product() /*Product { //semantic rule related block using C# as host language double v; bool save_() {v= result;result=0; return true;} bool mul_() {v*= result;result=0; return true;} bool div_() {v/= result;result=0;return true;} bool store_() {result= v;return true;} } : Value save_ ('*' S Value mul_ /'/' S Value div_)* store_ ;*/ { var _sem= new _Product(this); return And(()=> Value() && _sem.save_() && OptRepeat(()=> And(()=> Char('*') && S() && Value() && _sem.mul_() ) || And(()=> Char('/') && S() && Value() && _sem.div_() ) ) && _sem.store_() ); }