Package net.hydromatic.morel.compile
Class Analyzer
- java.lang.Object
-
- net.hydromatic.morel.ast.Visitor
-
- net.hydromatic.morel.compile.EnvVisitor
-
- net.hydromatic.morel.compile.Analyzer
-
public class Analyzer extends EnvVisitor
Shuttle that counts how many times each expression is used.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAnalyzer.AnalysisResult of an analysis.private static classAnalyzer.MutableUseWork space where the uses of a binding are counted.static classAnalyzer.UseHow a binding (assignment of a value to a variable) is used.-
Nested classes/interfaces inherited from class net.hydromatic.morel.compile.EnvVisitor
EnvVisitor.FromContext
-
-
Field Summary
Fields Modifier and Type Field Description private Map<Core.NamedPat,Analyzer.MutableUse>map-
Fields inherited from class net.hydromatic.morel.compile.EnvVisitor
env, fromStack, typeSystem
-
-
Constructor Summary
Constructors Modifier Constructor Description privateAnalyzer(TypeSystem typeSystem, Environment env, Map<Core.NamedPat,Analyzer.MutableUse> map, Deque<EnvVisitor.FromContext> fromStack)Private constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Analyzer.Analysisanalyze(TypeSystem typeSystem, Environment env, AstNode node)Analyzes an expression.protected Analyzerbind(List<Binding> bindingList)Creates a shuttle the same as this but with overriding bindings.protected Analyzerbind(Binding binding)Creates a shuttle the same as this but overriding a binding.private static booleanisAtom(Core.Exp exp)private static Analyzerof(TypeSystem typeSystem, Environment env)Creates an Analyzer.private Analyzer.Analysisresult()Returns the result of an analysis.private Analyzer.MutableUseuse(Core.NamedPat name)Gets or creates aAnalyzer.MutableUsefor a given name.protected voidvisit(Core.Case case_)voidvisit(Core.Id id)protected voidvisit(Core.IdPat idPat)protected voidvisit(Core.NonRecValDecl valDecl)-
Methods inherited from class net.hydromatic.morel.compile.EnvVisitor
visit, visit, visit, visit, visit, visit, visit, visitStep
-
Methods inherited from class net.hydromatic.morel.ast.Visitor
accept, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
-
-
-
Field Detail
-
map
private final Map<Core.NamedPat,Analyzer.MutableUse> map
-
-
Constructor Detail
-
Analyzer
private Analyzer(TypeSystem typeSystem, Environment env, Map<Core.NamedPat,Analyzer.MutableUse> map, Deque<EnvVisitor.FromContext> fromStack)
Private constructor.
-
-
Method Detail
-
of
private static Analyzer of(TypeSystem typeSystem, Environment env)
Creates an Analyzer.
-
analyze
public static Analyzer.Analysis analyze(TypeSystem typeSystem, Environment env, AstNode node)
Analyzes an expression.
-
result
private Analyzer.Analysis result()
Returns the result of an analysis.
-
bind
protected Analyzer bind(Binding binding)
Description copied from class:EnvVisitorCreates a shuttle the same as this but overriding a binding.- Specified by:
bindin classEnvVisitor
-
bind
protected Analyzer bind(List<Binding> bindingList)
Description copied from class:EnvVisitorCreates a shuttle the same as this but with overriding bindings.- Specified by:
bindin classEnvVisitor
-
visit
protected void visit(Core.IdPat idPat)
-
use
private Analyzer.MutableUse use(Core.NamedPat name)
Gets or creates aAnalyzer.MutableUsefor a given name.
-
visit
protected void visit(Core.NonRecValDecl valDecl)
-
isAtom
private static boolean isAtom(Core.Exp exp)
-
-