summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'instr-to-kodkod/parser/PropertyParser.g4')
-rw-r--r--instr-to-kodkod/parser/PropertyParser.g451
1 files changed, 36 insertions, 15 deletions
diff --git a/instr-to-kodkod/parser/PropertyParser.g4 b/instr-to-kodkod/parser/PropertyParser.g4
index 70e672f..82eb429 100644
--- a/instr-to-kodkod/parser/PropertyParser.g4
+++ b/instr-to-kodkod/parser/PropertyParser.g4
@@ -116,29 +116,50 @@ tag_item
}
;
+id_or_string
+ returns [Expression value]
+
+ :
+ ID
+ {
+ if (($ID.text).equals("_"))
+ {
+ $value = null;
+ }
+ else
+ {
+ $value = Main.get_variable_manager().get_variable(($ID.text));
+ }
+ }
+
+ |
+ STRING
+ {
+ $value = Main.get_string_manager().get_string_as_relation(($STRING.text));
+ System.out.println("Using (STR \"" + ($STRING.text) + "\" " + ($value) + ")");
+ }
+;
+
id_list
- returns [List<Variable> list, boolean has_joker]
+ returns [List<Expression> list, boolean has_joker]
@init
{
- final List<Variable> result = new ArrayList<Variable>();
+ final List<Expression> result = new ArrayList<Expression>();
boolean used_joker = false;
}
:
(
(WS)+
- ID
+ id_or_string
{
- if (($ID.text).equals("_"))
+ if (($id_or_string.value) == (Expression) null)
{
used_joker = true;
- result.add((Variable) null);
- }
- else
- {
- result.add(Main.get_variable_manager().get_variable(($ID.text)));
}
+
+ result.add(($id_or_string.value));
}
)*
@@ -162,7 +183,7 @@ sl_predicate
{
final Expression predicate;
- final List<Variable> ids;
+ final List<Expression> ids;
final Relation predicate_as_relation;
predicate_as_relation =
@@ -192,14 +213,14 @@ sl_predicate
final List<IntExpression> columns;
final int params_length;
- ids = new ArrayList<Variable>();
+ ids = new ArrayList<Expression>();
columns = new ArrayList<IntExpression>();
params_length = ($id_list.list).size();
for (int i = 0; i < params_length; ++i)
{
- if (($id_list.list).get(i) != (Variable) null)
+ if (($id_list.list).get(i) != (Expression) null)
{
columns.add(IntConstant.constant(i));
ids.add(($id_list.list).get(i));
@@ -499,7 +520,7 @@ bl_predicate [Variable current_node]
{
final Expression predicate;
- final List<Variable> ids;
+ final List<Expression> ids;
final Relation predicate_as_relation;
predicate_as_relation =
@@ -529,7 +550,7 @@ bl_predicate [Variable current_node]
final List<IntExpression> columns;
final int params_length;
- ids = new ArrayList<Variable>();
+ ids = new ArrayList<Expression>();
columns = new ArrayList<IntExpression>();
params_length = ($id_list.list).size();
@@ -539,7 +560,7 @@ bl_predicate [Variable current_node]
for (int i = 0; i < params_length; ++i)
{
- if (($id_list.list).get(i) != (Variable) null)
+ if (($id_list.list).get(i) != (Expression) null)
{
columns.add(IntConstant.constant(i + 1)); // Offset for the node
ids.add(($id_list.list).get(i));