diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2009-07-16 07:51:07 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2009-07-16 07:51:07 +0000 |
commit | 7a00b27579c631f2389ee63ed38cea662ec78da1 (patch) | |
tree | e3661ae5f38cf4fc3b21723356a598c6db80f210 | |
parent | b0ee6760d9a625a2e5a95d4dcad6145602743019 (diff) |
texk/web2c/omegafonts: fix handling of DVI specials in char packets
git-svn-id: svn://tug.org/texlive/trunk@14275 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Build/source/texk/web2c/omegafonts/ChangeLog | 16 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/Makefile.am | 11 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/Makefile.in | 9 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/char_routines.c | 35 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/font_routines.c | 8 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/out_routines.c | 6 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/out_routines.h | 1 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/pl-lexer.c | 933 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/pl-lexer.l | 27 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/print_routines.c | 12 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/print_routines.h | 2 | ||||
-rwxr-xr-x | Build/source/texk/web2c/omegafonts/specialhex.test | 27 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/tests/specialhex.ovp | 51 |
13 files changed, 660 insertions, 478 deletions
diff --git a/Build/source/texk/web2c/omegafonts/ChangeLog b/Build/source/texk/web2c/omegafonts/ChangeLog index 3bdcee0ab8a..c8d63a34ffd 100644 --- a/Build/source/texk/web2c/omegafonts/ChangeLog +++ b/Build/source/texk/web2c/omegafonts/ChangeLog @@ -1,3 +1,19 @@ +2009-07-15 Peter Breitenlohner <peb@mppmu.mpg.de> + + Implement DVI specials in ovp/ovf character packets. + + * font_routines.c (get_hex): fix hex digit conversion. + * lexer.l (scan_hex_string): allow white space in hex strings. + + * char_routines.c (print_packet): handle DVI specials. + (string_balance): new function to decide SPECIAL or SPECIALHEX. + * print_routines.[ch] (print_special_hex): output DVI specials. + * out_routines.[ch] (out_hex): new function. + + * specialhex.test (new): Shell script to test specials. + * tests/specialhex.ovp (new): test data. + * Makefile.am: add the new test. + 2009-06-17 Peter Breitenlohner <peb@mppmu.mpg.de> * Makefile.am (AM_CFLAGS): enable compiler warnings. diff --git a/Build/source/texk/web2c/omegafonts/Makefile.am b/Build/source/texk/web2c/omegafonts/Makefile.am index 645af150332..2c3455693e9 100644 --- a/Build/source/texk/web2c/omegafonts/Makefile.am +++ b/Build/source/texk/web2c/omegafonts/Makefile.am @@ -86,20 +86,23 @@ endif OTANGLE ## Tests ## -EXTRA_DIST = omfonts.test +EXTRA_DIST = omfonts.test specialhex.test ## Test data ## -EXTRA_DIST += tests/Cherokee.pl tests/OCherokee.ovp +EXTRA_DIST += tests/Cherokee.pl tests/OCherokee.ovp tests/specialhex.ovp if OTANGLE if OMFONTS -TESTS = omfonts.test +TESTS = omfonts.test specialhex.test endif OMFONTS endif OTANGLE DISTCLEANFILES += tests/Cherokee.tfm tests/OCherokee.ofm \ tests/OCherokee.opl tests/OCherokee.ovf \ tests/xCherokee.pl tests/xOCherokee.ofm \ - tests/xOCherokee.opl tests/xOCherokee.ovp + tests/xOCherokee.opl tests/xOCherokee.ovp \ + tests/specialhex.ofm tests/specialhex.opl \ + tests/specialhex.ovf tests/xspecialhex.ofm \ + tests/xspecialhex.opl tests/xspecialhex.ovp diff --git a/Build/source/texk/web2c/omegafonts/Makefile.in b/Build/source/texk/web2c/omegafonts/Makefile.in index df2d12a0ca6..cda3e6a891e 100644 --- a/Build/source/texk/web2c/omegafonts/Makefile.in +++ b/Build/source/texk/web2c/omegafonts/Makefile.in @@ -338,10 +338,13 @@ LDADD = $(proglib) $(KPATHSEA_LIBS) DISTCLEANFILES = pl-parser.output tests/Cherokee.tfm \ tests/OCherokee.ofm tests/OCherokee.opl tests/OCherokee.ovf \ tests/xCherokee.pl tests/xOCherokee.ofm tests/xOCherokee.opl \ - tests/xOCherokee.ovp + tests/xOCherokee.ovp tests/specialhex.ofm tests/specialhex.opl \ + tests/specialhex.ovf tests/xspecialhex.ofm \ + tests/xspecialhex.opl tests/xspecialhex.ovp linked_programs = ofm2opl opl2ofm ovf2ovp ovp2ovf -EXTRA_DIST = omfonts.test tests/Cherokee.pl tests/OCherokee.ovp -@OMFONTS_TRUE@@OTANGLE_TRUE@TESTS = omfonts.test +EXTRA_DIST = omfonts.test specialhex.test tests/Cherokee.pl \ + tests/OCherokee.ovp tests/specialhex.ovp +@OMFONTS_TRUE@@OTANGLE_TRUE@TESTS = omfonts.test specialhex.test all: all-am .SUFFIXES: diff --git a/Build/source/texk/web2c/omegafonts/char_routines.c b/Build/source/texk/web2c/omegafonts/char_routines.c index d5f5a26c54f..0237c927ab5 100644 --- a/Build/source/texk/web2c/omegafonts/char_routines.c +++ b/Build/source/texk/web2c/omegafonts/char_routines.c @@ -399,6 +399,28 @@ int xstack[1000]; int ystack[1000]; int zstack[1000]; +static int +string_balance(unsigned char *special, int k) +{ + unsigned paren_level = 0; + + if (k == 0) + return 1; + if (*special == ' ') + return 0; + for (; k > 0; k--, special++) { + if ((*special < ' ') || (*special > '~')) + return 0; + if (*special == '(') + paren_level++; + if (*special == ')') { + if (paren_level-- == 0) + return 0; + } + } + return (paren_level == 0); +} + void print_packet(unsigned char *packet_start, unsigned packet_length) { @@ -502,6 +524,19 @@ print_packet(unsigned char *packet_start, unsigned packet_length) case DVI_XXX_1: case DVI_XXX_2: case DVI_XXX_3: case DVI_XXX_4: cmd = *packet; packet++; fix_arg = ovf_get_arg(&packet, cmd - DVI_XXX_1 + 1, FALSE); + if (fix_arg < 0) { + internal_error_1("Special string with negative length (%d)\n", fix_arg); + } + if ((fix_arg <= 64) && string_balance(packet, fix_arg)) { + char *special = (char *) xmalloc(fix_arg+1); + strncpy(special, (const char *)packet, fix_arg); + special[fix_arg] = '\0'; + print_special(special); + free(special); + } else { + print_special_hex(packet, fix_arg); + } + packet += fix_arg; break; case DVI_FNT_1: case DVI_FNT_2: case DVI_FNT_3: case DVI_FNT_4: cmd = *packet; packet++; diff --git a/Build/source/texk/web2c/omegafonts/font_routines.c b/Build/source/texk/web2c/omegafonts/font_routines.c index 50ed5690f50..c8557bd0a67 100644 --- a/Build/source/texk/web2c/omegafonts/font_routines.c +++ b/Build/source/texk/web2c/omegafonts/font_routines.c @@ -436,9 +436,11 @@ move_ptr_incr(void) unsigned get_hex(unsigned char c) { - if ((c>='0') || (c<='9')) return(c-'0'); - if ((c>='A') || (c<='F')) return(c-'A'+10); - internal_error_1("get_hex (a=%c)", c); + if ((c>='0') && (c<='9')) return(c-'0'); + if ((c<'A') || (c>'F')) { + internal_error_1("get_hex (a=%c)", c); + } + return(c-'A'+10); } void diff --git a/Build/source/texk/web2c/omegafonts/out_routines.c b/Build/source/texk/web2c/omegafonts/out_routines.c index 7282d607a40..b360b9a9051 100644 --- a/Build/source/texk/web2c/omegafonts/out_routines.c +++ b/Build/source/texk/web2c/omegafonts/out_routines.c @@ -364,6 +364,12 @@ out_fix(fix fval) } void +out_hex(unsigned char c) +{ + fprintf(file_output, "%02X", c); +} + +void out_digits(unsigned counter) { register unsigned j=counter, c; diff --git a/Build/source/texk/web2c/omegafonts/out_routines.h b/Build/source/texk/web2c/omegafonts/out_routines.h index ff4f0a85869..1026c5b4f71 100644 --- a/Build/source/texk/web2c/omegafonts/out_routines.h +++ b/Build/source/texk/web2c/omegafonts/out_routines.h @@ -39,6 +39,7 @@ extern void out_num(unsigned); extern void out_int(unsigned,unsigned); extern void out_as_fix(fix); extern void out_fix(fix); +extern void out_hex(unsigned char); extern void out_digits(unsigned); extern void out(string); extern void right(void); diff --git a/Build/source/texk/web2c/omegafonts/pl-lexer.c b/Build/source/texk/web2c/omegafonts/pl-lexer.c index bc4090fb839..d943c4e042a 100644 --- a/Build/source/texk/web2c/omegafonts/pl-lexer.c +++ b/Build/source/texk/web2c/omegafonts/pl-lexer.c @@ -387,7 +387,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_acclist[258] = +static yyconst flex_int16_t yy_acclist[257] = { 0, 9, 9, 198, 196, 197, 1, 196, 197, 2, 197, 3, 196, 197, 4, 196, 197, 196, 197, 196, 197, @@ -413,13 +413,13 @@ static yyconst flex_int16_t yy_acclist[258] = 159, 168, 21, 76, 120, 122, 119, 117, 123, 121, 116, 118, 133, 132, 134, 153, 34, 147, 186, 191, - 194, 189, 103, 160, 22, 135, 152, 184, 187, 182, - 17, 25, 10, 99, 195, 93, 94, 95, 96, 97, - 188, 192, 190, 17, 185, 183, 128, 130, 127, 125, - 131, 129, 124, 126, 92, 18, 19 + 194, 189, 103, 17, 160, 22, 135, 152, 184, 187, + 182, 25, 10, 99, 195, 93, 94, 95, 96, 97, + 188, 192, 190, 185, 183, 128, 130, 127, 125, 131, + 129, 124, 126, 92, 18, 19 } ; -static yyconst flex_int16_t yy_accept[784] = +static yyconst flex_int16_t yy_accept[781] = { 0, 1, 2, 3, 4, 6, 9, 11, 14, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, @@ -496,17 +496,16 @@ static yyconst flex_int16_t yy_accept[784] = 201, 202, 202, 203, 203, 203, 204, 204, 205, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 216, 217, 217, 217, 218, 219, 219, 219, 220, - 220, 220, 220, 221, 222, 223, 224, 224, 224, 224, - - 224, 225, 225, 225, 226, 226, 227, 228, 228, 228, - 229, 230, 231, 231, 231, 231, 231, 232, 232, 233, - 234, 234, 235, 235, 235, 235, 235, 236, 236, 236, - 236, 236, 237, 238, 239, 240, 241, 241, 241, 242, - 242, 242, 243, 244, 244, 245, 245, 245, 246, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 255, - 255, 255, 255, 255, 255, 255, 256, 256, 256, 256, - 257, 258, 258 + 220, 220, 220, 221, 222, 223, 224, 224, 225, 225, + + 225, 226, 226, 226, 227, 227, 228, 229, 229, 229, + 230, 231, 232, 232, 232, 232, 232, 232, 233, 234, + 234, 235, 235, 235, 235, 235, 236, 236, 236, 236, + 237, 238, 239, 240, 241, 241, 241, 242, 242, 242, + 243, 244, 244, 244, 244, 245, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 254, 254, 254, 254, + 254, 254, 254, 255, 255, 255, 255, 256, 257, 257 } ; static yyconst flex_int32_t yy_ec[256] = @@ -550,205 +549,205 @@ static yyconst flex_int32_t yy_meta[42] = 1 } ; -static yyconst flex_int16_t yy_base[791] = +static yyconst flex_int16_t yy_base[786] = { 0, - 0, 0, 837, 838, 834, 838, 838, 838, 808, 15, - 18, 53, 42, 795, 44, 806, 43, 795, 798, 32, - 35, 61, 45, 68, 794, 69, 85, 799, 799, 33, - 29, 825, 801, 804, 799, 800, 23, 820, 794, 45, - 787, 71, 66, 798, 816, 73, 782, 97, 68, 789, - 786, 797, 777, 810, 794, 793, 780, 790, 784, 775, - 785, 767, 786, 767, 762, 767, 771, 796, 769, 763, - 766, 763, 768, 758, 774, 111, 759, 762, 95, 755, - 762, 769, 102, 40, 108, 754, 759, 750, 757, 760, - 759, 756, 761, 743, 746, 758, 745, 838, 771, 736, - - 738, 751, 740, 750, 750, 741, 737, 735, 761, 745, - 736, 730, 734, 725, 102, 103, 104, 736, 731, 728, - 719, 726, 731, 749, 730, 722, 838, 727, 123, 725, - 729, 724, 717, 707, 707, 713, 130, 134, 713, 722, - 721, 838, 709, 712, 715, 0, 147, 838, 713, 141, - 712, 119, 711, 706, 699, 700, 709, 708, 695, 704, - 140, 152, 707, 688, 703, 686, 695, 702, 159, 698, - 693, 685, 696, 694, 692, 163, 686, 838, 690, 690, - 680, 687, 151, 671, 678, 677, 681, 686, 171, 174, - 178, 179, 184, 187, 838, 675, 674, 204, 664, 206, - - 678, 662, 670, 680, 678, 664, 674, 182, 656, 658, - 663, 672, 838, 838, 838, 667, 659, 659, 75, 838, - 838, 0, 190, 140, 654, 649, 664, 657, 651, 660, - 660, 654, 641, 647, 646, 838, 639, 652, 647, 838, - 636, 838, 838, 637, 838, 838, 838, 636, 649, 838, - 643, 639, 642, 644, 647, 838, 641, 640, 626, 640, - 641, 838, 638, 625, 618, 627, 618, 136, 615, 630, - 135, 630, 615, 621, 626, 623, 616, 617, 616, 615, - 123, 167, 612, 606, 838, 838, 838, 838, 838, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - - 838, 838, 599, 838, 149, 614, 188, 600, 609, 598, - 597, 616, 611, 595, 609, 605, 592, 195, 587, 606, - 592, 603, 838, 838, 605, 593, 602, 590, 598, 593, - 586, 595, 598, 597, 586, 575, 590, 575, 217, 584, - 578, 576, 571, 585, 570, 568, 838, 838, 838, 582, - 570, 838, 565, 582, 571, 579, 570, 838, 838, 578, - 575, 563, 562, 572, 573, 568, 564, 566, 570, 552, - 559, 552, 561, 548, 545, 838, 562, 542, 838, 838, - 560, 559, 546, 543, 546, 838, 536, 838, 538, 536, - 534, 533, 531, 531, 838, 838, 838, 838, 202, 534, - - 838, 543, 838, 542, 215, 537, 544, 524, 542, 541, - 529, 527, 528, 517, 536, 525, 518, 517, 518, 838, - 838, 511, 520, 511, 524, 506, 521, 519, 838, 504, - 513, 506, 838, 517, 502, 496, 501, 499, 513, 501, - 838, 838, 838, 510, 513, 218, 512, 506, 494, 505, - 500, 838, 497, 499, 491, 490, 499, 486, 838, 483, - 484, 838, 482, 492, 497, 484, 472, 490, 483, 488, - 481, 480, 489, 484, 483, 475, 468, 482, 838, 460, - 478, 465, 472, 467, 478, 477, 474, 471, 489, 449, - 462, 467, 460, 459, 464, 467, 462, 465, 448, 459, - - 454, 457, 456, 459, 454, 838, 445, 444, 437, 447, - 453, 447, 445, 440, 445, 428, 443, 446, 221, 445, - 427, 421, 429, 437, 418, 426, 838, 838, 420, 430, - 838, 838, 838, 424, 838, 838, 418, 838, 427, 431, - 414, 429, 414, 410, 838, 409, 408, 416, 425, 838, - 838, 838, 417, 838, 838, 404, 398, 413, 418, 838, - 410, 406, 244, 413, 397, 838, 396, 395, 838, 403, - 838, 402, 838, 838, 399, 392, 838, 399, 838, 390, - 838, 838, 389, 396, 392, 400, 838, 387, 402, 384, - 378, 386, 394, 375, 386, 387, 378, 377, 384, 379, - - 373, 385, 370, 838, 369, 378, 838, 378, 838, 380, - 379, 378, 363, 362, 375, 368, 373, 358, 371, 357, - 838, 223, 231, 233, 226, 838, 369, 368, 367, 352, - 838, 360, 366, 838, 838, 838, 838, 355, 350, 838, - 355, 354, 355, 346, 345, 352, 359, 341, 838, 339, - 339, 337, 354, 331, 838, 838, 340, 351, 838, 838, - 838, 327, 838, 338, 344, 838, 330, 838, 321, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - 316, 838, 325, 311, 838, 838, 328, 306, 838, 304, - 301, 305, 310, 838, 306, 838, 301, 320, 298, 287, - - 838, 298, 283, 838, 289, 838, 838, 296, 285, 293, - 838, 292, 274, 283, 281, 30, 106, 262, 838, 838, - 157, 838, 164, 181, 206, 227, 838, 220, 223, 238, - 0, 838, 838, 838, 838, 838, 236, 230, 838, 230, - 231, 838, 838, 240, 267, 251, 276, 838, 838, 263, - 255, 280, 260, 255, 258, 268, 269, 261, 287, 269, - 838, 838, 838, 838, 838, 838, 838, 838, 290, 259, - 278, 263, 263, 272, 264, 838, 267, 281, 284, 838, - 838, 838, 325, 331, 336, 342, 346, 348, 353, 356 + 0, 0, 827, 828, 824, 828, 828, 828, 798, 15, + 18, 53, 42, 785, 44, 796, 43, 785, 788, 32, + 35, 61, 45, 68, 784, 69, 85, 789, 789, 33, + 29, 815, 791, 794, 789, 790, 23, 810, 784, 45, + 777, 71, 66, 788, 806, 73, 772, 97, 68, 779, + 776, 787, 767, 800, 784, 783, 770, 780, 774, 765, + 775, 757, 776, 757, 752, 757, 761, 786, 759, 753, + 756, 753, 758, 748, 764, 111, 749, 752, 95, 745, + 752, 759, 102, 40, 108, 744, 749, 740, 747, 750, + 749, 746, 751, 733, 736, 748, 735, 828, 761, 726, + + 728, 741, 730, 740, 740, 731, 727, 725, 751, 735, + 726, 720, 724, 715, 102, 103, 104, 726, 721, 718, + 709, 716, 721, 739, 720, 712, 828, 717, 123, 715, + 719, 714, 707, 697, 697, 703, 130, 134, 703, 712, + 711, 828, 699, 702, 705, 0, 147, 828, 703, 141, + 702, 119, 701, 696, 689, 690, 699, 698, 685, 694, + 140, 152, 697, 678, 693, 676, 685, 692, 159, 688, + 683, 675, 686, 684, 682, 163, 676, 828, 680, 680, + 670, 677, 151, 661, 668, 667, 671, 676, 171, 174, + 178, 179, 184, 187, 828, 665, 664, 204, 654, 206, + + 668, 652, 660, 670, 668, 654, 664, 182, 646, 648, + 653, 662, 828, 828, 828, 657, 649, 649, 75, 828, + 828, 0, 190, 140, 644, 639, 654, 647, 641, 650, + 650, 644, 631, 637, 636, 828, 629, 642, 637, 828, + 626, 828, 828, 627, 828, 828, 828, 626, 639, 828, + 633, 629, 632, 634, 637, 828, 631, 630, 616, 630, + 631, 828, 628, 615, 608, 617, 608, 136, 605, 620, + 135, 620, 605, 611, 616, 613, 606, 607, 606, 605, + 123, 167, 602, 596, 828, 828, 828, 828, 828, 828, + 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, + + 828, 828, 589, 828, 149, 604, 188, 590, 599, 588, + 587, 606, 601, 585, 599, 595, 582, 195, 577, 596, + 582, 593, 828, 828, 595, 583, 592, 580, 588, 583, + 576, 585, 588, 587, 576, 565, 580, 565, 217, 574, + 568, 566, 561, 575, 560, 558, 828, 828, 828, 572, + 560, 828, 555, 572, 561, 569, 560, 828, 828, 568, + 565, 553, 552, 562, 563, 558, 554, 556, 560, 542, + 549, 542, 551, 538, 535, 828, 552, 532, 828, 828, + 550, 549, 536, 533, 536, 828, 526, 828, 528, 526, + 524, 523, 521, 521, 828, 828, 828, 828, 202, 524, + + 828, 533, 828, 532, 215, 527, 534, 514, 532, 531, + 519, 517, 518, 507, 526, 515, 508, 507, 508, 828, + 828, 501, 510, 501, 514, 496, 511, 509, 828, 494, + 503, 496, 828, 507, 492, 486, 491, 489, 503, 491, + 828, 828, 828, 500, 503, 218, 502, 496, 484, 495, + 490, 828, 487, 489, 481, 480, 489, 476, 828, 473, + 474, 828, 472, 482, 487, 474, 462, 480, 473, 478, + 471, 470, 479, 474, 473, 465, 458, 472, 828, 450, + 468, 455, 462, 457, 468, 467, 464, 461, 479, 439, + 452, 457, 450, 449, 454, 457, 452, 455, 438, 449, + + 444, 447, 446, 449, 444, 828, 435, 434, 427, 437, + 443, 437, 435, 430, 435, 418, 433, 436, 221, 435, + 417, 411, 419, 427, 408, 416, 828, 828, 410, 420, + 828, 828, 828, 414, 828, 828, 408, 828, 417, 421, + 404, 419, 404, 400, 828, 399, 398, 406, 415, 828, + 828, 828, 407, 828, 828, 394, 388, 403, 408, 828, + 400, 396, 244, 403, 387, 828, 386, 385, 828, 393, + 828, 392, 828, 828, 389, 382, 828, 389, 828, 380, + 828, 828, 379, 386, 382, 390, 828, 377, 392, 374, + 368, 376, 384, 365, 376, 377, 368, 367, 374, 369, + + 363, 375, 360, 828, 359, 368, 828, 368, 828, 370, + 369, 368, 353, 352, 365, 358, 363, 348, 361, 347, + 828, 223, 231, 233, 226, 828, 359, 358, 357, 342, + 828, 350, 356, 828, 828, 828, 828, 345, 340, 828, + 345, 344, 345, 336, 335, 342, 349, 331, 828, 329, + 329, 327, 344, 321, 828, 828, 330, 341, 828, 828, + 828, 317, 828, 328, 334, 828, 320, 828, 317, 828, + 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, + 307, 828, 320, 308, 828, 828, 321, 303, 828, 298, + 298, 297, 304, 828, 303, 828, 298, 828, 296, 285, + + 828, 296, 281, 828, 287, 828, 828, 294, 284, 294, + 828, 290, 272, 281, 280, 283, 262, 828, 828, 27, + 828, 83, 146, 164, 191, 828, 197, 218, 232, 828, + 828, 828, 828, 828, 232, 227, 828, 227, 229, 828, + 828, 237, 246, 265, 828, 828, 252, 244, 276, 257, + 252, 255, 265, 266, 258, 284, 266, 828, 828, 828, + 828, 828, 828, 828, 828, 288, 255, 275, 260, 261, + 269, 261, 828, 264, 278, 281, 828, 828, 828, 323, + 329, 334, 340, 344, 346 } ; -static yyconst flex_int16_t yy_def[791] = +static yyconst flex_int16_t yy_def[786] = { 0, - 782, 1, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 783, 782, 782, - 782, 782, 782, 782, 784, 782, 782, 782, 782, 782, - 782, 782, 782, 785, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 786, 782, 782, - 782, 782, 782, 782, 782, 787, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 783, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 784, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 785, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 788, 787, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 788, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 789, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 790, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 789, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 0, 782, 782, 782, 782, 782, 782, 782, 782 + 779, 1, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 780, 779, 779, + 779, 779, 779, 779, 781, 779, 779, 779, 779, 779, + 779, 779, 779, 782, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 783, 779, 779, + 779, 779, 779, 779, 779, 784, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 780, 779, + + 779, 779, 779, 779, 779, 779, 779, 779, 781, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 782, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 785, 784, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 785, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 0, 779, + 779, 779, 779, 779, 779 } ; -static yyconst flex_int16_t yy_nxt[880] = +static yyconst flex_int16_t yy_nxt[870] = { 0, 4, 5, 6, 7, 8, 4, 4, 9, 4, 4, 4, 4, 4, 4, 4, 4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 4, 31, 4, 4, 34, 36, 45, 54, 48, 68, 37, 58, 88, - 730, 60, 90, 35, 38, 91, 59, 96, 97, 61, + 735, 60, 90, 35, 38, 91, 59, 96, 97, 61, 49, 101, 46, 55, 62, 102, 69, 89, 50, 159, 76, 63, 160, 51, 76, 39, 40, 64, 41, 42, 52, 65, 43, 44, 70, 106, 118, 104, 71, 77, 66, 105, 339, 107, 110, 119, 67, 72, 48, 111, - 73, 112, 340, 74, 78, 79, 113, 717, 80, 341, + 73, 112, 340, 74, 78, 79, 113, 736, 80, 341, 81, 82, 76, 150, 115, 83, 76, 146, 157, 84, 85, 151, 158, 116, 117, 161, 189, 191, 193, 152, 204, 153, 395, 396, 190, 192, 194, 232, 162, 213, - 214, 215, 138, 138, 138, 138, 138, 138, 782, 242, - 243, 233, 782, 146, 380, 384, 345, 205, 224, 244, + 214, 215, 138, 138, 138, 138, 138, 138, 779, 242, + 243, 233, 779, 146, 380, 384, 345, 205, 224, 244, 225, 245, 246, 247, 226, 227, 255, 278, 228, 346, 385, 248, 381, 279, 256, 229, 397, 398, 230, 263, 737, 402, 264, 403, 265, 266, 267, 268, 738, 285, @@ -760,23 +759,22 @@ static yyconst flex_int16_t yy_nxt[880] = 740, 311, 312, 437, 313, 483, 314, 484, 317, 318, 319, 523, 488, 320, 592, 563, 438, 489, 672, 670, 674, 741, 676, 742, 524, 671, 743, 593, 677, 744, - 746, 622, 747, 748, 749, 673, 750, 675, 782, 751, - 623, 732, 733, 734, 735, 736, 624, 752, 625, 753, - 754, 752, 759, 760, 761, 763, 765, 767, 769, 770, - 762, 769, 773, 768, 774, 775, 776, 755, 777, 778, - - 779, 780, 764, 766, 781, 729, 756, 728, 727, 726, - 725, 771, 757, 724, 758, 723, 722, 721, 720, 719, - 718, 717, 716, 715, 772, 98, 98, 714, 98, 98, - 98, 98, 109, 713, 712, 109, 109, 124, 711, 710, - 124, 124, 124, 138, 709, 708, 138, 147, 707, 147, - 147, 147, 222, 222, 731, 706, 705, 731, 731, 731, - 745, 745, 745, 704, 703, 702, 701, 700, 699, 698, + 745, 622, 746, 747, 748, 673, 749, 675, 750, 751, + 623, 730, 731, 732, 733, 734, 624, 749, 625, 756, + 757, 758, 760, 762, 764, 766, 767, 759, 770, 766, + 765, 771, 772, 752, 773, 774, 775, 776, 777, 761, + + 763, 778, 753, 729, 728, 727, 726, 725, 754, 768, + 755, 724, 723, 722, 721, 720, 719, 718, 717, 716, + 715, 714, 769, 98, 98, 713, 98, 98, 98, 98, + 109, 712, 711, 109, 109, 124, 710, 709, 124, 124, + 124, 138, 708, 707, 138, 147, 706, 147, 147, 147, + 222, 222, 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, - 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, + 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 621, 620, 619, 618, 617, 616, @@ -786,8 +784,8 @@ static yyconst flex_int16_t yy_nxt[880] = 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, - 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, + 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, @@ -797,8 +795,8 @@ static yyconst flex_int16_t yy_nxt[880] = 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, - 447, 446, 445, 444, 443, 442, 441, 440, 439, 436, + 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 404, 401, 400, @@ -808,42 +806,42 @@ static yyconst flex_int16_t yy_nxt[880] = 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, 347, 338, 337, 336, 335, 334, 333, 332, 327, 326, 325, 324, 323, 322, 321, 315, - 304, 303, 284, 283, 282, 281, 280, 277, 276, 275, + 274, 273, 262, 261, 260, 259, 258, 257, 254, 253, 252, 251, 250, 249, 241, 240, 239, 238, 237, 236, 235, 234, 231, 223, 221, 220, 219, 218, 217, 216, 212, 211, 210, 209, 208, 207, 206, 203, 202, 201, - 782, 200, 199, 198, 197, 196, 195, 188, 187, 186, - 185, 184, 782, 183, 182, 181, 180, 179, 178, 177, + 779, 200, 199, 198, 197, 196, 195, 188, 187, 186, + 185, 184, 779, 183, 182, 181, 180, 179, 178, 177, 176, 175, 99, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 156, 155, 154, 149, 148, 145, 144, 143, 142, 141, 140, 139, 68, 137, 136, - 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, + 125, 54, 123, 122, 121, 120, 114, 45, 108, 103, 100, 99, 95, 94, 93, 92, 32, 87, 86, 75, - 57, 56, 53, 47, 33, 32, 782, 3, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782 + 57, 56, 53, 47, 33, 32, 779, 3, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779 } ; -static yyconst flex_int16_t yy_chk[880] = +static yyconst flex_int16_t yy_chk[870] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 11, 13, 17, 15, 23, 11, 20, 30, - 716, 21, 31, 10, 12, 31, 20, 37, 37, 21, + 720, 21, 31, 10, 12, 31, 20, 37, 37, 21, 15, 40, 13, 17, 21, 40, 23, 30, 15, 84, 26, 21, 84, 15, 26, 12, 12, 22, 12, 12, 15, 22, 12, 12, 24, 43, 49, 42, 24, 26, 22, 42, 219, 43, 46, 49, 22, 24, 48, 46, - 24, 46, 219, 24, 26, 27, 46, 717, 27, 219, + 24, 46, 219, 24, 26, 27, 46, 722, 27, 219, 27, 27, 76, 79, 48, 27, 76, 76, 83, 27, 27, 79, 83, 48, 48, 85, 115, 116, 117, 79, 129, 79, 281, 281, 115, 116, 117, 152, 85, 137, @@ -851,32 +849,31 @@ static yyconst flex_int16_t yy_chk[880] = 161, 152, 147, 147, 268, 271, 224, 129, 150, 161, 150, 162, 162, 162, 150, 150, 169, 183, 150, 224, 271, 162, 268, 183, 169, 150, 282, 282, 150, 176, - 721, 305, 176, 305, 176, 176, 176, 176, 723, 189, + 723, 305, 176, 305, 176, 176, 176, 176, 724, 189, 176, 189, 190, 176, 190, 176, 191, 192, 191, 192, 176, 208, 193, 189, 193, 194, 190, 194, 208, 223, - 191, 192, 307, 223, 208, 724, 193, 208, 318, 194, + 191, 192, 307, 223, 208, 725, 193, 208, 318, 194, 198, 307, 198, 198, 200, 198, 198, 223, 198, 318, - 725, 198, 198, 339, 198, 399, 198, 399, 200, 200, + 727, 198, 198, 339, 198, 399, 198, 399, 200, 200, 200, 446, 405, 200, 519, 563, 339, 405, 623, 622, - 624, 726, 625, 728, 446, 622, 729, 519, 625, 730, - 737, 563, 738, 740, 741, 623, 744, 624, 745, 746, - 563, 718, 718, 718, 718, 718, 563, 747, 563, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, - 755, 769, 770, 758, 771, 772, 773, 752, 774, 775, - - 777, 778, 756, 757, 779, 715, 752, 714, 713, 712, - 710, 769, 752, 709, 752, 708, 705, 703, 702, 700, - 699, 698, 697, 695, 769, 783, 783, 693, 783, 783, - 783, 783, 784, 692, 691, 784, 784, 785, 690, 688, - 785, 785, 785, 786, 687, 684, 786, 787, 683, 787, - 787, 787, 788, 788, 789, 681, 669, 789, 789, 789, - 790, 790, 790, 667, 665, 664, 662, 658, 657, 654, + 624, 728, 625, 729, 446, 622, 735, 519, 625, 736, + 738, 563, 739, 742, 743, 623, 744, 624, 747, 748, + 563, 717, 717, 717, 717, 717, 563, 749, 563, 750, + 751, 752, 753, 754, 755, 756, 757, 752, 767, 766, + 755, 768, 769, 749, 770, 771, 772, 774, 775, 753, + + 754, 776, 749, 716, 715, 714, 713, 712, 749, 766, + 749, 710, 709, 708, 705, 703, 702, 700, 699, 697, + 695, 693, 766, 780, 780, 692, 780, 780, 780, 780, + 781, 691, 690, 781, 781, 782, 688, 687, 782, 782, + 782, 783, 684, 683, 783, 784, 681, 784, 784, 784, + 785, 785, 669, 667, 665, 664, 662, 658, 657, 654, 653, 652, 651, 650, 648, 647, 646, 645, 644, 643, 642, 641, 639, 638, 633, 632, 630, 629, 628, 627, 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, - 610, 608, 606, 605, 603, 602, 601, 600, 599, 598, + 597, 596, 595, 594, 593, 592, 591, 590, 589, 588, 586, 585, 584, 583, 580, 578, 576, 575, 572, 570, 568, 567, 565, 564, 562, 561, 559, 558, 557, 556, @@ -886,8 +883,8 @@ static yyconst flex_int16_t yy_chk[880] = 510, 509, 508, 507, 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, - 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, + 468, 467, 466, 465, 464, 463, 461, 460, 458, 457, 456, 455, 454, 453, 451, 450, 449, 448, 447, 445, 444, 440, 439, 438, 437, 436, 435, 434, 432, 431, @@ -897,8 +894,8 @@ static yyconst flex_int16_t yy_chk[880] = 389, 387, 385, 384, 383, 382, 381, 378, 377, 375, 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 357, 356, 355, 354, 353, - 351, 350, 346, 345, 344, 343, 342, 341, 340, 338, + 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 322, 321, 320, 319, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 306, 303, 284, @@ -908,8 +905,8 @@ static yyconst flex_int16_t yy_chk[880] = 241, 239, 238, 237, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 218, 217, 216, 212, 211, 210, 209, 207, 206, 205, 204, 203, 202, 201, 199, - 197, 196, 188, 187, 186, 185, 184, 182, 181, 180, + 179, 177, 175, 174, 173, 172, 171, 170, 168, 167, 166, 165, 164, 163, 160, 159, 158, 157, 156, 155, 154, 153, 151, 149, 145, 144, 143, 141, 140, 139, @@ -919,15 +916,15 @@ static yyconst flex_int16_t yy_chk[880] = 101, 100, 99, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 82, 81, 80, 78, 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, - 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, + 55, 54, 53, 52, 51, 50, 47, 45, 44, 41, 39, 38, 36, 35, 34, 33, 32, 29, 28, 25, - 19, 18, 16, 14, 9, 5, 3, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782 + 19, 18, 16, 14, 9, 5, 3, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779 } ; /* Table of booleans, true if rule could match eol. */ @@ -1044,7 +1041,7 @@ extern char *xstrdup (const char *); /* For Solaris's lex, to increase tables sizes --RP */ /* Space before number keeps ancient flex happy. */ -#line 1048 "pl-lexer.c" +#line 1045 "pl-lexer.c" #define INITIAL 0 @@ -1226,10 +1223,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 84 "pl-lexer.l" +#line 83 "pl-lexer.l" -#line 1233 "pl-lexer.c" +#line 1230 "pl-lexer.c" if ( !(yy_init) ) { @@ -1287,14 +1284,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 783 ) + if ( yy_current_state >= 780 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *(yy_state_ptr)++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 838 ); + while ( yy_base[yy_current_state] != 828 ); yy_find_action: yy_current_state = *--(yy_state_ptr); @@ -1333,1000 +1330,1000 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 86 "pl-lexer.l" +#line 85 "pl-lexer.l" {} YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 87 "pl-lexer.l" +#line 86 "pl-lexer.l" {line_number++; } YY_BREAK case 3: YY_RULE_SETUP -#line 89 "pl-lexer.l" +#line 88 "pl-lexer.l" return(LEFT); YY_BREAK case 4: YY_RULE_SETUP -#line 90 "pl-lexer.l" +#line 89 "pl-lexer.l" return(RIGHT); YY_BREAK case 5: YY_RULE_SETUP -#line 92 "pl-lexer.l" +#line 91 "pl-lexer.l" {scan_int(8); return(NUMBER); } YY_BREAK case 6: YY_RULE_SETUP -#line 93 "pl-lexer.l" +#line 92 "pl-lexer.l" {scan_int(10); return(NUMBER); } YY_BREAK case 7: YY_RULE_SETUP -#line 94 "pl-lexer.l" +#line 93 "pl-lexer.l" {scan_int(16); return(NUMBER); } YY_BREAK case 8: YY_RULE_SETUP -#line 95 "pl-lexer.l" +#line 94 "pl-lexer.l" {scan_char(); return(NUMBER); } YY_BREAK case 9: YY_RULE_SETUP -#line 96 "pl-lexer.l" +#line 95 "pl-lexer.l" {scan_fix(); return(FIX); } YY_BREAK case 10: YY_RULE_SETUP -#line 98 "pl-lexer.l" +#line 97 "pl-lexer.l" {scan_string("CODINGSCHEME", KEEP_CONVERT, LEN_CODING_SCHEME); return(CODINGSCHEME); } YY_BREAK case 11: YY_RULE_SETUP -#line 100 "pl-lexer.l" +#line 99 "pl-lexer.l" {scan_string("FAMILY", KEEP_CONVERT, LEN_FAMILY); return(FAMILY); } YY_BREAK case 12: YY_RULE_SETUP -#line 102 "pl-lexer.l" +#line 101 "pl-lexer.l" {scan_string("VTITLE", KEEP_ALL, LEN_VTITLE); return(VTITLE); } YY_BREAK case 13: YY_RULE_SETUP -#line 104 "pl-lexer.l" +#line 103 "pl-lexer.l" {scan_string("FONTNAME", KEEP_ALL, LEN_FONT_NAME); return(FONTNAME); } YY_BREAK case 14: YY_RULE_SETUP -#line 106 "pl-lexer.l" +#line 105 "pl-lexer.l" {scan_string("FONTAREA", KEEP_ALL, LEN_FONT_AREA); return(FONTAREA); } YY_BREAK case 15: YY_RULE_SETUP -#line 108 "pl-lexer.l" +#line 107 "pl-lexer.l" {scan_string("SPECIAL", KEEP_ALL, 0); return(SPECIAL); } YY_BREAK case 16: YY_RULE_SETUP -#line 110 "pl-lexer.l" +#line 109 "pl-lexer.l" {scan_string("COMMENT", KEEP_NONE, 0); return(COMMENT); } YY_BREAK case 17: YY_RULE_SETUP -#line 113 "pl-lexer.l" +#line 112 "pl-lexer.l" {scan_hex_string(); return(SPECIALHEX); } YY_BREAK case 18: YY_RULE_SETUP -#line 116 "pl-lexer.l" +#line 115 "pl-lexer.l" {yylval.yint=1; return(SEVENBITSAFEFLAG); } YY_BREAK case 19: YY_RULE_SETUP -#line 117 "pl-lexer.l" +#line 116 "pl-lexer.l" {yylval.yint=0; return(SEVENBITSAFEFLAG); } YY_BREAK case 20: YY_RULE_SETUP -#line 119 "pl-lexer.l" +#line 118 "pl-lexer.l" return(CHECKSUM); YY_BREAK case 21: YY_RULE_SETUP -#line 120 "pl-lexer.l" +#line 119 "pl-lexer.l" return(DESIGNSIZE); YY_BREAK case 22: YY_RULE_SETUP -#line 121 "pl-lexer.l" +#line 120 "pl-lexer.l" return(DESIGNUNITS); YY_BREAK case 23: YY_RULE_SETUP -#line 122 "pl-lexer.l" +#line 121 "pl-lexer.l" return(FACE); YY_BREAK case 24: YY_RULE_SETUP -#line 123 "pl-lexer.l" +#line 122 "pl-lexer.l" return(HEADER); YY_BREAK case 25: YY_RULE_SETUP -#line 124 "pl-lexer.l" +#line 123 "pl-lexer.l" return(BOUNDARYCHAR); YY_BREAK case 26: YY_RULE_SETUP -#line 125 "pl-lexer.l" +#line 124 "pl-lexer.l" return(FONTDIMEN); YY_BREAK case 27: YY_RULE_SETUP -#line 126 "pl-lexer.l" +#line 125 "pl-lexer.l" return(LIGTABLE); YY_BREAK case 28: YY_RULE_SETUP -#line 127 "pl-lexer.l" +#line 126 "pl-lexer.l" return(CHARACTER); YY_BREAK case 29: YY_RULE_SETUP -#line 129 "pl-lexer.l" +#line 128 "pl-lexer.l" return(PARAMETER); YY_BREAK case 30: YY_RULE_SETUP -#line 130 "pl-lexer.l" +#line 129 "pl-lexer.l" return(LABEL); YY_BREAK case 31: YY_RULE_SETUP -#line 131 "pl-lexer.l" +#line 130 "pl-lexer.l" return(KRN); YY_BREAK case 32: YY_RULE_SETUP -#line 132 "pl-lexer.l" +#line 131 "pl-lexer.l" return(STOP); YY_BREAK case 33: YY_RULE_SETUP -#line 133 "pl-lexer.l" +#line 132 "pl-lexer.l" return(SKIP); YY_BREAK case 34: YY_RULE_SETUP -#line 134 "pl-lexer.l" +#line 133 "pl-lexer.l" return(NEXTLARGER); YY_BREAK case 35: YY_RULE_SETUP -#line 135 "pl-lexer.l" +#line 134 "pl-lexer.l" return(VARCHAR); YY_BREAK case 36: YY_RULE_SETUP -#line 137 "pl-lexer.l" +#line 136 "pl-lexer.l" {yylval.yint = C_WD; return(CHARMEASURE); } YY_BREAK case 37: YY_RULE_SETUP -#line 138 "pl-lexer.l" +#line 137 "pl-lexer.l" {yylval.yint = C_HT; return(CHARMEASURE); } YY_BREAK case 38: YY_RULE_SETUP -#line 139 "pl-lexer.l" +#line 138 "pl-lexer.l" {yylval.yint = C_DP; return(CHARMEASURE); } YY_BREAK case 39: YY_RULE_SETUP -#line 140 "pl-lexer.l" +#line 139 "pl-lexer.l" {yylval.yint = C_IC; return(CHARMEASURE); } YY_BREAK case 40: YY_RULE_SETUP -#line 142 "pl-lexer.l" +#line 141 "pl-lexer.l" {yylval.yint = E_TOP; return(EXTEN); } YY_BREAK case 41: YY_RULE_SETUP -#line 143 "pl-lexer.l" +#line 142 "pl-lexer.l" {yylval.yint = E_MID; return(EXTEN); } YY_BREAK case 42: YY_RULE_SETUP -#line 144 "pl-lexer.l" +#line 143 "pl-lexer.l" {yylval.yint = E_BOT; return(EXTEN); } YY_BREAK case 43: YY_RULE_SETUP -#line 145 "pl-lexer.l" +#line 144 "pl-lexer.l" {yylval.yint = E_REP; return(EXTEN); } YY_BREAK case 44: YY_RULE_SETUP -#line 147 "pl-lexer.l" +#line 146 "pl-lexer.l" {yylval.yint = L_0; return(LIG); } YY_BREAK case 45: YY_RULE_SETUP -#line 148 "pl-lexer.l" +#line 147 "pl-lexer.l" {yylval.yint = L_B; return(LIG); } YY_BREAK case 46: YY_RULE_SETUP -#line 149 "pl-lexer.l" +#line 148 "pl-lexer.l" {yylval.yint = L_A; return(LIG); } YY_BREAK case 47: YY_RULE_SETUP -#line 150 "pl-lexer.l" +#line 149 "pl-lexer.l" {yylval.yint = L_AB; return(LIG); } YY_BREAK case 48: YY_RULE_SETUP -#line 151 "pl-lexer.l" +#line 150 "pl-lexer.l" {yylval.yint = L_Bx; return(LIG); } YY_BREAK case 49: YY_RULE_SETUP -#line 152 "pl-lexer.l" +#line 151 "pl-lexer.l" {yylval.yint = L_Ax; return(LIG); } YY_BREAK case 50: YY_RULE_SETUP -#line 153 "pl-lexer.l" +#line 152 "pl-lexer.l" {yylval.yint = L_ABx; return(LIG); } YY_BREAK case 51: YY_RULE_SETUP -#line 154 "pl-lexer.l" +#line 153 "pl-lexer.l" {yylval.yint = L_ABxx; return(LIG); } YY_BREAK case 52: YY_RULE_SETUP -#line 156 "pl-lexer.l" +#line 155 "pl-lexer.l" {yylval.yint = F_MRR; return(NUMBER); } YY_BREAK case 53: YY_RULE_SETUP -#line 157 "pl-lexer.l" +#line 156 "pl-lexer.l" {yylval.yint = F_MIR; return(NUMBER); } YY_BREAK case 54: YY_RULE_SETUP -#line 158 "pl-lexer.l" +#line 157 "pl-lexer.l" {yylval.yint = F_BRR; return(NUMBER); } YY_BREAK case 55: YY_RULE_SETUP -#line 159 "pl-lexer.l" +#line 158 "pl-lexer.l" {yylval.yint = F_BIR; return(NUMBER); } YY_BREAK case 56: YY_RULE_SETUP -#line 160 "pl-lexer.l" +#line 159 "pl-lexer.l" {yylval.yint = F_LRR; return(NUMBER); } YY_BREAK case 57: YY_RULE_SETUP -#line 161 "pl-lexer.l" +#line 160 "pl-lexer.l" {yylval.yint = F_LIR; return(NUMBER); } YY_BREAK case 58: YY_RULE_SETUP -#line 162 "pl-lexer.l" +#line 161 "pl-lexer.l" {yylval.yint = F_MRC; return(NUMBER); } YY_BREAK case 59: YY_RULE_SETUP -#line 163 "pl-lexer.l" +#line 162 "pl-lexer.l" {yylval.yint = F_MIC; return(NUMBER); } YY_BREAK case 60: YY_RULE_SETUP -#line 164 "pl-lexer.l" +#line 163 "pl-lexer.l" {yylval.yint = F_BRC; return(NUMBER); } YY_BREAK case 61: YY_RULE_SETUP -#line 165 "pl-lexer.l" +#line 164 "pl-lexer.l" {yylval.yint = F_BIC; return(NUMBER); } YY_BREAK case 62: YY_RULE_SETUP -#line 166 "pl-lexer.l" +#line 165 "pl-lexer.l" {yylval.yint = F_LRC; return(NUMBER); } YY_BREAK case 63: YY_RULE_SETUP -#line 167 "pl-lexer.l" +#line 166 "pl-lexer.l" {yylval.yint = F_LIC; return(NUMBER); } YY_BREAK case 64: YY_RULE_SETUP -#line 168 "pl-lexer.l" +#line 167 "pl-lexer.l" {yylval.yint = F_MRE; return(NUMBER); } YY_BREAK case 65: YY_RULE_SETUP -#line 169 "pl-lexer.l" +#line 168 "pl-lexer.l" {yylval.yint = F_MIE; return(NUMBER); } YY_BREAK case 66: YY_RULE_SETUP -#line 170 "pl-lexer.l" +#line 169 "pl-lexer.l" {yylval.yint = F_BRE; return(NUMBER); } YY_BREAK case 67: YY_RULE_SETUP -#line 171 "pl-lexer.l" +#line 170 "pl-lexer.l" {yylval.yint = F_BIE; return(NUMBER); } YY_BREAK case 68: YY_RULE_SETUP -#line 172 "pl-lexer.l" +#line 171 "pl-lexer.l" {yylval.yint = F_LRE; return(NUMBER); } YY_BREAK case 69: YY_RULE_SETUP -#line 173 "pl-lexer.l" +#line 172 "pl-lexer.l" {yylval.yint = F_LIE; return(NUMBER); } YY_BREAK case 70: YY_RULE_SETUP -#line 175 "pl-lexer.l" +#line 174 "pl-lexer.l" {yylval.yint = P_SLANT; return(NAMEDPARAMETER); } YY_BREAK case 71: YY_RULE_SETUP -#line 176 "pl-lexer.l" +#line 175 "pl-lexer.l" {yylval.yint = P_SPACE; return(NAMEDPARAMETER); } YY_BREAK case 72: YY_RULE_SETUP -#line 177 "pl-lexer.l" +#line 176 "pl-lexer.l" {yylval.yint = P_STRETCH; return(NAMEDPARAMETER); } YY_BREAK case 73: YY_RULE_SETUP -#line 178 "pl-lexer.l" +#line 177 "pl-lexer.l" {yylval.yint = P_SHRINK; return(NAMEDPARAMETER); } YY_BREAK case 74: YY_RULE_SETUP -#line 179 "pl-lexer.l" +#line 178 "pl-lexer.l" {yylval.yint = P_XHEIGHT; return(NAMEDPARAMETER); } YY_BREAK case 75: YY_RULE_SETUP -#line 180 "pl-lexer.l" +#line 179 "pl-lexer.l" {yylval.yint = P_QUAD; return(NAMEDPARAMETER); } YY_BREAK case 76: YY_RULE_SETUP -#line 181 "pl-lexer.l" +#line 180 "pl-lexer.l" {yylval.yint = P_EXTRASPACE; return(NAMEDPARAMETER); } YY_BREAK case 77: YY_RULE_SETUP -#line 182 "pl-lexer.l" +#line 181 "pl-lexer.l" {yylval.yint = P_NUM1; return(NAMEDPARAMETER); } YY_BREAK case 78: YY_RULE_SETUP -#line 183 "pl-lexer.l" +#line 182 "pl-lexer.l" {yylval.yint = P_NUM2; return(NAMEDPARAMETER); } YY_BREAK case 79: YY_RULE_SETUP -#line 184 "pl-lexer.l" +#line 183 "pl-lexer.l" {yylval.yint = P_NUM3; return(NAMEDPARAMETER); } YY_BREAK case 80: YY_RULE_SETUP -#line 185 "pl-lexer.l" +#line 184 "pl-lexer.l" {yylval.yint = P_DENOM1; return(NAMEDPARAMETER); } YY_BREAK case 81: YY_RULE_SETUP -#line 186 "pl-lexer.l" +#line 185 "pl-lexer.l" {yylval.yint = P_DENOM2; return(NAMEDPARAMETER); } YY_BREAK case 82: YY_RULE_SETUP -#line 187 "pl-lexer.l" +#line 186 "pl-lexer.l" {yylval.yint = P_SUP1; return(NAMEDPARAMETER); } YY_BREAK case 83: YY_RULE_SETUP -#line 188 "pl-lexer.l" +#line 187 "pl-lexer.l" {yylval.yint = P_SUP2; return(NAMEDPARAMETER); } YY_BREAK case 84: YY_RULE_SETUP -#line 189 "pl-lexer.l" +#line 188 "pl-lexer.l" {yylval.yint = P_SUP3; return(NAMEDPARAMETER); } YY_BREAK case 85: YY_RULE_SETUP -#line 190 "pl-lexer.l" +#line 189 "pl-lexer.l" {yylval.yint = P_SUB1; return(NAMEDPARAMETER); } YY_BREAK case 86: YY_RULE_SETUP -#line 191 "pl-lexer.l" +#line 190 "pl-lexer.l" {yylval.yint = P_SUB2; return(NAMEDPARAMETER); } YY_BREAK case 87: YY_RULE_SETUP -#line 192 "pl-lexer.l" +#line 191 "pl-lexer.l" {yylval.yint = P_SUPDROP; return(NAMEDPARAMETER); } YY_BREAK case 88: YY_RULE_SETUP -#line 193 "pl-lexer.l" +#line 192 "pl-lexer.l" {yylval.yint = P_SUBDROP; return(NAMEDPARAMETER); } YY_BREAK case 89: YY_RULE_SETUP -#line 194 "pl-lexer.l" +#line 193 "pl-lexer.l" {yylval.yint = P_DELIM1; return(NAMEDPARAMETER); } YY_BREAK case 90: YY_RULE_SETUP -#line 195 "pl-lexer.l" +#line 194 "pl-lexer.l" {yylval.yint = P_DELIM2; return(NAMEDPARAMETER); } YY_BREAK case 91: YY_RULE_SETUP -#line 196 "pl-lexer.l" +#line 195 "pl-lexer.l" {yylval.yint = P_AXISHEIGHT; return(NAMEDPARAMETER); } YY_BREAK case 92: YY_RULE_SETUP -#line 198 "pl-lexer.l" +#line 197 "pl-lexer.l" {yylval.yint = P_DEFAULTRULETHICKNESS; return(NAMEDPARAMETER); } YY_BREAK case 93: YY_RULE_SETUP -#line 200 "pl-lexer.l" +#line 199 "pl-lexer.l" {yylval.yint = P_BIGOPSPACING1; return(NAMEDPARAMETER); } YY_BREAK case 94: YY_RULE_SETUP -#line 201 "pl-lexer.l" +#line 200 "pl-lexer.l" {yylval.yint = P_BIGOPSPACING2; return(NAMEDPARAMETER); } YY_BREAK case 95: YY_RULE_SETUP -#line 202 "pl-lexer.l" +#line 201 "pl-lexer.l" {yylval.yint = P_BIGOPSPACING3; return(NAMEDPARAMETER); } YY_BREAK case 96: YY_RULE_SETUP -#line 203 "pl-lexer.l" +#line 202 "pl-lexer.l" {yylval.yint = P_BIGOPSPACING4; return(NAMEDPARAMETER); } YY_BREAK case 97: YY_RULE_SETUP -#line 204 "pl-lexer.l" +#line 203 "pl-lexer.l" {yylval.yint = P_BIGOPSPACING5; return(NAMEDPARAMETER); } YY_BREAK case 98: YY_RULE_SETUP -#line 206 "pl-lexer.l" +#line 205 "pl-lexer.l" {return(MAPFONT); } YY_BREAK case 99: YY_RULE_SETUP -#line 207 "pl-lexer.l" +#line 206 "pl-lexer.l" {return(FONTCHECKSUM); } YY_BREAK case 100: YY_RULE_SETUP -#line 208 "pl-lexer.l" +#line 207 "pl-lexer.l" {return(FONTAT); } YY_BREAK case 101: YY_RULE_SETUP -#line 209 "pl-lexer.l" +#line 208 "pl-lexer.l" {return(FONTDSIZE); } YY_BREAK case 102: YY_RULE_SETUP -#line 210 "pl-lexer.l" +#line 209 "pl-lexer.l" {return(MAP); } YY_BREAK case 103: YY_RULE_SETUP -#line 211 "pl-lexer.l" +#line 210 "pl-lexer.l" {return(SELECTFONT); } YY_BREAK case 104: YY_RULE_SETUP -#line 212 "pl-lexer.l" +#line 211 "pl-lexer.l" {return(SETCHAR); } YY_BREAK case 105: YY_RULE_SETUP -#line 213 "pl-lexer.l" +#line 212 "pl-lexer.l" {return(SETRULE); } YY_BREAK case 106: YY_RULE_SETUP -#line 214 "pl-lexer.l" +#line 213 "pl-lexer.l" {return(PUSH); } YY_BREAK case 107: YY_RULE_SETUP -#line 215 "pl-lexer.l" +#line 214 "pl-lexer.l" {return(POP); } YY_BREAK case 108: YY_RULE_SETUP -#line 217 "pl-lexer.l" +#line 216 "pl-lexer.l" {yylval.yint = M_RIGHT; return(MOVE); } YY_BREAK case 109: YY_RULE_SETUP -#line 218 "pl-lexer.l" +#line 217 "pl-lexer.l" {yylval.yint = M_LEFT; return(MOVE); } YY_BREAK case 110: YY_RULE_SETUP -#line 219 "pl-lexer.l" +#line 218 "pl-lexer.l" {yylval.yint = M_UP; return(MOVE); } YY_BREAK case 111: YY_RULE_SETUP -#line 220 "pl-lexer.l" +#line 219 "pl-lexer.l" {yylval.yint = M_DOWN; return(MOVE); } YY_BREAK case 112: YY_RULE_SETUP -#line 222 "pl-lexer.l" +#line 221 "pl-lexer.l" return(OFMLEVEL); YY_BREAK case 113: YY_RULE_SETUP -#line 223 "pl-lexer.l" +#line 222 "pl-lexer.l" {yylval.yint = ACC_TOP; return(ACCENT); } YY_BREAK case 114: YY_RULE_SETUP -#line 224 "pl-lexer.l" +#line 223 "pl-lexer.l" {yylval.yint = ACC_MID; return(ACCENT); } YY_BREAK case 115: YY_RULE_SETUP -#line 225 "pl-lexer.l" +#line 224 "pl-lexer.l" {yylval.yint = ACC_BOT; return(ACCENT); } YY_BREAK case 116: YY_RULE_SETUP -#line 227 "pl-lexer.l" +#line 226 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_TL; return(FONTDIR);} YY_BREAK case 117: YY_RULE_SETUP -#line 228 "pl-lexer.l" +#line 227 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_LT; return(FONTDIR);} YY_BREAK case 118: YY_RULE_SETUP -#line 229 "pl-lexer.l" +#line 228 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_TR; return(FONTDIR);} YY_BREAK case 119: YY_RULE_SETUP -#line 230 "pl-lexer.l" +#line 229 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_LB; return(FONTDIR);} YY_BREAK case 120: YY_RULE_SETUP -#line 231 "pl-lexer.l" +#line 230 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_BL; return(FONTDIR);} YY_BREAK case 121: YY_RULE_SETUP -#line 232 "pl-lexer.l" +#line 231 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_RT; return(FONTDIR);} YY_BREAK case 122: YY_RULE_SETUP -#line 233 "pl-lexer.l" +#line 232 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_BR; return(FONTDIR);} YY_BREAK case 123: YY_RULE_SETUP -#line 234 "pl-lexer.l" +#line 233 "pl-lexer.l" {yylval.yint = DIR_ORD+DIR_RB; return(FONTDIR);} YY_BREAK case 124: YY_RULE_SETUP -#line 235 "pl-lexer.l" +#line 234 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_TL; return(FONTDIR);} YY_BREAK case 125: YY_RULE_SETUP -#line 236 "pl-lexer.l" +#line 235 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_LT; return(FONTDIR);} YY_BREAK case 126: YY_RULE_SETUP -#line 237 "pl-lexer.l" +#line 236 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_TR; return(FONTDIR);} YY_BREAK case 127: YY_RULE_SETUP -#line 238 "pl-lexer.l" +#line 237 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_LB; return(FONTDIR);} YY_BREAK case 128: YY_RULE_SETUP -#line 239 "pl-lexer.l" +#line 238 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_BL; return(FONTDIR);} YY_BREAK case 129: YY_RULE_SETUP -#line 240 "pl-lexer.l" +#line 239 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_RT; return(FONTDIR);} YY_BREAK case 130: YY_RULE_SETUP -#line 241 "pl-lexer.l" +#line 240 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_BR; return(FONTDIR);} YY_BREAK case 131: YY_RULE_SETUP -#line 242 "pl-lexer.l" +#line 241 "pl-lexer.l" {yylval.yint = DIR_NAT+DIR_RB; return(FONTDIR);} YY_BREAK case 132: YY_RULE_SETUP -#line 244 "pl-lexer.l" +#line 243 "pl-lexer.l" return(FONTIVALUE); YY_BREAK case 133: YY_RULE_SETUP -#line 245 "pl-lexer.l" +#line 244 "pl-lexer.l" return(FONTFVALUE); YY_BREAK case 134: YY_RULE_SETUP -#line 246 "pl-lexer.l" +#line 245 "pl-lexer.l" return(FONTMVALUE); YY_BREAK case 135: YY_RULE_SETUP -#line 247 "pl-lexer.l" +#line 246 "pl-lexer.l" return(FONTPENALTY); YY_BREAK case 136: YY_RULE_SETUP -#line 248 "pl-lexer.l" +#line 247 "pl-lexer.l" return(FONTRULE); YY_BREAK case 137: YY_RULE_SETUP -#line 249 "pl-lexer.l" +#line 248 "pl-lexer.l" return(FONTGLUE); YY_BREAK case 138: YY_RULE_SETUP -#line 251 "pl-lexer.l" +#line 250 "pl-lexer.l" return(IVALUE); YY_BREAK case 139: YY_RULE_SETUP -#line 252 "pl-lexer.l" +#line 251 "pl-lexer.l" return(FVALUE); YY_BREAK case 140: YY_RULE_SETUP -#line 253 "pl-lexer.l" +#line 252 "pl-lexer.l" return(MVALUE); YY_BREAK case 141: YY_RULE_SETUP -#line 254 "pl-lexer.l" +#line 253 "pl-lexer.l" return(PENALTY); YY_BREAK case 142: YY_RULE_SETUP -#line 255 "pl-lexer.l" +#line 254 "pl-lexer.l" return(RULE); YY_BREAK case 143: YY_RULE_SETUP -#line 256 "pl-lexer.l" +#line 255 "pl-lexer.l" return(GLUE); YY_BREAK case 144: YY_RULE_SETUP -#line 258 "pl-lexer.l" +#line 257 "pl-lexer.l" return(IVALUEVAL); YY_BREAK case 145: YY_RULE_SETUP -#line 259 "pl-lexer.l" +#line 258 "pl-lexer.l" return(FVALUEVAL); YY_BREAK case 146: YY_RULE_SETUP -#line 260 "pl-lexer.l" +#line 259 "pl-lexer.l" return(MVALUEVAL); YY_BREAK case 147: YY_RULE_SETUP -#line 261 "pl-lexer.l" +#line 260 "pl-lexer.l" return(PENALTYVAL); YY_BREAK case 148: YY_RULE_SETUP -#line 263 "pl-lexer.l" +#line 262 "pl-lexer.l" { yylval.yint = RULE_WD; return(RULEMEASURE); } YY_BREAK case 149: YY_RULE_SETUP -#line 264 "pl-lexer.l" +#line 263 "pl-lexer.l" { yylval.yint = RULE_HT; return(RULEMEASURE); } YY_BREAK case 150: YY_RULE_SETUP -#line 265 "pl-lexer.l" +#line 264 "pl-lexer.l" { yylval.yint = RULE_DP; return(RULEMEASURE); } YY_BREAK case 151: YY_RULE_SETUP -#line 267 "pl-lexer.l" +#line 266 "pl-lexer.l" return(GLUEWD); YY_BREAK case 152: YY_RULE_SETUP -#line 268 "pl-lexer.l" +#line 267 "pl-lexer.l" { yylval.yint = GLUE_STRETCH; return(GLUESHRINKSTRETCH); } YY_BREAK case 153: YY_RULE_SETUP -#line 269 "pl-lexer.l" +#line 268 "pl-lexer.l" { yylval.yint = GLUE_SHRINK; return(GLUESHRINKSTRETCH); } YY_BREAK case 154: YY_RULE_SETUP -#line 271 "pl-lexer.l" +#line 270 "pl-lexer.l" return(GLUETYPE); YY_BREAK case 155: YY_RULE_SETUP -#line 272 "pl-lexer.l" +#line 271 "pl-lexer.l" return(GLUERULE); YY_BREAK case 156: YY_RULE_SETUP -#line 273 "pl-lexer.l" +#line 272 "pl-lexer.l" return(GLUECHAR); YY_BREAK case 157: YY_RULE_SETUP -#line 275 "pl-lexer.l" +#line 274 "pl-lexer.l" return(CHARIVALUE); YY_BREAK case 158: YY_RULE_SETUP -#line 276 "pl-lexer.l" +#line 275 "pl-lexer.l" return(CHARFVALUE); YY_BREAK case 159: YY_RULE_SETUP -#line 277 "pl-lexer.l" +#line 276 "pl-lexer.l" return(CHARMVALUE); YY_BREAK case 160: YY_RULE_SETUP -#line 278 "pl-lexer.l" +#line 277 "pl-lexer.l" return(CHARPENALTY); YY_BREAK case 161: YY_RULE_SETUP -#line 279 "pl-lexer.l" +#line 278 "pl-lexer.l" return(CHARRULE); YY_BREAK case 162: YY_RULE_SETUP -#line 280 "pl-lexer.l" +#line 279 "pl-lexer.l" return(CHARGLUE); YY_BREAK case 163: YY_RULE_SETUP -#line 282 "pl-lexer.l" +#line 281 "pl-lexer.l" return(CKRN); YY_BREAK case 164: YY_RULE_SETUP -#line 283 "pl-lexer.l" +#line 282 "pl-lexer.l" return(CGLUE); YY_BREAK case 165: YY_RULE_SETUP -#line 284 "pl-lexer.l" +#line 283 "pl-lexer.l" return(CPENALTY); YY_BREAK case 166: YY_RULE_SETUP -#line 285 "pl-lexer.l" +#line 284 "pl-lexer.l" return(CPENGLUE); YY_BREAK case 167: YY_RULE_SETUP -#line 286 "pl-lexer.l" +#line 285 "pl-lexer.l" return(CLABEL); YY_BREAK case 168: YY_RULE_SETUP -#line 288 "pl-lexer.l" +#line 287 "pl-lexer.l" return(CHARREPEAT); YY_BREAK case 169: YY_RULE_SETUP -#line 291 "pl-lexer.l" +#line 290 "pl-lexer.l" {yylval.yint = O_FILLL; return(GLUEORDER); } YY_BREAK case 170: YY_RULE_SETUP -#line 292 "pl-lexer.l" +#line 291 "pl-lexer.l" {yylval.yint = O_FILL; return(GLUEORDER); } YY_BREAK case 171: YY_RULE_SETUP -#line 293 "pl-lexer.l" +#line 292 "pl-lexer.l" {yylval.yint = O_FIL; return(GLUEORDER); } YY_BREAK case 172: YY_RULE_SETUP -#line 294 "pl-lexer.l" +#line 293 "pl-lexer.l" {yylval.yint = O_FI; return(GLUEORDER); } YY_BREAK case 173: YY_RULE_SETUP -#line 295 "pl-lexer.l" +#line 294 "pl-lexer.l" {yylval.yint = O_UNIT; return(GLUEORDER); } YY_BREAK case 174: YY_RULE_SETUP -#line 297 "pl-lexer.l" +#line 296 "pl-lexer.l" {yylval.yint = K_NORMAL; return(GLUEKIND); } YY_BREAK case 175: YY_RULE_SETUP -#line 298 "pl-lexer.l" +#line 297 "pl-lexer.l" {yylval.yint = K_ALEADERS; return(GLUEKIND); } YY_BREAK case 176: YY_RULE_SETUP -#line 299 "pl-lexer.l" +#line 298 "pl-lexer.l" {yylval.yint = K_CLEADERS; return(GLUEKIND); } YY_BREAK case 177: YY_RULE_SETUP -#line 300 "pl-lexer.l" +#line 299 "pl-lexer.l" {yylval.yint = K_XLEADERS; return(GLUEKIND); } YY_BREAK case 178: YY_RULE_SETUP -#line 302 "pl-lexer.l" +#line 301 "pl-lexer.l" {yylval.yint = C_SECWD; return(CHARMEASURE); } YY_BREAK case 179: YY_RULE_SETUP -#line 303 "pl-lexer.l" +#line 302 "pl-lexer.l" {yylval.yint = C_SECHT; return(CHARMEASURE); } YY_BREAK case 180: YY_RULE_SETUP -#line 304 "pl-lexer.l" +#line 303 "pl-lexer.l" {yylval.yint = C_SECDP; return(CHARMEASURE); } YY_BREAK case 181: YY_RULE_SETUP -#line 305 "pl-lexer.l" +#line 304 "pl-lexer.l" {yylval.yint = C_SECIC; return(CHARMEASURE); } YY_BREAK case 182: YY_RULE_SETUP -#line 307 "pl-lexer.l" +#line 306 "pl-lexer.l" {yylval.yint = C_P_TOPAXIS; return(CHARMEASURE); } YY_BREAK case 183: YY_RULE_SETUP -#line 308 "pl-lexer.l" +#line 307 "pl-lexer.l" {yylval.yint = C_P_TOPAXISBIs; return(CHARMEASURE); } YY_BREAK case 184: YY_RULE_SETUP -#line 309 "pl-lexer.l" +#line 308 "pl-lexer.l" {yylval.yint = C_P_BOTAXIS; return(CHARMEASURE); } YY_BREAK case 185: YY_RULE_SETUP -#line 310 "pl-lexer.l" +#line 309 "pl-lexer.l" {yylval.yint = C_P_BOTAXISBIS; return(CHARMEASURE); } YY_BREAK case 186: YY_RULE_SETUP -#line 311 "pl-lexer.l" +#line 310 "pl-lexer.l" {yylval.yint = C_P_MIDHOR; return(CHARMEASURE); } YY_BREAK case 187: YY_RULE_SETUP -#line 312 "pl-lexer.l" +#line 311 "pl-lexer.l" {yylval.yint = C_P_MIDVERT; return(CHARMEASURE); } YY_BREAK case 188: YY_RULE_SETUP -#line 313 "pl-lexer.l" +#line 312 "pl-lexer.l" {yylval.yint = C_P_BASESLANT; return(CHARMEASURE); } YY_BREAK case 189: YY_RULE_SETUP -#line 315 "pl-lexer.l" +#line 314 "pl-lexer.l" {yylval.yint = C_S_TOPAXIS; return(CHARMEASURE); } YY_BREAK case 190: YY_RULE_SETUP -#line 316 "pl-lexer.l" +#line 315 "pl-lexer.l" {yylval.yint = C_S_TOPAXISBIs; return(CHARMEASURE); } YY_BREAK case 191: YY_RULE_SETUP -#line 317 "pl-lexer.l" +#line 316 "pl-lexer.l" {yylval.yint = C_S_BOTAXIS; return(CHARMEASURE); } YY_BREAK case 192: YY_RULE_SETUP -#line 318 "pl-lexer.l" +#line 317 "pl-lexer.l" {yylval.yint = C_S_BOTAXISBIS; return(CHARMEASURE); } YY_BREAK case 193: YY_RULE_SETUP -#line 319 "pl-lexer.l" +#line 318 "pl-lexer.l" {yylval.yint = C_S_MIDHOR; return(CHARMEASURE); } YY_BREAK case 194: YY_RULE_SETUP -#line 320 "pl-lexer.l" +#line 319 "pl-lexer.l" {yylval.yint = C_S_MIDVERT; return(CHARMEASURE); } YY_BREAK case 195: YY_RULE_SETUP -#line 321 "pl-lexer.l" +#line 320 "pl-lexer.l" {yylval.yint = C_S_BASESLANT; return(CHARMEASURE); } YY_BREAK case 196: YY_RULE_SETUP -#line 323 "pl-lexer.l" +#line 322 "pl-lexer.l" {lex_error_1("unexpected character (%x); ignored", yytext[0]);} YY_BREAK case 197: YY_RULE_SETUP -#line 325 "pl-lexer.l" +#line 324 "pl-lexer.l" ECHO; YY_BREAK -#line 2330 "pl-lexer.c" +#line 2327 "pl-lexer.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2587,7 +2584,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 783 ) + if ( yy_current_state >= 780 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2610,11 +2607,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 783 ) + if ( yy_current_state >= 780 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 782); + yy_is_jam = (yy_current_state == 779); if ( ! yy_is_jam ) *(yy_state_ptr)++ = yy_current_state; @@ -3310,7 +3307,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 325 "pl-lexer.l" +#line 324 "pl-lexer.l" @@ -3469,9 +3466,27 @@ scan_string(char *attribute, unsigned keep, unsigned length) static void scan_hex_string(void) { - register unsigned i=10; + register unsigned c, saved_ptr = 0; + unsigned error_msg = FALSE; - while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; - yylval.ystring = xstrdup(yytext+i); + while ((c = input()) != EOF) { + if (((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'F'))) { + if (saved_ptr<(MAX_PTR-3)) + saved_text[saved_ptr++] = c; + else if (error_msg == FALSE) { + lex_error_1("SPECIALHEX string longer than %d characters; truncating", + MAX_PTR); + error_msg = TRUE; + } + } else if (c == '\n') { + line_number++; + } else if ((c != ' ') && (c != '\t')) { + unput(c); + break; + } + } + if (c == EOF) fatal_error_0("EOF while scanning SPECIALHEX"); + saved_text[saved_ptr++] = '\0'; + yylval.ystring = xstrdup(saved_text); } diff --git a/Build/source/texk/web2c/omegafonts/pl-lexer.l b/Build/source/texk/web2c/omegafonts/pl-lexer.l index 5eba855a25a..bd17b8c2500 100644 --- a/Build/source/texk/web2c/omegafonts/pl-lexer.l +++ b/Build/source/texk/web2c/omegafonts/pl-lexer.l @@ -79,7 +79,6 @@ octnumber O{ws}[0-7]+ decnumber D{ws}[0-9]+ realnumber R[ \t+-]+[0-9]*("."[0-9]*){0,1} charnumber C{ws}. -hexstring ([A-F0-9][A-F0-9])* %% @@ -110,7 +109,7 @@ SPECIAL {scan_string("SPECIAL", KEEP_ALL, 0); COMMENT {scan_string("COMMENT", KEEP_NONE, 0); return(COMMENT); } -SPECIALHEX{ws}{hexstring} {scan_hex_string(); return(SPECIALHEX); } +SPECIALHEX {scan_hex_string(); return(SPECIALHEX); } SEVENBITSAFEFLAG{ws}TRUE {yylval.yint=1; return(SEVENBITSAFEFLAG); } @@ -479,8 +478,26 @@ scan_string(char *attribute, unsigned keep, unsigned length) static void scan_hex_string(void) { - register unsigned i=10; + register unsigned c, saved_ptr = 0; + unsigned error_msg = FALSE; - while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; - yylval.ystring = xstrdup(yytext+i); + while ((c = input()) != EOF) { + if (((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'F'))) { + if (saved_ptr<(MAX_PTR-3)) + saved_text[saved_ptr++] = c; + else if (error_msg == FALSE) { + lex_error_1("SPECIALHEX string longer than %d characters; truncating", + MAX_PTR); + error_msg = TRUE; + } + } else if (c == '\n') { + line_number++; + } else if ((c != ' ') && (c != '\t')) { + unput(c); + break; + } + } + if (c == EOF) fatal_error_0("EOF while scanning SPECIALHEX"); + saved_text[saved_ptr++] = '\0'; + yylval.ystring = xstrdup(saved_text); } diff --git a/Build/source/texk/web2c/omegafonts/print_routines.c b/Build/source/texk/web2c/omegafonts/print_routines.c index 5bb2260c953..678adf9b4a5 100644 --- a/Build/source/texk/web2c/omegafonts/print_routines.c +++ b/Build/source/texk/web2c/omegafonts/print_routines.c @@ -388,11 +388,17 @@ print_special(string sval) } void -print_special_hex(string sval) +print_special_hex(unsigned char *special, int k) { left(); - out("SPECIALHEX"); - out(" "); out(sval); + out("SPECIALHEX "); + for (; k > 0; k--, special++) { + if ((k & 0x1f) == 0) + out_ln(); + else if ((k & 0x03) == 0) + out(" "); + out_hex(*special); + } right(); } diff --git a/Build/source/texk/web2c/omegafonts/print_routines.h b/Build/source/texk/web2c/omegafonts/print_routines.h index 1362b56bd18..025a8675aeb 100644 --- a/Build/source/texk/web2c/omegafonts/print_routines.h +++ b/Build/source/texk/web2c/omegafonts/print_routines.h @@ -61,7 +61,7 @@ extern void print_push(void); extern void print_pop(void); extern void print_move(unsigned, fix); extern void print_special(string); -extern void print_special_hex(string); +extern void print_special_hex(unsigned char *, int); extern void print_character_repeat(unsigned, unsigned); extern void print_font_ivalue(unsigned); diff --git a/Build/source/texk/web2c/omegafonts/specialhex.test b/Build/source/texk/web2c/omegafonts/specialhex.test new file mode 100755 index 00000000000..1b3499463b9 --- /dev/null +++ b/Build/source/texk/web2c/omegafonts/specialhex.test @@ -0,0 +1,27 @@ +#! /bin/sh + +# Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> +# You may freely use, modify and/or distribute this file. + +test -d tests || mkdir -p tests + +TEXMFCNF=$srcdir/../../kpathsea \ + OFMFONTS=tests \ + ./omfonts -ovp2ovf -verbose $srcdir/tests/specialhex tests/specialhex tests/specialhex || exit 1 + +TEXMFCNF=$srcdir/../../kpathsea \ + ./omfonts -ofm2opl -verbose tests/specialhex tests/specialhex || exit 1 + +./omfonts -opl2ofm -verbose tests/specialhex tests/xspecialhex || exit 1 + +TEXMFCNF=$srcdir/../../kpathsea \ + ./omfonts -ofm2opl -verbose tests/xspecialhex tests/xspecialhex || exit 1 + +diff tests/specialhex.opl tests/xspecialhex.opl || exit 1 + +TEXMFCNF=$srcdir/../../kpathsea \ + OFMFONTS=.:./tests \ + ./omfonts -ovf2ovp -verbose tests/specialhex tests/specialhex tests/xspecialhex || exit 1 + +diff $srcdir/tests/specialhex.ovp tests/xspecialhex.ovp || exit 1 + diff --git a/Build/source/texk/web2c/omegafonts/tests/specialhex.ovp b/Build/source/texk/web2c/omegafonts/tests/specialhex.ovp new file mode 100644 index 00000000000..eb205298eaa --- /dev/null +++ b/Build/source/texk/web2c/omegafonts/tests/specialhex.ovp @@ -0,0 +1,51 @@ +(VTITLE Test SPECIALHEX handling) +(OFMLEVEL D 0) +(FONTDIR TL) +(FAMILY UNSPECIFIED) +(FACE F MRR) +(CODINGSCHEME UNSPECIFIED) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM H 22286392) +(SEVENBITSAFEFLAG FALSE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.5) + (STRETCH R 0.3) + (SHRINK R 0.1) + (XHEIGHT R 0.8) + (QUAD R 1.0) + ) +(COMMENT + (CHARWD_ENTRY D 0 R 0.0) + (CHARWD_ENTRY D 1 R 0.333) + (CHARWD_ENTRY D 2 R 0.554) + ) +(COMMENT + (CHARHT_ENTRY D 0 R 0.0) + (CHARHT_ENTRY D 1 R 0.7955) + (CHARHT_ENTRY D 2 R 0.852) + ) +(COMMENT + (CHARDP_ENTRY D 0 R 0.0) + (CHARDP_ENTRY D 1 R 0.056) + ) +(COMMENT + (CHARIC_ENTRY D 0 R 0.0) + ) +(CHARACTER H 22 + (CHARWD R 0.554) + (CHARHT R 0.7955) + (MAP + (SPECIAL a special string) + ) + ) +(CHARACTER H 28 + (CHARWD R 0.333) + (CHARHT R 0.852) + (CHARDP R 0.056) + (MAP + (SPECIALHEX AF00 01234567 89ABCDEF) + ) + ) |