public virtual void VisitTree(AbstractSyntaxTree tree) { foreach (var fileNode in tree.RootNodes) { VisitFile(fileNode); } }
public override void VisitTree(AbstractSyntaxTree tree) { base.VisitTree(tree); foreach (Symbol symbol in _stringConstSymbols) { AddSymbol(symbol); } }
public T VisitTree(AbstractSyntaxTree tree) { foreach (var fileNode in tree.RootNodes) { VisitFile(fileNode); } return(DefaultResult); }
public override void VisitTree(AbstractSyntaxTree tree) { base.VisitTree(tree); foreach (Symbol symbol in _symbolTable.Values) { switch (symbol) { case FunctionSymbol functionSymbol: functionSymbol.Flags |= SymbolFlag.Const; if (functionSymbol.BuiltinType != SymbolType.Void) { functionSymbol.Flags |= SymbolFlag.Return; } if (functionSymbol.IsExternal) { functionSymbol.Flags |= SymbolFlag.External; } break; case InstanceSymbol instanceSymbol: if (((InstanceDefinitionNode)instanceSymbol.Node).DefinedWithoutBody) { } else { instanceSymbol.Flags |= SymbolFlag.Const; } break; case ConstSymbol constSymbol: constSymbol.Flags |= SymbolFlag.Const; break; case StringConstSymbol stringConstSymbol: stringConstSymbol.Flags |= SymbolFlag.Const; break; case VarSymbol varSymbol: if (varSymbol.ParentBlockSymbol is ClassSymbol) { varSymbol.Flags |= SymbolFlag.ClassVar; } break; } } }