public override void Visit(DeclareAST declareAST) { var identifier = _symTableManager.LookupIdentifierInfo(_currentFileName, declareAST.VariableDec.Name, _currentScopeId, _currentNodePosition); if (identifier.valueRef.Pointer != IntPtr.Zero) { return; } var fnType = IRTypesConverter.GetFunctionType(declareAST.VariableDec.Type as FunctionTypeAST); identifier.valueRef = LLVM.AddFunction(_module, identifier.name, fnType); LLVM.SetFunctionCallConv(identifier.valueRef, 0); LLVM.SetLinkage(identifier.valueRef, LLVMLinkage.LLVMExternalLinkage); }
public override void Visit(DeclareAST declareAST) { var identInfo = new IdentifierInfo { name = declareAST.VariableDec.Name, typeAST = declareAST.VariableDec.Type, position = _currentNodePosition, scopeId = _currentScope.id, isFunctionType = declareAST.VariableDec.Type is FunctionTypeAST }; AddIdentInfoToSymTable(identInfo); if (_currentScope.id != 0) { return; } GlobalIdentifiers.Add(declareAST.VariableDec.Name); }
public virtual void Visit(DeclareAST declareAST) { }