96 int match_settings = 0, match_symbol = 0, match_numeric = 0;
97 int skip_settings, skip_numeric, skip_symbol;
99 if (m == NULL ||
name == NULL) {
100 fprintf(stderr,
"debugger_parse_name(): NULL ptr\n");
104 while (
name[0] ==
'\t' ||
name[0] ==
' ')
111 if (((*valuep) >> 32) == 0 && (*valuep) & 0x80000000ULL)
112 (*valuep) |= 0xffffffff00000000ULL;
114 if (((*valuep) >> 32) == 0 && (*valuep) & 0x80000000ULL)
115 printf(
"WARNING: The value is not sign-extende"
116 "d. Is this what you intended?\n");
120 skip_settings =
name[0] ==
'$' ||
name[0] ==
'@';
121 skip_numeric =
name[0] ==
'#' ||
name[0] ==
'@';
122 skip_symbol =
name[0] ==
'$' ||
name[0] ==
'#';
124 if (!skip_settings) {
125 char setting_name[400];
132 if (!match_settings) {
133 snprintf(setting_name,
sizeof(setting_name),
141 if (!match_settings) {
142 snprintf(setting_name,
sizeof(setting_name),
150 if (!match_settings) {
151 snprintf(setting_name,
sizeof(setting_name),
160 if (!match_settings) {
161 snprintf(setting_name,
sizeof(setting_name),
173 if (!skip_numeric && isdigit((
int)
name[0])) {
175 x = strtoull(
name, NULL, 0);
177 printf(
"You cannot assign like that.\n");
188 printf(
"You cannot assign like that.\n");
195 if (match_settings + match_symbol + match_numeric > 1)
247 int prec, res, i, nest;
253 while (expr[0] ==
'\t' || expr[0] ==
' ')
258 while (copy[0] && copy[
strlen(copy)-1] ==
' ')
259 copy[
strlen(copy)-1] =
'\0';
262 i = 0; prec = 2; nest = 0;
263 while (copy[i] !=
'\0') {
282 if (nest == 0 && prec > 1)
291 printf(
"Unmatching parentheses.\n");
295 if (prec == 2 && copy[0] ==
'(' && copy[
strlen(copy)-1] ==
')') {
297 copy[
strlen(copy)-1] =
'\0';
305 while (copy[i] !=
'\0') {
325 uint64_t left, right;
331 while (j>0 && copy[j-1] ==
' ') {
339 m, copy + i + 1, 0, &right);
355 (*valuep) = left + right;
358 (*valuep) = left - right;
361 (*valuep) = left ^ right;
364 (*valuep) = left & right;
367 (*valuep) = left | right;
370 (*valuep) = left * right;
373 (*valuep) = left / right;
376 (*valuep) = left % right;