示例#1
0
        //declarestmt
        public override void OutADeclarestmt(ADeclarestmt node)
        {
            Definition typeDef, varDef;
            String     typeName = node.GetType().Text;
            String     varName  = node.GetVarname().Text;

            //    check type name is defined
            if (!(_currentSymbolTable.TryGetValue(typeName, out typeDef) || _globalSymbolTable.TryGetValue(typeName, out typeDef)))
            {
                Console.WriteLine("[" + node.GetType().Line + "] : " + typeName + " is not defined.");

                //    check if type name is defined as a type
            }
            else if (!(typeDef is TypeDefinition))
            {
                Console.WriteLine("[" + node.GetType().Line + "] : " + typeName + " is not a valid type.");

                //    check var name is not defined
            }
            else if (_currentSymbolTable.TryGetValue(varName, out varDef))
            {
                Console.WriteLine("[" + node.GetVarname().Line + "] : " + varName + " is already defined.");

                //    add to symbol table
            }
            else
            {
                VariableDefinition newDef = new VariableDefinition();
                newDef.name    = varName;
                newDef.vartype = (TypeDefinition)typeDef;
                _currentSymbolTable.Add(varName, newDef);
            }
        }
示例#2
0
 public override void CaseADeclarestmt(ADeclarestmt node)
 {
     InADeclarestmt(node);
     if (node.GetEol() != null)
     {
         node.GetEol().Apply(this);
     }
     if (node.GetVarname() != null)
     {
         node.GetVarname().Apply(this);
     }
     if (node.GetTypename() != null)
     {
         node.GetTypename().Apply(this);
     }
     OutADeclarestmt(node);
 }
示例#3
0
        ArrayList New7()
        {
            ArrayList    nodeList          = new ArrayList();
            ArrayList    nodeArrayList3    = (ArrayList)Pop();
            ArrayList    nodeArrayList2    = (ArrayList)Pop();
            ArrayList    nodeArrayList1    = (ArrayList)Pop();
            TId          tidNode2          = (TId)nodeArrayList1[0];
            TId          tidNode3          = (TId)nodeArrayList2[0];
            TEol         teolNode4         = (TEol)nodeArrayList3[0];
            ADeclarestmt pdeclarestmtNode1 = new ADeclarestmt(
                tidNode2,
                tidNode3,
                teolNode4
                );

            nodeList.Add(pdeclarestmtNode1);
            return(nodeList);
        }
示例#4
0
 public virtual void OutADeclarestmt(ADeclarestmt node)
 {
     DefaultOut(node);
 }
示例#5
0
 public virtual void InADeclarestmt(ADeclarestmt node)
 {
     DefaultIn(node);
 }
示例#6
0
 public virtual void CaseADeclarestmt(ADeclarestmt node)
 {
     DefaultCase(node);
 }
示例#7
0
 public override void InADeclarestmt(ADeclarestmt node)
 {
     _output.Write("\t.locals init(");
     _output.WriteLine(node.GetTypename().Text + "32 " + node.GetVarname().Text + ")");
 }