Esempio n. 1
0
 public override void visit(ILocalBlockVariableReferenceNode value)
 {
     VarInfo vi = helper.GetVariable(value.Variable);
     if (vi == null)
     {
         ConvertLocalVariable(value.Variable, false, 0, 0);
         vi = helper.GetVariable(value.Variable);
     }
     LocalBuilder lb = vi.lb;
     if (is_addr == false)//если это факт. var-параметр
     {
         if (is_dot_expr == true) //если после перем. в выражении стоит точка
         {
             if (lb.LocalType.IsValueType == true || value.type.is_generic_parameter)
             {
                 il.Emit(OpCodes.Ldloca, lb);//если перем. размерного типа кладем ее адрес
             }
             else
             {
                 /*//ssyy добавил
                 if (is_constructor && lb.LocalIndex == 0)
                 {
                     //В конструкторе self - это не локальная переменная 0,
                     //а аргумент номер 0.
                     il.Emit(OpCodes.Ldarg_0);
                 }
                 //\ssyy
                 else*/
                 {
                     il.Emit(OpCodes.Ldloc, lb);
                 }
             }
         }
         else il.Emit(OpCodes.Ldloc, lb);
     }
     else il.Emit(OpCodes.Ldloca, lb);//в этом случае перем. - фактический var-параметр процедуры
 }
Esempio n. 2
0
 public void visit(ILocalBlockVariableReferenceNode value)
 {
     string s = value.GetType().Name + ".";
     //prepare_node(value.type, s + "type");
     prepare_up_link_node(value.Variable.name.ToString(), s + "Variable", value.Variable);
 }
Esempio n. 3
0
 public void visit(ILocalBlockVariableReferenceNode value)
 {
     ISemanticNodeConverter.SourceTextBuilder.AddNodeInToStack(ISemanticNodeConverter.ConvertPABCNETNodeLocalBlockVariable("var_locblock", value));
 }
Esempio n. 4
0
 public virtual void visit(ILocalBlockVariableReferenceNode value)
 {
 }
Esempio n. 5
0
 public virtual void visit(ILocalBlockVariableReferenceNode value)
 {
 }