comparison src/regex.c @ 49930:0f71486df5bc

(print_partial_compiled_pattern): Output to stderr.
author Richard M. Stallman <rms@gnu.org>
date Sun, 23 Feb 2003 15:00:30 +0000
parents 23a1cea22d13
children 695cf19ef79e
comparison
equal deleted inserted replaced
49929:098268b04ffd 49930:0f71486df5bc
919 re_char *p = start; 919 re_char *p = start;
920 re_char *pend = end; 920 re_char *pend = end;
921 921
922 if (start == NULL) 922 if (start == NULL)
923 { 923 {
924 printf ("(null)\n"); 924 fprintf (stderr, "(null)\n");
925 return; 925 return;
926 } 926 }
927 927
928 /* Loop over pattern commands. */ 928 /* Loop over pattern commands. */
929 while (p < pend) 929 while (p < pend)
930 { 930 {
931 printf ("%d:\t", p - start); 931 fprintf (stderr, "%d:\t", p - start);
932 932
933 switch ((re_opcode_t) *p++) 933 switch ((re_opcode_t) *p++)
934 { 934 {
935 case no_op: 935 case no_op:
936 printf ("/no_op"); 936 fprintf (stderr, "/no_op");
937 break; 937 break;
938 938
939 case succeed: 939 case succeed:
940 printf ("/succeed"); 940 fprintf (stderr, "/succeed");
941 break; 941 break;
942 942
943 case exactn: 943 case exactn:
944 mcnt = *p++; 944 mcnt = *p++;
945 printf ("/exactn/%d", mcnt); 945 fprintf (stderr, "/exactn/%d", mcnt);
946 do 946 do
947 { 947 {
948 putchar ('/'); 948 fprintf (stderr, "/%c", *p++);
949 putchar (*p++);
950 } 949 }
951 while (--mcnt); 950 while (--mcnt);
952 break; 951 break;
953 952
954 case start_memory: 953 case start_memory:
955 printf ("/start_memory/%d", *p++); 954 fprintf (stderr, "/start_memory/%d", *p++);
956 break; 955 break;
957 956
958 case stop_memory: 957 case stop_memory:
959 printf ("/stop_memory/%d", *p++); 958 fprintf (stderr, "/stop_memory/%d", *p++);
960 break; 959 break;
961 960
962 case duplicate: 961 case duplicate:
963 printf ("/duplicate/%d", *p++); 962 fprintf (stderr, "/duplicate/%d", *p++);
964 break; 963 break;
965 964
966 case anychar: 965 case anychar:
967 printf ("/anychar"); 966 fprintf (stderr, "/anychar");
968 break; 967 break;
969 968
970 case charset: 969 case charset:
971 case charset_not: 970 case charset_not:
972 { 971 {
973 register int c, last = -100; 972 register int c, last = -100;
974 register int in_range = 0; 973 register int in_range = 0;
975 int length = CHARSET_BITMAP_SIZE (p - 1); 974 int length = CHARSET_BITMAP_SIZE (p - 1);
976 int has_range_table = CHARSET_RANGE_TABLE_EXISTS_P (p - 1); 975 int has_range_table = CHARSET_RANGE_TABLE_EXISTS_P (p - 1);
977 976
978 printf ("/charset [%s", 977 fprintf (stderr, "/charset [%s",
979 (re_opcode_t) *(p - 1) == charset_not ? "^" : ""); 978 (re_opcode_t) *(p - 1) == charset_not ? "^" : "");
980 979
981 assert (p + *p < pend); 980 assert (p + *p < pend);
982 981
983 for (c = 0; c < 256; c++) 982 for (c = 0; c < 256; c++)
985 && (p[1 + (c/8)] & (1 << (c % 8)))) 984 && (p[1 + (c/8)] & (1 << (c % 8))))
986 { 985 {
987 /* Are we starting a range? */ 986 /* Are we starting a range? */
988 if (last + 1 == c && ! in_range) 987 if (last + 1 == c && ! in_range)
989 { 988 {
990 putchar ('-'); 989 fprintf (stderr, "-");
991 in_range = 1; 990 in_range = 1;
992 } 991 }
993 /* Have we broken a range? */ 992 /* Have we broken a range? */
994 else if (last + 1 != c && in_range) 993 else if (last + 1 != c && in_range)
995 { 994 {
996 putchar (last); 995 fprintf (stderr, "%c", last);
997 in_range = 0; 996 in_range = 0;
998 } 997 }
999 998
1000 if (! in_range) 999 if (! in_range)
1001 putchar (c); 1000 fprintf (stderr, "%c", c);
1002 1001
1003 last = c; 1002 last = c;
1004 } 1003 }
1005 1004
1006 if (in_range) 1005 if (in_range)
1007 putchar (last); 1006 fprintf (stderr, "%c", last);
1008 1007
1009 putchar (']'); 1008 fprintf (stderr, "]");
1010 1009
1011 p += 1 + length; 1010 p += 1 + length;
1012 1011
1013 if (has_range_table) 1012 if (has_range_table)
1014 { 1013 {
1015 int count; 1014 int count;
1016 printf ("has-range-table"); 1015 fprintf (stderr, "has-range-table");
1017 1016
1018 /* ??? Should print the range table; for now, just skip it. */ 1017 /* ??? Should print the range table; for now, just skip it. */
1019 p += 2; /* skip range table bits */ 1018 p += 2; /* skip range table bits */
1020 EXTRACT_NUMBER_AND_INCR (count, p); 1019 EXTRACT_NUMBER_AND_INCR (count, p);
1021 p = CHARSET_RANGE_TABLE_END (p, count); 1020 p = CHARSET_RANGE_TABLE_END (p, count);
1022 } 1021 }
1023 } 1022 }
1024 break; 1023 break;
1025 1024
1026 case begline: 1025 case begline:
1027 printf ("/begline"); 1026 fprintf (stderr, "/begline");
1028 break; 1027 break;
1029 1028
1030 case endline: 1029 case endline:
1031 printf ("/endline"); 1030 fprintf (stderr, "/endline");
1032 break; 1031 break;
1033 1032
1034 case on_failure_jump: 1033 case on_failure_jump:
1035 extract_number_and_incr (&mcnt, &p); 1034 extract_number_and_incr (&mcnt, &p);
1036 printf ("/on_failure_jump to %d", p + mcnt - start); 1035 fprintf (stderr, "/on_failure_jump to %d", p + mcnt - start);
1037 break; 1036 break;
1038 1037
1039 case on_failure_keep_string_jump: 1038 case on_failure_keep_string_jump:
1040 extract_number_and_incr (&mcnt, &p); 1039 extract_number_and_incr (&mcnt, &p);
1041 printf ("/on_failure_keep_string_jump to %d", p + mcnt - start); 1040 fprintf (stderr, "/on_failure_keep_string_jump to %d", p + mcnt - start);
1042 break; 1041 break;
1043 1042
1044 case on_failure_jump_nastyloop: 1043 case on_failure_jump_nastyloop:
1045 extract_number_and_incr (&mcnt, &p); 1044 extract_number_and_incr (&mcnt, &p);
1046 printf ("/on_failure_jump_nastyloop to %d", p + mcnt - start); 1045 fprintf (stderr, "/on_failure_jump_nastyloop to %d", p + mcnt - start);
1047 break; 1046 break;
1048 1047
1049 case on_failure_jump_loop: 1048 case on_failure_jump_loop:
1050 extract_number_and_incr (&mcnt, &p); 1049 extract_number_and_incr (&mcnt, &p);
1051 printf ("/on_failure_jump_loop to %d", p + mcnt - start); 1050 fprintf (stderr, "/on_failure_jump_loop to %d", p + mcnt - start);
1052 break; 1051 break;
1053 1052
1054 case on_failure_jump_smart: 1053 case on_failure_jump_smart:
1055 extract_number_and_incr (&mcnt, &p); 1054 extract_number_and_incr (&mcnt, &p);
1056 printf ("/on_failure_jump_smart to %d", p + mcnt - start); 1055 fprintf (stderr, "/on_failure_jump_smart to %d", p + mcnt - start);
1057 break; 1056 break;
1058 1057
1059 case jump: 1058 case jump:
1060 extract_number_and_incr (&mcnt, &p); 1059 extract_number_and_incr (&mcnt, &p);
1061 printf ("/jump to %d", p + mcnt - start); 1060 fprintf (stderr, "/jump to %d", p + mcnt - start);
1062 break; 1061 break;
1063 1062
1064 case succeed_n: 1063 case succeed_n:
1065 extract_number_and_incr (&mcnt, &p); 1064 extract_number_and_incr (&mcnt, &p);
1066 extract_number_and_incr (&mcnt2, &p); 1065 extract_number_and_incr (&mcnt2, &p);
1067 printf ("/succeed_n to %d, %d times", p - 2 + mcnt - start, mcnt2); 1066 fprintf (stderr, "/succeed_n to %d, %d times", p - 2 + mcnt - start, mcnt2);
1068 break; 1067 break;
1069 1068
1070 case jump_n: 1069 case jump_n:
1071 extract_number_and_incr (&mcnt, &p); 1070 extract_number_and_incr (&mcnt, &p);
1072 extract_number_and_incr (&mcnt2, &p); 1071 extract_number_and_incr (&mcnt2, &p);
1073 printf ("/jump_n to %d, %d times", p - 2 + mcnt - start, mcnt2); 1072 fprintf (stderr, "/jump_n to %d, %d times", p - 2 + mcnt - start, mcnt2);
1074 break; 1073 break;
1075 1074
1076 case set_number_at: 1075 case set_number_at:
1077 extract_number_and_incr (&mcnt, &p); 1076 extract_number_and_incr (&mcnt, &p);
1078 extract_number_and_incr (&mcnt2, &p); 1077 extract_number_and_incr (&mcnt2, &p);
1079 printf ("/set_number_at location %d to %d", p - 2 + mcnt - start, mcnt2); 1078 fprintf (stderr, "/set_number_at location %d to %d", p - 2 + mcnt - start, mcnt2);
1080 break; 1079 break;
1081 1080
1082 case wordbound: 1081 case wordbound:
1083 printf ("/wordbound"); 1082 fprintf (stderr, "/wordbound");
1084 break; 1083 break;
1085 1084
1086 case notwordbound: 1085 case notwordbound:
1087 printf ("/notwordbound"); 1086 fprintf (stderr, "/notwordbound");
1088 break; 1087 break;
1089 1088
1090 case wordbeg: 1089 case wordbeg:
1091 printf ("/wordbeg"); 1090 fprintf (stderr, "/wordbeg");
1092 break; 1091 break;
1093 1092
1094 case wordend: 1093 case wordend:
1095 printf ("/wordend"); 1094 fprintf (stderr, "/wordend");
1096 1095
1097 case syntaxspec: 1096 case syntaxspec:
1098 printf ("/syntaxspec"); 1097 fprintf (stderr, "/syntaxspec");
1099 mcnt = *p++; 1098 mcnt = *p++;
1100 printf ("/%d", mcnt); 1099 fprintf (stderr, "/%d", mcnt);
1101 break; 1100 break;
1102 1101
1103 case notsyntaxspec: 1102 case notsyntaxspec:
1104 printf ("/notsyntaxspec"); 1103 fprintf (stderr, "/notsyntaxspec");
1105 mcnt = *p++; 1104 mcnt = *p++;
1106 printf ("/%d", mcnt); 1105 fprintf (stderr, "/%d", mcnt);
1107 break; 1106 break;
1108 1107
1109 # ifdef emacs 1108 # ifdef emacs
1110 case before_dot: 1109 case before_dot:
1111 printf ("/before_dot"); 1110 fprintf (stderr, "/before_dot");
1112 break; 1111 break;
1113 1112
1114 case at_dot: 1113 case at_dot:
1115 printf ("/at_dot"); 1114 fprintf (stderr, "/at_dot");
1116 break; 1115 break;
1117 1116
1118 case after_dot: 1117 case after_dot:
1119 printf ("/after_dot"); 1118 fprintf (stderr, "/after_dot");
1120 break; 1119 break;
1121 1120
1122 case categoryspec: 1121 case categoryspec:
1123 printf ("/categoryspec"); 1122 fprintf (stderr, "/categoryspec");
1124 mcnt = *p++; 1123 mcnt = *p++;
1125 printf ("/%d", mcnt); 1124 fprintf (stderr, "/%d", mcnt);
1126 break; 1125 break;
1127 1126
1128 case notcategoryspec: 1127 case notcategoryspec:
1129 printf ("/notcategoryspec"); 1128 fprintf (stderr, "/notcategoryspec");
1130 mcnt = *p++; 1129 mcnt = *p++;
1131 printf ("/%d", mcnt); 1130 fprintf (stderr, "/%d", mcnt);
1132 break; 1131 break;
1133 # endif /* emacs */ 1132 # endif /* emacs */
1134 1133
1135 case begbuf: 1134 case begbuf:
1136 printf ("/begbuf"); 1135 fprintf (stderr, "/begbuf");
1137 break; 1136 break;
1138 1137
1139 case endbuf: 1138 case endbuf:
1140 printf ("/endbuf"); 1139 fprintf (stderr, "/endbuf");
1141 break; 1140 break;
1142 1141
1143 default: 1142 default:
1144 printf ("?%d", *(p-1)); 1143 fprintf (stderr, "?%d", *(p-1));
1145 } 1144 }
1146 1145
1147 putchar ('\n'); 1146 fprintf (stderr, "\n");
1148 } 1147 }
1149 1148
1150 printf ("%d:\tend of pattern.\n", p - start); 1149 fprintf (stderr, "%d:\tend of pattern.\n", p - start);
1151 } 1150 }
1152 1151
1153 1152
1154 void 1153 void
1155 print_compiled_pattern (bufp) 1154 print_compiled_pattern (bufp)