From 6b63bd48afdda4acea65420473168e587c8d066f Mon Sep 17 00:00:00 2001 From: yhirose Date: Sat, 25 Mar 2017 18:28:15 -0400 Subject: [PATCH] Added peg::udl for 'tag' user defined literal. --- language/culebra/culebra.h | 6 +++--- language/culebra/main.cc | 1 + language/pl0/pl0.cc | 1 + peglib.h | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/language/culebra/culebra.h b/language/culebra/culebra.h index 213167f..7393e49 100644 --- a/language/culebra/culebra.h +++ b/language/culebra/culebra.h @@ -547,7 +547,7 @@ struct Interpreter } Value eval(const peg::Ast& ast, std::shared_ptr env) { - using peg::operator"" _; + using namespace peg::udl; if (debugger_) { if (ast.original_tag == "STATEMENT"_) { @@ -715,7 +715,7 @@ private: } Value eval_call(const peg::Ast& ast, std::shared_ptr env) { - using peg::operator"" _; + using namespace peg::udl; Value val = eval(*ast.nodes[0], env); @@ -836,7 +836,7 @@ private: } return rval; } else { - using peg::operator"" _; + using namespace peg::udl; Value lval = eval(*ast.nodes[lvaloff], env); diff --git a/language/culebra/main.cc b/language/culebra/main.cc index 5f962c3..e7c49f8 100644 --- a/language/culebra/main.cc +++ b/language/culebra/main.cc @@ -6,6 +6,7 @@ #include using namespace peg; +using namespace peg::udl; using namespace std; bool read_file(const char* path, vector& buff) diff --git a/language/pl0/pl0.cc b/language/pl0/pl0.cc index 19af5f1..44bd3da 100644 --- a/language/pl0/pl0.cc +++ b/language/pl0/pl0.cc @@ -11,6 +11,7 @@ #include using namespace peg; +using namespace peg::udl; using namespace std; /* diff --git a/peglib.h b/peglib.h index b41d847..0a40998 100644 --- a/peglib.h +++ b/peglib.h @@ -2151,9 +2151,11 @@ inline constexpr unsigned int str2tag(const char* str, int h = 0) { return !str[h] ? 5381 : (str2tag(str, h + 1) * 33) ^ static_cast(str[h]); } +namespace udl { inline constexpr unsigned int operator "" _(const char* s, size_t) { return str2tag(s); } +} #endif template