Uses of Interface
org.ek9lang.compiler.symbols.IScopedSymbol
Package
Description
Common parts of processing that can be reused across various phases.
Contains critical general components used in the
Ek9Compiler
listeners.
This is the main source of EK9 Symbols used within the compiler.
-
Uses of IScopedSymbol in org.ek9lang.compiler.common
Modifier and TypeMethodDescriptionScopeStack.traverseBackUpStackToMethodOrFunction()
Locates the outer function or method (if possible, not always possible Applications for example).SymbolsAndScopes.traverseBackUpStackToMethodOrFunction()
Modifier and TypeMethodDescriptionvoid
SymbolsAndScopes.defineScopedSymbol
(IScopedSymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) Record a new scoped symbol in the current scope on the stack.void
SymbolsAndScopes.enterModuleScopedSymbol
(IScopedSymbol symbol, org.antlr.v4.runtime.tree.ParseTree node, SymbolChecker symbolChecker) To be used when defining a high level symbol at module scope.void
SymbolsAndScopes.enterNewScopedSymbol
(IScopedSymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) Enter a new scoped symbol and record in parsed module as a symbol and as a scope. -
Uses of IScopedSymbol in org.ek9lang.compiler.support
Modifier and TypeMethodDescriptionSymbolFactory.newDynamicClass
(IScopedSymbol enclosingMainTypeOrFunction, EK9Parser.DynamicClassDeclarationContext ctx) Create a new aggregate that represents an EK9 dynamic class.SymbolFactory.newDynamicFunction
(IScopedSymbol enclosingMainTypeOrFunction, EK9Parser.DynamicFunctionDeclarationContext ctx) Create a new aggregate that represents an EK9 dynamic function.SymbolFactory.newMethod
(EK9Parser.MethodDeclarationContext ctx, String methodName, IScopedSymbol scopedSymbol) Create a new method with a specific name.SymbolFactory.newMethod
(EK9Parser.MethodDeclarationContext ctx, IScopedSymbol scopedSymbol) Create a new method that represents an EK9 class/component method. -
Uses of IScopedSymbol in org.ek9lang.compiler.symbols
Modifier and TypeInterfaceDescriptioninterface
Interface for an aggregate, typically a class or something like that.Modifier and TypeClassDescriptionclass
This is typically a 'class' or an interface type where it can include the definitions of new properties.class
An aggregate, but one that can have zero or more traits (like interfaces).class
Just re-uses the bulk of method symbol for when we want to make a symbol that is a call to an actual method.class
Just focuses on the ability to possible capture variables from an enclosing scope.class
EK9 switch/try control type symbol - this can effectively return a value if it is configured with returning part.class
EK9 'for' type symbol - we need a scope because we declare a new variable as the loop variable.class
Scope for functions that are part of a module.class
Represents some type of method that exists on an aggregate type scope.class
Added as a common symbol type for both Functions and Aggregates that could possibly be generic in nature and also be a parameterised type.class
Represents a symbol that also has a scope.class
Scope for callable methods (operations) that are part of a Service.class
Used when duplicate symbols are found, where we need to add a placeholder.class
Just re-uses the bulk of method symbol.class
EK9 switch statement - this can effectively return a value if it is configured with returning part.class
EK9 try statement - this can effectively return a value if it is configured with returning part.class
EK9 'while' or 'do/while' type symbol - we need a scope because we can declare new variables as part of the pre-flow semantics.Modifier and TypeMethodDescriptionModifier and TypeMethodDescriptionvoid
ScopedSymbol.setOuterMostTypeOrFunction
(IScopedSymbol outerMostTypeOrFunction)