parser.go 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485
  1. // Code generated by goyacc -o parser.go parser.go.y. DO NOT EDIT.
  2. //line parser.go.y:2
  3. package parser
  4. import __yyfmt__ "fmt"
  5. //line parser.go.y:2
  6. import (
  7. "github.com/mattn/anko/ast"
  8. )
  9. //line parser.go.y:45
  10. type yySymType struct {
  11. yys int
  12. tok ast.Token
  13. compstmt ast.Stmt
  14. stmts ast.Stmt
  15. stmt ast.Stmt
  16. stmt_var_or_lets ast.Stmt
  17. stmt_var ast.Stmt
  18. stmt_lets ast.Stmt
  19. stmt_if ast.Stmt
  20. stmt_for ast.Stmt
  21. stmt_switch ast.Stmt
  22. stmt_switch_cases ast.Stmt
  23. stmt_switch_case ast.Stmt
  24. stmt_switch_default ast.Stmt
  25. exprs []ast.Expr
  26. expr ast.Expr
  27. expr_idents []string
  28. type_data *ast.TypeStruct
  29. type_data_struct *ast.TypeStruct
  30. slice_count int
  31. expr_member_or_ident ast.Expr
  32. expr_member *ast.MemberExpr
  33. expr_ident *ast.IdentExpr
  34. expr_literals ast.Expr
  35. expr_map *ast.MapExpr
  36. expr_slice ast.Expr
  37. expr_chan ast.Expr
  38. expr_unary ast.Expr
  39. expr_binary ast.Expr
  40. expr_lets ast.Expr
  41. op_binary ast.Operator
  42. op_comparison ast.Operator
  43. op_add ast.Operator
  44. op_multiply ast.Operator
  45. }
  46. const IDENT = 57346
  47. const NUMBER = 57347
  48. const STRING = 57348
  49. const ARRAY = 57349
  50. const VARARG = 57350
  51. const FUNC = 57351
  52. const RETURN = 57352
  53. const VAR = 57353
  54. const THROW = 57354
  55. const IF = 57355
  56. const ELSE = 57356
  57. const FOR = 57357
  58. const IN = 57358
  59. const EQEQ = 57359
  60. const NEQ = 57360
  61. const GE = 57361
  62. const LE = 57362
  63. const OROR = 57363
  64. const ANDAND = 57364
  65. const NEW = 57365
  66. const TRUE = 57366
  67. const FALSE = 57367
  68. const NIL = 57368
  69. const NILCOALESCE = 57369
  70. const MODULE = 57370
  71. const TRY = 57371
  72. const CATCH = 57372
  73. const FINALLY = 57373
  74. const PLUSEQ = 57374
  75. const MINUSEQ = 57375
  76. const MULEQ = 57376
  77. const DIVEQ = 57377
  78. const ANDEQ = 57378
  79. const OREQ = 57379
  80. const BREAK = 57380
  81. const CONTINUE = 57381
  82. const PLUSPLUS = 57382
  83. const MINUSMINUS = 57383
  84. const SHIFTLEFT = 57384
  85. const SHIFTRIGHT = 57385
  86. const SWITCH = 57386
  87. const CASE = 57387
  88. const DEFAULT = 57388
  89. const GO = 57389
  90. const CHAN = 57390
  91. const STRUCT = 57391
  92. const MAKE = 57392
  93. const OPCHAN = 57393
  94. const EQOPCHAN = 57394
  95. const TYPE = 57395
  96. const LEN = 57396
  97. const DELETE = 57397
  98. const CLOSE = 57398
  99. const MAP = 57399
  100. const IMPORT = 57400
  101. const UNARY = 57401
  102. var yyToknames = [...]string{
  103. "$end",
  104. "error",
  105. "$unk",
  106. "IDENT",
  107. "NUMBER",
  108. "STRING",
  109. "ARRAY",
  110. "VARARG",
  111. "FUNC",
  112. "RETURN",
  113. "VAR",
  114. "THROW",
  115. "IF",
  116. "ELSE",
  117. "FOR",
  118. "IN",
  119. "EQEQ",
  120. "NEQ",
  121. "GE",
  122. "LE",
  123. "OROR",
  124. "ANDAND",
  125. "NEW",
  126. "TRUE",
  127. "FALSE",
  128. "NIL",
  129. "NILCOALESCE",
  130. "MODULE",
  131. "TRY",
  132. "CATCH",
  133. "FINALLY",
  134. "PLUSEQ",
  135. "MINUSEQ",
  136. "MULEQ",
  137. "DIVEQ",
  138. "ANDEQ",
  139. "OREQ",
  140. "BREAK",
  141. "CONTINUE",
  142. "PLUSPLUS",
  143. "MINUSMINUS",
  144. "SHIFTLEFT",
  145. "SHIFTRIGHT",
  146. "SWITCH",
  147. "CASE",
  148. "DEFAULT",
  149. "GO",
  150. "CHAN",
  151. "STRUCT",
  152. "MAKE",
  153. "OPCHAN",
  154. "EQOPCHAN",
  155. "TYPE",
  156. "LEN",
  157. "DELETE",
  158. "CLOSE",
  159. "MAP",
  160. "IMPORT",
  161. "'='",
  162. "':'",
  163. "'?'",
  164. "'<'",
  165. "'>'",
  166. "'+'",
  167. "'-'",
  168. "'|'",
  169. "'^'",
  170. "'*'",
  171. "'/'",
  172. "'%'",
  173. "'&'",
  174. "UNARY",
  175. "'{'",
  176. "'}'",
  177. "'('",
  178. "')'",
  179. "','",
  180. "';'",
  181. "'['",
  182. "']'",
  183. "'.'",
  184. "'!'",
  185. "'\\n'",
  186. }
  187. var yyStatenames = [...]string{}
  188. const yyEofCode = 1
  189. const yyErrCode = 2
  190. const yyInitialStackSize = 16
  191. //line parser.go.y:1090
  192. //line yacctab:1
  193. var yyExca = [...]int{
  194. -1, 1,
  195. 1, -1,
  196. -2, 0,
  197. -1, 2,
  198. 52, 57,
  199. 59, 57,
  200. 77, 57,
  201. 78, 5,
  202. -2, 1,
  203. -1, 23,
  204. 77, 58,
  205. -2, 26,
  206. -1, 27,
  207. 16, 95,
  208. -2, 57,
  209. -1, 67,
  210. 52, 57,
  211. 59, 57,
  212. 77, 57,
  213. -2, 5,
  214. -1, 120,
  215. 16, 96,
  216. 77, 96,
  217. -2, 112,
  218. -1, 124,
  219. 4, 107,
  220. 48, 107,
  221. 49, 107,
  222. 57, 107,
  223. -2, 69,
  224. -1, 267,
  225. 74, 181,
  226. 80, 181,
  227. -2, 173,
  228. -1, 288,
  229. 74, 181,
  230. -2, 173,
  231. -1, 292,
  232. 1, 60,
  233. 8, 60,
  234. 45, 60,
  235. 46, 60,
  236. 52, 60,
  237. 59, 60,
  238. 60, 60,
  239. 74, 60,
  240. 76, 60,
  241. 77, 60,
  242. 78, 60,
  243. 80, 60,
  244. 83, 60,
  245. -2, 110,
  246. -1, 296,
  247. 1, 17,
  248. 45, 17,
  249. 46, 17,
  250. 74, 17,
  251. 78, 17,
  252. 83, 17,
  253. -2, 74,
  254. -1, 298,
  255. 1, 19,
  256. 45, 19,
  257. 46, 19,
  258. 74, 19,
  259. 78, 19,
  260. 83, 19,
  261. -2, 76,
  262. -1, 328,
  263. 74, 179,
  264. 80, 179,
  265. -2, 174,
  266. -1, 348,
  267. 1, 16,
  268. 45, 16,
  269. 46, 16,
  270. 74, 16,
  271. 78, 16,
  272. 83, 16,
  273. -2, 73,
  274. -1, 349,
  275. 1, 18,
  276. 45, 18,
  277. 46, 18,
  278. 74, 18,
  279. 78, 18,
  280. 83, 18,
  281. -2, 75,
  282. }
  283. const yyPrivate = 57344
  284. const yyLast = 3907
  285. var yyAct = [...]int{
  286. 71, 268, 33, 23, 232, 320, 321, 36, 116, 323,
  287. 322, 5, 8, 288, 377, 72, 8, 267, 76, 8,
  288. 8, 124, 386, 8, 8, 127, 281, 114, 117, 121,
  289. 214, 214, 282, 283, 84, 135, 130, 214, 85, 214,
  290. 87, 1, 331, 214, 207, 286, 214, 8, 7, 329,
  291. 220, 137, 151, 327, 134, 69, 49, 145, 152, 153,
  292. 154, 155, 156, 213, 217, 202, 142, 373, 23, 149,
  293. 70, 214, 143, 404, 340, 349, 348, 334, 162, 163,
  294. 325, 166, 167, 168, 169, 297, 171, 173, 303, 175,
  295. 149, 210, 176, 177, 178, 179, 180, 181, 182, 183,
  296. 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
  297. 194, 195, 196, 197, 198, 136, 159, 69, 295, 206,
  298. 448, 326, 203, 148, 234, 160, 203, 211, 141, 274,
  299. 147, 209, 130, 130, 140, 130, 86, 139, 223, 225,
  300. 226, 170, 203, 130, 130, 233, 130, 265, 149, 236,
  301. 123, 138, 447, 298, 149, 215, 216, 200, 218, 144,
  302. 89, 90, 100, 101, 78, 245, 227, 228, 77, 231,
  303. 443, 248, 438, 252, 437, 69, 435, 428, 427, 6,
  304. 423, 422, 212, 128, 346, 68, 296, 149, 97, 98,
  305. 99, 102, 125, 222, 367, 84, 421, 275, 149, 85,
  306. 238, 87, 419, 255, 235, 86, 259, 246, 262, 410,
  307. 128, 409, 126, 164, 405, 264, 203, 240, 241, 266,
  308. 130, 122, 126, 211, 401, 278, 397, 132, 133, 89,
  309. 90, 233, 229, 395, 287, 285, 131, 444, 291, 249,
  310. 149, 253, 394, 272, 299, 292, 257, 129, 302, 393,
  311. 69, 390, 304, 347, 132, 133, 385, 356, 134, 343,
  312. 311, 315, 317, 131, 84, 308, 301, 293, 85, 254,
  313. 87, 239, 442, 165, 129, 408, 388, 372, 335, 9,
  314. 371, 324, 219, 158, 339, 134, 74, 341, 441, 130,
  315. 345, 290, 323, 322, 436, 201, 294, 79, 430, 333,
  316. 312, 310, 230, 10, 284, 271, 146, 174, 354, 237,
  317. 73, 4, 342, 2, 62, 67, 63, 66, 69, 363,
  318. 64, 65, 126, 47, 368, 366, 365, 330, 46, 126,
  319. 45, 119, 374, 44, 130, 43, 130, 30, 50, 381,
  320. 29, 384, 351, 332, 319, 387, 22, 157, 21, 20,
  321. 25, 355, 24, 3, 391, 357, 358, 375, 360, 378,
  322. 0, 0, 0, 256, 0, 0, 370, 0, 263, 0,
  323. 0, 0, 0, 270, 0, 0, 0, 69, 0, 273,
  324. 369, 412, 0, 126, 414, 0, 0, 0, 126, 389,
  325. 0, 0, 269, 126, 0, 0, 0, 0, 0, 126,
  326. 0, 396, 0, 398, 399, 0, 0, 0, 0, 402,
  327. 0, 0, 269, 406, 407, 0, 0, 233, 434, 0,
  328. 0, 433, 0, 0, 0, 0, 0, 237, 0, 0,
  329. 418, 0, 0, 130, 0, 440, 0, 0, 201, 0,
  330. 0, 0, 424, 0, 0, 425, 426, 328, 344, 0,
  331. 429, 0, 0, 0, 0, 0, 439, 0, 0, 0,
  332. 0, 0, 0, 0, 0, 269, 0, 0, 328, 120,
  333. 52, 53, 0, 0, 31, 0, 48, 0, 0, 364,
  334. 0, 0, 0, 0, 445, 0, 446, 0, 39, 54,
  335. 55, 56, 376, 0, 201, 0, 201, 0, 0, 126,
  336. 86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  337. 269, 0, 126, 0, 0, 40, 57, 0, 0, 37,
  338. 0, 0, 41, 38, 89, 90, 100, 101, 0, 0,
  339. 51, 0, 59, 61, 0, 0, 60, 411, 115, 0,
  340. 34, 0, 201, 118, 32, 0, 416, 58, 103, 104,
  341. 105, 0, 97, 98, 99, 102, 0, 126, 0, 84,
  342. 0, 0, 0, 85, 0, 87, 126, 0, 0, 86,
  343. 106, 107, 111, 109, 113, 112, 0, 0, 0, 0,
  344. 83, 0, 0, 0, 0, 91, 92, 94, 95, 96,
  345. 93, 0, 0, 89, 90, 100, 101, 0, 0, 0,
  346. 0, 0, 0, 0, 88, 81, 0, 0, 0, 0,
  347. 0, 0, 80, 269, 82, 108, 110, 103, 104, 105,
  348. 0, 97, 98, 99, 102, 0, 204, 0, 84, 0,
  349. 0, 0, 85, 0, 87, 35, 52, 53, 0, 0,
  350. 31, 13, 48, 14, 26, 0, 27, 0, 0, 0,
  351. 0, 0, 0, 0, 39, 54, 55, 56, 0, 15,
  352. 16, 0, 0, 0, 0, 0, 0, 0, 0, 11,
  353. 12, 0, 0, 0, 0, 28, 0, 0, 17, 0,
  354. 0, 40, 57, 0, 0, 37, 18, 19, 41, 38,
  355. 0, 0, 0, 0, 0, 0, 51, 0, 59, 61,
  356. 0, 0, 60, 0, 42, 0, 34, 0, 0, 0,
  357. 32, 0, 0, 58, 86, 106, 107, 111, 109, 113,
  358. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  359. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  360. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  361. 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
  362. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  363. 0, 0, 0, 84, 382, 383, 0, 85, 0, 87,
  364. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  365. 0, 83, 0, 0, 0, 0, 91, 92, 94, 95,
  366. 96, 93, 0, 0, 89, 90, 100, 101, 0, 0,
  367. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  368. 0, 0, 0, 0, 380, 82, 108, 110, 103, 104,
  369. 105, 0, 97, 98, 99, 102, 0, 0, 0, 84,
  370. 0, 0, 0, 85, 379, 87, 86, 106, 107, 111,
  371. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  372. 0, 0, 91, 92, 94, 95, 96, 93, 0, 0,
  373. 89, 90, 100, 101, 0, 0, 0, 0, 0, 0,
  374. 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
  375. 353, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  376. 99, 102, 0, 0, 0, 84, 0, 0, 0, 85,
  377. 352, 87, 86, 106, 107, 111, 109, 113, 112, 0,
  378. 0, 0, 0, 83, 0, 0, 0, 0, 91, 92,
  379. 94, 95, 96, 93, 0, 0, 89, 90, 100, 101,
  380. 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
  381. 0, 0, 0, 0, 0, 0, 338, 82, 108, 110,
  382. 103, 104, 105, 0, 97, 98, 99, 102, 0, 0,
  383. 0, 84, 0, 0, 0, 85, 337, 87, 86, 106,
  384. 107, 111, 109, 113, 112, 0, 0, 0, 0, 83,
  385. 0, 0, 0, 0, 91, 92, 94, 95, 96, 93,
  386. 0, 0, 89, 90, 100, 101, 0, 0, 0, 0,
  387. 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
  388. 0, 0, 307, 82, 108, 110, 103, 104, 105, 0,
  389. 97, 98, 99, 102, 0, 0, 0, 84, 0, 0,
  390. 0, 85, 306, 87, 86, 106, 107, 111, 109, 113,
  391. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  392. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  393. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  394. 0, 0, 0, 0, 0, 0, 0, 0, 277, 82,
  395. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  396. 0, 0, 0, 84, 0, 0, 0, 85, 276, 87,
  397. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  398. 0, 83, 0, 0, 0, 0, 91, 92, 94, 95,
  399. 96, 93, 0, 0, 89, 90, 100, 101, 0, 0,
  400. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  401. 0, 0, 0, 0, 251, 82, 108, 110, 103, 104,
  402. 105, 0, 97, 98, 99, 102, 0, 0, 0, 84,
  403. 0, 0, 0, 85, 250, 87, 86, 106, 107, 111,
  404. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  405. 0, 0, 91, 92, 94, 95, 96, 93, 0, 0,
  406. 89, 90, 100, 101, 0, 0, 0, 0, 0, 0,
  407. 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
  408. 0, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  409. 99, 102, 0, 0, 0, 84, 242, 243, 0, 85,
  410. 0, 87, 86, 106, 107, 111, 109, 113, 112, 0,
  411. 0, 0, 0, 83, 0, 0, 0, 0, 91, 92,
  412. 94, 95, 96, 93, 0, 0, 89, 90, 100, 101,
  413. 0, 0, 0, 0, 0, 0, 0, 88, 81, 0,
  414. 0, 0, 0, 0, 0, 80, 0, 82, 108, 110,
  415. 103, 104, 105, 0, 97, 98, 99, 102, 0, 0,
  416. 0, 84, 0, 0, 0, 85, 0, 87, 86, 106,
  417. 107, 111, 109, 113, 112, 0, 0, 0, 0, 83,
  418. 0, 0, 0, 0, 91, 92, 94, 95, 96, 93,
  419. 0, 0, 89, 90, 100, 101, 0, 0, 0, 0,
  420. 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
  421. 0, 0, 0, 82, 108, 110, 103, 104, 105, 0,
  422. 97, 98, 99, 102, 0, 0, 0, 84, 432, 0,
  423. 0, 85, 0, 87, 86, 106, 107, 111, 109, 113,
  424. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  425. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  426. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  427. 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
  428. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  429. 0, 0, 0, 84, 0, 0, 0, 85, 431, 87,
  430. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  431. 0, 83, 0, 0, 0, 0, 91, 92, 94, 95,
  432. 96, 93, 0, 0, 89, 90, 100, 101, 0, 0,
  433. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  434. 0, 0, 0, 0, 0, 82, 108, 110, 103, 104,
  435. 105, 0, 97, 98, 99, 102, 0, 0, 0, 84,
  436. 0, 0, 0, 85, 420, 87, 86, 106, 107, 111,
  437. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  438. 0, 0, 91, 92, 94, 95, 96, 93, 0, 0,
  439. 89, 90, 100, 101, 0, 0, 0, 0, 0, 0,
  440. 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
  441. 417, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  442. 99, 102, 0, 0, 0, 84, 0, 0, 0, 85,
  443. 0, 87, 86, 106, 107, 111, 109, 113, 112, 0,
  444. 0, 0, 0, 83, 0, 0, 0, 0, 91, 92,
  445. 94, 95, 96, 93, 0, 0, 89, 90, 100, 101,
  446. 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
  447. 0, 0, 0, 0, 0, 0, 0, 82, 108, 110,
  448. 103, 104, 105, 0, 97, 98, 99, 102, 0, 0,
  449. 0, 84, 415, 0, 0, 85, 0, 87, 86, 106,
  450. 107, 111, 109, 113, 112, 0, 0, 0, 0, 83,
  451. 0, 0, 0, 0, 91, 92, 94, 95, 96, 93,
  452. 0, 0, 89, 90, 100, 101, 0, 0, 0, 0,
  453. 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
  454. 0, 0, 0, 82, 108, 110, 103, 104, 105, 0,
  455. 97, 98, 99, 102, 0, 0, 0, 84, 0, 0,
  456. 0, 85, 413, 87, 86, 106, 107, 111, 109, 113,
  457. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  458. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  459. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  460. 0, 0, 0, 0, 0, 0, 0, 0, 403, 82,
  461. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  462. 0, 0, 0, 84, 0, 0, 0, 85, 0, 87,
  463. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  464. 0, 83, 0, 0, 0, 0, 91, 92, 94, 95,
  465. 96, 93, 0, 0, 89, 90, 100, 101, 0, 0,
  466. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  467. 0, 0, 0, 0, 0, 82, 108, 110, 103, 104,
  468. 105, 0, 97, 98, 99, 102, 0, 400, 0, 84,
  469. 0, 0, 0, 85, 0, 87, 86, 106, 107, 111,
  470. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  471. 0, 0, 91, 92, 94, 95, 96, 93, 0, 0,
  472. 89, 90, 100, 101, 0, 0, 0, 0, 0, 0,
  473. 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
  474. 0, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  475. 99, 102, 0, 0, 0, 84, 0, 0, 0, 85,
  476. 392, 87, 86, 106, 107, 111, 109, 113, 112, 0,
  477. 0, 0, 0, 83, 0, 0, 0, 0, 91, 92,
  478. 94, 95, 96, 93, 0, 0, 89, 90, 100, 101,
  479. 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
  480. 0, 0, 0, 0, 0, 0, 0, 82, 108, 110,
  481. 103, 104, 105, 0, 97, 98, 99, 102, 0, 361,
  482. 0, 84, 0, 0, 0, 85, 0, 87, 86, 106,
  483. 107, 111, 109, 113, 112, 0, 0, 0, 0, 83,
  484. 0, 0, 0, 0, 91, 92, 94, 95, 96, 93,
  485. 0, 0, 89, 90, 100, 101, 0, 0, 0, 0,
  486. 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
  487. 0, 0, 0, 82, 108, 110, 103, 104, 105, 0,
  488. 97, 98, 99, 102, 0, 359, 0, 84, 0, 0,
  489. 0, 85, 0, 87, 86, 106, 107, 111, 109, 113,
  490. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  491. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  492. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  493. 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
  494. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  495. 0, 0, 0, 84, 350, 0, 0, 85, 0, 87,
  496. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  497. 0, 83, 0, 0, 0, 0, 91, 92, 94, 95,
  498. 96, 93, 0, 0, 89, 90, 100, 101, 0, 0,
  499. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  500. 0, 0, 0, 0, 0, 82, 108, 110, 103, 104,
  501. 105, 0, 97, 98, 99, 102, 0, 0, 0, 84,
  502. 0, 0, 318, 85, 0, 87, 86, 106, 107, 111,
  503. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  504. 0, 0, 91, 92, 94, 95, 96, 93, 0, 0,
  505. 89, 90, 100, 101, 0, 0, 0, 0, 0, 0,
  506. 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
  507. 0, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  508. 99, 102, 0, 313, 0, 84, 0, 0, 0, 85,
  509. 0, 87, 86, 106, 107, 111, 109, 113, 112, 0,
  510. 0, 0, 0, 83, 0, 0, 0, 0, 91, 92,
  511. 94, 95, 96, 93, 0, 0, 89, 90, 100, 101,
  512. 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
  513. 0, 0, 0, 0, 0, 0, 0, 82, 108, 110,
  514. 103, 104, 105, 0, 97, 98, 99, 102, 0, 309,
  515. 0, 84, 0, 0, 0, 85, 0, 87, 86, 106,
  516. 107, 111, 109, 113, 112, 0, 0, 0, 0, 83,
  517. 0, 0, 0, 0, 91, 92, 94, 95, 96, 93,
  518. 0, 0, 89, 90, 100, 101, 0, 0, 0, 0,
  519. 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
  520. 0, 0, 0, 82, 108, 110, 103, 104, 105, 0,
  521. 97, 98, 99, 102, 0, 300, 0, 84, 0, 0,
  522. 0, 85, 0, 87, 86, 106, 107, 111, 109, 113,
  523. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  524. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  525. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  526. 0, 0, 0, 0, 0, 0, 0, 0, 289, 82,
  527. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  528. 0, 0, 0, 84, 0, 0, 0, 85, 0, 87,
  529. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  530. 0, 83, 0, 0, 0, 0, 91, 92, 94, 95,
  531. 96, 93, 0, 0, 89, 90, 100, 101, 0, 0,
  532. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  533. 0, 0, 0, 0, 0, 82, 108, 110, 103, 104,
  534. 105, 0, 97, 98, 99, 102, 0, 0, 0, 84,
  535. 280, 0, 0, 85, 0, 87, 86, 106, 107, 111,
  536. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  537. 0, 0, 91, 92, 94, 95, 96, 93, 0, 0,
  538. 89, 90, 100, 101, 0, 0, 0, 0, 0, 0,
  539. 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
  540. 0, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  541. 99, 102, 0, 0, 0, 84, 279, 0, 0, 85,
  542. 0, 87, 86, 106, 107, 111, 109, 113, 112, 0,
  543. 0, 0, 0, 83, 0, 0, 0, 0, 91, 92,
  544. 94, 95, 96, 93, 0, 0, 89, 90, 100, 101,
  545. 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
  546. 0, 0, 0, 0, 0, 0, 0, 82, 108, 110,
  547. 103, 104, 105, 0, 97, 98, 99, 102, 0, 0,
  548. 0, 84, 0, 0, 260, 85, 0, 87, 86, 106,
  549. 107, 111, 109, 113, 112, 0, 0, 0, 0, 83,
  550. 0, 0, 0, 0, 91, 92, 94, 95, 96, 93,
  551. 0, 0, 89, 90, 100, 101, 0, 0, 0, 0,
  552. 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
  553. 0, 0, 247, 82, 108, 110, 103, 104, 105, 0,
  554. 97, 98, 99, 102, 0, 0, 0, 84, 0, 0,
  555. 0, 85, 0, 87, 86, 106, 107, 111, 109, 113,
  556. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  557. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  558. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  559. 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
  560. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  561. 0, 0, 0, 84, 244, 0, 0, 85, 0, 87,
  562. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  563. 0, 83, 0, 0, 0, 0, 91, 92, 94, 95,
  564. 96, 93, 0, 0, 89, 90, 100, 101, 0, 0,
  565. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  566. 0, 0, 0, 0, 0, 82, 108, 110, 103, 104,
  567. 105, 0, 97, 98, 99, 102, 0, 0, 0, 84,
  568. 221, 0, 0, 85, 0, 87, 86, 106, 107, 111,
  569. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  570. 0, 0, 91, 92, 94, 95, 96, 93, 0, 0,
  571. 89, 90, 100, 101, 0, 0, 0, 0, 0, 0,
  572. 0, 88, 0, 0, 0, 0, 0, 0, 0, 0,
  573. 0, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  574. 99, 102, 0, 208, 0, 84, 0, 0, 0, 85,
  575. 0, 87, 86, 106, 107, 111, 109, 113, 112, 0,
  576. 0, 0, 0, 83, 0, 0, 0, 0, 91, 92,
  577. 94, 95, 96, 93, 0, 0, 89, 90, 100, 101,
  578. 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
  579. 0, 0, 0, 0, 0, 0, 0, 82, 108, 110,
  580. 103, 104, 105, 0, 97, 98, 99, 102, 0, 199,
  581. 0, 84, 0, 0, 0, 85, 0, 87, 86, 106,
  582. 107, 111, 109, 113, 112, 0, 0, 0, 0, 83,
  583. 0, 0, 0, 0, 91, 92, 94, 95, 96, 93,
  584. 0, 0, 89, 90, 100, 101, 0, 0, 0, 0,
  585. 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
  586. 0, 0, 0, 82, 108, 110, 103, 104, 105, 0,
  587. 97, 98, 99, 102, 0, 0, 0, 84, 0, 0,
  588. 0, 85, 0, 87, 86, 106, 107, 111, 109, 113,
  589. 112, 0, 0, 0, 0, 83, 0, 0, 0, 0,
  590. 91, 92, 94, 95, 96, 93, 0, 0, 89, 90,
  591. 100, 101, 0, 0, 0, 0, 0, 0, 0, 88,
  592. 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
  593. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  594. 0, 0, 0, 161, 0, 0, 0, 85, 0, 87,
  595. 86, 106, 107, 111, 109, 113, 112, 0, 0, 0,
  596. 0, 83, 0, 0, 0, 0, 0, 0, 0, 0,
  597. 0, 0, 0, 0, 89, 90, 100, 101, 0, 0,
  598. 0, 0, 0, 0, 0, 88, 0, 0, 0, 0,
  599. 0, 0, 0, 0, 0, 82, 108, 110, 103, 104,
  600. 105, 0, 97, 98, 99, 102, 0, 0, 0, 84,
  601. 0, 0, 0, 85, 0, 87, 86, 106, 107, 111,
  602. 109, 113, 112, 0, 0, 0, 0, 83, 0, 0,
  603. 35, 52, 53, 0, 0, 31, 0, 0, 0, 0,
  604. 89, 90, 100, 101, 0, 0, 0, 0, 0, 39,
  605. 54, 55, 56, 0, 0, 0, 0, 0, 0, 0,
  606. 0, 82, 108, 110, 103, 104, 105, 0, 97, 98,
  607. 99, 102, 0, 0, 0, 84, 40, 57, 0, 85,
  608. 37, 87, 0, 41, 38, 0, 0, 0, 0, 0,
  609. 0, 51, 0, 59, 61, 0, 0, 60, 0, 42,
  610. 0, 34, 35, 52, 53, 32, 336, 31, 58, 0,
  611. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  612. 0, 39, 54, 55, 56, 0, 0, 0, 0, 0,
  613. 0, 0, 0, 0, 0, 0, 0, 0, 35, 52,
  614. 53, 0, 0, 31, 0, 0, 0, 0, 40, 57,
  615. 0, 0, 37, 0, 0, 41, 38, 39, 54, 55,
  616. 56, 0, 0, 51, 0, 59, 61, 0, 0, 60,
  617. 0, 42, 0, 34, 35, 52, 53, 32, 305, 31,
  618. 58, 0, 0, 0, 40, 57, 0, 0, 37, 0,
  619. 0, 41, 38, 39, 54, 55, 56, 0, 0, 51,
  620. 0, 59, 61, 0, 0, 60, 0, 42, 0, 34,
  621. 0, 0, 261, 32, 0, 0, 58, 0, 0, 0,
  622. 40, 57, 0, 0, 37, 0, 0, 41, 38, 0,
  623. 224, 0, 0, 0, 0, 51, 0, 59, 61, 0,
  624. 0, 60, 0, 42, 0, 34, 35, 52, 53, 32,
  625. 0, 31, 58, 0, 0, 0, 0, 0, 0, 0,
  626. 0, 0, 0, 0, 0, 39, 54, 55, 56, 0,
  627. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  628. 0, 0, 35, 52, 53, 0, 0, 31, 0, 0,
  629. 0, 0, 40, 57, 0, 0, 37, 0, 0, 41,
  630. 38, 39, 54, 55, 56, 0, 0, 51, 0, 59,
  631. 61, 0, 0, 60, 0, 42, 0, 34, 0, 0,
  632. 205, 32, 0, 0, 58, 0, 0, 0, 40, 57,
  633. 0, 0, 37, 0, 0, 41, 38, 0, 172, 0,
  634. 0, 0, 0, 51, 0, 59, 61, 0, 0, 60,
  635. 0, 42, 0, 34, 35, 52, 53, 32, 0, 31,
  636. 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  637. 0, 0, 0, 39, 54, 55, 56, 0, 0, 0,
  638. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  639. 35, 52, 53, 0, 0, 31, 0, 0, 0, 0,
  640. 40, 57, 0, 0, 37, 0, 0, 41, 38, 39,
  641. 54, 55, 56, 0, 0, 51, 0, 59, 61, 0,
  642. 0, 60, 0, 42, 0, 34, 35, 52, 53, 32,
  643. 0, 31, 58, 0, 0, 0, 40, 57, 0, 0,
  644. 37, 0, 0, 41, 38, 39, 54, 55, 56, 0,
  645. 0, 51, 0, 59, 61, 0, 0, 60, 0, 362,
  646. 0, 34, 35, 52, 53, 32, 0, 31, 58, 0,
  647. 0, 0, 40, 57, 0, 0, 37, 0, 0, 41,
  648. 38, 39, 54, 55, 56, 0, 0, 51, 0, 59,
  649. 61, 0, 0, 60, 0, 316, 0, 34, 35, 52,
  650. 53, 32, 0, 31, 58, 0, 0, 0, 40, 57,
  651. 0, 0, 37, 0, 0, 41, 38, 39, 54, 55,
  652. 56, 0, 0, 51, 0, 59, 61, 0, 0, 60,
  653. 0, 314, 0, 34, 0, 0, 0, 32, 0, 0,
  654. 58, 0, 0, 0, 40, 57, 0, 0, 37, 0,
  655. 0, 41, 38, 0, 86, 106, 107, 111, 109, 51,
  656. 112, 59, 61, 0, 0, 60, 0, 258, 0, 34,
  657. 0, 0, 0, 32, 0, 0, 58, 0, 89, 90,
  658. 100, 101, 0, 0, 0, 0, 0, 0, 0, 0,
  659. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  660. 108, 110, 103, 104, 105, 0, 97, 98, 99, 102,
  661. 35, 150, 53, 84, 0, 31, 0, 85, 0, 87,
  662. 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,
  663. 54, 55, 56, 0, 0, 0, 0, 0, 0, 0,
  664. 0, 0, 0, 0, 0, 0, 75, 52, 53, 0,
  665. 0, 31, 0, 0, 0, 0, 40, 57, 0, 0,
  666. 37, 0, 0, 41, 38, 39, 54, 55, 56, 0,
  667. 0, 51, 0, 59, 61, 0, 0, 60, 0, 42,
  668. 0, 34, 0, 0, 0, 32, 0, 0, 58, 0,
  669. 0, 0, 40, 57, 0, 0, 37, 0, 0, 41,
  670. 38, 86, 106, 107, 111, 109, 0, 51, 0, 59,
  671. 61, 0, 0, 60, 0, 42, 0, 34, 0, 0,
  672. 0, 32, 0, 0, 58, 89, 90, 100, 101, 0,
  673. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  674. 0, 0, 0, 0, 0, 0, 0, 108, 110, 103,
  675. 104, 105, 0, 97, 98, 99, 102, 0, 0, 0,
  676. 84, 0, 0, 0, 85, 0, 87,
  677. }
  678. var yyPact = [...]int{
  679. -67, -1000, 631, -67, -1000, -71, -71, -1000, -1000, -1000,
  680. -1000, -1000, -1000, 3490, 3490, 306, 213, 3782, 93, 89,
  681. 283, -1000, -1000, 1226, -1000, -1000, 3490, 465, 3490, -1000,
  682. -1000, 146, -59, 206, 3490, 40, -28, 76, 62, 59,
  683. 53, -7, -71, -1000, -1000, -1000, -1000, -1000, 302, 71,
  684. -1000, 3746, -1000, -1000, -1000, -1000, -1000, 3490, 3490, 3490,
  685. 3490, 3490, -1000, -1000, -1000, -1000, -1000, 631, -71, -1000,
  686. -8, 2942, 2942, 210, -67, 50, 3008, 3490, 3490, 200,
  687. 3490, 3490, 3490, 3490, 3490, 3418, 3490, 303, 3490, -1000,
  688. -1000, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490,
  689. 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490,
  690. 3490, 3490, 3490, 3490, 2876, -67, 49, 553, 3382, -34,
  691. 40, 2810, 302, 16, -25, 3490, -71, -10, -1000, 206,
  692. 206, -15, 206, 209, -30, 2744, 3490, 3310, 3490, 3490,
  693. 206, 179, -71, 206, 3490, 65, -1000, 3490, 3490, -71,
  694. -1000, -41, 3074, -41, -41, -41, -41, -1000, -67, 197,
  695. 3490, 3490, 1160, 2678, 3490, -67, 2942, 2942, 2612, 3140,
  696. 163, 1094, 3490, 189, -1000, 3074, 2942, 2942, 2942, 2942,
  697. 2942, 2942, 189, 189, 189, 189, 189, 189, 120, 120,
  698. 120, 484, 484, 484, 484, 484, 484, 3825, 3678, -67,
  699. 195, -71, 3490, -71, -67, 3634, 2546, 3274, -71, 139,
  700. 302, -1000, -60, -71, 301, -42, -42, 206, -42, -71,
  701. -25, -1000, 121, 1028, 3490, 2480, 2414, -50, -44, 300,
  702. 3490, -35, -64, 2348, 3490, -8, 2942, 3490, 193, 266,
  703. 110, 77, -1000, 3490, -1000, 2282, 192, 3490, 12, -1000,
  704. -1000, 3238, 962, 191, -1000, 2216, 297, 186, -67, 2150,
  705. 3598, 3562, 2084, 247, 208, 4, 45, -71, -31, -71,
  706. 3490, -1000, -38, 295, 1, -1000, -1000, 3166, 896, -1000,
  707. -1000, -1000, -1000, 3490, -3, -64, 206, 185, -71, 3490,
  708. -8, 2942, -28, -1000, 180, 0, -1000, -1, -1000, 2018,
  709. -67, -1000, 3074, -1000, 830, -1000, -1000, 3490, -1000, -67,
  710. -1000, -1000, 183, -67, -67, 1952, -67, 1886, 3526, -36,
  711. -1000, -1000, 134, 3490, -67, 207, 204, -9, -71, -1000,
  712. -60, 206, -63, 206, -1000, 764, -1000, -1000, 3490, 698,
  713. 3490, 182, -51, -1000, 3490, 2942, 203, -67, -1000, -1000,
  714. -1000, 177, -1000, 3490, 1820, 175, -1000, 168, 159, -67,
  715. 152, -67, -67, 1754, 150, -1000, -1000, -67, 1688, 13,
  716. 140, -67, -67, 202, 137, -42, 135, -71, -42, -1000,
  717. 3490, 1622, -1000, 3490, 1556, -1000, -71, 1490, -67, 128,
  718. -1000, 1424, -1000, -1000, -1000, -1000, 122, -1000, 107, 106,
  719. -67, -1000, -1000, -67, -67, -1000, 104, 103, -67, -1000,
  720. -1000, 294, 1358, -1000, 1292, -1000, 3490, 3490, 102, 263,
  721. -1000, -1000, -1000, -1000, 100, -1000, -1000, -1000, -1000, 98,
  722. 206, -1000, -1000, -64, 2942, 257, 199, -1000, -1000, -42,
  723. 96, 164, -67, -1000, -67, 78, 46, -1000, -1000,
  724. }
  725. var yyPgo = [...]int{
  726. 0, 41, 353, 279, 303, 352, 350, 349, 348, 346,
  727. 344, 6, 5, 56, 0, 8, 25, 343, 2, 340,
  728. 338, 7, 337, 4, 335, 333, 330, 328, 323, 321,
  729. 320, 316, 314, 313, 311, 159, 1, 179, 48,
  730. }
  731. var yyR1 = [...]int{
  732. 0, 1, 1, 2, 2, 3, 3, 3, 3, 3,
  733. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  734. 3, 3, 3, 3, 3, 3, 3, 4, 4, 5,
  735. 6, 6, 6, 6, 7, 7, 7, 8, 8, 8,
  736. 8, 8, 8, 8, 8, 8, 8, 8, 9, 10,
  737. 10, 10, 10, 10, 11, 11, 12, 13, 13, 13,
  738. 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
  739. 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
  740. 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
  741. 14, 14, 14, 14, 14, 15, 15, 15, 16, 16,
  742. 16, 16, 16, 16, 16, 17, 17, 18, 18, 19,
  743. 19, 20, 21, 22, 22, 22, 22, 22, 22, 23,
  744. 23, 23, 24, 24, 24, 24, 24, 24, 24, 24,
  745. 24, 24, 25, 25, 26, 26, 26, 26, 26, 27,
  746. 27, 27, 27, 28, 28, 28, 28, 28, 28, 28,
  747. 28, 32, 32, 32, 32, 32, 32, 31, 31, 31,
  748. 30, 30, 30, 30, 30, 30, 29, 29, 33, 33,
  749. 34, 34, 34, 35, 35, 37, 37, 38, 36, 36,
  750. 36, 36,
  751. }
  752. var yyR2 = [...]int{
  753. 0, 1, 2, 2, 3, 0, 1, 1, 1, 2,
  754. 2, 5, 13, 12, 9, 8, 6, 5, 6, 5,
  755. 4, 6, 4, 1, 1, 1, 1, 1, 1, 4,
  756. 3, 3, 3, 3, 5, 7, 5, 4, 7, 5,
  757. 6, 7, 7, 8, 7, 8, 8, 9, 7, 0,
  758. 1, 1, 2, 2, 4, 4, 3, 0, 1, 4,
  759. 4, 1, 1, 5, 3, 7, 8, 8, 9, 2,
  760. 5, 7, 3, 5, 4, 5, 4, 4, 4, 4,
  761. 4, 4, 4, 6, 8, 7, 3, 6, 10, 5,
  762. 1, 1, 1, 1, 1, 0, 1, 4, 1, 3,
  763. 2, 2, 5, 2, 6, 2, 5, 2, 3, 1,
  764. 1, 3, 1, 2, 1, 1, 1, 1, 1, 0,
  765. 3, 6, 6, 5, 5, 7, 8, 6, 5, 5,
  766. 7, 8, 3, 2, 2, 2, 2, 2, 2, 1,
  767. 1, 1, 1, 2, 2, 3, 3, 3, 3, 3,
  768. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  769. 3, 3, 3, 3, 3, 3, 3, 3, 0, 1,
  770. 2, 1, 1, 0, 1, 1, 2, 1, 0, 2,
  771. 1, 1,
  772. }
  773. var yyChk = [...]int{
  774. -1000, -1, -33, -2, -34, 78, -37, -38, 83, -3,
  775. -4, 38, 39, 10, 12, 28, 29, 47, 55, 56,
  776. -7, -8, -9, -14, -5, -6, 13, 15, 44, -19,
  777. -22, 9, 79, -18, 75, 4, -21, 54, 58, 23,
  778. 50, 57, 73, -24, -25, -26, -27, -28, 11, -13,
  779. -20, 65, 5, 6, 24, 25, 26, 51, 82, 67,
  780. 71, 68, -32, -31, -30, -29, -33, -34, -37, -38,
  781. -13, -14, -14, 4, 73, 4, -14, 75, 75, 14,
  782. 59, 52, 61, 27, 75, 79, 16, 81, 51, 40,
  783. 41, 32, 33, 37, 34, 35, 36, 68, 69, 70,
  784. 42, 43, 71, 64, 65, 66, 17, 18, 62, 20,
  785. 63, 19, 22, 21, -14, 73, -15, -14, 78, -4,
  786. 4, -14, 75, 4, 80, -35, -37, -16, 4, 68,
  787. -18, 57, 48, 49, 79, -14, 75, 79, 75, 75,
  788. 75, 75, 73, 79, -35, -15, 4, 59, 52, 77,
  789. 5, -14, -14, -14, -14, -14, -14, -3, 73, -1,
  790. 75, 75, -14, -14, 13, 73, -14, -14, -14, -14,
  791. -13, -14, 60, -14, 4, -14, -14, -14, -14, -14,
  792. -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
  793. -14, -14, -14, -14, -14, -14, -14, -14, -14, 73,
  794. -1, -37, 16, 77, 73, 78, -14, 78, 73, -15,
  795. 75, -18, -13, 73, 81, -16, -16, 79, -16, 73,
  796. 80, 76, -13, -14, 60, -14, -14, -16, -16, 53,
  797. -35, -16, -23, -14, 59, -13, -14, -35, -1, 74,
  798. -13, -13, 76, 77, 76, -14, -1, 60, 8, 76,
  799. 80, 60, -14, -1, 74, -14, -35, -1, 73, -14,
  800. 78, 78, -14, -35, 76, 8, -15, 77, -36, -37,
  801. -35, 4, -16, -35, 8, 76, 80, 60, -14, 76,
  802. 76, 76, 76, 77, 4, -23, 80, -36, 77, 60,
  803. -13, -14, -21, 74, 30, 8, 76, 8, 76, -14,
  804. 73, 74, -14, 76, -14, 80, 80, 60, 74, 73,
  805. 4, 74, -1, 73, 73, -14, 73, -14, 78, -10,
  806. -12, -11, 46, 45, 73, 76, 76, 8, -37, 80,
  807. -13, 80, -17, 4, 76, -14, 80, 80, 60, -14,
  808. 77, -36, -16, 74, -35, -14, 4, 73, 76, 76,
  809. 76, -1, 80, 60, -14, -1, 74, -1, -1, 73,
  810. -1, 73, 73, -14, -35, -11, -12, 60, -14, -13,
  811. -1, 73, 73, 76, -36, -16, -35, 77, -16, 80,
  812. 60, -14, 76, 77, -14, 74, 73, -14, 73, -1,
  813. 74, -14, 80, 74, 74, 74, -1, 74, -1, -1,
  814. 73, 74, -1, 60, 60, 74, -1, -1, 73, 74,
  815. 74, -35, -14, 80, -14, 76, -35, 60, -1, 74,
  816. 80, 74, 74, 74, -1, -1, -1, 74, 74, -1,
  817. 4, 80, 76, -23, -14, 74, 31, 74, 74, -16,
  818. -36, 31, 73, 74, 73, -1, -1, 74, 74,
  819. }
  820. var yyDef = [...]int{
  821. 168, -2, -2, 168, 169, 172, 171, 175, 177, 3,
  822. 6, 7, 8, 57, 0, 0, 0, 0, 0, 0,
  823. 23, 24, 25, -2, 27, 28, 0, -2, 0, 61,
  824. 62, 0, 173, 0, 0, 112, 110, 0, 0, 0,
  825. 0, 0, 173, 90, 91, 92, 93, 94, 95, 0,
  826. 109, 0, 114, 115, 116, 117, 118, 0, 0, 0,
  827. 0, 0, 139, 140, 141, 142, 2, -2, 170, 176,
  828. 9, 58, 10, 0, 168, 112, 0, 0, 0, 0,
  829. 0, 0, 0, 0, 57, 0, 0, 0, 0, 143,
  830. 144, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  831. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  832. 0, 0, 0, 0, 0, 168, 0, 58, 0, 0,
  833. -2, 0, 95, 0, -2, 57, 174, 0, 98, 0,
  834. 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
  835. 0, 0, 173, 0, 119, 0, 96, 57, 0, 173,
  836. 113, 134, 133, 135, 136, 137, 138, 4, 168, 0,
  837. 57, 57, 0, 0, 0, 168, 30, 32, 0, 64,
  838. 0, 0, 0, 86, 111, 132, 145, 146, 147, 148,
  839. 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
  840. 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
  841. 0, 171, 0, 173, 168, 0, 0, 0, 173, 0,
  842. 95, 108, 178, 173, 0, 100, 101, 0, 103, 173,
  843. 107, 72, 0, 0, 0, 0, 0, 0, 0, 0,
  844. 119, 0, 178, 0, 57, 31, 33, 0, 0, 0,
  845. 0, 0, 20, 0, 22, 0, 0, 0, 0, 76,
  846. 78, 0, 0, 0, 37, 0, 0, 0, 168, 0,
  847. 0, 0, 0, 49, 0, 0, 0, -2, 0, 180,
  848. 57, 99, 0, 0, 0, 74, 77, 0, 0, 79,
  849. 80, 81, 82, 0, 0, 178, 0, 0, -2, 0,
  850. 29, 59, -2, 11, 0, 0, -2, 0, -2, 0,
  851. 168, 36, 63, 75, 0, 128, 129, 0, 34, 168,
  852. 97, 39, 0, 168, 168, 0, 168, 0, 0, 173,
  853. 50, 51, 0, 57, 168, 0, 0, 0, -2, 70,
  854. 178, 0, 173, 0, 73, 0, 123, 124, 0, 0,
  855. 0, 0, 0, 89, 0, 120, 0, 168, -2, -2,
  856. 21, 0, 127, 0, 0, 0, 40, 0, 0, 168,
  857. 0, 168, 168, 0, 0, 52, 53, 168, 58, 0,
  858. 0, 168, 168, 0, 0, 102, 0, 173, 105, 122,
  859. 0, 0, 83, 0, 0, 87, 173, 0, 168, 0,
  860. 35, 0, 130, 38, 41, 42, 0, 44, 0, 0,
  861. 168, 48, 56, 168, 168, 65, 0, 0, 168, 71,
  862. 104, 0, 0, 125, 0, 85, 119, 0, 0, 15,
  863. 131, 43, 45, 46, 0, 54, 55, 66, 67, 0,
  864. 0, 126, 84, 178, 121, 14, 0, 47, 68, 106,
  865. 0, 0, 168, 88, 168, 0, 0, 13, 12,
  866. }
  867. var yyTok1 = [...]int{
  868. 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  869. 83, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  870. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  871. 3, 3, 3, 82, 3, 3, 3, 70, 71, 3,
  872. 75, 76, 68, 64, 77, 65, 81, 69, 3, 3,
  873. 3, 3, 3, 3, 3, 3, 3, 3, 60, 78,
  874. 62, 59, 63, 61, 3, 3, 3, 3, 3, 3,
  875. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  876. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  877. 3, 79, 3, 80, 67, 3, 3, 3, 3, 3,
  878. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  879. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  880. 3, 3, 3, 73, 66, 74,
  881. }
  882. var yyTok2 = [...]int{
  883. 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
  884. 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
  885. 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
  886. 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
  887. 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
  888. 52, 53, 54, 55, 56, 57, 58, 72,
  889. }
  890. var yyTok3 = [...]int{
  891. 0,
  892. }
  893. var yyErrorMessages = [...]struct {
  894. state int
  895. token int
  896. msg string
  897. }{}
  898. //line yaccpar:1
  899. /* parser for yacc output */
  900. var (
  901. yyDebug = 0
  902. yyErrorVerbose = false
  903. )
  904. type yyLexer interface {
  905. Lex(lval *yySymType) int
  906. Error(s string)
  907. }
  908. type yyParser interface {
  909. Parse(yyLexer) int
  910. Lookahead() int
  911. }
  912. type yyParserImpl struct {
  913. lval yySymType
  914. stack [yyInitialStackSize]yySymType
  915. char int
  916. }
  917. func (p *yyParserImpl) Lookahead() int {
  918. return p.char
  919. }
  920. func yyNewParser() yyParser {
  921. return &yyParserImpl{}
  922. }
  923. const yyFlag = -1000
  924. func yyTokname(c int) string {
  925. if c >= 1 && c-1 < len(yyToknames) {
  926. if yyToknames[c-1] != "" {
  927. return yyToknames[c-1]
  928. }
  929. }
  930. return __yyfmt__.Sprintf("tok-%v", c)
  931. }
  932. func yyStatname(s int) string {
  933. if s >= 0 && s < len(yyStatenames) {
  934. if yyStatenames[s] != "" {
  935. return yyStatenames[s]
  936. }
  937. }
  938. return __yyfmt__.Sprintf("state-%v", s)
  939. }
  940. func yyErrorMessage(state, lookAhead int) string {
  941. const TOKSTART = 4
  942. if !yyErrorVerbose {
  943. return "syntax error"
  944. }
  945. for _, e := range yyErrorMessages {
  946. if e.state == state && e.token == lookAhead {
  947. return "syntax error: " + e.msg
  948. }
  949. }
  950. res := "syntax error: unexpected " + yyTokname(lookAhead)
  951. // To match Bison, suggest at most four expected tokens.
  952. expected := make([]int, 0, 4)
  953. // Look for shiftable tokens.
  954. base := yyPact[state]
  955. for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
  956. if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
  957. if len(expected) == cap(expected) {
  958. return res
  959. }
  960. expected = append(expected, tok)
  961. }
  962. }
  963. if yyDef[state] == -2 {
  964. i := 0
  965. for yyExca[i] != -1 || yyExca[i+1] != state {
  966. i += 2
  967. }
  968. // Look for tokens that we accept or reduce.
  969. for i += 2; yyExca[i] >= 0; i += 2 {
  970. tok := yyExca[i]
  971. if tok < TOKSTART || yyExca[i+1] == 0 {
  972. continue
  973. }
  974. if len(expected) == cap(expected) {
  975. return res
  976. }
  977. expected = append(expected, tok)
  978. }
  979. // If the default action is to accept or reduce, give up.
  980. if yyExca[i+1] != 0 {
  981. return res
  982. }
  983. }
  984. for i, tok := range expected {
  985. if i == 0 {
  986. res += ", expecting "
  987. } else {
  988. res += " or "
  989. }
  990. res += yyTokname(tok)
  991. }
  992. return res
  993. }
  994. func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
  995. token = 0
  996. char = lex.Lex(lval)
  997. if char <= 0 {
  998. token = yyTok1[0]
  999. goto out
  1000. }
  1001. if char < len(yyTok1) {
  1002. token = yyTok1[char]
  1003. goto out
  1004. }
  1005. if char >= yyPrivate {
  1006. if char < yyPrivate+len(yyTok2) {
  1007. token = yyTok2[char-yyPrivate]
  1008. goto out
  1009. }
  1010. }
  1011. for i := 0; i < len(yyTok3); i += 2 {
  1012. token = yyTok3[i+0]
  1013. if token == char {
  1014. token = yyTok3[i+1]
  1015. goto out
  1016. }
  1017. }
  1018. out:
  1019. if token == 0 {
  1020. token = yyTok2[1] /* unknown char */
  1021. }
  1022. if yyDebug >= 3 {
  1023. __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
  1024. }
  1025. return char, token
  1026. }
  1027. func yyParse(yylex yyLexer) int {
  1028. return yyNewParser().Parse(yylex)
  1029. }
  1030. func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
  1031. var yyn int
  1032. var yyVAL yySymType
  1033. var yyDollar []yySymType
  1034. _ = yyDollar // silence set and not used
  1035. yyS := yyrcvr.stack[:]
  1036. Nerrs := 0 /* number of errors */
  1037. Errflag := 0 /* error recovery flag */
  1038. yystate := 0
  1039. yyrcvr.char = -1
  1040. yytoken := -1 // yyrcvr.char translated into internal numbering
  1041. defer func() {
  1042. // Make sure we report no lookahead when not parsing.
  1043. yystate = -1
  1044. yyrcvr.char = -1
  1045. yytoken = -1
  1046. }()
  1047. yyp := -1
  1048. goto yystack
  1049. ret0:
  1050. return 0
  1051. ret1:
  1052. return 1
  1053. yystack:
  1054. /* put a state and value onto the stack */
  1055. if yyDebug >= 4 {
  1056. __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
  1057. }
  1058. yyp++
  1059. if yyp >= len(yyS) {
  1060. nyys := make([]yySymType, len(yyS)*2)
  1061. copy(nyys, yyS)
  1062. yyS = nyys
  1063. }
  1064. yyS[yyp] = yyVAL
  1065. yyS[yyp].yys = yystate
  1066. yynewstate:
  1067. yyn = yyPact[yystate]
  1068. if yyn <= yyFlag {
  1069. goto yydefault /* simple state */
  1070. }
  1071. if yyrcvr.char < 0 {
  1072. yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
  1073. }
  1074. yyn += yytoken
  1075. if yyn < 0 || yyn >= yyLast {
  1076. goto yydefault
  1077. }
  1078. yyn = yyAct[yyn]
  1079. if yyChk[yyn] == yytoken { /* valid shift */
  1080. yyrcvr.char = -1
  1081. yytoken = -1
  1082. yyVAL = yyrcvr.lval
  1083. yystate = yyn
  1084. if Errflag > 0 {
  1085. Errflag--
  1086. }
  1087. goto yystack
  1088. }
  1089. yydefault:
  1090. /* default state action */
  1091. yyn = yyDef[yystate]
  1092. if yyn == -2 {
  1093. if yyrcvr.char < 0 {
  1094. yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
  1095. }
  1096. /* look through exception table */
  1097. xi := 0
  1098. for {
  1099. if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
  1100. break
  1101. }
  1102. xi += 2
  1103. }
  1104. for xi += 2; ; xi += 2 {
  1105. yyn = yyExca[xi+0]
  1106. if yyn < 0 || yyn == yytoken {
  1107. break
  1108. }
  1109. }
  1110. yyn = yyExca[xi+1]
  1111. if yyn < 0 {
  1112. goto ret0
  1113. }
  1114. }
  1115. if yyn == 0 {
  1116. /* error ... attempt to resume parsing */
  1117. switch Errflag {
  1118. case 0: /* brand new error */
  1119. yylex.Error(yyErrorMessage(yystate, yytoken))
  1120. Nerrs++
  1121. if yyDebug >= 1 {
  1122. __yyfmt__.Printf("%s", yyStatname(yystate))
  1123. __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
  1124. }
  1125. fallthrough
  1126. case 1, 2: /* incompletely recovered error ... try again */
  1127. Errflag = 3
  1128. /* find a state where "error" is a legal shift action */
  1129. for yyp >= 0 {
  1130. yyn = yyPact[yyS[yyp].yys] + yyErrCode
  1131. if yyn >= 0 && yyn < yyLast {
  1132. yystate = yyAct[yyn] /* simulate a shift of "error" */
  1133. if yyChk[yystate] == yyErrCode {
  1134. goto yystack
  1135. }
  1136. }
  1137. /* the current p has no shift on "error", pop stack */
  1138. if yyDebug >= 2 {
  1139. __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
  1140. }
  1141. yyp--
  1142. }
  1143. /* there is no state on the stack with an error shift ... abort */
  1144. goto ret1
  1145. case 3: /* no shift yet; clobber input char */
  1146. if yyDebug >= 2 {
  1147. __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
  1148. }
  1149. if yytoken == yyEofCode {
  1150. goto ret1
  1151. }
  1152. yyrcvr.char = -1
  1153. yytoken = -1
  1154. goto yynewstate /* try again in the same state */
  1155. }
  1156. }
  1157. /* reduction by production yyn */
  1158. if yyDebug >= 2 {
  1159. __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
  1160. }
  1161. yynt := yyn
  1162. yypt := yyp
  1163. _ = yypt // guard against "declared and not used"
  1164. yyp -= yyR2[yyn]
  1165. // yyp is now the index of $0. Perform the default action. Iff the
  1166. // reduced production is ε, $1 is possibly out of range.
  1167. if yyp+1 >= len(yyS) {
  1168. nyys := make([]yySymType, len(yyS)*2)
  1169. copy(nyys, yyS)
  1170. yyS = nyys
  1171. }
  1172. yyVAL = yyS[yyp+1]
  1173. /* consult goto table to find next state */
  1174. yyn = yyR1[yyn]
  1175. yyg := yyPgo[yyn]
  1176. yyj := yyg + yyS[yyp].yys + 1
  1177. if yyj >= yyLast {
  1178. yystate = yyAct[yyg]
  1179. } else {
  1180. yystate = yyAct[yyj]
  1181. if yyChk[yystate] != -yyn {
  1182. yystate = yyAct[yyg]
  1183. }
  1184. }
  1185. // dummy call; replaced with literal code
  1186. switch yynt {
  1187. case 1:
  1188. yyDollar = yyS[yypt-1 : yypt+1]
  1189. //line parser.go.y:108
  1190. {
  1191. yyVAL.compstmt = nil
  1192. }
  1193. case 2:
  1194. yyDollar = yyS[yypt-2 : yypt+1]
  1195. //line parser.go.y:112
  1196. {
  1197. yyVAL.compstmt = yyDollar[1].stmts
  1198. }
  1199. case 3:
  1200. yyDollar = yyS[yypt-2 : yypt+1]
  1201. //line parser.go.y:118
  1202. {
  1203. if yyDollar[2].stmt != nil {
  1204. yyVAL.stmts = &ast.StmtsStmt{Stmts: []ast.Stmt{yyDollar[2].stmt}}
  1205. }
  1206. if l, ok := yylex.(*Lexer); ok {
  1207. l.stmt = yyVAL.stmts
  1208. }
  1209. }
  1210. case 4:
  1211. yyDollar = yyS[yypt-3 : yypt+1]
  1212. //line parser.go.y:127
  1213. {
  1214. if yyDollar[3].stmt != nil {
  1215. if yyDollar[1].stmts == nil {
  1216. yyVAL.stmts = &ast.StmtsStmt{Stmts: []ast.Stmt{yyDollar[3].stmt}}
  1217. } else {
  1218. stmts := yyDollar[1].stmts.(*ast.StmtsStmt)
  1219. stmts.Stmts = append(stmts.Stmts, yyDollar[3].stmt)
  1220. }
  1221. if l, ok := yylex.(*Lexer); ok {
  1222. l.stmt = yyVAL.stmts
  1223. }
  1224. }
  1225. }
  1226. case 5:
  1227. yyDollar = yyS[yypt-0 : yypt+1]
  1228. //line parser.go.y:143
  1229. {
  1230. yyVAL.stmt = nil
  1231. }
  1232. case 6:
  1233. yyDollar = yyS[yypt-1 : yypt+1]
  1234. //line parser.go.y:147
  1235. {
  1236. yyVAL.stmt = yyDollar[1].stmt_var_or_lets
  1237. }
  1238. case 7:
  1239. yyDollar = yyS[yypt-1 : yypt+1]
  1240. //line parser.go.y:151
  1241. {
  1242. yyVAL.stmt = &ast.BreakStmt{}
  1243. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1244. }
  1245. case 8:
  1246. yyDollar = yyS[yypt-1 : yypt+1]
  1247. //line parser.go.y:156
  1248. {
  1249. yyVAL.stmt = &ast.ContinueStmt{}
  1250. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1251. }
  1252. case 9:
  1253. yyDollar = yyS[yypt-2 : yypt+1]
  1254. //line parser.go.y:161
  1255. {
  1256. yyVAL.stmt = &ast.ReturnStmt{Exprs: yyDollar[2].exprs}
  1257. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1258. }
  1259. case 10:
  1260. yyDollar = yyS[yypt-2 : yypt+1]
  1261. //line parser.go.y:166
  1262. {
  1263. yyVAL.stmt = &ast.ThrowStmt{Expr: yyDollar[2].expr}
  1264. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1265. }
  1266. case 11:
  1267. yyDollar = yyS[yypt-5 : yypt+1]
  1268. //line parser.go.y:171
  1269. {
  1270. yyVAL.stmt = &ast.ModuleStmt{Name: yyDollar[2].tok.Lit, Stmt: yyDollar[4].compstmt}
  1271. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1272. }
  1273. case 12:
  1274. yyDollar = yyS[yypt-13 : yypt+1]
  1275. //line parser.go.y:176
  1276. {
  1277. yyVAL.stmt = &ast.TryStmt{Try: yyDollar[3].compstmt, Var: yyDollar[6].tok.Lit, Catch: yyDollar[8].compstmt, Finally: yyDollar[12].compstmt}
  1278. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1279. }
  1280. case 13:
  1281. yyDollar = yyS[yypt-12 : yypt+1]
  1282. //line parser.go.y:181
  1283. {
  1284. yyVAL.stmt = &ast.TryStmt{Try: yyDollar[3].compstmt, Catch: yyDollar[7].compstmt, Finally: yyDollar[11].compstmt}
  1285. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1286. }
  1287. case 14:
  1288. yyDollar = yyS[yypt-9 : yypt+1]
  1289. //line parser.go.y:186
  1290. {
  1291. yyVAL.stmt = &ast.TryStmt{Try: yyDollar[3].compstmt, Var: yyDollar[6].tok.Lit, Catch: yyDollar[8].compstmt}
  1292. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1293. }
  1294. case 15:
  1295. yyDollar = yyS[yypt-8 : yypt+1]
  1296. //line parser.go.y:191
  1297. {
  1298. yyVAL.stmt = &ast.TryStmt{Try: yyDollar[3].compstmt, Catch: yyDollar[7].compstmt}
  1299. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1300. }
  1301. case 16:
  1302. yyDollar = yyS[yypt-6 : yypt+1]
  1303. //line parser.go.y:196
  1304. {
  1305. yyVAL.stmt = &ast.GoroutineStmt{Expr: &ast.CallExpr{Name: yyDollar[2].tok.Lit, SubExprs: yyDollar[4].exprs, VarArg: true, Go: true}}
  1306. yyVAL.stmt.SetPosition(yyDollar[2].tok.Position())
  1307. }
  1308. case 17:
  1309. yyDollar = yyS[yypt-5 : yypt+1]
  1310. //line parser.go.y:201
  1311. {
  1312. yyVAL.stmt = &ast.GoroutineStmt{Expr: &ast.CallExpr{Name: yyDollar[2].tok.Lit, SubExprs: yyDollar[4].exprs, Go: true}}
  1313. yyVAL.stmt.SetPosition(yyDollar[2].tok.Position())
  1314. }
  1315. case 18:
  1316. yyDollar = yyS[yypt-6 : yypt+1]
  1317. //line parser.go.y:206
  1318. {
  1319. yyVAL.stmt = &ast.GoroutineStmt{Expr: &ast.AnonCallExpr{Expr: yyDollar[2].expr, SubExprs: yyDollar[4].exprs, VarArg: true, Go: true}}
  1320. yyVAL.stmt.SetPosition(yyDollar[2].expr.Position())
  1321. }
  1322. case 19:
  1323. yyDollar = yyS[yypt-5 : yypt+1]
  1324. //line parser.go.y:211
  1325. {
  1326. yyVAL.stmt = &ast.GoroutineStmt{Expr: &ast.AnonCallExpr{Expr: yyDollar[2].expr, SubExprs: yyDollar[4].exprs, Go: true}}
  1327. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1328. }
  1329. case 20:
  1330. yyDollar = yyS[yypt-4 : yypt+1]
  1331. //line parser.go.y:216
  1332. {
  1333. yyVAL.stmt = &ast.DeleteStmt{Item: yyDollar[3].expr}
  1334. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1335. }
  1336. case 21:
  1337. yyDollar = yyS[yypt-6 : yypt+1]
  1338. //line parser.go.y:221
  1339. {
  1340. yyVAL.stmt = &ast.DeleteStmt{Item: yyDollar[3].expr, Key: yyDollar[5].expr}
  1341. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1342. }
  1343. case 22:
  1344. yyDollar = yyS[yypt-4 : yypt+1]
  1345. //line parser.go.y:226
  1346. {
  1347. yyVAL.stmt = &ast.CloseStmt{Expr: yyDollar[3].expr}
  1348. yyVAL.stmt.SetPosition(yyDollar[1].tok.Position())
  1349. }
  1350. case 23:
  1351. yyDollar = yyS[yypt-1 : yypt+1]
  1352. //line parser.go.y:231
  1353. {
  1354. yyVAL.stmt = yyDollar[1].stmt_if
  1355. }
  1356. case 24:
  1357. yyDollar = yyS[yypt-1 : yypt+1]
  1358. //line parser.go.y:235
  1359. {
  1360. yyVAL.stmt = yyDollar[1].stmt_for
  1361. }
  1362. case 25:
  1363. yyDollar = yyS[yypt-1 : yypt+1]
  1364. //line parser.go.y:239
  1365. {
  1366. yyVAL.stmt = yyDollar[1].stmt_switch
  1367. }
  1368. case 26:
  1369. yyDollar = yyS[yypt-1 : yypt+1]
  1370. //line parser.go.y:243
  1371. {
  1372. yyVAL.stmt = &ast.ExprStmt{Expr: yyDollar[1].expr}
  1373. yyVAL.stmt.SetPosition(yyDollar[1].expr.Position())
  1374. }
  1375. case 27:
  1376. yyDollar = yyS[yypt-1 : yypt+1]
  1377. //line parser.go.y:250
  1378. {
  1379. yyVAL.stmt_var_or_lets = yyDollar[1].stmt_var
  1380. }
  1381. case 28:
  1382. yyDollar = yyS[yypt-1 : yypt+1]
  1383. //line parser.go.y:254
  1384. {
  1385. yyVAL.stmt_var_or_lets = yyDollar[1].stmt_lets
  1386. }
  1387. case 29:
  1388. yyDollar = yyS[yypt-4 : yypt+1]
  1389. //line parser.go.y:260
  1390. {
  1391. yyVAL.stmt_var = &ast.VarStmt{Names: yyDollar[2].expr_idents, Exprs: yyDollar[4].exprs}
  1392. yyVAL.stmt_var.SetPosition(yyDollar[1].tok.Position())
  1393. }
  1394. case 30:
  1395. yyDollar = yyS[yypt-3 : yypt+1]
  1396. //line parser.go.y:267
  1397. {
  1398. yyVAL.stmt_lets = &ast.LetsStmt{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{yyDollar[3].expr}}
  1399. yyVAL.stmt_lets.SetPosition(yyDollar[1].expr.Position())
  1400. }
  1401. case 31:
  1402. yyDollar = yyS[yypt-3 : yypt+1]
  1403. //line parser.go.y:272
  1404. {
  1405. if len(yyDollar[1].exprs) == 2 && len(yyDollar[3].exprs) == 1 {
  1406. if _, ok := yyDollar[3].exprs[0].(*ast.ItemExpr); ok {
  1407. yyVAL.stmt_lets = &ast.LetMapItemStmt{LHSS: yyDollar[1].exprs, RHS: yyDollar[3].exprs[0]}
  1408. } else {
  1409. yyVAL.stmt_lets = &ast.LetsStmt{LHSS: yyDollar[1].exprs, RHSS: yyDollar[3].exprs}
  1410. }
  1411. } else {
  1412. yyVAL.stmt_lets = &ast.LetsStmt{LHSS: yyDollar[1].exprs, RHSS: yyDollar[3].exprs}
  1413. }
  1414. yyVAL.stmt_lets.SetPosition(yyDollar[1].exprs[0].Position())
  1415. }
  1416. case 32:
  1417. yyDollar = yyS[yypt-3 : yypt+1]
  1418. //line parser.go.y:285
  1419. {
  1420. yyVAL.stmt_lets = &ast.ChanStmt{LHS: yyDollar[1].expr, RHS: yyDollar[3].expr}
  1421. yyVAL.stmt_lets.SetPosition(yyDollar[1].expr.Position())
  1422. }
  1423. case 33:
  1424. yyDollar = yyS[yypt-3 : yypt+1]
  1425. //line parser.go.y:290
  1426. {
  1427. if len(yyDollar[1].exprs) == 2 {
  1428. chanStmt := &ast.ChanStmt{LHS: yyDollar[1].exprs[0].(ast.Expr), OkExpr: yyDollar[1].exprs[1].(ast.Expr), RHS: yyDollar[3].expr}
  1429. yyVAL.stmt_lets = chanStmt
  1430. yyVAL.stmt_lets.SetPosition(chanStmt.LHS.Position())
  1431. } else if len(yyDollar[1].exprs) < 2 {
  1432. yylex.Error("missing expressions on left side of channel operator")
  1433. yyVAL.stmt_lets = &ast.ChanStmt{RHS: yyDollar[3].expr}
  1434. yyVAL.stmt_lets.SetPosition(yyDollar[2].tok.Position())
  1435. }
  1436. }
  1437. case 34:
  1438. yyDollar = yyS[yypt-5 : yypt+1]
  1439. //line parser.go.y:304
  1440. {
  1441. yyVAL.stmt_if = &ast.IfStmt{If: yyDollar[2].expr, Then: yyDollar[4].compstmt, Else: nil}
  1442. yyVAL.stmt_if.SetPosition(yyDollar[1].tok.Position())
  1443. }
  1444. case 35:
  1445. yyDollar = yyS[yypt-7 : yypt+1]
  1446. //line parser.go.y:309
  1447. {
  1448. ifStmt := yyDollar[1].stmt_if.(*ast.IfStmt)
  1449. ifStmt.ElseIf = append(ifStmt.ElseIf, &ast.IfStmt{If: yyDollar[4].expr, Then: yyDollar[6].compstmt})
  1450. }
  1451. case 36:
  1452. yyDollar = yyS[yypt-5 : yypt+1]
  1453. //line parser.go.y:314
  1454. {
  1455. ifStmt := yyDollar[1].stmt_if.(*ast.IfStmt)
  1456. if ifStmt.Else != nil {
  1457. yylex.Error("multiple else statement")
  1458. }
  1459. ifStmt.Else = yyDollar[4].compstmt
  1460. }
  1461. case 37:
  1462. yyDollar = yyS[yypt-4 : yypt+1]
  1463. //line parser.go.y:324
  1464. {
  1465. yyVAL.stmt_for = &ast.LoopStmt{Stmt: yyDollar[3].compstmt}
  1466. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1467. }
  1468. case 38:
  1469. yyDollar = yyS[yypt-7 : yypt+1]
  1470. //line parser.go.y:329
  1471. {
  1472. if len(yyDollar[2].expr_idents) < 1 {
  1473. yylex.Error("missing identifier")
  1474. } else if len(yyDollar[2].expr_idents) > 2 {
  1475. yylex.Error("too many identifiers")
  1476. } else {
  1477. yyVAL.stmt_for = &ast.ForStmt{Vars: yyDollar[2].expr_idents, Value: yyDollar[4].expr, Stmt: yyDollar[6].compstmt}
  1478. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1479. }
  1480. }
  1481. case 39:
  1482. yyDollar = yyS[yypt-5 : yypt+1]
  1483. //line parser.go.y:340
  1484. {
  1485. yyVAL.stmt_for = &ast.LoopStmt{Expr: yyDollar[2].expr, Stmt: yyDollar[4].compstmt}
  1486. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1487. }
  1488. case 40:
  1489. yyDollar = yyS[yypt-6 : yypt+1]
  1490. //line parser.go.y:345
  1491. {
  1492. yyVAL.stmt_for = &ast.CForStmt{Stmt: yyDollar[5].compstmt}
  1493. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1494. }
  1495. case 41:
  1496. yyDollar = yyS[yypt-7 : yypt+1]
  1497. //line parser.go.y:350
  1498. {
  1499. yyVAL.stmt_for = &ast.CForStmt{Expr3: yyDollar[4].expr, Stmt: yyDollar[6].compstmt}
  1500. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1501. }
  1502. case 42:
  1503. yyDollar = yyS[yypt-7 : yypt+1]
  1504. //line parser.go.y:355
  1505. {
  1506. yyVAL.stmt_for = &ast.CForStmt{Expr2: yyDollar[3].expr, Stmt: yyDollar[6].compstmt}
  1507. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1508. }
  1509. case 43:
  1510. yyDollar = yyS[yypt-8 : yypt+1]
  1511. //line parser.go.y:360
  1512. {
  1513. yyVAL.stmt_for = &ast.CForStmt{Expr2: yyDollar[3].expr, Expr3: yyDollar[5].expr, Stmt: yyDollar[7].compstmt}
  1514. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1515. }
  1516. case 44:
  1517. yyDollar = yyS[yypt-7 : yypt+1]
  1518. //line parser.go.y:365
  1519. {
  1520. yyVAL.stmt_for = &ast.CForStmt{Stmt1: yyDollar[2].stmt_var_or_lets, Stmt: yyDollar[6].compstmt}
  1521. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1522. }
  1523. case 45:
  1524. yyDollar = yyS[yypt-8 : yypt+1]
  1525. //line parser.go.y:370
  1526. {
  1527. yyVAL.stmt_for = &ast.CForStmt{Stmt1: yyDollar[2].stmt_var_or_lets, Expr3: yyDollar[5].expr, Stmt: yyDollar[7].compstmt}
  1528. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1529. }
  1530. case 46:
  1531. yyDollar = yyS[yypt-8 : yypt+1]
  1532. //line parser.go.y:375
  1533. {
  1534. yyVAL.stmt_for = &ast.CForStmt{Stmt1: yyDollar[2].stmt_var_or_lets, Expr2: yyDollar[4].expr, Stmt: yyDollar[7].compstmt}
  1535. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1536. }
  1537. case 47:
  1538. yyDollar = yyS[yypt-9 : yypt+1]
  1539. //line parser.go.y:380
  1540. {
  1541. yyVAL.stmt_for = &ast.CForStmt{Stmt1: yyDollar[2].stmt_var_or_lets, Expr2: yyDollar[4].expr, Expr3: yyDollar[6].expr, Stmt: yyDollar[8].compstmt}
  1542. yyVAL.stmt_for.SetPosition(yyDollar[1].tok.Position())
  1543. }
  1544. case 48:
  1545. yyDollar = yyS[yypt-7 : yypt+1]
  1546. //line parser.go.y:387
  1547. {
  1548. switchStmt := yyDollar[5].stmt_switch_cases.(*ast.SwitchStmt)
  1549. switchStmt.Expr = yyDollar[2].expr
  1550. yyVAL.stmt_switch = switchStmt
  1551. yyVAL.stmt_switch.SetPosition(yyDollar[1].tok.Position())
  1552. }
  1553. case 49:
  1554. yyDollar = yyS[yypt-0 : yypt+1]
  1555. //line parser.go.y:396
  1556. {
  1557. yyVAL.stmt_switch_cases = &ast.SwitchStmt{}
  1558. }
  1559. case 50:
  1560. yyDollar = yyS[yypt-1 : yypt+1]
  1561. //line parser.go.y:400
  1562. {
  1563. yyVAL.stmt_switch_cases = &ast.SwitchStmt{Default: yyDollar[1].stmt_switch_default}
  1564. }
  1565. case 51:
  1566. yyDollar = yyS[yypt-1 : yypt+1]
  1567. //line parser.go.y:404
  1568. {
  1569. yyVAL.stmt_switch_cases = &ast.SwitchStmt{Cases: []ast.Stmt{yyDollar[1].stmt_switch_case}}
  1570. }
  1571. case 52:
  1572. yyDollar = yyS[yypt-2 : yypt+1]
  1573. //line parser.go.y:408
  1574. {
  1575. switchStmt := yyDollar[1].stmt_switch_cases.(*ast.SwitchStmt)
  1576. switchStmt.Cases = append(switchStmt.Cases, yyDollar[2].stmt_switch_case)
  1577. yyVAL.stmt_switch_cases = switchStmt
  1578. }
  1579. case 53:
  1580. yyDollar = yyS[yypt-2 : yypt+1]
  1581. //line parser.go.y:414
  1582. {
  1583. switchStmt := yyDollar[1].stmt_switch_cases.(*ast.SwitchStmt)
  1584. if switchStmt.Default != nil {
  1585. yylex.Error("multiple default statement")
  1586. }
  1587. switchStmt.Default = yyDollar[2].stmt_switch_default
  1588. }
  1589. case 54:
  1590. yyDollar = yyS[yypt-4 : yypt+1]
  1591. //line parser.go.y:424
  1592. {
  1593. yyVAL.stmt_switch_case = &ast.SwitchCaseStmt{Exprs: []ast.Expr{yyDollar[2].expr}, Stmt: yyDollar[4].compstmt}
  1594. yyVAL.stmt_switch_case.SetPosition(yyDollar[1].tok.Position())
  1595. }
  1596. case 55:
  1597. yyDollar = yyS[yypt-4 : yypt+1]
  1598. //line parser.go.y:429
  1599. {
  1600. yyVAL.stmt_switch_case = &ast.SwitchCaseStmt{Exprs: yyDollar[2].exprs, Stmt: yyDollar[4].compstmt}
  1601. yyVAL.stmt_switch_case.SetPosition(yyDollar[1].tok.Position())
  1602. }
  1603. case 56:
  1604. yyDollar = yyS[yypt-3 : yypt+1]
  1605. //line parser.go.y:436
  1606. {
  1607. yyVAL.stmt_switch_default = yyDollar[3].compstmt
  1608. }
  1609. case 57:
  1610. yyDollar = yyS[yypt-0 : yypt+1]
  1611. //line parser.go.y:443
  1612. {
  1613. yyVAL.exprs = nil
  1614. }
  1615. case 58:
  1616. yyDollar = yyS[yypt-1 : yypt+1]
  1617. //line parser.go.y:447
  1618. {
  1619. yyVAL.exprs = []ast.Expr{yyDollar[1].expr}
  1620. }
  1621. case 59:
  1622. yyDollar = yyS[yypt-4 : yypt+1]
  1623. //line parser.go.y:451
  1624. {
  1625. if len(yyDollar[1].exprs) == 0 {
  1626. yylex.Error("syntax error: unexpected ','")
  1627. }
  1628. yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[4].expr)
  1629. }
  1630. case 60:
  1631. yyDollar = yyS[yypt-4 : yypt+1]
  1632. //line parser.go.y:458
  1633. {
  1634. if len(yyDollar[1].exprs) == 0 {
  1635. yylex.Error("syntax error: unexpected ','")
  1636. }
  1637. yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[4].expr_ident)
  1638. }
  1639. case 61:
  1640. yyDollar = yyS[yypt-1 : yypt+1]
  1641. //line parser.go.y:467
  1642. {
  1643. yyVAL.expr = yyDollar[1].expr_member_or_ident
  1644. }
  1645. case 62:
  1646. yyDollar = yyS[yypt-1 : yypt+1]
  1647. //line parser.go.y:471
  1648. {
  1649. yyVAL.expr = yyDollar[1].expr_literals
  1650. }
  1651. case 63:
  1652. yyDollar = yyS[yypt-5 : yypt+1]
  1653. //line parser.go.y:475
  1654. {
  1655. yyVAL.expr = &ast.TernaryOpExpr{Expr: yyDollar[1].expr, LHS: yyDollar[3].expr, RHS: yyDollar[5].expr}
  1656. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  1657. }
  1658. case 64:
  1659. yyDollar = yyS[yypt-3 : yypt+1]
  1660. //line parser.go.y:480
  1661. {
  1662. yyVAL.expr = &ast.NilCoalescingOpExpr{LHS: yyDollar[1].expr, RHS: yyDollar[3].expr}
  1663. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  1664. }
  1665. case 65:
  1666. yyDollar = yyS[yypt-7 : yypt+1]
  1667. //line parser.go.y:485
  1668. {
  1669. yyVAL.expr = &ast.FuncExpr{Params: yyDollar[3].expr_idents, Stmt: yyDollar[6].compstmt}
  1670. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1671. }
  1672. case 66:
  1673. yyDollar = yyS[yypt-8 : yypt+1]
  1674. //line parser.go.y:490
  1675. {
  1676. yyVAL.expr = &ast.FuncExpr{Params: yyDollar[3].expr_idents, Stmt: yyDollar[7].compstmt, VarArg: true}
  1677. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1678. }
  1679. case 67:
  1680. yyDollar = yyS[yypt-8 : yypt+1]
  1681. //line parser.go.y:495
  1682. {
  1683. yyVAL.expr = &ast.FuncExpr{Name: yyDollar[2].tok.Lit, Params: yyDollar[4].expr_idents, Stmt: yyDollar[7].compstmt}
  1684. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1685. }
  1686. case 68:
  1687. yyDollar = yyS[yypt-9 : yypt+1]
  1688. //line parser.go.y:500
  1689. {
  1690. yyVAL.expr = &ast.FuncExpr{Name: yyDollar[2].tok.Lit, Params: yyDollar[4].expr_idents, Stmt: yyDollar[8].compstmt, VarArg: true}
  1691. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1692. }
  1693. case 69:
  1694. yyDollar = yyS[yypt-2 : yypt+1]
  1695. //line parser.go.y:505
  1696. {
  1697. yyVAL.expr = &ast.ArrayExpr{}
  1698. if l, ok := yylex.(*Lexer); ok {
  1699. yyVAL.expr.SetPosition(l.pos)
  1700. }
  1701. }
  1702. case 70:
  1703. yyDollar = yyS[yypt-5 : yypt+1]
  1704. //line parser.go.y:510
  1705. {
  1706. yyVAL.expr = &ast.ArrayExpr{Exprs: yyDollar[3].exprs}
  1707. if l, ok := yylex.(*Lexer); ok {
  1708. yyVAL.expr.SetPosition(l.pos)
  1709. }
  1710. }
  1711. case 71:
  1712. yyDollar = yyS[yypt-7 : yypt+1]
  1713. //line parser.go.y:515
  1714. {
  1715. yyVAL.expr = &ast.ArrayExpr{Exprs: yyDollar[5].exprs, TypeData: &ast.TypeStruct{Kind: ast.TypeSlice, SubType: yyDollar[2].type_data, Dimensions: yyDollar[1].slice_count}}
  1716. if l, ok := yylex.(*Lexer); ok {
  1717. yyVAL.expr.SetPosition(l.pos)
  1718. }
  1719. }
  1720. case 72:
  1721. yyDollar = yyS[yypt-3 : yypt+1]
  1722. //line parser.go.y:520
  1723. {
  1724. yyVAL.expr = &ast.ParenExpr{SubExpr: yyDollar[2].expr}
  1725. if l, ok := yylex.(*Lexer); ok {
  1726. yyVAL.expr.SetPosition(l.pos)
  1727. }
  1728. }
  1729. case 73:
  1730. yyDollar = yyS[yypt-5 : yypt+1]
  1731. //line parser.go.y:525
  1732. {
  1733. yyVAL.expr = &ast.CallExpr{Name: yyDollar[1].tok.Lit, SubExprs: yyDollar[3].exprs, VarArg: true}
  1734. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1735. }
  1736. case 74:
  1737. yyDollar = yyS[yypt-4 : yypt+1]
  1738. //line parser.go.y:530
  1739. {
  1740. yyVAL.expr = &ast.CallExpr{Name: yyDollar[1].tok.Lit, SubExprs: yyDollar[3].exprs}
  1741. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1742. }
  1743. case 75:
  1744. yyDollar = yyS[yypt-5 : yypt+1]
  1745. //line parser.go.y:535
  1746. {
  1747. yyVAL.expr = &ast.AnonCallExpr{Expr: yyDollar[1].expr, SubExprs: yyDollar[3].exprs, VarArg: true}
  1748. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  1749. }
  1750. case 76:
  1751. yyDollar = yyS[yypt-4 : yypt+1]
  1752. //line parser.go.y:540
  1753. {
  1754. yyVAL.expr = &ast.AnonCallExpr{Expr: yyDollar[1].expr, SubExprs: yyDollar[3].exprs}
  1755. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  1756. }
  1757. case 77:
  1758. yyDollar = yyS[yypt-4 : yypt+1]
  1759. //line parser.go.y:545
  1760. {
  1761. yyVAL.expr = &ast.ItemExpr{Item: yyDollar[1].expr_ident, Index: yyDollar[3].expr}
  1762. yyVAL.expr.SetPosition(yyDollar[1].expr_ident.Position())
  1763. }
  1764. case 78:
  1765. yyDollar = yyS[yypt-4 : yypt+1]
  1766. //line parser.go.y:550
  1767. {
  1768. yyVAL.expr = &ast.ItemExpr{Item: yyDollar[1].expr, Index: yyDollar[3].expr}
  1769. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  1770. }
  1771. case 79:
  1772. yyDollar = yyS[yypt-4 : yypt+1]
  1773. //line parser.go.y:555
  1774. {
  1775. yyVAL.expr = &ast.LenExpr{Expr: yyDollar[3].expr}
  1776. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1777. }
  1778. case 80:
  1779. yyDollar = yyS[yypt-4 : yypt+1]
  1780. //line parser.go.y:560
  1781. {
  1782. yyVAL.expr = &ast.ImportExpr{Name: yyDollar[3].expr}
  1783. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1784. }
  1785. case 81:
  1786. yyDollar = yyS[yypt-4 : yypt+1]
  1787. //line parser.go.y:565
  1788. {
  1789. if yyDollar[3].type_data.Kind == ast.TypeDefault {
  1790. yyDollar[3].type_data.Kind = ast.TypePtr
  1791. yyVAL.expr = &ast.MakeExpr{TypeData: yyDollar[3].type_data}
  1792. } else {
  1793. yyVAL.expr = &ast.MakeExpr{TypeData: &ast.TypeStruct{Kind: ast.TypePtr, SubType: yyDollar[3].type_data}}
  1794. }
  1795. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1796. }
  1797. case 82:
  1798. yyDollar = yyS[yypt-4 : yypt+1]
  1799. //line parser.go.y:575
  1800. {
  1801. yyVAL.expr = &ast.MakeExpr{TypeData: yyDollar[3].type_data}
  1802. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1803. }
  1804. case 83:
  1805. yyDollar = yyS[yypt-6 : yypt+1]
  1806. //line parser.go.y:580
  1807. {
  1808. yyVAL.expr = &ast.MakeExpr{TypeData: yyDollar[3].type_data, LenExpr: yyDollar[5].expr}
  1809. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1810. }
  1811. case 84:
  1812. yyDollar = yyS[yypt-8 : yypt+1]
  1813. //line parser.go.y:585
  1814. {
  1815. yyVAL.expr = &ast.MakeExpr{TypeData: yyDollar[3].type_data, LenExpr: yyDollar[5].expr, CapExpr: yyDollar[7].expr}
  1816. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1817. }
  1818. case 85:
  1819. yyDollar = yyS[yypt-7 : yypt+1]
  1820. //line parser.go.y:590
  1821. {
  1822. yyVAL.expr = &ast.MakeTypeExpr{Name: yyDollar[4].tok.Lit, Type: yyDollar[6].expr}
  1823. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1824. }
  1825. case 86:
  1826. yyDollar = yyS[yypt-3 : yypt+1]
  1827. //line parser.go.y:595
  1828. {
  1829. yyVAL.expr = &ast.IncludeExpr{ItemExpr: yyDollar[1].expr, ListExpr: yyDollar[3].expr}
  1830. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  1831. }
  1832. case 87:
  1833. yyDollar = yyS[yypt-6 : yypt+1]
  1834. //line parser.go.y:600
  1835. {
  1836. yyDollar[4].expr_map.TypeData = &ast.TypeStruct{Kind: ast.TypeMap, Key: &ast.TypeStruct{Name: "interface"}, SubType: &ast.TypeStruct{Name: "interface"}}
  1837. yyVAL.expr = yyDollar[4].expr_map
  1838. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1839. }
  1840. case 88:
  1841. yyDollar = yyS[yypt-10 : yypt+1]
  1842. //line parser.go.y:606
  1843. {
  1844. yyDollar[8].expr_map.TypeData = &ast.TypeStruct{Kind: ast.TypeMap, Key: yyDollar[3].type_data, SubType: yyDollar[5].type_data}
  1845. yyVAL.expr = yyDollar[8].expr_map
  1846. yyVAL.expr.SetPosition(yyDollar[1].tok.Position())
  1847. }
  1848. case 89:
  1849. yyDollar = yyS[yypt-5 : yypt+1]
  1850. //line parser.go.y:612
  1851. {
  1852. yyVAL.expr = yyDollar[3].expr_map
  1853. yyVAL.expr.SetPosition(yyDollar[3].expr_map.Position())
  1854. }
  1855. case 90:
  1856. yyDollar = yyS[yypt-1 : yypt+1]
  1857. //line parser.go.y:617
  1858. {
  1859. yyVAL.expr = yyDollar[1].expr_slice
  1860. yyVAL.expr.SetPosition(yyDollar[1].expr_slice.Position())
  1861. }
  1862. case 91:
  1863. yyDollar = yyS[yypt-1 : yypt+1]
  1864. //line parser.go.y:622
  1865. {
  1866. yyVAL.expr = yyDollar[1].expr_chan
  1867. yyVAL.expr.SetPosition(yyDollar[1].expr_chan.Position())
  1868. }
  1869. case 95:
  1870. yyDollar = yyS[yypt-0 : yypt+1]
  1871. //line parser.go.y:631
  1872. {
  1873. yyVAL.expr_idents = []string{}
  1874. }
  1875. case 96:
  1876. yyDollar = yyS[yypt-1 : yypt+1]
  1877. //line parser.go.y:635
  1878. {
  1879. yyVAL.expr_idents = []string{yyDollar[1].tok.Lit}
  1880. }
  1881. case 97:
  1882. yyDollar = yyS[yypt-4 : yypt+1]
  1883. //line parser.go.y:639
  1884. {
  1885. if len(yyDollar[1].expr_idents) == 0 {
  1886. yylex.Error("syntax error: unexpected ','")
  1887. }
  1888. yyVAL.expr_idents = append(yyDollar[1].expr_idents, yyDollar[4].tok.Lit)
  1889. }
  1890. case 98:
  1891. yyDollar = yyS[yypt-1 : yypt+1]
  1892. //line parser.go.y:648
  1893. {
  1894. yyVAL.type_data = &ast.TypeStruct{Name: yyDollar[1].tok.Lit}
  1895. }
  1896. case 99:
  1897. yyDollar = yyS[yypt-3 : yypt+1]
  1898. //line parser.go.y:652
  1899. {
  1900. if yyDollar[1].type_data.Kind != ast.TypeDefault {
  1901. yylex.Error("not type default")
  1902. } else {
  1903. yyDollar[1].type_data.Env = append(yyDollar[1].type_data.Env, yyDollar[1].type_data.Name)
  1904. yyDollar[1].type_data.Name = yyDollar[3].tok.Lit
  1905. }
  1906. }
  1907. case 100:
  1908. yyDollar = yyS[yypt-2 : yypt+1]
  1909. //line parser.go.y:661
  1910. {
  1911. if yyDollar[2].type_data.Kind == ast.TypeDefault {
  1912. yyDollar[2].type_data.Kind = ast.TypePtr
  1913. yyVAL.type_data = yyDollar[2].type_data
  1914. } else {
  1915. yyVAL.type_data = &ast.TypeStruct{Kind: ast.TypePtr, SubType: yyDollar[2].type_data}
  1916. }
  1917. }
  1918. case 101:
  1919. yyDollar = yyS[yypt-2 : yypt+1]
  1920. //line parser.go.y:670
  1921. {
  1922. if yyDollar[2].type_data.Kind == ast.TypeDefault {
  1923. yyDollar[2].type_data.Kind = ast.TypeSlice
  1924. yyDollar[2].type_data.Dimensions = yyDollar[1].slice_count
  1925. yyVAL.type_data = yyDollar[2].type_data
  1926. } else {
  1927. yyVAL.type_data = &ast.TypeStruct{Kind: ast.TypeSlice, SubType: yyDollar[2].type_data, Dimensions: yyDollar[1].slice_count}
  1928. }
  1929. }
  1930. case 102:
  1931. yyDollar = yyS[yypt-5 : yypt+1]
  1932. //line parser.go.y:680
  1933. {
  1934. yyVAL.type_data = &ast.TypeStruct{Kind: ast.TypeMap, Key: yyDollar[3].type_data, SubType: yyDollar[5].type_data}
  1935. }
  1936. case 103:
  1937. yyDollar = yyS[yypt-2 : yypt+1]
  1938. //line parser.go.y:684
  1939. {
  1940. if yyDollar[2].type_data.Kind == ast.TypeDefault {
  1941. yyDollar[2].type_data.Kind = ast.TypeChan
  1942. yyVAL.type_data = yyDollar[2].type_data
  1943. } else {
  1944. yyVAL.type_data = &ast.TypeStruct{Kind: ast.TypeChan, SubType: yyDollar[2].type_data}
  1945. }
  1946. }
  1947. case 104:
  1948. yyDollar = yyS[yypt-6 : yypt+1]
  1949. //line parser.go.y:693
  1950. {
  1951. yyVAL.type_data = yyDollar[4].type_data_struct
  1952. }
  1953. case 105:
  1954. yyDollar = yyS[yypt-2 : yypt+1]
  1955. //line parser.go.y:699
  1956. {
  1957. yyVAL.type_data_struct = &ast.TypeStruct{Kind: ast.TypeStructType, StructNames: []string{yyDollar[1].tok.Lit}, StructTypes: []*ast.TypeStruct{yyDollar[2].type_data}}
  1958. }
  1959. case 106:
  1960. yyDollar = yyS[yypt-5 : yypt+1]
  1961. //line parser.go.y:703
  1962. {
  1963. if yyDollar[1].type_data_struct == nil {
  1964. yylex.Error("syntax error: unexpected ','")
  1965. }
  1966. yyVAL.type_data_struct.StructNames = append(yyVAL.type_data_struct.StructNames, yyDollar[4].tok.Lit)
  1967. yyVAL.type_data_struct.StructTypes = append(yyVAL.type_data_struct.StructTypes, yyDollar[5].type_data)
  1968. }
  1969. case 107:
  1970. yyDollar = yyS[yypt-2 : yypt+1]
  1971. //line parser.go.y:713
  1972. {
  1973. yyVAL.slice_count = 1
  1974. }
  1975. case 108:
  1976. yyDollar = yyS[yypt-3 : yypt+1]
  1977. //line parser.go.y:717
  1978. {
  1979. yyVAL.slice_count = yyDollar[3].slice_count + 1
  1980. }
  1981. case 109:
  1982. yyDollar = yyS[yypt-1 : yypt+1]
  1983. //line parser.go.y:723
  1984. {
  1985. yyVAL.expr_member_or_ident = yyDollar[1].expr_member
  1986. }
  1987. case 110:
  1988. yyDollar = yyS[yypt-1 : yypt+1]
  1989. //line parser.go.y:727
  1990. {
  1991. yyVAL.expr_member_or_ident = yyDollar[1].expr_ident
  1992. }
  1993. case 111:
  1994. yyDollar = yyS[yypt-3 : yypt+1]
  1995. //line parser.go.y:733
  1996. {
  1997. yyVAL.expr_member = &ast.MemberExpr{Expr: yyDollar[1].expr, Name: yyDollar[3].tok.Lit}
  1998. yyVAL.expr_member.SetPosition(yyDollar[1].expr.Position())
  1999. }
  2000. case 112:
  2001. yyDollar = yyS[yypt-1 : yypt+1]
  2002. //line parser.go.y:740
  2003. {
  2004. yyVAL.expr_ident = &ast.IdentExpr{Lit: yyDollar[1].tok.Lit}
  2005. yyVAL.expr_ident.SetPosition(yyDollar[1].tok.Position())
  2006. }
  2007. case 113:
  2008. yyDollar = yyS[yypt-2 : yypt+1]
  2009. //line parser.go.y:747
  2010. {
  2011. num, err := toNumber("-" + yyDollar[2].tok.Lit)
  2012. if err != nil {
  2013. yylex.Error("invalid number: -" + yyDollar[2].tok.Lit)
  2014. }
  2015. yyVAL.expr_literals = &ast.LiteralExpr{Literal: num}
  2016. yyVAL.expr_literals.SetPosition(yyDollar[2].tok.Position())
  2017. }
  2018. case 114:
  2019. yyDollar = yyS[yypt-1 : yypt+1]
  2020. //line parser.go.y:756
  2021. {
  2022. num, err := toNumber(yyDollar[1].tok.Lit)
  2023. if err != nil {
  2024. yylex.Error("invalid number: " + yyDollar[1].tok.Lit)
  2025. }
  2026. yyVAL.expr_literals = &ast.LiteralExpr{Literal: num}
  2027. yyVAL.expr_literals.SetPosition(yyDollar[1].tok.Position())
  2028. }
  2029. case 115:
  2030. yyDollar = yyS[yypt-1 : yypt+1]
  2031. //line parser.go.y:765
  2032. {
  2033. yyVAL.expr_literals = &ast.LiteralExpr{Literal: stringToValue(yyDollar[1].tok.Lit)}
  2034. yyVAL.expr_literals.SetPosition(yyDollar[1].tok.Position())
  2035. }
  2036. case 116:
  2037. yyDollar = yyS[yypt-1 : yypt+1]
  2038. //line parser.go.y:770
  2039. {
  2040. yyVAL.expr_literals = &ast.LiteralExpr{Literal: trueValue}
  2041. yyVAL.expr_literals.SetPosition(yyDollar[1].tok.Position())
  2042. }
  2043. case 117:
  2044. yyDollar = yyS[yypt-1 : yypt+1]
  2045. //line parser.go.y:775
  2046. {
  2047. yyVAL.expr_literals = &ast.LiteralExpr{Literal: falseValue}
  2048. yyVAL.expr_literals.SetPosition(yyDollar[1].tok.Position())
  2049. }
  2050. case 118:
  2051. yyDollar = yyS[yypt-1 : yypt+1]
  2052. //line parser.go.y:780
  2053. {
  2054. yyVAL.expr_literals = &ast.LiteralExpr{Literal: nilValue}
  2055. yyVAL.expr_literals.SetPosition(yyDollar[1].tok.Position())
  2056. }
  2057. case 119:
  2058. yyDollar = yyS[yypt-0 : yypt+1]
  2059. //line parser.go.y:787
  2060. {
  2061. yyVAL.expr_map = &ast.MapExpr{}
  2062. }
  2063. case 120:
  2064. yyDollar = yyS[yypt-3 : yypt+1]
  2065. //line parser.go.y:791
  2066. {
  2067. yyVAL.expr_map = &ast.MapExpr{Keys: []ast.Expr{yyDollar[1].expr}, Values: []ast.Expr{yyDollar[3].expr}}
  2068. }
  2069. case 121:
  2070. yyDollar = yyS[yypt-6 : yypt+1]
  2071. //line parser.go.y:795
  2072. {
  2073. if yyDollar[1].expr_map.Keys == nil {
  2074. yylex.Error("syntax error: unexpected ','")
  2075. }
  2076. yyVAL.expr_map.Keys = append(yyVAL.expr_map.Keys, yyDollar[4].expr)
  2077. yyVAL.expr_map.Values = append(yyVAL.expr_map.Values, yyDollar[6].expr)
  2078. }
  2079. case 122:
  2080. yyDollar = yyS[yypt-6 : yypt+1]
  2081. //line parser.go.y:805
  2082. {
  2083. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr_ident, Begin: yyDollar[3].expr, End: yyDollar[5].expr}
  2084. }
  2085. case 123:
  2086. yyDollar = yyS[yypt-5 : yypt+1]
  2087. //line parser.go.y:809
  2088. {
  2089. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr_ident, Begin: yyDollar[3].expr, End: nil}
  2090. }
  2091. case 124:
  2092. yyDollar = yyS[yypt-5 : yypt+1]
  2093. //line parser.go.y:813
  2094. {
  2095. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr_ident, Begin: nil, End: yyDollar[4].expr}
  2096. }
  2097. case 125:
  2098. yyDollar = yyS[yypt-7 : yypt+1]
  2099. //line parser.go.y:817
  2100. {
  2101. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr_ident, End: yyDollar[4].expr, Cap: yyDollar[6].expr}
  2102. }
  2103. case 126:
  2104. yyDollar = yyS[yypt-8 : yypt+1]
  2105. //line parser.go.y:821
  2106. {
  2107. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr_ident, Begin: yyDollar[3].expr, End: yyDollar[5].expr, Cap: yyDollar[7].expr}
  2108. }
  2109. case 127:
  2110. yyDollar = yyS[yypt-6 : yypt+1]
  2111. //line parser.go.y:825
  2112. {
  2113. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr, Begin: yyDollar[3].expr, End: yyDollar[5].expr}
  2114. }
  2115. case 128:
  2116. yyDollar = yyS[yypt-5 : yypt+1]
  2117. //line parser.go.y:829
  2118. {
  2119. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr, Begin: yyDollar[3].expr, End: nil}
  2120. }
  2121. case 129:
  2122. yyDollar = yyS[yypt-5 : yypt+1]
  2123. //line parser.go.y:833
  2124. {
  2125. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr, Begin: nil, End: yyDollar[4].expr}
  2126. }
  2127. case 130:
  2128. yyDollar = yyS[yypt-7 : yypt+1]
  2129. //line parser.go.y:837
  2130. {
  2131. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr, End: yyDollar[4].expr, Cap: yyDollar[6].expr}
  2132. }
  2133. case 131:
  2134. yyDollar = yyS[yypt-8 : yypt+1]
  2135. //line parser.go.y:841
  2136. {
  2137. yyVAL.expr_slice = &ast.SliceExpr{Item: yyDollar[1].expr, Begin: yyDollar[3].expr, End: yyDollar[5].expr, Cap: yyDollar[7].expr}
  2138. }
  2139. case 132:
  2140. yyDollar = yyS[yypt-3 : yypt+1]
  2141. //line parser.go.y:847
  2142. {
  2143. yyVAL.expr_chan = &ast.ChanExpr{LHS: yyDollar[1].expr, RHS: yyDollar[3].expr}
  2144. }
  2145. case 133:
  2146. yyDollar = yyS[yypt-2 : yypt+1]
  2147. //line parser.go.y:851
  2148. {
  2149. yyVAL.expr_chan = &ast.ChanExpr{RHS: yyDollar[2].expr}
  2150. }
  2151. case 134:
  2152. yyDollar = yyS[yypt-2 : yypt+1]
  2153. //line parser.go.y:857
  2154. {
  2155. yyVAL.expr = &ast.UnaryExpr{Operator: "-", Expr: yyDollar[2].expr}
  2156. yyVAL.expr.SetPosition(yyDollar[2].expr.Position())
  2157. }
  2158. case 135:
  2159. yyDollar = yyS[yypt-2 : yypt+1]
  2160. //line parser.go.y:862
  2161. {
  2162. yyVAL.expr = &ast.UnaryExpr{Operator: "!", Expr: yyDollar[2].expr}
  2163. yyVAL.expr.SetPosition(yyDollar[2].expr.Position())
  2164. }
  2165. case 136:
  2166. yyDollar = yyS[yypt-2 : yypt+1]
  2167. //line parser.go.y:867
  2168. {
  2169. yyVAL.expr = &ast.UnaryExpr{Operator: "^", Expr: yyDollar[2].expr}
  2170. yyVAL.expr.SetPosition(yyDollar[2].expr.Position())
  2171. }
  2172. case 137:
  2173. yyDollar = yyS[yypt-2 : yypt+1]
  2174. //line parser.go.y:872
  2175. {
  2176. yyVAL.expr = &ast.AddrExpr{Expr: yyDollar[2].expr}
  2177. yyVAL.expr.SetPosition(yyDollar[2].expr.Position())
  2178. }
  2179. case 138:
  2180. yyDollar = yyS[yypt-2 : yypt+1]
  2181. //line parser.go.y:877
  2182. {
  2183. yyVAL.expr = &ast.DerefExpr{Expr: yyDollar[2].expr}
  2184. yyVAL.expr.SetPosition(yyDollar[2].expr.Position())
  2185. }
  2186. case 139:
  2187. yyDollar = yyS[yypt-1 : yypt+1]
  2188. //line parser.go.y:884
  2189. {
  2190. yyVAL.expr = &ast.OpExpr{Op: yyDollar[1].expr}
  2191. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2192. }
  2193. case 140:
  2194. yyDollar = yyS[yypt-1 : yypt+1]
  2195. //line parser.go.y:889
  2196. {
  2197. yyVAL.expr = &ast.OpExpr{Op: yyDollar[1].expr}
  2198. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2199. }
  2200. case 141:
  2201. yyDollar = yyS[yypt-1 : yypt+1]
  2202. //line parser.go.y:894
  2203. {
  2204. yyVAL.expr = &ast.OpExpr{Op: yyDollar[1].expr}
  2205. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2206. }
  2207. case 142:
  2208. yyDollar = yyS[yypt-1 : yypt+1]
  2209. //line parser.go.y:899
  2210. {
  2211. yyVAL.expr = &ast.OpExpr{Op: yyDollar[1].expr}
  2212. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2213. }
  2214. case 143:
  2215. yyDollar = yyS[yypt-2 : yypt+1]
  2216. //line parser.go.y:906
  2217. {
  2218. rhs := &ast.OpExpr{Op: &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "+", RHS: oneLiteral}}
  2219. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2220. rhs.SetPosition(yyDollar[1].expr.Position())
  2221. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2222. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2223. }
  2224. case 144:
  2225. yyDollar = yyS[yypt-2 : yypt+1]
  2226. //line parser.go.y:914
  2227. {
  2228. rhs := &ast.OpExpr{Op: &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "-", RHS: oneLiteral}}
  2229. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2230. rhs.SetPosition(yyDollar[1].expr.Position())
  2231. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2232. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2233. }
  2234. case 145:
  2235. yyDollar = yyS[yypt-3 : yypt+1]
  2236. //line parser.go.y:922
  2237. {
  2238. rhs := &ast.OpExpr{Op: &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "+", RHS: yyDollar[3].expr}}
  2239. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2240. rhs.SetPosition(yyDollar[1].expr.Position())
  2241. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2242. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2243. }
  2244. case 146:
  2245. yyDollar = yyS[yypt-3 : yypt+1]
  2246. //line parser.go.y:930
  2247. {
  2248. rhs := &ast.OpExpr{Op: &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "-", RHS: yyDollar[3].expr}}
  2249. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2250. rhs.SetPosition(yyDollar[1].expr.Position())
  2251. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2252. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2253. }
  2254. case 147:
  2255. yyDollar = yyS[yypt-3 : yypt+1]
  2256. //line parser.go.y:938
  2257. {
  2258. rhs := &ast.OpExpr{Op: &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "|", RHS: yyDollar[3].expr}}
  2259. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2260. rhs.SetPosition(yyDollar[1].expr.Position())
  2261. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2262. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2263. }
  2264. case 148:
  2265. yyDollar = yyS[yypt-3 : yypt+1]
  2266. //line parser.go.y:946
  2267. {
  2268. rhs := &ast.OpExpr{Op: &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "*", RHS: yyDollar[3].expr}}
  2269. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2270. rhs.SetPosition(yyDollar[1].expr.Position())
  2271. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2272. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2273. }
  2274. case 149:
  2275. yyDollar = yyS[yypt-3 : yypt+1]
  2276. //line parser.go.y:954
  2277. {
  2278. rhs := &ast.OpExpr{Op: &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "/", RHS: yyDollar[3].expr}}
  2279. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2280. rhs.SetPosition(yyDollar[1].expr.Position())
  2281. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2282. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2283. }
  2284. case 150:
  2285. yyDollar = yyS[yypt-3 : yypt+1]
  2286. //line parser.go.y:962
  2287. {
  2288. rhs := &ast.OpExpr{Op: &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "&", RHS: yyDollar[3].expr}}
  2289. rhs.Op.SetPosition(yyDollar[1].expr.Position())
  2290. rhs.SetPosition(yyDollar[1].expr.Position())
  2291. yyVAL.expr = &ast.LetsExpr{LHSS: []ast.Expr{yyDollar[1].expr}, RHSS: []ast.Expr{rhs}}
  2292. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2293. }
  2294. case 151:
  2295. yyDollar = yyS[yypt-3 : yypt+1]
  2296. //line parser.go.y:973
  2297. {
  2298. yyVAL.expr = &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "*", RHS: yyDollar[3].expr}
  2299. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2300. }
  2301. case 152:
  2302. yyDollar = yyS[yypt-3 : yypt+1]
  2303. //line parser.go.y:978
  2304. {
  2305. yyVAL.expr = &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "/", RHS: yyDollar[3].expr}
  2306. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2307. }
  2308. case 153:
  2309. yyDollar = yyS[yypt-3 : yypt+1]
  2310. //line parser.go.y:983
  2311. {
  2312. yyVAL.expr = &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "%", RHS: yyDollar[3].expr}
  2313. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2314. }
  2315. case 154:
  2316. yyDollar = yyS[yypt-3 : yypt+1]
  2317. //line parser.go.y:988
  2318. {
  2319. yyVAL.expr = &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "<<", RHS: yyDollar[3].expr}
  2320. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2321. }
  2322. case 155:
  2323. yyDollar = yyS[yypt-3 : yypt+1]
  2324. //line parser.go.y:993
  2325. {
  2326. yyVAL.expr = &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: ">>", RHS: yyDollar[3].expr}
  2327. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2328. }
  2329. case 156:
  2330. yyDollar = yyS[yypt-3 : yypt+1]
  2331. //line parser.go.y:998
  2332. {
  2333. yyVAL.expr = &ast.MultiplyOperator{LHS: yyDollar[1].expr, Operator: "&", RHS: yyDollar[3].expr}
  2334. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2335. }
  2336. case 157:
  2337. yyDollar = yyS[yypt-3 : yypt+1]
  2338. //line parser.go.y:1005
  2339. {
  2340. yyVAL.expr = &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "+", RHS: yyDollar[3].expr}
  2341. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2342. }
  2343. case 158:
  2344. yyDollar = yyS[yypt-3 : yypt+1]
  2345. //line parser.go.y:1010
  2346. {
  2347. yyVAL.expr = &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "-", RHS: yyDollar[3].expr}
  2348. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2349. }
  2350. case 159:
  2351. yyDollar = yyS[yypt-3 : yypt+1]
  2352. //line parser.go.y:1015
  2353. {
  2354. yyVAL.expr = &ast.AddOperator{LHS: yyDollar[1].expr, Operator: "|", RHS: yyDollar[3].expr}
  2355. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2356. }
  2357. case 160:
  2358. yyDollar = yyS[yypt-3 : yypt+1]
  2359. //line parser.go.y:1022
  2360. {
  2361. yyVAL.expr = &ast.ComparisonOperator{LHS: yyDollar[1].expr, Operator: "==", RHS: yyDollar[3].expr}
  2362. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2363. }
  2364. case 161:
  2365. yyDollar = yyS[yypt-3 : yypt+1]
  2366. //line parser.go.y:1027
  2367. {
  2368. yyVAL.expr = &ast.ComparisonOperator{LHS: yyDollar[1].expr, Operator: "!=", RHS: yyDollar[3].expr}
  2369. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2370. }
  2371. case 162:
  2372. yyDollar = yyS[yypt-3 : yypt+1]
  2373. //line parser.go.y:1032
  2374. {
  2375. yyVAL.expr = &ast.ComparisonOperator{LHS: yyDollar[1].expr, Operator: "<", RHS: yyDollar[3].expr}
  2376. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2377. }
  2378. case 163:
  2379. yyDollar = yyS[yypt-3 : yypt+1]
  2380. //line parser.go.y:1037
  2381. {
  2382. yyVAL.expr = &ast.ComparisonOperator{LHS: yyDollar[1].expr, Operator: "<=", RHS: yyDollar[3].expr}
  2383. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2384. }
  2385. case 164:
  2386. yyDollar = yyS[yypt-3 : yypt+1]
  2387. //line parser.go.y:1042
  2388. {
  2389. yyVAL.expr = &ast.ComparisonOperator{LHS: yyDollar[1].expr, Operator: ">", RHS: yyDollar[3].expr}
  2390. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2391. }
  2392. case 165:
  2393. yyDollar = yyS[yypt-3 : yypt+1]
  2394. //line parser.go.y:1047
  2395. {
  2396. yyVAL.expr = &ast.ComparisonOperator{LHS: yyDollar[1].expr, Operator: ">=", RHS: yyDollar[3].expr}
  2397. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2398. }
  2399. case 166:
  2400. yyDollar = yyS[yypt-3 : yypt+1]
  2401. //line parser.go.y:1054
  2402. {
  2403. yyVAL.expr = &ast.BinaryOperator{LHS: yyDollar[1].expr, Operator: "&&", RHS: yyDollar[3].expr}
  2404. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2405. }
  2406. case 167:
  2407. yyDollar = yyS[yypt-3 : yypt+1]
  2408. //line parser.go.y:1059
  2409. {
  2410. yyVAL.expr = &ast.BinaryOperator{LHS: yyDollar[1].expr, Operator: "||", RHS: yyDollar[3].expr}
  2411. yyVAL.expr.SetPosition(yyDollar[1].expr.Position())
  2412. }
  2413. }
  2414. goto yystack /* stack new state and value */
  2415. }