github.com/rsc/go@v0.0.0-20150416155037-e040fd465409/src/cmd/old8a/y.go (about)

     1  //line a.y:32
     2  package main
     3  
     4  import __yyfmt__ "fmt"
     5  
     6  //line a.y:32
     7  import (
     8  	"cmd/internal/asm"
     9  	"cmd/internal/obj"
    10  	. "cmd/internal/obj/x86"
    11  )
    12  
    13  //line a.y:41
    14  type yySymType struct {
    15  	yys  int
    16  	sym  *asm.Sym
    17  	lval int64
    18  	con2 struct {
    19  		v1 int32
    20  		v2 int32
    21  	}
    22  	dval  float64
    23  	sval  string
    24  	addr  obj.Addr
    25  	addr2 Addr2
    26  }
    27  
    28  const LTYPE0 = 57346
    29  const LTYPE1 = 57347
    30  const LTYPE2 = 57348
    31  const LTYPE3 = 57349
    32  const LTYPE4 = 57350
    33  const LTYPEC = 57351
    34  const LTYPED = 57352
    35  const LTYPEN = 57353
    36  const LTYPER = 57354
    37  const LTYPET = 57355
    38  const LTYPES = 57356
    39  const LTYPEM = 57357
    40  const LTYPEI = 57358
    41  const LTYPEG = 57359
    42  const LTYPEXC = 57360
    43  const LTYPEX = 57361
    44  const LTYPEPC = 57362
    45  const LTYPEF = 57363
    46  const LCONST = 57364
    47  const LFP = 57365
    48  const LPC = 57366
    49  const LSB = 57367
    50  const LBREG = 57368
    51  const LLREG = 57369
    52  const LSREG = 57370
    53  const LFREG = 57371
    54  const LXREG = 57372
    55  const LFCONST = 57373
    56  const LSCONST = 57374
    57  const LSP = 57375
    58  const LNAME = 57376
    59  const LLAB = 57377
    60  const LVAR = 57378
    61  
    62  var yyToknames = []string{
    63  	"'|'",
    64  	"'^'",
    65  	"'&'",
    66  	"'<'",
    67  	"'>'",
    68  	"'+'",
    69  	"'-'",
    70  	"'*'",
    71  	"'/'",
    72  	"'%'",
    73  	"LTYPE0",
    74  	"LTYPE1",
    75  	"LTYPE2",
    76  	"LTYPE3",
    77  	"LTYPE4",
    78  	"LTYPEC",
    79  	"LTYPED",
    80  	"LTYPEN",
    81  	"LTYPER",
    82  	"LTYPET",
    83  	"LTYPES",
    84  	"LTYPEM",
    85  	"LTYPEI",
    86  	"LTYPEG",
    87  	"LTYPEXC",
    88  	"LTYPEX",
    89  	"LTYPEPC",
    90  	"LTYPEF",
    91  	"LCONST",
    92  	"LFP",
    93  	"LPC",
    94  	"LSB",
    95  	"LBREG",
    96  	"LLREG",
    97  	"LSREG",
    98  	"LFREG",
    99  	"LXREG",
   100  	"LFCONST",
   101  	"LSCONST",
   102  	"LSP",
   103  	"LNAME",
   104  	"LLAB",
   105  	"LVAR",
   106  }
   107  var yyStatenames = []string{}
   108  
   109  const yyEofCode = 1
   110  const yyErrCode = 2
   111  const yyMaxDepth = 200
   112  
   113  //line yacctab:1
   114  var yyExca = []int{
   115  	-1, 1,
   116  	1, -1,
   117  	-2, 2,
   118  }
   119  
   120  const yyNprod = 131
   121  const yyPrivate = 57344
   122  
   123  var yyTokenNames []string
   124  var yyStates []string
   125  
   126  const yyLast = 594
   127  
   128  var yyAct = []int{
   129  
   130  	50, 226, 40, 3, 79, 77, 120, 49, 62, 207,
   131  	268, 267, 48, 169, 266, 72, 60, 262, 84, 70,
   132  	81, 254, 252, 71, 240, 80, 83, 115, 238, 65,
   133  	82, 236, 109, 99, 220, 109, 91, 93, 95, 52,
   134  	218, 209, 101, 103, 208, 170, 239, 233, 210, 173,
   135  	63, 206, 109, 56, 55, 168, 117, 118, 119, 108,
   136  	142, 135, 110, 116, 125, 112, 248, 104, 230, 229,
   137  	72, 225, 224, 223, 133, 109, 53, 84, 153, 81,
   138  	136, 140, 137, 152, 80, 83, 61, 150, 73, 82,
   139  	54, 141, 143, 149, 69, 63, 74, 39, 57, 148,
   140  	67, 147, 146, 126, 145, 39, 144, 134, 132, 131,
   141  	97, 154, 124, 36, 30, 34, 31, 33, 139, 32,
   142  	222, 221, 58, 175, 176, 111, 216, 242, 214, 241,
   143  	109, 117, 56, 55, 183, 72, 215, 165, 167, 182,
   144  	235, 140, 172, 166, 250, 251, 255, 183, 263, 181,
   145  	187, 141, 191, 193, 195, 53, 109, 109, 109, 109,
   146  	109, 256, 194, 109, 109, 109, 189, 190, 247, 54,
   147  	211, 228, 56, 130, 63, 74, 111, 57, 37, 117,
   148  	35, 217, 41, 196, 197, 198, 199, 200, 165, 167,
   149  	203, 204, 205, 227, 166, 53, 151, 88, 121, 87,
   150  	122, 123, 109, 109, 128, 127, 260, 58, 234, 54,
   151  	259, 105, 106, 237, 253, 129, 212, 57, 180, 42,
   152  	44, 47, 43, 45, 243, 257, 46, 244, 246, 231,
   153  	232, 184, 185, 186, 245, 188, 157, 158, 159, 249,
   154  	164, 163, 162, 160, 161, 155, 156, 157, 158, 159,
   155  	258, 7, 122, 123, 261, 155, 156, 157, 158, 159,
   156  	264, 265, 202, 9, 10, 11, 12, 13, 17, 27,
   157  	18, 14, 28, 19, 20, 21, 29, 23, 24, 25,
   158  	26, 56, 55, 78, 174, 201, 22, 16, 15, 171,
   159  	6, 107, 2, 4, 1, 8, 102, 5, 100, 98,
   160  	96, 94, 92, 90, 53, 56, 55, 138, 42, 44,
   161  	47, 43, 45, 86, 75, 46, 85, 66, 54, 64,
   162  	59, 68, 76, 63, 51, 213, 57, 0, 53, 56,
   163  	55, 0, 42, 44, 47, 43, 45, 0, 0, 46,
   164  	85, 0, 54, 0, 0, 0, 0, 63, 51, 0,
   165  	57, 0, 53, 56, 55, 0, 42, 44, 47, 43,
   166  	45, 0, 0, 46, 58, 0, 54, 0, 0, 0,
   167  	0, 63, 51, 0, 57, 0, 53, 56, 55, 0,
   168  	42, 44, 47, 43, 45, 0, 0, 46, 58, 0,
   169  	54, 0, 0, 0, 89, 0, 51, 0, 57, 0,
   170  	53, 56, 55, 0, 42, 44, 47, 43, 45, 0,
   171  	0, 46, 58, 0, 54, 0, 0, 0, 38, 0,
   172  	51, 0, 57, 0, 53, 56, 55, 0, 42, 44,
   173  	47, 43, 45, 0, 0, 46, 58, 0, 54, 0,
   174  	0, 56, 55, 0, 51, 0, 57, 0, 53, 0,
   175  	56, 55, 42, 44, 47, 43, 45, 56, 55, 46,
   176  	0, 0, 54, 0, 53, 0, 56, 55, 51, 113,
   177  	57, 0, 0, 53, 0, 114, 0, 0, 54, 0,
   178  	53, 0, 219, 0, 74, 0, 57, 54, 0, 53,
   179  	56, 55, 0, 74, 54, 57, 0, 56, 178, 192,
   180  	74, 73, 57, 54, 0, 0, 0, 56, 55, 74,
   181  	0, 57, 0, 53, 56, 55, 0, 0, 0, 0,
   182  	53, 0, 179, 0, 0, 0, 0, 54, 0, 177,
   183  	53, 0, 0, 74, 54, 57, 0, 53, 0, 0,
   184  	74, 0, 57, 0, 54, 0, 0, 0, 0, 58,
   185  	74, 54, 57, 0, 0, 0, 0, 51, 0, 57,
   186  	164, 163, 162, 160, 161, 155, 156, 157, 158, 159,
   187  	163, 162, 160, 161, 155, 156, 157, 158, 159, 162,
   188  	160, 161, 155, 156, 157, 158, 159, 160, 161, 155,
   189  	156, 157, 158, 159,
   190  }
   191  var yyPact = []int{
   192  
   193  	-1000, -1000, 249, -1000, 67, -1000, 71, 69, 66, 63,
   194  	368, 320, 320, 392, 44, -1000, -1000, 272, 344, 320,
   195  	320, 320, -1000, 392, -1, 320, 320, 78, 505, 505,
   196  	-1000, 498, -1000, -1000, 498, -1000, -1000, -1000, 392, -1000,
   197  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   198  	13, 432, 11, -1000, -1000, 498, 498, 498, 191, -1000,
   199  	62, -1000, -1000, 163, -1000, 59, -1000, 58, -1000, 457,
   200  	-1000, 57, 9, 243, 498, -1000, 296, -1000, 392, -1000,
   201  	-1000, -1000, -1000, -1000, 8, 191, -1000, -1000, -1000, 392,
   202  	-1000, 56, -1000, 54, -1000, 52, -1000, 51, -1000, 49,
   203  	-1000, 43, -1000, 37, 184, 33, 28, 249, 556, -1000,
   204  	556, -1000, 151, 2, -8, 236, 105, -1000, -1000, -1000,
   205  	-3, 276, 498, 498, -1000, -1000, -1000, -1000, -1000, 488,
   206  	481, 392, 320, -1000, 457, 113, -1000, -1000, 416, -1000,
   207  	-1000, -1000, 100, -3, 392, 392, 392, 183, 392, 320,
   208  	320, 498, 448, 123, -1000, 498, 498, 498, 498, 498,
   209  	278, 254, 498, 498, 498, -2, -9, -12, -4, 498,
   210  	-1000, -1000, 205, 93, 243, -1000, -1000, -13, 441, -1000,
   211  	-1000, -1000, -1000, -19, 74, 73, -1000, 23, 22, -1000,
   212  	-1000, 21, 161, 19, -1000, 18, 225, 225, -1000, -1000,
   213  	-1000, 498, 498, 580, 573, 565, -5, 498, -1000, -1000,
   214  	103, -22, 498, -25, -1000, -1000, -1000, -6, -1000, -29,
   215  	-1000, 92, 89, 498, 183, -1, -1000, 218, 136, 15,
   216  	-1, 246, 246, 107, -31, 203, -1000, -32, -1000, 111,
   217  	-1000, -1000, -1000, -1000, -1000, -1000, 129, 215, 161, -1000,
   218  	199, 195, -1000, 498, -1000, -36, -1000, 116, -1000, 498,
   219  	498, -39, -1000, -1000, -42, -43, -1000, -1000, -1000,
   220  }
   221  var yyPgo = []int{
   222  
   223  	0, 0, 27, 325, 6, 182, 8, 2, 39, 4,
   224  	86, 16, 5, 12, 7, 1, 180, 321, 178, 320,
   225  	319, 317, 314, 313, 303, 302, 301, 300, 299, 298,
   226  	296, 294, 292, 3, 291, 290, 288, 287, 286,
   227  }
   228  var yyR1 = []int{
   229  
   230  	0, 31, 32, 31, 34, 33, 33, 33, 33, 35,
   231  	35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   232  	35, 35, 35, 35, 35, 35, 35, 35, 35, 16,
   233  	16, 20, 21, 19, 19, 18, 18, 17, 17, 17,
   234  	36, 37, 37, 38, 38, 22, 22, 22, 23, 23,
   235  	24, 24, 25, 25, 26, 26, 26, 27, 28, 29,
   236  	30, 10, 10, 12, 12, 12, 12, 12, 12, 12,
   237  	11, 11, 9, 9, 7, 7, 7, 7, 7, 7,
   238  	6, 6, 6, 6, 6, 6, 6, 15, 15, 15,
   239  	15, 5, 5, 13, 13, 13, 13, 13, 13, 13,
   240  	13, 13, 13, 13, 14, 14, 8, 8, 4, 4,
   241  	4, 3, 3, 3, 1, 1, 1, 1, 1, 1,
   242  	2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
   243  	2,
   244  }
   245  var yyR2 = []int{
   246  
   247  	0, 0, 0, 3, 0, 4, 1, 2, 2, 3,
   248  	3, 2, 2, 2, 2, 2, 2, 1, 1, 2,
   249  	2, 2, 2, 2, 1, 2, 2, 2, 2, 0,
   250  	1, 3, 3, 2, 1, 2, 1, 2, 1, 3,
   251  	6, 5, 7, 4, 6, 2, 1, 2, 1, 1,
   252  	3, 5, 3, 5, 2, 1, 3, 5, 5, 3,
   253  	3, 1, 1, 1, 1, 2, 2, 1, 1, 1,
   254  	1, 1, 4, 2, 1, 1, 1, 1, 1, 1,
   255  	2, 2, 2, 2, 4, 5, 3, 1, 2, 3,
   256  	4, 1, 1, 1, 4, 4, 6, 9, 9, 3,
   257  	3, 4, 5, 8, 1, 6, 5, 7, 0, 2,
   258  	2, 1, 1, 1, 1, 1, 2, 2, 2, 3,
   259  	1, 3, 3, 3, 3, 3, 4, 4, 3, 3,
   260  	3,
   261  }
   262  var yyChk = []int{
   263  
   264  	-1000, -31, -32, -33, 44, 48, -35, 2, 46, 14,
   265  	15, 16, 17, 18, 22, -36, -37, 19, 21, 24,
   266  	25, 26, -38, 28, 29, 30, 31, 20, 23, 27,
   267  	47, 49, 48, 48, 49, -16, 50, -18, 50, -10,
   268  	-7, -5, 36, 39, 37, 40, 43, 38, -13, -14,
   269  	-1, 52, -8, 32, 46, 10, 9, 54, 44, -19,
   270  	-11, -10, -6, 51, -20, -11, -21, -10, -17, 50,
   271  	-9, -6, -1, 44, 52, -22, 50, -12, 11, -9,
   272  	-14, -7, -13, -6, -1, 44, -23, -16, -18, 50,
   273  	-24, -11, -25, -11, -26, -11, -27, -10, -28, -6,
   274  	-29, -11, -30, -11, -8, -5, -5, -34, -2, -1,
   275  	-2, -10, 52, 37, 43, -2, 52, -1, -1, -1,
   276  	-4, 7, 9, 10, 50, -1, -8, 42, 41, 52,
   277  	10, 50, 50, -9, 50, 52, -4, -12, 11, -8,
   278  	-7, -13, 52, -4, 50, 50, 50, 50, 50, 50,
   279  	50, 12, 50, 50, -33, 9, 10, 11, 12, 13,
   280  	7, 8, 6, 5, 4, 37, 43, 38, 53, 11,
   281  	53, 53, 37, 52, 8, -1, -1, 41, 10, 41,
   282  	-10, -11, -9, 34, -10, -10, -10, -7, -10, -11,
   283  	-11, -1, 51, -1, -6, -1, -2, -2, -2, -2,
   284  	-2, 7, 8, -2, -2, -2, 53, 11, 53, 53,
   285  	52, -1, 11, -3, 35, 43, 33, -4, 53, 41,
   286  	53, 47, 47, 50, 50, 50, -15, 32, 10, 50,
   287  	50, -2, -2, 52, -1, 37, 53, -1, 53, 52,
   288  	53, 37, 38, -1, -7, -6, 10, 32, 51, -6,
   289  	37, 38, 53, 11, 53, 35, 32, 10, -15, 11,
   290  	11, -1, 53, 32, -1, -1, 53, 53, 53,
   291  }
   292  var yyDef = []int{
   293  
   294  	1, -2, 0, 3, 0, 6, 0, 0, 0, 29,
   295  	0, 0, 0, 0, 0, 17, 18, 0, 29, 0,
   296  	0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
   297  	4, 0, 7, 8, 0, 11, 30, 12, 0, 36,
   298  	61, 62, 74, 75, 76, 77, 78, 79, 91, 92,
   299  	93, 0, 104, 114, 115, 0, 0, 0, 108, 13,
   300  	34, 70, 71, 0, 14, 0, 15, 0, 16, 0,
   301  	38, 0, 0, 108, 0, 19, 0, 46, 0, 63,
   302  	64, 67, 68, 69, 93, 108, 20, 48, 49, 30,
   303  	21, 0, 22, 0, 23, 55, 25, 0, 26, 0,
   304  	27, 0, 28, 0, 0, 0, 0, 0, 9, 120,
   305  	10, 35, 0, 0, 0, 0, 0, 116, 117, 118,
   306  	0, 0, 0, 0, 33, 80, 81, 82, 83, 0,
   307  	0, 0, 0, 37, 0, 0, 73, 45, 0, 47,
   308  	65, 66, 0, 73, 0, 0, 54, 0, 0, 0,
   309  	0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
   310  	0, 0, 0, 0, 0, 0, 0, 0, 99, 0,
   311  	100, 119, 0, 0, 108, 109, 110, 0, 0, 86,
   312  	31, 32, 39, 0, 50, 52, 56, 0, 0, 59,
   313  	60, 0, 0, 0, 43, 0, 121, 122, 123, 124,
   314  	125, 0, 0, 128, 129, 130, 94, 0, 95, 101,
   315  	0, 0, 0, 0, 111, 112, 113, 0, 84, 0,
   316  	72, 0, 0, 0, 0, 0, 41, 87, 0, 0,
   317  	0, 126, 127, 0, 0, 0, 102, 0, 106, 0,
   318  	85, 51, 53, 57, 58, 40, 0, 88, 0, 44,
   319  	0, 0, 96, 0, 105, 0, 89, 0, 42, 0,
   320  	0, 0, 107, 90, 0, 0, 103, 97, 98,
   321  }
   322  var yyTok1 = []int{
   323  
   324  	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   325  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   326  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   327  	3, 3, 3, 3, 3, 3, 51, 13, 6, 3,
   328  	52, 53, 11, 9, 50, 10, 3, 12, 3, 3,
   329  	3, 3, 3, 3, 3, 3, 3, 3, 47, 48,
   330  	7, 49, 8, 3, 3, 3, 3, 3, 3, 3,
   331  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   332  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   333  	3, 3, 3, 3, 5, 3, 3, 3, 3, 3,
   334  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   335  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   336  	3, 3, 3, 3, 4, 3, 54,
   337  }
   338  var yyTok2 = []int{
   339  
   340  	2, 3, 14, 15, 16, 17, 18, 19, 20, 21,
   341  	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
   342  	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
   343  	42, 43, 44, 45, 46,
   344  }
   345  var yyTok3 = []int{
   346  	0,
   347  }
   348  
   349  //line yaccpar:1
   350  
   351  /*	parser for yacc output	*/
   352  
   353  var yyDebug = 0
   354  
   355  type yyLexer interface {
   356  	Lex(lval *yySymType) int
   357  	Error(s string)
   358  }
   359  
   360  type yyParser interface {
   361  	Parse(yyLexer) int
   362  	Lookahead() int
   363  }
   364  
   365  type yyParserImpl struct {
   366  	lookahead func() int
   367  }
   368  
   369  func (p *yyParserImpl) Lookahead() int {
   370  	return p.lookahead()
   371  }
   372  
   373  func yyNewParser() yyParser {
   374  	p := &yyParserImpl{
   375  		lookahead: func() int { return -1 },
   376  	}
   377  	return p
   378  }
   379  
   380  const yyFlag = -1000
   381  
   382  func yyTokname(c int) string {
   383  	// 4 is TOKSTART above
   384  	if c >= 4 && c-4 < len(yyToknames) {
   385  		if yyToknames[c-4] != "" {
   386  			return yyToknames[c-4]
   387  		}
   388  	}
   389  	return __yyfmt__.Sprintf("tok-%v", c)
   390  }
   391  
   392  func yyStatname(s int) string {
   393  	if s >= 0 && s < len(yyStatenames) {
   394  		if yyStatenames[s] != "" {
   395  			return yyStatenames[s]
   396  		}
   397  	}
   398  	return __yyfmt__.Sprintf("state-%v", s)
   399  }
   400  
   401  func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
   402  	token = 0
   403  	char = lex.Lex(lval)
   404  	if char <= 0 {
   405  		token = yyTok1[0]
   406  		goto out
   407  	}
   408  	if char < len(yyTok1) {
   409  		token = yyTok1[char]
   410  		goto out
   411  	}
   412  	if char >= yyPrivate {
   413  		if char < yyPrivate+len(yyTok2) {
   414  			token = yyTok2[char-yyPrivate]
   415  			goto out
   416  		}
   417  	}
   418  	for i := 0; i < len(yyTok3); i += 2 {
   419  		token = yyTok3[i+0]
   420  		if token == char {
   421  			token = yyTok3[i+1]
   422  			goto out
   423  		}
   424  	}
   425  
   426  out:
   427  	if token == 0 {
   428  		token = yyTok2[1] /* unknown char */
   429  	}
   430  	if yyDebug >= 3 {
   431  		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
   432  	}
   433  	return char, token
   434  }
   435  
   436  func yyParse(yylex yyLexer) int {
   437  	return yyNewParser().Parse(yylex)
   438  }
   439  
   440  func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
   441  	var yyn int
   442  	var yylval yySymType
   443  	var yyVAL yySymType
   444  	var yyDollar []yySymType
   445  	yyS := make([]yySymType, yyMaxDepth)
   446  
   447  	Nerrs := 0   /* number of errors */
   448  	Errflag := 0 /* error recovery flag */
   449  	yystate := 0
   450  	yychar := -1
   451  	yytoken := -1 // yychar translated into internal numbering
   452  	yyrcvr.lookahead = func() int { return yychar }
   453  	defer func() {
   454  		// Make sure we report no lookahead when not parsing.
   455  		yychar = -1
   456  		yytoken = -1
   457  	}()
   458  	yyp := -1
   459  	goto yystack
   460  
   461  ret0:
   462  	return 0
   463  
   464  ret1:
   465  	return 1
   466  
   467  yystack:
   468  	/* put a state and value onto the stack */
   469  	if yyDebug >= 4 {
   470  		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
   471  	}
   472  
   473  	yyp++
   474  	if yyp >= len(yyS) {
   475  		nyys := make([]yySymType, len(yyS)*2)
   476  		copy(nyys, yyS)
   477  		yyS = nyys
   478  	}
   479  	yyS[yyp] = yyVAL
   480  	yyS[yyp].yys = yystate
   481  
   482  yynewstate:
   483  	yyn = yyPact[yystate]
   484  	if yyn <= yyFlag {
   485  		goto yydefault /* simple state */
   486  	}
   487  	if yychar < 0 {
   488  		yychar, yytoken = yylex1(yylex, &yylval)
   489  	}
   490  	yyn += yytoken
   491  	if yyn < 0 || yyn >= yyLast {
   492  		goto yydefault
   493  	}
   494  	yyn = yyAct[yyn]
   495  	if yyChk[yyn] == yytoken { /* valid shift */
   496  		yychar = -1
   497  		yytoken = -1
   498  		yyVAL = yylval
   499  		yystate = yyn
   500  		if Errflag > 0 {
   501  			Errflag--
   502  		}
   503  		goto yystack
   504  	}
   505  
   506  yydefault:
   507  	/* default state action */
   508  	yyn = yyDef[yystate]
   509  	if yyn == -2 {
   510  		if yychar < 0 {
   511  			yychar, yytoken = yylex1(yylex, &yylval)
   512  		}
   513  
   514  		/* look through exception table */
   515  		xi := 0
   516  		for {
   517  			if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
   518  				break
   519  			}
   520  			xi += 2
   521  		}
   522  		for xi += 2; ; xi += 2 {
   523  			yyn = yyExca[xi+0]
   524  			if yyn < 0 || yyn == yytoken {
   525  				break
   526  			}
   527  		}
   528  		yyn = yyExca[xi+1]
   529  		if yyn < 0 {
   530  			goto ret0
   531  		}
   532  	}
   533  	if yyn == 0 {
   534  		/* error ... attempt to resume parsing */
   535  		switch Errflag {
   536  		case 0: /* brand new error */
   537  			yylex.Error("syntax error")
   538  			Nerrs++
   539  			if yyDebug >= 1 {
   540  				__yyfmt__.Printf("%s", yyStatname(yystate))
   541  				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
   542  			}
   543  			fallthrough
   544  
   545  		case 1, 2: /* incompletely recovered error ... try again */
   546  			Errflag = 3
   547  
   548  			/* find a state where "error" is a legal shift action */
   549  			for yyp >= 0 {
   550  				yyn = yyPact[yyS[yyp].yys] + yyErrCode
   551  				if yyn >= 0 && yyn < yyLast {
   552  					yystate = yyAct[yyn] /* simulate a shift of "error" */
   553  					if yyChk[yystate] == yyErrCode {
   554  						goto yystack
   555  					}
   556  				}
   557  
   558  				/* the current p has no shift on "error", pop stack */
   559  				if yyDebug >= 2 {
   560  					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
   561  				}
   562  				yyp--
   563  			}
   564  			/* there is no state on the stack with an error shift ... abort */
   565  			goto ret1
   566  
   567  		case 3: /* no shift yet; clobber input char */
   568  			if yyDebug >= 2 {
   569  				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
   570  			}
   571  			if yytoken == yyEofCode {
   572  				goto ret1
   573  			}
   574  			yychar = -1
   575  			yytoken = -1
   576  			goto yynewstate /* try again in the same state */
   577  		}
   578  	}
   579  
   580  	/* reduction by production yyn */
   581  	if yyDebug >= 2 {
   582  		__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
   583  	}
   584  
   585  	yynt := yyn
   586  	yypt := yyp
   587  	_ = yypt // guard against "declared and not used"
   588  
   589  	yyp -= yyR2[yyn]
   590  	// yyp is now the index of $0. Perform the default action. Iff the
   591  	// reduced production is ε, $1 is possibly out of range.
   592  	if yyp+1 >= len(yyS) {
   593  		nyys := make([]yySymType, len(yyS)*2)
   594  		copy(nyys, yyS)
   595  		yyS = nyys
   596  	}
   597  	yyVAL = yyS[yyp+1]
   598  
   599  	/* consult goto table to find next state */
   600  	yyn = yyR1[yyn]
   601  	yyg := yyPgo[yyn]
   602  	yyj := yyg + yyS[yyp].yys + 1
   603  
   604  	if yyj >= yyLast {
   605  		yystate = yyAct[yyg]
   606  	} else {
   607  		yystate = yyAct[yyj]
   608  		if yyChk[yystate] != -yyn {
   609  			yystate = yyAct[yyg]
   610  		}
   611  	}
   612  	// dummy call; replaced with literal code
   613  	switch yynt {
   614  
   615  	case 2:
   616  		yyDollar = yyS[yypt-1 : yypt+1]
   617  		//line a.y:74
   618  		{
   619  			stmtline = asm.Lineno
   620  		}
   621  	case 4:
   622  		yyDollar = yyS[yypt-2 : yypt+1]
   623  		//line a.y:81
   624  		{
   625  			yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
   626  			if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) {
   627  				yyerror("redeclaration of %s", yyDollar[1].sym.Labelname)
   628  			}
   629  			yyDollar[1].sym.Type = LLAB
   630  			yyDollar[1].sym.Value = int64(asm.PC)
   631  		}
   632  	case 9:
   633  		yyDollar = yyS[yypt-3 : yypt+1]
   634  		//line a.y:96
   635  		{
   636  			yyDollar[1].sym.Type = LVAR
   637  			yyDollar[1].sym.Value = yyDollar[3].lval
   638  		}
   639  	case 10:
   640  		yyDollar = yyS[yypt-3 : yypt+1]
   641  		//line a.y:101
   642  		{
   643  			if yyDollar[1].sym.Value != int64(yyDollar[3].lval) {
   644  				yyerror("redeclaration of %s", yyDollar[1].sym.Name)
   645  			}
   646  			yyDollar[1].sym.Value = yyDollar[3].lval
   647  		}
   648  	case 11:
   649  		yyDollar = yyS[yypt-2 : yypt+1]
   650  		//line a.y:107
   651  		{
   652  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   653  		}
   654  	case 12:
   655  		yyDollar = yyS[yypt-2 : yypt+1]
   656  		//line a.y:108
   657  		{
   658  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   659  		}
   660  	case 13:
   661  		yyDollar = yyS[yypt-2 : yypt+1]
   662  		//line a.y:109
   663  		{
   664  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   665  		}
   666  	case 14:
   667  		yyDollar = yyS[yypt-2 : yypt+1]
   668  		//line a.y:110
   669  		{
   670  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   671  		}
   672  	case 15:
   673  		yyDollar = yyS[yypt-2 : yypt+1]
   674  		//line a.y:111
   675  		{
   676  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   677  		}
   678  	case 16:
   679  		yyDollar = yyS[yypt-2 : yypt+1]
   680  		//line a.y:112
   681  		{
   682  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   683  		}
   684  	case 19:
   685  		yyDollar = yyS[yypt-2 : yypt+1]
   686  		//line a.y:115
   687  		{
   688  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   689  		}
   690  	case 20:
   691  		yyDollar = yyS[yypt-2 : yypt+1]
   692  		//line a.y:116
   693  		{
   694  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   695  		}
   696  	case 21:
   697  		yyDollar = yyS[yypt-2 : yypt+1]
   698  		//line a.y:117
   699  		{
   700  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   701  		}
   702  	case 22:
   703  		yyDollar = yyS[yypt-2 : yypt+1]
   704  		//line a.y:118
   705  		{
   706  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   707  		}
   708  	case 23:
   709  		yyDollar = yyS[yypt-2 : yypt+1]
   710  		//line a.y:119
   711  		{
   712  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   713  		}
   714  	case 25:
   715  		yyDollar = yyS[yypt-2 : yypt+1]
   716  		//line a.y:121
   717  		{
   718  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   719  		}
   720  	case 26:
   721  		yyDollar = yyS[yypt-2 : yypt+1]
   722  		//line a.y:122
   723  		{
   724  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   725  		}
   726  	case 27:
   727  		yyDollar = yyS[yypt-2 : yypt+1]
   728  		//line a.y:123
   729  		{
   730  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   731  		}
   732  	case 28:
   733  		yyDollar = yyS[yypt-2 : yypt+1]
   734  		//line a.y:124
   735  		{
   736  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   737  		}
   738  	case 29:
   739  		yyDollar = yyS[yypt-0 : yypt+1]
   740  		//line a.y:127
   741  		{
   742  			yyVAL.addr2.from = nullgen
   743  			yyVAL.addr2.to = nullgen
   744  		}
   745  	case 30:
   746  		yyDollar = yyS[yypt-1 : yypt+1]
   747  		//line a.y:132
   748  		{
   749  			yyVAL.addr2.from = nullgen
   750  			yyVAL.addr2.to = nullgen
   751  		}
   752  	case 31:
   753  		yyDollar = yyS[yypt-3 : yypt+1]
   754  		//line a.y:139
   755  		{
   756  			yyVAL.addr2.from = yyDollar[1].addr
   757  			yyVAL.addr2.to = yyDollar[3].addr
   758  		}
   759  	case 32:
   760  		yyDollar = yyS[yypt-3 : yypt+1]
   761  		//line a.y:146
   762  		{
   763  			yyVAL.addr2.from = yyDollar[1].addr
   764  			yyVAL.addr2.to = yyDollar[3].addr
   765  		}
   766  	case 33:
   767  		yyDollar = yyS[yypt-2 : yypt+1]
   768  		//line a.y:153
   769  		{
   770  			yyVAL.addr2.from = yyDollar[1].addr
   771  			yyVAL.addr2.to = nullgen
   772  		}
   773  	case 34:
   774  		yyDollar = yyS[yypt-1 : yypt+1]
   775  		//line a.y:158
   776  		{
   777  			yyVAL.addr2.from = yyDollar[1].addr
   778  			yyVAL.addr2.to = nullgen
   779  		}
   780  	case 35:
   781  		yyDollar = yyS[yypt-2 : yypt+1]
   782  		//line a.y:165
   783  		{
   784  			yyVAL.addr2.from = nullgen
   785  			yyVAL.addr2.to = yyDollar[2].addr
   786  		}
   787  	case 36:
   788  		yyDollar = yyS[yypt-1 : yypt+1]
   789  		//line a.y:170
   790  		{
   791  			yyVAL.addr2.from = nullgen
   792  			yyVAL.addr2.to = yyDollar[1].addr
   793  		}
   794  	case 37:
   795  		yyDollar = yyS[yypt-2 : yypt+1]
   796  		//line a.y:177
   797  		{
   798  			yyVAL.addr2.from = nullgen
   799  			yyVAL.addr2.to = yyDollar[2].addr
   800  		}
   801  	case 38:
   802  		yyDollar = yyS[yypt-1 : yypt+1]
   803  		//line a.y:182
   804  		{
   805  			yyVAL.addr2.from = nullgen
   806  			yyVAL.addr2.to = yyDollar[1].addr
   807  		}
   808  	case 39:
   809  		yyDollar = yyS[yypt-3 : yypt+1]
   810  		//line a.y:187
   811  		{
   812  			yyVAL.addr2.from = yyDollar[1].addr
   813  			yyVAL.addr2.to = yyDollar[3].addr
   814  		}
   815  	case 40:
   816  		yyDollar = yyS[yypt-6 : yypt+1]
   817  		//line a.y:194
   818  		{
   819  			outcode(obj.ADATA, &Addr2{yyDollar[2].addr, yyDollar[6].addr})
   820  			if asm.Pass > 1 {
   821  				lastpc.From3.Type = obj.TYPE_CONST
   822  				lastpc.From3.Offset = yyDollar[4].lval
   823  			}
   824  		}
   825  	case 41:
   826  		yyDollar = yyS[yypt-5 : yypt+1]
   827  		//line a.y:204
   828  		{
   829  			asm.Settext(yyDollar[2].addr.Sym)
   830  			outcode(obj.ATEXT, &Addr2{yyDollar[2].addr, yyDollar[5].addr})
   831  		}
   832  	case 42:
   833  		yyDollar = yyS[yypt-7 : yypt+1]
   834  		//line a.y:209
   835  		{
   836  			asm.Settext(yyDollar[2].addr.Sym)
   837  			outcode(obj.ATEXT, &Addr2{yyDollar[2].addr, yyDollar[7].addr})
   838  			if asm.Pass > 1 {
   839  				lastpc.From3.Type = obj.TYPE_CONST
   840  				lastpc.From3.Offset = yyDollar[4].lval
   841  			}
   842  		}
   843  	case 43:
   844  		yyDollar = yyS[yypt-4 : yypt+1]
   845  		//line a.y:220
   846  		{
   847  			asm.Settext(yyDollar[2].addr.Sym)
   848  			outcode(obj.AGLOBL, &Addr2{yyDollar[2].addr, yyDollar[4].addr})
   849  		}
   850  	case 44:
   851  		yyDollar = yyS[yypt-6 : yypt+1]
   852  		//line a.y:225
   853  		{
   854  			asm.Settext(yyDollar[2].addr.Sym)
   855  			outcode(obj.AGLOBL, &Addr2{yyDollar[2].addr, yyDollar[6].addr})
   856  			if asm.Pass > 1 {
   857  				lastpc.From3.Type = obj.TYPE_CONST
   858  				lastpc.From3.Offset = yyDollar[4].lval
   859  			}
   860  		}
   861  	case 45:
   862  		yyDollar = yyS[yypt-2 : yypt+1]
   863  		//line a.y:237
   864  		{
   865  			yyVAL.addr2.from = nullgen
   866  			yyVAL.addr2.to = yyDollar[2].addr
   867  		}
   868  	case 46:
   869  		yyDollar = yyS[yypt-1 : yypt+1]
   870  		//line a.y:242
   871  		{
   872  			yyVAL.addr2.from = nullgen
   873  			yyVAL.addr2.to = yyDollar[1].addr
   874  		}
   875  	case 47:
   876  		yyDollar = yyS[yypt-2 : yypt+1]
   877  		//line a.y:247
   878  		{
   879  			yyVAL.addr2.from = nullgen
   880  			yyVAL.addr2.to = yyDollar[2].addr
   881  			yyVAL.addr2.to.Type = obj.TYPE_INDIR
   882  		}
   883  	case 48:
   884  		yyVAL.addr2 = yyS[yypt-0].addr2
   885  	case 49:
   886  		yyVAL.addr2 = yyS[yypt-0].addr2
   887  	case 50:
   888  		yyDollar = yyS[yypt-3 : yypt+1]
   889  		//line a.y:259
   890  		{
   891  			yyVAL.addr2.from = yyDollar[1].addr
   892  			yyVAL.addr2.to = yyDollar[3].addr
   893  		}
   894  	case 51:
   895  		yyDollar = yyS[yypt-5 : yypt+1]
   896  		//line a.y:264
   897  		{
   898  			yyVAL.addr2.from = yyDollar[1].addr
   899  			yyVAL.addr2.to = yyDollar[3].addr
   900  			if yyVAL.addr2.from.Index != obj.TYPE_NONE {
   901  				yyerror("dp shift with lhs index")
   902  			}
   903  			yyVAL.addr2.from.Index = int16(yyDollar[5].lval)
   904  		}
   905  	case 52:
   906  		yyDollar = yyS[yypt-3 : yypt+1]
   907  		//line a.y:275
   908  		{
   909  			yyVAL.addr2.from = yyDollar[1].addr
   910  			yyVAL.addr2.to = yyDollar[3].addr
   911  		}
   912  	case 53:
   913  		yyDollar = yyS[yypt-5 : yypt+1]
   914  		//line a.y:280
   915  		{
   916  			yyVAL.addr2.from = yyDollar[1].addr
   917  			yyVAL.addr2.to = yyDollar[3].addr
   918  			if yyVAL.addr2.to.Index != obj.TYPE_NONE {
   919  				yyerror("dp move with lhs index")
   920  			}
   921  			yyVAL.addr2.to.Index = int16(yyDollar[5].lval)
   922  		}
   923  	case 54:
   924  		yyDollar = yyS[yypt-2 : yypt+1]
   925  		//line a.y:291
   926  		{
   927  			yyVAL.addr2.from = yyDollar[1].addr
   928  			yyVAL.addr2.to = nullgen
   929  		}
   930  	case 55:
   931  		yyDollar = yyS[yypt-1 : yypt+1]
   932  		//line a.y:296
   933  		{
   934  			yyVAL.addr2.from = yyDollar[1].addr
   935  			yyVAL.addr2.to = nullgen
   936  		}
   937  	case 56:
   938  		yyDollar = yyS[yypt-3 : yypt+1]
   939  		//line a.y:301
   940  		{
   941  			yyVAL.addr2.from = yyDollar[1].addr
   942  			yyVAL.addr2.to = yyDollar[3].addr
   943  		}
   944  	case 57:
   945  		yyDollar = yyS[yypt-5 : yypt+1]
   946  		//line a.y:308
   947  		{
   948  			yyVAL.addr2.from = yyDollar[1].addr
   949  			yyVAL.addr2.to = yyDollar[3].addr
   950  			yyVAL.addr2.to.Offset = yyDollar[5].lval
   951  		}
   952  	case 58:
   953  		yyDollar = yyS[yypt-5 : yypt+1]
   954  		//line a.y:316
   955  		{
   956  			yyVAL.addr2.from = yyDollar[3].addr
   957  			yyVAL.addr2.to = yyDollar[5].addr
   958  			if yyDollar[1].addr.Type != obj.TYPE_CONST {
   959  				yyerror("illegal constant")
   960  			}
   961  			yyVAL.addr2.to.Offset = yyDollar[1].addr.Offset
   962  		}
   963  	case 59:
   964  		yyDollar = yyS[yypt-3 : yypt+1]
   965  		//line a.y:327
   966  		{
   967  			if yyDollar[1].addr.Type != obj.TYPE_CONST || yyDollar[3].addr.Type != obj.TYPE_CONST {
   968  				yyerror("arguments to PCDATA must be integer constants")
   969  			}
   970  			yyVAL.addr2.from = yyDollar[1].addr
   971  			yyVAL.addr2.to = yyDollar[3].addr
   972  		}
   973  	case 60:
   974  		yyDollar = yyS[yypt-3 : yypt+1]
   975  		//line a.y:337
   976  		{
   977  			if yyDollar[1].addr.Type != obj.TYPE_CONST {
   978  				yyerror("index for FUNCDATA must be integer constant")
   979  			}
   980  			if yyDollar[3].addr.Type != obj.TYPE_MEM || (yyDollar[3].addr.Name != obj.NAME_EXTERN && yyDollar[3].addr.Name != obj.NAME_STATIC) {
   981  				yyerror("value for FUNCDATA must be symbol reference")
   982  			}
   983  			yyVAL.addr2.from = yyDollar[1].addr
   984  			yyVAL.addr2.to = yyDollar[3].addr
   985  		}
   986  	case 61:
   987  		yyVAL.addr = yyS[yypt-0].addr
   988  	case 62:
   989  		yyVAL.addr = yyS[yypt-0].addr
   990  	case 63:
   991  		yyVAL.addr = yyS[yypt-0].addr
   992  	case 64:
   993  		yyVAL.addr = yyS[yypt-0].addr
   994  	case 65:
   995  		yyDollar = yyS[yypt-2 : yypt+1]
   996  		//line a.y:356
   997  		{
   998  			yyVAL.addr = yyDollar[2].addr
   999  		}
  1000  	case 66:
  1001  		yyDollar = yyS[yypt-2 : yypt+1]
  1002  		//line a.y:360
  1003  		{
  1004  			yyVAL.addr = yyDollar[2].addr
  1005  		}
  1006  	case 67:
  1007  		yyVAL.addr = yyS[yypt-0].addr
  1008  	case 68:
  1009  		yyVAL.addr = yyS[yypt-0].addr
  1010  	case 69:
  1011  		yyVAL.addr = yyS[yypt-0].addr
  1012  	case 70:
  1013  		yyVAL.addr = yyS[yypt-0].addr
  1014  	case 71:
  1015  		yyVAL.addr = yyS[yypt-0].addr
  1016  	case 72:
  1017  		yyDollar = yyS[yypt-4 : yypt+1]
  1018  		//line a.y:373
  1019  		{
  1020  			yyVAL.addr = nullgen
  1021  			yyVAL.addr.Type = obj.TYPE_BRANCH
  1022  			yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC)
  1023  		}
  1024  	case 73:
  1025  		yyDollar = yyS[yypt-2 : yypt+1]
  1026  		//line a.y:379
  1027  		{
  1028  			yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
  1029  			yyVAL.addr = nullgen
  1030  			if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB {
  1031  				yyerror("undefined label: %s", yyDollar[1].sym.Labelname)
  1032  			}
  1033  			yyVAL.addr.Type = obj.TYPE_BRANCH
  1034  			yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval
  1035  		}
  1036  	case 74:
  1037  		yyDollar = yyS[yypt-1 : yypt+1]
  1038  		//line a.y:391
  1039  		{
  1040  			yyVAL.addr = nullgen
  1041  			yyVAL.addr.Type = obj.TYPE_REG
  1042  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1043  		}
  1044  	case 75:
  1045  		yyDollar = yyS[yypt-1 : yypt+1]
  1046  		//line a.y:397
  1047  		{
  1048  			yyVAL.addr = nullgen
  1049  			yyVAL.addr.Type = obj.TYPE_REG
  1050  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1051  		}
  1052  	case 76:
  1053  		yyDollar = yyS[yypt-1 : yypt+1]
  1054  		//line a.y:403
  1055  		{
  1056  			yyVAL.addr = nullgen
  1057  			yyVAL.addr.Type = obj.TYPE_REG
  1058  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1059  		}
  1060  	case 77:
  1061  		yyDollar = yyS[yypt-1 : yypt+1]
  1062  		//line a.y:409
  1063  		{
  1064  			yyVAL.addr = nullgen
  1065  			yyVAL.addr.Type = obj.TYPE_REG
  1066  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1067  		}
  1068  	case 78:
  1069  		yyDollar = yyS[yypt-1 : yypt+1]
  1070  		//line a.y:415
  1071  		{
  1072  			yyVAL.addr = nullgen
  1073  			yyVAL.addr.Type = obj.TYPE_REG
  1074  			yyVAL.addr.Reg = REG_SP
  1075  		}
  1076  	case 79:
  1077  		yyDollar = yyS[yypt-1 : yypt+1]
  1078  		//line a.y:421
  1079  		{
  1080  			yyVAL.addr = nullgen
  1081  			yyVAL.addr.Type = obj.TYPE_REG
  1082  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1083  		}
  1084  	case 80:
  1085  		yyDollar = yyS[yypt-2 : yypt+1]
  1086  		//line a.y:429
  1087  		{
  1088  			yyVAL.addr = nullgen
  1089  			yyVAL.addr.Type = obj.TYPE_CONST
  1090  			yyVAL.addr.Offset = yyDollar[2].lval
  1091  		}
  1092  	case 81:
  1093  		yyDollar = yyS[yypt-2 : yypt+1]
  1094  		//line a.y:435
  1095  		{
  1096  			yyVAL.addr = yyDollar[2].addr
  1097  			yyVAL.addr.Type = obj.TYPE_ADDR
  1098  			/*
  1099  				if($2.Type == D_AUTO || $2.Type == D_PARAM)
  1100  					yyerror("constant cannot be automatic: %s",
  1101  						$2.Sym.name);
  1102  			*/
  1103  		}
  1104  	case 82:
  1105  		yyDollar = yyS[yypt-2 : yypt+1]
  1106  		//line a.y:444
  1107  		{
  1108  			yyVAL.addr = nullgen
  1109  			yyVAL.addr.Type = obj.TYPE_SCONST
  1110  			yyVAL.addr.Val = yyDollar[2].sval
  1111  		}
  1112  	case 83:
  1113  		yyDollar = yyS[yypt-2 : yypt+1]
  1114  		//line a.y:450
  1115  		{
  1116  			yyVAL.addr = nullgen
  1117  			yyVAL.addr.Type = obj.TYPE_FCONST
  1118  			yyVAL.addr.Val = yyDollar[2].dval
  1119  		}
  1120  	case 84:
  1121  		yyDollar = yyS[yypt-4 : yypt+1]
  1122  		//line a.y:456
  1123  		{
  1124  			yyVAL.addr = nullgen
  1125  			yyVAL.addr.Type = obj.TYPE_FCONST
  1126  			yyVAL.addr.Val = yyDollar[3].dval
  1127  		}
  1128  	case 85:
  1129  		yyDollar = yyS[yypt-5 : yypt+1]
  1130  		//line a.y:462
  1131  		{
  1132  			yyVAL.addr = nullgen
  1133  			yyVAL.addr.Type = obj.TYPE_FCONST
  1134  			yyVAL.addr.Val = -yyDollar[4].dval
  1135  		}
  1136  	case 86:
  1137  		yyDollar = yyS[yypt-3 : yypt+1]
  1138  		//line a.y:468
  1139  		{
  1140  			yyVAL.addr = nullgen
  1141  			yyVAL.addr.Type = obj.TYPE_FCONST
  1142  			yyVAL.addr.Val = -yyDollar[3].dval
  1143  		}
  1144  	case 87:
  1145  		yyDollar = yyS[yypt-1 : yypt+1]
  1146  		//line a.y:476
  1147  		{
  1148  			yyVAL.addr = nullgen
  1149  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1150  			yyVAL.addr.Offset = yyDollar[1].lval
  1151  			yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
  1152  		}
  1153  	case 88:
  1154  		yyDollar = yyS[yypt-2 : yypt+1]
  1155  		//line a.y:483
  1156  		{
  1157  			yyVAL.addr = nullgen
  1158  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1159  			yyVAL.addr.Offset = -yyDollar[2].lval
  1160  			yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
  1161  		}
  1162  	case 89:
  1163  		yyDollar = yyS[yypt-3 : yypt+1]
  1164  		//line a.y:490
  1165  		{
  1166  			yyVAL.addr = nullgen
  1167  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1168  			yyVAL.addr.Offset = yyDollar[1].lval
  1169  			yyVAL.addr.Val = int32(yyDollar[3].lval)
  1170  		}
  1171  	case 90:
  1172  		yyDollar = yyS[yypt-4 : yypt+1]
  1173  		//line a.y:497
  1174  		{
  1175  			yyVAL.addr = nullgen
  1176  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1177  			yyVAL.addr.Offset = -yyDollar[2].lval
  1178  			yyVAL.addr.Val = int32(yyDollar[4].lval)
  1179  		}
  1180  	case 91:
  1181  		yyVAL.addr = yyS[yypt-0].addr
  1182  	case 92:
  1183  		yyVAL.addr = yyS[yypt-0].addr
  1184  	case 93:
  1185  		yyDollar = yyS[yypt-1 : yypt+1]
  1186  		//line a.y:511
  1187  		{
  1188  			yyVAL.addr = nullgen
  1189  			yyVAL.addr.Type = obj.TYPE_MEM
  1190  			yyVAL.addr.Offset = yyDollar[1].lval
  1191  		}
  1192  	case 94:
  1193  		yyDollar = yyS[yypt-4 : yypt+1]
  1194  		//line a.y:517
  1195  		{
  1196  			yyVAL.addr = nullgen
  1197  			yyVAL.addr.Type = obj.TYPE_MEM
  1198  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1199  			yyVAL.addr.Offset = yyDollar[1].lval
  1200  		}
  1201  	case 95:
  1202  		yyDollar = yyS[yypt-4 : yypt+1]
  1203  		//line a.y:524
  1204  		{
  1205  			yyVAL.addr = nullgen
  1206  			yyVAL.addr.Type = obj.TYPE_MEM
  1207  			yyVAL.addr.Reg = REG_SP
  1208  			yyVAL.addr.Offset = yyDollar[1].lval
  1209  		}
  1210  	case 96:
  1211  		yyDollar = yyS[yypt-6 : yypt+1]
  1212  		//line a.y:531
  1213  		{
  1214  			yyVAL.addr = nullgen
  1215  			yyVAL.addr.Type = obj.TYPE_MEM
  1216  			yyVAL.addr.Offset = yyDollar[1].lval
  1217  			yyVAL.addr.Index = int16(yyDollar[3].lval)
  1218  			yyVAL.addr.Scale = int16(yyDollar[5].lval)
  1219  			checkscale(yyVAL.addr.Scale)
  1220  		}
  1221  	case 97:
  1222  		yyDollar = yyS[yypt-9 : yypt+1]
  1223  		//line a.y:540
  1224  		{
  1225  			yyVAL.addr = nullgen
  1226  			yyVAL.addr.Type = obj.TYPE_MEM
  1227  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1228  			yyVAL.addr.Offset = yyDollar[1].lval
  1229  			yyVAL.addr.Index = int16(yyDollar[6].lval)
  1230  			yyVAL.addr.Scale = int16(yyDollar[8].lval)
  1231  			checkscale(yyVAL.addr.Scale)
  1232  		}
  1233  	case 98:
  1234  		yyDollar = yyS[yypt-9 : yypt+1]
  1235  		//line a.y:550
  1236  		{
  1237  			yyVAL.addr = nullgen
  1238  			yyVAL.addr.Type = obj.TYPE_MEM
  1239  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1240  			yyVAL.addr.Offset = yyDollar[1].lval
  1241  			yyVAL.addr.Index = int16(yyDollar[6].lval)
  1242  			yyVAL.addr.Scale = int16(yyDollar[8].lval)
  1243  			checkscale(yyVAL.addr.Scale)
  1244  		}
  1245  	case 99:
  1246  		yyDollar = yyS[yypt-3 : yypt+1]
  1247  		//line a.y:560
  1248  		{
  1249  			yyVAL.addr = nullgen
  1250  			yyVAL.addr.Type = obj.TYPE_MEM
  1251  			yyVAL.addr.Reg = int16(yyDollar[2].lval)
  1252  		}
  1253  	case 100:
  1254  		yyDollar = yyS[yypt-3 : yypt+1]
  1255  		//line a.y:566
  1256  		{
  1257  			yyVAL.addr = nullgen
  1258  			yyVAL.addr.Type = obj.TYPE_MEM
  1259  			yyVAL.addr.Reg = REG_SP
  1260  		}
  1261  	case 101:
  1262  		yyDollar = yyS[yypt-4 : yypt+1]
  1263  		//line a.y:572
  1264  		{
  1265  			yyVAL.addr = nullgen
  1266  			yyVAL.addr.Type = obj.TYPE_MEM
  1267  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1268  			yyVAL.addr.Offset = yyDollar[1].lval
  1269  		}
  1270  	case 102:
  1271  		yyDollar = yyS[yypt-5 : yypt+1]
  1272  		//line a.y:579
  1273  		{
  1274  			yyVAL.addr = nullgen
  1275  			yyVAL.addr.Type = obj.TYPE_MEM
  1276  			yyVAL.addr.Index = int16(yyDollar[2].lval)
  1277  			yyVAL.addr.Scale = int16(yyDollar[4].lval)
  1278  			checkscale(yyVAL.addr.Scale)
  1279  		}
  1280  	case 103:
  1281  		yyDollar = yyS[yypt-8 : yypt+1]
  1282  		//line a.y:587
  1283  		{
  1284  			yyVAL.addr = nullgen
  1285  			yyVAL.addr.Type = obj.TYPE_MEM
  1286  			yyVAL.addr.Reg = int16(yyDollar[2].lval)
  1287  			yyVAL.addr.Index = int16(yyDollar[5].lval)
  1288  			yyVAL.addr.Scale = int16(yyDollar[7].lval)
  1289  			checkscale(yyVAL.addr.Scale)
  1290  		}
  1291  	case 104:
  1292  		yyDollar = yyS[yypt-1 : yypt+1]
  1293  		//line a.y:598
  1294  		{
  1295  			yyVAL.addr = yyDollar[1].addr
  1296  		}
  1297  	case 105:
  1298  		yyDollar = yyS[yypt-6 : yypt+1]
  1299  		//line a.y:602
  1300  		{
  1301  			yyVAL.addr = yyDollar[1].addr
  1302  			yyVAL.addr.Index = int16(yyDollar[3].lval)
  1303  			yyVAL.addr.Scale = int16(yyDollar[5].lval)
  1304  			checkscale(yyVAL.addr.Scale)
  1305  		}
  1306  	case 106:
  1307  		yyDollar = yyS[yypt-5 : yypt+1]
  1308  		//line a.y:611
  1309  		{
  1310  			yyVAL.addr = nullgen
  1311  			yyVAL.addr.Type = obj.TYPE_MEM
  1312  			yyVAL.addr.Name = int8(yyDollar[4].lval)
  1313  			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
  1314  			yyVAL.addr.Offset = yyDollar[2].lval
  1315  		}
  1316  	case 107:
  1317  		yyDollar = yyS[yypt-7 : yypt+1]
  1318  		//line a.y:619
  1319  		{
  1320  			yyVAL.addr = nullgen
  1321  			yyVAL.addr.Type = obj.TYPE_MEM
  1322  			yyVAL.addr.Name = obj.NAME_STATIC
  1323  			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1)
  1324  			yyVAL.addr.Offset = yyDollar[4].lval
  1325  		}
  1326  	case 108:
  1327  		yyDollar = yyS[yypt-0 : yypt+1]
  1328  		//line a.y:628
  1329  		{
  1330  			yyVAL.lval = 0
  1331  		}
  1332  	case 109:
  1333  		yyDollar = yyS[yypt-2 : yypt+1]
  1334  		//line a.y:632
  1335  		{
  1336  			yyVAL.lval = yyDollar[2].lval
  1337  		}
  1338  	case 110:
  1339  		yyDollar = yyS[yypt-2 : yypt+1]
  1340  		//line a.y:636
  1341  		{
  1342  			yyVAL.lval = -yyDollar[2].lval
  1343  		}
  1344  	case 111:
  1345  		yyVAL.lval = yyS[yypt-0].lval
  1346  	case 112:
  1347  		yyDollar = yyS[yypt-1 : yypt+1]
  1348  		//line a.y:643
  1349  		{
  1350  			yyVAL.lval = obj.NAME_AUTO
  1351  		}
  1352  	case 113:
  1353  		yyVAL.lval = yyS[yypt-0].lval
  1354  	case 114:
  1355  		yyVAL.lval = yyS[yypt-0].lval
  1356  	case 115:
  1357  		yyDollar = yyS[yypt-1 : yypt+1]
  1358  		//line a.y:651
  1359  		{
  1360  			yyVAL.lval = yyDollar[1].sym.Value
  1361  		}
  1362  	case 116:
  1363  		yyDollar = yyS[yypt-2 : yypt+1]
  1364  		//line a.y:655
  1365  		{
  1366  			yyVAL.lval = -yyDollar[2].lval
  1367  		}
  1368  	case 117:
  1369  		yyDollar = yyS[yypt-2 : yypt+1]
  1370  		//line a.y:659
  1371  		{
  1372  			yyVAL.lval = yyDollar[2].lval
  1373  		}
  1374  	case 118:
  1375  		yyDollar = yyS[yypt-2 : yypt+1]
  1376  		//line a.y:663
  1377  		{
  1378  			yyVAL.lval = ^yyDollar[2].lval
  1379  		}
  1380  	case 119:
  1381  		yyDollar = yyS[yypt-3 : yypt+1]
  1382  		//line a.y:667
  1383  		{
  1384  			yyVAL.lval = yyDollar[2].lval
  1385  		}
  1386  	case 120:
  1387  		yyVAL.lval = yyS[yypt-0].lval
  1388  	case 121:
  1389  		yyDollar = yyS[yypt-3 : yypt+1]
  1390  		//line a.y:674
  1391  		{
  1392  			yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval
  1393  		}
  1394  	case 122:
  1395  		yyDollar = yyS[yypt-3 : yypt+1]
  1396  		//line a.y:678
  1397  		{
  1398  			yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval
  1399  		}
  1400  	case 123:
  1401  		yyDollar = yyS[yypt-3 : yypt+1]
  1402  		//line a.y:682
  1403  		{
  1404  			yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval
  1405  		}
  1406  	case 124:
  1407  		yyDollar = yyS[yypt-3 : yypt+1]
  1408  		//line a.y:686
  1409  		{
  1410  			yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval
  1411  		}
  1412  	case 125:
  1413  		yyDollar = yyS[yypt-3 : yypt+1]
  1414  		//line a.y:690
  1415  		{
  1416  			yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval
  1417  		}
  1418  	case 126:
  1419  		yyDollar = yyS[yypt-4 : yypt+1]
  1420  		//line a.y:694
  1421  		{
  1422  			yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval)
  1423  		}
  1424  	case 127:
  1425  		yyDollar = yyS[yypt-4 : yypt+1]
  1426  		//line a.y:698
  1427  		{
  1428  			yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval)
  1429  		}
  1430  	case 128:
  1431  		yyDollar = yyS[yypt-3 : yypt+1]
  1432  		//line a.y:702
  1433  		{
  1434  			yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval
  1435  		}
  1436  	case 129:
  1437  		yyDollar = yyS[yypt-3 : yypt+1]
  1438  		//line a.y:706
  1439  		{
  1440  			yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval
  1441  		}
  1442  	case 130:
  1443  		yyDollar = yyS[yypt-3 : yypt+1]
  1444  		//line a.y:710
  1445  		{
  1446  			yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval
  1447  		}
  1448  	}
  1449  	goto yystack /* stack new state and value */
  1450  }