m4-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FYI: 27-gary-syntax-parser-tidy.patch


From: Gary V. Vaughan
Subject: FYI: 27-gary-syntax-parser-tidy.patch
Date: Thu, 17 Jul 2003 21:06:03 +0100
User-agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.3) Gecko/20030312

Applied to HEAD.
--
  ())_. Gary V. Vaughan     gary@(oranda.demon.co.uk|gnu.org)
  ( '/  Research Scientist  http://www.oranda.demon.co.uk       ,_())____
  / )=  GNU Hacker          http://www.gnu.org/software/libtool  \'      `&
`(_~)_  Tech' Author        http://sources.redhat.com/autobook   =`---d__/
Index: ChangeLog
from  Gary V. Vaughan  <address@hidden>

        Change the macros for checking syntax so that matching against
        multiple possible syntax classes can be done with a single
        comparison some of the time.  The various classes are now bits of
        an int that can be checked with bitwise logic operators.

        * m4/m4module.h (M4_SYNTAX_IGNORE, M4_SYNTAX_OTHER)
        (M4_SYNTAX_SPACE, M4_SYNTAX_OPEN, M4_SYNTAX_CLOSE, M4_SYNTAX_COMMA)
        (M4_SYNTAX_DOLLAR, M4_SYNTAX_ACTIVE, M4_SYNTAX_ESCAPE)
        (M4_SYNTAX_ASSIGN, M4_SYNTAX_ALPHA, M4_SYNTAX_NUM)
        (M4_SYNTAX_LQUOTE, M4_SYNTAX_RQUOTE, M4_SYNTAX_BCOMM)
        (M4_SYNTAX_ECOMM): Replaced #defines with an enum.
        (M4_SYNTAX_ALNUM): Removed.  Changed all callers.
        (M4_IS_IGNORE, M4_IS_OTHER, M4_IS_SPACE, M4_IS_OPEN, M4_IS_CLOSE)
        (M4_IS_COMMA, M4_IS_DOLLAR, M4_IS_ACTIVE, M4_IS_ESCAPE)
        (M4_IS_ASSIGN, M4_IS_ALPHA, M4_IS_NUM, M4_IS_LQUOTE, M4_IS_RQUOTE)
        (M4_IS_BCOMM, M4_IS_ECOMM, M4__IS_STRING, M4_IS_IDENT): Removed.
        Replace all calls with invocations of these...
        (m4_is_syntax, m4_has_syntax): ...New macros.
        * src/freeze.c (produce_syntax_dump): Remove mask argument, which
        is no longer required with new macros.  Changed all callers.

Index: m4/input.c
===================================================================
RCS file: /cvsroot/m4/m4/m4/input.c,v
retrieving revision 1.31
diff -u -p -u -r1.31 input.c
--- m4/input.c 15 Jul 2003 09:24:54 -0000 1.31
+++ m4/input.c 17 Jul 2003 19:53:49 -0000
@@ -752,21 +752,20 @@ m4__next_token (m4 *context, m4_symbol_v
       }
 
     (void) next_char (context);
-    if (M4_IS_BCOMM (M4SYNTAX, ch))    /* COMMENT, SHORT DELIM */
-      {
+    if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_BCOMM))
+      {                                        /* COMMENT, SHORT DELIM */
        obstack_1grow (&token_stack, ch);
        while ((ch = next_char (context)) != CHAR_EOF
-              && !M4_IS_ECOMM (M4SYNTAX, ch))
+              && !m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_ECOMM))
          obstack_1grow (&token_stack, ch);
        if (ch != CHAR_EOF)
          obstack_1grow (&token_stack, ch);
        type = m4_get_discard_comments_opt (context)
                ? M4_TOKEN_NONE : M4_TOKEN_STRING;
       }
-                                       /* COMMENT, LONGER DELIM */
     else if (!m4_is_syntax_single_comments (M4SYNTAX)
             && MATCH (context, ch, context->syntax->bcomm.string))
