MISR Toolkit  1.5.1
lexan.c
Go to the documentation of this file.
1 # include <stdio.h>
2 # define U(x) x
3 # define NLSTATE yyprevious=YYNEWLINE
4 # define BEGIN yybgin = yysvec + 1 +
5 # define INITIAL 0
6 # define YYLERR yysvec
7 # define YYSTATE (yyestate-yysvec-1)
8 # define YYOPTIM 1
9 # define YYLMAX BUFSIZ
10 # define output(c) putc(c,yyout)
11 # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
12 # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
13 # define yymore() (yymorfg=1)
14 # define ECHO fprintf(yyout, "%s",yytext)
15 # define REJECT { nstr = yyreject(); goto yyfussy;}
16 int yyleng; extern char yytext[];
17 int yymorfg;
18 extern char *yysptr, yysbuf[];
19 int yytchar;
20 FILE *yyin, *yyout;
21 extern int yylineno;
22 struct yysvf {
23  struct yywork *yystoff;
24  struct yysvf *yyother;
25  int *yystops;};
26 struct yysvf *yyestate;
27 extern struct yysvf yysvec[], *yybgin;
28 
29 /*****************************************************************************
30 
31  Description: This file contains the lexical analyzer for the Object
32  Description Language. The lexical analyzer is created
33  using Lex and modifications to the lexical analysis of
34  ODL should be made by modifying the Lex input file and
35  not the C-language version of the analyzer produced by
36  Lex.
37 
38  Author: Randy Davis, University of Colorado LASP
39 
40  Creation Date: 17 April 1990
41  Last Modified: 18 May 1991
42 
43  History:
44 
45  Creation - This routine was introduced in Version 1 of the ODLC library.
46 
47  Version 2.0 - 30 August 1990 - R. Davis, U. of Colorado LASP
48  a) Upgraded to ODL Version 2. The biggest change is the support
49  of groups. Support for ODL Version 1 features not found in
50  Version 2 -- like the range operator -- remain so that the
51  lexical analyzer can handle older labels as well as new ones.
52  b) Added support for ODL Version 0 date and time format.
53 
54  Version 2.1 - 13 March 1991 - R. Davis, U. of Colorado LASP
55  a) Changed to a more general way to turn tokens into 'value data'
56  structures by converting from the older ODLxToken routines to
57  ODLConvertX routines. Processing of string tokens was moved into
58  a new action routine named yyGetStringToken.
59  b) Added recognition of two values that are often entered incorrectly
60  by users: file names without quotation marks (which are turned into
61  strings); and the symbol N/A (for Not Applicable, which is turned
62  into a quoted symbol).
63  c) Saved comments so they can be attached as annotation to the ODL tree.
64 
65  Version 2.2 - 18 May 1991 - M. DeMore, Jet Propulsion Laboratory
66  Removed ODL function prototypes which are now in include files.
67  Added include file odlinter.h.
68 
69  Version 2.3 - 13 October 1991 - M. DeMore, Jet Propulsion Laboratory
70  Removed code in yyGetStringToken which used to process '\t' and
71  `\n`. They are now transferred exactly as is to the output string
72  and are handled by the output routines instead. This was done to
73  prevent the lexer from eating backslashes in DOS file names.
74 
75 ******************************************************************************/
76 #include <stdlib.h>
77 #include "odldef.h"
78 #include "odlparse.h"
79 #include "odlinter.h"
80 
81 /* This was moved from rdvalue.c so that other modules could be independent
82  of rdvalue */
83 
84 int nc;
85 
86 /* The following are for the dynamic string allocation routines */
87 
88 # define ODL_BUFF_INCREMENT BUFSIZ
89 
90 int ODL_buf_pos = 0;
91 long ODL_buf_size = 0;
92 char *temp_buf = NULL;
93 char *ODL_buffer = NULL;
94 
95 
96 /* The following are warning messages */
97 
98 #define MESSAGE1 "Value is assumed to be a file name -- converted to a string"
99 #define MESSAGE2 "Value N/A is not a name -- will appear within single quotes"
100 #define MESSAGE3 "BEGIN_GROUP statement found. Will be converted to GROUP"
101 #define MESSAGE4 "BEGIN_OBJECT statement found. Will be converted to OBJECT"
102 
103 /* The following global variable is defined in the module containing the
104  parser action routines */
105 
106 /* The following global variable is defined in the module containing the
107  parser action routines */
108 
109 /* >>>>>>>>>>>>>>>>>>>>>>>>>> BEGIN CN CHANGES >>>>>>>>>>>>>>>>>>>>>>>>> */
110 /* >>>>> MDD 5/19/91 Added extern statement to the following >>>>> */
111 /* >>>>> variable because it is declared in parsact >>>>> */
112 /* >>>>> and the PC compiler is unhappy. >>>>> */
113 /* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
114 
115 extern char *ODLcurrent_comment; /* Most recently recognized comment */
116 
117 /* >>>>>>>>>>>>>>>>>>>>>>>>>> END OF CN CHANGES >>>>>>>>>>>>>>>>>>>>>>>>> */
118 
119 /* The following routine processes string tokens. This routine is used
120  because ODL strings can be very long, rendering LEX's regular
121  expression mechanism for getting tokens inefficient */
122 
123 char *yyGetStringToken ();
124 
125 /* The following routine processes comments within an ODL label */
126 
127 void yyGetComment ();
128 
129 
130 # define YYNEWLINE 10
132 int nstr; extern int yyprevious;
133 while((nstr = yylook()) >= 0)
134 yyfussy: switch(nstr){
135 case 0:
136 if(yywrap()) return(0); break;
137 case 1:
138  {
139  return (_END);
140  }
141 case 2:
142  {
143  return (_END_GROUP);
144  }
145 case 3:
146  {
147  return (_END_OBJECT);
148  }
149 case 4:
150  {
151  return (_GROUP);
152  }
153 case 5:
154  {
156  return (_GROUP);
157  }
158 case 6:
159  {
160  return (_OBJECT);
161  }
162 case 7:
163  {
165  return (_OBJECT);
166  }
167 case 8:
168 {
169  yylval.item =
171  return (_name);
172  }
173 case 9:
174  {
175  yylval.item =
176  ODLConvertSymbol(&yytext[1],yyleng-2,2);
177  return (_symbol);
178  }
179 case 10:
180  {
182  yylval.item =
184  ODLStringLength ());
185  ODLKillString ();
186  return (_text_string);
187  }
188 case 11:
189  {
190  /* This is the low part of an ODL
191  Version 1 range value */
192  yylval.item =
194  return (_integer);
195  }
196 case 12:
197  {
198  yylval.item =
200  return (_integer);
201  }
202 case 13:
203 {
204  yylval.item =
206  return (_integer);
207  }
208 case 14:
209  {
210  yylval.item =
212  return (_real);
213  }
214 case 15:
215  {
216  yylval.item =
218  return (_date);
219  }
220 case 16:
221  {
222  yylval.item =
224  return (_date);
225  }
226 case 17:
227  {
228  yylval.item =
230  return (_time);
231  }
232 case 18:
233  {
234  yylval.item =
236  return (_date_time);
237  }
238 case 19:
239  {
240  yylval.item =
242  return (_date_timeV0);
243  }
244 case 20:
245 {
247  yylval.item =
249  return (_text_string);
250  }
251 case 21:
252  {
254  yylval.item =
256  return (_symbol);
257  }
258 case 22:
259  {
260  return (_sequence_opening);
261  }
262 case 23:
263  {
264  return (_sequence_closing);
265  }
266 case 24:
267  {
268  return (_set_opening);
269  }
270 case 25:
271  {
272  return (_set_closing);
273  }
274 case 26:
275  {
276  return (_units_opening);
277  }
278 case 27:
279  {
280  return (_units_closing);
281  }
282 case 28:
283  {
284  return (_list_separator);
285  }
286 case 29:
287  {
288  return (_point_operator);
289  }
290 case 30:
291  {
292  return (_assignment_operator);
293  }
294 case 31:
295  {
296  return (_multiply_operator);
297  }
298 case 32:
299  {
300  return (_divide_operator);
301  }
302 case 33:
303  {
304  return (_exponentiate_operator);
305  }
306 case 34:
307  {
308  return (_range_operator);
309  }
310 case 35:
311  {
312  /* This is a comment line */
313 
314  yyGetComment ();
315  }
316 break;
317 case 36:
318  {
319  /* This is a comment at the end of a
320  line of ODL code -- ignore it */
321  }
322 break;
323 case 37:
324  {}
325 break;
326 case 38:
327  {}
328 break;
329 case 39:
330  { /* Return other characters verbatim */
331  return (yytext[0]);
332  }
333 case -1:
334 break;
335 default:
336 fprintf(yyout,"bad switch yylook %d",nstr);
337 } return(0); }
338 /* end of yylex */
339 
340 /*****************************************************************************
341 
342  Routine: yywrap
343 
344  Description: Required wrap-up routine for lexical processing. No
345  special wrap-up is required for ODL parsing.
346 
347  Input: None.
348 
349  Output: Return value is set to TRUE to indicate parsing completed OK.
350 
351 *****************************************************************************/
352 
354 {
355  return(1);
356 }
357 
358 
359 /*****************************************************************************
360 
361  Routine: yyGetStringToken
362 
363  Description: Get a text string token. The opening delimiter (") was
364  recognized by the lexical analyzer before this routine
365  was called. This routine will read in the remainder of
366  the string token up to the end delimiter and it will
367  reformat the text string as it goes into an ODL string
368  value.
369 
370  Input: No arguments required. The text of the string token is gotten
371  using the lexical analyzer input function (yyinput).
372 
373  Output: The text string is placed in the lexical analyzer's token buffer
374  (pointed to by yytext) and the token character count (yyleng) is
375  set to reflect the string length.
376 
377  MDD - October 22, 1991
378  Modified to use dynamic memory allocation routines rather than
379  a static array.
380 
381 *****************************************************************************/
382 
384 {
385  char c; /* Current input character */
386  int newline; /* New line flag: */
387  /* 0 - Not at the start of a line */
388  /* +1 - Newline found in input string */
389  /* -1 - Newline placed in output string */
390 
391  newline = 1;
392 
393  ODLNewString();
394 
395  while ((c = yyinput()) != '"' && c != '\0')
396  {
397  switch (c)
398  {
399  case '\n':
400 
401  /* End of current line : get rid of any trailing blanks on the line */
402 
403  while (ODLPeekString (1) == ' ') ODLBackupString ();
404 
405  /* If the last non-blank character on the line is a '-', then this
406  is a word hyphen and we can delete it. If it is an '&' then this
407  indicates that all characters to the left are to be left intact,
408  although we do delete the '&'. Otherwise we add a blank to
409  separate the last word on the current input line from the first
410  word on the next input line. If there are two or more newlines
411  in a row, then we retain the newlines to separate paragraphs */
412 
413  if (newline > 0)
414  {
415  if (ODLPeekString (1) &&
416  !(ODLPeekString (1) == 'n' && ODLPeekString (2) == '\\'))
417  {
418  ODLStoreString ('\\');
419  ODLStoreString ('n');
420  }
421  ODLStoreString ('\\');
422  ODLStoreString ('n');
423  }
424  else if (newline < 0)
425  {
426  newline = 1;
427  }
428  else
429  {
430  newline = 1;
431  if (ODLPeekString (1) == '-' || ODLPeekString (1) == '&')
432  {
433  ODLBackupString ();
434  }
435  else if (ODLPeekString (1) &&
436  !(ODLPeekString (1) == 'n' && ODLPeekString (2) == '\\'))
437  {
438  ODLStoreString (' ');
439  }
440  }
441  break;
442 
443  case ' ': case '\t':
444 
445  /* Ignore a blank or tab at the beginning of an input line; otherwise
446  copy a blank character into the output string */
447 
448  if (newline == 0)
449  {
450  ODLStoreString (' ');
451  }
452  break;
453 
454  case '\\':
455  ODLStoreString (c);
456  ODLStoreString (yyinput ());
457  if (ODLPeekString (1) == 'n' && ODLPeekString (2) == '\\')
458  newline = -1;
459  else if (ODLPeekString (1) &&
460  !(ODLPeekString (1) == 't' && ODLPeekString (2) == '\\'))
461  newline = 0;
462  break;
463 
464  default:
465 
466  /* Copy the input character to the token buffer */
467  ODLStoreString (c);
468  newline = 0;
469 
470  }
471  }
472 
473  /* Terminate the token buffer */
474 
475  return (ODLStoreString ('\0'));
476 }
477 
478 
479 /*****************************************************************************
480 
481  Routine: yyGetComment
482 
483  Description: Get a comment and either attach it to the ODL tree or
484  put it where other routines can get at it and do so.
485 
486  Input: No arguments required. The text and length of the comment
487  come from the global variables yyinput and yyleng.
488 
489  Output: No output parameters. The comment is copied and saved for
490  later processing.
491 
492 *****************************************************************************/
493 
494 #include <ctype.h>
495 
497 {
498  int ib; /* Index to first character in comment text */
499  int ie; /* Index to last character in comment text */
500  int il; /* Count of characters in comment text */
501  char *string; /* Pointer to space allocated for comment */
502 
503 
504 
505  /* Skip over any whitespace prior to the start of the comment */
506 
507  ib = 0;
508  ie = yyleng - 1;
509 
510  for ( ; ib <= ie && isspace (yytext[ib]) ; ib++);
511 
512  /* Skip over the slash and asterisk that introduce the comment */
513 
514  ib += 2;
515 
516  /* Skip backward over any white space or ending comment delimiter */
517 
518  for ( ; ib <= ie && isspace (yytext[ie]) ; ie--);
519 
520  if (ie > ib && yytext[ie] == '/')
521  {
522  if (yytext[ie-1] == '*')
523  {
524  ie -= 2;
525  }
526  }
527 
528  /* Eliminate any trailing whitespace */
529 
530  for ( ; ie >= ib && isspace (yytext[ie]); ie--);
531 
532  /* Get the number of characters in the comment string */
533 
534  yytext[ie+1] = '\0';
535  il = (ie >= ib)? ie-ib+1 : 0;
536 
537  if (ODLcurrent_comment == NULL)
538  {
539  /* There is no comment currently. Allocate space for a new
540  comment and copy the text */
541 
542  string = (char *) malloc (il+1);
543  if (string != NULL)
544  {
545  ODLcurrent_comment = strcpy (string, &yytext[ib]);
546  }
547  }
548  else
549  {
550  /* There is already some comment there: put in a newline character
551  to end the previous comment line and append the current text
552  to the comment */
553 
554  string = (char *) realloc (ODLcurrent_comment,
555  strlen (ODLcurrent_comment)+il+2);
556  if (string != NULL)
557  {
558  strcat (string, "\n");
559  ODLcurrent_comment = strcat (string, &yytext[ib]);
560  }
561  }
562 
563 return;
564 }
565 
566 
568 char c)
569 {
570  if (ODL_buffer != NULL)
571  {
572  if (ODL_buf_pos < ODL_buf_size)
573  *(ODL_buffer + ODL_buf_pos++) = c;
574  else
575  {
577  ODL_buffer = (char *) realloc (ODL_buffer, ODL_buf_size);
578  if (ODL_buffer == NULL)
579  {
580  printf ("Out of memory for string storage.");
581  exit (1);
582  }
583  *(ODL_buffer + ODL_buf_pos++) = c;
584  }
585  }
586  return (ODL_buffer);
587 }
588 
590 {
591  ODLKillString ();
592  ODL_buffer = (char *) malloc (ODL_BUFF_INCREMENT);
593  if (ODL_buffer == NULL)
594  {
595  printf ("Out of memory for string storage.");
596  exit (1);
597  }
599 }
600 
602 {
603  if (ODL_buf_pos > 0)
604  {
605  ODL_buf_pos--;
606  return (*(ODL_buffer + ODL_buf_pos));
607  }
608  else
609  return (0);
610 }
611 
613 int pos)
614 {
615  if (pos != 0 && ODL_buffer != NULL && pos <= ODL_buf_pos)
616  return (*(ODL_buffer + (ODL_buf_pos - pos)));
617  else
618  return (0);
619 }
620 
622 {
623  if (ODL_buffer != NULL) free (ODL_buffer);
624  ODL_buffer = NULL;
625  ODL_buf_pos = 0;
626  ODL_buf_size = 0;
627 }
628 
630 {
631  return (ODL_buf_pos - 1);
632 }
633 int yyvstop[] = {
634 0,
635 
636 39,
637 0,
638 
639 37,
640 39,
641 0,
642 
643 38,
644 0,
645 
646 38,
647 39,
648 0,
649 
650 10,
651 39,
652 0,
653 
654 39,
655 0,
656 
657 22,
658 39,
659 0,
660 
661 23,
662 39,
663 0,
664 
665 31,
666 39,
667 0,
668 
669 39,
670 0,
671 
672 28,
673 39,
674 0,
675 
676 39,
677 0,
678 
679 32,
680 39,
681 0,
682 
683 12,
684 39,
685 -11,
686 0,
687 
688 26,
689 39,
690 0,
691 
692 30,
693 39,
694 0,
695 
696 27,
697 39,
698 0,
699 
700 8,
701 39,
702 0,
703 
704 8,
705 39,
706 0,
707 
708 8,
709 39,
710 0,
711 
712 8,
713 39,
714 0,
715 
716 8,
717 39,
718 0,
719 
720 8,
721 39,
722 0,
723 
724 29,
725 39,
726 0,
727 
728 8,
729 38,
730 39,
731 0,
732 
733 24,
734 39,
735 0,
736 
737 25,
738 39,
739 0,
740 
741 37,
742 39,
743 0,
744 
745 32,
746 39,
747 0,
748 
749 8,
750 39,
751 0,
752 
753 9,
754 0,
755 
756 33,
757 0,
758 
759 12,
760 -11,
761 0,
762 
763 34,
764 0,
765 
766 14,
767 0,
768 
769 36,
770 0,
771 
772 14,
773 0,
774 
775 12,
776 -11,
777 0,
778 
779 20,
780 0,
781 
782 8,
783 0,
784 
785 8,
786 0,
787 
788 8,
789 0,
790 
791 8,
792 0,
793 
794 8,
795 0,
796 
797 35,
798 36,
799 0,
800 
801 8,
802 0,
803 
804 15,
805 0,
806 
807 11,
808 0,
809 
810 14,
811 0,
812 
813 16,
814 0,
815 
816 17,
817 0,
818 
819 8,
820 0,
821 
822 8,
823 0,
824 
825 8,
826 0,
827 
828 8,
829 0,
830 
831 8,
832 0,
833 
834 21,
835 0,
836 
837 8,
838 0,
839 
840 35,
841 0,
842 
843 1,
844 8,
845 0,
846 
847 14,
848 0,
849 
850 13,
851 0,
852 
853 17,
854 0,
855 
856 8,
857 0,
858 
859 8,
860 0,
861 
862 8,
863 0,
864 
865 14,
866 0,
867 
868 15,
869 0,
870 
871 16,
872 0,
873 
874 17,
875 0,
876 
877 17,
878 0,
879 
880 8,
881 0,
882 
883 8,
884 0,
885 
886 8,
887 0,
888 
889 4,
890 8,
891 0,
892 
893 8,
894 0,
895 
896 17,
897 0,
898 
899 17,
900 0,
901 
902 8,
903 0,
904 
905 8,
906 0,
907 
908 6,
909 8,
910 0,
911 
912 18,
913 0,
914 
915 19,
916 0,
917 
918 17,
919 0,
920 
921 8,
922 0,
923 
924 8,
925 0,
926 
927 8,
928 0,
929 
930 8,
931 0,
932 
933 18,
934 0,
935 
936 8,
937 0,
938 
939 8,
940 0,
941 
942 8,
943 0,
944 
945 8,
946 0,
947 
948 18,
949 0,
950 
951 18,
952 0,
953 
954 19,
955 0,
956 
957 8,
958 0,
959 
960 8,
961 0,
962 
963 2,
964 8,
965 0,
966 
967 8,
968 0,
969 
970 18,
971 0,
972 
973 18,
974 0,
975 
976 19,
977 0,
978 
979 19,
980 0,
981 
982 8,
983 0,
984 
985 8,
986 0,
987 
988 3,
989 8,
990 0,
991 
992 18,
993 0,
994 
995 5,
996 8,
997 0,
998 
999 8,
1000 0,
1001 
1002 7,
1003 8,
1004 0,
1005 0};
1006 # define YYTYPE int
1007 struct yywork { YYTYPE verify, advance; } yycrank[] = {
1008 0,0, 0,0, 1,3, 0,0,
1009 0,0, 0,0, 0,0, 0,0,
1010 0,0, 0,0, 1,4, 1,5,
1011 33,0, 1,6, 30,55, 0,0,
1012 0,0, 0,0, 0,0, 0,0,
1013 0,0, 0,0, 0,0, 0,0,
1014 0,0, 0,0, 0,0, 0,0,
1015 0,0, 0,0, 0,0, 0,0,
1016 0,0, 0,0, 0,0, 1,7,
1017 0,0, 30,55, 0,0, 0,0,
1018 1,8, 1,9, 1,10, 1,11,
1019 1,12, 1,13, 11,35, 1,14,
1020 1,15, 1,16, 15,40, 24,53,
1021 30,56, 31,57, 56,75, 61,79,
1022 0,0, 37,43, 65,82, 0,0,
1023 65,83, 1,17, 1,18, 1,19,
1024 0,0, 2,30, 1,20, 1,21,
1025 1,20, 1,20, 1,22, 1,20,
1026 1,23, 1,20, 1,20, 1,20,
1027 95,82, 21,50, 0,0, 1,24,
1028 1,25, 1,20, 22,51, 1,20,
1029 93,104, 1,20, 1,20, 94,105,
1030 23,52, 25,54, 2,7, 32,58,
1031 96,106, 114,123, 128,137, 1,26,
1032 2,9, 2,10, 2,11, 8,33,
1033 2,13, 62,80, 2,14, 2,31,
1034 132,141, 92,81, 39,59, 8,33,
1035 8,0, 21,50, 8,33, 50,70,
1036 51,71, 52,72, 22,51, 53,73,
1037 2,17, 2,18, 2,19, 1,27,
1038 23,52, 25,54, 71,88, 32,58,
1039 1,28, 2,32, 1,29, 36,39,
1040 36,39, 36,39, 36,39, 36,39,
1041 36,39, 36,39, 36,39, 36,39,
1042 36,39, 8,34, 39,59, 76,88,
1043 62,81, 8,33, 54,74, 50,70,
1044 51,71, 52,72, 8,33, 53,73,
1045 99,109, 12,36, 2,26, 12,37,
1046 12,37, 12,37, 12,37, 12,37,
1047 12,37, 12,37, 12,37, 12,37,
1048 12,37, 0,0, 0,0, 8,33,
1049 8,33, 8,33, 8,33, 8,33,
1050 8,33, 8,33, 8,33, 8,33,
1051 8,33, 0,0, 54,74, 0,0,
1052 8,33, 8,33, 8,33, 2,28,
1053 8,33, 2,29, 8,33, 8,33,
1054 14,38, 0,0, 14,39, 14,39,
1055 14,39, 14,39, 14,39, 14,39,
1056 14,39, 14,39, 14,39, 14,39,
1057 42,62, 42,62, 42,62, 42,62,
1058 42,62, 42,62, 42,62, 42,62,
1059 42,62, 42,62, 0,0, 16,41,
1060 0,0, 0,0, 0,0, 58,76,
1061 70,87, 72,89, 74,90, 87,99,
1062 8,33, 16,42, 16,43, 16,44,
1063 16,45, 16,45, 16,45, 16,45,
1064 16,45, 16,45, 16,45, 16,45,
1065 16,45, 16,45, 16,46, 20,47,
1066 0,0, 20,48, 20,48, 20,48,
1067 20,48, 20,48, 20,48, 20,48,
1068 20,48, 20,48, 20,48, 58,76,
1069 70,87, 72,89, 74,90, 87,99,
1070 0,0, 89,102, 20,48, 20,48,
1071 20,48, 20,48, 20,48, 20,48,
1072 20,48, 20,48, 20,48, 20,48,
1073 20,48, 20,48, 20,48, 20,48,
1074 20,48, 20,48, 20,48, 20,48,
1075 20,48, 20,48, 20,48, 20,48,
1076 20,48, 20,48, 20,48, 20,48,
1077 98,84, 90,103, 98,84, 98,108,
1078 20,49, 89,102, 20,48, 20,48,
1079 20,48, 20,48, 20,48, 20,48,
1080 20,48, 20,48, 20,48, 20,48,
1081 20,48, 20,48, 20,48, 20,48,
1082 20,48, 20,48, 20,48, 20,48,
1083 20,48, 20,48, 20,48, 20,48,
1084 20,48, 20,48, 20,48, 20,48,
1085 40,40, 90,103, 103,112, 0,0,
1086 0,0, 0,0, 0,0, 0,0,
1087 40,40, 40,0, 0,0, 40,40,
1088 107,84, 0,0, 107,84, 98,86,
1089 0,0, 0,0, 0,0, 0,0,
1090 43,63, 0,0, 43,64, 43,64,
1091 43,64, 43,64, 43,64, 43,64,
1092 43,64, 43,64, 43,64, 43,64,
1093 0,0, 0,0, 103,112, 0,0,
1094 0,0, 0,0, 40,40, 0,0,
1095 0,0, 0,0, 40,40, 43,59,
1096 0,0, 0,0, 0,0, 40,40,
1097 44,65, 44,65, 44,65, 44,65,
1098 44,65, 44,65, 44,65, 44,65,
1099 44,65, 44,65, 0,0, 107,86,
1100 0,0, 66,84, 0,0, 66,84,
1101 40,40, 40,40, 40,40, 40,40,
1102 40,40, 40,40, 40,40, 40,40,
1103 40,40, 40,40, 0,0, 43,59,
1104 66,85, 40,40, 40,40, 40,40,
1105 41,60, 40,40, 41,60, 40,40,
1106 40,40, 41,61, 41,61, 41,61,
1107 41,61, 41,61, 41,61, 41,61,
1108 41,61, 41,61, 41,61, 0,0,
1109 0,0, 0,0, 0,0, 0,0,
1110 0,0, 0,0, 41,61, 41,61,
1111 41,61, 41,61, 41,61, 41,61,
1112 66,86, 130,120, 0,0, 130,120,
1113 130,139, 0,0, 0,0, 0,0,
1114 0,0, 40,40, 46,66, 46,66,
1115 46,66, 46,66, 46,66, 46,66,
1116 46,66, 46,66, 46,66, 46,66,
1117 0,0, 0,0, 0,0, 0,0,
1118 0,0, 0,0, 41,61, 41,61,
1119 41,61, 41,61, 41,61, 41,61,
1120 47,47, 47,47, 47,47, 47,47,
1121 47,47, 47,47, 47,47, 47,47,
1122 47,47, 47,47, 0,0, 0,0,
1123 0,0, 0,0, 0,0, 0,0,
1124 130,122, 47,47, 47,47, 47,47,
1125 47,47, 47,47, 47,47, 47,47,
1126 47,47, 47,47, 47,47, 47,47,
1127 47,47, 47,47, 47,47, 47,47,
1128 47,47, 47,47, 47,47, 47,47,
1129 47,47, 47,47, 47,47, 47,47,
1130 47,47, 47,47, 47,47, 138,120,
1131 0,0, 138,120, 0,0, 47,47,
1132 0,0, 47,47, 47,47, 47,47,
1133 47,47, 47,47, 47,47, 47,47,
1134 47,47, 47,47, 47,47, 47,47,
1135 47,47, 47,47, 47,47, 47,47,
1136 47,47, 47,47, 47,47, 47,47,
1137 47,47, 47,47, 47,47, 47,47,
1138 47,47, 47,47, 47,47, 49,67,
1139 49,67, 49,67, 49,67, 49,67,
1140 49,67, 49,67, 49,67, 49,67,
1141 49,67, 0,0, 0,0, 0,0,
1142 0,0, 0,0, 138,122, 0,0,
1143 49,68, 49,68, 49,68, 49,68,
1144 49,68, 49,68, 49,68, 49,68,
1145 49,68, 49,68, 49,68, 49,68,
1146 49,68, 49,68, 49,68, 49,68,
1147 49,68, 49,68, 49,68, 49,68,
1148 49,68, 49,68, 49,68, 49,68,
1149 49,68, 49,68, 0,0, 0,0,
1150 0,0, 0,0, 49,69, 0,0,
1151 49,68, 49,68, 49,68, 49,68,
1152 49,68, 49,68, 49,68, 49,68,
1153 49,68, 49,68, 49,68, 49,68,
1154 49,68, 49,68, 49,68, 49,68,
1155 49,68, 49,68, 49,68, 49,68,
1156 49,68, 49,68, 49,68, 49,68,
1157 49,68, 49,68, 57,57, 0,0,
1158 0,0, 0,0, 0,0, 0,0,
1159 0,0, 0,0, 57,57, 57,0,
1160 59,77, 57,57, 59,77, 0,0,
1161 0,0, 59,78, 59,78, 59,78,
1162 59,78, 59,78, 59,78, 59,78,
1163 59,78, 59,78, 59,78, 0,0,
1164 0,0, 64,64, 64,64, 64,64,
1165 64,64, 64,64, 64,64, 64,64,
1166 64,64, 64,64, 64,64, 0,0,
1167 57,57, 0,0, 0,0, 0,0,
1168 57,57, 0,0, 0,0, 0,0,
1169 0,0, 57,57, 64,59, 77,91,
1170 77,91, 77,91, 77,91, 77,91,
1171 77,91, 77,91, 77,91, 77,91,
1172 77,91, 0,0, 0,0, 113,120,
1173 0,0, 113,120, 57,57, 57,57,
1174 57,57, 57,57, 57,57, 57,57,
1175 57,57, 57,57, 57,57, 57,57,
1176 0,0, 0,0, 113,121, 57,57,
1177 57,57, 57,57, 64,59, 57,57,
1178 0,0, 57,57, 57,57, 60,61,
1179 60,61, 60,61, 60,61, 60,61,
1180 60,61, 60,61, 60,61, 60,61,
1181 60,61, 0,0, 0,0, 0,0,
1182 0,0, 0,0, 0,0, 0,0,
1183 60,61, 60,61, 60,61, 60,61,
1184 60,61, 60,61, 113,122, 0,0,
1185 0,0, 0,0, 0,0, 0,0,
1186 0,0, 0,0, 0,0, 57,57,
1187 0,0, 0,0, 0,0, 0,0,
1188 0,0, 67,67, 67,67, 67,67,
1189 67,67, 67,67, 67,67, 67,67,
1190 67,67, 67,67, 67,67, 0,0,
1191 60,61, 60,61, 60,61, 60,61,
1192 60,61, 60,61, 67,69, 67,69,
1193 67,69, 67,69, 67,69, 67,69,
1194 67,69, 67,69, 67,69, 67,69,
1195 67,69, 67,69, 67,69, 67,69,
1196 67,69, 67,69, 67,69, 67,69,
1197 67,69, 67,69, 67,69, 67,69,
1198 67,69, 67,69, 67,69, 67,69,
1199 0,0, 0,0, 0,0, 0,0,
1200 67,69, 0,0, 67,69, 67,69,
1201 67,69, 67,69, 67,69, 67,69,
1202 67,69, 67,69, 67,69, 67,69,
1203 67,69, 67,69, 67,69, 67,69,
1204 67,69, 67,69, 67,69, 67,69,
1205 67,69, 67,69, 67,69, 67,69,
1206 67,69, 67,69, 67,69, 67,69,
1207 68,68, 68,68, 68,68, 68,68,
1208 68,68, 68,68, 68,68, 68,68,
1209 68,68, 68,68, 0,0, 0,0,
1210 0,0, 0,0, 0,0, 0,0,
1211 0,0, 68,68, 68,68, 68,68,
1212 68,68, 68,68, 68,68, 68,68,
1213 68,68, 68,68, 68,68, 68,68,
1214 68,68, 68,68, 68,68, 68,68,
1215 68,68, 68,68, 68,68, 68,68,
1216 68,68, 68,68, 68,68, 68,68,
1217 68,68, 68,68, 68,68, 0,0,
1218 0,0, 0,0, 0,0, 0,0,
1219 0,0, 68,68, 68,68, 68,68,
1220 68,68, 68,68, 68,68, 68,68,
1221 68,68, 68,68, 68,68, 68,68,
1222 68,68, 68,68, 68,68, 68,68,
1223 68,68, 68,68, 68,68, 68,68,
1224 68,68, 68,68, 68,68, 68,68,
1225 68,68, 68,68, 68,68, 69,69,
1226 69,69, 69,69, 69,69, 69,69,
1227 69,69, 69,69, 69,69, 69,69,
1228 69,69, 0,0, 0,0, 0,0,
1229 0,0, 0,0, 0,0, 0,0,
1230 69,69, 69,69, 69,69, 69,69,
1231 69,69, 69,69, 69,69, 69,69,
1232 69,69, 69,69, 69,69, 69,69,
1233 69,69, 69,69, 69,69, 69,69,
1234 69,69, 69,69, 69,69, 69,69,
1235 69,69, 69,69, 69,69, 69,69,
1236 69,69, 69,69, 0,0, 0,0,
1237 0,0, 0,0, 69,69, 0,0,
1238 69,69, 69,69, 69,69, 69,69,
1239 69,69, 69,69, 69,69, 69,69,
1240 69,69, 69,69, 69,69, 69,69,
1241 69,69, 69,69, 69,69, 69,69,
1242 69,69, 69,69, 69,69, 69,69,
1243 69,69, 69,69, 69,69, 69,69,
1244 69,69, 69,69, 75,75, 0,0,
1245 0,0, 0,0, 0,0, 0,0,
1246 0,0, 0,0, 75,75, 75,0,
1247 0,0, 75,75, 78,78, 78,78,
1248 78,78, 78,78, 78,78, 78,78,
1249 78,78, 78,78, 78,78, 78,78,
1250 80,92, 80,92, 80,92, 80,92,
1251 80,92, 80,92, 80,92, 80,92,
1252 80,92, 80,92, 0,0, 0,0,
1253 0,0, 0,0, 0,0, 0,0,
1254 75,75, 0,0, 0,0, 0,0,
1255 75,75, 0,0, 0,0, 0,0,
1256 0,0, 75,75, 81,93, 81,93,
1257 81,93, 81,93, 81,93, 81,93,
1258 81,93, 81,93, 81,93, 81,93,
1259 0,0, 0,0, 0,0, 0,0,
1260 0,0, 0,0, 75,75, 75,75,
1261 75,75, 75,75, 75,75, 75,75,
1262 75,75, 75,75, 75,75, 75,75,
1263 0,0, 0,0, 0,0, 75,75,
1264 75,75, 75,75, 0,0, 75,75,
1265 0,0, 75,75, 75,75, 82,94,
1266 82,94, 82,94, 82,94, 82,94,
1267 82,94, 82,94, 82,94, 82,94,
1268 82,94, 83,95, 83,95, 83,95,
1269 83,95, 83,95, 83,95, 83,95,
1270 83,95, 83,95, 83,95, 84,96,
1271 84,96, 84,96, 84,96, 84,96,
1272 84,96, 84,96, 84,96, 84,96,
1273 84,96, 0,0, 85,97, 75,75,
1274 85,98, 85,98, 85,98, 85,98,
1275 85,98, 85,98, 85,98, 85,98,
1276 85,98, 85,98, 88,67, 88,67,
1277 88,67, 88,67, 88,67, 88,67,
1278 88,67, 88,67, 88,67, 88,67,
1279 0,0, 0,0, 0,0, 0,0,
1280 0,0, 0,0, 0,0, 88,68,
1281 88,68, 88,68, 88,68, 88,68,
1282 88,68, 88,100, 88,68, 88,68,
1283 88,68, 88,68, 88,68, 88,68,
1284 88,68, 88,101, 88,68, 88,68,
1285 88,68, 88,68, 88,68, 88,68,
1286 88,68, 88,68, 88,68, 88,68,
1287 88,68, 0,0, 0,0, 0,0,
1288 0,0, 88,69, 0,0, 88,68,
1289 88,68, 88,68, 88,68, 88,68,
1290 88,68, 88,100, 88,68, 88,68,
1291 88,68, 88,68, 88,68, 88,68,
1292 88,68, 88,101, 88,68, 88,68,
1293 88,68, 88,68, 88,68, 88,68,
1294 88,68, 88,68, 88,68, 88,68,
1295 88,68, 97,107, 97,107, 97,107,
1296 97,107, 97,107, 97,107, 97,107,
1297 97,107, 97,107, 97,107, 100,68,
1298 100,68, 100,68, 100,68, 100,68,
1299 100,68, 100,68, 100,68, 100,68,
1300 100,68, 0,0, 0,0, 0,0,
1301 0,0, 0,0, 0,0, 0,0,
1302 100,68, 100,68, 100,68, 100,68,
1303 100,68, 100,68, 100,68, 100,68,
1304 100,68, 100,68, 100,68, 100,68,
1305 100,68, 100,68, 100,68, 100,68,
1306 100,68, 100,110, 100,68, 100,68,
1307 100,68, 100,68, 100,68, 100,68,
1308 100,68, 100,68, 0,0, 0,0,
1309 0,0, 0,0, 0,0, 0,0,
1310 100,68, 100,68, 100,68, 100,68,
1311 100,68, 100,68, 100,68, 100,68,
1312 100,68, 100,68, 100,68, 100,68,
1313 100,68, 100,68, 100,68, 100,68,
1314 100,68, 100,110, 100,68, 100,68,
1315 100,68, 100,68, 100,68, 100,68,
1316 100,68, 100,68, 101,68, 101,68,
1317 101,68, 101,68, 101,68, 101,68,
1318 101,68, 101,68, 101,68, 101,68,
1319 0,0, 0,0, 0,0, 0,0,
1320 0,0, 0,0, 0,0, 101,68,
1321 101,111, 101,68, 101,68, 101,68,
1322 101,68, 101,68, 101,68, 101,68,
1323 101,68, 101,68, 101,68, 101,68,
1324 101,68, 101,68, 101,68, 101,68,
1325 101,68, 101,68, 101,68, 101,68,
1326 101,68, 101,68, 101,68, 101,68,
1327 101,68, 0,0, 0,0, 0,0,
1328 0,0, 0,0, 0,0, 101,68,
1329 101,111, 101,68, 101,68, 101,68,
1330 101,68, 101,68, 101,68, 101,68,
1331 101,68, 101,68, 101,68, 101,68,
1332 101,68, 101,68, 101,68, 101,68,
1333 101,68, 101,68, 101,68, 101,68,
1334 101,68, 101,68, 101,68, 101,68,
1335 101,68, 104,113, 104,113, 104,113,
1336 104,113, 104,113, 104,113, 104,113,
1337 104,113, 104,113, 104,113, 105,114,
1338 105,114, 105,114, 105,114, 105,114,
1339 105,114, 105,114, 105,114, 105,114,
1340 105,114, 106,115, 106,115, 106,115,
1341 106,115, 106,115, 106,115, 106,115,
1342 106,115, 106,115, 106,115, 108,84,
1343 0,0, 108,84, 0,0, 0,0,
1344 108,108, 108,108, 108,108, 108,108,
1345 108,108, 108,108, 108,108, 108,108,
1346 108,108, 108,108, 120,128, 120,128,
1347 120,128, 120,128, 120,128, 120,128,
1348 120,128, 120,128, 120,128, 120,128,
1349 0,0, 0,0, 0,0, 0,0,
1350 0,0, 0,0, 109,67, 109,67,
1351 109,67, 109,67, 109,67, 109,67,
1352 109,67, 109,67, 109,67, 109,67,
1353 0,0, 0,0, 0,0, 0,0,
1354 0,0, 0,0, 108,86, 109,68,
1355 109,68, 109,68, 109,68, 109,68,
1356 109,68, 109,116, 109,68, 109,68,
1357 109,68, 109,68, 109,68, 109,68,
1358 109,68, 109,117, 109,68, 109,68,
1359 109,68, 109,68, 109,68, 109,68,
1360 109,68, 109,68, 109,68, 109,68,
1361 109,68, 0,0, 0,0, 0,0,
1362 0,0, 109,69, 0,0, 109,68,
1363 109,68, 109,68, 109,68, 109,68,
1364 109,68, 109,116, 109,68, 109,68,
1365 109,68, 109,68, 109,68, 109,68,
1366 109,68, 109,117, 109,68, 109,68,
1367 109,68, 109,68, 109,68, 109,68,
1368 109,68, 109,68, 109,68, 109,68,
1369 109,68, 110,68, 110,68, 110,68,
1370 110,68, 110,68, 110,68, 110,68,
1371 110,68, 110,68, 110,68, 0,0,
1372 0,0, 0,0, 0,0, 0,0,
1373 0,0, 0,0, 110,68, 110,68,
1374 110,68, 110,68, 110,68, 110,68,
1375 110,68, 110,68, 110,68, 110,68,
1376 110,68, 110,68, 110,68, 110,68,
1377 110,118, 110,68, 110,68, 110,68,
1378 110,68, 110,68, 110,68, 110,68,
1379 110,68, 110,68, 110,68, 110,68,
1380 0,0, 0,0, 0,0, 0,0,
1381 0,0, 0,0, 110,68, 110,68,
1382 110,68, 110,68, 110,68, 110,68,
1383 110,68, 110,68, 110,68, 110,68,
1384 110,68, 110,68, 110,68, 110,68,
1385 110,118, 110,68, 110,68, 110,68,
1386 110,68, 110,68, 110,68, 110,68,
1387 110,68, 110,68, 110,68, 110,68,
1388 111,68, 111,68, 111,68, 111,68,
1389 111,68, 111,68, 111,68, 111,68,
1390 111,68, 111,68, 0,0, 0,0,
1391 0,0, 0,0, 0,0, 0,0,
1392 0,0, 111,68, 111,68, 111,68,
1393 111,68, 111,68, 111,68, 111,68,
1394 111,68, 111,68, 111,119, 111,68,
1395 111,68, 111,68, 111,68, 111,68,
1396 111,68, 111,68, 111,68, 111,68,
1397 111,68, 111,68, 111,68, 111,68,
1398 111,68, 111,68, 111,68, 0,0,
1399 0,0, 0,0, 0,0, 0,0,
1400 0,0, 111,68, 111,68, 111,68,
1401 111,68, 111,68, 111,68, 111,68,
1402 111,68, 111,68, 111,119, 111,68,
1403 111,68, 111,68, 111,68, 111,68,
1404 111,68, 111,68, 111,68, 111,68,
1405 111,68, 111,68, 111,68, 111,68,
1406 111,68, 111,68, 111,68, 116,68,
1407 116,68, 116,68, 116,68, 116,68,
1408 116,68, 116,68, 116,68, 116,68,
1409 116,68, 0,0, 0,0, 0,0,
1410 0,0, 0,0, 0,0, 0,0,
1411 116,68, 116,68, 116,68, 116,68,
1412 116,68, 116,68, 116,68, 116,68,
1413 116,68, 116,68, 116,68, 116,68,
1414 116,68, 116,68, 116,68, 116,68,
1415 116,68, 116,124, 116,68, 116,68,
1416 116,68, 116,68, 116,68, 116,68,
1417 116,68, 116,68, 0,0, 0,0,
1418 0,0, 0,0, 0,0, 0,0,
1419 116,68, 116,68, 116,68, 116,68,
1420 116,68, 116,68, 116,68, 116,68,
1421 116,68, 116,68, 116,68, 116,68,
1422 116,68, 116,68, 116,68, 116,68,
1423 116,68, 116,124, 116,68, 116,68,
1424 116,68, 116,68, 116,68, 116,68,
1425 116,68, 116,68, 117,68, 117,68,
1426 117,68, 117,68, 117,68, 117,68,
1427 117,68, 117,68, 117,68, 117,68,
1428 0,0, 0,0, 0,0, 0,0,
1429 0,0, 0,0, 0,0, 117,68,
1430 117,125, 117,68, 117,68, 117,68,
1431 117,68, 117,68, 117,68, 117,68,
1432 117,68, 117,68, 117,68, 117,68,
1433 117,68, 117,68, 117,68, 117,68,
1434 117,68, 117,68, 117,68, 117,68,
1435 117,68, 117,68, 117,68, 117,68,
1436 117,68, 0,0, 0,0, 0,0,
1437 0,0, 0,0, 0,0, 117,68,
1438 117,125, 117,68, 117,68, 117,68,
1439 117,68, 117,68, 117,68, 117,68,
1440 117,68, 117,68, 117,68, 117,68,
1441 117,68, 117,68, 117,68, 117,68,
1442 117,68, 117,68, 117,68, 117,68,
1443 117,68, 117,68, 117,68, 117,68,
1444 117,68, 118,68, 118,68, 118,68,
1445 118,68, 118,68, 118,68, 118,68,
1446 118,68, 118,68, 118,68, 0,0,
1447 0,0, 0,0, 0,0, 0,0,
1448 0,0, 0,0, 118,68, 118,68,
1449 118,68, 118,68, 118,68, 118,68,
1450 118,68, 118,68, 118,68, 118,68,
1451 118,68, 118,68, 118,68, 118,68,
1452 118,68, 118,68, 118,68, 118,68,
1453 118,68, 118,68, 118,126, 118,68,
1454 118,68, 118,68, 118,68, 118,68,
1455 0,0, 0,0, 0,0, 0,0,
1456 0,0, 0,0, 118,68, 118,68,
1457 118,68, 118,68, 118,68, 118,68,
1458 118,68, 118,68, 118,68, 118,68,
1459 118,68, 118,68, 118,68, 118,68,
1460 118,68, 118,68, 118,68, 118,68,
1461 118,68, 118,68, 118,126, 118,68,
1462 118,68, 118,68, 118,68, 118,68,
1463 119,68, 119,68, 119,68, 119,68,
1464 119,68, 119,68, 119,68, 119,68,
1465 119,68, 119,68, 0,0, 0,0,
1466 0,0, 0,0, 0,0, 0,0,
1467 0,0, 119,68, 119,68, 119,68,
1468 119,68, 119,127, 119,68, 119,68,
1469 119,68, 119,68, 119,68, 119,68,
1470 119,68, 119,68, 119,68, 119,68,
1471 119,68, 119,68, 119,68, 119,68,
1472 119,68, 119,68, 119,68, 119,68,
1473 119,68, 119,68, 119,68, 0,0,
1474 0,0, 0,0, 0,0, 0,0,
1475 0,0, 119,68, 119,68, 119,68,
1476 119,68, 119,127, 119,68, 119,68,
1477 119,68, 119,68, 119,68, 119,68,
1478 119,68, 119,68, 119,68, 119,68,
1479 119,68, 119,68, 119,68, 119,68,
1480 119,68, 119,68, 119,68, 119,68,
1481 119,68, 119,68, 119,68, 121,129,
1482 0,0, 121,130, 121,130, 121,130,
1483 121,130, 121,130, 121,130, 121,130,
1484 121,130, 121,130, 121,130, 123,131,
1485 0,0, 123,132, 123,132, 123,132,
1486 123,132, 123,132, 123,132, 123,132,
1487 123,132, 123,132, 123,132, 124,68,
1488 124,68, 124,68, 124,68, 124,68,
1489 124,68, 124,68, 124,68, 124,68,
1490 124,68, 0,0, 0,0, 0,0,
1491 0,0, 0,0, 0,0, 0,0,
1492 124,68, 124,68, 124,68, 124,68,
1493 124,68, 124,68, 124,68, 124,68,
1494 124,68, 124,68, 124,68, 124,68,
1495 124,68, 124,68, 124,133, 124,68,
1496 124,68, 124,68, 124,68, 124,68,
1497 124,68, 124,68, 124,68, 124,68,
1498 124,68, 124,68, 0,0, 0,0,
1499 0,0, 0,0, 0,0, 0,0,
1500 124,68, 124,68, 124,68, 124,68,
1501 124,68, 124,68, 124,68, 124,68,
1502 124,68, 124,68, 124,68, 124,68,
1503 124,68, 124,68, 124,133, 124,68,
1504 124,68, 124,68, 124,68, 124,68,
1505 124,68, 124,68, 124,68, 124,68,
1506 124,68, 124,68, 125,68, 125,68,
1507 125,68, 125,68, 125,68, 125,68,
1508 125,68, 125,68, 125,68, 125,68,
1509 0,0, 0,0, 0,0, 0,0,
1510 0,0, 0,0, 0,0, 125,68,
1511 125,68, 125,68, 125,68, 125,68,
1512 125,68, 125,68, 125,68, 125,68,
1513 125,134, 125,68, 125,68, 125,68,
1514 125,68, 125,68, 125,68, 125,68,
1515 125,68, 125,68, 125,68, 125,68,
1516 125,68, 125,68, 125,68, 125,68,
1517 125,68, 0,0, 0,0, 0,0,
1518 0,0, 0,0, 0,0, 125,68,
1519 125,68, 125,68, 125,68, 125,68,
1520 125,68, 125,68, 125,68, 125,68,
1521 125,134, 125,68, 125,68, 125,68,
1522 125,68, 125,68, 125,68, 125,68,
1523 125,68, 125,68, 125,68, 125,68,
1524 125,68, 125,68, 125,68, 125,68,
1525 125,68, 126,68, 126,68, 126,68,
1526 126,68, 126,68, 126,68, 126,68,
1527 126,68, 126,68, 126,68, 0,0,
1528 0,0, 0,0, 0,0, 0,0,
1529 0,0, 0,0, 126,68, 126,68,
1530 126,68, 126,68, 126,68, 126,68,
1531 126,68, 126,68, 126,68, 126,68,
1532 126,68, 126,68, 126,68, 126,68,
1533 126,68, 126,135, 126,68, 126,68,
1534 126,68, 126,68, 126,68, 126,68,
1535 126,68, 126,68, 126,68, 126,68,
1536 0,0, 0,0, 0,0, 0,0,
1537 0,0, 0,0, 126,68, 126,68,
1538 126,68, 126,68, 126,68, 126,68,
1539 126,68, 126,68, 126,68, 126,68,
1540 126,68, 126,68, 126,68, 126,68,
1541 126,68, 126,135, 126,68, 126,68,
1542 126,68, 126,68, 126,68, 126,68,
1543 126,68, 126,68, 126,68, 126,68,
1544 127,68, 127,68, 127,68, 127,68,
1545 127,68, 127,68, 127,68, 127,68,
1546 127,68, 127,68, 0,0, 0,0,
1547 0,0, 0,0, 0,0, 0,0,
1548 0,0, 127,68, 127,68, 127,136,
1549 127,68, 127,68, 127,68, 127,68,
1550 127,68, 127,68, 127,68, 127,68,
1551 127,68, 127,68, 127,68, 127,68,
1552 127,68, 127,68, 127,68, 127,68,
1553 127,68, 127,68, 127,68, 127,68,
1554 127,68, 127,68, 127,68, 0,0,
1555 0,0, 0,0, 0,0, 0,0,
1556 0,0, 127,68, 127,68, 127,136,
1557 127,68, 127,68, 127,68, 127,68,
1558 127,68, 127,68, 127,68, 127,68,
1559 127,68, 127,68, 127,68, 127,68,
1560 127,68, 127,68, 127,68, 127,68,
1561 127,68, 127,68, 127,68, 127,68,
1562 127,68, 127,68, 127,68, 129,138,
1563 129,138, 129,138, 129,138, 129,138,
1564 129,138, 129,138, 129,138, 129,138,
1565 129,138, 131,140, 131,140, 131,140,
1566 131,140, 131,140, 131,140, 131,140,
1567 131,140, 131,140, 131,140, 133,68,
1568 133,68, 133,68, 133,68, 133,68,
1569 133,68, 133,68, 133,68, 133,68,
1570 133,68, 0,0, 0,0, 0,0,
1571 0,0, 0,0, 0,0, 0,0,
1572 133,68, 133,68, 133,68, 133,68,
1573 133,68, 133,68, 133,68, 133,68,
1574 133,68, 133,68, 133,68, 133,68,
1575 133,68, 133,68, 133,68, 133,68,
1576 133,68, 133,68, 133,68, 133,68,
1577 133,142, 133,68, 133,68, 133,68,
1578 133,68, 133,68, 0,0, 0,0,
1579 0,0, 0,0, 0,0, 0,0,
1580 133,68, 133,68, 133,68, 133,68,
1581 133,68, 133,68, 133,68, 133,68,
1582 133,68, 133,68, 133,68, 133,68,
1583 133,68, 133,68, 133,68, 133,68,
1584 133,68, 133,68, 133,68, 133,68,
1585 133,142, 133,68, 133,68, 133,68,
1586 133,68, 133,68, 134,68, 134,68,
1587 134,68, 134,68, 134,68, 134,68,
1588 134,68, 134,68, 134,68, 134,68,
1589 0,0, 0,0, 0,0, 0,0,
1590 0,0, 0,0, 0,0, 134,68,
1591 134,68, 134,68, 134,68, 134,143,
1592 134,68, 134,68, 134,68, 134,68,
1593 134,68, 134,68, 134,68, 134,68,
1594 134,68, 134,68, 134,68, 134,68,
1595 134,68, 134,68, 134,68, 134,68,
1596 134,68, 134,68, 134,68, 134,68,
1597 134,68, 0,0, 0,0, 0,0,
1598 0,0, 0,0, 0,0, 134,68,
1599 134,68, 134,68, 134,68, 134,143,
1600 134,68, 134,68, 134,68, 134,68,
1601 134,68, 134,68, 134,68, 134,68,
1602 134,68, 134,68, 134,68, 134,68,
1603 134,68, 134,68, 134,68, 134,68,
1604 134,68, 134,68, 134,68, 134,68,
1605 134,68, 135,68, 135,68, 135,68,
1606 135,68, 135,68, 135,68, 135,68,
1607 135,68, 135,68, 135,68, 0,0,
1608 0,0, 0,0, 0,0, 0,0,
1609 0,0, 0,0, 135,68, 135,68,
1610 135,68, 135,68, 135,68, 135,68,
1611 135,68, 135,68, 135,68, 135,68,
1612 135,68, 135,68, 135,68, 135,68,
1613 135,68, 135,68, 135,68, 135,68,
1614 135,68, 135,68, 135,68, 135,68,
1615 135,68, 135,68, 135,68, 135,68,
1616 0,0, 0,0, 0,0, 0,0,
1617 0,0, 0,0, 135,68, 135,68,
1618 135,68, 135,68, 135,68, 135,68,
1619 135,68, 135,68, 135,68, 135,68,
1620 135,68, 135,68, 135,68, 135,68,
1621 135,68, 135,68, 135,68, 135,68,
1622 135,68, 135,68, 135,68, 135,68,
1623 135,68, 135,68, 135,68, 135,68,
1624 136,68, 136,68, 136,68, 136,68,
1625 136,68, 136,68, 136,68, 136,68,
1626 136,68, 136,68, 0,0, 0,0,
1627 0,0, 0,0, 0,0, 0,0,
1628 0,0, 136,68, 136,68, 136,68,
1629 136,68, 136,68, 136,68, 136,68,
1630 136,68, 136,68, 136,68, 136,68,
1631 136,68, 136,68, 136,68, 136,68,
1632 136,68, 136,68, 136,68, 136,68,
1633 136,144, 136,68, 136,68, 136,68,
1634 136,68, 136,68, 136,68, 0,0,
1635 0,0, 0,0, 0,0, 0,0,
1636 0,0, 136,68, 136,68, 136,68,
1637 136,68, 136,68, 136,68, 136,68,
1638 136,68, 136,68, 136,68, 136,68,
1639 136,68, 136,68, 136,68, 136,68,
1640 136,68, 136,68, 136,68, 136,68,
1641 136,144, 136,68, 136,68, 136,68,
1642 136,68, 136,68, 136,68, 137,145,
1643 137,145, 137,145, 137,145, 137,145,
1644 137,145, 137,145, 137,145, 137,145,
1645 137,145, 139,120, 0,0, 139,120,
1646 0,0, 0,0, 139,139, 139,139,
1647 139,139, 139,139, 139,139, 139,139,
1648 139,139, 139,139, 139,139, 139,139,
1649 141,141, 141,141, 141,141, 141,141,
1650 141,141, 141,141, 141,141, 141,141,
1651 141,141, 141,141, 0,0, 0,0,
1652 0,0, 0,0, 0,0, 0,0,
1653 142,68, 142,68, 142,68, 142,68,
1654 142,68, 142,68, 142,68, 142,68,
1655 142,68, 142,68, 0,0, 0,0,
1656 0,0, 0,0, 0,0, 0,0,
1657 139,122, 142,68, 142,68, 142,68,
1658 142,68, 142,68, 142,68, 142,68,
1659 142,68, 142,68, 142,68, 142,68,
1660 142,68, 142,68, 142,68, 142,68,
1661 142,146, 142,68, 142,68, 142,68,
1662 142,68, 142,68, 142,68, 142,68,
1663 142,68, 142,68, 142,68, 0,0,
1664 0,0, 0,0, 0,0, 0,0,
1665 0,0, 142,68, 142,68, 142,68,
1666 142,68, 142,68, 142,68, 142,68,
1667 142,68, 142,68, 142,68, 142,68,
1668 142,68, 142,68, 142,68, 142,68,
1669 142,146, 142,68, 142,68, 142,68,
1670 142,68, 142,68, 142,68, 142,68,
1671 142,68, 142,68, 142,68, 143,68,
1672 143,68, 143,68, 143,68, 143,68,
1673 143,68, 143,68, 143,68, 143,68,
1674 143,68, 0,0, 0,0, 0,0,
1675 0,0, 0,0, 0,0, 0,0,
1676 143,68, 143,68, 143,147, 143,68,
1677 143,68, 143,68, 143,68, 143,68,
1678 143,68, 143,68, 143,68, 143,68,
1679 143,68, 143,68, 143,68, 143,68,
1680 143,68, 143,68, 143,68, 143,68,
1681 143,68, 143,68, 143,68, 143,68,
1682 143,68, 143,68, 0,0, 0,0,
1683 0,0, 0,0, 0,0, 0,0,
1684 143,68, 143,68, 143,147, 143,68,
1685 143,68, 143,68, 143,68, 143,68,
1686 143,68, 143,68, 143,68, 143,68,
1687 143,68, 143,68, 143,68, 143,68,
1688 143,68, 143,68, 143,68, 143,68,
1689 143,68, 143,68, 143,68, 143,68,
1690 143,68, 143,68, 144,68, 144,68,
1691 144,68, 144,68, 144,68, 144,68,
1692 144,68, 144,68, 144,68, 144,68,
1693 0,0, 0,0, 0,0, 0,0,
1694 0,0, 0,0, 0,0, 144,68,
1695 144,68, 144,68, 144,68, 144,68,
1696 144,68, 144,68, 144,68, 144,68,
1697 144,68, 144,68, 144,68, 144,68,
1698 144,68, 144,68, 144,68, 144,68,
1699 144,68, 144,68, 144,68, 144,68,
1700 144,68, 144,68, 144,68, 144,68,
1701 144,68, 0,0, 0,0, 0,0,
1702 0,0, 0,0, 0,0, 144,68,
1703 144,68, 144,68, 144,68, 144,68,
1704 144,68, 144,68, 144,68, 144,68,
1705 144,68, 144,68, 144,68, 144,68,
1706 144,68, 144,68, 144,68, 144,68,
1707 144,68, 144,68, 144,68, 144,68,
1708 144,68, 144,68, 144,68, 144,68,
1709 144,68, 146,68, 146,68, 146,68,
1710 146,68, 146,68, 146,68, 146,68,
1711 146,68, 146,68, 146,68, 0,0,
1712 0,0, 0,0, 0,0, 0,0,
1713 0,0, 0,0, 146,68, 146,68,
1714 146,68, 146,68, 146,68, 146,68,
1715 146,68, 146,68, 146,68, 146,68,
1716 146,68, 146,68, 146,68, 146,68,
1717 146,68, 146,68, 146,68, 146,68,
1718 146,68, 146,68, 146,68, 146,68,
1719 146,68, 146,68, 146,68, 146,68,
1720 0,0, 0,0, 0,0, 0,0,
1721 0,0, 0,0, 146,68, 146,68,
1722 146,68, 146,68, 146,68, 146,68,
1723 146,68, 146,68, 146,68, 146,68,
1724 146,68, 146,68, 146,68, 146,68,
1725 146,68, 146,68, 146,68, 146,68,
1726 146,68, 146,68, 146,68, 146,68,
1727 146,68, 146,68, 146,68, 146,68,
1728 147,68, 147,68, 147,68, 147,68,
1729 147,68, 147,68, 147,68, 147,68,
1730 147,68, 147,68, 0,0, 0,0,
1731 0,0, 0,0, 0,0, 0,0,
1732 0,0, 147,68, 147,68, 147,68,
1733 147,68, 147,68, 147,68, 147,68,
1734 147,68, 147,68, 147,68, 147,68,
1735 147,68, 147,68, 147,68, 147,68,
1736 147,68, 147,68, 147,68, 147,68,
1737 147,148, 147,68, 147,68, 147,68,
1738 147,68, 147,68, 147,68, 0,0,
1739 0,0, 0,0, 0,0, 0,0,
1740 0,0, 147,68, 147,68, 147,68,
1741 147,68, 147,68, 147,68, 147,68,
1742 147,68, 147,68, 147,68, 147,68,
1743 147,68, 147,68, 147,68, 147,68,
1744 147,68, 147,68, 147,68, 147,68,
1745 147,148, 147,68, 147,68, 147,68,
1746 147,68, 147,68, 147,68, 148,68,
1747 148,68, 148,68, 148,68, 148,68,
1748 148,68, 148,68, 148,68, 148,68,
1749 148,68, 0,0, 0,0, 0,0,
1750 0,0, 0,0, 0,0, 0,0,
1751 148,68, 148,68, 148,68, 148,68,
1752 148,68, 148,68, 148,68, 148,68,
1753 148,68, 148,68, 148,68, 148,68,
1754 148,68, 148,68, 148,68, 148,68,
1755 148,68, 148,68, 148,68, 148,68,
1756 148,68, 148,68, 148,68, 148,68,
1757 148,68, 148,68, 0,0, 0,0,
1758 0,0, 0,0, 0,0, 0,0,
1759 148,68, 148,68, 148,68, 148,68,
1760 148,68, 148,68, 148,68, 148,68,
1761 148,68, 148,68, 148,68, 148,68,
1762 148,68, 148,68, 148,68, 148,68,
1763 148,68, 148,68, 148,68, 148,68,
1764 148,68, 148,68, 148,68, 148,68,
1765 148,68, 148,68, 0,0, 0,0,
1766 0,0};
1767 struct yysvf yysvec[] = {
1768 0, 0, 0,
1769 yycrank+-1, 0, 0,
1770 yycrank+-56, yysvec+1, 0,
1771 yycrank+0, 0, yyvstop+1,
1772 yycrank+0, 0, yyvstop+3,
1773 yycrank+0, 0, yyvstop+6,
1774 yycrank+0, 0, yyvstop+8,
1775 yycrank+0, 0, yyvstop+11,
1776 yycrank+-98, 0, yyvstop+14,
1777 yycrank+0, 0, yyvstop+16,
1778 yycrank+0, 0, yyvstop+19,
1779 yycrank+4, 0, yyvstop+22,
1780 yycrank+103, 0, yyvstop+25,
1781 yycrank+0, 0, yyvstop+27,
1782 yycrank+138, 0, yyvstop+30,
1783 yycrank+8, 0, yyvstop+32,
1784 yycrank+172, 0, yyvstop+35,
1785 yycrank+0, 0, yyvstop+39,
1786 yycrank+0, 0, yyvstop+42,
1787 yycrank+0, 0, yyvstop+45,
1788 yycrank+185, 0, yyvstop+48,
1789 yycrank+8, yysvec+20, yyvstop+51,
1790 yycrank+4, yysvec+20, yyvstop+54,
1791 yycrank+6, yysvec+20, yyvstop+57,
1792 yycrank+4, yysvec+20, yyvstop+60,
1793 yycrank+23, yysvec+20, yyvstop+63,
1794 yycrank+0, 0, yyvstop+66,
1795 yycrank+0, yysvec+20, yyvstop+69,
1796 yycrank+0, 0, yyvstop+73,
1797 yycrank+0, 0, yyvstop+76,
1798 yycrank+5, 0, yyvstop+79,
1799 yycrank+11, 0, yyvstop+82,
1800 yycrank+13, yysvec+20, yyvstop+85,
1801 yycrank+-2, yysvec+8, 0,
1802 yycrank+0, 0, yyvstop+88,
1803 yycrank+0, 0, yyvstop+90,
1804 yycrank+79, 0, 0,
1805 yycrank+11, yysvec+12, yyvstop+92,
1806 yycrank+0, 0, yyvstop+95,
1807 yycrank+37, yysvec+36, yyvstop+97,
1808 yycrank+-307, 0, yyvstop+99,
1809 yycrank+345, 0, 0,
1810 yycrank+148, 0, 0,
1811 yycrank+282, 0, yyvstop+101,
1812 yycrank+308, 0, 0,
1813 yycrank+0, yysvec+16, yyvstop+103,
1814 yycrank+378, 0, 0,
1815 yycrank+400, 0, yyvstop+106,
1816 yycrank+0, yysvec+20, yyvstop+108,
1817 yycrank+475, yysvec+20, 0,
1818 yycrank+40, yysvec+20, yyvstop+110,
1819 yycrank+44, yysvec+20, yyvstop+112,
1820 yycrank+34, yysvec+20, yyvstop+114,
1821 yycrank+50, 0, 0,
1822 yycrank+68, yysvec+20, yyvstop+116,
1823 yycrank+0, yysvec+30, 0,
1824 yycrank+12, 0, 0,
1825 yycrank+-597, 0, yyvstop+118,
1826 yycrank+143, yysvec+20, yyvstop+121,
1827 yycrank+565, 0, 0,
1828 yycrank+635, 0, 0,
1829 yycrank+20, yysvec+60, 0,
1830 yycrank+56, yysvec+42, yyvstop+123,
1831 yycrank+0, 0, yyvstop+125,
1832 yycrank+577, 0, yyvstop+127,
1833 yycrank+13, yysvec+44, yyvstop+129,
1834 yycrank+326, yysvec+46, yyvstop+131,
1835 yycrank+673, yysvec+20, yyvstop+133,
1836 yycrank+748, yysvec+20, yyvstop+135,
1837 yycrank+823, yysvec+20, 0,
1838 yycrank+139, yysvec+20, yyvstop+137,
1839 yycrank+27, yysvec+20, yyvstop+139,
1840 yycrank+128, yysvec+20, yyvstop+141,
1841 yycrank+0, 0, yyvstop+143,
1842 yycrank+145, yysvec+20, yyvstop+145,
1843 yycrank+-945, 0, yyvstop+147,
1844 yycrank+44, yysvec+20, yyvstop+149,
1845 yycrank+599, 0, 0,
1846 yycrank+910, 0, yyvstop+152,
1847 yycrank+0, 0, yyvstop+154,
1848 yycrank+920, 0, 0,
1849 yycrank+946, 0, 0,
1850 yycrank+983, 0, 0,
1851 yycrank+993, 0, 0,
1852 yycrank+1003, 0, 0,
1853 yycrank+1016, 0, 0,
1854 yycrank+0, 0, yyvstop+156,
1855 yycrank+137, yysvec+20, yyvstop+158,
1856 yycrank+1026, yysvec+20, 0,
1857 yycrank+169, yysvec+20, yyvstop+160,
1858 yycrank+210, yysvec+20, yyvstop+162,
1859 yycrank+0, yysvec+77, yyvstop+164,
1860 yycrank+21, yysvec+80, yyvstop+166,
1861 yycrank+26, yysvec+81, 0,
1862 yycrank+29, yysvec+82, 0,
1863 yycrank+31, yysvec+83, yyvstop+168,
1864 yycrank+34, yysvec+84, yyvstop+170,
1865 yycrank+1101, 0, 0,
1866 yycrank+233, yysvec+85, yyvstop+172,
1867 yycrank+53, yysvec+20, yyvstop+174,
1868 yycrank+1111, yysvec+20, yyvstop+176,
1869 yycrank+1186, yysvec+20, yyvstop+178,
1870 yycrank+0, yysvec+20, yyvstop+180,
1871 yycrank+226, yysvec+20, yyvstop+183,
1872 yycrank+1261, 0, 0,
1873 yycrank+1271, 0, 0,
1874 yycrank+1281, 0, 0,
1875 yycrank+277, yysvec+97, yyvstop+185,
1876 yycrank+1296, 0, yyvstop+187,
1877 yycrank+1322, yysvec+20, 0,
1878 yycrank+1397, yysvec+20, yyvstop+189,
1879 yycrank+1472, yysvec+20, yyvstop+191,
1880 yycrank+0, yysvec+20, yyvstop+193,
1881 yycrank+616, yysvec+104, yyvstop+196,
1882 yycrank+35, yysvec+105, yyvstop+198,
1883 yycrank+0, yysvec+106, yyvstop+200,
1884 yycrank+1547, yysvec+20, yyvstop+202,
1885 yycrank+1622, yysvec+20, yyvstop+204,
1886 yycrank+1697, yysvec+20, yyvstop+206,
1887 yycrank+1772, yysvec+20, yyvstop+208,
1888 yycrank+1306, 0, 0,
1889 yycrank+1849, 0, 0,
1890 yycrank+0, 0, yyvstop+210,
1891 yycrank+1861, 0, 0,
1892 yycrank+1871, yysvec+20, yyvstop+212,
1893 yycrank+1946, yysvec+20, yyvstop+214,
1894 yycrank+2021, yysvec+20, yyvstop+216,
1895 yycrank+2096, yysvec+20, yyvstop+218,
1896 yycrank+36, yysvec+120, yyvstop+220,
1897 yycrank+2171, 0, 0,
1898 yycrank+374, yysvec+121, yyvstop+222,
1899 yycrank+2181, 0, 0,
1900 yycrank+58, yysvec+123, yyvstop+224,
1901 yycrank+2191, yysvec+20, yyvstop+226,
1902 yycrank+2266, yysvec+20, yyvstop+228,
1903 yycrank+2341, yysvec+20, yyvstop+230,
1904 yycrank+2416, yysvec+20, yyvstop+233,
1905 yycrank+2491, 0, 0,
1906 yycrank+448, yysvec+129, yyvstop+235,
1907 yycrank+2506, 0, yyvstop+237,
1908 yycrank+0, yysvec+131, yyvstop+239,
1909 yycrank+2516, 0, yyvstop+241,
1910 yycrank+2532, yysvec+20, yyvstop+243,
1911 yycrank+2607, yysvec+20, yyvstop+245,
1912 yycrank+2682, yysvec+20, yyvstop+247,
1913 yycrank+0, yysvec+137, yyvstop+250,
1914 yycrank+2757, yysvec+20, yyvstop+252,
1915 yycrank+2832, yysvec+20, yyvstop+255,
1916 yycrank+2907, yysvec+20, yyvstop+257,
1917 0, 0, 0};
1918 struct yywork *yytop = yycrank+3029;
1919 struct yysvf *yybgin = yysvec+1;
1920 char yymatch[] = {
1921 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1922 01 ,011 ,012 ,01 ,014 ,014 ,01 ,01 ,
1923 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1924 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1925 011 ,01 ,01 ,01 ,01 ,01 ,01 ,047 ,
1926 01 ,01 ,01 ,'+' ,01 ,'+' ,01 ,01 ,
1927 '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
1928 '0' ,'0' ,01 ,014 ,01 ,01 ,01 ,01 ,
1929 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' ,
1930 'H' ,'I' ,'J' ,'H' ,'H' ,'H' ,'N' ,'O' ,
1931 'P' ,'H' ,'R' ,'H' ,'T' ,'U' ,'H' ,'H' ,
1932 'H' ,'H' ,'H' ,01 ,01 ,01 ,01 ,01 ,
1933 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' ,
1934 'H' ,'I' ,'J' ,'H' ,'H' ,'H' ,'N' ,'O' ,
1935 'P' ,'H' ,'R' ,'H' ,'T' ,'U' ,'v' ,'H' ,
1936 'H' ,'H' ,'H' ,01 ,01 ,01 ,01 ,01 ,
1937 0};
1938 char yyextra[] = {
1939 0,0,0,0,0,0,0,0,
1940 0,0,0,1,0,0,0,0,
1941 0,0,0,0,0,0,0,0,
1942 0,0,0,0,0,0,0,0,
1943 0,0,0,0,0,0,0,0,
1944 0};
1945 /*
1946 #ifndef lint
1947 static char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /# from S5R2 1.2 #/
1948 #endif
1949 */
1950 
1951 int yylineno =1;
1952 # define YYU(x) x
1953 # define NLSTATE yyprevious=YYNEWLINE
1957 char *yysptr = yysbuf;
1958 int *yyfnd;
1959 extern struct yysvf *yyestate;
1962  register struct yysvf *yystate, **lsp;
1963  register struct yywork *yyt;
1964  struct yysvf *yyz;
1965  int yych, yyfirst;
1966  struct yywork *yyr;
1967 # ifdef LEXDEBUG
1968  int debug;
1969 # endif
1970  char *yylastch;
1971  /* start off machines */
1972 # ifdef LEXDEBUG
1973  debug = 0;
1974 # endif
1975  yyfirst=1;
1976  if (!yymorfg)
1977  yylastch = yytext;
1978  else {
1979  yymorfg=0;
1980  yylastch = yytext+yyleng;
1981  }
1982  for(;;){
1983  lsp = yylstate;
1984  yyestate = yystate = yybgin;
1985  if (yyprevious==YYNEWLINE) yystate++;
1986  for (;;){
1987 # ifdef LEXDEBUG
1988  if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
1989 # endif
1990  yyt = yystate->yystoff;
1991  if(yyt == yycrank && !yyfirst){ /* may not be any transitions */
1992  yyz = yystate->yyother;
1993  if(yyz == 0)break;
1994  if(yyz->yystoff == yycrank)break;
1995  }
1996  *yylastch++ = yych = input();
1997  yyfirst=0;
1998  tryagain:
1999 # ifdef LEXDEBUG
2000  if(debug){
2001  fprintf(yyout,"char ");
2002  allprint(yych);
2003  putchar('\n');
2004  }
2005 # endif
2006  yyr = yyt;
2007  /*if ( (int)yyt > (int)yycrank){*/
2008  if ( yyt > yycrank){
2009  yyt = yyr + yych;
2010  if (yyt <= yytop && yyt->verify+yysvec == yystate){
2011  if(yyt->advance+yysvec == YYLERR) /* error transitions */
2012  {unput(*--yylastch);break;}
2013  *lsp++ = yystate = yyt->advance+yysvec;
2014  goto contin;
2015  }
2016  }
2017 # ifdef YYOPTIM
2018  /*else if((int)yyt < (int)yycrank) { r < yycrank */
2019  else if(yyt < yycrank) { /* r < yycrank */
2020  yyt = yyr = yycrank+(yycrank-yyt);
2021 # ifdef LEXDEBUG
2022  if(debug)fprintf(yyout,"compressed state\n");
2023 # endif
2024  yyt = yyt + yych;
2025  if(yyt <= yytop && yyt->verify+yysvec == yystate){
2026  if(yyt->advance+yysvec == YYLERR) /* error transitions */
2027  {unput(*--yylastch);break;}
2028  *lsp++ = yystate = yyt->advance+yysvec;
2029  goto contin;
2030  }
2031  yyt = yyr + YYU(yymatch[yych]);
2032 # ifdef LEXDEBUG
2033  if(debug){
2034  fprintf(yyout,"try fall back character ");
2035  allprint(YYU(yymatch[yych]));
2036  putchar('\n');
2037  }
2038 # endif
2039  if(yyt <= yytop && yyt->verify+yysvec == yystate){
2040  if(yyt->advance+yysvec == YYLERR) /* error transition */
2041  {unput(*--yylastch);break;}
2042  *lsp++ = yystate = yyt->advance+yysvec;
2043  goto contin;
2044  }
2045  }
2046  if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
2047 # ifdef LEXDEBUG
2048  if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
2049 # endif
2050  goto tryagain;
2051  }
2052 # endif
2053  else
2054  {unput(*--yylastch);break;}
2055  contin:
2056 # ifdef LEXDEBUG
2057  if(debug){
2058  fprintf(yyout,"state %d char ",yystate-yysvec-1);
2059  allprint(yych);
2060  putchar('\n');
2061  }
2062 # endif
2063  ;
2064  }
2065 # ifdef LEXDEBUG
2066  if(debug){
2067  fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
2068  allprint(yych);
2069  putchar('\n');
2070  }
2071 # endif
2072  while (lsp-- > yylstate){
2073  *yylastch-- = 0;
2074  if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
2075  yyolsp = lsp;
2076  if(yyextra[*yyfnd]){ /* must backup */
2077  while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
2078  lsp--;
2079  unput(*yylastch--);
2080  }
2081  }
2082  yyprevious = YYU(*yylastch);
2083  yylsp = lsp;
2084  yyleng = yylastch-yytext+1;
2085  yytext[yyleng] = 0;
2086 # ifdef LEXDEBUG
2087  if(debug){
2088  fprintf(yyout,"\nmatch ");
2089  sprint(yytext);
2090  fprintf(yyout," action %d\n",*yyfnd);
2091  }
2092 # endif
2093  return(*yyfnd++);
2094  }
2095  unput(*yylastch);
2096  }
2097  if (yytext[0] == 0 /* && feof(yyin) */)
2098  {
2099  yysptr=yysbuf;
2100  return(0);
2101  }
2102  yyprevious = yytext[0] = input();
2103  if (yyprevious>0)
2104  output(yyprevious);
2105  yylastch=yytext;
2106 # ifdef LEXDEBUG
2107  if(debug)putchar('\n');
2108 # endif
2109  }
2110  }
2112  int *p,
2113  int m)
2114 {
2115 if (p==0) return(0);
2116 while (*p)
2117  {
2118  if (*p++ == m)
2119  return(1);
2120  }
2121 return(0);
2122 }
2123  /* the following are only used in the lex library */
2125  return(input());
2126  }
2127 void yyoutput(int c)
2128  {
2129  output(c);
2130  }
2131 void yyunput(int c)
2132  {
2133  unput(c);
2134  }
YYSTYPE yylval
Definition: parser.c:87
VALUE_DATA ODLConvertSymbol(char vtext[], int vlength, int vflag)
Definition: cvtvalue.c:298
#define _date
Definition: odlparse.h:51
char * ODLStoreString(char c)
Definition: lexan.c:567
VALUE_DATA ODLConvertDate(char vtext[], int vlength)
Definition: cvtvalue.c:422
#define unput(c)
Definition: lexan.c:12
#define _GROUP
Definition: odlparse.h:35
#define _units_opening
Definition: odlparse.h:42
#define YYLMAX
Definition: lexan.c:9
#define _integer
Definition: odlparse.h:54
VALUE_DATA ODLConvertTime(char vtext[], int vlength)
Definition: cvtvalue.c:476
int yyprevious
Definition: lexan.c:1960
int yymorfg
Definition: lexan.c:17
YYTYPE verify
Definition: lexan.c:1007
yylook()
Definition: lexan.c:1961
char * ODL_buffer
Definition: lexan.c:93
int * yyfnd
Definition: lexan.c:1958
#define MESSAGE3
Definition: lexan.c:100
struct yysvf ** yyolsp
Definition: lexan.c:1955
struct yysvf * yybgin
Definition: lexan.c:1919
void ODLKillString()
Definition: lexan.c:621
char yyextra[]
Definition: lexan.c:1938
struct Value_Data item
Definition: odlparse.h:29
char yysbuf[]
Definition: lexan.c:1956
#define YYNEWLINE
Definition: lexan.c:130
char * yysptr
Definition: lexan.c:1957
#define _divide_operator
Definition: odlparse.h:48
yywrap()
Definition: lexan.c:353
struct yywork * yytop
Definition: lexan.c:1918
#define input()
Definition: lexan.c:11
long ODL_buf_size
Definition: lexan.c:91
#define _multiply_operator
Definition: odlparse.h:47
#define YYU(x)
Definition: lexan.c:1952
#define _OBJECT
Definition: odlparse.h:33
FILE * yyin
Definition: lexan.c:20
VALUE_DATA ODLConvertReal(char vtext[], int vlength)
Definition: cvtvalue.c:208
yylex()
Definition: lexan.c:131
#define _sequence_closing
Definition: odlparse.h:39
#define MESSAGE4
Definition: lexan.c:101
HDFFCLIBAPI intf intf _fcd string
#define _date_time
Definition: odlparse.h:52
int yylineno
Definition: lexan.c:1951
#define _date_timeV0
Definition: odlparse.h:53
Definition: lexan.c:1007
#define _real
Definition: odlparse.h:56
#define MESSAGE1
Definition: lexan.c:98
void yyoutput(int c)
Definition: lexan.c:2127
#define _symbol
Definition: odlparse.h:57
char * yyGetStringToken()
Definition: lexan.c:383
#define _point_operator
Definition: odlparse.h:45
#define ODL_BUFF_INCREMENT
Definition: lexan.c:88
void yyGetComment()
Definition: lexan.c:496
#define MESSAGE2
Definition: lexan.c:99
char yymatch[]
Definition: lexan.c:1920
int yytchar
Definition: lexan.c:19
#define _set_closing
Definition: odlparse.h:41
int yyback(int *p, int m)
Definition: lexan.c:2111
#define _list_separator
Definition: odlparse.h:44
struct yysvf * yyestate
Definition: lexan.c:26
Definition: lexan.c:22
char yytext[]
Definition: lexan.c:1954
VALUE_DATA ODLConvertInteger(char vtext[], int vlength)
Definition: cvtvalue.c:86
yyinput()
Definition: lexan.c:2124
#define _range_operator
Definition: odlparse.h:50
YYTYPE advance
Definition: lexan.c:1007
#define _units_closing
Definition: odlparse.h:43
int ODL_buf_pos
Definition: lexan.c:90
void yyunput(int c)
Definition: lexan.c:2131
#define _END_GROUP
Definition: odlparse.h:36
#define _name
Definition: odlparse.h:55
char ODLPeekString(int pos)
Definition: lexan.c:612
HDFFCLIBAPI _fcd intf intf intf * il
#define _END_OBJECT
Definition: odlparse.h:34
#define YYTYPE
Definition: lexan.c:1006
char * temp_buf
Definition: lexan.c:92
struct yysvf ** yylsp
Definition: lexan.c:1955
int yyvstop[]
Definition: lexan.c:633
int ODLStringLength()
Definition: lexan.c:629
int nc
Definition: lexan.c:84
#define _assignment_operator
Definition: odlparse.h:46
int * yystops
Definition: lexan.c:25
#define _text_string
Definition: odlparse.h:58
#define YYLERR
Definition: lexan.c:6
VALUE_DATA ODLConvertDateTime(char vtext[], int vlength)
Definition: cvtvalue.c:527
struct yysvf yysvec[]
Definition: lexan.c:1767
struct yysvf * yylstate[YYLMAX]
Definition: lexan.c:1955
static int yystate
Definition: parser.c:395
void ODLPrintWarning()
char ODLBackupString()
Definition: lexan.c:601
#define _exponentiate_operator
Definition: odlparse.h:49
FILE * yyout
Definition: lexan.c:20
VALUE_DATA ODLConvertString(char vtext[], int vlength)
Definition: cvtvalue.c:365
#define _time
Definition: odlparse.h:59
struct yywork * yystoff
Definition: lexan.c:23
int yyleng
Definition: lexan.c:16
#define _sequence_opening
Definition: odlparse.h:38
#define _set_opening
Definition: odlparse.h:40
char * ODLcurrent_comment
Definition: parsact.c:59
#define _END
Definition: odlparse.h:37
#define output(c)
Definition: lexan.c:10
void ODLNewString()
Definition: lexan.c:589
struct yysvf * yyother
Definition: lexan.c:24
struct yywork yycrank[]

MISR Toolkit - Copyright © 2005 - 2020 Jet Propulsion Laboratory
Generated on Fri Jun 19 2020 22:49:51