annotate parse.yy @ 1:08df60a01bc1

debug flag, handle input with signal
author John W. Eaton <jwe@octave.org>
date Mon, 20 May 2019 13:45:58 -0400
parents dff751fb985c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1 // Infix notation calculator.
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
3 %{
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
4
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5 #define YYSTYPE double
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
6
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
7 #include <iostream>
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
8
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9 #include <cctype>
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10 #include <cmath>
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11 #include <cstdio>
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
12 #include <unistd.h>
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
13
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
14 #include "main.h"
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15 #include "gui-main.h"
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 #include "tty-main.h"
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17 #include "parse.h"
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19 namespace interpreter
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
21 FILE *outfile = 0;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22 size_t bufptr = 0;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
23 size_t chunk_size = 0;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
24
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
25 const char *buf;
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
26 bool beg_of_stmt = true;
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28 static int yylex (void);
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
29
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
30 static void debug_trace (const char *);
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
33 static void yyerror (char const *);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 %}
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 %define api.push-pull push
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 // Bison declarations.
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40 %token NUM
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41 %left '-' '+'
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
42 %left '*' '/'
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43 %left NEG // negation--unary minus
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
44 %right '^' // exponentiation
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
45
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
46 %%
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
48 input : // empty
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49 { }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
50 | input line
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
51 | error
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
52 {
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
53 interpreter::debug_trace ("ABORT");
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
54 YYABORT;
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
55 }
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
56 ;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
57
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
58 line : ';'
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
59 { }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60 | exp ';'
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
61 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 interpreter::emit_result ($1);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
63 interpreter::beg_of_stmt = true;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65 ;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
67 exp : NUM
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
68 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
69 interpreter::debug_trace ("NUM");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
70 $$ = $1;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
71 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
72 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
73 | exp '+' exp
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
75 interpreter::debug_trace ("ADD");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
76 $$ = $1 + $3;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
77 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
78 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
79 | exp '-' exp
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
80 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
81 interpreter::debug_trace ("SUB");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
82 $$ = $1 - $3;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
83 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
84 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
85 | exp '*' exp
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
86 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
87 interpreter::debug_trace ("MUL");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
88 $$ = $1 * $3;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
89 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
90 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
91 | exp '/' exp
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
92 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
93 interpreter::debug_trace ("DIV");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
94 $$ = $1 / $3;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
95 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
96 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
97 | '-' exp %prec NEG
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
98 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
99 interpreter::debug_trace ("NEG");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
100 $$ = -$2;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
101 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
102 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
103 | exp '^' exp
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
104 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
105 interpreter::debug_trace ("EXP");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
106 $$ = std::pow ($1, $3);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
107 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
108 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
109 | '(' exp ')'
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
110 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
111 interpreter::debug_trace ("PAREN");
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
112 $$ = $2;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
113 interpreter::beg_of_stmt = false;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
114 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
115 ;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
116
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
117 %%
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
118
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
119 namespace interpreter
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
120 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
121 // The lexical analyzer returns a double floating point number on the
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
122 // stack and the token NUM, or the numeric code of the character read
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
123 // if not a number. It skips all blanks and tabs, and returns -1 for
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
124 // end-of-input.
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
125
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
126 static int yylex (void)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
127 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
128 int c;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
129
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
130 if (bufptr >= chunk_size)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
131 return -1;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
132
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
133 // Skip white space.
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
134 while ((c = buf[bufptr++]) == ' ' || c == '\t' || c == '\n')
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
135 ;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
136
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
137 // Process numbers.
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
138 if (c == '.' || isdigit (c))
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
139 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
140 int chars_read = 0;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
141 bufptr--;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
142 sscanf (&buf[bufptr], "%lf%n", &yylval, &chars_read);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
143 bufptr += chars_read;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
144 return NUM;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
145 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
146
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
147 // Return a single char.
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
148 return c;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
149 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
150
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
151 static yypstate *ps = 0;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
152
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
153 void
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
154 parser_fini (void)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
155 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
156 if (ps)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
157 yypstate_delete (ps);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
158
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
159 ps = 0;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
160 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
161
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
162 void parser_init (void)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
163 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
164 parser_fini ();
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
165
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
166 ps = yypstate_new ();
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
167 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
168
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
169 int parse_and_execute (const std::string& line)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
170 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
171 bufptr = 0;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
172 chunk_size = line.length ();
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
173 buf = line.c_str ();
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
174
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
175 int status;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
176
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
177 do
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
178 {
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
179 ::yychar = yylex ();
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
180
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
181 if (::yychar < 0)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
182 return -1;
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
183
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
184 status = yypush_parse (ps);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
185 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
186 while (status == YYPUSH_MORE);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
187
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
188 return -2;
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
189 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
190
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
191 void emit_result (double value)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
192 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
193 // Simulate a delay in calculation.
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
194 sleep (1);
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
195
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
196 if (calc::tty_mode)
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
197 tty::emit_result (value);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
198 else
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
199 gui::emit_result (value);
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
200 }
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
201
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
202 void emit_error (const char *msg)
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
203 {
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
204 if (calc::tty_mode)
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
205 tty::emit_error (msg);
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
206 else
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
207 gui::emit_error (msg);
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
208 }
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
209
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
210 void debug_trace (const char *msg)
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
211 {
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
212 if (calc::debug_mode)
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
213 std::cerr << msg << std::endl;
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
214 }
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
215 }
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
216
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
217 static void yyerror (char const *msg)
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
218 {
1
08df60a01bc1 debug flag, handle input with signal
John W. Eaton <jwe@octave.org>
parents: 0
diff changeset
219 interpreter::emit_error (msg);
0
dff751fb985c initial revision
John W. Eaton <jwe@octave.org>
parents:
diff changeset
220 }