Mercurial > octave-nkf
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. |