Project

General

Profile

root / trunk / compiler / ooasCompiler / src / org / momut / ooas / ast / IAstVisitor.java

1
/**
2
  *
3
  *                      OOAS Compiler
4
  *
5
  *       Copyright 2015, AIT Austrian Institute of Technology.
6
  * This code is based on the C# Version of the OOAS Compiler, which is
7
  * copyright 2015 by the Institute of Software Technology, Graz University
8
  * of Technology with portions copyright by the AIT Austrian Institute of
9
  * Technology. All rights reserved.
10
  *
11
  * SEE THE "LICENSE" FILE FOR THE TERMS UNDER WHICH THIS FILE IS PROVIDED.
12
  *
13
  * If you modify the file please update the list of contributors below to in-
14
  * clude your name. Please also stick to the coding convention of using TABs
15
  * to do the basic (block-level) indentation and spaces for anything after
16
  * that. (Enable the display of special chars and it should be pretty obvious
17
  * what this means.) Also, remove all trailing whitespace.
18
  *
19
  * Contributors:
20
  *               Willibald Krenn (AIT)
21
  *               Stephan Zimmerer (AIT)
22
  *               Markus Demetz (AIT)
23
  *               Christoph Czurda (AIT)
24
  *
25
  */
26

    
27

    
28
package org.momut.ooas.ast;
29

    
30
import org.momut.ooas.ast.expressions.AccessExpression;
31
import org.momut.ooas.ast.expressions.BinaryOperator;
32
import org.momut.ooas.ast.expressions.CallExpression;
33
import org.momut.ooas.ast.expressions.ExistsQuantifier;
34
import org.momut.ooas.ast.expressions.ForallQuantifier;
35
import org.momut.ooas.ast.expressions.IdentifierExpression;
36
import org.momut.ooas.ast.expressions.ListConstructor;
37
import org.momut.ooas.ast.expressions.MapConstructor;
38
import org.momut.ooas.ast.expressions.ObjectConstructor;
39
import org.momut.ooas.ast.expressions.SetConstructor;
40
import org.momut.ooas.ast.expressions.TernaryOperator;
41
import org.momut.ooas.ast.expressions.TupleConstructor;
42
import org.momut.ooas.ast.expressions.TupleMapAccessExpression;
43
import org.momut.ooas.ast.expressions.TypeExpression;
44
import org.momut.ooas.ast.expressions.UnaryOperator;
45
import org.momut.ooas.ast.expressions.UnresolvedIdentifierExpression;
46
import org.momut.ooas.ast.expressions.ValueExpression;
47
import org.momut.ooas.ast.identifiers.AttributeIdentifier;
48
import org.momut.ooas.ast.identifiers.ConstantIdentifier;
49
import org.momut.ooas.ast.identifiers.EnumIdentifier;
50
import org.momut.ooas.ast.identifiers.ExpressionVariableIdentifier;
51
import org.momut.ooas.ast.identifiers.LocalVariableIdentifier;
52
import org.momut.ooas.ast.identifiers.MainModule;
53
import org.momut.ooas.ast.identifiers.MethodIdentifier;
54
import org.momut.ooas.ast.identifiers.Module;
55
import org.momut.ooas.ast.identifiers.NamedActionIdentifier;
56
import org.momut.ooas.ast.identifiers.NondetIdentifierList;
57
import org.momut.ooas.ast.identifiers.ParameterIdentifier;
58
import org.momut.ooas.ast.identifiers.PrioIdentifierList;
59
import org.momut.ooas.ast.identifiers.SelfTypeIdentifier;
60
import org.momut.ooas.ast.identifiers.SeqIdentifierList;
61
import org.momut.ooas.ast.identifiers.TypeIdentifier;
62
import org.momut.ooas.ast.identifiers.UnspecIdentifierList;
63
import org.momut.ooas.ast.statements.AbortStatement;
64
import org.momut.ooas.ast.statements.Assignment;
65
import org.momut.ooas.ast.statements.BreakStatement;
66
import org.momut.ooas.ast.statements.Call;
67
import org.momut.ooas.ast.statements.GuardedCommand;
68
import org.momut.ooas.ast.statements.KillStatement;
69
import org.momut.ooas.ast.statements.NondetBlock;
70
import org.momut.ooas.ast.statements.PrioBlock;
71
import org.momut.ooas.ast.statements.SeqBlock;
72
import org.momut.ooas.ast.statements.SkipStatement;
73
import org.momut.ooas.ast.types.AnyType;
74
import org.momut.ooas.ast.types.BoolType;
75
import org.momut.ooas.ast.types.CharType;
76
import org.momut.ooas.ast.types.EnumType;
77
import org.momut.ooas.ast.types.FloatType;
78
import org.momut.ooas.ast.types.FunctionType;
79
import org.momut.ooas.ast.types.IntType;
80
import org.momut.ooas.ast.types.ListType;
81
import org.momut.ooas.ast.types.MapType;
82
import org.momut.ooas.ast.types.MetaType;
83
import org.momut.ooas.ast.types.NullType;
84
import org.momut.ooas.ast.types.OoActionSystemType;
85
import org.momut.ooas.ast.types.OpaqueType;
86
import org.momut.ooas.ast.types.TupleType;
87

    
88
/*Notice: The visitor must implement the traversal!*/
89
public interface IAstVisitor
90
{
91
        String returnVisitorName();
92
        void done();
93

    
94
        /*Identifiers*/
95
        void visit(EnumIdentifier enumIdentifier);
96
        void visit(AttributeIdentifier attributeIdentifier);
97
        void visit(ExpressionVariableIdentifier expressionVariableIdentifier);
98
        void visit(ParameterIdentifier parameterIdentifier);
99
        void visit(LocalVariableIdentifier localVariableIdentifier);
100
        void visit(TypeIdentifier typeIdentifier);
101
        void visit(SelfTypeIdentifier typeIdentifier);
102
        void visit(MethodIdentifier methodIdentifier);
103
        void visit(NamedActionIdentifier namedActionIdentifier);
104
        void visit(MainModule mainModule);
105
        void visit(Module module);
106
        void visit(NondetIdentifierList nondetIdentifierList);
107
        void visit(SeqIdentifierList seqIdentifierList);
108
        void visit(PrioIdentifierList prioIdentifierList);
109
        void visit(UnspecIdentifierList unspecIdentifierList);
110
        void visit(ConstantIdentifier constantIdentifier);
111

    
112

    
113
        /*Statements*/
114
        void visit(NondetBlock nondetBlock);
115
        void visit(SeqBlock seqBlock);
116
        void visit(PrioBlock prioBlock);
117
        void visit(GuardedCommand guardedCommand);
118
        void visit(Assignment assignment);
119
        void visit(Call call);
120
        void visit(SkipStatement skipStatement);
121
        void visit(AbortStatement abortStatement);
122
        void visit(KillStatement killStatement);
123

    
124

    
125
        /*Expressions*/
126
        <T> void visit(ValueExpression<T> valueExpression);
127
        void visit(UnresolvedIdentifierExpression unresolvedIdentifierExpression);
128
        void visit(IdentifierExpression identifierExpression);
129
        void visit(ListConstructor listConstructor);
130
        void visit(SetConstructor setConstructor);
131
        void visit(MapConstructor mapConstructor);
132
        void visit(TupleConstructor tupleConstructor);
133
        void visit(ObjectConstructor objectConstructor);
134
        void visit(AccessExpression accessExpression);
135
        void visit(BinaryOperator binaryOperator);
136
        void visit(TernaryOperator ternaryOperator);
137
        void visit(TupleMapAccessExpression tupleMapAccessExpression);
138
        void visit(CallExpression callExpression);
139
        void visit(ForallQuantifier quantifier);
140
        void visit(ExistsQuantifier quantifier);
141
        void visit(UnaryOperator unaryOperator);
142
        void visit(TypeExpression typeExpression);
143

    
144
        /*Types*/
145
        void visit(CharType charType);
146
        void visit(IntType intType);
147
        void visit(BoolType boolType);
148
        void visit(FloatType floatType);
149
        void visit(EnumType enumType);
150
        void visit(ListType listType);
151
        void visit(MapType mapType);
152
        void visit(TupleType tupleType);
153
        void visit(FunctionType functionType);
154
        void visit(OoActionSystemType ooActionSystemType);
155
        void visit(OpaqueType opaqueType);
156
        void visit(AnyType anyType);
157
        void visit(NullType nullType);
158
        void visit(MetaType metaType);
159

    
160
        void visit(BreakStatement breakStatement);
161
}