|
1 Version 8.1.005 |
|
2 =============== |
|
3 Released by KunalM, 06/03/2007 |
|
4 |
|
5 1) RCOMP ported to the TOOLS2 platform, under PREQ1182, MS3.6.2 |
|
6 |
|
7 |
|
8 Version 8.00.002 |
|
9 ================ |
|
10 Released by AndrewR, 3/3/2005 |
|
11 |
|
12 1) DEFECT FIX: DEF055559 - Problems building rcomp in VC6 IDE |
|
13 |
|
14 Version 8.00.001 |
|
15 ================ |
|
16 Released by AndrewR, 7/2/2005 |
|
17 |
|
18 1) DEFECT FIX: DEF054981 - tools_rcomp component is updated every day |
|
19 |
|
20 Version 8.00.000 |
|
21 ================ |
|
22 Released by AndrewR, 4/2/2005 |
|
23 1) Fixed DEF054617 - rcomp doesn't build from source |
|
24 2) Fixed INC049059 - incorrect line number for error reported by rcomp when building \s60\gs |
|
25 |
|
26 Version 7.01.009 |
|
27 ============ |
|
28 Released by KuldipN, 22/07/2004 |
|
29 Add UID2 and UID3 keywords to RCOMP |
|
30 (CR HBRT-5YJJ9C Specifying UID2 and UID3 in RSS files) |
|
31 |
|
32 Version 7.01.008 |
|
33 ============ |
|
34 Released by DuskoJ, 10/07/2003 |
|
35 1) Fixed DEF022269 Resource value is read incorrectly |
|
36 2) Fixed INC036025 RCOMP chinese resource complation problem |
|
37 |
|
38 Version 7.01.007 |
|
39 ============ |
|
40 Released by Jon Chatten, 03/06/2003 |
|
41 1) Fixed "DEF025433 RComp core dumps on certain resource files" |
|
42 2) Adjusted version number in release.txt to match binary. |
|
43 |
|
44 |
|
45 Version 7.06 |
|
46 ============ |
|
47 Released by Dusko Jahora, 03/06/2003 |
|
48 1) Reverted fix for DEF022269 |
|
49 |
|
50 |
|
51 Version 7.05 |
|
52 ============ |
|
53 Released by Dusko Jahora, 02/06/2003 |
|
54 1) DuskoJ |
|
55 1) Changes to RCOMP whihch are part of CR PCHY-5L3RDW |
|
56 "Typhoon must support 16bpp colour". |
|
57 2) Fixed DEF022269 Resource value is read incorrectly |
|
58 (this fix was not submitted on 09/05/2003 because of |
|
59 an integration error) |
|
60 |
|
61 |
|
62 Version 7.04 |
|
63 ============ |
|
64 |
|
65 Released by Dusko Jahora, 09/05/2003 |
|
66 1) DuskoJ |
|
67 1) Fixed DEF022269 Resource value is read incorrectly |
|
68 |
|
69 |
|
70 Version 7.03 |
|
71 ============ |
|
72 |
|
73 Released by Dusko Jahora, April 2003 |
|
74 1) Fixed defect DEF017151 "RCOMP should be upgraded to support files with UTF8 |
|
75 signature". |
|
76 |
|
77 |
|
78 1) William |
|
79 1) Fixed defect ROS-58VCX8 "RCOMP doesn't allow + in filenames" by removing |
|
80 the unnecessary validation of the filenames left by the C++ preprocessor. |
|
81 2) Fixed defect RED-5ACK5F "Resource compiler creates nothing for empty and bad |
|
82 counted byte arrays" |
|
83 2) Dusko |
|
84 1) Fixed defect ROS-5B7MHW "RCOMP fails to handle boundary values correctly |
|
85 for WORD data type" |
|
86 |
|
87 NB. The handling of LABEL suggests that it would be pretty easy to add rls_string support |
|
88 into the compiler directly. |
|
89 |
|
90 Version 7.01 |
|
91 ============ |
|
92 |
|
93 Released by Jon Chatten, February 2002 |
|
94 |
|
95 Fixed defect ROS-56PHFA - Replaced system() call to uidcrc.exe with a call to _spawnlp - |
|
96 this addresses the IDE-hanging issue when epocrc.pl is integrated as a plug-in with the CW |
|
97 IDE on Windows 98. |
|
98 |
|
99 Removed attempt to absolutely identify uidcrc.exe - this is no longer required as the CW RCOMP/EPOCRC.PL |
|
100 plug-in now sets the PATH before invoking the command line tools. |
|
101 |
|
102 |
|
103 1) William |
|
104 1) Fixed defect ROS-55KJ4U "RCOMP fails if epoc32\tools not on the path" |
|
105 |
|
106 |
|
107 Version 7.00 |
|
108 ============ |
|
109 |
|
110 Released by David Batchelor (November/December 2001) |
|
111 |
|
112 The format of resource files changes as follows: |
|
113 |
|
114 - The initial 2 two-byte values are removed as they are completely redundant. (All the information |
|
115 they provide can be derived from the last 2 bytes of the file combined with the size of the |
|
116 file.) |
|
117 - Resource files now have a standard 4-byte checked-UID field at the start. The first UID is |
|
118 0x101f4a6b, to indicate that the resource file potentially contains Unicode compressed according |
|
119 to the "Standard Compression Scheme for Unicode" (see |
|
120 http://www.unicode.org/unicode/reports/tr6/tr6-3.2.html). The second and third UIDs may be |
|
121 specified on the command-line by using an optional parameter of the form |
|
122 "-{0x12345678,0x9abcdef0}" (without the quotation marks). If "*" is used as the last UID, e.g. |
|
123 "-{0x600ddea1,*}", then the resource file's "offset" (i.e. the 20-bit number generated from the |
|
124 resource file's "NAME") is used as the last UID. |
|
125 - The UID field is immediately followed by a bit-array, one bit for each resource in the resource |
|
126 file, where each bit indicates whether the corresponding resource contains compressed Unicode. |
|
127 The bit field is padded up to a multiple of 8-bits (if necessary) with zero bits. |
|
128 - Each resource which contains compressed Unicode consists of a series of "runs" preceded by a 1 |
|
129 or 2-byte run-length (1 byte if the run is <128 bytes, else 2 bytes). The run-length value does |
|
130 not include itself in the byte count that it holds. The first run, the third run, the fifth run |
|
131 etc contain compressed Unicode. The second run, the fourth run, the sixth run etc contain other |
|
132 stuff. As the protocol defines that the first run is compressed Unicode, this run may obviously |
|
133 be of zero length - no subsequent run in that resource may be of zero length. |
|
134 - Rcomp only uses compressed Unicode for text fields if it yields any benefit (i.e. only if it |
|
135 actually makes the output file smaller). |
|
136 - The changes are completely transparent for code that reads resources. |
|
137 |
|
138 |
|
139 Version 6.03 |
|
140 ============ |
|
141 |
|
142 Released by William Roberts, 30-Jul-2001 |
|
143 |
|
144 Fix defect EXT-4YSCUV "Resource compiler corrupts long strings" |
|
145 Handle very long C++ comments, which previously caused a "token buffer overflow" message from the |
|
146 lexical analyser. Avoid overruning the buffer for literals by using a CHECK_APPEND() macro which |
|
147 discards characters rather than run off the end, giving errors like |
|
148 |
|
149 <empty>(5) : string too long - 1 ignored |
|
150 <empty>(5) : string too long - 2 ignored |
|
151 |
|
152 Avoid overflowing the Value array in string expressions by checking the new length before |
|
153 agreeing to concatenate the strings. Ultimately it would be best to replace Value[] with |
|
154 a char* which has been created with strdup() and can therefore be realloc'd to grow the string. |
|
155 |
|
156 Fix defect ARG-4TZF7J "RCOMP needs warning waivers registered with SI" |
|
157 Removed all warnings in tools rel build - some tools deb warnings will appear in rcomp.cpp |
|
158 because of problems in the mks\etc\yyparse.cpp file, but I didn't want to hide related problems |
|
159 in any new Symbian code we might add. |
|
160 |
|
161 Improve the -v output to show the primitive types being emitted, and to dump the IndexTable as hex |
|
162 offsets followed by the resource name, e.g. |
|
163 |
|
164 IndexTable |
|
165 IndexTableItem 4 <empty> |
|
166 IndexTableItem c r_eikserv_panic_dialog |
|
167 IndexTableItem b8 r_eiksrv_oom_event_top |
|
168 IndexTableItem e4 r_eiksrv_oom_event_bot |
|
169 IndexTableItem 144 r_eikserv_replace_main_batteries |
|
170 IndexTableItem 170 r_eikserv_replace_backup_battery |
|
171 |
|
172 and |
|
173 |
|
174 ResourceHeader r_eiksrv_tasklist_dialog |
|
175 ++ResourceItemArray |
|
176 SimpleResourceItem [Long flags] 9 |
|
177 SimpleResourceItem [LText16 title] |
|
178 SimpleResourceItem [LLink pages] |
|
179 SimpleResourceItem [LLink buttons] |
|
180 StructArrayResourceItem (Level 0) [items] |
|
181 ArrayLength [Word] 1 |
|
182 ---------------------- |
|
183 --ResourceItemArrayArray |
|
184 ++ResourceItemArray |
|
185 SimpleResourceItem [Word type] 1001 |
|
186 SimpleResourceItem [LText16 prompt] |
|
187 SimpleResourceItem [Word id] 1 |
|
188 SimpleResourceItem [Long itemflags] 0 |
|
189 StructTypeResourceItem (Level 0) [control] |
|
190 ---------------------- |
|
191 ++ResourceItemArray |
|
192 SimpleResourceItem [Byte version] 0 |
|
193 SimpleResourceItem [Word flags] 0 |
|
194 SimpleResourceItem [Word height] 8 |
|
195 SimpleResourceItem [Word width] 20 |
|
196 SimpleResourceItem [LLink array_id] |
|
197 ---------------------- |
|
198 SimpleResourceItem [LText16 trailer] |
|
199 ---------------------- |
|
200 |
|
201 Together these changes should make it significantly easier to step through the binary image of a |
|
202 resource and work out which element has changed unexpectedly. |
|
203 |
|
204 |
|
205 Version 6.02 |
|
206 ============ |
|
207 |
|
208 Released by William Roberts, 15-Feb-2001 |
|
209 |
|
210 Fix awful defect in version 6.01, which caused negative integer constants to be written to the file as -1. |
|
211 |
|
212 When testing with LOCKIT, RCOMP developer should be aware that the version of RCOMP.EXE used by lockit |
|
213 is kept in \lockit\tools, not \epoc32\tools. |
|
214 |
|
215 |
|
216 Version 6.01 |
|
217 ============ |
|
218 |
|
219 Released by William Roberts, 14-Feb-2001 |
|
220 |
|
221 Redefined character literals ('x') to be effectively strings so that they can contain UTF8 encodings |
|
222 for interesting characters. This is handled using the same lexical rules as string literals, so |
|
223 the limited escape processing is also supported. The introduction of strings surrounded by single-quotes |
|
224 means that the sequence \' is now accepted as standing for '. |
|
225 |
|
226 If the character literal string decodes to more than one Unicode character, a warning is given and the |
|
227 rest of the string is ignored. The prevailing source character encoding is used, but there is no support |
|
228 narrow character literals in the difficult part of the CP1252 range: the interpretation of the literal |
|
229 is always "the Unicode encoding for the first character of the string". For example, even in a |
|
230 CP1252 source file building a narrow resource, a literal containing the Euro symbol will be interpreted |
|
231 as 0x20ac, not 0x80. |
|
232 |
|
233 LTEXT strings are now checked to ensure that they are less than 256 characters in length. |
|
234 |
|
235 The NAME statement can now take a string literal or a label, instead of the previous behaviour where the |
|
236 lexical analyser handled the following word differently. Any RSS file which used a keyword as a name, |
|
237 for example WORD.RSS, will need to be changed to specify the name as a literal: the preferred syntax |
|
238 is to use string literals in all cases. |
|
239 |
|
240 |
|
241 Version 3.18 |
|
242 ============ |
|
243 |
|
244 Released by William Roberts, 05-Aug-1999. |
|
245 |
|
246 Requires BAFL 092. |
|
247 |
|
248 Changed the handling of Unicode string resources (TEXT16 and LTEXT16) to ensure that the |
|
249 Unicode characters are aligned to a multiple of 2 bytes when the resource is used. |
|
250 |
|
251 Resources are never used in place: instead RResourceFile::AllocReadLC creates an HBufC8 to hold a |
|
252 copy of the data. This means that rather than aligning from the start of the entire resource file, |
|
253 instead we have to align to the start of the individual resource, because the data in an HBufC8 |
|
254 always starts at an aligned address. |
|
255 |
|
256 Added RCBinaryStream::Align(int nBytes) and RCBinaryStream::SetAlignBase() to support the |
|
257 generation of the necessary padding, and call them from suitable places in RCOSTRM.CPP. |
|
258 |
|
259 Also added code to add 1 to the offset of the end of the table of resource offsets: this is tested |
|
260 in BAFL as a marker to indicate the new format of resource file. |
|
261 |
|
262 Added a /verbose flag to core.cmd which invokes RCOMP with -v. |
|
263 |
|
264 Added #pragma warning( disable : 4710 ) in a couple of places to cut down on the number of |
|
265 unnecessary and useless "warnings". |
|
266 |
|
267 Regenerated the test resources. |
|
268 |
|
269 |
|
270 Version 3.17 |
|
271 ============ |
|
272 |
|
273 Released by William Roberts, 25-Jun-1999. |
|
274 |
|
275 Fixed defect where embedded Unicode characters could cause BUF<x> strings to fail a length check. |
|
276 Updated test code include a check for this. |
|
277 |
|
278 Added more stuff for the Engineering Automated Build. |
|
279 |
|
280 |
|
281 Version 3.16 |
|
282 ============ |
|
283 |
|
284 Released by Pute, 9-Jun-1999. Based on work by William Roberts, |
|
285 26-May-1999 described in the "William's notes" section below. |
|
286 |
|
287 |
|
288 Character sets |
|
289 -------------- |
|
290 |
|
291 We are moving towards a specific principle of character sets for RCOMP. |
|
292 |
|
293 Previously, the character set used by RCOMP was not well defined, later we |
|
294 added the CHARACTER_SET identifier. This implied that any specific values |
|
295 inserted into strings in <n> format would be in the character set of the |
|
296 source. |
|
297 |
|
298 In this design RCOMP will have trouble handling multibyte encodings like |
|
299 Shift-JIS because the tools it relies upon, LEX and YACC, are based on |
|
300 single-octet encodings only. Sometimes a multibyte encoding will produce |
|
301 artefacts that appear to be syntax elements such as double quote marks. |
|
302 |
|
303 In future the intention is that RCOMP uses UTF-8 encoding internally, |
|
304 provided by a pre-processing phase. This release is an interim step. |
|
305 |
|
306 In this release, when explicit values are inserted in text strings, they |
|
307 are interpreted as Unicode values and converted to UTF-8. To retain |
|
308 backward compatibility with CP1252 source, values 80-9F are also permitted |
|
309 and these will be mapped to Unicode as before when the source character set |
|
310 is defined to be CP1252. The use of explicit values 80-9F is deprecated |
|
311 however. |
|
312 |
|
313 The default input character set is CP1252. Previously, the default |
|
314 character set was "unknown". This possibility is no-longer supported. |
|
315 This was also contrary to documentation. |
|
316 |
|
317 |
|
318 Details: |
|
319 |
|
320 Test command procedure updated and enhanced. |
|
321 |
|
322 Test comparison files TUTEXT8.RSC and TUTEXT16.RSC have been updated to |
|
323 allow for the introduction of the extra characters in the CP1252 character |
|
324 set. (128 used to be "not used" and is now the euro sign) |
|
325 |
|
326 Note that compilation warning messages about deprecated characters will |
|
327 appear durng this test. |
|
328 |
|
329 A new test source file TWTEXT.RSS and associated reference binaries have |
|
330 been added to the test suite to demonstrate explicit use of values >255. |
|
331 |
|
332 |
|
333 |
|
334 |
|
335 William's notes (edited by Pute): |
|
336 --------------- |
|
337 |
|
338 Defined a new "character set" called UTF8, which supports the UTF8 |
|
339 encoding of Unicode strings. |
|
340 This actually allows the whole resource source file to be entered as |
|
341 UTF8 if required. However the default charset remains CP1252. |
|
342 |
|
343 Arranged to support embedded Unicode characters constructed using the |
|
344 <xxx> notation, to support the use of 0x07ED as the end-of-paragraph |
|
345 marker (see ETEXT 120). This exploits the UTF8 support by inserting the |
|
346 appropriate UTF8 sequence into the 8-bit data. |
|
347 |
|
348 The embedded Unicode characters are also supported in the CP1252 |
|
349 character set, with internal use of 0x81 as an "escape" character |
|
350 indicating that the following bytes are a UTF8 encoded character. This |
|
351 allows existing CP1252 resource source files to be used with the new |
|
352 ETEXT. |
|
353 |
|
354 Added the Euro and the Z caron encodings to the cp1252_exceptions table. |
|
355 |
|
356 |
|
357 Only RCOMP.EXE has been rebuilt. Judging from the timestamps, the other |
|
358 executables haven't been rebuilt for the last few releases. |
|
359 |
|
360 To build rcomp, first run ..\src\BLDEX, then MNT BLDREL |
|
361 |
|
362 Building is only possible from NT and makes use of lex and yacc from |
|
363 T:\mks - this should be updated to use the GNUPro tools which we use to |
|
364 build GCC, as the Cygnus toolchain is something we expect to have always |
|
365 available. |
|
366 |
|
367 |
|
368 |
|
369 Version 3.15 |
|
370 ============ |
|
371 |
|
372 Released by SimonC, 01-Feb-1999 |
|
373 |
|
374 Fixed defects |
|
375 EDN484092 "RCOMP needs to be Symbianised" |
|
376 EDN584421 "Need to rebuild RCOMP with boilerplated headers" |
|
377 |
|
378 Only RCOMP.EXE has been rebuilt. Judging from the timestamps, the other executables |
|
379 haven't been rebuilt for the last few releases. |
|
380 |
|
381 To build rcomp, first run ..\src\BLDEX, then MNT BLDREL |
|
382 |
|
383 Building is only possible from the NT and makes use of executables on T: so this can't |
|
384 be rebuilt by licensees (which doesn't seem to have been a problem so far...) |
|
385 |
|
386 |
|
387 |
|
388 Version 3.14 |
|
389 ============ |
|
390 |
|
391 Released by PNJ, 19-Mar-1997 |
|
392 |
|
393 The CORE command and the test procedures rely on NT command extensions. |
|
394 |
|
395 |
|
396 Version 314 mods |
|
397 |
|
398 1. In FILELINE.CPP, FileLineManager::ExtractFileName updated to add |
|
399 filename information planted by the preprocessor. This is a rewrite of |
|
400 the code that was removed in the previous release because it was |
|
401 violating. |
|
402 2. Test code now in a formalised framework accessed via MNT TEST. The |
|
403 formalism isn't perfect because of the limitations imposed by the |
|
404 legacy command language. See TEST.HTM in the TSRC directory for more |
|
405 information. The test procedure relies on NT command extensions. |
|
406 3. The CORE command procedure has been changed to allow preprocessor |
|
407 symbols to be defined. See below. |
|
408 |
|
409 CORE syntax |
|
410 |
|
411 CORE filename [ object_directory [options] ] |
|
412 |
|
413 If options are being used the object directory parameter must be present, |
|
414 the default value is "." for the current directory. |
|
415 |
|
416 Options are: |
|
417 |
|
418 /UNICODE |
|
419 Specifies that strings are emitted as Unicode in the resource binary. |
|
420 Previously, this option was selected with "-u", which is the parameter |
|
421 currently used by RCOMP itself. |
|
422 /DEFINE symbol [ symbol...] |
|
423 Specifies one or more symbols to be defined for the preprocessor pass. |
|
424 This must be the last option supplied because it is followed by an |
|
425 arbitrary number of tokens and the command language is so primitive. |
|
426 |
|
427 |
|
428 |
|
429 |
|
430 |
|
431 |
|
432 |
|
433 |
|
434 Version 3.13 |
|
435 ============ |
|
436 |
|
437 Released by PNJ, 13-Jan-1997 |
|
438 |
|
439 Version number scheme is independent of product-specific E32 chain |
|
440 numbering. |
|
441 |
|
442 This is an interim release, to provide 16-bit character set functionality. |
|
443 Later releases are planned to provide other requested features. Existing |
|
444 RSS files produce identical binaries to previous releases when compiled |
|
445 in the default non-Unicode mode. |
|
446 |
|
447 There are some serious defects in the source code which will take |
|
448 a long time to address properly, eg misuse of assert as a status check. |
|
449 |
|
450 1. Minor changes to MNT and build settings. |
|
451 2. Minor code changes to remove warnings. |
|
452 3. Renamed STRING.CPP, .H to remove ambiguity with |
|
453 standard header of the same name. |
|
454 4. rcscan::yyerror function updated so that it actually |
|
455 interprets formatted strings instead of ignoring the extra |
|
456 parameters. |
|
457 5. Fixed defect in String operator != which was doing the inverse |
|
458 of what it is supposed to do! |
|
459 6. Provide a qualifier for Unicode output. |
|
460 7. Fix erroneous error message if source file not specified. |
|
461 8. Fixed problem which caused run time fatal errors during |
|
462 source context switching. |
|
463 9. Introduce new tokens to differentiate between 8 and 16-bit |
|
464 text strings. |
|
465 10. Introduce a CHARACTER_SET token to specify the source |
|
466 character set. |
|
467 11. Introduce an extra test component directory. |
|
468 12. Introduce a command procedure wrapper for RCOMP (called CoRe) |
|
469 |
|
470 |
|
471 Language features |
|
472 ----------------- |
|
473 |
|
474 CHARACTER_SET name |
|
475 |
|
476 Specifies the character set of the input file. The implementation currently |
|
477 does not do much with this, but will do in the nexty release or 2. Legal |
|
478 values for name are currently: |
|
479 |
|
480 ASCII, CP1252, CP850, ISOLatin1, ShiftJIS, Unicode |
|
481 |
|
482 Note that Unicode source text is not likely to be supported any time soon, |
|
483 largely because RCOMP relies on LEX and YACC which are not Unicode-aware. |
|
484 |
|
485 The default setting in this implementation is CP1252. |
|
486 |
|
487 |
|
488 TEXT, LTEXT and BUF |
|
489 |
|
490 Now have explicit 8 and 16-bit variants, eg TEXT8, BUF16. The unadorned |
|
491 variants are internally converted to the 8 or 16-bit equivalents depending |
|
492 on the presence of the -u (for unicode) command line qualifier. |
|
493 |
|
494 The prefixed counter for an LTEXT16 is still an 8-bit field. |
|
495 |
|
496 The zero terminator for a TEXT16 is a 16-bit field. |
|
497 |
|
498 For text fields, it is recommended that you continue to use the unadorned |
|
499 keywords. For binary data, you should use the explicit 8-bit keywords. This |
|
500 is likely to apply most commonly to the BUF (BUF8) keyword. |
|
501 |
|
502 |
|
503 |
|
504 |
|
505 |
|
506 Version 0.03.12 |
|
507 =============== |
|
508 |
|
509 1) Reduced verbosity. |
|
510 2) Released a version compatible with NT4. |
|
511 |
|
512 Version 0.03.11 |
|
513 =============== |
|
514 |
|
515 1) PVCS'ed RCOMP and generally tidied it up. |
|
516 2) Fixed empty BUF crash. |
|
517 3) Fixed extra trailing comma crash. |
|
518 4) Cleaned up the build warnings. |
|
519 5) Added ...BUF<n>... where n is an integer giving max length of BUF. |
|
520 6) The .exe is now called rcomp.exe. |
|
521 |
|
522 Version 3.06, MartinW, 05 Jul 96 |
|
523 ================================ |
|
524 1. Added enum handling. |
|
525 e.g. |
|
526 ENUM ExampleEnum { Elem1, Elem2} |
|
527 STRUCT a { BYTE b;} |
|
528 RESOURCE a c { b = ExampleEnum::Elem2;} |
|
529 This should set up b with the value 1. |
|
530 |
|
531 Version 3.05, MartinW, 30 May 96 |
|
532 ================================ |
|
533 1.Deal with long (>42characters) resource names in output to header |
|
534 file. |
|
535 2.Prevent assertion failure in case of missing comma after first item |
|
536 in an array of struct's. |
|
537 |
|
538 Version 3.04, MartinW, 29 Apr 96 |
|
539 ================================ |
|
540 Avoid using cin by reading from a specified file (-s<filename>). The |
|
541 cin approach suffered from something to do with the source file being |
|
542 left open even when the program ended. This was the case at least with |
|
543 a test program built using C++ 1.51 and run under NT 3.51. |
|
544 e.g. void main() { char a; cin << a; } |
|
545 TestProgram < a.src |
|
546 del a.src <---- "file in use by another process". |
|
547 |
|
548 Version 3.03, MartinW, 18 Apr 96 |
|
549 ================================ |
|
550 1.Handle syntax error with numbers more effectively so assert does not |
|
551 fail. |
|
552 2.Accept 0 for double without warning. |
|
553 |
|
554 Version 3.02, MartinW, 11 Apr 96 |
|
555 ================================ |
|
556 Corrected defect to do with line number in error message for text being |
|
557 converted to a number. |
|
558 |
|
559 Version 3.01, MartinW, 9 Apr 96 |
|
560 =============================== |
|
561 1.I added more error handling so that more proper error messages are |
|
562 given. |
|
563 2.I altered the error message format so that it is suitable for VC++. |
|
564 Brief seems to cope with this new format quite happily. VC++ didn't |
|
565 seem to like e.g. ".\t1.rss" at the start but "C:\rcomp\src\t1.rss" |
|
566 worked. |
|
567 3.The drive and directory for the file name specified with -i is used |
|
568 to provide the full paths for all filenames given in error messages. |
|
569 If the -i file name is not a full path then the current directory and |
|
570 drive are used in combination with the partial path to create a full |
|
571 path. |
|
572 |
|
573 Version 3.00, MartinW, 19 Mar 96 |
|
574 ================================ |
|
575 To use this resource compiler execute "mnt getrel". The egrs.bat file |
|
576 is an example of how the resource compiler may be run. The GNU |
|
577 preprocessor is used (t:\tools\gnucpp.exe) first and the output |
|
578 passed to rc3.exe. The fc4bat.exe file is used to avoid writing the |
|
579 header output file if it has in fact not changed. |
|
580 |
|
581 Details about this version |
|
582 -------------------------- |
|
583 This is a completely new version based on yacc and lex along with C++. |
|
584 |
|
585 Overview of system: |
|
586 Source file (e.g.pic.rss) |
|
587 -> Preprocessing |
|
588 -> Lexer |
|
589 -> Parser |
|
590 -> Data structures (using C++ classes) |
|
591 -> Data file output (e.g. pic.rsg) |
|
592 -> Header file output (e.g. pic.h) |
|
593 |
|
594 The GNU C++ preprocessor was used. The output from this |
|
595 includes directives giving line numbering following inclusion |
|
596 of header files. The lexer uses this to store data which the |
|
597 parser then uses to output error messages in Brief format. |
|
598 |
|
599 The lexer and parser are generated by lex and yacc |
|
600 respectively from rcomp.l and rcomp.y. These define the |
|
601 tokens and the grammar for the resource script language. |
|
602 |
|
603 Supporting C++ classes are compiled and linked along with the |
|
604 output from lex and yacc. |
|
605 |
|
606 The batch file rs.bat takes the file specified by the first |
|
607 parameter and passes it to the GNU preprocessor. The output |
|
608 is piped through to rcomp.exe. The names of the data output |
|
609 file and the header file are specified based on the name |
|
610 given to rs.bat. The -i flag is used to give the original |
|
611 name (as passed to the preprocessor) for error reporting. |
|
612 |
|
613 A program called fc4bat.exe is used to give an errorlevel if |
|
614 the specified files do not match. This is used to avoid |
|
615 changing the date on the header file if it has not changed. |
|
616 |
|
617 Issues for porting to other platforms: |
|
618 1) atof has been used. The output of this is written to the |
|
619 rsc file. The format must be that expected by the program |
|
620 reading the rsc file rather than the format of the |
|
621 machine used to generate the file. |
|
622 2) The MKS versions of yacc and lex were used. These are PC |
|
623 versions of the UNIX tools. The non-standard features |
|
624 were avoided however only the PC versions have been used. |
|
625 3) Stream handling has been used. Apparently there may be |
|
626 differences in implementations of this extension to C++. |
|
627 |
|
628 |