Skip to content

yjaradin/mozart2-compiler

 
 

Repository files navigation

CompilerClass.oz
   defines the CompilerClass which invokes all compiler passes.

ParseOz.oz
   this defines the interface to either the parser and scanner
   generated by Gump or the front-end internal to the emulator.
   The output consists of a tuple representation of the input
   source file as documented in Doc/TupleSyntax.

TupleSyntax.oz
   auxiliary functions operating on Oz code in tuple representation
   as obtained from the parser.

CoreLanguage.oz
   defines the basic abstract syntax tree nodes as classes as
   documented in Doc/CoreLanguage.  An 'output' method is provided
   for each node as well as some basic accessor methods used by
   several of the compiler passes.  All methods needed for the
   distinct compiler passes are implemented by mixin classes.

Unnester.oz
   the Unnester class gets Oz code in tuple representation as
   input, unnests all expressions into statements, performs all
   remaining expansions and produces the core syntax graph as
   output.

UnnestFD.oz
   performs the unnesting of finite domain expressions.  This
   just transforms Oz code in tuple representation, replacing
   finite domain expressions by applications of the corresponding
   propagators.

BindingAnalysis.oz
   defines a class encapsulating the basic binding analysis
   functionality.

Annotate.oz
   mixin classes for annotating the abstract syntax tree
   nodes with the 'globalVars' and 'use' attributes.
   If the 'warnunused' switch is set, warnings are generated
   for unused and single-occurrence variables.

Builtins.oz
   provides information about all non-sited builtins for
   static analysis and code generation.

StaticAnalysis.oz
   mixin classes implementing the static analyzer.

POTypes.oz
   defines the type hierarchy used by the static analyzer
   for type falsification.

CodeGen.oz
   mixin classes implementing the code generation pass.
   From the graph representation an intermediate code called
   VInstrs is generated as documented in Doc/VInstr.

PatternMatching.oz
   auxiliary procedures for optimized pattern matching code
   generation.

CodeStore.oz
   the code store and annotation functions for the VInstrs.

CodeEmitter.oz
   register allocation and translation into real assembler code
   as documented in Doc/VInstr.

Assembler.oz
   performs peephole optimization, assembling and linking.

Opcodes.m4oz
   generates code according to the descriptions in
   Oz/include/instrDefs.m4 for calculating instruction
   sizes and writing instructions into the emulator's
   code area.

Reporter.oz
   the class Reporter is used for writing out error messages
   to the user.

FormatStrings.oz
   function for transforming format strings (a kind of
   virtual strings, augmented by some layout information)
   into vanilla virtual strings.

Misc.oz
   this is the place for generally useful functions to be
   used throughout the compiler.

GenericInterface.oz
   base class for all interfaces provided here.  Takes over the
   basic registering/unregistering with a running compiler.
   See http://www.mozart-oz.org/compiler/.

QuietInterface.oz
   front-end to the CompilerClass.  This only stores the compiler's
   messages internally and provides methods for asking for the
   presence of errors and for retrieving the compiler's messages.

Abstractions.oz
   useful abstractions for the end user.

RunTime.oz
   definitions of all run-time procedures (the backquote variables
   used in the Oz Notation document).

Doc/TupleSyntax
   document defining the Oz code tuple representation.

Doc/CoreLanguage
   document defining the Oz code graph representation.

Doc/FDCompare
   document summarizing expansion of finite domain compare
   operators and the corresponding propagators.

Doc/VInstr
   document defining the intermediate representation used
   by the code generator.

Doc/Instr
   document summarizing the machine instructions recognized
   by the Assembler.

About

Full compiler of Mozart2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published