From 42117720963873e57c3092d9249ffbfe5ca0aa18 Mon Sep 17 00:00:00 2001 From: nsensfel Date: Thu, 31 May 2018 17:07:42 +0200 Subject: Prepares for solution printing... --- src/hastabel/LangLexer.g4 | 1 + src/hastabel/LangParser.g4 | 20 ++++++++++++++++++++ src/hastabel/lang/Predicate.java | 11 +++++++++++ 3 files changed, 32 insertions(+) diff --git a/src/hastabel/LangLexer.g4 b/src/hastabel/LangLexer.g4 index 2de366f..fc72bf0 100644 --- a/src/hastabel/LangLexer.g4 +++ b/src/hastabel/LangLexer.g4 @@ -14,6 +14,7 @@ STAR: '*'; ADD_TYPE_KW: 'add_type' SEP; ADD_PREDICATE_KW: 'add_predicate' SEP; +ADD_NAMING_KW: 'add_naming' SEP; ADD_FUNCTION_KW: 'add_function' SEP; ADD_TEMPLATE_KW: 'add_template' SEP; diff --git a/src/hastabel/LangParser.g4 b/src/hastabel/LangParser.g4 index 19f2ea0..a5146b3 100644 --- a/src/hastabel/LangParser.g4 +++ b/src/hastabel/LangParser.g4 @@ -45,6 +45,10 @@ lang_instr: { } + | (WS)* ADD_NAMING_KW (WS)* new_naming (WS)* + { + } + | (WS)* ADD_TEMPLATE_KW (WS)* new_template (WS)* { } @@ -164,6 +168,22 @@ new_type: } ; +new_naming: + ID (WS)* L_PAREN (WS)* ident_list (WS)* R_PAREN + { + final Predicate pred; + + pred = WORLD.get_predicates_manager().get(($ID.text)); + + if (pred == null) + { + WORLD.invalidate(); + } + + pred.set_naming(($ident_list.list)); + } +; + new_predicate: ID (WS)* L_PAREN (WS)* ident_list (WS)* R_PAREN { diff --git a/src/hastabel/lang/Predicate.java b/src/hastabel/lang/Predicate.java index 2cdafb0..b196bbb 100644 --- a/src/hastabel/lang/Predicate.java +++ b/src/hastabel/lang/Predicate.java @@ -16,6 +16,7 @@ public class Predicate private final Type function_type; private final Set> members; private final String name; + private List naming; private boolean can_be_used_as_function; private boolean is_used_as_predicate, is_used_as_function; @@ -104,6 +105,16 @@ public class Predicate add_member(params); } + public void set_naming (final List naming) + { + this.naming = naming; + } + + public List get_naming () + { + return naming; + } + private boolean add_partial_signature ( final List partial_signature -- cgit v1.2.3-70-g09d2