package tessla_compiler
- Alphabetic
- Public
- Protected
Package Members
- package backends
- package preprocessing
Type Members
- sealed trait BlockState extends AnyRef
Trait representing the internal states of IntermediateCodeUtils
- case class ExtendedSpecification(spec: core.TesslaAST.Core.Specification, usageInfo: Option[Map[core.TesslaAST.Core.Identifier, Set[core.TesslaAST.Core.Identifier]]], lazyVars: Option[Set[core.TesslaAST.Core.Identifier]], inlining: Option[Set[core.TesslaAST.Core.Identifier]]) extends Product with Serializable
TeSSLa Core AST with additional information from the preprocessing
TeSSLa Core AST with additional information from the preprocessing
- spec
The TeSSLa Core AST
- usageInfo
Map indication which Identifier is used in the definitions of other identifiers
- lazyVars
Set of all variables that shall be translated with lazy assignments
- inlining
Set of all variables which are not translated as variables but inlined (must be final variables)
- class IntermediateCodeUtils extends AnyRef
DSL-Style state class for easy generation of ImpLan code.
DSL-Style state class for easy generation of ImpLan code. Functions of this class can be called iteratively to produce ImpLan step by step.
- class NonStreamCodeGenerator extends AnyRef
Class for the translation of TeSSLa expressions of non-stream type
- class StreamCodeGenerator extends AnyRef
Class containing functions for the translation of single TeSSLa stream expressions to imperative code
- class TesslaCoreToIntermediate extends TranslationPhase[ExtendedSpecification, (SourceListing, Set[String])]
Class implementing TranslationPhase for the translation from TeSSLa Core to abstract imperative code The translation of stream functions is performed in StreamCodeGenerator The translation of other expressions in NonStreamCodeGenerator
Value Members
- case object BuildInfo extends Product with Serializable
This object was generated by sbt-buildinfo.
- object CompilerStdLibIncludeResolver
Object for providing an IncludeResolver (see IncludeResolvers) that enables overwriting stdlib parts in a compiler-specific way.
- object DefinitionOrdering
Class for calculating a topological sorting on the assignments inside functions and specifications so they can be translated to imperative code
- object Diagnostics
Class containing errors complementing the core errors and additional compiler related warnings
- case object InCatch extends BlockState with Product with Serializable
- case object InElse extends BlockState with Product with Serializable
- case object InIf extends BlockState with Product with Serializable
- case object InTry extends BlockState with Product with Serializable
- object IntermediateCode
Class containing subclasses for the representation of abstract imperative code which can afterwards be transduced into Scala/Java/Rust/...
Class containing subclasses for the representation of abstract imperative code which can afterwards be transduced into Scala/Java/Rust/... code
- object IntermediateCodeTypeInference
Class containing code for determining the type of ImpLan expressions and adding casts.
Class containing code for determining the type of ImpLan expressions and adding casts. Does not perform type checking in any way. Hence this class should only be used for code which is known to be type correct.
- object IntermediateCodeUtils
Class containing a DSL for easy creation of ImpLanStmt-Blocks and other useful static methods for dealing ImpLan and the translation from TeSSLa
- case object Out extends BlockState with Product with Serializable
- object UnusedVarRemove extends TranslationPhase[(SourceListing, Set[String]), SourceListing]
This class is used for removing unused variable declarations from the code.
This class is used for removing unused variable declarations from the code. Therefore it first creates a map indicating which variable is used where and afterwards removes all variables which are not used in any expression. This phase is especially important since it also removes variables which are not used anymore since their usage was inlined due to lazy usage. Not removing them would probably cause errors because the evaluation of the expression is not possible.