]>
cloudbase.mooo.com Git - z180-stamp.git/blob - avr/eval_arg.c
b93150935cdb1983dabf8b66ff2ee39b3d81307d
2 * (C) Copyright 2016 Leo C. <erbl259-lmu@yahoo.de>
4 * SPDX-License-Identifier: GPL-2.0
12 #include "print-utils.h"
13 #include "command.h" /* jump_buf */
15 static jmp_buf eval_jbuf
;
21 static long expr(void);
23 static void print_error_pos(void)
25 printf_P(PSTR("Arg: '%s'\n"
27 print_blanks(bp
- start_p
);
28 my_puts_P(PSTR("^syntax error!\n"));
31 static void error (void)
34 longjmp (eval_jbuf
, 1);
37 static void next(void)
44 static long number (void)
50 if (ch
== '$') { /* FIXME: should be '#' */
54 if (!isdigit(ch
) && !(base
== 16 && isxdigit(ch
)))
57 n
= strtoul(bp
- 1, &end_p
, base
);
67 static long factor (void)
81 if (sign
== '+' || sign
== '-') {
91 static long term (void)
115 static long expr(void)
119 while (ch
== '+' || ch
== '-') {
130 long eval_arg(char *arg
, char **end_ptr
)
137 if (setjmp (eval_jbuf
) != 0) {
140 longjmp(cmd_jbuf
, 1);
151 longjmp(cmd_jbuf
, 1);