Ejemplo n.º 1
0
        //parameter
        public override void OutAParameter(AParameter node)
        {
            Definition typeDef, varDef;
            String     typeName = node.GetType().Text;
            String     varName  = node.GetName().Text;

            //    check type name is defined
            if (!_currentSymbolTable.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) || _globalSymbolTable.TryGetValue(varName, out varDef))
            {
                Console.WriteLine("[" + node.GetName().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);
                _currentParamList.Add(newDef);
            }
        }