Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tla2bAST
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
general
stups
tla2bAST
Commits
1396a88a
Commit
1396a88a
authored
8 months ago
by
Jan Gruteser
Browse files
Options
Downloads
Patches
Plain Diff
further simplifications
parent
f89d5e1c
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/main/java/de/tla2bAst/BAstCreator.java
+77
-133
77 additions, 133 deletions
src/main/java/de/tla2bAst/BAstCreator.java
with
77 additions
and
133 deletions
src/main/java/de/tla2bAst/BAstCreator.java
+
77
−
133
View file @
1396a88a
...
@@ -503,7 +503,6 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -503,7 +503,6 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
default
:
default
:
throw
new
NotImplementedException
(
exprNode
.
getClass
().
toString
());
throw
new
NotImplementedException
(
exprNode
.
getClass
().
toString
());
}
}
}
}
private
PExpression
visitExprNodeExpression
(
ExprNode
exprNode
)
{
private
PExpression
visitExprNodeExpression
(
ExprNode
exprNode
)
{
...
@@ -527,21 +526,18 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -527,21 +526,18 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
}
}
case
AtNodeKind:
{
// @
case
AtNodeKind:
{
// @
AtNode
at
=
(
AtNode
)
exprNode
;
AtNode
at
=
(
AtNode
)
exprNode
;
TLAType
type
=
(
TLAType
)
at
.
getExceptRef
().
getToolObject
(
TYPE_ID
);
OpApplNode
seq
=
at
.
getAtModifier
();
LinkedList
<
ExprOrOpArgNode
>
list
=
new
LinkedList
<>(
Arrays
.
asList
(
seq
.
getArgs
()));
// PExpression base = visitExprNodeExpression(at.getAtBase());
// PExpression base = visitExprNodeExpression(at.getAtBase());
PExpression
base
=
(
PExpression
)
at
.
getExceptComponentRef
().
getToolObject
(
EXCEPT_BASE
);
return
evalAtNode
(
return
evalAtNode
(
list
,
type
,
base
.
clone
());
new
LinkedList
<>(
Arrays
.
asList
(
at
.
getAtModifier
().
getArgs
())),
// seq
}
(
TLAType
)
at
.
getExceptRef
().
getToolObject
(
TYPE_ID
),
case
LetInKind:
{
((
PExpression
)
at
.
getExceptComponentRef
().
getToolObject
(
EXCEPT_BASE
)).
clone
()
LetInNode
letInNode
=
(
LetInNode
)
exprNode
;
);
return
visitExprNodeExpression
(
letInNode
.
getBody
());
}
}
case
LetInKind:
return
visitExprNodeExpression
(((
LetInNode
)
exprNode
).
getBody
());
default
:
default
:
throw
new
NotImplementedException
(
exprNode
.
getClass
().
toString
());
throw
new
NotImplementedException
(
exprNode
.
getClass
().
toString
());
}
}
}
}
private
PExpression
evalAtNode
(
LinkedList
<
ExprOrOpArgNode
>
list
,
TLAType
type
,
PExpression
base
)
{
private
PExpression
evalAtNode
(
LinkedList
<
ExprOrOpArgNode
>
list
,
TLAType
type
,
PExpression
base
)
{
...
@@ -549,23 +545,14 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -549,23 +545,14 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
return
base
;
return
base
;
}
}
if
(
type
instanceof
FunctionType
)
{
if
(
type
instanceof
FunctionType
)
{
FunctionType
funcType
=
(
FunctionType
)
type
;
return
evalAtNode
(
list
,
((
FunctionType
)
type
).
getRange
(),
PExpression
param
=
visitExprOrOpArgNodeExpression
(
list
.
poll
());
new
AFunctionExpression
(
base
,
Collections
.
singletonList
(
visitExprOrOpArgNodeExpression
(
list
.
poll
()))));
List
<
PExpression
>
params
=
new
ArrayList
<>();
params
.
add
(
param
);
AFunctionExpression
funCall
=
new
AFunctionExpression
();
funCall
.
setIdentifier
(
base
);
funCall
.
setParameters
(
params
);
return
evalAtNode
(
list
,
funcType
.
getRange
(),
funCall
);
}
else
{
}
else
{
StructType
structType
=
(
StructType
)
type
;
ARecordFieldExpression
select
=
new
ARecordFieldExpression
();
select
.
setRecord
(
base
);
StringNode
stringNode
=
(
StringNode
)
list
.
poll
();
StringNode
stringNode
=
(
StringNode
)
list
.
poll
();
// TODO rename field name
// TODO rename field name
String
fieldName
=
stringNode
.
getRep
().
toString
();
String
fieldName
=
stringNode
.
getRep
().
toString
();
select
.
setIdentifier
(
new
TIdentifierLiteral
(
fieldName
)
);
return
evalAtNode
(
list
,
((
StructType
)
type
).
getType
(
fieldName
)
,
return
evalAtNode
(
list
,
structType
.
getType
(
fieldName
)
,
select
);
new
ARecordFieldExpression
(
base
,
new
TIdentifierLiteral
(
fieldName
)
)
);
}
}
}
}
...
@@ -573,17 +560,14 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -573,17 +560,14 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
switch
(
opApplNode
.
getOperator
().
getKind
())
{
switch
(
opApplNode
.
getOperator
().
getKind
())
{
case
VariableDeclKind:
case
VariableDeclKind:
case
ConstantDeclKind:
case
ConstantDeclKind:
case
FormalParamKind:
{
case
FormalParamKind:
return
createPositionedNode
(
return
createPositionedNode
(
new
AEqualPredicate
(
createIdentifierNode
(
opApplNode
.
getOperator
()),
new
ABooleanTrueExpression
()),
new
AEqualPredicate
(
createIdentifierNode
(
opApplNode
.
getOperator
()),
new
ABooleanTrueExpression
()),
opApplNode
);
opApplNode
);
}
case
BuiltInKind:
case
BuiltInKind:
return
visitBuiltInKindPredicate
(
opApplNode
);
return
visitBuiltInKindPredicate
(
opApplNode
);
case
UserDefinedOpKind:
case
UserDefinedOpKind:
{
return
visitUserdefinedOpPredicate
(
opApplNode
);
return
visitUserdefinedOpPredicate
(
opApplNode
);
}
default
:
default
:
throw
new
NotImplementedException
(
opApplNode
.
getClass
().
toString
());
throw
new
NotImplementedException
(
opApplNode
.
getClass
().
toString
());
}
}
...
@@ -593,9 +577,8 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -593,9 +577,8 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
private
PExpression
visitOpApplNodeExpression
(
OpApplNode
n
)
{
private
PExpression
visitOpApplNodeExpression
(
OpApplNode
n
)
{
switch
(
n
.
getOperator
().
getKind
())
{
switch
(
n
.
getOperator
().
getKind
())
{
case
ConstantDeclKind:
case
ConstantDeclKind:
case
VariableDeclKind:
{
case
VariableDeclKind:
return
createIdentifierNode
(
n
.
getOperator
());
return
createIdentifierNode
(
n
.
getOperator
());
}
case
FormalParamKind:
{
case
FormalParamKind:
{
FormalParamNode
param
=
(
FormalParamNode
)
n
.
getOperator
();
FormalParamNode
param
=
(
FormalParamNode
)
n
.
getOperator
();
ExprOrOpArgNode
e
=
(
ExprOrOpArgNode
)
param
.
getToolObject
(
SUBSTITUTE_PARAM
);
ExprOrOpArgNode
e
=
(
ExprOrOpArgNode
)
param
.
getToolObject
(
SUBSTITUTE_PARAM
);
...
@@ -604,29 +587,22 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -604,29 +587,22 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
}
}
if
(
recursiveFunctionHandler
.
isRecursiveFunction
(
param
))
{
if
(
recursiveFunctionHandler
.
isRecursiveFunction
(
param
))
{
Array
List
<
SymbolNode
>
list
=
recursiveFunctionHandler
.
getAdditionalParams
(
param
);
List
<
SymbolNode
>
list
=
recursiveFunctionHandler
.
getAdditionalParams
(
param
);
if
(!
list
.
isEmpty
())
{
if
(!
list
.
isEmpty
())
{
AFunctionExpression
call
=
new
AFunctionExpression
();
List
<
PExpression
>
params
=
new
ArrayList
<>();
call
.
setIdentifier
(
createIdentifierNode
(
param
));
ArrayList
<
PExpression
>
params
=
new
ArrayList
<>();
for
(
SymbolNode
symbolNode
:
list
)
{
for
(
SymbolNode
symbolNode
:
list
)
{
params
.
add
(
createIdentifierNode
(
symbolNode
));
params
.
add
(
createIdentifierNode
(
symbolNode
));
}
}
call
.
setParameters
(
params
);
return
new
AFunctionExpression
(
createIdentifierNode
(
param
),
params
);
return
call
;
}
}
}
}
FormalParamNode
[]
tuple
=
(
FormalParamNode
[])
param
.
getToolObject
(
TUPLE
);
FormalParamNode
[]
tuple
=
(
FormalParamNode
[])
param
.
getToolObject
(
TUPLE
);
if
(
tuple
!=
null
)
{
if
(
tuple
!=
null
)
{
if
(
tuple
.
length
==
1
)
{
if
(
tuple
.
length
==
1
)
{
AFunctionExpression
functionCall
=
new
AFunctionExpression
();
functionCall
.
setIdentifier
(
createIdentifierNode
(
n
.
getOperator
()));
List
<
PExpression
>
paramList
=
new
ArrayList
<>();
List
<
PExpression
>
paramList
=
new
ArrayList
<>();
paramList
.
add
(
new
AIntegerExpression
(
new
TIntegerLiteral
(
"1"
)));
paramList
.
add
(
new
AIntegerExpression
(
new
TIntegerLiteral
(
"1"
)));
functionCall
.
setParameters
(
paramList
);
return
new
AFunctionExpression
(
createIdentifierNode
(
n
.
getOperator
()),
paramList
);
return
functionCall
;
}
else
{
}
else
{
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
List
<
TLAType
>
typeList
=
new
ArrayList
<>();
List
<
TLAType
>
typeList
=
new
ArrayList
<>();
int
number
=
-
1
;
int
number
=
-
1
;
...
@@ -639,19 +615,15 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -639,19 +615,15 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
number
=
j
+
1
;
number
=
j
+
1
;
}
}
}
}
TupleType
tupleType
=
new
TupleType
(
typeList
);
return
createProjectionFunction
(
createIdentifierNode
(
sb
.
toString
()),
number
,
new
TupleType
(
typeList
));
PExpression
id
=
createIdentifierNode
(
sb
.
toString
());
return
createProjectionFunction
(
id
,
number
,
tupleType
);
}
}
}
}
return
createIdentifierNode
(
n
.
getOperator
());
return
createIdentifierNode
(
n
.
getOperator
());
}
}
case
BuiltInKind:
case
BuiltInKind:
return
visitBuiltInKindExpression
(
n
);
return
visitBuiltInKindExpression
(
n
);
case
UserDefinedOpKind:
case
UserDefinedOpKind:
{
return
visitUserdefinedOpExpression
(
n
);
return
visitUserdefinedOpExpression
(
n
);
}
default
:
default
:
throw
new
NotImplementedException
(
n
.
getOperator
().
getName
().
toString
());
throw
new
NotImplementedException
(
n
.
getOperator
().
getName
().
toString
());
}
}
...
@@ -659,8 +631,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -659,8 +631,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
private
PPredicate
visitUserdefinedOpPredicate
(
OpApplNode
n
)
{
private
PPredicate
visitUserdefinedOpPredicate
(
OpApplNode
n
)
{
OpDefNode
def
=
(
OpDefNode
)
n
.
getOperator
();
OpDefNode
def
=
(
OpDefNode
)
n
.
getOperator
();
if
(
BBuiltInOPs
.
contains
(
def
.
getName
())
// Operator is a B built-in
if
(
BBuiltInOPs
.
contains
(
def
.
getName
())
// Operator is a B built-in operator
// operator
&&
STANDARD_MODULES
.
contains
(
def
.
getSource
().
getOriginallyDefinedInModuleNode
().
getName
().
toString
()))
{
&&
STANDARD_MODULES
.
contains
(
def
.
getSource
().
getOriginallyDefinedInModuleNode
().
getName
().
toString
()))
{
return
visitBBuiltInsPredicate
(
n
);
return
visitBBuiltInsPredicate
(
n
);
}
}
...
@@ -1080,99 +1051,78 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -1080,99 +1051,78 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
switch
(
getOpCode
(
n
.
getOperator
().
getName
()))
{
switch
(
getOpCode
(
n
.
getOperator
().
getName
()))
{
case
OPCODE_land:
// \land
case
OPCODE_land:
// \land
{
return
new
AConvertBoolExpression
(
new
AConjunctPredicate
(
AConjunctPredicate
conjunction
=
new
AConjunctPredicate
();
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]),
conjunction
.
setLeft
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
])
conjunction
.
setRight
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
]));
));
return
new
AConvertBoolExpression
(
conjunction
);
}
case
OPCODE_equiv:
// \equiv
case
OPCODE_equiv:
// \equiv
AEquivalencePredicate
equiv
=
new
AEquivalencePredicate
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]),
return
new
AConvertBoolExpression
(
new
AEquivalencePredicate
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
]));
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]),
return
new
AConvertBoolExpression
(
equiv
);
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
])
));
case
OPCODE_implies:
// =>
case
OPCODE_implies:
// =>
AImplicationPredicate
impl
=
new
AImplicationPredicate
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]),
new
AConvertBoolExpression
(
new
AImplicationPredicate
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
]));
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]),
new
AConvertBoolExpression
(
impl
);
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
])
));
case
OPCODE_cl:
// $ConjList
case
OPCODE_cl:
// $ConjList
{
return
new
AConvertBoolExpression
(
createConjunction
(
Arrays
.
stream
(
n
.
getArgs
())
List
<
PPredicate
>
list
=
new
ArrayList
<>();
.
map
(
this
::
visitExprOrOpArgNodePredicate
)
for
(
int
i
=
0
;
i
<
n
.
getArgs
().
length
;
i
++)
{
.
collect
(
Collectors
.
toList
())
list
.
add
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
i
]));
));
}
return
new
AConvertBoolExpression
(
createConjunction
(
list
));
}
case
OPCODE_dl:
// $DisjList
case
OPCODE_dl:
// $DisjList
{
return
new
AConvertBoolExpression
(
createDisjunction
(
Arrays
.
stream
(
n
.
getArgs
())
List
<
PPredicate
>
list
=
new
ArrayList
<>();
.
map
(
this
::
visitExprOrOpArgNodePredicate
)
for
(
int
i
=
0
;
i
<
n
.
getArgs
().
length
;
i
++)
{
.
collect
(
Collectors
.
toList
())));
list
.
add
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
i
]));
}
return
new
AConvertBoolExpression
(
createDisjunction
(
list
));
}
case
OPCODE_lor:
// \/
case
OPCODE_lor:
// \/
{
return
new
AConvertBoolExpression
(
new
ADisjunctPredicate
(
ADisjunctPredicate
disjunction
=
new
ADisjunctPredicate
();
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]),
disjunction
.
setLeft
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
])
disjunction
.
setRight
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
1
]));
));
return
new
AConvertBoolExpression
(
disjunction
);
}
case
OPCODE_lnot:
// \lnot
case
OPCODE_lnot:
// \lnot
return
new
AConvertBoolExpression
(
new
ANegationPredicate
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
])));
return
new
AConvertBoolExpression
(
new
ANegationPredicate
(
visitExprOrOpArgNodePredicate
(
n
.
getArgs
()[
0
])));
case
OPCODE_in:
// \in
case
OPCODE_in:
// \in
{
return
new
AConvertBoolExpression
(
new
AMemberPredicate
(
AMemberPredicate
memberPredicate
=
new
AMemberPredicate
();
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]),
memberPredicate
.
setLeft
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
])
memberPredicate
.
setRight
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
]));
));
return
new
AConvertBoolExpression
(
memberPredicate
);
}
case
OPCODE_notin:
// \notin
case
OPCODE_notin:
// \notin
{
return
new
AConvertBoolExpression
(
new
ANotMemberPredicate
(
ANotMemberPredicate
notMemberPredicate
=
new
ANotMemberPredicate
();
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]),
notMemberPredicate
.
setLeft
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
])
notMemberPredicate
.
setRight
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
]));
));
return
new
AConvertBoolExpression
(
notMemberPredicate
);
}
case
OPCODE_eq:
{
// =
case
OPCODE_eq:
// =
AEqualPredicate
equal
=
new
AEqualPredicate
();
return
new
AConvertBoolExpression
(
new
AEqualPredicate
(
equal
.
setLeft
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]),
equal
.
setRight
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
])
return
new
AConvertBoolExpression
(
equal
);
));
}
case
OPCODE_noteq:
// /=
case
OPCODE_noteq:
// /=
{
return
new
AConvertBoolExpression
(
new
ANotEqualPredicate
(
ANotEqualPredicate
notEqual
=
new
ANotEqualPredicate
();
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]),
notEqual
.
setLeft
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
])
notEqual
.
setRight
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
]));
));
return
new
AConvertBoolExpression
(
notEqual
);
}
/*
/*
* Set Operators
* Set Operators
*/
*/
case
OPCODE_se:
// SetEnumeration {..}
case
OPCODE_se:
// SetEnumeration {..}
{
if
(
n
.
getArgs
().
length
==
0
)
{
if
(
n
.
getArgs
().
length
==
0
)
{
return
new
AEmptySetExpression
();
return
new
AEmptySetExpression
();
}
else
{
}
else
{
List
<
PExpression
>
list
=
new
ArrayList
<>();
return
new
ASetExtensionExpression
(
Arrays
.
stream
(
n
.
getArgs
())
.
map
(
this
::
visitExprOrOpArgNodeExpression
)
for
(
int
i
=
0
;
i
<
n
.
getArgs
().
length
;
i
++)
{
.
collect
(
Collectors
.
toList
()));
list
.
add
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
i
]));
}
return
new
ASetExtensionExpression
(
list
);
}
}
}
case
0
:
{
case
0
:
{
...
@@ -1180,28 +1130,22 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
...
@@ -1180,28 +1130,22 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
}
}
case
OPCODE_setdiff:
// set difference
case
OPCODE_setdiff:
// set difference
{
return
new
AMinusOrSetSubtractExpression
(
AMinusOrSetSubtractExpression
minus
=
new
AMinusOrSetSubtractExpression
();
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]),
minus
.
setLeft
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
])
minus
.
setRight
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
]));
);
return
minus
;
}
case
OPCODE_cup:
// set union
case
OPCODE_cup:
// set union
{
return
new
AUnionExpression
(
AUnionExpression
union
=
new
AUnionExpression
();
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]),
union
.
setLeft
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
])
union
.
setRight
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
]));
);
return
union
;
}
case
OPCODE_cap:
// set intersection
case
OPCODE_cap:
// set intersection
{
return
new
AIntersectionExpression
(
AIntersectionExpression
inter
=
new
AIntersectionExpression
();
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]),
inter
.
setLeft
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
0
]));
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
])
inter
.
setRight
(
visitExprOrOpArgNodeExpression
(
n
.
getArgs
()[
1
]));
);
return
inter
;
}
case
OPCODE_subset:
// SUBSET
case
OPCODE_subset:
// SUBSET
{
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment