816 |
{ |
{ |
817 |
int ch; |
int ch; |
818 |
|
|
819 |
for (ch = 256; --ch > 0; ) |
for (ch = 256; --ch > 0;) |
820 |
{ |
{ |
821 |
if (ch == '(') |
if (ch == '(') |
822 |
set_syntax_internal(M4_SYNTAX_OPEN, ch); |
set_syntax_internal (M4_SYNTAX_OPEN, ch); |
823 |
else if (ch == ')') |
else if (ch == ')') |
824 |
set_syntax_internal(M4_SYNTAX_CLOSE, ch); |
set_syntax_internal (M4_SYNTAX_CLOSE, ch); |
825 |
else if (ch == ',') |
else if (ch == ',') |
826 |
set_syntax_internal(M4_SYNTAX_COMMA, ch); |
set_syntax_internal (M4_SYNTAX_COMMA, ch); |
827 |
else if (isspace(ch)) |
else if (isspace (ch)) |
828 |
set_syntax_internal(M4_SYNTAX_SPACE, ch); |
set_syntax_internal (M4_SYNTAX_SPACE, ch); |
829 |
else if (isalpha(ch) || ch == '_') |
else if (isalpha (ch) || ch == '_') |
830 |
set_syntax_internal(M4_SYNTAX_ALPHA, ch); |
set_syntax_internal (M4_SYNTAX_ALPHA, ch); |
831 |
else if (isdigit(ch)) |
else if (isdigit (ch)) |
832 |
set_syntax_internal(M4_SYNTAX_NUM, ch); |
set_syntax_internal (M4_SYNTAX_NUM, ch); |
833 |
else |
else |
834 |
set_syntax_internal(M4_SYNTAX_OTHER, ch); |
set_syntax_internal (M4_SYNTAX_OTHER, ch); |
835 |
} |
} |
836 |
/* set_syntax_internal(M4_SYNTAX_IGNORE, 0); */ |
/* set_syntax_internal(M4_SYNTAX_IGNORE, 0); */ |
837 |
|
|
838 |
/* Default quotes and comment delimiters are always one char */ |
/* Default quotes and comment delimiters are always one char */ |
839 |
set_syntax_internal(M4_SYNTAX_LQUOTE, lquote.string[0]); |
set_syntax_internal (M4_SYNTAX_LQUOTE, lquote.string[0]); |
840 |
set_syntax_internal(M4_SYNTAX_RQUOTE, rquote.string[0]); |
set_syntax_internal (M4_SYNTAX_RQUOTE, rquote.string[0]); |
841 |
set_syntax_internal(M4_SYNTAX_BCOMM, bcomm.string[0]); |
set_syntax_internal (M4_SYNTAX_BCOMM, bcomm.string[0]); |
842 |
set_syntax_internal(M4_SYNTAX_ECOMM, ecomm.string[0]); |
set_syntax_internal (M4_SYNTAX_ECOMM, ecomm.string[0]); |
843 |
} |
} |
844 |
|
|
845 |
int |
int |
882 |
|
|
883 |
use_macro_escape = FALSE; |
use_macro_escape = FALSE; |
884 |
for (ch = 256; --ch >= 0; ) |
for (ch = 256; --ch >= 0; ) |
885 |
if (M4_IS_ESCAPE(ch)) |
if (M4_IS_ESCAPE (ch)) |
886 |
use_macro_escape = TRUE; |
use_macro_escape = TRUE; |
887 |
} |
} |
888 |
|
|
895 |
m4_set_quotes (const char *lq, const char *rq) |
m4_set_quotes (const char *lq, const char *rq) |
896 |
{ |
{ |
897 |
int ch; |
int ch; |
898 |
for (ch = 256; --ch >= 0; ) /* changequote overrides syntax_table */ |
for (ch = 256; --ch >= 0;) /* changequote overrides syntax_table */ |
899 |
if (M4_IS_LQUOTE(ch) || M4_IS_RQUOTE(ch)) |
if (M4_IS_LQUOTE (ch) || M4_IS_RQUOTE (ch)) |
900 |
unset_syntax_attribute(M4_SYNTAX_LQUOTE|M4_SYNTAX_RQUOTE, ch); |
unset_syntax_attribute (M4_SYNTAX_LQUOTE | M4_SYNTAX_RQUOTE, ch); |
901 |
|
|
902 |
xfree (lquote.string); |
xfree (lquote.string); |
903 |
xfree (rquote.string); |
xfree (rquote.string); |
911 |
|
|
912 |
if (single_quotes) |
if (single_quotes) |
913 |
{ |
{ |
914 |
set_syntax_internal(M4_SYNTAX_LQUOTE, lquote.string[0]); |
set_syntax_internal (M4_SYNTAX_LQUOTE, lquote.string[0]); |
915 |
set_syntax_internal(M4_SYNTAX_RQUOTE, rquote.string[0]); |
set_syntax_internal (M4_SYNTAX_RQUOTE, rquote.string[0]); |
916 |
} |
} |
917 |
|
|
918 |
if (use_macro_escape) |
if (use_macro_escape) |
919 |
check_use_macro_escape(); |
check_use_macro_escape (); |
920 |
} |
} |
921 |
|
|
922 |
void |
void |
923 |
m4_set_comment (const char *bc, const char *ec) |
m4_set_comment (const char *bc, const char *ec) |
924 |
{ |
{ |
925 |
int ch; |
int ch; |
926 |
for (ch = 256; --ch >= 0; ) /* changecom overrides syntax_table */ |
for (ch = 256; --ch >= 0;) /* changecom overrides syntax_table */ |
927 |
if (M4_IS_BCOMM(ch) || M4_IS_ECOMM(ch)) |
if (M4_IS_BCOMM (ch) || M4_IS_ECOMM (ch)) |
928 |
unset_syntax_attribute(M4_SYNTAX_BCOMM|M4_SYNTAX_ECOMM, ch); |
unset_syntax_attribute (M4_SYNTAX_BCOMM | M4_SYNTAX_ECOMM, ch); |
929 |
|
|
930 |
xfree (bcomm.string); |
xfree (bcomm.string); |
931 |
xfree (ecomm.string); |
xfree (ecomm.string); |
939 |
|
|
940 |
if (single_comments) |
if (single_comments) |
941 |
{ |
{ |
942 |
set_syntax_internal(M4_SYNTAX_BCOMM, bcomm.string[0]); |
set_syntax_internal (M4_SYNTAX_BCOMM, bcomm.string[0]); |
943 |
set_syntax_internal(M4_SYNTAX_ECOMM, ecomm.string[0]); |
set_syntax_internal (M4_SYNTAX_ECOMM, ecomm.string[0]); |
944 |
} |
} |
945 |
|
|
946 |
if (use_macro_escape) |
if (use_macro_escape) |
947 |
check_use_macro_escape(); |
check_use_macro_escape (); |
948 |
} |
} |
949 |
|
|
950 |
/* Functions to manipulate the syntax table. */ |
/* Functions to manipulate the syntax table. */ |
1040 |
init_builtin_token (td); |
init_builtin_token (td); |
1041 |
(void) next_char (); |
(void) next_char (); |
1042 |
#ifdef DEBUG_INPUT |
#ifdef DEBUG_INPUT |
1043 |
print_token("next_token", M4_TOKEN_MACDEF, td); |
print_token ("next_token", M4_TOKEN_MACDEF, td); |
1044 |
#endif |
#endif |
1045 |
return M4_TOKEN_MACDEF; |
return M4_TOKEN_MACDEF; |
1046 |
} |
} |