Revision 9
Added by Willibald K. over 8 years ago
OoaPrologSymbolicExpression.java | ||
---|---|---|
36 | 36 |
import org.momut.ooas.ast.expressions.ValueExpression; |
37 | 37 |
import org.momut.ooas.ast.identifiers.EnumIdentifier; |
38 | 38 |
import org.momut.ooas.ast.identifiers.IdentifierKind; |
39 |
import org.momut.ooas.ast.identifiers.LandmarkIdentifier; |
|
40 | 39 |
import org.momut.ooas.ast.types.EnumType; |
41 | 40 |
import org.momut.ooas.ast.types.TypeKind; |
42 |
import org.momut.ooas.ast.types.UlyssesType;
|
|
41 |
import org.momut.ooas.ast.types.Type; |
|
43 | 42 |
import org.momut.ooas.ast.types.ValuedEnumType; |
44 | 43 |
import org.momut.ooas.codegen.OoasCodeEmitter; |
45 | 44 |
import org.momut.ooas.codegen.prolog.OoaPrologExpression; |
... | ... | |
80 | 79 |
} |
81 | 80 |
|
82 | 81 |
// we need to map all other things to Prolog constructs |
83 |
private String operatorString(Expression expression, UlyssesType resultingType)
|
|
82 |
private String operatorString(Expression expression, Type resultingType) |
|
84 | 83 |
{ |
85 | 84 |
switch (expression.kind()) |
86 | 85 |
{ |
... | ... | |
155 | 154 |
|
156 | 155 |
@SuppressWarnings("unchecked") |
157 | 156 |
@Override |
158 |
public /*override*/ <T> void visit(ValueExpression<T> valueExpression)
|
|
157 |
public <T> void visit(ValueExpression<T> valueExpression) |
|
159 | 158 |
{ |
160 | 159 |
assert(m_tmpVars.size() == 0); |
161 | 160 |
final String tmpVar = NewTempVariable(); |
... | ... | |
178 | 177 |
} |
179 | 178 |
|
180 | 179 |
@Override |
181 |
public /*override*/ void visit(IdentifierExpression identifierExpression)
|
|
180 |
public void visit(IdentifierExpression identifierExpression) |
|
182 | 181 |
{ |
183 |
if (identifierExpression.identifier().kind() == IdentifierKind.LandmarkIdentifier)
|
|
182 |
if (identifierExpression.identifier().kind() == IdentifierKind.EnumIdentifier)
|
|
184 | 183 |
{ |
185 |
final LandmarkIdentifier lmid = (LandmarkIdentifier)identifierExpression.identifier(); |
|
186 |
final OoaPrologIdentifier pid = createIdentifierVisitor(); |
|
187 |
lmid.Accept(pid); |
|
188 |
//m_emitter.Append(pid.ToString()); |
|
189 |
m_tmpVars.add(pid.toString()); |
|
190 |
return; |
|
191 |
} |
|
192 |
else if (identifierExpression.identifier().kind() == IdentifierKind.EnumIdentifier) |
|
193 |
{ |
|
194 | 184 |
final EnumIdentifier enumid = (EnumIdentifier)identifierExpression.identifier(); |
195 | 185 |
final EnumType enumType = (EnumType)enumid.type(); |
196 | 186 |
//m_emitter.Append(enumType.listOfEnumSymbols.IndexOf(enumid)); |
... | ... | |
210 | 200 |
} |
211 | 201 |
|
212 | 202 |
@Override |
213 |
public /*override*/ void visit(UnaryOperator unaryOperator)
|
|
203 |
public void visit(UnaryOperator unaryOperator) |
|
214 | 204 |
{ |
215 | 205 |
assert(m_tmpVars.size() == 0); |
216 | 206 |
VisitSub(unaryOperator.child(), unaryOperator); |
... | ... | |
260 | 250 |
} |
261 | 251 |
|
262 | 252 |
@Override |
263 |
public /*override*/ void visit(BinaryOperator binaryOperator)
|
|
253 |
public void visit(BinaryOperator binaryOperator) |
|
264 | 254 |
{ |
265 | 255 |
// eval stack must be empty |
266 | 256 |
assert(m_tmpVars.size() == 0); |
Also available in: Unified diff
remove support for Qualitative Action Systems, rename UlyssesType to Type