//TODO: Сделать static. И вообще этот метод нужно вынести в location т.к. он определен в нескольких местах. И не плохо было бы сделать два вида интерфейса ILocated - один для получения ILocation а второй для получения location. public SemanticTree.ILocation get_location(semantic_node sn) { SemanticTree.ILocated iloc = sn as SemanticTree.ILocated; if (iloc == null) { return null; } return iloc.Location; }
private void return_semantic_value(semantic_node se) { ret.return_value(se); }
//TODO: Избавиться от дублирования метода. public location get_location(semantic_node sn) { SemanticTree.ILocated iloc=sn as SemanticTree.ILocated; if (iloc==null) { return null; } document doc = _stv.CurrentDocument; location loc=null; //DarkStar changed //В PCU не сохраняются location некоторых конструкций, например //числовых констант итд. Поэтому необохдимо делать эту проверку. //Коля может всетаки нужно хранить? if (iloc.Location != null) loc = new location(iloc.Location.begin_line_num, iloc.Location.begin_column_num, iloc.Location.end_line_num, iloc.Location.end_column_num, doc); return loc; }
public void return_value(semantic_node sn) { ret_semantic = sn; }
public void reset() { ret_semantic = null; }