public override void OnAnalyzerVisit(SemanticAnalyzer analyzer, int block) { symbol = new FunctionSymbol(block, Identifier.IdentifierName, ReturnType, ArgumentList); analyzer.AddSymbol(symbol); foreach (FormalArgument arg in ArgumentList) { VariableSymbol symbol = new VariableSymbol(Block.BlockId, arg.VariableType, arg.Identifier.IdentifierName); arg.Identifier.symbol = symbol; analyzer.AddSymbol(symbol); } Block.OnAnalyzerVisit(analyzer, block); }
public override void OnAnalyzerVisit(SemanticAnalyzer analyzer, int block) { foreach (Expression arg in Arguments) { arg.OnAnalyzerVisit(analyzer, block); } Symbol = analyzer.FindFunction(Identifier.IdentifierName, Arguments); if (Symbol == null) { throw new SemanticError($"No corresponding function defined as {this.Identifier.IdentifierName}"); } Return = Symbol.ReturnType; }
public void AddSymbol(FunctionSymbol symbol) { SymbolTable.AddSymbol(symbol); }
public void AddSymbol(FunctionSymbol symbol) { FunctionSymbols.Add(symbol); }