-      {
+      {                                        /* COMMENT, LONGER DELIM */
        obstack_grow (&token_stack, context->syntax->bcomm.string,
                      context->syntax->bcomm.length);
        while ((ch = next_char (context)) != CHAR_EOF
@@ -778,16 +777,17 @@ m4__next_token (m4 *context, m4_symbol_v
        type = m4_get_discard_comments_opt (context)
                ? M4_TOKEN_NONE : M4_TOKEN_STRING;
       }
-    else if (M4_IS_ESCAPE (M4SYNTAX, ch))      /* ESCAPED WORD */
-      {
+    else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_ESCAPE))
+      {                                        /* ESCAPED WORD */
        obstack_1grow (&token_stack, ch);
        if ((ch = next_char (context)) != CHAR_EOF)
          {
-           if (M4_IS_ALPHA (M4SYNTAX, ch))
+           if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_ALPHA))
              {
                obstack_1grow (&token_stack, ch);
                while ((ch = next_char (context)) != CHAR_EOF
-                      && (M4_IS_ALNUM (M4SYNTAX, ch)))
+                      && (m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_ALPHA)
+                          || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_NUM)))
                  {
                    obstack_1grow (&token_stack, ch);
                  }
@@ -807,11 +807,12 @@ m4__next_token (m4 *context, m4_symbol_v
            type = M4_TOKEN_SIMPLE;     /* escape before eof */
          }
       }
-    else if (M4_IS_ALPHA (M4SYNTAX, ch))
+    else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_ALPHA))
       {
        obstack_1grow (&token_stack, ch);
        while ((ch = next_char (context)) != CHAR_EOF
-              && (M4_IS_ALNUM (M4SYNTAX, ch)))
+              && (m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_ALPHA)
+                  || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_NUM)))
          {
            obstack_1grow (&token_stack, ch);
          }
@@ -821,8 +822,8 @@ m4__next_token (m4 *context, m4_symbol_v
        type = m4_is_syntax_macro_escaped (M4SYNTAX)
                ? M4_TOKEN_STRING : M4_TOKEN_WORD;
       }
-    else if (M4_IS_LQUOTE (M4SYNTAX, ch)) /* QUOTED STRING, SINGLE QUOTES */
-      {
+    else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_LQUOTE))
+      {                                        /* QUOTED STRING, SINGLE QUOTES 
*/
        const char *current_file = m4_current_file;
        int current_line = m4_current_line;
        quote_level = 1;
@@ -834,13 +835,13 @@ m4__next_token (m4 *context, m4_symbol_v
                              current_file, current_line,
                              _("EOF in string"));
 
-           if (M4_IS_RQUOTE (M4SYNTAX, ch))
+           if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_RQUOTE))
              {
                if (--quote_level == 0)
                  break;
                obstack_1grow (&token_stack, ch);
              }
-           else if (M4_IS_LQUOTE (M4SYNTAX, ch))
+           else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_LQUOTE))
              {
                quote_level++;
                obstack_1grow (&token_stack, ch);
@@ -850,10 +851,9 @@ m4__next_token (m4 *context, m4_symbol_v
          }
        type = M4_TOKEN_STRING;
       }
-                                       /* QUOTED STRING, LONGER QUOTES */
     else if (!m4_is_syntax_single_quotes (M4SYNTAX)
             && MATCH (context, ch, context->syntax->lquote.string))
-      {
+      {                                        /* QUOTED STRING, LONGER QUOTES 
*/
        const char *current_file = m4_current_file;
        int current_line = m4_current_line;
        quote_level = 1;
@@ -883,15 +883,18 @@ m4__next_token (m4 *context, m4_symbol_v
        type = M4_TOKEN_STRING;
       }
     else if (m4_is_syntax_single_quotes (M4SYNTAX)
-            && m4_is_syntax_single_comments (M4SYNTAX)) /* EVERYTHING ELSE */
-      {
+            && m4_is_syntax_single_comments (M4SYNTAX))
+      {                        /* EVERYTHING ELSE (SHORT QUOTES AND COMMENTS) 
*/
        obstack_1grow (&token_stack, ch);
 
-       if (M4_IS_OTHER (M4SYNTAX, ch) || M4__IS_STRING (M4SYNTAX, ch))
-         {
-           while ((ch = next_char(context)) != CHAR_EOF
-                  && (M4_IS_OTHER (M4SYNTAX, ch)
-                      || M4__IS_STRING (M4SYNTAX, ch)))
+       if (m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_OTHER)
+           || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_NUM)
+           || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_DOLLAR))
+         {
+           while (((ch = next_char(context)) != CHAR_EOF)
+                  && (m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_OTHER)
+                      || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_NUM)
+                      || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_DOLLAR)))
              {
                obstack_1grow (&token_stack, ch);
              }
