summaryrefslogtreecommitdiff
path: root/profile.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2016-11-15 21:03:57 +0200
committerArnold D. Robbins <arnold@skeeve.com>2016-11-15 21:03:57 +0200
commitb37675aa79213f2665abb2bbb4db90560642bdee (patch)
tree74a00854546a7a174b0722277def07fbfbc0e4cd /profile.c
parent84a7c376d6322a6e2429af79358091d10d94c004 (diff)
downloadgawk-b37675aa79213f2665abb2bbb4db90560642bdee.tar.gz
First steps reworking code away from node type.
Diffstat (limited to 'profile.c')
-rw-r--r--profile.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/profile.c b/profile.c
index c60fd296..f27f9dda 100644
--- a/profile.c
+++ b/profile.c
@@ -32,8 +32,8 @@ static void parenthesize(int type, NODE *left, NODE *right);
static char *pp_list(int nargs, const char *paren, const char *delim);
static char *pp_group3(const char *s1, const char *s2, const char *s3);
static char *pp_concat(int nargs);
-static char *pp_string_or_strong_regex(const char *in_str, size_t len, int delim, bool strong_regex);
-static char *pp_strong_regex(const char *in_str, size_t len, int delim);
+static char *pp_string_or_typed_regex(const char *in_str, size_t len, int delim, bool typed_regex);
+static char *pp_typed_regex(const char *in_str, size_t len, int delim);
static bool is_binary(int type);
static bool is_scalar(int type);
static int prec_level(int type);
@@ -640,7 +640,7 @@ cleanup:
break;
case Op_push_re:
- if (pc->memory->type != Node_regex && pc->memory->type != Node_typedregex)
+ if (pc->memory->type != Node_regex && (pc->memory->flags & REGEX) == 0)
break;
/* else
fall through */
@@ -650,7 +650,7 @@ cleanup:
if (pc->memory->type == Node_regex)
str = pp_string(re->stptr, re->stlen, '/');
else
- str = pp_strong_regex(re->stptr, re->stlen, '/');
+ str = pp_typed_regex(re->stptr, re->stlen, '/');
pp_push(pc->opcode, str, CAN_FREE);
}
break;
@@ -672,9 +672,9 @@ cleanup:
txt = t2->pp_str;
str = pp_group3(txt, op2str(pc->opcode), restr);
pp_free(t2);
- } else if (m->type == Node_typedregex) {
+ } else if (m->type == Node_val && (m->flags & REGEX) != 0) {
NODE *re = m->re_exp;
- restr = pp_strong_regex(re->stptr, re->stlen, '/');
+ restr = pp_typed_regex(re->stptr, re->stlen, '/');
str = pp_group3(txt, op2str(pc->opcode), restr);
efree(restr);
} else {
@@ -1416,21 +1416,21 @@ parenthesize(int type, NODE *left, NODE *right)
char *
pp_string(const char *in_str, size_t len, int delim)
{
- return pp_string_or_strong_regex(in_str, len, delim, false);
+ return pp_string_or_typed_regex(in_str, len, delim, false);
}
-/* pp_strong_regex --- pretty format a hard regex constant */
+/* pp_typed_regex --- pretty format a hard regex constant */
static char *
-pp_strong_regex(const char *in_str, size_t len, int delim)
+pp_typed_regex(const char *in_str, size_t len, int delim)
{
- return pp_string_or_strong_regex(in_str, len, delim, true);
+ return pp_string_or_typed_regex(in_str, len, delim, true);
}
-/* pp_string_or_strong_regex --- pretty format a string, regex, or hard regex constant */
+/* pp_string_or_typed_regex --- pretty format a string, regex, or typed regex constant */
char *
-pp_string_or_strong_regex(const char *in_str, size_t len, int delim, bool strong_regex)
+pp_string_or_typed_regex(const char *in_str, size_t len, int delim, bool typed_regex)
{
static char str_escapes[] = "\a\b\f\n\r\t\v\\";
static char str_printables[] = "abfnrtv\\";
@@ -1464,12 +1464,12 @@ pp_string_or_strong_regex(const char *in_str, size_t len, int delim, bool strong
} ofre -= (l)
/* initial size; 3 for delim + terminating null, 1 for @ */
- osiz = len + 3 + 1 + (strong_regex == true);
+ osiz = len + 3 + 1 + (typed_regex == true);
emalloc(obuf, char *, osiz, "pp_string");
obufout = obuf;
ofre = osiz - 1;
- if (strong_regex)
+ if (typed_regex)
*obufout++ = '@';
*obufout++ = delim;