public void visit(semantic_check _semantic_check) { bw.Write((Int16)188); write_semantic_check(_semantic_check); }
public void write_semantic_check(semantic_check _semantic_check) { write_statement(_semantic_check); if (_semantic_check.CheckName == null) { bw.Write((byte)0); } else { bw.Write((byte)1); bw.Write(_semantic_check.CheckName); } if (_semantic_check.param == null) { bw.Write((byte)0); } else { bw.Write((byte)1); bw.Write(_semantic_check.param.Count); for(Int32 ssyy_i = 0; ssyy_i < _semantic_check.param.Count; ssyy_i++) { if (_semantic_check.param[ssyy_i] == null) { bw.Write((byte)0); } else { bw.Write((byte)1); _semantic_check.param[ssyy_i].visit(this); } } } bw.Write((byte)_semantic_check.fictive); }
public override void visit(semantic_check _semantic_check) { }
public statement MyStmt(expression ex, statement st) { // Проверить, что в ex - целый тип // Сделать специальный узел для проверки new semantic_check("Тип проверки",params syntax_node[] ob) // Включать этот узел первым для "сахарных" узлов синтаксического дерева var sc = new semantic_check("ExprIsInteger", ex); var id = new ident("#my"); var idlist = new ident_list(id); var typ = new named_type_reference("integer"); var one = new int32_const(1); var vdef = new var_def_statement(idlist, typ, one, definition_attribute.None, false, null); var vstat = new var_statement(vdef, null); var ass = new assign(new ident("#my"), one, Operators.AssignmentAddition); var stlistwhile = new statement_list(st); stlistwhile.Add(ass); var bin = new bin_expr(id, ex, Operators.LessEqual); var wh = new while_node(bin, stlistwhile, WhileCycleType.While); var stlist = new statement_list(sc); stlist.Add(vstat); stlist.Add(wh); return stlist; }
public void read_semantic_check(semantic_check _semantic_check) { read_statement(_semantic_check); if (br.ReadByte() == 0) { _semantic_check.CheckName = null; } else { _semantic_check.CheckName = br.ReadString(); } if (br.ReadByte() == 0) { _semantic_check.param = null; } else { _semantic_check.param = new List<syntax_tree_node>(); Int32 ssyy_count = br.ReadInt32(); for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++) { _semantic_check.param.Add(_read_node() as syntax_tree_node); } } _semantic_check.fictive = (int)br.ReadByte(); }
public void visit(semantic_check _semantic_check) { read_semantic_check(_semantic_check); }
public override void visit(semantic_check _semantic_check) { throw new NotImplementedException(); }