@@ -900,12 +903,12 @@ m4__next_token (m4 *context, m4_symbol_v
              unget_input(ch);
            type = M4_TOKEN_STRING;
          }
-       else if (M4_IS_SPACE (M4SYNTAX, ch))
+       else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_SPACE))
          {
            if (!m4_get_interactive_opt (context))
              {
                while ((ch = next_char (context)) != CHAR_EOF
-                      && M4_IS_SPACE (M4SYNTAX, ch))
+                      && m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_SPACE))
                  obstack_1grow (&token_stack, ch);
 
                if (ch != CHAR_EOF)
@@ -913,20 +916,22 @@ m4__next_token (m4 *context, m4_symbol_v
              }
            type = M4_TOKEN_SPACE;
          }
-       else if (M4_IS_ACTIVE (M4SYNTAX, ch))
+       else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_ACTIVE))
          type = M4_TOKEN_WORD;
        else
          type = M4_TOKEN_SIMPLE;
       }
-    else                               /* EVERYTHING ELSE AGAIN?! */
+    else               /* EVERYTHING ELSE (LONG QUOTES OR COMMENTS) */
       {
        obstack_1grow (&token_stack, ch);
 
-       if (M4_IS_OTHER (M4SYNTAX, ch) || M4__IS_STRING (M4SYNTAX, ch))
+       if (m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_OTHER)
+           || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_NUM)
+           || m4_is_syntax (M4SYNTAX, ch, M4_SYNTAX_DOLLAR))
          type = M4_TOKEN_STRING;
-       else if (M4_IS_SPACE (M4SYNTAX, ch))
+       else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_SPACE))
          type = M4_TOKEN_SPACE;
-       else if (M4_IS_ACTIVE (M4SYNTAX, ch))
+       else if (m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_ACTIVE))
          type = M4_TOKEN_WORD;
        else
          type = M4_TOKEN_SIMPLE;
Index: m4/m4module.h
===================================================================
RCS file: /cvsroot/m4/m4/m4/m4module.h,v
retrieving revision 1.54
diff -u -p -u -r1.54 m4module.h
--- m4/m4module.h 9 Jul 2003 12:32:41 -0000 1.54
+++ m4/m4module.h 17 Jul 2003 19:53:52 -0000
@@ -328,67 +328,39 @@ extern    boolean          m4_is_syntax_single_quo
 extern boolean          m4_is_syntax_single_comments   (m4_syntax_table *);
 extern boolean          m4_is_syntax_macro_escaped     (m4_syntax_table *);
 
-/* These are simple values, not bit masks.  There is no overlap. */
-#define M4_SYNTAX_OTHER                (0x0000)
+/* These are values to be assigned to syntax table entries, although they
+   are bit masks for fast categorisation in m4__next_token(), only one
+   value per syntax table entry is allowed.  */
+enum {
+  M4_SYNTAX_OTHER              = (1 << 0),
+  M4_SYNTAX_IGNORE             = (1 << 1),
+  M4_SYNTAX_SPACE              = (1 << 2),
+  M4_SYNTAX_OPEN               = (1 << 3),
+  M4_SYNTAX_CLOSE              = (1 << 4),
+  M4_SYNTAX_COMMA              = (1 << 5),
+  M4_SYNTAX_DOLLAR             = (1 << 6),
+  M4_SYNTAX_ACTIVE             = (1 << 7),
+  M4_SYNTAX_ESCAPE             = (1 << 8),
+  M4_SYNTAX_ASSIGN             = (1 << 9),
+  M4_SYNTAX_ALPHA              = (1 << 10),
+  M4_SYNTAX_NUM                        = (1 << 11),
+
+  /* These values ARE bit masks to AND with categories above, a syntax entry
+     may have any number of these in addition to a maximum of one of the
+     values above.  */
+  M4_SYNTAX_LQUOTE             = (1 << 12),
+  M4_SYNTAX_RQUOTE             = (1 << 13),
+  M4_SYNTAX_BCOMM              = (1 << 14),
+  M4_SYNTAX_ECOMM              = (1 << 15),
+};
+
+#define M4_SYNTAX_MASKS                
(M4_SYNTAX_LQUOTE|M4_SYNTAX_RQUOTE|M4_SYNTAX_BCOMM|M4_SYNTAX_ECOMM)
+#define M4_SYNTAX_VALUE                (~(M4_SYNTAX_RQUOTE|M4_SYNTAX_ECOMM))
+
+#define m4_syntab(S,C)         ((S)->table[(int)(C)])
+#define m4_has_syntax(S,C,T)   ((m4_syntab((S),(C)) & (T)) > 0)
+#define m4_is_syntax(S,C,T)    ((m4_syntab((S),(C)) & M4_SYNTAX_VALUE) == (T))
 
