forked from mozart/mozart2-compiler
-
Notifications
You must be signed in to change notification settings - Fork 0
yjaradin/mozart2-compiler
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published