91 void encode_parse(void); // Parse encoding section |
91 void encode_parse(void); // Parse encoding section |
92 void frame_parse(void); // Parse frame section |
92 void frame_parse(void); // Parse frame section |
93 void pipe_parse(void); // Parse pipeline section |
93 void pipe_parse(void); // Parse pipeline section |
94 void definitions_parse(void); // Parse definitions section |
94 void definitions_parse(void); // Parse definitions section |
95 void peep_parse(void); // Parse peephole rule definitions |
95 void peep_parse(void); // Parse peephole rule definitions |
|
96 void preproc_line(void); // Parse a #line statement |
96 void preproc_define(void); // Parse a #define statement |
97 void preproc_define(void); // Parse a #define statement |
97 void preproc_undef(void); // Parse an #undef statement |
98 void preproc_undef(void); // Parse an #undef statement |
98 |
99 |
99 // Helper functions for instr_parse(). |
100 // Helper functions for instr_parse(). |
100 void adjust_set_rule(InstructForm *instr); |
101 void adjust_set_rule(InstructForm *instr); |
224 |
225 |
225 void get_oplist(NameList ¶meters, FormDict &operands);// Parse type-operand pairs |
226 void get_oplist(NameList ¶meters, FormDict &operands);// Parse type-operand pairs |
226 void get_effectlist(FormDict &effects, FormDict &operands); // Parse effect-operand pairs |
227 void get_effectlist(FormDict &effects, FormDict &operands); // Parse effect-operand pairs |
227 // Return the contents of a parenthesized expression. |
228 // Return the contents of a parenthesized expression. |
228 // Requires initial '(' and consumes final ')', which is replaced by '\0'. |
229 // Requires initial '(' and consumes final ')', which is replaced by '\0'. |
229 char *get_paren_expr(const char *description); |
230 char *get_paren_expr(const char *description, bool include_location = false); |
230 // Return expression up to next stop-char, which terminator replaces. |
231 // Return expression up to next stop-char, which terminator replaces. |
231 // Does not require initial '('. Does not consume final stop-char. |
232 // Does not require initial '('. Does not consume final stop-char. |
232 // Final stop-char is left in _curchar, but is also is replaced by '\0'. |
233 // Final stop-char is left in _curchar, but is also is replaced by '\0'. |
233 char *get_expr(const char *description, const char *stop_chars); |
234 char *get_expr(const char *description, const char *stop_chars); |
234 char *find_cpp_block(const char *description); // Parse a C++ code block |
235 char *find_cpp_block(const char *description); // Parse a C++ code block |
235 // Issue parser error message & go to EOL |
236 // Issue parser error message & go to EOL |
236 void parse_err(int flag, const char *fmt, ...); |
237 void parse_err(int flag, const char *fmt, ...); |
|
238 // Create a location marker for this file and line. |
|
239 char *get_line_string(int linenum = 0); |
|
240 // Return a location marker which tells the C preprocessor to |
|
241 // forget the previous location marker. (Requires awk postprocessing.) |
|
242 char *end_line_marker() { return (char*)"\n#line 999999\n"; } |
237 |
243 |
238 // Return pointer to current character |
244 // Return pointer to current character |
239 inline char cur_char(void); |
245 inline char cur_char(void); |
240 // Advance to next character, assign this to _curchar |
246 // Advance to next character, assign this to _curchar |
241 inline void next_char(void); |
247 inline void next_char(void); |
266 int linenum() { return _buf.linenum(); } |
272 int linenum() { return _buf.linenum(); } |
267 |
273 |
268 static bool is_literal_constant(const char *hex_string); |
274 static bool is_literal_constant(const char *hex_string); |
269 static bool is_hex_digit(char digit); |
275 static bool is_hex_digit(char digit); |
270 static bool is_int_token(const char* token, int& intval); |
276 static bool is_int_token(const char* token, int& intval); |
|
277 static bool equivalent_expressions(const char* str1, const char* str2); |
271 static void trim(char* &token); // trim leading & trailing spaces |
278 static void trim(char* &token); // trim leading & trailing spaces |
272 }; |
279 }; |