-#define M4_SYNTAX_IGNORE       (0x0001)
-#define M4_SYNTAX_SPACE                (0x0002)
-#define M4_SYNTAX_OPEN         (0x0003)
-#define M4_SYNTAX_CLOSE                (0x0004)
-#define M4_SYNTAX_COMMA                (0x0005)
-#define M4_SYNTAX_DOLLAR       (0x0006)
-#define M4_SYNTAX_ACTIVE       (0x0007)
-#define M4_SYNTAX_ESCAPE       (0x0008)
-#define M4_SYNTAX_ASSIGN       (0x0009)
-
-/* These are values to be assigned to syntax table entries, but they are
-   used as bit masks with M4_IS_ALNUM.*/
-#define M4_SYNTAX_ALPHA                (0x0010)
-#define M4_SYNTAX_NUM          (0x0020)
-#define M4_SYNTAX_ALNUM                (M4_SYNTAX_ALPHA|M4_SYNTAX_NUM)
-
-/* We can OR the valid M4_TOKEN_STRING chars together, since they are
-   carefully chosen not to overlap.  This reduces the number of comparisons
-   the compiled code needs in order to speed up m4__next_token () a bit.  */
-#define M4__SYNTAX_STRING      (M4_SYNTAX_NUM|M4_SYNTAX_DOLLAR)
-
-/* These are bit masks to AND with other categories.
-   See input.c for details. */
-#define M4_SYNTAX_LQUOTE       (0x0100)
-#define M4_SYNTAX_RQUOTE       (0x0200)
-#define M4_SYNTAX_BCOMM                (0x0400)
-#define M4_SYNTAX_ECOMM                (0x0800)
-
-/* These bits define the syntax code of a character */
-#define M4_SYNTAX_VALUE                
(0x00FF|M4_SYNTAX_LQUOTE|M4_SYNTAX_BCOMM)
-#define M4_SYNTAX_MASKS                (0xFF00)
-
-#define m4__is_syntax(S,C,T)                                           \
-       (((S)->table[(int)(C)] & M4_SYNTAX_VALUE) == (T))
-
-#define M4_IS_IGNORE(S, C) (((S)->table[(int)(C)]) == M4_SYNTAX_IGNORE)
-#define M4_IS_OTHER(S, C)  (m4__is_syntax((S), (C), M4_SYNTAX_OTHER))
-#define M4_IS_SPACE(S, C)  (m4__is_syntax((S), (C), M4_SYNTAX_SPACE))
-
-#define M4_IS_OPEN(S, C)   (m4__is_syntax((S), (C), M4_SYNTAX_OPEN))
-#define M4_IS_CLOSE(S, C)  (m4__is_syntax((S), (C), M4_SYNTAX_CLOSE))
-#define M4_IS_COMMA(S, C)  (m4__is_syntax((S), (C), M4_SYNTAX_COMMA))
-#define M4_IS_DOLLAR(S, C) (m4__is_syntax((S), (C), M4_SYNTAX_DOLLAR))
-#define M4_IS_ACTIVE(S, C) (m4__is_syntax((S), (C), M4_SYNTAX_ACTIVE))
-#define M4_IS_ESCAPE(S, C) (m4__is_syntax((S), (C), M4_SYNTAX_ESCAPE))
-#define M4_IS_ASSIGN(S, C) (m4__is_syntax((S), (C), M4_SYNTAX_ASSIGN))
-
-#define M4_IS_ALPHA(S, C)  (m4__is_syntax((S), (C), M4_SYNTAX_ALPHA))
-#define M4_IS_NUM(S, C)    (m4__is_syntax((S), (C), M4_SYNTAX_NUM))
-#define M4_IS_ALNUM(S, C)  ((S)->table[(int)(C)] & M4_SYNTAX_ALNUM)
-
-#define M4_IS_LQUOTE(S, C) ((S)->table[(int)(C)] & M4_SYNTAX_LQUOTE)
-#define M4_IS_RQUOTE(S, C) ((S)->table[(int)(C)] & M4_SYNTAX_RQUOTE)
-#define M4_IS_BCOMM(S, C)  ((S)->table[(int)(C)] & M4_SYNTAX_BCOMM)
-#define M4_IS_ECOMM(S, C)  ((S)->table[(int)(C)] & M4_SYNTAX_ECOMM)
-
-#define M4__IS_STRING(S, C) (m4__is_syntax((S), (C), M4__SYNTAX_STRING))
-#define M4_IS_IDENT(S, C)  (M4_IS_OTHER((S),(C))||M4_IS_ALNUM((S),(C)))
 
 
 /* --- TOKENISATION AND INPUT --- */
