summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2009-07-16 07:51:07 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2009-07-16 07:51:07 +0000
commit7a00b27579c631f2389ee63ed38cea662ec78da1 (patch)
treee3661ae5f38cf4fc3b21723356a598c6db80f210
parentb0ee6760d9a625a2e5a95d4dcad6145602743019 (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/ChangeLog16
-rw-r--r--Build/source/texk/web2c/omegafonts/Makefile.am11
-rw-r--r--Build/source/texk/web2c/omegafonts/Makefile.in9
-rw-r--r--Build/source/texk/web2c/omegafonts/char_routines.c35
-rw-r--r--Build/source/texk/web2c/omegafonts/font_routines.c8
-rw-r--r--Build/source/texk/web2c/omegafonts/out_routines.c6
-rw-r--r--Build/source/texk/web2c/omegafonts/out_routines.h1
-rw-r--r--Build/source/texk/web2c/omegafonts/pl-lexer.c933
-rw-r--r--Build/source/texk/web2c/omegafonts/pl-lexer.l27
-rw-r--r--Build/source/texk/web2c/omegafonts/print_routines.c12
-rw-r--r--Build/source/texk/web2c/omegafonts/print_routines.h2
-rwxr-xr-xBuild/source/texk/web2c/omegafonts/specialhex.test27
-rw-r--r--Build/source/texk/web2c/omegafonts/tests/specialhex.ovp51
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)
+ )
+ )