コード例 #1
0
 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);
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 public void AddSymbol(FunctionSymbol symbol)
 {
     SymbolTable.AddSymbol(symbol);
 }
コード例 #4
0
 public void AddSymbol(FunctionSymbol symbol)
 {
     FunctionSymbols.Add(symbol);
 }