home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / style / stnd.src < prev    next >
Encoding:
Text File  |  1988-05-03  |  276.0 KB  |  6,042 lines

  1.  
  2. -------- SIMTEL20 Ada Software Repository Prologue ------------
  3. --                                                           -*
  4. -- Unit name    : Standards Checker          
  5. -- Version      : 1.0
  6. -- Contact      : Lt. Colonel Falgiano
  7. --              : ESD/SCW
  8. --              : Hanscom AFB, MA  01731
  9. -- Author       : Bill Toscano, Michael Gordon
  10. --              : Intermetrics, Inc, 
  11. --              : 733 Concord Ave
  12. --              : Cambridge, MA 02138 
  13. -- DDN Address  :
  14. -- Copyright    : (c) 1985 Intermetrics, Inc. 
  15. -- Date created : 15 October 1985 
  16. -- Release date : 18 March 1985 
  17. -- Last update  : 17 March 1985 
  18. --                                                           -*
  19. ---------------------------------------------------------------
  20. --                                                           -*
  21. -- Keywords     : 
  22. ----------------:
  23. --
  24. -- Abstract     : The Standards Checker checks a source file to see that it   
  25. ----------------: conforms to local programming standards.  These standards    
  26. ----------------: include maximum number of lines per program unit, maximum    
  27. ----------------: number of arguments to a subprogram, use of pragmas, use of   
  28. ----------------: rep specs, use of named literals, naming of types and
  29. ----------------: variables, etc.  An annotated listing is output showing     
  30. ----------------: any misuse of these language constructs.
  31. ----------------: 
  32. ----------------: This tool was developed as a precursor for 
  33. ----------------: the WMCCS Information System (WIS).  An
  34. ----------------: executable version of the tool has been 
  35. ----------------: demonstrated.  This source code has sub-
  36. ----------------: sequently been recompiled but has not under-
  37. ----------------: gone extensive testing.
  38. ----------------:
  39. --                                                           -*
  40. ------------------ Revision history ---------------------------
  41. --                                                           -*
  42. -- DATE         VERSION AUTHOR                  HISTORY 
  43. -- 03/85        1.0  Bill Toscano               Initial Release 
  44. --                                                           -* 
  45. ------------------ Distribution and Copyright -----------------
  46. --                                                           -*
  47. -- This prologue must be included in all copies of this software.
  48. -- 
  49. -- This software is copyright by the author.
  50. -- 
  51. -- This software is released to the Ada community.
  52. -- This software is released to the Public Domain (note:
  53. --   software released to the Public Domain is not subject
  54. --   to copyright protection).
  55. -- Restrictions on use or distribution:  NONE
  56. --                                                           -*
  57. ----------------- Disclaimer ----------------------------------
  58. --                                                           -*
  59. -- This software and its documentation are provided "AS IS" and
  60. -- without any expressed or implied warranties whatsoever.
  61. --
  62. -- No warranties as to performance, merchantability, or fitness
  63. -- for a particular purpose exist.
  64. --
  65. -- Because of the diversity of conditions and hardware under
  66. -- which this software may be used, no warranty of fitness for
  67. -- a particular purpose is offered.  The user is advised to 
  68. -- test the software thoroughly before relying on it.  The user
  69. -- must assume the entire risk and liability of using this 
  70. -- software.
  71. --
  72. -- In no event shall any person or organization of people be
  73. -- held responsible for any direct, indirect, consequential
  74. -- or inconsequential damages or lost profits.
  75. --                                                          -*
  76. ----------------- END-PROLOGUE -------------------------------
  77. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  78. --GRMCONST.BDY
  79. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  80. --+ GRMCONST.BDY +--
  81.  
  82. Package body Grammar_Constants is
  83.  
  84.     function setGrammarSymbolCount return ParserInteger is
  85.     begin
  86.         return   332 ;
  87.     end setGrammarSymbolCount;
  88.     
  89.     function setActionCount return ParserInteger is
  90.     begin
  91.         return  1440 ;
  92.     end setActionCount;
  93.     
  94.     function setStateCountPlusOne return ParserInteger is
  95.     begin
  96.         return   950 ;
  97.     end setStateCountPlusOne;
  98.     
  99.     function setLeftHandSideCount return ParserInteger is
  100.     begin
  101.     return   488 ;
  102.     end setLeftHandSideCount;
  103.     
  104.     function setRightHandSideCount return ParserInteger is
  105.     begin
  106.         return   488 ;
  107.     end setRightHandSideCount;
  108.     
  109. end Grammar_Constants;
  110. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  111. --PTBLS.BDY
  112. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  113. --+ PTBLS.BDY +--
  114.  
  115. package body ParseTables is
  116. ----------------------------------------------------------------------
  117. -- The rest of the constants used to define the Parse Tables
  118. ----------------------------------------------------------------------
  119.  
  120.     DefaultValue : constant := 1 ; -- default for aggregates.
  121.     
  122.     ActionTableOneLength : constant GC.ParserInteger :=
  123.          8217 ;
  124.         --| Length (number of entries) in map ActionTableOne.
  125.     subtype ActionTableOneRange is GC.ParserInteger
  126.             range 1..ActionTableOneLength;
  127.     
  128.     ActionTableTwoLength : constant GC.ParserInteger :=
  129.          8217 ;
  130.         --| Length (number of entries) in map ActionTableTwo.
  131.     subtype ActionTableTwoRange is GC.ParserInteger
  132.             range 1..ActionTableTwoLength;
  133.     
  134.     DefaultMapLength : constant GC.ParserInteger :=
  135.           949 ;
  136.         --| Length (number of entries) in map Defaults.
  137.     subtype DefaultMapRange is GC.ParserInteger range 1..DefaultMapLength;
  138.     
  139.     FollowMapLength : constant GC.ParserInteger :=
  140.           236 ;
  141.         --| Length (number of entries) in the FollowMap.
  142.     
  143.     GrammarSymbolCountPlusOne : constant GC.ParserInteger :=
  144.           333 ;
  145.         --| Number of symbols plus one in the parse tables.
  146.         -- NYU Reference Name: NUM_INPUTS
  147.     
  148.     ActionTableSize : constant GC.ParserInteger :=
  149.          5531 ;
  150.         --| Maximum entry in Action Tables referenced by hash
  151.         --| function. Entries above TableSize are collision chains.
  152.         -- NYU Reference Name: TABLE_SIZE
  153.     
  154.     ------------------------------------------------------------------
  155.     -- Tables generated by Parse Tables Generator
  156.     ------------------------------------------------------------------
  157.  
  158.     subtype GrammarSymbolRepRangePlusZero is
  159.         GrammarSymbolRepRangePlusZeroCommon;
  160.  
  161.     GrammarSymbolTableIndex : constant
  162.         array (GrammarSymbolRange'first .. GrammarSymbolRange'last * 2)
  163.         of GC.ParserInteger :=
  164.          (    1,    0,    1,    5,    6,    8,    9,   14,   15,   20
  165. ,   21,   23,   24,   26,   27,   31,   32,   33,   34,   38
  166. ,   39,   42,   43,   46,   47,   54,   55,   61,   62,   66
  167. ,   67,   71,   72,   77,   78,   79,   80,   83,   84,   88
  168. ,   89,   91,   92,   96,   97,  105,  106,  109,  110,  112
  169. ,  113,  120,  121,  127,  128,  131,  132,  133,  134,  135
  170. ,  136,  137,  138,  144,  145,  148,  149,  151,  152,  154
  171. ,  155,  157,  158,  161,  162,  163,  164,  165,  166,  171
  172. ,  172,  174,  175,  181,  182,  187,  188,  194,  195,  203
  173. ,  204,  208,  209,  213,  214,  219,  220,  222,  223,  229
  174. ,  230,  235,  236,  242,  243,  248,  249,  256,  257,  263
  175. ,  264,  267,  268,  276,  277,  280,  281,  284,  285,  287
  176. ,  288,  291,  292,  296,  297,  300,  301,  303,  304,  313
  177. ,  314,  328,  329,  342,  343,  359,  360,  360,  361,  361
  178. ,  362,  362,  363,  363,  364,  364,  365,  365,  366,  366
  179. ,  367,  367,  368,  368,  369,  369,  370,  370,  371,  371
  180. ,  372,  372,  373,  373,  374,  374,  375,  377,  378,  379
  181. ,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389
  182. ,  390,  391,  392,  393,  394,  395,  396,  397,  398,  412
  183. ,  413,  416,  417,  420,  421,  431,  432,  448,  449,  478
  184. ,  479,  484,  485,  502,  503,  519,  520,  537,  538,  553
  185. ,  554,  572,  573,  594,  595,  613,  614,  629,  630,  648
  186. ,  649,  669,  670,  690,  691,  710,  711,  721,  722,  736
  187. ,  737,  754,  755,  768,  769,  796,  797,  806,  807,  819
  188. ,  820,  840,  841,  867,  868,  891,  892,  906,  907,  925
  189. ,  926,  951,  952,  980,  981,  995,  996, 1022, 1023, 1045
  190. , 1046, 1065, 1066, 1086, 1087, 1108, 1109, 1130, 1131, 1153
  191. , 1154, 1175, 1176, 1184, 1185, 1194, 1195, 1216, 1217, 1232
  192. , 1233, 1257, 1258, 1279, 1280, 1296, 1297, 1329, 1330, 1365
  193. , 1366, 1384, 1385, 1412, 1413, 1430, 1431, 1455, 1456, 1485
  194. , 1486, 1509, 1510, 1536, 1537, 1552, 1553, 1556, 1557, 1570
  195. , 1571, 1587, 1588, 1592, 1593, 1606, 1607, 1619, 1620, 1642
  196. , 1643, 1663, 1664, 1675, 1676, 1689, 1690, 1705, 1706, 1712
  197. , 1713, 1721, 1722, 1727, 1728, 1736, 1737, 1760, 1761, 1776
  198. , 1777, 1780, 1781, 1804, 1805, 1826, 1827, 1847, 1848, 1857
  199. , 1858, 1879, 1880, 1890, 1891, 1899, 1900, 1914, 1915, 1926
  200. , 1927, 1935, 1936, 1952, 1953, 1970, 1971, 1979, 1980, 1987
  201. , 1988, 2007, 2008, 2029, 2030, 2038, 2039, 2072, 2073, 2093
  202. , 2094, 2120, 2121, 2150, 2151, 2168, 2169, 2197, 2198, 2232
  203. , 2233, 2270, 2271, 2278, 2279, 2301, 2302, 2323, 2324, 2346
  204. , 2347, 2375, 2376, 2403, 2404, 2443, 2444, 2450, 2451, 2507
  205. , 2508, 2543, 2544, 2547, 2548, 2554, 2555, 2588, 2589, 2594
  206. , 2595, 2624, 2625, 2648, 2649, 2657, 2658, 2677, 2678, 2696
  207. , 2697, 2718, 2719, 2739, 2740, 2759, 2760, 2782, 2783, 2795
  208. , 2796, 2807, 2808, 2816, 2817, 2827, 2828, 2849, 2850, 2865
  209. , 2866, 2883, 2884, 2891, 2892, 2905, 2906, 2925, 2926, 2939
  210. , 2940, 2955, 2956, 2969, 2970, 2984, 2985, 2999, 3000, 3014
  211. , 3015, 3028, 3029, 3042, 3043, 3054, 3055, 3068, 3069, 3082
  212. , 3083, 3097, 3098, 3113, 3114, 3129, 3130, 3134, 3135, 3172
  213. , 3173, 3220, 3221, 3250, 3251, 3259, 3260, 3271, 3272, 3297
  214. , 3298, 3325, 3326, 3343, 3344, 3355, 3356, 3369, 3370, 3384
  215. , 3385, 3417, 3418, 3437, 3438, 3473, 3474, 3492, 3493, 3504
  216. , 3505, 3513, 3514, 3522, 3523, 3546, 3547, 3567, 3568, 3590
  217. , 3591, 3616, 3617, 3626, 3627, 3630, 3631, 3652, 3653, 3672
  218. , 3673, 3692, 3693, 3708, 3709, 3729, 3730, 3747, 3748, 3759
  219. , 3760, 3781, 3782, 3797, 3798, 3815, 3816, 3830, 3831, 3849
  220. , 3850, 3872, 3873, 3891, 3892, 3922, 3923, 3939, 3940, 3966
  221. , 3967, 3980, 3981, 4002, 4003, 4018, 4019, 4036, 4037, 4060
  222. , 4061, 4086, 4087, 4104, 4105, 4121, 4122, 4142, 4143, 4166
  223. , 4167, 4173, 4174, 4191, 4192, 4204, 4205, 4220, 4221, 4234
  224. , 4235, 4259, 4260, 4266, 4267, 4291, 4292, 4309, 4310, 4320
  225. , 4321, 4336, 4337, 4355, 4356, 4372, 4373, 4393, 4394, 4412
  226. , 4413, 4443, 4444, 4472, 4473, 4495, 4496, 4513, 4514, 4532
  227. , 4533, 4554, 4555, 4606, 4607, 4630, 4631, 4654, 4655, 4673
  228. , 4674, 4686, 4687, 4719, 4720, 4733, 4734, 4761, 4762, 4779
  229. , 4780, 4795, 4796, 4811, 4812, 4820, 4821, 4833, 4834, 4846
  230. , 4847, 4868, 4869, 4883)  ;
  231.         
  232.     GrammarSymbolTable : constant String :=
  233.          ('A','B','O','R','T','A','B','S','A','C'
  234. ,'C','E','P','T','A','C','C','E','S','S'
  235. ,'A','L','L','A','N','D','A','R','R','A'
  236. ,'Y','A','T','B','E','G','I','N','B','O'
  237. ,'D','Y','C','A','S','E','C','O','N','S'
  238. ,'T','A','N','T','D','E','C','L','A','R'
  239. ,'E','D','E','L','A','Y','D','E','L','T'
  240. ,'A','D','I','G','I','T','S','D','O','E'
  241. ,'L','S','E','E','L','S','I','F','E','N'
  242. ,'D','E','N','T','R','Y','E','X','C','E'
  243. ,'P','T','I','O','N','E','X','I','T','F'
  244. ,'O','R','F','U','N','C','T','I','O','N'
  245. ,'G','E','N','E','R','I','C','G','O','T'
  246. ,'O','I','F','I','N','I','S','L','I','M'
  247. ,'I','T','E','D','L','O','O','P','M','O'
  248. ,'D','N','E','W','N','O','T','N','U','L'
  249. ,'L','O','F','O','R','O','T','H','E','R'
  250. ,'S','O','U','T','P','A','C','K','A','G'
  251. ,'E','P','R','A','G','M','A','P','R','I'
  252. ,'V','A','T','E','P','R','O','C','E','D'
  253. ,'U','R','E','R','A','I','S','E','R','A'
  254. ,'N','G','E','R','E','C','O','R','D','R'
  255. ,'E','M','R','E','N','A','M','E','S','R'
  256. ,'E','T','U','R','N','R','E','V','E','R'
  257. ,'S','E','S','E','L','E','C','T','S','E'
  258. ,'P','A','R','A','T','E','S','U','B','T'
  259. ,'Y','P','E','T','A','S','K','T','E','R'
  260. ,'M','I','N','A','T','E','T','H','E','N'
  261. ,'T','Y','P','E','U','S','E','W','H','E'
  262. ,'N','W','H','I','L','E','W','I','T','H'
  263. ,'X','O','R','i','d','e','n','t','i','f'
  264. ,'i','e','r','n','u','m','e','r','i','c'
  265. ,'_','l','i','t','e','r','a','l','s','t'
  266. ,'r','i','n','g','_','l','i','t','e','r'
  267. ,'a','l','c','h','a','r','a','c','t','e'
  268. ,'r','_','l','i','t','e','r','a','l','&'
  269. ,''','(',')','*','+',',','-','.','/',':'
  270. ,';','<','=','>',''','|',''','=','>','.'
  271. ,'.','*','*',':','=','/','=','>','=','<'
  272. ,'=','<','<','>','>','<','>','c','o','m'
  273. ,'m','e','n','t','_','l','i','t','e','r'
  274. ,'a','l','$','E','O','F','$','A','C','C'
  275. ,'c','o','m','p','i','l','a','t','i','o'
  276. ,'n','p','r','a','g','m','a','_','i','d'
  277. ,'e','n','t','i','f','i','e','r','g','e'
  278. ,'n','e','r','a','l','_','c','o','m','p'
  279. ,'o','n','e','n','t','_','a','s','s','o'
  280. ,'c','i','a','t','i','o','n','s','p','r'
  281. ,'a','g','m','a','o','b','j','e','c','t'
  282. ,'_','d','e','c','l','a','r','a','t','i'
  283. ,'o','n','b','a','s','i','c','_','d','e'
  284. ,'c','l','a','r','a','t','i','o','n','n'
  285. ,'u','m','b','e','r','_','d','e','c','l'
  286. ,'a','r','a','t','i','o','n','t','y','p'
  287. ,'e','_','d','e','c','l','a','r','a','t'
  288. ,'i','o','n','s','u','b','t','y','p','e'
  289. ,'_','d','e','c','l','a','r','a','t','i'
  290. ,'o','n','s','u','b','p','r','o','g','r'
  291. ,'a','m','_','d','e','c','l','a','r','a'
  292. ,'t','i','o','n','p','a','c','k','a','g'
  293. ,'e','_','d','e','c','l','a','r','a','t'
  294. ,'i','o','n','t','a','s','k','_','d','e'
  295. ,'c','l','a','r','a','t','i','o','n','g'
  296. ,'e','n','e','r','i','c','_','d','e','c'
  297. ,'l','a','r','a','t','i','o','n','e','x'
  298. ,'c','e','p','t','i','o','n','_','d','e'
  299. ,'c','l','a','r','a','t','i','o','n','g'
  300. ,'e','n','e','r','i','c','_','i','n','s'
  301. ,'t','a','n','t','i','a','t','i','o','n'
  302. ,'r','e','n','a','m','i','n','g','_','d'
  303. ,'e','c','l','a','r','a','t','i','o','n'
  304. ,'o','b','j','e','c','t','_','i','t','e'
  305. ,'m','i','d','e','n','t','i','f','i','e'
  306. ,'r','_','l','i','s','t','s','u','b','t'
  307. ,'y','p','e','_','i','n','d','i','c','a'
  308. ,'t','i','o','n','[',':','=','e','x','p'
  309. ,'r','e','s','s','i','o','n',']','c','o'
  310. ,'n','s','t','r','a','i','n','e','d','_'
  311. ,'a','r','r','a','y','_','d','e','f','i'
  312. ,'n','i','t','i','o','n','e','x','p','r'
  313. ,'e','s','s','i','o','n','{',',','i','d'
  314. ,'e','n','t','i','f','i','e','r','}','f'
  315. ,'u','l','l','_','t','y','p','e','_','d'
  316. ,'e','c','l','a','r','a','t','i','o','n'
  317. ,'i','n','c','o','m','p','l','e','t','e'
  318. ,'_','t','y','p','e','_','d','e','c','l'
  319. ,'a','r','a','t','i','o','n','p','r','i'
  320. ,'v','a','t','e','_','t','y','p','e','_'
  321. ,'d','e','c','l','a','r','a','t','i','o'
  322. ,'n','t','y','p','e','_','i','d','e','n'
  323. ,'t','i','f','i','e','r','i','s','_','_'
  324. ,'t','y','p','e','_','d','e','f','i','n'
  325. ,'i','t','i','o','n','d','i','s','c','r'
  326. ,'i','m','i','n','a','n','t','_','s','p'
  327. ,'e','c','i','f','i','c','a','t','i','o'
  328. ,'n','{',';','d','i','s','c','r','i','m'
  329. ,'i','n','a','n','t','_','s','p','e','c'
  330. ,'i','f','i','c','a','t','i','o','n','}'
  331. ,'t','y','p','e','_','d','e','f','i','n'
  332. ,'i','t','i','o','n','e','n','u','m','e'
  333. ,'r','a','t','i','o','n','_','t','y','p'
  334. ,'e','_','d','e','f','i','n','i','t','i'
  335. ,'o','n','i','n','t','e','g','e','r','_'
  336. ,'t','y','p','e','_','d','e','f','i','n'
  337. ,'i','t','i','o','n','r','e','a','l','_'
  338. ,'t','y','p','e','_','d','e','f','i','n'
  339. ,'i','t','i','o','n','a','r','r','a','y'
  340. ,'_','t','y','p','e','_','d','e','f','i'
  341. ,'n','i','t','i','o','n','r','e','c','o'
  342. ,'r','d','_','t','y','p','e','_','d','e'
  343. ,'f','i','n','i','t','i','o','n','a','c'
  344. ,'c','e','s','s','_','t','y','p','e','_'
  345. ,'d','e','f','i','n','i','t','i','o','n'
  346. ,'d','e','r','i','v','e','d','_','t','y'
  347. ,'p','e','_','d','e','f','i','n','i','t'
  348. ,'i','o','n','i','s','_','_','s','u','b'
  349. ,'t','y','p','e','_','i','n','d','i','c'
  350. ,'a','t','i','o','n','t','y','p','e','_'
  351. ,'m','a','r','k','c','o','n','s','t','r'
  352. ,'a','i','n','t','t','y','p','e','_','n'
  353. ,'a','m','e','|','s','u','b','t','y','p'
  354. ,'e','_','n','a','m','e','r','a','n','g'
  355. ,'e','_','c','o','n','s','t','r','a','i'
  356. ,'n','t','f','l','o','a','t','i','n','g'
  357. ,'_','p','o','i','n','t','_','c','o','n'
  358. ,'s','t','r','a','i','n','t','f','i','x'
  359. ,'e','d','_','p','o','i','n','t','_','c'
  360. ,'o','n','s','t','r','a','i','n','t','s'
  361. ,'i','m','p','l','e','_','e','x','p','r'
  362. ,'e','s','s','i','o','n','e','n','u','m'
  363. ,'e','r','a','t','i','o','n','_','l','i'
  364. ,'t','e','r','a','l','_','s','p','e','c'
  365. ,'i','f','i','c','a','t','i','o','n','{'
  366. ,',','e','n','u','m','e','r','a','t','i'
  367. ,'o','n','_','l','i','t','e','r','a','l'
  368. ,'_','s','p','e','c','i','f','i','c','a'
  369. ,'t','i','o','n','}','e','n','u','m','e'
  370. ,'r','a','t','i','o','n','_','l','i','t'
  371. ,'e','r','a','l','f','l','o','a','t','i'
  372. ,'n','g','_','a','c','c','u','r','a','c'
  373. ,'y','_','d','e','f','i','n','i','t','i'
  374. ,'o','n','[','r','a','n','g','e','_','c'
  375. ,'o','n','s','t','r','a','i','n','t',']'
  376. ,'f','i','x','e','d','_','a','c','c','u'
  377. ,'r','a','c','y','_','d','e','f','i','n'
  378. ,'i','t','i','o','n','u','n','c','o','n'
  379. ,'s','t','r','a','i','n','e','d','_','a'
  380. ,'r','r','a','y','_','d','e','f','i','n'
  381. ,'i','t','i','o','n','i','n','d','e','x'
  382. ,'_','s','u','b','t','y','p','e','_','d'
  383. ,'e','f','i','n','i','t','i','o','n','{'
  384. ,',','i','n','d','e','x','_','s','u','b'
  385. ,'t','y','p','e','_','d','e','f','i','n'
  386. ,'i','t','i','o','n','}','i','n','d','e'
  387. ,'x','_','c','o','n','s','t','r','a','i'
  388. ,'n','t','n','a','m','e','d','i','s','c'
  389. ,'r','e','t','e','_','r','a','n','g','e'
  390. ,'{',',','d','i','s','c','r','e','t','e'
  391. ,'_','r','a','n','g','e','}','r','a','n'
  392. ,'g','e','c','o','m','p','o','n','e','n'
  393. ,'t','_','l','i','s','t','{','p','r','a'
  394. ,'g','m','a','_','d','e','c','l','}','{'
  395. ,'c','o','m','p','o','n','e','n','t','_'
  396. ,'d','e','c','l','a','r','a','t','i','o'
  397. ,'n','}','c','o','m','p','o','n','e','n'
  398. ,'t','_','d','e','c','l','a','r','a','t'
  399. ,'i','o','n','v','a','r','i','a','n','t'
  400. ,'_','p','a','r','t','c','o','m','p','o'
  401. ,'n','e','n','t','_','i','t','e','m','{'
  402. ,'p','r','a','g','m','a','_','v','a','r'
  403. ,'i','a','n','t','}','v','a','r','i','a'
  404. ,'n','t','{','v','a','r','i','a','n','t'
  405. ,'}','c','h','o','i','c','e','{','|','c'
  406. ,'h','o','i','c','e','}','{','b','a','s'
  407. ,'i','c','_','d','e','c','l','a','r','a'
  408. ,'t','i','v','e','_','i','t','e','m','}'
  409. ,'d','e','c','l','a','r','a','t','i','v'
  410. ,'e','_','p','a','r','t','b','o','d','y'
  411. ,'{','l','a','t','e','r','_','d','e','c'
  412. ,'l','a','r','a','t','i','v','e','_','i'
  413. ,'t','e','m','}','b','a','s','i','c','_'
  414. ,'d','e','c','l','a','r','a','t','i','v'
  415. ,'e','_','i','t','e','m','r','e','p','r'
  416. ,'e','s','e','n','t','a','t','i','o','n'
  417. ,'_','c','l','a','u','s','e','u','s','e'
  418. ,'_','c','l','a','u','s','e','l','a','t'
  419. ,'e','r','_','d','e','c','l','a','r','a'
  420. ,'t','i','v','e','_','i','t','e','m','p'
  421. ,'r','o','p','e','r','_','b','o','d','y'
  422. ,'b','o','d','y','_','s','t','u','b','s'
  423. ,'u','b','p','r','o','g','r','a','m','_'
  424. ,'b','o','d','y','p','a','c','k','a','g'
  425. ,'e','_','b','o','d','y','t','a','s','k'
  426. ,'_','b','o','d','y','i','n','d','e','x'
  427. ,'e','d','_','c','o','m','p','o','n','e'
  428. ,'n','t','s','e','l','e','c','t','e','d'
  429. ,'_','c','o','m','p','o','n','e','n','t'
  430. ,'a','t','t','r','i','b','u','t','e','s'
  431. ,'e','l','e','c','t','o','r','a','t','t'
  432. ,'r','i','b','u','t','e','_','d','e','s'
  433. ,'i','g','n','a','t','o','r','c','o','m'
  434. ,'p','o','n','e','n','t','_','a','s','s'
  435. ,'o','c','i','a','t','i','o','n','s','a'
  436. ,'g','g','r','e','g','a','t','e','e','x'
  437. ,'p','r','e','s','s','i','o','n',',','e'
  438. ,'x','p','r','e','s','s','i','o','n','{'
  439. ,',','e','x','p','r','e','s','s','i','o'
  440. ,'n','}','[',',','o','t','h','e','r','s'
  441. ,'=','>','e','x','p','r','e','s','s','i'
  442. ,'o','n',']','c','h','o','i','c','e','{'
  443. ,'|','c','h','o','i','c','e','}','=','>'
  444. ,'e','x','p','r','e','s','s','i','o','n'
  445. ,'{',',','c','h','o','i','c','e','{','|'
  446. ,'c','h','o','i','c','e','}','=','>','e'
  447. ,'x','p','r','e','s','s','i','o','n','}'
  448. ,'o','t','h','e','r','s','=','>','e','x'
  449. ,'p','r','e','s','s','i','o','n','g','a'
  450. ,'_','e','x','p','r','e','s','s','i','o'
  451. ,'n','{',',','g','a','_','e','x','p','r'
  452. ,'e','s','s','i','o','n','}','i','d','e'
  453. ,'n','t','i','f','i','e','r','{','|','i'
  454. ,'d','e','n','t','i','f','i','e','r','}'
  455. ,'=','>','e','x','p','r','e','s','s','i'
  456. ,'o','n','{',',','i','d','e','n','t','i'
  457. ,'f','i','e','r','{','|','i','d','e','n'
  458. ,'t','i','f','i','e','r','}','=','>','e'
  459. ,'x','p','r','e','s','s','i','o','n','}'
  460. ,'r','e','l','a','t','i','o','n','r','e'
  461. ,'l','a','t','i','o','n','{','A','N','D'
  462. ,'_','_','r','e','l','a','t','i','o','n'
  463. ,'}','r','e','l','a','t','i','o','n','{'
  464. ,'O','R','_','_','r','e','l','a','t','i'
  465. ,'o','n','}','r','e','l','a','t','i','o'
  466. ,'n','{','X','O','R','_','_','r','e','l'
  467. ,'a','t','i','o','n','}','r','e','l','a'
  468. ,'t','i','o','n','{','A','N','D','_','_'
  469. ,'T','H','E','N','_','_','r','e','l','a'
  470. ,'t','i','o','n','}','r','e','l','a','t'
  471. ,'i','o','n','{','O','R','_','_','E','L'
  472. ,'S','E','_','_','r','e','l','a','t','i'
  473. ,'o','n','}','[','r','e','l','a','t','i'
  474. ,'o','n','a','l','_','o','p','e','r','a'
  475. ,'t','o','r','_','_','s','i','m','p','l'
  476. ,'e','_','e','x','p','r','e','s','s','i'
  477. ,'o','n',']','[','N','O','T',']','I','N'
  478. ,'[','u','n','a','r','y','_','a','d','d'
  479. ,'i','n','g','_','o','p','e','r','a','t'
  480. ,'o','r',']','t','e','r','m','{','b','i'
  481. ,'n','a','r','y','_','a','d','d','i','n'
  482. ,'g','_','o','p','e','r','a','t','o','r'
  483. ,'_','_','t','e','r','m','}','f','a','c'
  484. ,'t','o','r','{','m','u','l','t','i','p'
  485. ,'l','y','i','n','g','_','o','p','e','r'
  486. ,'a','t','o','r','_','_','f','a','c','t'
  487. ,'o','r','}','t','e','r','m','p','r','i'
  488. ,'m','a','r','y','[','e','x','p','o','n'
  489. ,'e','n','t','i','a','t','i','n','g','_'
  490. ,'o','p','e','r','a','t','o','r','_','_'
  491. ,'p','r','i','m','a','r','y',']','f','a'
  492. ,'c','t','o','r','h','i','g','h','_','p'
  493. ,'r','e','c','e','d','e','n','c','e','_'
  494. ,'u','n','a','r','y','_','o','p','e','r'
  495. ,'a','t','o','r','p','a','r','e','n','t'
  496. ,'h','e','s','i','z','e','d','_','e','x'
  497. ,'p','r','e','s','s','i','o','n','a','l'
  498. ,'l','o','c','a','t','o','r','q','u','a'
  499. ,'l','i','f','i','e','d','_','e','x','p'
  500. ,'r','e','s','s','i','o','n','r','e','l'
  501. ,'a','t','i','o','n','a','l','_','o','p'
  502. ,'e','r','a','t','o','r','b','i','n','a'
  503. ,'r','y','_','a','d','d','i','n','g','_'
  504. ,'o','p','e','r','a','t','o','r','u','n'
  505. ,'a','r','y','_','a','d','d','i','n','g'
  506. ,'_','o','p','e','r','a','t','o','r','m'
  507. ,'u','l','t','i','p','l','y','i','n','g'
  508. ,'_','o','p','e','r','a','t','o','r','e'
  509. ,'x','p','o','n','e','n','t','i','a','t'
  510. ,'i','n','g','_','o','p','e','r','a','t'
  511. ,'o','r','e','x','p','a','n','d','e','d'
  512. ,'_','n','a','m','e','{','p','r','a','g'
  513. ,'m','a','_','s','t','m','}','s','t','a'
  514. ,'t','e','m','e','n','t','{','s','t','a'
  515. ,'t','e','m','e','n','t','}','s','e','q'
  516. ,'u','e','n','c','e','_','o','f','_','s'
  517. ,'t','a','t','e','m','e','n','t','s','s'
  518. ,'i','m','p','l','e','_','s','t','a','t'
  519. ,'e','m','e','n','t','c','o','m','p','o'
  520. ,'u','n','d','_','s','t','a','t','e','m'
  521. ,'e','n','t','{','l','a','b','e','l','}'
  522. ,'+','n','u','l','l','_','s','t','a','t'
  523. ,'e','m','e','n','t','a','s','s','i','g'
  524. ,'n','m','e','n','t','_','s','t','a','t'
  525. ,'e','m','e','n','t','e','x','i','t','_'
  526. ,'s','t','a','t','e','m','e','n','t','r'
  527. ,'e','t','u','r','n','_','s','t','a','t'
  528. ,'e','m','e','n','t','g','o','t','o','_'
  529. ,'s','t','a','t','e','m','e','n','t','d'
  530. ,'e','l','a','y','_','s','t','a','t','e'
  531. ,'m','e','n','t','a','b','o','r','t','_'
  532. ,'s','t','a','t','e','m','e','n','t','r'
  533. ,'a','i','s','e','_','s','t','a','t','e'
  534. ,'m','e','n','t','c','o','d','e','_','s'
  535. ,'t','a','t','e','m','e','n','t','c','a'
  536. ,'l','l','_','s','t','a','t','e','m','e'
  537. ,'n','t','i','f','_','s','t','a','t','e'
  538. ,'m','e','n','t','c','a','s','e','_','s'
  539. ,'t','a','t','e','m','e','n','t','l','o'
  540. ,'o','p','_','s','t','a','t','e','m','e'
  541. ,'n','t','b','l','o','c','k','_','s','t'
  542. ,'a','t','e','m','e','n','t','a','c','c'
  543. ,'e','p','t','_','s','t','a','t','e','m'
  544. ,'e','n','t','s','e','l','e','c','t','_'
  545. ,'s','t','a','t','e','m','e','n','t','l'
  546. ,'a','b','e','l','c','o','n','d','i','t'
  547. ,'i','o','n','_','T','H','E','N','_','_'
  548. ,'s','e','q','u','e','n','c','e','_','o'
  549. ,'f','_','s','t','a','t','e','m','e','n'
  550. ,'t','s','{','E','L','S','I','F','_','_'
  551. ,'c','o','n','d','i','t','i','o','n','_'
  552. ,'_','T','H','E','N','_','_','s','e','q'
  553. ,'u','e','n','c','e','_','o','f','_','s'
  554. ,'t','a','t','e','m','e','n','t','s','}'
  555. ,'[','E','L','S','E','_','_','s','e','q'
  556. ,'u','e','n','c','e','_','o','f','_','s'
  557. ,'t','a','t','e','m','e','n','t','s',']'
  558. ,'c','o','n','d','i','t','i','o','n','{'
  559. ,'p','r','a','g','m','a','_','a','l','t'
  560. ,'}','c','a','s','e','_','s','t','a','t'
  561. ,'e','m','e','n','t','_','a','l','t','e'
  562. ,'r','n','a','t','i','v','e','{','c','a'
  563. ,'s','e','_','s','t','a','t','e','m','e'
  564. ,'n','t','_','a','l','t','e','r','n','a'
  565. ,'t','i','v','e','}','[','l','o','o','p'
  566. ,'_','i','d','e','n','t','i','f','i','e'
  567. ,'r',':',']','[','i','d','e','n','t','i'
  568. ,'f','i','e','r',']','i','t','e','r','a'
  569. ,'t','i','o','n','_','r','u','l','e','b'
  570. ,'e','g','i','n','_','e','n','d','_','b'
  571. ,'l','o','c','k','d','e','c','l','a','r'
  572. ,'a','t','i','v','e','_','p','a','r','t'
  573. ,'_','_','b','e','g','i','n','_','e','n'
  574. ,'d','_','b','l','o','c','k','b','e','g'
  575. ,'i','n','_','e','n','d','_','b','l','o'
  576. ,'c','k','_','h','e','a','d','{','p','r'
  577. ,'a','g','m','a','_','a','l','t','}','_'
  578. ,'_','e','x','c','e','p','t','i','o','n'
  579. ,'_','h','a','n','d','l','e','r','_','l'
  580. ,'i','s','t','[','b','l','o','c','k','_'
  581. ,'i','d','e','n','t','i','f','i','e','r'
  582. ,':',']','d','e','c','l','a','r','e','_'
  583. ,'i','t','e','m','e','x','i','t','_','i'
  584. ,'t','e','m','g','o','t','o','_','i','t'
  585. ,'e','m','s','u','b','p','r','o','g','r'
  586. ,'a','m','_','s','p','e','c','i','f','i'
  587. ,'c','a','t','i','o','n','s','u','b','p'
  588. ,'r','o','g','r','a','m','_','i','d','e'
  589. ,'n','t','i','f','i','e','r','p','a','r'
  590. ,'a','m','e','t','e','r','_','s','p','e'
  591. ,'c','i','f','i','c','a','t','i','o','n'
  592. ,'{',';','p','a','r','a','m','e','t','e'
  593. ,'r','_','s','p','e','c','i','f','i','c'
  594. ,'a','t','i','o','n','}','d','e','s','i'
  595. ,'g','n','a','t','o','r','m','o','d','e'
  596. ,'g','e','n','e','r','i','c','_','p','a'
  597. ,'r','a','m','e','t','e','r','_','m','o'
  598. ,'d','e','s','u','b','p','r','o','g','r'
  599. ,'a','m','_','b','o','d','y','_','h','e'
  600. ,'a','d','s','u','b','p','r','o','g','r'
  601. ,'a','m','_','b','o','d','y','_','t','a'
  602. ,'i','l','[','e','n','d','_','d','e','s'
  603. ,'i','g','n','a','t','o','r',']','p','a'
  604. ,'c','k','a','g','e','_','s','p','e','c'
  605. ,'i','f','i','c','a','t','i','o','n','p'
  606. ,'a','c','k','a','g','e','_','i','d','e'
  607. ,'n','t','i','f','i','e','r','p','r','i'
  608. ,'v','a','t','e','_','p','a','r','t','p'
  609. ,'a','c','k','a','g','e','_','b','o','d'
  610. ,'y','_','i','n','d','i','c','a','t','o'
  611. ,'r','{',',','e','x','p','a','n','d','e'
  612. ,'d','_','n','a','m','e','}','t','a','s'
  613. ,'k','_','s','p','e','c','i','f','i','c'
  614. ,'a','t','i','o','n','t','a','s','k','_'
  615. ,'i','d','e','n','t','i','f','i','e','r'
  616. ,'{','e','n','t','r','y','_','d','e','c'
  617. ,'l','a','r','a','t','i','o','n','}','{'
  618. ,'r','e','p','r','e','s','e','n','t','a'
  619. ,'t','i','o','n','_','c','l','a','u','s'
  620. ,'e','}','t','a','s','k','_','b','o','d'
  621. ,'y','_','i','n','d','i','c','a','t','o'
  622. ,'r','[','(','d','i','s','c','r','e','t'
  623. ,'e','_','r','a','n','g','e',')',']','['
  624. ,'f','o','r','m','a','l','_','p','a','r'
  625. ,'t',']','e','n','t','r','y','_','d','e'
  626. ,'c','l','a','r','a','t','i','o','n','['
  627. ,'(','e','x','p','r','e','s','s','i','o'
  628. ,'n',')',']','[','f','o','r','m','a','l'
  629. ,'_','p','a','r','t',']','s','e','l','e'
  630. ,'c','t','i','v','e','_','w','a','i','t'
  631. ,'c','o','n','d','i','t','i','o','n','a'
  632. ,'l','_','e','n','t','r','y','_','c','a'
  633. ,'l','l','t','i','m','e','d','_','e','n'
  634. ,'t','r','y','_','c','a','l','l','s','e'
  635. ,'l','e','c','t','_','a','l','t','e','r'
  636. ,'n','a','t','i','v','e','{','O','R','_'
  637. ,'_','s','e','l','e','c','t','_','a','l'
  638. ,'t','e','r','n','a','t','i','v','e','}'
  639. ,'s','e','l','e','c','t','i','v','e','_'
  640. ,'w','a','i','t','_','a','l','t','e','r'
  641. ,'n','a','t','i','v','e','a','c','c','e'
  642. ,'p','t','_','a','l','t','e','r','n','a'
  643. ,'t','i','v','e','d','e','l','a','y','_'
  644. ,'a','l','t','e','r','n','a','t','i','v'
  645. ,'e','t','e','r','m','i','n','a','t','e'
  646. ,'_','a','l','t','e','r','n','a','t','i'
  647. ,'v','e','[','s','e','q','u','e','n','c'
  648. ,'e','_','o','f','_','s','t','a','t','e'
  649. ,'m','e','n','t','s',']','{',',','n','a'
  650. ,'m','e','}','{','c','o','m','p','i','l'
  651. ,'a','t','i','o','n','_','u','n','i','t'
  652. ,'}','p','r','a','g','m','a','_','h','e'
  653. ,'a','d','e','r','c','o','m','p','i','l'
  654. ,'a','t','i','o','n','_','u','n','i','t'
  655. ,'c','o','n','t','e','x','t','_','c','l'
  656. ,'a','u','s','e','l','i','b','r','a','r'
  657. ,'y','_','o','r','_','s','e','c','o','n'
  658. ,'d','a','r','y','_','u','n','i','t','s'
  659. ,'u','b','u','n','i','t','{','w','i','t'
  660. ,'h','_','c','l','a','u','s','e','{','u'
  661. ,'s','e','_','c','l','a','u','s','e','}'
  662. ,'}','{',',','u','s','e','d','_','i','d'
  663. ,'e','n','t','i','f','i','e','r','}','w'
  664. ,'i','t','h','_','c','l','a','u','s','e'
  665. ,'e','x','c','e','p','t','i','o','n','_'
  666. ,'c','h','o','i','c','e','{','|','e','x'
  667. ,'c','e','p','t','i','o','n','_','c','h'
  668. ,'o','i','c','e','}','e','x','c','e','p'
  669. ,'t','i','o','n','_','h','a','n','d','l'
  670. ,'e','r','g','e','n','e','r','i','c','_'
  671. ,'s','p','e','c','i','f','i','c','a','t'
  672. ,'i','o','n','g','e','n','e','r','i','c'
  673. ,'_','f','o','r','m','a','l','_','p','a'
  674. ,'r','t','{','g','e','n','e','r','i','c'
  675. ,'_','p','a','r','a','m','e','t','e','r'
  676. ,'_','d','e','c','l','a','r','a','t','i'
  677. ,'o','n','}','g','e','n','e','r','i','c'
  678. ,'_','p','a','r','a','m','e','t','e','r'
  679. ,'_','d','e','c','l','a','r','a','t','i'
  680. ,'o','n','g','e','n','e','r','i','c','_'
  681. ,'t','y','p','e','_','d','e','f','i','n'
  682. ,'i','t','i','o','n','[','I','S','_','_'
  683. ,'n','a','m','e','_','_','o','r','_','_'
  684. ,'<','>',']','g','e','n','e','r','i','c'
  685. ,'_','a','s','s','o','c','i','a','t','i'
  686. ,'o','n','{',',','g','e','n','e','r','i'
  687. ,'c','_','a','s','s','o','c','i','a','t'
  688. ,'i','o','n','}','[','g','e','n','e','r'
  689. ,'i','c','_','f','o','r','m','a','l','_'
  690. ,'p','a','r','a','m','e','t','e','r','='
  691. ,'>',']','g','e','n','e','r','i','c','_'
  692. ,'a','c','t','u','a','l','_','p','a','r'
  693. ,'a','m','e','t','e','r','g','e','n','e'
  694. ,'r','i','c','_','f','o','r','m','a','l'
  695. ,'_','p','a','r','a','m','e','t','e','r'
  696. ,'g','e','n','e','r','i','c','_','a','c'
  697. ,'t','u','a','l','_','p','a','r','a','m'
  698. ,'e','t','e','r','r','e','p','r','e','s'
  699. ,'e','n','t','a','t','i','o','n','_','i'
  700. ,'t','e','m','l','e','n','g','t','h','_'
  701. ,'c','l','a','u','s','e','e','n','u','m'
  702. ,'e','r','a','t','i','o','n','_','r','e'
  703. ,'p','r','e','s','e','n','t','a','t','i'
  704. ,'o','n','_','c','l','a','u','s','e','a'
  705. ,'d','d','r','e','s','s','_','c','l','a'
  706. ,'u','s','e','r','e','c','o','r','d','_'
  707. ,'r','e','p','r','e','s','e','n','t','a'
  708. ,'t','i','o','n','_','c','l','a','u','s'
  709. ,'e','{','c','o','m','p','o','n','e','n'
  710. ,'t','_','c','l','a','u','s','e','}','a'
  711. ,'l','i','g','n','m','e','n','t','_','c'
  712. ,'l','a','u','s','e','c','o','m','p','o'
  713. ,'n','e','n','t','_','c','l','a','u','s'
  714. ,'e','c','o','d','e','_','i','t','e','m'
  715. ,'g','a','_','e','x','p','r','e','s','s'
  716. ,'i','o','n','{','|','i','d','e','n','t'
  717. ,'i','f','i','e','r','}','e','x','c','e'
  718. ,'p','t','i','o','n','_','h','a','n','d'
  719. ,'l','e','r','_','l','i','s','t','u','s'
  720. ,'e','_','c','l','a','u','s','e','_','l'
  721. ,'i','s','t')  ;
  722.         --| Table of symbols used in the grammar.
  723.         -- NYU Reference Name: NO_SYM
  724.     
  725.     LeftHandSide :
  726.          constant array (LeftHandSideRange)
  727.          of GrammarSymbolRange :=
  728.           (  101,  101,   99,  103,  103,  103,  103,  103,  103,  103
  729. ,  103,  103,  103,  103,  102,  114,  114,  114,  114,  104
  730. ,  115,  105,  105,  105,  121,  121,  125,  124,  128,  128
  731. ,  128,  128,  128,  128,  128,  106,  136,  116,  116,  137
  732. ,  138,  138,  138,  138,  135,  140,  140,  129,  144,  146
  733. ,  146,  130,  131,  131,  141,  147,  142,  149,  132,  132
  734. ,  150,  118,  151,  153,  155,  155,  157,  157,  133,  158
  735. ,  158,  158,  161,  163,  126,  162,  165,  165,  167,  167
  736. ,  167,  134,  122,  122,  170,  170,  173,  173,  173,  176
  737. ,  176,  176,  176,  176,  176,  176,  171,  171,  177,  177
  738. ,  177,  154,  154,  154,  154,  154,  154,  182,  183,  183
  739. ,  185,  185,  185,  184,  186,  186,  186,  186,  188,  187
  740. ,  187,  187,  187,  187,  187,  100,  100,  100,  119,  119
  741. ,  119,  119,  119,  119,  197,  197,  143,  207,  210,  210
  742. ,  212,  208,  208,  208,  208,  208,  208,  208,  215,  215
  743. ,  215,  215,  215,  215,  216,  216,  216,  217,  217,  211
  744. ,  211,  218,  218,  218,  218,  219,  214,  214,  213,  213
  745. ,  213,  213,  224,  222,  222,  222,  222,  225,  225,  225
  746. ,  225,  225,  225,  225,  225,  225,  225,  226,  226,  226
  747. ,  226,  226,  226,  244,  228,  229,  238,  248,  239,  250
  748. ,  250,  240,  240,  254,  254,  254,  256,  255,  255,  257
  749. ,  241,  241,  260,  230,  261,  261,  261,  261,  231,  231
  750. ,  232,  262,  107,  263,  263,  263,  263,  267,  267,  264
  751. ,  265,  268,  268,  269,  269,  269,  179,  270,  271,  237
  752. ,  108,  273,  273,  275,  274,  180,  180,  276,  123,  123
  753. ,  123,  123,  175,  113,  113,  113,  113,  109,  278,  278
  754. ,  278,  278,  279,  181,  282,  284,  242,  242,  233,  243
  755. ,  243,  243,  286,  289,  289,  291,  291,  291,  292,  293
  756. ,  294,  287,  288,  234,   98,  298,  299,  299,  299,  301
  757. ,  301,  301,  301,  301,  301,  301,  300,  305,  178,  178
  758. ,  178,  302,  111,  308,  306,  306,  235,  235,  110,  309
  759. ,  309,  310,  312,  312,  312,  312,  313,  313,  313,  313
  760. ,  313,  313,  313,  313,  112,  112,  112,  112,  112,  112
  761. ,  315,  318,  318,  319,  174,  320,  320,  320,  320,  321
  762. ,  322,  324,  324,  327,  326,  323,  236,  328,  159,  159
  763. ,  164,  164,  221,  221,  249,  249,  117,  117,  120,  120
  764. ,  139,  220,  220,  145,  145,  148,  148,  152,  152,  156
  765. ,  156,  160,  160,  127,  127,  166,  166,  168,  168,  169
  766. ,  169,  172,  172,  189,  189,  191,  192,  192,  190,  190
  767. ,  193,  329,  329,  329,  194,  194,  195,  196,  196,  330
  768. ,  330,  198,  198,  199,  199,  200,  200,  201,  201,  202
  769. ,  202,  203,  203,  204,  204,  205,  205,  205,  206,  206
  770. ,  209,  209,  223,  223,  227,  227,  245,  246,  246,  247
  771. ,  247,  251,  251,  252,  252,  253,  253,  259,  259,  258
  772. ,  331,  331,  266,  266,  272,  272,  272,  277,  277,  280
  773. ,  280,  281,  281,  283,  283,  283,  283,  285,  285,  285
  774. ,  285,  290,  290,  295,  295,  296,  296,  297,  297,  303
  775. ,  303,  332,  332,  304,  304,  307,  307,  311,  311,  314
  776. ,  314,  314,  316,  316,  317,  317,  325,  325)  ;
  777.         --| Map of the grammar rule number (constant array index) to
  778.         --| numeric value of left hand side symbol.
  779.         -- NYU Reference Name: LHS
  780.  
  781.     RightHandSide :
  782.          constant array (RightHandSideRange)
  783.          of GC.ParserInteger :=
  784.           (    6,    3,    1,    1,    1,    1,    1,    1,    1,    1
  785. ,    1,    1,    1,    1,    2,    4,    5,    4,    5,    6
  786. ,    2,    1,    1,    1,    4,    8,    2,    1,    1,    1
  787. ,    1,    1,    1,    1,    1,    4,    2,    1,    2,    1
  788. ,    1,    1,    1,    3,    2,    2,    4,    4,    1,    1
  789. ,    1,    1,    1,    1,    2,    2,    2,    2,    1,    1
  790. ,    7,    4,    3,    4,    2,    1,    1,    3,    4,    4
  791. ,    4,    3,    2,    4,    4,    9,    5,    4,    1,    3
  792. ,    2,    2,    3,    7,    1,    3,    1,    1,    1,    1
  793. ,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1
  794. ,    1,    1,    1,    1,    1,    1,    1,    4,    3,    3
  795. ,    1,    1,    1,    3,    1,    1,    1,    1,    3,    2
  796. ,    5,    5,    3,    3,    1,    1,    4,    2,    1,    1
  797. ,    1,    1,    1,    1,    2,    3,    1,    1,    2,    2
  798. ,    3,    1,    1,    1,    1,    1,    1,    1,    1,    1
  799. ,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1
  800. ,    1,    1,    1,    1,    1,    1,    3,    3,    2,    5
  801. ,    4,    4,    3,    1,    1,    2,    2,    1,    1,    1
  802. ,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1
  803. ,    1,    1,    1,    3,    2,    4,    7,    1,    9,    5
  804. ,    4,    7,    8,    2,    4,    5,    2,    3,    5,    1
  805. ,    5,    4,    1,    2,    1,    3,    2,    4,    2,    3
  806. ,    2,    2,    2,    2,    6,    4,    8,    1,    1,    1
  807. ,    4,    1,    2,    1,    2,    3,    2,    2,    3,    2
  808. ,    2,    6,    8,    1,    1,    5,    4,    4,    6,   10
  809. ,    5,    9,    4,    6,    6,    5,    4,    2,    2,    3
  810. ,    7,    8,    1,    4,    4,    4,    4,    8,    3,    1
  811. ,    1,    1,    7,    5,    2,    1,    1,    1,    2,    2
  812. ,    3,    9,   10,    4,    1,    2,    5,    2,    2,    1
  813. ,    1,    1,    1,    1,    1,    1,    1,    4,    4,    6
  814. ,    6,    5,    4,    5,    1,    1,    2,    3,    2,    2
  815. ,    2,    2,    5,    5,    9,    4,    3,    2,    2,    2
  816. ,    2,    1,    1,    1,    6,   10,    6,   10,    5,    9
  817. ,    1,    1,    1,    1,    2,    1,    1,    1,    1,    4
  818. ,    4,    7,    8,    5,    4,    5,    2,    3,    0,    2
  819. ,    0,    2,    0,    2,    0,    2,    0,    2,    0,    3
  820. ,    1,    1,    3,    0,    3,    0,    1,    0,    3,    0
  821. ,    3,    0,    3,    0,    3,    0,    2,    0,    3,    1
  822. ,    3,    1,    3,    3,    3,    4,    0,    3,    0,    2
  823. ,    3,    1,    3,    2,    1,    3,    4,    0,    3,    0
  824. ,    3,    3,    3,    3,    3,    3,    3,    4,    4,    4
  825. ,    4,    0,    2,    1,    2,    1,    2,    3,    1,    3
  826. ,    0,    2,    1,    3,    1,    2,    3,    0,    5,    0
  827. ,    2,    0,    2,    0,    2,    0,    1,    0,    2,    2
  828. ,    1,    2,    0,    3,    0,    1,    1,    0,    3,    1
  829. ,    3,    0,    3,    0,    4,    3,    7,    0,    4,    3
  830. ,    7,    0,    3,    1,    1,    0,    3,    1,    2,    0
  831. ,    3,    1,    3,    0,    3,    0,    3,    0,    2,    0
  832. ,    2,    2,    0,    3,    1,    3,    1,    3)  ;
  833.         --| Map of the grammar rule number (constant array index) to
  834.         --| size of right hand sides (number of symbols).
  835.         -- NYU Reference Name: RHS
  836.  
  837.     ActionTableOne :
  838.          constant array (ActionTableOneRange)
  839.          of GC.ParserInteger :=
  840.           ( 6969,    0,    0,    0,   50,   51,   52,    0,    0,    0
  841. ,   53,    0,    0,    0,    0,    0,    0,  636,    0, 6972
  842. , 6975,   58,   59,   60,   61,    0,    0,   62, 6978, 6981
  843. , 6984,    0,   66,   67,   68,   69,   70,    0,    0,   71
  844. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  845. ,    0,    0,    0,    0,    0,    0,    0,    0,   39,   40
  846. ,   41, 6987,   35,    0,   43,    0,    0,   44,    0, 6990
  847. ,    0,   79,    0,    0,    0,    0,    0,    0,    0,    0
  848. ,    0,    0,  762,    0,    0,    0,    0,    0,    0,  926
  849. ,    0,    0,    0,  518,   36,   37,   38,  649,    0,    0
  850. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  851. ,    0,    0, 6993,    0,    0,    0,    0,    0,  118,  431
  852. ,  595,  131,    0,  861,  107,   40,   41, 6996,    0,    0
  853. , 6999,    0,    0,   44,    0,   45,   48,    0,  597,    0
  854. ,    0,  264,    0,    0,    0,    0,    0, 7002,  359,  840
  855. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  856. ,    0,    0,    0,  119, 7005,  121,    0,    0,    0,    0
  857. ,    0,  123,  124,  125,  179,   50,   51,   52,  622,    0
  858. ,  894,   53,    0,    0,    0,    0,  649,   54,   55,    0
  859. ,   56,   57,   58,   59, 7008, 7011,    0,    0,   62,   63
  860. ,   64,   65,  798,   66,   67,   68,   69,   70,    0,    0
  861. ,   71,    0,    0,  156,    0,    0,  172,    0,    0,    0
  862. ,  817,    0,   36,    0,   38,    0,    0,    0,    0,    0
  863. ,    0,    0,    0,    0,    0,    0,    0, 7014,    0,    0
  864. ,    0,   50,   51,   52,    0,    0,  319,   53,  319,  320
  865. ,    0,  920,  107,   40,   41,   42,    0,    0,   43,    0
  866. ,  558,    0,    0,    0,   62,   63,   64,   65,    0, 7017
  867. ,   67,   68,   69,   70,  431,    0, 7020,    0,    0,    0
  868. ,    0,    0,    0,    0,    0,  126,  127,    0,    0,  226
  869. ,    0,    0,    0,    0,    0,  221,    0,  128,  229,    0
  870. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  871. ,    0,    0,    0,    0,  819,    0,    0,    0,    0,    0
  872. ,    0,    0,   72,  385,  131,    0,  850,    0,    0,    0
  873. ,  132,    0,  290,  574,    0,    0,    0,    0,    0,    0
  874. ,    0,  156,    0,    0,    0,    0,    0,    0,    0,    0
  875. ,    0,    0,    0,  418,    0,  419,  738,    0,    0,  651
  876. ,    0, 1388,    0,  420,    0, 1388,  421,    0,    0,   50
  877. , 7023, 7026, 1123,    0, 1123, 7029, 7032,   35,    0,  423
  878. ,  424,    0,    0,  887, 1384,    0,    0,    0,  425,    0
  879. , 1123,    0,    0,    0,   81,  157,    0,  426,    0,   68
  880. ,   69,   70,  427,    0,  428,    0,    0,  387,    0,   36
  881. ,   37,   38, 1123, 1384,    0,    0,  429,    0,   41, 7035
  882. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  883. ,    0,    3,    0,    0,    0,    0,    0,    0,    0,   39
  884. , 7038,   41,   42,  430,  339, 7041,    0,    0, 7045,    0
  885. ,   45,    0,  637,    0,    0,    0,    0,    0,    0,    0
  886. ,    0,    0,    0,    0,  399,    0,    0,    0,    0,    0
  887. ,  841,    0,    0,  739,    0,    0,    0,    0,  360,    0
  888. ,    0,    0,    0,  907,    0,    0,    0,    0,    0,  107
  889. ,    0, 7048,   42,   47,    0,    0,    0,    0,    0,    0
  890. ,   35,    0,    0,    0,    0,  432,    0,    0,    0,    0
  891. ,  419,    0,    0,    0,    0,    0,    0,   48,    0,    0
  892. ,    0, 7051,    0,   36,   37,   38,    0,    0, 7054,    0
  893. ,    0,    0,   36, 7057, 7061,   52,    0,  221,    0,    0
  894. ,  319,    0,    0,  828,  559,    0,    0,    0,    0,    0
  895. ,    0,  927,    0,  107,   40,   41, 7066,   51,   52,   43
  896. ,    0,    0, 7069, 7073, 7076,   42,    0,    0,   43,  262
  897. ,    0, 7079, 7082, 7085, 7089,   60, 7092,  435, 7095, 7098
  898. , 7101, 7104, 7107,  441, 7110, 7114, 7117, 7120, 7123,  447
  899. ,  448, 7126, 7130, 7133,  452, 7136,    0,    0,    0,    0
  900. ,    0,    0,    0, 7139,  598,    0, 7142, 7145,   52,    0
  901. ,  455,    0,  456,  457,    0,    0,    0,  501,    0,    0
  902. ,    0,    0,    0,    0,    0,    0,    0,    0,  101,    0
  903. ,    4, 7149,    6,    7,    0,    0,    8,  458,  459,  460
  904. ,  652,    0,  110,    0,    0,    0,  502,    0,    0,    0
  905. ,    0,  156,    0,    0,    0, 7152,    0,    0,    0,    0
  906. ,    0,    0,    0,    0,    0,    0,  575,  789,  519,  291
  907. , 7156,   51,   52,    0,    0,    0, 7159,    0,    0, 7162
  908. ,   51, 7166,    0,    0,    0, 7169,   57, 7172, 7175, 7178
  909. ,   61,    0,    0, 7181,   63,   64,   65,    0,   66,   67
  910. ,   68,   69, 7184, 7187,   64, 7190,  168, 7194,   67,   68
  911. ,   69,   70,    0,    0,   71,    0,    0,  107, 7197,   41
  912. ,   42,    0,    0,   43,    0, 7200,   44,    0,   45,  105
  913. ,  521,    9,    0,    0,  800,    0,    0,    0,    0,  693
  914. ,    0,    0,    0,    0,    0,    0,    0,    0,  695,    0
  915. ,    0, 7203,    0,    0,    0,    0,    0,    0,    0,    0
  916. ,   35,    0,  740,    0,    0,   10,  174,    0,    0,    0
  917. ,    0,  583,    0,    0,  660,    0,    0,  661,    0,    0
  918. ,    0,    0,  264, 7206,   37,   38,    0,    0,    0,    0
  919. ,    0,    0,   36, 7209,   38, 7212,  131,  875,  697,  698
  920. ,  699,    0,  132,  292,    0,    0,  156,    0,    0,    0
  921. ,    0,    0,    0,  107,   40,   41,   42,  765,    0,   43
  922. ,    0,    0, 7215,   40, 7218,   42,    0,    0,   43,    0
  923. ,    0,   44,    0, 7222,   50,   51,   52,  776,    0,  562
  924. , 7226,    0,    0,    0,    0,    0,    0,  522,    0,   56
  925. ,   57, 7229,   59, 7232,   61,  663,   36, 7235, 7239,   64
  926. ,   65,    0,   66,   67,   68, 7242, 7245, 7248,    0, 7251
  927. ,    0,    0,   36,   37,   38,    0,   47,    0,    0,    0
  928. ,    0,    0,    0,    0,    0,    0,  107,   40,   41,   42
  929. ,    0,  266,   43,    0,    0, 7255,   40, 7258,   42,    0
  930. , 7261,   43, 7264,   40, 7267,   42, 7270,    0,   43,  361
  931. ,    0,   49,    0,    0,    0, 7273,    0,    0,    0,    0
  932. ,    0,    0,    0,    0,    0,    0,    0, 7276,    0,    0
  933. , 7279,   51,   52,  503,    0,    0,   53,    0,   36, 7282
  934. , 7286,   52,  504,  748,    0, 7289,    0,   36,   37, 7292
  935. ,    0, 7295,   55,   62, 7298, 7301, 7304,   59, 7307, 7310
  936. ,   68,   69, 7313,   63, 7316, 7319,    0,   66, 7322, 7325
  937. , 7328, 7331,    0,  653, 7334,  156,    0, 7337,   40, 7340
  938. ,   42,    0,    0,   43, 7343,    0, 7346,   42,   45,    0
  939. ,    0, 7349,    0,    0,    0,    0,    0,    0,    0,    0
  940. ,    0,    0,    0,   50,   51,   52,  830,  129, 7352, 7355
  941. ,   15,    0,   50,   51,   52,    0,    0,    0,   53,   50
  942. ,   51,   52,  631,    0,    0, 7360,   62,   63, 7363,   65
  943. ,    0,   66, 7366,   68,   69, 7369,   63,   64, 7372, 7376
  944. ,   66,   67, 7380, 7383,   70, 7387,  266, 7390, 7394,   68
  945. , 7397,   70,    0,    0,    0,  851,    0, 7400,  533,  534
  946. ,  319,  209, 7403, 7406,  212, 7410,  156,    0,    0,    0
  947. ,    0,    0,    0,  576,  863,   36,   37, 7413,    0,    0
  948. ,    0,    0,  282,    0,    0, 7416, 7419, 7424,  183, 7427
  949. , 7430, 7433,  187,  188, 7436, 7439, 7443,  192, 7446,    0
  950. , 7449, 7453, 7456, 7459, 7462, 7466, 7471,   41, 7474,   63
  951. ,   64, 7478,    0, 7481, 7484,   68, 7487, 7490,   63,   64
  952. , 7494,    0,   66,   67,   68,   69,   70,    0,    0,   71
  953. ,  716,    0,    0,  686,    0,    0,    0,    0,    0,    0
  954. ,  418,    0,  419,    0,  390,    0,  104,    0, 1388,    0
  955. , 7498,    0, 1388,  421,  197,    0,  198,  199,  200,    0
  956. , 7501,  202, 7504, 7507, 7510,    0,  423,  424,    0,    0
  957. ,  540, 7513,  542,  543,  544, 7516,  546,  547,  253,    0
  958. ,    0,  172,  548, 7519, 7522,    0,    0,    0,    0, 7525
  959. ,    0, 7528,  492,    0,  156,  842,    0,  725,    0,    0
  960. , 1384,    0,    0,  429,    0,   41,   42,  654,    0,    0
  961. ,  501,    0,    0,    0,  282,    0,    0,  801,    0,    0
  962. ,    0,    0,   50,   51,   52,    0,    0,    0,   53,    0
  963. ,  430,    0,  293,  742,    0,    0,    0,  267,    0, 7531
  964. ,    0,    0,  363,    0,    0,   62, 7534,   64,   65,    0
  965. ,   66,   67,   68, 7537,   70,    0,   27,   71,    0,   28
  966. ,  221,  207,    0,    0,    0,  208,    0,    0,    0,    0
  967. ,    0,    0,    0,    0,    0,    0,    0,    0,  687,    0
  968. ,    0,  229,    0,    0,    0,    0,    0,    0,  172,    0
  969. ,    0,    0, 7540,   32,  101,    0,    0,    0,    0,    0
  970. ,    0,    0,    0,  209,  210,  211,  212,  213,  726,    0
  971. ,    0,    0,    0,    0,    0,    0,  632,  577,    0,    0
  972. ,   50,   51,   52,    0,    0,    0,  214,    0,   35,    0
  973. ,    0,    0,    0,    0,    0,    0,    0,   35,    0,    0
  974. ,  129,    0,    0,    0,    0,  910,  173,    0,    0,  129
  975. ,    0,    0,    0,    0,    0,    0,    0,    0, 1420, 1420
  976. , 7543,   37,   38,  434, 7546,  436, 7549,  438, 7553, 7556
  977. , 7560, 7563, 7566,  444, 7569, 7572, 7575, 7578,  449,  450
  978. ,  451,  452,  453,    0,  418,    0, 7582,    0,    0,    0
  979. , 7585,   40, 7588, 7592,  420, 1420, 7595, 7598,    0, 7601
  980. , 7605, 7608, 7612,   38,    0,   43, 7615, 1384, 7618,   37
  981. , 7621,  424,  802,  790,    0, 1384,    0,    0,    0,  425
  982. ,    0,    0,  221,    0,  458,  459,  460,    0, 7625,    0
  983. ,    0,  107,   40, 7628,   42,  428,    0,   43,  107,   40
  984. , 7632, 7635, 7638,    0, 7641,    0,    0, 7644,  505, 7647
  985. ,   42,    0,    0,  583,    0,    0,  107,    0,   41,   42
  986. ,  467,    0,    0,    0,  134,    0,  461,    0,  523,    0
  987. ,    0,    0,    0,    0,  430,    0,    0,  266,    0,  156
  988. ,    0,    0,    0,    0,    0,    0,    0,    0,  156,    0
  989. ,    0,    0,  462,    0,  463,    0,    0,    0,    0,    0
  990. ,    0,    0,    0,    0,    0,    0,    0,   50,   51, 7651
  991. ,    0,    0,    0,   53,    0,    0, 7655,   51,   52,    0
  992. , 7659,    0, 7662,  229,    0,  364,    0,  156,    0,    0
  993. ,   62, 7665, 7668, 7671,   59, 7674, 7677,   68,   69, 7681
  994. ,   63,   64, 7684,  501,   66, 7687,   68,   69, 7691,   51
  995. ,   52,   71,    0,    0, 7695, 7698, 7701,   52,    0,    0
  996. ,    0, 7704,  690,    0,   50,   51, 7708,    0,    0,  480
  997. ,  269, 7711, 7715, 7720, 7724,   52,   66,   67, 7727, 7730
  998. , 7733,   65,  764, 7736, 7739, 7743, 7746, 7749,   35,    0
  999. , 7752,    0,    0,   78,    0,    0,    0,    0,    0,    0
  1000. ,    0,    0,    0,    0,   36,   37, 7755, 7758, 7761,    0
  1001. , 7764,  438, 7767,  440, 7770,  442,  443, 7773,  445, 7776
  1002. , 7780, 7783, 7786,  450,  451,  452, 7789,    0,    0,    0
  1003. ,    5,   11,    7,  527, 7792, 7795,  512,   42,    0,    0
  1004. ,   43, 7799,    0, 7802,  457,   45,    0,    0,    0,    0
  1005. ,  107,   40,   41,   42,    0,    0,   43,    0,    0,   44
  1006. ,    0,   45,    0,    0,  130,  131,    0,    0,  458,  459
  1007. ,  460,  132,    0,  156,    0,    0,    0,  749,    0,    0
  1008. ,    0,    0,  727,    0,    0,  728,  765,  766,  513,  524
  1009. ,    0,  940,    0,    0,    0,    0,    0,    0,  101,  480
  1010. ,  281,   50,   51,   52,  578,    0,    0,   53,  640,   35
  1011. ,  461,    0,  266,    0,  217,    0, 7805,    0,  734,    0
  1012. ,    0,    0,    0,  156,    0,   63,  158,   65,  266,   66
  1013. ,   67,   68,   69,   70,  749,    0,   12,    0,  693, 7808
  1014. ,    0,   36,   37,   38,    0,   13,    0,  695,  705,    0
  1015. ,    0,   50,   51, 7811,    0,    0,    0,   53,    0,    0
  1016. ,    0,    0,    0,    0,    0,    0,   56, 7814, 7817, 7820
  1017. ,   60, 7823,   40, 7826, 7829,   63,   64, 7832,    0,   66
  1018. , 7835,   68, 7838, 7842,   58,   59, 7845,   61,  865,    0
  1019. ,   62,   63,   64,   65,    0,   66, 7848, 7851, 7854, 7857
  1020. ,    0,    0, 7860,    0,  533,  534,    0,    0,    0,    0
  1021. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1022. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1023. ,  221,    0,    0,    0,    0,  129,    0,    0,  566,    0
  1024. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,  266
  1025. ,    0,    0,    0,  295,    0,    0,    0,    0, 7863,  567
  1026. ,  156,    0,    0,  230,  231,    0,  626,    0,    0,    0
  1027. ,  603,   36,  831,   38,    0,    0,    0,  778,  604,    0
  1028. ,    0,    0,    0,    0,  633,    0,  515,  516, 7866,   51
  1029. ,   52,    0,    0,    0,   53,    0,    0,    0,    0,    0
  1030. ,    0,  107,   40, 7869,   42,    0,    0, 7872,    0,  656
  1031. ,    0,   62, 7876,   64, 7879,    0,   66,   67, 7882,   69
  1032. ,   70, 7885,    0,   71,    0,    0,  568,    0,  569,  570
  1033. ,  571,    0, 1052,    0,    0,  551,    0,  552,    0,    0
  1034. ,    0,    0,  911,    0,   36,   37, 7888,    0,    0,    0
  1035. ,    0,    0,    0, 7891,   37, 7894,    0,    0,    0, 1052
  1036. ,    0, 1052,    0,    0, 1052,  385,  131,    0,    0,    0
  1037. ,    0,    0, 7897,    0, 7900,   40, 7903,   42,   36,   37
  1038. , 7906,    0,    0, 7909,   40, 7912,   42,    0,    0, 7915
  1039. ,  156,    0,   44,    0, 7918, 1052, 1052, 1052, 1052, 1052
  1040. , 1052, 1052, 1052, 1052,    0,    0, 1052, 1052, 7921, 7924
  1041. , 7927, 7930, 1052,    0, 7933, 1052, 1052,   44, 7936, 7939
  1042. ,   52,    0,    0,    0, 7942,  643,  750,    0,    0,    0
  1043. ,    0,    9,    0,    0,    0,   35,    0,  941,    0,    0
  1044. ,    0,    0,   35,    0,  278,    0,    0,    0,   68,   69
  1045. , 7945,    0,  244,    0,    0,    0,  101,    0,    0,    0
  1046. ,    0,  579, 7948,  156,    0,  296,    0,   36,   37, 7951
  1047. ,    0,    0, 7954,    0,   36,   37,   38,    0,  923,    0
  1048. ,    0,    0,    0,    0,    0,    0,  266,    0,    0,    0
  1049. ,    0,   50,   51,   52,  137,    0,    0, 7957,   40, 7961
  1050. , 7964,   51,   52, 7967,  107,   40, 7970,   42,   45,    0
  1051. ,   43,    0,    0,   44,   62, 7974,   64,   65,    0, 7977
  1052. ,   67,   68,   69, 7980,   63, 7983, 7986,   52,   66,   67
  1053. ,   68, 7990, 7993,    0,    0,   71,    0,    0,    0,    0
  1054. ,   56,   57,   58,   59,   60,   61,    0,    0,   62,   63
  1055. ,   64, 7996,    0, 7999,   67,   68, 8002,   70,    0,    0
  1056. ,   71,    0,    0,    0,  853,  616,    0,    0,    0,    0
  1057. ,    0,    0,    0,    0,    0,  109,    0,    0,    0,    0
  1058. ,    0,    0,  266,  897,    0,    0, 8005,    0, 8008,   37
  1059. ,   38,    0,  607, 8011,    0,    0,    0,  232,    0, 8014
  1060. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1061. ,    0,  525,    0,    0,   50,   51,   52,  464,  107, 8018
  1062. , 8021, 8024,   51, 8029, 8032,  115,    0, 8036,    0, 8039
  1063. ,   57,   58,   59,   60,   61,    0,  271, 8042,   63, 8045
  1064. , 8048,    0,   66,   67, 8052, 8055, 8058, 8062,    0, 8065
  1065. ,   67,   68,   69, 8068,    0,  105,   71,  314,    0,  305
  1066. ,    0,    0,  729,    0,    0,    0,    0,    0,    0,    0
  1067. ,   35,    0,  341,    0,    0,  101,  315,    0,    0,   36
  1068. ,   37,   38,    0,    0,    0,    0,    0,    0,    0,    0
  1069. ,    0,    0,    0,    0,    0,    0, 8071,    0,    0,  688
  1070. ,    0,    0,   36,   37,   38,    0,   84,  110,    0,  758
  1071. ,   40,   41, 8074,    0,    0,   43,  101,    0,   44,  418
  1072. , 8077, 8081,    0,    0,    0,    0,    0, 1388,    0,  420
  1073. ,    0, 1388, 8084,   40,   41, 8087, 8090,   52, 8093,    0
  1074. ,    0, 8096, 1384,   45,  342,  423, 8100,  367,  501,  103
  1075. , 8103, 8106, 8109,   59, 8112, 8115, 8118, 8121, 8124, 8127
  1076. , 8130,   65,    0, 8133,   67,   68,   69,   70,  427,    0
  1077. , 8136,  393,    0, 8139,    0,   35,   17, 8142,    0, 8145
  1078. ,    0,    0,  429,    0, 8148, 8151,   38,  245,    0,  101
  1079. ,    0,    0,    0,    0,    0, 8155,    0,    0,  669,  854
  1080. ,    0,  671,    0,    0,    0,    0,    0, 8158,   37, 8161
  1081. , 8165, 8168,    0,    0,  107, 8171,   41,   42,  431,    0
  1082. ,   43, 8174,    0,   44,    0,   45,   50, 8177,   52,    0
  1083. ,  281,    0,   53,  608,  469,  216,    0,  107, 8180, 8184
  1084. , 8188, 8192,   42, 8195,    0,   43,   44,    0, 8198, 8201
  1085. , 8204, 8208,   65,  942,   66, 8211,   68,   69,   70,    0
  1086. ,    0, 8214,    0,  103,    0,  172,    0,    0, 8217,    0
  1087. ,    0, 8220,   62, 8223, 8226,   65,    0, 8229,   67,   68
  1088. ,   69,   70,   35,    0,   71,    0,    0,    0,    0,    0
  1089. ,    0,    0,  266,  780,    0,    0,    0,    0,    0,   50
  1090. ,   51,   52,    0,  156,    0,    0,    0,   35,    0,  855
  1091. ,   23,   24,  668,    0,   36, 8232,   38,  245,    0,    0
  1092. ,    0,    0,    0,  173,    0,    0,  156,    0,  669,  866
  1093. ,    0, 8235,   51,   52,    0,    0,    0,   53,    0, 8238
  1094. ,   37,   38,  434,  435, 8241, 8245, 8248, 8252, 8256, 8259
  1095. , 8262, 8266,  444, 8269, 8272, 8276, 8281, 8286, 8290, 8294
  1096. , 8297, 8302, 8305, 8308,  741,    0,   71,    0,    0, 8311
  1097. ,   40,   41,   42,    0,    0,   43,  455, 8315, 8318, 8322
  1098. , 8326,   64, 8330,   67, 8333, 8336, 8339,   69,   70,   71
  1099. ,    0, 8342,    0,    0,   25,    0,    0,  707,    0,  898
  1100. ,    0, 8345,    0, 8348, 8352,  460,    0, 8355,    0,    0
  1101. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1102. ,    0,    0,  245,    0,  793,    0,    0,    0,    0,    0
  1103. ,  718,    0,   29, 8358,  670,   36, 8361,   38,    0, 8364
  1104. ,   31, 8368,    0,    0,    0,  461,    0,  245,    0,  101
  1105. ,    0,    0,  751,    0,    0,    0,    0,  856, 8372,  879
  1106. ,    0, 8375,   51,   52,    0,  107,   40, 8378,   42,  220
  1107. ,    0,   43,    0,  527,   44,  103,   45,    0,    0,  927
  1108. ,    0,    0,    0,    0,   62,   63, 8381, 8384,   52,   66
  1109. ,   67,   68, 8387,   70,    0,    0,   71,  297,    0,   41
  1110. ,   42,    0,    0,    0,  394,    0,    0,    0,   35, 8390
  1111. , 8393, 8396, 8399,  212, 8403, 8406,   68,   69,   70,  470
  1112. ,  324,   71,    0,    0,    0,    0,    0,   33,    0,    0
  1113. ,    0,    0,    0,    0,    0,    0,    0,  528,    0,    0
  1114. ,   36,   37,   38,  266,  395,    0,    0,    0,    0,   35
  1115. ,    0,    0,    0,  396,  156,    0,  281,    0,    0,    0
  1116. , 8409,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1117. ,  107, 8412,   41,   42,    0,    0,   43,  385,  131,   44
  1118. ,    0, 8415, 8418, 8421, 8425,  899,  298,    0,   53,    0
  1119. ,    0,    0,    0,    0,  804,    0,    0,   56, 8428,   58
  1120. ,   59,   60,   61,    0,  582,   62,   63,   64,   65,    0
  1121. ,   66, 8431, 8434, 8437, 8440,   51,  299, 8444,    0,    0
  1122. ,   44,    0,   45,    0,    0, 8448,    0,    0,    0,    0
  1123. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1124. ,    0,    0,    0,    0,    0,    0,    0,    0,  266,    0
  1125. ,  233,    0,    0,  234,    0,    0,    0,    0,    0,  156
  1126. ,  844,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1127. ,    0,    0,    0,    0,   84,    0,    0,    0,    0,    0
  1128. ,    0,    0,  159,    0,    0,    0,    0,   50,   51, 8451
  1129. ,    0,    0,    0,   53,  344,    0,    0,    0,    0,    0
  1130. , 8454,  932, 8457,  215,    0,  216,    0,    0,    0,    0
  1131. ,   62,   63,   64,   65,    0,   66,   67,   68, 8460,   70
  1132. , 8463,   42, 8466,    0,  611,    0,  174,   14, 8470,   51
  1133. ,   52,    0,    0,    0,   53,    0,    0,    0,    0,    0
  1134. ,    0,  101,    0, 8473,    0,    0,   17,    0,    0,  752
  1135. ,    0,   62, 8476, 8479, 8482,    0, 8485, 8488,   68,   69
  1136. , 8491, 8494,   85,   71,    0, 8497,  164,    0,    0,   34
  1137. ,    0,    0,  292,    0,    0,    0, 8500,    0,    0,    0
  1138. ,    0,    0,  107,   40,   41,   42,    0,    0,   43,    0
  1139. ,    0, 8503,    0, 8506,   37,   38,    0,    0,    0,    0
  1140. ,    0,    0,    0,  180,  181,  182, 8509, 8512,  185, 8515
  1141. ,  187,  188,  189,  190, 8518,  192,  193,    0,    0,   85
  1142. ,    0,  529,  194, 8521, 8524,   41,   42,    0,    0, 8527
  1143. ,   78,    0,   44,    0,   45,   50, 8530,   52,    0,    0
  1144. ,    0,  494,    0,    0,    0,    0,  221,    0,    0,    0
  1145. ,    0,   85,  794,    0,    0,    0,    0,    0,    0,    0
  1146. ,  266,   86,   87,    0,    0,    0,    0,    0,    0,    0
  1147. ,    0,  156,    0,    0,  198,  199,  200,    0,    0,  769
  1148. ,    0,    0,   35,  229,    0,  645,    0,    0,    0,    0
  1149. ,    0,    0,    0,    0,    0,    0, 8533,  325,    0,   50
  1150. ,   51, 8536,  326,    0,    0,   53,    0,    0,    0,    0
  1151. ,    0,  867,  669,  670, 8539, 8542, 8546,   59, 8549,   61
  1152. ,    0,  221,   62,   63,   64,   65,    0,   66, 8553,   68
  1153. ,   69,   70,    0,    0,   71,    0,    0,    0,    0,    0
  1154. ,   50, 8556,   52,    0,  107,   40, 8559, 8562,  317,    0
  1155. , 8565,    0,  744,   44,    0,   45,    0,    0,    0,    0
  1156. ,    0,    0,  584,   62, 8568, 8571,   65,    0,   66,   67
  1157. ,   68,   69,   70,    0,   27, 8574,    0,    0,    0,  207
  1158. ,    0,    0,    0, 1362,    0,  845, 1362,    0,  846,    0
  1159. ,    0,    0,  119,  120,  121, 1029, 1029,  235,    0,    0
  1160. , 8578, 8581, 8584,  279,    0,    0,    0,    0,    0,    0
  1161. ,   31,   32,    0,    0,    0,    0,    0,    0,    0,    0
  1162. ,    0,  209, 8587,  211,  212,  213,    0,    0,    0,    0
  1163. ,  369,    0,    0, 8591, 8594, 8598,   15,    0,    0,  301
  1164. ,    0,    0,    0,  162,    0,    0,    0,  163,    0,  164
  1165. ,    0,  370,    0,  371,   17,    0,    0,    0,    0,    0
  1166. ,   35, 8601,   51,   52,  176, 8604,    0,   53,  178,  179
  1167. ,    0,    0,    0,  480,  164,  690,  355,    0,    0,  691
  1168. ,    0,    0,    0, 8607,   62, 8611, 8614,   65,    0,   66
  1169. ,   67,   68, 8619, 8622,   38,    0, 8625, 8628,    0, 8631
  1170. ,    0,    0,    0,    0,    0,  318,    0,  480,    0,  806
  1171. ,   35,  180,  181,  182, 8634, 8637,  185,  186, 8640, 8644
  1172. ,  189, 8647, 8650, 8653, 8656,   42,  128,    0,   43,  672
  1173. , 8659, 8662,  196,   45,  728, 8667,    0,    0,    0,    0
  1174. ,    0,    0,   36,   37, 8670,    0,    0,    0,    0,    0
  1175. ,    0,    0,    0,    0,  530,  834,    0,    0,    0,    0
  1176. ,    0,    0,    0,  284,    0,    0,    0,   36,   37,   38
  1177. ,    0,    0, 8673,   40,  512,   42, 8676,    0,   43,    0
  1178. ,    0,   44,  198, 8679,  200,    0,    0,    0,    0,    0
  1179. ,  275,    0,    0,    0,  142,    0,    0,  107, 8683,   41
  1180. , 8686,   51,   52,   43,    0,    0,   44,    0,   45,    0
  1181. ,    0,  110,    0,  221,    0,    0,    0,    0,    0,    0
  1182. ,    0,    0,  302,  880,  111,    0, 8690,    0,    0,    0
  1183. ,    0,    0,    0,    0,    0,    0,    0,  925,    0,   50
  1184. ,   51, 8693,    0,    0, 8696, 8699,  113,    0,  114,   35
  1185. , 8702, 8705,    0,  480,   56, 8708,   58,   59, 8711,   61
  1186. ,  695,  156,   62,   63,   64,   65,    0,   66,   67,   68
  1187. ,   69,   70,  373,    0,   71,  266,    0,    0,    0,    0
  1188. ,    0,   36, 8714,   38,  374,    0,  156,  207,    0,   50
  1189. ,   51, 8717,    0,    0,    0,   53,  166,    0,    0,    0
  1190. ,    0,    0,    0,    0,   56,   57,   58, 8720,   60, 8723
  1191. , 8726, 8729, 8732, 8736, 8739, 8745,   52, 8749, 8752, 8755
  1192. , 8758, 8762,   45,    0,   71,    0, 1052,    0,    0, 8765
  1193. , 8768, 8771, 8774, 8777,   61,    0,  881, 8780,   63,   64
  1194. , 8783,    0,   66,   67,   68,   69,   70,    0,  807, 8788
  1195. ,    0,    0,    0, 1052,    0, 1052,    0,    0, 1052,    0
  1196. ,    0,    0,    0,    0,    0,    0, 8791,    0, 1052,    0
  1197. ,    0,    0,    0,    0,    0,    0,    0,   35,    0,    0
  1198. ,  770,    0,  167, 1052,  236,    0,    0,    0, 1052, 8794
  1199. , 1052, 1052, 1052, 1052, 1309, 1052, 1052, 1052, 1309,    0
  1200. , 8797, 8800, 1052,    0,    0, 1052, 1052,    0, 1052, 8803
  1201. , 8806,   38,    0,    0,    0,    0,    0,    0,    0,  172
  1202. ,    0,    0,  617,    0,  515,  516,  517,   35,   50, 8809
  1203. ,   52,    0,  635,    0,   53,    0,    0,    0,  280, 8812
  1204. , 8815,   41, 8818,    0,    0,   43,    0,    0, 8821,    0
  1205. ,   45,   62,   63,   64, 8824,    0,   66,   67,   68, 8827
  1206. , 8830,   38,    0, 8833,    0,    0,    0,    0,    0,    0
  1207. ,    0,    0,    0,  107,    0,   41,   42,  173,    0,    0
  1208. ,  399,    0,    0,  319,    0,  400,  782,    0,    0,  107
  1209. , 8836, 8839,   42,    0,    0, 8842,  305,    0, 8845,    0
  1210. ,   45,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1211. ,    0,    0,   73,    0,   74,    0,    0,  245,    0,    0
  1212. ,    0,  281,    0,   36, 8848,   38,    0,  869,  156,    0
  1213. ,    0,  246,    0,    0,    0,  385,  131,  101,    0,    0
  1214. ,    0,    0,  132,  673,    0,  596,    0,    0,    0,  892
  1215. ,    0,    0,    0,   39,   40,   41, 8851,   51,   52, 8854
  1216. ,    0,    0, 8857,    0,   45,  172,    0,  266,    0,    0
  1217. ,  527,    0,  103,    0,    0,  945,  659,    0,  156,   62
  1218. ,   63, 8861,   65,    0,   66,   67,   68,   69, 8864,    0
  1219. , 8868, 8871,   52,    0,    0,    0,    0,    0,    0,    0
  1220. ,    0,  479,    0,  588,    0,    0,   50, 8874, 8877, 8880
  1221. ,    0,  103,   53,    0,    0,  531,    0,    0,    0,    0
  1222. ,    0,   56,   57, 8883, 8886, 8889,   61,    0,    0,   62
  1223. ,   63, 8892,   65,    0,   66,   67,   68,   69,   70,  173
  1224. ,   85, 8896,   49,    0,    0,  172,    0,    0,    0,    0
  1225. , 8899,   87,    0,  281,    0,    0,    0,    0,    0,    0
  1226. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1227. , 8902,   51,   52,    0,    0,  783,   53,    0,    0,    0
  1228. ,    0,    0,   54,   55,    0,   56,   57,   58,   59,   60
  1229. ,   61,    0,  281,   62, 8905,   64,   65,    0, 8908, 8912
  1230. ,   68, 8915,   70,  173,    0,   71,    0,    0,    0, 1385
  1231. , 8918,    0,    0,    0,  223,    0,    0, 8921,    0,   35
  1232. ,   17,    0,    0,    0,  823,    0,    0,    0,    0,    0
  1233. ,    0,  377,    0,    0,    0, 8924,  532,  710,    0,    0
  1234. ,    0,    0,   36,   37,   38, 8927, 1385,    0,  753,  282
  1235. ,    0,   36, 8930,   38,    0,    0,    0,    0,    0,    0
  1236. ,    0,    0,   86,   91,    0,    0,    0,   36,   37,   38
  1237. ,    0,    0, 8933,   40,   41,   42,    0,    0, 8936,    0
  1238. ,    0, 8939,   40, 8943,   42,    0,    0, 8946,    0,    0
  1239. ,   44,    0,   45,    0,  481,    0,  589, 8949,   40, 8952
  1240. ,   42,    0,    0,   43,    0,  533, 8955,    0,   45,  172
  1241. ,  916,    0,    0,    0,    0,    0,    0,   72,    0,    0
  1242. ,    0,  535,    0,    0,  536,    0,    0, 1020,    0,  284
  1243. ,    0, 8958,   37, 8961,  339, 8964,  129,  538,    0,    0
  1244. ,    0,    0,   35,    0,    0, 8967,  533,  534,  172,   92
  1245. , 8970,    0,  378,    0,  203,  204,  205,    0,    0,  266
  1246. ,  539, 8973,   40,   41,   42,    0,    0, 8976,    0,    0
  1247. , 8980,    0,   45,    0, 8984, 8987,   38,  129,  483, 8990
  1248. ,    0,    0,    0,    0,    0,    0,  110,    0,  307,   50
  1249. ,   51,   52,   43,    0,  485,   53,   46,    0,   50, 8993
  1250. , 8997,  567,    0,    0, 9000,   40, 9003, 9007,    0,  487
  1251. ,   43,    0,   62, 9010, 9014, 9018, 9024, 9027, 9033, 9037
  1252. , 9040, 9045, 9049, 9053, 9057,  343,   66, 9061, 9064, 9067
  1253. , 9072,  550,    0, 9075,    0,    0,  551,   62, 9078, 9082
  1254. ,   65,    0,   66,   67, 9086, 9089,   70,    0,    0,   71
  1255. ,   49,   28,    0,    0,    0,    0,  486,  208,  680,  487
  1256. ,    0,    0,    0,    0,    0,    0,    0,    0,  568,    0
  1257. ,  569,  570,  571,    0,    0,    0,    0,  551,   50, 9092
  1258. , 9095,    0, 9098,  488,   53,    0,    0,    0,    0,    0
  1259. ,   54,   55,    0, 9102, 9106,   58, 9109,   60,   61,    0
  1260. ,    0,   62,   63, 9112,   65,    0, 9115, 9118,   68, 9121
  1261. ,   70,    0,  492,   71,  168,    0,  720,    0,    0,  771
  1262. ,    0,   50, 9124,   52,    0,    0,    0,   53,    0,    0
  1263. ,  489,    0,  284,  330,    0,    0,    0,  346,    0,    0
  1264. , 1052,    0,    0,   35, 9127,   63, 9130,   65,    0,   66
  1265. ,   67,   68,   69, 9133, 9136,    0, 9139,    0,    0,    0
  1266. ,    0,    0,  492, 1052,    0,    0,  735, 1052,    0, 9142
  1267. ,    0, 9145, 9148,    0,    0,   36,   37,   38,  132,  380
  1268. ,    0,  754, 1052,    0,    0,  229,    0,    0,  381,    0
  1269. ,    0,  285,    0,  773,    0,  947,    0, 1052,    0,    0
  1270. ,    0,    0, 1052, 1052, 1052, 9151, 9154, 9158, 9162, 1052
  1271. , 9165, 9168,    0,    0, 9171, 1052, 9174,    0, 1282,    0
  1272. , 1052,    0, 1052, 1052, 1052,   72,    0,    0,  116,    0
  1273. ,    0,    0,    0,    0,    0,    0,  837,    0,  796,    0
  1274. ,    0,    0,  172,    0,    0,    0,    0,    0,    0,  234
  1275. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1276. ,    0,    0,  101,    0,   14,   15,    0,    0,    0,    0
  1277. ,    0,    0,  681,    0,    0,  493,    0,    0,  501,    0
  1278. ,  405,  784,    0, 9177,    0,    0,    0,  164,    0,    0
  1279. ,    0,    0,    0,    0, 9180,    0,    0,    0,  179,    0
  1280. ,  173,    0,    0,    0,    0,    0,    0,  675,    0,    0
  1281. ,    0,    0,    0,    0,    0,    0,    0,    0,    0, 9184
  1282. ,  148,    0,   50, 9187,   52,  848,    0,    0,   53,    0
  1283. ,    0,    0,    0,    0,    0,  149,    0,  494,    0,    0
  1284. ,    0,    0,    0,    0,  421, 9190, 9193, 9196, 9199,    0
  1285. , 9203, 9206,   68,   69,   70,    0,    0,   71,    0,  150
  1286. ,  164,    0,    0,    0,  151,    0,    0,    0,    0,    0
  1287. ,  591,    0,  172,    0,    0,    0,  101,  349,    0,    0
  1288. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,   35
  1289. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1290. ,    0,  785,    0,    0,    0,    0,    0,    0,    0,  411
  1291. ,  494,    0,    0,  412,  413,  201,  202, 9210, 9213,  205
  1292. ,    0, 9216,   37,   38,    0,    0, 9219,    0,    0,    0
  1293. ,  431,    0,    0,    0,    0,    0,    0,    0,  592,    0
  1294. ,    0,    0,    0,    0,    0,   17,    0,  808,    0,    0
  1295. ,    0,  107, 9223,   41,   42,  772,  510,   43,    0,    0
  1296. ,   44,    0,   45,  630,    0,    0,  249,  250,    0,    0
  1297. ,    0,    0,    0, 1054,    0,    0,    0,    0,    0,    0
  1298. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,  249
  1299. ,  250,    0,    0,    0,   35,    0, 1054,  251,    0,    0
  1300. , 1054, 9226, 1054,    0,  152, 1054,  755,    0,   26,    0
  1301. ,    0,   27,  382,    0,   28, 9229,  207,    0,    0,    0
  1302. , 9232, 9235,    0,  872,    0,    0, 9238,   37,   38,  468
  1303. , 1054,  356,    0, 9241,   37, 9244, 1054, 1054, 9247, 1054
  1304. , 9250, 1054, 1054, 1054, 9253,    0,    0, 9256, 9259, 1054
  1305. ,    0, 1283,    0, 9262,  858, 1054, 9265, 9268,  512,   42
  1306. ,    0,  593, 9271,  107,   40, 9274,   42,   45,   50, 9277
  1307. ,   52,    0,   44,    0, 9280,    0,    0,    0,    0,    0
  1308. ,    0,  786,    0,    0,    0,    0,    0,  736,  101,    0
  1309. ,  619,   62,   63,   64,   65,    0,   66,   67,   68,   69
  1310. ,   70,    0,    0,   71,    0,    0,   35,    0,    0,    0
  1311. ,  513,    0,    0,    0,  172,    0,    0,    0,    0,    0
  1312. ,    0,    0,  904,    0,    0,    0,    0,   73,    0,   74
  1313. ,    0,    0,    0,    0,  266,    0,  253,    0, 9283, 9286
  1314. ,   38,  473,  825,    0,    0,  156,    0,    0,    0,    0
  1315. ,  647,    0, 9289,    0,    0,    0,    0,    0,    0,  253
  1316. ,    0,  254,    0,  286,    0,    0,    0,  787,  107, 9292
  1317. ,   41,   42,  173,   50, 9295,   52,    0,    0,    0,   53
  1318. ,   50,   51,   52,  847,    0,  255,   53,    0,   56,   57
  1319. ,   58,   59,   60, 9298,    0,   41, 9301,   63,   64,   65
  1320. ,    0,   66,   67, 9304, 9307, 9310,   65,    0, 9313,   67
  1321. ,   68,   69,   70,    0,    0,   71,    0,    0,    0,    0
  1322. ,    0,    0,  496,    0,    0,    0,    0,    0,    0,    0
  1323. ,    0,    0,    0,  683,    0,    0,    0,    0,    0,    0
  1324. ,    0,    0,  905,  676,    0,    0,    0,    0,    0,    0
  1325. ,    0,    0,    0,    0,    0,    0,    0,  156,  849,    0
  1326. ,    0,   35,    0,    0,    0,    0,    0,    0,    0,    0
  1327. ,    0,    0,   93,  884,    0,  101,    0,    0,    0,    0
  1328. ,    0,    0, 9316,    0,    0, 9319,   51,   52,  772,    0
  1329. ,    0,   53,    0,   36,   37,   38,    0,    0,    0,    0
  1330. ,    0,    0,    0,    0,    0,    0,  797,    0,  515, 9322
  1331. , 9326, 9330,   52,   66,   67,   68,   69,   70,    0,  311
  1332. ,  169,    0,    0,  511,   40,  512,   42,    0,    0, 9333
  1333. ,    0,    0, 9336,    0, 9339,    0,    0,    0,    0,    0
  1334. ,    0,   36, 9343,   38,  572,    0,    0, 9346,    0,  103
  1335. ,    0,    0,  117,  287,    0,    0,    0,    0,  118,  775
  1336. ,    0,    0,    0,    0,    0,    0,   36,   37, 9349,    0
  1337. ,    0,   39,   40,   41,   42,    0,    0, 9352,    0,    0
  1338. , 9355,    0,   45,    0,    0,    0,    0,    0,    0,    0
  1339. ,    0,    0,    0,    0,    0,    0,  107,   40,   41,   42
  1340. ,    0,  266,   43,  119,  120, 9358,  256,   45,  122,    0
  1341. ,    0,  123, 9361,  125,    0,    0,    0,    0,    0,    0
  1342. ,    0,    0,    0,   35,  172,   47,    0,    0,    0,    0
  1343. ,  281,    0,    0,    0,    0,    0,    0,  164,    0,  171
  1344. ,   50,   51,   52,    0,    0,    0,   53,    0,    0,   48
  1345. ,    0,    0,    0,    0,    0, 9365, 9368, 9372, 9375,   60
  1346. , 9378,    0,    0,   62,   63,   64, 9381,  859, 9384,   67
  1347. ,   68,   69,   70,    0, 9387,   71,    0,    0,    0,    0
  1348. ,    0,    0,  431,    0,    0, 9390,   40, 9393, 9396, 9399
  1349. ,   52, 9402,    0,    0, 9405,    0, 9408,    0,    0,    0
  1350. , 9411,   55,    0,   56,   57,   58,   59,   60,   61,    0
  1351. ,    0,   62,   63, 9414, 9417,   52,   66,   67,   68, 9421
  1352. ,   70,   36,   37, 9425,    0,  126,  127,    0,    0,    0
  1353. ,    0,    0,    0,    0,    0,    0,   62, 9428,   64, 9431
  1354. ,    0, 9435, 9438,   68,   69,   70,    0,    0,   71,  314
  1355. ,    0, 9441,   40,   41, 9444,    0,    0,   43,  918,    0
  1356. ,   44,    0,   45,  266,    0,    0,    0,   95,    0,  811
  1357. ,   17,    0,  385, 9447,  156,  515,  516,  517,    0,  132
  1358. ,    0,    0,    0,    0,    0,    0,    0,    0,  531,    0
  1359. ,    0,    0,    0,    0,    0,    0,    0,    0,   84,    0
  1360. ,    0,    0,   50, 9450,   52,  583,    0,    0,   53,    0
  1361. ,    0,    0,    0,    0,    0, 9453,  813, 9456,   57, 9459
  1362. ,   59,   60,   61,  723,    0,   62,   63, 9462,   65,  266
  1363. ,   66,   67,   68, 9465,   70, 9468, 9472, 9476,    0,    0
  1364. ,  156,    0,    0,    0,    0, 9480,    0,  101,    0,    0
  1365. ,    0,   36, 9484,   38,    0,    0,    0,    0,    0,    0
  1366. ,    0,  154,    0,    0,    0,  758,   40,   41, 9487,   51
  1367. ,   52, 9490,    0,    0, 9493,    0,   45,  385,  131,    0
  1368. ,    0,  107,   40, 9496, 9501, 9505,   59, 9508,   61,    0
  1369. ,   44,   62, 9511,   64,   65,    0,   66,   67,   68,   69
  1370. ,   70,    0,  129,   71,  258,  919, 9514,  260,    0,  648
  1371. ,    0,    0,    0,    0,    0, 9517,   37, 9520,  938, 9523
  1372. ,    0,  713,  886,    0,    0,  130,  131,    0,    0,    0
  1373. ,    0,    0,  132,    0,  684,  703,    0,    0,    0,   77
  1374. ,    0,    0,  893,  266,  714,  107,   40,   41,   42,   36
  1375. , 9527, 9530,   52,  737, 9534,  172, 9537,    0,    0,  266
  1376. ,    0,    0,    0,    0,    0,    0,  838,  715,    0,    0
  1377. , 9540,    0,    0,    0,    0,    0,    0,    0,    0,  107
  1378. ,   40,   41, 9543,   51,   52,   43,    0,    0, 9546,   37
  1379. , 9551,    0,    0,   78,    0,  133,  555,   56, 9554, 9558
  1380. , 9561, 9566, 9569,    0, 9573, 9576,   63,   64,   65,    0
  1381. ,   66,   67,   68, 9580, 9584,   58,   59, 9587, 9590,   40
  1382. , 9593, 9596,   63, 9600, 9603,    0,   66, 9607,   68, 9610
  1383. ,   70,    0,    0,   71, 9613,  289,    0,    0,    0,    0
  1384. ,  948,  659,  527,    0,  103,    0,    0,    0,    0,    0
  1385. ,    0,    0,    0,    0,    0,    0,    0,  245,    0, 9616
  1386. ,    0,    0, 9619, 9622,   52,  760,    0,    0, 9625,  839
  1387. ,  282,  671,  334,    0,    0,    0,    0,  352,    0,    0
  1388. ,  685,    0,    0,    0,    0,   62,   63,   64,   65,  357
  1389. ,   66, 9628,   68,   69,   70,    0, 9631, 9635,   52,    0
  1390. ,    0,    0,   53,    0,    0,    0,    0,  156,  906,    0
  1391. ,    0,    0,    0,    0,    0,    0,    0,    0,    0, 9638
  1392. , 9641, 9644, 9648,   98,   66, 9651,   68, 9654,   70,   71
  1393. ,  573,    0,   56,  171,    0,  761,   57,    0,   36,   63
  1394. ,    0,   37,   64,    0,   38,   65,    0,  172,   42,    0
  1395. ,   45,  386,    0,   47,  117,    0,   42,  132,    0,   43
  1396. ,  596,    0,   49,  358,    0,  949,  120,    0,  557,   60
  1397. ,    0,   61,   80,    0,  788,  500,    0,  818,   66,    0
  1398. ,   71,  558,    0, 1123,   51,    0, 1123,   52,    0,  422
  1399. ,   53,    0, 1384,    2,    0,   42,   99,    0,  799,   40
  1400. ,    0,  921,  650,   43,    0,  651,   44,    0,   41,   35
  1401. ,    0,  421,  101,    0,  106,   49,    0,  172,   50,   37
  1402. ,    0,   51,   38,  623,   82,    0,   42,   50,    0,  107
  1403. ,   44,   53,    0,  690,   40,    0,   41,   45,    0,   44
  1404. ,   56,    0,  560,   57,    0,  704,   45,   58,    0,  561
  1405. ,   59,    0,  434,   61,    0,  436,  677,    0,  437,   62
  1406. ,    0,  438,   63,    0,  439,   64,    0,  440,   65,    0
  1407. ,  763,  442,   66,    0,  443,   67,    0,  444,   68,    0
  1408. ,  445,   69,    0,  446,   70,    0,  928,  449,   71,    0
  1409. ,  450,  100,    0,  451,  527,    0,  453,  103,    0,  785
  1410. ,  454,    0,   50,  599,    0,   51,  335,  243,    0,  109
  1411. ,    5,    0,  929,   35,  111,    0,  728,   50,    0,  281
  1412. ,   53,    0,  461,   50,  336,    0,   52,  337,    0,   53
  1413. ,   56,    0,   36,   58,    0,   37,   59,    0,   38,   60
  1414. ,    0,   62,  172,    0,   62,   70,    0,   63,  263,    0
  1415. ,  922,   65,   71,    0,   66,  520,    0,   40,  344,    0
  1416. ,  417,  388,    0,   35,  173,    0,  786,   36,    0,   37
  1417. ,   85,    0,  266,  385,    0,   39,   44,    0,   41,   45
  1418. ,   35,    0,   45,   35,  615,    0,   53,   35,    0,   58
  1419. ,  227,    0,  862,   60,    0,   62,  678,   37,    0,   63
  1420. ,   38,    0,   69,   36,    0,   70,   37,    0,   38,  624
  1421. ,    0,  908,   71,  563,    0,  107,   44,    0,   41,   45
  1422. ,    0,  829,   48,    0,  156,  107,    0,   44,   41,    0
  1423. ,   45,   35,    0,   35,  741,    0,  820,  724,    0,  821
  1424. ,   50,    0,   50,   37,  229,    0,   51,   38,    0,   53
  1425. ,  353,    0,   38,  362,    0,  723,   54,    0,   56,   63
  1426. ,    0,   57,   64,    0,   58,   65,    0,   60,   66,    0
  1427. ,   61,   67,    0,   62,   70,    0,   64,  338,    0,   65
  1428. ,   71,    0,   67,  107,    0,   68,   40,    0,   69,   41
  1429. ,    0,   70,   42,    0,   71,   43,    0,  107,   44,    0
  1430. ,   41,   45,    0,  156,  107,    0,   44,   41,    0,  156
  1431. ,  101,    0,  249,  174,    0,  221,  250,   53,   14,    0
  1432. ,   53,  175,    0,   64,   17,    0,   67,  164,    0,   62
  1433. ,   70,    0,   65,   71,  176,    0,  251,  389,  177,    0
  1434. ,   68,  178,    0,   69,   35,  179,    0,  777,   65,    0
  1435. ,  481,   71,  277,    0,   67,  164,    0,  482,   69,    0
  1436. ,  156,  252,    0,  210,  235,    0,  876,  211,  102,    0
  1437. ,  213,  103,    0,  536,   38,    0,   50,  180,    0,  864
  1438. ,   72,   51,  181,    0,   52,  182,    0,  129,  184,    0
  1439. ,  538,  185,    0,   53,  186,    0,   50,  189,    0,   51
  1440. ,  190,  950,    0,   52,  191,    0,  265,  193,    0,   53
  1441. ,  664,   56,    0,   57,   50,    0,   58,   51,    0,   59
  1442. ,   52,    0,   60,  321,  194,    0,  638,   61,  107,  195
  1443. ,    0,   40,  196,    0,  665,   62,   42,    0,   65,   43
  1444. ,    0,  539,   66,    0,   67,   44,    0,   69,   45,    0
  1445. ,  319,   62,   70,    0,  909,   65,   71,    0,  625,  420
  1446. ,    0,  489,  201,    0,  422,  203,    0, 1384,  204,    0
  1447. ,  164,  205,    0,  541, 1384,    0,  545,  425,    0,  549
  1448. ,  266,    0,  550,  426,    0,  551,  427,    0,  552,  428
  1449. ,    0,  564,  431,    0,   63,  206,    0,   69,   26,    0
  1450. ,  432,   31,    0,   36,  433,    0,  895,  435,    0,  939
  1451. ,  527,  437,    0,  103,  439,    0,   36,   35,  440,    0
  1452. ,   37,  441,    0,   38,  442,    0,  443,  294,    0,  445
  1453. , 1420,    0,  446,    2,    0,  447,   35,    0,  448,  229
  1454. , 1420,    0,  419, 1420,    0,  107,  454,    0, 1388,   41
  1455. ,  268,    0,  877,   42,    0, 1388,   43,    0,  421,  455
  1456. ,    0,  107,   44,  456,    0,   40,  457,    0,   41,   36
  1457. ,   45,    0,   42,   37,    0,  422,  391,    0,   44,   36
  1458. ,    0,   45,  423,   38,    0,  426, 1235,    0,  664,   41
  1459. ,  427,    0,   44,   41,    0,  666,   42,    0,  888,   45
  1460. ,    0, 1384,   43,    0,  429,   44,    0,  281,   41,   45
  1461. ,    0,  419,  639,   52,    0,   50,  266,  228,    0,  421
  1462. ,  156,    0,   53,   35,    0,   56,   63,    0,   57,   64
  1463. ,    0,   58,   65,    0,   60,   66,    0,   61,  432,   67
  1464. ,    0,   62,   70,    0,   65,   71,    0,  733,   67,  101
  1465. ,    0,  172,   70,   50,    0,   53,   36,    0,   50,   37
  1466. ,    0,   51,   38,    0,  930,  101,   53,    0,  691,   52
  1467. ,    0,   62,  339,  215,    0,   63,   35,  565,  340,    0
  1468. ,   50,   64,  216,    0,   51,   65,    0,   68,   62,    0
  1469. ,   69,   63,    0,   70,   64,    0,   71,   66,    0,  129
  1470. ,   67,  107,    0,   68,   40,    0,   69,   41,    0,   70
  1471. ,   42,    0,   71,   43,    0,  431,   38,    0,  130,  600
  1472. ,    0,  131,  601,    0,  437,  322,    0,  655,  439,    0
  1473. ,  132,  441,    0,  717,  444,    0,  103,  446,  365,    0
  1474. ,  447,   36,    0,  448,   37,    0,  449,   38,    0,  852
  1475. ,  602,    0,  511,  454,    0,  103,   40,    8,    0,  791
  1476. ,  455,    0,   44,  456,    0,  281,  218,    0,  156,  305
  1477. ,    0,  667,   52,    0,   57,   50,    0,   58,   51,    0
  1478. ,   59,   52,    0,   61,  107,    0,   53,   41,    0,   62
  1479. ,   42,    0,   65,   43,    0,   67,   44,    0,   69,   56
  1480. ,   45,    0,   70,   57,    0,   71,   60,    0,  696,   67
  1481. ,    0,  697,   68,    0,  698,   69,    0,  699,   70,    0
  1482. ,   71,  301,    0,  229,  641,    0,  517,   50,    0,   41
  1483. ,  270,    0,  605,  366,   43,    0,   63,   35,    0,  767
  1484. ,   65,    0,   68,  135,    0,   35,  219,    0,   35,   38
  1485. ,    0,   36,  392,    0,   38, 1052,    0,  132, 1052,    0
  1486. ,  107, 1052,    0,  221,   41,    0,   38,   43,    0,  107
  1487. ,   44,    0,   41,   45,    0,   43, 1052,    0,   45, 1052
  1488. ,    0,  107, 1052,    0,   40, 1350,    0,   41, 1350,    0
  1489. ,   42, 1052,    0,   43, 1052,    0,  896,   50,    0,   45
  1490. ,   51,    0,  642,   53,    0,  344,   70,    0,  513,  136
  1491. ,    0,  832,   38,    0,  106,  156,    0,  156,  107,   53
  1492. ,    0,   41,  606,    0,   42,   50,    0,   43,  323,    0
  1493. ,   44,   53,   41,    0,   45,   63,    0,   66,  138,    0
  1494. ,   62,   70,    0,   50,   64,    0,   51,   65,   71,    0
  1495. ,   53,   69,    0,   70,  300,    0,   65,  644,    0,  743
  1496. ,   66,    0,   69,   35,    0,  110,   78,    0,  214,   36
  1497. ,    0,  106,  156,    0,  657,  111,  627,    0,  112,   40
  1498. ,    0,   53,   41,    0,  319,  113,   42,   50,    0,  114
  1499. ,   52,    0,  878,  768,   43,    0,   44,   53,    0,   56
  1500. ,   45,    0,  319,   62,    0,   64,  130,    0,  706,   65
  1501. ,  131,    0,   68,   62,    0,   69,   63,    0,   70,  132
  1502. ,   64,    0,   35,   65,    0,   71,   66,    0,  304,   70
  1503. ,    0,  229,  109,    0,   42,  580,    0,   45,  658,  111
  1504. ,    0,  419,  659,    0,  421,  107,    0,   42,   50,    0
  1505. , 1414,   51,    0, 1414,   43,    0,  422,   44,   53,    0
  1506. ,  424,  343,    0, 1384,   56,    0,  779,   57,    0,   35
  1507. ,   58,    0,  425,   60,    0,  348,   61,    0, 1414,  730
  1508. ,    0,  101,   14,    0,   62,   15,    0,  282,   63,    0
  1509. ,  172,   64,    0,  426,   66,    0,  428,   71,    0,  889
  1510. ,   16,    0,   35,  792,    0,  924, 1384,    0,   41,   36
  1511. ,    0,   42,   37,   18,    0,   79,  139,    0,  160,   36
  1512. ,    0,   36,  430,   38,    0,   37,  468,    0,   38,  803
  1513. ,    0,  174,   40,    0,  843,  110,    0,   51,  161,    0
  1514. ,  609,   40,   19,    0,  107,   41,   20,    0,   40,  526
  1515. ,   42,    0,   41,   21,    0,   43,   22,    0,   44,   45
  1516. ,    0,   62,   50,    0,   45,   63,   51,    0,   64,   52
  1517. ,    0,   67,   53,    0,   71,  527,    0,  583,  475,    0
  1518. ,  432,  581,    0,  306,   63,    0,  229,   64,    0,  476
  1519. ,   66,    0,   37,  266,    0,  671,   50,    0,   36,  433
  1520. ,    0,  436,  107,  281,    0,  437,   40,    0,  438,   41
  1521. ,   56,    0,  439,   42,   57,    0,  440,   58,    0,  441
  1522. ,   59,    0,  442,   43,   60,    0,  443,   61,    0,  445
  1523. ,   44,    0,  446,   62,   50,    0,  447,   45,   63,   51
  1524. ,    0,   50,  448,   64,   52,    0,   51,  449,   65,    0
  1525. ,   52,  450,  506,    0,  451,   66,    0,  452,   67,  660
  1526. ,   53,    0,  453,   68,    0,   53,   69,    0,   70,  661
  1527. ,    0,  107,  454,  272,    0,  315,   62,    0,   44,  456
  1528. ,   63,    0,   62,  457,   64,    0,   45,   63,   65,    0
  1529. ,   65,   66,    0,   66,   68,    0,   67,   69,    0,   68
  1530. ,   70,    0,   71,  610,    0,  101,   26,    0,  458,  171
  1531. ,   35,    0,  459,   27,    0,   84,   28,    0,  719,   30
  1532. ,    0,  671,   37,    0,  943,  662,  316,    0,  912,  663
  1533. ,   32,    0,  669,  214,    0,  671,   50,    0,   53,   41
  1534. ,    0,   50,   64,    0,   51,   65,    0,   53,   69,    0
  1535. ,  319,   62,    0,   63,  209,    0,   64,  210,    0,  931
  1536. ,   65,  211,    0,   66,  213,    0,   67,  708,    0,  366
  1537. ,  140,    0,  477,   40,    0,   36,   45,    0,   50,   37
  1538. ,    0,  944,   51,   38,    0,  132,   52,    0,   57,  397
  1539. ,    0,   67,  107,    0,   68,   40,    0,   69,   41,    0
  1540. ,   70,   42,   50,    0,  781,   71,   43,    0,  826,   83
  1541. ,    0,  266,   52,    0,  890,  156,    0,  273,  160,    0
  1542. ,  107,   69,    0,   41,   35,    0,  634,   71,  161,    0
  1543. ,   15,   50,    0,  370,  354,    0,   36,   63,    0,   37
  1544. ,   64,    0,   38,   65,    0,  176,   66,    0,  372,   67
  1545. ,    0,  178,   70,    0,   35,  179,    0,  913,  689,    0
  1546. ,  731,  300,    0,  164,   44,    0,   36,   45,    0,  805
  1547. ,  183,    0,  822,  184,    0,  186,  345,    0,  900,  191
  1548. ,    0,  107,  195,    0,   40,  196,    0,   43,  507,    0
  1549. ,   51,  583,    0,  368,  274,    0,  245,   52,    0,   56
  1550. ,   36,    0,  671,   57,   37,    0,   58,   38,    0,   60
  1551. , 1362,  141,    0,   67,  101,    0,   51,  117,    0,   53
  1552. ,   41,    0,   42,  118,    0,   43, 1362,    0,   63,  373
  1553. ,    0,   64,  585,    0,   71,  309, 1362,    0,  478,  123
  1554. ,    0,  465,  124,    0,  103,  125,    0,  419,  210,  266
  1555. ,    0,  421,  156,    0,  933,  174,  222,    0,  221,   14
  1556. ,    0,  172,   50,    0,  508,  372,    0,  107,  281,  398
  1557. ,    0,   41,   63,    0,  172,   42,   64,   85,    0,   69
  1558. ,   36,    0,   70,   37,    0,   71,   86,    0,  106,   87
  1559. ,    0,  914,  165,    0,  183,  126,    0,  184,  127,    0
  1560. ,  319,  172,  187,    0,  431,  188,    0,  901,  190,    0
  1561. ,  191,  107,    0,  192,   40,    0,  193,   41,    0,  586
  1562. ,  194,    0,  891,  795,  195,   44,    0,  833,   35,    0
  1563. ,  173,   38,    0,  692,  511,    0,  173,  108,    0,   45
  1564. ,  199,   88,    0,   40,   89,    0,   42,   50,  109,    0
  1565. ,  745,  513,    0,  229,   52,    0,  646,  112,    0,  868
  1566. ,   53,    0,  266,  115,    0,  583,  693,    0,  694,   57
  1567. ,    0,  471,   60,    0,   37,   27,    0,   52,  129,    0
  1568. ,   59,  310,    0,  696,   61,    0,  902,  697,    0,  107
  1569. ,  698,    0,   40,  699,   62,    0,   41,   63,    0,   42
  1570. ,   50,   64,  327,  130,    0,   51,   65,  131,    0,   43
  1571. ,   66,    0,   67,   31,    0,   68,   32,    0,   44,   53
  1572. ,   69,    0,   70,  132,    0,   56,  209,    0,   57,  210
  1573. ,    0,   58,  211,    0,   59,  212,    0,   60,  213,    0
  1574. ,   62,   77,    0,  934,  847,   65,   90,    0, 1052,   71
  1575. ,    0, 1052,  101,    0,  248, 1052,    0,  156, 1052,    0
  1576. , 1052,  709,    0, 1052,   36,    0, 1052,   37,    0,   51
  1577. ,  732,    0,  287,  107,    0,  103,   40,    0,  303,   42
  1578. ,    0,  101,   44,    0,  657,   65,    0,   69,   36,    0
  1579. ,   70,   37,    0,   71,  587,    0,   40,  304,    0,   41
  1580. ,   35,    0,   43,  401,    0,  101,   44,    0,  915,   37
  1581. ,    0,   42,   50,    0,   43,  143,    0,  733,   44,   53
  1582. ,    0,  172,   64,    0,  402,  328,   70,    0,   50,  403
  1583. ,    0,   51,   71,    0,   51,   47,    0,   52,  375,    0
  1584. ,  480,  404,    0,  173,   58,    0,  385,   59,    0,  131
  1585. ,   60,    0,  132,   64,   48,    0,  700,   71,    0,   86
  1586. ,  628,    0,  509,   50,    0, 1389,   63,    0,  746, 1389
  1587. ,   66,    0,   67,  164,    0,   94,   69,    0,  306,   35
  1588. ,    0, 1385,  376,    0,  734,   35,    0,  229,  237,    0
  1589. ,   37,   85,    0,  106,  107,    0, 1323,   43,    0,  501
  1590. ,  107,   44,    0,   41,   45,    0, 1020,   43,    0,  482
  1591. ,  107,    0,   41,   35,    0,  534,   44,    0, 1323,   36
  1592. ,    0,  537,   38,    0,  946,  590,    0,  501,   78,    0
  1593. ,  679,  247,    0,  156,   39,    0,  173,  481,   43,    0
  1594. ,  156,  482,   44,    0,   36,  674,    0,   37,  468,    0
  1595. ,  870,  484,    0,   51,  111,  283,    0,  641,   52,    0
  1596. ,  107,   53,    0,   41,  486,  173,    0,   42,  489,    0
  1597. ,   44,   56,   63,    0,   57,   50,   64,    0,   45,   58
  1598. ,   51,   65,   47,    0,   59,   52,    0,  903,  481,   60
  1599. ,  540,   66,    0,   61,  541,   67,    0,  542,   68,    0
  1600. ,  482,  543,   53,   69,    0,   62,  544,   70,    0,   63
  1601. ,  545,  144,    0,   64,  546,  472,    0,   65,  547,   71
  1602. ,    0,   67,  145,    0,  483,   68,    0,  484,   69,  548
  1603. ,  146,    0,   70,  549,    0,   71,  488,    0,  552,   63
  1604. ,  379,    0,  492,   64,   48,    0,  485,   68,    0,   69
  1605. ,   26,    0,  552,   51,    0,  489,   52,    0,  468,  629
  1606. ,  238,    0,  110,  221,   56,    0,  490,   57,    0,  491
  1607. ,   59,    0,  835,   64,    0,  871,   66,    0,  466,   67
  1608. ,    0,  329,   69,    0,   51,  772,    0,   62,  490,    0
  1609. ,   64,  491,    0,  882,   70,    0,  883,  224,    0,   71
  1610. ,  612,    0, 1052,  147,    0,  836,  385,    0,  131, 1052
  1611. ,    0, 1052,  107,    0,  917, 1052,   40,    0,  857, 1052
  1612. ,   41,    0, 1052,   42,    0,  701, 1052,    0, 1052,   43
  1613. ,    0, 1052,   44,    0, 1052,   45,    0,   17,  248,    0
  1614. ,  501,  177,  156,    0,  935,  331,    0,  618,   51,    0
  1615. ,  406,   62,    0,  407,   63,    0,  408,   64,    0,  553
  1616. ,  409,   65,    0,  410,   66,    0,  824,  682,   67,    0
  1617. ,  203,  308,    0,  204,  239,    0,   36,  495,    0,  936
  1618. ,  101,   94,    0,   40,  771,    0,   35,  414,    0,  252
  1619. , 1054,    0,  208,  251,    0,  521,  383,    0,   36,  774
  1620. ,    0,   36,  240,    0, 1054,   38,    0, 1054,  252,    0
  1621. ,  110, 1054,    0, 1054,   43,    0, 1054,   31,    0, 1054
  1622. ,   32,    0,  937, 1054,    0,  511, 1054,    0,   40, 1054
  1623. ,    0,  693,   43,    0,   44,   41,    0,   51,   43,    0
  1624. ,   53,   45,    0,  702,   36,    0,  319,   37,    0,  156
  1625. ,  332,    0,  809,   40,    0,   51,   43,    0,   61,  107
  1626. ,    0,   62,   42,    0,   68,   62,    0,   69,   63,    0
  1627. ,   70,   64,    0,   71,   66,    0,  747,  497,    0,  771
  1628. ,   50,    0,  516,   63,   35,    0,  517,   50,  276,    0
  1629. ,   51,   65,    0,   43,   75,    0,   44,  312,    0,   45
  1630. ,   35,  384,    0,  756,   37,    0,  757,  721,    0,   38
  1631. ,  241,    0,  513,   43,    0,  594,   44,    0,   44,  121
  1632. ,    0,  156,  350,  124,    0,   56,   36,    0,  172,   57
  1633. ,   37,    0,   58,   38,    0,   59,  415,    0,   61,   49
  1634. ,    0,  810,   65,    0,  554,   66,    0,  711,  474,    0
  1635. ,  156,  107,    0,  282,   41,    0,   42,   50,    0,   35
  1636. ,   51,    0,  613,   43,    0,   44,   53,    0,  873,   45
  1637. ,    0,  614,   54,    0,   50,   64,    0,  712,   51,   65
  1638. ,    0,  164,   53,   69,    0,   38,   71,    0,   63,  128
  1639. ,    0,   65,  333,  153,    0,  498,   66,    0,   67,  351
  1640. ,    0,  107,   94,    0,   42,  229,    0,  131,  514,    0
  1641. ,   35,   51,    0,  812,  722,    0,  814,   56,    0,   35
  1642. ,   58,    0,  172,   64,    0,  107,   69,    0,   41,   36
  1643. ,   72,    0,   42,   37,  347,    0,   38,  620,   71,    0
  1644. ,  826,  288,  257,    0,   37,  313,    0,   42,   50,    0
  1645. ,   43,  155,    0,   44,   53,    0,   41,   56,   35,  225
  1646. ,    0,   42,   57,  132,    0,  712,   58,    0,   43,   60
  1647. ,    0,   45,   63,    0,  259,   76,    0,  282,   36,    0
  1648. ,   35,   38,    0,  657,  885,  759,    0,   50,   37,    0
  1649. ,   51,   38,   43,    0,  156,   44,    0,   45,   35,    0
  1650. ,  156,  101,    0,   42,   50,    0,   44,   53,   36,   96
  1651. ,    0,   45,   38,    0,   57,   50,   97,    0,   58,   51
  1652. ,    0,  874,  860,   59,   52,    0,   60,  556,    0,   61
  1653. ,  107,  170,    0,   53,   41,    0,   62,  172,   42,    0
  1654. ,   69,   56,  173,    0,   70,   57,    0,   71,   60,    0
  1655. ,   61,  107,    0,  164,   41,    0,   62,  621,   42,    0
  1656. ,   64,  266,    0,   65,   43,  261,    0,   67,   44,    0
  1657. ,   69,   45,    0,  827,  156,    0,  815,  499,    0,  816
  1658. ,   50,    0,  173,   51,    0,  669,   53,    0,  416,   67
  1659. ,    0,   50,  229,  266,    0,   51,   71,    0,   62,   50
  1660. ,    0,   63,   51,    0,   64,  711,   52,    0,   65,  242
  1661. ,    0,   67,  281,    0,   69,   35,    0)  ;
  1662.         --| Actions to perform for all combinations of parser
  1663.         --| states and input tokens.
  1664.         -- NYU Reference Name: ACTION_TABLE1
  1665.  
  1666.     ActionTableTwo :
  1667.         constant array (ActionTableTwoRange)
  1668.         of GC.ParserInteger :=
  1669.          (    0,    0,    0,    0,77438,77439,77440,    0,    0,    0
  1670. ,77444,    0,    0,    0,    0,    0,    0,171478,    0,    0
  1671. ,    0,77455,77456,77457,77458,    0,    0,77461,    0,    0
  1672. ,    0,    0,77466,77467,77468,77469,77470,    0,    0,77473
  1673. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1674. ,    0,    0,    0,    0,    0,    0,    0,    0,127271,127272
  1675. ,127273,    0,243426,    0,127277,    0,    0,127280,    0,    0
  1676. ,    0, 5602,    0,    0,    0,    0,    0,    0,    0,    0
  1677. ,    0,    0,226853,    0,    0,    0,    0,    0,    0,304294
  1678. ,    0,    0,    0,127306,243458,243459,243460,215806,    0,    0
  1679. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1680. ,    0,    0,    0,    0,    0,    0,    0,    0,88614,199235
  1681. ,143926,143927,    0,271142,243488,243489,243490,    0,    0,    0
  1682. ,    0,    0,    0,243497,    0,243499,127349,    0,143944,    0
  1683. ,    0,116292,    0,    0,    0,    0,    0,    0,94175,260106
  1684. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1685. ,    0,    0,    0,88659,    0,88661,    0,    0,    0,    0
  1686. ,    0,88667,88668,88669,33360,127388,127389,127390,160577,    0
  1687. ,287792,127394,    0,    0,    0,    0,177178,127400,127401,    0
  1688. ,127403,127404,127405,127406,    0,    0,    0,    0,127411,127412
  1689. ,127413,127414,243566,127416,127417,127418,127419,127420,    0,    0
  1690. ,127423,    0,    0,243577,    0,    0,276766,    0,    0,    0
  1691. ,249115,    0,22346,    0,22348,    0,    0,    0,    0,    0
  1692. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1693. ,    0,243605,243606,243607,    0,    0,72149,243611,298922,72152
  1694. ,    0,298925,22376,22377,22378,22379,    0,    0,22382,    0
  1695. ,160659,    0,    0,    0,243628,243629,243630,243631,    0,    0
  1696. ,243634,243635,243636,243637,276824,    0,    0,    0,    0,    0
  1697. ,    0,    0,    0,    0,    0,88781,88782,    0,    0,33475
  1698. ,    0,    0,    0,    0,    0,293438,    0,88793,193883,    0
  1699. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1700. ,    0,    0,    0,    0,249209,    0,    0,    0,    0,    0
  1701. ,    0,    0,127535,138598,138599,    0,265814,    0,    0,    0
  1702. ,138605,    0,55642,138608,    0,    0,    0,    0,    0,    0
  1703. ,    0,22465,    0,    0,    0,    0,    0,    0,    0,    0
  1704. ,    0,    0,    0,199469,    0,199471,216065,    0,    0,216068
  1705. ,    0,199477,    0,199479,    0,199481,199482,    0,    0,22493
  1706. ,    0,    0,199488,    0,199490,    0,    0,44625,    0,199495
  1707. ,199496,    0,    0,282464,199500,    0,    0,    0,199504,    0
  1708. ,199506,    0,    0,    0, 5925,22519,    0,199513,    0,22523
  1709. ,22524,22525,199518,    0,199520,    0,    0,99965,    0,44657
  1710. ,44658,44659,199528,199529,    0,    0,199532,    0,199534,    0
  1711. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1712. ,    0,  431,    0,    0,    0,    0,    0,    0,    0,44687
  1713. ,    0,44689,44690,199559,299118,    0,    0,    0,    0,    0
  1714. ,44698,    0,171913,    0,    0,    0,    0,    0,    0,    0
  1715. ,    0,    0,    0,    0,133208,    0,    0,    0,    0,    0
  1716. ,260427,    0,    0,216182,    0,    0,    0,    0,94505,    0
  1717. ,    0,    0,    0,293626,    0,    0,    0,    0,    0,188543
  1718. ,    0,    0,188546,44741,    0,    0,    0,    0,    0,    0
  1719. ,177492,    0,    0,    0,    0,199621,    0,    0,    0,    0
  1720. ,277060,    0,    0,    0,    0,    0,    0,44765,    0,    0
  1721. ,    0,    0,    0,77957,77958,77959,    0,    0,    0,    0
  1722. ,    0,    0,177524,    0,    0,199651,    0,105626,    0,    0
  1723. ,254966,    0,    0,254969,133288,    0,    0,    0,    0,    0
  1724. ,    0,304756,    0,77987,77988,77989,    0,44805,44806,77993
  1725. ,    0,    0,    0,    0,    0,177557,    0,    0,177560,44817
  1726. ,    0,    0,    0,    0,    0,44823,    0,199693,    0,    0
  1727. ,    0,    0,    0,199699,    0,    0,    0,    0,    0,199705
  1728. ,199706,    0,    0,    0,199710,    0,    0,    0,    0,    0
  1729. ,    0,    0,    0,    0,144410,    0,    0,    0,188662,    0
  1730. ,199726,    0,199728,199729,    0,    0,    0,122299,    0,    0
  1731. ,    0,    0,    0,    0,    0,    0,    0,    0,293771,    0
  1732. ,  630,    0,  632,  633,    0,    0,  636,199753,199754,199755
  1733. ,177632,    0,78076,    0,    0,    0,122328,    0,    0,    0
  1734. ,    0,177643,    0,    0,    0,    0,    0,    0,    0,    0
  1735. ,    0,    0,    0,    0,    0,    0,138941,238500,127881,55979
  1736. ,    0,78105,78106,    0,    0,    0,    0,    0,    0,    0
  1737. ,177672,    0,    0,    0,    0,    0,78120,    0,    0,    0
  1738. ,78124,    0,    0,    0,78128,78129,78130,    0,78132,78133
  1739. ,78134,78135,    0,    0,177696,    0,100264,    0,177700,177701
  1740. ,177702,177703,    0,    0,177706,    0,    0,255143,    0,255145
  1741. ,255146,    0,    0,255149,    0,    0,255152,    0,255154,116880
  1742. ,127943,  731,    0,    0,244098,    0,    0,    0,    0,277289
  1743. ,    0,    0,    0,    0,    0,    0,    0,    0,277298,    0
  1744. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1745. ,188814,    0,216471,    0,    0,  765,216475,    0,    0,    0
  1746. ,    0,255197,    0,    0,271793,    0,    0,271796,    0,    0
  1747. ,    0,    0,45030,    0,89280,89281,    0,    0,    0,    0
  1748. ,    0,    0,188846,    0,188848,    0,244160,277347,277348,277349
  1749. ,277350,    0,244166,56113,    0,    0,255232,    0,    0,    0
  1750. ,    0,    0,    0,89309,89310,89311,89312,233119,    0,89315
  1751. ,    0,    0,    0,188877,    0,188879,    0,    0,188882,    0
  1752. ,    0,188885,    0,    0,255260,255261,255262,233139,    0,133583
  1753. ,    0,    0,    0,    0,    0,    0,    0,128060,    0,255275
  1754. ,255276,    0,255278,    0,255280,271874,78290,    0,    0,255285
  1755. ,255286,    0,255288,255289,255290,    0,    0,    0,    0,    0
  1756. ,    0,    0,50651,50652,50653,    0,188930,    0,    0,    0
  1757. ,    0,    0,    0,    0,    0,    0,78320,78321,78322,78323
  1758. ,    0,89387,78326,    0,    0,    0,177888,    0,177890,    0
  1759. ,    0,177893,    0,50682,    0,50684,    0,    0,50687,94936
  1760. ,    0,188965,    0,    0,    0,    0,    0,    0,    0,    0
  1761. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1762. ,    0,89427,89428,122615,    0,    0,89432,    0,166868,    0
  1763. ,    0,188995,122624,222183,    0,    0,    0,266435,266436,    0
  1764. ,    0,    0,189006,89449,    0,    0,    0,189011,    0,    0
  1765. ,89456,89457,    0,189017,    0,    0,    0,189021,    0,    0
  1766. ,    0,    0,    0,177965,    0,78409,    0,    0,266466,    0
  1767. ,266468,    0,    0,266471,    0,    0,    0,139262,266476,    0
  1768. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1769. ,    0,    0,    0,78437,78438,78439,255432,183530,    0,    0
  1770. ,28665,    0,178004,178005,178006,    0,    0,    0,178010,50798
  1771. ,50799,50800,166952,    0,    0,    0,78460,78461,    0,78463
  1772. ,    0,78465,    0,78467,78468,    0,178028,178029,    0,    0
  1773. ,178032,178033,    0,    0,178036,    0,166976,    0,    0,50828
  1774. ,    0,50830,    0,    0,    0,266543,    0,    0,272077,272078
  1775. ,277610,216770,    0,    0,216773,    0,266554,    0,    0,    0
  1776. ,    0,    0,    0,139348,272093,45323,45324,    0,    0,    0
  1777. ,    0,    0,56392,    0,    0,    0,    0,    0,28743,    0
  1778. ,    0,    0,28747,28748,    0,    0,    0,28752,    0,    0
  1779. ,    0,    0,    0,    0,    0,    0,    0,45355,    0,167039
  1780. ,167040,    0,    0,    0,    0,167045,    0,    0,266606,266607
  1781. ,    0,    0,266610,266611,266612,266613,266614,    0,    0,266617
  1782. ,205777,    0,    0,194718,    0,    0,    0,    0,    0,    0
  1783. ,106229,    0,106231,    0,100702,    0,12208,    0,106237,    0
  1784. ,    0,    0,106241,106242,28809,    0,28811,28812,28813,    0
  1785. ,    0,28816,    0,    0,    0,    0,106255,106256,    0,    0
  1786. ,272189,    0,272191,272192,272193,    0,272195,272196,128391,    0
  1787. ,    0,106270,272201,    0,    0,    0,    0,    0,    0,    0
  1788. ,    0,    0,272211,    0,45442,261152,    0,211375,    0,    0
  1789. ,106289,    0,    0,106292,    0,106294,106295,178199,    0,    0
  1790. ,133954,    0,    0,    0,288826,    0,    0,244581,    0,    0
  1791. ,    0,    0,45470,45471,45472,    0,    0,    0,45476,    0
  1792. ,106319,    0,56542,216942,    0,    0,    0,45485,    0,    0
  1793. ,    0,    0,95269,    0,    0,45493,    0,45495,45496,    0
  1794. ,45498,45499,45500,    0,45502,    0,28911,45505,    0,28914
  1795. ,122942,28916,    0,    0,    0,28920,    0,    0,    0,    0
  1796. ,    0,    0,    0,    0,    0,    0,    0,    0,194863,    0
  1797. ,    0,222521,    0,    0,    0,    0,    0,    0,266776,    0
  1798. ,    0,    0,    0,28948,294437,    0,    0,    0,    0,    0
  1799. ,    0,    0,    0,28958,28959,28960,28961,28962,211486,    0
  1800. ,    0,    0,    0,    0,    0,    0,167246,139592,    0,    0
  1801. ,106409,106410,106411,    0,    0,    0,28981,    0,128541,    0
  1802. ,    0,    0,    0,    0,    0,    0,    0,228108,    0,    0
  1803. ,183863,    0,    0,    0,    0,294488,266834,    0,    0,283430
  1804. ,    0,    0,    0,    0,    0,    0,    0,    0, 1358, 1359
  1805. ,    0,128574,128575,106452,    0,106454,    0,106456,    0,    0
  1806. ,    0,    0,    0,106462,    0,    0,    0,    0,106467,106468
  1807. ,106469,106470,106471,    0,145190,    0,    0,    0,    0,    0
  1808. ,    0,128604,    0,    0,145200, 1395,    0,    0,    0,    0
  1809. ,    0,    0,    0,172864,    0,228176,    0,145213,    0,45657
  1810. ,    0,145217,244776,239246,    0,145221,    0,    0,    0,145225
  1811. ,    0,    0,73325,    0,106513,106514,106515,    0,    0,    0
  1812. ,    0,172892,172893,    0,172895,145241,    0,172898,45686,45687
  1813. ,    0,    0,    0,    0,    0,    0,    0,    0,123130,    0
  1814. ,145256,    0,    0,228224,    0,    0,244820,    0,244822,244823
  1815. ,112080,    0,    0,    0,18057,    0,106555,    0,128681,    0
  1816. ,    0,    0,    0,    0,145280,    0,    0,228248,    0,128692
  1817. ,    0,    0,    0,    0,    0,    0,    0,    0,228259,    0
  1818. ,    0,    0,106581,    0,106583,    0,    0,    0,    0,    0
  1819. ,    0,    0,    0,    0,    0,    0,    0,128720,128721,    0
  1820. ,    0,    0,    0,128726,    0,    0,    0,228288,228289,    0
  1821. ,    0,    0,    0,34709,    0,95552,    0,45775,    0,    0
  1822. ,128743,    0,    0,    0,228305,    0,    0,128750,128751,    0
  1823. ,228311,228312,    0,134287,228315,    0,228317,228318,    0,173010
  1824. ,173011,228322,    0,    0,    0,    0,    0,45805,    0,    0
  1825. ,    0,    0,278112,    0,145370,145371,    0,    0,    0,305774
  1826. ,45818,    0,    0,    0,    0,244939,173037,173038,    0,    0
  1827. ,    0,45829,228353,    0,    0,    0,    0,    0,139863,    0
  1828. ,    0,    0,    0,123275,    0,    0,    0,    0,    0,    0
  1829. ,    0,    0,    0,    0,167534,167535,    0,    0,    0,    0
  1830. ,    0,145417,    0,145419,    0,145421,145422,    0,145424,    0
  1831. ,    0,    0,    0,145429,145430,145431,    0,    0,    0,    0
  1832. , 1630, 1631, 1632,178625,    0,    0,167566,167567,    0,    0
  1833. ,167570,    0,    0,    0,145450,167575,    0,    0,    0,    0
  1834. ,139925,139926,139927,139928,    0,    0,139931,    0,    0,139934
  1835. ,    0,139936,    0,    0,239497,239498,    0,    0,145474,145475
  1836. ,145476,239504,    0,23797,    0,    0,    0,222917,    0,    0
  1837. ,    0,    0,211860,    0,    0,211863,228457,228458,167618,128902
  1838. ,    0,311427,    0,    0,    0,    0,    0,    0,57008,311435
  1839. ,206347,23825,23826,23827,139979,    0,    0,23831,173169,45957
  1840. ,145516,    0,167642,    0,29369,    0,    0,    0,245082,    0
  1841. ,    0,    0,    0,167653,    0,23849,23850,23851,140003,23853
  1842. ,23854,23855,23856,23857,239567,    0, 1736,    0,278288,    0
  1843. ,    0,45989,45990,45991,    0, 1745,    0,278297,200864,    0
  1844. ,    0,167681,167682,    0,    0,    0,    0,167687,    0,    0
  1845. ,    0,    0,    0,    0,    0,    0,167696,    0,    0,    0
  1846. ,167700,    0,46020,    0,    0,167705,167706,    0,    0,167709
  1847. ,    0,167711,    0,    0,140059,140060,    0,140062,272807,    0
  1848. ,140065,140066,140067,140068,    0,140070,    0,    0,    0,    0
  1849. ,    0,    0,    0,    0,134548,134549,    0,    0,    0,    0
  1850. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1851. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1852. ,289442,    0,    0,    0,    0,134579,    0,    0,134582,    0
  1853. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,46097
  1854. ,    0,    0,    0,57163,    0,    0,    0,    0,    0,134603
  1855. ,46108,    0,    0,35049,35050,    0,162265,    0,    0,    0
  1856. ,151207,51650,256298,51652,    0,    0,    0,234179,151215,    0
  1857. ,    0,    0,    0,    0,167814,    0,167816,167817,    0,46137
  1858. ,46138,    0,    0,    0,46142,    0,    0,    0,    0,    0
  1859. ,    0,51680,51681,    0,51683,    0,    0,    0,    0,178901
  1860. ,    0,46159,    0,46161,    0,    0,46164,46165,    0,46167
  1861. ,46168,    0,    0,46171,    0,    0,134670,    0,134672,134673
  1862. ,134674,    0,12994,    0,    0,134679,    0,134681,    0,    0
  1863. ,    0,    0,295085,    0,40661,40662,    0,    0,    0,    0
  1864. ,    0,    0,    0,    0,140229,    0,    0,    0,    0,13021
  1865. ,    0,13023,    0,    0,13026,295108,295109,    0,    0,    0
  1866. ,    0,    0,    0,    0,    0,40692,    0,40694,212156,212157
  1867. ,    0,    0,    0,    0,140259,    0,140261,    0,    0,    0
  1868. ,51769,    0,140267,    0,    0,13057,13058,13059,13060,13061
  1869. ,13062,13063,13064,13065,    0,    0,13068,13069,    0,    0
  1870. ,    0,    0,13074,    0,    0,13077,13078,212195,    0,    0
  1871. ,51799,    0,    0,    0,    0,173486,223266,    0,    0,    0
  1872. ,    0,57341,    0,    0,    0,173496,    0,311773,    0,    0
  1873. ,    0,    0,46290,    0,51823,    0,    0,    0,51827,51828
  1874. ,    0,    0,40769,    0,    0,    0,129269,    0,    0,    0
  1875. ,    0,140336,    0,40780,    0,57375,    0,173528,173529,    0
  1876. ,    0,    0,    0,    0,46322,46323,46324,    0,300752,    0
  1877. ,    0,    0,    0,    0,    0,    0,212264,    0,    0,    0
  1878. ,    0,40808,40809,40810,18687,    0,    0,    0,173559,    0
  1879. ,    0,140376,140377,    0,46352,46353,    0,46355,173569,    0
  1880. ,46358,    0,    0,46361,40831,    0,40833,40834,    0,    0
  1881. ,40837,40838,40839,    0,140399,    0,    0,212305,140403,140404
  1882. ,140405,    0,    0,    0,    0,140410,    0,    0,    0,    0
  1883. ,212318,212319,212320,212321,212322,212323,    0,    0,212326,212327
  1884. ,212328,    0,    0,    0,212332,212333,    0,212335,    0,    0
  1885. ,212338,    0,    0,    0,267652,157033,    0,    0,    0,    0
  1886. ,    0,    0,    0,    0,    0,173636,    0,    0,    0,    0
  1887. ,    0,    0,46430,289795,    0,    0,    0,    0,    0,79623
  1888. ,79624,    0,151529,    0,    0,    0,    0,35383,    0,    0
  1889. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1890. ,    0,129424,    0,    0,173675,173676,173677,107306,79652,    0
  1891. ,    0,    0,46470,    0,    0,173686,    0,    0,    0,    0
  1892. ,173691,173692,173693,173694,173695,    0,46484,    0,173699,    0
  1893. ,    0,    0,173703,173704,    0,    0,    0,    0,    0,    0
  1894. ,46498,46499,46500,    0,    0,13317,46504,68629,    0,123941
  1895. ,    0,    0,212440,    0,    0,    0,    0,    0,    0,    0
  1896. ,112890,    0,79706,    0,    0,96302,68648,    0,    0,267767
  1897. ,267768,267769,    0,    0,    0,    0,    0,    0,    0,    0
  1898. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,195884
  1899. ,    0,    0,112922,112923,112924,    0,68678,79741,    0,267797
  1900. ,267798,267799,    0,    0,    0,267803,140591,    0,267806,256745
  1901. ,    0,    0,    0,    0,    0,    0,    0,256753,    0,256755
  1902. ,    0,256757,    0,112953,112954,    0,    0,79771,    0,    0
  1903. ,    0,    0,256768,112963,79778,256771,    0,96374,240181,96376
  1904. ,    0,    0,    0,79787,    0,    0,    0,    0,    0,    0
  1905. ,    0,79795,    0,    0,79798,79799,79800,79801,256794,    0
  1906. ,    0,101929,    0,    0,    0,46623, 2376,    0,    0,    0
  1907. ,    0,    0,256808,    0,    0,    0,201502,267875,    0,129602
  1908. ,    0,    0,    0,    0,    0,    0,    0,    0,267886,267887
  1909. ,    0,267889,    0,    0,    0,    0,    0,    0,46656,    0
  1910. ,    0,    0,    0,    0,201530,    0,201532,201533,256844,    0
  1911. ,201536,    0,    0,201539,    0,201541,267914,    0,267916,    0
  1912. ,96457,    0,267920,151770,113054,151772,    0,46685,    0,    0
  1913. ,    0,    0,273461,    0,    0,273464,46694,    0,    0,    0
  1914. ,    0,    0,267940,312189,267942,    0,267944,267945,267946,    0
  1915. ,    0,    0,    0,129676,    0,190519,    0,    0,    0,    0
  1916. ,    0,    0,113092,    0,    0,113095,    0,    0,113098,113099
  1917. ,113100,113101,207129,    0,113104,    0,    0,    0,    0,    0
  1918. ,    0,    0,201608,234795,    0,    0,    0,    0,    0,256925
  1919. ,256926,256927,    0,201619,    0,    0,    0,279057,    0,267997
  1920. , 2510, 2511,185035,    0,207161,    0,207163,273536,    0,    0
  1921. ,    0,    0,    0,190577,    0,    0,46774,    0,273547,273548
  1922. ,    0,    0,201648,201649,    0,    0,    0,201653,    0,    0
  1923. ,279090,279091,256968,256969,    0,    0,    0,    0,    0,    0
  1924. ,    0,    0,256978,    0,    0,    0,    0,    0,    0,    0
  1925. ,    0,    0,    0,    0,245928,    0,201682,    0,    0,    0
  1926. ,279120,279121,279122,    0,    0,279125,257002,    0,    0,    0
  1927. ,    0,273600,    0,46831,    0,    0,    0,273606,273607,46837
  1928. ,    0,    0,    0,    0, 2594,    0,    0,201713,    0,290211
  1929. ,    0,    0,    0,    0,    0,257031,    0,    0,    0,    0
  1930. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1931. ,    0,    0,207269,    0,240457,    0,    0,    0,    0,    0
  1932. ,207277,    0, 2632,    0,207281,113255,    0,113257,    0,    0
  1933. , 2640,    0,    0,    0,    0,257071,    0,279197,    0,140924
  1934. ,    0,    0,223892,    0,    0,    0,    0,268145,    0,279209
  1935. ,    0,    0,207309,207310,    0,113285,113286,    0,113288,30324
  1936. ,    0,113291,    0,223913,113294,223915,113296,    0,    0,312415
  1937. ,    0,    0,    0,    0,207331,207332,    0,    0,279238,207336
  1938. ,207337,207338,    0,207340,    0,    0,207343,58007,    0,58009
  1939. ,58010,    0,    0,    0,102262,    0,    0,    0,46956,    0
  1940. ,    0,    0,    0,246077,    0,    0,279266,279267,279268,113339
  1941. ,74623,279271,    0,    0,    0,    0,    0, 2727,    0,    0
  1942. ,    0,    0,    0,    0,    0,    0,    0,129950,    0,    0
  1943. ,46988,46989,46990,113363,102302,    0,    0,    0,    0,91245
  1944. ,    0,    0,    0,102311,113374,    0,223996,    0,    0,    0
  1945. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1946. ,47018,    0,47020,47021,    0,    0,47024,273796,273797,47027
  1947. ,    0,    0,    0,    0,    0,290397,58096,    0,113408,    0
  1948. ,    0,    0,    0,    0,246158,    0,    0,113417,    0,113419
  1949. ,113420,113421,113422,    0,141079,113425,113426,113427,113428,    0
  1950. ,113430,    0,    0,    0,    0,58125,58126,    0,    0,    0
  1951. ,91316,    0,91318,    0,    0,    0,    0,    0,    0,    0
  1952. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1953. ,    0,    0,    0,    0,    0,    0,    0,    0,47096,    0
  1954. ,36036,    0,    0,36039,    0,    0,    0,    0,    0,47107
  1955. ,262817,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1956. ,    0,    0,    0,    0, 8405,    0,    0,    0,    0,    0
  1957. ,    0,    0,25006,    0,    0,    0,    0,47135,47136,    0
  1958. ,    0,    0,    0,47141,80328,    0,    0,    0,    0,    0
  1959. ,    0,307106,    0,30558,    0,30560,    0,    0,    0,    0
  1960. ,47158,47159,47160,47161,    0,47163,47164,47165,    0,47167
  1961. ,    0,251816,    0,    0,152261,    0,168856,168857,    0,91425
  1962. ,91426,    0,    0,    0,91430,    0,    0,    0,    0,    0
  1963. ,    0,96968,    0,    0,    0,    0,168876,    0,    0,224189
  1964. ,    0,91447,    0,    0,    0,    0,    0,    0,91454,91455
  1965. ,    0,    0,108051,91459,    0,    0,168896,    0,    0, 2969
  1966. ,    0,    0,108061,    0,    0,    0,    0,    0,    0,    0
  1967. ,    0,    0,141257,141258,141259,141260,    0,    0,141263,    0
  1968. ,    0,    0,    0,    0,185517,185518,    0,    0,    0,    0
  1969. ,    0,    0,    0,168933,168934,168935,    0,    0,168938,    0
  1970. ,168940,168941,168942,168943,    0,168945,168946,    0,    0,124701
  1971. ,    0,130234,168952,    0,    0,185548,185549,    0,    0,    0
  1972. ,58340,    0,185555,    0,185557,251930,    0,251932,    0,    0
  1973. ,    0,240874,    0,    0,    0,    0,30701,    0,    0,    0
  1974. ,    0,69423,240885,    0,    0,    0,    0,    0,    0,    0
  1975. ,141335,69433,69434,    0,    0,    0,    0,    0,    0,    0
  1976. ,    0,141346,    0,    0,169004,169005,169006,    0,    0,229850
  1977. ,    0,    0,91578,102641,    0,174546,    0,    0,    0,    0
  1978. ,    0,    0,    0,    0,    0,    0,    0,75000,    0,141374
  1979. ,141375,    0,75005,    0,    0,141380,    0,    0,    0,    0
  1980. ,    0,274130,185635,185636,    0,    0,    0,141392,    0,141394
  1981. ,    0,246485,141397,141398,141399,141400,    0,141402,    0,141404
  1982. ,141405,141406,    0,    0,141409,    0,    0,    0,    0,    0
  1983. ,185663,    0,185665,    0,91640,91641,    0,    0,69520,    0
  1984. ,    0,    0,218861,91649,    0,91651,    0,    0,    0,    0
  1985. ,    0,    0,141437,185686,    0,    0,185689,    0,185691,185692
  1986. ,185693,185694,185695,    0,169104,    0,    0,    0,    0,169109
  1987. ,    0,    0,    0,36369,    0,263142,36372,    0,263145,    0
  1988. ,    0,    0,36378,36379,36380,36381,36382,36383,    0,    0
  1989. ,    0,    0,    0,52982,    0,    0,    0,    0,    0,    0
  1990. ,169140,169141,    0,    0,    0,    0,    0,    0,    0,    0
  1991. ,    0,169151,    0,169153,169154,169155,    0,    0,    0,    0
  1992. ,97257,    0,    0,    0,    0,    0,97263,    0,    0,58549
  1993. ,    0,    0,    0,25367,    0,    0,    0,25371,    0,25373
  1994. ,    0,97278,    0,97280,97281,    0,    0,    0,    0,    0
  1995. ,14322,    0,91758,91759,97291,    0,    0,91763,97295,97296
  1996. ,    0,    0,    0,124955,97301,196860,91772,    0,    0,196864
  1997. ,    0,    0,    0,    0,91780,    0,    0,91783,    0,91785
  1998. ,91786,91787,    0,    0,14356,    0,    0,    0,    0,    0
  1999. ,    0,    0,    0,    0,    0,69677,    0,296450,    0,246673
  2000. ,158178,97338,97339,97340,    0,    0,97343,97344,    0,    0
  2001. ,97347,    0,    0,    0,    0,14387,36512,    0,14390,185852
  2002. ,    0,    0,97359,14395,241167,    0,    0,    0,    0,    0
  2003. ,    0,    0,158210,158211,    0,    0,    0,    0,    0,    0
  2004. ,    0,    0,    0,    0,130567,257781,    0,    0,    0,    0
  2005. ,    0,    0,    0,58673,    0,    0,    0,230138,230139,230140
  2006. ,    0,    0,    0,158241,158242,158243,    0,    0,158246,    0
  2007. ,    0,158249,97409,    0,97411,    0,    0,    0,    0,    0
  2008. ,47638,    0,    0,    0,19987,    0,    0,230168,    0,230170
  2009. ,    0,196986,196987,230174,    0,    0,230177,    0,230179,    0
  2010. ,    0,14473,    0,202529,    0,    0,    0,    0,    0,    0
  2011. ,    0,    0,58732,279973,14486,    0,    0,    0,    0,    0
  2012. ,    0,    0,    0,    0,    0,    0,    0,302111,    0,14501
  2013. ,14502,    0,    0,    0,    0,    0,14508,    0,14510,263406
  2014. ,    0,    0,    0,274472,14516,    0,14518,14519,    0,14521
  2015. ,197045,158329,14524,14525,14526,14527,    0,14529,14530,14531
  2016. ,14532,14533,97499,    0,14536,230246,    0,    0,    0,    0
  2017. ,    0,263438,    0,263440,97511,    0,230257,97514,    0,158357
  2018. ,158358,    0,    0,    0,    0,158363,25620,    0,    0,    0
  2019. ,    0,    0,    0,    0,158372,158373,158374,    0,158376,    0
  2020. ,    0,    0,    0,    0,    0,    0,230287,    0,    0,    0
  2021. ,    0,    0,263479,    0,158392,    0,252421,    0,    0,    0
  2022. ,    0,    0,    0,    0,230305,    0,280086,    0,230309,230310
  2023. ,    0,    0,230313,230314,230315,230316,230317,    0,246912,    0
  2024. ,    0,    0,    0,252448,    0,252450,    0,    0,252453,    0
  2025. ,    0,    0,    0,    0,    0,    0,    0,    0,252463,    0
  2026. ,    0,    0,    0,    0,    0,    0,    0,42294,    0,    0
  2027. ,230351,    0,25706,252478,36770,    0,    0,    0,252483,    0
  2028. ,252485,252486,252487,252488,252489,252490,252491,252492,252493,    0
  2029. ,    0,    0,252497,    0,    0,252500,252501,    0,252503,    0
  2030. ,    0,42328,    0,    0,    0,    0,    0,    0,    0,269107
  2031. ,    0,    0,158490,    0,158492,158493,158494,186150,263585,    0
  2032. ,263587,    0,169562,    0,263591,    0,    0,    0,53417,    0
  2033. ,    0,42358,    0,    0,    0,42362,    0,    0,    0,    0
  2034. ,42367,263608,263609,263610,    0,    0,263613,263614,263615,    0
  2035. ,    0,186184,    0,    0,    0,    0,    0,    0,    0,    0
  2036. ,    0,    0,    0,213851,    0,213853,213854,269165,    0,    0
  2037. ,103238,    0,    0,235985,    0,103243,235988,    0,    0,186212
  2038. ,    0,    0,186215,    0,    0,    0,59006,    0,    0,    0
  2039. ,186223,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2040. ,    0,    0,31367,    0,31369,    0,    0,42434,    0,    0
  2041. ,    0,53500,    0,75626,    0,75628,    0,274746,42445,    0
  2042. ,    0,42448,    0,    0,    0,230506,230507,103295,    0,    0
  2043. ,    0,    0,230513,186266,    0,230516,    0,    0,    0,285830
  2044. ,    0,    0,    0,75656,75657,75658,    0,42474,42475,    0
  2045. ,    0,    0,    0,    0,75667,247129,    0,186290,    0,    0
  2046. ,285851,    0,285853,    0,    0,313511,313512,    0,186301,42496
  2047. ,42497,    0,42499,    0,42501,42502,42503,42504,    0,    0
  2048. ,    0,    0,213970,    0,    0,    0,    0,    0,    0,    0
  2049. ,    0,119952,    0,142078,    0,    0,186329,    0,    0,    0
  2050. ,    0,103369,186335,    0,    0,131028,    0,    0,    0,    0
  2051. ,    0,186344,186345,    0,    0,    0,186349,    0,    0,186352
  2052. ,186353,    0,186355,    0,186357,186358,186359,186360,186361,219548
  2053. ,202956,    0,75745,    0,    0,108934,    0,    0,    0,    0
  2054. ,    0,202967,    0,285934,    0,    0,    0,    0,    0,    0
  2055. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2056. ,    0,75774,75775,    0,    0,236177,75779,    0,    0,    0
  2057. ,    0,    0,75785,75786,    0,75788,75789,75790,75791,75792
  2058. ,75793,    0,103450,75796,    0,75798,75799,    0,    0,    0
  2059. ,75803,    0,75805,108992,    0,75808,    0,    0,    0,197494
  2060. ,    0,    0,    0,    0,31569,    0,    0,    0,    0,142194
  2061. ,97947,    0,    0,    0,252819,    0,    0,    0,    0,    0
  2062. ,    0,97958,    0,    0,    0,    0,131149,203053,    0,    0
  2063. ,    0,    0,42659,42660,42661,    0,197531,    0,225188,53728
  2064. ,    0,142226,    0,142228,    0,    0,    0,    0,    0,    0
  2065. ,    0,    0, 9493, 9494,    0,    0,    0,114587,114588,114589
  2066. ,    0,    0,    0,42690,42691,42692,    0,    0,    0,    0
  2067. ,    0,    0,142257,    0,142259,    0,    0,    0,    0,    0
  2068. ,142265,    0,142267,    0,131207,    0,142271,    0,114618,    0
  2069. ,114620,    0,    0,114623,    0,131218,    0,    0,114628,286090
  2070. ,297153,    0,    0,    0,    0,    0,    0,75920,    0,    0
  2071. ,    0,131234,    0,    0,131237,    0,    0,286108,    0,59339
  2072. ,    0,    0, 4032,    0,313770,    0,131249,131250,    0,    0
  2073. ,    0,    0,275061,    0,    0,    0,175507,175508,103606, 9580
  2074. ,    0,    0,98079,    0,98081,98082,98083,    0,    0,142334
  2075. ,131273,    0, 4062, 4063, 4064,    0,    0,    0,    0,    0
  2076. ,    0,    0, 4072,    0,    0,    0,275095,175538,120229,    0
  2077. ,    0,    0,    0,    0,    0,    0,114706,    0,59398,42806
  2078. ,42807,42808,75995,    0,120245,42812, 4096,    0,142373,    0
  2079. ,    0,175562,    0,    0,    0,275124,    0,    0,    0,120260
  2080. ,275129,    0,42829,    0,    0,    0,    0,    0,    0,    0
  2081. ,    0,    0,    0,    0,    0,114745,142401,    0,    0,    0
  2082. ,    0,131344,    0,    0,    0,    0,131349,114757,    0,    0
  2083. ,114760,    0,114762,114763,    0,    0,114766,    0,    0,114769
  2084. , 4150,98178,    0,    0,    0,    0,264113,98184,192212,264116
  2085. ,    0,    0,    0,    0,    0,    0,    0,    0,175629,    0
  2086. ,175631,175632,175633,    0,    0,    0,    0,175638, 4178,    0
  2087. ,    0,    0,    0,264140, 4184,    0,    0,    0,    0,    0
  2088. , 4190, 4191,    0,    0,    0, 4195,    0, 4197, 4198,    0
  2089. ,    0, 4201, 4202,    0, 4204,    0,    0,    0, 4208,    0
  2090. , 4210,    0,120363, 4213,26338,    0,208863,    0,    0,230990
  2091. ,    0,275240,    0,275242,    0,    0,    0,275246,    0,    0
  2092. ,264187,    0,54011,76136,    0,    0,    0,81671,    0,    0
  2093. ,170170,    0,    0,42960,    0,275264,    0,275266,    0,275268
  2094. ,275269,275270,275271,    0,    0,    0,    0,    0,    0,    0
  2095. ,    0,    0,264219,170193,    0,    0,214444,170197,    0,    0
  2096. ,    0,    0,    0,    0,    0,42992,42993,42994,225518,98306
  2097. ,    0,225521,170212,    0,    0,98312,    0,    0,98315,    0
  2098. ,    0,54070,    0,231064,    0,314031,    0,170227,    0,    0
  2099. ,    0,    0,170232,170233,170234,    0,    0,    0,    0,170239
  2100. ,    0,    0,    0,    0,    0,170245,    0,    0,170248,    0
  2101. ,170250,    0,170252,170253,170254, 4325,    0,    0,15390,    0
  2102. ,    0,    0,    0,    0,    0,    0,258762,    0,242171,    0
  2103. ,    0,    0,286423,    0,    0,    0,    0,    0,    0,214527
  2104. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2105. ,    0,    0,59672,    0,103922,103923,    0,    0,    0,    0
  2106. ,    0,    0,192426,    0,    0,120526,    0,    0,186901,    0
  2107. ,103938,236683,    0,    0,    0,    0,    0,131600,    0,    0
  2108. ,    0,    0,    0,    0,    0,    0,    0,    0,103956,    0
  2109. ,286481,    0,    0,    0,    0,    0,    0,186930,    0,    0
  2110. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2111. ,21013,    0,43139,    0,43141,264382,    0,    0,43145,    0
  2112. ,    0,    0,    0,    0,    0,21028,    0,131650,    0,    0
  2113. ,    0,    0,    0,    0,292056,    0,    0,    0,    0,    0
  2114. ,    0,    0,43169,43170,43171,    0,    0,43174,    0,21052
  2115. ,120611,    0,    0,    0,21057,    0,    0,    0,    0,    0
  2116. ,142745,    0,292084,    0,    0,    0,92972,87442,    0,    0
  2117. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,308694
  2118. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2119. ,    0,236803,    0,    0,    0,    0,    0,    0,    0,104067
  2120. ,120661,    0,    0,104071,104072,104073,104074,    0,    0,104077
  2121. ,    0,    0,308727,308728,    0,    0,    0,    0,    0,    0
  2122. ,292142,    0,    0,    0,    0,    0,    0,    0,142813,    0
  2123. ,    0,    0,    0,    0,    0,54324,    0,247911,    0,    0
  2124. ,    0,308756,    0,308758,308759,231326,126238,308762,    0,    0
  2125. ,308765,    0,308767,164962,    0,    0,198151,198152,    0,    0
  2126. ,    0,    0,    0,170503,    0,    0,    0,    0,    0,    0
  2127. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,43306
  2128. ,43307,    0,    0,    0,242427,    0,170526,198182,    0,    0
  2129. ,170530,    0,170532,    0,21197,170535,225846,    0,104166,    0
  2130. ,    0,104169,98639,    0,104172,    0,104174,    0,    0,    0
  2131. ,    0,    0,    0,275642,    0,    0,    0,242460,242461,308834
  2132. ,170560,93127,    0,    0,115254,    0,170566,170567,    0,170569
  2133. ,    0,170571,170572,170573,    0,    0,    0,    0,    0,170579
  2134. ,    0,170581,    0,    0,270142,170585,    0,    0,242491,242492
  2135. ,    0,142936,    0,115283,115284,    0,115286,242500,308873,    0
  2136. ,308875,    0,115292,    0,    0,    0,    0,    0,    0,    0
  2137. ,    0,236983,    0,    0,    0,    0,    0,214865,187211,    0
  2138. ,159558,308896,308897,308898,308899,    0,308901,308902,308903,308904
  2139. ,308905,    0,    0,308908,    0,    0,48954,    0,    0,    0
  2140. ,242543,    0,    0,    0,104272,    0,    0,    0,    0,    0
  2141. ,    0,    0,292334,    0,    0,    0,    0, 4727,    0, 4729
  2142. ,    0,    0,    0,    0,242567,    0,198321,    0,    0,    0
  2143. ,48988,115361,253637,    0,    0,242578,    0,    0,    0,    0
  2144. ,176211,    0,    0,    0,    0,    0,    0,    0,    0,43476
  2145. ,    0,43478,    0,54542,    0,    0,    0,237069,49016,    0
  2146. ,49018,49019,104330,242606,    0,242608,    0,    0,    0,242612
  2147. ,115400,115401,115402,303457,    0,43502,115406,    0,242621,242622
  2148. ,242623,242624,242625,    0,    0,120946,    0,242630,242631,242632
  2149. ,    0,242634,242635,    0,    0,    0,115426,    0,    0,115429
  2150. ,115430,115431,115432,    0,    0,115435,    0,    0,    0,    0
  2151. ,    0,    0,120973,    0,    0,    0,    0,    0,    0,    0
  2152. ,    0,    0,    0,192887,    0,    0,    0,    0,    0,    0
  2153. ,    0,    0,292454,187366,    0,    0,    0,    0,    0,    0
  2154. ,    0,    0,    0,    0,    0,    0,    0,49105,264815,    0
  2155. ,    0,126543,    0,    0,    0,    0,    0,    0,    0,    0
  2156. ,    0,    0,10403,281423,    0,209522,    0,    0,    0,    0
  2157. ,    0,    0,    0,    0,    0,    0,49134,49135,231659,    0
  2158. ,    0,49139,    0,126575,126576,126577,    0,    0,    0,    0
  2159. ,    0,    0,    0,    0,    0,    0,242739,    0,242741,    0
  2160. ,    0,    0,121063,49161,49162,49163,49164,49165,    0,65760
  2161. ,27044,    0,    0,126605,126606,126607,126608,    0,    0,    0
  2162. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2163. ,    0,43658,    0,43660,137688,    0,    0,    0,    0,209596
  2164. ,    0,    0,16014,54732,    0,    0,    0,    0,16020,231730
  2165. ,    0,    0,    0,    0,    0,    0,115586,115587,    0,    0
  2166. ,    0,43688,43689,43690,43691,    0,    0,    0,    0,    0
  2167. ,    0,    0,43699,    0,    0,    0,    0,    0,    0,    0
  2168. ,    0,    0,    0,    0,    0,    0,115616,115617,115618,115619
  2169. ,    0,126683,115622,16065,16066,    0,43723,115627,16070,    0
  2170. ,    0,16073,    0,16075,    0,    0,    0,    0,    0,    0
  2171. ,    0,    0,    0,76926,259450,43742,    0,    0,    0,    0
  2172. ,209677,    0,    0,    0,    0,    0,    0,159905,    0,104597
  2173. ,126722,126723,126724,    0,    0,    0,126728,    0,    0,43766
  2174. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,126741
  2175. ,    0,    0,    0,126745,126746,126747,    0,270555,    0,126751
  2176. ,126752,126753,126754,    0,    0,126757,    0,    0,    0,    0
  2177. ,    0,    0,259508,    0,    0,    0,76989,    0,    0,    0
  2178. ,43807,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2179. ,    0,43818,    0,43820,43821,43822,43823,43824,43825,    0
  2180. ,    0,43828,43829,    0,    0,115735,43833,43834,43835,    0
  2181. ,43837,193175,193176,    0,    0,16187,16188,    0,    0,    0
  2182. ,    0,    0,    0,    0,    0,    0,115756,    0,115758,    0
  2183. ,    0,    0,    0,115763,115764,115765,    0,    0,115768,137893
  2184. ,    0,    0,193206,193207,    0,    0,    0,193211,298301,    0
  2185. ,193214,    0,193216,77066,    0,    0,    0,10698,    0,248533
  2186. ,10701,    0,165571,    0,77077,126857,126858,126859,    0,165578
  2187. ,    0,    0,    0,    0,    0,    0,    0,    0,176649,    0
  2188. ,    0,    0,    0,    0,    0,    0,    0,    0,137942,    0
  2189. ,    0,    0,77105,    0,77107,193259,    0,    0,77111,    0
  2190. ,    0,    0,    0,    0,    0,    0,248580,    0,77121,    0
  2191. ,77123,77124,77125,209870,    0,77128,77129,    0,77131,193283
  2192. ,77133,77134,77135,    0,77137,    0,    0,    0,    0,    0
  2193. ,193294,    0,    0,    0,    0,    0,    0,27371,    0,    0
  2194. ,    0,198836,    0,198838,    0,    0,    0,    0,    0,    0
  2195. ,    0,21854,    0,    0,    0,226505,226506,226507,    0,193323
  2196. ,193324,    0,    0,    0,    0,    0,226516,99304,99305,    0
  2197. ,    0,198866,198867,    0,    0,    0,193340,    0,193342,    0
  2198. ,198875,193345,    0,193347,193348,    0,193350,193351,193352,193353
  2199. ,193354,    0,16364,193357,44021,298448,    0,44024,    0,176770
  2200. ,    0,    0,    0,    0,    0,    0,88281,    0,309523,    0
  2201. ,    0,204437,281872,    0,    0,16387,16388,    0,    0,    0
  2202. ,    0,    0,16394,    0,193388,198920,    0,    0,    0, 5339
  2203. ,    0,    0,287423,226583,204460,88310,88311,88312,88313,259775
  2204. ,    0,    0,281902,215531,    0,33010,    0,    0,    0,198944
  2205. ,    0,    0,    0,    0,    0,    0,259792,204483,    0,    0
  2206. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,259805
  2207. ,259806,259807,    0,226623,226624,259811,    0,    0,    0,77292
  2208. ,    0,    0,    0, 5393,    0,16457,132609,226637,    0,    0
  2209. ,    0,    0,    0,    0,    0,    0,226646,226647,226648,    0
  2210. ,226650,226651,226652,    0,    0,199000,199001,    0,    0,77322
  2211. ,    0,    0,199007,    0,    0,    0,199011,    0,199013,    0
  2212. ,199015,    0,    0,199018,    0,55214,    0,    0,    0,    0
  2213. ,315176,315177,160310,    0,160312,    0,    0,    0,    0,    0
  2214. ,    0,    0,    0,    0,    0,    0,    0,259883,    0,    0
  2215. ,    0,    0,    0,    0,88429,226705,    0,    0,    0,259895
  2216. ,304144,259897,77375,    0,    0,    0,    0,88442,    0,    0
  2217. ,193534,    0,    0,    0,    0,88450,88451,88452,88453,93985
  2218. ,88455,    0,88457,88458,88459,    0,    0,    0,259924,    0
  2219. ,    0,    0,259928,    0,    0,    0,    0,77410,293120,    0
  2220. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2221. ,    0,    0,    0,11054,259950,    0,259952,    0,259954,259957
  2222. ,138275,    0,77453,27674,    0,226791,77454,    0,127241,77462
  2223. ,    0,127242,77463,    0,127243,77464,    0,199177,127274,    0
  2224. ,127282,99627,    0,127325,88608,    0,243491,143933,    0,243494
  2225. ,143936,    0,127360,94174,    0,315431,88660,    0,132938,127407
  2226. ,    0,127408, 5726,    0,238070,121919,    0,249164,243633,    0
  2227. ,243640,133020,    0,199486,22494,    0,199487,22495,    0,199491
  2228. ,22499,    0,199492,  376,    0,199535,11481,    0,243804,44688
  2229. ,    0,299119,177437,44693,    0,177440,44696,    0,188545,77925
  2230. ,    0,277071,133265,    0,77962,44776,    0,304738,199649,177525
  2231. ,    0,199650,177526,160933, 6065,    0,77990,44804,    0,177554
  2232. ,77996,44810,    0,277113,177555,    0,177556,77998,    0,177563
  2233. ,44819,    0,133316,44820,    0,199689,177565,44821,    0,133318
  2234. ,44822,    0,199692,44824,    0,199694,188632,    0,199695,44827
  2235. ,    0,199696,44828,    0,199697,44829,    0,199698,44830,    0
  2236. ,227355,199700,44832,    0,199701,44833,    0,199702,44834,    0
  2237. ,199703,44835,    0,199704,44836,    0,304796,199707,44839,    0
  2238. ,199708,11654,    0,199709,133337,    0,199711,133339,    0,293746
  2239. ,199719,    0,188660,144412,    0,188661,78041,39324,    0,78065
  2240. ,  631,    0,304860,255081,78089,    0,238503,78104,    0,133420
  2241. ,78110,    0,199795,177671,78113,    0,177673,78115,    0,177677
  2242. ,78119,    0,255113,78121,    0,255114,78122,    0,255115,78123
  2243. ,    0,78127,28348,    0,177694,78136,    0,177695,44951,    0
  2244. ,299379,177697,78139,    0,177699,127920,    0,255144,155586,    0
  2245. ,105814,100283,    0,89247,28406,    0,293926,89279,    0,188847
  2246. ,56103,    0,255221,244159,    0,188876,89318,    0,188878,89320
  2247. ,78258,    0,188887,177825,155701,    0,255266,50619,    0,255277
  2248. ,34037,    0,271872,255279,    0,255283,188911,78291,    0,255284
  2249. ,78292,    0,255291,177857,    0,255292,177858,    0,177859,161266
  2250. ,    0,294012,255295,133613,    0,177887,78329,    0,177889,78331
  2251. ,    0,255326,188954,    0,89398,50681,    0,177896,50683,    0
  2252. ,177898,166836,    0,266403,216624,    0,249822,211105,    0,249825
  2253. ,89426,    0,188993,166869,122621,    0,188994,166870,    0,188999
  2254. ,89441,    0,266437,94976,    0,222191,189005,    0,189008,89450
  2255. ,    0,189009,89451,    0,189010,89452,    0,189012,89454,    0
  2256. ,189013,89455,    0,189016,89458,    0,189018,78398,    0,189019
  2257. ,89461,    0,189022,166898,    0,189023,166899,    0,189024,166900
  2258. ,    0,189025,166901,    0,189028,166904,    0,266465,166907,    0
  2259. ,266467,166909,    0,177976,139259,    0,266474,139261,    0,50770
  2260. ,12053,    0,128221,28663,    0,211187,128222,78443,28664,    0
  2261. ,50804,28680,    0,78462,28683,    0,78466,56342,    0,178027
  2262. ,78469,    0,178030,78472,28693,    0,128252,100597,28694,    0
  2263. ,178034,28697,    0,178035,45291,28698,    0,233347,50824,    0
  2264. ,272066,178039,50826,    0,50827,28703,    0,272069,50829,    0
  2265. ,166987,128270,    0,216771,155930,    0,277613,216772,12125,    0
  2266. ,216774,12127,    0,272096,45325,    0,167015,28740,    0,272105
  2267. ,189140,167016,28741,    0,167017,28742,    0,272108,28744,    0
  2268. ,272109,28745,    0,167021,28746,    0,266582,28749,    0,266583
  2269. ,28750, 1095,    0,266584,28751,    0,45346,28753,    0,266588
  2270. ,183623,167030,    0,167031,139376,    0,167032,139377,    0,167033
  2271. ,139378,    0,167034,73007,28759,    0,172566,167035,45353,28760
  2272. ,    0,45354,28761,    0,183631,167038,45356,    0,167041,45359
  2273. ,    0,272132,167043,    0,167044,45362,    0,167046,45364,    0
  2274. ,294260,266605,167047,    0,294263,266608,167050,    0,161549,106239
  2275. ,    0,272179,28815,    0,106251,28817,    0,106252,28818,    0
  2276. ,288776,28819,    0,272190,106260,    0,272194,106264,    0,272202
  2277. ,45431,    0,272203,106273,    0,272208,106278,    0,272210,106280
  2278. ,    0,133983,106328,    0,45494,28901,    0,45501,28908,    0
  2279. ,106381,28947,    0,128573,106449,    0,288976,106453,    0,311102
  2280. ,294509,106455,    0,294511,106457,    0,228140,172830,106458,    0
  2281. ,228141,106459,    0,228142,106460,    0,106461,56682,    0,106463
  2282. , 1374,    0,106464, 1375,    0,106465,45624,    0,106466,56687
  2283. , 1377,    0,145192, 1386,    0,128603,106479,    0,145198,128605
  2284. ,45640,    0,277943,128606,    0,145202,128609,    0,145203,106486
  2285. ,    0,228170,128612,106488,    0,228171,106489,    0,228172,172862
  2286. ,128614,    0,228173,172863,    0,145212,100964,    0,228179,45656
  2287. ,    0,228181,145216,45658,    0,145234, 1428,    0,183956,172894
  2288. ,145239,    0,172901,45688,    0,183964,45689,    0,283523,172903
  2289. ,    0,145250,45692,    0,145253,45695,    0,294592,145255,45697
  2290. ,    0,278059,172970,128722,    0,228287,45764,34702,    0,278070
  2291. ,172981,    0,228293,23646,    0,228302,128744,    0,228303,128745
  2292. ,    0,228304,128746,    0,228306,128748,    0,228307,145342,128749
  2293. ,    0,228310,128752,    0,228313,128755,    0,244909,228316,206192
  2294. ,    0,278098,228319,173009,    0,173015,23678,    0,45803,23679
  2295. ,    0,45804,23680,    0,305766,178553,45809,    0,278116,145372
  2296. ,    0,173032,79005,29226,    0,173033,167502,134316,79006,    0
  2297. ,244937,173034,29228,    0,244938,173035,    0,173039,45826,    0
  2298. ,173040,45827,    0,173041,45828,    0,173044,45831,    0,222824
  2299. ,45832,23708,    0,45833,23709,    0,45834,23710,    0,45835
  2300. ,23711,    0,45838,23714,    0,278156,167536,    0,222847,145413
  2301. ,    0,222848,145414,    0,145416,73513,    0,178604,145418,    0
  2302. ,222854,145420,    0,206264,145423,    0,206266,145425,95646,    0
  2303. ,145426,139895,    0,145427,139896,    0,145428,139897,    0,267114
  2304. ,145432,    0,167564,145440,    0,178627,167565, 1635,    0,239474
  2305. ,145447,    0,167573,145449,    0,178708,29371,    0,140014,101297
  2306. ,    0,184276,167683,    0,167697,140042,    0,167698,140043,    0
  2307. ,167699,140044,    0,167701,46019,    0,140048,46021,    0,167704
  2308. ,46022,    0,167707,46025,    0,167710,46028,    0,167712,140057
  2309. ,46030,    0,167713,140058,    0,167716,140061,    0,278346,140071
  2310. ,    0,278347,140072,    0,278348,140073,    0,278349,140074,    0
  2311. ,140077,123484,    0,261815,173319,    0,167818,46136,    0,51682
  2312. ,46151,    0,151244,95934,51686,    0,46160,40629,    0,228685
  2313. ,46162,    0,46166,18511,    0,140196,29576,    0,212124,40663
  2314. ,    0,140228,101511,    0,140230,13017,    0,295115,13034,    0
  2315. ,40691,13036,    0,267464,40693,    0,212158,40697,    0,140258
  2316. ,40700,    0,140260,40702,    0,140264,13051,    0,140269,13056
  2317. ,    0,212186,13070,    0,212187,13071,    0,212188,13072,    0
  2318. ,212189,13073,    0,212192,13076,    0,289630,51797,    0,212197
  2319. ,51798,    0,173485,51803,    0,156918,51829,    0,212240,18655
  2320. ,    0,256495,173530,    0,173533,140347,    0,212275,173558,40814
  2321. ,    0,173560,151436,    0,173561,140375,    0,173564,74006,    0
  2322. ,173567,140381,46354,    0,46363,40832,    0,40836,18712,    0
  2323. ,140398,40840,    0,212303,140400,    0,212304,140401,40843,    0
  2324. ,212309,140406,    0,140407,134876,    0,212329,173612,    0,217862
  2325. ,212331,    0,212334,79590,    0,173647,134930,    0,151525,79622
  2326. ,    0,79627,46441,    0,179191,173660,162598,    0,173680,79653
  2327. ,    0,173681,79654,    0,228992,173682,79655,46469,    0,173684
  2328. ,46471,    0,278774,228995,79658,    0,79661,46475,    0,173690
  2329. ,79663,    0,201353,173698,    0,173700,52018,    0,201356,173701
  2330. ,52019,    0,173705,46492,    0,173706,46493,    0,173707,52025
  2331. ,46494,    0,267735,46495,    0,173710,46497,    0,123935,46501
  2332. ,    0,195881,79730,    0,267800,140587,    0,267808,179312,79754
  2333. ,    0,256747,179313,    0,256758,112952,    0,112955,79769,    0
  2334. ,256762,79770,    0,256764,112958,    0,256767,112961,79775,    0
  2335. ,256772,79780,    0,256776,79784,    0,234653,79785,    0,201468
  2336. ,79786,    0,256780,79788,    0,85320,79789,    0,256782,212534
  2337. ,    0,184880, 2357,    0,79792, 2358,    0,267847,79793,    0
  2338. ,256786,79794,    0,256789,79797,    0,256796,79804,    0,284454
  2339. , 2373,    0,273396,240210,    0,301053,256805,    0,256810,201500
  2340. ,    0,256811,201501, 2385,    0,135139,18988,    0,74310,46655
  2341. ,    0,273428,256835,46657,    0,273429,113030,    0,273430,245775
  2342. ,    0,245779,201531,    0,262378,113041,    0,267915,74330,    0
  2343. ,151775,46686, 2438,    0,273458,46687, 2439,    0,273459,129653
  2344. ,46688,    0,273460, 2441,    0,46691, 2443,    0,273467,46696
  2345. ,    0,267937,113069,    0,273469,267938,113070,    0,267939,113071
  2346. ,    0,267943,113075,    0,267949,129674,    0,201584,118619,    0
  2347. ,256897,140746,    0,124155,113093,    0,118625,113094,    0,118628
  2348. ,113097,    0,207162,46763,    0,273550,201647,    0,279089,256965
  2349. ,    0,256970,207191,129757,    0,256971,207192,    0,256972,207193
  2350. ,201662,    0,256973,207194,201663,    0,256974,201664,    0,256975
  2351. ,201665,    0,256976,207197,201666,    0,256977,201667,    0,256979
  2352. ,207200,    0,256980,201670,46802,    0,256981,207202,201671,46803
  2353. ,    0,273575,256982,201672,46804,    0,273576,256983,201673,    0
  2354. ,273577,256984,124240,    0,256985,201675,    0,256986,201676,179552
  2355. ,46808,    0,256987,201677,    0,273581,201678,    0,201679,179555
  2356. ,    0,279119,256995,46817,    0,124259,46825,    0,279128,257004
  2357. ,46826,    0,273598,257005,46827,    0,279130,273599,46828,    0
  2358. ,273601,46830,    0,273603,46832,    0,273604,46833,    0,273605
  2359. ,46834,    0,273610,151928,    0,223841, 2601,    0,257029,168533
  2360. ,113223,    0,257030, 2604,    0,124289, 2607,    0,207280, 2633
  2361. ,    0,207283,113256,    0,312375,179631,69011,    0,295784,179633
  2362. , 2641,    0,279208,30313,    0,279211,207308,    0,207314,113287
  2363. ,    0,279236,207333,    0,279237,207334,    0,279242,207339,    0
  2364. ,306914,279259,    0,279260,246074,    0,279261,246075,    0,306917
  2365. ,279262,246076,    0,279264,246078,    0,279265,201831,    0,118911
  2366. ,19353,    0,118922,47019,    0,91277,47029,    0,113402,91278
  2367. ,    0,312519,113403,91279,    0,273803,113404,    0,113418,102356
  2368. ,    0,113431,91307,    0,113432,91308,    0,113433,91309,    0
  2369. ,113434,91310,58124,    0,235119,113437,91313,    0,290437, 8356
  2370. ,    0,91385,47137,    0,284981,91396,    0,47150,25026,    0
  2371. ,251813,47166,    0,251815,141195,    0,168852,47170,25046,    0
  2372. ,168858,91424,    0,168873,91439,    0,141227,91448,    0,141228
  2373. ,91449,    0,141229,91450,    0,168886,91452,    0,168887,91453
  2374. ,    0,168890,91456,    0,185484,168891,    0,296108,196550,    0
  2375. ,213154,58286,    0,240824,141266,    0,185516,141268,    0,246370
  2376. ,168936,    0,251902,168937,    0,168939,80443,    0,290626,168944
  2377. ,    0,185546,168953,    0,185547,168954,    0,185552,124711,    0
  2378. ,251931,141311,    0,97123,47344,    0,185624,141376,    0,141389
  2379. ,91610,    0,185638,141390,91611,    0,141391,91612,    0,141393
  2380. ,36304,19711,    0,141403,119279,    0,185664,36327,    0,185669
  2381. ,91642,    0,91643,36333,    0,91646,36336,    0,185687,169094
  2382. ,    0,185688,141440,    0,185698,64016,36361,    0,119351,36386
  2383. ,    0,108290,36387,    0,119353,36388,    0,196807,169152,91718
  2384. ,    0,196818,91729,    0,307439,97261,30889,    0,279785,97262
  2385. ,    0,196846,91757,    0,124947,97292,    0,196868,119434,102841
  2386. ,    0,196870,91781,    0,268774,196871,91782, 8817,    0,91788
  2387. ,14354,    0,91789,14355,    0,91792, 8827,    0,14359, 8828
  2388. ,    0,296442,25423,    0,97341,36500,    0,97342,36501,    0
  2389. ,290930,213496,97345,    0,196904,97346,    0,290933,97348,    0
  2390. ,97349,14384,    0,97350,14385,    0,97351,14386,    0,141605
  2391. ,97357,    0,285412,241164,97358,14393,    0,257761,230106,    0
  2392. ,268832,158212,    0,196957,158240,    0,213554,14438,    0,158251
  2393. ,97410, 8914,    0,230169, 8929,    0,230171,196985,14462,    0
  2394. ,219135,158294,    0,174902,14503,    0,174905,14506,    0,274464
  2395. ,14507,    0,158318,14512,    0,230222,197036,    0,197040,14517
  2396. ,    0,114078,14520,    0,263439,97509,    0,158359,36677,    0
  2397. ,158375,64348,    0,197094,158377,    0,291122,197095,    0,263468
  2398. ,197096,    0,263469,197097,158380,    0,263470,158381,    0,263471
  2399. ,230285,158382,75417,36700,    0,230286,158383,36701,    0,263474
  2400. ,158385,    0,158386,97545,    0,158387,97546,    0,263477,230291
  2401. ,158388,    0,158389,36707,    0,230300,97556,    0,230301,97557
  2402. ,    0,230302,97558,    0,230303,97559,    0,230304,97560,    0
  2403. ,230308,125219,    0,307745,263497,230311, 9071,    0,252444,230320
  2404. ,    0,252461,53345,    0,263546,252484,    0,263557,252495,    0
  2405. ,252496,202717,    0,252504,42326,    0,252505,42327,    0,263586
  2406. ,213807,    0,252534,42356,    0,53419,42357,    0,58952,42359
  2407. ,    0,141923,42365,    0,313390,263611,    0,263616,186182,    0
  2408. ,263617,186183,    0,263620,141938,    0,186213,59000,    0,186214
  2409. ,75594,    0,186218,103253,    0,285779,186221,    0,296867,75627
  2410. ,    0,75659,42473,    0,75662,20352,    0,213940,75665,42479
  2411. ,    0,219490,42498,    0,103346,75691,42505,    0,213968,103348
  2412. ,    0,213969,42508,    0,186330,75710,    0,186331,97835,    0
  2413. ,119960,103367,    0,247187,186346,    0,191878,186347,    0,191879
  2414. ,186348,    0,191885,186354,75734,    0,197426,186364,    0,202966
  2415. ,164249,    0,125552,75773,    0,197479,75797,    0,219607,197483
  2416. ,75801,    0,75802,53678,    0,97928,75804,    0,59220,42627
  2417. ,    0,197502,97944,    0,214113,114555,    0,225185,37131,    0
  2418. ,142227, 9483,    0,114592,42689,    0,286059,42695,    0,297124
  2419. ,142256,42698,    0,142258,42700,    0,286068,142262,    0,131210
  2420. ,114617,    0,114619, 3999,    0,131219,114626,    0,286112, 4031
  2421. ,    0,131246, 4033,    0,313771,142310,    0,186568,31700,    0
  2422. ,192104,42767,    0,42778, 4061,    0,286148,120218, 4067,    0
  2423. ,142345,120221, 4070,    0,275093,186597,    0,275094,114695,    0
  2424. ,275098,120230,    0,142374,114719,53878,    0,214278,142375,    0
  2425. ,275123,142379,    0,275125,120257,103664,    0,275126,131320,    0
  2426. ,275132,142388,42830,    0,142389,114734,42831,    0,275134,142390
  2427. ,114735,42832, 4115,    0,142391,114736,    0,291729,264074,142392
  2428. ,131330,42834,    0,142393,131331,42835,    0,131332,42836,    0
  2429. ,264077,131333,114740,42837,    0,142396,131334,42838,    0,142397
  2430. ,131335,20715,    0,142398,131336,114743,    0,142399,131337,42841
  2431. ,    0,142402,20720,    0,264085,142403,    0,264086,142404,131342
  2432. ,20722,    0,142405,131343,    0,142408,120284,    0,131351,114758
  2433. ,98165,    0,131352,114759, 4139,    0,264101,114764,    0,114765
  2434. ,98172,    0,175640, 4179,    0,120331, 4180,    0,275201,164581
  2435. ,37368,    0,275212,236495, 4193,    0,120345, 4194,    0,120347
  2436. , 4196,    0,258629, 4203,    0,275225, 4206,    0,109296, 4207
  2437. ,    0,76112, 4209,    0,275241,230993,    0,275263,264201,    0
  2438. ,275265,264203,    0,280803,275272,    0,280804,31909,    0,275275
  2439. ,153593,    0,170199,20862,    0,258697,225511,    0,225512,170202
  2440. ,    0,170235,43022,    0,297449,170236,43023,    0,269795,170237
  2441. ,43024,    0,170238,43025,    0,197895,170240,    0,170241,43028
  2442. ,    0,170244,43031,    0,170246,43033,    0,103941,43100,    0
  2443. ,159262,103952,43111,    0,308624,76322,    0,159291,43140,    0
  2444. ,104003,43162,    0,104004,43163,    0,104005,43164,    0,131661
  2445. ,104006,43165,    0,104008,43167,    0,253346,192505,43168,    0
  2446. ,104075,59827,    0,104076,37704,    0,308726,120672,    0,308731
  2447. ,236828,54305,    0,308757,231323,    0,115221,104159,    0,198200
  2448. ,170545,    0,104178,43337,    0,198206,98648,    0,242459,231397
  2449. ,    0,115253,37819,    0,170565,115255,    0,170568,43355,    0
  2450. ,308845,170570,    0,170574,43361,    0,170577,104205,    0,170578
  2451. ,104206,    0,308858,170583,    0,242489,170586,    0,242490,170587
  2452. ,    0,292274,242495,    0,242498,115285,    0,308874,115289,    0
  2453. ,308879,115294,    0,198323,48986,    0,253634,48987,    0,115372
  2454. ,76655,    0,248133,49017,    0,242607,49022,    0,242626,120944
  2455. ,    0,242629,120947,    0,242636,115423,    0,242637,115424,    0
  2456. ,242638,115425,    0,242641,115428,    0,220591,121033,    0,231656
  2457. ,49133,    0,242742,49157,43626,    0,242743,121061,49158,    0
  2458. ,121062,49159,    0,126611, 4929,    0,126614,65773,    0,126616
  2459. ,115554,98961,    0,226182,43659,    0,226187,209594,    0,115588
  2460. ,38154,    0,126659,43694,    0,143255,43697,    0,115625,16067
  2461. ,    0,126694,87977,16074,    0,126737,76958,    0,204172,126738
  2462. ,76959,    0,126739,76960,    0,126740,104616,    0,126742,43777
  2463. ,    0,248430,126748,    0,132281,126750,    0,204190,115694,    0
  2464. ,115705,76988,    0,159955,76990,    0,76991,43805,    0,193143
  2465. ,43806,    0,154428,76994,    0,76997,43811,    0,276115,76999
  2466. ,    0,154437,43817,    0,115733,43830,    0,204230,115734,43831
  2467. ,    0,248483,115739,43836,    0,193177,43840,    0,115757,16199
  2468. ,    0,115759,77042,21732,    0,121292,115761,    0,115762,88107
  2469. ,    0,193205,10682,    0,193208,93650,    0,165572,126855,    0
  2470. ,226443,77106,    0,248579,209862,    0,248581,77120,    0,198804
  2471. ,77122,    0,254122,77130,    0,281783,77136,    0,281785,226475
  2472. ,43952,    0,281786,226476,82670,    0,226477,160105,77140,    0
  2473. ,254140,55024,43962,    0,198837,66093,    0,226508,193322,    0
  2474. ,226511,21864,    0,226514,193328,    0,198868,193337,88248,32938
  2475. ,    0,198869,193338,99311,    0,254180,193339,    0,198872,193341
  2476. ,    0,198877,193346,    0,44023, 5306,    0,226555,88280,    0
  2477. ,259743,88282,    0,315055,281869,226559,    0,281900,259776,    0
  2478. ,281901,259777,88316,    0,226594,88319,    0,88321,77259,    0
  2479. ,198955,160238,    0,259808,226622,    0,259814,226628,77291,10919
  2480. ,    0,259816,77293,    0,226638,198983,10929,    0,226639,198984
  2481. ,    0,276419,270888,226640,198985,    0,226641,132614,    0,226642
  2482. ,104960,27526,    0,198989,104962,    0,226645,176866,104963,    0
  2483. ,226653,198998,33068,    0,226654,198999,    0,226657,199002,    0
  2484. ,199003,77321,    0,304094,77323,    0,199006,160289,77324,    0
  2485. ,199008,88388,    0,199009,77327,44141,    0,199012,77330,    0
  2486. ,199014,77332,    0,254329,88399,    0,248823,121610,    0,248826
  2487. ,88427,    0,176924,88428,    0,259894,88433,    0,105049,88456
  2488. ,    0,259922,193550,77399,    0,259923,88462,    0,259945,105077
  2489. ,    0,259946,105078,    0,259947,237823,105079,    0,259948,38708
  2490. ,    0,259951,160393,    0,259953,127209,    0)  ;
  2491.         --| Hash values to check against to verify that
  2492.         --| correct action has been found for this
  2493.         --| parser state and input token.
  2494.         -- NYU Reference Name: ACTION_TABLE2
  2495.  
  2496.     DefaultMap :
  2497.         constant array (DefaultMapRange) of GC.ParserInteger :=
  2498.          ( 1420,    0,    0,    0,    0, 1418,    0, 1247,  953, 1236
  2499. , 1419,    0, 1238,    0, 1428,    0,    0,    0, 1240, 1241
  2500. , 1242, 1243, 1244, 1245,    0, 1299,    0, 1299, 1239, 1246
  2501. ,    0,    0,    0, 1299, 1110,    0, 1111, 1093,    0, 1092
  2502. , 1054, 1053,    0, 1108, 1109,    0, 1342, 1362, 1094, 1055
  2503. , 1056, 1057, 1097, 1076, 1348, 1079, 1080, 1081, 1082, 1083
  2504. , 1084, 1087, 1088, 1366, 1371, 1369,    0, 1098, 1095, 1096
  2505. ,    0, 1345, 1178, 1179,    0, 1262,    0, 1195,    0, 1180
  2506. , 1174,    0, 1188, 1173, 1330, 1035,    0, 1395, 1187, 1191
  2507. ,    0, 1386, 1259,    0,    0, 1260, 1261, 1424, 1422, 1421
  2508. , 1312, 1119,  990, 1311,    0,    0, 1052,    0,    0, 1094
  2509. , 1328,    0, 1339, 1337, 1075,    0, 1364,    0, 1101, 1099
  2510. , 1103,    0, 1100, 1104, 1102, 1085,    0,    0,    0,    0
  2511. ,    0,    0, 1344,    0, 1078,    0,    0,    0,    0,    0
  2512. ,    0,    0,    0, 1107, 1105, 1106,    0, 1114, 1115, 1112
  2513. , 1113,    0, 1116, 1089,    0, 1094, 1090, 1367,    0,    0
  2514. ,    0,    0,    0, 1309,    0, 1429,    0, 1299,    0,    0
  2515. ,    0,    0, 1300,    0,    0,    0,    0,    0,    0,  954
  2516. , 1037,  955,  956,  957,  958,  959,  960,  961,  962,  963
  2517. ,  964,    0,    0,  972,  973,  974, 1299, 1299, 1038, 1039
  2518. , 1047, 1048, 1049, 1050, 1051,    0,    0, 1299,    0, 1286
  2519. , 1287, 1288, 1289, 1160, 1157, 1303, 1396, 1397,    0, 1386
  2520. , 1387,    0,    0,    0,    0, 1299,    0,    0,    0,    0
  2521. ,    0,    0, 1091,    0,    0, 1031,    0, 1069,    0, 1070
  2522. , 1339, 1237, 1365, 1343, 1017, 1086, 1363,  996, 1067, 1066
  2523. , 1068, 1065, 1064, 1117, 1118,    0, 1060, 1061, 1063, 1062
  2524. , 1059, 1348, 1346,    0,    0, 1362, 1352,    0, 1354, 1356
  2525. , 1353, 1355, 1357,    0,    0, 1368, 1370, 1372,    0, 1176
  2526. , 1311,    0, 1393,  978,    0, 1430,  971, 1184,    0, 1198
  2527. ,    0,    0, 1393,    0,    0,    0, 1052,    0, 1057,    0
  2528. ,    0,    0,    0,    0, 1213, 1209,    0, 1398,  965,    0
  2529. , 1332, 1036, 1331, 1188,    0, 1208, 1386, 1285,    0,    0
  2530. , 1189,    0, 1197, 1299,    0, 1248, 1423,    0, 1122, 1121
  2531. , 1313, 1351, 1347, 1341, 1334, 1337, 1074, 1030,    0,    0
  2532. , 1335, 1337, 1340,    0, 1073,    0,    0, 1058, 1077, 1350
  2533. , 1349, 1358, 1360, 1359, 1361,    0, 1184,    0, 1182,    0
  2534. ,    0,    0,    0,    0,    0, 1185, 1307,    0, 1386,    0
  2535. , 1194,    0,    0, 1299,    0,    0,    0, 1252,    0,    0
  2536. , 1279,    0,  952,    0,    0,    0,    0,    0,    0,    0
  2537. ,    0, 1210, 1299,    0,    0, 1033,    0,    0,    0,    0
  2538. ,    0, 1307, 1307,  988,    0, 1041, 1042, 1043, 1044, 1046
  2539. , 1040, 1045, 1299,    0,    0,    0,    0,    0,    0,    0
  2540. ,    0, 1165,    0,    0,    0,    0,    0, 1303, 1052,    0
  2541. , 1304,    0, 1303, 1124, 1125,    0, 1128, 1129, 1130, 1131
  2542. , 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141
  2543. , 1142, 1143, 1375,    0,    0,    0,    0, 1220, 1221, 1222
  2544. ,    0, 1158, 1305, 1196, 1425, 1120, 1339, 1029, 1329, 1336
  2545. , 1339, 1338, 1018,  997,    0, 1277, 1183, 1307,    0,    0
  2546. ,    0,    0,    0,    0,    0, 1272,    0,    0, 1010, 1273
  2547. , 1274, 1009,    0,    0, 1324, 1432, 1431, 1266, 1310, 1186
  2548. ,    0,    0,    0, 1275, 1192,    0,    0, 1175,    0, 1188
  2549. ,    0,    0, 1284, 1433, 1281,    0, 1435,    0,    0, 1299
  2550. ,    0, 1291, 1290, 1198,    0,  987,  988,  986, 1215, 1299
  2551. , 1400, 1402,    0,    0,    0,    0,    0, 1299,    0,  977
  2552. ,  979,  980,  981,  982,  983,  984,  985, 1002, 1003, 1004
  2553. , 1316, 1316, 1324,  975,    0, 1203,    0,    0,    0, 1307
  2554. , 1307,    0, 1253,  966,  968,    0,    0,  989,  991,  992
  2555. ,  993, 1333, 1249, 1207, 1214, 1416, 1408,    0,    0,    0
  2556. , 1167, 1172, 1148, 1378,    0, 1145, 1257,    0, 1169,    0
  2557. ,    0, 1412,    0,    0,    0, 1190,    0, 1373,    0, 1126
  2558. , 1127, 1376,    0, 1303,    0,    0, 1163, 1386, 1299, 1164
  2559. , 1171, 1297,    0,    0, 1072, 1071, 1433, 1181,    0, 1394
  2560. , 1032,    0, 1270, 1269, 1271, 1268,    0, 1264,    0,    0
  2561. , 1308, 1263, 1433, 1386,    0,    0,    0,    0, 1296,    0
  2562. , 1437,    0, 1299,    0,    0, 1206,    0, 1402,    0,    0
  2563. , 1299, 1008, 1006,    0,  995, 1201,    0,    0, 1322, 1000
  2564. , 1001, 1314,  999, 1317, 1005, 1007,    0, 1399, 1094, 1320
  2565. , 1016,    0,    0,  967,  969,    0,    0,    0,    0,    0
  2566. ,    0, 1305, 1219, 1166,    0, 1380, 1303, 1258, 1170,    0
  2567. ,    0,    0, 1303, 1303, 1303, 1225, 1226, 1227, 1228, 1380
  2568. , 1144, 1298,    0, 1303,    0,    0, 1154, 1303,    0, 1386
  2569. ,    0, 1306, 1391, 1390, 1159,    0, 1177, 1318, 1094, 1267
  2570. , 1307,    0,    0,    0, 1193, 1215,    0,    0, 1436,  951
  2571. ,    0,    0,    0, 1299,    0, 1250, 1251,    0, 1404, 1386
  2572. , 1299, 1401, 1199, 1299,    0,    0,    0,    0, 1015,    0
  2573. , 1012,  970, 1205, 1204,  994,    0, 1234,    0,    0, 1393
  2574. , 1303, 1217,    0, 1168, 1303,    0,    0, 1377, 1303,    0
  2575. ,    0, 1415, 1230,    0, 1229, 1303,    0, 1146, 1374,    0
  2576. ,    0,    0, 1162,    0, 1256, 1255, 1426, 1392,    0,    0
  2577. ,    0, 1025,    0, 1325,    0, 1280, 1434,    0, 1292,    0
  2578. , 1438,    0, 1386,    0,    0, 1211, 1403, 1022, 1019,    0
  2579. ,    0, 1299, 1299,    0,  998,    0,    0, 1034,    0, 1014
  2580. ,    0, 1417, 1410,    0,    0,    0, 1382, 1381,    0,    0
  2581. , 1231,    0, 1303, 1303,    0, 1413,    0,    0, 1155, 1386
  2582. ,    0, 1161,    0, 1278,    0,    0, 1013,    0, 1276, 1295
  2583. ,    0, 1293, 1212,    0, 1393, 1216,    0,    0,    0, 1021
  2584. , 1023, 1315,    0,    0,  976, 1321,    0, 1409, 1386,    0
  2585. , 1328,    0, 1303,    0, 1224,    0,    0,    0, 1156,    0
  2586. , 1386,    0, 1303,    0, 1319,    0, 1265,    0, 1406,    0
  2587. , 1301, 1307,    0, 1202, 1393,    0, 1303,    0,    0, 1383
  2588. , 1379, 1147,    0,    0, 1223, 1152,    0, 1427, 1254, 1011
  2589. ,    0, 1294,    0, 1405,    0, 1024, 1200,    0, 1218, 1151
  2590. , 1303,    0,    0,    0, 1153, 1393,    0, 1302, 1326, 1411
  2591. , 1150, 1149, 1232,    0,    0,    0, 1328,    0, 1233, 1407
  2592. , 1299,    0,    0, 1327, 1028, 1299,    0, 1027, 1026)  ;
  2593.         --| Map of states (constant array index) to default reductions.
  2594.         -- NYU Reference Name: DEFAULT
  2595.   
  2596.     type FollowSymbolIndexArray is array ( PositiveParserInteger range <>)
  2597.         of GC.ParserInteger ;
  2598.  
  2599.     FollowSymbolMapIndex : constant FollowSymbolIndexArray :=
  2600.          (    1,    1,    2,    2,    3,    4,    5,    5,    6,   45
  2601. ,   46,   59,   60,   73,   74,   87,   88,  101,  102,  115
  2602. ,  116,  132,  133,  149,  150,  163,  164,  180,  181,  194
  2603. ,  195,  211,  212,  225,  226,  226,  227,  227,  228,  229
  2604. ,  230,  231,  232,  233,  234,  240,  241,  242,  243,  256
  2605. ,  257,  270,  271,  284,  285,  287,  288,  288,  289,  290
  2606. ,  291,  292,  293,  293,  294,  294,  295,  295,  296,  296
  2607. ,  297,  297,  298,  298,  299,  299,  300,  300,  301,  301
  2608. ,  302,  335,  336,  337,  338,  371,  372,  378,  379,  380
  2609. ,  381,  382,  383,  404,  405,  406,  407,  408,  409,  410
  2610. ,  411,  413,  414,  415,  416,  418,  419,  419,  420,  421
  2611. ,  422,  423,  424,  424,  425,  458,  459,  461,  462,  463
  2612. ,  464,  473,  474,  475,  476,  496,  497,  498,  499,  503
  2613. ,  504,  506,  507,  507,  508,  509,  510,  511,  512,  513
  2614. ,  514,  515,  516,  517,  518,  530,  531,  532,  533,  541
  2615. ,  542,  549,  550,  563,  564,  577,  578,  593,  594,  602
  2616. ,  603,  614,  615,  623,  624,  635,  636,  647,  648,  659
  2617. ,  660,  693,  694,  727,  728,  762,  763,  796,  797,  831
  2618. ,  832,  832,  833,  862,  863,  864,  865,  865,  866,  867
  2619. ,  868,  869,  870,  870,  871,  872,  873,  874,  875,  876
  2620. ,  877,  886,  887,  894,  895,  902,  903,  910,  911,  918
  2621. ,  919,  926,  927,  936,  937,  947,  948,  972,  973, 1001
  2622. , 1002, 1026, 1027, 1056, 1057, 1085, 1086, 1114, 1115, 1121
  2623. , 1122, 1151, 1152, 1181, 1182, 1211, 1212, 1222, 1223, 1231
  2624. , 1232, 1240, 1241, 1249, 1250, 1256, 1257, 1293, 1294, 1321
  2625. , 1322, 1348, 1349, 1374, 1375, 1380, 1381, 1407, 1408, 1434
  2626. , 1435, 1454, 1455, 1481, 1482, 1508, 1509, 1535, 1536, 1562
  2627. , 1563, 1589, 1590, 1616, 1617, 1643, 1644, 1670, 1671, 1697
  2628. , 1698, 1724, 1725, 1751, 1752, 1778, 1779, 1805, 1806, 1832
  2629. , 1833, 1859, 1860, 1886, 1887, 1906, 1907, 1909, 1910, 1912
  2630. , 1913, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1923
  2631. , 1924, 1926, 1927, 1927, 1928, 1928, 1929, 1931, 1932, 1934
  2632. , 1935, 1955, 1956, 1956, 1957, 1958, 1959, 1970, 1971, 1971
  2633. , 1972, 1972, 1973, 1975, 1976, 1979, 1980, 1981, 1982, 1983
  2634. , 1984, 1986, 1987, 1987, 1988, 1988, 1989, 2000, 2001, 2012
  2635. , 2013, 2013, 2014, 2014, 2015, 2016, 2017, 2028, 2029, 2041
  2636. , 2042, 2043, 2044, 2044, 2045, 2046, 2047, 2049, 2050, 2051
  2637. , 2052, 2063, 2064, 2064, 2065, 2068, 2069, 2070, 2071, 2097
  2638. , 2098, 2124, 2125, 2151, 2152, 2154, 2155, 2157, 2158, 2160
  2639. , 2161, 2163, 2164, 2166, 2167, 2169, 2170, 2172, 2173, 2174
  2640. , 2175, 2182, 2183, 2184, 2185, 2192, 2193, 2197, 2198, 2205
  2641. , 2206, 2213, 2214, 2219, 2220, 2221, 2222, 2229, 2230, 2231
  2642. , 2232, 2233, 2234, 2235, 2236, 2236, 2237, 2239, 2240, 2245
  2643. , 2246, 2251, 2252, 2252, 2253, 2253, 2254, 2255, 2256, 2257
  2644. , 2258, 2259, 2260, 2260, 2261, 2262, 2263, 2263, 2264, 2264
  2645. , 2265, 2265, 2266, 2266, 2267, 2267, 2268, 2271, 2272, 2276
  2646. , 2277, 2281, 2282, 2282, 2283, 2284, 2285, 2286, 2287, 2288
  2647. , 2289, 2295)  ;
  2648.   
  2649.     FollowSymbolMap : constant FollowSymbolArray :=
  2650.          (   96,   96,   71,   80,   72,    2,    4,   10,   12,   14
  2651. ,   15,   19,   20,   21,   22,   23,   24,   25,   26,   27
  2652. ,   28,   29,   33,   37,   39,   42,   43,   44,   45,   46
  2653. ,   51,   53,   54,   55,   56,   57,   59,   60,   61,   62
  2654. ,   63,   65,   67,   68,   92,   10,   21,   25,   26,   27
  2655. ,   42,   43,   44,   45,   55,   56,   59,   60,   65,   10
  2656. ,   21,   25,   26,   27,   42,   43,   44,   45,   55,   56
  2657. ,   59,   60,   65,   10,   21,   25,   26,   27,   42,   43
  2658. ,   44,   45,   55,   56,   59,   60,   65,   10,   21,   25
  2659. ,   26,   27,   42,   43,   44,   45,   55,   56,   59,   60
  2660. ,   65,   10,   21,   25,   26,   27,   42,   43,   44,   45
  2661. ,   55,   56,   59,   60,   65,   10,   21,   25,   26,   27
  2662. ,   42,   43,   44,   45,   54,   55,   56,   59,   60,   63
  2663. ,   65,   96,   10,   21,   25,   26,   27,   42,   43,   44
  2664. ,   45,   54,   55,   56,   59,   60,   63,   65,   96,   10
  2665. ,   21,   25,   26,   27,   42,   43,   44,   45,   55,   56
  2666. ,   59,   60,   65,   10,   21,   25,   26,   27,   42,   43
  2667. ,   44,   45,   54,   55,   56,   59,   60,   63,   65,   96
  2668. ,   10,   21,   25,   26,   27,   42,   43,   44,   45,   55
  2669. ,   56,   59,   60,   65,   10,   21,   25,   26,   27,   42
  2670. ,   43,   44,   45,   54,   55,   56,   59,   60,   63,   65
  2671. ,   96,   10,   21,   25,   26,   27,   42,   43,   44,   45
  2672. ,   55,   56,   59,   60,   65,   80,   79,   80,   88,   72
  2673. ,   80,   80,   88,   31,   33,   58,   72,   75,   80,   85
  2674. ,   75,   79,   10,   21,   25,   26,   27,   42,   43,   44
  2675. ,   45,   55,   56,   59,   60,   65,   10,   21,   25,   26
  2676. ,   27,   42,   43,   44,   45,   55,   56,   59,   60,   65
  2677. ,   10,   21,   25,   26,   27,   42,   43,   44,   45,   55
  2678. ,   56,   59,   60,   65,   31,   71,   80,   80,   72,   80
  2679. ,   72,   80,   80,   80,   80,   80,   80,   80,   80,   80
  2680. ,   80,    7,   16,   17,   30,   31,   33,   34,   36,   39
  2681. ,   47,   49,   50,   58,   64,   69,   71,   72,   73,   74
  2682. ,   75,   76,   78,   80,   81,   82,   83,   84,   85,   86
  2683. ,   87,   88,   89,   90,   91,   80,   88,    7,   16,   17
  2684. ,   30,   31,   33,   34,   36,   39,   47,   49,   50,   58
  2685. ,   64,   69,   71,   72,   73,   74,   75,   76,   78,   80
  2686. ,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90
  2687. ,   91,   33,   72,   75,   80,   84,   85,   88,   80,   88
  2688. ,   80,   88,    7,   30,   31,   33,   36,   39,   47,   58
  2689. ,   64,   72,   75,   80,   81,   82,   83,   84,   85,   86
  2690. ,   88,   89,   90,   91,   72,   75,   72,   75,   72,   75
  2691. ,   47,   80,   88,   80,   88,   47,   80,   88,   80,   72
  2692. ,   75,   72,   75,   38,    7,    9,   30,   31,   33,   34
  2693. ,   36,   39,   47,   49,   58,   64,   69,   70,   71,   72
  2694. ,   73,   74,   75,   76,   77,   78,   80,   81,   82,   83
  2695. ,   84,   85,   86,   87,   88,   89,   90,   91,   33,   72
  2696. ,   75,   72,   75,    7,   31,   33,   39,   58,   64,   72
  2697. ,   75,   80,   85,   21,   61,   10,   12,   21,   22,   25
  2698. ,   26,   27,   42,   43,   44,   45,   54,   55,   56,   59
  2699. ,   60,   61,   63,   65,   67,   68,   12,   65,   12,   21
  2700. ,   43,   61,   65,   21,   43,   61,   80,   43,   61,   21
  2701. ,   61,   21,   61,   84,   85,   84,   85,   10,   21,   25
  2702. ,   26,   27,   42,   44,   45,   55,   56,   59,   60,   65
  2703. ,   10,   21,   10,   21,   26,   27,   42,   43,   45,   56
  2704. ,   60,   10,   21,   26,   27,   42,   45,   56,   60,   10
  2705. ,   21,   25,   26,   27,   42,   43,   44,   45,   55,   56
  2706. ,   59,   60,   65,   10,   21,   25,   26,   27,   42,   43
  2707. ,   44,   45,   55,   56,   59,   60,   65,   10,   21,   25
  2708. ,   26,   27,   42,   43,   44,   45,   54,   55,   56,   59
  2709. ,   60,   63,   65,   10,   21,   26,   27,   42,   43,   45
  2710. ,   56,   60,   10,   21,   26,   27,   42,   43,   45,   54
  2711. ,   56,   60,   63,   96,   10,   21,   26,   27,   42,   43
  2712. ,   45,   56,   60,   10,   21,   26,   27,   42,   43,   45
  2713. ,   54,   56,   60,   63,   96,   10,   21,   26,   27,   42
  2714. ,   43,   45,   54,   56,   60,   63,   96,   10,   21,   26
  2715. ,   27,   42,   43,   45,   54,   56,   60,   63,   96,    7
  2716. ,    9,   30,   31,   33,   34,   36,   39,   47,   49,   58
  2717. ,   64,   69,   70,   71,   72,   73,   74,   75,   76,   77
  2718. ,   78,   80,   81,   82,   83,   84,   85,   86,   87,   88
  2719. ,   89,   90,   91,    7,    9,   30,   31,   33,   34,   36
  2720. ,   39,   47,   49,   58,   64,   69,   70,   71,   72,   73
  2721. ,   74,   75,   76,   77,   78,   80,   81,   82,   83,   84
  2722. ,   85,   86,   87,   88,   89,   90,   91,    7,    9,   30
  2723. ,   31,   33,   34,   36,   39,   47,   49,   58,   60,   64
  2724. ,   69,   70,   71,   72,   73,   74,   75,   76,   77,   78
  2725. ,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89
  2726. ,   90,   91,    7,    9,   30,   31,   33,   34,   36,   39
  2727. ,   47,   49,   58,   64,   69,   70,   71,   72,   73,   74
  2728. ,   75,   76,   77,   78,   80,   81,   82,   83,   84,   85
  2729. ,   86,   87,   88,   89,   90,   91,    7,    9,   30,   31
  2730. ,   33,   34,   36,   39,   47,   49,   58,   60,   64,   69
  2731. ,   70,   71,   72,   73,   74,   75,   76,   77,   78,   80
  2732. ,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90
  2733. ,   91,   72,    7,   30,   31,   33,   34,   36,   39,   47
  2734. ,   49,   58,   64,   69,   72,   73,   74,   75,   76,   78
  2735. ,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89
  2736. ,   90,   91,   72,   75,   72,   72,   75,   72,   75,   72
  2737. ,   72,   75,   72,   75,   72,   75,    7,   31,   33,   39
  2738. ,   58,   64,   72,   75,   80,   85,    7,   31,   33,   58
  2739. ,   72,   75,   80,   85,   31,   33,   39,   58,   72,   75
  2740. ,   80,   85,   31,   33,   58,   64,   72,   75,   80,   85
  2741. ,    7,   31,   33,   58,   72,   75,   80,   85,   31,   33
  2742. ,   39,   58,   72,   75,   80,   85,    7,   31,   33,   39
  2743. ,   58,   64,   72,   75,   80,   85,    3,   35,   36,   37
  2744. ,   65,   66,   67,   68,   71,   74,   76,    7,   30,   31
  2745. ,   33,   36,   39,   47,   58,   64,   69,   72,   74,   75
  2746. ,   76,   80,   81,   82,   83,   84,   85,   86,   88,   89
  2747. ,   90,   91,    7,   30,   31,   33,   34,   36,   39,   47
  2748. ,   49,   58,   64,   69,   72,   73,   74,   75,   76,   78
  2749. ,   80,   81,   82,   83,   84,   85,   86,   88,   89,   90
  2750. ,   91,    7,   30,   31,   33,   36,   39,   47,   58,   64
  2751. ,   69,   72,   74,   75,   76,   80,   81,   82,   83,   84
  2752. ,   85,   86,   88,   89,   90,   91,    7,   30,   31,   33
  2753. ,   34,   36,   39,   47,   49,   58,   64,   69,   72,   73
  2754. ,   74,   75,   76,   78,   80,   81,   82,   83,   84,   85
  2755. ,   86,   87,   88,   89,   90,   91,    7,   30,   31,   33
  2756. ,   34,   36,   39,   47,   49,   58,   64,   69,   72,   73
  2757. ,   74,   75,   76,   78,   80,   81,   82,   83,   84,   85
  2758. ,   86,   88,   89,   90,   91,    7,   30,   31,   33,   34
  2759. ,   36,   39,   47,   49,   58,   64,   69,   72,   73,   74
  2760. ,   75,   76,   78,   80,   81,   82,   83,   84,   85,   86
  2761. ,   88,   89,   90,   91,   35,   37,   65,   66,   67,   68
  2762. ,   71,    7,   30,   31,   33,   34,   36,   39,   47,   49
  2763. ,   58,   64,   69,   72,   73,   74,   75,   76,   78,   80
  2764. ,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90
  2765. ,   91,    7,   30,   31,   33,   34,   36,   39,   47,   49
  2766. ,   58,   64,   69,   72,   73,   74,   75,   76,   78,   80
  2767. ,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90
  2768. ,   91,    7,   30,   31,   33,   34,   36,   39,   47,   49
  2769. ,   58,   64,   69,   72,   73,   74,   75,   76,   78,   80
  2770. ,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90
  2771. ,   91,    3,   35,   36,   37,   65,   66,   67,   68,   71
  2772. ,   74,   76,    3,   35,   36,   37,   65,   66,   67,   68
  2773. ,   71,    3,   35,   36,   37,   65,   66,   67,   68,   71
  2774. ,    3,   35,   36,   37,   65,   66,   67,   68,   71,   35
  2775. ,   37,   65,   66,   67,   68,   71,    7,   16,   17,   30
  2776. ,   31,   33,   34,   36,   39,   47,   49,   50,   58,   61
  2777. ,   64,   69,   70,   71,   72,   73,   74,   75,   76,   77
  2778. ,   78,   80,   81,   82,   83,   84,   85,   86,   87,   88
  2779. ,   89,   90,   91,    2,    4,   10,   12,   14,   15,   19
  2780. ,   20,   21,   23,   24,   25,   28,   29,   33,   37,   39
  2781. ,   43,   46,   51,   53,   57,   61,   62,   65,   67,   68
  2782. ,   92,    2,    4,   10,   12,   14,   15,   19,   20,   21
  2783. ,   23,   24,   25,   28,   29,   33,   37,   39,   43,   46
  2784. ,   51,   53,   61,   62,   65,   67,   68,   92,    2,    4
  2785. ,   10,   12,   14,   15,   19,   20,   21,   23,   24,   25
  2786. ,   28,   29,   33,   37,   39,   46,   51,   53,   61,   62
  2787. ,   65,   67,   68,   92,   19,   20,   21,   23,   39,   61
  2788. ,    2,    4,   10,   12,   14,   15,   19,   20,   21,   23
  2789. ,   24,   25,   28,   29,   33,   37,   39,   43,   46,   51
  2790. ,   53,   61,   62,   65,   67,   68,   92,    2,    4,   10
  2791. ,   12,   14,   15,   19,   20,   21,   23,   24,   25,   28
  2792. ,   29,   33,   37,   39,   43,   46,   51,   53,   61,   62
  2793. ,   65,   67,   68,   92,    2,    4,   10,   12,   14,   15
  2794. ,   24,   25,   28,   29,   33,   37,   46,   51,   53,   62
  2795. ,   65,   67,   68,   92,    2,    4,   10,   12,   14,   15
  2796. ,   19,   20,   21,   23,   24,   25,   28,   29,   33,   37
  2797. ,   39,   43,   46,   51,   53,   61,   62,   65,   67,   68
  2798. ,   92,    2,    4,   10,   12,   14,   15,   19,   20,   21
  2799. ,   23,   24,   25,   28,   29,   33,   37,   39,   43,   46
  2800. ,   51,   53,   61,   62,   65,   67,   68,   92,    2,    4
  2801. ,   10,   12,   14,   15,   19,   20,   21,   23,   24,   25
  2802. ,   28,   29,   33,   37,   39,   43,   46,   51,   53,   61
  2803. ,   62,   65,   67,   68,   92,    2,    4,   10,   12,   14
  2804. ,   15,   19,   20,   21,   23,   24,   25,   28,   29,   33
  2805. ,   37,   39,   43,   46,   51,   53,   61,   62,   65,   67
  2806. ,   68,   92,    2,    4,   10,   12,   14,   15,   19,   20
  2807. ,   21,   23,   24,   25,   28,   29,   33,   37,   39,   43
  2808. ,   46,   51,   53,   61,   62,   65,   67,   68,   92,    2
  2809. ,    4,   10,   12,   14,   15,   19,   20,   21,   23,   24
  2810. ,   25,   28,   29,   33,   37,   39,   43,   46,   51,   53
  2811. ,   61,   62,   65,   67,   68,   92,    2,    4,   10,   12
  2812. ,   14,   15,   19,   20,   21,   23,   24,   25,   28,   29
  2813. ,   33,   37,   39,   43,   46,   51,   53,   61,   62,   65
  2814. ,   67,   68,   92,    2,    4,   10,   12,   14,   15,   19
  2815. ,   20,   21,   23,   24,   25,   28,   29,   33,   37,   39
  2816. ,   43,   46,   51,   53,   61,   62,   65,   67,   68,   92
  2817. ,    2,    4,   10,   12,   14,   15,   19,   20,   21,   23
  2818. ,   24,   25,   28,   29,   33,   37,   39,   43,   46,   51
  2819. ,   53,   61,   62,   65,   67,   68,   92,    2,    4,   10
  2820. ,   12,   14,   15,   19,   20,   21,   23,   24,   25,   28
  2821. ,   29,   33,   37,   39,   43,   46,   51,   53,   61,   62
  2822. ,   65,   67,   68,   92,    2,    4,   10,   12,   14,   15
  2823. ,   19,   20,   21,   23,   24,   25,   28,   29,   33,   37
  2824. ,   39,   43,   46,   51,   53,   61,   62,   65,   67,   68
  2825. ,   92,    2,    4,   10,   12,   14,   15,   19,   20,   21
  2826. ,   23,   24,   25,   28,   29,   33,   37,   39,   43,   46
  2827. ,   51,   53,   61,   62,   65,   67,   68,   92,    2,    4
  2828. ,   10,   12,   14,   15,   19,   20,   21,   23,   24,   25
  2829. ,   28,   29,   33,   37,   39,   43,   46,   51,   53,   61
  2830. ,   62,   65,   67,   68,   92,    2,    4,   10,   12,   14
  2831. ,   15,   19,   20,   21,   23,   24,   25,   28,   29,   33
  2832. ,   37,   39,   43,   46,   51,   53,   61,   62,   65,   67
  2833. ,   68,   92,    2,    4,   10,   12,   14,   15,   19,   20
  2834. ,   21,   23,   24,   25,   28,   29,   33,   37,   39,   43
  2835. ,   46,   51,   53,   61,   62,   65,   67,   68,   92,    2
  2836. ,    4,   10,   12,   14,   15,   19,   20,   21,   23,   24
  2837. ,   25,   28,   29,   33,   37,   39,   43,   46,   51,   53
  2838. ,   61,   62,   65,   67,   68,   92,    2,    4,   10,   12
  2839. ,   14,   15,   24,   25,   28,   29,   33,   37,   46,   51
  2840. ,   53,   62,   65,   67,   68,   92,   19,   20,   21,   19
  2841. ,   20,   21,   21,   33,   58,   80,   85,   43,   61,   21
  2842. ,   61,   21,   61,   25,   33,   62,   80,   33,   65,   67
  2843. ,   80,   65,   67,   80,    2,    4,   10,   12,   14,   15
  2844. ,   24,   25,   28,   29,   33,   37,   43,   46,   51,   53
  2845. ,   62,   65,   67,   68,   92,   21,   10,   14,   10,   25
  2846. ,   26,   27,   42,   43,   45,   55,   56,   59,   60,   65
  2847. ,   80,   80,   31,   50,   80,   31,   50,   71,   80,   72
  2848. ,   80,   72,   80,   31,   51,   71,   65,   65,   10,   25
  2849. ,   26,   27,   42,   43,   45,   55,   56,   59,   60,   65
  2850. ,   10,   21,   26,   27,   42,   43,   45,   54,   56,   60
  2851. ,   63,   96,   80,   80,   31,   50,   21,   25,   26,   27
  2852. ,   42,   43,   45,   55,   56,   59,   60,   65,   10,   21
  2853. ,   25,   26,   27,   42,   43,   45,   55,   56,   59,   60
  2854. ,   65,   75,   80,   80,   31,   80,   21,   22,   25,   21
  2855. ,   25,   10,   25,   26,   27,   42,   43,   45,   55,   56
  2856. ,   59,   60,   65,   80,   21,   22,   25,   43,   18,   80
  2857. ,    2,    4,   10,   12,   14,   15,   19,   20,   21,   23
  2858. ,   24,   25,   28,   29,   33,   37,   39,   43,   46,   51
  2859. ,   53,   61,   62,   65,   67,   68,   92,    2,    4,   10
  2860. ,   12,   14,   15,   19,   20,   21,   23,   24,   25,   28
  2861. ,   29,   33,   37,   39,   43,   46,   51,   53,   61,   62
  2862. ,   65,   67,   68,   92,    2,    4,   10,   12,   14,   15
  2863. ,   19,   20,   21,   23,   24,   25,   28,   29,   33,   37
  2864. ,   39,   43,   46,   51,   53,   61,   62,   65,   67,   68
  2865. ,   92,   19,   21,   39,   19,   21,   39,   19,   21,   39
  2866. ,   19,   21,   39,   19,   21,   39,   19,   21,   39,   19
  2867. ,   21,   39,   75,   80,   26,   27,   42,   43,   45,   54
  2868. ,   63,   96,   71,   80,   26,   27,   42,   43,   45,   54
  2869. ,   63,   96,   26,   27,   42,   45,   54,   26,   27,   42
  2870. ,   43,   45,   54,   63,   96,   26,   27,   42,   43,   45
  2871. ,   54,   63,   96,   26,   27,   42,   45,   54,   63,   75
  2872. ,   80,   26,   27,   42,   43,   45,   54,   60,   63,   84
  2873. ,   85,   84,   85,   21,   61,   80,   26,   42,   45,   26
  2874. ,   42,   45,   59,   63,   65,   26,   42,   45,   59,   63
  2875. ,   65,   80,   80,   72,   75,   72,   75,   72,   75,   85
  2876. ,   72,   75,   80,   80,   80,   80,   80,   21,   65,   67
  2877. ,   68,   21,   43,   65,   67,   68,   21,   43,   65,   67
  2878. ,   68,   80,   72,   75,   84,   85,   21,   61,   26,   27
  2879. ,   42,   45,   54,   60,   63)  ;
  2880.         --| Map of states to sets of follow symbols
  2881.         -- NYU Reference Name: FOLLOW
  2882.  
  2883.     ------------------------------------------------------------------
  2884.     -- Action_Token_Map
  2885.     ------------------------------------------------------------------
  2886.  
  2887.     
  2888.     type Action_Token_Array_Index is array(
  2889.         PositiveParserInteger range <>) of GC.ParserInteger ;
  2890.         --| For indexing the All Action Token Array.
  2891.         --| Maps a given state into the lower and upper bounds of a slice
  2892.         --| of the All Action Index Array.
  2893.     
  2894.     Action_Token_MapIndex : constant Action_Token_Array_Index :=
  2895.          (    1,    1,    2,    2,    3,    2,    3,    9,   10,   11
  2896. ,   12,   11,   12,   16,   17,   17,   18,   17,   18,   17
  2897. ,   18,   17,   18,   28,   29,   28,   29,   30,   31,   30
  2898. ,   31,   32,   33,   33,   34,   34,   35,   34,   35,   34
  2899. ,   35,   34,   35,   34,   35,   34,   35,   34,   35,   36
  2900. ,   37,   36,   37,   37,   38,   37,   38,   37,   38,   37
  2901. ,   38,   38,   39,   41,   42,   42,   43,   42,   43,   42
  2902. ,   43,   43,   44,   43,   44,   43,   44,   71,   72,   71
  2903. ,   72,   71,   72,   71,   72,   83,   84,   83,   84,   83
  2904. ,   84,   84,   85,   84,   85,   93,   94,   97,   98,   97
  2905. ,   98,   97,   98,   97,   98,   97,   98,   98,   99,   98
  2906. ,   99,  101,  102,  102,  103,  103,  104,  104,  105,  105
  2907. ,  106,  106,  107,  109,  110,  113,  114,  113,  114,  114
  2908. ,  115,  114,  115,  121,  122,  121,  122,  121,  122,  121
  2909. ,  122,  130,  131,  130,  131,  130,  131,  130,  131,  133
  2910. ,  134,  136,  137,  137,  138,  137,  138,  138,  139,  138
  2911. ,  139,  139,  140,  140,  141,  141,  142,  141,  142,  142
  2912. ,  143,  152,  153,  153,  154,  155,  156,  155,  156,  155
  2913. ,  156,  157,  158,  158,  159,  158,  159,  160,  161,  161
  2914. ,  162,  161,  162,  161,  162,  161,  162,  162,  163,  163
  2915. ,  164,  163,  164,  164,  165,  164,  165,  166,  167,  168
  2916. ,  169,  169,  170,  169,  170,  171,  172,  187,  188,  191
  2917. ,  192,  191,  192,  192,  193,  193,  194,  193,  194,  193
  2918. ,  194,  194,  195,  194,  195,  195,  196,  195,  196,  195
  2919. ,  196,  195,  196,  206,  207,  206,  207,  206,  207,  206
  2920. ,  207,  206,  207,  217,  218,  228,  229,  239,  240,  244
  2921. ,  245,  255,  256,  259,  260,  259,  260,  270,  271,  271
  2922. ,  272,  283,  284,  295,  296,  306,  307,  317,  318,  328
  2923. ,  329,  339,  340,  340,  341,  341,  342,  341,  342,  341
  2924. ,  342,  341,  342,  350,  351,  350,  351,  350,  351,  350
  2925. ,  351,  350,  351,  359,  360,  359,  360,  359,  360,  366
  2926. ,  367,  369,  370,  369,  370,  369,  370,  370,  371,  371
  2927. ,  372,  372,  373,  373,  374,  375,  376,  375,  376,  376
  2928. ,  377,  376,  377,  377,  378,  378,  379,  379,  380,  381
  2929. ,  382,  382,  383,  383,  384,  383,  384,  386,  387,  388
  2930. ,  389,  389,  390,  392,  393,  393,  394,  394,  395,  394
  2931. ,  395,  394,  395,  394,  395,  394,  395,  394,  395,  394
  2932. ,  395,  394,  395,  394,  395,  394,  395,  394,  395,  394
  2933. ,  395,  394,  395,  395,  396,  396,  397,  396,  397,  396
  2934. ,  397,  396,  397,  396,  397,  396,  397,  396,  397,  396
  2935. ,  397,  396,  397,  396,  397,  396,  397,  396,  397,  396
  2936. ,  397,  399,  400,  400,  401,  400,  401,  401,  402,  401
  2937. ,  402,  401,  402,  401,  402,  401,  402,  401,  402,  401
  2938. ,  402,  401,  402,  401,  402,  401,  402,  402,  403,  403
  2939. ,  404,  403,  404,  404,  405,  406,  407,  407,  408,  409
  2940. ,  410,  409,  410,  420,  421,  421,  422,  422,  423,  423
  2941. ,  424,  434,  435,  445,  446,  445,  446,  457,  458,  468
  2942. ,  469,  468,  469,  470,  471,  470,  471,  482,  483,  482
  2943. ,  483,  483,  484,  483,  484,  483,  484,  483,  484,  484
  2944. ,  485,  484,  485,  484,  485,  485,  486,  485,  486,  485
  2945. ,  486,  485,  486,  485,  486,  485,  486,  485,  486,  485
  2946. ,  486,  486,  487,  486,  487,  486,  487,  486,  487,  486
  2947. ,  487,  486,  487,  486,  487,  486,  487,  487,  488,  498
  2948. ,  499,  506,  507,  506,  507,  517,  518,  517,  518,  517
  2949. ,  518,  517,  518,  517,  518,  517,  518,  528,  529,  539
  2950. ,  540,  539,  540,  539,  540,  539,  540,  540,  541,  540
  2951. ,  541,  541,  542,  542,  543,  542,  543,  542,  543,  544
  2952. ,  545,  545,  546,  546,  547,  547,  548,  548,  549,  548
  2953. ,  549,  549,  550,  561,  562,  561,  562,  565,  566,  568
  2954. ,  569,  570,  571,  571,  572,  574,  575,  575,  576,  576
  2955. ,  577,  578,  579,  579,  580,  580,  581,  581,  582,  581
  2956. ,  582,  582,  583,  585,  586,  586,  587,  586,  587,  590
  2957. ,  591,  591,  592,  597,  598,  598,  599,  600,  601,  603
  2958. ,  604,  603,  604,  604,  605,  604,  605,  625,  626,  627
  2959. ,  628,  627,  628,  628,  629,  628,  629,  628,  629,  629
  2960. ,  630,  629,  630,  630,  631,  631,  632,  631,  632,  631
  2961. ,  632,  631,  632,  631,  632,  631,  632,  631,  632,  631
  2962. ,  632,  631,  632,  631,  632,  631,  632,  642,  643,  653
  2963. ,  654,  653,  654,  653,  654,  653,  654,  665,  666,  665
  2964. ,  666,  676,  677,  687,  688,  687,  688,  688,  689,  688
  2965. ,  689,  688,  689,  688,  689,  688,  689,  688,  689,  688
  2966. ,  689,  691,  692,  693,  694,  694,  695,  694,  695,  696
  2967. ,  697,  704,  705,  705,  706,  709,  710,  710,  711,  711
  2968. ,  712,  712,  713,  713,  714,  716,  717,  717,  718,  718
  2969. ,  719,  718,  719,  720,  721,  723,  724,  723,  724,  725
  2970. ,  726,  726,  727,  727,  728,  727,  728,  728,  729,  739
  2971. ,  740,  739,  740,  750,  751,  750,  751,  753,  754,  757
  2972. ,  758,  768,  769,  769,  770,  770,  771,  771,  772,  772
  2973. ,  773,  773,  774,  774,  775,  774,  775,  784,  785,  785
  2974. ,  786,  785,  786,  786,  787,  788,  789,  789,  790,  792
  2975. ,  793,  794,  795,  795,  796,  796,  797,  801,  802,  803
  2976. ,  804,  803,  804,  803,  804,  803,  804,  803,  804,  803
  2977. ,  804,  803,  804,  803,  804,  803,  804,  805,  806,  806
  2978. ,  807,  810,  811,  811,  812,  814,  815,  815,  816,  826
  2979. ,  827,  837,  838,  839,  840,  840,  841,  851,  852,  852
  2980. ,  853,  854,  855,  866,  867,  866,  867,  867,  868,  868
  2981. ,  869,  868,  869,  873,  874,  873,  874,  873,  874,  873
  2982. ,  874,  893,  894,  893,  894,  893,  894,  893,  894,  893
  2983. ,  894,  893,  894,  893,  894,  893,  894,  893,  894,  893
  2984. ,  894,  893,  894,  893,  894,  893,  894,  893,  894,  893
  2985. ,  894,  893,  894,  893,  894,  893,  894,  896,  897,  898
  2986. ,  899,  899,  900,  900,  901,  900,  901,  900,  901,  900
  2987. ,  901,  901,  902,  901,  902,  901,  902,  901,  902,  901
  2988. ,  902,  901,  902,  902,  903,  903,  904,  903,  904,  903
  2989. ,  904,  904,  905,  904,  905,  904,  905,  904,  905,  915
  2990. ,  916,  915,  916,  915,  916,  916,  917,  917,  918,  918
  2991. ,  919,  919,  920,  920,  921,  921,  922,  922,  923,  923
  2992. ,  924,  923,  924,  924,  925,  925,  926,  925,  926,  925
  2993. ,  926,  925,  926,  925,  926,  926,  927,  927,  928,  927
  2994. ,  928,  927,  928,  930,  931,  930,  931,  930,  931,  930
  2995. ,  931,  941,  942,  942,  943,  953,  954,  953,  954,  953
  2996. ,  954,  954,  955,  965,  966,  965,  966,  966,  967,  966
  2997. ,  967,  991,  992, 1016, 1017, 1016, 1017, 1016, 1017, 1016
  2998. , 1017, 1017, 1018, 1017, 1018, 1018, 1019, 1029, 1030, 1030
  2999. , 1031, 1042, 1043, 1042, 1043, 1042, 1043, 1043, 1044, 1045
  3000. , 1046, 1045, 1046, 1049, 1050, 1049, 1050, 1050, 1051, 1050
  3001. , 1051, 1051, 1052, 1052, 1053, 1063, 1064, 1074, 1075, 1075
  3002. , 1076, 1076, 1077, 1077, 1078, 1078, 1079, 1080, 1081, 1080
  3003. , 1081, 1080, 1081, 1080, 1081, 1080, 1081, 1080, 1081, 1080
  3004. , 1081, 1080, 1081, 1080, 1081, 1080, 1081, 1080, 1081, 1080
  3005. , 1081, 1081, 1082, 1082, 1083, 1082, 1083, 1082, 1083, 1083
  3006. , 1084, 1083, 1084, 1094, 1095, 1095, 1096, 1106, 1107, 1107
  3007. , 1108, 1108, 1109, 1109, 1110, 1109, 1110, 1109, 1110, 1109
  3008. , 1110, 1112, 1113, 1123, 1124, 1123, 1124, 1123, 1124, 1123
  3009. , 1124, 1123, 1124, 1124, 1125, 1124, 1125, 1124, 1125, 1124
  3010. , 1125, 1127, 1128, 1128, 1129, 1129, 1130, 1130, 1131, 1141
  3011. , 1142, 1143, 1144, 1144, 1145, 1144, 1145, 1144, 1145, 1145
  3012. , 1146, 1145, 1146, 1145, 1146, 1147, 1148, 1147, 1148, 1148
  3013. , 1149, 1156, 1157, 1156, 1157, 1161, 1162, 1162, 1163, 1167
  3014. , 1168, 1167, 1168, 1178, 1179, 1179, 1180, 1205, 1206, 1205
  3015. , 1206, 1205, 1206, 1205, 1206, 1206, 1207, 1206, 1207, 1217
  3016. , 1218, 1218, 1219, 1218, 1219, 1219, 1220, 1219, 1220, 1219
  3017. , 1220, 1219, 1220, 1219, 1220, 1221, 1222, 1222, 1223, 1222
  3018. , 1223, 1222, 1223, 1222, 1223, 1222, 1223, 1223, 1224, 1223
  3019. , 1224, 1223, 1224, 1234, 1235, 1234, 1235, 1234, 1235, 1234
  3020. , 1235, 1234, 1235, 1235, 1236, 1235, 1236, 1236, 1237, 1238
  3021. , 1239, 1238, 1239, 1238, 1239, 1238, 1239, 1239, 1240, 1240
  3022. , 1241, 1242, 1243, 1253, 1254, 1254, 1255, 1254, 1255, 1255
  3023. , 1256, 1256, 1257, 1260, 1261, 1260, 1261, 1261, 1262, 1262
  3024. , 1263, 1262, 1263, 1263, 1264, 1264, 1265, 1265, 1266, 1267
  3025. , 1268, 1267, 1268, 1267, 1268, 1267, 1268, 1268, 1269, 1268
  3026. , 1269, 1268, 1269, 1269, 1270, 1270, 1271, 1271, 1272, 1271
  3027. , 1272, 1271, 1272, 1271, 1272, 1271, 1272, 1271, 1272, 1271
  3028. , 1272, 1271, 1272, 1273, 1274, 1274, 1275, 1278, 1279, 1278
  3029. , 1279, 1278, 1279, 1279, 1280, 1280, 1281, 1280, 1281, 1280
  3030. , 1281, 1282, 1283, 1286, 1287, 1287, 1288, 1289, 1290, 1300
  3031. , 1301, 1302, 1303, 1302, 1303, 1302, 1303, 1302, 1303, 1313
  3032. , 1314, 1315, 1316, 1315, 1316, 1315, 1316, 1315, 1316, 1316
  3033. , 1317, 1327, 1328, 1331, 1332, 1331, 1332, 1331, 1332, 1331
  3034. , 1332, 1331, 1332, 1331, 1332, 1331, 1332, 1331, 1332, 1333
  3035. , 1334, 1333, 1334, 1333, 1334, 1334, 1335, 1334, 1335, 1335
  3036. , 1336, 1336, 1337, 1336, 1337, 1336, 1337, 1337, 1338, 1338
  3037. , 1339, 1340, 1341, 1340, 1341, 1340, 1341, 1341, 1342, 1341
  3038. , 1342, 1343, 1344, 1343, 1344, 1343, 1344, 1347, 1348, 1347
  3039. , 1348, 1348, 1349, 1349, 1350, 1350, 1351, 1352, 1353, 1352
  3040. , 1353, 1352, 1353, 1353, 1354, 1364, 1365, 1364, 1365, 1364
  3041. , 1365, 1375, 1376, 1376, 1377, 1380, 1381, 1380, 1381, 1384
  3042. , 1385, 1384, 1385, 1384, 1385, 1386, 1387, 1387, 1388, 1388
  3043. , 1389, 1388, 1389, 1389, 1390, 1389, 1390, 1389, 1390, 1390
  3044. , 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1396, 1397, 1398
  3045. , 1399, 1398, 1399, 1398, 1399, 1398, 1399, 1398, 1399, 1398
  3046. , 1399, 1401, 1402, 1401, 1402, 1428, 1429, 1429, 1430, 1429
  3047. , 1430, 1429, 1430, 1429, 1430, 1431, 1432, 1431, 1432, 1431
  3048. , 1432, 1442, 1443, 1443, 1444, 1443, 1444, 1443, 1444, 1444
  3049. , 1445, 1468, 1469, 1468, 1469, 1468, 1469, 1470, 1471, 1470
  3050. , 1471, 1470, 1471, 1471, 1472, 1471, 1472, 1472, 1473, 1484
  3051. , 1485, 1485, 1486, 1486, 1487, 1486, 1487, 1487, 1488, 1487
  3052. , 1488, 1488, 1489, 1488, 1489, 1488, 1489, 1489, 1490, 1491
  3053. , 1492, 1503, 1504, 1503, 1504, 1511, 1512, 1511, 1512, 1512
  3054. , 1513, 1512, 1513, 1512, 1513, 1513, 1514, 1513, 1514, 1524
  3055. , 1525, 1525, 1526, 1526, 1527, 1527, 1528, 1538, 1539, 1539
  3056. , 1540, 1539, 1540, 1540, 1541, 1541, 1542, 1541, 1542, 1542
  3057. , 1543, 1543, 1544, 1543, 1544, 1543, 1544, 1544, 1545, 1544
  3058. , 1545, 1546, 1547, 1556, 1557, 1556, 1557, 1557, 1558, 1557
  3059. , 1558, 1568, 1569, 1571, 1572, 1572, 1573, 1574, 1575, 1575
  3060. , 1576, 1587, 1588, 1587, 1588, 1587, 1588, 1588, 1589, 1589
  3061. , 1590, 1590, 1591, 1593, 1594, 1593, 1594, 1593, 1594, 1598
  3062. , 1599, 1598, 1599, 1599, 1600, 1610, 1611, 1610, 1611, 1611
  3063. , 1612, 1612, 1613, 1612, 1613, 1614, 1615, 1614, 1615, 1615
  3064. , 1616, 1618, 1619, 1618, 1619, 1619, 1620, 1619, 1620, 1619
  3065. , 1620, 1620, 1621, 1620, 1621, 1620, 1621, 1621, 1622, 1621
  3066. , 1622, 1621, 1622, 1622, 1623, 1623, 1624, 1628, 1629, 1629
  3067. , 1630, 1629, 1630, 1629, 1630, 1630, 1631, 1631, 1632, 1631
  3068. , 1632, 1631, 1632, 1632, 1633, 1632, 1633, 1633, 1634, 1634
  3069. , 1635, 1634, 1635, 1636, 1637, 1636, 1637, 1637, 1638, 1637
  3070. , 1638, 1638, 1639, 1640, 1641, 1641, 1642, 1641, 1642, 1642
  3071. , 1643, 1643, 1644, 1645, 1646, 1645, 1646, 1646, 1647, 1646
  3072. , 1647, 1650, 1651, 1650, 1651, 1651, 1652, 1652, 1653, 1654
  3073. , 1655, 1654, 1655, 1655, 1656, 1656, 1657, 1656, 1657, 1656
  3074. , 1657, 1657, 1658, 1657, 1658, 1659, 1660, 1660, 1661, 1660
  3075. , 1661, 1660, 1661, 1660, 1661, 1661, 1662, 1662, 1663, 1662
  3076. , 1663, 1662, 1663, 1663, 1664, 1663, 1664, 1663, 1664, 1663
  3077. , 1664, 1664, 1665, 1664, 1665, 1665, 1666, 1665, 1666, 1667
  3078. , 1668, 1667, 1668, 1667, 1668, 1669, 1670, 1669, 1670, 1669
  3079. , 1670, 1669, 1670, 1670, 1671, 1671, 1672, 1672, 1673, 1672
  3080. , 1673, 1672, 1673, 1684, 1685, 1684, 1685, 1684, 1685, 1684
  3081. , 1685, 1684, 1685, 1684, 1685, 1684, 1685, 1685, 1686, 1687
  3082. , 1688, 1688, 1689, 1688, 1689, 1690, 1691, 1690, 1691, 1690
  3083. , 1691, 1691, 1692, 1693, 1694, 1694, 1695, 1694, 1695, 1694
  3084. , 1695, 1695, 1696, 1696, 1697, 1696, 1697, 1696)  ;
  3085.     
  3086.     Action_Token_Map : constant Action_Token_Array :=
  3087.          (   43,   65,   26,   27,   63,   42,   43,   45,   54,   71
  3088. ,   80,   45,   26,   27,   42,   54,   63,   36,   66,   67
  3089. ,   68,   76,    3,   35,   37,   65,   71,   74,   65,   67
  3090. ,   11,   65,   65,   71,   80,   31,   80,   80,   42,   45
  3091. ,   26,   65,   65,    7,   34,   36,   39,   70,   71,   72
  3092. ,   73,   74,   75,   76,   77,   78,   81,   82,   87,   90
  3093. ,   91,   30,   47,   49,   64,   69,   83,   84,   85,   86
  3094. ,   89,    3,   37,   68,   71,   76,   35,   36,   40,   65
  3095. ,   66,   67,   74,   72,   30,   36,   81,   82,   86,   89
  3096. ,   91,   83,   90,   47,   70,   71,   77,   75,   39,    7
  3097. ,   64,    7,   39,   64,    7,   39,   69,   74,   76,   34
  3098. ,   49,   73,   78,   87,   35,   37,   65,   66,   67,   68
  3099. ,   71,    3,   35,   36,   37,   65,   66,   67,   68,   71
  3100. ,   31,   51,   71,   59,   63,   65,   65,   31,   71,   65
  3101. ,   35,   43,   27,   25,   26,   42,   45,   55,   56,   59
  3102. ,   60,   65,   10,   65,   67,   21,   10,   65,   65,   67
  3103. ,   65,   43,   60,   71,   77,   70,   84,   85,   85,   72
  3104. ,   75,   72,   75,   81,   82,   83,   84,   85,   86,    7
  3105. ,   30,   36,   39,   64,   89,   90,   91,   47,   70,   71
  3106. ,   77,   72,   75,   80,   30,   35,   36,   66,   68,    3
  3107. ,   37,   65,   67,   71,   74,   76,    3,   37,   67,   71
  3108. ,   76,   35,   36,   65,   66,   68,   74,   35,   36,   37
  3109. ,   66,   67,   68,    3,   65,   71,   74,   76,    3,   35
  3110. ,   36,   37,   65,   66,   67,   68,   71,   74,   76,   16
  3111. ,   17,   47,   65,   71,   35,   37,   65,   66,   67,   68
  3112. ,   76,    3,   36,   71,   74,   65,   68,    6,   67,    3
  3113. ,   35,   36,   37,   65,   67,   68,   76,   66,   71,   74
  3114. ,   75,   35,   36,   67,    3,   37,   58,   65,   66,   68
  3115. ,   71,   74,   76,   36,   65,   66,    3,   19,   35,   37
  3116. ,   67,   68,   71,   74,   76,    3,   35,   36,   37,   66
  3117. ,   65,   67,   68,   71,   74,   76,    3,   35,   36,   37
  3118. ,   65,   66,   68,   71,   74,   67,   76,    3,   36,   65
  3119. ,   74,   35,   37,   66,   67,   68,   71,   76,    3,   35
  3120. ,   36,   37,   65,   67,   68,   71,   74,   66,   76,   58
  3121. ,   19,    3,   37,   65,   67,   68,   35,   36,   66,   71
  3122. ,   35,   36,   37,   66,   68,   71,    3,   65,   67,   35
  3123. ,   37,   65,   66,   68,   67,   71,   70,   71,   77,   35
  3124. ,   65,   65,   65,   45,   26,   79,   31,   35,   65,   72
  3125. ,   77,   65,   65,   65,   67,   68,   65,   11,   65,   65
  3126. ,   11,   59,   65,   65,   80,   79,   31,   50,   80,   80
  3127. ,   80,   80,   65,   80,   51,   71,   31,   75,   80,   35
  3128. ,   37,   65,   66,   67,   76,    3,   36,   68,   71,   74
  3129. ,   71,   65,   65,    3,   66,   35,   36,   37,   65,   67
  3130. ,   68,   71,   74,   76,   36,   66,    3,   35,   37,   65
  3131. ,   67,   68,   71,   74,   76,   35,   36,   37,   65,   66
  3132. ,   67,   71,    3,   40,   68,   74,   76,   35,   65,   66
  3133. ,   67,   68,   71,    3,   36,   37,   74,   76,   84,   85
  3134. ,   36,   37,   65,    3,   35,   40,   66,   67,   68,   71
  3135. ,   74,   76,   75,   86,   86,   72,   65,   36,   65,   66
  3136. ,   67,   68,    3,   35,   37,   71,   74,   76,   36,   81
  3137. ,   83,   89,   90,   91,   30,   82,   36,   37,   65,   66
  3138. ,   67,   68,   71,    3,   35,   74,   76,    3,   74,   76
  3139. ,   35,   36,   37,   65,   66,   67,   68,   71,    3,   65
  3140. ,   66,   74,   76,   35,   36,   37,   67,   68,   71,   65
  3141. ,   77,   79,   31,   71,   31,   75,   30,   65,   65,   21
  3142. ,   27,   42,   44,   45,   55,   59,   60,   65,   25,   26
  3143. ,   56,   45,   56,   26,   42,   71,   77,   80,   71,   80
  3144. ,   60,   70,   71,   77,   60,   65,   31,   50,   31,   65
  3145. ,   65,   31,   31,   71,   80,   77,    8,   13,   65,   23
  3146. ,   43,   26,   27,   42,   60,   45,   56,   43,   35,   54
  3147. ,   65,   67,   68,   65,    2,    4,   10,   14,   15,   28
  3148. ,   29,   43,   62,   65,   67,   68,   92,   12,   24,   25
  3149. ,   33,   37,   46,   51,   53,   21,   23,   80,   65,   43
  3150. ,   72,    3,   35,   36,   37,   66,   67,   76,   65,   68
  3151. ,   71,   74,   35,   37,   65,   66,   68,   71,   74,   76
  3152. ,    3,   36,   67,   35,   36,   37,   66,   68,   71,   76
  3153. ,    3,   40,   65,   67,   74,   36,   65,   66,   68,   74
  3154. ,    3,   35,   37,   67,   71,   76,   35,   36,   65,   66
  3155. ,   67,   68,   71,   76,    3,   37,   74,   75,   71,   77
  3156. ,   80,   30,   41,   65,   72,   80,   16,   32,   47,    5
  3157. ,    8,   17,   44,   71,   65,   67,   94,   65,   68,   80
  3158. ,   65,   41,   88,   71,   80,   77,   65,   65,   65,   59
  3159. ,   31,   50,   80,   80,   72,   11,   11,   31,    3,   35
  3160. ,   36,   37,   65,   66,   67,   68,   71,   74,   76,   65
  3161. ,   66,   67,   71,   74,   35,   36,   37,   68,   76,    3
  3162. ,    9,   71,   48,   16,   17,   47,   65,    3,   36,   37
  3163. ,   66,   35,   65,   67,   68,   71,   74,   76,   31,   65
  3164. ,   65,   80,   31,   31,    5,   16,   32,   35,   47,   48
  3165. ,   71,    8,   17,   44,   65,   80,   75,   80,   71,    8
  3166. ,   88,   65,   50,   80,   88,   88,   16,   17,   47,   50
  3167. ,   71,   11,   65,   31,   80,   80,   70,   71,   77,   80
  3168. ,   80,   68,   65,   67,   65,    3,   65,   66,   67,   68
  3169. ,   71,   74,   76,   35,   36,   37,   36,   66,   68,   74
  3170. ,    3,   35,   37,   65,   67,   71,   76,   65,   61,   65
  3171. ,   65,   66,   67,   68,   71,    3,   35,   36,   37,   74
  3172. ,   76,   80,   65,   80,    3,   35,   37,   66,   68,   74
  3173. ,   76,   80,   36,   65,   67,   71,   79,   65,   70,   71
  3174. ,   88,   77,   80,    2,   12,   25,   29,   33,   37,   53
  3175. ,   68,   92,    4,   10,   14,   15,   24,   28,   46,   51
  3176. ,   62,   65,   67,   25,   33,   62,   14,   10,   80,   80
  3177. ,   80,   75,   86,   75,    3,   35,   36,   66,   67,   68
  3178. ,   71,   74,   37,   65,   76,   88,   51,   65,   65,   71
  3179. ,   94,   94,   44,   94,   94,   80,   79,   70,   77,   71
  3180. ,   35,    3,   36,   37,   65,   66,   67,   68,   71,   74
  3181. ,   76,   80,   35,   36,   67,   68,   71,   76,    3,   37
  3182. ,   65,   66,   74,   35,   25,   26,   45,   65,   21,   27
  3183. ,   42,   55,   56,   59,   60,   65,    7,   30,   34,   49
  3184. ,   64,   69,   70,   71,   76,   82,   85,   87,   89,   90
  3185. ,   91,   36,   39,   72,   73,   74,   75,   77,   78,   81
  3186. ,   83,    7,   30,   34,   36,   39,   64,   70,   71,   73
  3187. ,   75,   76,   77,   83,   85,   89,   49,   69,   72,   74
  3188. ,   78,   81,   82,   87,   90,   91,   85,   72,   37,   65
  3189. ,   66,   68,   71,    3,   35,   36,   67,   74,   76,    9
  3190. ,    3,   35,   36,   66,   76,   37,   40,   65,   67,   68
  3191. ,   71,   74,   54,   77,   80,   16,   17,   47,   71,   54
  3192. ,   43,   22,    3,   35,   68,   71,   36,   37,   65,   66
  3193. ,   67,   74,   76,   66,   68,   71,    3,   35,   36,   37
  3194. ,   65,   67,   74,   76,   44,   65,   80,   37,   65,   68
  3195. ,   47,   47,   65,   36,   37,   67,   68,   74,   76,    3
  3196. ,   35,   65,   66,   71,   38,    3,   37,   65,   68,   76
  3197. ,   35,   36,   66,   67,   71,   74,   88,   88,   65,   65
  3198. ,   68,   67,    3,   35,   37,   66,   68,   71,   74,   36
  3199. ,   65,   67,   76,   43,   70,   71,   77,   71,   31,   80
  3200. ,   35,   36,   66,   67,   71,   74,   76,    3,   37,   65
  3201. ,   68,   61,   77,   77,   58,   80,   77,   80,   57,   61
  3202. ,    4,   15,   43,   65,   67,   68,   25,   62,   10,   14
  3203. ,   33,   93,   16,   17,   47,   65,   71,   35,   37,   65
  3204. ,   66,   74,    3,   36,   67,   68,   71,   76,   43,    2
  3205. ,    4,   10,   12,   14,   15,   21,   23,   28,   29,   33
  3206. ,   37,   39,   46,   51,   53,   61,   62,   65,   67,   92
  3207. ,   19,   20,   24,   25,   68,   65,   37,   65,   67,   68
  3208. ,   71,   74,   76,    3,   35,   36,   66,   33,   65,   43
  3209. ,   61,   21,   65,    3,   35,   37,   36,   65,   66,   67
  3210. ,   68,   71,   74,   76,   72,   65,   80,   72,   65,   31
  3211. ,   72,   75,   35,   36,   74,    3,   37,   65,   66,   67
  3212. ,   68,   71,   76,   80,   34,   43,   65,   67,   68,   21
  3213. ,   75,   80,   80,   22,   65,   21,   25,   80,   80,   21
  3214. ,   43,   72,   80,   77,   47,   70,   71,   77,   65,   80
  3215. ,   80,   77,   77,   80,   70,   71,   72,   75,   80,   65
  3216. ,   66,   67,   76,    3,   35,   36,   37,   68,   71,   74
  3217. ,   80,   18,    3,   71,   35,   36,   37,   65,   66,   67
  3218. ,   68,   74,   76,   19,   20,   80,   35,   36,   37,   65
  3219. ,   67,   71,   74,   76,    3,   66,   68,   70,   71,   77
  3220. ,   80,   19,   39,   80,   30,   21,   80,   65,   40,   65
  3221. ,   61,   72,   75,   70,   71,   77,   47,   88,   31,   65
  3222. ,   75,   72,   80,    3,   36,   37,   67,   68,   76,   35
  3223. ,   65,   66,   71,   74,    3,   35,   36,   37,   65,   66
  3224. ,   67,   74,   76,   68,   71,   48,    9,   71,   77,   70
  3225. ,   21,   65,   67,   68,   21,   25,   71,   65,   43,   48
  3226. ,   12,   65,   72,   75,   31,   80,   72,   75,   68,   65
  3227. ,   67,    7,   34,   36,   39,   49,   64,   69,   71,   72
  3228. ,   73,   74,   75,   76,   77,   78,   79,   83,   86,   87
  3229. ,   89,   30,   47,   70,   81,   82,   90,   91,   72,   43
  3230. ,   61,   65,   67,   68,   71,   74,   76,    3,   35,   36
  3231. ,   37,   66,   21,   85,    2,   10,   12,   14,   25,   28
  3232. ,   51,   65,    4,   15,   19,   21,   24,   29,   33,   37
  3233. ,   39,   43,   46,   53,   62,   67,   68,   92,   39,   19
  3234. ,   21,   43,   35,   52,   65,   66,   67,   71,    3,   36
  3235. ,   37,   68,   74,   76,   33,   21,   80,   77,   80,   72
  3236. ,   75,    3,   35,   37,   76,   36,   65,   66,   67,   68
  3237. ,   71,   74,   94,   44,   47,   71,    5,    8,   16,   17
  3238. ,   32,   80,   80,   35,   36,   66,   68,   71,   76,    3
  3239. ,   37,   65,   67,   74,   43,   48,   65,   35,   36,   37
  3240. ,   65,   66,   67,   71,   74,    3,   68,   76,   80,   43
  3241. ,   43,   65,   79,   80,   65,   68,   16,   17,   32,    5
  3242. ,    8,   35,   44,   47,   48,   71,   80,   68,   71,    3
  3243. ,   35,   36,   37,   65,   66,   67,   74,   76,   70,   71
  3244. ,   77,   71,   80,   72,   21,    3,   37,   66,   71,   35
  3245. ,   36,   40,   65,   67,   68,   74,   76,   58,   29,   43
  3246. ,    4,   15,   57,   57,    4,   15,   43,   61,   53,    3
  3247. ,   36,   37,   66,   67,   68,   71,   35,   65,   74,   76
  3248. ,   65,   33,   84,   85,   38,   65,   67,   68,   80,   47
  3249. ,   72,   31,   65,   43,   61,   12,   21,   65,   43,   44
  3250. ,   80,   65,   65,   85,   21,   61,   80,   21,   15,   43
  3251. ,   80,   80,   65,   65,   40,   65,   47,   70,   71,   77
  3252. ,   80,   71,   80,   72,   88,   80,   80,   84,   85,   12
  3253. ,   53,   21,   80,   94,   65,   61,   43,   80,   72,   80
  3254. ,   80,   53,    3,   36,   37,   65,   67,   68,   71,   74
  3255. ,   76,   35,   40,   66,   80,   72,   80,   85,   61,   21
  3256. ,   37,   84,   85,   12,   37,   80)  ;
  3257.         --| Action_Token_Map is an array that
  3258.         --| maps from each state (using action index map) to a set of
  3259.         --| action tokens. An action token is a terminal symbol
  3260.         --| (except EOF_Token) for which in the given state an
  3261.         --| explicit (non-default) shift or reduce action
  3262.         --| is defined.
  3263.         --| Used to cut reduce the
  3264.         --| number of primary recovery candidates.
  3265.     
  3266.     ------------------------------------------------------------------
  3267.     -- Shift_State_Map
  3268.     ------------------------------------------------------------------
  3269.     
  3270.     type Shift_State_Index_Array is array(
  3271.         PositiveParserInteger range <>) of GC.ParserInteger;
  3272.        --| For indexing the All Action Token Array.
  3273.        --| Maps a given state into the lower and upper bounds of a slice
  3274.        --| of the All Action Index Array.
  3275.  
  3276.     Shift_State_MapIndex : constant Shift_State_Index_Array :=
  3277.          (    1,    1,    2,    2,    3,    3,    4,    4,    5,    5
  3278. ,    6,    6,    7,    9,   10,   11,   12,   14,   15,   15
  3279. ,   16,   19,   20,   23,   24,   24,   25,   25,   26,   26
  3280. ,   27,   29,   30,   32,   33,   33,   34,   37,   38,   38
  3281. ,   39,   57,   58,   58,   59,   60,   61,   61,   62,   63
  3282. ,   64,   65,   66,   66,   67,   67,   68,   69,   70,   73
  3283. ,   74,   94,   95,   97,   98,  101,  102,  103,  104,  108
  3284. ,  109,  110,  111,  113,  114,  115,  116,  120,  121,  124
  3285. ,  125,  126,  127,  132,  133,  134,  135,  141,  142,  142
  3286. ,  143,  143,  144,  148,  149,  153,  154,  154,  155,  158
  3287. ,  159,  161,  162,  162,  163,  166,  167,  170,  171,  171
  3288. ,  172,  174,  175,  175,  176,  179,  180,  182,  183,  185
  3289. ,  186,  191,  192,  192,  193,  194,  195,  196,  197,  230
  3290. ,  231,  231,  232,  236,  237,  239,  240,  240,  241,  244
  3291. ,  245,  267,  268,  292,  293,  293,  294,  295,  296,  308
  3292. ,  309,  310,  311,  312,  313,  313,  314,  319,  320,  395
  3293. ,  396,  396,  397,  397,  398,  398,  399,  401,  402,  411
  3294. ,  412,  415,  416,  416,  417,  419,  420,  420,  421,  421
  3295. ,  422,  422,  423,  423,  424,  424,  425,  430,  431,  430
  3296. ,  431,  430,  431,  430,  431,  431,  432,  433,  434,  438
  3297. ,  439,  442,  443,  443,  444,  444,  445,  445,  446,  446
  3298. ,  447,  447,  448,  450,  451,  453,  454,  455,  456,  458
  3299. ,  459,  459,  460,  462,  463,  463,  464,  464,  465,  469
  3300. ,  470,  477,  478,  485,  486,  488,  489,  504,  505,  505
  3301. ,  506,  506,  507,  507,  508,  508,  509,  511,  512,  513
  3302. ,  514,  516,  517,  518,  519,  519,  520,  520,  521,  521
  3303. ,  522,  522,  523,  524,  525,  525,  526,  527,  528,  528
  3304. ,  529,  529,  530,  537,  538,  538,  539,  539,  540,  546
  3305. ,  547,  548,  549,  550,  551,  568,  569,  570,  571,  571
  3306. ,  572,  572,  573,  573,  574,  575,  576,  576,  577,  577
  3307. ,  578,  579,  580,  580,  581,  581,  582,  596,  597,  601
  3308. ,  602,  602,  603,  604,  605,  607,  608,  622,  623,  623
  3309. ,  624,  624,  625,  625,  626,  626,  627,  627,  628,  629
  3310. ,  630,  630,  631,  634,  635,  637,  638,  640,  641,  642
  3311. ,  643,  644,  645,  645,  646,  646,  647,  648,  649,  651
  3312. ,  652,  652,  653,  654,  655,  655,  656,  657,  658,  659
  3313. ,  660,  660,  661,  661,  662,  662,  663,  664,  665,  665
  3314. ,  666,  666,  667,  667,  668,  672,  673,  673,  674,  677
  3315. ,  678,  681,  682,  684,  685,  687,  688,  688,  689,  691
  3316. ,  692,  693,  694,  704,  705,  705,  706,  706,  707,  707
  3317. ,  708,  708,  709,  709,  710,  710,  711,  711,  712,  712
  3318. ,  713,  713,  714,  716,  717,  719,  720,  720,  721,  722
  3319. ,  723,  723,  724,  726,  727,  727,  728,  728,  729,  729
  3320. ,  730,  730,  731,  731,  732,  732,  733,  733,  734,  747
  3321. ,  748,  755,  756,  757,  758,  758,  759,  770,  771,  772
  3322. ,  773,  774,  775,  775,  776,  776,  777,  777,  778,  778
  3323. ,  779,  779,  780,  780,  781,  782,  783,  783,  784,  784
  3324. ,  785,  785,  786,  787,  788,  788,  789,  789,  790,  790
  3325. ,  791,  791,  792,  793,  794,  794,  795,  796,  797,  797
  3326. ,  798,  798,  799,  800,  801,  806,  807,  808,  809,  810
  3327. ,  811,  811,  812,  812,  813,  824,  825,  825,  826,  827
  3328. ,  828,  831,  832,  832,  833,  833,  834,  834,  835,  835
  3329. ,  836,  836,  837,  837,  838,  844,  845,  845,  846,  852
  3330. ,  853,  858,  859,  860,  861,  861,  862,  863,  864,  864
  3331. ,  865,  865,  866,  866,  867,  868,  869,  871,  872,  872
  3332. ,  873,  873,  874,  874,  875,  875,  876,  877,  878,  879
  3333. ,  880,  881,  882,  882,  883,  883,  884,  884,  885,  885
  3334. ,  886,  886,  887,  887,  888,  888,  889,  890,  891,  891
  3335. ,  892,  893,  894,  894,  895,  896,  897,  897,  898,  900
  3336. ,  901,  901,  902,  902,  903,  903,  904,  905,  906,  906
  3337. ,  907,  907,  908,  908,  909,  909,  910,  910,  911,  911
  3338. ,  912,  913,  914,  914,  915,  916,  917,  917,  918,  918
  3339. ,  919,  919,  920,  920,  921,  922,  923,  923,  924,  927
  3340. ,  928,  930,  931,  931,  932,  932,  933,  934,  935,  935
  3341. ,  936,  936,  937,  937,  938,  938,  939,  939,  940,  941
  3342. ,  942,  942,  943,  943,  944,  944,  945,  946,  947,  947
  3343. ,  948,  948,  949,  949)  ;
  3344.     
  3345.     Shift_State_Map : constant Shift_State_Array :=
  3346.          (    1,  418,   35,  419,  481,  257,  136,  139,  142,  399
  3347. ,  482,  519,  640,  800,  214,   77,  300,  303,  509,  420
  3348. ,  810,  922,  947,  400,  607,  421,  249,  483,  533,  250
  3349. ,  484,  534,  761,  268,  275,  765,  833,  766,  220,  369
  3350. ,  462,  634,  715,  732,  740,  745,  781,  802,  803,  830
  3351. ,  837,  841,  869,  899,  903,  924,  943,  649,  401,  463
  3352. ,  422,  174,  603,   14,   94,   15,  423,  424,  874,  117
  3353. ,  243,  366,  780,   83,  159,  168,  290,  314,  324,  361
  3354. ,  363,  389,  393,  394,  506,  510,  524,  529,  530,  682
  3355. ,  726,  793,  817,  891,  485,  535,  863,  604,  708,  840
  3356. ,  881,  148,  731,   36,  171,  279,  291,  536,   37,  118
  3357. ,   38,  425,  657,  672,  884,  137,  140,  143,  776,  834
  3358. ,  106,  785,  870,  936,  477,  500,   16,   95,  175,  370
  3359. ,  376,  405,    2,  172,  371,  486,  537,  625,  654,  864
  3360. ,  893,   17,  426,  129,  251,  487,  791,  911,  520,  538
  3361. ,  799,  809,  852,  149,  315,  388,  562,  566,  160,  427
  3362. ,  619,  838,  428,  878,  923,  934,   18,  415,  645,  647
  3363. ,  176,  177,  372,  377,  690,  265,  274,  687,  873,  162
  3364. ,  178,  304,  179,  384,  386,  580,  685,  691,  711,  826
  3365. ,  927,  605,   33,  163,  138,  141,    9,   39,   73,   78
  3366. ,   80,   98,  101,  107,  164,  167,  217,  221,  252,  258
  3367. ,  284,  297,  305,  331,  332,  350,  387,  391,  429,  465
  3368. ,  499,  511,  577,  594,  635,  660,  705,  739,  758,  857
  3369. ,   40,   41,   74,  218,  259,  512,   42,  260,  661,  144
  3370. ,  130,  228,  385,  595,   12,   43,   82,  131,  161,  169
  3371. ,  227,  362,  380,  382,  395,  475,  488,  503,  521,  539
  3372. ,  557,  567,  622,  680,  804,  867,  913,  116,  233,  238
  3373. ,  294,  348,  466,  479,  508,  638,  720,  722,  727,  748
  3374. ,  755,  789,  795,  815,  820,  823,  845,  868,  889,  914
  3375. ,  930,  940,  150,   44,  145,  134,  234,  239,  264,  325
  3376. ,  344,  365,  555,  728,  756,  816,  821,  846,   45,  146
  3377. ,  132,  229,  151,  288,  310,  357,  593,  629,  858,   13
  3378. ,   84,   90,   93,  242,  309,  316,  318,  321,  323,  326
  3379. ,  381,  383,  396,  464,  476,  480,  498,  504,  528,  554
  3380. ,  556,  563,  573,  574,  575,  586,  587,  589,  596,  610
  3381. ,  611,  612,  628,  632,  646,  656,  683,  688,  689,  723
  3382. ,  730,  736,  737,  743,  744,  752,  753,  754,  757,  762
  3383. ,  769,  778,  783,  796,  818,  842,  844,  849,  850,  856
  3384. ,  861,  865,  887,  894,  902,  905,  906,  912,  917,  919
  3385. ,  925,  932,  933,  939,  949,  119,  120,  121,  230,  339
  3386. ,  882,  231,  232,  340,  637,  832,  883,  897,  921,  941
  3387. ,  946,  122,  235,  346,  347,  153,  501,  559,  597,  123
  3388. ,  124,  125,  430,  701,  496,  623,  624,  626,  627,  847
  3389. ,    3,   10,  296,   46,  256,  328,  518,  678,  173,  431
  3390. ,  712,  928,  180,  181,  182,  183,  184,   19,  185,  406
  3391. ,   20,  186,  407,  187,  408,   21,  188,  409,  189,   22
  3392. ,  190,  410,  191,  192,  165,  193,  282,  494,  811,  402
  3393. ,  526,  560,  621,  655,  751,  892,  910,  502,  564,  565
  3394. ,  618,  674,  675,  792,  916,  403,  489,  561,   47,  108
  3395. ,  333,  334,  335,  341,  470,  513,  578,  583,  590,  631
  3396. ,  644,  673,  703,  759,  287,  194,  195,  196,  285,  302
  3397. ,  307,  397,  819,  495,  553,  794,  630,  667,  540,  541
  3398. ,  542,  543,  490,  544,  545,  491,  546,  547,  390,  102
  3399. ,  280,  367,  404,  478,  527,  717,  721,  568,  103,  133
  3400. ,  236,  548,  569,  664,  749,  888,  549,  570,  550,  571
  3401. ,   48,  109,  244,  245,  247,  248,  266,  338,  468,  473
  3402. ,  474,  523,  579,  639,  652,  653,  798,  851,  662,  862
  3403. ,  747,  663,  551,  665,  666,  552,  492,  718,  885,  790
  3404. ,  558,   49,  110,  156,  298,  416,  432,  497,  576,  669
  3405. ,  677,  692,  719,  733,  822,  886,  670,  839,  854,  866
  3406. ,  879,  750,  246,  671,  658,  945,  948,   85,   99,  311
  3407. ,  313,  327,  531,  572,  641,  659,  742,  801,  807,  808
  3408. ,  859,  860,  746,  812,  813,  814,  915,  929,  944,  938
  3409. ,  111,  469,  871,  937,  237,  898,  942,   86,  292,  507
  3410. ,   87,   91,  197,  411,  312,  198,  199,  741,  200,  226
  3411. ,  412,  413,  201,  378,  202,   23,  203,   24,  204,  205
  3412. ,   50,   51,   52,  299,  261,  253,  112,   53,  254,  329
  3413. ,  522,  702,  113,  240,  345,  615,  616,  114,  336,  342
  3414. ,  472,  241,  467,  471,  115,  337,  343,   54,   55,  262
  3415. ,  351,  135,  349,   56,  267,  269,  270,  271,  272,  273
  3416. ,  352,  353,  354,  355,   57,   58,   59,   60,   61,  126
  3417. ,  127,   62,   63,   64,  158,  276,   65,  157,  278,  154
  3418. ,   66,  277,   67,   68,  255,  330,   69,   70,  128,  147
  3419. ,   71,  152,  155,  104,  170,  281,  295,  308,  356,  368
  3420. ,  525,  581,  582,  588,  668,  676,  786,  319,  591,  598
  3421. ,  771,  779,  831,  835,  877,  433,  704,  599,  320,  706
  3422. ,  768,  772,  782,  825,  828,  876,  901,  909,  920,  931
  3423. ,  434,  600,  435,  601,  436,  437,  438,  439,  440,  441
  3424. ,  442,  693,  443,  444,  445,  446,  694,  447,  448,  449
  3425. ,  450,  451,  695,  452,  453,  602,  584,  686,  767,  777
  3426. ,  585,  684,  707,  764,  770,  829,  613,  763,  827,  900
  3427. ,  872,  454,  222,  322,  417,  505,  709,  725,  784,  806
  3428. ,  853,  880,  896,  907,  606,  215,  608,   88,   92,  317
  3429. ,  710,  216,  614,  455,  609,  456,  457,   25,   96,  206
  3430. ,  286,  373,  379,  414,   81,  283,  293,  620,  760,  855
  3431. ,  895,  926,  360,  375,  824,  890,  918,  935,   75,  223
  3432. ,  358,  289,  359,   26,   89,  219,   27,   97,   79,  224
  3433. ,  301,  374,   28,  398,  207,  306,  392,  532,  648,  650
  3434. ,  738,  208,  805,  651,  681,  458,  459,  460,  592,  836
  3435. ,  700,  696,  875,  697,  698,  904,  699,  773,  774,  775
  3436. ,  679,    4,    5,    6,   11,    7,   29,   30,    8,  225
  3437. ,   34,  787,  908,  843,  713,  788,   31,   32,   76,  166
  3438. ,  493,  848,  364,  514,  617,  633,  797,  636,  716,  724
  3439. ,  515,  516,  517,  729,  209,  210,  211,  212,  213,  642
  3440. ,  735,  643,  734,  461,   72,  263,  105,  714,  100)  ;
  3441.         --| Shift_State_ is an array that
  3442.         --| maps from non-terminals (using shift index map) to sets
  3443.         --| of states in which
  3444.         --| a shift to the non-terminal is defined.
  3445.         --| Used to determine the number of trials in primary
  3446.         --| error recovery.
  3447.  
  3448.     ------------------------------------------------------------------
  3449.     -- Subprogram Bodies Global to Package ErrorParseTables
  3450.     ------------------------------------------------------------------
  3451.  
  3452.     function Get_Action_Token_Map ( --| return the array of action tokens
  3453.                     --| for the state passed in.
  3454.         In_Index : in StateRange
  3455.                     --| the state to return action tokens
  3456.                     --| for.
  3457.         )
  3458.         return Action_Token_Record
  3459.         is
  3460.         --| Returns
  3461.         --| This subprogram returns the action token record for the
  3462.         --| state passed in.
  3463.         Result : Action_Token_Record ;
  3464.         LowerBound, UpperBound : GC.ParserInteger ;
  3465.         --| Lower and upper bounds of the slice of Action Token Map
  3466.     begin
  3467.         LowerBound := Action_Token_MapIndex ( In_Index*2 - 1 ) ;
  3468.         UpperBound := Action_Token_MapIndex ( In_Index*2 ) ;
  3469.  
  3470.         Result.set_size := UpperBound - LowerBound + 1;
  3471.         Result.set := (others => DefaultValue) ;
  3472.         Result.set(Result.set'first .. Result.set_size) :=
  3473.         Action_Token_Map(LowerBound..UpperBound) ;
  3474.       
  3475.         return Result ;
  3476.     end Get_Action_Token_Map ;
  3477.  
  3478.     ------------------------------------------------------------------
  3479.  
  3480.     function Get_Shift_State_Map (  --| return the array of shift states
  3481.                     --| for the grammar symbol passed in.
  3482.         In_Index : in GrammarSymbolRange
  3483.                     --| the grammar symbol to return shifts
  3484.                     --| for.
  3485.         )
  3486.         --| Raises: This subprogram raises no exceptions.
  3487.         return Shift_State_Record
  3488.         --| Returns
  3489.         --| This subprogram returns the array of shift states for the
  3490.         --| grammar symbol passed in.
  3491.         is
  3492.         
  3493.         Result : Shift_State_Record ;
  3494.         LowerBound, UpperBound : GC.ParserInteger ;
  3495.           --| Lower and upper bounds of the slice of Shift State Map
  3496.     begin
  3497.         LowerBound := Shift_State_MapIndex ( In_Index*2 - 1 ) ;
  3498.         UpperBound := Shift_State_MapIndex ( In_Index*2 ) ;
  3499.     
  3500.         Result.set_size := UpperBound - LowerBound + 1;
  3501.         Result.set := (others => DefaultValue) ;
  3502.         Result.set(Result.set'first .. Result.set_size) :=
  3503.             Shift_State_Map(LowerBound..UpperBound) ;
  3504.       
  3505.         return Result ;
  3506.     end Get_Shift_State_Map ;
  3507.  
  3508.     function Get_Grammar_Symbol (   --| return the string representation
  3509.                     --| of the grammar symbol
  3510.         In_Index : in GrammarSymbolRange
  3511.         )
  3512.         return string
  3513.         is
  3514.         LowerBound, UpperBound : GC.ParserInteger ;
  3515.       --| Lower and upper bounds of the slice of Shift State Map
  3516.     begin
  3517.         LowerBound := GrammarSymbolTableIndex ( In_Index*2 - 1 ) ;
  3518.         UpperBound := GrammarSymbolTableIndex ( In_Index*2 ) ;
  3519.  
  3520.         return GrammarSymbolTable(
  3521.             Integer(LowerBound) .. Integer(UpperBound)) ;
  3522.     end Get_Grammar_Symbol ;
  3523.  
  3524.     ------------------------------------------------------------------
  3525.  
  3526.     function Get_Follow_Map (       --| return the array of follow symbols
  3527.                     --| of the grammar symbol passed in
  3528.         In_Index : in FollowMapRange
  3529.         )
  3530.         -- |
  3531.         -- |Raises: This subprogram raises no exceptions.
  3532.         -- |
  3533.     
  3534.       return FollowSymbolRecord
  3535.       is
  3536.         Result : FollowSymbolRecord ;
  3537.         LowerBound, UpperBound : GC.ParserInteger ;
  3538.         Adjusted_Index : GC.ParserInteger :=
  3539.           (In_Index - FollowMapRange'first) + 1;
  3540.     begin
  3541.         LowerBound := FollowSymbolMapIndex ( Adjusted_Index*2 - 1 ) ;
  3542.         UpperBound := FollowSymbolMapIndex ( Adjusted_Index*2 ) ;
  3543.     
  3544.         Result.follow_symbol_count := UpperBound - LowerBound + 1;
  3545.         Result.follow_symbol := (others => DefaultValue) ;
  3546.         Result.follow_symbol(
  3547.           Result.follow_symbol'first ..
  3548.           Result.follow_symbol_count) :=
  3549.             FollowSymbolMap(LowerBound..UpperBound) ;
  3550.           
  3551.         return Result ;
  3552.     end Get_Follow_Map ;
  3553.  
  3554.     ------------------------------------------------------------------
  3555.  
  3556.     function GetAction (            -- see subprogram declaration
  3557.       InStateValue  : in StateRange;
  3558.       InSymbolValue : in GrammarSymbolRange
  3559.       )
  3560.       return ActionRange
  3561.       is
  3562.         
  3563.         Unique : GC.ParserInteger;
  3564.             --| unique value to hash for Index.
  3565.         Index  : GC.ParserInteger;
  3566.             --| index into Action Tables.
  3567.         Action : GC.ParserInteger;
  3568.             --| value from Action Tables.
  3569.         CollisionCount : Natural := 0 ; --| Number of collisions.
  3570.     begin -- GetAction function
  3571.     --| Algorithm
  3572.     --|-
  3573.     --| Definitions of key objects from package ParseTables:
  3574.     --|
  3575.     --| ActionCount: the number of actions in the action tables.
  3576.     --|
  3577.     --| ActionTableOne: table of action values for all combinations of
  3578.     --|     states and input actions.
  3579.     --|
  3580.     --| ActionTableTwo: hash values to check against to verify that action
  3581.     --|     value at same index in ActionTableOne is correct one.
  3582.     --|
  3583.     --| ActionTableSize: last index in ActionTableOne and ActionTableTwo
  3584.     --|     before the hash collision chains.
  3585.     --|
  3586.     --| DefaultMap: default action for each state.
  3587.     --|+
  3588.     --| The action to be returned is computed from parameters InStateValue
  3589.     --| and InSymbolValue. First, determine the unique single value:
  3590.     --|
  3591.     --|     Unique := (InStateValue * GrammarSymbolCountPlusOne) +
  3592.     --|                InSymbolValue;
  3593.     --|
  3594.     --| Unique is hashed by reducing modulo ActionTableSize and adding 1:
  3595.     --|
  3596.     --|     Index := (Unique mod ActionTableSize) + 1;
  3597.     --|
  3598.     --| This hash value, Index, is used to index ActionTableOne to
  3599.     --| obtain an Action:
  3600.     --|
  3601.     --|     Action := ActionTableOne(Index);
  3602.     --|
  3603.     --| Action is then used to determine the return value:
  3604.     --|
  3605.     --| Action = 0:
  3606.     --|     return DefaultMap(InStateValue);
  3607.     --|
  3608.     --| Action < ActionCount:
  3609.     --|     if (Unique = ActionTableTwo(Index)) then
  3610.     --|         return Action;
  3611.     --|     else
  3612.     --|         return DefaultMap(InStateValue);
  3613.     --|     end if;
  3614.     --|
  3615.     --| Action >= ActionCount:
  3616.     --|     --Search the hash collision chain
  3617.     --|     Index := Action - ActionCount;
  3618.     --|     while (Action /= 0) loop
  3619.     --|         Index := Index + 1;
  3620.     --|         Action := ActionTableTwo(Index);
  3621.     --|         if (Action = Unique) then
  3622.     --|             return ActionTableOne(Index);
  3623.     --|         end if;
  3624.     --|     end loop;
  3625.     --|     return DefaultMap(InStateValue);
  3626.  
  3627.     ------------------------------------------------------------------
  3628.  
  3629.   --| The actual code used folds this algorithm into a more efficient one:
  3630.         ParserDecisionCount := Natural'succ(ParserDecisionCount) ;
  3631.                                                                     
  3632.         Unique := (InStateValue * GrammarSymbolCountPlusOne) +          
  3633.                         InSymbolValue;                                  
  3634.         Index := (Unique mod ActionTableSize) + 1;                      
  3635.         Action := ActionTableOne(Index);                                
  3636.                                                                         
  3637.         if (Action >= ActionCount) then                                 
  3638.             Index := Action - ActionCount + 1;                          
  3639.             while ( (ActionTableTwo(Index) /= Unique) and then          
  3640.                     (ActionTableTwo(Index) /= 0) ) loop                 
  3641.                 Index := Index + 1;
  3642.             CollisionCount := Natural'succ(CollisionCount) ;
  3643.             end loop;                                                   
  3644.             Action := ActionTableOne(Index);                            
  3645.         end if;
  3646.         
  3647.         -- Collect statistics information.
  3648.         TotalCollisions := CollisionCount + TotalCollisions ;
  3649.         if CollisionCount > MaxCollisions then
  3650.             MaxCollisions := CollisionCount ;
  3651.         end if;
  3652.                                                                         
  3653.         if (ActionTableTwo(Index) /= Unique) then                       
  3654.             return DefaultMap(InStateValue);                            
  3655.         else                                                            
  3656.             return Action;                                              
  3657.         end if;                                                         
  3658.     
  3659.     end GetAction; -- function
  3660.  
  3661.     function Get_LeftHandSide(
  3662.       GrammarRule : LeftHandSideRange
  3663.       ) return GrammarSymbolRange is
  3664.     begin
  3665.         return LeftHandSide(GrammarRule) ;
  3666.     end Get_LeftHandSide ;
  3667.     
  3668.     function Get_RightHandSide(
  3669.       GrammarRule : RightHandSideRange
  3670.       ) return GC.ParserInteger is
  3671.     begin
  3672.         return RightHandSide(GrammarRule) ;
  3673.     end Get_RightHandSide ;
  3674.     
  3675. end ParseTables;
  3676.  
  3677. ----------------------------------------------------------------------
  3678. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  3679. --SCUTILS.SPC
  3680. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  3681. with Text_IO;
  3682. With Paginated_Output;
  3683. with Stack_Pkg;
  3684. with String_Pkg;
  3685. with ParserDeclarations;
  3686.  
  3687. package Standards_Checker_Utilities is
  3688.  
  3689. --| Overview:
  3690. --| This package provides the utilities which may be called direclty
  3691. --| from the parser.
  3692.  
  3693.     package SP renames String_Pkg;
  3694.  
  3695.     type ON_OFF is (ON, OFF);
  3696.  
  3697.     type Subprogram_Stack_Element_Type is
  3698.          record
  3699.              unit_name  : SP.string_type;
  3700.              stmt_count : natural := 0;
  3701.              visible    : ON_OFF := ON;
  3702.              pkg        : ON_OFF := OFF;
  3703.              bdy        : ON_OFF := OFF;
  3704.          end record;
  3705.  
  3706.     package ST is new Stack_Pkg (Subprogram_Stack_Element_Type);
  3707.  
  3708.     package TIO renames Text_IO;
  3709.  
  3710.     package PO renames Paginated_Output;
  3711.  
  3712.     package PD renames ParserDeclarations;
  3713.  
  3714.     type Violation_Type is        -- enumeration of standards violations
  3715.       ( -- 3.1
  3716.         Subprogram_Nesting_Violation,
  3717.         Statement_Limit_Violation,
  3718.         Nonscalar_Type_Violation,
  3719.         -- 3.2
  3720.         Goto_Violation,
  3721.         Exit_If_Violation,
  3722.         Boolean_Comparison_Violation,
  3723.         -- 3.3
  3724.         Parameter_Limit_Violation,
  3725.         -- 3.4
  3726.         Builtin_Type_Violation,
  3727.         Pragma_Violation,
  3728.         Rep_Spec_Violation,
  3729.         Code_Statement_Violation,
  3730.         -- 3.5
  3731.         Range_Constraint_Violation,
  3732.         Named_Number_Violation,
  3733.         -- 3.6
  3734.         Type_Name_Violation,
  3735.         Package_Name_Violation,
  3736.         Procedure_Name_Violation,
  3737.         Function_Name_Violation );
  3738.   
  3739.     type decl_name is (    enumeration_type,
  3740.             integer_type,
  3741.             real_type,
  3742.             array_type,
  3743.                    record_type,
  3744.             access_type,
  3745.             derived_type,
  3746.             subtype_type,
  3747.             procedure_type,
  3748.             function_type,
  3749.                    package_type,
  3750.             task_type);
  3751.  
  3752.     type Print_Mode_Type is (VIOLATION, SOURCE);
  3753.  
  3754.     type Report_Mode_Type is (EVERY, FIRST);
  3755.  
  3756. -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * -- * --
  3757.  
  3758.     Subprogram_Stack  : ST.stack := ST.create;
  3759.  
  3760.     Subprogram_Record : Subprogram_Stack_Element_Type;
  3761.  
  3762.     Input_File        : TIO.FILE_TYPE;
  3763.  
  3764.     Source_File       : TIO.FILE_TYPE;
  3765.  
  3766.     Print_Mode        : Print_Mode_Type;
  3767.  
  3768.     Report_Mode       : Report_Mode_Type;
  3769.  
  3770.     Previous_Token    : PD.ParseStackElement;
  3771.  
  3772.     Param_Count       : natural;
  3773.  
  3774.     Violation_Noted   : boolean := false;
  3775.  
  3776.   
  3777.     procedure Enter_Subprogram;
  3778.  
  3779.     --| Called when we enter a new subprogram, this proceure
  3780.     --| pushes the newly-entered subprogram onto the subprogram
  3781.     --| stack. 
  3782.  
  3783.     procedure Exit_Subprogram;
  3784.  
  3785.     procedure Note_Violation(
  3786.     Violation_Name : in Violation_Type;
  3787.     What_Where     : in PD.token := Previous_Token.lexed_token
  3788.     );
  3789.  
  3790.     --| Notes the occurance of the (possible) coding standards 
  3791.     --| violation Violation on line Line_Number. 
  3792.  
  3793.     procedure Increment_Statement_Count ;
  3794.  
  3795.     --| Called when an Ada source statment has been recognized,
  3796.     --| this procedure increments the statement count for the
  3797.     --| current procedure.
  3798.  
  3799.     procedure Save_Unit_Name ;
  3800.  
  3801.     procedure Save_Type_Name ;
  3802.  
  3803.     procedure Save_Builtin_Name ;
  3804.  
  3805.     procedure Set_Decl_Name (Name : in Decl_Name );
  3806.  
  3807.     --| Sets the type of decl for which the names need to
  3808.     --| be checked.      
  3809.  
  3810.     procedure Check_Names (
  3811.     Violation : in Violation_Type
  3812.     );
  3813.  
  3814.     procedure Increment_Parameter_Count;
  3815.  
  3816.     --| Increments the number of parameters in a spec and Notes a 
  3817.     --| violation if there are more than the Max_Number_of_Parameters.
  3818.  
  3819.    procedure Check_Pragmas ;
  3820.  
  3821.    --| Checks that a pragma is in the set of acceptable ones.
  3822.  
  3823.    procedure Check_Builtin_Types;
  3824.  
  3825.    --| checks that objects are not declared of builtin types as that makes
  3826.    --| the code non-portable.  Defining subtypes is a better idea.
  3827.  
  3828.    procedure Set_Visibility (Switch : in ON_OFF);
  3829.  
  3830.    procedure Set_Range_Constraint (Switch : in ON_OFF);
  3831.  
  3832.    procedure Check_Range_Constraint ;
  3833.  
  3834.    procedure Check_Parameters ;
  3835.  
  3836.    procedure Set_Body_Indicator (Switch : in ON_OFF);
  3837.  
  3838.    procedure Set_Package_Indicator (Switch : in ON_OFF);
  3839.  
  3840.    procedure Write_Message (Message : in out SP.string_type);
  3841.  
  3842.    procedure Check_Boolean ;
  3843.  
  3844. end Standards_Checker_Utilities;
  3845. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  3846. --SCDECLS.DAT
  3847. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  3848. with String_Pkg;
  3849. with Standards_Checker_Utilities;    use Standards_Checker_Utilities;
  3850.  
  3851. package Standards_Checker_Declarations is
  3852.  
  3853.     package SP renames String_Pkg;
  3854.  
  3855. --| declarations for the Standards Checker.
  3856.  
  3857. --| Overview:
  3858. --| This package contains declarations for the Standards Checker
  3859. --| which serve to parameterize it.
  3860.  
  3861. -- The following array, Standards_To_Check, is the object which controls
  3862. -- which violations will be checked.  All the possible violations are
  3863. -- included the name of the violation is the comment to the right of
  3864. -- its value.  If a violation is to be checked then its value should be
  3865. -- ON, and it should be OFF if it is not to be checked.
  3866.  
  3867. -- For some checks like Goto_Violation  this is the only kind of control:
  3868. -- whether it is checked for or not.  In other cases like Subprogram_Nesting
  3869. -- it is also parameterized by the maximum allowed nesting level.  These
  3870. -- other parameters are what makes up the rest of this package.
  3871.  
  3872.     Standards_To_Check : array (Violation_Type)
  3873.         of ON_OFF :=
  3874.     (            -- 3.1            
  3875.       ON,            -- Subprogram_Nesting_Violation
  3876.       ON,            -- Statement_Limit_Violation
  3877.       ON,            -- Nonscalar_Type_Violation
  3878.                 -- 3.2
  3879.       ON,            -- Goto_Violation
  3880.       ON,            -- Exit_If_Violation
  3881.       ON,            -- Boolean_Comparison_Violation
  3882.                 -- 3.3
  3883.       ON,            -- Parameter_Limit_Violation
  3884.                 -- 3.4
  3885.       ON,            -- Builtin_Type_Violation
  3886.       ON,            -- Pragma_Violation
  3887.       ON,            -- Rep_Spec_Violation
  3888.       ON,            -- Code_Statement_Violation
  3889.                 -- 3.5
  3890.       ON,            -- Range_Constraint_Violation
  3891.       ON,            -- Named_Number_Violation
  3892.                 -- 3.6
  3893.       ON,            -- Type_Name_Violation
  3894.       ON,            -- Package_Name_Violation
  3895.       ON,            -- Procedure_Name_Violation
  3896.       ON            -- Function_Name_Violation
  3897.     );           
  3898.  
  3899. -- the following is not a violation check but an option on the output format.
  3900. -- Violation warnings will be split in order to not exceed this number of
  3901. -- characters on an output line.  So for a 8.5 x 11 output it should be set 
  3902. -- to 80, but for 132 column computer paper it can be wider.
  3903.  
  3904.     Max_Characters_Per_Output_Line : integer := 132;
  3905.  
  3906. -- Number of statements in a subprogram not to be exceeded.  If this number
  3907. -- is exceeded a warning will be put out  at the next line, but not on
  3908. -- lines after that.
  3909.  
  3910.     Max_Statements_Per_Subprogram  : integer := 100;
  3911.  
  3912. -- Maximum number of parameters a subprogram should have.  There can only 
  3913. -- be one of these warnings per subprogram
  3914.  
  3915.     Max_Parameters_Per_Subprogram  : integer := 4;
  3916.  
  3917. -- Maximum level of nesting for subprograms with no nesting at all having
  3918. -- a maximum of 1 (i.e. the subprogram itself with no nested subprograms).
  3919.  
  3920.     Max_Nesting_for_Subprograms    : integer := 1;
  3921.  
  3922. -- Names of allowed pragmas, all others will produce a warning.
  3923. -- Pragmas_last is the number of allowed pragmas there are and it
  3924. -- is used to constrain the array.  If more pragmas are to be allowed
  3925. -- this variable must be changed before the array is changed.
  3926.  
  3927.     Pragmas_Last  : constant integer := 3;
  3928.  
  3929.     subtype Pragma_Range is integer range 1 .. Pragmas_Last;
  3930.  
  3931. -- Allowed_pragmas is the array of allowed pragmas.  To add another
  3932. -- pragma (after changing Pragmas_Last) add another element to the
  3933. -- array like SP.create ("<name of the pragma>").  The name of the
  3934. -- pragma should be uppercase since the name being compared to it will
  3935. -- be uppercased before comparison.
  3936.  
  3937.     Allowed_Pragmas : array (Pragma_Range)
  3938.     of SP.String_Type := (SP.create ("PAGE"),
  3939.                   SP.create ("ELABORATE"),
  3940.                   SP.create ("INLINE"));
  3941.  
  3942.  
  3943. -- Builtin types which should not be explicitly used in object declarations.
  3944. -- Builtins_Last is the maximum number of builtin types.  If more are 
  3945. -- defined then Builtins_Last must be incremented appropriately.
  3946.  
  3947.     Builtins_Last  : constant integer := 25;
  3948.  
  3949.     subtype Builtin_Range is integer range 1.. Builtins_Last;
  3950.  
  3951. -- Builtin types are going to differ from machine to machine so these
  3952. -- names can be changed.  To add another simply add another element to
  3953. -- the array like: SP.create ("<name of the built-in type>"),
  3954. -- The name should be all uppercase for the same reason as above.
  3955.  
  3956.     Builtin_Types : array (Builtin_Range)
  3957.     of SP.String_Type := (SP.create ("INTEGER"),
  3958.                   SP.create ("SHORT_INTEGER"),
  3959.                   SP.create ("SHORT_SHORT_INTEGER"),
  3960.                   SP.create ("FLOAT"),
  3961.                   SP.create ("LONG_FLOAT"),
  3962.                   SP.create ("LONG_LONG_FLOAT"),
  3963.                   SP.create ("DURATION"),
  3964.                   SP.create ("NAME"),
  3965.                   SP.create ("PRIORITY"),
  3966.                   SP.create ("ADDRESS"),
  3967.                   SP.create ("TYPE_CLASS"),
  3968.                   SP.create ("D_FLOAT"),
  3969.                   SP.create ("F_FLOAT"),
  3970.                   SP.create ("G_FLOAT"),
  3971.                   SP.create ("H_FLOAT"),
  3972.                   SP.create ("AST_HANDLER"),
  3973.                   SP.create ("BIT_ARRAY"),
  3974.                   SP.create ("UNSIGNED_BYTE"),
  3975.                   SP.create ("UNSIGNED_BYTE_ARRAY"),
  3976.                   SP.create ("UNSIGNED_WORD"),
  3977.                   SP.create ("UNSIGNED_WORD_ARRAY"),
  3978.                   SP.create ("UNSIGNED_LONGWORD"),
  3979.                   SP.create ("UNSIGNED_LONGWORD_ARRAY"),
  3980.                   SP.create ("UNSIGNED_QUADWORD"),
  3981.                   SP.create ("UNSIGNED_QUADWORD_ARRAY"));
  3982.  
  3983. -- Numbers_Last is the number of exempt numbers from the named literal
  3984. -- check.
  3985.     Numbers_Last  : constant integer := 3;
  3986.  
  3987.     subtype Numbers_Range is integer range 1 .. Numbers_Last;
  3988.  
  3989. -- Allowed_Numbers is the array of exempt numbers to check against.  They
  3990. -- are integers, Allowed_Floats is the array of exempt floating point
  3991. -- numbers.   When checking a numeric literal it first checks it against 
  3992. -- the integers, but if it is not an integer it is checked against the
  3993. -- strings in Allowed_Float.
  3994.     Allowed_Numbers : array (Numbers_Range)
  3995.     of integer := (0,
  3996.                1,
  3997.                2);
  3998.  
  3999. -- Float_Last is the number of exempt floating point numbers.
  4000.     Float_Last : constant integer := 3;
  4001.  
  4002.    subtype Float_Range is integer range 1..Float_Last ;
  4003.  
  4004. -- Allowed_Floats is the array of exempt real numbers to check against.
  4005. -- The numbers to compare against are strings and numbers cannot therefore
  4006. -- be checked for the value being equal.  So "0.0" is not the same as "0.00"
  4007. -- etc.  The number will be allowed only if the strings exactly match.
  4008.     Allowed_Floats : array (Float_Range)
  4009.     of SP.string_type := (SP.create ("0.0"),
  4010.                         SP.create ("1.0"),
  4011.                   SP.create ("2.0"));
  4012.  
  4013. -- The rest of the structures are for checking prefixes and suffixes.
  4014. -- At the end there is the Name_Table which is a table indexed by Decl_Name.
  4015. -- Decl_Name is an enumeration of all the different types of declaration
  4016. -- that we wish to check the prefixes and suffixes of.  For each Decl_Name 
  4017. -- there is a two dimensional array which contains the prefixes and suffixes
  4018. -- for that type.  It is the same to modify all of these arrays so a 
  4019. -- description will only be given for one.
  4020.  
  4021.     Names_First : constant integer := 1;
  4022.  
  4023. -- Names_Last is the maximum number of prefixes or suffixes that any of
  4024. -- the delcaration types have.  So for instance enumeration types only
  4025. -- have three prefixes or suffixes, but procedures have 17, Names_Last
  4026. -- must be as big as the largest one.
  4027.     Names_Last  : constant integer := 20;
  4028.  
  4029.     Name_Prefix : constant integer := 1;
  4030.  
  4031.     Name_Suffix : constant integer := 2;
  4032.  
  4033. -- this is the type of array all the prefixes and suffixes are stored in.
  4034.     type String_Array is array (Names_First .. Names_Last,
  4035.                 Name_Prefix .. Name_Suffix)
  4036.     of SP.string_type;
  4037.  
  4038. -- if the array associated with a type is empty it is assumed that any 
  4039. -- prefix or suffix is allowed.
  4040.     Empty_Array : String_Array := (others => (others => SP.create ("")));
  4041.  
  4042.  
  4043. -- The arrays are two dimensional so that prefixes and suffixes can be
  4044. -- specified together.
  4045. -- For example if the first element was foo and the second was the empty
  4046. -- string then the check would check for the prefix foo and anything
  4047. -- would be ok for the suffix.
  4048. -- Similarly for a first element which is blank and a second which is 'bar'
  4049. -- any prefix would match, but the suffix would be checked against bar.
  4050. -- If, however, the prefix is 'foo' and the suffix is 'bar' it will not
  4051. -- be a match unless both prefix and suffix are matched.
  4052.  
  4053. -- So to add a new prefix to the array one would add a new element:
  4054. -- (SP.create ("<new prefix>"), SP.create ("")),
  4055. -- to add a new suffix:
  4056. -- (SP.create (""), SP.create ("<new suffix>")),
  4057. -- to add both:
  4058. -- (SP.create ("<new prefix>"), SP.create ("<new suffix>")),
  4059.  
  4060. -- Unless the array has the maximum number of prefixes or suffixes 
  4061. -- fill in the rest of the array with null strings.  The program
  4062. -- stops when it sees null strings any other junk could cause erroneous
  4063. -- warning messages.
  4064.  
  4065.     Enumeration_Array : String_Array :=
  4066.                     -- Allowable Enumeration Types
  4067.         ((SP.create (""), SP.create ("NAME")),
  4068.      (SP.create (""), SP.create ("TYPE")),
  4069.      (SP.create (""), SP.create ("")), -- the compiler we're using has a
  4070.                        -- bug which requires we add this
  4071.                        -- line.  It may later be taken out
  4072.      others => (others => SP.create ("")));
  4073.  
  4074.     Integer_Array : String_Array :=
  4075.                     -- Allowable Integer Types
  4076.     ((SP.create (""), SP.create ("NUMBER")),
  4077.      (SP.create (""), SP.create ("TYPE")),
  4078.      (SP.create (""), SP.create ("")),
  4079.      others => (others => SP.create ("")));
  4080.  
  4081.     Real_Array : String_Array :=
  4082.                     -- Allowable Real Types
  4083.     ((SP.create (""), SP.create ("NUMBER")),
  4084.      (SP.create (""), SP.create ("TYPE")),
  4085.      (SP.create (""), SP.create ("")),
  4086.      others => (SP.create (""), SP.create ("")));
  4087.  
  4088.     Array_Array : String_Array :=
  4089.                     -- Allowable Array Types
  4090.     ((SP.create (""), SP.create ("ARRAY")),
  4091.      (SP.create (""), SP.create ("STRING")),
  4092.      (SP.create (""), SP.create ("NAME")),
  4093.      (SP.create (""), SP.create ("TYPE")),
  4094.      (SP.create (""), SP.create ("")),
  4095.      others => (SP.create (""), SP.create ("")));
  4096.  
  4097.     Record_Array : String_Array :=
  4098.                     -- Allowable Record Types
  4099.     ((SP.create (""), SP.create ("RECORD")),
  4100.      (SP.create (""), SP.create ("DESCRIPTOR")),
  4101.      (SP.create (""), SP.create ("SPECIFIER")),
  4102.       (SP.create (""), SP.create ("NODE")),
  4103.         (SP.create (""), SP.create ("TYPE")),
  4104.      (SP.create (""), SP.create ("")),
  4105.      others => (SP.create (""), SP.create ("")));
  4106.  
  4107.     Access_Array : String_Array :=
  4108.                     -- Allowable Access types
  4109.     ((SP.create (""), SP.create ("HANDLE")),
  4110.       (SP.create (""), SP.create ("PTR")),
  4111.      (SP.create (""), SP.create ("TYPE")),
  4112.      (SP.create (""), SP.create ("")),
  4113.      others => (SP.create (""), SP.create ("")));
  4114.  
  4115.     Derived_Array : String_Array :=
  4116.                     -- Allowable Derived types
  4117.     ((SP.create (""), SP.create ("NUMBER")),
  4118.      (SP.create (""), SP.create ("NAME")),
  4119.      (SP.create (""), SP.create ("RANGE")),
  4120.      (SP.create (""), SP.create ("RECORD")),
  4121.      (SP.create (""), SP.create ("SPECIFIER")),
  4122.       (SP.create (""), SP.create ("DESCRIPTOR")),
  4123.      (SP.create (""), SP.create ("HANDLE")),
  4124.       (SP.create (""), SP.create ("ARRAY")),
  4125.      (SP.create (""), SP.create ("STRING")),
  4126.      (SP.create (""), SP.create ("NODE")),
  4127.      (SP.create (""), SP.create ("PTR")),
  4128.      (SP.create (""), SP.create ("TYPE")),
  4129.      (SP.create (""), SP.create ("")),
  4130.      others => (SP.create (""), SP.create ("")));
  4131.  
  4132.     Subtype_Array : String_Array :=
  4133.                     -- Allowable Subtypes
  4134.     ((SP.create (""), SP.create ("RANGE")),
  4135.      (SP.create (""), SP.create ("TYPE")),
  4136.      (SP.create (""), SP.create ("")),
  4137.      others => (SP.create (""), SP.create ("")));
  4138.  
  4139.     Procedure_Array : String_Array :=
  4140.                     -- Allowable Procedure Names
  4141.     ((SP.create ("ALLOCATE"), SP.create ("")),
  4142.      (SP.create ("FREE"),     SP.create ("")),
  4143.       (SP.create ("GET"),      SP.create ("")),
  4144.      (SP.create ("SET"),      SP.create ("")),
  4145.      (SP.create ("OBTAIN"),   SP.create ("")),
  4146.      (SP.create ("RELEASE"),  SP.create ("HANDLE")),
  4147.      (SP.create ("WALKTO"),   SP.create ("HANDLE")),
  4148.      (SP.create ("CREATE"),   SP.create ("")),
  4149.      (SP.create ("DELETE"),   SP.create ("")),
  4150.      (SP.create ("ADD"),      SP.create ("")),
  4151.       (SP.create ("APPEND"),   SP.create ("")),
  4152.      (SP.create ("INSERT"),   SP.create ("")),
  4153.      (SP.create ("PREPEND"),  SP.create ("")),
  4154.      (SP.create ("REMOVE"),   SP.create ("")),
  4155.      (SP.create ("REPLACE"),  SP.create ("")),
  4156.      (SP.create ("READ"),     SP.create ("")),
  4157.      (SP.create ("WRITE"),    SP.create ("")),
  4158.       (SP.create (""),         SP.create ("")),
  4159.      others => (SP.create (""), SP.create ("")));
  4160.  
  4161.     Function_Array : String_Array :=
  4162.                     -- Allowable Function Names
  4163.     Empty_Array;
  4164.  
  4165.     Package_Array : String_Array :=
  4166.                     -- Allowable Package Names
  4167.     Empty_Array;
  4168.  
  4169.     Task_Array : String_Array :=
  4170.                     -- Allowable Task Names
  4171.     ((SP.create (""), SP.create ("TASK")),
  4172.      (SP.create (""), SP.create ("")),
  4173.      others => (SP.create (""), SP.create ("")));
  4174.  
  4175.     type Name_Array is array (Decl_Name) of String_Array;
  4176.  
  4177.     Name_Table : Name_Array :=
  4178.     (Enumeration_Array,
  4179.      Integer_Array,
  4180.      Real_Array,
  4181.      Array_Array,
  4182.      Record_Array,
  4183.      Access_Array,
  4184.      Derived_Array,
  4185.      Subtype_Array,
  4186.      Procedure_Array,
  4187.      Function_Array,
  4188.      Package_Array,
  4189.      Task_Array);
  4190.  
  4191.  
  4192. end Standards_Checker_Declarations;
  4193. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4194. --SCUTILS.BDY
  4195. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4196. with Standards_Checker_Declarations;
  4197. with Host_Dependencies;
  4198.  
  4199. package body Standards_Checker_Utilities is
  4200.  
  4201. --| Overview:
  4202. --| This package provides the utilities which 
  4203. --| may be called directy from the parser.
  4204.  
  4205. --| Notes:
  4206. --| Programmer: Christine Gosling
  4207.  
  4208. ----- Package Renames:
  4209.  
  4210. package SCD renames Standards_Checker_Declarations;
  4211. package HD renames Host_Dependencies;
  4212.  
  4213. ----- Local Variables/Constants:
  4214.  
  4215. Decl_Index       : Decl_Name;
  4216. Unit_Name        : PD.token;
  4217. Type_Name          : PD.token;
  4218. Builtin_Name       : PD.token;
  4219. Pragma_Name      : PD.token;
  4220. Range_Record     : PD.token;
  4221. Range_Constraint : ON_OFF := OFF;
  4222. Error_Header     : constant string := "*** ";
  4223. Boolean_True     : constant SP.string_type := SP.create ("TRUE");
  4224. Boolean_False    : constant SP.string_type := SP.create ("FALSE");
  4225.  
  4226. ----- Local Operations:
  4227.  
  4228. function string_type_of (token : PD.token) return SP.string_type is
  4229. begin
  4230.     return SP.create (PD.Get_Source_Text (token.text));
  4231. end string_type_of;
  4232.  
  4233.  
  4234. function string_of (token : PD.token) return string is
  4235. begin
  4236.     return PD.Get_Source_Text (token.text);
  4237. end string_of;
  4238.  
  4239. function valid_float return boolean is
  4240. n : SP.string_type;
  4241. begin
  4242.     n := string_type_of(Previous_Token.lexed_token);
  4243.     for index in SCD.Allowed_Floats'range loop
  4244.         if SP.equal (n, SCD.Allowed_Floats(index)) then
  4245.             return true;
  4246.         end if;
  4247.     end loop;
  4248.     return false;
  4249.  
  4250. end valid_float;
  4251.  
  4252. function valid_number return boolean is
  4253. n : integer;
  4254. begin
  4255.     n := integer'value(string_of(Previous_Token.lexed_token));
  4256.     for index in SCD.Allowed_Numbers'range loop
  4257.         if n = SCD.Allowed_Numbers(index) then
  4258.             return true;
  4259.         end if;
  4260.     end loop;
  4261.     return false;
  4262.     exception
  4263.     when CONSTRAINT_ERROR =>
  4264.         return valid_float;
  4265.  
  4266. end valid_number;
  4267.  
  4268. function Valid_Prefix (
  4269.     Prefix :    in SP.String_Type;
  4270.     Identifier : in SP.String_Type
  4271.     ) return BOOLEAN is
  4272.  
  4273. --| Called when a type, subprogram, or package declaration has
  4274. --| been found in a spec (ie. the visible part).  This checks
  4275. --| that the prefix is one of the acceptable ones for the type
  4276. --| of declaration it is.  The type of declaration is set by
  4277. --| Set_Decl_Name and saved in the variable Decl_Index.
  4278.  
  4279. len             : INTEGER;
  4280.  
  4281. begin
  4282.     len := SP.length (prefix);
  4283.     if len >= SP.length (identifier) then
  4284.         return false;
  4285.     else
  4286.         return SP.equal (prefix, SP.substr(identifier, 1, len));
  4287.     end if;
  4288.  
  4289. end Valid_Prefix;
  4290.  
  4291. function Valid_Suffix (
  4292.     Suffix :    in SP.String_Type;
  4293.     Identifier : in SP.String_Type
  4294.     ) return BOOLEAN is
  4295.  
  4296. --| Called when a type, subprogram, or package declaration has
  4297. --| been found in a spec (ie. the visible part).  This checks
  4298. --| that the suffix is one of the acceptable ones for the type
  4299. --| of declaration it is.  The type of declaration is set by
  4300. --| Set_Decl_Name and saved in the variable Decl_Index.
  4301.  
  4302. len             : INTEGER;
  4303.  
  4304. begin
  4305.     len := SP.length (Suffix);
  4306.     if len >= SP.length (identifier) then
  4307.         return false;
  4308.     else
  4309.         return SP.equal (Suffix, SP.substr(identifier, 
  4310.                            (SP.length(identifier)-len)+1, 
  4311.                             len));
  4312.     end if;
  4313.  
  4314. end Valid_Suffix;
  4315.  
  4316. ----- Operations global to S_C_Utilities:
  4317.  
  4318. procedure Enter_Subprogram is
  4319.  
  4320. begin
  4321.  
  4322.     ST.Push(Subprogram_Stack,Subprogram_Record);
  4323.     Subprogram_Record.unit_name  := String_Type_of(Unit_Name);
  4324.     Subprogram_Record.stmt_count := 0;
  4325.     Subprogram_Record.bdy        := ON;
  4326.     if ST.Size(Subprogram_Stack) = SCD.Max_Nesting_for_Subprograms + 1 then
  4327.         Note_Violation(Subprogram_Nesting_Violation);
  4328.     end if;
  4329. end Enter_Subprogram; 
  4330.  
  4331. procedure Exit_Subprogram is
  4332.  
  4333. begin
  4334.  
  4335. ST.Pop(Subprogram_Stack,Subprogram_Record);
  4336.  
  4337. end Exit_Subprogram; 
  4338.  
  4339. procedure Note_Violation (
  4340.     Violation_Name : in Violation_Type;
  4341.     What_Where     : in PD.token := Previous_Token.lexed_token
  4342.     ) is 
  4343.  
  4344.     Message    : SP.String_Type;
  4345.  
  4346.     begin 
  4347.  
  4348.     if SCD.Standards_To_Check(Violation_Name) = OFF then 
  4349.         return;
  4350.     end if;
  4351.     SP.Mark;
  4352.     Message := SP.Create("");
  4353.     case Violation_Name is
  4354.         when Subprogram_Nesting_Violation =>
  4355.         Message := SP."&"(Message, 
  4356.             ("Maximum subprogram nesting value ("
  4357.             & integer'image(SCD.Max_Nesting_for_Subprograms)
  4358.             & ") exceeded"));
  4359.         when Statement_Limit_Violation => 
  4360.         Message := SP."&"(Message,
  4361.             ("Maximum statements per subprogram value ("
  4362.             & integer'image(SCD.Max_Statements_Per_Subprogram)
  4363.             & ") exceeded"));
  4364.         when Nonscalar_Type_Violation => 
  4365.         if Subprogram_Record.pkg = OFF or
  4366.            Subprogram_Record.visible = OFF then
  4367.             return;
  4368.         end if;
  4369.         Message := SP."&"(Message,
  4370.             ("Visible non-scalar declaration "
  4371.             & String_of(What_Where)));
  4372.         when Goto_Violation => 
  4373.         Message := SP."&"(Message, "GOTO violation");
  4374.         when Exit_If_Violation => 
  4375.         Message := SP."&"(Message, "Possible EXIT usage violation");
  4376.         when Boolean_Comparison_Violation => 
  4377.         Message := SP."&"(Message, "Boolean comparison violation");
  4378.         when Parameter_Limit_Violation => 
  4379.         if Subprogram_Record.visible = OFF then
  4380.             return;
  4381.         end if;
  4382.         Message := SP."&"(Message,
  4383.             ("Maximum parameters per subprogram value ("
  4384.             & integer'image(SCD.Max_Parameters_Per_Subprogram)
  4385.             & ") exceeded"));
  4386.         when Builtin_Type_Violation => 
  4387.         if Subprogram_Record.visible = OFF then
  4388.             return;
  4389.         end if;
  4390.         Message := SP."&"(Message,
  4391.             ("Use of built-in TYPE/SUBTYPE "
  4392.             & String_of(What_Where)));
  4393.         when Pragma_Violation => 
  4394.         Message := SP."&"(Message,
  4395.             ("Non portable PRAGMA "
  4396.             & String_of(What_Where)));
  4397.         when Rep_Spec_Violation => 
  4398.         Message := SP."&"(Message, "Non portable REPRESENTATION CLAUSE");
  4399.         when Code_Statement_Violation =>
  4400.         Message := SP."&" (Message, "Non portable CODE STATEMENT");
  4401.         when Range_Constraint_Violation => 
  4402.         Message := SP."&"(Message, "Use of explicit range expression");
  4403.         when Named_Number_Violation => 
  4404.         if Subprogram_Record.bdy = OFF or else
  4405.            Valid_Number then
  4406.             return;
  4407.         end if;
  4408.         Message := SP."&"(Message,
  4409.             ("Use of explicit numeric literal: " &
  4410.             string_of(Previous_Token.lexed_token)));
  4411.         when Type_Name_Violation => 
  4412.         if Subprogram_Record.visible = OFF then
  4413.             return;
  4414.         end if;
  4415.         Message := SP."&"(Message,
  4416.             ("TYPE name violation in type "
  4417.             & String_of(What_Where)));
  4418.         when Package_Name_Violation => 
  4419.         if Subprogram_Record.visible = OFF then
  4420.             return;
  4421.         end if;
  4422.         Message := SP."&"(Message,
  4423.             ("PACKAGE name violation in package "
  4424.             & String_of(What_Where)));
  4425.         when Procedure_Name_Violation => 
  4426.         if Subprogram_Record.visible = OFF then
  4427.             return;
  4428.         end if;
  4429.         Message := SP."&"(Message,
  4430.             ("PROCEDURE name violation in procedure "
  4431.             & String_of(What_Where)));
  4432.         when Function_Name_Violation => 
  4433.         if Subprogram_Record.visible = OFF then
  4434.             return;
  4435.         end if;
  4436.         Message := SP."&"(Message,
  4437.             ("FUNCTION name violation in function "
  4438.             & String_of(What_Where)));
  4439.         when others =>
  4440.         return;
  4441.     end case;
  4442.     if not SP.Equal(Subprogram_Record.unit_name, "") then
  4443.         Message := SP."&"(Message, " in unit ");
  4444.         Message := SP."&"(Message, Subprogram_Record.unit_name);
  4445.     end if;
  4446.     Message := SP."&"(Message, " at line ");
  4447.     Message := SP."&"(Message, HD.Source_Line'image(What_Where.srcpos_line));
  4448.     Message := SP."&"(Message, " column ");
  4449.     Message := SP."&"(Message, HD.Source_Column'image(What_Where.srcpos_column));
  4450.     if Report_Mode = FIRST then
  4451.         SCD.Standards_To_Check(Violation_Name) := OFF;
  4452.     end if;
  4453.     Write_Message(Message);
  4454.     Violation_Noted := true;
  4455.     SP.Release;
  4456.  
  4457. end Note_Violation ;
  4458.  
  4459. procedure Write_Message (Message : in out SP.string_type) is
  4460.  
  4461. begin
  4462.     SP.Mark;
  4463.     Message := SP."&"(Error_Header, Message);
  4464.     while SP.Length(Message) > SCD.Max_Characters_Per_Output_Line loop 
  4465.     PO.Put_Line(SP.Substr(Message, 1, SCD.Max_Characters_Per_Output_Line));
  4466.     Message := SP."&"(Error_Header,
  4467.               SP.Substr(Message,
  4468.                     SCD.Max_Characters_Per_Output_Line + 1,
  4469.                     SP.Length(Message) -
  4470.                     SCD.Max_Characters_Per_Output_Line));
  4471.     end loop;
  4472.     PO.Put_Line(Message);
  4473.     SP.Release;
  4474.  
  4475. end Write_Message;
  4476.  
  4477. procedure Increment_Statement_Count is  
  4478.  
  4479. begin
  4480.  
  4481.     Subprogram_Record.stmt_count := Subprogram_Record.stmt_count + 1;
  4482.     if Subprogram_Record.stmt_count /= SCD.Max_Statements_Per_Subprogram + 1 or
  4483.        Subprogram_Record.bdy = OFF then
  4484.     return;
  4485.     end if;
  4486.     Note_Violation(Statement_Limit_Violation);
  4487.  
  4488. end Increment_Statement_Count ;  
  4489.  
  4490. procedure Save_Unit_Name is
  4491.  
  4492. --| This procedure saves the text and source position of a the
  4493. --| identifier corresponding to a subprogram or package.
  4494.  
  4495. begin
  4496.     Unit_Name := Previous_Token.lexed_token;
  4497. end Save_Unit_Name;
  4498.  
  4499. procedure Save_Type_Name is
  4500.  
  4501. --| This procedure save the name of the type being declared.
  4502. --| in some cases it will duplicate the Unit_Name, but not 
  4503. --| always.  Therefore, it must be saved in it's own righrt also.
  4504.  
  4505. begin
  4506.     Type_Name := Previous_Token.lexed_token;
  4507. end Save_Type_Name;
  4508.  
  4509. procedure Save_Builtin_Name  is
  4510.  
  4511. --| This procedure saves the identifier which may be one of the builtin types
  4512. --| that shouldn't be used in object declarations.  There is no way to 
  4513. --| narrow down the set of things saved with the grammar without causing 
  4514. --| conflicts so we have to do this more often than we would like, but it
  4515. --| can't be helped.
  4516.  
  4517. begin
  4518.     Builtin_Name := Previous_Token.lexed_token;
  4519. end Save_Builtin_Name;
  4520.  
  4521. procedure Set_Decl_Name (Name : in Decl_Name) is
  4522.  
  4523. --| Save the type of declaration found by the parser in the 
  4524. --| variable Decl_Index.  It's called Decl_Index because it's
  4525. --| going to be the index into the table of acceptable prefixes
  4526. --| and suffixes.
  4527.  
  4528. begin
  4529.     Decl_Index := Name;
  4530. end Set_Decl_Name;
  4531.  
  4532. procedure Check_Names (
  4533.     Violation : in Violation_Type
  4534.     ) is
  4535.  
  4536. Allowed_Names : SCD.String_Array;
  4537. identifier    : SP.string_type;
  4538. prefix        : SP.string_type;
  4539. suffix        : SP.string_type;
  4540.  
  4541. begin
  4542.     Allowed_Names := SCD.Name_Table (Decl_Index);
  4543.     if SP.equal (Allowed_Names(SCD.Names_First, SCD.Name_Prefix), "") and
  4544.        SP.equal (Allowed_Names(SCD.Names_First, SCD.Name_Suffix), "") then
  4545.         return;
  4546.     end if;
  4547.     identifier := SP.upper (String_Type_of (Type_Name));
  4548.     for index in Allowed_Names'range loop
  4549.         prefix := Allowed_Names (index, SCD.Name_Prefix);
  4550.         suffix := Allowed_Names (index, SCD.Name_Suffix);
  4551.         exit when (SP.equal (prefix, "") and SP.equal (suffix, ""));
  4552.         if Valid_Prefix(prefix, identifier) and
  4553.            Valid_Suffix(suffix, identifier) then
  4554.         return;
  4555.         end if;
  4556.     end loop;
  4557.     Note_Violation (Violation, Type_Name);
  4558.  
  4559. end Check_Names;
  4560.  
  4561.  
  4562.     procedure Increment_Parameter_Count is
  4563.  
  4564.     --| Increments the number of parameters in a spec and Notes a 
  4565.     --| violation if there are more than the Max_Number_of_Parameters.
  4566.  
  4567.     begin
  4568.     Param_Count := Param_Count + 1;
  4569.     end Increment_Parameter_Count;
  4570.  
  4571.    procedure Check_Pragmas is
  4572.  
  4573.    --| Checks that a pragma is in the set of acceptable ones.
  4574. Allowed_Pragma  : SP.string_type;
  4575. name              : SP.string_type;
  4576. begin
  4577.  
  4578.       name := SP.upper (String_Type_of (Previous_Token.lexed_Token));
  4579.     for index in SCD.Allowed_Pragmas'range loop
  4580.         Allowed_Pragma := SCD.Allowed_Pragmas (index);
  4581.         if SP.equal (Allowed_Pragma, name) then
  4582.             return;
  4583.         end if;
  4584.     end loop;
  4585.     Note_Violation (Pragma_Violation);
  4586.     end Check_Pragmas;
  4587.  
  4588.    procedure Check_Builtin_Types is
  4589.  
  4590.    --| checks that objects are not declared of builtin types as that makes
  4591.    --| the code non-portable.  Defining subtypes is a better idea.
  4592.    name      : SP.string_type;
  4593. begin
  4594.  
  4595.       name := SP.upper (String_Type_of (Builtin_Name));
  4596.     for index in SCD.Builtin_Types'range loop
  4597.         if SP.equal (SCD.Builtin_Types (index), name) then
  4598.         Note_Violation (Builtin_Type_Violation, Builtin_Name);
  4599.         end if;
  4600.     end loop;
  4601.  
  4602.     end Check_Builtin_Types;
  4603.  
  4604.  
  4605.  
  4606.     procedure Set_Visibility (Switch : in ON_OFF) is
  4607.  
  4608.     begin
  4609.     Subprogram_Record.visible := Switch; 
  4610.     end Set_Visibility;
  4611.  
  4612.    procedure Set_Range_Constraint (Switch : in ON_OFF) is
  4613.  
  4614.     begin
  4615.     Range_Constraint := Switch; 
  4616.     if Switch = ON then
  4617.         Range_Record := Previous_Token.lexed_token;
  4618.     end if;
  4619.     end Set_Range_Constraint;
  4620.  
  4621.    procedure Check_Range_Constraint is
  4622.  
  4623.     begin
  4624.     if Range_Constraint = ON then
  4625.         Note_Violation (Range_Constraint_Violation, Range_Record);
  4626.     end if;
  4627.     end Check_Range_Constraint;
  4628.  
  4629.     procedure Check_Parameters is
  4630.  
  4631.     begin
  4632.     if Param_Count > SCD.Max_Parameters_Per_Subprogram then
  4633.         Note_Violation (Parameter_Limit_Violation);
  4634.     end if;
  4635.     end Check_Parameters;
  4636.  
  4637.  
  4638.     procedure Set_Body_Indicator (Switch : in ON_OFF) is
  4639.  
  4640.     begin
  4641.     Subprogram_Record.bdy := Switch; 
  4642.     end Set_Body_Indicator;
  4643.  
  4644.  
  4645.     procedure Set_Package_Indicator (Switch : in ON_OFF) is
  4646.  
  4647.     begin
  4648.     Subprogram_Record.pkg := Switch; 
  4649.     end Set_Package_Indicator;
  4650.  
  4651.     procedure Check_Boolean is
  4652.  
  4653.     Boolean_Value : SP.string_type;
  4654.  
  4655.     begin
  4656.     SP.mark;
  4657.     Boolean_Value := SP.upper (string_type_of(PD.CurToken.lexed_token));
  4658.     if SP.equal (Boolean_Value, Boolean_True)  or
  4659.        SP.equal (Boolean_Value, Boolean_False) then
  4660.         Note_Violation (BOOLEAN_COMPARISON_VIOLATION);
  4661.     end if;
  4662.     SP.Release;
  4663.     end Check_Boolean;
  4664.  
  4665.  
  4666. end Standards_Checker_Utilities;
  4667. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4668. --STNDCHECK.ADA
  4669. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4670.  
  4671. --------- SPEC ----------------------------------------------------------
  4672. procedure StndCheck;
  4673.  
  4674. --------- BODY ----------------------------------------------------------
  4675.  
  4676. with TEXT_IO;
  4677. with Paginated_Output;
  4678. with Parser;
  4679. with Lex;
  4680. with ParserDeclarations;
  4681. with Standards_Checker_Utilities;
  4682. with Host_Dependencies;
  4683. with Command_Line_Interface;
  4684. with String_Pkg;
  4685. with VMS_Lib;
  4686.  
  4687. procedure StndCheck is
  4688.  
  4689.     use Standards_Checker_Utilities;
  4690.  
  4691.     package TIO renames TEXT_IO;
  4692.     package HD  renames Host_Dependencies;
  4693.     package CLI renames Command_Line_Interface;
  4694.     package SP  renames String_Pkg;
  4695.     package PD  renames ParserDeclarations;
  4696.     package PO  renames Paginated_Output;
  4697.     package VL  renames VMS_Lib;
  4698.  
  4699.     Error_Flag : boolean := false;
  4700.     Units      : ParserDeclarations.ParseStackElement;
  4701.     Source_File_Name : SP.String_Type;
  4702.     Input_File : TIO.FILE_TYPE;
  4703.     Source_File: TIO.FILE_TYPE;
  4704.     Out_File   : SP.String_Type;
  4705.     N, P       : INTEGER;
  4706.     Maxparm    : constant INTEGER := 4;
  4707.     Minparm    : constant INTEGER := 1;
  4708.     Arg_Name   : constant array (1 .. Maxparm) of SP.String_Type
  4709.                 := (1 => SP.Create ("SOURCE"),
  4710.                     2 => SP.Create ("OUTPUT"),
  4711.                     3 => SP.Create ("PRINT"),
  4712.                     4 => SP.Create ("REPORT"));
  4713.     Arg_Value  : array (1 .. Maxparm) of SP.String_Type
  4714.                 := (1 => SP.Create (""),
  4715.                     2 => SP.Create (""),
  4716.                     3 => SP.Create ("VIOLATION"),
  4717.                     4 => SP.Create ("EVERY"));
  4718.     Good_Message : SP.string_type :=
  4719.     SP.create ("No standards violations found.");
  4720.  
  4721.     procedure Help is
  4722.     begin
  4723.     TIO.PUT_LINE("-- CHECK_STANDARDS: Checks Ada source file for possible standards violations");
  4724.     TIO.PUT_LINE("type PRINT_TYPE  is (VIOLATION, SOURCE);");
  4725.     TIO.PUT_LINE("type REPORT_TYPE is (EVERY, FIRST);");
  4726.     TIO.PUT_LINE("procedure CHECK_STANDARDS ( SOURCE : in STRING;");
  4727.     TIO.PUT_LINE("                            OUTPUT : in STRING      := """";");
  4728.     TIO.PUT_LINE("                            PRINT  : in PRINT_TYPE  := VIOLATION;");
  4729.     TIO.PUT_LINE("                            REPORT : in REPORT_TYPE := EVERY);");
  4730.     TIO.PUT_LINE("-- SOURCE : Name of the input file");
  4731.     TIO.PUT_LINE("-- OUTPUT : Name of the report file (defaults to standard output)");
  4732.     TIO.PUT_LINE("-- PRINT  : VIOLATION - List of violations only (default)");
  4733.     TIO.PUT_LINE("--          SOURCE    - Source file with violations");
  4734.     TIO.PUT_LINE("-- REPORT : EVERY - List every occurance of each violations (default)");
  4735.     TIO.PUT_LINE("--          FIRST - List only the first occurance of each violations");
  4736.     end Help;
  4737.  
  4738. begin  -- procedure MAIN
  4739.  
  4740.     VL.Set_Error;
  4741.  
  4742.     begin
  4743.     CLI.Initialize;
  4744.     exception
  4745.     when CLI.Invalid_Parameter_Order =>
  4746.         TIO.PUT_LINE("Error : Positional arguments not allowed after named arguments.");
  4747.         Help;
  4748.         return;
  4749.     when CLI.Missing_Positional_Arg =>
  4750.         TIO.PUT_LINE("Error : Positional argument omitted.");
  4751.         Help;
  4752.         return;
  4753.     when CLI.Invalid_Named_Association =>
  4754.         TIO.PUT_LINE("Error : Named argument not followed by its value.");
  4755.         Help;
  4756.         return;
  4757.     end;
  4758.  
  4759.     N := CLI.Named_Arg_Count;
  4760.     P := CLI.Positional_Arg_Count;
  4761.  
  4762.     if (P = 0 and N = 0) then 
  4763.     Help;
  4764.     return;
  4765.     end if;
  4766.  
  4767.     if (P > Maxparm) or (N > Maxparm) or
  4768.        (N + P > Maxparm) or (N + P < Minparm) then
  4769.     TIO.Put_Line ("Error : Too many arguments.");
  4770.     Help;
  4771.     return;
  4772.     end if;    
  4773.  
  4774.     SP.Mark;
  4775.     for i in 1 .. P loop
  4776.     Arg_Value(i) := CLI.Positional_Arg_Value(i);
  4777.     end loop;
  4778.     for i in 1 .. Maxparm loop
  4779.     Arg_Value(i) := CLI.Named_Arg_Value(SP.Value(Arg_Name(i)), Arg_Value(i)); 
  4780.     end loop;
  4781.  
  4782.     begin
  4783.     CLI.Finalize;
  4784.     exception
  4785.     when CLI.Unreferenced_Named_Arg =>
  4786.         TIO.PUT_LINE("Error : Invalid named argument specified.");
  4787.     Help;
  4788.     return;
  4789.     end;
  4790.  
  4791.     if SP.Equal(Arg_Value(1), "") then
  4792.     TIO.Put_Line ("Error : Input file specification not given.");
  4793.     return;
  4794.     end if;
  4795.     Source_File_Name := SP.Make_Persistent(Arg_Value(1));
  4796.     Out_File         := SP.Make_Persistent(Arg_Value(2));
  4797.     SP.Release;
  4798.  
  4799.     begin
  4800.     Print_Mode := Print_Mode_Type'value(SP.Value(Arg_Value(3)));
  4801.     exception
  4802.     when CONSTRAINT_ERROR =>
  4803.     TIO.Put      ("Error : Invalid print type ");
  4804.     TIO.Put      (SP.Value(Arg_Value(3)));
  4805.     TIO.Put_Line (".  Valid print type is VIOLATION or SOURCE.");
  4806.     Error_Flag := true;
  4807.     end;
  4808.  
  4809.     begin
  4810.     Report_Mode := Report_Mode_Type'value(SP.Value(Arg_Value(4)));
  4811.     exception
  4812.     when CONSTRAINT_ERROR =>
  4813.     TIO.Put      ("Error : Invalid report type ");
  4814.     TIO.Put      (SP.Value(Arg_Value(4)));
  4815.     TIO.Put_Line (".  Valid report type is EVERY or FIRST.");
  4816.     Error_Flag := true;
  4817.     end;
  4818.  
  4819.     if Error_Flag then
  4820.     return;
  4821.     end if;
  4822.  
  4823. -- Echo back command line 
  4824.  
  4825.     TIO.PUT     ("CHECK_STANDARDS ( SOURCE  => """);
  4826.     TIO.PUT     (SP.Value(Source_File_Name));
  4827.     TIO.PUT_LINE(""",");
  4828.     TIO.PUT     ("                  OUTPUT  => """);
  4829.     TIO.PUT     (SP.Value(Out_File));
  4830.     TIO.PUT_LINE(""",");
  4831.     TIO.PUT     ("                  PRINT   => ");
  4832.     TIO.PUT     (Print_Mode_Type'image(Print_Mode));
  4833.     TIO.PUT_LINE(",");
  4834.     TIO.PUT     ("                  REPORT  => ");
  4835.     TIO.PUT     (Report_Mode_Type'image(Report_Mode));
  4836.     TIO.PUT_LINE(" );");
  4837.  
  4838.     TIO.OPEN(FILE => Input_File,
  4839.                  MODE => TIO.IN_FILE,
  4840.                  NAME => SP.Value(Source_File_Name));
  4841.     TIO.SET_INPUT(Input_File);
  4842.  
  4843.     TIO.OPEN(FILE => Source_File,
  4844.                  MODE => TIO.IN_FILE,
  4845.                  NAME => SP.Value(Source_File_Name));
  4846.  
  4847.     if not SP.Equal(Out_File, "") then
  4848.     PO.Set_Standard_Paginated_File(SP.Value(Out_File), 60, 4, 2);
  4849.     PO.Set_Header(2, "Standards Violations for " & SP.value(Source_File_Name));
  4850.     PO.Set_Header(3, "Date : ~d     Time : ~t                                                   Page ~p");  
  4851.     end if;
  4852.  
  4853.     Units := Parser.Parse;
  4854.  
  4855.     if not Violation_Noted then
  4856.     Write_Message(Good_Message);
  4857.     end if;
  4858.  
  4859.     TIO.CLOSE(Input_File);
  4860.     TIO.CLOSE(Source_File);
  4861.     PO.Close_Paginated_File;
  4862.  
  4863. exception
  4864.  
  4865.     when TIO.Status_Error =>
  4866.         TIO.PUT_LINE("Error : File " & SP.Value(Source_File_Name) & " already open.");
  4867.     when TIO.Name_Error =>
  4868.         TIO.PUT_LINE("Error : Unable to open file " & SP.Value(Source_File_Name) & " for input.");
  4869.     when TIO.Use_Error =>
  4870.         TIO.PUT_LINE("Error : Invalid file name " & SP.Value(Source_File_Name) & ".");
  4871.  
  4872.     when PD.Parser_Error =>
  4873.         TIO.PUT_LINE("Error : Syntax error in source: Line: " & HD.Source_Line
  4874.            'Image(PD.CurToken.lexed_token.srcpos_line) & " Column: " & 
  4875.             HD.Source_Column'Image(PD.CurToken.lexed_token.srcpos_column));
  4876.     TIO.CLOSE(Input_File);
  4877.     TIO.CLOSE(Source_File);
  4878.     PO.Close_Paginated_File;
  4879.  
  4880.     when PO.File_ALready_Open =>
  4881.         TIO.PUT_LINE("Error : File " & SP.Value(Out_File) & " already open.");
  4882.     TIO.CLOSE(Input_File);
  4883.     TIO.CLOSE(Source_File);
  4884.     when PO.File_Error =>
  4885.         TIO.PUT_LINE("Error : Unable to open " & SP.Value(Out_File) & " for output.");
  4886.     TIO.CLOSE(Input_File);
  4887.     TIO.CLOSE(Source_File);
  4888.  
  4889.     when others =>
  4890.     TIO.PUT_LINE("Error : CHECK_STANDARDS internal error.");
  4891.  
  4892. end StndCheck;
  4893. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4894. --APPLYACT.SUB
  4895. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4896.  
  4897.  with Standards_Checker_Utilities;
  4898.  -- with INT_IO;
  4899.  
  4900.  separate (Parser)
  4901.  procedure Apply_Actions(Rule_Number : in PT.LeftHandSideRange) is
  4902.  
  4903.      use Standards_Checker_Utilities;
  4904.  --  use INT_IO;
  4905.  
  4906.  begin
  4907.      case Rule_Number is
  4908.  
  4909.  
  4910.   ----------------------------------------------------------------------
  4911.  -- pragma ::= PRAGMA pragma_identifier ( general_component_associations ) ;  
  4912.  
  4913.  when 1 =>
  4914.  -- PUT( 1 ,4);
  4915.  
  4916.      Increment_Statement_Count ;
  4917.      Check_Range_Constraint ;
  4918.   ----------------------------------------------------------------------
  4919.  -- pragma ::= PRAGMA pragma_identifier ;  
  4920.  
  4921.  when 2 =>
  4922.  -- PUT( 2 ,4);
  4923.  
  4924.      Increment_Statement_Count ;
  4925.   ----------------------------------------------------------------------
  4926.  -- pragma_identifier ::= identifier  
  4927.  
  4928.  when 3 =>
  4929.  -- PUT( 3 ,4);
  4930.  
  4931.      Check_Pragmas ;
  4932.   ----------------------------------------------------------------------
  4933.  -- object_declaration ::= object_item ;  
  4934.  
  4935.  when 15 =>
  4936.  -- PUT( 15 ,4);
  4937.  
  4938.      Increment_Statement_Count ;
  4939.   ----------------------------------------------------------------------
  4940.  -- object_item ::= identifier_list : subtype_indication [:=expression]  
  4941.  
  4942.  when 16 =>
  4943.  -- PUT( 16 ,4);
  4944.  
  4945.      Check_Builtin_Types;
  4946.      Check_Range_Constraint ;
  4947.   ----------------------------------------------------------------------
  4948.  -- object_item ::= identifier_list : CONSTANT subtype_indication [:=expression] 
  4949.  
  4950.  when 17 =>
  4951.  -- PUT( 17 ,4);
  4952.  
  4953.      Set_Range_Constraint (OFF) ;
  4954.   ----------------------------------------------------------------------
  4955.  -- object_item ::= identifier_list : constrained_array_definition  
  4956.  --     [:=expression]  
  4957.  
  4958.  when 18 =>
  4959.  -- PUT( 18 ,4);
  4960.  
  4961.      Check_Builtin_Types;
  4962.      Check_Range_Constraint ;
  4963.   ----------------------------------------------------------------------
  4964.  -- object_item ::= identifier_list : CONSTANT constrained_array_definition  
  4965.  
  4966.  when 19 =>
  4967.  -- PUT( 19 ,4);
  4968.  
  4969.      Set_Range_Constraint (OFF) ;
  4970.   ----------------------------------------------------------------------
  4971.  -- number_declaration ::= identifier_list : CONSTANT := expression ;  
  4972.  
  4973.  when 20 =>
  4974.  -- PUT( 20 ,4);
  4975.  
  4976.      Increment_Statement_Count ;
  4977.      Set_Range_Constraint (OFF) ;
  4978.   ----------------------------------------------------------------------
  4979.  -- full_type_declaration ::= TYPE type_identifier is__type_definition ;  
  4980.  
  4981.  when 25 =>
  4982.  -- PUT( 25 ,4);
  4983.  
  4984.      Increment_Statement_Count ;
  4985.   ----------------------------------------------------------------------
  4986.  -- full_type_declaration ::= TYPE type_identifier ( discriminant_specification  
  4987.  --     )  
  4988.  
  4989.  when 26 =>
  4990.  -- PUT( 26 ,4);
  4991.  
  4992.      Increment_Statement_Count ;
  4993.   ----------------------------------------------------------------------
  4994.  -- is__type_definition ::= IS type_definition  
  4995.  
  4996.  when 27 =>
  4997.  -- PUT( 27 ,4);
  4998.  
  4999.      Check_Names (Type_Name_Violation) ;
  5000.   ----------------------------------------------------------------------
  5001.  -- type_identifier ::= identifier  
  5002.  
  5003.  when 28 =>
  5004.  -- PUT( 28 ,4);
  5005.  
  5006.      Save_Type_Name ;
  5007.   ----------------------------------------------------------------------
  5008.  -- type_definition ::= enumeration_type_definition  
  5009.  
  5010.  when 29 =>
  5011.  -- PUT( 29 ,4);
  5012.  
  5013.      Set_Decl_Name (Enumeration_Type) ;
  5014.   ----------------------------------------------------------------------
  5015.  -- type_definition ::= integer_type_definition  
  5016.  
  5017.  when 30 =>
  5018.  -- PUT( 30 ,4);
  5019.  
  5020.      Set_Decl_Name (Integer_Type) ;
  5021.   ----------------------------------------------------------------------
  5022.  -- type_definition ::= real_type_definition  
  5023.  
  5024.  when 31 =>
  5025.  -- PUT( 31 ,4);
  5026.  
  5027.      Set_Decl_Name (Real_Type) ;
  5028.   ----------------------------------------------------------------------
  5029.  -- type_definition ::= array_type_definition  
  5030.  
  5031.  when 32 =>
  5032.  -- PUT( 32 ,4);
  5033.  
  5034.      Set_Decl_Name (Array_Type) ;
  5035.      Note_Violation (NONSCALAR_TYPE_VIOLATION) ;
  5036.   ----------------------------------------------------------------------
  5037.  -- type_definition ::= record_type_definition  
  5038.  
  5039.  when 33 =>
  5040.  -- PUT( 33 ,4);
  5041.  
  5042.      Set_Decl_Name (Record_Type) ;
  5043.      Note_Violation (NONSCALAR_TYPE_VIOLATION) ;
  5044.   ----------------------------------------------------------------------
  5045.  -- type_definition ::= access_type_definition  
  5046.  
  5047.  when 34 =>
  5048.  -- PUT( 34 ,4);
  5049.  
  5050.      Set_Decl_Name (Access_Type) ;
  5051.      Note_Violation (NONSCALAR_TYPE_VIOLATION) ;
  5052.   ----------------------------------------------------------------------
  5053.  -- type_definition ::= derived_type_definition  
  5054.  
  5055.  when 35 =>
  5056.  -- PUT( 35 ,4);
  5057.  
  5058.      Set_Decl_Name (Derived_Type) ;
  5059.   ----------------------------------------------------------------------
  5060.  -- subtype_declaration ::= SUBTYPE type_identifier is__subtype_indication ;  
  5061.  
  5062.  when 36 =>
  5063.  -- PUT( 36 ,4);
  5064.  
  5065.      Increment_Statement_Count ;
  5066.      Set_Range_Constraint (OFF) ;
  5067.   ----------------------------------------------------------------------
  5068.  -- is__subtype_indication ::= IS subtype_indication  
  5069.  
  5070.  when 37 =>
  5071.  -- PUT( 37 ,4);
  5072.  
  5073.      Set_Decl_Name (Subtype_Type) ;
  5074.      Check_Names (Type_Name_Violation) ;
  5075.   ----------------------------------------------------------------------
  5076.  -- derived_type_definition ::= NEW subtype_indication  
  5077.  
  5078.  when 45 =>
  5079.  -- PUT( 45 ,4);
  5080.  
  5081.      Set_Range_Constraint (OFF) ;
  5082.   ----------------------------------------------------------------------
  5083.  -- range_constraint ::= RANGE simple_expression .. simple_expression  
  5084.  
  5085.  when 47 =>
  5086.  -- PUT( 47 ,4);
  5087.  
  5088.      Set_Range_Constraint (ON) ;
  5089.   ----------------------------------------------------------------------
  5090.  -- integer_type_definition ::= range_constraint  
  5091.  
  5092.  when 52 =>
  5093.  -- PUT( 52 ,4);
  5094.  
  5095.      Set_Range_Constraint (OFF) ;
  5096.   ----------------------------------------------------------------------
  5097.  -- real_type_definition ::= floating_point_constraint  
  5098.  
  5099.  when 53 =>
  5100.  -- PUT( 53 ,4);
  5101.  
  5102.      Set_Range_Constraint (OFF) ;
  5103.   ----------------------------------------------------------------------
  5104.  -- real_type_definition ::= fixed_point_constraint  
  5105.  
  5106.  when 54 =>
  5107.  -- PUT( 54 ,4);
  5108.  
  5109.      Set_Range_Constraint (OFF) ;
  5110.   ----------------------------------------------------------------------
  5111.  -- array_type_definition ::= unconstrained_array_definition  
  5112.  
  5113.  when 59 =>
  5114.  -- PUT( 59 ,4);
  5115.  
  5116.      Set_Range_Constraint (OFF) ;
  5117.   ----------------------------------------------------------------------
  5118.  -- index_subtype_definition ::= name RANGE <>  
  5119.  
  5120.  when 63 =>
  5121.  -- PUT( 63 ,4);
  5122.  
  5123.      Set_Range_Constraint (OFF) ;
  5124.   ----------------------------------------------------------------------
  5125.  -- index_constraint ::= ( discrete_range {,discrete_range} )  
  5126.  
  5127.  when 64 =>
  5128.  -- PUT( 64 ,4);
  5129.  
  5130.      Check_Range_Constraint ;
  5131.   ----------------------------------------------------------------------
  5132.  -- range ::= simple_expression .. simple_expression  
  5133.  
  5134.  when 68 =>
  5135.  -- PUT( 68 ,4);
  5136.  
  5137.      Set_Range_Constraint (ON) ;
  5138.   ----------------------------------------------------------------------
  5139.  -- component_item ::= identifier_list : subtype_indication [:=expression]  
  5140.  
  5141.  when 74 =>
  5142.  -- PUT( 74 ,4);
  5143.  
  5144.      Check_Builtin_Types ;
  5145.   ----------------------------------------------------------------------
  5146.  -- choice ::= simple_expression  
  5147.  
  5148.  when 79 =>
  5149.  -- PUT( 79 ,4);
  5150.  
  5151.      Set_Range_Constraint (OFF) ;
  5152.   ----------------------------------------------------------------------
  5153.  -- choice ::= simple_expression .. simple_expression  
  5154.  
  5155.  when 80 =>
  5156.  -- PUT( 80 ,4);
  5157.  
  5158.      Set_Range_Constraint (OFF) ;
  5159.   ----------------------------------------------------------------------
  5160.  -- choice ::= name range_constraint  
  5161.  
  5162.  when 81 =>
  5163.  -- PUT( 81 ,4);
  5164.  
  5165.      Set_Range_Constraint (OFF) ;
  5166.   ----------------------------------------------------------------------
  5167.  -- access_type_definition ::= ACCESS subtype_indication  
  5168.  
  5169.  when 82 =>
  5170.  -- PUT( 82 ,4);
  5171.  
  5172.      Set_Range_Constraint (OFF) ;
  5173.   ----------------------------------------------------------------------
  5174.  -- incomplete_type_declaration ::= TYPE type_identifier ;  
  5175.  
  5176.  when 83 =>
  5177.  -- PUT( 83 ,4);
  5178.  
  5179.      Increment_Statement_Count ;
  5180.   ----------------------------------------------------------------------
  5181.  -- incomplete_type_declaration ::= TYPE type_identifier ( ) ;  
  5182.  
  5183.  when 84 =>
  5184.  -- PUT( 84 ,4);
  5185.  
  5186.      Increment_Statement_Count ;
  5187.   ----------------------------------------------------------------------
  5188.  -- component_associations ::= expression,expression{,expression}  
  5189.  
  5190.  when 120 =>
  5191.  -- PUT( 120 ,4);
  5192.  
  5193.      Set_Range_Constraint (OFF) ;
  5194.   ----------------------------------------------------------------------
  5195.  -- component_associations ::= expression,expression{,expression} ,  
  5196.  
  5197.  when 121 =>
  5198.  -- PUT( 121 ,4);
  5199.  
  5200.      Set_Range_Constraint (OFF) ;
  5201.   ----------------------------------------------------------------------
  5202.  -- component_associations ::= expression , choice{|choice}=>expression  
  5203.  
  5204.  when 122 =>
  5205.  -- PUT( 122 ,4);
  5206.  
  5207.      Set_Range_Constraint (OFF) ;
  5208.   ----------------------------------------------------------------------
  5209.  -- component_associations ::= choice{|choice}=>expression [,others=>expression] 
  5210.  
  5211.  when 123 =>
  5212.  -- PUT( 123 ,4);
  5213.  
  5214.      Set_Range_Constraint (OFF) ;
  5215.   ----------------------------------------------------------------------
  5216.  -- component_associations ::= expression , others=>expression  
  5217.  
  5218.  when 124 =>
  5219.  -- PUT( 124 ,4);
  5220.  
  5221.      Set_Range_Constraint (OFF) ;
  5222.   ----------------------------------------------------------------------
  5223.  -- component_associations ::= others=>expression  
  5224.  
  5225.  when 125 =>
  5226.  -- PUT( 125 ,4);
  5227.  
  5228.      Set_Range_Constraint (OFF) ;
  5229.   ----------------------------------------------------------------------
  5230.  -- primary ::= numeric_literal  
  5231.  
  5232.  when 142 =>
  5233.  -- PUT( 142 ,4);
  5234.  
  5235.      Note_Violation (NAMED_NUMBER_VIOLATION) ;
  5236.   ----------------------------------------------------------------------
  5237.  -- relational_operator ::= =  
  5238.  
  5239.  when 149 =>
  5240.  -- PUT( 149 ,4);
  5241.  
  5242.      Check_Boolean ;
  5243.   ----------------------------------------------------------------------
  5244.  -- relational_operator ::= /=  
  5245.  
  5246.  when 150 =>
  5247.  -- PUT( 150 ,4);
  5248.  
  5249.      Check_Boolean ;
  5250.   ----------------------------------------------------------------------
  5251.  -- null_statement ::= NULL ;  
  5252.  
  5253.  when 195 =>
  5254.  -- PUT( 195 ,4);
  5255.  
  5256.      Increment_Statement_Count ;
  5257.   ----------------------------------------------------------------------
  5258.  -- assignment_statement ::= name := expression ;  
  5259.  
  5260.  when 196 =>
  5261.  -- PUT( 196 ,4);
  5262.  
  5263.      Increment_Statement_Count ;
  5264.      Set_Range_Constraint (OFF) ;
  5265.   ----------------------------------------------------------------------
  5266.  -- if_statement ::= IF condition_THEN__sequence_of_statements END IF ;  
  5267.  
  5268.  when 197 =>
  5269.  -- PUT( 197 ,4);
  5270.  
  5271.      Increment_Statement_Count ;
  5272.   ----------------------------------------------------------------------
  5273.  -- condition ::= expression  
  5274.  
  5275.  when 198 =>
  5276.  -- PUT( 198 ,4);
  5277.  
  5278.      Set_Range_Constraint (OFF) ;
  5279.   ----------------------------------------------------------------------
  5280.  -- case_statement ::= CASE expression IS {pragma_alt}  
  5281.  --     case_statement_alternative  
  5282.  
  5283.  when 199 =>
  5284.  -- PUT( 199 ,4);
  5285.  
  5286.      Increment_Statement_Count ;
  5287.      Set_Range_Constraint (OFF) ;
  5288.   ----------------------------------------------------------------------
  5289.  -- loop_statement ::= [loop_identifier:] LOOP sequence_of_statements END LOOP ; 
  5290.  
  5291.  when 202 =>
  5292.  -- PUT( 202 ,4);
  5293.  
  5294.      Increment_Statement_Count ;
  5295.   ----------------------------------------------------------------------
  5296.  -- loop_statement ::= [loop_identifier:] iteration_rule LOOP END LOOP ;  
  5297.  
  5298.  when 203 =>
  5299.  -- PUT( 203 ,4);
  5300.  
  5301.      Increment_Statement_Count ;
  5302.   ----------------------------------------------------------------------
  5303.  -- iteration_rule ::= FOR identifier IN discrete_range  
  5304.  
  5305.  when 205 =>
  5306.  -- PUT( 205 ,4);
  5307.  
  5308.      Check_Range_Constraint ;
  5309.   ----------------------------------------------------------------------
  5310.  -- iteration_rule ::= FOR identifier IN REVERSE discrete_range  
  5311.  
  5312.  when 206 =>
  5313.  -- PUT( 206 ,4);
  5314.  
  5315.      Check_Range_Constraint ;
  5316.   ----------------------------------------------------------------------
  5317.  -- begin_end_block ::= begin_end_block_head sequence_of_statements END  
  5318.  
  5319.  when 208 =>
  5320.  -- PUT( 208 ,4);
  5321.  
  5322.      Set_Body_Indicator (OFF) ;
  5323.   ----------------------------------------------------------------------
  5324.  -- begin_end_block ::= begin_end_block_head sequence_of_statements EXCEPTION  
  5325.  --     END  
  5326.  
  5327.  when 209 =>
  5328.  -- PUT( 209 ,4);
  5329.  
  5330.      Set_Body_Indicator (OFF) ;
  5331.   ----------------------------------------------------------------------
  5332.  -- begin_end_block_head ::= BEGIN  
  5333.  
  5334.  when 210 =>
  5335.  -- PUT( 210 ,4);
  5336.  
  5337.      Set_Body_Indicator (ON) ;
  5338.   ----------------------------------------------------------------------
  5339.  -- block_statement ::= [block_identifier:] declare_item [identifier] ;  
  5340.  
  5341.  when 211 =>
  5342.  -- PUT( 211 ,4);
  5343.  
  5344.      Set_Body_Indicator (ON) ;
  5345.      Increment_Statement_Count ;
  5346.   ----------------------------------------------------------------------
  5347.  -- block_statement ::= [block_identifier:] begin_end_block [identifier] ;  
  5348.  
  5349.  when 212 =>
  5350.  -- PUT( 212 ,4);
  5351.  
  5352.      Set_Body_Indicator (ON) ;
  5353.      Increment_Statement_Count ;
  5354.   ----------------------------------------------------------------------
  5355.  -- declare_item ::= DECLARE  
  5356.  
  5357.  when 213 =>
  5358.  -- PUT( 213 ,4);
  5359.  
  5360.      Set_Body_Indicator (OFF) ;
  5361.   ----------------------------------------------------------------------
  5362.  -- exit_item ::= EXIT  
  5363.  
  5364.  when 215 =>
  5365.  -- PUT( 215 ,4);
  5366.  
  5367.      Increment_Statement_Count ;
  5368.      Note_Violation (EXIT_IF_VIOLATION) ;
  5369.   ----------------------------------------------------------------------
  5370.  -- exit_item ::= EXIT WHEN condition  
  5371.  
  5372.  when 216 =>
  5373.  -- PUT( 216 ,4);
  5374.  
  5375.      Increment_Statement_Count ;
  5376.   ----------------------------------------------------------------------
  5377.  -- exit_item ::= EXIT expanded_name  
  5378.  
  5379.  when 217 =>
  5380.  -- PUT( 217 ,4);
  5381.  
  5382.      Increment_Statement_Count ;
  5383.      Note_Violation (EXIT_IF_VIOLATION) ;
  5384.   ----------------------------------------------------------------------
  5385.  -- exit_item ::= EXIT expanded_name WHEN condition  
  5386.  
  5387.  when 218 =>
  5388.  -- PUT( 218 ,4);
  5389.  
  5390.      Increment_Statement_Count ;
  5391.   ----------------------------------------------------------------------
  5392.  -- return_statement ::= RETURN ;  
  5393.  
  5394.  when 219 =>
  5395.  -- PUT( 219 ,4);
  5396.  
  5397.      Increment_Statement_Count ;
  5398.   ----------------------------------------------------------------------
  5399.  -- return_statement ::= RETURN expression ;  
  5400.  
  5401.  when 220 =>
  5402.  -- PUT( 220 ,4);
  5403.  
  5404.      Increment_Statement_Count ;
  5405.      Set_Range_Constraint (OFF) ;
  5406.   ----------------------------------------------------------------------
  5407.  -- goto_item ::= GOTO expanded_name  
  5408.  
  5409.  when 222 =>
  5410.  -- PUT( 222 ,4);
  5411.  
  5412.      Increment_Statement_Count ;
  5413.      Note_Violation (GOTO_VIOLATION) ;
  5414.   ----------------------------------------------------------------------
  5415.  -- subprogram_declaration ::= subprogram_specification ;  
  5416.  
  5417.  when 223 =>
  5418.  -- PUT( 223 ,4);
  5419.  
  5420.      Increment_Statement_Count ;
  5421.   ----------------------------------------------------------------------
  5422.  -- subprogram_specification ::= PROCEDURE subprogram_identifier ( )  
  5423.  
  5424.  when 225 =>
  5425.  -- PUT( 225 ,4);
  5426.  
  5427.      Check_Parameters ;
  5428.   ----------------------------------------------------------------------
  5429.  -- subprogram_specification ::= FUNCTION designator ( parameter_specification ) 
  5430.  
  5431.  when 227 =>
  5432.  -- PUT( 227 ,4);
  5433.  
  5434.      Check_Parameters ;
  5435.   ----------------------------------------------------------------------
  5436.  -- designator ::= identifier  
  5437.  
  5438.  when 228 =>
  5439.  -- PUT( 228 ,4);
  5440.  
  5441.      Save_Unit_Name ;
  5442.      Save_Type_Name ;
  5443.      Set_Decl_Name (Function_Type) ;
  5444.      Check_Names (Function_Name_Violation) ;
  5445.      Param_Count := 0;
  5446.   ----------------------------------------------------------------------
  5447.  -- designator ::= string_literal  
  5448.  
  5449.  when 229 =>
  5450.  -- PUT( 229 ,4);
  5451.  
  5452.      Save_Unit_Name ;
  5453.      Save_Type_Name ;
  5454.      Set_Decl_Name (Function_Type) ;
  5455.      Param_Count := 0;
  5456.   ----------------------------------------------------------------------
  5457.  -- subprogram_identifier ::= identifier  
  5458.  
  5459.  when 230 =>
  5460.  -- PUT( 230 ,4);
  5461.  
  5462.      Save_Unit_Name ;
  5463.      Save_Type_Name ;
  5464.      Set_Decl_Name (Procedure_Type) ;
  5465.      Check_Names (Procedure_Name_Violation) ;
  5466.      Param_Count := 0;
  5467.   ----------------------------------------------------------------------
  5468.  -- parameter_specification ::= identifier_list mode type_mark [:=expression]  
  5469.  
  5470.  when 231 =>
  5471.  -- PUT( 231 ,4);
  5472.  
  5473.      Increment_Parameter_Count ;
  5474.      Check_Builtin_Types ;
  5475.   ----------------------------------------------------------------------
  5476.  -- subprogram_body_head ::= subprogram_specification IS  
  5477.  
  5478.  when 238 =>
  5479.  -- PUT( 238 ,4);
  5480.  
  5481.      Enter_Subprogram ;
  5482.      Set_Body_Indicator (OFF) ;
  5483.   ----------------------------------------------------------------------
  5484.  -- subprogram_body_tail ::= declarative_part__begin_end_block [end_designator]  
  5485.  --     ;  
  5486.  
  5487.  when 239 =>
  5488.  -- PUT( 239 ,4);
  5489.  
  5490.      Exit_Subprogram ;
  5491.   ----------------------------------------------------------------------
  5492.  -- call_statement ::= name ;  
  5493.  
  5494.  when 240 =>
  5495.  -- PUT( 240 ,4);
  5496.  
  5497.      Set_Range_Constraint (OFF) ;
  5498.   ----------------------------------------------------------------------
  5499.  -- package_declaration ::= package_specification ;  
  5500.  
  5501.  when 241 =>
  5502.  -- PUT( 241 ,4);
  5503.  
  5504.      Increment_Statement_Count ;
  5505.   ----------------------------------------------------------------------
  5506.  -- package_specification ::= PACKAGE package_identifier IS END [identifier]  
  5507.  
  5508.  when 242 =>
  5509.  -- PUT( 242 ,4);
  5510.  
  5511.      Set_Package_Indicator (OFF) ;
  5512.   ----------------------------------------------------------------------
  5513.  -- package_specification ::= PACKAGE package_identifier IS private_part END  
  5514.  
  5515.  when 243 =>
  5516.  -- PUT( 243 ,4);
  5517.  
  5518.      Set_Visibility (ON) ;
  5519.      Set_Package_Indicator (OFF) ;
  5520.   ----------------------------------------------------------------------
  5521.  -- private_part ::= PRIVATE  
  5522.  
  5523.  when 244 =>
  5524.  -- PUT( 244 ,4);
  5525.  
  5526.      Set_Visibility (OFF) ;
  5527.   ----------------------------------------------------------------------
  5528.  -- package_identifier ::= identifier  
  5529.  
  5530.  when 245 =>
  5531.  -- PUT( 245 ,4);
  5532.  
  5533.      Save_Unit_Name ;
  5534.      Save_Type_Name ;
  5535.      Set_Decl_Name (Package_Type) ;
  5536.      Check_Names (Package_Name_Violation) ;
  5537.      Set_Package_Indicator (ON) ;
  5538.   ----------------------------------------------------------------------
  5539.  -- package_body ::= package_body_indicator declarative_part END [identifier] ;  
  5540.  
  5541.  when 246 =>
  5542.  -- PUT( 246 ,4);
  5543.  
  5544.      Set_Visibility (ON) ;
  5545.      Set_Package_Indicator (OFF) ;
  5546.   ----------------------------------------------------------------------
  5547.  -- package_body ::= package_body_indicator declarative_part__begin_end_block ;  
  5548.  
  5549.  when 247 =>
  5550.  -- PUT( 247 ,4);
  5551.  
  5552.      Set_Visibility (ON) ;
  5553.      Set_Package_Indicator (OFF) ;
  5554.   ----------------------------------------------------------------------
  5555.  -- package_body_indicator ::= PACKAGE BODY identifier IS  
  5556.  
  5557.  when 248 =>
  5558.  -- PUT( 248 ,4);
  5559.  
  5560.      Set_Visibility (OFF) ;
  5561.      Set_Package_Indicator (ON) ;
  5562.   ----------------------------------------------------------------------
  5563.  -- private_type_declaration ::= TYPE type_identifier IS LIMITED PRIVATE ;  
  5564.  
  5565.  when 249 =>
  5566.  -- PUT( 249 ,4);
  5567.  
  5568.      Increment_Statement_Count ;
  5569.   ----------------------------------------------------------------------
  5570.  -- use_clause ::= USE expanded_name {,expanded_name} ;  
  5571.  
  5572.  when 253 =>
  5573.  -- PUT( 253 ,4);
  5574.  
  5575.      Increment_Statement_Count ;
  5576.   ----------------------------------------------------------------------
  5577.  -- renaming_declaration ::= identifier_list : type_mark RENAMES name ;  
  5578.  
  5579.  when 254 =>
  5580.  -- PUT( 254 ,4);
  5581.  
  5582.      Increment_Statement_Count ;
  5583.      Set_Range_Constraint (OFF) ;
  5584.   ----------------------------------------------------------------------
  5585.  -- renaming_declaration ::= identifier_list : EXCEPTION RENAMES expanded_name ; 
  5586.  
  5587.  when 255 =>
  5588.  -- PUT( 255 ,4);
  5589.  
  5590.      Increment_Statement_Count ;
  5591.      Set_Range_Constraint (OFF) ;
  5592.   ----------------------------------------------------------------------
  5593.  -- renaming_declaration ::= PACKAGE package_identifier RENAMES expanded_name ;  
  5594.  
  5595.  when 256 =>
  5596.  -- PUT( 256 ,4);
  5597.  
  5598.      Increment_Statement_Count ;
  5599.      Set_Range_Constraint (OFF) ;
  5600.   ----------------------------------------------------------------------
  5601.  -- renaming_declaration ::= subprogram_specification RENAMES name ;  
  5602.  
  5603.  when 257 =>
  5604.  -- PUT( 257 ,4);
  5605.  
  5606.      Increment_Statement_Count ;
  5607.      Set_Range_Constraint (OFF) ;
  5608.   ----------------------------------------------------------------------
  5609.  -- task_declaration ::= task_specification ;  
  5610.  
  5611.  when 258 =>
  5612.  -- PUT( 258 ,4);
  5613.  
  5614.      Increment_Statement_Count ;
  5615.   ----------------------------------------------------------------------
  5616.  -- task_identifier ::= identifier  
  5617.  
  5618.  when 263 =>
  5619.  -- PUT( 263 ,4);
  5620.  
  5621.      Save_Type_Name ;
  5622.      Set_Decl_Name (Task_Type) ;
  5623.      Check_Names (Type_Name_Violation) ;
  5624.   ----------------------------------------------------------------------
  5625.  -- entry_declaration ::= ENTRY identifier [(discrete_range)][formal_part] ;  
  5626.  
  5627.  when 266 =>
  5628.  -- PUT( 266 ,4);
  5629.  
  5630.      Check_Range_Constraint ;
  5631.   ----------------------------------------------------------------------
  5632.  -- accept_statement ::= ACCEPT identifier [(expression)][formal_part] ;  
  5633.  
  5634.  when 267 =>
  5635.  -- PUT( 267 ,4);
  5636.  
  5637.      Increment_Statement_Count ;
  5638.   ----------------------------------------------------------------------
  5639.  -- accept_statement ::= ACCEPT identifier [(expression)][formal_part] DO END ;  
  5640.  
  5641.  when 268 =>
  5642.  -- PUT( 268 ,4);
  5643.  
  5644.      Increment_Statement_Count ;
  5645.   ----------------------------------------------------------------------
  5646.  -- delay_statement ::= DELAY simple_expression ;  
  5647.  
  5648.  when 269 =>
  5649.  -- PUT( 269 ,4);
  5650.  
  5651.      Increment_Statement_Count ;
  5652.   ----------------------------------------------------------------------
  5653.  -- selective_wait ::= SELECT select_alternative {OR__select_alternative} END ;  
  5654.  
  5655.  when 273 =>
  5656.  -- PUT( 273 ,4);
  5657.  
  5658.      Increment_Statement_Count ;
  5659.   ----------------------------------------------------------------------
  5660.  -- conditional_entry_call ::= SELECT {pragma_stm} call_statement ELSE END  
  5661.  --     SELECT  
  5662.  
  5663.  when 282 =>
  5664.  -- PUT( 282 ,4);
  5665.  
  5666.      Increment_Statement_Count ;
  5667.   ----------------------------------------------------------------------
  5668.  -- timed_entry_call ::= SELECT {pragma_stm} call_statement OR {pragma_stm} END  
  5669.  
  5670.  when 283 =>
  5671.  -- PUT( 283 ,4);
  5672.  
  5673.      Increment_Statement_Count ;
  5674.   ----------------------------------------------------------------------
  5675.  -- abort_statement ::= ABORT name {,name} ;  
  5676.  
  5677.  when 284 =>
  5678.  -- PUT( 284 ,4);
  5679.  
  5680.      Increment_Statement_Count ;
  5681.      Set_Range_Constraint (OFF) ;
  5682.   ----------------------------------------------------------------------
  5683.  -- compilation_unit ::= pragma_header ( general_component_associations ) ;  
  5684.  
  5685.  when 287 =>
  5686.  -- PUT( 287 ,4);
  5687.  
  5688.      Set_Range_Constraint (OFF) ;
  5689.   ----------------------------------------------------------------------
  5690.  -- with_clause ::= WITH identifier {,used_identifier} ;  
  5691.  
  5692.  when 298 =>
  5693.  -- PUT( 298 ,4);
  5694.  
  5695.      Increment_Statement_Count ;
  5696.   ----------------------------------------------------------------------
  5697.  -- body_stub ::= subprogram_specification IS SEPARATE ;  
  5698.  
  5699.  when 299 =>
  5700.  -- PUT( 299 ,4);
  5701.  
  5702.      Increment_Statement_Count ;
  5703.   ----------------------------------------------------------------------
  5704.  -- body_stub ::= PACKAGE BODY identifier IS SEPARATE ;  
  5705.  
  5706.  when 300 =>
  5707.  -- PUT( 300 ,4);
  5708.  
  5709.      Increment_Statement_Count ;
  5710.   ----------------------------------------------------------------------
  5711.  -- body_stub ::= TASK BODY identifier IS SEPARATE ;  
  5712.  
  5713.  when 301 =>
  5714.  -- PUT( 301 ,4);
  5715.  
  5716.      Increment_Statement_Count ;
  5717.   ----------------------------------------------------------------------
  5718.  -- exception_declaration ::= identifier_list : EXCEPTION ;  
  5719.  
  5720.  when 303 =>
  5721.  -- PUT( 303 ,4);
  5722.  
  5723.      Increment_Statement_Count ;
  5724.   ----------------------------------------------------------------------
  5725.  -- exception_handler ::= WHEN exception_choice {|exception_choice} =>  
  5726.  
  5727.  when 304 =>
  5728.  -- PUT( 304 ,4);
  5729.  
  5730.      Increment_Statement_Count ;
  5731.   ----------------------------------------------------------------------
  5732.  -- raise_statement ::= RAISE ;  
  5733.  
  5734.  when 307 =>
  5735.  -- PUT( 307 ,4);
  5736.  
  5737.      Increment_Statement_Count ;
  5738.   ----------------------------------------------------------------------
  5739.  -- raise_statement ::= RAISE expanded_name ;  
  5740.  
  5741.  when 308 =>
  5742.  -- PUT( 308 ,4);
  5743.  
  5744.      Increment_Statement_Count ;
  5745.   ----------------------------------------------------------------------
  5746.  -- generic_declaration ::= generic_specification ;  
  5747.  
  5748.  when 309 =>
  5749.  -- PUT( 309 ,4);
  5750.  
  5751.      Increment_Statement_Count ;
  5752.   ----------------------------------------------------------------------
  5753.  -- generic_instantiation ::= PACKAGE package_identifier IS NEW expanded_name ;  
  5754.  
  5755.  when 325 =>
  5756.  -- PUT( 325 ,4);
  5757.  
  5758.      Increment_Statement_Count ;
  5759.   ----------------------------------------------------------------------
  5760.  -- generic_instantiation ::= PACKAGE package_identifier IS NEW expanded_name (  
  5761.  --     )  
  5762.  
  5763.  when 326 =>
  5764.  -- PUT( 326 ,4);
  5765.  
  5766.      Increment_Statement_Count ;
  5767.   ----------------------------------------------------------------------
  5768.  -- generic_instantiation ::= FUNCTION designator IS NEW expanded_name ;  
  5769.  
  5770.  when 327 =>
  5771.  -- PUT( 327 ,4);
  5772.  
  5773.      Increment_Statement_Count ;
  5774.   ----------------------------------------------------------------------
  5775.  -- generic_instantiation ::= FUNCTION designator IS NEW expanded_name ( ) ;  
  5776.  
  5777.  when 328 =>
  5778.  -- PUT( 328 ,4);
  5779.  
  5780.      Increment_Statement_Count ;
  5781.   ----------------------------------------------------------------------
  5782.  -- generic_instantiation ::= subprogram_specification IS NEW expanded_name ;  
  5783.  
  5784.  when 329 =>
  5785.  -- PUT( 329 ,4);
  5786.  
  5787.      Increment_Statement_Count ;
  5788.   ----------------------------------------------------------------------
  5789.  -- generic_instantiation ::= subprogram_specification IS NEW expanded_name ( )  
  5790.  --     ;  
  5791.  
  5792.  when 330 =>
  5793.  -- PUT( 330 ,4);
  5794.  
  5795.      Increment_Statement_Count ;
  5796.   ----------------------------------------------------------------------
  5797.  -- generic_actual_parameter ::= expression  
  5798.  
  5799.  when 334 =>
  5800.  -- PUT( 334 ,4);
  5801.  
  5802.      Check_Range_Constraint ;
  5803.   ----------------------------------------------------------------------
  5804.  -- representation_item ::= length_clause  
  5805.  
  5806.  when 336 =>
  5807.  -- PUT( 336 ,4);
  5808.  
  5809.      Note_Violation (REP_SPEC_VIOLATION) ;
  5810.      Check_Range_Constraint ;
  5811.   ----------------------------------------------------------------------
  5812.  -- representation_item ::= enumeration_representation_clause  
  5813.  
  5814.  when 337 =>
  5815.  -- PUT( 337 ,4);
  5816.  
  5817.      Note_Violation (REP_SPEC_VIOLATION) ;
  5818.      Check_Range_Constraint ;
  5819.   ----------------------------------------------------------------------
  5820.  -- representation_item ::= address_clause  
  5821.  
  5822.  when 338 =>
  5823.  -- PUT( 338 ,4);
  5824.  
  5825.      Note_Violation (REP_SPEC_VIOLATION) ;
  5826.      Check_Range_Constraint ;
  5827.   ----------------------------------------------------------------------
  5828.  -- representation_item ::= record_representation_clause  
  5829.  
  5830.  when 339 =>
  5831.  -- PUT( 339 ,4);
  5832.  
  5833.      Note_Violation (REP_SPEC_VIOLATION) ;
  5834.   ----------------------------------------------------------------------
  5835.  -- code_item ::= name ' aggregate  
  5836.  
  5837.  when 348 =>
  5838.  -- PUT( 348 ,4);
  5839.  
  5840.      Increment_Statement_Count ;
  5841.      Set_Range_Constraint (OFF) ;
  5842.      Note_Violation (CODE_STATEMENT_VIOLATION) ;
  5843.   ----------------------------------------------------------------------
  5844.  -- [:=expression] ::= empty  
  5845.  
  5846.  when 357 =>
  5847.  -- PUT( 357 ,4);
  5848.  
  5849.      Set_Range_Constraint (OFF) ;
  5850.   ----------------------------------------------------------------------
  5851.  -- [:=expression] ::= := expression  
  5852.  
  5853.  when 358 =>
  5854.  -- PUT( 358 ,4);
  5855.  
  5856.      Set_Range_Constraint (OFF) ;
  5857.   ----------------------------------------------------------------------
  5858.  -- expanded_name ::= identifier  
  5859.  
  5860.  when 362 =>
  5861.  -- PUT( 362 ,4);
  5862.  
  5863.      Save_Builtin_Name ;
  5864.   ----------------------------------------------------------------------
  5865.  -- expanded_name ::= expanded_name . identifier  
  5866.  
  5867.  when 363 =>
  5868.  -- PUT( 363 ,4);
  5869.  
  5870.      Save_Builtin_Name ;
  5871.   ----------------------------------------------------------------------
  5872.  -- expression,expression{,expression} ::= expression , expression  
  5873.  
  5874.  when 384 =>
  5875.  -- PUT( 384 ,4);
  5876.  
  5877.      Set_Range_Constraint (OFF) ;
  5878.   ----------------------------------------------------------------------
  5879.  -- expression,expression{,expression} ::= expression,expression{,expression} ,  
  5880.  
  5881.  when 385 =>
  5882.  -- PUT( 385 ,4);
  5883.  
  5884.      Set_Range_Constraint (OFF) ;
  5885.   ----------------------------------------------------------------------
  5886.  -- choice{|choice}=>expression ::= choice {|choice} => expression  
  5887.  
  5888.  when 386 =>
  5889.  -- PUT( 386 ,4);
  5890.  
  5891.      Set_Range_Constraint (OFF) ;
  5892.   ----------------------------------------------------------------------
  5893.  -- [,others=>expression] ::= empty  
  5894.  
  5895.  when 389 =>
  5896.  -- PUT( 389 ,4);
  5897.  
  5898.      Set_Range_Constraint (OFF) ;
  5899.   ----------------------------------------------------------------------
  5900.  -- others=>expression ::= OTHERS => expression  
  5901.  
  5902.  when 391 =>
  5903.  -- PUT( 391 ,4);
  5904.  
  5905.      Set_Range_Constraint (OFF) ;
  5906.   ----------------------------------------------------------------------
  5907.  -- ga_expression ::= simple_expression .. simple_expression  
  5908.  
  5909.  when 393 =>
  5910.  -- PUT( 393 ,4);
  5911.  
  5912.      Set_Range_Constraint (ON) ;
  5913.   ----------------------------------------------------------------------
  5914.  -- identifier{|identifier}=>expression ::= identifier {|identifier} =>  
  5915.  --     expression  
  5916.  
  5917.  when 397 =>
  5918.  -- PUT( 397 ,4);
  5919.  
  5920.      Set_Range_Constraint (OFF) ;
  5921.   ----------------------------------------------------------------------
  5922.  -- [unary_adding_operator]term{binary_adding_operator__term} ::= term  
  5923.  
  5924.  when 416 =>
  5925.  -- PUT( 416 ,4);
  5926.  
  5927.      Set_Range_Constraint (OFF) ;
  5928.   ----------------------------------------------------------------------
  5929.  -- [unary_adding_operator]term{binary_adding_operator__term} ::= term  
  5930.  
  5931.  when 417 =>
  5932.  -- PUT( 417 ,4);
  5933.  
  5934.      Set_Range_Constraint (OFF) ;
  5935.   ----------------------------------------------------------------------
  5936.  -- [unary_adding_operator]term{binary_adding_operator__term} ::= term  
  5937.  
  5938.  when 418 =>
  5939.  -- PUT( 418 ,4);
  5940.  
  5941.      Set_Range_Constraint (OFF) ;
  5942.   ----------------------------------------------------------------------
  5943.  -- {ELSIF__condition__THEN__sequence_of_statements} ::= ELSIF condition THEN  
  5944.  
  5945.  when 429 =>
  5946.  -- PUT( 429 ,4);
  5947.  
  5948.      Increment_Statement_Count ;
  5949.   ----------------------------------------------------------------------
  5950.  -- [ELSE__sequence_of_statements] ::= ELSE sequence_of_statements  
  5951.  
  5952.  when 431 =>
  5953.  -- PUT( 431 ,4);
  5954.  
  5955.      Increment_Statement_Count ;
  5956.   ----------------------------------------------------------------------
  5957.  -- [(expression)][formal_part] ::= ( expression )  
  5958.  
  5959.  when 460 =>
  5960.  -- PUT( 460 ,4);
  5961.  
  5962.      Set_Range_Constraint (OFF) ;
  5963.   ----------------------------------------------------------------------
  5964.  -- [(expression)][formal_part] ::= ( expression ) ( parameter_specification )  
  5965.  
  5966.  when 461 =>
  5967.  -- PUT( 461 ,4);
  5968.  
  5969.      Set_Range_Constraint (OFF) ;
  5970.   ----------------------------------------------------------------------
  5971.  -- [IS__name__or__<>] ::= IS name  
  5972.  
  5973.  when 481 =>
  5974.  -- PUT( 481 ,4);
  5975.  
  5976.      Set_Range_Constraint (OFF) ;
  5977.  
  5978.      when others =>
  5979.          null;
  5980.      end case;
  5981.  
  5982.  end Apply_Actions;
  5983.  
  5984.  
  5985. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5986. --GETNEXT.SUB
  5987. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5988. with Standards_Checker_Utilities;    use Standards_Checker_Utilities;
  5989.  
  5990. separate (Lex)
  5991. function GetNextNonCommentToken return PD.ParseStackElement is
  5992.     begin
  5993.  
  5994.     Previous_Token := CST;
  5995.  
  5996.         loop
  5997.             CST := GetNextSourceToken;
  5998.             -- CST is the current source Token which is a
  5999.             -- PD.ParseStackElement
  6000.             exit when (CST.gram_sym_val = PT.EOF_TokenValue) or
  6001.                       (CST.gram_sym_val /= PT.Comment_TokenValue);
  6002.  
  6003. --          comments are ignored in standards checker
  6004.  
  6005.             end loop;
  6006.         return CST;    -- return the token that is not a comment
  6007.     end GetNextNonCommentToken;
  6008.  
  6009. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  6010. --WRITELINE.SUB
  6011. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  6012. with Standards_Checker_Utilities;    use Standards_Checker_Utilities;
  6013. with Standards_Checker_Declarations;    use Standards_Checker_Declarations;
  6014. with Paginated_Output;            use Paginated_Output;
  6015. with String_Pkg;            use String_Pkg;
  6016.  
  6017. separate (Lex)
  6018.  
  6019. procedure Write_Line is
  6020.  
  6021. Output_String : String_Type;
  6022.  
  6023.     begin
  6024.  
  6025.     if Print_Mode =    VIOLATION then
  6026.         return;
  6027.     end if;
  6028.     Mark;
  6029.     Output_String := Create(Line_Buffer(Line_Buffer'First .. Line_Buffer_Last));
  6030.     while Length(Output_String) > Max_Characters_Per_Output_Line loop 
  6031.         Put_Line(Substr(Output_String, 1, Max_Characters_Per_Output_Line));
  6032.         Output_String := Substr(Output_String,
  6033.                     Max_Characters_Per_Output_Line + 1,
  6034.                     Length(Output_String) - 
  6035.                     Max_Characters_Per_Output_Line);
  6036.     end loop;
  6037.     Put_Line(Output_String);
  6038.     Release;
  6039.  
  6040.     end Write_Line;
  6041.  
  6042.