annotate src/lex.h @ 6909:fc55a5e1760b ss-2-9-14

[project @ 2007-09-17 20:47:40 by jwe]
author jwe
date Mon, 17 Sep 2007 20:47:41 +0000
parents ace8d8d26933
children 93c65f2a5668
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2764
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
10 later version.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
5307
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5102
diff changeset
19 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5102
diff changeset
20 02110-1301, USA.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
23
383
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 247
diff changeset
24 #if !defined (octave_lex_h)
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 247
diff changeset
25 #define octave_lex_h 1
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
26
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5307
diff changeset
27 // FIXME -- these input buffer things should be members of a
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
28 // parser input stream class.
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
29
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
30 typedef struct yy_buffer_state *YY_BUFFER_STATE;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
31
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
32 // Associate a buffer with a new file to read.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
33 extern YY_BUFFER_STATE create_buffer (FILE *f);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
34
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
35 // Report the current buffer.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
36 extern YY_BUFFER_STATE current_buffer (void);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
37
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
38 // Connect to new buffer buffer.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
39 extern void switch_to_buffer (YY_BUFFER_STATE buf);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
40
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
41 // Delete a buffer.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
42 extern void delete_buffer (YY_BUFFER_STATE buf);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
43
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
44 // Restore a buffer (for unwind-prot).
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
45 extern void restore_input_buffer (void *buf);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
46
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
47 // Delete a buffer (for unwind-prot).
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
48 extern void delete_input_buffer (void *buf);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
49
4867
c7f9ea142fda [project @ 2004-04-20 19:41:11 by jwe]
jwe
parents: 4753
diff changeset
50 // Is the given string a keyword?
c7f9ea142fda [project @ 2004-04-20 19:41:11 by jwe]
jwe
parents: 4753
diff changeset
51 extern bool is_keyword (const std::string& s);
c7f9ea142fda [project @ 2004-04-20 19:41:11 by jwe]
jwe
parents: 4753
diff changeset
52
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
53 // For communication between the lexer and parser.
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
54
3585
d9803711e047 [project @ 2000-02-08 04:35:39 by jwe]
jwe
parents: 3351
diff changeset
55 class
d9803711e047 [project @ 2000-02-08 04:35:39 by jwe]
jwe
parents: 3351
diff changeset
56 lexical_feedback
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
57 {
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
58 public:
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
59
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
60 lexical_feedback (void) { init (); }
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
61
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
62 ~lexical_feedback (void) { }
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
63
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
64 void init (void);
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
65
3351
8623649c967c [project @ 1999-11-15 16:17:01 by jwe]
jwe
parents: 3225
diff changeset
66 // Square bracket level count.
8623649c967c [project @ 1999-11-15 16:17:01 by jwe]
jwe
parents: 3225
diff changeset
67 int bracketflag;
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
68
4613
d1786f2d8a3c [project @ 2003-11-14 22:46:19 by jwe]
jwe
parents: 4240
diff changeset
69 // Curly brace level count.
d1786f2d8a3c [project @ 2003-11-14 22:46:19 by jwe]
jwe
parents: 4240
diff changeset
70 int braceflag;
d1786f2d8a3c [project @ 2003-11-14 22:46:19 by jwe]
jwe
parents: 4240
diff changeset
71
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
72 // TRUE means we're in the middle of defining a loop.
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
73 int looping;
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
74
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
75 // TRUE means we think we are looking at the beginning of a
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
76 // function definition.
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
77 bool beginning_of_function;
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
78
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
79 // TRUE means that we should convert spaces to a comma inside a
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
80 // matrix definition.
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
81 bool convert_spaces_to_comma;
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
82
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
83 // TRUE means we're in the middle of defining a function.
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
84 bool defining_func;
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
85
4930
bdb307dc8613 [project @ 2004-08-05 04:55:26 by jwe]
jwe
parents: 4867
diff changeset
86 // Nonzero means we are parsing a function handle.
bdb307dc8613 [project @ 2004-08-05 04:55:26 by jwe]
jwe
parents: 4867
diff changeset
87 int looking_at_function_handle;
bdb307dc8613 [project @ 2004-08-05 04:55:26 by jwe]
jwe
parents: 4867
diff changeset
88
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
89 // TRUE means we're parsing the return list for a function.
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
90 bool looking_at_return_list;
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
91
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
92 // TRUE means we're parsing the parameter list for a function.
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
93 bool looking_at_parameter_list;
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
94
3189
bef7b73c0724 [project @ 1998-10-16 18:05:26 by jwe]
jwe
parents: 3165
diff changeset
95 // TRUE means we're parsing a matrix or the left hand side of
bef7b73c0724 [project @ 1998-10-16 18:05:26 by jwe]
jwe
parents: 3165
diff changeset
96 // multi-value assignment statement.
bef7b73c0724 [project @ 1998-10-16 18:05:26 by jwe]
jwe
parents: 3165
diff changeset
97 bool looking_at_matrix_or_assign_lhs;
bef7b73c0724 [project @ 1998-10-16 18:05:26 by jwe]
jwe
parents: 3165
diff changeset
98
4237
9c8034434982 [project @ 2002-12-25 03:14:37 by jwe]
jwe
parents: 4234
diff changeset
99 // Nonzero means we're parsing an indexing operation for an object.
9c8034434982 [project @ 2002-12-25 03:14:37 by jwe]
jwe
parents: 4234
diff changeset
100 int looking_at_object_index;
4234
90e44267e8cf [project @ 2002-12-21 17:15:25 by jwe]
jwe
parents: 4182
diff changeset
101
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
102 // GAG. Stupid kludge so that [[1,2][3,4]] will work.
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
103 bool do_comma_insert;
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
104
5102
b04b30d30c66 [project @ 2004-12-28 01:59:05 by jwe]
jwe
parents: 4930
diff changeset
105 // TRUE means we're doing a raw input command.
b04b30d30c66 [project @ 2004-12-28 01:59:05 by jwe]
jwe
parents: 4930
diff changeset
106 bool doing_rawcommand;
b04b30d30c66 [project @ 2004-12-28 01:59:05 by jwe]
jwe
parents: 4930
diff changeset
107
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
108 // TRUE means we're looking at an indirect reference to a
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
109 // structure element.
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
110 bool looking_at_indirect_ref;
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
111
2877
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
112 // TRUE means that we've already seen the name of this function.
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
113 // Should only matter if defining_func is also TRUE.
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
114 bool parsed_function_name;
5c1b9e545dd1 [project @ 1997-04-24 09:07:39 by jwe]
jwe
parents: 2857
diff changeset
115
4240
8627d992beb8 [project @ 2002-12-25 23:07:03 by jwe]
jwe
parents: 4238
diff changeset
116 // Are we parsing a nested function?
8627d992beb8 [project @ 2002-12-25 23:07:03 by jwe]
jwe
parents: 4238
diff changeset
117 // 1 ==> Yes.
8627d992beb8 [project @ 2002-12-25 23:07:03 by jwe]
jwe
parents: 4238
diff changeset
118 // 0 ==> No.
8627d992beb8 [project @ 2002-12-25 23:07:03 by jwe]
jwe
parents: 4238
diff changeset
119 // -1 ==> Yes, but it is the last one because we have seen EOF.
8627d992beb8 [project @ 2002-12-25 23:07:03 by jwe]
jwe
parents: 4238
diff changeset
120 int parsing_nested_function;
4238
a5a68c0afe56 [project @ 2002-12-25 21:04:33 by jwe]
jwe
parents: 4237
diff changeset
121
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
122 // Return transpose or start a string?
2857
5448c8cba402 [project @ 1997-03-31 07:06:10 by jwe]
jwe
parents: 2847
diff changeset
123 bool quote_is_transpose;
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
124
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
125 private:
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
126
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
127 lexical_feedback (const lexical_feedback&);
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
128
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
129 lexical_feedback& operator = (const lexical_feedback&);
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
130 };
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
131
3883
69b6bd271277 [project @ 2002-04-02 21:05:10 by jwe]
jwe
parents: 3585
diff changeset
132 // TRUE means that we have encountered EOF on the input stream.
69b6bd271277 [project @ 2002-04-02 21:05:10 by jwe]
jwe
parents: 3585
diff changeset
133 extern bool parser_end_of_input;
69b6bd271277 [project @ 2002-04-02 21:05:10 by jwe]
jwe
parents: 3585
diff changeset
134
1826
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
135 // Flags that need to be shared between the lexer and parser.
b14829582cc4 [project @ 1996-02-02 03:05:07 by jwe]
jwe
parents: 1315
diff changeset
136 extern lexical_feedback lexer_flags;
440
e27d10f2e573 [project @ 1994-05-30 03:33:37 by jwe]
jwe
parents: 383
diff changeset
137
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
138 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
139
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
140 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
141 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
142 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
143 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
144 */