Index: m4/macro.c
===================================================================
RCS file: /cvsroot/m4/m4/m4/macro.c,v
retrieving revision 1.33
diff -u -p -u -r1.33 macro.c
--- m4/macro.c 15 Jul 2003 09:24:54 -0000 1.33
+++ m4/macro.c 17 Jul 2003 19:53:52 -0000
@@ -80,7 +80,7 @@ expand_token (m4 *context, struct obstac
        char *textp = text;
        int ch;
 
-       if (M4_IS_ESCAPE (M4SYNTAX, *textp))
+       if (m4_has_syntax (M4SYNTAX, *textp, M4_SYNTAX_ESCAPE))
          ++textp;
 
        symbol = m4_symbol_lookup (M4SYMTAB, textp);
@@ -89,7 +89,7 @@ expand_token (m4 *context, struct obstac
            || (symbol->value->type == M4_SYMBOL_FUNC
                && BIT_TEST (SYMBOL_FLAGS (symbol), VALUE_BLIND_ARGS_BIT)
                && (ch = m4_peek_input (context)) < CHAR_EOF
-               && !M4_IS_OPEN (M4SYNTAX, ch)))
+               && !m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_OPEN)))
          {
            m4_shipout_text (context, obs, text, strlen (text));
          }
@@ -140,7 +140,8 @@ expand_argument (m4 *context, struct obs
        {                       /* TOKSW */
        case M4_TOKEN_SIMPLE:
          text = m4_get_symbol_value_text (&token);
-         if ((M4_IS_COMMA (M4SYNTAX, *text) || M4_IS_CLOSE (M4SYNTAX, *text))
+         if ((m4_has_syntax (M4SYNTAX, *text,
+                             M4_SYNTAX_COMMA|M4_SYNTAX_CLOSE))
              && paren_level == 0)
            {
 
@@ -152,12 +153,12 @@ expand_argument (m4 *context, struct obs
                {
                  m4_set_symbol_value_text (argp, text);
                }
-             return (boolean) (M4_IS_COMMA (M4SYNTAX, 
*m4_get_symbol_value_text (&token)));
+             return (boolean) (m4_has_syntax (M4SYNTAX, 
*m4_get_symbol_value_text (&token), M4_SYNTAX_COMMA));
            }
 
-         if (M4_IS_OPEN (M4SYNTAX, *text))
+         if (m4_has_syntax (M4SYNTAX, *text, M4_SYNTAX_OPEN))
            paren_level++;
-         else if (M4_IS_CLOSE (M4SYNTAX, *text))
+         else if (m4_has_syntax (M4SYNTAX, *text, M4_SYNTAX_CLOSE))
            paren_level--;
          expand_token (context, obs, type, &token);
          break;
@@ -272,7 +273,7 @@ collect_arguments (m4 *context, const ch
   obstack_grow (argptr, (void *) &tokenp, sizeof (tokenp));
 
   ch = m4_peek_input (context);
-  if ((ch < CHAR_EOF) && M4_IS_OPEN (M4SYNTAX, ch))
+  if ((ch < CHAR_EOF) && m4_has_syntax (M4SYNTAX, ch, M4_SYNTAX_OPEN))
     {
       m4__next_token (context, &token);                /* gobble parenthesis */
       do
@@ -334,7 +335,7 @@ m4_process_macro (m4 *context, m4_symbol
     {
       char ch;
 
-      if (!M4_IS_DOLLAR (M4SYNTAX, *text))
+      if (!m4_has_syntax (M4SYNTAX, *text, M4_SYNTAX_DOLLAR))
        {
          obstack_1grow (obs, *text);
          text++;
@@ -382,7 +383,7 @@ m4_process_macro (m4 *context, m4_symbol
              const char * endp;
              const char * key;
 
-             for (endp = ++text; *endp && M4_IS_IDENT (M4SYNTAX, *endp); 
++endp)
+             for (endp = ++text; *endp && m4_has_syntax (M4SYNTAX, *endp, 
M4_SYNTAX_OTHER|M4_SYNTAX_ALPHA|M4_SYNTAX_NUM); ++endp)
                ++len;
              key = xstrzdup (text, len);
 
Index: m4/syntax.c
===================================================================
RCS file: /cvsroot/m4/m4/m4/syntax.c,v
retrieving revision 1.5
diff -u -p -u -r1.5 syntax.c
--- m4/syntax.c 27 Jun 2003 14:00:25 -0000 1.5
+++ m4/syntax.c 17 Jul 2003 19:54:02 -0000
@@ -203,8 +203,8 @@ m4_set_quotes (m4_syntax_table *syntax, 
   assert (syntax);
 
   for (ch = 256; --ch >= 0;)   /* changequote overrides syntax_table */
-    if (M4_IS_LQUOTE (syntax, ch) || M4_IS_RQUOTE (syntax, ch))
-      remove_syntax_attribute (syntax, ch, M4_SYNTAX_LQUOTE | 
M4_SYNTAX_RQUOTE);
+    if (m4_has_syntax (syntax, ch, M4_SYNTAX_LQUOTE|M4_SYNTAX_RQUOTE))
+      remove_syntax_attribute (syntax, ch, M4_SYNTAX_LQUOTE|M4_SYNTAX_RQUOTE);
 
   xfree (syntax->lquote.string);
   xfree (syntax->rquote.string);
@@ -249,8 +249,8 @@ m4_set_comment (m4_syntax_table *syntax,
   assert (syntax);
 
   for (ch = 256; --ch >= 0;)   /* changecom overrides syntax_table */
-    if (M4_IS_BCOMM (syntax, ch) || M4_IS_ECOMM (syntax, ch))
-      remove_syntax_attribute (syntax, ch, M4_SYNTAX_BCOMM | M4_SYNTAX_ECOMM);
+    if (m4_has_syntax (syntax, ch, M4_SYNTAX_BCOMM|M4_SYNTAX_ECOMM))
+      remove_syntax_attribute (syntax, ch, M4_SYNTAX_BCOMM|M4_SYNTAX_ECOMM);
 
   xfree (syntax->bcomm.string);
   xfree (syntax->ecomm.string);
@@ -377,7 +377,7 @@ check_is_macro_escaped (m4_syntax_table 
 
   syntax->is_macro_escaped = FALSE;
   for (ch = 256; --ch >= 0; )
-    if (M4_IS_ESCAPE (syntax, ch))
+    if (m4_has_syntax (syntax, ch, M4_SYNTAX_ESCAPE))
       {
        syntax->is_macro_escaped = TRUE;
        break;
Index: m4/utility.c
===================================================================
RCS file: /cvsroot/m4/m4/m4/utility.c,v
retrieving revision 1.29
diff -u -p -u -r1.29 utility.c
--- m4/utility.c 26 Jun 2003 14:57:32 -0000 1.29
+++ m4/utility.c 17 Jul 2003 19:54:02 -0000
@@ -61,7 +61,7 @@ m4_bad_argc (m4 *context, int argc, m4_s
 const char *
 m4_skip_space (m4 *context, const char *arg)
 {
-  while (M4_IS_SPACE (M4SYNTAX, *arg))
+  while (m4_has_syntax (M4SYNTAX, *arg, M4_SYNTAX_SPACE))
     arg++;
   return arg;
 }
Index: src/freeze.c
===================================================================
RCS file: /cvsroot/m4/m4/src/freeze.c,v
retrieving revision 1.32
diff -u -p -u -r1.32 freeze.c
--- src/freeze.c 26 Jun 2003 14:57:32 -0000 1.32
+++ src/freeze.c 17 Jul 2003 19:54:03 -0000
@@ -27,7 +27,7 @@ static        int   decode_char          (FILE *in);
 static void  issue_expect_message (int expected);
 static int   produce_char_dump    (char *buf, int ch);
 static void  produce_syntax_dump  (FILE *file, m4_syntax_table *syntax,
-                                   char ch, int mask);
+                                   char ch);
 static void  produce_module_dump  (FILE *file, lt_dlhandle handle);
 static void  produce_symbol_dump  (m4 *context, FILE *file,
                                    m4_symbol_table *symtab);
@@ -79,7 +79,7 @@ produce_char_dump (char *buf, int ch)
 #define MAX_CHAR_LENGTH 4      /* '\377' -> 4 characters */
 
 static void
-produce_syntax_dump (FILE *file, m4_syntax_table *syntax, char ch, int mask)
+produce_syntax_dump (FILE *file, m4_syntax_table *syntax, char ch)
 {
   char buf[1+ MAX_CHAR_LENGTH * sizeof (m4_syntax_table)];
   int code = m4_syntax_code (ch);
@@ -93,8 +93,7 @@ produce_syntax_dump (FILE *file, m4_synt
 
   for (i = 1; i < 256; ++i)
     {
-      if ((mask && ((syntax->table[i] & mask) == code))
-         || (!mask && ((syntax->table[i] & code) == code)))
+      if (m4_has_syntax (syntax, i, code))
        {
          offset += produce_char_dump (buf + offset, i);
          ++count;
@@ -236,23 +235,23 @@ produce_frozen_state (m4 *context, const
 
   /* Dump syntax table. */
 
-  produce_syntax_dump (file, M4SYNTAX, 'I', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, 'S', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, '(', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, ')', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, ',', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, '$', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, 'A', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, '@', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, 'O', M4_SYNTAX_VALUE);
-
-  produce_syntax_dump (file, M4SYNTAX, 'W', M4_SYNTAX_VALUE);
-  produce_syntax_dump (file, M4SYNTAX, 'D', M4_SYNTAX_VALUE);
-
-  produce_syntax_dump (file, M4SYNTAX, 'L', 0);
-  produce_syntax_dump (file, M4SYNTAX, 'R', 0);
-  produce_syntax_dump (file, M4SYNTAX, 'B', 0);
-  produce_syntax_dump (file, M4SYNTAX, 'E', 0);
+  produce_syntax_dump (file, M4SYNTAX, 'I');
+  produce_syntax_dump (file, M4SYNTAX, 'S');
+  produce_syntax_dump (file, M4SYNTAX, '(');
+  produce_syntax_dump (file, M4SYNTAX, ')');
+  produce_syntax_dump (file, M4SYNTAX, ',');
+  produce_syntax_dump (file, M4SYNTAX, '$');
+  produce_syntax_dump (file, M4SYNTAX, 'A');
+  produce_syntax_dump (file, M4SYNTAX, '@');
+  produce_syntax_dump (file, M4SYNTAX, 'O');
+
+  produce_syntax_dump (file, M4SYNTAX, 'W');
+  produce_syntax_dump (file, M4SYNTAX, 'D');
+
+  produce_syntax_dump (file, M4SYNTAX, 'L');
+  produce_syntax_dump (file, M4SYNTAX, 'R');
+  produce_syntax_dump (file, M4SYNTAX, 'B');
+  produce_syntax_dump (file, M4SYNTAX, 'E');
 
   /* Dump all loaded modules.  */
   produce_module_dump (file, lt_dlhandle_next (0));

reply via email to

[Prev in Thread] Current Thread [Next in Thread]