Dresden OCL Toolkit

Package tudresden.ocl.normalize

The two interfaces TreeNormalizer and NodeNormalizer can be implemented to introduce custom normalization steps.

See:
          Description

Interface Summary
NodeNormalizer By implementing this interface, normalizations on tree nodes are possible.
TreeNormalizer This interface defines the operation "normalize" which should be implemented to normalize an abstract syntax tree (the whole tree, not single nodes!).
 

Class Summary
CollectShorthandExpansion breaks default context insertion and iterator insertion
CompoundNormalizer This class represents a TreeNormalizer that normalizes an abstract syntax tree by starting other TreeNormalizers in a fixed order.
ConstraintNaming assures that constraints have a name
DefaultContextInsertion This node normalization inserts the default context ("self" or some iterator variable) wherever appropriate.
IteratorInsertion This node normalizer inserts an iterator in every iterating method that does not already have one (or more).
MultipleIteratorSolving prerequiste: every feature call must have an explicitly named context (-> the FeatureCallParameters object must not be direct subnode of a PrimaryExpression node) ->after DefaultContextInsertion
NormalizerPass This class implements TreeNormalizer to traverse the abstract syntax tree and call a list of NodeNormalizers for each of its nodes.
TypeInformationInsertion  
VariableClarification make variable names unique
 

Exception Summary
PreconditionViolatedException This exception is thrown if a normalizer is started that requires the AST to fulfill some condition, which it doesn't.
 

Package tudresden.ocl.normalize Description

The two interfaces TreeNormalizer and NodeNormalizer can be implemented to introduce custom normalization steps. CompoundNormalizer and NormalizerPass use to composite pattern to assemble normalization steps freely. All other classes are concrete normalization steps.


Dresden OCL Toolkit

Submit a bug
Developed at the Dresden University of Technology.
This software is published under the GNU Lesser General Public License.