| 1 | fcode-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 | |
|---|
| 26 | fcode-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 | |
|---|
| 71 | fcode-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 | |
|---|
| 86 | fcode-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 | |
|---|
| 100 | fcode-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 | |
|---|
| 114 | fcode-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 | |
|---|
| 140 | fcode-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 | |
|---|
| 153 | fcode-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 | |
|---|
| 162 | fcode-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 | |
|---|
| 228 | fcode-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 | |
|---|
| 250 | fcode-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 | |
|---|
| 265 | fcode-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 | |
|---|