comparison src/lex.h @ 4753:9f0ce1536368

[project @ 2004-02-13 17:55:24 by jwe]
author jwe
date Fri, 13 Feb 2004 17:55:24 +0000
parents d1786f2d8a3c
children c7f9ea142fda
comparison
equal deleted inserted replaced
4752:2be826ada7bb 4753:9f0ce1536368
21 */ 21 */
22 22
23 #if !defined (octave_lex_h) 23 #if !defined (octave_lex_h)
24 #define octave_lex_h 1 24 #define octave_lex_h 1
25 25
26 // Arrange to get input via readline. 26 // XXX FIXME XXX -- these input buffer things should be members of a
27
28 #ifdef YY_INPUT
29 #undef YY_INPUT
30 #endif
31 #define YY_INPUT(buf, result, max_size) \
32 if ((result = octave_read (buf, max_size)) < 0) \
33 YY_FATAL_ERROR ("octave_read () in flex scanner failed");
34
35 // Try to avoid crashing out completely on fatal scanner errors.
36 // The call to yy_fatal_error should never happen, but it avoids a
37 // `static function defined but not used' warning from gcc.
38
39 #ifdef YY_FATAL_ERROR
40 #undef YY_FATAL_ERROR
41 #endif
42 #define YY_FATAL_ERROR(msg) \
43 do \
44 { \
45 error (msg); \
46 OCTAVE_QUIT; \
47 yy_fatal_error (msg); \
48 } \
49 while (0)
50
51 #define TOK_RETURN(tok) \
52 do \
53 { \
54 current_input_column += yyleng; \
55 lexer_flags.quote_is_transpose = false; \
56 lexer_flags.cant_be_identifier = false; \
57 lexer_flags.convert_spaces_to_comma = true; \
58 return (tok); \
59 } \
60 while (0)
61
62 #define TOK_PUSH_AND_RETURN(name, tok) \
63 do \
64 { \
65 yylval.tok_val = new token (name, input_line_number, \
66 current_input_column); \
67 token_stack.push (yylval.tok_val); \
68 TOK_RETURN (tok); \
69 } \
70 while (0)
71
72 #define BIN_OP_RETURN(tok, convert) \
73 do \
74 { \
75 yylval.tok_val = new token (input_line_number, current_input_column); \
76 token_stack.push (yylval.tok_val); \
77 current_input_column += yyleng; \
78 lexer_flags.quote_is_transpose = false; \
79 lexer_flags.cant_be_identifier = true; \
80 lexer_flags.convert_spaces_to_comma = convert; \
81 return (tok); \
82 } \
83 while (0)
84
85 #define XBIN_OP_RETURN(tok, convert) \
86 do \
87 { \
88 gripe_matlab_incompatible_operator (yytext); \
89 BIN_OP_RETURN (tok, convert); \
90 } \
91 while (0)
92
93 // XXX FIXME XXX -- these input buffer things should be members of an
94 // parser input stream class. 27 // parser input stream class.
95 28
96 typedef struct yy_buffer_state *YY_BUFFER_STATE; 29 typedef struct yy_buffer_state *YY_BUFFER_STATE;
97 30
98 // Associate a buffer with a new file to read. 31 // Associate a buffer with a new file to read.