root/trunk/fcode-utils-devel/TODO

Revision 108, 10.7 KB (checked in by stepan, 3 years ago)

some more infrastructure

Line 
1fcode-utils/detok/decode.c
2   Line 46:
3 *
4 *      Still to be done:
5 *          Handling of indent-level is not correct.  Branches should
6 *              balance with their resolvers; constructs like do..loop
7 *              case/of/endof/endcase are a few major examples.
8 *          This will be tricky; the rules need to be carefully thought
9 *              out, and the implementation might be more complex than
10 *              at first meets the eye...
11 *
12
13   Line 280:
14 *
15 *      Still to be done:
16 *          More sophisticated error-checking for invalid offsets.  Look
17 *              at the type of branch, and what should be expected in the
18 *              vicinity of the destination.  (This might be best served
19 *              by a separate routine).
20 *         This might also help with handling the indent-level correctly...
21 *              Also, if indentation were to be handled in this routine,
22 *              there would be no need to return the value of the offset.
23 *
24
25
26fcode-utils/detok/pcihdr.c
27   Line 67:
28 *
29 *      Still to be done:
30 *          Print (as remarks) full descriptions of headers' fields
31 *          Error check for wrong "Format"
32 *          Skip past non-FCode blocks, thru multiple data-blocks
33 *          Recognize PCI header in unexpected place or out-of-place
34 *
35
36   Line 130:
37 *
38 *      Still to be done:
39 *          Error-check; look for inconsistencies:
40 *              Return a Negative Number if data-stream appears to be a PCI
41 *              header, but has erroneous or inconsistent sub-field contents.
42 *              Value and meaning of the Negative Number yet to be defined.
43 *
44
45   Line 188:
46 *
47 *      Still to be done:
48 *          Error-check; look for wrong "Code Type" or other inconsistencies:
49 *              Return a Negative Number if data-stream appears to be a
50 *              valid PCI Data Structure, but has erroneous or inconsistent
51 *              sub-field contents.
52 *              Value and meaning of the Negative Number yet to be defined.
53 *          Skip past non-FCode data-blocks, even multiple blocks
54 *
55
56   Line 364:
57 *
58 *      Still to be done:
59 *          Handle error cases.  At present, neither  is_pci_header()
60 *              nor  is_pci_data_struct()  returns a negative number,
61 *              but when they are modified to do so, we must handle it.
62 *
63
64   Line 442:
65 *
66 *      Still to be done:
67 *          Come up with something more elegant for non-zero filler.
68 *
69
70
71fcode-utils/detok/printformats.c
72   Line 74:
73 *
74 *      Still to be done:
75 *          Define a routine, call it  PrintComment , to print the given
76 *              string surrounded by open-paren-space ... space-close-paren
77 *          Define a single central routine, call it  safe_malloc ,
78 *              to do the test for null and print "No Memory" and exit.
79 *          Define a single central routine, call it  PrintError , to:
80 *              Print the given error message
81 *              Show the input file and line number
82 *              Collect error-flags for failure-exit at end of operation.
83 *
84
85
86fcode-utils/toke/devnode.c
87   Line 67:
88 *
89 *      Still to be done:
90 *          Add a pair of fields to the data-structure for the Input File and
91 *              Line Number where "finish-device" occurred.  When a device-node
92 *              is "finish"ed, do not delete it, but instead fill in those
93 *              fields and the move the node to a separate linked-list.
94 *          When looking whether a word exists in an ancestor-node, also
95 *              check whether it was in a device-node that was finished and
96 *              print both where it was started and where it was finished.
97 *
98
99
100fcode-utils/toke/emit.c
101   Line 34:
102 *
103 *      Still to be done:
104 *          Re-arrange routine and variable locations to clarify the
105 *              functions of this file and its companion, stream.c
106 *          This file should be concerned primarily with management
107 *              of the Outputs; stream.c should be primarily concerned
108 *              with management of the Inputs.
109 *          Hard to justify, pragmatically, but will make for easier
110 *              maintainability down the proverbial road...
111 *
112
113
114fcode-utils/toke/flowcontrol.c
115   Line 75:
116 *
117 *      Still to be done:
118 *          Correct analysis of Return-Stack usage around Flow-Control
119 *              constructs, including within Do-Loops or before Loop
120 *              Elements like I and J or UNLOOP or LEAVE.
121 *          Similarly, Return-Stack usage around IF ... ELSE ... THEN
122 *              statements needs analysis.  For instance, the following:
123 *
124 *          blablabla >R  yadayada IF  R> gubble ELSE flubble R>  THEN
125 *
126 *              is, in fact, correct, while something like:
127 *
128 *          blablabla >R  yadayada IF  R> gubble THEN
129 *
130 *              is an error.
131 *
132 *          Implementing an analysis that would be sufficiently accurate
133 *              to justify reporting an ERROR with certainty (rather than
134 *              a mere WARNING speculatively) would probably require full
135 *              coordination with management of Flow-Control constructs,
136 *              and so is noted here.
137 *
138
139
140fcode-utils/toke/macros.c
141   Line 166:
142 *
143 *      Still to be done:
144 *          If an error is encountered during Macro evaluation, display
145 *              supplemental information giving the name of the Macro
146 *              being run, and the file and line number in which it was
147 *              defined.
148 *          This will require changes to the way user Macros are added
149 *              and retained, and to the way error messages are displayed.
150 *
151
152
153fcode-utils/toke/nextfcode.c
154   Line 90:
155 *
156 *      Still to be done:
157 *          Detect and report when the Current Range stops overlapping
158 *              one particular Range and starts overlapping another.
159 *
160
161
162fcode-utils/toke/scanner.c
163   Line 1046:
164 *
165 *      Still to be done:
166 *          Better protection against PC pointer-over-run past END.
167 *              Currently, this works, but it's held together by threads:
168 *              Because  init_stream  forces a null-byte at the end of
169 *              the input buffer, parse_number() exits immediately upon
170 *              encountering it.  This situation could be covered more
171 *              robustly...
172 *
173
174   Line 2192:
175 *
176 *      Still to be done:
177 *          Full detection of whether the Return-Stack has been cleared
178 *              when required, including analysis of Return-Stack usage
179 *              within Flow-Control constructs, and before Loop elements...
180 *
181
182   Line 2259:
183 *
184 *      Still to be done:
185 *          Correct analysis of Return-Stack usage around Flow-Control
186 *              constructs.  Consider, for instance, the following:
187 *
188 *          blablabla >R  yadayada IF  R> gubble ELSE flubble R>  THEN
189 *
190 *              It is, in fact, correct, but the present scheme would
191 *              tag it as a possible error.  Conversely, something like:
192 *
193 *          blablabla >R  yadayada IF  R> gubble THEN
194 *
195 *              would not get tagged, even though it is actually an error.
196 *
197 *          The current simple scheme also does not cover Return-Stack
198 *              usage within Do-Loops or before Loop elements like I and
199 *              J or UNLOOP or LEAVE.  Implementing something like that
200 *              would probably need to be integrated in with Flow-Control
201 *              constructs, and will be noted in  flowcontrol.c
202 *
203
204   Line 2323:
205 *
206 *      Still to be done:
207 *          Correct analysis of Return-Stack usage...
208 *
209
210   Line 3299:
211 *
212 *      Still to be done:
213 *          If the definer-name is not found, we might still look up
214 *              the target name in the various vocabularies and use
215 *              a phrase for those.  E.g., if it is a valid token,
216 *              we could say it's defined as a "primitive".  (I'm
217 *              not sure what we'd say about an FWord...)
218 *
219
220   Line 4617:
221 *
222 *      Still to be done:
223 *          Correct analysis of Return-Stack usage within Do-Loops
224 *              or before Loop Elements like I and J or UNLOOP or LEAVE.
225 *
226
227
228fcode-utils/toke/stream.c
229   Line 60:
230 *
231 *      Still to be done:
232 *          Re-arrange routine and variable locations to clarify the
233 *              functions of this file and its companion, emit.c
234 *          This file should be concerned primarily with management
235 *              of the Inputs; emit.c should be primarily concerned
236 *              with management of the Outputs.
237 *          Hard to justify, pragmatically, but will make for easier
238 *              maintainability down the proverbial road...
239 *
240
241   Line 1070:
242 *
243 *      Still to be done:
244 *          Set a flag when carr-ret has been replaced by space;
245 *              when a string crosses a line, if this flag is set,
246 *              issue a warning that an extra space has been inserted.
247 *
248
249
250fcode-utils/toke/toke.c
251   Line 363:
252 *
253 *      Still to be done:
254 *          Devise a syntax to allow the command-line to specify multiple
255 *              input files together with an output file name for each.
256 *          Currently, the syntax allows only one output file name to be
257 *              specified; when multiple input file names are specified,
258 *              the specification of an output file name is disallowed,
259 *              and only the default output file names are permitted.
260 *              While this works around the immediate problem, a more
261 *              elegant solution could be devised...
262 *
263
264
265fcode-utils/toke/usersymbols.c
266   Line 78:
267 *
268 *      Still to be done:
269 *          Convert the handling of user-defined symbols to the T.I.C.
270 *              data-structure and its support routines.  This should
271 *              eliminate any further need of String-Substitution-type
272 *              vocabularies.  User-defined symbols will, however, still
273 *              need to be a separate vocabulary from the Global, because
274 *              they are required to stay in effect for the duration of
275 *              the entire batch of tokenizations...
276 *          (Afterthought:  This is only true for user-defined symbols that
277 *              were created on the command-line; if we ever allow symbols
278 *              to be defined in the Source file, they should be as volatile
279 *              as anything else that comes from a source file...
280 *           Appending source-file-derived user-defined symbols to the Global
281 *              Vocabulary could be a quasi-simple way to accomplish this.)
282 *
283
284   Line 246:
285 *
286 *      Still to be done:
287 *          Hook-in this routine to the processing of:  [']  F[']  H#  FLOAD
288 *              etc., and wherever else it might be needed or useful.
289 *
290
291   Line 316:
292 *
293 *      Still to be done:
294 *          Space the duplicate-name notation evenly; line it up past
295 *               the longest name-with-value.
296 *
297
298
Note: See TracBrowser for help on using the browser.