本文整理汇总了C#中PascalABCCompiler.SyntaxTree.ident_list类的典型用法代码示例。如果您正苦于以下问题:C# ident_list类的具体用法?C# ident_list怎么用?C# ident_list使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
ident_list类属于PascalABCCompiler.SyntaxTree命名空间,在下文中一共展示了ident_list类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateVarDef
/// <summary>
/// Создать var-выражение
/// </summary>
/// <param name="name">Имя переменной</param>
/// <param name="initialValue">Начальное значение</param>
/// <returns></returns>
public var_def_statement CreateVarDef(string name, expression initialValue)
{
ident_list list = new ident_list();
list.idents.Add(new ident(name));
var res = new var_def_statement();
res.inital_value = initialValue;
res.vars = list;
return res;
}
示例2: variant
///<summary>
///Конструктор с параметрами.
///</summary>
public variant(ident_list _vars,type_definition _vars_type,SourceContext sc)
{
this._vars=_vars;
this._vars_type=_vars_type;
source_context = sc;
}
示例3: write_ident_list
public void write_ident_list(ident_list _ident_list)
{
write_syntax_tree_node(_ident_list);
if (_ident_list.idents == null)
{
bw.Write((byte)0);
}
else
{
bw.Write((byte)1);
bw.Write(_ident_list.idents.Count);
for(Int32 ssyy_i = 0; ssyy_i < _ident_list.idents.Count; ssyy_i++)
{
if (_ident_list.idents[ssyy_i] == null)
{
bw.Write((byte)0);
}
else
{
bw.Write((byte)1);
_ident_list.idents[ssyy_i].visit(this);
}
}
}
}
示例4: foreach
/*public override void Enter(syntax_tree_node st)
{
base.Enter(st);
countNodesVisited++;
// сокращение обходимых узлов. Как сделать фильтр по тем узлам, которые необходимо обходить? Например, все операторы (без выражений и описаний), все описания (без операторов)
if (st.GetType()==typeof(assign) || st.GetType()==typeof(var_def_statement) || st is procedure_call || st is procedure_header || st is expression)
{
visitNode = false; // фильтр - куда не заходить
}
}*/
/*public override void visit(class_members cm)
{
foreach (var decl in cm.members)
{
if (decl is procedure_header || decl is procedure_definition)
decl.visit(this);
}
base.visit(cm);
}*/
type_declarations GenClassesForYield(procedure_definition pd,
IEnumerable<var_def_statement> fields, // локальные переменные
IDictionary<string, string> localsMap, // отображение для захваченных имен локальных переменных
IDictionary<string, string> formalParamsMap//, // отображение для захваченных имен формальных параметров
//IDictionary<var_def_statement, var_def_statement> localsCloneMap // отображение для оберток локальных переменных
)
{
var fh = (pd.proc_header as function_header);
if (fh == null)
throw new SyntaxError("Only functions can contain yields", "", pd.proc_header.source_context, pd.proc_header);
var seqt = fh.return_type as sequence_type;
if (seqt == null)
throw new SyntaxError("Functions with yields must return sequences", "", fh.return_type.source_context, fh.return_type);
// Теперь на месте функции генерируем класс
// Захваченные локальные переменные
var cm = class_members.Public;
var capturedFields = fields.Select(vds =>
{
ident_list ids = new ident_list(vds.vars.idents.Select(id => new ident(localsMap[id.name])).ToArray());
if (vds.vars_type == null) //&& vds.inital_value != null)
{
if (vds.inital_value != null)
{
//return new var_def_statement(ids, new yield_unknown_expression_type(localsCloneMap[vds], varsTypeDetectorHelper), null);
return new var_def_statement(ids, new yield_unknown_expression_type(vds), null); // SSM - убрал localsCloneMap[vds] - заменил на vds - не знаю, зачем вообще это отображение делалось - всё равно оно было тождественным!!!
}
else
{
throw new SyntaxVisitorError("Variable defenition without type and value!",vds.source_context); // SSM - быть такого не может - грамматика не пропустит
}
}
else
{
return new var_def_statement(ids, vds.vars_type, null);
}
//return new var_def_statement(ids, vds.vars_type, vds.inital_value);
});
foreach (var m in capturedFields)
cm.Add(m);
// Параметры функции
List<ident> lid = new List<ident>();
var pars = fh.parameters;
if (pars != null)
foreach (var ps in pars.params_list)
{
if (ps.param_kind != parametr_kind.none)
throw new SyntaxVisitorError("FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_VAR_CONST_PARAMS_MODIFIERS", pars.source_context);
if (ps.inital_value != null)
throw new SyntaxVisitorError("FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_DEFAULT_PARAMETERS", pars.source_context);
//var_def_statement vds = new var_def_statement(ps.idents, ps.vars_type);
ident_list ids = new ident_list(ps.idents.list.Select(id => new ident(formalParamsMap[id.name])).ToArray());
var_def_statement vds = new var_def_statement(ids, ps.vars_type);
cm.Add(vds); // все параметры функции делаем полями класса
//lid.AddRange(vds.vars.idents);
lid.AddRange(ps.idents.list);
}
var stels = seqt.elements_type;
var iteratorClassName = GetClassName(pd);
// frninja 08/18/15 - Для захвата self
if (iteratorClassName != null)
{
// frninja 20/04/16 - поддержка шаблонных классов
var iteratorClassRef = CreateClassReference(iteratorClassName);
cm.Add(new var_def_statement(YieldConsts.Self, iteratorClassRef));
}
var GetEnumeratorBody = new statement_list();
// Системные поля и методы для реализации интерфейса IEnumerable
//.........这里部分代码省略.........
示例5: uses_unit_in
///<summary>
///Конструктор с параметрами.
///</summary>
public uses_unit_in(ident_list _name,string_const _in_file,SourceContext sc)
{
this._name=_name;
this._in_file=_in_file;
source_context = sc;
}
示例6: unit_or_namespace
///<summary>
///Конструктор с параметрами.
///</summary>
public unit_or_namespace(ident_list _name,SourceContext sc)
{
this._name=_name;
source_context = sc;
}
示例7: function_header
///<summary>
///Конструктор с параметрами.
///</summary>
public function_header(type_definition_attr_list _attr_list,formal_parameters _parameters,procedure_attributes_list _proc_attributes,method_name _name,bool _of_object,bool _class_keyword,ident_list _template_args,where_definition_list _where_defs,type_definition _return_type,SourceContext sc)
{
this._attr_list=_attr_list;
this._parameters=_parameters;
this._proc_attributes=_proc_attributes;
this._name=_name;
this._of_object=_of_object;
this._class_keyword=_class_keyword;
this._template_args=_template_args;
this._where_defs=_where_defs;
this._return_type=_return_type;
source_context = sc;
}
示例8: typed_parameters
///<summary>
///Конструктор с параметрами.
///</summary>
public typed_parameters(ident_list _idents,type_definition _vars_type,parametr_kind _param_kind,expression _inital_value,SourceContext sc)
{
this._idents=_idents;
this._vars_type=_vars_type;
this._param_kind=_param_kind;
this._inital_value=_inital_value;
source_context = sc;
}
示例9: template_type_name
///<summary>
///Конструктор с параметрами.
///</summary>
public template_type_name(ident_list _template_args)
{
this._template_args=_template_args;
}
示例10: var_def_statement
///<summary>
///Конструктор с параметрами.
///</summary>
public var_def_statement(ident_list _vars,type_definition _vars_type,expression _inital_value,definition_attribute _var_attr,bool _is_event,SourceContext sc)
{
this._vars=_vars;
this._vars_type=_vars_type;
this._inital_value=_inital_value;
this._var_attr=_var_attr;
this._is_event=_is_event;
source_context = sc;
}
示例11: where_definition
///<summary>
///Конструктор с параметрами.
///</summary>
public where_definition(ident_list _names,where_type_specificator_list _types,SourceContext sc)
{
this._names=_names;
this._types=_types;
source_context = sc;
}
示例12: property_parameter
///<summary>
///Конструктор с параметрами.
///</summary>
public property_parameter(ident_list _names,type_definition _type,SourceContext sc)
{
this._names=_names;
this._type=_type;
source_context = sc;
}
示例13: label_definitions
///<summary>
///Конструктор с параметрами.
///</summary>
public label_definitions(ident_list _labels,SourceContext sc)
{
this._labels=_labels;
source_context = sc;
}
示例14: procedure_header
///<summary>
///Конструктор с параметрами.
///</summary>
public procedure_header(type_definition_attr_list _attr_list,formal_parameters _parameters,procedure_attributes_list _proc_attributes,method_name _name,bool _of_object,bool _class_keyword,ident_list _template_args,where_definition_list _where_defs)
{
this._attr_list=_attr_list;
this._parameters=_parameters;
this._proc_attributes=_proc_attributes;
this._name=_name;
this._of_object=_of_object;
this._class_keyword=_class_keyword;
this._template_args=_template_args;
this._where_defs=_where_defs;
}
示例15: function_lambda_definition
///<summary>
///Конструктор с параметрами.
///</summary>
public function_lambda_definition(ident_list _ident_list,type_definition _return_type,formal_parameters _formal_parameters,statement _proc_body,procedure_definition _proc_definition,expression_list _parameters,string _lambda_name,List<declaration> _defs,LambdaVisitMode _lambda_visit_mode,syntax_tree_node _substituting_node,SourceContext sc)
{
this._ident_list=_ident_list;
this._return_type=_return_type;
this._formal_parameters=_formal_parameters;
this._proc_body=_proc_body;
this._proc_definition=_proc_definition;
this._parameters=_parameters;
this._lambda_name=_lambda_name;
this._defs=_defs;
this._lambda_visit_mode=_lambda_visit_mode;
this._substituting_node=_substituting_node;
source_context = sc;
}