diff --git a/libwccl/ops/functions/bool/predicates/nor.h b/libwccl/ops/functions/bool/predicates/nor.h index 7b78471489cb2498ead21d8eef78e14ad134f9f0..8cd592057fe8473a7cad847327609d5815a413d8 100644 --- a/libwccl/ops/functions/bool/predicates/nor.h +++ b/libwccl/ops/functions/bool/predicates/nor.h @@ -21,7 +21,7 @@ public: * @returns Name of the function: "not" */ std::string raw_name() const { - return "nor"; + return "not"; } protected : diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g index bc576529b04eb89e700a4cf91204d20d017841b8..6047b7240b85420629b93e42a0f9d43c352b2e03 100644 --- a/libwccl/parser/grammar.g +++ b/libwccl/parser/grammar.g @@ -92,6 +92,21 @@ private: return ret_ustr; } // + const std::string str_token_rem_grav(antlr::RefToken& rstr) const { + size_t len = 0; + std::string ret = token_ref_to_std_string(rstr); + + if ((len = ret.length()) < 2) { + return ret; + } + + if (ret[0] == '`' && ret[len - 1] == '`') { + return ret.substr(1, len - 2); + } + + return ret; + } + // const std::string token_ref_to_std_string(antlr::RefToken& rstr) const { return (((antlr::Token*)rstr)->getText()); } @@ -187,7 +202,10 @@ str_set_literal { s_set.reset(new Wccl::StrSet()); } - : LBRACKET + : s0: STRING { + s_set->insert(str_token_ref_to_ustring(s0)); + } + | LBRACKET ( s1: STRING { s_set->insert(str_token_ref_to_ustring(s1)); } @@ -217,7 +235,7 @@ sym_set_elem [const Corpus2::Tagset& tagset, boost::shared_ptr<Wccl::TSet>& t_set] : s1: SYMBOL { try { - t_set->insert_symbol(tagset, token_ref_to_std_string(s1)); + t_set->insert_symbol(tagset, str_token_rem_grav(s1)); } catch(Corpus2::TagParseError &e) { throw(ParserException(e.info())); @@ -234,7 +252,8 @@ sym_set_literal { t_set.reset(new Wccl::TSet()); } - : LCURLY + : sym_set_elem[tagset, t_set] + | LCURLY ( sym_set_elem[tagset, t_set] (COMMA sym_set_elem[tagset, t_set])* )? RCURLY ; @@ -328,10 +347,10 @@ position_variable_acc [Wccl::Variables& vars] returns [boost::shared_ptr<Wccl::VariableAccessor<Wccl::Position> > pos_acc] : POS_PREFIX n: SYMBOL { - vars.get_put<Wccl::Position>(token_ref_to_std_string(n)); + vars.get_put<Wccl::Position>(str_token_rem_grav(n)); Wccl::VariableAccessor<Wccl::Position> acc = - vars.create_accessor<Wccl::Position>(token_ref_to_std_string(n)); + vars.create_accessor<Wccl::Position>(str_token_rem_grav(n)); pos_acc.reset(new Wccl::VariableAccessor<Wccl::Position>(acc)); } @@ -371,11 +390,11 @@ str_set_variable_acc returns [boost::shared_ptr<Wccl::VariableAccessor<Wccl::StrSet> > strset_acc] : STR_PREFIX n: SYMBOL { // get/put variable to variables - vars.get_put<Wccl::StrSet>(token_ref_to_std_string(n)); + vars.get_put<Wccl::StrSet>(str_token_rem_grav(n)); // makes accessor for value Wccl::VariableAccessor<Wccl::StrSet> acc = - vars.create_accessor<Wccl::StrSet>(token_ref_to_std_string(n)); + vars.create_accessor<Wccl::StrSet>(str_token_rem_grav(n)); strset_acc.reset(new Wccl::VariableAccessor<Wccl::StrSet>(acc)); } @@ -400,10 +419,10 @@ sym_set_variable_acc [Wccl::Variables& vars] returns [boost::shared_ptr<Wccl::VariableAccessor<Wccl::TSet> > symset_acc] : TST_PREFIX n: SYMBOL { - vars.get_put<Wccl::TSet>(token_ref_to_std_string(n)); + vars.get_put<Wccl::TSet>(str_token_rem_grav(n)); Wccl::VariableAccessor<Wccl::TSet> acc = - vars.create_accessor<Wccl::TSet>(token_ref_to_std_string(n)); + vars.create_accessor<Wccl::TSet>(str_token_rem_grav(n)); symset_acc.reset(new Wccl::VariableAccessor<Wccl::TSet>(acc)); } @@ -428,10 +447,10 @@ boolean_variable_acc [Wccl::Variables& vars] returns [boost::shared_ptr<Wccl::VariableAccessor<Wccl::Bool> > bool_acc] : BOOL_PREFIX n: SYMBOL { - vars.get_put<Wccl::Bool>(token_ref_to_std_string(n)); + vars.get_put<Wccl::Bool>(str_token_rem_grav(n)); Wccl::VariableAccessor<Wccl::Bool> acc = - vars.create_accessor<Wccl::Bool>(token_ref_to_std_string(n)); + vars.create_accessor<Wccl::Bool>(str_token_rem_grav(n)); bool_acc.reset(new Wccl::VariableAccessor<Wccl::Bool>(acc)); } @@ -1004,8 +1023,8 @@ STRING options { paraphrase = "a string"; } - : '"' (~'"')* '"' - | '\'' (~'\'')* '\'' + : '"'! (~'"')* '"'! + | '\''! (~'\'')* '\''! ; SIGNED_INT