home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / devel / eiffel / eiffel_p.z / eiffel_p / ep / ParserSIG.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-09  |  385.0 KB  |  10,721 lines

  1. # include    "ParserSIG.h"
  2. # include    "Errors.h"
  3.  
  4. # define    xxbool    char
  5. # define    xxtrue    1
  6. # define    xxfalse    0
  7. # define    xxEof    0
  8.  
  9. typedef struct xxsUnion {
  10.       struct xxsUnion *    xxGlobalRecoverySet;
  11.       unsigned short    xxLocalRecoverySet;
  12.     } xxtUnion, * xxtUnionPtr;
  13. typedef    long    xxtSet [4];
  14.  
  15. ParserSIG_tParsAttribute    ParserSIG_ParsAttribute;
  16.  
  17. static short    xxToken;
  18. static int    xxErrorCount;
  19. static xxbool    xxIsInitialized = xxfalse, xxIsRepairMode = xxfalse;
  20. static long    xxHorizontalSet [] [4] = {
  21.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  22.  },
  23.   { 0x00000000L, 0x00220402L, 0x00000000L, 0x00000000L,
  24.  },
  25.   { 0x00001000L, 0x00321442L, 0x90400000L, 0x00000000L,
  26.  },
  27.   { 0x00001000L, 0x00321440L, 0x90400000L, 0x00000000L,
  28.  },
  29.   { 0x00001000L, 0x00101040L, 0x90400000L, 0x00000000L,
  30.  },
  31.   { 0x00000000L, 0x00101040L, 0x90400000L, 0x00000000L,
  32.  },
  33.   { 0x00000000L, 0x00101040L, 0x90000000L, 0x00000000L,
  34.  },
  35.   { 0x00000000L, 0x00101040L, 0x10000000L, 0x00000000L,
  36.  },
  37.   { 0x00000000L, 0x00001040L, 0x10000000L, 0x00000000L,
  38.  },
  39.   { 0x00000000L, 0x00001000L, 0x10000000L, 0x00000000L,
  40.  },
  41.   { 0x00000000L, 0x00001000L, 0x00000000L, 0x00000000L,
  42.  },
  43.   { 0x7C000006L, 0x00000082L, 0x00000020L, 0x00200000L,
  44.  },
  45.   { 0x7D000006L, 0x00000080L, 0x00000020L, 0x00200000L,
  46.  },
  47.   { 0x01000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  48.  },
  49.   { 0x00C00000L, 0x00000000L, 0x00000000L, 0x00000000L,
  50.  },
  51.   { 0x7C400006L, 0x00000080L, 0x00000020L, 0x00200000L,
  52.  },
  53.   { 0x00800000L, 0x00000000L, 0x00000000L, 0x00000000L,
  54.  },
  55.   { 0x7C800006L, 0x00000080L, 0x00000020L, 0x00200000L,
  56.  },
  57.   { 0x7C000006L, 0x00000080L, 0x00000020L, 0x00200000L,
  58.  },
  59.   { 0x00000000L, 0x01A28000L, 0x20820100L, 0x00200000L,
  60.  },
  61.   { 0x00000000L, 0x01A08000L, 0x20820100L, 0x00200000L,
  62.  },
  63.   { 0x00000000L, 0x01A08400L, 0x20820100L, 0x00200000L,
  64.  },
  65.   { 0x00000000L, 0x00220400L, 0x00000000L, 0x00000000L,
  66.  },
  67.   { 0x04000000L, 0x00000000L, 0x00400000L, 0x00000000L,
  68.  },
  69.   { 0x04000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  70.  },
  71.   { 0x00000400L, 0x00000051L, 0x00040000L, 0x00200000L,
  72.  },
  73.   { 0x00000000L, 0x00000040L, 0x00000000L, 0x00000000L,
  74.  },
  75.   { 0x00000400L, 0x00000011L, 0x00040000L, 0x00200000L,
  76.  },
  77.   { 0x00000000L, 0x00000011L, 0x00040000L, 0x00200000L,
  78.  },
  79.   { 0x01000000L, 0x00000011L, 0x00040000L, 0x00200000L,
  80.  },
  81.   { 0x00404000L, 0x00000000L, 0x08000000L, 0x00000000L,
  82.  },
  83.   { 0x00400000L, 0x00000000L, 0x08000000L, 0x00000000L,
  84.  },
  85.   { 0x00000000L, 0x00000000L, 0x08000000L, 0x00000000L,
  86.  },
  87.   { 0x7C000006L, 0x00030180L, 0x0A504028L, 0x00000000L,
  88.  },
  89.   { 0x7C000006L, 0x00030180L, 0x02504028L, 0x00000000L,
  90.  },
  91.   { 0x00800000L, 0x00000011L, 0x00040000L, 0x00200000L,
  92.  },
  93.   { 0x00000000L, 0x00000001L, 0x00040000L, 0x00200000L,
  94.  },
  95.   { 0x02000006L, 0x00000000L, 0x00040000L, 0x00400000L,
  96.  },
  97.   { 0x02000006L, 0x48000005L, 0x00080000L, 0xFF800000L,
  98.  },
  99.   { 0x02000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  100.  },
  101.   { 0x02000006L, 0x00000000L, 0x00000000L, 0x00400000L,
  102.  },
  103.   { 0x02000006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  104.  },
  105.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x00400000L,
  106.  },
  107.   { 0x00000004L, 0x00000000L, 0x00000000L, 0x00000000L,
  108.  },
  109.   { 0x00000002L, 0x00000000L, 0x00000000L, 0x00000000L,
  110.  },
  111.   { 0x00000006L, 0x00000000L, 0x00000000L, 0x00400000L,
  112.  },
  113.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x01000000L,
  114.  },
  115.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x02000000L,
  116.  },
  117.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x00800000L,
  118.  },
  119.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x20000000L,
  120.  },
  121.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x10000000L,
  122.  },
  123.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x08000000L,
  124.  },
  125.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x04000000L,
  126.  },
  127.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x40000000L,
  128.  },
  129.   { 0x00000000L, 0x40000000L, 0x00000000L, 0x00000000L,
  130.  },
  131.   { 0x00000000L, 0x08000000L, 0x00000040L, 0x00000000L,
  132.  },
  133.   { 0x00000000L, 0x00000000L, 0x00000040L, 0x00000000L,
  134.  },
  135.   { 0x00000000L, 0x00004000L, 0x00080000L, 0x00000000L,
  136.  },
  137.   { 0x00000000L, 0x00004000L, 0x00000000L, 0x00000000L,
  138.  },
  139.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x80000000L,
  140.  },
  141.   { 0x00000000L, 0x00000004L, 0x00000000L, 0x00000000L,
  142.  },
  143.   { 0x00000006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  144.  },
  145.   { 0x00000000L, 0x00000400L, 0x80000000L, 0x00200000L,
  146.  },
  147.   { 0x00000000L, 0x00000400L, 0x00000000L, 0x00200000L,
  148.  },
  149.   { 0x01000000L, 0x00000400L, 0x00000000L, 0x00200000L,
  150.  },
  151.   { 0x00000000L, 0x00001200L, 0x00018410L, 0x00000000L,
  152.  },
  153.   { 0x00000000L, 0x00001200L, 0x00010410L, 0x00000000L,
  154.  },
  155.   { 0x00000000L, 0x00001000L, 0x00010410L, 0x00000000L,
  156.  },
  157.   { 0x00000000L, 0x00001000L, 0x00010400L, 0x00000000L,
  158.  },
  159.   { 0x00000000L, 0x00001000L, 0x00000400L, 0x00000000L,
  160.  },
  161.   { 0x00000000L, 0x00000001L, 0x00048000L, 0x00200000L,
  162.  },
  163.   { 0x00800000L, 0x00000001L, 0x00040000L, 0x00200000L,
  164.  },
  165.   { 0x00000000L, 0x04000001L, 0x00040000L, 0x00200000L,
  166.  },
  167.   { 0x00000600L, 0x01808000L, 0x20820100L, 0x00200000L,
  168.  },
  169.   { 0x00000200L, 0x00000000L, 0x00000000L, 0x00000000L,
  170.  },
  171.   { 0x00000000L, 0x01808000L, 0x20820100L, 0x00200000L,
  172.  },
  173.   { 0x00800000L, 0x01808000L, 0x20820100L, 0x00200000L,
  174.  },
  175.   { 0x00000400L, 0x00000200L, 0x00000000L, 0x00000000L,
  176.  },
  177.   { 0x00000400L, 0x00000000L, 0x00000000L, 0x00000000L,
  178.  },
  179.   { 0x01000400L, 0x00000000L, 0x00000000L, 0x00000000L,
  180.  },
  181.   { 0x00000000L, 0x10000001L, 0x00040000L, 0x00200000L,
  182.  },
  183.   { 0x00000000L, 0x10000000L, 0x00000000L, 0x00000000L,
  184.  },
  185.   { 0x00006000L, 0x00000000L, 0x00000000L, 0x00200000L,
  186.  },
  187.   { 0x00002000L, 0x00000000L, 0x00000000L, 0x00000000L,
  188.  },
  189.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x00200000L,
  190.  },
  191.   { 0x01800000L, 0x00000000L, 0x00000000L, 0x00200000L,
  192.  },
  193.   { 0x01000000L, 0x00000000L, 0x00000000L, 0x00200000L,
  194.  },
  195.   { 0x00800000L, 0x00000000L, 0x00000000L, 0x00200000L,
  196.  },
  197.   { 0x00400000L, 0x00000000L, 0x00000000L, 0x00000000L,
  198.  },
  199.   { 0x00400000L, 0x03808400L, 0x24820100L, 0x00200000L,
  200.  },
  201.   { 0x00000000L, 0x00030100L, 0x02504000L, 0x00000000L,
  202.  },
  203.   { 0x00000000L, 0x00031900L, 0x02506000L, 0x00000000L,
  204.  },
  205.   { 0x00000000L, 0x00031900L, 0x02106000L, 0x00000000L,
  206.  },
  207.   { 0x00000000L, 0x00030100L, 0x02104000L, 0x00000000L,
  208.  },
  209.   { 0x00000000L, 0x00031900L, 0x02102000L, 0x00000000L,
  210.  },
  211.   { 0x00000000L, 0x00030100L, 0x02100000L, 0x00000000L,
  212.  },
  213.   { 0x00000000L, 0x00031900L, 0x00102000L, 0x00000000L,
  214.  },
  215.   { 0x00000000L, 0x00001800L, 0x00002000L, 0x00000000L,
  216.  },
  217.   { 0x00000000L, 0x00001000L, 0x00002000L, 0x00000000L,
  218.  },
  219.   { 0x00000000L, 0x00030100L, 0x00100000L, 0x00000000L,
  220.  },
  221.   { 0x00000000L, 0x00010100L, 0x00100000L, 0x00000000L,
  222.  },
  223.   { 0x45184000L, 0x004D0028L, 0x40001800L, 0x00200000L,
  224.  },
  225.   { 0x45184000L, 0x004C0028L, 0x40101800L, 0x00200000L,
  226.  },
  227.   { 0x00000000L, 0x00010000L, 0x00100000L, 0x00000000L,
  228.  },
  229.   { 0x00000000L, 0x00020000L, 0x00000000L, 0x00000000L,
  230.  },
  231.   { 0x00000000L, 0x00000000L, 0x02000000L, 0x00200000L,
  232.  },
  233.   { 0x45184000L, 0x004C0028L, 0x40001800L, 0x00200000L,
  234.  },
  235.   { 0x00204000L, 0x00080000L, 0x00000000L, 0x00000000L,
  236.  },
  237.   { 0x00204000L, 0x00000000L, 0x00000000L, 0x00000000L,
  238.  },
  239.   { 0x00200000L, 0x00000000L, 0x00000000L, 0x00000000L,
  240.  },
  241.   { 0x00200000L, 0x00080000L, 0x00001000L, 0x00200000L,
  242.  },
  243.   { 0x00204060L, 0x00000000L, 0x00001000L, 0x00000000L,
  244.  },
  245.   { 0x7E004146L, 0x00080080L, 0x002010A0L, 0x00600000L,
  246.  },
  247.   { 0x7E004126L, 0x00080080L, 0x002010A0L, 0x00600000L,
  248.  },
  249.   { 0x00204060L, 0x00000000L, 0x00000000L, 0x00000000L,
  250.  },
  251.   { 0x7E004106L, 0x00084080L, 0x002050A0L, 0x00700000L,
  252.  },
  253.   { 0x7E004106L, 0x00084080L, 0x002010A0L, 0x00700000L,
  254.  },
  255.   { 0x7E004106L, 0x00080880L, 0x002010E0L, 0x00700000L,
  256.  },
  257.   { 0x7E004106L, 0x00080080L, 0x002010E0L, 0x00700000L,
  258.  },
  259.   { 0x7E004106L, 0x00080080L, 0x102010A0L, 0x00700000L,
  260.  },
  261.   { 0x7E004106L, 0x00080080L, 0x002010A0L, 0x00700000L,
  262.  },
  263.   { 0x7F004106L, 0x00080080L, 0x002010A0L, 0x00700000L,
  264.  },
  265.   { 0x02664006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  266.  },
  267.   { 0x7E404106L, 0x00080080L, 0x002010A0L, 0x00700000L,
  268.  },
  269.   { 0x02264006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  270.  },
  271.   { 0x02260006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  272.  },
  273.   { 0x02260006L, 0x48080004L, 0x00081000L, 0xFFA00000L,
  274.  },
  275.   { 0x02060006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  276.  },
  277.   { 0x00000000L, 0x00000000L, 0x00000000L, 0x00100000L,
  278.  },
  279.   { 0x7E004106L, 0x00080080L, 0x002010A0L, 0x00600000L,
  280.  },
  281.   { 0x7E004106L, 0x00481080L, 0x002010A0L, 0x00700000L,
  282.  },
  283.   { 0x02664006L, 0x48000004L, 0x00080002L, 0xFFA00000L,
  284.  },
  285.   { 0x7E404106L, 0x00080080L, 0x002010A0L, 0x00600000L,
  286.  },
  287.   { 0x7E004106L, 0x00080080L, 0x002010A2L, 0x00600000L,
  288.  },
  289.   { 0x00000000L, 0x00000001L, 0x00050000L, 0x00200000L,
  290.  },
  291.   { 0x00000000L, 0x00000001L, 0x00040010L, 0x00200000L,
  292.  },
  293.   { 0x00000000L, 0x00000001L, 0x00040400L, 0x00200000L,
  294.  },
  295.   { 0x00000000L, 0x01000000L, 0x00000000L, 0x00000000L,
  296.  },
  297.   { 0x00000000L, 0x00800000L, 0x00000000L, 0x00000000L,
  298.  },
  299.   { 0x00000000L, 0x00008000L, 0x00000000L, 0x00000000L,
  300.  },
  301.   { 0x00000000L, 0x00000000L, 0x20000000L, 0x00000000L,
  302.  },
  303.   { 0x00000000L, 0x00000000L, 0x00800000L, 0x00000000L,
  304.  },
  305.   { 0x00000000L, 0x00000000L, 0x00020000L, 0x00000000L,
  306.  },
  307.   { 0x00000000L, 0x00000000L, 0x00000100L, 0x00000000L,
  308.  },
  309.   { 0x00000000L, 0x03808400L, 0x24820100L, 0x00200000L,
  310.  },
  311.   { 0x00001000L, 0x00000000L, 0x00000000L, 0x00000000L,
  312.  },
  313.   { 0x00001000L, 0x00000400L, 0x00000000L, 0x00200000L,
  314.  },
  315.   { 0x00001800L, 0x03808400L, 0x24820100L, 0x00200000L,
  316.  },
  317.   { 0x00000800L, 0x00000000L, 0x00000000L, 0x00000000L,
  318.  },
  319.   { 0x00800000L, 0x03808400L, 0x24820100L, 0x00200000L,
  320.  },
  321.   { 0x7C000006L, 0x02080080L, 0x00001020L, 0x00200000L,
  322.  },
  323.   { 0x00000000L, 0x00080000L, 0x04000000L, 0x00200000L,
  324.  },
  325.   { 0x00000000L, 0x00080000L, 0x00000000L, 0x00000000L,
  326.  },
  327.   { 0x00000000L, 0x00080000L, 0x00000000L, 0x00200000L,
  328.  },
  329.   { 0x00001800L, 0x01808000L, 0x20820100L, 0x00200000L,
  330.  },
  331.   { 0x00010000L, 0x00000000L, 0x00000000L, 0x00000000L,
  332.  },
  333.   { 0x00010000L, 0x00000400L, 0x00000000L, 0x00200000L,
  334.  },
  335.   { 0x7E004106L, 0x00085088L, 0x002010A0L, 0x00600000L,
  336.  },
  337.   { 0x00000000L, 0x00005000L, 0x00000000L, 0x00000000L,
  338.  },
  339.   { 0x00000000L, 0x00002000L, 0x00000000L, 0x00000000L,
  340.  },
  341.   { 0x7E004106L, 0x00082080L, 0x002010A0L, 0x00600000L,
  342.  },
  343.   { 0x45184000L, 0x004C0028L, 0x40001840L, 0x00200000L,
  344.  },
  345.   { 0x45184000L, 0x004C4028L, 0x40001800L, 0x00200000L,
  346.  },
  347.   { 0x7E004106L, 0x00085080L, 0x402010A1L, 0x00600000L,
  348.  },
  349.   { 0x00000000L, 0x00005000L, 0x00000001L, 0x00000000L,
  350.  },
  351.   { 0x7C000006L, 0x00000080L, 0x00000061L, 0x00200000L,
  352.  },
  353.   { 0x00000000L, 0x00000000L, 0x00000001L, 0x00000000L,
  354.  },
  355.   { 0x40008000L, 0x00000000L, 0x00000000L, 0x00000000L,
  356.  },
  357.   { 0x00008000L, 0x00000000L, 0x00000000L, 0x00000000L,
  358.  },
  359.   { 0x40000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  360.  },
  361.   { 0x18008006L, 0x00000000L, 0x00000000L, 0x00000000L,
  362.  },
  363.   { 0x7C008006L, 0x00000080L, 0x00000020L, 0x00200000L,
  364.  },
  365.   { 0x7E004106L, 0x00081080L, 0x102010A6L, 0x00600000L,
  366.  },
  367.   { 0x7E004106L, 0x00080080L, 0x102010A6L, 0x00600000L,
  368.  },
  369.   { 0x7E004106L, 0x00081080L, 0x002010A6L, 0x00600000L,
  370.  },
  371.   { 0x7E004106L, 0x00080080L, 0x002010A6L, 0x00600000L,
  372.  },
  373.   { 0x00000000L, 0x00001000L, 0x00000004L, 0x00000000L,
  374.  },
  375.   { 0x45184000L, 0x004C0028L, 0x41001800L, 0x00200000L,
  376.  },
  377.   { 0x7E004106L, 0x00080080L, 0x002010A4L, 0x00600000L,
  378.  },
  379.   { 0x45184000L, 0x004C1028L, 0x40001800L, 0x00200000L,
  380.  },
  381.   { 0x7E006106L, 0x00080080L, 0x002010A0L, 0x00600000L,
  382.  },
  383.   { 0x02862006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  384.  },
  385.   { 0x45986000L, 0x004C0028L, 0x40001800L, 0x00200000L,
  386.  },
  387.   { 0x45186000L, 0x004C0028L, 0x40001800L, 0x00200000L,
  388.  },
  389.   { 0x45386000L, 0x004C0028L, 0x40001800L, 0x00200000L,
  390.  },
  391.   { 0x45384000L, 0x004C0028L, 0x40001800L, 0x00200000L,
  392.  },
  393.   { 0x04800000L, 0x00000000L, 0x00000000L, 0x00000000L,
  394.  },
  395.   { 0x45184000L, 0x004C0028L, 0x40003800L, 0x00200000L,
  396.  },
  397.   { 0x00000000L, 0x00000000L, 0x00000800L, 0x00000000L,
  398.  },
  399.   { 0x00000000L, 0x00000000L, 0x00000008L, 0x00000000L,
  400.  },
  401.   { 0x00000000L, 0x00080000L, 0x00001000L, 0x00200000L,
  402.  },
  403.   { 0x00000000L, 0x00000000L, 0x00001000L, 0x00200000L,
  404.  },
  405.   { 0x00000000L, 0x00000000L, 0x00001000L, 0x00000000L,
  406.  },
  407.   { 0x00000400L, 0x00100001L, 0x00040000L, 0x00200000L,
  408.  },
  409.   { 0x00000000L, 0x00100000L, 0x00000000L, 0x00000000L,
  410.  },
  411.   { 0x00000400L, 0x00000001L, 0x00040000L, 0x00200000L,
  412.  },
  413.   { 0x00300000L, 0x03808400L, 0x24821100L, 0x00200000L,
  414.  },
  415.   { 0x00100000L, 0x03808400L, 0x24820100L, 0x00200000L,
  416.  },
  417.   { 0x00300000L, 0x00000000L, 0x00001000L, 0x00200000L,
  418.  },
  419.   { 0x00280000L, 0x00000000L, 0x00001000L, 0x00200000L,
  420.  },
  421.   { 0x00180000L, 0x00000000L, 0x00001000L, 0x00200000L,
  422.  },
  423.   { 0x00380000L, 0x00000000L, 0x00001000L, 0x00200000L,
  424.  },
  425.   { 0x40200000L, 0x00080000L, 0x00001000L, 0x00200000L,
  426.  },
  427.   { 0x04200000L, 0x00080000L, 0x00001000L, 0x00200000L,
  428.  },
  429.   { 0x44004000L, 0x00000000L, 0x00000000L, 0x00000000L,
  430.  },
  431.   { 0x7E206106L, 0x00080080L, 0x002010A0L, 0x00600000L,
  432.  },
  433.   { 0x00202000L, 0x00000000L, 0x00000000L, 0x00000000L,
  434.  },
  435.   { 0x00004000L, 0x00000000L, 0x00000000L, 0x00000000L,
  436.  },
  437.   { 0x7E006107L, 0x00080080L, 0x002010A0L, 0x00600000L,
  438.  },
  439.   { 0x7E004107L, 0x00080080L, 0x002010A0L, 0x00600000L,
  440.  },
  441.   { 0x7E804107L, 0x00080080L, 0x002010A0L, 0x00600000L,
  442.  },
  443.   { 0x00000001L, 0x00080000L, 0x00001000L, 0x00200000L,
  444.  },
  445.   { 0x7E064106L, 0x48080084L, 0x002810A0L, 0xFFE00000L,
  446.  },
  447.   { 0x02264006L, 0x48000004L, 0x00081000L, 0xFF800000L,
  448.  },
  449.   { 0x02264006L, 0x48080004L, 0x00080000L, 0xFF800000L,
  450.  },
  451.   { 0x7E266106L, 0x48080084L, 0x002810A0L, 0xFFE00000L,
  452.  },
  453.   { 0x02262006L, 0x48000004L, 0x00080000L, 0xFF800000L,
  454.  },
  455.   { 0x40200000L, 0x00000000L, 0x00000000L, 0x00000000L,
  456.  },
  457.   { 0x10000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  458.  },
  459.   { 0x08000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  460.  },
  461.   { 0x04200000L, 0x00000000L, 0x00000000L, 0x00000000L,
  462.  },
  463.   { 0x20000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  464.  },
  465.   { 0x7C000000L, 0x00000080L, 0x00000020L, 0x00000000L,
  466.  },
  467.   { 0x00040000L, 0x00000000L, 0x00000000L, 0x00000000L,
  468.  },
  469.   { 0x00020000L, 0x00000000L, 0x00000000L, 0x00000000L,
  470.  },
  471.   { 0x00060000L, 0x00000000L, 0x00000000L, 0x00000000L,
  472.  },
  473.   { 0x7C000006L, 0x00080080L, 0x00001020L, 0x00200000L,
  474.  },
  475.   { 0x7C000006L, 0x00000080L, 0x00000020L, 0x00000000L,
  476.  },
  477.   { 0x18000000L, 0x00000000L, 0x00000000L, 0x00000000L,
  478.  },
  479.   { 0x00000006L, 0x00000000L, 0x00000000L, 0x00000000L,
  480.  },
  481.   { 0x00000000L, 0x00000000L, 0x00000020L, 0x00000000L,
  482.  },
  483.   { 0x00000000L, 0x00000080L, 0x00000000L, 0x00000000L,
  484.  },
  485.   { 0x00000000L, 0x00000080L, 0x00000020L, 0x00000000L,
  486.  },
  487.   { 0x7E004186L, 0x00080080L, 0x002010A0L, 0x00600000L,
  488.  },
  489.   { 0x00000080L, 0x00000000L, 0x00000000L, 0x00000000L,
  490.  },
  491.   { 0x7E804106L, 0x00080080L, 0x002010A0L, 0x00600000L,
  492.  },
  493.   { 0x00006000L, 0x00000000L, 0x00000080L, 0x00200000L,
  494.  },
  495.   { 0x04000000L, 0x20000100L, 0x00000000L, 0x00000000L,
  496.  },
  497.   { 0x00000000L, 0x20000000L, 0x00000000L, 0x00000000L,
  498.  },
  499.   { 0x04000000L, 0x20000000L, 0x00000000L, 0x00000000L,
  500.  },
  501. };
  502. static unsigned char xxVerticalSet [] = {
  503.  0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80,
  504.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  505.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  506.  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00,
  507.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  508.  0x00, 0x00, 0x03, 0x1C, 0x00, 0x00, 0x03, 0x00,
  509.  0x00, 0x00, 0x00, 0x7C, 0x00, 0x03, 0x00, 0x00,
  510.  0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
  511.  0x0C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00,
  512.  0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  513.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  514.  0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  515.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  516.  0x00, 0x00, 0x80, 0x00,
  517.  
  518.  0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0xE1,
  519.  0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  520.  0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
  521.  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
  522.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  523.  0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
  524.  0x00, 0x00, 0x00, 0xC8, 0x00, 0x01, 0x00, 0x00,
  525.  0x02, 0xCC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC,
  526.  0x00, 0x00, 0x00, 0xC8, 0xC0, 0x00, 0x00, 0x00,
  527.  0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
  528.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  529.  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
  530.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  531.  0x00, 0x00, 0xFE, 0x00,
  532.  
  533.  0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x57,
  534.  0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  535.  0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
  536.  0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00,
  537.  0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
  538.  0x00, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, 0x00,
  539.  0x00, 0x00, 0x00, 0xE7, 0x00, 0x58, 0xA4, 0x00,
  540.  0x04, 0x47, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07,
  541.  0x00, 0x00, 0x00, 0x47, 0x06, 0x00, 0x00, 0x00,
  542.  0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x00, 0xA4,
  543.  0x20, 0x00, 0x00, 0x04, 0x00, 0xA4, 0x00, 0x00,
  544.  0x04, 0x00, 0x04, 0xA4, 0x00, 0x00, 0x00, 0x00,
  545.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  546.  0x00, 0x04, 0x5F, 0x00,
  547.  
  548.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
  549.  0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  550.  0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
  551.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  552.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
  553.  0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x40,
  554.  0x10, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x40,
  555.  0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
  556.  0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00,
  557.  0x10, 0x00, 0x00, 0x40, 0x00, 0x08, 0x10, 0x23,
  558.  0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x10,
  559.  0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00,
  560.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  561.  0x00, 0x00, 0x98, 0x00,
  562.  
  563.  0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x61,
  564.  0x01, 0x00, 0x20, 0x60, 0x60, 0x00, 0x00, 0x00,
  565.  0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
  566.  0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00,
  567.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  568.  0x00, 0x60, 0x00, 0x00, 0xE0, 0x60, 0x8E, 0x8E,
  569.  0x00, 0x60, 0x60, 0x70, 0x60, 0x00, 0x00, 0x8E,
  570.  0xE0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
  571.  0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x86, 0x00,
  572.  0x00, 0x00, 0xE0, 0x8E, 0x00, 0x00, 0x00, 0x00,
  573.  0x00, 0x02, 0x70, 0xE0, 0x60, 0x00, 0x00, 0x00,
  574.  0xE0, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x60, 0x60,
  575.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  576.  0x00, 0xE0, 0xE0, 0x80,
  577.  
  578.  0x00, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xFF, 0xB8,
  579.  0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x70, 0x00,
  580.  0x00, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF,
  581.  0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00,
  582.  0x00, 0x70, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
  583.  0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xB4, 0xB4,
  584.  0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0xB4,
  585.  0xBF, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
  586.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x00,
  587.  0x00, 0x00, 0xBF, 0xB4, 0x70, 0x00, 0x00, 0x00,
  588.  0x00, 0x00, 0xB5, 0xBF, 0x00, 0x00, 0x00, 0x00,
  589.  0xBF, 0x00, 0xBF, 0x00, 0x00, 0xB4, 0xB4, 0x00,
  590.  0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
  591.  0x70, 0xBF, 0xBF, 0xBB,
  592.  
  593.  0x00, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0xC3, 0x24,
  594.  0x14, 0x00, 0x01, 0x24, 0x20, 0x03, 0x03, 0x00,
  595.  0x00, 0xE0, 0x04, 0x00, 0x14, 0x00, 0x00, 0xC0,
  596.  0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xC3, 0x00,
  597.  0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08,
  598.  0x08, 0x20, 0x00, 0x04, 0xE0, 0x20, 0x04, 0x04,
  599.  0x08, 0x40, 0x40, 0x44, 0x40, 0x0C, 0x04, 0x04,
  600.  0xC0, 0x04, 0x20, 0x04, 0x20, 0x03, 0x00, 0x04,
  601.  0x00, 0x20, 0x08, 0x44, 0x04, 0x08, 0x00, 0x00,
  602.  0x08, 0x00, 0xC0, 0x04, 0x03, 0x04, 0x08, 0x04,
  603.  0x04, 0x00, 0x40, 0xE0, 0x20, 0x04, 0x00, 0x08,
  604.  0xC0, 0x00, 0xC0, 0x04, 0x00, 0x43, 0x40, 0x40,
  605.  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
  606.  0x03, 0xC0, 0xEC, 0x00,
  607.  
  608.  0x00, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x18, 0x00,
  609.  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  610.  0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18,
  611.  0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x1A, 0x00,
  612.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  613.  0x00, 0x00, 0x00, 0x60, 0x98, 0x00, 0x00, 0x00,
  614.  0x00, 0x01, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00,
  615.  0x1A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
  616.  0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
  617.  0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00,
  618.  0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00,
  619.  0x18, 0x06, 0x1A, 0x00, 0x00, 0x08, 0x18, 0x02,
  620.  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  621.  0x00, 0x18, 0xFA, 0x00,
  622.  
  623.  0x00, 0x07, 0x07, 0x17, 0x17, 0x07, 0x07, 0x03,
  624.  0x03, 0x00, 0x02, 0x03, 0x03, 0x03, 0x03, 0x00,
  625.  0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07,
  626.  0x03, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x04,
  627.  0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
  628.  0x00, 0x03, 0x00, 0x00, 0x07, 0x03, 0x03, 0x03,
  629.  0x00, 0x03, 0x03, 0x23, 0x23, 0x00, 0x00, 0x03,
  630.  0x07, 0x00, 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
  631.  0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x03, 0x03,
  632.  0x00, 0x00, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00,
  633.  0x00, 0x00, 0x23, 0x07, 0x03, 0x00, 0x00, 0x00,
  634.  0x07, 0x03, 0x07, 0x00, 0x00, 0x03, 0x03, 0x03,
  635.  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
  636.  0x03, 0x07, 0x07, 0x03,
  637. };
  638. char *        ParserSIG_TokenName [] = {
  639. "_EndOfFile",
  640. "Character_constant",
  641. "Bit_sequence",
  642. "Integer",
  643. "Real",
  644. "Manifest_string",
  645. "Free_op",
  646. ";",
  647. ",",
  648. ":",
  649. ".",
  650. "!",
  651. "!!",
  652. "Eq",
  653. "Not_eq",
  654. "->",
  655. "..",
  656. "(",
  657. ")",
  658. "[",
  659. "]",
  660. "{",
  661. "}",
  662. "<<",
  663. ">>",
  664. ":=",
  665. "?=",
  666. "\\'",
  667. "\"",
  668. "plus",
  669. "minus",
  670. "$",
  671. "%",
  672. "div",
  673. "alias",
  674. "all",
  675. "and",
  676. "as",
  677. "BIT",
  678. "BOOLEAN",
  679. "CHARACTER",
  680. "check",
  681. "class",
  682. "creation",
  683. "Current",
  684. "debug",
  685. "deferred",
  686. "do",
  687. "DOUBLE",
  688. "else",
  689. "elseif",
  690. "end",
  691. "ensure",
  692. "expanded",
  693. "export",
  694. "external",
  695. "false",
  696. "feature",
  697. "from",
  698. "frozen",
  699. "if",
  700. "implies",
  701. "indexing",
  702. "infix",
  703. "inherit",
  704. "inspect",
  705. "INTEGER",
  706. "invariant",
  707. "is",
  708. "like",
  709. "local",
  710. "loop",
  711. "_NONE",
  712. "obsolete",
  713. "old",
  714. "once",
  715. "or",
  716. "prefix",
  717. "REAL",
  718. "redefine",
  719. "rename",
  720. "require",
  721. "rescue",
  722. "Result",
  723. "retry",
  724. "select",
  725. "separate",
  726. "STRING",
  727. "strip",
  728. "then",
  729. "true",
  730. "undefine",
  731. "unique",
  732. "until",
  733. "variant",
  734. "when",
  735. "xor",
  736. "times",
  737. "smaller",
  738. "greater",
  739. "sm_eq",
  740. "gr_eq",
  741. "idiv",
  742. "imod",
  743. "power",
  744. "not",
  745. "Id",
  746. "Comment",
  747. };
  748.  
  749. static void yyEiffel ARGS((ParserSIG_tParsAttribute * Eiffel0, xxtUnionPtr xxGlobalRecoverySet));
  750. static void yyClass_declaration ARGS((ParserSIG_tParsAttribute * Class_declaration0, xxtUnionPtr xxGlobalRecoverySet));
  751. static void yyIndexing ARGS((ParserSIG_tParsAttribute * Indexing0, xxtUnionPtr xxGlobalRecoverySet));
  752. static void yyIndex_list ARGS((ParserSIG_tParsAttribute * Index_list0, xxtUnionPtr xxGlobalRecoverySet));
  753. static void yyIndex_clause ARGS((ParserSIG_tParsAttribute * Index_clause0, xxtUnionPtr xxGlobalRecoverySet));
  754. static void yyIndex_terms ARGS((ParserSIG_tParsAttribute * Index_terms0, xxtUnionPtr xxGlobalRecoverySet));
  755. static void yyIndex_value ARGS((ParserSIG_tParsAttribute * Index_value0, xxtUnionPtr xxGlobalRecoverySet));
  756. static void yyClass_header ARGS((ParserSIG_tParsAttribute * Class_header0, xxtUnionPtr xxGlobalRecoverySet));
  757. static void yyClass_name ARGS((ParserSIG_tParsAttribute * Class_name0, xxtUnionPtr xxGlobalRecoverySet));
  758. static void yyObsolete ARGS((ParserSIG_tParsAttribute * Obsolete0, xxtUnionPtr xxGlobalRecoverySet));
  759. static void yyMessage ARGS((ParserSIG_tParsAttribute * Message0, xxtUnionPtr xxGlobalRecoverySet));
  760. static void yyFeatures ARGS((ParserSIG_tParsAttribute * Features0, xxtUnionPtr xxGlobalRecoverySet));
  761. static void yyFeature_clause ARGS((ParserSIG_tParsAttribute * Feature_clause0, xxtUnionPtr xxGlobalRecoverySet));
  762. static void yyFeature_declaration_list ARGS((ParserSIG_tParsAttribute * Feature_declaration_list0, xxtUnionPtr xxGlobalRecoverySet));
  763. static void yyFeature_declaration ARGS((ParserSIG_tParsAttribute * Feature_declaration0, xxtUnionPtr xxGlobalRecoverySet));
  764. static void yyDeclaration_body ARGS((ParserSIG_tParsAttribute * Declaration_body0, xxtUnionPtr xxGlobalRecoverySet));
  765. static void yyConstant_or_routine ARGS((ParserSIG_tParsAttribute * Constant_or_routine0, xxtUnionPtr xxGlobalRecoverySet));
  766. static void yyFeature_value ARGS((ParserSIG_tParsAttribute * Feature_value0, xxtUnionPtr xxGlobalRecoverySet));
  767. static void yyNew_feature_list ARGS((ParserSIG_tParsAttribute * New_feature_list0, xxtUnionPtr xxGlobalRecoverySet));
  768. static void yyNew_feature ARGS((ParserSIG_tParsAttribute * New_feature0, xxtUnionPtr xxGlobalRecoverySet));
  769. static void yyFeature_name ARGS((ParserSIG_tParsAttribute * Feature_name0, xxtUnionPtr xxGlobalRecoverySet));
  770. static void yyPrefix ARGS((ParserSIG_tParsAttribute * Prefix0, xxtUnionPtr xxGlobalRecoverySet));
  771. static void yyInfix ARGS((ParserSIG_tParsAttribute * Infix0, xxtUnionPtr xxGlobalRecoverySet));
  772. static void yyPrefix_operator ARGS((ParserSIG_tParsAttribute * Prefix_operator0, xxtUnionPtr xxGlobalRecoverySet));
  773. static void yyInfix_operator ARGS((ParserSIG_tParsAttribute * Infix_operator0, xxtUnionPtr xxGlobalRecoverySet));
  774. static void yyUnary ARGS((ParserSIG_tParsAttribute * Unary0, xxtUnionPtr xxGlobalRecoverySet));
  775. static void yyBinary ARGS((ParserSIG_tParsAttribute * Binary0, xxtUnionPtr xxGlobalRecoverySet));
  776. static void yyInheritance ARGS((ParserSIG_tParsAttribute * Inheritance0, xxtUnionPtr xxGlobalRecoverySet));
  777. static void yyParent_list ARGS((ParserSIG_tParsAttribute * Parent_list0, xxtUnionPtr xxGlobalRecoverySet));
  778. static void yyParent ARGS((ParserSIG_tParsAttribute * Parent0, xxtUnionPtr xxGlobalRecoverySet));
  779. static void yyFeature_adaptation ARGS((ParserSIG_tParsAttribute * Feature_adaptation0, xxtUnionPtr xxGlobalRecoverySet));
  780. static void yyRename ARGS((ParserSIG_tParsAttribute * Rename0, xxtUnionPtr xxGlobalRecoverySet));
  781. static void yyRename_list ARGS((ParserSIG_tParsAttribute * Rename_list0, xxtUnionPtr xxGlobalRecoverySet));
  782. static void yyRename_pair ARGS((ParserSIG_tParsAttribute * Rename_pair0, xxtUnionPtr xxGlobalRecoverySet));
  783. static void yyClients ARGS((ParserSIG_tParsAttribute * Clients0, xxtUnionPtr xxGlobalRecoverySet));
  784. static void yyClass_list ARGS((ParserSIG_tParsAttribute * Class_list0, xxtUnionPtr xxGlobalRecoverySet));
  785. static void yyNew_exports ARGS((ParserSIG_tParsAttribute * New_exports0, xxtUnionPtr xxGlobalRecoverySet));
  786. static void yyNew_export_list ARGS((ParserSIG_tParsAttribute * New_export_list0, xxtUnionPtr xxGlobalRecoverySet));
  787. static void yyNew_export_item ARGS((ParserSIG_tParsAttribute * New_export_item0, xxtUnionPtr xxGlobalRecoverySet));
  788. static void yyFeature_set ARGS((ParserSIG_tParsAttribute * Feature_set0, xxtUnionPtr xxGlobalRecoverySet));
  789. static void yyFeature_list ARGS((ParserSIG_tParsAttribute * Feature_list0, xxtUnionPtr xxGlobalRecoverySet));
  790. static void yyFormal_arguments ARGS((ParserSIG_tParsAttribute * Formal_arguments0, xxtUnionPtr xxGlobalRecoverySet));
  791. static void yyEntity_declaration_list ARGS((ParserSIG_tParsAttribute * Entity_declaration_list0, xxtUnionPtr xxGlobalRecoverySet));
  792. static void yyEntity_declaration_group ARGS((ParserSIG_tParsAttribute * Entity_declaration_group0, xxtUnionPtr xxGlobalRecoverySet));
  793. static void yyIdentifier_list ARGS((ParserSIG_tParsAttribute * Identifier_list0, xxtUnionPtr xxGlobalRecoverySet));
  794. static void yyType_mark ARGS((ParserSIG_tParsAttribute * Type_mark0, xxtUnionPtr xxGlobalRecoverySet));
  795. static void yyRoutine ARGS((ParserSIG_tParsAttribute * Routine0, xxtUnionPtr xxGlobalRecoverySet));
  796. static void yyRoutine_body ARGS((ParserSIG_tParsAttribute * Routine_body0, xxtUnionPtr xxGlobalRecoverySet));
  797. static void yyEffective ARGS((ParserSIG_tParsAttribute * Effective0, xxtUnionPtr xxGlobalRecoverySet));
  798. static void yyInternal ARGS((ParserSIG_tParsAttribute * Internal0, xxtUnionPtr xxGlobalRecoverySet));
  799. static void yyDeferred ARGS((ParserSIG_tParsAttribute * Deferred0, xxtUnionPtr xxGlobalRecoverySet));
  800. static void yyLocal_declarations ARGS((ParserSIG_tParsAttribute * Local_declarations0, xxtUnionPtr xxGlobalRecoverySet));
  801. static void yyInstruction ARGS((ParserSIG_tParsAttribute * Instruction0, xxtUnionPtr xxGlobalRecoverySet));
  802. static void yyCurrent_instruct ARGS((ParserSIG_tParsAttribute * Current_instruct0, xxtUnionPtr xxGlobalRecoverySet));
  803. static void yyResult_instruct ARGS((ParserSIG_tParsAttribute * Result_instruct0, xxtUnionPtr xxGlobalRecoverySet));
  804. static void yyIdent_instruct ARGS((ParserSIG_tParsAttribute * Ident_instruct0, xxtUnionPtr xxGlobalRecoverySet));
  805. static void yyPrecondition ARGS((ParserSIG_tParsAttribute * Precondition0, xxtUnionPtr xxGlobalRecoverySet));
  806. static void yyPostcondition ARGS((ParserSIG_tParsAttribute * Postcondition0, xxtUnionPtr xxGlobalRecoverySet));
  807. static void yyInvariant ARGS((ParserSIG_tParsAttribute * Invariant0, xxtUnionPtr xxGlobalRecoverySet));
  808. static void yyAssertion ARGS((ParserSIG_tParsAttribute * Assertion0, xxtUnionPtr xxGlobalRecoverySet));
  809. static void yyAssertion_clause ARGS((ParserSIG_tParsAttribute * Assertion_clause0, xxtUnionPtr xxGlobalRecoverySet));
  810. static void yyUnlabeled_assertion_clause ARGS((ParserSIG_tParsAttribute * Unlabeled_assertion_clause0, xxtUnionPtr xxGlobalRecoverySet));
  811. static void yyTag ARGS((ParserSIG_tParsAttribute * Tag0, xxtUnionPtr xxGlobalRecoverySet));
  812. static void yyOld ARGS((ParserSIG_tParsAttribute * Old0, xxtUnionPtr xxGlobalRecoverySet));
  813. static void yyCheck ARGS((ParserSIG_tParsAttribute * Check0, xxtUnionPtr xxGlobalRecoverySet));
  814. static void yyVariant ARGS((ParserSIG_tParsAttribute * Variant0, xxtUnionPtr xxGlobalRecoverySet));
  815. static void yyRedefine ARGS((ParserSIG_tParsAttribute * Redefine0, xxtUnionPtr xxGlobalRecoverySet));
  816. static void yyUndefine ARGS((ParserSIG_tParsAttribute * Undefine0, xxtUnionPtr xxGlobalRecoverySet));
  817. static void yySelect ARGS((ParserSIG_tParsAttribute * Select0, xxtUnionPtr xxGlobalRecoverySet));
  818. static void yyType ARGS((ParserSIG_tParsAttribute * Type0, xxtUnionPtr xxGlobalRecoverySet));
  819. static void yyClass_type ARGS((ParserSIG_tParsAttribute * Class_type0, xxtUnionPtr xxGlobalRecoverySet));
  820. static void yyActual_generics ARGS((ParserSIG_tParsAttribute * Actual_generics0, xxtUnionPtr xxGlobalRecoverySet));
  821. static void yyType_list ARGS((ParserSIG_tParsAttribute * Type_list0, xxtUnionPtr xxGlobalRecoverySet));
  822. static void yyBit_type ARGS((ParserSIG_tParsAttribute * Bit_type0, xxtUnionPtr xxGlobalRecoverySet));
  823. static void yyAnchored ARGS((ParserSIG_tParsAttribute * Anchored0, xxtUnionPtr xxGlobalRecoverySet));
  824. static void yyAnchor ARGS((ParserSIG_tParsAttribute * Anchor0, xxtUnionPtr xxGlobalRecoverySet));
  825. static void yyFormal_generics ARGS((ParserSIG_tParsAttribute * Formal_generics0, xxtUnionPtr xxGlobalRecoverySet));
  826. static void yyFormal_generic_list ARGS((ParserSIG_tParsAttribute * Formal_generic_list0, xxtUnionPtr xxGlobalRecoverySet));
  827. static void yyFormal_generic ARGS((ParserSIG_tParsAttribute * Formal_generic0, xxtUnionPtr xxGlobalRecoverySet));
  828. static void yyFormal_generic_name ARGS((ParserSIG_tParsAttribute * Formal_generic_name0, xxtUnionPtr xxGlobalRecoverySet));
  829. static void yyConstraint ARGS((ParserSIG_tParsAttribute * Constraint0, xxtUnionPtr xxGlobalRecoverySet));
  830. static void yyCompound ARGS((ParserSIG_tParsAttribute * Compound0, xxtUnionPtr xxGlobalRecoverySet));
  831. static void yyConditional ARGS((ParserSIG_tParsAttribute * Conditional0, xxtUnionPtr xxGlobalRecoverySet));
  832. static void yyThen_part_list ARGS((ParserSIG_tParsAttribute * Then_part_list0, xxtUnionPtr xxGlobalRecoverySet));
  833. static void yyThen_part ARGS((ParserSIG_tParsAttribute * Then_part0, xxtUnionPtr xxGlobalRecoverySet));
  834. static void yyElse_part ARGS((ParserSIG_tParsAttribute * Else_part0, xxtUnionPtr xxGlobalRecoverySet));
  835. static void yyMulti_branch ARGS((ParserSIG_tParsAttribute * Multi_branch0, xxtUnionPtr xxGlobalRecoverySet));
  836. static void yyWhen_part_list ARGS((ParserSIG_tParsAttribute * When_part_list0, xxtUnionPtr xxGlobalRecoverySet));
  837. static void yyWhen_part ARGS((ParserSIG_tParsAttribute * When_part0, xxtUnionPtr xxGlobalRecoverySet));
  838. static void yyChoices ARGS((ParserSIG_tParsAttribute * Choices0, xxtUnionPtr xxGlobalRecoverySet));
  839. static void yyChoice ARGS((ParserSIG_tParsAttribute * Choice0, xxtUnionPtr xxGlobalRecoverySet));
  840. static void yyLoop ARGS((ParserSIG_tParsAttribute * Loop0, xxtUnionPtr xxGlobalRecoverySet));
  841. static void yyInitialization ARGS((ParserSIG_tParsAttribute * Initialization0, xxtUnionPtr xxGlobalRecoverySet));
  842. static void yyLoop_body ARGS((ParserSIG_tParsAttribute * Loop_body0, xxtUnionPtr xxGlobalRecoverySet));
  843. static void yyExit ARGS((ParserSIG_tParsAttribute * Exit0, xxtUnionPtr xxGlobalRecoverySet));
  844. static void yyDebug ARGS((ParserSIG_tParsAttribute * Debug0, xxtUnionPtr xxGlobalRecoverySet));
  845. static void yyKeys_or_qual_call ARGS((ParserSIG_tParsAttribute * Keys_or_qual_call0, xxtUnionPtr xxGlobalRecoverySet));
  846. static void yyString ARGS((ParserSIG_tParsAttribute * String0, xxtUnionPtr xxGlobalRecoverySet));
  847. static void yyString_list ARGS((ParserSIG_tParsAttribute * String_list0, xxtUnionPtr xxGlobalRecoverySet));
  848. static void yyOne_compound ARGS((ParserSIG_tParsAttribute * One_compound0, xxtUnionPtr xxGlobalRecoverySet));
  849. static void yyRescue ARGS((ParserSIG_tParsAttribute * Rescue0, xxtUnionPtr xxGlobalRecoverySet));
  850. static void yyRetry ARGS((ParserSIG_tParsAttribute * Retry0, xxtUnionPtr xxGlobalRecoverySet));
  851. static void yyUnique ARGS((ParserSIG_tParsAttribute * Unique0, xxtUnionPtr xxGlobalRecoverySet));
  852. static void yyEntity ARGS((ParserSIG_tParsAttribute * Entity0, xxtUnionPtr xxGlobalRecoverySet));
  853. static void yyWritable ARGS((ParserSIG_tParsAttribute * Writable0, xxtUnionPtr xxGlobalRecoverySet));
  854. static void yyAttribute ARGS((ParserSIG_tParsAttribute * Attribute0, xxtUnionPtr xxGlobalRecoverySet));
  855. static void yyLocal ARGS((ParserSIG_tParsAttribute * Local0, xxtUnionPtr xxGlobalRecoverySet));
  856. static void yyCreators ARGS((ParserSIG_tParsAttribute * Creators0, xxtUnionPtr xxGlobalRecoverySet));
  857. static void yyCreation_clause ARGS((ParserSIG_tParsAttribute * Creation_clause0, xxtUnionPtr xxGlobalRecoverySet));
  858. static void yyCreation ARGS((ParserSIG_tParsAttribute * Creation0, xxtUnionPtr xxGlobalRecoverySet));
  859. static void yyCreation_call ARGS((ParserSIG_tParsAttribute * Creation_call0, xxtUnionPtr xxGlobalRecoverySet));
  860. static void yyQualified_call ARGS((ParserSIG_tParsAttribute * Qualified_call0, xxtUnionPtr xxGlobalRecoverySet));
  861. static void yyParenthesized_qualifier ARGS((ParserSIG_tParsAttribute * Parenthesized_qualifier0, xxtUnionPtr xxGlobalRecoverySet));
  862. static void yyCall_chain ARGS((ParserSIG_tParsAttribute * Call_chain0, xxtUnionPtr xxGlobalRecoverySet));
  863. static void yyUnqualified_call ARGS((ParserSIG_tParsAttribute * Unqualified_call0, xxtUnionPtr xxGlobalRecoverySet));
  864. static void yyActuals ARGS((ParserSIG_tParsAttribute * Actuals0, xxtUnionPtr xxGlobalRecoverySet));
  865. static void yyActual_list ARGS((ParserSIG_tParsAttribute * Actual_list0, xxtUnionPtr xxGlobalRecoverySet));
  866. static void yyActual ARGS((ParserSIG_tParsAttribute * Actual0, xxtUnionPtr xxGlobalRecoverySet));
  867. static void yyAddress ARGS((ParserSIG_tParsAttribute * Address0, xxtUnionPtr xxGlobalRecoverySet));
  868. static void yyAddress_mark ARGS((ParserSIG_tParsAttribute * Address_mark0, xxtUnionPtr xxGlobalRecoverySet));
  869. static void yyExpression ARGS((ParserSIG_tParsAttribute * Expression0, xxtUnionPtr xxGlobalRecoverySet));
  870. static void yyExpr_tail ARGS((ParserSIG_tParsAttribute * Expr_tail0, xxtUnionPtr xxGlobalRecoverySet));
  871. static void yyIdent_call ARGS((ParserSIG_tParsAttribute * Ident_call0, xxtUnionPtr xxGlobalRecoverySet));
  872. static void yyResult_call ARGS((ParserSIG_tParsAttribute * Result_call0, xxtUnionPtr xxGlobalRecoverySet));
  873. static void yyCurrent_call ARGS((ParserSIG_tParsAttribute * Current_call0, xxtUnionPtr xxGlobalRecoverySet));
  874. static void yyParenth_expr_or_qual_call ARGS((ParserSIG_tParsAttribute * Parenth_expr_or_qual_call0, xxtUnionPtr xxGlobalRecoverySet));
  875. static void yyNo_sign_constant ARGS((ParserSIG_tParsAttribute * No_sign_constant0, xxtUnionPtr xxGlobalRecoverySet));
  876. static void yyBoolean_expression ARGS((ParserSIG_tParsAttribute * Boolean_expression0, xxtUnionPtr xxGlobalRecoverySet));
  877. static void yyComparison ARGS((ParserSIG_tParsAttribute * Comparison0, xxtUnionPtr xxGlobalRecoverySet));
  878. static void yyConstant ARGS((ParserSIG_tParsAttribute * Constant0, xxtUnionPtr xxGlobalRecoverySet));
  879. static void yyConstant_attribute ARGS((ParserSIG_tParsAttribute * Constant_attribute0, xxtUnionPtr xxGlobalRecoverySet));
  880. static void yyManifest_constant ARGS((ParserSIG_tParsAttribute * Manifest_constant0, xxtUnionPtr xxGlobalRecoverySet));
  881. static void yyNumber_constant ARGS((ParserSIG_tParsAttribute * Number_constant0, xxtUnionPtr xxGlobalRecoverySet));
  882. static void yySign ARGS((ParserSIG_tParsAttribute * Sign0, xxtUnionPtr xxGlobalRecoverySet));
  883. static void yyBoolean_constant ARGS((ParserSIG_tParsAttribute * Boolean_constant0, xxtUnionPtr xxGlobalRecoverySet));
  884. static void yyBit_constant ARGS((ParserSIG_tParsAttribute * Bit_constant0, xxtUnionPtr xxGlobalRecoverySet));
  885. static void yyManifest_array ARGS((ParserSIG_tParsAttribute * Manifest_array0, xxtUnionPtr xxGlobalRecoverySet));
  886. static void yyExpression_list ARGS((ParserSIG_tParsAttribute * Expression_list0, xxtUnionPtr xxGlobalRecoverySet));
  887. static void yyStrip ARGS((ParserSIG_tParsAttribute * Strip0, xxtUnionPtr xxGlobalRecoverySet));
  888. static void yyAttribute_list ARGS((ParserSIG_tParsAttribute * Attribute_list0, xxtUnionPtr xxGlobalRecoverySet));
  889. static void yyExternal ARGS((ParserSIG_tParsAttribute * External0, xxtUnionPtr xxGlobalRecoverySet));
  890. static void yyLanguage_name ARGS((ParserSIG_tParsAttribute * Language_name0, xxtUnionPtr xxGlobalRecoverySet));
  891. static void yyExternal_name ARGS((ParserSIG_tParsAttribute * External_name0, xxtUnionPtr xxGlobalRecoverySet));
  892. static void yyIdentifier ARGS((ParserSIG_tParsAttribute * Identifier0, xxtUnionPtr xxGlobalRecoverySet));
  893.  
  894. static void BeginParserSIG ()
  895. {
  896.   if (xxIsInitialized) return;
  897. /* line 17 "eiffel_sig.ell" */
  898.  
  899.     EiffelScan_BeginScanner();
  900.  
  901. }
  902.  
  903. void CloseParserSIG ()
  904. {
  905. /* line 22 "eiffel_sig.ell" */
  906.  
  907.     EiffelScan_CloseScanner();
  908.  
  909. }
  910.  
  911. static xxbool xxIsElement
  912. # if defined __STDC__ | defined __cplusplus
  913. (xxtSet xySet, short xxElement)
  914. # else
  915. (xySet, xxElement) xxtSet xySet; short xxElement;
  916. # endif
  917. { return xySet [xxElement / 32] << xxElement % 32 < 0; }
  918.  
  919. static void xxSkipTokens
  920. # if defined __STDC__ | defined __cplusplus
  921. (unsigned short xxLocalRecoverySet, xxtUnionPtr xxGlobalRecoverySet)
  922. # else
  923. (xxLocalRecoverySet, xxGlobalRecoverySet)
  924. unsigned short    xxLocalRecoverySet;
  925. xxtUnionPtr    xxGlobalRecoverySet;
  926. # endif
  927. {
  928.   xxbool xxTokensSkipped = xxfalse;
  929.   xxtSet xxRecoverySet;
  930.   xxRecoverySet [0] = xxHorizontalSet [xxLocalRecoverySet] [0];
  931.   xxRecoverySet [1] = xxHorizontalSet [xxLocalRecoverySet] [1];
  932.   xxRecoverySet [2] = xxHorizontalSet [xxLocalRecoverySet] [2];
  933.   xxRecoverySet [3] = xxHorizontalSet [xxLocalRecoverySet] [3];
  934.   xxRecoverySet [0] |= (unsigned long) 0x80000000L; /* INCL (xxRecoverySet [0], xxEof); */
  935.   while (xxGlobalRecoverySet != (xxtUnionPtr) 0L) {
  936.     xxRecoverySet [0] |= xxHorizontalSet [xxGlobalRecoverySet->xxLocalRecoverySet] [0];
  937.     xxRecoverySet [1] |= xxHorizontalSet [xxGlobalRecoverySet->xxLocalRecoverySet] [1];
  938.     xxRecoverySet [2] |= xxHorizontalSet [xxGlobalRecoverySet->xxLocalRecoverySet] [2];
  939.     xxRecoverySet [3] |= xxHorizontalSet [xxGlobalRecoverySet->xxLocalRecoverySet] [3];
  940.     xxGlobalRecoverySet = xxGlobalRecoverySet->xxGlobalRecoverySet;
  941.   }
  942.   while (! xxIsElement (xxRecoverySet, xxToken)) {
  943.     xxToken = EiffelScan_GetToken (); xxTokensSkipped = xxtrue;
  944.   }
  945.   if (xxTokensSkipped) ErrorMessage (xxRestartPoint, xxInformation, EiffelScan_Attribute.Position);
  946.   xxIsRepairMode = xxtrue;
  947. }
  948.  
  949. static void xxUnexpected
  950. # if defined __STDC__ | defined __cplusplus
  951. (unsigned short xxLocalRecoverySet, xxtUnionPtr xxGlobalRecoverySet)
  952. # else
  953. (xxLocalRecoverySet, xxGlobalRecoverySet)
  954. unsigned short    xxLocalRecoverySet;
  955. xxtUnionPtr    xxGlobalRecoverySet;
  956. # endif
  957. {
  958.   if (! xxIsRepairMode) {
  959.     xxErrorCount ++;
  960.     ErrorMessage (xxSyntaxError, xxError, EiffelScan_Attribute.Position);
  961.     xxSkipTokens (xxLocalRecoverySet, xxGlobalRecoverySet);
  962.   }
  963. }
  964.  
  965. static void xxExpected
  966. # if defined __STDC__ | defined __cplusplus
  967. (unsigned short xxExpectedSet, unsigned short xxLocalRecoverySet, xxtUnionPtr xxGlobalRecoverySet)
  968. # else
  969. (xxExpectedSet, xxLocalRecoverySet, xxGlobalRecoverySet)
  970. unsigned short    xxExpectedSet, xxLocalRecoverySet;
  971. xxtUnionPtr    xxGlobalRecoverySet;
  972. # endif
  973. {
  974.   if (! xxIsRepairMode) {
  975.     short yxToken;
  976.     int xxLength = 0;
  977.     char xxContinueString [256];
  978.     xxErrorCount ++;
  979.     ErrorMessage (xxSyntaxError, xxError, EiffelScan_Attribute.Position);
  980.     xxContinueString [0] = '\0';
  981.     for (yxToken = 0; yxToken <= 107; yxToken ++)
  982.       if (xxIsElement (xxHorizontalSet [xxExpectedSet], yxToken)) {
  983.     char * xxTokenString = ParserSIG_TokenName [yxToken];
  984.     if ((xxLength += strlen (xxTokenString) + 1) >= 256) break;
  985.     (void) strcat (xxContinueString, xxTokenString);
  986.     (void) strcat (xxContinueString, " ");
  987.       }
  988.     ErrorMessageI (xxExpectedTokens, xxInformation, EiffelScan_Attribute.Position, xxString, xxContinueString);
  989.     xxSkipTokens (xxLocalRecoverySet, xxGlobalRecoverySet);
  990.   }
  991. }
  992.  
  993. static void xxRecoveryLiteral
  994. # if defined __STDC__ | defined __cplusplus
  995. (unsigned short xxExpected, unsigned short xxLocalRecoverySet, xxtUnionPtr xxGlobalRecoverySet)
  996. # else
  997. (xxExpected, xxLocalRecoverySet, xxGlobalRecoverySet)
  998. unsigned short    xxExpected, xxLocalRecoverySet;
  999. xxtUnionPtr    xxGlobalRecoverySet;
  1000. # endif
  1001. {
  1002.   if (! xxIsRepairMode) {
  1003.     xxErrorCount ++;
  1004.     ErrorMessage (xxSyntaxError, xxError, EiffelScan_Attribute.Position);
  1005.     ErrorMessageI (xxExpectedTokens, xxInformation, EiffelScan_Attribute.Position, xxString, ParserSIG_TokenName [xxExpected]);
  1006.     xxSkipTokens (xxLocalRecoverySet, xxGlobalRecoverySet);
  1007.   }
  1008.   if (xxToken != xxExpected) {
  1009.     ErrorMessageI (xxTokenInserted, xxRepair, EiffelScan_Attribute.Position, xxString, ParserSIG_TokenName [xxExpected]);
  1010.   } else {
  1011.     if (xxToken != xxEof) xxToken = EiffelScan_GetToken ();
  1012.     xxIsRepairMode = xxfalse;
  1013.   }
  1014. }
  1015.  
  1016. static void xxRecoveryTerminal
  1017. # if defined __STDC__ | defined __cplusplus
  1018. (unsigned short xxExpected, unsigned short xxLocalRecoverySet,
  1019. xxtUnionPtr xxGlobalRecoverySet, EiffelScan_tScanAttribute * xxRepairAttribute)
  1020. # else
  1021. (xxExpected, xxLocalRecoverySet, xxGlobalRecoverySet, xxRepairAttribute)
  1022. unsigned short    xxExpected, xxLocalRecoverySet;
  1023. xxtUnionPtr    xxGlobalRecoverySet;
  1024. EiffelScan_tScanAttribute    * xxRepairAttribute;
  1025. # endif
  1026. {
  1027.   if (! xxIsRepairMode) {
  1028.     xxErrorCount ++;
  1029.     ErrorMessage (xxSyntaxError, xxError, EiffelScan_Attribute.Position);
  1030.     ErrorMessageI (xxExpectedTokens, xxInformation, EiffelScan_Attribute.Position, xxString, ParserSIG_TokenName [xxExpected]);
  1031.     xxSkipTokens (xxLocalRecoverySet, xxGlobalRecoverySet);
  1032.   }
  1033.   if (xxToken != xxExpected) {
  1034.     ErrorMessageI (xxTokenInserted, xxRepair, EiffelScan_Attribute.Position, xxString, ParserSIG_TokenName [xxExpected]);
  1035.     EiffelScan_ErrorAttribute ((int) xxExpected, xxRepairAttribute);
  1036.   } else {
  1037.     * xxRepairAttribute = EiffelScan_Attribute;
  1038.     if (xxToken != xxEof) xxToken = EiffelScan_GetToken ();
  1039.     xxIsRepairMode = xxfalse;
  1040.   }
  1041. }
  1042.  
  1043. int ParserSIG ()
  1044. {
  1045.   xxErrorCount = 0;
  1046.   BeginParserSIG ();
  1047.   xxToken = EiffelScan_GetToken ();
  1048.   yyEiffel (& ParserSIG_ParsAttribute, (xxtUnionPtr) 0L);
  1049.   if (xxToken != xxEof) xxRecoveryLiteral (xxEof, 0, (xxtUnionPtr) 0L);
  1050.   return xxErrorCount;
  1051. }
  1052.  
  1053. static void yyEiffel
  1054. # if defined __STDC__ | defined __cplusplus
  1055. (ParserSIG_tParsAttribute * Eiffel0, xxtUnionPtr xxGlobalRecoverySet)
  1056. # else
  1057. (Eiffel0, xxGlobalRecoverySet)
  1058. ParserSIG_tParsAttribute    * Eiffel0;
  1059. xxtUnionPtr    xxGlobalRecoverySet;
  1060. # endif
  1061. {
  1062.   ParserSIG_tParsAttribute Class_declaration1;
  1063.   xxtUnion xxUnion;
  1064.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1065. /* line 147 "eiffel_sig.ell" */
  1066.  TreeRoot = mClasses0();                                
  1067.   for (;;) {
  1068.     xxUnion.xxLocalRecoverySet = 0; yyClass_declaration (& Class_declaration1, & xxUnion); /*  */
  1069. /* line 148 "eiffel_sig.ell" */
  1070.  TreeRoot = mClasses1(Class_declaration1.Tree, TreeRoot);                
  1071.     if (! ((xxVerticalSet [xxToken] & 1 << 0 /*  'class' deferred expanded 'indexing' */))) {
  1072.       if ((xxToken == 0 /* _EndOfFile */)) break;
  1073.       xxExpected (1, 1, xxGlobalRecoverySet); /*  'class' deferred expanded 'indexing' /  'class' deferred expanded 'indexing' */
  1074.       if (! ((xxVerticalSet [xxToken] & 1 << 0 /*  'class' deferred expanded 'indexing' */))) break;
  1075.     }
  1076.   }
  1077. /* line 149 "eiffel_sig.ell" */
  1078.  TreeRoot = mEiffel(ReverseTree(TreeRoot));                          
  1079. }
  1080.  
  1081. static void yyClass_declaration
  1082. # if defined __STDC__ | defined __cplusplus
  1083. (ParserSIG_tParsAttribute * Class_declaration0, xxtUnionPtr xxGlobalRecoverySet)
  1084. # else
  1085. (Class_declaration0, xxGlobalRecoverySet)
  1086. ParserSIG_tParsAttribute    * Class_declaration0;
  1087. xxtUnionPtr    xxGlobalRecoverySet;
  1088. # endif
  1089. {
  1090.   ParserSIG_tParsAttribute Indexing1;
  1091.   ParserSIG_tParsAttribute Class_header1;
  1092.   ParserSIG_tParsAttribute Formal_generics1;
  1093.   ParserSIG_tParsAttribute Obsolete1;
  1094.   ParserSIG_tParsAttribute Inheritance1;
  1095.   ParserSIG_tParsAttribute Creators1;
  1096.   ParserSIG_tParsAttribute Features1;
  1097.   ParserSIG_tParsAttribute Invariant1;
  1098.   xxtUnion xxUnion;
  1099.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1100. /* line 154 "eiffel_sig.ell" */
  1101.  Class_declaration0->Tree = mClass_declaration(mIndex_list0(), 
  1102.                                     mClass_header0(),
  1103.                                     mFormal_generics0(),
  1104.                                     mString0(),
  1105.                                     mParent_list0(),
  1106.                                     mCreators0(),
  1107.                                     mFeatures0(),
  1108.                                     mCondition0(),
  1109.                                     no_comment);                 
  1110.   for (;;) {
  1111.     if ((xxToken == 62 /* 'indexing' */)) {
  1112.       xxUnion.xxLocalRecoverySet = 3; yyIndexing (& Indexing1, & xxUnion); /*  '[' 'class' 'creation' deferred 'end' expanded 'feature' 'inherit' 'invariant' 'obsolete' */
  1113. /* line 163 "eiffel_sig.ell" */
  1114.  Class_declaration0->Tree->Class_declaration.Indexing = Indexing1.Tree;        
  1115.       break;
  1116.     } else if ((xxVerticalSet [xxToken] & 1 << 1 /*  'class' deferred expanded */) || xxIsRepairMode) break;
  1117.     xxExpected (1, 2, xxGlobalRecoverySet); /*  'class' deferred expanded 'indexing' /  '[' 'class' 'creation' deferred 'end' expanded 'feature' 'indexing' 'inherit' 'invariant' 'obsolete' */
  1118.   }
  1119.   xxUnion.xxLocalRecoverySet = 4; yyClass_header (& Class_header1, & xxUnion); /*  '[' 'creation' 'end' 'feature' 'inherit' 'invariant' 'obsolete' */
  1120. /* line 164 "eiffel_sig.ell" */
  1121.  Class_declaration0->Tree->Class_declaration.Class_header = Class_header1.Tree;
  1122.   for (;;) {
  1123.     if ((xxToken == 19 /* '[' */)) {
  1124.       xxUnion.xxLocalRecoverySet = 5; yyFormal_generics (& Formal_generics1, & xxUnion); /*  'creation' 'end' 'feature' 'inherit' 'invariant' 'obsolete' */
  1125. /* line 165 "eiffel_sig.ell" */
  1126.  Class_declaration0->Tree->Class_declaration.Formal_generics = Formal_generics1.Tree;     
  1127.       break;
  1128.     } else if ((xxVerticalSet [xxToken] & 1 << 2 /*  'creation' 'end' 'feature' 'inherit' 'invariant' 'obsolete' */) || xxIsRepairMode) break;
  1129.     xxExpected (4, 4, xxGlobalRecoverySet); /*  '[' 'creation' 'end' 'feature' 'inherit' 'invariant' 'obsolete' /  '[' 'creation' 'end' 'feature' 'inherit' 'invariant' 'obsolete' */
  1130.   }
  1131.   for (;;) {
  1132.     if ((xxToken == 73 /* 'obsolete' */)) {
  1133.       xxUnion.xxLocalRecoverySet = 6; yyObsolete (& Obsolete1, & xxUnion); /*  'creation' 'end' 'feature' 'inherit' 'invariant' */
  1134. /* line 166 "eiffel_sig.ell" */
  1135.  Class_declaration0->Tree->Class_declaration.Obsolete = Obsolete1.Tree;         
  1136.       break;
  1137.     } else if ((xxVerticalSet [xxToken] & 1 << 3 /*  'creation' 'end' 'feature' 'inherit' 'invariant' */) || xxIsRepairMode) break;
  1138.     xxExpected (5, 5, xxGlobalRecoverySet); /*  'creation' 'end' 'feature' 'inherit' 'invariant' 'obsolete' /  'creation' 'end' 'feature' 'inherit' 'invariant' 'obsolete' */
  1139.   }
  1140.   for (;;) {
  1141.     if ((xxToken == 64 /* 'inherit' */)) {
  1142.       xxUnion.xxLocalRecoverySet = 7; yyInheritance (& Inheritance1, & xxUnion); /*  'creation' 'end' 'feature' 'invariant' */
  1143. /* line 167 "eiffel_sig.ell" */
  1144.  Class_declaration0->Tree->Class_declaration.Inheritance = Inheritance1.Tree;        
  1145.       break;
  1146.     } else if ((xxVerticalSet [xxToken] & 1 << 4 /*  'creation' 'end' 'feature' 'invariant' */) || xxIsRepairMode) break;
  1147.     xxExpected (6, 6, xxGlobalRecoverySet); /*  'creation' 'end' 'feature' 'inherit' 'invariant' /  'creation' 'end' 'feature' 'inherit' 'invariant' */
  1148.   }
  1149.   for (;;) {
  1150.     if ((xxToken == 43 /* 'creation' */)) {
  1151.       xxUnion.xxLocalRecoverySet = 8; yyCreators (& Creators1, & xxUnion); /*  'end' 'feature' 'invariant' */
  1152. /* line 168 "eiffel_sig.ell" */
  1153.  Class_declaration0->Tree->Class_declaration.Creators = ReverseTree(Creators1.Tree);    
  1154.       break;
  1155.     } else if ((xxVerticalSet [xxToken] & 1 << 5 /*  'end' 'feature' 'invariant' */) || xxIsRepairMode) break;
  1156.     xxExpected (7, 7, xxGlobalRecoverySet); /*  'creation' 'end' 'feature' 'invariant' /  'creation' 'end' 'feature' 'invariant' */
  1157.   }
  1158.   for (;;) {
  1159.     if ((xxToken == 57 /* 'feature' */)) {
  1160.       xxUnion.xxLocalRecoverySet = 9; yyFeatures (& Features1, & xxUnion); /*  'end' 'invariant' */
  1161. /* line 169 "eiffel_sig.ell" */
  1162.  Class_declaration0->Tree->Class_declaration.Features = ReverseTree(Features1.Tree);    
  1163.       break;
  1164.     } else if ((xxVerticalSet [xxToken] & 1 << 6 /*  'end' 'invariant' */) || xxIsRepairMode) break;
  1165.     xxExpected (8, 8, xxGlobalRecoverySet); /*  'end' 'feature' 'invariant' /  'end' 'feature' 'invariant' */
  1166.   }
  1167.   for (;;) {
  1168.     if ((xxToken == 67 /* 'invariant' */)) {
  1169.       xxUnion.xxLocalRecoverySet = 10; yyInvariant (& Invariant1, & xxUnion); /*  'end' */
  1170. /* line 170 "eiffel_sig.ell" */
  1171.  Class_declaration0->Tree->Class_declaration.Invariant = Invariant1.Tree;        
  1172.       break;
  1173.     } else if ((xxToken == 51 /* 'end' */) || xxIsRepairMode) break;
  1174.     xxExpected (9, 9, xxGlobalRecoverySet); /*  'end' 'invariant' /  'end' 'invariant' */
  1175.   }
  1176. /* line 171 "eiffel_sig.ell" */
  1177.  comment_ref = no_comment;                                 
  1178.   if (xxToken != 51 /* 'end' */)
  1179.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  1180.   else {
  1181.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1182.   }
  1183. /* line 173 "eiffel_sig.ell" */
  1184.   Class_declaration0->Tree->Class_declaration.comment = comment_ref;            
  1185. }
  1186.  
  1187. static void yyIndexing
  1188. # if defined __STDC__ | defined __cplusplus
  1189. (ParserSIG_tParsAttribute * Indexing0, xxtUnionPtr xxGlobalRecoverySet)
  1190. # else
  1191. (Indexing0, xxGlobalRecoverySet)
  1192. ParserSIG_tParsAttribute    * Indexing0;
  1193. xxtUnionPtr    xxGlobalRecoverySet;
  1194. # endif
  1195. {
  1196.   ParserSIG_tParsAttribute Index_list1;
  1197.   xxtUnion xxUnion;
  1198.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1199.   if (xxToken != 62 /* 'indexing' */)
  1200.     xxRecoveryLiteral (62, 11, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus false 'indexing' true Id */
  1201.   else {
  1202.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1203.   }
  1204.   xxUnion.xxLocalRecoverySet = 0; yyIndex_list (& Index_list1, & xxUnion); /*  */
  1205. /* line 180 "eiffel_sig.ell" */
  1206.  Indexing0->Tree = ReverseTree(Index_list1.Tree);                     
  1207. }
  1208.  
  1209. static void yyIndex_list
  1210. # if defined __STDC__ | defined __cplusplus
  1211. (ParserSIG_tParsAttribute * Index_list0, xxtUnionPtr xxGlobalRecoverySet)
  1212. # else
  1213. (Index_list0, xxGlobalRecoverySet)
  1214. ParserSIG_tParsAttribute    * Index_list0;
  1215. xxtUnionPtr    xxGlobalRecoverySet;
  1216. # endif
  1217. {
  1218.   ParserSIG_tParsAttribute Index_clause1;
  1219.   xxtUnion xxUnion;
  1220.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1221. /* line 183 "eiffel_sig.ell" */
  1222.  Index_list0->Tree = mIndex_list0();                             
  1223.   for (;;) {
  1224.     if ((xxVerticalSet [xxToken] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string ';' plus minus false true Id */)) {
  1225.       for (;;) {
  1226.         xxUnion.xxLocalRecoverySet = 13; yyIndex_clause (& Index_clause1, & xxUnion); /*  ';' */
  1227. /* line 184 "eiffel_sig.ell" */
  1228.  Index_list0->Tree = mIndex_list1(Index_clause1.Tree, Index_list0->Tree);         
  1229.         if (! ((xxToken == 7 /* ';' */))) {
  1230.           if ((xxVerticalSet [xxToken] & 1 << 1 /*  'class' deferred expanded */)) break;
  1231.           xxExpected (13, 12, xxGlobalRecoverySet); /*  ';' /  Character_constant Bit_sequence Integer Real Manifest_string ';' plus minus false true Id */
  1232.           if (! ((xxToken == 7 /* ';' */) || (xxVerticalSet [xxToken] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string ';' plus minus false true Id */))) break;
  1233.         }
  1234.         if (xxToken != 7 /* ';' */)
  1235.           xxRecoveryLiteral (7, 12, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string ';' plus minus false true Id */
  1236.         else {
  1237.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1238.         }
  1239.       }
  1240.       break;
  1241.     } else if ((xxVerticalSet [xxToken] & 1 << 1 /*  'class' deferred expanded */) || xxIsRepairMode) break;
  1242.     xxExpected (12, 12, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string ';' plus minus false true Id /  Character_constant Bit_sequence Integer Real Manifest_string ';' plus minus false true Id */
  1243.   }
  1244. }
  1245.  
  1246. static void yyIndex_clause
  1247. # if defined __STDC__ | defined __cplusplus
  1248. (ParserSIG_tParsAttribute * Index_clause0, xxtUnionPtr xxGlobalRecoverySet)
  1249. # else
  1250. (Index_clause0, xxGlobalRecoverySet)
  1251. ParserSIG_tParsAttribute    * Index_clause0;
  1252. xxtUnionPtr    xxGlobalRecoverySet;
  1253. # endif
  1254. {
  1255.   ParserSIG_tParsAttribute Identifier1;
  1256.   ParserSIG_tParsAttribute Index_terms1, Index_terms2;
  1257.   ParserSIG_tParsAttribute Manifest_constant1;
  1258.   xxtUnion xxUnion;
  1259.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1260.   for (;;) {
  1261.     switch (xxToken) {
  1262.     case 106 /* Id */ :; 
  1263.       xxUnion.xxLocalRecoverySet = 14; yyIdentifier (& Identifier1, & xxUnion); /*  ',' ':' */
  1264.       for (;;) {
  1265.         switch (xxToken) {
  1266.         case 9 /* ':' */ :; 
  1267.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1268.           xxUnion.xxLocalRecoverySet = 0; yyIndex_terms (& Index_terms1, & xxUnion); /*  */
  1269. /* line 190 "eiffel_sig.ell" */
  1270.  Index_clause0->Tree = mIndex_clause(Identifier1.Tree, Index_terms1.Tree);         
  1271.           goto xx2;
  1272.         case 7 /* ';' */ :; 
  1273.         case 8 /* ',' */ :; 
  1274.         case 42 /* 'class' */ :; 
  1275.         case 46 /* deferred */ :; 
  1276.         case 53 /* expanded */ :; 
  1277.           for (;;) {
  1278.             if ((xxToken == 8 /* ',' */)) {
  1279.               xxToken =               EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1280.               xxUnion.xxLocalRecoverySet = 0; yyIndex_terms (& Index_terms2, & xxUnion); /*  */
  1281. /* line 191 "eiffel_sig.ell" */
  1282.  Index_clause0->Tree = mIndex_clause(mManifest_constant0(NoPosition),
  1283.                                 mlist(Identifier1.Tree, Index_terms2.Tree) );     
  1284.               break;
  1285.             } else if ((xxVerticalSet [xxToken + 108] & 1 << 0 /*  ';' 'class' deferred expanded */) || xxIsRepairMode) break;
  1286.             xxExpected (16, 16, xxGlobalRecoverySet); /*  ',' /  ',' */
  1287.           }
  1288.           goto xx2;
  1289.         case 10:;
  1290.         case 11:;
  1291.         case 12:;
  1292.         case 13:;
  1293.         case 14:;
  1294.         case 15:;
  1295.         case 16:;
  1296.         case 17:;
  1297.         case 18:;
  1298.         case 19:;
  1299.         case 20:;
  1300.         case 21:;
  1301.         case 22:;
  1302.         case 23:;
  1303.         case 24:;
  1304.         case 25:;
  1305.         case 26:;
  1306.         case 27:;
  1307.         case 28:;
  1308.         case 29:;
  1309.         case 30:;
  1310.         case 31:;
  1311.         case 32:;
  1312.         case 33:;
  1313.         case 34:;
  1314.         case 35:;
  1315.         case 36:;
  1316.         case 37:;
  1317.         case 38:;
  1318.         case 39:;
  1319.         case 40:;
  1320.         case 41:;
  1321.         case 43:;
  1322.         case 44:;
  1323.         case 45:;
  1324.         case 47:;
  1325.         case 48:;
  1326.         case 49:;
  1327.         case 50:;
  1328.         case 51:;
  1329.         case 52:;
  1330.         default:
  1331.           if (xxIsRepairMode) {
  1332.             for (;;) {
  1333.               if ((xxToken == 8 /* ',' */)) {
  1334.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1335.                 xxUnion.xxLocalRecoverySet = 0; yyIndex_terms (& Index_terms2, & xxUnion); /*  */
  1336. /* line 191 "eiffel_sig.ell" */
  1337.  Index_clause0->Tree = mIndex_clause(mManifest_constant0(NoPosition),
  1338.                                 mlist(Identifier1.Tree, Index_terms2.Tree) );     
  1339.                 break;
  1340.               } else if ((xxVerticalSet [xxToken + 108] & 1 << 0 /*  ';' 'class' deferred expanded */) || xxIsRepairMode) break;
  1341.               xxExpected (16, 16, xxGlobalRecoverySet); /*  ',' /  ',' */
  1342.             }
  1343.             goto xx2;
  1344.           }
  1345. xxUnexpected (14, xxGlobalRecoverySet); /*  ',' ':' */
  1346.         }
  1347.       }
  1348.       xx2:;
  1349.       goto xx1;
  1350.     case 1 /* Character_constant */ :; 
  1351.     case 2 /* Bit_sequence */ :; 
  1352.     case 3 /* Integer */ :; 
  1353.     case 4 /* Real */ :; 
  1354.     case 5 /* Manifest_string */ :; 
  1355.     case 7 /* ';' */ :; 
  1356.     case 8 /* ',' */ :; 
  1357.     case 29 /* plus */ :; 
  1358.     case 30 /* minus */ :; 
  1359.     case 42 /* 'class' */ :; 
  1360.     case 46 /* deferred */ :; 
  1361.     case 53 /* expanded */ :; 
  1362.     case 56 /* false */ :; 
  1363.     case 90 /* true */ :; 
  1364.       xxUnion.xxLocalRecoverySet = 16; yyManifest_constant (& Manifest_constant1, & xxUnion); /*  ',' */
  1365. /* line 193 "eiffel_sig.ell" */
  1366.  Index_clause0->Tree = mIndex_clause(mManifest_constant0(NoPosition),
  1367.                                 mlist(Manifest_constant1.Tree, mnolist()));     
  1368.       for (;;) {
  1369.         if ((xxToken == 8 /* ',' */)) {
  1370.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1371.           xxUnion.xxLocalRecoverySet = 0; yyIndex_terms (& Index_terms1, & xxUnion); /*  */
  1372. /* line 195 "eiffel_sig.ell" */
  1373.  Index_clause0->Tree = mIndex_clause(mManifest_constant0(NoPosition),
  1374.                             mlist(Manifest_constant1.Tree, Index_terms1.Tree));     
  1375.           break;
  1376.         } else if ((xxVerticalSet [xxToken + 108] & 1 << 0 /*  ';' 'class' deferred expanded */) || xxIsRepairMode) break;
  1377.         xxExpected (16, 16, xxGlobalRecoverySet); /*  ',' /  ',' */
  1378.       }
  1379.       goto xx1;
  1380.     case 6:;
  1381.     case 9:;
  1382.     case 10:;
  1383.     case 11:;
  1384.     case 12:;
  1385.     case 13:;
  1386.     case 14:;
  1387.     case 15:;
  1388.     case 16:;
  1389.     case 17:;
  1390.     case 18:;
  1391.     case 19:;
  1392.     case 20:;
  1393.     case 21:;
  1394.     case 22:;
  1395.     case 23:;
  1396.     case 24:;
  1397.     case 25:;
  1398.     case 26:;
  1399.     case 27:;
  1400.     case 28:;
  1401.     case 31:;
  1402.     case 32:;
  1403.     case 33:;
  1404.     case 34:;
  1405.     case 35:;
  1406.     case 36:;
  1407.     case 37:;
  1408.     case 38:;
  1409.     case 39:;
  1410.     case 40:;
  1411.     case 41:;
  1412.     case 43:;
  1413.     case 44:;
  1414.     case 45:;
  1415.     case 47:;
  1416.     case 48:;
  1417.     case 49:;
  1418.     case 50:;
  1419.     case 51:;
  1420.     case 52:;
  1421.     case 54:;
  1422.     case 55:;
  1423.     case 57:;
  1424.     case 58:;
  1425.     case 59:;
  1426.     case 60:;
  1427.     case 61:;
  1428.     case 62:;
  1429.     case 63:;
  1430.     case 64:;
  1431.     case 65:;
  1432.     case 66:;
  1433.     case 67:;
  1434.     case 68:;
  1435.     case 69:;
  1436.     case 70:;
  1437.     case 71:;
  1438.     case 72:;
  1439.     case 73:;
  1440.     case 74:;
  1441.     case 75:;
  1442.     case 76:;
  1443.     case 77:;
  1444.     case 78:;
  1445.     case 79:;
  1446.     case 80:;
  1447.     case 81:;
  1448.     case 82:;
  1449.     case 83:;
  1450.     case 84:;
  1451.     case 85:;
  1452.     case 86:;
  1453.     case 87:;
  1454.     case 88:;
  1455.     case 89:;
  1456.     case 91:;
  1457.     case 92:;
  1458.     case 93:;
  1459.     case 94:;
  1460.     case 95:;
  1461.     case 96:;
  1462.     case 97:;
  1463.     case 98:;
  1464.     case 99:;
  1465.     case 100:;
  1466.     case 101:;
  1467.     case 102:;
  1468.     case 103:;
  1469.     case 104:;
  1470.     case 105:;
  1471.     default:
  1472.       if (xxIsRepairMode) {
  1473.         xxUnion.xxLocalRecoverySet = 14; yyIdentifier (& Identifier1, & xxUnion); /*  ',' ':' */
  1474.         for (;;) {
  1475.           switch (xxToken) {
  1476.           case 9 /* ':' */ :; 
  1477.             if (xxToken != 9 /* ':' */)
  1478.               xxRecoveryLiteral (9, 15, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string ':' plus minus false true Id */
  1479.             else {
  1480.               xxToken =             EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1481.             }
  1482.             xxUnion.xxLocalRecoverySet = 0; yyIndex_terms (& Index_terms1, & xxUnion); /*  */
  1483. /* line 190 "eiffel_sig.ell" */
  1484.  Index_clause0->Tree = mIndex_clause(Identifier1.Tree, Index_terms1.Tree);         
  1485.             goto xx3;
  1486.           case 7 /* ';' */ :; 
  1487.           case 8 /* ',' */ :; 
  1488.           case 42 /* 'class' */ :; 
  1489.           case 46 /* deferred */ :; 
  1490.           case 53 /* expanded */ :; 
  1491.             for (;;) {
  1492.               if ((xxToken == 8 /* ',' */)) {
  1493.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1494.                 xxUnion.xxLocalRecoverySet = 0; yyIndex_terms (& Index_terms2, & xxUnion); /*  */
  1495. /* line 191 "eiffel_sig.ell" */
  1496.  Index_clause0->Tree = mIndex_clause(mManifest_constant0(NoPosition),
  1497.                                 mlist(Identifier1.Tree, Index_terms2.Tree) );     
  1498.                 break;
  1499.               } else if ((xxVerticalSet [xxToken + 108] & 1 << 0 /*  ';' 'class' deferred expanded */) || xxIsRepairMode) break;
  1500.               xxExpected (16, 16, xxGlobalRecoverySet); /*  ',' /  ',' */
  1501.             }
  1502.             goto xx3;
  1503.           case 10:;
  1504.           case 11:;
  1505.           case 12:;
  1506.           case 13:;
  1507.           case 14:;
  1508.           case 15:;
  1509.           case 16:;
  1510.           case 17:;
  1511.           case 18:;
  1512.           case 19:;
  1513.           case 20:;
  1514.           case 21:;
  1515.           case 22:;
  1516.           case 23:;
  1517.           case 24:;
  1518.           case 25:;
  1519.           case 26:;
  1520.           case 27:;
  1521.           case 28:;
  1522.           case 29:;
  1523.           case 30:;
  1524.           case 31:;
  1525.           case 32:;
  1526.           case 33:;
  1527.           case 34:;
  1528.           case 35:;
  1529.           case 36:;
  1530.           case 37:;
  1531.           case 38:;
  1532.           case 39:;
  1533.           case 40:;
  1534.           case 41:;
  1535.           case 43:;
  1536.           case 44:;
  1537.           case 45:;
  1538.           case 47:;
  1539.           case 48:;
  1540.           case 49:;
  1541.           case 50:;
  1542.           case 51:;
  1543.           case 52:;
  1544.           default:
  1545.             if (xxIsRepairMode) {
  1546.               for (;;) {
  1547.                 if ((xxToken == 8 /* ',' */)) {
  1548.                   xxToken =                   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1549.                   xxUnion.xxLocalRecoverySet = 0; yyIndex_terms (& Index_terms2, & xxUnion); /*  */
  1550. /* line 191 "eiffel_sig.ell" */
  1551.  Index_clause0->Tree = mIndex_clause(mManifest_constant0(NoPosition),
  1552.                                 mlist(Identifier1.Tree, Index_terms2.Tree) );     
  1553.                   break;
  1554.                 } else if ((xxVerticalSet [xxToken + 108] & 1 << 0 /*  ';' 'class' deferred expanded */) || xxIsRepairMode) break;
  1555.                 xxExpected (16, 16, xxGlobalRecoverySet); /*  ',' /  ',' */
  1556.               }
  1557.               goto xx3;
  1558.             }
  1559. xxUnexpected (14, xxGlobalRecoverySet); /*  ',' ':' */
  1560.           }
  1561.         }
  1562.         xx3:;
  1563.         goto xx1;
  1564.       }
  1565. xxUnexpected (17, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */
  1566.     }
  1567.   }
  1568.   xx1:;
  1569. }
  1570.  
  1571. static void yyIndex_terms
  1572. # if defined __STDC__ | defined __cplusplus
  1573. (ParserSIG_tParsAttribute * Index_terms0, xxtUnionPtr xxGlobalRecoverySet)
  1574. # else
  1575. (Index_terms0, xxGlobalRecoverySet)
  1576. ParserSIG_tParsAttribute    * Index_terms0;
  1577. xxtUnionPtr    xxGlobalRecoverySet;
  1578. # endif
  1579. {
  1580.   ParserSIG_tParsAttribute Index_value1;
  1581.   xxtUnion xxUnion;
  1582.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1583. /* line 200 "eiffel_sig.ell" */
  1584.  Index_terms0->Tree = mnolist();                            
  1585.   for (;;) {
  1586.     xxUnion.xxLocalRecoverySet = 16; yyIndex_value (& Index_value1, & xxUnion); /*  ',' */
  1587. /* line 201 "eiffel_sig.ell" */
  1588.  Index_terms0->Tree = mlist(Index_value1.Tree, Index_terms0->Tree);             
  1589.     if (! ((xxToken == 8 /* ',' */))) {
  1590.       if ((xxVerticalSet [xxToken + 108] & 1 << 0 /*  ';' 'class' deferred expanded */)) break;
  1591.       xxExpected (16, 17, xxGlobalRecoverySet); /*  ',' /  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */
  1592.       if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 108] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */))) break;
  1593.     }
  1594.     if (xxToken != 8 /* ',' */)
  1595.       xxRecoveryLiteral (8, 17, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */
  1596.     else {
  1597.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1598.     }
  1599.   }
  1600. /* line 202 "eiffel_sig.ell" */
  1601.  Index_terms0->Tree = ReverseTree(Index_terms0->Tree);                    
  1602. }
  1603.  
  1604. static void yyIndex_value
  1605. # if defined __STDC__ | defined __cplusplus
  1606. (ParserSIG_tParsAttribute * Index_value0, xxtUnionPtr xxGlobalRecoverySet)
  1607. # else
  1608. (Index_value0, xxGlobalRecoverySet)
  1609. ParserSIG_tParsAttribute    * Index_value0;
  1610. xxtUnionPtr    xxGlobalRecoverySet;
  1611. # endif
  1612. {
  1613.   ParserSIG_tParsAttribute Identifier1;
  1614.   ParserSIG_tParsAttribute Manifest_constant1;
  1615.   xxtUnion xxUnion;
  1616.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1617.   for (;;) {
  1618.     switch (xxToken) {
  1619.     case 106 /* Id */ :; 
  1620.       xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  1621. /* line 206 "eiffel_sig.ell" */
  1622.  Index_value0->Tree = Identifier1.Tree;                          
  1623.       goto xx4;
  1624.     case 1 /* Character_constant */ :; 
  1625.     case 2 /* Bit_sequence */ :; 
  1626.     case 3 /* Integer */ :; 
  1627.     case 4 /* Real */ :; 
  1628.     case 5 /* Manifest_string */ :; 
  1629.     case 7 /* ';' */ :; 
  1630.     case 8 /* ',' */ :; 
  1631.     case 29 /* plus */ :; 
  1632.     case 30 /* minus */ :; 
  1633.     case 42 /* 'class' */ :; 
  1634.     case 46 /* deferred */ :; 
  1635.     case 53 /* expanded */ :; 
  1636.     case 56 /* false */ :; 
  1637.     case 90 /* true */ :; 
  1638.       xxUnion.xxLocalRecoverySet = 0; yyManifest_constant (& Manifest_constant1, & xxUnion); /*  */
  1639. /* line 207 "eiffel_sig.ell" */
  1640.  Index_value0->Tree = Manifest_constant1.Tree;                        
  1641.       goto xx4;
  1642.     case 6:;
  1643.     case 9:;
  1644.     case 10:;
  1645.     case 11:;
  1646.     case 12:;
  1647.     case 13:;
  1648.     case 14:;
  1649.     case 15:;
  1650.     case 16:;
  1651.     case 17:;
  1652.     case 18:;
  1653.     case 19:;
  1654.     case 20:;
  1655.     case 21:;
  1656.     case 22:;
  1657.     case 23:;
  1658.     case 24:;
  1659.     case 25:;
  1660.     case 26:;
  1661.     case 27:;
  1662.     case 28:;
  1663.     case 31:;
  1664.     case 32:;
  1665.     case 33:;
  1666.     case 34:;
  1667.     case 35:;
  1668.     case 36:;
  1669.     case 37:;
  1670.     case 38:;
  1671.     case 39:;
  1672.     case 40:;
  1673.     case 41:;
  1674.     case 43:;
  1675.     case 44:;
  1676.     case 45:;
  1677.     case 47:;
  1678.     case 48:;
  1679.     case 49:;
  1680.     case 50:;
  1681.     case 51:;
  1682.     case 52:;
  1683.     case 54:;
  1684.     case 55:;
  1685.     case 57:;
  1686.     case 58:;
  1687.     case 59:;
  1688.     case 60:;
  1689.     case 61:;
  1690.     case 62:;
  1691.     case 63:;
  1692.     case 64:;
  1693.     case 65:;
  1694.     case 66:;
  1695.     case 67:;
  1696.     case 68:;
  1697.     case 69:;
  1698.     case 70:;
  1699.     case 71:;
  1700.     case 72:;
  1701.     case 73:;
  1702.     case 74:;
  1703.     case 75:;
  1704.     case 76:;
  1705.     case 77:;
  1706.     case 78:;
  1707.     case 79:;
  1708.     case 80:;
  1709.     case 81:;
  1710.     case 82:;
  1711.     case 83:;
  1712.     case 84:;
  1713.     case 85:;
  1714.     case 86:;
  1715.     case 87:;
  1716.     case 88:;
  1717.     case 89:;
  1718.     case 91:;
  1719.     case 92:;
  1720.     case 93:;
  1721.     case 94:;
  1722.     case 95:;
  1723.     case 96:;
  1724.     case 97:;
  1725.     case 98:;
  1726.     case 99:;
  1727.     case 100:;
  1728.     case 101:;
  1729.     case 102:;
  1730.     case 103:;
  1731.     case 104:;
  1732.     case 105:;
  1733.     default:
  1734.       if (xxIsRepairMode) {
  1735.         xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  1736. /* line 206 "eiffel_sig.ell" */
  1737.  Index_value0->Tree = Identifier1.Tree;                          
  1738.         goto xx4;
  1739.       }
  1740. xxUnexpected (18, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus false true Id */
  1741.     }
  1742.   }
  1743.   xx4:;
  1744. }
  1745.  
  1746. static void yyClass_header
  1747. # if defined __STDC__ | defined __cplusplus
  1748. (ParserSIG_tParsAttribute * Class_header0, xxtUnionPtr xxGlobalRecoverySet)
  1749. # else
  1750. (Class_header0, xxGlobalRecoverySet)
  1751. ParserSIG_tParsAttribute    * Class_header0;
  1752. xxtUnionPtr    xxGlobalRecoverySet;
  1753. # endif
  1754. {
  1755.     EiffelScan_tScanAttribute deferred1;
  1756.     EiffelScan_tScanAttribute expanded1;
  1757.   ParserSIG_tParsAttribute Class_name1;
  1758.   xxtUnion xxUnion;
  1759.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1760.   for (;;) {
  1761.     switch (xxToken) {
  1762.     case 46 /* deferred */ :; 
  1763.       deferred1 =       EiffelScan_Attribute;
  1764.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1765.       if (xxToken != 42 /* 'class' */)
  1766.         xxRecoveryLiteral (42, 20, xxGlobalRecoverySet); /*  BOOLEAN CHARACTER 'class' DOUBLE INTEGER _NONE REAL STRING Id */
  1767.       else {
  1768.         xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1769.       }
  1770.       xxUnion.xxLocalRecoverySet = 0; yyClass_name (& Class_name1, & xxUnion); /*  */
  1771. /* line 213 "eiffel_sig.ell" */
  1772.  Class_header0->Tree = mDeferred_class(Class_name1.Tree);            
  1773.       goto xx5;
  1774.     case 53 /* expanded */ :; 
  1775.       expanded1 =       EiffelScan_Attribute;
  1776.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1777.       if (xxToken != 42 /* 'class' */)
  1778.         xxRecoveryLiteral (42, 20, xxGlobalRecoverySet); /*  BOOLEAN CHARACTER 'class' DOUBLE INTEGER _NONE REAL STRING Id */
  1779.       else {
  1780.         xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1781.       }
  1782.       xxUnion.xxLocalRecoverySet = 0; yyClass_name (& Class_name1, & xxUnion); /*  */
  1783. /* line 214 "eiffel_sig.ell" */
  1784.  Class_header0->Tree = mExpanded_class(Class_name1.Tree);            
  1785.       goto xx5;
  1786.     case 42 /* 'class' */ :; 
  1787.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1788.       xxUnion.xxLocalRecoverySet = 0; yyClass_name (& Class_name1, & xxUnion); /*  */
  1789. /* line 215 "eiffel_sig.ell" */
  1790.  Class_header0->Tree = mClass(Class_name1.Tree);                
  1791.       goto xx5;
  1792.     case 43:;
  1793.     case 44:;
  1794.     case 45:;
  1795.     case 47:;
  1796.     case 48:;
  1797.     case 49:;
  1798.     case 50:;
  1799.     case 51:;
  1800.     case 52:;
  1801.     default:
  1802.       if (xxIsRepairMode) {
  1803.         if (xxToken != 42 /* 'class' */)
  1804.           xxRecoveryLiteral (42, 20, xxGlobalRecoverySet); /*  BOOLEAN CHARACTER 'class' DOUBLE INTEGER _NONE REAL STRING Id */
  1805.         else {
  1806.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1807.         }
  1808.         xxUnion.xxLocalRecoverySet = 0; yyClass_name (& Class_name1, & xxUnion); /*  */
  1809. /* line 215 "eiffel_sig.ell" */
  1810.  Class_header0->Tree = mClass(Class_name1.Tree);                
  1811.         goto xx5;
  1812.       }
  1813.       xxExpected (22, 22, xxGlobalRecoverySet); /*  'class' deferred expanded /  'class' deferred expanded */
  1814.     }
  1815.   }
  1816.   xx5:;
  1817. }
  1818.  
  1819. static void yyClass_name
  1820. # if defined __STDC__ | defined __cplusplus
  1821. (ParserSIG_tParsAttribute * Class_name0, xxtUnionPtr xxGlobalRecoverySet)
  1822. # else
  1823. (Class_name0, xxGlobalRecoverySet)
  1824. ParserSIG_tParsAttribute    * Class_name0;
  1825. xxtUnionPtr    xxGlobalRecoverySet;
  1826. # endif
  1827. {
  1828.   ParserSIG_tParsAttribute Formal_generic_name1;
  1829.   xxtUnion xxUnion;
  1830.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1831.   xxUnion.xxLocalRecoverySet = 0; yyFormal_generic_name (& Formal_generic_name1, & xxUnion); /*  */
  1832. /* line 219 "eiffel_sig.ell" */
  1833.  Class_name0->Tree = Formal_generic_name1.Tree;                    
  1834. }
  1835.  
  1836. static void yyObsolete
  1837. # if defined __STDC__ | defined __cplusplus
  1838. (ParserSIG_tParsAttribute * Obsolete0, xxtUnionPtr xxGlobalRecoverySet)
  1839. # else
  1840. (Obsolete0, xxGlobalRecoverySet)
  1841. ParserSIG_tParsAttribute    * Obsolete0;
  1842. xxtUnionPtr    xxGlobalRecoverySet;
  1843. # endif
  1844. {
  1845.   ParserSIG_tParsAttribute Message1;
  1846.   xxtUnion xxUnion;
  1847.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1848.   if (xxToken != 73 /* 'obsolete' */)
  1849.     xxRecoveryLiteral (73, 23, xxGlobalRecoverySet); /*  Manifest_string 'obsolete' */
  1850.   else {
  1851.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1852.   }
  1853. /* line 224 "eiffel_sig.ell" */
  1854.  comment_ref = no_comment;                                
  1855.   xxUnion.xxLocalRecoverySet = 0; yyMessage (& Message1, & xxUnion); /*  */
  1856. /* line 225 "eiffel_sig.ell" */
  1857.  Obsolete0->Tree = Message1.Tree;                             
  1858. }
  1859.  
  1860. static void yyMessage
  1861. # if defined __STDC__ | defined __cplusplus
  1862. (ParserSIG_tParsAttribute * Message0, xxtUnionPtr xxGlobalRecoverySet)
  1863. # else
  1864. (Message0, xxGlobalRecoverySet)
  1865. ParserSIG_tParsAttribute    * Message0;
  1866. xxtUnionPtr    xxGlobalRecoverySet;
  1867. # endif
  1868. {
  1869.     EiffelScan_tScanAttribute Manifest_string1;
  1870.   if (xxToken != 5 /* Manifest_string */)
  1871.     xxRecoveryTerminal (5, 24, xxGlobalRecoverySet, & Manifest_string1); /*  Manifest_string */
  1872.   else {
  1873.     Manifest_string1 =   EiffelScan_Attribute;
  1874.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1875.   }
  1876. /* line 230 "eiffel_sig.ell" */
  1877.  Message0->Tree = mString(Manifest_string1.StringRef, Manifest_string1.Position);    
  1878. }
  1879.  
  1880. static void yyFeatures
  1881. # if defined __STDC__ | defined __cplusplus
  1882. (ParserSIG_tParsAttribute * Features0, xxtUnionPtr xxGlobalRecoverySet)
  1883. # else
  1884. (Features0, xxGlobalRecoverySet)
  1885. ParserSIG_tParsAttribute    * Features0;
  1886. xxtUnionPtr    xxGlobalRecoverySet;
  1887. # endif
  1888. {
  1889.   ParserSIG_tParsAttribute Feature_clause1;
  1890.   xxtUnion xxUnion;
  1891.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1892. /* line 234 "eiffel_sig.ell" */
  1893.  Features0->Tree = mFeatures0();                            
  1894.   if (xxToken != 57 /* 'feature' */)
  1895.     xxRecoveryLiteral (57, 25, xxGlobalRecoverySet); /*  '{' 'feature' 'frozen' infix prefix Id */
  1896.   else {
  1897.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1898.   }
  1899.   for (;;) {
  1900.     xxUnion.xxLocalRecoverySet = 26; yyFeature_clause (& Feature_clause1, & xxUnion); /*  'feature' */
  1901. /* line 236 "eiffel_sig.ell" */
  1902.  Features0->Tree = mFeatures1(Feature_clause1.Tree, Features0->Tree);            
  1903.     if (! ((xxToken == 57 /* 'feature' */))) {
  1904.       if ((xxVerticalSet [xxToken] & 1 << 6 /*  'end' 'invariant' */)) break;
  1905.       xxExpected (26, 25, xxGlobalRecoverySet); /*  'feature' /  '{' 'feature' 'frozen' infix prefix Id */
  1906.       if (! ((xxToken == 57 /* 'feature' */) || (xxVerticalSet [xxToken + 108] & 1 << 2 /*  '{' 'feature' 'frozen' infix prefix Id */))) break;
  1907.     }
  1908.     if (xxToken != 57 /* 'feature' */)
  1909.       xxRecoveryLiteral (57, 25, xxGlobalRecoverySet); /*  '{' 'feature' 'frozen' infix prefix Id */
  1910.     else {
  1911.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1912.     }
  1913.   }
  1914. }
  1915.  
  1916. static void yyFeature_clause
  1917. # if defined __STDC__ | defined __cplusplus
  1918. (ParserSIG_tParsAttribute * Feature_clause0, xxtUnionPtr xxGlobalRecoverySet)
  1919. # else
  1920. (Feature_clause0, xxGlobalRecoverySet)
  1921. ParserSIG_tParsAttribute    * Feature_clause0;
  1922. xxtUnionPtr    xxGlobalRecoverySet;
  1923. # endif
  1924. {
  1925.   ParserSIG_tParsAttribute Clients1;
  1926.   ParserSIG_tParsAttribute Feature_declaration_list1;
  1927.   xxtUnion xxUnion;
  1928.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1929. /* line 240 "eiffel_sig.ell" */
  1930.  Feature_clause0->Tree = mFeature_clause(mClients0(), no_comment, mFeature_decls0());    
  1931.   for (;;) {
  1932.     if ((xxToken == 21 /* '{' */)) {
  1933.       xxUnion.xxLocalRecoverySet = 28; yyClients (& Clients1, & xxUnion); /*  'frozen' infix prefix Id */
  1934. /* line 241 "eiffel_sig.ell" */
  1935.  Feature_clause0->Tree->Feature_clause.Clients = Clients1.Tree;            
  1936.       break;
  1937.     } else if ((xxVerticalSet [xxToken + 108] & 1 << 3 /*  'end' 'feature' 'frozen' infix 'invariant' prefix Id */) || xxIsRepairMode) break;
  1938.     xxExpected (27, 27, xxGlobalRecoverySet); /*  '{' 'frozen' infix prefix Id /  '{' 'frozen' infix prefix Id */
  1939.   }
  1940. /* line 242 "eiffel_sig.ell" */
  1941.  Feature_clause0->Tree->Feature_clause.comment = comment_ref;                
  1942.   xxUnion.xxLocalRecoverySet = 0; yyFeature_declaration_list (& Feature_declaration_list1, & xxUnion); /*  */
  1943. /* line 243 "eiffel_sig.ell" */
  1944.  Feature_clause0->Tree->Feature_clause.Feature_decls = 
  1945.                             ReverseTree(Feature_declaration_list1.Tree);         
  1946. }
  1947.  
  1948. static void yyFeature_declaration_list
  1949. # if defined __STDC__ | defined __cplusplus
  1950. (ParserSIG_tParsAttribute * Feature_declaration_list0, xxtUnionPtr xxGlobalRecoverySet)
  1951. # else
  1952. (Feature_declaration_list0, xxGlobalRecoverySet)
  1953. ParserSIG_tParsAttribute    * Feature_declaration_list0;
  1954. xxtUnionPtr    xxGlobalRecoverySet;
  1955. # endif
  1956. {
  1957.   ParserSIG_tParsAttribute Feature_declaration1, Feature_declaration2;
  1958.   xxtUnion xxUnion;
  1959.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  1960. /* line 247 "eiffel_sig.ell" */
  1961.  Feature_declaration_list0->Tree = mFeature_decls0();                
  1962.   for (;;) {
  1963.     if ((xxVerticalSet [xxToken + 108] & 1 << 4 /*  'frozen' infix prefix Id */)) {
  1964.       xxUnion.xxLocalRecoverySet = 29; yyFeature_declaration (& Feature_declaration1, & xxUnion); /*  ';' 'frozen' infix prefix Id */
  1965. /* line 248 "eiffel_sig.ell" */
  1966.  Feature_declaration_list0->Tree = mFeature_decls1(Feature_declaration1.Tree, 
  1967.                                 Feature_declaration_list0->Tree);         
  1968.       for (;;) {
  1969.         if ((xxVerticalSet [xxToken + 108] & 1 << 5 /*  ';' 'frozen' infix prefix Id */)) {
  1970.           for (;;) {
  1971.             if ((xxToken == 7 /* ';' */)) {
  1972.               xxToken =               EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  1973.               break;
  1974.             } else if ((xxVerticalSet [xxToken + 108] & 1 << 4 /*  'frozen' infix prefix Id */) || xxIsRepairMode) break;
  1975.             xxExpected (29, 29, xxGlobalRecoverySet); /*  ';' 'frozen' infix prefix Id /  ';' 'frozen' infix prefix Id */
  1976.           }
  1977.           xxUnion.xxLocalRecoverySet = 0; yyFeature_declaration (& Feature_declaration2, & xxUnion); /*  */
  1978. /* line 250 "eiffel_sig.ell" */
  1979.  Feature_declaration_list0->Tree = mFeature_decls1(Feature_declaration2.Tree,
  1980.                                 Feature_declaration_list0->Tree);         
  1981.         } else if ((xxVerticalSet [xxToken] & 1 << 5 /*  'end' 'feature' 'invariant' */) || xxIsRepairMode) break;
  1982.         else
  1983.           xxExpected (29, 29, xxGlobalRecoverySet); /*  ';' 'frozen' infix prefix Id /  ';' 'frozen' infix prefix Id */
  1984.       }
  1985.       break;
  1986.     } else if ((xxVerticalSet [xxToken] & 1 << 5 /*  'end' 'feature' 'invariant' */) || xxIsRepairMode) break;
  1987.     xxExpected (28, 28, xxGlobalRecoverySet); /*  'frozen' infix prefix Id /  'frozen' infix prefix Id */
  1988.   }
  1989. }
  1990.  
  1991. static void yyFeature_declaration
  1992. # if defined __STDC__ | defined __cplusplus
  1993. (ParserSIG_tParsAttribute * Feature_declaration0, xxtUnionPtr xxGlobalRecoverySet)
  1994. # else
  1995. (Feature_declaration0, xxGlobalRecoverySet)
  1996. ParserSIG_tParsAttribute    * Feature_declaration0;
  1997. xxtUnionPtr    xxGlobalRecoverySet;
  1998. # endif
  1999. {
  2000.   ParserSIG_tParsAttribute New_feature_list1;
  2001.   ParserSIG_tParsAttribute Declaration_body1;
  2002.   xxtUnion xxUnion;
  2003.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2004.   xxUnion.xxLocalRecoverySet = 30; yyNew_feature_list (& New_feature_list1, & xxUnion); /*  ':' '(' 'is' */
  2005.   xxUnion.xxLocalRecoverySet = 0; yyDeclaration_body (& Declaration_body1, & xxUnion); /*  */
  2006. /* line 256 "eiffel_sig.ell" */
  2007.  Feature_declaration0->Tree = mFeature_decl(ReverseTree(New_feature_list1.Tree), 
  2008.                                     Declaration_body1.Tree);        
  2009. }
  2010.  
  2011. static void yyDeclaration_body
  2012. # if defined __STDC__ | defined __cplusplus
  2013. (ParserSIG_tParsAttribute * Declaration_body0, xxtUnionPtr xxGlobalRecoverySet)
  2014. # else
  2015. (Declaration_body0, xxGlobalRecoverySet)
  2016. ParserSIG_tParsAttribute    * Declaration_body0;
  2017. xxtUnionPtr    xxGlobalRecoverySet;
  2018. # endif
  2019. {
  2020.   ParserSIG_tParsAttribute Formal_arguments1;
  2021.   ParserSIG_tParsAttribute Type_mark1;
  2022.   ParserSIG_tParsAttribute Constant_or_routine1;
  2023.   xxtUnion xxUnion;
  2024.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2025. /* line 260 "eiffel_sig.ell" */
  2026.  Declaration_body0->Tree = mDeclaration_body(mFormal_args0(), mType0(), mConst_or_routine0());    
  2027.   for (;;) {
  2028.     if ((xxToken == 17 /* '(' */)) {
  2029.       xxUnion.xxLocalRecoverySet = 31; yyFormal_arguments (& Formal_arguments1, & xxUnion); /*  ':' 'is' */
  2030. /* line 261 "eiffel_sig.ell" */
  2031.  Declaration_body0->Tree->Declaration_body.Formal_args = Formal_arguments1.Tree;    
  2032.       break;
  2033.     } else if ((xxVerticalSet [xxToken + 108] & 1 << 6 /*  ';' ':' 'end' 'feature' 'frozen' infix 'invariant' 'is' prefix Id */) || xxIsRepairMode) break;
  2034.     xxExpected (30, 30, xxGlobalRecoverySet); /*  ':' '(' 'is' /  ':' '(' 'is' */
  2035.   }
  2036.   for (;;) {
  2037.     if ((xxToken == 9 /* ':' */)) {
  2038.       xxUnion.xxLocalRecoverySet = 32; yyType_mark (& Type_mark1, & xxUnion); /*  'is' */
  2039. /* line 262 "eiffel_sig.ell" */
  2040.  Declaration_body0->Tree->Declaration_body.Type_mark = Type_mark1.Tree;        
  2041.       break;
  2042.     } else if ((xxVerticalSet [xxToken + 108] & 1 << 7 /*  ';' 'end' 'feature' 'frozen' infix 'invariant' 'is' prefix Id */) || xxIsRepairMode) break;
  2043.     xxExpected (31, 31, xxGlobalRecoverySet); /*  ':' 'is' /  ':' 'is' */
  2044.   }
  2045.   for (;;) {
  2046.     if ((xxToken == 68 /* 'is' */)) {
  2047.       xxUnion.xxLocalRecoverySet = 0; yyConstant_or_routine (& Constant_or_routine1, & xxUnion); /*  */
  2048. /* line 263 "eiffel_sig.ell" */
  2049.  Declaration_body0->Tree->Declaration_body.Const_or_routine = Constant_or_routine1.Tree; 
  2050.       break;
  2051.     } else if ((xxVerticalSet [xxToken + 216] & 1 << 0 /*  ';' 'end' 'feature' 'frozen' infix 'invariant' prefix Id */) || xxIsRepairMode) break;
  2052.     xxExpected (32, 32, xxGlobalRecoverySet); /*  'is' /  'is' */
  2053.   }
  2054. }
  2055.  
  2056. static void yyConstant_or_routine
  2057. # if defined __STDC__ | defined __cplusplus
  2058. (ParserSIG_tParsAttribute * Constant_or_routine0, xxtUnionPtr xxGlobalRecoverySet)
  2059. # else
  2060. (Constant_or_routine0, xxGlobalRecoverySet)
  2061. ParserSIG_tParsAttribute    * Constant_or_routine0;
  2062. xxtUnionPtr    xxGlobalRecoverySet;
  2063. # endif
  2064. {
  2065.   ParserSIG_tParsAttribute Feature_value1;
  2066.   xxtUnion xxUnion;
  2067.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2068. /* line 266 "eiffel_sig.ell" */
  2069.  comment_ref = no_comment;                                
  2070.   if (xxToken != 68 /* 'is' */)
  2071.     xxRecoveryLiteral (68, 33, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus deferred do 'external' false 'is' 'local' 'obsolete' once 'require' true unique */
  2072.   else {
  2073.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2074.   }
  2075.   xxUnion.xxLocalRecoverySet = 0; yyFeature_value (& Feature_value1, & xxUnion); /*  */
  2076. /* line 267 "eiffel_sig.ell" */
  2077.  Constant_or_routine0->Tree = Feature_value1.Tree;                    
  2078. }
  2079.  
  2080. static void yyFeature_value
  2081. # if defined __STDC__ | defined __cplusplus
  2082. (ParserSIG_tParsAttribute * Feature_value0, xxtUnionPtr xxGlobalRecoverySet)
  2083. # else
  2084. (Feature_value0, xxGlobalRecoverySet)
  2085. ParserSIG_tParsAttribute    * Feature_value0;
  2086. xxtUnionPtr    xxGlobalRecoverySet;
  2087. # endif
  2088. {
  2089.   ParserSIG_tParsAttribute Manifest_constant1;
  2090.   ParserSIG_tParsAttribute Unique1;
  2091.   ParserSIG_tParsAttribute Routine1;
  2092.   xxtUnion xxUnion;
  2093.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2094.   for (;;) {
  2095.     switch (xxToken) {
  2096.     case 1 /* Character_constant */ :; 
  2097.     case 2 /* Bit_sequence */ :; 
  2098.     case 3 /* Integer */ :; 
  2099.     case 4 /* Real */ :; 
  2100.     case 5 /* Manifest_string */ :; 
  2101.     case 7 /* ';' */ :; 
  2102.     case 29 /* plus */ :; 
  2103.     case 30 /* minus */ :; 
  2104.     case 51 /* 'end' */ :; 
  2105.     case 56 /* false */ :; 
  2106.     case 57 /* 'feature' */ :; 
  2107.     case 59 /* 'frozen' */ :; 
  2108.     case 63 /* infix */ :; 
  2109.     case 67 /* 'invariant' */ :; 
  2110.     case 77 /* prefix */ :; 
  2111.     case 90 /* true */ :; 
  2112.     case 106 /* Id */ :; 
  2113.       xxUnion.xxLocalRecoverySet = 0; yyManifest_constant (& Manifest_constant1, & xxUnion); /*  */
  2114. /* line 271 "eiffel_sig.ell" */
  2115.  Feature_value0->Tree = mM_const(Manifest_constant1.Tree);                
  2116.       goto xx6;
  2117.     case 92 /* unique */ :; 
  2118.       xxUnion.xxLocalRecoverySet = 0; yyUnique (& Unique1, & xxUnion); /*  */
  2119. /* line 272 "eiffel_sig.ell" */
  2120.  Feature_value0->Tree = Unique1.Tree;                            
  2121.       goto xx6;
  2122.     case 46 /* deferred */ :; 
  2123.     case 47 /* do */ :; 
  2124.     case 55 /* 'external' */ :; 
  2125.     case 70 /* 'local' */ :; 
  2126.     case 73 /* 'obsolete' */ :; 
  2127.     case 75 /* once */ :; 
  2128.     case 81 /* 'require' */ :; 
  2129.       xxUnion.xxLocalRecoverySet = 0; yyRoutine (& Routine1, & xxUnion); /*  */
  2130. /* line 273 "eiffel_sig.ell" */
  2131.  Feature_value0->Tree = Routine1.Tree;                            
  2132.       goto xx6;
  2133.     case 6:;
  2134.     case 8:;
  2135.     case 9:;
  2136.     case 10:;
  2137.     case 11:;
  2138.     case 12:;
  2139.     case 13:;
  2140.     case 14:;
  2141.     case 15:;
  2142.     case 16:;
  2143.     case 17:;
  2144.     case 18:;
  2145.     case 19:;
  2146.     case 20:;
  2147.     case 21:;
  2148.     case 22:;
  2149.     case 23:;
  2150.     case 24:;
  2151.     case 25:;
  2152.     case 26:;
  2153.     case 27:;
  2154.     case 28:;
  2155.     case 31:;
  2156.     case 32:;
  2157.     case 33:;
  2158.     case 34:;
  2159.     case 35:;
  2160.     case 36:;
  2161.     case 37:;
  2162.     case 38:;
  2163.     case 39:;
  2164.     case 40:;
  2165.     case 41:;
  2166.     case 42:;
  2167.     case 43:;
  2168.     case 44:;
  2169.     case 45:;
  2170.     case 48:;
  2171.     case 49:;
  2172.     case 50:;
  2173.     case 52:;
  2174.     case 53:;
  2175.     case 54:;
  2176.     case 58:;
  2177.     case 60:;
  2178.     case 61:;
  2179.     case 62:;
  2180.     case 64:;
  2181.     case 65:;
  2182.     case 66:;
  2183.     case 68:;
  2184.     case 69:;
  2185.     case 71:;
  2186.     case 72:;
  2187.     case 74:;
  2188.     case 76:;
  2189.     case 78:;
  2190.     case 79:;
  2191.     case 80:;
  2192.     case 82:;
  2193.     case 83:;
  2194.     case 84:;
  2195.     case 85:;
  2196.     case 86:;
  2197.     case 87:;
  2198.     case 88:;
  2199.     case 89:;
  2200.     case 91:;
  2201.     case 93:;
  2202.     case 94:;
  2203.     case 95:;
  2204.     case 96:;
  2205.     case 97:;
  2206.     case 98:;
  2207.     case 99:;
  2208.     case 100:;
  2209.     case 101:;
  2210.     case 102:;
  2211.     case 103:;
  2212.     case 104:;
  2213.     case 105:;
  2214.     default:
  2215.       if (xxIsRepairMode) {
  2216.         xxUnion.xxLocalRecoverySet = 0; yyManifest_constant (& Manifest_constant1, & xxUnion); /*  */
  2217. /* line 271 "eiffel_sig.ell" */
  2218.  Feature_value0->Tree = mM_const(Manifest_constant1.Tree);                
  2219.         goto xx6;
  2220.       }
  2221. xxUnexpected (34, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus deferred do 'external' false 'local' 'obsolete' once 'require' true unique */
  2222.     }
  2223.   }
  2224.   xx6:;
  2225. }
  2226.  
  2227. static void yyNew_feature_list
  2228. # if defined __STDC__ | defined __cplusplus
  2229. (ParserSIG_tParsAttribute * New_feature_list0, xxtUnionPtr xxGlobalRecoverySet)
  2230. # else
  2231. (New_feature_list0, xxGlobalRecoverySet)
  2232. ParserSIG_tParsAttribute    * New_feature_list0;
  2233. xxtUnionPtr    xxGlobalRecoverySet;
  2234. # endif
  2235. {
  2236.   ParserSIG_tParsAttribute New_feature1;
  2237.   xxtUnion xxUnion;
  2238.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2239. /* line 278 "eiffel_sig.ell" */
  2240.  New_feature_list0->Tree = mNew_feature_list0();                    
  2241.   for (;;) {
  2242.     xxUnion.xxLocalRecoverySet = 16; yyNew_feature (& New_feature1, & xxUnion); /*  ',' */
  2243. /* line 279 "eiffel_sig.ell" */
  2244.  New_feature_list0->Tree = mNew_feature_list1(New_feature1.Tree, New_feature_list0->Tree);
  2245.     if (! ((xxToken == 8 /* ',' */))) {
  2246.       if ((xxVerticalSet [xxToken + 216] & 1 << 1 /*  ';' ':' '(' 'end' 'feature' 'frozen' infix 'invariant' 'is' prefix Id */)) break;
  2247.       xxExpected (35, 35, xxGlobalRecoverySet); /*  ',' 'frozen' infix prefix Id /  ',' 'frozen' infix prefix Id */
  2248.       if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 108] & 1 << 4 /*  'frozen' infix prefix Id */))) break;
  2249.     }
  2250.     if (xxToken != 8 /* ',' */)
  2251.       xxRecoveryLiteral (8, 35, xxGlobalRecoverySet); /*  ',' 'frozen' infix prefix Id */
  2252.     else {
  2253.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2254.     }
  2255.   }
  2256. }
  2257.  
  2258. static void yyNew_feature
  2259. # if defined __STDC__ | defined __cplusplus
  2260. (ParserSIG_tParsAttribute * New_feature0, xxtUnionPtr xxGlobalRecoverySet)
  2261. # else
  2262. (New_feature0, xxGlobalRecoverySet)
  2263. ParserSIG_tParsAttribute    * New_feature0;
  2264. xxtUnionPtr    xxGlobalRecoverySet;
  2265. # endif
  2266. {
  2267.   ParserSIG_tParsAttribute Feature_name1;
  2268.   xxtUnion xxUnion;
  2269.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2270.   for (;;) {
  2271.     switch (xxToken) {
  2272.     case 59 /* 'frozen' */ :; 
  2273.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2274.       xxUnion.xxLocalRecoverySet = 0; yyFeature_name (& Feature_name1, & xxUnion); /*  */
  2275. /* line 284 "eiffel_sig.ell" */
  2276.  New_feature0->Tree = mFrozen(Feature_name1.Tree);                    
  2277.       goto xx7;
  2278.     case 63 /* infix */ :; 
  2279.     case 77 /* prefix */ :; 
  2280.     case 106 /* Id */ :; 
  2281.       xxUnion.xxLocalRecoverySet = 0; yyFeature_name (& Feature_name1, & xxUnion); /*  */
  2282. /* line 285 "eiffel_sig.ell" */
  2283.  New_feature0->Tree = Feature_name1.Tree;                         
  2284.       goto xx7;
  2285.     case 60:;
  2286.     case 61:;
  2287.     case 62:;
  2288.     case 64:;
  2289.     case 65:;
  2290.     case 66:;
  2291.     case 67:;
  2292.     case 68:;
  2293.     case 69:;
  2294.     case 70:;
  2295.     case 71:;
  2296.     case 72:;
  2297.     case 73:;
  2298.     case 74:;
  2299.     case 75:;
  2300.     case 76:;
  2301.     case 78:;
  2302.     case 79:;
  2303.     case 80:;
  2304.     case 81:;
  2305.     case 82:;
  2306.     case 83:;
  2307.     case 84:;
  2308.     case 85:;
  2309.     case 86:;
  2310.     case 87:;
  2311.     case 88:;
  2312.     case 89:;
  2313.     case 90:;
  2314.     case 91:;
  2315.     case 92:;
  2316.     case 93:;
  2317.     case 94:;
  2318.     case 95:;
  2319.     case 96:;
  2320.     case 97:;
  2321.     case 98:;
  2322.     case 99:;
  2323.     case 100:;
  2324.     case 101:;
  2325.     case 102:;
  2326.     case 103:;
  2327.     case 104:;
  2328.     case 105:;
  2329.     default:
  2330.       if (xxIsRepairMode) {
  2331.         xxUnion.xxLocalRecoverySet = 0; yyFeature_name (& Feature_name1, & xxUnion); /*  */
  2332. /* line 285 "eiffel_sig.ell" */
  2333.  New_feature0->Tree = Feature_name1.Tree;                         
  2334.         goto xx7;
  2335.       }
  2336.       xxExpected (28, 28, xxGlobalRecoverySet); /*  'frozen' infix prefix Id /  'frozen' infix prefix Id */
  2337.     }
  2338.   }
  2339.   xx7:;
  2340. }
  2341.  
  2342. static void yyFeature_name
  2343. # if defined __STDC__ | defined __cplusplus
  2344. (ParserSIG_tParsAttribute * Feature_name0, xxtUnionPtr xxGlobalRecoverySet)
  2345. # else
  2346. (Feature_name0, xxGlobalRecoverySet)
  2347. ParserSIG_tParsAttribute    * Feature_name0;
  2348. xxtUnionPtr    xxGlobalRecoverySet;
  2349. # endif
  2350. {
  2351.   ParserSIG_tParsAttribute Identifier1;
  2352.   ParserSIG_tParsAttribute Prefix1;
  2353.   ParserSIG_tParsAttribute Infix1;
  2354.   xxtUnion xxUnion;
  2355.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2356.   for (;;) {
  2357.     switch (xxToken) {
  2358.     case 106 /* Id */ :; 
  2359.       xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  2360. /* line 290 "eiffel_sig.ell" */
  2361.  Feature_name0->Tree = mIdent_name(Identifier1.Tree);                    
  2362.       goto xx8;
  2363.     case 77 /* prefix */ :; 
  2364.       xxUnion.xxLocalRecoverySet = 0; yyPrefix (& Prefix1, & xxUnion); /*  */
  2365. /* line 291 "eiffel_sig.ell" */
  2366.  Feature_name0->Tree = Prefix1.Tree;                            
  2367.       goto xx8;
  2368.     case 63 /* infix */ :; 
  2369.       xxUnion.xxLocalRecoverySet = 0; yyInfix (& Infix1, & xxUnion); /*  */
  2370. /* line 292 "eiffel_sig.ell" */
  2371.  Feature_name0->Tree = Infix1.Tree;                            
  2372.       goto xx8;
  2373.     case 64:;
  2374.     case 65:;
  2375.     case 66:;
  2376.     case 67:;
  2377.     case 68:;
  2378.     case 69:;
  2379.     case 70:;
  2380.     case 71:;
  2381.     case 72:;
  2382.     case 73:;
  2383.     case 74:;
  2384.     case 75:;
  2385.     case 76:;
  2386.     case 78:;
  2387.     case 79:;
  2388.     case 80:;
  2389.     case 81:;
  2390.     case 82:;
  2391.     case 83:;
  2392.     case 84:;
  2393.     case 85:;
  2394.     case 86:;
  2395.     case 87:;
  2396.     case 88:;
  2397.     case 89:;
  2398.     case 90:;
  2399.     case 91:;
  2400.     case 92:;
  2401.     case 93:;
  2402.     case 94:;
  2403.     case 95:;
  2404.     case 96:;
  2405.     case 97:;
  2406.     case 98:;
  2407.     case 99:;
  2408.     case 100:;
  2409.     case 101:;
  2410.     case 102:;
  2411.     case 103:;
  2412.     case 104:;
  2413.     case 105:;
  2414.     default:
  2415.       if (xxIsRepairMode) {
  2416.         xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  2417. /* line 290 "eiffel_sig.ell" */
  2418.  Feature_name0->Tree = mIdent_name(Identifier1.Tree);                    
  2419.         goto xx8;
  2420.       }
  2421.       xxExpected (36, 36, xxGlobalRecoverySet); /*  infix prefix Id /  infix prefix Id */
  2422.     }
  2423.   }
  2424.   xx8:;
  2425. }
  2426.  
  2427. static void yyPrefix
  2428. # if defined __STDC__ | defined __cplusplus
  2429. (ParserSIG_tParsAttribute * Prefix0, xxtUnionPtr xxGlobalRecoverySet)
  2430. # else
  2431. (Prefix0, xxGlobalRecoverySet)
  2432. ParserSIG_tParsAttribute    * Prefix0;
  2433. xxtUnionPtr    xxGlobalRecoverySet;
  2434. # endif
  2435. {
  2436.     EiffelScan_tScanAttribute prefix1;
  2437.   ParserSIG_tParsAttribute Prefix_operator1;
  2438.   xxtUnion xxUnion;
  2439.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2440.   if (xxToken != 77 /* prefix */)
  2441.     xxRecoveryTerminal (77, 37, xxGlobalRecoverySet, & prefix1); /*  Free_op plus minus prefix not */
  2442.   else {
  2443.     prefix1 =   EiffelScan_Attribute;
  2444.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2445.   }
  2446.   xxUnion.xxLocalRecoverySet = 0; yyPrefix_operator (& Prefix_operator1, & xxUnion); /*  */
  2447. /* line 296 "eiffel_sig.ell" */
  2448.  Prefix0->Tree = Prefix_operator1.Tree;                
  2449. }
  2450.  
  2451. static void yyInfix
  2452. # if defined __STDC__ | defined __cplusplus
  2453. (ParserSIG_tParsAttribute * Infix0, xxtUnionPtr xxGlobalRecoverySet)
  2454. # else
  2455. (Infix0, xxGlobalRecoverySet)
  2456. ParserSIG_tParsAttribute    * Infix0;
  2457. xxtUnionPtr    xxGlobalRecoverySet;
  2458. # endif
  2459. {
  2460.     EiffelScan_tScanAttribute infix1;
  2461.   ParserSIG_tParsAttribute Infix_operator1;
  2462.   xxtUnion xxUnion;
  2463.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2464.   if (xxToken != 63 /* infix */)
  2465.     xxRecoveryTerminal (63, 38, xxGlobalRecoverySet, & infix1); /*  Free_op plus minus div and implies infix or xor times smaller greater sm_eq gr_eq idiv imod power */
  2466.   else {
  2467.     infix1 =   EiffelScan_Attribute;
  2468.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2469.   }
  2470.   xxUnion.xxLocalRecoverySet = 0; yyInfix_operator (& Infix_operator1, & xxUnion); /*  */
  2471. /* line 300 "eiffel_sig.ell" */
  2472.  Infix0->Tree = Infix_operator1.Tree;                    
  2473. }
  2474.  
  2475. static void yyPrefix_operator
  2476. # if defined __STDC__ | defined __cplusplus
  2477. (ParserSIG_tParsAttribute * Prefix_operator0, xxtUnionPtr xxGlobalRecoverySet)
  2478. # else
  2479. (Prefix_operator0, xxGlobalRecoverySet)
  2480. ParserSIG_tParsAttribute    * Prefix_operator0;
  2481. xxtUnionPtr    xxGlobalRecoverySet;
  2482. # endif
  2483. {
  2484.     EiffelScan_tScanAttribute Free_op1;
  2485.   ParserSIG_tParsAttribute Unary1;
  2486.   xxtUnion xxUnion;
  2487.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2488.   for (;;) {
  2489.     switch (xxToken) {
  2490.     case 29 /* plus */ :; 
  2491.     case 30 /* minus */ :; 
  2492.     case 105 /* not */ :; 
  2493.       xxUnion.xxLocalRecoverySet = 0; yyUnary (& Unary1, & xxUnion); /*  */
  2494. /* line 304 "eiffel_sig.ell" */
  2495.  Prefix_operator0->Tree = mPrefix(Unary1.Tree);                    
  2496.       goto xx9;
  2497.     case 6 /* Free_op */ :; 
  2498.       Free_op1 =       EiffelScan_Attribute;
  2499.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2500. /* line 305 "eiffel_sig.ell" */
  2501.  Prefix_operator0->Tree = mPrefix(mFree_op(Free_op1.Position, Free_op1.Ident));     
  2502.       goto xx9;
  2503.     case 7:;
  2504.     case 8:;
  2505.     case 9:;
  2506.     case 10:;
  2507.     case 11:;
  2508.     case 12:;
  2509.     case 13:;
  2510.     case 14:;
  2511.     case 15:;
  2512.     case 16:;
  2513.     case 17:;
  2514.     case 18:;
  2515.     case 19:;
  2516.     case 20:;
  2517.     case 21:;
  2518.     case 22:;
  2519.     case 23:;
  2520.     case 24:;
  2521.     case 25:;
  2522.     case 26:;
  2523.     case 27:;
  2524.     case 28:;
  2525.     case 31:;
  2526.     case 32:;
  2527.     case 33:;
  2528.     case 34:;
  2529.     case 35:;
  2530.     case 36:;
  2531.     case 37:;
  2532.     case 38:;
  2533.     case 39:;
  2534.     case 40:;
  2535.     case 41:;
  2536.     case 42:;
  2537.     case 43:;
  2538.     case 44:;
  2539.     case 45:;
  2540.     case 46:;
  2541.     case 47:;
  2542.     case 48:;
  2543.     case 49:;
  2544.     case 50:;
  2545.     case 51:;
  2546.     case 52:;
  2547.     case 53:;
  2548.     case 54:;
  2549.     case 55:;
  2550.     case 56:;
  2551.     case 57:;
  2552.     case 58:;
  2553.     case 59:;
  2554.     case 60:;
  2555.     case 61:;
  2556.     case 62:;
  2557.     case 63:;
  2558.     case 64:;
  2559.     case 65:;
  2560.     case 66:;
  2561.     case 67:;
  2562.     case 68:;
  2563.     case 69:;
  2564.     case 70:;
  2565.     case 71:;
  2566.     case 72:;
  2567.     case 73:;
  2568.     case 74:;
  2569.     case 75:;
  2570.     case 76:;
  2571.     case 77:;
  2572.     case 78:;
  2573.     case 79:;
  2574.     case 80:;
  2575.     case 81:;
  2576.     case 82:;
  2577.     case 83:;
  2578.     case 84:;
  2579.     case 85:;
  2580.     case 86:;
  2581.     case 87:;
  2582.     case 88:;
  2583.     case 89:;
  2584.     case 90:;
  2585.     case 91:;
  2586.     case 92:;
  2587.     case 93:;
  2588.     case 94:;
  2589.     case 95:;
  2590.     case 96:;
  2591.     case 97:;
  2592.     case 98:;
  2593.     case 99:;
  2594.     case 100:;
  2595.     case 101:;
  2596.     case 102:;
  2597.     case 103:;
  2598.     case 104:;
  2599.     default:
  2600.       if (xxIsRepairMode) {
  2601.         xxUnion.xxLocalRecoverySet = 0; yyUnary (& Unary1, & xxUnion); /*  */
  2602. /* line 304 "eiffel_sig.ell" */
  2603.  Prefix_operator0->Tree = mPrefix(Unary1.Tree);                    
  2604.         goto xx9;
  2605.       }
  2606.       xxExpected (40, 40, xxGlobalRecoverySet); /*  Free_op plus minus not /  Free_op plus minus not */
  2607.     }
  2608.   }
  2609.   xx9:;
  2610. }
  2611.  
  2612. static void yyInfix_operator
  2613. # if defined __STDC__ | defined __cplusplus
  2614. (ParserSIG_tParsAttribute * Infix_operator0, xxtUnionPtr xxGlobalRecoverySet)
  2615. # else
  2616. (Infix_operator0, xxGlobalRecoverySet)
  2617. ParserSIG_tParsAttribute    * Infix_operator0;
  2618. xxtUnionPtr    xxGlobalRecoverySet;
  2619. # endif
  2620. {
  2621.     EiffelScan_tScanAttribute Free_op1;
  2622.   ParserSIG_tParsAttribute Binary1;
  2623.   xxtUnion xxUnion;
  2624.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  2625.   for (;;) {
  2626.     switch (xxToken) {
  2627.     case 29 /* plus */ :; 
  2628.     case 30 /* minus */ :; 
  2629.     case 33 /* div */ :; 
  2630.     case 36 /* and */ :; 
  2631.     case 61 /* implies */ :; 
  2632.     case 76 /* or */ :; 
  2633.     case 96 /* xor */ :; 
  2634.     case 97 /* times */ :; 
  2635.     case 98 /* smaller */ :; 
  2636.     case 99 /* greater */ :; 
  2637.     case 100 /* sm_eq */ :; 
  2638.     case 101 /* gr_eq */ :; 
  2639.     case 102 /* idiv */ :; 
  2640.     case 103 /* imod */ :; 
  2641.     case 104 /* power */ :; 
  2642.       xxUnion.xxLocalRecoverySet = 0; yyBinary (& Binary1, & xxUnion); /*  */
  2643. /* line 310 "eiffel_sig.ell" */
  2644.  Infix_operator0->Tree = mInfix(Binary1.Tree);                        
  2645.       goto xx10;
  2646.     case 6 /* Free_op */ :; 
  2647.       Free_op1 =       EiffelScan_Attribute;
  2648.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2649. /* line 311 "eiffel_sig.ell" */
  2650.  Infix_operator0->Tree = mInfix(mFree_op(Free_op1.Position, Free_op1.Ident));        
  2651.       goto xx10;
  2652.     case 7:;
  2653.     case 8:;
  2654.     case 9:;
  2655.     case 10:;
  2656.     case 11:;
  2657.     case 12:;
  2658.     case 13:;
  2659.     case 14:;
  2660.     case 15:;
  2661.     case 16:;
  2662.     case 17:;
  2663.     case 18:;
  2664.     case 19:;
  2665.     case 20:;
  2666.     case 21:;
  2667.     case 22:;
  2668.     case 23:;
  2669.     case 24:;
  2670.     case 25:;
  2671.     case 26:;
  2672.     case 27:;
  2673.     case 28:;
  2674.     case 31:;
  2675.     case 32:;
  2676.     case 34:;
  2677.     case 35:;
  2678.     case 37:;
  2679.     case 38:;
  2680.     case 39:;
  2681.     case 40:;
  2682.     case 41:;
  2683.     case 42:;
  2684.     case 43:;
  2685.     case 44:;
  2686.     case 45:;
  2687.     case 46:;
  2688.     case 47:;
  2689.     case 48:;
  2690.     case 49:;
  2691.     case 50:;
  2692.     case 51:;
  2693.     case 52:;
  2694.     case 53:;
  2695.     case 54:;
  2696.     case 55:;
  2697.     case 56:;
  2698.     case 57:;
  2699.     case 58:;
  2700.     case 59:;
  2701.     case 60:;
  2702.     case 62:;
  2703.     case 63:;
  2704.     case 64:;
  2705.     case 65:;
  2706.     case 66:;
  2707.     case 67:;
  2708.     case 68:;
  2709.     case 69:;
  2710.     case 70:;
  2711.     case 71:;
  2712.     case 72:;
  2713.     case 73:;
  2714.     case 74:;
  2715.     case 75:;
  2716.     case 77:;
  2717.     case 78:;
  2718.     case 79:;
  2719.     case 80:;
  2720.     case 81:;
  2721.     case 82:;
  2722.     case 83:;
  2723.     case 84:;
  2724.     case 85:;
  2725.     case 86:;
  2726.     case 87:;
  2727.     case 88:;
  2728.     case 89:;
  2729.     case 90:;
  2730.     case 91:;
  2731.     case 92:;
  2732.     case 93:;
  2733.     case 94:;
  2734.     case 95:;
  2735.     default:
  2736.       if (xxIsRepairMode) {
  2737.         xxUnion.xxLocalRecoverySet = 0; yyBinary (& Binary1, & xxUnion); /*  */
  2738. /* line 310 "eiffel_sig.ell" */
  2739.  Infix_operator0->Tree = mInfix(Binary1.Tree);                        
  2740.         goto xx10;
  2741.       }
  2742.       xxExpected (41, 41, xxGlobalRecoverySet); /*  Free_op plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  2743.     }
  2744.   }
  2745.   xx10:;
  2746. }
  2747.  
  2748. static void yyUnary
  2749. # if defined __STDC__ | defined __cplusplus
  2750. (ParserSIG_tParsAttribute * Unary0, xxtUnionPtr xxGlobalRecoverySet)
  2751. # else
  2752. (Unary0, xxGlobalRecoverySet)
  2753. ParserSIG_tParsAttribute    * Unary0;
  2754. xxtUnionPtr    xxGlobalRecoverySet;
  2755. # endif
  2756. {
  2757.     EiffelScan_tScanAttribute plus1;
  2758.     EiffelScan_tScanAttribute minus1;
  2759.     EiffelScan_tScanAttribute not1;
  2760.   for (;;) {
  2761.     switch (xxToken) {
  2762.     case 105 /* not */ :; 
  2763.       not1 =       EiffelScan_Attribute;
  2764.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2765. /* line 316 "eiffel_sig.ell" */
  2766.  Unary0->Tree = mOper(not1.Position, NOT);                         
  2767.       goto xx11;
  2768.     case 29 /* plus */ :; 
  2769.       plus1 =       EiffelScan_Attribute;
  2770.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2771. /* line 317 "eiffel_sig.ell" */
  2772.  Unary0->Tree = mOper(plus1.Position, PLUS);                         
  2773.       goto xx11;
  2774.     case 30 /* minus */ :; 
  2775.       minus1 =       EiffelScan_Attribute;
  2776.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2777. /* line 318 "eiffel_sig.ell" */
  2778.  Unary0->Tree = mOper(minus1.Position, MINUS);                     
  2779.       goto xx11;
  2780.     case 31:;
  2781.     case 32:;
  2782.     case 33:;
  2783.     case 34:;
  2784.     case 35:;
  2785.     case 36:;
  2786.     case 37:;
  2787.     case 38:;
  2788.     case 39:;
  2789.     case 40:;
  2790.     case 41:;
  2791.     case 42:;
  2792.     case 43:;
  2793.     case 44:;
  2794.     case 45:;
  2795.     case 46:;
  2796.     case 47:;
  2797.     case 48:;
  2798.     case 49:;
  2799.     case 50:;
  2800.     case 51:;
  2801.     case 52:;
  2802.     case 53:;
  2803.     case 54:;
  2804.     case 55:;
  2805.     case 56:;
  2806.     case 57:;
  2807.     case 58:;
  2808.     case 59:;
  2809.     case 60:;
  2810.     case 61:;
  2811.     case 62:;
  2812.     case 63:;
  2813.     case 64:;
  2814.     case 65:;
  2815.     case 66:;
  2816.     case 67:;
  2817.     case 68:;
  2818.     case 69:;
  2819.     case 70:;
  2820.     case 71:;
  2821.     case 72:;
  2822.     case 73:;
  2823.     case 74:;
  2824.     case 75:;
  2825.     case 76:;
  2826.     case 77:;
  2827.     case 78:;
  2828.     case 79:;
  2829.     case 80:;
  2830.     case 81:;
  2831.     case 82:;
  2832.     case 83:;
  2833.     case 84:;
  2834.     case 85:;
  2835.     case 86:;
  2836.     case 87:;
  2837.     case 88:;
  2838.     case 89:;
  2839.     case 90:;
  2840.     case 91:;
  2841.     case 92:;
  2842.     case 93:;
  2843.     case 94:;
  2844.     case 95:;
  2845.     case 96:;
  2846.     case 97:;
  2847.     case 98:;
  2848.     case 99:;
  2849.     case 100:;
  2850.     case 101:;
  2851.     case 102:;
  2852.     case 103:;
  2853.     case 104:;
  2854.     default:
  2855.       if (xxIsRepairMode) {
  2856.         if (xxToken != 105 /* not */)
  2857.           xxRecoveryTerminal (105, 42, xxGlobalRecoverySet, & not1); /*  not */
  2858.         else {
  2859.           not1 =         EiffelScan_Attribute;
  2860.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2861.         }
  2862. /* line 316 "eiffel_sig.ell" */
  2863.  Unary0->Tree = mOper(not1.Position, NOT);                         
  2864.         goto xx11;
  2865.       }
  2866.       xxExpected (45, 45, xxGlobalRecoverySet); /*  plus minus not /  plus minus not */
  2867.     }
  2868.   }
  2869.   xx11:;
  2870. }
  2871.  
  2872. static void yyBinary
  2873. # if defined __STDC__ | defined __cplusplus
  2874. (ParserSIG_tParsAttribute * Binary0, xxtUnionPtr xxGlobalRecoverySet)
  2875. # else
  2876. (Binary0, xxGlobalRecoverySet)
  2877. ParserSIG_tParsAttribute    * Binary0;
  2878. xxtUnionPtr    xxGlobalRecoverySet;
  2879. # endif
  2880. {
  2881.     EiffelScan_tScanAttribute plus1;
  2882.     EiffelScan_tScanAttribute minus1;
  2883.     EiffelScan_tScanAttribute div1;
  2884.     EiffelScan_tScanAttribute and1;
  2885.     EiffelScan_tScanAttribute else1;
  2886.     EiffelScan_tScanAttribute implies1;
  2887.     EiffelScan_tScanAttribute or1;
  2888.     EiffelScan_tScanAttribute then1;
  2889.     EiffelScan_tScanAttribute xor1;
  2890.     EiffelScan_tScanAttribute times1;
  2891.     EiffelScan_tScanAttribute smaller1;
  2892.     EiffelScan_tScanAttribute greater1;
  2893.     EiffelScan_tScanAttribute sm_eq1;
  2894.     EiffelScan_tScanAttribute gr_eq1;
  2895.     EiffelScan_tScanAttribute idiv1;
  2896.     EiffelScan_tScanAttribute imod1;
  2897.     EiffelScan_tScanAttribute power1;
  2898.   for (;;) {
  2899.     switch (xxToken) {
  2900.     case 103 /* imod */ :; 
  2901.       imod1 =       EiffelScan_Attribute;
  2902.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2903. /* line 322 "eiffel_sig.ell" */
  2904.  Binary0->Tree = mOper(imod1.Position, IMOD);                         
  2905.       goto xx12;
  2906.     case 102 /* idiv */ :; 
  2907.       idiv1 =       EiffelScan_Attribute;
  2908.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2909. /* line 323 "eiffel_sig.ell" */
  2910.  Binary0->Tree = mOper(idiv1.Position, IDIV);                         
  2911.       goto xx12;
  2912.     case 104 /* power */ :; 
  2913.       power1 =       EiffelScan_Attribute;
  2914.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2915. /* line 324 "eiffel_sig.ell" */
  2916.  Binary0->Tree = mOper(power1.Position, POWER);                     
  2917.       goto xx12;
  2918.     case 98 /* smaller */ :; 
  2919.       smaller1 =       EiffelScan_Attribute;
  2920.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2921. /* line 325 "eiffel_sig.ell" */
  2922.  Binary0->Tree = mOper(smaller1.Position, SMALLER);                     
  2923.       goto xx12;
  2924.     case 99 /* greater */ :; 
  2925.       greater1 =       EiffelScan_Attribute;
  2926.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2927. /* line 326 "eiffel_sig.ell" */
  2928.  Binary0->Tree = mOper(greater1.Position, GREATER);                     
  2929.       goto xx12;
  2930.     case 100 /* sm_eq */ :; 
  2931.       sm_eq1 =       EiffelScan_Attribute;
  2932.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2933. /* line 327 "eiffel_sig.ell" */
  2934.  Binary0->Tree = mOper(sm_eq1.Position, SM_EQ);                     
  2935.       goto xx12;
  2936.     case 101 /* gr_eq */ :; 
  2937.       gr_eq1 =       EiffelScan_Attribute;
  2938.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2939. /* line 328 "eiffel_sig.ell" */
  2940.  Binary0->Tree = mOper(gr_eq1.Position, GR_EQ);                     
  2941.       goto xx12;
  2942.     case 29 /* plus */ :; 
  2943.       plus1 =       EiffelScan_Attribute;
  2944.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2945. /* line 329 "eiffel_sig.ell" */
  2946.  Binary0->Tree = mOper(plus1.Position, PLUS);                         
  2947.       goto xx12;
  2948.     case 30 /* minus */ :; 
  2949.       minus1 =       EiffelScan_Attribute;
  2950.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2951. /* line 330 "eiffel_sig.ell" */
  2952.  Binary0->Tree = mOper(minus1.Position, MINUS);                     
  2953.       goto xx12;
  2954.     case 97 /* times */ :; 
  2955.       times1 =       EiffelScan_Attribute;
  2956.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2957. /* line 331 "eiffel_sig.ell" */
  2958.  Binary0->Tree = mOper(times1.Position, TIMES);                     
  2959.       goto xx12;
  2960.     case 33 /* div */ :; 
  2961.       div1 =       EiffelScan_Attribute;
  2962.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2963. /* line 332 "eiffel_sig.ell" */
  2964.  Binary0->Tree = mOper(div1.Position, DIV);                         
  2965.       goto xx12;
  2966.     case 36 /* and */ :; 
  2967.       and1 =       EiffelScan_Attribute;
  2968.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2969. /* line 333 "eiffel_sig.ell" */
  2970.  Binary0->Tree = mOper(and1.Position, AND);                         
  2971.       for (;;) {
  2972.         if ((xxToken == 89 /* then */)) {
  2973.           then1 =           EiffelScan_Attribute;
  2974.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2975. /* line 334 "eiffel_sig.ell" */
  2976.  Binary0->Tree->Oper.op = AND_THEN;                             
  2977.           break;
  2978.         } else if ((xxVerticalSet [xxToken + 216] & 1 << 2 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' ':' '(' '<<' plus minus 'as' 'creation' Current 'end' 'export' false 'feature' 'frozen' infix 'invariant' 'is' 'old' prefix 'redefine' Result 'select' 'strip' true 'undefine' not Id */) || xxIsRepairMode) break;
  2979.         xxExpected (56, 56, xxGlobalRecoverySet); /*  then /  then */
  2980.       }
  2981.       goto xx12;
  2982.     case 76 /* or */ :; 
  2983.       or1 =       EiffelScan_Attribute;
  2984.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2985. /* line 335 "eiffel_sig.ell" */
  2986.  Binary0->Tree = mOper(or1.Position, OR);                         
  2987.       for (;;) {
  2988.         if ((xxToken == 49 /* else */)) {
  2989.           else1 =           EiffelScan_Attribute;
  2990.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  2991. /* line 336 "eiffel_sig.ell" */
  2992.  Binary0->Tree->Oper.op = OR_ELSE;                             
  2993.           break;
  2994.         } else if ((xxVerticalSet [xxToken + 216] & 1 << 2 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' ':' '(' '<<' plus minus 'as' 'creation' Current 'end' 'export' false 'feature' 'frozen' infix 'invariant' 'is' 'old' prefix 'redefine' Result 'select' 'strip' true 'undefine' not Id */) || xxIsRepairMode) break;
  2995.         xxExpected (58, 58, xxGlobalRecoverySet); /*  else /  else */
  2996.       }
  2997.       goto xx12;
  2998.     case 96 /* xor */ :; 
  2999.       xor1 =       EiffelScan_Attribute;
  3000.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3001. /* line 337 "eiffel_sig.ell" */
  3002.  Binary0->Tree = mOper(xor1.Position, XOR);                         
  3003.       goto xx12;
  3004.     case 61 /* implies */ :; 
  3005.       implies1 =       EiffelScan_Attribute;
  3006.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3007. /* line 338 "eiffel_sig.ell" */
  3008.  Binary0->Tree = mOper(implies1.Position, IMPLIES);                     
  3009.       goto xx12;
  3010.     case 31:;
  3011.     case 32:;
  3012.     case 34:;
  3013.     case 35:;
  3014.     case 37:;
  3015.     case 38:;
  3016.     case 39:;
  3017.     case 40:;
  3018.     case 41:;
  3019.     case 42:;
  3020.     case 43:;
  3021.     case 44:;
  3022.     case 45:;
  3023.     case 46:;
  3024.     case 47:;
  3025.     case 48:;
  3026.     case 49:;
  3027.     case 50:;
  3028.     case 51:;
  3029.     case 52:;
  3030.     case 53:;
  3031.     case 54:;
  3032.     case 55:;
  3033.     case 56:;
  3034.     case 57:;
  3035.     case 58:;
  3036.     case 59:;
  3037.     case 60:;
  3038.     case 62:;
  3039.     case 63:;
  3040.     case 64:;
  3041.     case 65:;
  3042.     case 66:;
  3043.     case 67:;
  3044.     case 68:;
  3045.     case 69:;
  3046.     case 70:;
  3047.     case 71:;
  3048.     case 72:;
  3049.     case 73:;
  3050.     case 74:;
  3051.     case 75:;
  3052.     case 77:;
  3053.     case 78:;
  3054.     case 79:;
  3055.     case 80:;
  3056.     case 81:;
  3057.     case 82:;
  3058.     case 83:;
  3059.     case 84:;
  3060.     case 85:;
  3061.     case 86:;
  3062.     case 87:;
  3063.     case 88:;
  3064.     case 89:;
  3065.     case 90:;
  3066.     case 91:;
  3067.     case 92:;
  3068.     case 93:;
  3069.     case 94:;
  3070.     case 95:;
  3071.     default:
  3072.       if (xxIsRepairMode) {
  3073.         if (xxToken != 103 /* imod */)
  3074.           xxRecoveryTerminal (103, 46, xxGlobalRecoverySet, & imod1); /*  imod */
  3075.         else {
  3076.           imod1 =         EiffelScan_Attribute;
  3077.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3078.         }
  3079. /* line 322 "eiffel_sig.ell" */
  3080.  Binary0->Tree = mOper(imod1.Position, IMOD);                         
  3081.         goto xx12;
  3082.       }
  3083.       xxExpected (61, 61, xxGlobalRecoverySet); /*  plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  3084.     }
  3085.   }
  3086.   xx12:;
  3087. }
  3088.  
  3089. static void yyInheritance
  3090. # if defined __STDC__ | defined __cplusplus
  3091. (ParserSIG_tParsAttribute * Inheritance0, xxtUnionPtr xxGlobalRecoverySet)
  3092. # else
  3093. (Inheritance0, xxGlobalRecoverySet)
  3094. ParserSIG_tParsAttribute    * Inheritance0;
  3095. xxtUnionPtr    xxGlobalRecoverySet;
  3096. # endif
  3097. {
  3098.   ParserSIG_tParsAttribute Parent_list1;
  3099.   xxtUnion xxUnion;
  3100.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3101.   if (xxToken != 64 /* 'inherit' */)
  3102.     xxRecoveryLiteral (64, 62, xxGlobalRecoverySet); /*  expanded 'inherit' Id */
  3103.   else {
  3104.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3105.   }
  3106.   xxUnion.xxLocalRecoverySet = 0; yyParent_list (& Parent_list1, & xxUnion); /*  */
  3107. /* line 343 "eiffel_sig.ell" */
  3108.  Inheritance0->Tree = ReverseTree(Parent_list1.Tree);                    
  3109. }
  3110.  
  3111. static void yyParent_list
  3112. # if defined __STDC__ | defined __cplusplus
  3113. (ParserSIG_tParsAttribute * Parent_list0, xxtUnionPtr xxGlobalRecoverySet)
  3114. # else
  3115. (Parent_list0, xxGlobalRecoverySet)
  3116. ParserSIG_tParsAttribute    * Parent_list0;
  3117. xxtUnionPtr    xxGlobalRecoverySet;
  3118. # endif
  3119. {
  3120.   ParserSIG_tParsAttribute Parent1, Parent2;
  3121.   xxtUnion xxUnion;
  3122.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3123. /* line 346 "eiffel_sig.ell" */
  3124.  Parent_list0->Tree = mParent_list0();                            
  3125.   for (;;) {
  3126.     if ((xxVerticalSet [xxToken + 216] & 1 << 3 /*  expanded Id */)) {
  3127.       xxUnion.xxLocalRecoverySet = 64; yyParent (& Parent1, & xxUnion); /*  ';' expanded Id */
  3128. /* line 347 "eiffel_sig.ell" */
  3129.  Parent_list0->Tree = mParent_list1(Parent1.Tree, Parent_list0->Tree);            
  3130.       for (;;) {
  3131.         if ((xxVerticalSet [xxToken + 216] & 1 << 4 /*  ';' expanded Id */)) {
  3132.           for (;;) {
  3133.             if ((xxToken == 7 /* ';' */)) {
  3134.               xxToken =               EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3135.               break;
  3136.             } else if ((xxVerticalSet [xxToken + 216] & 1 << 3 /*  expanded Id */) || xxIsRepairMode) break;
  3137.             xxExpected (64, 64, xxGlobalRecoverySet); /*  ';' expanded Id /  ';' expanded Id */
  3138.           }
  3139.           xxUnion.xxLocalRecoverySet = 0; yyParent (& Parent2, & xxUnion); /*  */
  3140. /* line 348 "eiffel_sig.ell" */
  3141.  Parent_list0->Tree = mParent_list1(Parent2.Tree, Parent_list0->Tree);    
  3142.         } else if ((xxVerticalSet [xxToken] & 1 << 4 /*  'creation' 'end' 'feature' 'invariant' */) || xxIsRepairMode) break;
  3143.         else
  3144.           xxExpected (64, 64, xxGlobalRecoverySet); /*  ';' expanded Id /  ';' expanded Id */
  3145.       }
  3146.       break;
  3147.     } else if ((xxVerticalSet [xxToken] & 1 << 4 /*  'creation' 'end' 'feature' 'invariant' */) || xxIsRepairMode) break;
  3148.     xxExpected (63, 63, xxGlobalRecoverySet); /*  expanded Id /  expanded Id */
  3149.   }
  3150. }
  3151.  
  3152. static void yyParent
  3153. # if defined __STDC__ | defined __cplusplus
  3154. (ParserSIG_tParsAttribute * Parent0, xxtUnionPtr xxGlobalRecoverySet)
  3155. # else
  3156. (Parent0, xxGlobalRecoverySet)
  3157. ParserSIG_tParsAttribute    * Parent0;
  3158. xxtUnionPtr    xxGlobalRecoverySet;
  3159. # endif
  3160. {
  3161.   ParserSIG_tParsAttribute Class_type1;
  3162.   ParserSIG_tParsAttribute Feature_adaptation1;
  3163.   xxtUnion xxUnion;
  3164.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3165.   xxUnion.xxLocalRecoverySet = 65; yyClass_type (& Class_type1, & xxUnion); /*  'end' 'export' 'redefine' 'rename' 'select' 'undefine' */
  3166. /* line 352 "eiffel_sig.ell" */
  3167.  Parent0->Tree = mParent(Class_type1.Tree, mFeature_adaptation0());            
  3168.   for (;;) {
  3169.     if ((xxVerticalSet [xxToken + 216] & 1 << 5 /*  'end' 'export' 'redefine' 'rename' 'select' 'undefine' */)) {
  3170.       xxUnion.xxLocalRecoverySet = 0; yyFeature_adaptation (& Feature_adaptation1, & xxUnion); /*  */
  3171. /* line 353 "eiffel_sig.ell" */
  3172.  Parent0->Tree->Parent.Feature_adaptation = Feature_adaptation1.Tree;            
  3173.       break;
  3174.     } else if ((xxVerticalSet [xxToken + 216] & 1 << 6 /*  ';' 'creation' 'end' expanded 'feature' 'invariant' Id */) || xxIsRepairMode) break;
  3175.     xxExpected (65, 65, xxGlobalRecoverySet); /*  'end' 'export' 'redefine' 'rename' 'select' 'undefine' /  'end' 'export' 'redefine' 'rename' 'select' 'undefine' */
  3176.   }
  3177. }
  3178.  
  3179. static void yyFeature_adaptation
  3180. # if defined __STDC__ | defined __cplusplus
  3181. (ParserSIG_tParsAttribute * Feature_adaptation0, xxtUnionPtr xxGlobalRecoverySet)
  3182. # else
  3183. (Feature_adaptation0, xxGlobalRecoverySet)
  3184. ParserSIG_tParsAttribute    * Feature_adaptation0;
  3185. xxtUnionPtr    xxGlobalRecoverySet;
  3186. # endif
  3187. {
  3188.   ParserSIG_tParsAttribute Rename1;
  3189.   ParserSIG_tParsAttribute New_exports1;
  3190.   ParserSIG_tParsAttribute Undefine1;
  3191.   ParserSIG_tParsAttribute Redefine1;
  3192.   ParserSIG_tParsAttribute Select1;
  3193.   xxtUnion xxUnion;
  3194.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3195. /* line 356 "eiffel_sig.ell" */
  3196.  Feature_adaptation0->Tree = mFeature_adaptation1(mRename_list0(), mNew_export_list0(),
  3197.                             mFeature_list0(), mFeature_list0(), mFeature_list0());  
  3198.   for (;;) {
  3199.     if ((xxToken == 80 /* 'rename' */)) {
  3200.       xxUnion.xxLocalRecoverySet = 66; yyRename (& Rename1, & xxUnion); /*  'end' 'export' 'redefine' 'select' 'undefine' */
  3201. /* line 358 "eiffel_sig.ell" */
  3202. Feature_adaptation0->Tree->Feature_adaptation1.Rename = Rename1.Tree;            
  3203.       break;
  3204.     } else if ((xxVerticalSet [xxToken + 216] & 1 << 7 /*  'end' 'export' 'redefine' 'select' 'undefine' */) || xxIsRepairMode) break;
  3205.     xxExpected (65, 65, xxGlobalRecoverySet); /*  'end' 'export' 'redefine' 'rename' 'select' 'undefine' /  'end' 'export' 'redefine' 'rename' 'select' 'undefine' */
  3206.   }
  3207.   for (;;) {
  3208.     if ((xxToken == 54 /* 'export' */)) {
  3209.       xxUnion.xxLocalRecoverySet = 67; yyNew_exports (& New_exports1, & xxUnion); /*  'end' 'redefine' 'select' 'undefine' */
  3210. /* line 359 "eiffel_sig.ell" */
  3211. Feature_adaptation0->Tree->Feature_adaptation1.New_export = New_exports1.Tree;        
  3212.       break;
  3213.     } else if ((xxVerticalSet [xxToken + 324] & 1 << 0 /*  'end' 'redefine' 'select' 'undefine' */) || xxIsRepairMode) break;
  3214.     xxExpected (66, 66, xxGlobalRecoverySet); /*  'end' 'export' 'redefine' 'select' 'undefine' /  'end' 'export' 'redefine' 'select' 'undefine' */
  3215.   }
  3216.   for (;;) {
  3217.     if ((xxToken == 91 /* 'undefine' */)) {
  3218.       xxUnion.xxLocalRecoverySet = 68; yyUndefine (& Undefine1, & xxUnion); /*  'end' 'redefine' 'select' */
  3219. /* line 360 "eiffel_sig.ell" */
  3220. Feature_adaptation0->Tree->Feature_adaptation1.Undefine = Undefine1.Tree;        
  3221.       break;
  3222.     } else if ((xxVerticalSet [xxToken + 324] & 1 << 1 /*  'end' 'redefine' 'select' */) || xxIsRepairMode) break;
  3223.     xxExpected (67, 67, xxGlobalRecoverySet); /*  'end' 'redefine' 'select' 'undefine' /  'end' 'redefine' 'select' 'undefine' */
  3224.   }
  3225.   for (;;) {
  3226.     if ((xxToken == 79 /* 'redefine' */)) {
  3227.       xxUnion.xxLocalRecoverySet = 69; yyRedefine (& Redefine1, & xxUnion); /*  'end' 'select' */
  3228. /* line 361 "eiffel_sig.ell" */
  3229. Feature_adaptation0->Tree->Feature_adaptation1.Redefine = Redefine1.Tree;        
  3230.       break;
  3231.     } else if ((xxVerticalSet [xxToken + 324] & 1 << 2 /*  'end' 'select' */) || xxIsRepairMode) break;
  3232.     xxExpected (68, 68, xxGlobalRecoverySet); /*  'end' 'redefine' 'select' /  'end' 'redefine' 'select' */
  3233.   }
  3234.   for (;;) {
  3235.     if ((xxToken == 85 /* 'select' */)) {
  3236.       xxUnion.xxLocalRecoverySet = 10; yySelect (& Select1, & xxUnion); /*  'end' */
  3237. /* line 362 "eiffel_sig.ell" */
  3238. Feature_adaptation0->Tree->Feature_adaptation1.Select = Select1.Tree;            
  3239.       break;
  3240.     } else if ((xxToken == 51 /* 'end' */) || xxIsRepairMode) break;
  3241.     xxExpected (69, 69, xxGlobalRecoverySet); /*  'end' 'select' /  'end' 'select' */
  3242.   }
  3243.   if (xxToken != 51 /* 'end' */)
  3244.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  3245.   else {
  3246.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3247.   }
  3248. }
  3249.  
  3250. static void yyRename
  3251. # if defined __STDC__ | defined __cplusplus
  3252. (ParserSIG_tParsAttribute * Rename0, xxtUnionPtr xxGlobalRecoverySet)
  3253. # else
  3254. (Rename0, xxGlobalRecoverySet)
  3255. ParserSIG_tParsAttribute    * Rename0;
  3256. xxtUnionPtr    xxGlobalRecoverySet;
  3257. # endif
  3258. {
  3259.   ParserSIG_tParsAttribute Rename_list1;
  3260.   xxtUnion xxUnion;
  3261.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3262.   if (xxToken != 80 /* 'rename' */)
  3263.     xxRecoveryLiteral (80, 70, xxGlobalRecoverySet); /*  infix prefix 'rename' Id */
  3264.   else {
  3265.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3266.   }
  3267.   xxUnion.xxLocalRecoverySet = 0; yyRename_list (& Rename_list1, & xxUnion); /*  */
  3268. /* line 368 "eiffel_sig.ell" */
  3269.  Rename0->Tree = ReverseTree(Rename_list1.Tree);                    
  3270. }
  3271.  
  3272. static void yyRename_list
  3273. # if defined __STDC__ | defined __cplusplus
  3274. (ParserSIG_tParsAttribute * Rename_list0, xxtUnionPtr xxGlobalRecoverySet)
  3275. # else
  3276. (Rename_list0, xxGlobalRecoverySet)
  3277. ParserSIG_tParsAttribute    * Rename_list0;
  3278. xxtUnionPtr    xxGlobalRecoverySet;
  3279. # endif
  3280. {
  3281.   ParserSIG_tParsAttribute Rename_pair1;
  3282.   xxtUnion xxUnion;
  3283.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3284. /* line 371 "eiffel_sig.ell" */
  3285.  Rename_list0->Tree = mRename_list0();                            
  3286.   for (;;) {
  3287.     if ((xxVerticalSet [xxToken + 324] & 1 << 3 /*  infix prefix Id */)) {
  3288.       for (;;) {
  3289.         xxUnion.xxLocalRecoverySet = 16; yyRename_pair (& Rename_pair1, & xxUnion); /*  ',' */
  3290. /* line 372 "eiffel_sig.ell" */
  3291.  Rename_list0->Tree = mRename_list1(Rename_pair1.Tree, Rename_list0->Tree);        
  3292.         if (! ((xxToken == 8 /* ',' */))) {
  3293.           if ((xxVerticalSet [xxToken + 216] & 1 << 7 /*  'end' 'export' 'redefine' 'select' 'undefine' */)) break;
  3294.           xxExpected (16, 71, xxGlobalRecoverySet); /*  ',' /  ',' infix prefix Id */
  3295.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 324] & 1 << 3 /*  infix prefix Id */))) break;
  3296.         }
  3297.         if (xxToken != 8 /* ',' */)
  3298.           xxRecoveryLiteral (8, 71, xxGlobalRecoverySet); /*  ',' infix prefix Id */
  3299.         else {
  3300.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3301.         }
  3302.       }
  3303.       break;
  3304.     } else if ((xxVerticalSet [xxToken + 216] & 1 << 7 /*  'end' 'export' 'redefine' 'select' 'undefine' */) || xxIsRepairMode) break;
  3305.     xxExpected (36, 36, xxGlobalRecoverySet); /*  infix prefix Id /  infix prefix Id */
  3306.   }
  3307. }
  3308.  
  3309. static void yyRename_pair
  3310. # if defined __STDC__ | defined __cplusplus
  3311. (ParserSIG_tParsAttribute * Rename_pair0, xxtUnionPtr xxGlobalRecoverySet)
  3312. # else
  3313. (Rename_pair0, xxGlobalRecoverySet)
  3314. ParserSIG_tParsAttribute    * Rename_pair0;
  3315. xxtUnionPtr    xxGlobalRecoverySet;
  3316. # endif
  3317. {
  3318.   ParserSIG_tParsAttribute Feature_name1, Feature_name2;
  3319.   xxtUnion xxUnion;
  3320.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3321.   xxUnion.xxLocalRecoverySet = 72; yyFeature_name (& Feature_name1, & xxUnion); /*  'as' infix prefix Id */
  3322.   if (xxToken != 37 /* 'as' */)
  3323.     xxRecoveryLiteral (37, 72, xxGlobalRecoverySet); /*  'as' infix prefix Id */
  3324.   else {
  3325.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3326.   }
  3327.   xxUnion.xxLocalRecoverySet = 0; yyFeature_name (& Feature_name2, & xxUnion); /*  */
  3328. /* line 377 "eiffel_sig.ell" */
  3329.  Rename_pair0->Tree = mRename_pair(Feature_name1.Tree, Feature_name2.Tree);     
  3330. }
  3331.  
  3332. static void yyClients
  3333. # if defined __STDC__ | defined __cplusplus
  3334. (ParserSIG_tParsAttribute * Clients0, xxtUnionPtr xxGlobalRecoverySet)
  3335. # else
  3336. (Clients0, xxGlobalRecoverySet)
  3337. ParserSIG_tParsAttribute    * Clients0;
  3338. xxtUnionPtr    xxGlobalRecoverySet;
  3339. # endif
  3340. {
  3341.   ParserSIG_tParsAttribute Class_list1;
  3342.   xxtUnion xxUnion;
  3343.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3344.   if (xxToken != 21 /* '{' */)
  3345.     xxRecoveryLiteral (21, 73, xxGlobalRecoverySet); /*  '{' '}' BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  3346.   else {
  3347.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3348.   }
  3349.   xxUnion.xxLocalRecoverySet = 74; yyClass_list (& Class_list1, & xxUnion); /*  '}' */
  3350. /* line 381 "eiffel_sig.ell" */
  3351.  comment_ref = no_comment; 
  3352.   if (xxToken != 22 /* '}' */)
  3353.     xxRecoveryLiteral (22, 74, xxGlobalRecoverySet); /*  '}' */
  3354.   else {
  3355.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3356.   }
  3357. /* line 381 "eiffel_sig.ell" */
  3358.  Clients0->Tree = mClients1(Class_list1.Tree);     
  3359. }
  3360.  
  3361. static void yyClass_list
  3362. # if defined __STDC__ | defined __cplusplus
  3363. (ParserSIG_tParsAttribute * Class_list0, xxtUnionPtr xxGlobalRecoverySet)
  3364. # else
  3365. (Class_list0, xxGlobalRecoverySet)
  3366. ParserSIG_tParsAttribute    * Class_list0;
  3367. xxtUnionPtr    xxGlobalRecoverySet;
  3368. # endif
  3369. {
  3370.   ParserSIG_tParsAttribute Formal_generic_name1;
  3371.   xxtUnion xxUnion;
  3372.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3373. /* line 384 "eiffel_sig.ell" */
  3374.  Class_list0->Tree = mnolist();                            
  3375.   for (;;) {
  3376.     if ((xxVerticalSet [xxToken + 324] & 1 << 4 /*  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */)) {
  3377.       for (;;) {
  3378.         xxUnion.xxLocalRecoverySet = 16; yyFormal_generic_name (& Formal_generic_name1, & xxUnion); /*  ',' */
  3379. /* line 385 "eiffel_sig.ell" */
  3380.  Class_list0->Tree = mlist(Formal_generic_name1.Tree, Class_list0->Tree);    
  3381.         if (! ((xxToken == 8 /* ',' */))) {
  3382.           if ((xxToken == 22 /* '}' */)) break;
  3383.           xxExpected (16, 76, xxGlobalRecoverySet); /*  ',' /  ',' BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  3384.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 324] & 1 << 4 /*  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */))) break;
  3385.         }
  3386.         if (xxToken != 8 /* ',' */)
  3387.           xxRecoveryLiteral (8, 76, xxGlobalRecoverySet); /*  ',' BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  3388.         else {
  3389.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3390.         }
  3391.       }
  3392.       break;
  3393.     } else if ((xxToken == 22 /* '}' */) || xxIsRepairMode) break;
  3394.     xxExpected (75, 75, xxGlobalRecoverySet); /*  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id /  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  3395.   }
  3396. }
  3397.  
  3398. static void yyNew_exports
  3399. # if defined __STDC__ | defined __cplusplus
  3400. (ParserSIG_tParsAttribute * New_exports0, xxtUnionPtr xxGlobalRecoverySet)
  3401. # else
  3402. (New_exports0, xxGlobalRecoverySet)
  3403. ParserSIG_tParsAttribute    * New_exports0;
  3404. xxtUnionPtr    xxGlobalRecoverySet;
  3405. # endif
  3406. {
  3407.   ParserSIG_tParsAttribute New_export_list1;
  3408.   xxtUnion xxUnion;
  3409.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3410.   if (xxToken != 54 /* 'export' */)
  3411.     xxRecoveryLiteral (54, 77, xxGlobalRecoverySet); /*  '{' 'export' */
  3412.   else {
  3413.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3414.   }
  3415.   xxUnion.xxLocalRecoverySet = 0; yyNew_export_list (& New_export_list1, & xxUnion); /*  */
  3416. /* line 392 "eiffel_sig.ell" */
  3417.  New_exports0->Tree = ReverseTree(New_export_list1.Tree);                
  3418. }
  3419.  
  3420. static void yyNew_export_list
  3421. # if defined __STDC__ | defined __cplusplus
  3422. (ParserSIG_tParsAttribute * New_export_list0, xxtUnionPtr xxGlobalRecoverySet)
  3423. # else
  3424. (New_export_list0, xxGlobalRecoverySet)
  3425. ParserSIG_tParsAttribute    * New_export_list0;
  3426. xxtUnionPtr    xxGlobalRecoverySet;
  3427. # endif
  3428. {
  3429.   ParserSIG_tParsAttribute New_export_item1;
  3430.   xxtUnion xxUnion;
  3431.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3432. /* line 395 "eiffel_sig.ell" */
  3433.  New_export_list0->Tree = mNew_export_list0();                        
  3434.   for (;;) {
  3435.     if ((xxToken == 21 /* '{' */)) {
  3436.       for (;;) {
  3437.         xxUnion.xxLocalRecoverySet = 13; yyNew_export_item (& New_export_item1, & xxUnion); /*  ';' */
  3438. /* line 396 "eiffel_sig.ell" */
  3439.  New_export_list0->Tree = mNew_export_list1(New_export_item1.Tree, New_export_list0->Tree); 
  3440.         if (! ((xxToken == 7 /* ';' */))) {
  3441.           if ((xxVerticalSet [xxToken + 324] & 1 << 0 /*  'end' 'redefine' 'select' 'undefine' */)) break;
  3442.           xxExpected (13, 79, xxGlobalRecoverySet); /*  ';' /  ';' '{' */
  3443.           if (! ((xxToken == 7 /* ';' */) || (xxToken == 21 /* '{' */))) break;
  3444.         }
  3445.         if (xxToken != 7 /* ';' */)
  3446.           xxRecoveryLiteral (7, 79, xxGlobalRecoverySet); /*  ';' '{' */
  3447.         else {
  3448.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3449.         }
  3450.       }
  3451.       break;
  3452.     } else if ((xxVerticalSet [xxToken + 324] & 1 << 0 /*  'end' 'redefine' 'select' 'undefine' */) || xxIsRepairMode) break;
  3453.     xxExpected (78, 78, xxGlobalRecoverySet); /*  '{' /  '{' */
  3454.   }
  3455. }
  3456.  
  3457. static void yyNew_export_item
  3458. # if defined __STDC__ | defined __cplusplus
  3459. (ParserSIG_tParsAttribute * New_export_item0, xxtUnionPtr xxGlobalRecoverySet)
  3460. # else
  3461. (New_export_item0, xxGlobalRecoverySet)
  3462. ParserSIG_tParsAttribute    * New_export_item0;
  3463. xxtUnionPtr    xxGlobalRecoverySet;
  3464. # endif
  3465. {
  3466.   ParserSIG_tParsAttribute Clients1;
  3467.   ParserSIG_tParsAttribute Feature_set1;
  3468.   xxtUnion xxUnion;
  3469.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3470.   xxUnion.xxLocalRecoverySet = 80; yyClients (& Clients1, & xxUnion); /*  'all' infix prefix Id */
  3471.   xxUnion.xxLocalRecoverySet = 0; yyFeature_set (& Feature_set1, & xxUnion); /*  */
  3472. /* line 401 "eiffel_sig.ell" */
  3473.  New_export_item0->Tree = mNew_export_item(Clients1.Tree, Feature_set1.Tree);        
  3474. }
  3475.  
  3476. static void yyFeature_set
  3477. # if defined __STDC__ | defined __cplusplus
  3478. (ParserSIG_tParsAttribute * Feature_set0, xxtUnionPtr xxGlobalRecoverySet)
  3479. # else
  3480. (Feature_set0, xxGlobalRecoverySet)
  3481. ParserSIG_tParsAttribute    * Feature_set0;
  3482. xxtUnionPtr    xxGlobalRecoverySet;
  3483. # endif
  3484. {
  3485.   ParserSIG_tParsAttribute Feature_list1;
  3486.   xxtUnion xxUnion;
  3487.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3488.   for (;;) {
  3489.     switch (xxToken) {
  3490.     case 7 /* ';' */ :; 
  3491.     case 51 /* 'end' */ :; 
  3492.     case 63 /* infix */ :; 
  3493.     case 77 /* prefix */ :; 
  3494.     case 79 /* 'redefine' */ :; 
  3495.     case 85 /* 'select' */ :; 
  3496.     case 91 /* 'undefine' */ :; 
  3497.     case 106 /* Id */ :; 
  3498.       xxUnion.xxLocalRecoverySet = 0; yyFeature_list (& Feature_list1, & xxUnion); /*  */
  3499. /* line 405 "eiffel_sig.ell" */
  3500.  Feature_set0->Tree = ReverseTree(Feature_list1.Tree);                    
  3501.       goto xx13;
  3502.     case 35 /* 'all' */ :; 
  3503.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3504. /* line 406 "eiffel_sig.ell" */
  3505.  Feature_set0->Tree = mAll();                                
  3506.       goto xx13;
  3507.     case 8:;
  3508.     case 9:;
  3509.     case 10:;
  3510.     case 11:;
  3511.     case 12:;
  3512.     case 13:;
  3513.     case 14:;
  3514.     case 15:;
  3515.     case 16:;
  3516.     case 17:;
  3517.     case 18:;
  3518.     case 19:;
  3519.     case 20:;
  3520.     case 21:;
  3521.     case 22:;
  3522.     case 23:;
  3523.     case 24:;
  3524.     case 25:;
  3525.     case 26:;
  3526.     case 27:;
  3527.     case 28:;
  3528.     case 29:;
  3529.     case 30:;
  3530.     case 31:;
  3531.     case 32:;
  3532.     case 33:;
  3533.     case 34:;
  3534.     case 36:;
  3535.     case 37:;
  3536.     case 38:;
  3537.     case 39:;
  3538.     case 40:;
  3539.     case 41:;
  3540.     case 42:;
  3541.     case 43:;
  3542.     case 44:;
  3543.     case 45:;
  3544.     case 46:;
  3545.     case 47:;
  3546.     case 48:;
  3547.     case 49:;
  3548.     case 50:;
  3549.     case 52:;
  3550.     case 53:;
  3551.     case 54:;
  3552.     case 55:;
  3553.     case 56:;
  3554.     case 57:;
  3555.     case 58:;
  3556.     case 59:;
  3557.     case 60:;
  3558.     case 61:;
  3559.     case 62:;
  3560.     case 64:;
  3561.     case 65:;
  3562.     case 66:;
  3563.     case 67:;
  3564.     case 68:;
  3565.     case 69:;
  3566.     case 70:;
  3567.     case 71:;
  3568.     case 72:;
  3569.     case 73:;
  3570.     case 74:;
  3571.     case 75:;
  3572.     case 76:;
  3573.     case 78:;
  3574.     case 80:;
  3575.     case 81:;
  3576.     case 82:;
  3577.     case 83:;
  3578.     case 84:;
  3579.     case 86:;
  3580.     case 87:;
  3581.     case 88:;
  3582.     case 89:;
  3583.     case 90:;
  3584.     case 92:;
  3585.     case 93:;
  3586.     case 94:;
  3587.     case 95:;
  3588.     case 96:;
  3589.     case 97:;
  3590.     case 98:;
  3591.     case 99:;
  3592.     case 100:;
  3593.     case 101:;
  3594.     case 102:;
  3595.     case 103:;
  3596.     case 104:;
  3597.     case 105:;
  3598.     default:
  3599.       if (xxIsRepairMode) {
  3600.         xxUnion.xxLocalRecoverySet = 0; yyFeature_list (& Feature_list1, & xxUnion); /*  */
  3601. /* line 405 "eiffel_sig.ell" */
  3602.  Feature_set0->Tree = ReverseTree(Feature_list1.Tree);                    
  3603.         goto xx13;
  3604.       }
  3605. xxUnexpected (80, xxGlobalRecoverySet); /*  'all' infix prefix Id */
  3606.     }
  3607.   }
  3608.   xx13:;
  3609. }
  3610.  
  3611. static void yyFeature_list
  3612. # if defined __STDC__ | defined __cplusplus
  3613. (ParserSIG_tParsAttribute * Feature_list0, xxtUnionPtr xxGlobalRecoverySet)
  3614. # else
  3615. (Feature_list0, xxGlobalRecoverySet)
  3616. ParserSIG_tParsAttribute    * Feature_list0;
  3617. xxtUnionPtr    xxGlobalRecoverySet;
  3618. # endif
  3619. {
  3620.   ParserSIG_tParsAttribute Feature_name1;
  3621.   xxtUnion xxUnion;
  3622.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3623. /* line 409 "eiffel_sig.ell" */
  3624.  Feature_list0->Tree = mFeature_list0();                        
  3625.   for (;;) {
  3626.     if ((xxVerticalSet [xxToken + 324] & 1 << 3 /*  infix prefix Id */)) {
  3627.       for (;;) {
  3628.         xxUnion.xxLocalRecoverySet = 16; yyFeature_name (& Feature_name1, & xxUnion); /*  ',' */
  3629. /* line 410 "eiffel_sig.ell" */
  3630.  Feature_list0->Tree = mFeature_list1(Feature_name1.Tree, Feature_list0->Tree);    
  3631.         if (! ((xxToken == 8 /* ',' */))) {
  3632.           if ((xxVerticalSet [xxToken + 324] & 1 << 5 /*  ';' 'creation' 'end' 'feature' 'invariant' 'redefine' 'select' 'undefine' */)) break;
  3633.           xxExpected (16, 71, xxGlobalRecoverySet); /*  ',' /  ',' infix prefix Id */
  3634.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 324] & 1 << 3 /*  infix prefix Id */))) break;
  3635.         }
  3636.         if (xxToken != 8 /* ',' */)
  3637.           xxRecoveryLiteral (8, 71, xxGlobalRecoverySet); /*  ',' infix prefix Id */
  3638.         else {
  3639.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3640.         }
  3641.       }
  3642.       break;
  3643.     } else if ((xxVerticalSet [xxToken + 324] & 1 << 5 /*  ';' 'creation' 'end' 'feature' 'invariant' 'redefine' 'select' 'undefine' */) || xxIsRepairMode) break;
  3644.     xxExpected (36, 36, xxGlobalRecoverySet); /*  infix prefix Id /  infix prefix Id */
  3645.   }
  3646. }
  3647.  
  3648. static void yyFormal_arguments
  3649. # if defined __STDC__ | defined __cplusplus
  3650. (ParserSIG_tParsAttribute * Formal_arguments0, xxtUnionPtr xxGlobalRecoverySet)
  3651. # else
  3652. (Formal_arguments0, xxGlobalRecoverySet)
  3653. ParserSIG_tParsAttribute    * Formal_arguments0;
  3654. xxtUnionPtr    xxGlobalRecoverySet;
  3655. # endif
  3656. {
  3657.   ParserSIG_tParsAttribute Entity_declaration_list1;
  3658.   xxtUnion xxUnion;
  3659.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3660.   if (xxToken != 17 /* '(' */)
  3661.     xxRecoveryLiteral (17, 82, xxGlobalRecoverySet); /*  '(' ')' Id */
  3662.   else {
  3663.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3664.   }
  3665.   xxUnion.xxLocalRecoverySet = 83; yyEntity_declaration_list (& Entity_declaration_list1, & xxUnion); /*  ')' */
  3666.   if (xxToken != 18 /* ')' */)
  3667.     xxRecoveryLiteral (18, 83, xxGlobalRecoverySet); /*  ')' */
  3668.   else {
  3669.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3670.   }
  3671. /* line 416 "eiffel_sig.ell" */
  3672.  Formal_arguments0->Tree = ReverseTree(Entity_declaration_list1.Tree);        
  3673. }
  3674.  
  3675. static void yyEntity_declaration_list
  3676. # if defined __STDC__ | defined __cplusplus
  3677. (ParserSIG_tParsAttribute * Entity_declaration_list0, xxtUnionPtr xxGlobalRecoverySet)
  3678. # else
  3679. (Entity_declaration_list0, xxGlobalRecoverySet)
  3680. ParserSIG_tParsAttribute    * Entity_declaration_list0;
  3681. xxtUnionPtr    xxGlobalRecoverySet;
  3682. # endif
  3683. {
  3684.   ParserSIG_tParsAttribute Entity_declaration_group1, Entity_declaration_group2;
  3685.   xxtUnion xxUnion;
  3686.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3687. /* line 419 "eiffel_sig.ell" */
  3688.  Entity_declaration_list0->Tree = mFormal_args0();                
  3689.   for (;;) {
  3690.     if ((xxToken == 106 /* Id */)) {
  3691.       xxUnion.xxLocalRecoverySet = 85; yyEntity_declaration_group (& Entity_declaration_group1, & xxUnion); /*  ';' ',' Id */
  3692. /* line 420 "eiffel_sig.ell" */
  3693.  Entity_declaration_list0->Tree = mFormal_args1(Entity_declaration_group1.Tree,
  3694.                                      Entity_declaration_list0->Tree);    
  3695.       for (;;) {
  3696.         if ((xxVerticalSet [xxToken + 324] & 1 << 7 /*  ';' ',' Id */)) {
  3697.           for (;;) {
  3698.             if ((xxVerticalSet [xxToken + 432] & 1 << 0 /*  ';' ',' */)) {
  3699.               if ((xxToken == 7 /* ';' */)) {
  3700.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3701.               } else {
  3702.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3703.               }
  3704.               break;
  3705.             } else if ((xxToken == 106 /* Id */) || xxIsRepairMode) break;
  3706.             xxExpected (85, 85, xxGlobalRecoverySet); /*  ';' ',' Id /  ';' ',' Id */
  3707.           }
  3708.           xxUnion.xxLocalRecoverySet = 0; yyEntity_declaration_group (& Entity_declaration_group2, & xxUnion); /*  */
  3709. /* line 423 "eiffel_sig.ell" */
  3710.  Entity_declaration_list0->Tree = mFormal_args1(Entity_declaration_group2.Tree,
  3711.                                      Entity_declaration_list0->Tree);    
  3712.         } else if ((xxVerticalSet [xxToken + 324] & 1 << 6 /*  ')' deferred do 'external' once */) || xxIsRepairMode) break;
  3713.         else
  3714.           xxExpected (85, 85, xxGlobalRecoverySet); /*  ';' ',' Id /  ';' ',' Id */
  3715.       }
  3716.       break;
  3717.     } else if ((xxVerticalSet [xxToken + 324] & 1 << 6 /*  ')' deferred do 'external' once */) || xxIsRepairMode) break;
  3718.     xxExpected (84, 84, xxGlobalRecoverySet); /*  Id /  Id */
  3719.   }
  3720. }
  3721.  
  3722. static void yyEntity_declaration_group
  3723. # if defined __STDC__ | defined __cplusplus
  3724. (ParserSIG_tParsAttribute * Entity_declaration_group0, xxtUnionPtr xxGlobalRecoverySet)
  3725. # else
  3726. (Entity_declaration_group0, xxGlobalRecoverySet)
  3727. ParserSIG_tParsAttribute    * Entity_declaration_group0;
  3728. xxtUnionPtr    xxGlobalRecoverySet;
  3729. # endif
  3730. {
  3731.   ParserSIG_tParsAttribute Type_mark1;
  3732.   ParserSIG_tParsAttribute Identifier_list1;
  3733.   xxtUnion xxUnion;
  3734.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3735.   xxUnion.xxLocalRecoverySet = 88; yyIdentifier_list (& Identifier_list1, & xxUnion); /*  ':' */
  3736.   xxUnion.xxLocalRecoverySet = 0; yyType_mark (& Type_mark1, & xxUnion); /*  */
  3737. /* line 428 "eiffel_sig.ell" */
  3738.  Entity_declaration_group0->Tree = mEntity_decl_group(Identifier_list1.Tree, 
  3739.                                             Type_mark1.Tree);    
  3740. }
  3741.  
  3742. static void yyIdentifier_list
  3743. # if defined __STDC__ | defined __cplusplus
  3744. (ParserSIG_tParsAttribute * Identifier_list0, xxtUnionPtr xxGlobalRecoverySet)
  3745. # else
  3746. (Identifier_list0, xxGlobalRecoverySet)
  3747. ParserSIG_tParsAttribute    * Identifier_list0;
  3748. xxtUnionPtr    xxGlobalRecoverySet;
  3749. # endif
  3750. {
  3751.   ParserSIG_tParsAttribute Identifier1;
  3752.   xxtUnion xxUnion;
  3753.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3754. /* line 432 "eiffel_sig.ell" */
  3755.  Identifier_list0->Tree = mnolist();                            
  3756.   for (;;) {
  3757.     xxUnion.xxLocalRecoverySet = 16; yyIdentifier (& Identifier1, & xxUnion); /*  ',' */
  3758. /* line 433 "eiffel_sig.ell" */
  3759.  Identifier_list0->Tree = mlist(Identifier1.Tree, Identifier_list0->Tree);        
  3760.     if (! ((xxToken == 8 /* ',' */))) {
  3761.       if ((xxToken == 9 /* ':' */)) break;
  3762.       xxExpected (16, 87, xxGlobalRecoverySet); /*  ',' /  ',' Id */
  3763.       if (! ((xxToken == 8 /* ',' */) || (xxToken == 106 /* Id */))) break;
  3764.     }
  3765.     if (xxToken != 8 /* ',' */)
  3766.       xxRecoveryLiteral (8, 87, xxGlobalRecoverySet); /*  ',' Id */
  3767.     else {
  3768.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3769.     }
  3770.   }
  3771. /* line 434 "eiffel_sig.ell" */
  3772.  Identifier_list0->Tree = ReverseTree(Identifier_list0->Tree);                
  3773. }
  3774.  
  3775. static void yyType_mark
  3776. # if defined __STDC__ | defined __cplusplus
  3777. (ParserSIG_tParsAttribute * Type_mark0, xxtUnionPtr xxGlobalRecoverySet)
  3778. # else
  3779. (Type_mark0, xxGlobalRecoverySet)
  3780. ParserSIG_tParsAttribute    * Type_mark0;
  3781. xxtUnionPtr    xxGlobalRecoverySet;
  3782. # endif
  3783. {
  3784.   ParserSIG_tParsAttribute Type1;
  3785.   xxtUnion xxUnion;
  3786.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3787.   if (xxToken != 9 /* ':' */)
  3788.     xxRecoveryLiteral (9, 89, xxGlobalRecoverySet); /*  ':' BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */
  3789.   else {
  3790.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3791.   }
  3792.   xxUnion.xxLocalRecoverySet = 0; yyType (& Type1, & xxUnion); /*  */
  3793. /* line 438 "eiffel_sig.ell" */
  3794.  Type_mark0->Tree = Type1.Tree;                            
  3795. }
  3796.  
  3797. static void yyRoutine
  3798. # if defined __STDC__ | defined __cplusplus
  3799. (ParserSIG_tParsAttribute * Routine0, xxtUnionPtr xxGlobalRecoverySet)
  3800. # else
  3801. (Routine0, xxGlobalRecoverySet)
  3802. ParserSIG_tParsAttribute    * Routine0;
  3803. xxtUnionPtr    xxGlobalRecoverySet;
  3804. # endif
  3805. {
  3806.   ParserSIG_tParsAttribute Obsolete1;
  3807.   ParserSIG_tParsAttribute Precondition1;
  3808.   ParserSIG_tParsAttribute Local_declarations1;
  3809.   ParserSIG_tParsAttribute Routine_body1;
  3810.   ParserSIG_tParsAttribute Postcondition1;
  3811.   ParserSIG_tParsAttribute Rescue1;
  3812.   xxtUnion xxUnion;
  3813.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3814. /* line 442 "eiffel_sig.ell" */
  3815.  Routine0->Tree = mRoutine(mString0(), 
  3816.                             no_comment, 
  3817.                             mCondition0(), 
  3818.                             mFormal_args0(), 
  3819.                             mRoutine_body0(), 
  3820.                                 mCondition0(), 
  3821.                             mCompound0(), 
  3822.                             no_comment);                        
  3823.   for (;;) {
  3824.     if ((xxToken == 73 /* 'obsolete' */)) {
  3825.       xxUnion.xxLocalRecoverySet = 92; yyObsolete (& Obsolete1, & xxUnion); /*  deferred do 'end' 'ensure' 'external' 'local' once 'require' 'rescue' */
  3826. /* line 450 "eiffel_sig.ell" */
  3827.  Routine0->Tree->Routine.Obsolete = Obsolete1.Tree;                    
  3828.       break;
  3829.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 1 /*  deferred do 'external' 'local' once 'require' */) || xxIsRepairMode) break;
  3830.     xxExpected (90, 91, xxGlobalRecoverySet); /*  deferred do 'external' 'local' 'obsolete' once 'require' /  deferred do 'end' 'ensure' 'external' 'local' 'obsolete' once 'require' 'rescue' */
  3831.   }
  3832. /* line 451 "eiffel_sig.ell" */
  3833.  Routine0->Tree->Routine.comment = comment_ref;                    
  3834.   for (;;) {
  3835.     if ((xxToken == 81 /* 'require' */)) {
  3836.       xxUnion.xxLocalRecoverySet = 94; yyPrecondition (& Precondition1, & xxUnion); /*  deferred do 'end' 'ensure' 'external' 'local' once 'rescue' */
  3837. /* line 452 "eiffel_sig.ell" */
  3838.  Routine0->Tree->Routine.Precondition = Precondition1.Tree;                
  3839.       break;
  3840.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 2 /*  deferred do 'external' 'local' once */) || xxIsRepairMode) break;
  3841.     xxExpected (93, 92, xxGlobalRecoverySet); /*  deferred do 'external' 'local' once 'require' /  deferred do 'end' 'ensure' 'external' 'local' once 'require' 'rescue' */
  3842.   }
  3843.   for (;;) {
  3844.     if ((xxToken == 70 /* 'local' */)) {
  3845.       xxUnion.xxLocalRecoverySet = 96; yyLocal_declarations (& Local_declarations1, & xxUnion); /*  deferred do 'end' 'ensure' 'external' once 'rescue' */
  3846. /* line 453 "eiffel_sig.ell" */
  3847.  Routine0->Tree->Routine.Local_decls  = Local_declarations1.Tree;            
  3848.       break;
  3849.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 3 /*  deferred do 'external' once */) || xxIsRepairMode) break;
  3850.     xxExpected (95, 94, xxGlobalRecoverySet); /*  deferred do 'external' 'local' once /  deferred do 'end' 'ensure' 'external' 'local' once 'rescue' */
  3851.   }
  3852.   xxUnion.xxLocalRecoverySet = 97; yyRoutine_body (& Routine_body1, & xxUnion); /*  'end' 'ensure' 'rescue' */
  3853. /* line 454 "eiffel_sig.ell" */
  3854.  Routine0->Tree->Routine.Routine_body = Routine_body1.Tree;                
  3855.   for (;;) {
  3856.     if ((xxToken == 52 /* 'ensure' */)) {
  3857.       xxUnion.xxLocalRecoverySet = 98; yyPostcondition (& Postcondition1, & xxUnion); /*  'end' 'rescue' */
  3858. /* line 455 "eiffel_sig.ell" */
  3859.  Routine0->Tree->Routine.Postcondition = Postcondition1.Tree;                
  3860.       break;
  3861.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 4 /*  'end' 'rescue' */) || xxIsRepairMode) break;
  3862.     xxExpected (97, 97, xxGlobalRecoverySet); /*  'end' 'ensure' 'rescue' /  'end' 'ensure' 'rescue' */
  3863.   }
  3864.   for (;;) {
  3865.     if ((xxToken == 82 /* 'rescue' */)) {
  3866.       xxUnion.xxLocalRecoverySet = 10; yyRescue (& Rescue1, & xxUnion); /*  'end' */
  3867. /* line 456 "eiffel_sig.ell" */
  3868.  Routine0->Tree->Routine.Rescue = Rescue1.Tree;                    
  3869.       break;
  3870.     } else if ((xxToken == 51 /* 'end' */) || xxIsRepairMode) break;
  3871.     xxExpected (98, 98, xxGlobalRecoverySet); /*  'end' 'rescue' /  'end' 'rescue' */
  3872.   }
  3873. /* line 457 "eiffel_sig.ell" */
  3874.  comment_ref = no_comment;                                
  3875.   if (xxToken != 51 /* 'end' */)
  3876.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  3877.   else {
  3878.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  3879.   }
  3880. /* line 459 "eiffel_sig.ell" */
  3881.  Routine0->Tree->Routine.end_comment = comment_ref;                    
  3882. }
  3883.  
  3884. static void yyRoutine_body
  3885. # if defined __STDC__ | defined __cplusplus
  3886. (ParserSIG_tParsAttribute * Routine_body0, xxtUnionPtr xxGlobalRecoverySet)
  3887. # else
  3888. (Routine_body0, xxGlobalRecoverySet)
  3889. ParserSIG_tParsAttribute    * Routine_body0;
  3890. xxtUnionPtr    xxGlobalRecoverySet;
  3891. # endif
  3892. {
  3893.   ParserSIG_tParsAttribute Effective1;
  3894.   ParserSIG_tParsAttribute Deferred1;
  3895.   xxtUnion xxUnion;
  3896.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3897.   for (;;) {
  3898.     switch (xxToken) {
  3899.     case 47 /* do */ :; 
  3900.     case 55 /* 'external' */ :; 
  3901.     case 75 /* once */ :; 
  3902.       xxUnion.xxLocalRecoverySet = 0; yyEffective (& Effective1, & xxUnion); /*  */
  3903. /* line 463 "eiffel_sig.ell" */
  3904.  Routine_body0->Tree = Effective1.Tree;                        
  3905.       goto xx14;
  3906.     case 46 /* deferred */ :; 
  3907.       xxUnion.xxLocalRecoverySet = 0; yyDeferred (& Deferred1, & xxUnion); /*  */
  3908. /* line 464 "eiffel_sig.ell" */
  3909.  Routine_body0->Tree = Deferred1.Tree;                            
  3910.       goto xx14;
  3911.     case 48:;
  3912.     case 49:;
  3913.     case 50:;
  3914.     case 51:;
  3915.     case 52:;
  3916.     case 53:;
  3917.     case 54:;
  3918.     case 56:;
  3919.     case 57:;
  3920.     case 58:;
  3921.     case 59:;
  3922.     case 60:;
  3923.     case 61:;
  3924.     case 62:;
  3925.     case 63:;
  3926.     case 64:;
  3927.     case 65:;
  3928.     case 66:;
  3929.     case 67:;
  3930.     case 68:;
  3931.     case 69:;
  3932.     case 70:;
  3933.     case 71:;
  3934.     case 72:;
  3935.     case 73:;
  3936.     case 74:;
  3937.     default:
  3938.       if (xxIsRepairMode) {
  3939.         xxUnion.xxLocalRecoverySet = 0; yyEffective (& Effective1, & xxUnion); /*  */
  3940. /* line 463 "eiffel_sig.ell" */
  3941.  Routine_body0->Tree = Effective1.Tree;                        
  3942.         goto xx14;
  3943.       }
  3944.       xxExpected (99, 99, xxGlobalRecoverySet); /*  deferred do 'external' once /  deferred do 'external' once */
  3945.     }
  3946.   }
  3947.   xx14:;
  3948. }
  3949.  
  3950. static void yyEffective
  3951. # if defined __STDC__ | defined __cplusplus
  3952. (ParserSIG_tParsAttribute * Effective0, xxtUnionPtr xxGlobalRecoverySet)
  3953. # else
  3954. (Effective0, xxGlobalRecoverySet)
  3955. ParserSIG_tParsAttribute    * Effective0;
  3956. xxtUnionPtr    xxGlobalRecoverySet;
  3957. # endif
  3958. {
  3959.   ParserSIG_tParsAttribute Internal1;
  3960.   ParserSIG_tParsAttribute External1;
  3961.   xxtUnion xxUnion;
  3962.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  3963.   for (;;) {
  3964.     switch (xxToken) {
  3965.     case 47 /* do */ :; 
  3966.     case 75 /* once */ :; 
  3967.       xxUnion.xxLocalRecoverySet = 0; yyInternal (& Internal1, & xxUnion); /*  */
  3968. /* line 468 "eiffel_sig.ell" */
  3969.  Effective0->Tree = Internal1.Tree;                            
  3970.       goto xx15;
  3971.     case 55 /* 'external' */ :; 
  3972.       xxUnion.xxLocalRecoverySet = 0; yyExternal (& External1, & xxUnion); /*  */
  3973. /* line 469 "eiffel_sig.ell" */
  3974.  Effective0->Tree = External1.Tree;                            
  3975.       goto xx15;
  3976.     case 48:;
  3977.     case 49:;
  3978.     case 50:;
  3979.     case 51:;
  3980.     case 52:;
  3981.     case 53:;
  3982.     case 54:;
  3983.     case 56:;
  3984.     case 57:;
  3985.     case 58:;
  3986.     case 59:;
  3987.     case 60:;
  3988.     case 61:;
  3989.     case 62:;
  3990.     case 63:;
  3991.     case 64:;
  3992.     case 65:;
  3993.     case 66:;
  3994.     case 67:;
  3995.     case 68:;
  3996.     case 69:;
  3997.     case 70:;
  3998.     case 71:;
  3999.     case 72:;
  4000.     case 73:;
  4001.     case 74:;
  4002.     default:
  4003.       if (xxIsRepairMode) {
  4004.         xxUnion.xxLocalRecoverySet = 0; yyInternal (& Internal1, & xxUnion); /*  */
  4005. /* line 468 "eiffel_sig.ell" */
  4006.  Effective0->Tree = Internal1.Tree;                            
  4007.         goto xx15;
  4008.       }
  4009.       xxExpected (100, 100, xxGlobalRecoverySet); /*  do 'external' once /  do 'external' once */
  4010.     }
  4011.   }
  4012.   xx15:;
  4013. }
  4014.  
  4015. static void yyInternal
  4016. # if defined __STDC__ | defined __cplusplus
  4017. (ParserSIG_tParsAttribute * Internal0, xxtUnionPtr xxGlobalRecoverySet)
  4018. # else
  4019. (Internal0, xxGlobalRecoverySet)
  4020. ParserSIG_tParsAttribute    * Internal0;
  4021. xxtUnionPtr    xxGlobalRecoverySet;
  4022. # endif
  4023. {
  4024.     EiffelScan_tScanAttribute do1;
  4025.     EiffelScan_tScanAttribute once1;
  4026.   ParserSIG_tParsAttribute Compound1;
  4027.   xxtUnion xxUnion;
  4028.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4029.   for (;;) {
  4030.     switch (xxToken) {
  4031.     case 47 /* do */ :; 
  4032.       do1 =       EiffelScan_Attribute;
  4033.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4034.       xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  4035. /* line 473 "eiffel_sig.ell" */
  4036.  Internal0->Tree = mDo_body(ReverseTree(Compound1.Tree));                
  4037.       goto xx16;
  4038.     case 75 /* once */ :; 
  4039.       once1 =       EiffelScan_Attribute;
  4040.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4041.       xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  4042. /* line 474 "eiffel_sig.ell" */
  4043.  Internal0->Tree = mOnce_body(ReverseTree(Compound1.Tree));                
  4044.       goto xx16;
  4045.     case 48:;
  4046.     case 49:;
  4047.     case 50:;
  4048.     case 51:;
  4049.     case 52:;
  4050.     case 53:;
  4051.     case 54:;
  4052.     case 55:;
  4053.     case 56:;
  4054.     case 57:;
  4055.     case 58:;
  4056.     case 59:;
  4057.     case 60:;
  4058.     case 61:;
  4059.     case 62:;
  4060.     case 63:;
  4061.     case 64:;
  4062.     case 65:;
  4063.     case 66:;
  4064.     case 67:;
  4065.     case 68:;
  4066.     case 69:;
  4067.     case 70:;
  4068.     case 71:;
  4069.     case 72:;
  4070.     case 73:;
  4071.     case 74:;
  4072.     default:
  4073.       if (xxIsRepairMode) {
  4074.         if (xxToken != 47 /* do */)
  4075.           xxRecoveryTerminal (47, 101, xxGlobalRecoverySet, & do1); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' do 'from' 'if' 'inspect' Result retry Id */
  4076.         else {
  4077.           do1 =         EiffelScan_Attribute;
  4078.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4079.         }
  4080.         xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  4081. /* line 473 "eiffel_sig.ell" */
  4082.  Internal0->Tree = mDo_body(ReverseTree(Compound1.Tree));                
  4083.         goto xx16;
  4084.       }
  4085.       xxExpected (103, 103, xxGlobalRecoverySet); /*  do once /  do once */
  4086.     }
  4087.   }
  4088.   xx16:;
  4089. }
  4090.  
  4091. static void yyDeferred
  4092. # if defined __STDC__ | defined __cplusplus
  4093. (ParserSIG_tParsAttribute * Deferred0, xxtUnionPtr xxGlobalRecoverySet)
  4094. # else
  4095. (Deferred0, xxGlobalRecoverySet)
  4096. ParserSIG_tParsAttribute    * Deferred0;
  4097. xxtUnionPtr    xxGlobalRecoverySet;
  4098. # endif
  4099. {
  4100.     EiffelScan_tScanAttribute deferred1;
  4101.   if (xxToken != 46 /* deferred */)
  4102.     xxRecoveryTerminal (46, 104, xxGlobalRecoverySet, & deferred1); /*  deferred */
  4103.   else {
  4104.     deferred1 =   EiffelScan_Attribute;
  4105.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4106.   }
  4107. /* line 478 "eiffel_sig.ell" */
  4108.  Deferred0->Tree = mDeferred(deferred1.Position);                    
  4109. }
  4110.  
  4111. static void yyLocal_declarations
  4112. # if defined __STDC__ | defined __cplusplus
  4113. (ParserSIG_tParsAttribute * Local_declarations0, xxtUnionPtr xxGlobalRecoverySet)
  4114. # else
  4115. (Local_declarations0, xxGlobalRecoverySet)
  4116. ParserSIG_tParsAttribute    * Local_declarations0;
  4117. xxtUnionPtr    xxGlobalRecoverySet;
  4118. # endif
  4119. {
  4120.   ParserSIG_tParsAttribute Entity_declaration_list1;
  4121.   xxtUnion xxUnion;
  4122.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4123.   if (xxToken != 70 /* 'local' */)
  4124.     xxRecoveryLiteral (70, 105, xxGlobalRecoverySet); /*  'local' Id */
  4125.   else {
  4126.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4127.   }
  4128.   xxUnion.xxLocalRecoverySet = 0; yyEntity_declaration_list (& Entity_declaration_list1, & xxUnion); /*  */
  4129. /* line 485 "eiffel_sig.ell" */
  4130.  Local_declarations0->Tree = ReverseTree(Entity_declaration_list1.Tree);    
  4131. }
  4132.  
  4133. static void yyInstruction
  4134. # if defined __STDC__ | defined __cplusplus
  4135. (ParserSIG_tParsAttribute * Instruction0, xxtUnionPtr xxGlobalRecoverySet)
  4136. # else
  4137. (Instruction0, xxGlobalRecoverySet)
  4138. ParserSIG_tParsAttribute    * Instruction0;
  4139. xxtUnionPtr    xxGlobalRecoverySet;
  4140. # endif
  4141. {
  4142.   ParserSIG_tParsAttribute Creation1;
  4143.   ParserSIG_tParsAttribute Qualified_call1;
  4144.   ParserSIG_tParsAttribute Current_instruct1;
  4145.   ParserSIG_tParsAttribute Result_instruct1;
  4146.   ParserSIG_tParsAttribute Ident_instruct1;
  4147.   ParserSIG_tParsAttribute Conditional1;
  4148.   ParserSIG_tParsAttribute Multi_branch1;
  4149.   ParserSIG_tParsAttribute Loop1;
  4150.   ParserSIG_tParsAttribute Debug1;
  4151.   ParserSIG_tParsAttribute Check1;
  4152.   ParserSIG_tParsAttribute Retry1;
  4153.   xxtUnion xxUnion;
  4154.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4155.   for (;;) {
  4156.     switch (xxToken) {
  4157.     case 11 /* '!' */ :; 
  4158.     case 12 /* '!!' */ :; 
  4159.       xxUnion.xxLocalRecoverySet = 0; yyCreation (& Creation1, & xxUnion); /*  */
  4160. /* line 492 "eiffel_sig.ell" */
  4161.  Instruction0->Tree = Creation1.Tree;                            
  4162.       goto xx17;
  4163.     case 1 /* Character_constant */ :; 
  4164.     case 5 /* Manifest_string */ :; 
  4165.     case 17 /* '(' */ :; 
  4166.       xxUnion.xxLocalRecoverySet = 0; yyQualified_call (& Qualified_call1, & xxUnion); /*  */
  4167. /* line 493 "eiffel_sig.ell" */
  4168.  Instruction0->Tree = Qualified_call1.Tree;                        
  4169.       goto xx17;
  4170.     case 44 /* Current */ :; 
  4171.       xxUnion.xxLocalRecoverySet = 0; yyCurrent_instruct (& Current_instruct1, & xxUnion); /*  */
  4172. /* line 494 "eiffel_sig.ell" */
  4173.  Instruction0->Tree = Current_instruct1.Tree;                        
  4174.       goto xx17;
  4175.     case 83 /* Result */ :; 
  4176.       xxUnion.xxLocalRecoverySet = 0; yyResult_instruct (& Result_instruct1, & xxUnion); /*  */
  4177. /* line 495 "eiffel_sig.ell" */
  4178.  Instruction0->Tree = Result_instruct1.Tree;                        
  4179.       goto xx17;
  4180.     case 106 /* Id */ :; 
  4181.       xxUnion.xxLocalRecoverySet = 0; yyIdent_instruct (& Ident_instruct1, & xxUnion); /*  */
  4182. /* line 496 "eiffel_sig.ell" */
  4183.  Instruction0->Tree = Ident_instruct1.Tree;                        
  4184.       goto xx17;
  4185.     case 60 /* 'if' */ :; 
  4186.       xxUnion.xxLocalRecoverySet = 0; yyConditional (& Conditional1, & xxUnion); /*  */
  4187. /* line 497 "eiffel_sig.ell" */
  4188.  Instruction0->Tree = Conditional1.Tree;                        
  4189.       goto xx17;
  4190.     case 65 /* 'inspect' */ :; 
  4191.       xxUnion.xxLocalRecoverySet = 0; yyMulti_branch (& Multi_branch1, & xxUnion); /*  */
  4192. /* line 498 "eiffel_sig.ell" */
  4193.  Instruction0->Tree = Multi_branch1.Tree;                        
  4194.       goto xx17;
  4195.     case 58 /* 'from' */ :; 
  4196.       xxUnion.xxLocalRecoverySet = 0; yyLoop (& Loop1, & xxUnion); /*  */
  4197. /* line 499 "eiffel_sig.ell" */
  4198.  Instruction0->Tree = Loop1.Tree;                            
  4199.       goto xx17;
  4200.     case 45 /* 'debug' */ :; 
  4201.       xxUnion.xxLocalRecoverySet = 0; yyDebug (& Debug1, & xxUnion); /*  */
  4202. /* line 500 "eiffel_sig.ell" */
  4203.  Instruction0->Tree = Debug1.Tree;                            
  4204.       goto xx17;
  4205.     case 41 /* 'check' */ :; 
  4206.       xxUnion.xxLocalRecoverySet = 0; yyCheck (& Check1, & xxUnion); /*  */
  4207. /* line 501 "eiffel_sig.ell" */
  4208.  Instruction0->Tree = mCheck(Check1.Tree);                        
  4209.       goto xx17;
  4210.     case 84 /* retry */ :; 
  4211.       xxUnion.xxLocalRecoverySet = 0; yyRetry (& Retry1, & xxUnion); /*  */
  4212. /* line 502 "eiffel_sig.ell" */
  4213.  Instruction0->Tree = Retry1.Tree;                            
  4214.       goto xx17;
  4215.     case 7 /* ';' */ :; 
  4216.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4217. /* line 503 "eiffel_sig.ell" */
  4218.  Instruction0->Tree = NoTree;                                
  4219.       goto xx17;
  4220.     case 2:;
  4221.     case 3:;
  4222.     case 4:;
  4223.     case 6:;
  4224.     case 8:;
  4225.     case 9:;
  4226.     case 10:;
  4227.     case 13:;
  4228.     case 14:;
  4229.     case 15:;
  4230.     case 16:;
  4231.     case 18:;
  4232.     case 19:;
  4233.     case 20:;
  4234.     case 21:;
  4235.     case 22:;
  4236.     case 23:;
  4237.     case 24:;
  4238.     case 25:;
  4239.     case 26:;
  4240.     case 27:;
  4241.     case 28:;
  4242.     case 29:;
  4243.     case 30:;
  4244.     case 31:;
  4245.     case 32:;
  4246.     case 33:;
  4247.     case 34:;
  4248.     case 35:;
  4249.     case 36:;
  4250.     case 37:;
  4251.     case 38:;
  4252.     case 39:;
  4253.     case 40:;
  4254.     case 42:;
  4255.     case 43:;
  4256.     case 46:;
  4257.     case 47:;
  4258.     case 48:;
  4259.     case 49:;
  4260.     case 50:;
  4261.     case 51:;
  4262.     case 52:;
  4263.     case 53:;
  4264.     case 54:;
  4265.     case 55:;
  4266.     case 56:;
  4267.     case 57:;
  4268.     case 59:;
  4269.     case 61:;
  4270.     case 62:;
  4271.     case 63:;
  4272.     case 64:;
  4273.     case 66:;
  4274.     case 67:;
  4275.     case 68:;
  4276.     case 69:;
  4277.     case 70:;
  4278.     case 71:;
  4279.     case 72:;
  4280.     case 73:;
  4281.     case 74:;
  4282.     case 75:;
  4283.     case 76:;
  4284.     case 77:;
  4285.     case 78:;
  4286.     case 79:;
  4287.     case 80:;
  4288.     case 81:;
  4289.     case 82:;
  4290.     case 85:;
  4291.     case 86:;
  4292.     case 87:;
  4293.     case 88:;
  4294.     case 89:;
  4295.     case 90:;
  4296.     case 91:;
  4297.     case 92:;
  4298.     case 93:;
  4299.     case 94:;
  4300.     case 95:;
  4301.     case 96:;
  4302.     case 97:;
  4303.     case 98:;
  4304.     case 99:;
  4305.     case 100:;
  4306.     case 101:;
  4307.     case 102:;
  4308.     case 103:;
  4309.     case 104:;
  4310.     case 105:;
  4311.     default:
  4312.       if (xxIsRepairMode) {
  4313.         xxUnion.xxLocalRecoverySet = 0; yyCurrent_instruct (& Current_instruct1, & xxUnion); /*  */
  4314. /* line 494 "eiffel_sig.ell" */
  4315.  Instruction0->Tree = Current_instruct1.Tree;                        
  4316.         goto xx17;
  4317.       }
  4318.       xxExpected (106, 106, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id /  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  4319.     }
  4320.   }
  4321.   xx17:;
  4322. }
  4323.  
  4324. static void yyCurrent_instruct
  4325. # if defined __STDC__ | defined __cplusplus
  4326. (ParserSIG_tParsAttribute * Current_instruct0, xxtUnionPtr xxGlobalRecoverySet)
  4327. # else
  4328. (Current_instruct0, xxGlobalRecoverySet)
  4329. ParserSIG_tParsAttribute    * Current_instruct0;
  4330. xxtUnionPtr    xxGlobalRecoverySet;
  4331. # endif
  4332. {
  4333.     EiffelScan_tScanAttribute Current1;
  4334.   ParserSIG_tParsAttribute Actuals1;
  4335.   ParserSIG_tParsAttribute Call_chain1;
  4336.   xxtUnion xxUnion;
  4337.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4338.   if (xxToken != 44 /* Current */)
  4339.     xxRecoveryTerminal (44, 107, xxGlobalRecoverySet, & Current1); /*  '.' '(' Current */
  4340.   else {
  4341.     Current1 =   EiffelScan_Attribute;
  4342.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4343.   }
  4344. /* line 507 "eiffel_sig.ell" */
  4345.  Current_instruct0->Tree = mCall_chain1(mUnqual_call1( mCurrent(Current1.Position), 
  4346.                                         mActuals0()), mCall_chain0());     
  4347.   for (;;) {
  4348.     if ((xxToken == 17 /* '(' */)) {
  4349.       xxUnion.xxLocalRecoverySet = 109; yyActuals (& Actuals1, & xxUnion); /*  '.' */
  4350. /* line 509 "eiffel_sig.ell" */
  4351.  Current_instruct0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree; 
  4352.       break;
  4353.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4354.     xxExpected (108, 108, xxGlobalRecoverySet); /*  '.' '(' /  '.' '(' */
  4355.   }
  4356.   for (;;) {
  4357.     if ((xxToken == 10 /* '.' */)) {
  4358.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4359.       xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  4360. /* line 510 "eiffel_sig.ell" */
  4361.  Current_instruct0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;             
  4362.       break;
  4363.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 6 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4364.     xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  4365.   }
  4366. /* line 511 "eiffel_sig.ell" */
  4367.  Current_instruct0->Tree = mCall_instruct(mCall(mExpression0(), Current_instruct0->Tree)); 
  4368. }
  4369.  
  4370. static void yyResult_instruct
  4371. # if defined __STDC__ | defined __cplusplus
  4372. (ParserSIG_tParsAttribute * Result_instruct0, xxtUnionPtr xxGlobalRecoverySet)
  4373. # else
  4374. (Result_instruct0, xxGlobalRecoverySet)
  4375. ParserSIG_tParsAttribute    * Result_instruct0;
  4376. xxtUnionPtr    xxGlobalRecoverySet;
  4377. # endif
  4378. {
  4379.     EiffelScan_tScanAttribute Result1;
  4380.   ParserSIG_tParsAttribute Actuals1;
  4381.   ParserSIG_tParsAttribute Call_chain1;
  4382.   ParserSIG_tParsAttribute Expression1, Expression2;
  4383.   xxtUnion xxUnion;
  4384.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4385.   if (xxToken != 83 /* Result */)
  4386.     xxRecoveryTerminal (83, 111, xxGlobalRecoverySet, & Result1); /*  '.' '(' ':=' '?=' Result */
  4387.   else {
  4388.     Result1 =   EiffelScan_Attribute;
  4389.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4390.   }
  4391.   for (;;) {
  4392.     switch (xxToken) {
  4393.     case 1 /* Character_constant */ :; 
  4394.     case 2 /* Bit_sequence */ :; 
  4395.     case 3 /* Integer */ :; 
  4396.     case 4 /* Real */ :; 
  4397.     case 5 /* Manifest_string */ :; 
  4398.     case 6 /* Free_op */ :; 
  4399.     case 7 /* ';' */ :; 
  4400.     case 10 /* '.' */ :; 
  4401.     case 11 /* '!' */ :; 
  4402.     case 12 /* '!!' */ :; 
  4403.     case 17 /* '(' */ :; 
  4404.     case 23 /* '<<' */ :; 
  4405.     case 29 /* plus */ :; 
  4406.     case 30 /* minus */ :; 
  4407.     case 41 /* 'check' */ :; 
  4408.     case 44 /* Current */ :; 
  4409.     case 45 /* 'debug' */ :; 
  4410.     case 49 /* else */ :; 
  4411.     case 50 /* 'elseif' */ :; 
  4412.     case 51 /* 'end' */ :; 
  4413.     case 52 /* 'ensure' */ :; 
  4414.     case 56 /* false */ :; 
  4415.     case 58 /* 'from' */ :; 
  4416.     case 60 /* 'if' */ :; 
  4417.     case 65 /* 'inspect' */ :; 
  4418.     case 67 /* 'invariant' */ :; 
  4419.     case 74 /* 'old' */ :; 
  4420.     case 82 /* 'rescue' */ :; 
  4421.     case 83 /* Result */ :; 
  4422.     case 84 /* retry */ :; 
  4423.     case 88 /* 'strip' */ :; 
  4424.     case 90 /* true */ :; 
  4425.     case 93 /* 'until' */ :; 
  4426.     case 94 /* 'variant' */ :; 
  4427.     case 95 /* 'when' */ :; 
  4428.     case 105 /* not */ :; 
  4429.     case 106 /* Id */ :; 
  4430. /* line 516 "eiffel_sig.ell" */
  4431.  Result_instruct0->Tree = mCall_chain1(mUnqual_call1( mResult(Result1.Position), 
  4432.                                         mActuals0()), mCall_chain0());     
  4433.       for (;;) {
  4434.         if ((xxToken == 17 /* '(' */)) {
  4435.           xxUnion.xxLocalRecoverySet = 109; yyActuals (& Actuals1, & xxUnion); /*  '.' */
  4436. /* line 518 "eiffel_sig.ell" */
  4437.  Result_instruct0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree; 
  4438.           break;
  4439.         } else if ((xxVerticalSet [xxToken + 432] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4440.         xxExpected (108, 108, xxGlobalRecoverySet); /*  '.' '(' /  '.' '(' */
  4441.       }
  4442.       for (;;) {
  4443.         if ((xxToken == 10 /* '.' */)) {
  4444.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4445.           xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  4446. /* line 519 "eiffel_sig.ell" */
  4447.  Result_instruct0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;             
  4448.           break;
  4449.         } else if ((xxVerticalSet [xxToken + 432] & 1 << 6 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4450.         xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  4451.       }
  4452. /* line 520 "eiffel_sig.ell" */
  4453.  Result_instruct0->Tree = mCall_instruct(mCall(mExpression0(), Result_instruct0->Tree)); 
  4454.       goto xx18;
  4455.     case 25 /* ':=' */ :; 
  4456.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4457.       xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  4458. /* line 521 "eiffel_sig.ell" */
  4459.  Result_instruct0->Tree = mAssign(mResult(Result1.Position), Expression1.Tree);    
  4460.       goto xx18;
  4461.     case 26 /* '?=' */ :; 
  4462.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4463.       xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression2, & xxUnion); /*  */
  4464. /* line 522 "eiffel_sig.ell" */
  4465.  Result_instruct0->Tree = mRev_assign(mResult(Result1.Position), Expression2.Tree);    
  4466.       goto xx18;
  4467.     case 8:;
  4468.     case 9:;
  4469.     case 13:;
  4470.     case 14:;
  4471.     case 15:;
  4472.     case 16:;
  4473.     case 18:;
  4474.     case 19:;
  4475.     case 20:;
  4476.     case 21:;
  4477.     case 22:;
  4478.     case 24:;
  4479.     case 27:;
  4480.     case 28:;
  4481.     case 31:;
  4482.     case 32:;
  4483.     case 33:;
  4484.     case 34:;
  4485.     case 35:;
  4486.     case 36:;
  4487.     case 37:;
  4488.     case 38:;
  4489.     case 39:;
  4490.     case 40:;
  4491.     case 42:;
  4492.     case 43:;
  4493.     case 46:;
  4494.     case 47:;
  4495.     case 48:;
  4496.     case 53:;
  4497.     case 54:;
  4498.     case 55:;
  4499.     case 57:;
  4500.     case 59:;
  4501.     case 61:;
  4502.     case 62:;
  4503.     case 63:;
  4504.     case 64:;
  4505.     case 66:;
  4506.     case 68:;
  4507.     case 69:;
  4508.     case 70:;
  4509.     case 71:;
  4510.     case 72:;
  4511.     case 73:;
  4512.     case 75:;
  4513.     case 76:;
  4514.     case 77:;
  4515.     case 78:;
  4516.     case 79:;
  4517.     case 80:;
  4518.     case 81:;
  4519.     case 85:;
  4520.     case 86:;
  4521.     case 87:;
  4522.     case 89:;
  4523.     case 91:;
  4524.     case 92:;
  4525.     case 96:;
  4526.     case 97:;
  4527.     case 98:;
  4528.     case 99:;
  4529.     case 100:;
  4530.     case 101:;
  4531.     case 102:;
  4532.     case 103:;
  4533.     case 104:;
  4534.     default:
  4535.       if (xxIsRepairMode) {
  4536. /* line 516 "eiffel_sig.ell" */
  4537.  Result_instruct0->Tree = mCall_chain1(mUnqual_call1( mResult(Result1.Position), 
  4538.                                         mActuals0()), mCall_chain0());     
  4539.         for (;;) {
  4540.           if ((xxToken == 17 /* '(' */)) {
  4541.             xxUnion.xxLocalRecoverySet = 109; yyActuals (& Actuals1, & xxUnion); /*  '.' */
  4542. /* line 518 "eiffel_sig.ell" */
  4543.  Result_instruct0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree; 
  4544.             break;
  4545.           } else if ((xxVerticalSet [xxToken + 432] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4546.           xxExpected (108, 108, xxGlobalRecoverySet); /*  '.' '(' /  '.' '(' */
  4547.         }
  4548.         for (;;) {
  4549.           if ((xxToken == 10 /* '.' */)) {
  4550.             xxToken =             EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4551.             xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  4552. /* line 519 "eiffel_sig.ell" */
  4553.  Result_instruct0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;             
  4554.             break;
  4555.           } else if ((xxVerticalSet [xxToken + 432] & 1 << 6 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4556.           xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  4557.         }
  4558. /* line 520 "eiffel_sig.ell" */
  4559.  Result_instruct0->Tree = mCall_instruct(mCall(mExpression0(), Result_instruct0->Tree)); 
  4560.         goto xx18;
  4561.       }
  4562.       xxExpected (114, 114, xxGlobalRecoverySet); /*  '.' '(' ':=' '?=' /  '.' '(' ':=' '?=' */
  4563.     }
  4564.   }
  4565.   xx18:;
  4566. }
  4567.  
  4568. static void yyIdent_instruct
  4569. # if defined __STDC__ | defined __cplusplus
  4570. (ParserSIG_tParsAttribute * Ident_instruct0, xxtUnionPtr xxGlobalRecoverySet)
  4571. # else
  4572. (Ident_instruct0, xxGlobalRecoverySet)
  4573. ParserSIG_tParsAttribute    * Ident_instruct0;
  4574. xxtUnionPtr    xxGlobalRecoverySet;
  4575. # endif
  4576. {
  4577.   ParserSIG_tParsAttribute Identifier1;
  4578.   ParserSIG_tParsAttribute Actuals1;
  4579.   ParserSIG_tParsAttribute Call_chain1;
  4580.   ParserSIG_tParsAttribute Expression1, Expression2;
  4581.   xxtUnion xxUnion;
  4582.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4583.   xxUnion.xxLocalRecoverySet = 114; yyIdentifier (& Identifier1, & xxUnion); /*  '.' '(' ':=' '?=' */
  4584.   for (;;) {
  4585.     switch (xxToken) {
  4586.     case 1 /* Character_constant */ :; 
  4587.     case 2 /* Bit_sequence */ :; 
  4588.     case 3 /* Integer */ :; 
  4589.     case 4 /* Real */ :; 
  4590.     case 5 /* Manifest_string */ :; 
  4591.     case 6 /* Free_op */ :; 
  4592.     case 7 /* ';' */ :; 
  4593.     case 10 /* '.' */ :; 
  4594.     case 11 /* '!' */ :; 
  4595.     case 12 /* '!!' */ :; 
  4596.     case 17 /* '(' */ :; 
  4597.     case 23 /* '<<' */ :; 
  4598.     case 29 /* plus */ :; 
  4599.     case 30 /* minus */ :; 
  4600.     case 41 /* 'check' */ :; 
  4601.     case 44 /* Current */ :; 
  4602.     case 45 /* 'debug' */ :; 
  4603.     case 49 /* else */ :; 
  4604.     case 50 /* 'elseif' */ :; 
  4605.     case 51 /* 'end' */ :; 
  4606.     case 52 /* 'ensure' */ :; 
  4607.     case 56 /* false */ :; 
  4608.     case 58 /* 'from' */ :; 
  4609.     case 60 /* 'if' */ :; 
  4610.     case 65 /* 'inspect' */ :; 
  4611.     case 67 /* 'invariant' */ :; 
  4612.     case 74 /* 'old' */ :; 
  4613.     case 82 /* 'rescue' */ :; 
  4614.     case 83 /* Result */ :; 
  4615.     case 84 /* retry */ :; 
  4616.     case 88 /* 'strip' */ :; 
  4617.     case 90 /* true */ :; 
  4618.     case 93 /* 'until' */ :; 
  4619.     case 94 /* 'variant' */ :; 
  4620.     case 95 /* 'when' */ :; 
  4621.     case 105 /* not */ :; 
  4622.     case 106 /* Id */ :; 
  4623. /* line 527 "eiffel_sig.ell" */
  4624.  Ident_instruct0->Tree = mCall_chain1(mUnqual_call1(Identifier1.Tree,
  4625.                                         mActuals0()),mCall_chain0());     
  4626.       for (;;) {
  4627.         if ((xxToken == 17 /* '(' */)) {
  4628.           xxUnion.xxLocalRecoverySet = 109; yyActuals (& Actuals1, & xxUnion); /*  '.' */
  4629. /* line 529 "eiffel_sig.ell" */
  4630.  Ident_instruct0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree;    
  4631.           break;
  4632.         } else if ((xxVerticalSet [xxToken + 432] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4633.         xxExpected (108, 108, xxGlobalRecoverySet); /*  '.' '(' /  '.' '(' */
  4634.       }
  4635.       for (;;) {
  4636.         if ((xxToken == 10 /* '.' */)) {
  4637.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4638.           xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  4639. /* line 530 "eiffel_sig.ell" */
  4640.  Ident_instruct0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;             
  4641.           break;
  4642.         } else if ((xxVerticalSet [xxToken + 432] & 1 << 6 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4643.         xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  4644.       }
  4645. /* line 531 "eiffel_sig.ell" */
  4646.  Ident_instruct0->Tree = mCall_instruct(mCall(mExpression0(), Ident_instruct0->Tree)); 
  4647.       goto xx19;
  4648.     case 25 /* ':=' */ :; 
  4649.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4650.       xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  4651. /* line 532 "eiffel_sig.ell" */
  4652.  Ident_instruct0->Tree = mAssign(Identifier1.Tree, Expression1.Tree);            
  4653.       goto xx19;
  4654.     case 26 /* '?=' */ :; 
  4655.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4656.       xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression2, & xxUnion); /*  */
  4657. /* line 533 "eiffel_sig.ell" */
  4658.  Ident_instruct0->Tree = mRev_assign(Identifier1.Tree, Expression2.Tree);        
  4659.       goto xx19;
  4660.     case 8:;
  4661.     case 9:;
  4662.     case 13:;
  4663.     case 14:;
  4664.     case 15:;
  4665.     case 16:;
  4666.     case 18:;
  4667.     case 19:;
  4668.     case 20:;
  4669.     case 21:;
  4670.     case 22:;
  4671.     case 24:;
  4672.     case 27:;
  4673.     case 28:;
  4674.     case 31:;
  4675.     case 32:;
  4676.     case 33:;
  4677.     case 34:;
  4678.     case 35:;
  4679.     case 36:;
  4680.     case 37:;
  4681.     case 38:;
  4682.     case 39:;
  4683.     case 40:;
  4684.     case 42:;
  4685.     case 43:;
  4686.     case 46:;
  4687.     case 47:;
  4688.     case 48:;
  4689.     case 53:;
  4690.     case 54:;
  4691.     case 55:;
  4692.     case 57:;
  4693.     case 59:;
  4694.     case 61:;
  4695.     case 62:;
  4696.     case 63:;
  4697.     case 64:;
  4698.     case 66:;
  4699.     case 68:;
  4700.     case 69:;
  4701.     case 70:;
  4702.     case 71:;
  4703.     case 72:;
  4704.     case 73:;
  4705.     case 75:;
  4706.     case 76:;
  4707.     case 77:;
  4708.     case 78:;
  4709.     case 79:;
  4710.     case 80:;
  4711.     case 81:;
  4712.     case 85:;
  4713.     case 86:;
  4714.     case 87:;
  4715.     case 89:;
  4716.     case 91:;
  4717.     case 92:;
  4718.     case 96:;
  4719.     case 97:;
  4720.     case 98:;
  4721.     case 99:;
  4722.     case 100:;
  4723.     case 101:;
  4724.     case 102:;
  4725.     case 103:;
  4726.     case 104:;
  4727.     default:
  4728.       if (xxIsRepairMode) {
  4729. /* line 527 "eiffel_sig.ell" */
  4730.  Ident_instruct0->Tree = mCall_chain1(mUnqual_call1(Identifier1.Tree,
  4731.                                         mActuals0()),mCall_chain0());     
  4732.         for (;;) {
  4733.           if ((xxToken == 17 /* '(' */)) {
  4734.             xxUnion.xxLocalRecoverySet = 109; yyActuals (& Actuals1, & xxUnion); /*  '.' */
  4735. /* line 529 "eiffel_sig.ell" */
  4736.  Ident_instruct0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree;    
  4737.             break;
  4738.           } else if ((xxVerticalSet [xxToken + 432] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4739.           xxExpected (108, 108, xxGlobalRecoverySet); /*  '.' '(' /  '.' '(' */
  4740.         }
  4741.         for (;;) {
  4742.           if ((xxToken == 10 /* '.' */)) {
  4743.             xxToken =             EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4744.             xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  4745. /* line 530 "eiffel_sig.ell" */
  4746.  Ident_instruct0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;             
  4747.             break;
  4748.           } else if ((xxVerticalSet [xxToken + 432] & 1 << 6 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  4749.           xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  4750.         }
  4751. /* line 531 "eiffel_sig.ell" */
  4752.  Ident_instruct0->Tree = mCall_instruct(mCall(mExpression0(), Ident_instruct0->Tree)); 
  4753.         goto xx19;
  4754.       }
  4755.       xxExpected (114, 114, xxGlobalRecoverySet); /*  '.' '(' ':=' '?=' /  '.' '(' ':=' '?=' */
  4756.     }
  4757.   }
  4758.   xx19:;
  4759. }
  4760.  
  4761. static void yyPrecondition
  4762. # if defined __STDC__ | defined __cplusplus
  4763. (ParserSIG_tParsAttribute * Precondition0, xxtUnionPtr xxGlobalRecoverySet)
  4764. # else
  4765. (Precondition0, xxGlobalRecoverySet)
  4766. ParserSIG_tParsAttribute    * Precondition0;
  4767. xxtUnionPtr    xxGlobalRecoverySet;
  4768. # endif
  4769. {
  4770.     EiffelScan_tScanAttribute else1;
  4771.   ParserSIG_tParsAttribute Assertion1;
  4772.   xxtUnion xxUnion;
  4773.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4774. /* line 537 "eiffel_sig.ell" */
  4775.  Precondition0->Tree = mCondition1(VOID, mAssertion0());                    
  4776.   if (xxToken != 81 /* 'require' */)
  4777.     xxRecoveryLiteral (81, 115, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current else false 'old' 'require' Result 'strip' true not Id Comment */
  4778.   else {
  4779.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4780.   }
  4781.   for (;;) {
  4782.     if ((xxToken == 49 /* else */)) {
  4783.       else1 =       EiffelScan_Attribute;
  4784.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4785. /* line 538 "eiffel_sig.ell" */
  4786.  Precondition0->Tree->Condition1.extension = ELSE;                    
  4787.       break;
  4788.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current deferred do 'external' false 'local' 'old' once Result 'strip' true not Id Comment */) || xxIsRepairMode) break;
  4789.     xxExpected (116, 116, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current else false 'old' Result 'strip' true not Id Comment /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current else false 'old' Result 'strip' true not Id Comment */
  4790.   }
  4791.   xxUnion.xxLocalRecoverySet = 0; yyAssertion (& Assertion1, & xxUnion); /*  */
  4792. /* line 539 "eiffel_sig.ell" */
  4793.  Precondition0->Tree->Condition1.Assertion = ReverseTree(Assertion1.Tree);        
  4794. }
  4795.  
  4796. static void yyPostcondition
  4797. # if defined __STDC__ | defined __cplusplus
  4798. (ParserSIG_tParsAttribute * Postcondition0, xxtUnionPtr xxGlobalRecoverySet)
  4799. # else
  4800. (Postcondition0, xxGlobalRecoverySet)
  4801. ParserSIG_tParsAttribute    * Postcondition0;
  4802. xxtUnionPtr    xxGlobalRecoverySet;
  4803. # endif
  4804. {
  4805.     EiffelScan_tScanAttribute then1;
  4806.   ParserSIG_tParsAttribute Assertion1;
  4807.   xxtUnion xxUnion;
  4808.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4809. /* line 542 "eiffel_sig.ell" */
  4810.  Postcondition0->Tree = mCondition1(VOID, mAssertion0());                
  4811.   if (xxToken != 52 /* 'ensure' */)
  4812.     xxRecoveryLiteral (52, 117, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'ensure' false 'old' Result 'strip' then true not Id Comment */
  4813.   else {
  4814.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4815.   }
  4816.   for (;;) {
  4817.     if ((xxToken == 89 /* then */)) {
  4818.       then1 =       EiffelScan_Attribute;
  4819.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4820. /* line 543 "eiffel_sig.ell" */
  4821.  Postcondition0->Tree->Condition1.extension = THEN;                    
  4822.       break;
  4823.     } else if ((xxVerticalSet [xxToken + 540] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'end' false 'old' 'rescue' Result 'strip' true not Id Comment */) || xxIsRepairMode) break;
  4824.     xxExpected (118, 118, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' then true not Id Comment /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' then true not Id Comment */
  4825.   }
  4826.   xxUnion.xxLocalRecoverySet = 0; yyAssertion (& Assertion1, & xxUnion); /*  */
  4827. /* line 544 "eiffel_sig.ell" */
  4828.  Postcondition0->Tree->Condition1.Assertion = ReverseTree(Assertion1.Tree);        
  4829. }
  4830.  
  4831. static void yyInvariant
  4832. # if defined __STDC__ | defined __cplusplus
  4833. (ParserSIG_tParsAttribute * Invariant0, xxtUnionPtr xxGlobalRecoverySet)
  4834. # else
  4835. (Invariant0, xxGlobalRecoverySet)
  4836. ParserSIG_tParsAttribute    * Invariant0;
  4837. xxtUnionPtr    xxGlobalRecoverySet;
  4838. # endif
  4839. {
  4840.   ParserSIG_tParsAttribute Assertion1;
  4841.   xxtUnion xxUnion;
  4842.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4843.   if (xxToken != 67 /* 'invariant' */)
  4844.     xxRecoveryLiteral (67, 119, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'invariant' 'old' Result 'strip' true not Id Comment */
  4845.   else {
  4846.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4847.   }
  4848.   xxUnion.xxLocalRecoverySet = 0; yyAssertion (& Assertion1, & xxUnion); /*  */
  4849. /* line 548 "eiffel_sig.ell" */
  4850.  Invariant0->Tree = mCondition1(VOID, ReverseTree(Assertion1.Tree));            
  4851. }
  4852.  
  4853. static void yyAssertion
  4854. # if defined __STDC__ | defined __cplusplus
  4855. (ParserSIG_tParsAttribute * Assertion0, xxtUnionPtr xxGlobalRecoverySet)
  4856. # else
  4857. (Assertion0, xxGlobalRecoverySet)
  4858. ParserSIG_tParsAttribute    * Assertion0;
  4859. xxtUnionPtr    xxGlobalRecoverySet;
  4860. # endif
  4861. {
  4862.   ParserSIG_tParsAttribute Assertion_clause1, Assertion_clause2;
  4863.   xxtUnion xxUnion;
  4864.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4865. /* line 551 "eiffel_sig.ell" */
  4866.  Assertion0->Tree = mAssertion0();                             
  4867.   for (;;) {
  4868.     if ((xxVerticalSet [xxToken + 540] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */)) {
  4869.       xxUnion.xxLocalRecoverySet = 121; yyAssertion_clause (& Assertion_clause1, & xxUnion); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */
  4870. /* line 552 "eiffel_sig.ell" */
  4871.  Assertion0->Tree = mAssertion1(Assertion_clause1.Tree, Assertion0->Tree);         
  4872.       for (;;) {
  4873.         if ((xxVerticalSet [xxToken + 540] & 1 << 3 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */)) {
  4874.           for (;;) {
  4875.             if ((xxToken == 7 /* ';' */)) {
  4876.               xxToken =               EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4877.               break;
  4878.             } else if ((xxVerticalSet [xxToken + 540] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */) || xxIsRepairMode) break;
  4879.             xxExpected (121, 121, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment /  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */
  4880.           }
  4881.           xxUnion.xxLocalRecoverySet = 0; yyAssertion_clause (& Assertion_clause2, & xxUnion); /*  */
  4882. /* line 553 "eiffel_sig.ell" */
  4883.  Assertion0->Tree = mAssertion1(Assertion_clause2.Tree, Assertion0->Tree);     
  4884.         } else if ((xxVerticalSet [xxToken + 540] & 1 << 2 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current deferred do 'end' 'external' false 'local' 'old' once 'rescue' Result 'strip' true 'until' 'variant' not Id */) || xxIsRepairMode) break;
  4885.         else
  4886.           xxExpected (121, 121, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment /  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */
  4887.       }
  4888.       break;
  4889.     } else if ((xxVerticalSet [xxToken + 540] & 1 << 2 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current deferred do 'end' 'external' false 'local' 'old' once 'rescue' Result 'strip' true 'until' 'variant' not Id */) || xxIsRepairMode) break;
  4890.     xxExpected (120, 120, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */
  4891.   }
  4892. }
  4893.  
  4894. static void yyAssertion_clause
  4895. # if defined __STDC__ | defined __cplusplus
  4896. (ParserSIG_tParsAttribute * Assertion_clause0, xxtUnionPtr xxGlobalRecoverySet)
  4897. # else
  4898. (Assertion_clause0, xxGlobalRecoverySet)
  4899. ParserSIG_tParsAttribute    * Assertion_clause0;
  4900. xxtUnionPtr    xxGlobalRecoverySet;
  4901. # endif
  4902. {
  4903.   ParserSIG_tParsAttribute Actuals1;
  4904.   ParserSIG_tParsAttribute Call_chain1;
  4905.   ParserSIG_tParsAttribute Tag1;
  4906.   ParserSIG_tParsAttribute Unlabeled_assertion_clause1;
  4907.   ParserSIG_tParsAttribute Expr_tail1;
  4908.   xxtUnion xxUnion;
  4909.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  4910.   for (;;) {
  4911.     switch (xxToken) {
  4912.     case 106 /* Id */ :; 
  4913.       xxUnion.xxLocalRecoverySet = 122; yyTag (& Tag1, & xxUnion); /*  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  4914.       for (;;) {
  4915.         switch (xxToken) {
  4916.         case 9 /* ':' */ :; 
  4917. /* line 557 "eiffel_sig.ell" */
  4918.  comment_possible = ON; 
  4919.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4920.           xxUnion.xxLocalRecoverySet = 0; yyUnlabeled_assertion_clause (& Unlabeled_assertion_clause1, & xxUnion); /*  */
  4921. /* line 558 "eiffel_sig.ell" */
  4922.  Assertion_clause0->Tree = mAssertion_clause1(Tag1.Tree, 
  4923.                                 Unlabeled_assertion_clause1.Tree);         
  4924.           goto xx21;
  4925.         case 1 /* Character_constant */ :; 
  4926.         case 2 /* Bit_sequence */ :; 
  4927.         case 3 /* Integer */ :; 
  4928.         case 4 /* Real */ :; 
  4929.         case 5 /* Manifest_string */ :; 
  4930.         case 6 /* Free_op */ :; 
  4931.         case 7 /* ';' */ :; 
  4932.         case 10 /* '.' */ :; 
  4933.         case 13 /* Eq */ :; 
  4934.         case 14 /* Not_eq */ :; 
  4935.         case 17 /* '(' */ :; 
  4936.         case 23 /* '<<' */ :; 
  4937.         case 29 /* plus */ :; 
  4938.         case 30 /* minus */ :; 
  4939.         case 33 /* div */ :; 
  4940.         case 36 /* and */ :; 
  4941.         case 44 /* Current */ :; 
  4942.         case 46 /* deferred */ :; 
  4943.         case 47 /* do */ :; 
  4944.         case 51 /* 'end' */ :; 
  4945.         case 55 /* 'external' */ :; 
  4946.         case 56 /* false */ :; 
  4947.         case 61 /* implies */ :; 
  4948.         case 70 /* 'local' */ :; 
  4949.         case 74 /* 'old' */ :; 
  4950.         case 75 /* once */ :; 
  4951.         case 76 /* or */ :; 
  4952.         case 82 /* 'rescue' */ :; 
  4953.         case 83 /* Result */ :; 
  4954.         case 88 /* 'strip' */ :; 
  4955.         case 90 /* true */ :; 
  4956.         case 93 /* 'until' */ :; 
  4957.         case 94 /* 'variant' */ :; 
  4958.         case 96 /* xor */ :; 
  4959.         case 97 /* times */ :; 
  4960.         case 98 /* smaller */ :; 
  4961.         case 99 /* greater */ :; 
  4962.         case 100 /* sm_eq */ :; 
  4963.         case 101 /* gr_eq */ :; 
  4964.         case 102 /* idiv */ :; 
  4965.         case 103 /* imod */ :; 
  4966.         case 104 /* power */ :; 
  4967.         case 105 /* not */ :; 
  4968.         case 106 /* Id */ :; 
  4969.         case 107 /* Comment */ :; 
  4970. /* line 560 "eiffel_sig.ell" */
  4971.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree,mActuals0()), 
  4972.                                             mCall_chain0());    
  4973.           for (;;) {
  4974.             if ((xxToken == 17 /* '(' */)) {
  4975.               xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  4976. /* line 562 "eiffel_sig.ell" */
  4977.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree, Actuals1.Tree), 
  4978.                                                     mCall_chain0());
  4979.               break;
  4980.             } else if ((xxVerticalSet [xxToken + 540] & 1 << 4 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  4981.             xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  4982.           }
  4983.           for (;;) {
  4984.             if ((xxToken == 10 /* '.' */)) {
  4985.               xxToken =               EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  4986.               xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  4987. /* line 564 "eiffel_sig.ell" */
  4988.  Assertion_clause0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;         
  4989.               break;
  4990.             } else if ((xxVerticalSet [xxToken + 540] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  4991.             xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  4992.           }
  4993. /* line 565 "eiffel_sig.ell" */
  4994.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  4995.                                    mCall(mExpression0(), Assertion_clause0->Tree)); 
  4996.           for (;;) {
  4997.             if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  4998.               xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  4999. /* line 568 "eiffel_sig.ell" */
  5000.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5001.                         mBin_expr(Assertion_clause0->Tree->Assertion_clause1.Expression, 
  5002.                         Expr_tail1.Tree->Bin_expr.Op, Expr_tail1.Tree->Bin_expr.Rop));    
  5003.               break;
  5004.             } else if ((xxVerticalSet [xxToken + 540] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current deferred do 'end' 'external' false 'local' 'old' once 'rescue' Result 'strip' true 'until' 'variant' not Id Comment */) || xxIsRepairMode) break;
  5005.             xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5006.           }
  5007.           goto xx21;
  5008.         case 8:;
  5009.         case 11:;
  5010.         case 12:;
  5011.         case 15:;
  5012.         case 16:;
  5013.         case 18:;
  5014.         case 19:;
  5015.         case 20:;
  5016.         case 21:;
  5017.         case 22:;
  5018.         case 24:;
  5019.         case 25:;
  5020.         case 26:;
  5021.         case 27:;
  5022.         case 28:;
  5023.         case 31:;
  5024.         case 32:;
  5025.         case 34:;
  5026.         case 35:;
  5027.         case 37:;
  5028.         case 38:;
  5029.         case 39:;
  5030.         case 40:;
  5031.         case 41:;
  5032.         case 42:;
  5033.         case 43:;
  5034.         case 45:;
  5035.         case 48:;
  5036.         case 49:;
  5037.         case 50:;
  5038.         case 52:;
  5039.         case 53:;
  5040.         case 54:;
  5041.         case 57:;
  5042.         case 58:;
  5043.         case 59:;
  5044.         case 60:;
  5045.         case 62:;
  5046.         case 63:;
  5047.         case 64:;
  5048.         case 65:;
  5049.         case 66:;
  5050.         case 67:;
  5051.         case 68:;
  5052.         case 69:;
  5053.         case 71:;
  5054.         case 72:;
  5055.         case 73:;
  5056.         case 77:;
  5057.         case 78:;
  5058.         case 79:;
  5059.         case 80:;
  5060.         case 81:;
  5061.         case 84:;
  5062.         case 85:;
  5063.         case 86:;
  5064.         case 87:;
  5065.         case 89:;
  5066.         case 91:;
  5067.         case 92:;
  5068.         case 95:;
  5069.         default:
  5070.           if (xxIsRepairMode) {
  5071. /* line 560 "eiffel_sig.ell" */
  5072.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree,mActuals0()), 
  5073.                                             mCall_chain0());    
  5074.             for (;;) {
  5075.               if ((xxToken == 17 /* '(' */)) {
  5076.                 xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5077. /* line 562 "eiffel_sig.ell" */
  5078.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree, Actuals1.Tree), 
  5079.                                                     mCall_chain0());
  5080.                 break;
  5081.               } else if ((xxVerticalSet [xxToken + 540] & 1 << 4 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  5082.               xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5083.             }
  5084.             for (;;) {
  5085.               if ((xxToken == 10 /* '.' */)) {
  5086.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5087.                 xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5088. /* line 564 "eiffel_sig.ell" */
  5089.  Assertion_clause0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;         
  5090.                 break;
  5091.               } else if ((xxVerticalSet [xxToken + 540] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  5092.               xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5093.             }
  5094. /* line 565 "eiffel_sig.ell" */
  5095.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5096.                                    mCall(mExpression0(), Assertion_clause0->Tree)); 
  5097.             for (;;) {
  5098.               if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  5099.                 xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  5100. /* line 568 "eiffel_sig.ell" */
  5101.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5102.                         mBin_expr(Assertion_clause0->Tree->Assertion_clause1.Expression, 
  5103.                         Expr_tail1.Tree->Bin_expr.Op, Expr_tail1.Tree->Bin_expr.Rop));    
  5104.                 break;
  5105.               } else if ((xxVerticalSet [xxToken + 540] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current deferred do 'end' 'external' false 'local' 'old' once 'rescue' Result 'strip' true 'until' 'variant' not Id Comment */) || xxIsRepairMode) break;
  5106.               xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5107.             }
  5108.             goto xx21;
  5109.           }
  5110.           xxExpected (122, 122, xxGlobalRecoverySet); /*  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5111.         }
  5112.       }
  5113.       xx21:;
  5114.       goto xx20;
  5115.     case 1 /* Character_constant */ :; 
  5116.     case 2 /* Bit_sequence */ :; 
  5117.     case 3 /* Integer */ :; 
  5118.     case 4 /* Real */ :; 
  5119.     case 5 /* Manifest_string */ :; 
  5120.     case 6 /* Free_op */ :; 
  5121.     case 17 /* '(' */ :; 
  5122.     case 23 /* '<<' */ :; 
  5123.     case 29 /* plus */ :; 
  5124.     case 30 /* minus */ :; 
  5125.     case 44 /* Current */ :; 
  5126.     case 56 /* false */ :; 
  5127.     case 74 /* 'old' */ :; 
  5128.     case 83 /* Result */ :; 
  5129.     case 88 /* 'strip' */ :; 
  5130.     case 90 /* true */ :; 
  5131.     case 105 /* not */ :; 
  5132.     case 107 /* Comment */ :; 
  5133.       xxUnion.xxLocalRecoverySet = 0; yyUnlabeled_assertion_clause (& Unlabeled_assertion_clause1, & xxUnion); /*  */
  5134. /* line 571 "eiffel_sig.ell" */
  5135.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5136.                                     Unlabeled_assertion_clause1.Tree);     
  5137.       goto xx20;
  5138.     case 7:;
  5139.     case 8:;
  5140.     case 9:;
  5141.     case 10:;
  5142.     case 11:;
  5143.     case 12:;
  5144.     case 13:;
  5145.     case 14:;
  5146.     case 15:;
  5147.     case 16:;
  5148.     case 18:;
  5149.     case 19:;
  5150.     case 20:;
  5151.     case 21:;
  5152.     case 22:;
  5153.     case 24:;
  5154.     case 25:;
  5155.     case 26:;
  5156.     case 27:;
  5157.     case 28:;
  5158.     case 31:;
  5159.     case 32:;
  5160.     case 33:;
  5161.     case 34:;
  5162.     case 35:;
  5163.     case 36:;
  5164.     case 37:;
  5165.     case 38:;
  5166.     case 39:;
  5167.     case 40:;
  5168.     case 41:;
  5169.     case 42:;
  5170.     case 43:;
  5171.     case 45:;
  5172.     case 46:;
  5173.     case 47:;
  5174.     case 48:;
  5175.     case 49:;
  5176.     case 50:;
  5177.     case 51:;
  5178.     case 52:;
  5179.     case 53:;
  5180.     case 54:;
  5181.     case 55:;
  5182.     case 57:;
  5183.     case 58:;
  5184.     case 59:;
  5185.     case 60:;
  5186.     case 61:;
  5187.     case 62:;
  5188.     case 63:;
  5189.     case 64:;
  5190.     case 65:;
  5191.     case 66:;
  5192.     case 67:;
  5193.     case 68:;
  5194.     case 69:;
  5195.     case 70:;
  5196.     case 71:;
  5197.     case 72:;
  5198.     case 73:;
  5199.     case 75:;
  5200.     case 76:;
  5201.     case 77:;
  5202.     case 78:;
  5203.     case 79:;
  5204.     case 80:;
  5205.     case 81:;
  5206.     case 82:;
  5207.     case 84:;
  5208.     case 85:;
  5209.     case 86:;
  5210.     case 87:;
  5211.     case 89:;
  5212.     case 91:;
  5213.     case 92:;
  5214.     case 93:;
  5215.     case 94:;
  5216.     case 95:;
  5217.     case 96:;
  5218.     case 97:;
  5219.     case 98:;
  5220.     case 99:;
  5221.     case 100:;
  5222.     case 101:;
  5223.     case 102:;
  5224.     case 103:;
  5225.     case 104:;
  5226.     default:
  5227.       if (xxIsRepairMode) {
  5228.         xxUnion.xxLocalRecoverySet = 122; yyTag (& Tag1, & xxUnion); /*  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5229.         for (;;) {
  5230.           switch (xxToken) {
  5231.           case 9 /* ':' */ :; 
  5232. /* line 557 "eiffel_sig.ell" */
  5233.  comment_possible = ON; 
  5234.             if (xxToken != 9 /* ':' */)
  5235.               xxRecoveryLiteral (9, 123, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ':' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */
  5236.             else {
  5237.               xxToken =             EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5238.             }
  5239.             xxUnion.xxLocalRecoverySet = 0; yyUnlabeled_assertion_clause (& Unlabeled_assertion_clause1, & xxUnion); /*  */
  5240. /* line 558 "eiffel_sig.ell" */
  5241.  Assertion_clause0->Tree = mAssertion_clause1(Tag1.Tree, 
  5242.                                 Unlabeled_assertion_clause1.Tree);         
  5243.             goto xx22;
  5244.           case 1 /* Character_constant */ :; 
  5245.           case 2 /* Bit_sequence */ :; 
  5246.           case 3 /* Integer */ :; 
  5247.           case 4 /* Real */ :; 
  5248.           case 5 /* Manifest_string */ :; 
  5249.           case 6 /* Free_op */ :; 
  5250.           case 7 /* ';' */ :; 
  5251.           case 10 /* '.' */ :; 
  5252.           case 13 /* Eq */ :; 
  5253.           case 14 /* Not_eq */ :; 
  5254.           case 17 /* '(' */ :; 
  5255.           case 23 /* '<<' */ :; 
  5256.           case 29 /* plus */ :; 
  5257.           case 30 /* minus */ :; 
  5258.           case 33 /* div */ :; 
  5259.           case 36 /* and */ :; 
  5260.           case 44 /* Current */ :; 
  5261.           case 46 /* deferred */ :; 
  5262.           case 47 /* do */ :; 
  5263.           case 51 /* 'end' */ :; 
  5264.           case 55 /* 'external' */ :; 
  5265.           case 56 /* false */ :; 
  5266.           case 61 /* implies */ :; 
  5267.           case 70 /* 'local' */ :; 
  5268.           case 74 /* 'old' */ :; 
  5269.           case 75 /* once */ :; 
  5270.           case 76 /* or */ :; 
  5271.           case 82 /* 'rescue' */ :; 
  5272.           case 83 /* Result */ :; 
  5273.           case 88 /* 'strip' */ :; 
  5274.           case 90 /* true */ :; 
  5275.           case 93 /* 'until' */ :; 
  5276.           case 94 /* 'variant' */ :; 
  5277.           case 96 /* xor */ :; 
  5278.           case 97 /* times */ :; 
  5279.           case 98 /* smaller */ :; 
  5280.           case 99 /* greater */ :; 
  5281.           case 100 /* sm_eq */ :; 
  5282.           case 101 /* gr_eq */ :; 
  5283.           case 102 /* idiv */ :; 
  5284.           case 103 /* imod */ :; 
  5285.           case 104 /* power */ :; 
  5286.           case 105 /* not */ :; 
  5287.           case 106 /* Id */ :; 
  5288.           case 107 /* Comment */ :; 
  5289. /* line 560 "eiffel_sig.ell" */
  5290.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree,mActuals0()), 
  5291.                                             mCall_chain0());    
  5292.             for (;;) {
  5293.               if ((xxToken == 17 /* '(' */)) {
  5294.                 xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5295. /* line 562 "eiffel_sig.ell" */
  5296.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree, Actuals1.Tree), 
  5297.                                                     mCall_chain0());
  5298.                 break;
  5299.               } else if ((xxVerticalSet [xxToken + 540] & 1 << 4 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  5300.               xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5301.             }
  5302.             for (;;) {
  5303.               if ((xxToken == 10 /* '.' */)) {
  5304.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5305.                 xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5306. /* line 564 "eiffel_sig.ell" */
  5307.  Assertion_clause0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;         
  5308.                 break;
  5309.               } else if ((xxVerticalSet [xxToken + 540] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  5310.               xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5311.             }
  5312. /* line 565 "eiffel_sig.ell" */
  5313.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5314.                                    mCall(mExpression0(), Assertion_clause0->Tree)); 
  5315.             for (;;) {
  5316.               if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  5317.                 xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  5318. /* line 568 "eiffel_sig.ell" */
  5319.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5320.                         mBin_expr(Assertion_clause0->Tree->Assertion_clause1.Expression, 
  5321.                         Expr_tail1.Tree->Bin_expr.Op, Expr_tail1.Tree->Bin_expr.Rop));    
  5322.                 break;
  5323.               } else if ((xxVerticalSet [xxToken + 540] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current deferred do 'end' 'external' false 'local' 'old' once 'rescue' Result 'strip' true 'until' 'variant' not Id Comment */) || xxIsRepairMode) break;
  5324.               xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5325.             }
  5326.             goto xx22;
  5327.           case 8:;
  5328.           case 11:;
  5329.           case 12:;
  5330.           case 15:;
  5331.           case 16:;
  5332.           case 18:;
  5333.           case 19:;
  5334.           case 20:;
  5335.           case 21:;
  5336.           case 22:;
  5337.           case 24:;
  5338.           case 25:;
  5339.           case 26:;
  5340.           case 27:;
  5341.           case 28:;
  5342.           case 31:;
  5343.           case 32:;
  5344.           case 34:;
  5345.           case 35:;
  5346.           case 37:;
  5347.           case 38:;
  5348.           case 39:;
  5349.           case 40:;
  5350.           case 41:;
  5351.           case 42:;
  5352.           case 43:;
  5353.           case 45:;
  5354.           case 48:;
  5355.           case 49:;
  5356.           case 50:;
  5357.           case 52:;
  5358.           case 53:;
  5359.           case 54:;
  5360.           case 57:;
  5361.           case 58:;
  5362.           case 59:;
  5363.           case 60:;
  5364.           case 62:;
  5365.           case 63:;
  5366.           case 64:;
  5367.           case 65:;
  5368.           case 66:;
  5369.           case 67:;
  5370.           case 68:;
  5371.           case 69:;
  5372.           case 71:;
  5373.           case 72:;
  5374.           case 73:;
  5375.           case 77:;
  5376.           case 78:;
  5377.           case 79:;
  5378.           case 80:;
  5379.           case 81:;
  5380.           case 84:;
  5381.           case 85:;
  5382.           case 86:;
  5383.           case 87:;
  5384.           case 89:;
  5385.           case 91:;
  5386.           case 92:;
  5387.           case 95:;
  5388.           default:
  5389.             if (xxIsRepairMode) {
  5390. /* line 560 "eiffel_sig.ell" */
  5391.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree,mActuals0()), 
  5392.                                             mCall_chain0());    
  5393.               for (;;) {
  5394.                 if ((xxToken == 17 /* '(' */)) {
  5395.                   xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5396. /* line 562 "eiffel_sig.ell" */
  5397.  Assertion_clause0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree, Actuals1.Tree), 
  5398.                                                     mCall_chain0());
  5399.                   break;
  5400.                 } else if ((xxVerticalSet [xxToken + 540] & 1 << 4 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '.' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  5401.                 xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5402.               }
  5403.               for (;;) {
  5404.                 if ((xxToken == 10 /* '.' */)) {
  5405.                   xxToken =                   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5406.                   xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5407. /* line 564 "eiffel_sig.ell" */
  5408.  Assertion_clause0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;         
  5409.                   break;
  5410.                 } else if ((xxVerticalSet [xxToken + 540] & 1 << 5 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' Eq Not_eq '(' '<<' plus minus div and Current deferred do 'end' 'external' false implies 'local' 'old' once or 'rescue' Result 'strip' true 'until' 'variant' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  5411.                 xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5412.               }
  5413. /* line 565 "eiffel_sig.ell" */
  5414.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5415.                                    mCall(mExpression0(), Assertion_clause0->Tree)); 
  5416.               for (;;) {
  5417.                 if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  5418.                   xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  5419. /* line 568 "eiffel_sig.ell" */
  5420.  Assertion_clause0->Tree = mAssertion_clause1(mManifest_constant0(), 
  5421.                         mBin_expr(Assertion_clause0->Tree->Assertion_clause1.Expression, 
  5422.                         Expr_tail1.Tree->Bin_expr.Op, Expr_tail1.Tree->Bin_expr.Rop));    
  5423.                   break;
  5424.                 } else if ((xxVerticalSet [xxToken + 540] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '(' '<<' plus minus Current deferred do 'end' 'external' false 'local' 'old' once 'rescue' Result 'strip' true 'until' 'variant' not Id Comment */) || xxIsRepairMode) break;
  5425.                 xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5426.               }
  5427.               goto xx22;
  5428.             }
  5429.             xxExpected (122, 122, xxGlobalRecoverySet); /*  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5430.           }
  5431.         }
  5432.         xx22:;
  5433.         goto xx20;
  5434.       }
  5435.       xxExpected (120, 120, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */
  5436.     }
  5437.   }
  5438.   xx20:;
  5439. }
  5440.  
  5441. static void yyUnlabeled_assertion_clause
  5442. # if defined __STDC__ | defined __cplusplus
  5443. (ParserSIG_tParsAttribute * Unlabeled_assertion_clause0, xxtUnionPtr xxGlobalRecoverySet)
  5444. # else
  5445. (Unlabeled_assertion_clause0, xxGlobalRecoverySet)
  5446. ParserSIG_tParsAttribute    * Unlabeled_assertion_clause0;
  5447. xxtUnionPtr    xxGlobalRecoverySet;
  5448. # endif
  5449. {
  5450.     EiffelScan_tScanAttribute Comment1;
  5451.   ParserSIG_tParsAttribute Boolean_expression1;
  5452.   xxtUnion xxUnion;
  5453.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  5454.   for (;;) {
  5455.     switch (xxToken) {
  5456.     case 1 /* Character_constant */ :; 
  5457.     case 2 /* Bit_sequence */ :; 
  5458.     case 3 /* Integer */ :; 
  5459.     case 4 /* Real */ :; 
  5460.     case 5 /* Manifest_string */ :; 
  5461.     case 6 /* Free_op */ :; 
  5462.     case 17 /* '(' */ :; 
  5463.     case 23 /* '<<' */ :; 
  5464.     case 29 /* plus */ :; 
  5465.     case 30 /* minus */ :; 
  5466.     case 44 /* Current */ :; 
  5467.     case 56 /* false */ :; 
  5468.     case 74 /* 'old' */ :; 
  5469.     case 83 /* Result */ :; 
  5470.     case 88 /* 'strip' */ :; 
  5471.     case 90 /* true */ :; 
  5472.     case 105 /* not */ :; 
  5473.     case 106 /* Id */ :; 
  5474.       xxUnion.xxLocalRecoverySet = 0; yyBoolean_expression (& Boolean_expression1, & xxUnion); /*  */
  5475. /* line 577 "eiffel_sig.ell" */
  5476.  comment_possible = OFF; Unlabeled_assertion_clause0->Tree = Boolean_expression1.Tree;    
  5477.       goto xx23;
  5478.     case 107 /* Comment */ :; 
  5479.       Comment1 =       EiffelScan_Attribute;
  5480.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5481. /* line 578 "eiffel_sig.ell" */
  5482.  Unlabeled_assertion_clause0->Tree = mComment(Comment1.StringRef);            
  5483.       goto xx23;
  5484.     case 7:;
  5485.     case 8:;
  5486.     case 9:;
  5487.     case 10:;
  5488.     case 11:;
  5489.     case 12:;
  5490.     case 13:;
  5491.     case 14:;
  5492.     case 15:;
  5493.     case 16:;
  5494.     case 18:;
  5495.     case 19:;
  5496.     case 20:;
  5497.     case 21:;
  5498.     case 22:;
  5499.     case 24:;
  5500.     case 25:;
  5501.     case 26:;
  5502.     case 27:;
  5503.     case 28:;
  5504.     case 31:;
  5505.     case 32:;
  5506.     case 33:;
  5507.     case 34:;
  5508.     case 35:;
  5509.     case 36:;
  5510.     case 37:;
  5511.     case 38:;
  5512.     case 39:;
  5513.     case 40:;
  5514.     case 41:;
  5515.     case 42:;
  5516.     case 43:;
  5517.     case 45:;
  5518.     case 46:;
  5519.     case 47:;
  5520.     case 48:;
  5521.     case 49:;
  5522.     case 50:;
  5523.     case 51:;
  5524.     case 52:;
  5525.     case 53:;
  5526.     case 54:;
  5527.     case 55:;
  5528.     case 57:;
  5529.     case 58:;
  5530.     case 59:;
  5531.     case 60:;
  5532.     case 61:;
  5533.     case 62:;
  5534.     case 63:;
  5535.     case 64:;
  5536.     case 65:;
  5537.     case 66:;
  5538.     case 67:;
  5539.     case 68:;
  5540.     case 69:;
  5541.     case 70:;
  5542.     case 71:;
  5543.     case 72:;
  5544.     case 73:;
  5545.     case 75:;
  5546.     case 76:;
  5547.     case 77:;
  5548.     case 78:;
  5549.     case 79:;
  5550.     case 80:;
  5551.     case 81:;
  5552.     case 82:;
  5553.     case 84:;
  5554.     case 85:;
  5555.     case 86:;
  5556.     case 87:;
  5557.     case 89:;
  5558.     case 91:;
  5559.     case 92:;
  5560.     case 93:;
  5561.     case 94:;
  5562.     case 95:;
  5563.     case 96:;
  5564.     case 97:;
  5565.     case 98:;
  5566.     case 99:;
  5567.     case 100:;
  5568.     case 101:;
  5569.     case 102:;
  5570.     case 103:;
  5571.     case 104:;
  5572.     default:
  5573.       if (xxIsRepairMode) {
  5574.         xxUnion.xxLocalRecoverySet = 0; yyBoolean_expression (& Boolean_expression1, & xxUnion); /*  */
  5575. /* line 577 "eiffel_sig.ell" */
  5576.  comment_possible = OFF; Unlabeled_assertion_clause0->Tree = Boolean_expression1.Tree;    
  5577.         goto xx23;
  5578.       }
  5579.       xxExpected (120, 120, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id Comment */
  5580.     }
  5581.   }
  5582.   xx23:;
  5583. }
  5584.  
  5585. static void yyTag
  5586. # if defined __STDC__ | defined __cplusplus
  5587. (ParserSIG_tParsAttribute * Tag0, xxtUnionPtr xxGlobalRecoverySet)
  5588. # else
  5589. (Tag0, xxGlobalRecoverySet)
  5590. ParserSIG_tParsAttribute    * Tag0;
  5591. xxtUnionPtr    xxGlobalRecoverySet;
  5592. # endif
  5593. {
  5594.   ParserSIG_tParsAttribute Identifier1;
  5595.   xxtUnion xxUnion;
  5596.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  5597.   xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  5598. /* line 584 "eiffel_sig.ell" */
  5599.  Tag0->Tree = Identifier1.Tree;                            
  5600. }
  5601.  
  5602. static void yyOld
  5603. # if defined __STDC__ | defined __cplusplus
  5604. (ParserSIG_tParsAttribute * Old0, xxtUnionPtr xxGlobalRecoverySet)
  5605. # else
  5606. (Old0, xxGlobalRecoverySet)
  5607. ParserSIG_tParsAttribute    * Old0;
  5608. xxtUnionPtr    xxGlobalRecoverySet;
  5609. # endif
  5610. {
  5611.   ParserSIG_tParsAttribute Expression1;
  5612.   xxtUnion xxUnion;
  5613.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  5614.   if (xxToken != 74 /* 'old' */)
  5615.     xxRecoveryLiteral (74, 129, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  5616.   else {
  5617.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5618.   }
  5619.   xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  5620. /* line 589 "eiffel_sig.ell" */
  5621.  Old0->Tree = mOld(Expression1.Tree);                            
  5622. }
  5623.  
  5624. static void yyCheck
  5625. # if defined __STDC__ | defined __cplusplus
  5626. (ParserSIG_tParsAttribute * Check0, xxtUnionPtr xxGlobalRecoverySet)
  5627. # else
  5628. (Check0, xxGlobalRecoverySet)
  5629. ParserSIG_tParsAttribute    * Check0;
  5630. xxtUnionPtr    xxGlobalRecoverySet;
  5631. # endif
  5632. {
  5633.   ParserSIG_tParsAttribute Assertion1;
  5634.   xxtUnion xxUnion;
  5635.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  5636.   if (xxToken != 41 /* 'check' */)
  5637.     xxRecoveryLiteral (41, 130, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus 'check' Current 'end' false 'old' Result 'strip' true not Id Comment */
  5638.   else {
  5639.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5640.   }
  5641.   xxUnion.xxLocalRecoverySet = 10; yyAssertion (& Assertion1, & xxUnion); /*  'end' */
  5642. /* line 594 "eiffel_sig.ell" */
  5643.  Check0->Tree = Assertion1.Tree;                            
  5644.   if (xxToken != 51 /* 'end' */)
  5645.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  5646.   else {
  5647.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5648.   }
  5649. }
  5650.  
  5651. static void yyVariant
  5652. # if defined __STDC__ | defined __cplusplus
  5653. (ParserSIG_tParsAttribute * Variant0, xxtUnionPtr xxGlobalRecoverySet)
  5654. # else
  5655. (Variant0, xxGlobalRecoverySet)
  5656. ParserSIG_tParsAttribute    * Variant0;
  5657. xxtUnionPtr    xxGlobalRecoverySet;
  5658. # endif
  5659. {
  5660.   ParserSIG_tParsAttribute Actuals1;
  5661.   ParserSIG_tParsAttribute Call_chain1;
  5662.   ParserSIG_tParsAttribute Expression1;
  5663.   ParserSIG_tParsAttribute Tag1;
  5664.   ParserSIG_tParsAttribute Expr_tail1;
  5665.   xxtUnion xxUnion;
  5666.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  5667.   for (;;) {
  5668.     switch (xxToken) {
  5669.     case 94 /* 'variant' */ :; 
  5670.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5671.       xxUnion.xxLocalRecoverySet = 122; yyTag (& Tag1, & xxUnion); /*  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5672.       for (;;) {
  5673.         switch (xxToken) {
  5674.         case 9 /* ':' */ :; 
  5675.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5676.           xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  5677. /* line 605 "eiffel_sig.ell" */
  5678.  Variant0->Tree = mAssertion_clause1(Tag1.Tree, Expression1.Tree);             
  5679.           goto xx25;
  5680.         case 6 /* Free_op */ :; 
  5681.         case 10 /* '.' */ :; 
  5682.         case 13 /* Eq */ :; 
  5683.         case 14 /* Not_eq */ :; 
  5684.         case 17 /* '(' */ :; 
  5685.         case 29 /* plus */ :; 
  5686.         case 30 /* minus */ :; 
  5687.         case 33 /* div */ :; 
  5688.         case 36 /* and */ :; 
  5689.         case 61 /* implies */ :; 
  5690.         case 76 /* or */ :; 
  5691.         case 93 /* 'until' */ :; 
  5692.         case 96 /* xor */ :; 
  5693.         case 97 /* times */ :; 
  5694.         case 98 /* smaller */ :; 
  5695.         case 99 /* greater */ :; 
  5696.         case 100 /* sm_eq */ :; 
  5697.         case 101 /* gr_eq */ :; 
  5698.         case 102 /* idiv */ :; 
  5699.         case 103 /* imod */ :; 
  5700.         case 104 /* power */ :; 
  5701. /* line 606 "eiffel_sig.ell" */
  5702.  Variant0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree, mActuals0()), mCall_chain0());    
  5703.           for (;;) {
  5704.             if ((xxToken == 17 /* '(' */)) {
  5705.               xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5706. /* line 607 "eiffel_sig.ell" */
  5707.  Variant0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree;        
  5708.               break;
  5709.             } else if ((xxVerticalSet [xxToken + 648] & 1 << 0 /*  Free_op '.' Eq Not_eq plus minus div and implies or 'until' xor times smaller greater sm_eq gr_eq idiv imod power */) || xxIsRepairMode) break;
  5710.             xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5711.           }
  5712.           for (;;) {
  5713.             if ((xxToken == 10 /* '.' */)) {
  5714.               xxToken =               EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5715.               xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5716. /* line 608 "eiffel_sig.ell" */
  5717.  Variant0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;                 
  5718.               break;
  5719.             } else if ((xxVerticalSet [xxToken + 648] & 1 << 1 /*  Free_op Eq Not_eq plus minus div and implies or 'until' xor times smaller greater sm_eq gr_eq idiv imod power */) || xxIsRepairMode) break;
  5720.             xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5721.           }
  5722. /* line 609 "eiffel_sig.ell" */
  5723.  Variant0->Tree = mCall(mExpression0(), Variant0->Tree);                
  5724.           for (;;) {
  5725.             if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  5726.               xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  5727. /* line 610 "eiffel_sig.ell" */
  5728.  Variant0->Tree = mBin_expr(Variant0->Tree, Expr_tail1.Tree->Bin_expr.Op, 
  5729.                                         Expr_tail1.Tree->Bin_expr.Rop);    
  5730.               break;
  5731.             } else if ((xxToken == 93 /* 'until' */) || xxIsRepairMode) break;
  5732.             xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5733.           }
  5734.           goto xx25;
  5735.         case 7:;
  5736.         case 8:;
  5737.         case 11:;
  5738.         case 12:;
  5739.         case 15:;
  5740.         case 16:;
  5741.         case 18:;
  5742.         case 19:;
  5743.         case 20:;
  5744.         case 21:;
  5745.         case 22:;
  5746.         case 23:;
  5747.         case 24:;
  5748.         case 25:;
  5749.         case 26:;
  5750.         case 27:;
  5751.         case 28:;
  5752.         case 31:;
  5753.         case 32:;
  5754.         case 34:;
  5755.         case 35:;
  5756.         case 37:;
  5757.         case 38:;
  5758.         case 39:;
  5759.         case 40:;
  5760.         case 41:;
  5761.         case 42:;
  5762.         case 43:;
  5763.         case 44:;
  5764.         case 45:;
  5765.         case 46:;
  5766.         case 47:;
  5767.         case 48:;
  5768.         case 49:;
  5769.         case 50:;
  5770.         case 51:;
  5771.         case 52:;
  5772.         case 53:;
  5773.         case 54:;
  5774.         case 55:;
  5775.         case 56:;
  5776.         case 57:;
  5777.         case 58:;
  5778.         case 59:;
  5779.         case 60:;
  5780.         case 62:;
  5781.         case 63:;
  5782.         case 64:;
  5783.         case 65:;
  5784.         case 66:;
  5785.         case 67:;
  5786.         case 68:;
  5787.         case 69:;
  5788.         case 70:;
  5789.         case 71:;
  5790.         case 72:;
  5791.         case 73:;
  5792.         case 74:;
  5793.         case 75:;
  5794.         case 77:;
  5795.         case 78:;
  5796.         case 79:;
  5797.         case 80:;
  5798.         case 81:;
  5799.         case 82:;
  5800.         case 83:;
  5801.         case 84:;
  5802.         case 85:;
  5803.         case 86:;
  5804.         case 87:;
  5805.         case 88:;
  5806.         case 89:;
  5807.         case 90:;
  5808.         case 91:;
  5809.         case 92:;
  5810.         case 94:;
  5811.         case 95:;
  5812.         default:
  5813.           if (xxIsRepairMode) {
  5814. /* line 606 "eiffel_sig.ell" */
  5815.  Variant0->Tree = mCall_chain1(mUnqual_call1(Tag1.Tree, mActuals0()), mCall_chain0());    
  5816.             for (;;) {
  5817.               if ((xxToken == 17 /* '(' */)) {
  5818.                 xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5819. /* line 607 "eiffel_sig.ell" */
  5820.  Variant0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree;        
  5821.                 break;
  5822.               } else if ((xxVerticalSet [xxToken + 648] & 1 << 0 /*  Free_op '.' Eq Not_eq plus minus div and implies or 'until' xor times smaller greater sm_eq gr_eq idiv imod power */) || xxIsRepairMode) break;
  5823.               xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5824.             }
  5825.             for (;;) {
  5826.               if ((xxToken == 10 /* '.' */)) {
  5827.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5828.                 xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5829. /* line 608 "eiffel_sig.ell" */
  5830.  Variant0->Tree->Call_chain1.Call_chain = Call_chain1.Tree;                 
  5831.                 break;
  5832.               } else if ((xxVerticalSet [xxToken + 648] & 1 << 1 /*  Free_op Eq Not_eq plus minus div and implies or 'until' xor times smaller greater sm_eq gr_eq idiv imod power */) || xxIsRepairMode) break;
  5833.               xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5834.             }
  5835. /* line 609 "eiffel_sig.ell" */
  5836.  Variant0->Tree = mCall(mExpression0(), Variant0->Tree);                
  5837.             for (;;) {
  5838.               if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  5839.                 xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  5840. /* line 610 "eiffel_sig.ell" */
  5841.  Variant0->Tree = mBin_expr(Variant0->Tree, Expr_tail1.Tree->Bin_expr.Op, 
  5842.                                         Expr_tail1.Tree->Bin_expr.Rop);    
  5843.                 break;
  5844.               } else if ((xxToken == 93 /* 'until' */) || xxIsRepairMode) break;
  5845.               xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5846.             }
  5847.             goto xx25;
  5848.           }
  5849. xxUnexpected (122, xxGlobalRecoverySet); /*  Free_op ':' '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  5850.         }
  5851.       }
  5852.       xx25:;
  5853. /* line 612 "eiffel_sig.ell" */
  5854.  Variant0->Tree = mAssertion_clause1(Tag1.Tree, Variant0->Tree);            
  5855.       goto xx24;
  5856.     case 1 /* Character_constant */ :; 
  5857.     case 2 /* Bit_sequence */ :; 
  5858.     case 3 /* Integer */ :; 
  5859.     case 4 /* Real */ :; 
  5860.     case 5 /* Manifest_string */ :; 
  5861.     case 6 /* Free_op */ :; 
  5862.     case 17 /* '(' */ :; 
  5863.     case 23 /* '<<' */ :; 
  5864.     case 29 /* plus */ :; 
  5865.     case 30 /* minus */ :; 
  5866.     case 44 /* Current */ :; 
  5867.     case 56 /* false */ :; 
  5868.     case 74 /* 'old' */ :; 
  5869.     case 83 /* Result */ :; 
  5870.     case 88 /* 'strip' */ :; 
  5871.     case 90 /* true */ :; 
  5872.     case 105 /* not */ :; 
  5873.     case 106 /* Id */ :; 
  5874.       xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  5875. /* line 613 "eiffel_sig.ell" */
  5876.  Variant0->Tree = mAssertion_clause1(mManifest_constant0(), Expression1.Tree);             
  5877.       goto xx24;
  5878.     case 7:;
  5879.     case 8:;
  5880.     case 9:;
  5881.     case 10:;
  5882.     case 11:;
  5883.     case 12:;
  5884.     case 13:;
  5885.     case 14:;
  5886.     case 15:;
  5887.     case 16:;
  5888.     case 18:;
  5889.     case 19:;
  5890.     case 20:;
  5891.     case 21:;
  5892.     case 22:;
  5893.     case 24:;
  5894.     case 25:;
  5895.     case 26:;
  5896.     case 27:;
  5897.     case 28:;
  5898.     case 31:;
  5899.     case 32:;
  5900.     case 33:;
  5901.     case 34:;
  5902.     case 35:;
  5903.     case 36:;
  5904.     case 37:;
  5905.     case 38:;
  5906.     case 39:;
  5907.     case 40:;
  5908.     case 41:;
  5909.     case 42:;
  5910.     case 43:;
  5911.     case 45:;
  5912.     case 46:;
  5913.     case 47:;
  5914.     case 48:;
  5915.     case 49:;
  5916.     case 50:;
  5917.     case 51:;
  5918.     case 52:;
  5919.     case 53:;
  5920.     case 54:;
  5921.     case 55:;
  5922.     case 57:;
  5923.     case 58:;
  5924.     case 59:;
  5925.     case 60:;
  5926.     case 61:;
  5927.     case 62:;
  5928.     case 63:;
  5929.     case 64:;
  5930.     case 65:;
  5931.     case 66:;
  5932.     case 67:;
  5933.     case 68:;
  5934.     case 69:;
  5935.     case 70:;
  5936.     case 71:;
  5937.     case 72:;
  5938.     case 73:;
  5939.     case 75:;
  5940.     case 76:;
  5941.     case 77:;
  5942.     case 78:;
  5943.     case 79:;
  5944.     case 80:;
  5945.     case 81:;
  5946.     case 82:;
  5947.     case 84:;
  5948.     case 85:;
  5949.     case 86:;
  5950.     case 87:;
  5951.     case 89:;
  5952.     case 91:;
  5953.     case 92:;
  5954.     case 93:;
  5955.     case 95:;
  5956.     case 96:;
  5957.     case 97:;
  5958.     case 98:;
  5959.     case 99:;
  5960.     case 100:;
  5961.     case 101:;
  5962.     case 102:;
  5963.     case 103:;
  5964.     case 104:;
  5965.     default:
  5966.       if (xxIsRepairMode) {
  5967.         xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  5968. /* line 613 "eiffel_sig.ell" */
  5969.  Variant0->Tree = mAssertion_clause1(mManifest_constant0(), Expression1.Tree);             
  5970.         goto xx24;
  5971.       }
  5972.       xxExpected (133, 133, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true 'variant' not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true 'variant' not Id */
  5973.     }
  5974.   }
  5975.   xx24:;
  5976. }
  5977.  
  5978. static void yyRedefine
  5979. # if defined __STDC__ | defined __cplusplus
  5980. (ParserSIG_tParsAttribute * Redefine0, xxtUnionPtr xxGlobalRecoverySet)
  5981. # else
  5982. (Redefine0, xxGlobalRecoverySet)
  5983. ParserSIG_tParsAttribute    * Redefine0;
  5984. xxtUnionPtr    xxGlobalRecoverySet;
  5985. # endif
  5986. {
  5987.   ParserSIG_tParsAttribute Feature_list1;
  5988.   xxtUnion xxUnion;
  5989.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  5990.   if (xxToken != 79 /* 'redefine' */)
  5991.     xxRecoveryLiteral (79, 134, xxGlobalRecoverySet); /*  infix prefix 'redefine' Id */
  5992.   else {
  5993.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  5994.   }
  5995.   xxUnion.xxLocalRecoverySet = 0; yyFeature_list (& Feature_list1, & xxUnion); /*  */
  5996. /* line 619 "eiffel_sig.ell" */
  5997.  Redefine0->Tree = ReverseTree(Feature_list1.Tree);                    
  5998. }
  5999.  
  6000. static void yyUndefine
  6001. # if defined __STDC__ | defined __cplusplus
  6002. (ParserSIG_tParsAttribute * Undefine0, xxtUnionPtr xxGlobalRecoverySet)
  6003. # else
  6004. (Undefine0, xxGlobalRecoverySet)
  6005. ParserSIG_tParsAttribute    * Undefine0;
  6006. xxtUnionPtr    xxGlobalRecoverySet;
  6007. # endif
  6008. {
  6009.   ParserSIG_tParsAttribute Feature_list1;
  6010.   xxtUnion xxUnion;
  6011.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6012.   if (xxToken != 91 /* 'undefine' */)
  6013.     xxRecoveryLiteral (91, 135, xxGlobalRecoverySet); /*  infix prefix 'undefine' Id */
  6014.   else {
  6015.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6016.   }
  6017.   xxUnion.xxLocalRecoverySet = 0; yyFeature_list (& Feature_list1, & xxUnion); /*  */
  6018. /* line 623 "eiffel_sig.ell" */
  6019.  Undefine0->Tree = ReverseTree(Feature_list1.Tree);                    
  6020. }
  6021.  
  6022. static void yySelect
  6023. # if defined __STDC__ | defined __cplusplus
  6024. (ParserSIG_tParsAttribute * Select0, xxtUnionPtr xxGlobalRecoverySet)
  6025. # else
  6026. (Select0, xxGlobalRecoverySet)
  6027. ParserSIG_tParsAttribute    * Select0;
  6028. xxtUnionPtr    xxGlobalRecoverySet;
  6029. # endif
  6030. {
  6031.   ParserSIG_tParsAttribute Feature_list1;
  6032.   xxtUnion xxUnion;
  6033.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6034.   if (xxToken != 85 /* 'select' */)
  6035.     xxRecoveryLiteral (85, 136, xxGlobalRecoverySet); /*  infix prefix 'select' Id */
  6036.   else {
  6037.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6038.   }
  6039.   xxUnion.xxLocalRecoverySet = 0; yyFeature_list (& Feature_list1, & xxUnion); /*  */
  6040. /* line 627 "eiffel_sig.ell" */
  6041.  Select0->Tree = ReverseTree(Feature_list1.Tree);                    
  6042. }
  6043.  
  6044. static void yyType
  6045. # if defined __STDC__ | defined __cplusplus
  6046. (ParserSIG_tParsAttribute * Type0, xxtUnionPtr xxGlobalRecoverySet)
  6047. # else
  6048. (Type0, xxGlobalRecoverySet)
  6049. ParserSIG_tParsAttribute    * Type0;
  6050. xxtUnionPtr    xxGlobalRecoverySet;
  6051. # endif
  6052. {
  6053.     EiffelScan_tScanAttribute BOOLEAN1;
  6054.     EiffelScan_tScanAttribute CHARACTER1;
  6055.     EiffelScan_tScanAttribute DOUBLE1;
  6056.     EiffelScan_tScanAttribute INTEGER1;
  6057.     EiffelScan_tScanAttribute _NONE1;
  6058.     EiffelScan_tScanAttribute REAL1;
  6059.     EiffelScan_tScanAttribute STRING1;
  6060.   ParserSIG_tParsAttribute Class_type1;
  6061.   ParserSIG_tParsAttribute Anchored1;
  6062.   ParserSIG_tParsAttribute Bit_type1;
  6063.   xxtUnion xxUnion;
  6064.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6065.   for (;;) {
  6066.     switch (xxToken) {
  6067.     case 53 /* expanded */ :; 
  6068.     case 106 /* Id */ :; 
  6069.       xxUnion.xxLocalRecoverySet = 0; yyClass_type (& Class_type1, & xxUnion); /*  */
  6070. /* line 634 "eiffel_sig.ell" */
  6071.  Type0->Tree = Class_type1.Tree;                             
  6072.       goto xx26;
  6073.     case 69 /* 'like' */ :; 
  6074.       xxUnion.xxLocalRecoverySet = 0; yyAnchored (& Anchored1, & xxUnion); /*  */
  6075. /* line 635 "eiffel_sig.ell" */
  6076.  Type0->Tree = Anchored1.Tree;                                
  6077.       goto xx26;
  6078.     case 38 /* BIT */ :; 
  6079.       xxUnion.xxLocalRecoverySet = 0; yyBit_type (& Bit_type1, & xxUnion); /*  */
  6080. /* line 636 "eiffel_sig.ell" */
  6081.  Type0->Tree = Bit_type1.Tree;                                
  6082.       goto xx26;
  6083.     case 39 /* BOOLEAN */ :; 
  6084.       BOOLEAN1 =       EiffelScan_Attribute;
  6085.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6086. /* line 637 "eiffel_sig.ell" */
  6087.  Type0->Tree = mSimple_type(m_BOOLEAN(BOOLEAN1.Position));                
  6088.       goto xx26;
  6089.     case 40 /* CHARACTER */ :; 
  6090.       CHARACTER1 =       EiffelScan_Attribute;
  6091.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6092. /* line 638 "eiffel_sig.ell" */
  6093.  Type0->Tree = mSimple_type(m_CHARACTER(CHARACTER1.Position));                
  6094.       goto xx26;
  6095.     case 48 /* DOUBLE */ :; 
  6096.       DOUBLE1 =       EiffelScan_Attribute;
  6097.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6098. /* line 639 "eiffel_sig.ell" */
  6099.  Type0->Tree = mSimple_type(m_DOUBLE(DOUBLE1.Position));                
  6100.       goto xx26;
  6101.     case 66 /* INTEGER */ :; 
  6102.       INTEGER1 =       EiffelScan_Attribute;
  6103.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6104. /* line 640 "eiffel_sig.ell" */
  6105.  Type0->Tree = mSimple_type(m_INTEGER(INTEGER1.Position));                 
  6106.       goto xx26;
  6107.     case 72 /* _NONE */ :; 
  6108.       _NONE1 =       EiffelScan_Attribute;
  6109.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6110. /* line 641 "eiffel_sig.ell" */
  6111.  Type0->Tree = mSimple_type(m_NONE(_NONE1.Position));                     
  6112.       goto xx26;
  6113.     case 78 /* REAL */ :; 
  6114.       REAL1 =       EiffelScan_Attribute;
  6115.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6116. /* line 642 "eiffel_sig.ell" */
  6117.  Type0->Tree = mSimple_type(m_REAL(REAL1.Position));                     
  6118.       goto xx26;
  6119.     case 87 /* STRING */ :; 
  6120.       STRING1 =       EiffelScan_Attribute;
  6121.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6122. /* line 643 "eiffel_sig.ell" */
  6123.  Type0->Tree = mSimple_type(m_STRING(STRING1.Position));                 
  6124.       goto xx26;
  6125.     case 41:;
  6126.     case 42:;
  6127.     case 43:;
  6128.     case 44:;
  6129.     case 45:;
  6130.     case 46:;
  6131.     case 47:;
  6132.     case 49:;
  6133.     case 50:;
  6134.     case 51:;
  6135.     case 52:;
  6136.     case 54:;
  6137.     case 55:;
  6138.     case 56:;
  6139.     case 57:;
  6140.     case 58:;
  6141.     case 59:;
  6142.     case 60:;
  6143.     case 61:;
  6144.     case 62:;
  6145.     case 63:;
  6146.     case 64:;
  6147.     case 65:;
  6148.     case 67:;
  6149.     case 68:;
  6150.     case 70:;
  6151.     case 71:;
  6152.     case 73:;
  6153.     case 74:;
  6154.     case 75:;
  6155.     case 76:;
  6156.     case 77:;
  6157.     case 79:;
  6158.     case 80:;
  6159.     case 81:;
  6160.     case 82:;
  6161.     case 83:;
  6162.     case 84:;
  6163.     case 85:;
  6164.     case 86:;
  6165.     case 88:;
  6166.     case 89:;
  6167.     case 90:;
  6168.     case 91:;
  6169.     case 92:;
  6170.     case 93:;
  6171.     case 94:;
  6172.     case 95:;
  6173.     case 96:;
  6174.     case 97:;
  6175.     case 98:;
  6176.     case 99:;
  6177.     case 100:;
  6178.     case 101:;
  6179.     case 102:;
  6180.     case 103:;
  6181.     case 104:;
  6182.     case 105:;
  6183.     default:
  6184.       if (xxIsRepairMode) {
  6185.         xxUnion.xxLocalRecoverySet = 0; yyClass_type (& Class_type1, & xxUnion); /*  */
  6186. /* line 634 "eiffel_sig.ell" */
  6187.  Type0->Tree = Class_type1.Tree;                             
  6188.         goto xx26;
  6189.       }
  6190.       xxExpected (144, 144, xxGlobalRecoverySet); /*  BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id /  BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */
  6191.     }
  6192.   }
  6193.   xx26:;
  6194. }
  6195.  
  6196. static void yyClass_type
  6197. # if defined __STDC__ | defined __cplusplus
  6198. (ParserSIG_tParsAttribute * Class_type0, xxtUnionPtr xxGlobalRecoverySet)
  6199. # else
  6200. (Class_type0, xxGlobalRecoverySet)
  6201. ParserSIG_tParsAttribute    * Class_type0;
  6202. xxtUnionPtr    xxGlobalRecoverySet;
  6203. # endif
  6204. {
  6205.     EiffelScan_tScanAttribute expanded1;
  6206.   ParserSIG_tParsAttribute Identifier1;
  6207.   ParserSIG_tParsAttribute Actual_generics1;
  6208.   xxtUnion xxUnion;
  6209.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6210.   for (;;) {
  6211.     switch (xxToken) {
  6212.     case 106 /* Id */ :; 
  6213.       xxUnion.xxLocalRecoverySet = 145; yyIdentifier (& Identifier1, & xxUnion); /*  '[' */
  6214. /* line 647 "eiffel_sig.ell" */
  6215.  Class_type0->Tree = mClass_type(Identifier1.Tree, mActual_generics0());         
  6216.       for (;;) {
  6217.         if ((xxToken == 19 /* '[' */)) {
  6218.           xxUnion.xxLocalRecoverySet = 0; yyActual_generics (& Actual_generics1, & xxUnion); /*  */
  6219. /* line 648 "eiffel_sig.ell" */
  6220.  Class_type0->Tree->Class_type.Actual_generics = Actual_generics1.Tree;         
  6221.           break;
  6222.         } else if ((xxVerticalSet [xxToken + 648] & 1 << 2 /*  ';' ',' '!' ')' ']' 'creation' deferred do 'end' expanded 'export' 'external' 'feature' 'frozen' infix 'invariant' 'is' once prefix 'redefine' 'rename' 'select' 'undefine' Id */) || xxIsRepairMode) break;
  6223.         xxExpected (145, 145, xxGlobalRecoverySet); /*  '[' /  '[' */
  6224.       }
  6225.       goto xx27;
  6226.     case 53 /* expanded */ :; 
  6227.       expanded1 =       EiffelScan_Attribute;
  6228.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6229.       xxUnion.xxLocalRecoverySet = 145; yyIdentifier (& Identifier1, & xxUnion); /*  '[' */
  6230. /* line 649 "eiffel_sig.ell" */
  6231.  Class_type0->Tree = mClass_type_expanded(Identifier1.Tree, mActual_generics0());    
  6232.       for (;;) {
  6233.         if ((xxToken == 19 /* '[' */)) {
  6234.           xxUnion.xxLocalRecoverySet = 0; yyActual_generics (& Actual_generics1, & xxUnion); /*  */
  6235. /* line 650 "eiffel_sig.ell" */
  6236.  Class_type0->Tree->Class_type_expanded.Actual_generics = Actual_generics1.Tree;     
  6237.           break;
  6238.         } else if ((xxVerticalSet [xxToken + 648] & 1 << 2 /*  ';' ',' '!' ')' ']' 'creation' deferred do 'end' expanded 'export' 'external' 'feature' 'frozen' infix 'invariant' 'is' once prefix 'redefine' 'rename' 'select' 'undefine' Id */) || xxIsRepairMode) break;
  6239.         xxExpected (145, 145, xxGlobalRecoverySet); /*  '[' /  '[' */
  6240.       }
  6241.       goto xx27;
  6242.     case 54:;
  6243.     case 55:;
  6244.     case 56:;
  6245.     case 57:;
  6246.     case 58:;
  6247.     case 59:;
  6248.     case 60:;
  6249.     case 61:;
  6250.     case 62:;
  6251.     case 63:;
  6252.     case 64:;
  6253.     case 65:;
  6254.     case 66:;
  6255.     case 67:;
  6256.     case 68:;
  6257.     case 69:;
  6258.     case 70:;
  6259.     case 71:;
  6260.     case 72:;
  6261.     case 73:;
  6262.     case 74:;
  6263.     case 75:;
  6264.     case 76:;
  6265.     case 77:;
  6266.     case 78:;
  6267.     case 79:;
  6268.     case 80:;
  6269.     case 81:;
  6270.     case 82:;
  6271.     case 83:;
  6272.     case 84:;
  6273.     case 85:;
  6274.     case 86:;
  6275.     case 87:;
  6276.     case 88:;
  6277.     case 89:;
  6278.     case 90:;
  6279.     case 91:;
  6280.     case 92:;
  6281.     case 93:;
  6282.     case 94:;
  6283.     case 95:;
  6284.     case 96:;
  6285.     case 97:;
  6286.     case 98:;
  6287.     case 99:;
  6288.     case 100:;
  6289.     case 101:;
  6290.     case 102:;
  6291.     case 103:;
  6292.     case 104:;
  6293.     case 105:;
  6294.     default:
  6295.       if (xxIsRepairMode) {
  6296.         xxUnion.xxLocalRecoverySet = 145; yyIdentifier (& Identifier1, & xxUnion); /*  '[' */
  6297. /* line 647 "eiffel_sig.ell" */
  6298.  Class_type0->Tree = mClass_type(Identifier1.Tree, mActual_generics0());         
  6299.         for (;;) {
  6300.           if ((xxToken == 19 /* '[' */)) {
  6301.             xxUnion.xxLocalRecoverySet = 0; yyActual_generics (& Actual_generics1, & xxUnion); /*  */
  6302. /* line 648 "eiffel_sig.ell" */
  6303.  Class_type0->Tree->Class_type.Actual_generics = Actual_generics1.Tree;         
  6304.             break;
  6305.           } else if ((xxVerticalSet [xxToken + 648] & 1 << 2 /*  ';' ',' '!' ')' ']' 'creation' deferred do 'end' expanded 'export' 'external' 'feature' 'frozen' infix 'invariant' 'is' once prefix 'redefine' 'rename' 'select' 'undefine' Id */) || xxIsRepairMode) break;
  6306.           xxExpected (145, 145, xxGlobalRecoverySet); /*  '[' /  '[' */
  6307.         }
  6308.         goto xx27;
  6309.       }
  6310.       xxExpected (63, 63, xxGlobalRecoverySet); /*  expanded Id /  expanded Id */
  6311.     }
  6312.   }
  6313.   xx27:;
  6314. }
  6315.  
  6316. static void yyActual_generics
  6317. # if defined __STDC__ | defined __cplusplus
  6318. (ParserSIG_tParsAttribute * Actual_generics0, xxtUnionPtr xxGlobalRecoverySet)
  6319. # else
  6320. (Actual_generics0, xxGlobalRecoverySet)
  6321. ParserSIG_tParsAttribute    * Actual_generics0;
  6322. xxtUnionPtr    xxGlobalRecoverySet;
  6323. # endif
  6324. {
  6325.   ParserSIG_tParsAttribute Type_list1;
  6326.   xxtUnion xxUnion;
  6327.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6328.   if (xxToken != 19 /* '[' */)
  6329.     xxRecoveryLiteral (19, 147, xxGlobalRecoverySet); /*  '[' ']' BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */
  6330.   else {
  6331.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6332.   }
  6333.   xxUnion.xxLocalRecoverySet = 148; yyType_list (& Type_list1, & xxUnion); /*  ']' */
  6334.   if (xxToken != 20 /* ']' */)
  6335.     xxRecoveryLiteral (20, 148, xxGlobalRecoverySet); /*  ']' */
  6336.   else {
  6337.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6338.   }
  6339. /* line 654 "eiffel_sig.ell" */
  6340.  Actual_generics0->Tree = mActual_generics1(Type_list1.Tree);                 
  6341. }
  6342.  
  6343. static void yyType_list
  6344. # if defined __STDC__ | defined __cplusplus
  6345. (ParserSIG_tParsAttribute * Type_list0, xxtUnionPtr xxGlobalRecoverySet)
  6346. # else
  6347. (Type_list0, xxGlobalRecoverySet)
  6348. ParserSIG_tParsAttribute    * Type_list0;
  6349. xxtUnionPtr    xxGlobalRecoverySet;
  6350. # endif
  6351. {
  6352.   ParserSIG_tParsAttribute Type1;
  6353.   xxtUnion xxUnion;
  6354.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6355. /* line 657 "eiffel_sig.ell" */
  6356.  Type_list0->Tree = mType_list0();                             
  6357.   for (;;) {
  6358.     if ((xxVerticalSet [xxToken + 648] & 1 << 3 /*  BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */)) {
  6359.       for (;;) {
  6360.         xxUnion.xxLocalRecoverySet = 16; yyType (& Type1, & xxUnion); /*  ',' */
  6361. /* line 658 "eiffel_sig.ell" */
  6362.  Type_list0->Tree = mType_list1(Type1.Tree, Type_list0->Tree);                
  6363.         if (! ((xxToken == 8 /* ',' */))) {
  6364.           if ((xxToken == 20 /* ']' */)) break;
  6365.           xxExpected (16, 149, xxGlobalRecoverySet); /*  ',' /  ',' BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */
  6366.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 648] & 1 << 3 /*  BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */))) break;
  6367.         }
  6368.         if (xxToken != 8 /* ',' */)
  6369.           xxRecoveryLiteral (8, 149, xxGlobalRecoverySet); /*  ',' BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */
  6370.         else {
  6371.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6372.         }
  6373.       }
  6374.       break;
  6375.     } else if ((xxToken == 20 /* ']' */) || xxIsRepairMode) break;
  6376.     xxExpected (144, 144, xxGlobalRecoverySet); /*  BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id /  BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */
  6377.   }
  6378. /* line 659 "eiffel_sig.ell" */
  6379.  Type_list0->Tree = ReverseTree(Type_list0->Tree);                    
  6380. }
  6381.  
  6382. static void yyBit_type
  6383. # if defined __STDC__ | defined __cplusplus
  6384. (ParserSIG_tParsAttribute * Bit_type0, xxtUnionPtr xxGlobalRecoverySet)
  6385. # else
  6386. (Bit_type0, xxGlobalRecoverySet)
  6387. ParserSIG_tParsAttribute    * Bit_type0;
  6388. xxtUnionPtr    xxGlobalRecoverySet;
  6389. # endif
  6390. {
  6391.     EiffelScan_tScanAttribute BIT1;
  6392.   ParserSIG_tParsAttribute Constant1;
  6393.   xxtUnion xxUnion;
  6394.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6395.   if (xxToken != 38 /* BIT */)
  6396.     xxRecoveryTerminal (38, 150, xxGlobalRecoverySet, & BIT1); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus BIT Current false Result true Id */
  6397.   else {
  6398.     BIT1 =   EiffelScan_Attribute;
  6399.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6400.   }
  6401.   xxUnion.xxLocalRecoverySet = 0; yyConstant (& Constant1, & xxUnion); /*  */
  6402. /* line 663 "eiffel_sig.ell" */
  6403.  Bit_type0->Tree = mBit_type(Constant1.Tree);                        
  6404. }
  6405.  
  6406. static void yyAnchored
  6407. # if defined __STDC__ | defined __cplusplus
  6408. (ParserSIG_tParsAttribute * Anchored0, xxtUnionPtr xxGlobalRecoverySet)
  6409. # else
  6410. (Anchored0, xxGlobalRecoverySet)
  6411. ParserSIG_tParsAttribute    * Anchored0;
  6412. xxtUnionPtr    xxGlobalRecoverySet;
  6413. # endif
  6414. {
  6415.   ParserSIG_tParsAttribute Anchor1;
  6416.   xxtUnion xxUnion;
  6417.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6418.   if (xxToken != 69 /* 'like' */)
  6419.     xxRecoveryLiteral (69, 151, xxGlobalRecoverySet); /*  Current 'like' Id */
  6420.   else {
  6421.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6422.   }
  6423.   xxUnion.xxLocalRecoverySet = 0; yyAnchor (& Anchor1, & xxUnion); /*  */
  6424. /* line 667 "eiffel_sig.ell" */
  6425.  Anchored0->Tree = mAnchored(Anchor1.Tree);                        
  6426. }
  6427.  
  6428. static void yyAnchor
  6429. # if defined __STDC__ | defined __cplusplus
  6430. (ParserSIG_tParsAttribute * Anchor0, xxtUnionPtr xxGlobalRecoverySet)
  6431. # else
  6432. (Anchor0, xxGlobalRecoverySet)
  6433. ParserSIG_tParsAttribute    * Anchor0;
  6434. xxtUnionPtr    xxGlobalRecoverySet;
  6435. # endif
  6436. {
  6437.     EiffelScan_tScanAttribute Current1;
  6438.   ParserSIG_tParsAttribute Identifier1;
  6439.   xxtUnion xxUnion;
  6440.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6441.   for (;;) {
  6442.     switch (xxToken) {
  6443.     case 106 /* Id */ :; 
  6444.       xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  6445. /* line 671 "eiffel_sig.ell" */
  6446.  Anchor0->Tree = Identifier1.Tree;                            
  6447.       goto xx28;
  6448.     case 44 /* Current */ :; 
  6449.       Current1 =       EiffelScan_Attribute;
  6450.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6451. /* line 672 "eiffel_sig.ell" */
  6452.  Anchor0->Tree = mCurrent(Current1.Position);                        
  6453.       goto xx28;
  6454.     case 45:;
  6455.     case 46:;
  6456.     case 47:;
  6457.     case 48:;
  6458.     case 49:;
  6459.     case 50:;
  6460.     case 51:;
  6461.     case 52:;
  6462.     case 53:;
  6463.     case 54:;
  6464.     case 55:;
  6465.     case 56:;
  6466.     case 57:;
  6467.     case 58:;
  6468.     case 59:;
  6469.     case 60:;
  6470.     case 61:;
  6471.     case 62:;
  6472.     case 63:;
  6473.     case 64:;
  6474.     case 65:;
  6475.     case 66:;
  6476.     case 67:;
  6477.     case 68:;
  6478.     case 69:;
  6479.     case 70:;
  6480.     case 71:;
  6481.     case 72:;
  6482.     case 73:;
  6483.     case 74:;
  6484.     case 75:;
  6485.     case 76:;
  6486.     case 77:;
  6487.     case 78:;
  6488.     case 79:;
  6489.     case 80:;
  6490.     case 81:;
  6491.     case 82:;
  6492.     case 83:;
  6493.     case 84:;
  6494.     case 85:;
  6495.     case 86:;
  6496.     case 87:;
  6497.     case 88:;
  6498.     case 89:;
  6499.     case 90:;
  6500.     case 91:;
  6501.     case 92:;
  6502.     case 93:;
  6503.     case 94:;
  6504.     case 95:;
  6505.     case 96:;
  6506.     case 97:;
  6507.     case 98:;
  6508.     case 99:;
  6509.     case 100:;
  6510.     case 101:;
  6511.     case 102:;
  6512.     case 103:;
  6513.     case 104:;
  6514.     case 105:;
  6515.     default:
  6516.       if (xxIsRepairMode) {
  6517.         xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  6518. /* line 671 "eiffel_sig.ell" */
  6519.  Anchor0->Tree = Identifier1.Tree;                            
  6520.         goto xx28;
  6521.       }
  6522.       xxExpected (153, 153, xxGlobalRecoverySet); /*  Current Id /  Current Id */
  6523.     }
  6524.   }
  6525.   xx28:;
  6526. }
  6527.  
  6528. static void yyFormal_generics
  6529. # if defined __STDC__ | defined __cplusplus
  6530. (ParserSIG_tParsAttribute * Formal_generics0, xxtUnionPtr xxGlobalRecoverySet)
  6531. # else
  6532. (Formal_generics0, xxGlobalRecoverySet)
  6533. ParserSIG_tParsAttribute    * Formal_generics0;
  6534. xxtUnionPtr    xxGlobalRecoverySet;
  6535. # endif
  6536. {
  6537.   ParserSIG_tParsAttribute Formal_generic_list1;
  6538.   xxtUnion xxUnion;
  6539.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6540.   if (xxToken != 19 /* '[' */)
  6541.     xxRecoveryLiteral (19, 154, xxGlobalRecoverySet); /*  '[' ']' BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  6542.   else {
  6543.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6544.   }
  6545.   xxUnion.xxLocalRecoverySet = 148; yyFormal_generic_list (& Formal_generic_list1, & xxUnion); /*  ']' */
  6546.   if (xxToken != 20 /* ']' */)
  6547.     xxRecoveryLiteral (20, 148, xxGlobalRecoverySet); /*  ']' */
  6548.   else {
  6549.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6550.   }
  6551. /* line 678 "eiffel_sig.ell" */
  6552.  Formal_generics0->Tree = ReverseTree(Formal_generic_list1.Tree);         
  6553. }
  6554.  
  6555. static void yyFormal_generic_list
  6556. # if defined __STDC__ | defined __cplusplus
  6557. (ParserSIG_tParsAttribute * Formal_generic_list0, xxtUnionPtr xxGlobalRecoverySet)
  6558. # else
  6559. (Formal_generic_list0, xxGlobalRecoverySet)
  6560. ParserSIG_tParsAttribute    * Formal_generic_list0;
  6561. xxtUnionPtr    xxGlobalRecoverySet;
  6562. # endif
  6563. {
  6564.   ParserSIG_tParsAttribute Formal_generic1;
  6565.   xxtUnion xxUnion;
  6566.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6567. /* line 680 "eiffel_sig.ell" */
  6568.  Formal_generic_list0->Tree = mFormal_generics0();                     
  6569.   for (;;) {
  6570.     if ((xxVerticalSet [xxToken + 324] & 1 << 4 /*  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */)) {
  6571.       for (;;) {
  6572.         xxUnion.xxLocalRecoverySet = 16; yyFormal_generic (& Formal_generic1, & xxUnion); /*  ',' */
  6573. /* line 681 "eiffel_sig.ell" */
  6574.  Formal_generic_list0->Tree = mFormal_generics1(Formal_generic1.Tree, 
  6575.                                         Formal_generic_list0->Tree);     
  6576.         if (! ((xxToken == 8 /* ',' */))) {
  6577.           if ((xxToken == 20 /* ']' */)) break;
  6578.           xxExpected (16, 76, xxGlobalRecoverySet); /*  ',' /  ',' BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  6579.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 324] & 1 << 4 /*  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */))) break;
  6580.         }
  6581.         if (xxToken != 8 /* ',' */)
  6582.           xxRecoveryLiteral (8, 76, xxGlobalRecoverySet); /*  ',' BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  6583.         else {
  6584.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6585.         }
  6586.       }
  6587.       break;
  6588.     } else if ((xxToken == 20 /* ']' */) || xxIsRepairMode) break;
  6589.     xxExpected (75, 75, xxGlobalRecoverySet); /*  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id /  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  6590.   }
  6591. }
  6592.  
  6593. static void yyFormal_generic
  6594. # if defined __STDC__ | defined __cplusplus
  6595. (ParserSIG_tParsAttribute * Formal_generic0, xxtUnionPtr xxGlobalRecoverySet)
  6596. # else
  6597. (Formal_generic0, xxGlobalRecoverySet)
  6598. ParserSIG_tParsAttribute    * Formal_generic0;
  6599. xxtUnionPtr    xxGlobalRecoverySet;
  6600. # endif
  6601. {
  6602.   ParserSIG_tParsAttribute Formal_generic_name1;
  6603.   ParserSIG_tParsAttribute Constraint1;
  6604.   xxtUnion xxUnion;
  6605.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6606.   xxUnion.xxLocalRecoverySet = 155; yyFormal_generic_name (& Formal_generic_name1, & xxUnion); /*  '->' */
  6607. /* line 686 "eiffel_sig.ell" */
  6608.  Formal_generic0->Tree = mFormal_generic(Formal_generic_name1.Tree, mConstraint0());     
  6609.   for (;;) {
  6610.     if ((xxToken == 15 /* '->' */)) {
  6611.       xxUnion.xxLocalRecoverySet = 0; yyConstraint (& Constraint1, & xxUnion); /*  */
  6612. /* line 687 "eiffel_sig.ell" */
  6613.  Formal_generic0->Tree->Formal_generic.Constraint = Constraint1.Tree;             
  6614.       break;
  6615.     } else if ((xxVerticalSet [xxToken + 648] & 1 << 4 /*  ',' ']' */) || xxIsRepairMode) break;
  6616.     xxExpected (155, 155, xxGlobalRecoverySet); /*  '->' /  '->' */
  6617.   }
  6618. }
  6619.  
  6620. static void yyFormal_generic_name
  6621. # if defined __STDC__ | defined __cplusplus
  6622. (ParserSIG_tParsAttribute * Formal_generic_name0, xxtUnionPtr xxGlobalRecoverySet)
  6623. # else
  6624. (Formal_generic_name0, xxGlobalRecoverySet)
  6625. ParserSIG_tParsAttribute    * Formal_generic_name0;
  6626. xxtUnionPtr    xxGlobalRecoverySet;
  6627. # endif
  6628. {
  6629.     EiffelScan_tScanAttribute BOOLEAN1;
  6630.     EiffelScan_tScanAttribute CHARACTER1;
  6631.     EiffelScan_tScanAttribute DOUBLE1;
  6632.     EiffelScan_tScanAttribute INTEGER1;
  6633.     EiffelScan_tScanAttribute _NONE1;
  6634.     EiffelScan_tScanAttribute REAL1;
  6635.     EiffelScan_tScanAttribute STRING1;
  6636.   ParserSIG_tParsAttribute Identifier1;
  6637.   xxtUnion xxUnion;
  6638.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6639.   for (;;) {
  6640.     switch (xxToken) {
  6641.     case 106 /* Id */ :; 
  6642.       xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  6643. /* line 690 "eiffel_sig.ell" */
  6644.  Formal_generic_name0->Tree = Identifier1.Tree;                     
  6645.       goto xx29;
  6646.     case 39 /* BOOLEAN */ :; 
  6647.       BOOLEAN1 =       EiffelScan_Attribute;
  6648.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6649. /* line 691 "eiffel_sig.ell" */
  6650.   Formal_generic_name0->Tree = m_BOOLEAN(BOOLEAN1.Position);                
  6651.       goto xx29;
  6652.     case 40 /* CHARACTER */ :; 
  6653.       CHARACTER1 =       EiffelScan_Attribute;
  6654.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6655. /* line 692 "eiffel_sig.ell" */
  6656.   Formal_generic_name0->Tree = m_CHARACTER(CHARACTER1.Position);            
  6657.       goto xx29;
  6658.     case 48 /* DOUBLE */ :; 
  6659.       DOUBLE1 =       EiffelScan_Attribute;
  6660.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6661. /* line 693 "eiffel_sig.ell" */
  6662.   Formal_generic_name0->Tree = m_DOUBLE(DOUBLE1.Position);                
  6663.       goto xx29;
  6664.     case 66 /* INTEGER */ :; 
  6665.       INTEGER1 =       EiffelScan_Attribute;
  6666.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6667. /* line 694 "eiffel_sig.ell" */
  6668.   Formal_generic_name0->Tree = m_INTEGER(INTEGER1.Position);                 
  6669.       goto xx29;
  6670.     case 72 /* _NONE */ :; 
  6671.       _NONE1 =       EiffelScan_Attribute;
  6672.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6673. /* line 695 "eiffel_sig.ell" */
  6674.   Formal_generic_name0->Tree = m_NONE(_NONE1.Position);                 
  6675.       goto xx29;
  6676.     case 78 /* REAL */ :; 
  6677.       REAL1 =       EiffelScan_Attribute;
  6678.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6679. /* line 696 "eiffel_sig.ell" */
  6680.   Formal_generic_name0->Tree = m_REAL(REAL1.Position);                 
  6681.       goto xx29;
  6682.     case 87 /* STRING */ :; 
  6683.       STRING1 =       EiffelScan_Attribute;
  6684.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6685. /* line 697 "eiffel_sig.ell" */
  6686.   Formal_generic_name0->Tree = m_STRING(STRING1.Position);                 
  6687.       goto xx29;
  6688.     case 41:;
  6689.     case 42:;
  6690.     case 43:;
  6691.     case 44:;
  6692.     case 45:;
  6693.     case 46:;
  6694.     case 47:;
  6695.     case 49:;
  6696.     case 50:;
  6697.     case 51:;
  6698.     case 52:;
  6699.     case 53:;
  6700.     case 54:;
  6701.     case 55:;
  6702.     case 56:;
  6703.     case 57:;
  6704.     case 58:;
  6705.     case 59:;
  6706.     case 60:;
  6707.     case 61:;
  6708.     case 62:;
  6709.     case 63:;
  6710.     case 64:;
  6711.     case 65:;
  6712.     case 67:;
  6713.     case 68:;
  6714.     case 69:;
  6715.     case 70:;
  6716.     case 71:;
  6717.     case 73:;
  6718.     case 74:;
  6719.     case 75:;
  6720.     case 76:;
  6721.     case 77:;
  6722.     case 79:;
  6723.     case 80:;
  6724.     case 81:;
  6725.     case 82:;
  6726.     case 83:;
  6727.     case 84:;
  6728.     case 85:;
  6729.     case 86:;
  6730.     case 88:;
  6731.     case 89:;
  6732.     case 90:;
  6733.     case 91:;
  6734.     case 92:;
  6735.     case 93:;
  6736.     case 94:;
  6737.     case 95:;
  6738.     case 96:;
  6739.     case 97:;
  6740.     case 98:;
  6741.     case 99:;
  6742.     case 100:;
  6743.     case 101:;
  6744.     case 102:;
  6745.     case 103:;
  6746.     case 104:;
  6747.     case 105:;
  6748.     default:
  6749.       if (xxIsRepairMode) {
  6750.         xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  6751. /* line 690 "eiffel_sig.ell" */
  6752.  Formal_generic_name0->Tree = Identifier1.Tree;                     
  6753.         goto xx29;
  6754.       }
  6755.       xxExpected (75, 75, xxGlobalRecoverySet); /*  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id /  BOOLEAN CHARACTER DOUBLE INTEGER _NONE REAL STRING Id */
  6756.     }
  6757.   }
  6758.   xx29:;
  6759. }
  6760.  
  6761. static void yyConstraint
  6762. # if defined __STDC__ | defined __cplusplus
  6763. (ParserSIG_tParsAttribute * Constraint0, xxtUnionPtr xxGlobalRecoverySet)
  6764. # else
  6765. (Constraint0, xxGlobalRecoverySet)
  6766. ParserSIG_tParsAttribute    * Constraint0;
  6767. xxtUnionPtr    xxGlobalRecoverySet;
  6768. # endif
  6769. {
  6770.   ParserSIG_tParsAttribute Class_type1;
  6771.   xxtUnion xxUnion;
  6772.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6773.   if (xxToken != 15 /* '->' */)
  6774.     xxRecoveryLiteral (15, 156, xxGlobalRecoverySet); /*  '->' expanded Id */
  6775.   else {
  6776.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6777.   }
  6778.   xxUnion.xxLocalRecoverySet = 0; yyClass_type (& Class_type1, & xxUnion); /*  */
  6779. /* line 700 "eiffel_sig.ell" */
  6780.  Constraint0->Tree = mConstraint1(Class_type1.Tree);                     
  6781. }
  6782.  
  6783. static void yyCompound
  6784. # if defined __STDC__ | defined __cplusplus
  6785. (ParserSIG_tParsAttribute * Compound0, xxtUnionPtr xxGlobalRecoverySet)
  6786. # else
  6787. (Compound0, xxGlobalRecoverySet)
  6788. ParserSIG_tParsAttribute    * Compound0;
  6789. xxtUnionPtr    xxGlobalRecoverySet;
  6790. # endif
  6791. {
  6792.   ParserSIG_tParsAttribute Instruction1;
  6793.   xxtUnion xxUnion;
  6794.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6795. /* line 704 "eiffel_sig.ell" */
  6796.  Compound0->Tree = mCompound0();                            
  6797.   for (;;) {
  6798.     if ((xxVerticalSet [xxToken + 648] & 1 << 5 /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */)) {
  6799.       xxUnion.xxLocalRecoverySet = 0; yyInstruction (& Instruction1, & xxUnion); /*  */
  6800. /* line 705 "eiffel_sig.ell" */
  6801.  if (Instruction1.Tree != NoTree) 
  6802.                     Compound0->Tree = mCompound1(Instruction1.Tree, Compound0->Tree);    
  6803.     } else if ((xxVerticalSet [xxToken + 648] & 1 << 6 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current else 'elseif' 'end' 'ensure' false 'invariant' 'old' 'rescue' Result 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  6804.     else
  6805.       xxExpected (106, 106, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id /  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  6806.   }
  6807. }
  6808.  
  6809. static void yyConditional
  6810. # if defined __STDC__ | defined __cplusplus
  6811. (ParserSIG_tParsAttribute * Conditional0, xxtUnionPtr xxGlobalRecoverySet)
  6812. # else
  6813. (Conditional0, xxGlobalRecoverySet)
  6814. ParserSIG_tParsAttribute    * Conditional0;
  6815. xxtUnionPtr    xxGlobalRecoverySet;
  6816. # endif
  6817. {
  6818.   ParserSIG_tParsAttribute Then_part_list1;
  6819.   ParserSIG_tParsAttribute Else_part1;
  6820.   xxtUnion xxUnion;
  6821.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6822.   if (xxToken != 60 /* 'if' */)
  6823.     xxRecoveryLiteral (60, 157, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current else 'end' false 'if' 'old' Result 'strip' true not Id */
  6824.   else {
  6825.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6826.   }
  6827.   xxUnion.xxLocalRecoverySet = 158; yyThen_part_list (& Then_part_list1, & xxUnion); /*  else 'end' */
  6828. /* line 711 "eiffel_sig.ell" */
  6829.  Conditional0->Tree = mConditional(ReverseTree(Then_part_list1.Tree), mCompound0());    
  6830.   for (;;) {
  6831.     if ((xxToken == 49 /* else */)) {
  6832.       xxUnion.xxLocalRecoverySet = 10; yyElse_part (& Else_part1, & xxUnion); /*  'end' */
  6833. /* line 712 "eiffel_sig.ell" */
  6834.  Conditional0->Tree->Conditional.Else_part = Else_part1.Tree;                
  6835.       break;
  6836.     } else if ((xxToken == 51 /* 'end' */) || xxIsRepairMode) break;
  6837.     xxExpected (158, 158, xxGlobalRecoverySet); /*  else 'end' /  else 'end' */
  6838.   }
  6839.   if (xxToken != 51 /* 'end' */)
  6840.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  6841.   else {
  6842.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6843.   }
  6844. }
  6845.  
  6846. static void yyThen_part_list
  6847. # if defined __STDC__ | defined __cplusplus
  6848. (ParserSIG_tParsAttribute * Then_part_list0, xxtUnionPtr xxGlobalRecoverySet)
  6849. # else
  6850. (Then_part_list0, xxGlobalRecoverySet)
  6851. ParserSIG_tParsAttribute    * Then_part_list0;
  6852. xxtUnionPtr    xxGlobalRecoverySet;
  6853. # endif
  6854. {
  6855.   ParserSIG_tParsAttribute Then_part1;
  6856.   xxtUnion xxUnion;
  6857.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6858. /* line 715 "eiffel_sig.ell" */
  6859.  Then_part_list0->Tree = mThen_part_list0();                        
  6860.   for (;;) {
  6861.     xxUnion.xxLocalRecoverySet = 159; yyThen_part (& Then_part1, & xxUnion); /*  'elseif' */
  6862. /* line 716 "eiffel_sig.ell" */
  6863.  Then_part_list0->Tree = mThen_part_list1(Then_part1.Tree, Then_part_list0->Tree);    
  6864.     if (! ((xxToken == 50 /* 'elseif' */))) {
  6865.       if ((xxVerticalSet [xxToken + 756] & 1 << 0 /*  else 'end' */)) break;
  6866.       xxExpected (159, 160, xxGlobalRecoverySet); /*  'elseif' /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'elseif' false 'old' Result 'strip' true not Id */
  6867.       if (! ((xxToken == 50 /* 'elseif' */) || (xxVerticalSet [xxToken + 648] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */))) break;
  6868.     }
  6869.     if (xxToken != 50 /* 'elseif' */)
  6870.       xxRecoveryLiteral (50, 160, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'elseif' false 'old' Result 'strip' true not Id */
  6871.     else {
  6872.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6873.     }
  6874.   }
  6875. }
  6876.  
  6877. static void yyThen_part
  6878. # if defined __STDC__ | defined __cplusplus
  6879. (ParserSIG_tParsAttribute * Then_part0, xxtUnionPtr xxGlobalRecoverySet)
  6880. # else
  6881. (Then_part0, xxGlobalRecoverySet)
  6882. ParserSIG_tParsAttribute    * Then_part0;
  6883. xxtUnionPtr    xxGlobalRecoverySet;
  6884. # endif
  6885. {
  6886.     EiffelScan_tScanAttribute then1;
  6887.   ParserSIG_tParsAttribute Compound1;
  6888.   ParserSIG_tParsAttribute Boolean_expression1;
  6889.   xxtUnion xxUnion;
  6890.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6891.   xxUnion.xxLocalRecoverySet = 161; yyBoolean_expression (& Boolean_expression1, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry then Id */
  6892.   if (xxToken != 89 /* then */)
  6893.     xxRecoveryTerminal (89, 161, xxGlobalRecoverySet, & then1); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry then Id */
  6894.   else {
  6895.     then1 =   EiffelScan_Attribute;
  6896.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6897.   }
  6898.   xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  6899. /* line 721 "eiffel_sig.ell" */
  6900.  Then_part0->Tree = mThen_part(Boolean_expression1.Tree, ReverseTree(Compound1.Tree));    
  6901. }
  6902.  
  6903. static void yyElse_part
  6904. # if defined __STDC__ | defined __cplusplus
  6905. (ParserSIG_tParsAttribute * Else_part0, xxtUnionPtr xxGlobalRecoverySet)
  6906. # else
  6907. (Else_part0, xxGlobalRecoverySet)
  6908. ParserSIG_tParsAttribute    * Else_part0;
  6909. xxtUnionPtr    xxGlobalRecoverySet;
  6910. # endif
  6911. {
  6912.     EiffelScan_tScanAttribute else1;
  6913.   ParserSIG_tParsAttribute Compound1;
  6914.   xxtUnion xxUnion;
  6915.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6916.   if (xxToken != 49 /* else */)
  6917.     xxRecoveryTerminal (49, 162, xxGlobalRecoverySet, & else1); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' else 'from' 'if' 'inspect' Result retry Id */
  6918.   else {
  6919.     else1 =   EiffelScan_Attribute;
  6920.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6921.   }
  6922.   xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  6923. /* line 724 "eiffel_sig.ell" */
  6924.  Else_part0->Tree = ReverseTree(Compound1.Tree);                    
  6925. }
  6926.  
  6927. static void yyMulti_branch
  6928. # if defined __STDC__ | defined __cplusplus
  6929. (ParserSIG_tParsAttribute * Multi_branch0, xxtUnionPtr xxGlobalRecoverySet)
  6930. # else
  6931. (Multi_branch0, xxGlobalRecoverySet)
  6932. ParserSIG_tParsAttribute    * Multi_branch0;
  6933. xxtUnionPtr    xxGlobalRecoverySet;
  6934. # endif
  6935. {
  6936.   ParserSIG_tParsAttribute Expression1;
  6937.   ParserSIG_tParsAttribute Else_part1;
  6938.   ParserSIG_tParsAttribute When_part_list1;
  6939.   xxtUnion xxUnion;
  6940.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6941.   if (xxToken != 65 /* 'inspect' */)
  6942.     xxRecoveryLiteral (65, 163, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current else 'end' false 'inspect' 'old' Result 'strip' true 'when' not Id */
  6943.   else {
  6944.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6945.   }
  6946.   xxUnion.xxLocalRecoverySet = 164; yyExpression (& Expression1, & xxUnion); /*  else 'end' 'when' */
  6947. /* line 729 "eiffel_sig.ell" */
  6948.  Multi_branch0->Tree = mMulti_branch(Expression1.Tree, mWhen_part_list0(), mCompound0());
  6949.   for (;;) {
  6950.     if ((xxToken == 95 /* 'when' */)) {
  6951.       xxUnion.xxLocalRecoverySet = 158; yyWhen_part_list (& When_part_list1, & xxUnion); /*  else 'end' */
  6952. /* line 730 "eiffel_sig.ell" */
  6953.  Multi_branch0->Tree->Multi_branch.When_part_list = ReverseTree(When_part_list1.Tree);    
  6954.       break;
  6955.     } else if ((xxVerticalSet [xxToken + 756] & 1 << 0 /*  else 'end' */) || xxIsRepairMode) break;
  6956.     xxExpected (164, 164, xxGlobalRecoverySet); /*  else 'end' 'when' /  else 'end' 'when' */
  6957.   }
  6958.   for (;;) {
  6959.     if ((xxToken == 49 /* else */)) {
  6960.       xxUnion.xxLocalRecoverySet = 10; yyElse_part (& Else_part1, & xxUnion); /*  'end' */
  6961. /* line 731 "eiffel_sig.ell" */
  6962.  Multi_branch0->Tree->Multi_branch.Else_part = Else_part1.Tree;            
  6963.       break;
  6964.     } else if ((xxToken == 51 /* 'end' */) || xxIsRepairMode) break;
  6965.     xxExpected (158, 158, xxGlobalRecoverySet); /*  else 'end' /  else 'end' */
  6966.   }
  6967.   if (xxToken != 51 /* 'end' */)
  6968.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  6969.   else {
  6970.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6971.   }
  6972. }
  6973.  
  6974. static void yyWhen_part_list
  6975. # if defined __STDC__ | defined __cplusplus
  6976. (ParserSIG_tParsAttribute * When_part_list0, xxtUnionPtr xxGlobalRecoverySet)
  6977. # else
  6978. (When_part_list0, xxGlobalRecoverySet)
  6979. ParserSIG_tParsAttribute    * When_part_list0;
  6980. xxtUnionPtr    xxGlobalRecoverySet;
  6981. # endif
  6982. {
  6983.   ParserSIG_tParsAttribute When_part1;
  6984.   xxtUnion xxUnion;
  6985.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  6986. /* line 734 "eiffel_sig.ell" */
  6987.  When_part_list0->Tree = mWhen_part_list0();                        
  6988.   if (xxToken != 95 /* 'when' */)
  6989.     xxRecoveryLiteral (95, 165, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus false then true 'when' Id */
  6990.   else {
  6991.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  6992.   }
  6993.   for (;;) {
  6994.     xxUnion.xxLocalRecoverySet = 166; yyWhen_part (& When_part1, & xxUnion); /*  'when' */
  6995. /* line 735 "eiffel_sig.ell" */
  6996.  When_part_list0->Tree = mWhen_part_list1(When_part1.Tree, When_part_list0->Tree);    
  6997.     if (! ((xxToken == 95 /* 'when' */))) {
  6998.       if ((xxVerticalSet [xxToken + 756] & 1 << 0 /*  else 'end' */)) break;
  6999.       xxExpected (166, 165, xxGlobalRecoverySet); /*  'when' /  Character_constant Bit_sequence Integer Real Manifest_string plus minus false then true 'when' Id */
  7000.       if (! ((xxToken == 95 /* 'when' */) || (xxVerticalSet [xxToken + 756] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus false then true 'when' Id */))) break;
  7001.     }
  7002.     if (xxToken != 95 /* 'when' */)
  7003.       xxRecoveryLiteral (95, 165, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus false then true 'when' Id */
  7004.     else {
  7005.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7006.     }
  7007.   }
  7008. }
  7009.  
  7010. static void yyWhen_part
  7011. # if defined __STDC__ | defined __cplusplus
  7012. (ParserSIG_tParsAttribute * When_part0, xxtUnionPtr xxGlobalRecoverySet)
  7013. # else
  7014. (When_part0, xxGlobalRecoverySet)
  7015. ParserSIG_tParsAttribute    * When_part0;
  7016. xxtUnionPtr    xxGlobalRecoverySet;
  7017. # endif
  7018. {
  7019.     EiffelScan_tScanAttribute then1;
  7020.   ParserSIG_tParsAttribute Compound1;
  7021.   ParserSIG_tParsAttribute Choices1;
  7022.   xxtUnion xxUnion;
  7023.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7024.   xxUnion.xxLocalRecoverySet = 161; yyChoices (& Choices1, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry then Id */
  7025.   if (xxToken != 89 /* then */)
  7026.     xxRecoveryTerminal (89, 161, xxGlobalRecoverySet, & then1); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry then Id */
  7027.   else {
  7028.     then1 =   EiffelScan_Attribute;
  7029.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7030.   }
  7031.   xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  7032. /* line 739 "eiffel_sig.ell" */
  7033.  When_part0->Tree = mWhen_part(ReverseTree(Choices1.Tree), ReverseTree(Compound1.Tree));
  7034. }
  7035.  
  7036. static void yyChoices
  7037. # if defined __STDC__ | defined __cplusplus
  7038. (ParserSIG_tParsAttribute * Choices0, xxtUnionPtr xxGlobalRecoverySet)
  7039. # else
  7040. (Choices0, xxGlobalRecoverySet)
  7041. ParserSIG_tParsAttribute    * Choices0;
  7042. xxtUnionPtr    xxGlobalRecoverySet;
  7043. # endif
  7044. {
  7045.   ParserSIG_tParsAttribute Choice1;
  7046.   xxtUnion xxUnion;
  7047.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7048. /* line 741 "eiffel_sig.ell" */
  7049.  Choices0->Tree = mChoices0();                                
  7050.   for (;;) {
  7051.     if ((xxVerticalSet [xxToken + 108] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */)) {
  7052.       for (;;) {
  7053.         xxUnion.xxLocalRecoverySet = 16; yyChoice (& Choice1, & xxUnion); /*  ',' */
  7054. /* line 742 "eiffel_sig.ell" */
  7055.  Choices0->Tree = mChoices1(Choice1.Tree, Choices0->Tree);                
  7056.         if (! ((xxToken == 8 /* ',' */))) {
  7057.           if ((xxToken == 89 /* then */)) break;
  7058.           xxExpected (16, 17, xxGlobalRecoverySet); /*  ',' /  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */
  7059.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 108] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */))) break;
  7060.         }
  7061.         if (xxToken != 8 /* ',' */)
  7062.           xxRecoveryLiteral (8, 17, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */
  7063.         else {
  7064.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7065.         }
  7066.       }
  7067.       break;
  7068.     } else if ((xxToken == 89 /* then */) || xxIsRepairMode) break;
  7069.     xxExpected (17, 17, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id /  Character_constant Bit_sequence Integer Real Manifest_string ',' plus minus false true Id */
  7070.   }
  7071. }
  7072.  
  7073. static void yyChoice
  7074. # if defined __STDC__ | defined __cplusplus
  7075. (ParserSIG_tParsAttribute * Choice0, xxtUnionPtr xxGlobalRecoverySet)
  7076. # else
  7077. (Choice0, xxGlobalRecoverySet)
  7078. ParserSIG_tParsAttribute    * Choice0;
  7079. xxtUnionPtr    xxGlobalRecoverySet;
  7080. # endif
  7081. {
  7082.     EiffelScan_tScanAttribute Character_constant1, Character_constant2;
  7083.     EiffelScan_tScanAttribute Manifest_string1;
  7084.   ParserSIG_tParsAttribute Identifier1;
  7085.   ParserSIG_tParsAttribute Number_constant1, Number_constant2;
  7086.   ParserSIG_tParsAttribute Boolean_constant1;
  7087.   ParserSIG_tParsAttribute Bit_constant1;
  7088.   xxtUnion xxUnion;
  7089.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7090.   for (;;) {
  7091.     switch (xxToken) {
  7092.     case 1 /* Character_constant */ :; 
  7093.       Character_constant1 =       EiffelScan_Attribute;
  7094.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7095. /* line 746 "eiffel_sig.ell" */
  7096.  Choice0->Tree = mVal(mCh(Character_constant1.Char, Character_constant1.Position));    
  7097.       for (;;) {
  7098.         if ((xxToken == 16 /* '..' */)) {
  7099.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7100.           if (xxToken != 1 /* Character_constant */)
  7101.             xxRecoveryTerminal (1, 169, xxGlobalRecoverySet, & Character_constant2); /*  Character_constant */
  7102.           else {
  7103.             Character_constant2 =           EiffelScan_Attribute;
  7104.             xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7105.           }
  7106. /* line 747 "eiffel_sig.ell" */
  7107.  Choice0->Tree = mInterval(Choice0->Tree, mCh(Character_constant2.Char, 
  7108.                                         Character_constant2.Position));    
  7109.           break;
  7110.         } else if ((xxVerticalSet [xxToken + 756] & 1 << 2 /*  ',' then */) || xxIsRepairMode) break;
  7111.         xxExpected (168, 168, xxGlobalRecoverySet); /*  '..' /  '..' */
  7112.       }
  7113.       goto xx30;
  7114.     case 3 /* Integer */ :; 
  7115.     case 4 /* Real */ :; 
  7116.     case 8 /* ',' */ :; 
  7117.     case 16 /* '..' */ :; 
  7118.     case 29 /* plus */ :; 
  7119.     case 30 /* minus */ :; 
  7120.     case 89 /* then */ :; 
  7121.       xxUnion.xxLocalRecoverySet = 168; yyNumber_constant (& Number_constant1, & xxUnion); /*  '..' */
  7122. /* line 750 "eiffel_sig.ell" */
  7123.  Choice0->Tree = mVal(Number_constant1.Tree);                        
  7124.       for (;;) {
  7125.         if ((xxToken == 16 /* '..' */)) {
  7126.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7127.           xxUnion.xxLocalRecoverySet = 0; yyNumber_constant (& Number_constant2, & xxUnion); /*  */
  7128. /* line 751 "eiffel_sig.ell" */
  7129.  Choice0->Tree = mInterval(Number_constant1.Tree, Number_constant2.Tree);         
  7130.           break;
  7131.         } else if ((xxVerticalSet [xxToken + 756] & 1 << 2 /*  ',' then */) || xxIsRepairMode) break;
  7132.         xxExpected (168, 168, xxGlobalRecoverySet); /*  '..' /  '..' */
  7133.       }
  7134.       goto xx30;
  7135.     case 56 /* false */ :; 
  7136.     case 90 /* true */ :; 
  7137.       xxUnion.xxLocalRecoverySet = 0; yyBoolean_constant (& Boolean_constant1, & xxUnion); /*  */
  7138. /* line 752 "eiffel_sig.ell" */
  7139.  Choice0->Tree = mVal(Boolean_constant1.Tree);                        
  7140.       goto xx30;
  7141.     case 5 /* Manifest_string */ :; 
  7142.       Manifest_string1 =       EiffelScan_Attribute;
  7143.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7144. /* line 753 "eiffel_sig.ell" */
  7145.  Choice0->Tree = mVal(mString(Manifest_string1.StringRef, Manifest_string1.Position)); 
  7146.       goto xx30;
  7147.     case 2 /* Bit_sequence */ :; 
  7148.       xxUnion.xxLocalRecoverySet = 0; yyBit_constant (& Bit_constant1, & xxUnion); /*  */
  7149. /* line 754 "eiffel_sig.ell" */
  7150.  Choice0->Tree = mVal(Bit_constant1.Tree);                        
  7151.       goto xx30;
  7152.     case 106 /* Id */ :; 
  7153.       xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  7154. /* line 755 "eiffel_sig.ell" */
  7155.  Choice0->Tree = mVal(Identifier1.Tree);                        
  7156.       goto xx30;
  7157.     case 6:;
  7158.     case 7:;
  7159.     case 9:;
  7160.     case 10:;
  7161.     case 11:;
  7162.     case 12:;
  7163.     case 13:;
  7164.     case 14:;
  7165.     case 15:;
  7166.     case 17:;
  7167.     case 18:;
  7168.     case 19:;
  7169.     case 20:;
  7170.     case 21:;
  7171.     case 22:;
  7172.     case 23:;
  7173.     case 24:;
  7174.     case 25:;
  7175.     case 26:;
  7176.     case 27:;
  7177.     case 28:;
  7178.     case 31:;
  7179.     case 32:;
  7180.     case 33:;
  7181.     case 34:;
  7182.     case 35:;
  7183.     case 36:;
  7184.     case 37:;
  7185.     case 38:;
  7186.     case 39:;
  7187.     case 40:;
  7188.     case 41:;
  7189.     case 42:;
  7190.     case 43:;
  7191.     case 44:;
  7192.     case 45:;
  7193.     case 46:;
  7194.     case 47:;
  7195.     case 48:;
  7196.     case 49:;
  7197.     case 50:;
  7198.     case 51:;
  7199.     case 52:;
  7200.     case 53:;
  7201.     case 54:;
  7202.     case 55:;
  7203.     case 57:;
  7204.     case 58:;
  7205.     case 59:;
  7206.     case 60:;
  7207.     case 61:;
  7208.     case 62:;
  7209.     case 63:;
  7210.     case 64:;
  7211.     case 65:;
  7212.     case 66:;
  7213.     case 67:;
  7214.     case 68:;
  7215.     case 69:;
  7216.     case 70:;
  7217.     case 71:;
  7218.     case 72:;
  7219.     case 73:;
  7220.     case 74:;
  7221.     case 75:;
  7222.     case 76:;
  7223.     case 77:;
  7224.     case 78:;
  7225.     case 79:;
  7226.     case 80:;
  7227.     case 81:;
  7228.     case 82:;
  7229.     case 83:;
  7230.     case 84:;
  7231.     case 85:;
  7232.     case 86:;
  7233.     case 87:;
  7234.     case 88:;
  7235.     case 91:;
  7236.     case 92:;
  7237.     case 93:;
  7238.     case 94:;
  7239.     case 95:;
  7240.     case 96:;
  7241.     case 97:;
  7242.     case 98:;
  7243.     case 99:;
  7244.     case 100:;
  7245.     case 101:;
  7246.     case 102:;
  7247.     case 103:;
  7248.     case 104:;
  7249.     case 105:;
  7250.     default:
  7251.       if (xxIsRepairMode) {
  7252.         if (xxToken != 1 /* Character_constant */)
  7253.           xxRecoveryTerminal (1, 167, xxGlobalRecoverySet, & Character_constant1); /*  Character_constant '..' */
  7254.         else {
  7255.           Character_constant1 =         EiffelScan_Attribute;
  7256.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7257.         }
  7258. /* line 746 "eiffel_sig.ell" */
  7259.  Choice0->Tree = mVal(mCh(Character_constant1.Char, Character_constant1.Position));    
  7260.         for (;;) {
  7261.           if ((xxToken == 16 /* '..' */)) {
  7262.             xxToken =             EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7263.             if (xxToken != 1 /* Character_constant */)
  7264.               xxRecoveryTerminal (1, 169, xxGlobalRecoverySet, & Character_constant2); /*  Character_constant */
  7265.             else {
  7266.               Character_constant2 =             EiffelScan_Attribute;
  7267.               xxToken =             EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7268.             }
  7269. /* line 747 "eiffel_sig.ell" */
  7270.  Choice0->Tree = mInterval(Choice0->Tree, mCh(Character_constant2.Char, 
  7271.                                         Character_constant2.Position));    
  7272.             break;
  7273.           } else if ((xxVerticalSet [xxToken + 756] & 1 << 2 /*  ',' then */) || xxIsRepairMode) break;
  7274.           xxExpected (168, 168, xxGlobalRecoverySet); /*  '..' /  '..' */
  7275.         }
  7276.         goto xx30;
  7277.       }
  7278. xxUnexpected (171, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string '..' plus minus false true Id */
  7279.     }
  7280.   }
  7281.   xx30:;
  7282. }
  7283.  
  7284. static void yyLoop
  7285. # if defined __STDC__ | defined __cplusplus
  7286. (ParserSIG_tParsAttribute * Loop0, xxtUnionPtr xxGlobalRecoverySet)
  7287. # else
  7288. (Loop0, xxGlobalRecoverySet)
  7289. ParserSIG_tParsAttribute    * Loop0;
  7290. xxtUnionPtr    xxGlobalRecoverySet;
  7291. # endif
  7292. {
  7293.   ParserSIG_tParsAttribute Invariant1;
  7294.   ParserSIG_tParsAttribute Variant1;
  7295.   ParserSIG_tParsAttribute Initialization1;
  7296.   ParserSIG_tParsAttribute Loop_body1;
  7297.   xxtUnion xxUnion;
  7298.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7299.   xxUnion.xxLocalRecoverySet = 172; yyInitialization (& Initialization1, & xxUnion); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'end' false 'invariant' 'old' Result 'strip' true 'until' 'variant' not Id */
  7300. /* line 760 "eiffel_sig.ell" */
  7301.  Loop0->Tree = mLoop(Initialization1.Tree, mCondition0(), mAssertion_clause0(), mLoop_body0());
  7302.   for (;;) {
  7303.     if ((xxToken == 67 /* 'invariant' */)) {
  7304.       xxUnion.xxLocalRecoverySet = 174; yyInvariant (& Invariant1, & xxUnion); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'end' false 'old' Result 'strip' true 'until' 'variant' not Id */
  7305. /* line 761 "eiffel_sig.ell" */
  7306.  Loop0->Tree->Loop.Invariant = Invariant1.Tree;                    
  7307.       break;
  7308.     } else if ((xxVerticalSet [xxToken + 756] & 1 << 3 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true 'until' 'variant' not Id */) || xxIsRepairMode) break;
  7309.     xxExpected (173, 172, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'invariant' 'old' Result 'strip' true 'until' 'variant' not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'end' false 'invariant' 'old' Result 'strip' true 'until' 'variant' not Id */
  7310.   }
  7311.   for (;;) {
  7312.     if ((xxVerticalSet [xxToken + 756] & 1 << 4 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true 'variant' not Id */)) {
  7313.       xxUnion.xxLocalRecoverySet = 176; yyVariant (& Variant1, & xxUnion); /*  'end' 'until' */
  7314. /* line 762 "eiffel_sig.ell" */
  7315.  Loop0->Tree->Loop.Variant = Variant1.Tree;                        
  7316.       break;
  7317.     } else if ((xxToken == 93 /* 'until' */) || xxIsRepairMode) break;
  7318.     xxExpected (175, 174, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true 'until' 'variant' not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current 'end' false 'old' Result 'strip' true 'until' 'variant' not Id */
  7319.   }
  7320.   xxUnion.xxLocalRecoverySet = 10; yyLoop_body (& Loop_body1, & xxUnion); /*  'end' */
  7321. /* line 763 "eiffel_sig.ell" */
  7322.  Loop0->Tree->Loop.Loop_body = Loop_body1.Tree;                    
  7323.   if (xxToken != 51 /* 'end' */)
  7324.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  7325.   else {
  7326.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7327.   }
  7328. }
  7329.  
  7330. static void yyInitialization
  7331. # if defined __STDC__ | defined __cplusplus
  7332. (ParserSIG_tParsAttribute * Initialization0, xxtUnionPtr xxGlobalRecoverySet)
  7333. # else
  7334. (Initialization0, xxGlobalRecoverySet)
  7335. ParserSIG_tParsAttribute    * Initialization0;
  7336. xxtUnionPtr    xxGlobalRecoverySet;
  7337. # endif
  7338. {
  7339.   ParserSIG_tParsAttribute Compound1;
  7340.   xxtUnion xxUnion;
  7341.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7342.   if (xxToken != 58 /* 'from' */)
  7343.     xxRecoveryLiteral (58, 106, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7344.   else {
  7345.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7346.   }
  7347.   xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  7348. /* line 770 "eiffel_sig.ell" */
  7349.  Initialization0->Tree = ReverseTree(Compound1.Tree);                    
  7350. }
  7351.  
  7352. static void yyLoop_body
  7353. # if defined __STDC__ | defined __cplusplus
  7354. (ParserSIG_tParsAttribute * Loop_body0, xxtUnionPtr xxGlobalRecoverySet)
  7355. # else
  7356. (Loop_body0, xxGlobalRecoverySet)
  7357. ParserSIG_tParsAttribute    * Loop_body0;
  7358. xxtUnionPtr    xxGlobalRecoverySet;
  7359. # endif
  7360. {
  7361.   ParserSIG_tParsAttribute Compound1;
  7362.   ParserSIG_tParsAttribute Exit1;
  7363.   xxtUnion xxUnion;
  7364.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7365.   xxUnion.xxLocalRecoverySet = 177; yyExit (& Exit1, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' 'loop' Result retry Id */
  7366.   if (xxToken != 71 /* 'loop' */)
  7367.     xxRecoveryLiteral (71, 177, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' 'loop' Result retry Id */
  7368.   else {
  7369.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7370.   }
  7371.   xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  7372. /* line 773 "eiffel_sig.ell" */
  7373.  Loop_body0->Tree = mLoop_body1(Exit1.Tree, ReverseTree(Compound1.Tree));        
  7374. }
  7375.  
  7376. static void yyExit
  7377. # if defined __STDC__ | defined __cplusplus
  7378. (ParserSIG_tParsAttribute * Exit0, xxtUnionPtr xxGlobalRecoverySet)
  7379. # else
  7380. (Exit0, xxGlobalRecoverySet)
  7381. ParserSIG_tParsAttribute    * Exit0;
  7382. xxtUnionPtr    xxGlobalRecoverySet;
  7383. # endif
  7384. {
  7385.   ParserSIG_tParsAttribute Boolean_expression1;
  7386.   xxtUnion xxUnion;
  7387.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7388.   if (xxToken != 93 /* 'until' */)
  7389.     xxRecoveryLiteral (93, 178, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true 'until' not Id */
  7390.   else {
  7391.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7392.   }
  7393.   xxUnion.xxLocalRecoverySet = 0; yyBoolean_expression (& Boolean_expression1, & xxUnion); /*  */
  7394. /* line 776 "eiffel_sig.ell" */
  7395.  Exit0->Tree = Boolean_expression1.Tree;                    
  7396. }
  7397.  
  7398. static void yyDebug
  7399. # if defined __STDC__ | defined __cplusplus
  7400. (ParserSIG_tParsAttribute * Debug0, xxtUnionPtr xxGlobalRecoverySet)
  7401. # else
  7402. (Debug0, xxGlobalRecoverySet)
  7403. ParserSIG_tParsAttribute    * Debug0;
  7404. xxtUnionPtr    xxGlobalRecoverySet;
  7405. # endif
  7406. {
  7407.   ParserSIG_tParsAttribute Compound1;
  7408.   ParserSIG_tParsAttribute Keys_or_qual_call1;
  7409.   xxtUnion xxUnion;
  7410.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7411.   if (xxToken != 45 /* 'debug' */)
  7412.     xxRecoveryLiteral (45, 179, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'end' 'from' 'if' 'inspect' Result retry Id */
  7413.   else {
  7414.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7415.   }
  7416.   for (;;) {
  7417.     switch (xxToken) {
  7418.     case 17 /* '(' */ :; 
  7419.       xxUnion.xxLocalRecoverySet = 10; yyKeys_or_qual_call (& Keys_or_qual_call1, & xxUnion); /*  'end' */
  7420. /* line 781 "eiffel_sig.ell" */
  7421.  Debug0->Tree = Keys_or_qual_call1.Tree;                    
  7422.       goto xx31;
  7423.     case 1 /* Character_constant */ :; 
  7424.     case 5 /* Manifest_string */ :; 
  7425.     case 7 /* ';' */ :; 
  7426.     case 11 /* '!' */ :; 
  7427.     case 12 /* '!!' */ :; 
  7428.     case 41 /* 'check' */ :; 
  7429.     case 44 /* Current */ :; 
  7430.     case 45 /* 'debug' */ :; 
  7431.     case 51 /* 'end' */ :; 
  7432.     case 58 /* 'from' */ :; 
  7433.     case 60 /* 'if' */ :; 
  7434.     case 65 /* 'inspect' */ :; 
  7435.     case 83 /* Result */ :; 
  7436.     case 84 /* retry */ :; 
  7437.     case 106 /* Id */ :; 
  7438.       xxUnion.xxLocalRecoverySet = 10; yyCompound (& Compound1, & xxUnion); /*  'end' */
  7439. /* line 782 "eiffel_sig.ell" */
  7440.  Debug0->Tree = mDebug(mnolist(), ReverseTree(Compound1.Tree));        
  7441.       goto xx31;
  7442.     case 2:;
  7443.     case 3:;
  7444.     case 4:;
  7445.     case 6:;
  7446.     case 8:;
  7447.     case 9:;
  7448.     case 10:;
  7449.     case 13:;
  7450.     case 14:;
  7451.     case 15:;
  7452.     case 16:;
  7453.     case 18:;
  7454.     case 19:;
  7455.     case 20:;
  7456.     case 21:;
  7457.     case 22:;
  7458.     case 23:;
  7459.     case 24:;
  7460.     case 25:;
  7461.     case 26:;
  7462.     case 27:;
  7463.     case 28:;
  7464.     case 29:;
  7465.     case 30:;
  7466.     case 31:;
  7467.     case 32:;
  7468.     case 33:;
  7469.     case 34:;
  7470.     case 35:;
  7471.     case 36:;
  7472.     case 37:;
  7473.     case 38:;
  7474.     case 39:;
  7475.     case 40:;
  7476.     case 42:;
  7477.     case 43:;
  7478.     case 46:;
  7479.     case 47:;
  7480.     case 48:;
  7481.     case 49:;
  7482.     case 50:;
  7483.     case 52:;
  7484.     case 53:;
  7485.     case 54:;
  7486.     case 55:;
  7487.     case 56:;
  7488.     case 57:;
  7489.     case 59:;
  7490.     case 61:;
  7491.     case 62:;
  7492.     case 63:;
  7493.     case 64:;
  7494.     case 66:;
  7495.     case 67:;
  7496.     case 68:;
  7497.     case 69:;
  7498.     case 70:;
  7499.     case 71:;
  7500.     case 72:;
  7501.     case 73:;
  7502.     case 74:;
  7503.     case 75:;
  7504.     case 76:;
  7505.     case 77:;
  7506.     case 78:;
  7507.     case 79:;
  7508.     case 80:;
  7509.     case 81:;
  7510.     case 82:;
  7511.     case 85:;
  7512.     case 86:;
  7513.     case 87:;
  7514.     case 88:;
  7515.     case 89:;
  7516.     case 90:;
  7517.     case 91:;
  7518.     case 92:;
  7519.     case 93:;
  7520.     case 94:;
  7521.     case 95:;
  7522.     case 96:;
  7523.     case 97:;
  7524.     case 98:;
  7525.     case 99:;
  7526.     case 100:;
  7527.     case 101:;
  7528.     case 102:;
  7529.     case 103:;
  7530.     case 104:;
  7531.     case 105:;
  7532.     default:
  7533.       if (xxIsRepairMode) {
  7534.         xxUnion.xxLocalRecoverySet = 10; yyCompound (& Compound1, & xxUnion); /*  'end' */
  7535. /* line 782 "eiffel_sig.ell" */
  7536.  Debug0->Tree = mDebug(mnolist(), ReverseTree(Compound1.Tree));        
  7537.         goto xx31;
  7538.       }
  7539.       xxExpected (179, 179, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'end' 'from' 'if' 'inspect' Result retry Id /  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'end' 'from' 'if' 'inspect' Result retry Id */
  7540.     }
  7541.   }
  7542.   xx31:;
  7543.   if (xxToken != 51 /* 'end' */)
  7544.     xxRecoveryLiteral (51, 10, xxGlobalRecoverySet); /*  'end' */
  7545.   else {
  7546.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7547.   }
  7548. }
  7549.  
  7550. static void yyKeys_or_qual_call
  7551. # if defined __STDC__ | defined __cplusplus
  7552. (ParserSIG_tParsAttribute * Keys_or_qual_call0, xxtUnionPtr xxGlobalRecoverySet)
  7553. # else
  7554. (Keys_or_qual_call0, xxGlobalRecoverySet)
  7555. ParserSIG_tParsAttribute    * Keys_or_qual_call0;
  7556. xxtUnionPtr    xxGlobalRecoverySet;
  7557. # endif
  7558. {
  7559.   ParserSIG_tParsAttribute Compound1, Compound2, Compound3;
  7560.   ParserSIG_tParsAttribute Call_chain1, Call_chain2, Call_chain3;
  7561.   ParserSIG_tParsAttribute Expression1;
  7562.   ParserSIG_tParsAttribute Expr_tail1;
  7563.   ParserSIG_tParsAttribute String1;
  7564.   ParserSIG_tParsAttribute String_list1;
  7565.   ParserSIG_tParsAttribute One_compound1, One_compound2, One_compound3;
  7566.   xxtUnion xxUnion;
  7567.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  7568.   if (xxToken != 17 /* '(' */)
  7569.     xxRecoveryLiteral (17, 180, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' ')' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  7570.   else {
  7571.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7572.   }
  7573.   for (;;) {
  7574.     switch (xxToken) {
  7575.     case 5 /* Manifest_string */ :; 
  7576.       xxUnion.xxLocalRecoverySet = 181; yyString (& String1, & xxUnion); /*  Free_op ',' Eq Not_eq ')' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  7577.       for (;;) {
  7578.         switch (xxToken) {
  7579.         case 8 /* ',' */ :; 
  7580.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7581.           xxUnion.xxLocalRecoverySet = 183; yyString_list (& String_list1, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7582.           if (xxToken != 18 /* ')' */)
  7583.             xxRecoveryLiteral (18, 183, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7584.           else {
  7585.             xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7586.           }
  7587.           xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  7588. /* line 789 "eiffel_sig.ell" */
  7589.  Keys_or_qual_call0->Tree = mDebug(mlist(String1.Tree, String_list1.Tree), 
  7590.                                         ReverseTree(Compound1.Tree));    
  7591.           goto xx33;
  7592.         case 18 /* ')' */ :; 
  7593.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7594.           for (;;) {
  7595.             switch (xxToken) {
  7596.             case 10 /* '.' */ :; 
  7597.               xxToken =               EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7598.               xxUnion.xxLocalRecoverySet = 106; yyCall_chain (& Call_chain1, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7599.               xxUnion.xxLocalRecoverySet = 0; yyOne_compound (& One_compound1, & xxUnion); /*  */
  7600. /* line 793 "eiffel_sig.ell" */
  7601.  Keys_or_qual_call0->Tree = mDebug(mnolist(), mCompound1(mCall(String1.Tree, 
  7602.                             Call_chain1.Tree), ReverseTree(One_compound1.Tree)) );  
  7603.               goto xx34;
  7604.             case 1 /* Character_constant */ :; 
  7605.             case 5 /* Manifest_string */ :; 
  7606.             case 7 /* ';' */ :; 
  7607.             case 11 /* '!' */ :; 
  7608.             case 12 /* '!!' */ :; 
  7609.             case 17 /* '(' */ :; 
  7610.             case 41 /* 'check' */ :; 
  7611.             case 44 /* Current */ :; 
  7612.             case 45 /* 'debug' */ :; 
  7613.             case 51 /* 'end' */ :; 
  7614.             case 58 /* 'from' */ :; 
  7615.             case 60 /* 'if' */ :; 
  7616.             case 65 /* 'inspect' */ :; 
  7617.             case 83 /* Result */ :; 
  7618.             case 84 /* retry */ :; 
  7619.             case 106 /* Id */ :; 
  7620.               xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound2, & xxUnion); /*  */
  7621. /* line 797 "eiffel_sig.ell" */
  7622.  Keys_or_qual_call0->Tree = mDebug(mlist(String1.Tree, mnolist()), ReverseTree(Compound2.Tree)); 
  7623.               goto xx34;
  7624.             case 2:;
  7625.             case 3:;
  7626.             case 4:;
  7627.             case 6:;
  7628.             case 8:;
  7629.             case 9:;
  7630.             case 13:;
  7631.             case 14:;
  7632.             case 15:;
  7633.             case 16:;
  7634.             case 18:;
  7635.             case 19:;
  7636.             case 20:;
  7637.             case 21:;
  7638.             case 22:;
  7639.             case 23:;
  7640.             case 24:;
  7641.             case 25:;
  7642.             case 26:;
  7643.             case 27:;
  7644.             case 28:;
  7645.             case 29:;
  7646.             case 30:;
  7647.             case 31:;
  7648.             case 32:;
  7649.             case 33:;
  7650.             case 34:;
  7651.             case 35:;
  7652.             case 36:;
  7653.             case 37:;
  7654.             case 38:;
  7655.             case 39:;
  7656.             case 40:;
  7657.             case 42:;
  7658.             case 43:;
  7659.             case 46:;
  7660.             case 47:;
  7661.             case 48:;
  7662.             case 49:;
  7663.             case 50:;
  7664.             case 52:;
  7665.             case 53:;
  7666.             case 54:;
  7667.             case 55:;
  7668.             case 56:;
  7669.             case 57:;
  7670.             case 59:;
  7671.             case 61:;
  7672.             case 62:;
  7673.             case 63:;
  7674.             case 64:;
  7675.             case 66:;
  7676.             case 67:;
  7677.             case 68:;
  7678.             case 69:;
  7679.             case 70:;
  7680.             case 71:;
  7681.             case 72:;
  7682.             case 73:;
  7683.             case 74:;
  7684.             case 75:;
  7685.             case 76:;
  7686.             case 77:;
  7687.             case 78:;
  7688.             case 79:;
  7689.             case 80:;
  7690.             case 81:;
  7691.             case 82:;
  7692.             case 85:;
  7693.             case 86:;
  7694.             case 87:;
  7695.             case 88:;
  7696.             case 89:;
  7697.             case 90:;
  7698.             case 91:;
  7699.             case 92:;
  7700.             case 93:;
  7701.             case 94:;
  7702.             case 95:;
  7703.             case 96:;
  7704.             case 97:;
  7705.             case 98:;
  7706.             case 99:;
  7707.             case 100:;
  7708.             case 101:;
  7709.             case 102:;
  7710.             case 103:;
  7711.             case 104:;
  7712.             case 105:;
  7713.             default:
  7714.               if (xxIsRepairMode) {
  7715.                 xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound2, & xxUnion); /*  */
  7716. /* line 797 "eiffel_sig.ell" */
  7717.  Keys_or_qual_call0->Tree = mDebug(mlist(String1.Tree, mnolist()), ReverseTree(Compound2.Tree)); 
  7718.                 goto xx34;
  7719.               }
  7720. xxUnexpected (185, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7721.             }
  7722.           }
  7723.           xx34:;
  7724.           goto xx33;
  7725.         case 6 /* Free_op */ :; 
  7726.         case 13 /* Eq */ :; 
  7727.         case 14 /* Not_eq */ :; 
  7728.         case 29 /* plus */ :; 
  7729.         case 30 /* minus */ :; 
  7730.         case 33 /* div */ :; 
  7731.         case 36 /* and */ :; 
  7732.         case 61 /* implies */ :; 
  7733.         case 76 /* or */ :; 
  7734.         case 96 /* xor */ :; 
  7735.         case 97 /* times */ :; 
  7736.         case 98 /* smaller */ :; 
  7737.         case 99 /* greater */ :; 
  7738.         case 100 /* sm_eq */ :; 
  7739.         case 101 /* gr_eq */ :; 
  7740.         case 102 /* idiv */ :; 
  7741.         case 103 /* imod */ :; 
  7742.         case 104 /* power */ :; 
  7743.           xxUnion.xxLocalRecoverySet = 184; yyExpr_tail (& Expr_tail1, & xxUnion); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7744.           if (xxToken != 18 /* ')' */)
  7745.             xxRecoveryLiteral (18, 184, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7746.           else {
  7747.             xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7748.           }
  7749.           if (xxToken != 10 /* '.' */)
  7750.             xxRecoveryLiteral (10, 185, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7751.           else {
  7752.             xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7753.           }
  7754.           xxUnion.xxLocalRecoverySet = 106; yyCall_chain (& Call_chain2, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7755.           xxUnion.xxLocalRecoverySet = 0; yyOne_compound (& One_compound2, & xxUnion); /*  */
  7756. /* line 802 "eiffel_sig.ell" */
  7757.  Keys_or_qual_call0->Tree = mDebug(mnolist(),mCompound1(mCall(mBin_expr(String1.Tree, 
  7758.                     Expr_tail1.Tree->Bin_expr.Op, Expr_tail1.Tree->Bin_expr.Rop), Call_chain2.Tree), 
  7759.                                     ReverseTree(One_compound2.Tree)));     
  7760.           goto xx33;
  7761.         case 7:;
  7762.         case 9:;
  7763.         case 10:;
  7764.         case 11:;
  7765.         case 12:;
  7766.         case 15:;
  7767.         case 16:;
  7768.         case 17:;
  7769.         case 19:;
  7770.         case 20:;
  7771.         case 21:;
  7772.         case 22:;
  7773.         case 23:;
  7774.         case 24:;
  7775.         case 25:;
  7776.         case 26:;
  7777.         case 27:;
  7778.         case 28:;
  7779.         case 31:;
  7780.         case 32:;
  7781.         case 34:;
  7782.         case 35:;
  7783.         case 37:;
  7784.         case 38:;
  7785.         case 39:;
  7786.         case 40:;
  7787.         case 41:;
  7788.         case 42:;
  7789.         case 43:;
  7790.         case 44:;
  7791.         case 45:;
  7792.         case 46:;
  7793.         case 47:;
  7794.         case 48:;
  7795.         case 49:;
  7796.         case 50:;
  7797.         case 51:;
  7798.         case 52:;
  7799.         case 53:;
  7800.         case 54:;
  7801.         case 55:;
  7802.         case 56:;
  7803.         case 57:;
  7804.         case 58:;
  7805.         case 59:;
  7806.         case 60:;
  7807.         case 62:;
  7808.         case 63:;
  7809.         case 64:;
  7810.         case 65:;
  7811.         case 66:;
  7812.         case 67:;
  7813.         case 68:;
  7814.         case 69:;
  7815.         case 70:;
  7816.         case 71:;
  7817.         case 72:;
  7818.         case 73:;
  7819.         case 74:;
  7820.         case 75:;
  7821.         case 77:;
  7822.         case 78:;
  7823.         case 79:;
  7824.         case 80:;
  7825.         case 81:;
  7826.         case 82:;
  7827.         case 83:;
  7828.         case 84:;
  7829.         case 85:;
  7830.         case 86:;
  7831.         case 87:;
  7832.         case 88:;
  7833.         case 89:;
  7834.         case 90:;
  7835.         case 91:;
  7836.         case 92:;
  7837.         case 93:;
  7838.         case 94:;
  7839.         case 95:;
  7840.         default:
  7841.           if (xxIsRepairMode) {
  7842.             if (xxToken != 18 /* ')' */)
  7843.               xxRecoveryLiteral (18, 184, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7844.             else {
  7845.               xxToken =             EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7846.             }
  7847.             for (;;) {
  7848.               switch (xxToken) {
  7849.               case 10 /* '.' */ :; 
  7850.                 xxToken =                 EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  7851.                 xxUnion.xxLocalRecoverySet = 106; yyCall_chain (& Call_chain1, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7852.                 xxUnion.xxLocalRecoverySet = 0; yyOne_compound (& One_compound1, & xxUnion); /*  */
  7853. /* line 793 "eiffel_sig.ell" */
  7854.  Keys_or_qual_call0->Tree = mDebug(mnolist(), mCompound1(mCall(String1.Tree, 
  7855.                             Call_chain1.Tree), ReverseTree(One_compound1.Tree)) );  
  7856.                 goto xx35;
  7857.               case 1 /* Character_constant */ :; 
  7858.               case 5 /* Manifest_string */ :; 
  7859.               case 7 /* ';' */ :; 
  7860.               case 11 /* '!' */ :; 
  7861.               case 12 /* '!!' */ :; 
  7862.               case 17 /* '(' */ :; 
  7863.               case 41 /* 'check' */ :; 
  7864.               case 44 /* Current */ :; 
  7865.               case 45 /* 'debug' */ :; 
  7866.               case 51 /* 'end' */ :; 
  7867.               case 58 /* 'from' */ :; 
  7868.               case 60 /* 'if' */ :; 
  7869.               case 65 /* 'inspect' */ :; 
  7870.               case 83 /* Result */ :; 
  7871.               case 84 /* retry */ :; 
  7872.               case 106 /* Id */ :; 
  7873.                 xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound2, & xxUnion); /*  */
  7874. /* line 797 "eiffel_sig.ell" */
  7875.  Keys_or_qual_call0->Tree = mDebug(mlist(String1.Tree, mnolist()), ReverseTree(Compound2.Tree)); 
  7876.                 goto xx35;
  7877.               case 2:;
  7878.               case 3:;
  7879.               case 4:;
  7880.               case 6:;
  7881.               case 8:;
  7882.               case 9:;
  7883.               case 13:;
  7884.               case 14:;
  7885.               case 15:;
  7886.               case 16:;
  7887.               case 18:;
  7888.               case 19:;
  7889.               case 20:;
  7890.               case 21:;
  7891.               case 22:;
  7892.               case 23:;
  7893.               case 24:;
  7894.               case 25:;
  7895.               case 26:;
  7896.               case 27:;
  7897.               case 28:;
  7898.               case 29:;
  7899.               case 30:;
  7900.               case 31:;
  7901.               case 32:;
  7902.               case 33:;
  7903.               case 34:;
  7904.               case 35:;
  7905.               case 36:;
  7906.               case 37:;
  7907.               case 38:;
  7908.               case 39:;
  7909.               case 40:;
  7910.               case 42:;
  7911.               case 43:;
  7912.               case 46:;
  7913.               case 47:;
  7914.               case 48:;
  7915.               case 49:;
  7916.               case 50:;
  7917.               case 52:;
  7918.               case 53:;
  7919.               case 54:;
  7920.               case 55:;
  7921.               case 56:;
  7922.               case 57:;
  7923.               case 59:;
  7924.               case 61:;
  7925.               case 62:;
  7926.               case 63:;
  7927.               case 64:;
  7928.               case 66:;
  7929.               case 67:;
  7930.               case 68:;
  7931.               case 69:;
  7932.               case 70:;
  7933.               case 71:;
  7934.               case 72:;
  7935.               case 73:;
  7936.               case 74:;
  7937.               case 75:;
  7938.               case 76:;
  7939.               case 77:;
  7940.               case 78:;
  7941.               case 79:;
  7942.               case 80:;
  7943.               case 81:;
  7944.               case 82:;
  7945.               case 85:;
  7946.               case 86:;
  7947.               case 87:;
  7948.               case 88:;
  7949.               case 89:;
  7950.               case 90:;
  7951.               case 91:;
  7952.               case 92:;
  7953.               case 93:;
  7954.               case 94:;
  7955.               case 95:;
  7956.               case 96:;
  7957.               case 97:;
  7958.               case 98:;
  7959.               case 99:;
  7960.               case 100:;
  7961.               case 101:;
  7962.               case 102:;
  7963.               case 103:;
  7964.               case 104:;
  7965.               case 105:;
  7966.               default:
  7967.                 if (xxIsRepairMode) {
  7968.                   xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound2, & xxUnion); /*  */
  7969. /* line 797 "eiffel_sig.ell" */
  7970.  Keys_or_qual_call0->Tree = mDebug(mlist(String1.Tree, mnolist()), ReverseTree(Compound2.Tree)); 
  7971.                   goto xx35;
  7972.                 }
  7973. xxUnexpected (185, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  7974.               }
  7975.             }
  7976.             xx35:;
  7977.             goto xx33;
  7978.           }
  7979.           xxExpected (181, 181, xxGlobalRecoverySet); /*  Free_op ',' Eq Not_eq ')' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op ',' Eq Not_eq ')' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  7980.         }
  7981.       }
  7982.       xx33:;
  7983.       goto xx32;
  7984.     case 1 /* Character_constant */ :; 
  7985.     case 2 /* Bit_sequence */ :; 
  7986.     case 3 /* Integer */ :; 
  7987.     case 4 /* Real */ :; 
  7988.     case 6 /* Free_op */ :; 
  7989.     case 17 /* '(' */ :; 
  7990.     case 23 /* '<<' */ :; 
  7991.     case 29 /* plus */ :; 
  7992.     case 30 /* minus */ :; 
  7993.     case 44 /* Current */ :; 
  7994.     case 56 /* false */ :; 
  7995.     case 74 /* 'old' */ :; 
  7996.     case 83 /* Result */ :; 
  7997.     case 88 /* 'strip' */ :; 
  7998.     case 90 /* true */ :; 
  7999.     case 105 /* not */ :; 
  8000.     case 106 /* Id */ :; 
  8001.       xxUnion.xxLocalRecoverySet = 184; yyExpression (& Expression1, & xxUnion); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  8002.       if (xxToken != 18 /* ')' */)
  8003.         xxRecoveryLiteral (18, 184, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  8004.       else {
  8005.         xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8006.       }
  8007.       if (xxToken != 10 /* '.' */)
  8008.         xxRecoveryLiteral (10, 185, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '.' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  8009.       else {
  8010.         xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8011.       }
  8012.       xxUnion.xxLocalRecoverySet = 106; yyCall_chain (& Call_chain3, & xxUnion); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  8013.       xxUnion.xxLocalRecoverySet = 0; yyOne_compound (& One_compound3, & xxUnion); /*  */
  8014. /* line 809 "eiffel_sig.ell" */
  8015.  Keys_or_qual_call0->Tree = mDebug(mnolist(),mCompound1(mCall( Expression1.Tree
  8016.                             , Call_chain3.Tree), ReverseTree(One_compound3.Tree))); 
  8017.       goto xx32;
  8018.     case 18 /* ')' */ :; 
  8019.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8020.       xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound3, & xxUnion); /*  */
  8021. /* line 813 "eiffel_sig.ell" */
  8022.  Keys_or_qual_call0->Tree = mDebug(mnolist(), ReverseTree(Compound3.Tree));        
  8023.       goto xx32;
  8024.     case 7:;
  8025.     case 8:;
  8026.     case 9:;
  8027.     case 10:;
  8028.     case 11:;
  8029.     case 12:;
  8030.     case 13:;
  8031.     case 14:;
  8032.     case 15:;
  8033.     case 16:;
  8034.     case 19:;
  8035.     case 20:;
  8036.     case 21:;
  8037.     case 22:;
  8038.     case 24:;
  8039.     case 25:;
  8040.     case 26:;
  8041.     case 27:;
  8042.     case 28:;
  8043.     case 31:;
  8044.     case 32:;
  8045.     case 33:;
  8046.     case 34:;
  8047.     case 35:;
  8048.     case 36:;
  8049.     case 37:;
  8050.     case 38:;
  8051.     case 39:;
  8052.     case 40:;
  8053.     case 41:;
  8054.     case 42:;
  8055.     case 43:;
  8056.     case 45:;
  8057.     case 46:;
  8058.     case 47:;
  8059.     case 48:;
  8060.     case 49:;
  8061.     case 50:;
  8062.     case 51:;
  8063.     case 52:;
  8064.     case 53:;
  8065.     case 54:;
  8066.     case 55:;
  8067.     case 57:;
  8068.     case 58:;
  8069.     case 59:;
  8070.     case 60:;
  8071.     case 61:;
  8072.     case 62:;
  8073.     case 63:;
  8074.     case 64:;
  8075.     case 65:;
  8076.     case 66:;
  8077.     case 67:;
  8078.     case 68:;
  8079.     case 69:;
  8080.     case 70:;
  8081.     case 71:;
  8082.     case 72:;
  8083.     case 73:;
  8084.     case 75:;
  8085.     case 76:;
  8086.     case 77:;
  8087.     case 78:;
  8088.     case 79:;
  8089.     case 80:;
  8090.     case 81:;
  8091.     case 82:;
  8092.     case 84:;
  8093.     case 85:;
  8094.     case 86:;
  8095.     case 87:;
  8096.     case 89:;
  8097.     case 91:;
  8098.     case 92:;
  8099.     case 93:;
  8100.     case 94:;
  8101.     case 95:;
  8102.     case 96:;
  8103.     case 97:;
  8104.     case 98:;
  8105.     case 99:;
  8106.     case 100:;
  8107.     case 101:;
  8108.     case 102:;
  8109.     case 103:;
  8110.     case 104:;
  8111.     default:
  8112.       if (xxIsRepairMode) {
  8113.         if (xxToken != 18 /* ')' */)
  8114.           xxRecoveryLiteral (18, 183, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' ')' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  8115.         else {
  8116.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8117.         }
  8118.         xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound3, & xxUnion); /*  */
  8119. /* line 813 "eiffel_sig.ell" */
  8120.  Keys_or_qual_call0->Tree = mDebug(mnolist(), ReverseTree(Compound3.Tree));        
  8121.         goto xx32;
  8122.       }
  8123.       xxExpected (180, 180, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' ')' '<<' plus minus Current false 'old' Result 'strip' true not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' ')' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  8124.     }
  8125.   }
  8126.   xx32:;
  8127. }
  8128.  
  8129. static void yyString
  8130. # if defined __STDC__ | defined __cplusplus
  8131. (ParserSIG_tParsAttribute * String0, xxtUnionPtr xxGlobalRecoverySet)
  8132. # else
  8133. (String0, xxGlobalRecoverySet)
  8134. ParserSIG_tParsAttribute    * String0;
  8135. xxtUnionPtr    xxGlobalRecoverySet;
  8136. # endif
  8137. {
  8138.     EiffelScan_tScanAttribute Manifest_string1;
  8139.   if (xxToken != 5 /* Manifest_string */)
  8140.     xxRecoveryTerminal (5, 24, xxGlobalRecoverySet, & Manifest_string1); /*  Manifest_string */
  8141.   else {
  8142.     Manifest_string1 =   EiffelScan_Attribute;
  8143.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8144.   }
  8145. /* line 819 "eiffel_sig.ell" */
  8146.  String0->Tree = mString(Manifest_string1.StringRef, Manifest_string1.Position);     
  8147. }
  8148.  
  8149. static void yyString_list
  8150. # if defined __STDC__ | defined __cplusplus
  8151. (ParserSIG_tParsAttribute * String_list0, xxtUnionPtr xxGlobalRecoverySet)
  8152. # else
  8153. (String_list0, xxGlobalRecoverySet)
  8154. ParserSIG_tParsAttribute    * String_list0;
  8155. xxtUnionPtr    xxGlobalRecoverySet;
  8156. # endif
  8157. {
  8158.     EiffelScan_tScanAttribute Manifest_string1;
  8159. /* line 822 "eiffel_sig.ell" */
  8160.  String_list0->Tree = mnolist();                            
  8161.   for (;;) {
  8162.     if (xxToken != 5 /* Manifest_string */)
  8163.       xxRecoveryTerminal (5, 186, xxGlobalRecoverySet, & Manifest_string1); /*  Manifest_string ',' */
  8164.     else {
  8165.       Manifest_string1 =     EiffelScan_Attribute;
  8166.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8167.     }
  8168. /* line 823 "eiffel_sig.ell" */
  8169.  String_list0->Tree = mlist(mString(Manifest_string1.StringRef, Manifest_string1.Position),
  8170.                                             String_list0->Tree);    
  8171.     if (! ((xxToken == 8 /* ',' */))) {
  8172.       if ((xxToken == 18 /* ')' */)) break;
  8173.       xxExpected (16, 186, xxGlobalRecoverySet); /*  ',' /  Manifest_string ',' */
  8174.       if (! ((xxToken == 8 /* ',' */) || (xxToken == 5 /* Manifest_string */))) break;
  8175.     }
  8176.     if (xxToken != 8 /* ',' */)
  8177.       xxRecoveryLiteral (8, 186, xxGlobalRecoverySet); /*  Manifest_string ',' */
  8178.     else {
  8179.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8180.     }
  8181.   }
  8182. /* line 825 "eiffel_sig.ell" */
  8183.  String_list0->Tree = ReverseTree(String_list0->Tree);                    
  8184. }
  8185.  
  8186. static void yyOne_compound
  8187. # if defined __STDC__ | defined __cplusplus
  8188. (ParserSIG_tParsAttribute * One_compound0, xxtUnionPtr xxGlobalRecoverySet)
  8189. # else
  8190. (One_compound0, xxGlobalRecoverySet)
  8191. ParserSIG_tParsAttribute    * One_compound0;
  8192. xxtUnionPtr    xxGlobalRecoverySet;
  8193. # endif
  8194. {
  8195.   ParserSIG_tParsAttribute Instruction1;
  8196.   xxtUnion xxUnion;
  8197.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8198. /* line 829 "eiffel_sig.ell" */
  8199.  One_compound0->Tree = mCompound0();                                                   
  8200.   for (;;) {
  8201.     if ((xxVerticalSet [xxToken + 648] & 1 << 5 /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */)) {
  8202.       for (;;) {
  8203.         if ((xxToken == 7 /* ';' */)) {
  8204.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8205.           break;
  8206.         } else if ((xxVerticalSet [xxToken + 648] & 1 << 5 /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */) || xxIsRepairMode) break;
  8207.         xxExpected (106, 106, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id /  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  8208.       }
  8209.       xxUnion.xxLocalRecoverySet = 0; yyInstruction (& Instruction1, & xxUnion); /*  */
  8210. /* line 830 "eiffel_sig.ell" */
  8211.  One_compound0->Tree = mCompound1(Instruction1.Tree, One_compound0->Tree);         
  8212.     } else if ((xxToken == 51 /* 'end' */) || xxIsRepairMode) break;
  8213.     else
  8214.       xxExpected (106, 106, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id /  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' Result retry Id */
  8215.   }
  8216. }
  8217.  
  8218. static void yyRescue
  8219. # if defined __STDC__ | defined __cplusplus
  8220. (ParserSIG_tParsAttribute * Rescue0, xxtUnionPtr xxGlobalRecoverySet)
  8221. # else
  8222. (Rescue0, xxGlobalRecoverySet)
  8223. ParserSIG_tParsAttribute    * Rescue0;
  8224. xxtUnionPtr    xxGlobalRecoverySet;
  8225. # endif
  8226. {
  8227.   ParserSIG_tParsAttribute Compound1;
  8228.   xxtUnion xxUnion;
  8229.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8230.   if (xxToken != 82 /* 'rescue' */)
  8231.     xxRecoveryLiteral (82, 187, xxGlobalRecoverySet); /*  Character_constant Manifest_string ';' '!' '!!' '(' 'check' Current 'debug' 'from' 'if' 'inspect' 'rescue' Result retry Id */
  8232.   else {
  8233.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8234.   }
  8235.   xxUnion.xxLocalRecoverySet = 0; yyCompound (& Compound1, & xxUnion); /*  */
  8236. /* line 835 "eiffel_sig.ell" */
  8237.  Rescue0->Tree = ReverseTree(Compound1.Tree);                        
  8238. }
  8239.  
  8240. static void yyRetry
  8241. # if defined __STDC__ | defined __cplusplus
  8242. (ParserSIG_tParsAttribute * Retry0, xxtUnionPtr xxGlobalRecoverySet)
  8243. # else
  8244. (Retry0, xxGlobalRecoverySet)
  8245. ParserSIG_tParsAttribute    * Retry0;
  8246. xxtUnionPtr    xxGlobalRecoverySet;
  8247. # endif
  8248. {
  8249.     EiffelScan_tScanAttribute retry1;
  8250.   if (xxToken != 84 /* retry */)
  8251.     xxRecoveryTerminal (84, 188, xxGlobalRecoverySet, & retry1); /*  retry */
  8252.   else {
  8253.     retry1 =   EiffelScan_Attribute;
  8254.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8255.   }
  8256. /* line 838 "eiffel_sig.ell" */
  8257.  Retry0->Tree = mRetry(retry1.Position);                        
  8258. }
  8259.  
  8260. static void yyUnique
  8261. # if defined __STDC__ | defined __cplusplus
  8262. (ParserSIG_tParsAttribute * Unique0, xxtUnionPtr xxGlobalRecoverySet)
  8263. # else
  8264. (Unique0, xxGlobalRecoverySet)
  8265. ParserSIG_tParsAttribute    * Unique0;
  8266. xxtUnionPtr    xxGlobalRecoverySet;
  8267. # endif
  8268. {
  8269.     EiffelScan_tScanAttribute unique1;
  8270.   if (xxToken != 92 /* unique */)
  8271.     xxRecoveryTerminal (92, 189, xxGlobalRecoverySet, & unique1); /*  unique */
  8272.   else {
  8273.     unique1 =   EiffelScan_Attribute;
  8274.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8275.   }
  8276. /* line 843 "eiffel_sig.ell" */
  8277.  Unique0->Tree = mUnique(unique1.Position);                        
  8278. }
  8279.  
  8280. static void yyEntity
  8281. # if defined __STDC__ | defined __cplusplus
  8282. (ParserSIG_tParsAttribute * Entity0, xxtUnionPtr xxGlobalRecoverySet)
  8283. # else
  8284. (Entity0, xxGlobalRecoverySet)
  8285. ParserSIG_tParsAttribute    * Entity0;
  8286. xxtUnionPtr    xxGlobalRecoverySet;
  8287. # endif
  8288. {
  8289.     EiffelScan_tScanAttribute Current1;
  8290.   ParserSIG_tParsAttribute Writable1;
  8291.   xxtUnion xxUnion;
  8292.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8293.   for (;;) {
  8294.     switch (xxToken) {
  8295.     case 83 /* Result */ :; 
  8296.     case 106 /* Id */ :; 
  8297.       xxUnion.xxLocalRecoverySet = 0; yyWritable (& Writable1, & xxUnion); /*  */
  8298. /* line 848 "eiffel_sig.ell" */
  8299.  Entity0->Tree = Writable1.Tree;                            
  8300.       goto xx36;
  8301.     case 44 /* Current */ :; 
  8302.       Current1 =       EiffelScan_Attribute;
  8303.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8304. /* line 849 "eiffel_sig.ell" */
  8305.  Entity0->Tree = mCurrent(Current1.Position);                        
  8306.       goto xx36;
  8307.     case 45:;
  8308.     case 46:;
  8309.     case 47:;
  8310.     case 48:;
  8311.     case 49:;
  8312.     case 50:;
  8313.     case 51:;
  8314.     case 52:;
  8315.     case 53:;
  8316.     case 54:;
  8317.     case 55:;
  8318.     case 56:;
  8319.     case 57:;
  8320.     case 58:;
  8321.     case 59:;
  8322.     case 60:;
  8323.     case 61:;
  8324.     case 62:;
  8325.     case 63:;
  8326.     case 64:;
  8327.     case 65:;
  8328.     case 66:;
  8329.     case 67:;
  8330.     case 68:;
  8331.     case 69:;
  8332.     case 70:;
  8333.     case 71:;
  8334.     case 72:;
  8335.     case 73:;
  8336.     case 74:;
  8337.     case 75:;
  8338.     case 76:;
  8339.     case 77:;
  8340.     case 78:;
  8341.     case 79:;
  8342.     case 80:;
  8343.     case 81:;
  8344.     case 82:;
  8345.     case 84:;
  8346.     case 85:;
  8347.     case 86:;
  8348.     case 87:;
  8349.     case 88:;
  8350.     case 89:;
  8351.     case 90:;
  8352.     case 91:;
  8353.     case 92:;
  8354.     case 93:;
  8355.     case 94:;
  8356.     case 95:;
  8357.     case 96:;
  8358.     case 97:;
  8359.     case 98:;
  8360.     case 99:;
  8361.     case 100:;
  8362.     case 101:;
  8363.     case 102:;
  8364.     case 103:;
  8365.     case 104:;
  8366.     case 105:;
  8367.     default:
  8368.       if (xxIsRepairMode) {
  8369.         xxUnion.xxLocalRecoverySet = 0; yyWritable (& Writable1, & xxUnion); /*  */
  8370. /* line 848 "eiffel_sig.ell" */
  8371.  Entity0->Tree = Writable1.Tree;                            
  8372.         goto xx36;
  8373.       }
  8374.       xxExpected (190, 190, xxGlobalRecoverySet); /*  Current Result Id /  Current Result Id */
  8375.     }
  8376.   }
  8377.   xx36:;
  8378. }
  8379.  
  8380. static void yyWritable
  8381. # if defined __STDC__ | defined __cplusplus
  8382. (ParserSIG_tParsAttribute * Writable0, xxtUnionPtr xxGlobalRecoverySet)
  8383. # else
  8384. (Writable0, xxGlobalRecoverySet)
  8385. ParserSIG_tParsAttribute    * Writable0;
  8386. xxtUnionPtr    xxGlobalRecoverySet;
  8387. # endif
  8388. {
  8389.   ParserSIG_tParsAttribute Attribute1;
  8390.   ParserSIG_tParsAttribute Local1;
  8391.   xxtUnion xxUnion;
  8392.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8393.   for (;;) {
  8394.     switch (xxToken) {
  8395.     case 106 /* Id */ :; 
  8396.       xxUnion.xxLocalRecoverySet = 0; yyAttribute (& Attribute1, & xxUnion); /*  */
  8397. /* line 853 "eiffel_sig.ell" */
  8398.  Writable0->Tree = Attribute1.Tree;                            
  8399.       goto xx37;
  8400.     case 83 /* Result */ :; 
  8401.       xxUnion.xxLocalRecoverySet = 0; yyLocal (& Local1, & xxUnion); /*  */
  8402. /* line 854 "eiffel_sig.ell" */
  8403.  Writable0->Tree = Local1.Tree;                            
  8404.       goto xx37;
  8405.     case 84:;
  8406.     case 85:;
  8407.     case 86:;
  8408.     case 87:;
  8409.     case 88:;
  8410.     case 89:;
  8411.     case 90:;
  8412.     case 91:;
  8413.     case 92:;
  8414.     case 93:;
  8415.     case 94:;
  8416.     case 95:;
  8417.     case 96:;
  8418.     case 97:;
  8419.     case 98:;
  8420.     case 99:;
  8421.     case 100:;
  8422.     case 101:;
  8423.     case 102:;
  8424.     case 103:;
  8425.     case 104:;
  8426.     case 105:;
  8427.     default:
  8428.       if (xxIsRepairMode) {
  8429.         xxUnion.xxLocalRecoverySet = 0; yyAttribute (& Attribute1, & xxUnion); /*  */
  8430. /* line 853 "eiffel_sig.ell" */
  8431.  Writable0->Tree = Attribute1.Tree;                            
  8432.         goto xx37;
  8433.       }
  8434.       xxExpected (191, 191, xxGlobalRecoverySet); /*  Result Id /  Result Id */
  8435.     }
  8436.   }
  8437.   xx37:;
  8438. }
  8439.  
  8440. static void yyAttribute
  8441. # if defined __STDC__ | defined __cplusplus
  8442. (ParserSIG_tParsAttribute * Attribute0, xxtUnionPtr xxGlobalRecoverySet)
  8443. # else
  8444. (Attribute0, xxGlobalRecoverySet)
  8445. ParserSIG_tParsAttribute    * Attribute0;
  8446. xxtUnionPtr    xxGlobalRecoverySet;
  8447. # endif
  8448. {
  8449.   ParserSIG_tParsAttribute Identifier1;
  8450.   xxtUnion xxUnion;
  8451.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8452.   xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  8453. /* line 857 "eiffel_sig.ell" */
  8454.  Attribute0->Tree = Identifier1.Tree;                            
  8455. }
  8456.  
  8457. static void yyLocal
  8458. # if defined __STDC__ | defined __cplusplus
  8459. (ParserSIG_tParsAttribute * Local0, xxtUnionPtr xxGlobalRecoverySet)
  8460. # else
  8461. (Local0, xxGlobalRecoverySet)
  8462. ParserSIG_tParsAttribute    * Local0;
  8463. xxtUnionPtr    xxGlobalRecoverySet;
  8464. # endif
  8465. {
  8466.     EiffelScan_tScanAttribute Result1;
  8467.   ParserSIG_tParsAttribute Identifier1;
  8468.   xxtUnion xxUnion;
  8469.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8470.   for (;;) {
  8471.     switch (xxToken) {
  8472.     case 106 /* Id */ :; 
  8473.       xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  8474. /* line 860 "eiffel_sig.ell" */
  8475.  Local0->Tree = Identifier1.Tree;                            
  8476.       goto xx38;
  8477.     case 83 /* Result */ :; 
  8478.       Result1 =       EiffelScan_Attribute;
  8479.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8480. /* line 861 "eiffel_sig.ell" */
  8481.  Local0->Tree = mResult(Result1.Position);                        
  8482.       goto xx38;
  8483.     case 84:;
  8484.     case 85:;
  8485.     case 86:;
  8486.     case 87:;
  8487.     case 88:;
  8488.     case 89:;
  8489.     case 90:;
  8490.     case 91:;
  8491.     case 92:;
  8492.     case 93:;
  8493.     case 94:;
  8494.     case 95:;
  8495.     case 96:;
  8496.     case 97:;
  8497.     case 98:;
  8498.     case 99:;
  8499.     case 100:;
  8500.     case 101:;
  8501.     case 102:;
  8502.     case 103:;
  8503.     case 104:;
  8504.     case 105:;
  8505.     default:
  8506.       if (xxIsRepairMode) {
  8507.         xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  8508. /* line 860 "eiffel_sig.ell" */
  8509.  Local0->Tree = Identifier1.Tree;                            
  8510.         goto xx38;
  8511.       }
  8512.       xxExpected (191, 191, xxGlobalRecoverySet); /*  Result Id /  Result Id */
  8513.     }
  8514.   }
  8515.   xx38:;
  8516. }
  8517.  
  8518. static void yyCreators
  8519. # if defined __STDC__ | defined __cplusplus
  8520. (ParserSIG_tParsAttribute * Creators0, xxtUnionPtr xxGlobalRecoverySet)
  8521. # else
  8522. (Creators0, xxGlobalRecoverySet)
  8523. ParserSIG_tParsAttribute    * Creators0;
  8524. xxtUnionPtr    xxGlobalRecoverySet;
  8525. # endif
  8526. {
  8527.   ParserSIG_tParsAttribute Creation_clause1;
  8528.   xxtUnion xxUnion;
  8529.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8530. /* line 871 "eiffel_sig.ell" */
  8531.  Creators0->Tree = mCreators0();                            
  8532.   if (xxToken != 43 /* 'creation' */)
  8533.     xxRecoveryLiteral (43, 193, xxGlobalRecoverySet); /*  '{' 'creation' infix prefix Id */
  8534.   else {
  8535.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8536.   }
  8537.   for (;;) {
  8538.     xxUnion.xxLocalRecoverySet = 194; yyCreation_clause (& Creation_clause1, & xxUnion); /*  'creation' */
  8539. /* line 873 "eiffel_sig.ell" */
  8540.  Creators0->Tree = mCreators1(Creation_clause1.Tree, Creators0->Tree);            
  8541.     if (! ((xxToken == 43 /* 'creation' */))) {
  8542.       if ((xxVerticalSet [xxToken] & 1 << 5 /*  'end' 'feature' 'invariant' */)) break;
  8543.       xxExpected (194, 193, xxGlobalRecoverySet); /*  'creation' /  '{' 'creation' infix prefix Id */
  8544.       if (! ((xxToken == 43 /* 'creation' */) || (xxVerticalSet [xxToken + 756] & 1 << 5 /*  '{' 'creation' infix prefix Id */))) break;
  8545.     }
  8546.     if (xxToken != 43 /* 'creation' */)
  8547.       xxRecoveryLiteral (43, 193, xxGlobalRecoverySet); /*  '{' 'creation' infix prefix Id */
  8548.     else {
  8549.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8550.     }
  8551.   }
  8552. }
  8553.  
  8554. static void yyCreation_clause
  8555. # if defined __STDC__ | defined __cplusplus
  8556. (ParserSIG_tParsAttribute * Creation_clause0, xxtUnionPtr xxGlobalRecoverySet)
  8557. # else
  8558. (Creation_clause0, xxGlobalRecoverySet)
  8559. ParserSIG_tParsAttribute    * Creation_clause0;
  8560. xxtUnionPtr    xxGlobalRecoverySet;
  8561. # endif
  8562. {
  8563.   ParserSIG_tParsAttribute Clients1;
  8564.   ParserSIG_tParsAttribute Feature_list1;
  8565.   xxtUnion xxUnion;
  8566.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8567. /* line 877 "eiffel_sig.ell" */
  8568.  Creation_clause0->Tree = mCreation_clause(mClients0(), no_comment, mFeature_list0());    
  8569.   for (;;) {
  8570.     if ((xxToken == 21 /* '{' */)) {
  8571.       xxUnion.xxLocalRecoverySet = 36; yyClients (& Clients1, & xxUnion); /*  infix prefix Id */
  8572. /* line 878 "eiffel_sig.ell" */
  8573.  Creation_clause0->Tree->Creation_clause.Clients = Clients1.Tree;            
  8574.       break;
  8575.     } else if ((xxVerticalSet [xxToken + 756] & 1 << 6 /*  'creation' 'end' 'feature' infix 'invariant' prefix Id */) || xxIsRepairMode) break;
  8576.     xxExpected (195, 195, xxGlobalRecoverySet); /*  '{' infix prefix Id /  '{' infix prefix Id */
  8577.   }
  8578. /* line 879 "eiffel_sig.ell" */
  8579.  Creation_clause0->Tree->Creation_clause.comment = comment_ref;             
  8580.   xxUnion.xxLocalRecoverySet = 0; yyFeature_list (& Feature_list1, & xxUnion); /*  */
  8581. /* line 880 "eiffel_sig.ell" */
  8582.  Creation_clause0->Tree->Creation_clause.Feature_list = ReverseTree(Feature_list1.Tree);
  8583. }
  8584.  
  8585. static void yyCreation
  8586. # if defined __STDC__ | defined __cplusplus
  8587. (ParserSIG_tParsAttribute * Creation0, xxtUnionPtr xxGlobalRecoverySet)
  8588. # else
  8589. (Creation0, xxGlobalRecoverySet)
  8590. ParserSIG_tParsAttribute    * Creation0;
  8591. xxtUnionPtr    xxGlobalRecoverySet;
  8592. # endif
  8593. {
  8594.   ParserSIG_tParsAttribute Type1;
  8595.   ParserSIG_tParsAttribute Writable1;
  8596.   ParserSIG_tParsAttribute Creation_call1;
  8597.   xxtUnion xxUnion;
  8598.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8599. /* line 884 "eiffel_sig.ell" */
  8600.  Creation0->Tree = mCreation(mType0(), mEntity0(NoPosition), mUnqual_call0());        
  8601.   for (;;) {
  8602.     switch (xxToken) {
  8603.     case 11 /* '!' */ :; 
  8604.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8605.       for (;;) {
  8606.         if ((xxVerticalSet [xxToken + 648] & 1 << 3 /*  BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id */)) {
  8607.           xxUnion.xxLocalRecoverySet = 198; yyType (& Type1, & xxUnion); /*  '.' '!' Result Id */
  8608. /* line 885 "eiffel_sig.ell" */
  8609.  Creation0->Tree->Creation.Type = Type1.Tree;                        
  8610.           break;
  8611.         } else if ((xxToken == 11 /* '!' */) || xxIsRepairMode) break;
  8612.         xxExpected (197, 196, xxGlobalRecoverySet); /*  '!' BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL STRING Id /  '.' '!' BIT BOOLEAN CHARACTER DOUBLE expanded INTEGER 'like' _NONE REAL Result STRING Id */
  8613.       }
  8614.       if (xxToken != 11 /* '!' */)
  8615.         xxRecoveryLiteral (11, 198, xxGlobalRecoverySet); /*  '.' '!' Result Id */
  8616.       else {
  8617.         xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8618.       }
  8619.       goto xx39;
  8620.     case 12 /* '!!' */ :; 
  8621.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8622.       goto xx39;
  8623.     default:
  8624.       if (xxIsRepairMode) {
  8625.         if (xxToken != 12 /* '!!' */)
  8626.           xxRecoveryLiteral (12, 199, xxGlobalRecoverySet); /*  '.' '!!' Result Id */
  8627.         else {
  8628.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8629.         }
  8630.         goto xx39;
  8631.       }
  8632.       xxExpected (200, 201, xxGlobalRecoverySet); /*  '!' '!!' Result Id /  '.' '!' '!!' Result Id */
  8633.     }
  8634.   }
  8635.   xx39:;
  8636.   xxUnion.xxLocalRecoverySet = 109; yyWritable (& Writable1, & xxUnion); /*  '.' */
  8637. /* line 886 "eiffel_sig.ell" */
  8638.  Creation0->Tree->Creation.Entity = Writable1.Tree;                
  8639.   for (;;) {
  8640.     if ((xxToken == 10 /* '.' */)) {
  8641.       xxUnion.xxLocalRecoverySet = 0; yyCreation_call (& Creation_call1, & xxUnion); /*  */
  8642. /* line 887 "eiffel_sig.ell" */
  8643.  Creation0->Tree->Creation.Unqual_call = Creation_call1.Tree;                
  8644.       break;
  8645.     } else if ((xxVerticalSet [xxToken + 432] & 1 << 6 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' '!' '!!' '(' '<<' plus minus 'check' Current 'debug' else 'elseif' 'end' 'ensure' false 'from' 'if' 'inspect' 'invariant' 'old' 'rescue' Result retry 'strip' true 'until' 'variant' 'when' not Id */) || xxIsRepairMode) break;
  8646.     xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  8647.   }
  8648. }
  8649.  
  8650. static void yyCreation_call
  8651. # if defined __STDC__ | defined __cplusplus
  8652. (ParserSIG_tParsAttribute * Creation_call0, xxtUnionPtr xxGlobalRecoverySet)
  8653. # else
  8654. (Creation_call0, xxGlobalRecoverySet)
  8655. ParserSIG_tParsAttribute    * Creation_call0;
  8656. xxtUnionPtr    xxGlobalRecoverySet;
  8657. # endif
  8658. {
  8659.   ParserSIG_tParsAttribute Unqualified_call1;
  8660.   xxtUnion xxUnion;
  8661.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8662.   if (xxToken != 10 /* '.' */)
  8663.     xxRecoveryLiteral (10, 110, xxGlobalRecoverySet); /*  '.' Current Result Id */
  8664.   else {
  8665.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8666.   }
  8667.   xxUnion.xxLocalRecoverySet = 0; yyUnqualified_call (& Unqualified_call1, & xxUnion); /*  */
  8668. /* line 891 "eiffel_sig.ell" */
  8669.  Creation_call0->Tree = Unqualified_call1.Tree;                    
  8670. }
  8671.  
  8672. static void yyQualified_call
  8673. # if defined __STDC__ | defined __cplusplus
  8674. (ParserSIG_tParsAttribute * Qualified_call0, xxtUnionPtr xxGlobalRecoverySet)
  8675. # else
  8676. (Qualified_call0, xxGlobalRecoverySet)
  8677. ParserSIG_tParsAttribute    * Qualified_call0;
  8678. xxtUnionPtr    xxGlobalRecoverySet;
  8679. # endif
  8680. {
  8681.     EiffelScan_tScanAttribute Character_constant1;
  8682.     EiffelScan_tScanAttribute Manifest_string1;
  8683.   ParserSIG_tParsAttribute Call_chain1;
  8684.   ParserSIG_tParsAttribute Parenthesized_qualifier1;
  8685.   xxtUnion xxUnion;
  8686.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8687.   for (;;) {
  8688.     switch (xxToken) {
  8689.     case 17 /* '(' */ :; 
  8690.       xxUnion.xxLocalRecoverySet = 190; yyParenthesized_qualifier (& Parenthesized_qualifier1, & xxUnion); /*  Current Result Id */
  8691.       xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  8692. /* line 896 "eiffel_sig.ell" */
  8693.  Qualified_call0->Tree = mCall_instruct(mCall( Parenthesized_qualifier1.Tree,
  8694.                                                Call_chain1.Tree));    
  8695.       goto xx40;
  8696.     case 1 /* Character_constant */ :; 
  8697.       Character_constant1 =       EiffelScan_Attribute;
  8698.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8699.       if (xxToken != 10 /* '.' */)
  8700.         xxRecoveryLiteral (10, 110, xxGlobalRecoverySet); /*  '.' Current Result Id */
  8701.       else {
  8702.         xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8703.       }
  8704.       xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  8705. /* line 899 "eiffel_sig.ell" */
  8706.  Qualified_call0->Tree = mCall_instruct(mCall(mSimple_expr(mCh(Character_constant1.Char, 
  8707.                                  Character_constant1.Position)), Call_chain1.Tree));
  8708.       goto xx40;
  8709.     case 5 /* Manifest_string */ :; 
  8710.       Manifest_string1 =       EiffelScan_Attribute;
  8711.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8712.       if (xxToken != 10 /* '.' */)
  8713.         xxRecoveryLiteral (10, 110, xxGlobalRecoverySet); /*  '.' Current Result Id */
  8714.       else {
  8715.         xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8716.       }
  8717.       xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  8718. /* line 902 "eiffel_sig.ell" */
  8719.  Qualified_call0->Tree = mCall_instruct(mCall(mSimple_expr(mString(Manifest_string1.StringRef,
  8720.                                  Manifest_string1.Position)), Call_chain1.Tree));
  8721.       goto xx40;
  8722.     case 2:;
  8723.     case 3:;
  8724.     case 4:;
  8725.     case 6:;
  8726.     case 7:;
  8727.     case 8:;
  8728.     case 9:;
  8729.     case 10:;
  8730.     case 11:;
  8731.     case 12:;
  8732.     case 13:;
  8733.     case 14:;
  8734.     case 15:;
  8735.     case 16:;
  8736.     default:
  8737.       if (xxIsRepairMode) {
  8738.         if (xxToken != 1 /* Character_constant */)
  8739.           xxRecoveryTerminal (1, 202, xxGlobalRecoverySet, & Character_constant1); /*  Character_constant '.' Current Result Id */
  8740.         else {
  8741.           Character_constant1 =         EiffelScan_Attribute;
  8742.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8743.         }
  8744.         if (xxToken != 10 /* '.' */)
  8745.           xxRecoveryLiteral (10, 110, xxGlobalRecoverySet); /*  '.' Current Result Id */
  8746.         else {
  8747.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8748.         }
  8749.         xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  8750. /* line 899 "eiffel_sig.ell" */
  8751.  Qualified_call0->Tree = mCall_instruct(mCall(mSimple_expr(mCh(Character_constant1.Char, 
  8752.                                  Character_constant1.Position)), Call_chain1.Tree));
  8753.         goto xx40;
  8754.       }
  8755.       xxExpected (204, 204, xxGlobalRecoverySet); /*  Character_constant Manifest_string '(' /  Character_constant Manifest_string '(' */
  8756.     }
  8757.   }
  8758.   xx40:;
  8759. }
  8760.  
  8761. static void yyParenthesized_qualifier
  8762. # if defined __STDC__ | defined __cplusplus
  8763. (ParserSIG_tParsAttribute * Parenthesized_qualifier0, xxtUnionPtr xxGlobalRecoverySet)
  8764. # else
  8765. (Parenthesized_qualifier0, xxGlobalRecoverySet)
  8766. ParserSIG_tParsAttribute    * Parenthesized_qualifier0;
  8767. xxtUnionPtr    xxGlobalRecoverySet;
  8768. # endif
  8769. {
  8770.   ParserSIG_tParsAttribute Expression1;
  8771.   xxtUnion xxUnion;
  8772.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8773.   if (xxToken != 17 /* '(' */)
  8774.     xxRecoveryLiteral (17, 205, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '.' '(' ')' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  8775.   else {
  8776.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8777.   }
  8778.   xxUnion.xxLocalRecoverySet = 206; yyExpression (& Expression1, & xxUnion); /*  '.' ')' */
  8779.   if (xxToken != 18 /* ')' */)
  8780.     xxRecoveryLiteral (18, 206, xxGlobalRecoverySet); /*  '.' ')' */
  8781.   else {
  8782.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8783.   }
  8784.   if (xxToken != 10 /* '.' */)
  8785.     xxRecoveryLiteral (10, 109, xxGlobalRecoverySet); /*  '.' */
  8786.   else {
  8787.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8788.   }
  8789. /* line 907 "eiffel_sig.ell" */
  8790.  Parenthesized_qualifier0->Tree = Expression1.Tree;                    
  8791. }
  8792.  
  8793. static void yyCall_chain
  8794. # if defined __STDC__ | defined __cplusplus
  8795. (ParserSIG_tParsAttribute * Call_chain0, xxtUnionPtr xxGlobalRecoverySet)
  8796. # else
  8797. (Call_chain0, xxGlobalRecoverySet)
  8798. ParserSIG_tParsAttribute    * Call_chain0;
  8799. xxtUnionPtr    xxGlobalRecoverySet;
  8800. # endif
  8801. {
  8802.   ParserSIG_tParsAttribute Unqualified_call1;
  8803.   xxtUnion xxUnion;
  8804.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8805. /* line 910 "eiffel_sig.ell" */
  8806.  Call_chain0->Tree = mCall_chain0();                            
  8807.   for (;;) {
  8808.     xxUnion.xxLocalRecoverySet = 109; yyUnqualified_call (& Unqualified_call1, & xxUnion); /*  '.' */
  8809. /* line 911 "eiffel_sig.ell" */
  8810.  Call_chain0->Tree = mCall_chain1(Unqualified_call1.Tree, Call_chain0->Tree);        
  8811.     if (! ((xxToken == 10 /* '.' */))) {
  8812.       if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */)) break;
  8813.       xxExpected (110, 110, xxGlobalRecoverySet); /*  '.' Current Result Id /  '.' Current Result Id */
  8814.       if (! ((xxToken == 10 /* '.' */) || (xxVerticalSet [xxToken + 756] & 1 << 7 /*  Current Result Id */))) break;
  8815.     }
  8816.     if (xxToken != 10 /* '.' */)
  8817.       xxRecoveryLiteral (10, 110, xxGlobalRecoverySet); /*  '.' Current Result Id */
  8818.     else {
  8819.       xxToken =     EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8820.     }
  8821.   }
  8822. /* line 912 "eiffel_sig.ell" */
  8823.  Call_chain0->Tree = ReverseTree(Call_chain0->Tree);                    
  8824. }
  8825.  
  8826. static void yyUnqualified_call
  8827. # if defined __STDC__ | defined __cplusplus
  8828. (ParserSIG_tParsAttribute * Unqualified_call0, xxtUnionPtr xxGlobalRecoverySet)
  8829. # else
  8830. (Unqualified_call0, xxGlobalRecoverySet)
  8831. ParserSIG_tParsAttribute    * Unqualified_call0;
  8832. xxtUnionPtr    xxGlobalRecoverySet;
  8833. # endif
  8834. {
  8835.   ParserSIG_tParsAttribute Actuals1;
  8836.   ParserSIG_tParsAttribute Entity1;
  8837.   xxtUnion xxUnion;
  8838.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8839.   xxUnion.xxLocalRecoverySet = 207; yyEntity (& Entity1, & xxUnion); /*  '(' */
  8840. /* line 916 "eiffel_sig.ell" */
  8841.  Unqualified_call0->Tree = mUnqual_call1(Entity1.Tree, mActuals0());            
  8842.   for (;;) {
  8843.     if ((xxToken == 17 /* '(' */)) {
  8844.       xxUnion.xxLocalRecoverySet = 0; yyActuals (& Actuals1, & xxUnion); /*  */
  8845. /* line 917 "eiffel_sig.ell" */
  8846.  Unqualified_call0->Tree->Unqual_call1.Actuals =  Actuals1.Tree;            
  8847.       break;
  8848.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '.' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  8849.     xxExpected (207, 207, xxGlobalRecoverySet); /*  '(' /  '(' */
  8850.   }
  8851. }
  8852.  
  8853. static void yyActuals
  8854. # if defined __STDC__ | defined __cplusplus
  8855. (ParserSIG_tParsAttribute * Actuals0, xxtUnionPtr xxGlobalRecoverySet)
  8856. # else
  8857. (Actuals0, xxGlobalRecoverySet)
  8858. ParserSIG_tParsAttribute    * Actuals0;
  8859. xxtUnionPtr    xxGlobalRecoverySet;
  8860. # endif
  8861. {
  8862.   ParserSIG_tParsAttribute Actual_list1;
  8863.   xxtUnion xxUnion;
  8864.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8865.   if (xxToken != 17 /* '(' */)
  8866.     xxRecoveryLiteral (17, 208, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' ')' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id */
  8867.   else {
  8868.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8869.   }
  8870.   xxUnion.xxLocalRecoverySet = 83; yyActual_list (& Actual_list1, & xxUnion); /*  ')' */
  8871.   if (xxToken != 18 /* ')' */)
  8872.     xxRecoveryLiteral (18, 83, xxGlobalRecoverySet); /*  ')' */
  8873.   else {
  8874.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8875.   }
  8876. /* line 922 "eiffel_sig.ell" */
  8877.  Actuals0->Tree = mActuals1(ReverseTree(Actual_list1.Tree));                
  8878. }
  8879.  
  8880. static void yyActual_list
  8881. # if defined __STDC__ | defined __cplusplus
  8882. (ParserSIG_tParsAttribute * Actual_list0, xxtUnionPtr xxGlobalRecoverySet)
  8883. # else
  8884. (Actual_list0, xxGlobalRecoverySet)
  8885. ParserSIG_tParsAttribute    * Actual_list0;
  8886. xxtUnionPtr    xxGlobalRecoverySet;
  8887. # endif
  8888. {
  8889.   ParserSIG_tParsAttribute Actual1;
  8890.   xxtUnion xxUnion;
  8891.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8892. /* line 924 "eiffel_sig.ell" */
  8893.  Actual_list0->Tree = mActual_list0();                            
  8894.   for (;;) {
  8895.     if ((xxVerticalSet [xxToken + 864] & 1 << 2 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id */)) {
  8896.       for (;;) {
  8897.         xxUnion.xxLocalRecoverySet = 16; yyActual (& Actual1, & xxUnion); /*  ',' */
  8898. /* line 925 "eiffel_sig.ell" */
  8899.  Actual_list0->Tree = mActual_list1(Actual1.Tree, Actual_list0->Tree);            
  8900.         if (! ((xxToken == 8 /* ',' */))) {
  8901.           if ((xxToken == 18 /* ')' */)) break;
  8902.           xxExpected (16, 210, xxGlobalRecoverySet); /*  ',' /  Character_constant Bit_sequence Integer Real Manifest_string Free_op ',' '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id */
  8903.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 864] & 1 << 2 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id */))) break;
  8904.         }
  8905.         if (xxToken != 8 /* ',' */)
  8906.           xxRecoveryLiteral (8, 210, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ',' '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id */
  8907.         else {
  8908.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  8909.         }
  8910.       }
  8911.       break;
  8912.     } else if ((xxToken == 18 /* ')' */) || xxIsRepairMode) break;
  8913.     xxExpected (209, 209, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id */
  8914.   }
  8915. }
  8916.  
  8917. static void yyActual
  8918. # if defined __STDC__ | defined __cplusplus
  8919. (ParserSIG_tParsAttribute * Actual0, xxtUnionPtr xxGlobalRecoverySet)
  8920. # else
  8921. (Actual0, xxGlobalRecoverySet)
  8922. ParserSIG_tParsAttribute    * Actual0;
  8923. xxtUnionPtr    xxGlobalRecoverySet;
  8924. # endif
  8925. {
  8926.   ParserSIG_tParsAttribute Expression1;
  8927.   ParserSIG_tParsAttribute Address1;
  8928.   xxtUnion xxUnion;
  8929.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  8930.   for (;;) {
  8931.     switch (xxToken) {
  8932.     case 1 /* Character_constant */ :; 
  8933.     case 2 /* Bit_sequence */ :; 
  8934.     case 3 /* Integer */ :; 
  8935.     case 4 /* Real */ :; 
  8936.     case 5 /* Manifest_string */ :; 
  8937.     case 6 /* Free_op */ :; 
  8938.     case 17 /* '(' */ :; 
  8939.     case 23 /* '<<' */ :; 
  8940.     case 29 /* plus */ :; 
  8941.     case 30 /* minus */ :; 
  8942.     case 44 /* Current */ :; 
  8943.     case 56 /* false */ :; 
  8944.     case 74 /* 'old' */ :; 
  8945.     case 83 /* Result */ :; 
  8946.     case 88 /* 'strip' */ :; 
  8947.     case 90 /* true */ :; 
  8948.     case 105 /* not */ :; 
  8949.     case 106 /* Id */ :; 
  8950.       xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  8951. /* line 929 "eiffel_sig.ell" */
  8952.  Actual0->Tree = Expression1.Tree;                            
  8953.       goto xx41;
  8954.     case 31 /* '$' */ :; 
  8955.       xxUnion.xxLocalRecoverySet = 0; yyAddress (& Address1, & xxUnion); /*  */
  8956. /* line 930 "eiffel_sig.ell" */
  8957.  Actual0->Tree = mAddr(Address1.Tree);                            
  8958.       goto xx41;
  8959.     case 7:;
  8960.     case 8:;
  8961.     case 9:;
  8962.     case 10:;
  8963.     case 11:;
  8964.     case 12:;
  8965.     case 13:;
  8966.     case 14:;
  8967.     case 15:;
  8968.     case 16:;
  8969.     case 18:;
  8970.     case 19:;
  8971.     case 20:;
  8972.     case 21:;
  8973.     case 22:;
  8974.     case 24:;
  8975.     case 25:;
  8976.     case 26:;
  8977.     case 27:;
  8978.     case 28:;
  8979.     case 32:;
  8980.     case 33:;
  8981.     case 34:;
  8982.     case 35:;
  8983.     case 36:;
  8984.     case 37:;
  8985.     case 38:;
  8986.     case 39:;
  8987.     case 40:;
  8988.     case 41:;
  8989.     case 42:;
  8990.     case 43:;
  8991.     case 45:;
  8992.     case 46:;
  8993.     case 47:;
  8994.     case 48:;
  8995.     case 49:;
  8996.     case 50:;
  8997.     case 51:;
  8998.     case 52:;
  8999.     case 53:;
  9000.     case 54:;
  9001.     case 55:;
  9002.     case 57:;
  9003.     case 58:;
  9004.     case 59:;
  9005.     case 60:;
  9006.     case 61:;
  9007.     case 62:;
  9008.     case 63:;
  9009.     case 64:;
  9010.     case 65:;
  9011.     case 66:;
  9012.     case 67:;
  9013.     case 68:;
  9014.     case 69:;
  9015.     case 70:;
  9016.     case 71:;
  9017.     case 72:;
  9018.     case 73:;
  9019.     case 75:;
  9020.     case 76:;
  9021.     case 77:;
  9022.     case 78:;
  9023.     case 79:;
  9024.     case 80:;
  9025.     case 81:;
  9026.     case 82:;
  9027.     case 84:;
  9028.     case 85:;
  9029.     case 86:;
  9030.     case 87:;
  9031.     case 89:;
  9032.     case 91:;
  9033.     case 92:;
  9034.     case 93:;
  9035.     case 94:;
  9036.     case 95:;
  9037.     case 96:;
  9038.     case 97:;
  9039.     case 98:;
  9040.     case 99:;
  9041.     case 100:;
  9042.     case 101:;
  9043.     case 102:;
  9044.     case 103:;
  9045.     case 104:;
  9046.     default:
  9047.       if (xxIsRepairMode) {
  9048.         xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  9049. /* line 929 "eiffel_sig.ell" */
  9050.  Actual0->Tree = Expression1.Tree;                            
  9051.         goto xx41;
  9052.       }
  9053.       xxExpected (209, 209, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus '$' Current false 'old' Result 'strip' true not Id */
  9054.     }
  9055.   }
  9056.   xx41:;
  9057. }
  9058.  
  9059. static void yyAddress
  9060. # if defined __STDC__ | defined __cplusplus
  9061. (ParserSIG_tParsAttribute * Address0, xxtUnionPtr xxGlobalRecoverySet)
  9062. # else
  9063. (Address0, xxGlobalRecoverySet)
  9064. ParserSIG_tParsAttribute    * Address0;
  9065. xxtUnionPtr    xxGlobalRecoverySet;
  9066. # endif
  9067. {
  9068.   ParserSIG_tParsAttribute Address_mark1;
  9069.   xxtUnion xxUnion;
  9070.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9071.   if (xxToken != 31 /* '$' */)
  9072.     xxRecoveryLiteral (31, 211, xxGlobalRecoverySet); /*  '$' Current Result Id */
  9073.   else {
  9074.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9075.   }
  9076.   xxUnion.xxLocalRecoverySet = 0; yyAddress_mark (& Address_mark1, & xxUnion); /*  */
  9077. /* line 933 "eiffel_sig.ell" */
  9078.  Address0->Tree = Address_mark1.Tree;                            
  9079. }
  9080.  
  9081. static void yyAddress_mark
  9082. # if defined __STDC__ | defined __cplusplus
  9083. (ParserSIG_tParsAttribute * Address_mark0, xxtUnionPtr xxGlobalRecoverySet)
  9084. # else
  9085. (Address_mark0, xxGlobalRecoverySet)
  9086. ParserSIG_tParsAttribute    * Address_mark0;
  9087. xxtUnionPtr    xxGlobalRecoverySet;
  9088. # endif
  9089. {
  9090.     EiffelScan_tScanAttribute Current1;
  9091.     EiffelScan_tScanAttribute Result1;
  9092.   ParserSIG_tParsAttribute Identifier1;
  9093.   xxtUnion xxUnion;
  9094.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9095.   for (;;) {
  9096.     switch (xxToken) {
  9097.     case 106 /* Id */ :; 
  9098.       xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  9099. /* line 937 "eiffel_sig.ell" */
  9100.  Address_mark0->Tree = Identifier1.Tree;                        
  9101.       goto xx42;
  9102.     case 44 /* Current */ :; 
  9103.       Current1 =       EiffelScan_Attribute;
  9104.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9105. /* line 938 "eiffel_sig.ell" */
  9106.  Address_mark0->Tree = mCurrent(Current1.Position);                    
  9107.       goto xx42;
  9108.     case 83 /* Result */ :; 
  9109.       Result1 =       EiffelScan_Attribute;
  9110.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9111. /* line 939 "eiffel_sig.ell" */
  9112.  Address_mark0->Tree = mResult(Result1.Position);                    
  9113.       goto xx42;
  9114.     case 45:;
  9115.     case 46:;
  9116.     case 47:;
  9117.     case 48:;
  9118.     case 49:;
  9119.     case 50:;
  9120.     case 51:;
  9121.     case 52:;
  9122.     case 53:;
  9123.     case 54:;
  9124.     case 55:;
  9125.     case 56:;
  9126.     case 57:;
  9127.     case 58:;
  9128.     case 59:;
  9129.     case 60:;
  9130.     case 61:;
  9131.     case 62:;
  9132.     case 63:;
  9133.     case 64:;
  9134.     case 65:;
  9135.     case 66:;
  9136.     case 67:;
  9137.     case 68:;
  9138.     case 69:;
  9139.     case 70:;
  9140.     case 71:;
  9141.     case 72:;
  9142.     case 73:;
  9143.     case 74:;
  9144.     case 75:;
  9145.     case 76:;
  9146.     case 77:;
  9147.     case 78:;
  9148.     case 79:;
  9149.     case 80:;
  9150.     case 81:;
  9151.     case 82:;
  9152.     case 84:;
  9153.     case 85:;
  9154.     case 86:;
  9155.     case 87:;
  9156.     case 88:;
  9157.     case 89:;
  9158.     case 90:;
  9159.     case 91:;
  9160.     case 92:;
  9161.     case 93:;
  9162.     case 94:;
  9163.     case 95:;
  9164.     case 96:;
  9165.     case 97:;
  9166.     case 98:;
  9167.     case 99:;
  9168.     case 100:;
  9169.     case 101:;
  9170.     case 102:;
  9171.     case 103:;
  9172.     case 104:;
  9173.     case 105:;
  9174.     default:
  9175.       if (xxIsRepairMode) {
  9176.         xxUnion.xxLocalRecoverySet = 0; yyIdentifier (& Identifier1, & xxUnion); /*  */
  9177. /* line 937 "eiffel_sig.ell" */
  9178.  Address_mark0->Tree = Identifier1.Tree;                        
  9179.         goto xx42;
  9180.       }
  9181.       xxExpected (190, 190, xxGlobalRecoverySet); /*  Current Result Id /  Current Result Id */
  9182.     }
  9183.   }
  9184.   xx42:;
  9185. }
  9186.  
  9187. static void yyExpression
  9188. # if defined __STDC__ | defined __cplusplus
  9189. (ParserSIG_tParsAttribute * Expression0, xxtUnionPtr xxGlobalRecoverySet)
  9190. # else
  9191. (Expression0, xxGlobalRecoverySet)
  9192. ParserSIG_tParsAttribute    * Expression0;
  9193. xxtUnionPtr    xxGlobalRecoverySet;
  9194. # endif
  9195. {
  9196.   ParserSIG_tParsAttribute Prefix_operator1;
  9197.   ParserSIG_tParsAttribute Expression1;
  9198.   ParserSIG_tParsAttribute Expr_tail1;
  9199.   ParserSIG_tParsAttribute Old1;
  9200.   ParserSIG_tParsAttribute Ident_call1;
  9201.   ParserSIG_tParsAttribute Result_call1;
  9202.   ParserSIG_tParsAttribute Current_call1;
  9203.   ParserSIG_tParsAttribute Manifest_array1;
  9204.   ParserSIG_tParsAttribute No_sign_constant1;
  9205.   ParserSIG_tParsAttribute Strip1;
  9206.   ParserSIG_tParsAttribute Parenth_expr_or_qual_call1;
  9207.   xxtUnion xxUnion;
  9208.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9209.   for (;;) {
  9210.     switch (xxToken) {
  9211.     case 106 /* Id */ :; 
  9212.       xxUnion.xxLocalRecoverySet = 0; yyIdent_call (& Ident_call1, & xxUnion); /*  */
  9213. /* line 944 "eiffel_sig.ell" */
  9214.  Expression0->Tree = Ident_call1.Tree;                            
  9215.       goto xx43;
  9216.     case 83 /* Result */ :; 
  9217.       xxUnion.xxLocalRecoverySet = 0; yyResult_call (& Result_call1, & xxUnion); /*  */
  9218. /* line 945 "eiffel_sig.ell" */
  9219.  Expression0->Tree = Result_call1.Tree;                        
  9220.       goto xx43;
  9221.     case 44 /* Current */ :; 
  9222.       xxUnion.xxLocalRecoverySet = 0; yyCurrent_call (& Current_call1, & xxUnion); /*  */
  9223. /* line 946 "eiffel_sig.ell" */
  9224.  Expression0->Tree = Current_call1.Tree;                        
  9225.       goto xx43;
  9226.     case 23 /* '<<' */ :; 
  9227.       xxUnion.xxLocalRecoverySet = 127; yyManifest_array (& Manifest_array1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9228. /* line 947 "eiffel_sig.ell" */
  9229.  Expression0->Tree = Manifest_array1.Tree;                        
  9230.       for (;;) {
  9231.         if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9232.           xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9233. /* line 948 "eiffel_sig.ell" */
  9234.  Expression0->Tree = mBin_expr(Manifest_array1.Tree, Expr_tail1.Tree->Bin_expr.Op,
  9235.                             Expr_tail1.Tree->Bin_expr.Rop);                
  9236.           break;
  9237.         } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9238.         xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9239.       }
  9240.       goto xx43;
  9241.     case 1 /* Character_constant */ :; 
  9242.     case 2 /* Bit_sequence */ :; 
  9243.     case 3 /* Integer */ :; 
  9244.     case 4 /* Real */ :; 
  9245.     case 5 /* Manifest_string */ :; 
  9246.     case 56 /* false */ :; 
  9247.     case 90 /* true */ :; 
  9248.       xxUnion.xxLocalRecoverySet = 127; yyNo_sign_constant (& No_sign_constant1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9249. /* line 950 "eiffel_sig.ell" */
  9250.  Expression0->Tree = No_sign_constant1.Tree;                        
  9251.       for (;;) {
  9252.         if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9253.           xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9254. /* line 951 "eiffel_sig.ell" */
  9255.  Expression0->Tree = mBin_expr(No_sign_constant1.Tree, Expr_tail1.Tree->Bin_expr.Op, 
  9256.                                         Expr_tail1.Tree->Bin_expr.Rop);    
  9257.           break;
  9258.         } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9259.         xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9260.       }
  9261.       goto xx43;
  9262.     case 74 /* 'old' */ :; 
  9263.       xxUnion.xxLocalRecoverySet = 127; yyOld (& Old1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9264. /* line 953 "eiffel_sig.ell" */
  9265.  Expression0->Tree = Old1.Tree;                            
  9266.       for (;;) {
  9267.         if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9268.           xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9269. /* line 954 "eiffel_sig.ell" */
  9270.  Expression0->Tree = mBin_expr(Old1.Tree, Expr_tail1.Tree->Bin_expr.Op,
  9271.                                         Expr_tail1.Tree->Bin_expr.Rop);    
  9272.           break;
  9273.         } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9274.         xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9275.       }
  9276.       goto xx43;
  9277.     case 88 /* 'strip' */ :; 
  9278.       xxUnion.xxLocalRecoverySet = 127; yyStrip (& Strip1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9279. /* line 956 "eiffel_sig.ell" */
  9280.  Expression0->Tree = Strip1.Tree;                            
  9281.       for (;;) {
  9282.         if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9283.           xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9284. /* line 957 "eiffel_sig.ell" */
  9285.  Expression0->Tree = mBin_expr(Strip1.Tree, Expr_tail1.Tree->Bin_expr.Op,
  9286.                                         Expr_tail1.Tree->Bin_expr.Rop);    
  9287.           break;
  9288.         } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9289.         xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9290.       }
  9291.       goto xx43;
  9292.     case 17 /* '(' */ :; 
  9293.       xxUnion.xxLocalRecoverySet = 0; yyParenth_expr_or_qual_call (& Parenth_expr_or_qual_call1, & xxUnion); /*  */
  9294. /* line 959 "eiffel_sig.ell" */
  9295.  Expression0->Tree = Parenth_expr_or_qual_call1.Tree;                
  9296.       goto xx43;
  9297.     case 6 /* Free_op */ :; 
  9298.     case 29 /* plus */ :; 
  9299.     case 30 /* minus */ :; 
  9300.     case 105 /* not */ :; 
  9301.       xxUnion.xxLocalRecoverySet = 129; yyPrefix_operator (& Prefix_operator1, & xxUnion); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  9302.       xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  9303. /* line 960 "eiffel_sig.ell" */
  9304.  Expression0->Tree = mUn_expr(Prefix_operator1.Tree, Expression1.Tree);     
  9305.       goto xx43;
  9306.     case 7:;
  9307.     case 8:;
  9308.     case 9:;
  9309.     case 10:;
  9310.     case 11:;
  9311.     case 12:;
  9312.     case 13:;
  9313.     case 14:;
  9314.     case 15:;
  9315.     case 16:;
  9316.     case 18:;
  9317.     case 19:;
  9318.     case 20:;
  9319.     case 21:;
  9320.     case 22:;
  9321.     case 24:;
  9322.     case 25:;
  9323.     case 26:;
  9324.     case 27:;
  9325.     case 28:;
  9326.     case 31:;
  9327.     case 32:;
  9328.     case 33:;
  9329.     case 34:;
  9330.     case 35:;
  9331.     case 36:;
  9332.     case 37:;
  9333.     case 38:;
  9334.     case 39:;
  9335.     case 40:;
  9336.     case 41:;
  9337.     case 42:;
  9338.     case 43:;
  9339.     case 45:;
  9340.     case 46:;
  9341.     case 47:;
  9342.     case 48:;
  9343.     case 49:;
  9344.     case 50:;
  9345.     case 51:;
  9346.     case 52:;
  9347.     case 53:;
  9348.     case 54:;
  9349.     case 55:;
  9350.     case 57:;
  9351.     case 58:;
  9352.     case 59:;
  9353.     case 60:;
  9354.     case 61:;
  9355.     case 62:;
  9356.     case 63:;
  9357.     case 64:;
  9358.     case 65:;
  9359.     case 66:;
  9360.     case 67:;
  9361.     case 68:;
  9362.     case 69:;
  9363.     case 70:;
  9364.     case 71:;
  9365.     case 72:;
  9366.     case 73:;
  9367.     case 75:;
  9368.     case 76:;
  9369.     case 77:;
  9370.     case 78:;
  9371.     case 79:;
  9372.     case 80:;
  9373.     case 81:;
  9374.     case 82:;
  9375.     case 84:;
  9376.     case 85:;
  9377.     case 86:;
  9378.     case 87:;
  9379.     case 89:;
  9380.     case 91:;
  9381.     case 92:;
  9382.     case 93:;
  9383.     case 94:;
  9384.     case 95:;
  9385.     case 96:;
  9386.     case 97:;
  9387.     case 98:;
  9388.     case 99:;
  9389.     case 100:;
  9390.     case 101:;
  9391.     case 102:;
  9392.     case 103:;
  9393.     case 104:;
  9394.     default:
  9395.       if (xxIsRepairMode) {
  9396.         xxUnion.xxLocalRecoverySet = 0; yyIdent_call (& Ident_call1, & xxUnion); /*  */
  9397. /* line 944 "eiffel_sig.ell" */
  9398.  Expression0->Tree = Ident_call1.Tree;                            
  9399.         goto xx43;
  9400.       }
  9401.       xxExpected (129, 129, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  9402.     }
  9403.   }
  9404.   xx43:;
  9405. }
  9406.  
  9407. static void yyExpr_tail
  9408. # if defined __STDC__ | defined __cplusplus
  9409. (ParserSIG_tParsAttribute * Expr_tail0, xxtUnionPtr xxGlobalRecoverySet)
  9410. # else
  9411. (Expr_tail0, xxGlobalRecoverySet)
  9412. ParserSIG_tParsAttribute    * Expr_tail0;
  9413. xxtUnionPtr    xxGlobalRecoverySet;
  9414. # endif
  9415. {
  9416.   ParserSIG_tParsAttribute Infix_operator1;
  9417.   ParserSIG_tParsAttribute Expression1;
  9418.   ParserSIG_tParsAttribute Comparison1;
  9419.   xxtUnion xxUnion;
  9420.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9421.   for (;;) {
  9422.     switch (xxToken) {
  9423.     case 6 /* Free_op */ :; 
  9424.     case 29 /* plus */ :; 
  9425.     case 30 /* minus */ :; 
  9426.     case 33 /* div */ :; 
  9427.     case 36 /* and */ :; 
  9428.     case 61 /* implies */ :; 
  9429.     case 76 /* or */ :; 
  9430.     case 96 /* xor */ :; 
  9431.     case 97 /* times */ :; 
  9432.     case 98 /* smaller */ :; 
  9433.     case 99 /* greater */ :; 
  9434.     case 100 /* sm_eq */ :; 
  9435.     case 101 /* gr_eq */ :; 
  9436.     case 102 /* idiv */ :; 
  9437.     case 103 /* imod */ :; 
  9438.     case 104 /* power */ :; 
  9439.       xxUnion.xxLocalRecoverySet = 129; yyInfix_operator (& Infix_operator1, & xxUnion); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  9440. /* line 964 "eiffel_sig.ell" */
  9441.  Expr_tail0->Tree = mBin_expr(mExpression0(), Infix_operator1.Tree, mExpression0());    
  9442.       goto xx44;
  9443.     case 13 /* Eq */ :; 
  9444.     case 14 /* Not_eq */ :; 
  9445.       xxUnion.xxLocalRecoverySet = 129; yyComparison (& Comparison1, & xxUnion); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  9446. /* line 965 "eiffel_sig.ell" */
  9447.  Expr_tail0->Tree = mBin_expr(mExpression0(), Comparison1.Tree, mExpression0());    
  9448.       goto xx44;
  9449.     case 7:;
  9450.     case 8:;
  9451.     case 9:;
  9452.     case 10:;
  9453.     case 11:;
  9454.     case 12:;
  9455.     case 15:;
  9456.     case 16:;
  9457.     case 17:;
  9458.     case 18:;
  9459.     case 19:;
  9460.     case 20:;
  9461.     case 21:;
  9462.     case 22:;
  9463.     case 23:;
  9464.     case 24:;
  9465.     case 25:;
  9466.     case 26:;
  9467.     case 27:;
  9468.     case 28:;
  9469.     case 31:;
  9470.     case 32:;
  9471.     case 34:;
  9472.     case 35:;
  9473.     case 37:;
  9474.     case 38:;
  9475.     case 39:;
  9476.     case 40:;
  9477.     case 41:;
  9478.     case 42:;
  9479.     case 43:;
  9480.     case 44:;
  9481.     case 45:;
  9482.     case 46:;
  9483.     case 47:;
  9484.     case 48:;
  9485.     case 49:;
  9486.     case 50:;
  9487.     case 51:;
  9488.     case 52:;
  9489.     case 53:;
  9490.     case 54:;
  9491.     case 55:;
  9492.     case 56:;
  9493.     case 57:;
  9494.     case 58:;
  9495.     case 59:;
  9496.     case 60:;
  9497.     case 62:;
  9498.     case 63:;
  9499.     case 64:;
  9500.     case 65:;
  9501.     case 66:;
  9502.     case 67:;
  9503.     case 68:;
  9504.     case 69:;
  9505.     case 70:;
  9506.     case 71:;
  9507.     case 72:;
  9508.     case 73:;
  9509.     case 74:;
  9510.     case 75:;
  9511.     case 77:;
  9512.     case 78:;
  9513.     case 79:;
  9514.     case 80:;
  9515.     case 81:;
  9516.     case 82:;
  9517.     case 83:;
  9518.     case 84:;
  9519.     case 85:;
  9520.     case 86:;
  9521.     case 87:;
  9522.     case 88:;
  9523.     case 89:;
  9524.     case 90:;
  9525.     case 91:;
  9526.     case 92:;
  9527.     case 93:;
  9528.     case 94:;
  9529.     case 95:;
  9530.     default:
  9531.       if (xxIsRepairMode) {
  9532.         xxUnion.xxLocalRecoverySet = 129; yyInfix_operator (& Infix_operator1, & xxUnion); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  9533. /* line 964 "eiffel_sig.ell" */
  9534.  Expr_tail0->Tree = mBin_expr(mExpression0(), Infix_operator1.Tree, mExpression0());    
  9535.         goto xx44;
  9536.       }
  9537.       xxExpected (212, 212, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op Eq Not_eq '(' '<<' plus minus div and Current false implies 'old' or Result 'strip' true xor times smaller greater sm_eq gr_eq idiv imod power not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op Eq Not_eq '(' '<<' plus minus div and Current false implies 'old' or Result 'strip' true xor times smaller greater sm_eq gr_eq idiv imod power not Id */
  9538.     }
  9539.   }
  9540.   xx44:;
  9541.   xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  9542. /* line 966 "eiffel_sig.ell" */
  9543.  Expr_tail0->Tree->Bin_expr.Rop = Expression1.Tree;                    
  9544. }
  9545.  
  9546. static void yyIdent_call
  9547. # if defined __STDC__ | defined __cplusplus
  9548. (ParserSIG_tParsAttribute * Ident_call0, xxtUnionPtr xxGlobalRecoverySet)
  9549. # else
  9550. (Ident_call0, xxGlobalRecoverySet)
  9551. ParserSIG_tParsAttribute    * Ident_call0;
  9552. xxtUnionPtr    xxGlobalRecoverySet;
  9553. # endif
  9554. {
  9555.   ParserSIG_tParsAttribute Identifier1;
  9556.   ParserSIG_tParsAttribute Actuals1;
  9557.   ParserSIG_tParsAttribute Call_chain1;
  9558.   ParserSIG_tParsAttribute Expr_tail1;
  9559.   xxtUnion xxUnion;
  9560.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9561.   xxUnion.xxLocalRecoverySet = 124; yyIdentifier (& Identifier1, & xxUnion); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9562. /* line 970 "eiffel_sig.ell" */
  9563.  Ident_call0->Tree = mCall_chain1(mUnqual_call1(Identifier1.Tree, mActuals0()) ,mCall_chain0()); 
  9564.   for (;;) {
  9565.     if ((xxToken == 17 /* '(' */)) {
  9566.       xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9567. /* line 971 "eiffel_sig.ell" */
  9568.  Ident_call0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree;    
  9569.       break;
  9570.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '.' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9571.     xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9572.   }
  9573.   for (;;) {
  9574.     if ((xxToken == 10 /* '.' */)) {
  9575.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9576.       xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9577. /* line 972 "eiffel_sig.ell" */
  9578.  Ident_call0->Tree->Call_chain1.Call_chain = Call_chain1.Tree ;            
  9579.       break;
  9580.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9581.     xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9582.   }
  9583. /* line 973 "eiffel_sig.ell" */
  9584.  Ident_call0->Tree = mCall(mExpression0(), Ident_call0->Tree);                
  9585.   for (;;) {
  9586.     if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9587.       xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9588. /* line 974 "eiffel_sig.ell" */
  9589.  Ident_call0->Tree = mBin_expr(Ident_call0->Tree, Expr_tail1.Tree->Bin_expr.Op, 
  9590.                                         Expr_tail1.Tree->Bin_expr.Rop);    
  9591.       break;
  9592.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9593.     xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9594.   }
  9595. }
  9596.  
  9597. static void yyResult_call
  9598. # if defined __STDC__ | defined __cplusplus
  9599. (ParserSIG_tParsAttribute * Result_call0, xxtUnionPtr xxGlobalRecoverySet)
  9600. # else
  9601. (Result_call0, xxGlobalRecoverySet)
  9602. ParserSIG_tParsAttribute    * Result_call0;
  9603. xxtUnionPtr    xxGlobalRecoverySet;
  9604. # endif
  9605. {
  9606.     EiffelScan_tScanAttribute Result1;
  9607.   ParserSIG_tParsAttribute Actuals1;
  9608.   ParserSIG_tParsAttribute Call_chain1;
  9609.   ParserSIG_tParsAttribute Expr_tail1;
  9610.   xxtUnion xxUnion;
  9611.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9612.   if (xxToken != 83 /* Result */)
  9613.     xxRecoveryTerminal (83, 213, xxGlobalRecoverySet, & Result1); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or Result xor times smaller greater sm_eq gr_eq idiv imod power */
  9614.   else {
  9615.     Result1 =   EiffelScan_Attribute;
  9616.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9617.   }
  9618. /* line 979 "eiffel_sig.ell" */
  9619.  Result_call0->Tree = mCall_chain1(mUnqual_call1( mResult(Result1.Position),
  9620.                                         mActuals0()), mCall_chain0());    
  9621.   for (;;) {
  9622.     if ((xxToken == 17 /* '(' */)) {
  9623.       xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9624. /* line 981 "eiffel_sig.ell" */
  9625.  Result_call0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree;     
  9626.       break;
  9627.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '.' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9628.     xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9629.   }
  9630.   for (;;) {
  9631.     if ((xxToken == 10 /* '.' */)) {
  9632.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9633.       xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9634. /* line 982 "eiffel_sig.ell" */
  9635.  Result_call0->Tree->Call_chain1.Call_chain = Call_chain1.Tree ;            
  9636.       break;
  9637.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9638.     xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9639.   }
  9640. /* line 983 "eiffel_sig.ell" */
  9641.  Result_call0->Tree = mCall(mExpression0(), Result_call0->Tree);            
  9642.   for (;;) {
  9643.     if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9644.       xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9645. /* line 984 "eiffel_sig.ell" */
  9646.  Result_call0->Tree = mBin_expr(Result_call0->Tree, Expr_tail1.Tree->Bin_expr.Op, 
  9647.                                         Expr_tail1.Tree->Bin_expr.Rop); 
  9648.       break;
  9649.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9650.     xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9651.   }
  9652. }
  9653.  
  9654. static void yyCurrent_call
  9655. # if defined __STDC__ | defined __cplusplus
  9656. (ParserSIG_tParsAttribute * Current_call0, xxtUnionPtr xxGlobalRecoverySet)
  9657. # else
  9658. (Current_call0, xxGlobalRecoverySet)
  9659. ParserSIG_tParsAttribute    * Current_call0;
  9660. xxtUnionPtr    xxGlobalRecoverySet;
  9661. # endif
  9662. {
  9663.     EiffelScan_tScanAttribute Current1;
  9664.   ParserSIG_tParsAttribute Actuals1;
  9665.   ParserSIG_tParsAttribute Call_chain1;
  9666.   ParserSIG_tParsAttribute Expr_tail1;
  9667.   xxtUnion xxUnion;
  9668.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9669.   if (xxToken != 44 /* Current */)
  9670.     xxRecoveryTerminal (44, 214, xxGlobalRecoverySet, & Current1); /*  Free_op '.' Eq Not_eq '(' plus minus div and Current implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9671.   else {
  9672.     Current1 =   EiffelScan_Attribute;
  9673.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9674.   }
  9675. /* line 990 "eiffel_sig.ell" */
  9676.  Current_call0->Tree = mCall_chain1(mUnqual_call1( mCurrent(Current1.Position), mActuals0()),
  9677.                                                  mCall_chain0());
  9678.   for (;;) {
  9679.     if ((xxToken == 17 /* '(' */)) {
  9680.       xxUnion.xxLocalRecoverySet = 125; yyActuals (& Actuals1, & xxUnion); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9681. /* line 992 "eiffel_sig.ell" */
  9682.  Current_call0->Tree->Call_chain1.Unqual_call->Unqual_call1.Actuals = Actuals1.Tree;     
  9683.       break;
  9684.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 1 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '.' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9685.     xxExpected (124, 124, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq '(' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9686.   }
  9687.   for (;;) {
  9688.     if ((xxToken == 10 /* '.' */)) {
  9689.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9690.       xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9691. /* line 993 "eiffel_sig.ell" */
  9692.  Current_call0->Tree->Call_chain1.Call_chain = Call_chain1.Tree ;            
  9693.       break;
  9694.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9695.     xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9696.   }
  9697. /* line 994 "eiffel_sig.ell" */
  9698.  Current_call0->Tree = mCall(mExpression0(), Current_call0->Tree);            
  9699.   for (;;) {
  9700.     if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9701.       xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9702. /* line 995 "eiffel_sig.ell" */
  9703.  Current_call0->Tree = mBin_expr(Current_call0->Tree, Expr_tail1.Tree->Bin_expr.Op, 
  9704.                                         Expr_tail1.Tree->Bin_expr.Rop);    
  9705.       break;
  9706.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9707.     xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9708.   }
  9709. }
  9710.  
  9711. static void yyParenth_expr_or_qual_call
  9712. # if defined __STDC__ | defined __cplusplus
  9713. (ParserSIG_tParsAttribute * Parenth_expr_or_qual_call0, xxtUnionPtr xxGlobalRecoverySet)
  9714. # else
  9715. (Parenth_expr_or_qual_call0, xxGlobalRecoverySet)
  9716. ParserSIG_tParsAttribute    * Parenth_expr_or_qual_call0;
  9717. xxtUnionPtr    xxGlobalRecoverySet;
  9718. # endif
  9719. {
  9720.   ParserSIG_tParsAttribute Call_chain1;
  9721.   ParserSIG_tParsAttribute Expression1;
  9722.   ParserSIG_tParsAttribute Expr_tail1;
  9723.   xxtUnion xxUnion;
  9724.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9725.   if (xxToken != 17 /* '(' */)
  9726.     xxRecoveryLiteral (17, 215, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '.' Eq Not_eq '(' ')' '<<' plus minus div and Current false implies 'old' or Result 'strip' true xor times smaller greater sm_eq gr_eq idiv imod power not Id */
  9727.   else {
  9728.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9729.   }
  9730.   xxUnion.xxLocalRecoverySet = 216; yyExpression (& Expression1, & xxUnion); /*  Free_op '.' Eq Not_eq ')' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9731.   if (xxToken != 18 /* ')' */)
  9732.     xxRecoveryLiteral (18, 216, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq ')' plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9733.   else {
  9734.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9735.   }
  9736. /* line 1002 "eiffel_sig.ell" */
  9737.  Parenth_expr_or_qual_call0->Tree = mParenth(Expression1.Tree);            
  9738.   for (;;) {
  9739.     if ((xxToken == 10 /* '.' */)) {
  9740.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9741.       xxUnion.xxLocalRecoverySet = 127; yyCall_chain (& Call_chain1, & xxUnion); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9742. /* line 1003 "eiffel_sig.ell" */
  9743.  Parenth_expr_or_qual_call0->Tree = mCall(Expression1.Tree,Call_chain1.Tree);         
  9744.       break;
  9745.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9746.     xxExpected (125, 125, xxGlobalRecoverySet); /*  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op '.' Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9747.   }
  9748.   for (;;) {
  9749.     if ((xxVerticalSet [xxToken + 540] & 1 << 6 /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */)) {
  9750.       xxUnion.xxLocalRecoverySet = 0; yyExpr_tail (& Expr_tail1, & xxUnion); /*  */
  9751. /* line 1004 "eiffel_sig.ell" */
  9752.  Parenth_expr_or_qual_call0->Tree = mBin_expr(Parenth_expr_or_qual_call0->Tree, 
  9753.                         Expr_tail1.Tree->Bin_expr.Op, Expr_tail1.Tree->Bin_expr.Rop);    
  9754.       break;
  9755.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9756.     xxExpected (127, 127, xxGlobalRecoverySet); /*  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power /  Free_op Eq Not_eq plus minus div and implies or xor times smaller greater sm_eq gr_eq idiv imod power */
  9757.   }
  9758. }
  9759.  
  9760. static void yyNo_sign_constant
  9761. # if defined __STDC__ | defined __cplusplus
  9762. (ParserSIG_tParsAttribute * No_sign_constant0, xxtUnionPtr xxGlobalRecoverySet)
  9763. # else
  9764. (No_sign_constant0, xxGlobalRecoverySet)
  9765. ParserSIG_tParsAttribute    * No_sign_constant0;
  9766. xxtUnionPtr    xxGlobalRecoverySet;
  9767. # endif
  9768. {
  9769.     EiffelScan_tScanAttribute Character_constant1;
  9770.     EiffelScan_tScanAttribute Bit_sequence1;
  9771.     EiffelScan_tScanAttribute Integer1;
  9772.     EiffelScan_tScanAttribute Real1;
  9773.     EiffelScan_tScanAttribute Manifest_string1;
  9774.   ParserSIG_tParsAttribute Call_chain1;
  9775.   ParserSIG_tParsAttribute Boolean_constant1;
  9776.   xxtUnion xxUnion;
  9777.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9778.   for (;;) {
  9779.     switch (xxToken) {
  9780.     case 56 /* false */ :; 
  9781.     case 90 /* true */ :; 
  9782.       xxUnion.xxLocalRecoverySet = 0; yyBoolean_constant (& Boolean_constant1, & xxUnion); /*  */
  9783. /* line 1008 "eiffel_sig.ell" */
  9784.  No_sign_constant0->Tree = mSimple_expr(Boolean_constant1.Tree);                     
  9785.       goto xx45;
  9786.     case 1 /* Character_constant */ :; 
  9787.       Character_constant1 =       EiffelScan_Attribute;
  9788.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9789. /* line 1009 "eiffel_sig.ell" */
  9790.  No_sign_constant0->Tree = mSimple_expr(mCh(Character_constant1.Char, 
  9791.                                           Character_constant1.Position));
  9792.       for (;;) {
  9793.         if ((xxToken == 10 /* '.' */)) {
  9794.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9795.           xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  9796. /* line 1011 "eiffel_sig.ell" */
  9797.  No_sign_constant0->Tree = mCall(No_sign_constant0->Tree, Call_chain1.Tree);
  9798.           break;
  9799.         } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9800.         xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  9801.       }
  9802.       goto xx45;
  9803.     case 3 /* Integer */ :; 
  9804.       Integer1 =       EiffelScan_Attribute;
  9805.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9806. /* line 1012 "eiffel_sig.ell" */
  9807.  No_sign_constant0->Tree = mSimple_expr(mInt(mOper(NoPosition, VOID), Integer1.Int, 
  9808.                                                 Integer1.Position));
  9809.       goto xx45;
  9810.     case 4 /* Real */ :; 
  9811.       Real1 =       EiffelScan_Attribute;
  9812.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9813. /* line 1014 "eiffel_sig.ell" */
  9814.  No_sign_constant0->Tree = mSimple_expr(mReal(mOper(NoPosition, VOID), Real1.Real, 
  9815.                                             Real1.Position));    
  9816.       goto xx45;
  9817.     case 5 /* Manifest_string */ :; 
  9818.       Manifest_string1 =       EiffelScan_Attribute;
  9819.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9820. /* line 1016 "eiffel_sig.ell" */
  9821.  No_sign_constant0->Tree = mSimple_expr(mString(Manifest_string1.StringRef, 
  9822.                                         Manifest_string1.Position));    
  9823.       for (;;) {
  9824.         if ((xxToken == 10 /* '.' */)) {
  9825.           xxToken =           EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9826.           xxUnion.xxLocalRecoverySet = 0; yyCall_chain (& Call_chain1, & xxUnion); /*  */
  9827. /* line 1018 "eiffel_sig.ell" */
  9828.  No_sign_constant0->Tree = mCall(No_sign_constant0->Tree, Call_chain1.Tree);        
  9829.           break;
  9830.         } else if ((xxVerticalSet [xxToken + 864] & 1 << 0 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ';' ',' '!' '!!' Eq Not_eq '(' ')' '<<' '>>' plus minus div and 'check' Current 'debug' deferred do else 'elseif' 'end' 'ensure' 'external' false 'from' 'if' implies 'inspect' 'invariant' 'local' 'loop' 'old' once or 'rescue' Result retry 'strip' then true 'until' 'variant' 'when' xor times smaller greater sm_eq gr_eq idiv imod power not Id Comment */) || xxIsRepairMode) break;
  9831.         xxExpected (109, 109, xxGlobalRecoverySet); /*  '.' /  '.' */
  9832.       }
  9833.       goto xx45;
  9834.     case 2 /* Bit_sequence */ :; 
  9835.       Bit_sequence1 =       EiffelScan_Attribute;
  9836.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9837. /* line 1019 "eiffel_sig.ell" */
  9838.  No_sign_constant0->Tree = mSimple_expr(mBitseq(Bit_sequence1.StringRef, 
  9839.                                         Bit_sequence1.Position));     
  9840.       goto xx45;
  9841.     case 6:;
  9842.     case 7:;
  9843.     case 8:;
  9844.     case 9:;
  9845.     case 10:;
  9846.     case 11:;
  9847.     case 12:;
  9848.     case 13:;
  9849.     case 14:;
  9850.     case 15:;
  9851.     case 16:;
  9852.     case 17:;
  9853.     case 18:;
  9854.     case 19:;
  9855.     case 20:;
  9856.     case 21:;
  9857.     case 22:;
  9858.     case 23:;
  9859.     case 24:;
  9860.     case 25:;
  9861.     case 26:;
  9862.     case 27:;
  9863.     case 28:;
  9864.     case 29:;
  9865.     case 30:;
  9866.     case 31:;
  9867.     case 32:;
  9868.     case 33:;
  9869.     case 34:;
  9870.     case 35:;
  9871.     case 36:;
  9872.     case 37:;
  9873.     case 38:;
  9874.     case 39:;
  9875.     case 40:;
  9876.     case 41:;
  9877.     case 42:;
  9878.     case 43:;
  9879.     case 44:;
  9880.     case 45:;
  9881.     case 46:;
  9882.     case 47:;
  9883.     case 48:;
  9884.     case 49:;
  9885.     case 50:;
  9886.     case 51:;
  9887.     case 52:;
  9888.     case 53:;
  9889.     case 54:;
  9890.     case 55:;
  9891.     case 57:;
  9892.     case 58:;
  9893.     case 59:;
  9894.     case 60:;
  9895.     case 61:;
  9896.     case 62:;
  9897.     case 63:;
  9898.     case 64:;
  9899.     case 65:;
  9900.     case 66:;
  9901.     case 67:;
  9902.     case 68:;
  9903.     case 69:;
  9904.     case 70:;
  9905.     case 71:;
  9906.     case 72:;
  9907.     case 73:;
  9908.     case 74:;
  9909.     case 75:;
  9910.     case 76:;
  9911.     case 77:;
  9912.     case 78:;
  9913.     case 79:;
  9914.     case 80:;
  9915.     case 81:;
  9916.     case 82:;
  9917.     case 83:;
  9918.     case 84:;
  9919.     case 85:;
  9920.     case 86:;
  9921.     case 87:;
  9922.     case 88:;
  9923.     case 89:;
  9924.     default:
  9925.       if (xxIsRepairMode) {
  9926.         xxUnion.xxLocalRecoverySet = 0; yyBoolean_constant (& Boolean_constant1, & xxUnion); /*  */
  9927. /* line 1008 "eiffel_sig.ell" */
  9928.  No_sign_constant0->Tree = mSimple_expr(Boolean_constant1.Tree);                     
  9929.         goto xx45;
  9930.       }
  9931.       xxExpected (222, 222, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string false true /  Character_constant Bit_sequence Integer Real Manifest_string false true */
  9932.     }
  9933.   }
  9934.   xx45:;
  9935. }
  9936.  
  9937. static void yyBoolean_expression
  9938. # if defined __STDC__ | defined __cplusplus
  9939. (ParserSIG_tParsAttribute * Boolean_expression0, xxtUnionPtr xxGlobalRecoverySet)
  9940. # else
  9941. (Boolean_expression0, xxGlobalRecoverySet)
  9942. ParserSIG_tParsAttribute    * Boolean_expression0;
  9943. xxtUnionPtr    xxGlobalRecoverySet;
  9944. # endif
  9945. {
  9946.   ParserSIG_tParsAttribute Expression1;
  9947.   xxtUnion xxUnion;
  9948.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  9949.   xxUnion.xxLocalRecoverySet = 0; yyExpression (& Expression1, & xxUnion); /*  */
  9950. /* line 1024 "eiffel_sig.ell" */
  9951.  Boolean_expression0->Tree = Expression1.Tree;                        
  9952. }
  9953.  
  9954. static void yyComparison
  9955. # if defined __STDC__ | defined __cplusplus
  9956. (ParserSIG_tParsAttribute * Comparison0, xxtUnionPtr xxGlobalRecoverySet)
  9957. # else
  9958. (Comparison0, xxGlobalRecoverySet)
  9959. ParserSIG_tParsAttribute    * Comparison0;
  9960. xxtUnionPtr    xxGlobalRecoverySet;
  9961. # endif
  9962. {
  9963.     EiffelScan_tScanAttribute Eq1;
  9964.     EiffelScan_tScanAttribute Not_eq1;
  9965.   for (;;) {
  9966.     switch (xxToken) {
  9967.     case 13 /* Eq */ :; 
  9968.       Eq1 =       EiffelScan_Attribute;
  9969.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9970. /* line 1028 "eiffel_sig.ell" */
  9971.  Comparison0->Tree = mInfix(mOper(Eq1.Position, EQ));                    
  9972.       goto xx46;
  9973.     case 14 /* Not_eq */ :; 
  9974.       Not_eq1 =       EiffelScan_Attribute;
  9975.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9976. /* line 1029 "eiffel_sig.ell" */
  9977.  Comparison0->Tree = mInfix(mOper(Not_eq1.Position, NOT_EQ));                
  9978.       goto xx46;
  9979.     default:
  9980.       if (xxIsRepairMode) {
  9981.         if (xxToken != 13 /* Eq */)
  9982.           xxRecoveryTerminal (13, 223, xxGlobalRecoverySet, & Eq1); /*  Eq */
  9983.         else {
  9984.           Eq1 =         EiffelScan_Attribute;
  9985.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  9986.         }
  9987. /* line 1028 "eiffel_sig.ell" */
  9988.  Comparison0->Tree = mInfix(mOper(Eq1.Position, EQ));                    
  9989.         goto xx46;
  9990.       }
  9991.       xxExpected (225, 225, xxGlobalRecoverySet); /*  Eq Not_eq /  Eq Not_eq */
  9992.     }
  9993.   }
  9994.   xx46:;
  9995. }
  9996.  
  9997. static void yyConstant
  9998. # if defined __STDC__ | defined __cplusplus
  9999. (ParserSIG_tParsAttribute * Constant0, xxtUnionPtr xxGlobalRecoverySet)
  10000. # else
  10001. (Constant0, xxGlobalRecoverySet)
  10002. ParserSIG_tParsAttribute    * Constant0;
  10003. xxtUnionPtr    xxGlobalRecoverySet;
  10004. # endif
  10005. {
  10006.   ParserSIG_tParsAttribute Manifest_constant1;
  10007.   ParserSIG_tParsAttribute Constant_attribute1;
  10008.   xxtUnion xxUnion;
  10009.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10010.   for (;;) {
  10011.     switch (xxToken) {
  10012.     case 1 /* Character_constant */ :; 
  10013.     case 2 /* Bit_sequence */ :; 
  10014.     case 3 /* Integer */ :; 
  10015.     case 4 /* Real */ :; 
  10016.     case 5 /* Manifest_string */ :; 
  10017.     case 7 /* ';' */ :; 
  10018.     case 8 /* ',' */ :; 
  10019.     case 11 /* '!' */ :; 
  10020.     case 18 /* ')' */ :; 
  10021.     case 20 /* ']' */ :; 
  10022.     case 29 /* plus */ :; 
  10023.     case 30 /* minus */ :; 
  10024.     case 46 /* deferred */ :; 
  10025.     case 47 /* do */ :; 
  10026.     case 51 /* 'end' */ :; 
  10027.     case 55 /* 'external' */ :; 
  10028.     case 56 /* false */ :; 
  10029.     case 57 /* 'feature' */ :; 
  10030.     case 59 /* 'frozen' */ :; 
  10031.     case 63 /* infix */ :; 
  10032.     case 67 /* 'invariant' */ :; 
  10033.     case 68 /* 'is' */ :; 
  10034.     case 75 /* once */ :; 
  10035.     case 77 /* prefix */ :; 
  10036.     case 90 /* true */ :; 
  10037.     case 106 /* Id */ :; 
  10038.       xxUnion.xxLocalRecoverySet = 0; yyManifest_constant (& Manifest_constant1, & xxUnion); /*  */
  10039. /* line 1035 "eiffel_sig.ell" */
  10040.  Constant0->Tree = Manifest_constant1.Tree;                        
  10041.       goto xx47;
  10042.     case 44 /* Current */ :; 
  10043.     case 83 /* Result */ :; 
  10044.       xxUnion.xxLocalRecoverySet = 0; yyConstant_attribute (& Constant_attribute1, & xxUnion); /*  */
  10045. /* line 1036 "eiffel_sig.ell" */
  10046.  Constant0->Tree = Constant_attribute1.Tree;                        
  10047.       goto xx47;
  10048.     case 6:;
  10049.     case 9:;
  10050.     case 10:;
  10051.     case 12:;
  10052.     case 13:;
  10053.     case 14:;
  10054.     case 15:;
  10055.     case 16:;
  10056.     case 17:;
  10057.     case 19:;
  10058.     case 21:;
  10059.     case 22:;
  10060.     case 23:;
  10061.     case 24:;
  10062.     case 25:;
  10063.     case 26:;
  10064.     case 27:;
  10065.     case 28:;
  10066.     case 31:;
  10067.     case 32:;
  10068.     case 33:;
  10069.     case 34:;
  10070.     case 35:;
  10071.     case 36:;
  10072.     case 37:;
  10073.     case 38:;
  10074.     case 39:;
  10075.     case 40:;
  10076.     case 41:;
  10077.     case 42:;
  10078.     case 43:;
  10079.     case 45:;
  10080.     case 48:;
  10081.     case 49:;
  10082.     case 50:;
  10083.     case 52:;
  10084.     case 53:;
  10085.     case 54:;
  10086.     case 58:;
  10087.     case 60:;
  10088.     case 61:;
  10089.     case 62:;
  10090.     case 64:;
  10091.     case 65:;
  10092.     case 66:;
  10093.     case 69:;
  10094.     case 70:;
  10095.     case 71:;
  10096.     case 72:;
  10097.     case 73:;
  10098.     case 74:;
  10099.     case 76:;
  10100.     case 78:;
  10101.     case 79:;
  10102.     case 80:;
  10103.     case 81:;
  10104.     case 82:;
  10105.     case 84:;
  10106.     case 85:;
  10107.     case 86:;
  10108.     case 87:;
  10109.     case 88:;
  10110.     case 89:;
  10111.     case 91:;
  10112.     case 92:;
  10113.     case 93:;
  10114.     case 94:;
  10115.     case 95:;
  10116.     case 96:;
  10117.     case 97:;
  10118.     case 98:;
  10119.     case 99:;
  10120.     case 100:;
  10121.     case 101:;
  10122.     case 102:;
  10123.     case 103:;
  10124.     case 104:;
  10125.     case 105:;
  10126.     default:
  10127.       if (xxIsRepairMode) {
  10128.         xxUnion.xxLocalRecoverySet = 0; yyManifest_constant (& Manifest_constant1, & xxUnion); /*  */
  10129. /* line 1035 "eiffel_sig.ell" */
  10130.  Constant0->Tree = Manifest_constant1.Tree;                        
  10131.         goto xx47;
  10132.       }
  10133.       xxExpected (226, 226, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus Current false Result true Id /  Character_constant Bit_sequence Integer Real Manifest_string plus minus Current false Result true Id */
  10134.     }
  10135.   }
  10136.   xx47:;
  10137. }
  10138.  
  10139. static void yyConstant_attribute
  10140. # if defined __STDC__ | defined __cplusplus
  10141. (ParserSIG_tParsAttribute * Constant_attribute0, xxtUnionPtr xxGlobalRecoverySet)
  10142. # else
  10143. (Constant_attribute0, xxGlobalRecoverySet)
  10144. ParserSIG_tParsAttribute    * Constant_attribute0;
  10145. xxtUnionPtr    xxGlobalRecoverySet;
  10146. # endif
  10147. {
  10148.   ParserSIG_tParsAttribute Entity1;
  10149.   xxtUnion xxUnion;
  10150.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10151.   xxUnion.xxLocalRecoverySet = 0; yyEntity (& Entity1, & xxUnion); /*  */
  10152. /* line 1040 "eiffel_sig.ell" */
  10153.  Constant_attribute0->Tree = Entity1.Tree;                        
  10154. }
  10155.  
  10156. static void yyManifest_constant
  10157. # if defined __STDC__ | defined __cplusplus
  10158. (ParserSIG_tParsAttribute * Manifest_constant0, xxtUnionPtr xxGlobalRecoverySet)
  10159. # else
  10160. (Manifest_constant0, xxGlobalRecoverySet)
  10161. ParserSIG_tParsAttribute    * Manifest_constant0;
  10162. xxtUnionPtr    xxGlobalRecoverySet;
  10163. # endif
  10164. {
  10165.     EiffelScan_tScanAttribute Character_constant1;
  10166.     EiffelScan_tScanAttribute Bit_sequence1;
  10167.     EiffelScan_tScanAttribute Manifest_string1;
  10168.   ParserSIG_tParsAttribute Number_constant1;
  10169.   ParserSIG_tParsAttribute Boolean_constant1;
  10170.   xxtUnion xxUnion;
  10171.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10172.   for (;;) {
  10173.     switch (xxToken) {
  10174.     case 56 /* false */ :; 
  10175.     case 90 /* true */ :; 
  10176.       xxUnion.xxLocalRecoverySet = 0; yyBoolean_constant (& Boolean_constant1, & xxUnion); /*  */
  10177. /* line 1046 "eiffel_sig.ell" */
  10178.  Manifest_constant0->Tree = Boolean_constant1.Tree;                     
  10179.       goto xx48;
  10180.     case 1 /* Character_constant */ :; 
  10181.       Character_constant1 =       EiffelScan_Attribute;
  10182.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10183. /* line 1047 "eiffel_sig.ell" */
  10184.  Manifest_constant0->Tree = mCh(Character_constant1.Char, Character_constant1.Position);
  10185.       goto xx48;
  10186.     case 3 /* Integer */ :; 
  10187.     case 4 /* Real */ :; 
  10188.     case 7 /* ';' */ :; 
  10189.     case 8 /* ',' */ :; 
  10190.     case 11 /* '!' */ :; 
  10191.     case 18 /* ')' */ :; 
  10192.     case 20 /* ']' */ :; 
  10193.     case 29 /* plus */ :; 
  10194.     case 30 /* minus */ :; 
  10195.     case 42 /* 'class' */ :; 
  10196.     case 46 /* deferred */ :; 
  10197.     case 47 /* do */ :; 
  10198.     case 51 /* 'end' */ :; 
  10199.     case 53 /* expanded */ :; 
  10200.     case 55 /* 'external' */ :; 
  10201.     case 57 /* 'feature' */ :; 
  10202.     case 59 /* 'frozen' */ :; 
  10203.     case 63 /* infix */ :; 
  10204.     case 67 /* 'invariant' */ :; 
  10205.     case 68 /* 'is' */ :; 
  10206.     case 75 /* once */ :; 
  10207.     case 77 /* prefix */ :; 
  10208.     case 106 /* Id */ :; 
  10209.       xxUnion.xxLocalRecoverySet = 0; yyNumber_constant (& Number_constant1, & xxUnion); /*  */
  10210. /* line 1048 "eiffel_sig.ell" */
  10211.  Manifest_constant0->Tree = Number_constant1.Tree;                     
  10212.       goto xx48;
  10213.     case 5 /* Manifest_string */ :; 
  10214.       Manifest_string1 =       EiffelScan_Attribute;
  10215.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10216. /* line 1049 "eiffel_sig.ell" */
  10217.  Manifest_constant0->Tree = mString(Manifest_string1.StringRef, Manifest_string1.Position);
  10218.       goto xx48;
  10219.     case 2 /* Bit_sequence */ :; 
  10220.       Bit_sequence1 =       EiffelScan_Attribute;
  10221.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10222. /* line 1050 "eiffel_sig.ell" */
  10223.  Manifest_constant0->Tree = mBitseq(Bit_sequence1.StringRef, Bit_sequence1.Position);    
  10224.       goto xx48;
  10225.     case 6:;
  10226.     case 9:;
  10227.     case 10:;
  10228.     case 12:;
  10229.     case 13:;
  10230.     case 14:;
  10231.     case 15:;
  10232.     case 16:;
  10233.     case 17:;
  10234.     case 19:;
  10235.     case 21:;
  10236.     case 22:;
  10237.     case 23:;
  10238.     case 24:;
  10239.     case 25:;
  10240.     case 26:;
  10241.     case 27:;
  10242.     case 28:;
  10243.     case 31:;
  10244.     case 32:;
  10245.     case 33:;
  10246.     case 34:;
  10247.     case 35:;
  10248.     case 36:;
  10249.     case 37:;
  10250.     case 38:;
  10251.     case 39:;
  10252.     case 40:;
  10253.     case 41:;
  10254.     case 43:;
  10255.     case 44:;
  10256.     case 45:;
  10257.     case 48:;
  10258.     case 49:;
  10259.     case 50:;
  10260.     case 52:;
  10261.     case 54:;
  10262.     case 58:;
  10263.     case 60:;
  10264.     case 61:;
  10265.     case 62:;
  10266.     case 64:;
  10267.     case 65:;
  10268.     case 66:;
  10269.     case 69:;
  10270.     case 70:;
  10271.     case 71:;
  10272.     case 72:;
  10273.     case 73:;
  10274.     case 74:;
  10275.     case 76:;
  10276.     case 78:;
  10277.     case 79:;
  10278.     case 80:;
  10279.     case 81:;
  10280.     case 82:;
  10281.     case 83:;
  10282.     case 84:;
  10283.     case 85:;
  10284.     case 86:;
  10285.     case 87:;
  10286.     case 88:;
  10287.     case 89:;
  10288.     case 91:;
  10289.     case 92:;
  10290.     case 93:;
  10291.     case 94:;
  10292.     case 95:;
  10293.     case 96:;
  10294.     case 97:;
  10295.     case 98:;
  10296.     case 99:;
  10297.     case 100:;
  10298.     case 101:;
  10299.     case 102:;
  10300.     case 103:;
  10301.     case 104:;
  10302.     case 105:;
  10303.     default:
  10304.       if (xxIsRepairMode) {
  10305.         xxUnion.xxLocalRecoverySet = 0; yyBoolean_constant (& Boolean_constant1, & xxUnion); /*  */
  10306. /* line 1046 "eiffel_sig.ell" */
  10307.  Manifest_constant0->Tree = Boolean_constant1.Tree;                     
  10308.         goto xx48;
  10309.       }
  10310. xxUnexpected (227, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string plus minus false true */
  10311.     }
  10312.   }
  10313.   xx48:;
  10314. }
  10315.  
  10316. static void yyNumber_constant
  10317. # if defined __STDC__ | defined __cplusplus
  10318. (ParserSIG_tParsAttribute * Number_constant0, xxtUnionPtr xxGlobalRecoverySet)
  10319. # else
  10320. (Number_constant0, xxGlobalRecoverySet)
  10321. ParserSIG_tParsAttribute    * Number_constant0;
  10322. xxtUnionPtr    xxGlobalRecoverySet;
  10323. # endif
  10324. {
  10325.     EiffelScan_tScanAttribute Integer1;
  10326.     EiffelScan_tScanAttribute Real1;
  10327.   ParserSIG_tParsAttribute Sign1;
  10328.   xxtUnion xxUnion;
  10329.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10330.   xxUnion.xxLocalRecoverySet = 228; yySign (& Sign1, & xxUnion); /*  Integer Real */
  10331.   for (;;) {
  10332.     switch (xxToken) {
  10333.     case 3 /* Integer */ :; 
  10334.       Integer1 =       EiffelScan_Attribute;
  10335.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10336. /* line 1056 "eiffel_sig.ell" */
  10337.  Number_constant0->Tree = mInt(Sign1.Tree, Integer1.Int, Integer1.Position);           
  10338.       goto xx49;
  10339.     case 4 /* Real */ :; 
  10340.       Real1 =       EiffelScan_Attribute;
  10341.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10342. /* line 1057 "eiffel_sig.ell" */
  10343.  Number_constant0->Tree = mReal(Sign1.Tree, Real1.Real, Real1.Position);               
  10344.       goto xx49;
  10345.     default:
  10346.       if (xxIsRepairMode) {
  10347.         if (xxToken != 3 /* Integer */)
  10348.           xxRecoveryTerminal (3, 218, xxGlobalRecoverySet, & Integer1); /*  Integer */
  10349.         else {
  10350.           Integer1 =         EiffelScan_Attribute;
  10351.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10352.         }
  10353. /* line 1056 "eiffel_sig.ell" */
  10354.  Number_constant0->Tree = mInt(Sign1.Tree, Integer1.Int, Integer1.Position);           
  10355.         goto xx49;
  10356.       }
  10357.       xxExpected (228, 228, xxGlobalRecoverySet); /*  Integer Real /  Integer Real */
  10358.     }
  10359.   }
  10360.   xx49:;
  10361. }
  10362.  
  10363. static void yySign
  10364. # if defined __STDC__ | defined __cplusplus
  10365. (ParserSIG_tParsAttribute * Sign0, xxtUnionPtr xxGlobalRecoverySet)
  10366. # else
  10367. (Sign0, xxGlobalRecoverySet)
  10368. ParserSIG_tParsAttribute    * Sign0;
  10369. xxtUnionPtr    xxGlobalRecoverySet;
  10370. # endif
  10371. {
  10372.     EiffelScan_tScanAttribute plus1;
  10373.     EiffelScan_tScanAttribute minus1;
  10374. /* line 1060 "eiffel_sig.ell" */
  10375.  Sign0->Tree = mOper(NoPosition, VOID);                                                  
  10376.   for (;;) {
  10377.     if ((xxVerticalSet [xxToken + 864] & 1 << 3 /*  plus minus */)) {
  10378.       if ((xxToken == 29 /* plus */)) {
  10379.         plus1 =         EiffelScan_Attribute;
  10380.         xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10381. /* line 1061 "eiffel_sig.ell" */
  10382.  Sign0->Tree = mOper(plus1.Position, PLUS);                                            
  10383.       } else {
  10384.         minus1 =         EiffelScan_Attribute;
  10385.         xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10386. /* line 1062 "eiffel_sig.ell" */
  10387.  Sign0->Tree = mOper(minus1.Position, MINUS);                                          
  10388.       }
  10389.       break;
  10390.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 4 /*  Integer Real */) || xxIsRepairMode) break;
  10391.     xxExpected (229, 229, xxGlobalRecoverySet); /*  plus minus /  plus minus */
  10392.   }
  10393. }
  10394.  
  10395. static void yyBoolean_constant
  10396. # if defined __STDC__ | defined __cplusplus
  10397. (ParserSIG_tParsAttribute * Boolean_constant0, xxtUnionPtr xxGlobalRecoverySet)
  10398. # else
  10399. (Boolean_constant0, xxGlobalRecoverySet)
  10400. ParserSIG_tParsAttribute    * Boolean_constant0;
  10401. xxtUnionPtr    xxGlobalRecoverySet;
  10402. # endif
  10403. {
  10404.     EiffelScan_tScanAttribute false1;
  10405.     EiffelScan_tScanAttribute true1;
  10406.   for (;;) {
  10407.     switch (xxToken) {
  10408.     case 90 /* true */ :; 
  10409.       true1 =       EiffelScan_Attribute;
  10410.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10411. /* line 1070 "eiffel_sig.ell" */
  10412.  Boolean_constant0->Tree = mTrue(true1.Position);                     
  10413.       goto xx50;
  10414.     case 56 /* false */ :; 
  10415.       false1 =       EiffelScan_Attribute;
  10416.       xxToken =       EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10417. /* line 1071 "eiffel_sig.ell" */
  10418.  Boolean_constant0->Tree = mFalse(false1.Position);                     
  10419.       goto xx50;
  10420.     case 57:;
  10421.     case 58:;
  10422.     case 59:;
  10423.     case 60:;
  10424.     case 61:;
  10425.     case 62:;
  10426.     case 63:;
  10427.     case 64:;
  10428.     case 65:;
  10429.     case 66:;
  10430.     case 67:;
  10431.     case 68:;
  10432.     case 69:;
  10433.     case 70:;
  10434.     case 71:;
  10435.     case 72:;
  10436.     case 73:;
  10437.     case 74:;
  10438.     case 75:;
  10439.     case 76:;
  10440.     case 77:;
  10441.     case 78:;
  10442.     case 79:;
  10443.     case 80:;
  10444.     case 81:;
  10445.     case 82:;
  10446.     case 83:;
  10447.     case 84:;
  10448.     case 85:;
  10449.     case 86:;
  10450.     case 87:;
  10451.     case 88:;
  10452.     case 89:;
  10453.     default:
  10454.       if (xxIsRepairMode) {
  10455.         if (xxToken != 90 /* true */)
  10456.           xxRecoveryTerminal (90, 230, xxGlobalRecoverySet, & true1); /*  true */
  10457.         else {
  10458.           true1 =         EiffelScan_Attribute;
  10459.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10460.         }
  10461. /* line 1070 "eiffel_sig.ell" */
  10462.  Boolean_constant0->Tree = mTrue(true1.Position);                     
  10463.         goto xx50;
  10464.       }
  10465.       xxExpected (232, 232, xxGlobalRecoverySet); /*  false true /  false true */
  10466.     }
  10467.   }
  10468.   xx50:;
  10469. }
  10470.  
  10471. static void yyBit_constant
  10472. # if defined __STDC__ | defined __cplusplus
  10473. (ParserSIG_tParsAttribute * Bit_constant0, xxtUnionPtr xxGlobalRecoverySet)
  10474. # else
  10475. (Bit_constant0, xxGlobalRecoverySet)
  10476. ParserSIG_tParsAttribute    * Bit_constant0;
  10477. xxtUnionPtr    xxGlobalRecoverySet;
  10478. # endif
  10479. {
  10480.     EiffelScan_tScanAttribute Bit_sequence1;
  10481.   if (xxToken != 2 /* Bit_sequence */)
  10482.     xxRecoveryTerminal (2, 221, xxGlobalRecoverySet, & Bit_sequence1); /*  Bit_sequence */
  10483.   else {
  10484.     Bit_sequence1 =   EiffelScan_Attribute;
  10485.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10486.   }
  10487. /* line 1078 "eiffel_sig.ell" */
  10488.  Bit_constant0->Tree = mBitseq(Bit_sequence1.StringRef, Bit_sequence1.Position);    
  10489. }
  10490.  
  10491. static void yyManifest_array
  10492. # if defined __STDC__ | defined __cplusplus
  10493. (ParserSIG_tParsAttribute * Manifest_array0, xxtUnionPtr xxGlobalRecoverySet)
  10494. # else
  10495. (Manifest_array0, xxGlobalRecoverySet)
  10496. ParserSIG_tParsAttribute    * Manifest_array0;
  10497. xxtUnionPtr    xxGlobalRecoverySet;
  10498. # endif
  10499. {
  10500.   ParserSIG_tParsAttribute Expression_list1;
  10501.   xxtUnion xxUnion;
  10502.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10503.   if (xxToken != 23 /* '<<' */)
  10504.     xxRecoveryLiteral (23, 233, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' '>>' plus minus Current false 'old' Result 'strip' true not Id */
  10505.   else {
  10506.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10507.   }
  10508.   xxUnion.xxLocalRecoverySet = 234; yyExpression_list (& Expression_list1, & xxUnion); /*  '>>' */
  10509.   if (xxToken != 24 /* '>>' */)
  10510.     xxRecoveryLiteral (24, 234, xxGlobalRecoverySet); /*  '>>' */
  10511.   else {
  10512.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10513.   }
  10514. /* line 1083 "eiffel_sig.ell" */
  10515.  Manifest_array0->Tree = ReverseTree(Expression_list1.Tree);            
  10516. }
  10517.  
  10518. static void yyExpression_list
  10519. # if defined __STDC__ | defined __cplusplus
  10520. (ParserSIG_tParsAttribute * Expression_list0, xxtUnionPtr xxGlobalRecoverySet)
  10521. # else
  10522. (Expression_list0, xxGlobalRecoverySet)
  10523. ParserSIG_tParsAttribute    * Expression_list0;
  10524. xxtUnionPtr    xxGlobalRecoverySet;
  10525. # endif
  10526. {
  10527.   ParserSIG_tParsAttribute Expression1;
  10528.   xxtUnion xxUnion;
  10529.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10530. /* line 1085 "eiffel_sig.ell" */
  10531.  Expression_list0->Tree = mManifest_array0();                        
  10532.   for (;;) {
  10533.     if ((xxVerticalSet [xxToken + 648] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */)) {
  10534.       for (;;) {
  10535.         xxUnion.xxLocalRecoverySet = 16; yyExpression (& Expression1, & xxUnion); /*  ',' */
  10536. /* line 1086 "eiffel_sig.ell" */
  10537.  Expression_list0->Tree = mManifest_array1(Expression1.Tree, Expression_list0->Tree);     
  10538.         if (! ((xxToken == 8 /* ',' */))) {
  10539.           if ((xxToken == 24 /* '>>' */)) break;
  10540.           xxExpected (16, 235, xxGlobalRecoverySet); /*  ',' /  Character_constant Bit_sequence Integer Real Manifest_string Free_op ',' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  10541.           if (! ((xxToken == 8 /* ',' */) || (xxVerticalSet [xxToken + 648] & 1 << 7 /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */))) break;
  10542.         }
  10543.         if (xxToken != 8 /* ',' */)
  10544.           xxRecoveryLiteral (8, 235, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op ',' '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  10545.         else {
  10546.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10547.         }
  10548.       }
  10549.       break;
  10550.     } else if ((xxToken == 24 /* '>>' */) || xxIsRepairMode) break;
  10551.     xxExpected (129, 129, xxGlobalRecoverySet); /*  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id /  Character_constant Bit_sequence Integer Real Manifest_string Free_op '(' '<<' plus minus Current false 'old' Result 'strip' true not Id */
  10552.   }
  10553. }
  10554.  
  10555. static void yyStrip
  10556. # if defined __STDC__ | defined __cplusplus
  10557. (ParserSIG_tParsAttribute * Strip0, xxtUnionPtr xxGlobalRecoverySet)
  10558. # else
  10559. (Strip0, xxGlobalRecoverySet)
  10560. ParserSIG_tParsAttribute    * Strip0;
  10561. xxtUnionPtr    xxGlobalRecoverySet;
  10562. # endif
  10563. {
  10564.   ParserSIG_tParsAttribute Attribute_list1;
  10565.   xxtUnion xxUnion;
  10566.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10567.   if (xxToken != 88 /* 'strip' */)
  10568.     xxRecoveryLiteral (88, 236, xxGlobalRecoverySet); /*  '(' ')' 'strip' Id */
  10569.   else {
  10570.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10571.   }
  10572.   if (xxToken != 17 /* '(' */)
  10573.     xxRecoveryLiteral (17, 82, xxGlobalRecoverySet); /*  '(' ')' Id */
  10574.   else {
  10575.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10576.   }
  10577.   xxUnion.xxLocalRecoverySet = 83; yyAttribute_list (& Attribute_list1, & xxUnion); /*  ')' */
  10578.   if (xxToken != 18 /* ')' */)
  10579.     xxRecoveryLiteral (18, 83, xxGlobalRecoverySet); /*  ')' */
  10580.   else {
  10581.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10582.   }
  10583. /* line 1093 "eiffel_sig.ell" */
  10584.  Strip0->Tree = mStrip(Attribute_list1.Tree);                    
  10585. }
  10586.  
  10587. static void yyAttribute_list
  10588. # if defined __STDC__ | defined __cplusplus
  10589. (ParserSIG_tParsAttribute * Attribute_list0, xxtUnionPtr xxGlobalRecoverySet)
  10590. # else
  10591. (Attribute_list0, xxGlobalRecoverySet)
  10592. ParserSIG_tParsAttribute    * Attribute_list0;
  10593. xxtUnionPtr    xxGlobalRecoverySet;
  10594. # endif
  10595. {
  10596.   ParserSIG_tParsAttribute Identifier1;
  10597.   xxtUnion xxUnion;
  10598.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10599. /* line 1095 "eiffel_sig.ell" */
  10600.  Attribute_list0->Tree = mnolist();                            
  10601.   for (;;) {
  10602.     if ((xxToken == 106 /* Id */)) {
  10603.       for (;;) {
  10604.         xxUnion.xxLocalRecoverySet = 16; yyIdentifier (& Identifier1, & xxUnion); /*  ',' */
  10605. /* line 1096 "eiffel_sig.ell" */
  10606.  Attribute_list0->Tree = mlist(Identifier1.Tree, Attribute_list0->Tree);         
  10607.         if (! ((xxToken == 8 /* ',' */))) {
  10608.           if ((xxToken == 18 /* ')' */)) break;
  10609.           xxExpected (16, 87, xxGlobalRecoverySet); /*  ',' /  ',' Id */
  10610.           if (! ((xxToken == 8 /* ',' */) || (xxToken == 106 /* Id */))) break;
  10611.         }
  10612.         if (xxToken != 8 /* ',' */)
  10613.           xxRecoveryLiteral (8, 87, xxGlobalRecoverySet); /*  ',' Id */
  10614.         else {
  10615.           xxToken =         EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10616.         }
  10617.       }
  10618.       break;
  10619.     } else if ((xxToken == 18 /* ')' */) || xxIsRepairMode) break;
  10620.     xxExpected (84, 84, xxGlobalRecoverySet); /*  Id /  Id */
  10621.   }
  10622. }
  10623.  
  10624. static void yyExternal
  10625. # if defined __STDC__ | defined __cplusplus
  10626. (ParserSIG_tParsAttribute * External0, xxtUnionPtr xxGlobalRecoverySet)
  10627. # else
  10628. (External0, xxGlobalRecoverySet)
  10629. ParserSIG_tParsAttribute    * External0;
  10630. xxtUnionPtr    xxGlobalRecoverySet;
  10631. # endif
  10632. {
  10633.   ParserSIG_tParsAttribute Language_name1;
  10634.   ParserSIG_tParsAttribute External_name1;
  10635.   xxtUnion xxUnion;
  10636.   xxUnion.xxGlobalRecoverySet = xxGlobalRecoverySet;
  10637.   if (xxToken != 55 /* 'external' */)
  10638.     xxRecoveryLiteral (55, 237, xxGlobalRecoverySet); /*  Manifest_string 'alias' 'external' */
  10639.   else {
  10640.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10641.   }
  10642.   xxUnion.xxLocalRecoverySet = 238; yyLanguage_name (& Language_name1, & xxUnion); /*  'alias' */
  10643. /* line 1103 "eiffel_sig.ell" */
  10644.  External0->Tree = mExternal( Language_name1.Tree, mString0());            
  10645.   for (;;) {
  10646.     if ((xxToken == 34 /* 'alias' */)) {
  10647.       xxUnion.xxLocalRecoverySet = 0; yyExternal_name (& External_name1, & xxUnion); /*  */
  10648. /* line 1104 "eiffel_sig.ell" */
  10649.  External0->Tree->External.Lang2 = External_name1.Tree;                
  10650.       break;
  10651.     } else if ((xxVerticalSet [xxToken + 864] & 1 << 5 /*  'end' 'ensure' 'rescue' */) || xxIsRepairMode) break;
  10652.     xxExpected (238, 238, xxGlobalRecoverySet); /*  'alias' /  'alias' */
  10653.   }
  10654. }
  10655.  
  10656. static void yyLanguage_name
  10657. # if defined __STDC__ | defined __cplusplus
  10658. (ParserSIG_tParsAttribute * Language_name0, xxtUnionPtr xxGlobalRecoverySet)
  10659. # else
  10660. (Language_name0, xxGlobalRecoverySet)
  10661. ParserSIG_tParsAttribute    * Language_name0;
  10662. xxtUnionPtr    xxGlobalRecoverySet;
  10663. # endif
  10664. {
  10665.     EiffelScan_tScanAttribute Manifest_string1;
  10666.   if (xxToken != 5 /* Manifest_string */)
  10667.     xxRecoveryTerminal (5, 24, xxGlobalRecoverySet, & Manifest_string1); /*  Manifest_string */
  10668.   else {
  10669.     Manifest_string1 =   EiffelScan_Attribute;
  10670.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10671.   }
  10672. /* line 1107 "eiffel_sig.ell" */
  10673.  Language_name0->Tree = mString(Manifest_string1.StringRef, Manifest_string1.Position);
  10674. }
  10675.  
  10676. static void yyExternal_name
  10677. # if defined __STDC__ | defined __cplusplus
  10678. (ParserSIG_tParsAttribute * External_name0, xxtUnionPtr xxGlobalRecoverySet)
  10679. # else
  10680. (External_name0, xxGlobalRecoverySet)
  10681. ParserSIG_tParsAttribute    * External_name0;
  10682. xxtUnionPtr    xxGlobalRecoverySet;
  10683. # endif
  10684. {
  10685.     EiffelScan_tScanAttribute Manifest_string1;
  10686.   if (xxToken != 34 /* 'alias' */)
  10687.     xxRecoveryLiteral (34, 239, xxGlobalRecoverySet); /*  Manifest_string 'alias' */
  10688.   else {
  10689.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10690.   }
  10691.   if (xxToken != 5 /* Manifest_string */)
  10692.     xxRecoveryTerminal (5, 24, xxGlobalRecoverySet, & Manifest_string1); /*  Manifest_string */
  10693.   else {
  10694.     Manifest_string1 =   EiffelScan_Attribute;
  10695.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10696.   }
  10697. /* line 1110 "eiffel_sig.ell" */
  10698.  External_name0->Tree =  mString(Manifest_string1.StringRef, Manifest_string1.Position); 
  10699. }
  10700.  
  10701. static void yyIdentifier
  10702. # if defined __STDC__ | defined __cplusplus
  10703. (ParserSIG_tParsAttribute * Identifier0, xxtUnionPtr xxGlobalRecoverySet)
  10704. # else
  10705. (Identifier0, xxGlobalRecoverySet)
  10706. ParserSIG_tParsAttribute    * Identifier0;
  10707. xxtUnionPtr    xxGlobalRecoverySet;
  10708. # endif
  10709. {
  10710.     EiffelScan_tScanAttribute Id1;
  10711.   if (xxToken != 106 /* Id */)
  10712.     xxRecoveryTerminal (106, 84, xxGlobalRecoverySet, & Id1); /*  Id */
  10713.   else {
  10714.     Id1 =   EiffelScan_Attribute;
  10715.     xxToken =   EiffelScan_GetToken (); xxIsRepairMode = xxfalse;
  10716.   }
  10717. /* line 1114 "eiffel_sig.ell" */
  10718.  Identifier0->Tree= mId(Id1.Ident, Id1.Position);                     
  10719. }
  10720.  
  10721.