modernc.org/cc@v1.0.1/v2/scanner.go (about)

     1  // Code generated by golex. DO NOT EDIT.
     2  
     3  // Copyright 2017 The CC Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Based on [0], 6.4.
     8  //
     9  // [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
    10  
    11  package cc
    12  
    13  import (
    14  	"fmt"
    15  
    16  	"modernc.org/golex/lex"
    17  )
    18  
    19  const (
    20  	_         = iota
    21  	scCOMMENT // [`/*`, `*/`]
    22  )
    23  
    24  func (l *lexer) scan() (r int) {
    25  	c := l.Enter()
    26  
    27  yystate0:
    28  	yyrule := -1
    29  	_ = yyrule
    30  	c = l.Rule0()
    31  
    32  	switch yyt := l.sc; yyt {
    33  	default:
    34  		panic(fmt.Errorf(`invalid start condition %d`, yyt))
    35  	case 0: // start condition: INITIAL
    36  		goto yystart1
    37  	case 1: // start condition: COMMENT
    38  		goto yystart123
    39  	}
    40  
    41  	goto yystate0 // silence unused label error
    42  	goto yyAction // silence unused label error
    43  yyAction:
    44  	switch yyrule {
    45  	case 1:
    46  		goto yyrule1
    47  	case 2:
    48  		goto yyrule2
    49  	case 3:
    50  		goto yyrule3
    51  	case 4:
    52  		goto yyrule4
    53  	case 5:
    54  		goto yyrule5
    55  	case 6:
    56  		goto yyrule6
    57  	case 7:
    58  		goto yyrule7
    59  	case 8:
    60  		goto yyrule8
    61  	case 9:
    62  		goto yyrule9
    63  	case 10:
    64  		goto yyrule10
    65  	case 11:
    66  		goto yyrule11
    67  	case 12:
    68  		goto yyrule12
    69  	case 13:
    70  		goto yyrule13
    71  	case 14:
    72  		goto yyrule14
    73  	case 15:
    74  		goto yyrule15
    75  	case 16:
    76  		goto yyrule16
    77  	case 17:
    78  		goto yyrule17
    79  	case 18:
    80  		goto yyrule18
    81  	case 19:
    82  		goto yyrule19
    83  	case 20:
    84  		goto yyrule20
    85  	case 21:
    86  		goto yyrule21
    87  	case 22:
    88  		goto yyrule22
    89  	case 23:
    90  		goto yyrule23
    91  	case 24:
    92  		goto yyrule24
    93  	case 25:
    94  		goto yyrule25
    95  	case 26:
    96  		goto yyrule26
    97  	case 27:
    98  		goto yyrule27
    99  	case 28:
   100  		goto yyrule28
   101  	case 29:
   102  		goto yyrule29
   103  	case 30:
   104  		goto yyrule30
   105  	case 31:
   106  		goto yyrule31
   107  	case 32:
   108  		goto yyrule32
   109  	case 33:
   110  		goto yyrule33
   111  	case 34:
   112  		goto yyrule34
   113  	case 35:
   114  		goto yyrule35
   115  	case 36:
   116  		goto yyrule36
   117  	case 37:
   118  		goto yyrule37
   119  	case 38:
   120  		goto yyrule38
   121  	case 39:
   122  		goto yyrule39
   123  	case 40:
   124  		goto yyrule40
   125  	case 41:
   126  		goto yyrule41
   127  	case 42:
   128  		goto yyrule42
   129  	case 43:
   130  		goto yyrule43
   131  	}
   132  	goto yystate1 // silence unused label error
   133  yystate1:
   134  	c = l.Next()
   135  yystart1:
   136  	switch {
   137  	default:
   138  		goto yyabort
   139  	case c == '!':
   140  		goto yystate3
   141  	case c == '"':
   142  		goto yystate5
   143  	case c == '#':
   144  		goto yystate16
   145  	case c == '%':
   146  		goto yystate20
   147  	case c == '&':
   148  		goto yystate27
   149  	case c == '*':
   150  		goto yystate42
   151  	case c == '+':
   152  		goto yystate44
   153  	case c == '-':
   154  		goto yystate47
   155  	case c == '.':
   156  		goto yystate51
   157  	case c == '/':
   158  		goto yystate65
   159  	case c == ':':
   160  		goto yystate69
   161  	case c == '<':
   162  		goto yystate71
   163  	case c == '=':
   164  		goto yystate77
   165  	case c == '>':
   166  		goto yystate79
   167  	case c == 'L':
   168  		goto yystate93
   169  	case c == '\'':
   170  		goto yystate30
   171  	case c == '\\':
   172  		goto yystate84
   173  	case c == '\t' || c == '\v' || c == '\f' || c == ' ':
   174  		goto yystate2
   175  	case c == '\u0080':
   176  		goto yystate122
   177  	case c == '^':
   178  		goto yystate117
   179  	case c == '|':
   180  		goto yystate119
   181  	case c >= '0' && c <= '9':
   182  		goto yystate54
   183  	case c >= 'A' && c <= 'K' || c >= 'M' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0084':
   184  		goto yystate83
   185  	}
   186  
   187  yystate2:
   188  	c = l.Next()
   189  	yyrule = 1
   190  	l.Mark()
   191  	switch {
   192  	default:
   193  		goto yyrule1
   194  	case c == '\t' || c == '\v' || c == '\f' || c == ' ':
   195  		goto yystate2
   196  	}
   197  
   198  yystate3:
   199  	c = l.Next()
   200  	switch {
   201  	default:
   202  		goto yyabort
   203  	case c == '=':
   204  		goto yystate4
   205  	}
   206  
   207  yystate4:
   208  	c = l.Next()
   209  	yyrule = 7
   210  	l.Mark()
   211  	goto yyrule7
   212  
   213  yystate5:
   214  	c = l.Next()
   215  	switch {
   216  	default:
   217  		goto yyabort
   218  	case c == '"':
   219  		goto yystate6
   220  	case c == '\\':
   221  		goto yystate7
   222  	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
   223  		goto yystate5
   224  	}
   225  
   226  yystate6:
   227  	c = l.Next()
   228  	yyrule = 43
   229  	l.Mark()
   230  	goto yyrule43
   231  
   232  yystate7:
   233  	c = l.Next()
   234  	switch {
   235  	default:
   236  		goto yyabort
   237  	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
   238  		goto yystate5
   239  	case c == 'U':
   240  		goto yystate8
   241  	case c == 'u':
   242  		goto yystate12
   243  	case c == 'x':
   244  		goto yystate15
   245  	}
   246  
   247  yystate8:
   248  	c = l.Next()
   249  	switch {
   250  	default:
   251  		goto yyabort
   252  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   253  		goto yystate9
   254  	}
   255  
   256  yystate9:
   257  	c = l.Next()
   258  	switch {
   259  	default:
   260  		goto yyabort
   261  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   262  		goto yystate10
   263  	}
   264  
   265  yystate10:
   266  	c = l.Next()
   267  	switch {
   268  	default:
   269  		goto yyabort
   270  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   271  		goto yystate11
   272  	}
   273  
   274  yystate11:
   275  	c = l.Next()
   276  	switch {
   277  	default:
   278  		goto yyabort
   279  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   280  		goto yystate12
   281  	}
   282  
   283  yystate12:
   284  	c = l.Next()
   285  	switch {
   286  	default:
   287  		goto yyabort
   288  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   289  		goto yystate13
   290  	}
   291  
   292  yystate13:
   293  	c = l.Next()
   294  	switch {
   295  	default:
   296  		goto yyabort
   297  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   298  		goto yystate14
   299  	}
   300  
   301  yystate14:
   302  	c = l.Next()
   303  	switch {
   304  	default:
   305  		goto yyabort
   306  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   307  		goto yystate15
   308  	}
   309  
   310  yystate15:
   311  	c = l.Next()
   312  	switch {
   313  	default:
   314  		goto yyabort
   315  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   316  		goto yystate5
   317  	}
   318  
   319  yystate16:
   320  	c = l.Next()
   321  	switch {
   322  	default:
   323  		goto yyabort
   324  	case c == '#':
   325  		goto yystate17
   326  	case c == '%':
   327  		goto yystate18
   328  	}
   329  
   330  yystate17:
   331  	c = l.Next()
   332  	yyrule = 34
   333  	l.Mark()
   334  	goto yyrule34
   335  
   336  yystate18:
   337  	c = l.Next()
   338  	switch {
   339  	default:
   340  		goto yyabort
   341  	case c == ':':
   342  		goto yystate19
   343  	}
   344  
   345  yystate19:
   346  	c = l.Next()
   347  	yyrule = 35
   348  	l.Mark()
   349  	goto yyrule35
   350  
   351  yystate20:
   352  	c = l.Next()
   353  	switch {
   354  	default:
   355  		goto yyabort
   356  	case c == ':':
   357  		goto yystate21
   358  	case c == '=':
   359  		goto yystate25
   360  	case c == '>':
   361  		goto yystate26
   362  	}
   363  
   364  yystate21:
   365  	c = l.Next()
   366  	yyrule = 8
   367  	l.Mark()
   368  	switch {
   369  	default:
   370  		goto yyrule8
   371  	case c == '#':
   372  		goto yystate22
   373  	case c == '%':
   374  		goto yystate23
   375  	}
   376  
   377  yystate22:
   378  	c = l.Next()
   379  	yyrule = 36
   380  	l.Mark()
   381  	goto yyrule36
   382  
   383  yystate23:
   384  	c = l.Next()
   385  	switch {
   386  	default:
   387  		goto yyabort
   388  	case c == ':':
   389  		goto yystate24
   390  	}
   391  
   392  yystate24:
   393  	c = l.Next()
   394  	yyrule = 37
   395  	l.Mark()
   396  	goto yyrule37
   397  
   398  yystate25:
   399  	c = l.Next()
   400  	yyrule = 9
   401  	l.Mark()
   402  	goto yyrule9
   403  
   404  yystate26:
   405  	c = l.Next()
   406  	yyrule = 10
   407  	l.Mark()
   408  	goto yyrule10
   409  
   410  yystate27:
   411  	c = l.Next()
   412  	switch {
   413  	default:
   414  		goto yyabort
   415  	case c == '&':
   416  		goto yystate28
   417  	case c == '=':
   418  		goto yystate29
   419  	}
   420  
   421  yystate28:
   422  	c = l.Next()
   423  	yyrule = 11
   424  	l.Mark()
   425  	goto yyrule11
   426  
   427  yystate29:
   428  	c = l.Next()
   429  	yyrule = 12
   430  	l.Mark()
   431  	goto yyrule12
   432  
   433  yystate30:
   434  	c = l.Next()
   435  	switch {
   436  	default:
   437  		goto yyabort
   438  	case c == '\\':
   439  		goto yystate33
   440  	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
   441  		goto yystate31
   442  	}
   443  
   444  yystate31:
   445  	c = l.Next()
   446  	switch {
   447  	default:
   448  		goto yyabort
   449  	case c == '\'':
   450  		goto yystate32
   451  	case c == '\\':
   452  		goto yystate33
   453  	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
   454  		goto yystate31
   455  	}
   456  
   457  yystate32:
   458  	c = l.Next()
   459  	yyrule = 40
   460  	l.Mark()
   461  	goto yyrule40
   462  
   463  yystate33:
   464  	c = l.Next()
   465  	switch {
   466  	default:
   467  		goto yyabort
   468  	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
   469  		goto yystate31
   470  	case c == 'U':
   471  		goto yystate34
   472  	case c == 'u':
   473  		goto yystate38
   474  	case c == 'x':
   475  		goto yystate41
   476  	}
   477  
   478  yystate34:
   479  	c = l.Next()
   480  	switch {
   481  	default:
   482  		goto yyabort
   483  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   484  		goto yystate35
   485  	}
   486  
   487  yystate35:
   488  	c = l.Next()
   489  	switch {
   490  	default:
   491  		goto yyabort
   492  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   493  		goto yystate36
   494  	}
   495  
   496  yystate36:
   497  	c = l.Next()
   498  	switch {
   499  	default:
   500  		goto yyabort
   501  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   502  		goto yystate37
   503  	}
   504  
   505  yystate37:
   506  	c = l.Next()
   507  	switch {
   508  	default:
   509  		goto yyabort
   510  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   511  		goto yystate38
   512  	}
   513  
   514  yystate38:
   515  	c = l.Next()
   516  	switch {
   517  	default:
   518  		goto yyabort
   519  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   520  		goto yystate39
   521  	}
   522  
   523  yystate39:
   524  	c = l.Next()
   525  	switch {
   526  	default:
   527  		goto yyabort
   528  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   529  		goto yystate40
   530  	}
   531  
   532  yystate40:
   533  	c = l.Next()
   534  	switch {
   535  	default:
   536  		goto yyabort
   537  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   538  		goto yystate41
   539  	}
   540  
   541  yystate41:
   542  	c = l.Next()
   543  	switch {
   544  	default:
   545  		goto yyabort
   546  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   547  		goto yystate31
   548  	}
   549  
   550  yystate42:
   551  	c = l.Next()
   552  	switch {
   553  	default:
   554  		goto yyabort
   555  	case c == '=':
   556  		goto yystate43
   557  	}
   558  
   559  yystate43:
   560  	c = l.Next()
   561  	yyrule = 13
   562  	l.Mark()
   563  	goto yyrule13
   564  
   565  yystate44:
   566  	c = l.Next()
   567  	switch {
   568  	default:
   569  		goto yyabort
   570  	case c == '+':
   571  		goto yystate45
   572  	case c == '=':
   573  		goto yystate46
   574  	}
   575  
   576  yystate45:
   577  	c = l.Next()
   578  	yyrule = 14
   579  	l.Mark()
   580  	goto yyrule14
   581  
   582  yystate46:
   583  	c = l.Next()
   584  	yyrule = 15
   585  	l.Mark()
   586  	goto yyrule15
   587  
   588  yystate47:
   589  	c = l.Next()
   590  	switch {
   591  	default:
   592  		goto yyabort
   593  	case c == '-':
   594  		goto yystate48
   595  	case c == '=':
   596  		goto yystate49
   597  	case c == '>':
   598  		goto yystate50
   599  	}
   600  
   601  yystate48:
   602  	c = l.Next()
   603  	yyrule = 16
   604  	l.Mark()
   605  	goto yyrule16
   606  
   607  yystate49:
   608  	c = l.Next()
   609  	yyrule = 17
   610  	l.Mark()
   611  	goto yyrule17
   612  
   613  yystate50:
   614  	c = l.Next()
   615  	yyrule = 18
   616  	l.Mark()
   617  	goto yyrule18
   618  
   619  yystate51:
   620  	c = l.Next()
   621  	switch {
   622  	default:
   623  		goto yyabort
   624  	case c == '.':
   625  		goto yystate52
   626  	case c >= '0' && c <= '9':
   627  		goto yystate54
   628  	}
   629  
   630  yystate52:
   631  	c = l.Next()
   632  	switch {
   633  	default:
   634  		goto yyabort
   635  	case c == '.':
   636  		goto yystate53
   637  	}
   638  
   639  yystate53:
   640  	c = l.Next()
   641  	yyrule = 19
   642  	l.Mark()
   643  	goto yyrule19
   644  
   645  yystate54:
   646  	c = l.Next()
   647  	yyrule = 42
   648  	l.Mark()
   649  	switch {
   650  	default:
   651  		goto yyrule42
   652  	case c == '.' || c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'o' || c >= 'q' && c <= 'z' || c == '\u0084':
   653  		goto yystate54
   654  	case c == 'E' || c == 'P' || c == 'e' || c == 'p':
   655  		goto yystate55
   656  	case c == '\\':
   657  		goto yystate56
   658  	}
   659  
   660  yystate55:
   661  	c = l.Next()
   662  	yyrule = 42
   663  	l.Mark()
   664  	switch {
   665  	default:
   666  		goto yyrule42
   667  	case c == '+' || c == '-' || c == '.' || c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'o' || c >= 'q' && c <= 'z' || c == '\u0084':
   668  		goto yystate54
   669  	case c == 'E' || c == 'P' || c == 'e' || c == 'p':
   670  		goto yystate55
   671  	case c == '\\':
   672  		goto yystate56
   673  	}
   674  
   675  yystate56:
   676  	c = l.Next()
   677  	switch {
   678  	default:
   679  		goto yyabort
   680  	case c == 'U':
   681  		goto yystate57
   682  	case c == 'u':
   683  		goto yystate61
   684  	}
   685  
   686  yystate57:
   687  	c = l.Next()
   688  	switch {
   689  	default:
   690  		goto yyabort
   691  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   692  		goto yystate58
   693  	}
   694  
   695  yystate58:
   696  	c = l.Next()
   697  	switch {
   698  	default:
   699  		goto yyabort
   700  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   701  		goto yystate59
   702  	}
   703  
   704  yystate59:
   705  	c = l.Next()
   706  	switch {
   707  	default:
   708  		goto yyabort
   709  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   710  		goto yystate60
   711  	}
   712  
   713  yystate60:
   714  	c = l.Next()
   715  	switch {
   716  	default:
   717  		goto yyabort
   718  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   719  		goto yystate61
   720  	}
   721  
   722  yystate61:
   723  	c = l.Next()
   724  	switch {
   725  	default:
   726  		goto yyabort
   727  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   728  		goto yystate62
   729  	}
   730  
   731  yystate62:
   732  	c = l.Next()
   733  	switch {
   734  	default:
   735  		goto yyabort
   736  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   737  		goto yystate63
   738  	}
   739  
   740  yystate63:
   741  	c = l.Next()
   742  	switch {
   743  	default:
   744  		goto yyabort
   745  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   746  		goto yystate64
   747  	}
   748  
   749  yystate64:
   750  	c = l.Next()
   751  	switch {
   752  	default:
   753  		goto yyabort
   754  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   755  		goto yystate54
   756  	}
   757  
   758  yystate65:
   759  	c = l.Next()
   760  	switch {
   761  	default:
   762  		goto yyabort
   763  	case c == '*':
   764  		goto yystate66
   765  	case c == '/':
   766  		goto yystate67
   767  	case c == '=':
   768  		goto yystate68
   769  	}
   770  
   771  yystate66:
   772  	c = l.Next()
   773  	yyrule = 3
   774  	l.Mark()
   775  	goto yyrule3
   776  
   777  yystate67:
   778  	c = l.Next()
   779  	yyrule = 2
   780  	l.Mark()
   781  	switch {
   782  	default:
   783  		goto yyrule2
   784  	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
   785  		goto yystate67
   786  	}
   787  
   788  yystate68:
   789  	c = l.Next()
   790  	yyrule = 20
   791  	l.Mark()
   792  	goto yyrule20
   793  
   794  yystate69:
   795  	c = l.Next()
   796  	switch {
   797  	default:
   798  		goto yyabort
   799  	case c == '>':
   800  		goto yystate70
   801  	}
   802  
   803  yystate70:
   804  	c = l.Next()
   805  	yyrule = 21
   806  	l.Mark()
   807  	goto yyrule21
   808  
   809  yystate71:
   810  	c = l.Next()
   811  	switch {
   812  	default:
   813  		goto yyabort
   814  	case c == '%':
   815  		goto yystate72
   816  	case c == ':':
   817  		goto yystate73
   818  	case c == '<':
   819  		goto yystate74
   820  	case c == '=':
   821  		goto yystate76
   822  	}
   823  
   824  yystate72:
   825  	c = l.Next()
   826  	yyrule = 22
   827  	l.Mark()
   828  	goto yyrule22
   829  
   830  yystate73:
   831  	c = l.Next()
   832  	yyrule = 23
   833  	l.Mark()
   834  	goto yyrule23
   835  
   836  yystate74:
   837  	c = l.Next()
   838  	yyrule = 24
   839  	l.Mark()
   840  	switch {
   841  	default:
   842  		goto yyrule24
   843  	case c == '=':
   844  		goto yystate75
   845  	}
   846  
   847  yystate75:
   848  	c = l.Next()
   849  	yyrule = 25
   850  	l.Mark()
   851  	goto yyrule25
   852  
   853  yystate76:
   854  	c = l.Next()
   855  	yyrule = 26
   856  	l.Mark()
   857  	goto yyrule26
   858  
   859  yystate77:
   860  	c = l.Next()
   861  	switch {
   862  	default:
   863  		goto yyabort
   864  	case c == '=':
   865  		goto yystate78
   866  	}
   867  
   868  yystate78:
   869  	c = l.Next()
   870  	yyrule = 27
   871  	l.Mark()
   872  	goto yyrule27
   873  
   874  yystate79:
   875  	c = l.Next()
   876  	switch {
   877  	default:
   878  		goto yyabort
   879  	case c == '=':
   880  		goto yystate80
   881  	case c == '>':
   882  		goto yystate81
   883  	}
   884  
   885  yystate80:
   886  	c = l.Next()
   887  	yyrule = 28
   888  	l.Mark()
   889  	goto yyrule28
   890  
   891  yystate81:
   892  	c = l.Next()
   893  	yyrule = 29
   894  	l.Mark()
   895  	switch {
   896  	default:
   897  		goto yyrule29
   898  	case c == '=':
   899  		goto yystate82
   900  	}
   901  
   902  yystate82:
   903  	c = l.Next()
   904  	yyrule = 30
   905  	l.Mark()
   906  	goto yyrule30
   907  
   908  yystate83:
   909  	c = l.Next()
   910  	yyrule = 41
   911  	l.Mark()
   912  	switch {
   913  	default:
   914  		goto yyrule41
   915  	case c == '$' || c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0083' || c == '\u0084':
   916  		goto yystate83
   917  	case c == '\\':
   918  		goto yystate84
   919  	}
   920  
   921  yystate84:
   922  	c = l.Next()
   923  	switch {
   924  	default:
   925  		goto yyabort
   926  	case c == 'U':
   927  		goto yystate85
   928  	case c == 'u':
   929  		goto yystate89
   930  	}
   931  
   932  yystate85:
   933  	c = l.Next()
   934  	switch {
   935  	default:
   936  		goto yyabort
   937  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   938  		goto yystate86
   939  	}
   940  
   941  yystate86:
   942  	c = l.Next()
   943  	switch {
   944  	default:
   945  		goto yyabort
   946  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   947  		goto yystate87
   948  	}
   949  
   950  yystate87:
   951  	c = l.Next()
   952  	switch {
   953  	default:
   954  		goto yyabort
   955  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   956  		goto yystate88
   957  	}
   958  
   959  yystate88:
   960  	c = l.Next()
   961  	switch {
   962  	default:
   963  		goto yyabort
   964  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   965  		goto yystate89
   966  	}
   967  
   968  yystate89:
   969  	c = l.Next()
   970  	switch {
   971  	default:
   972  		goto yyabort
   973  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   974  		goto yystate90
   975  	}
   976  
   977  yystate90:
   978  	c = l.Next()
   979  	switch {
   980  	default:
   981  		goto yyabort
   982  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   983  		goto yystate91
   984  	}
   985  
   986  yystate91:
   987  	c = l.Next()
   988  	switch {
   989  	default:
   990  		goto yyabort
   991  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
   992  		goto yystate92
   993  	}
   994  
   995  yystate92:
   996  	c = l.Next()
   997  	switch {
   998  	default:
   999  		goto yyabort
  1000  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1001  		goto yystate83
  1002  	}
  1003  
  1004  yystate93:
  1005  	c = l.Next()
  1006  	yyrule = 41
  1007  	l.Mark()
  1008  	switch {
  1009  	default:
  1010  		goto yyrule41
  1011  	case c == '"':
  1012  		goto yystate94
  1013  	case c == '$' || c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0083' || c == '\u0084':
  1014  		goto yystate83
  1015  	case c == '\'':
  1016  		goto yystate105
  1017  	case c == '\\':
  1018  		goto yystate84
  1019  	}
  1020  
  1021  yystate94:
  1022  	c = l.Next()
  1023  	switch {
  1024  	default:
  1025  		goto yyabort
  1026  	case c == '"':
  1027  		goto yystate95
  1028  	case c == '\\':
  1029  		goto yystate96
  1030  	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
  1031  		goto yystate94
  1032  	}
  1033  
  1034  yystate95:
  1035  	c = l.Next()
  1036  	yyrule = 39
  1037  	l.Mark()
  1038  	goto yyrule39
  1039  
  1040  yystate96:
  1041  	c = l.Next()
  1042  	switch {
  1043  	default:
  1044  		goto yyabort
  1045  	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
  1046  		goto yystate94
  1047  	case c == 'U':
  1048  		goto yystate97
  1049  	case c == 'u':
  1050  		goto yystate101
  1051  	case c == 'x':
  1052  		goto yystate104
  1053  	}
  1054  
  1055  yystate97:
  1056  	c = l.Next()
  1057  	switch {
  1058  	default:
  1059  		goto yyabort
  1060  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1061  		goto yystate98
  1062  	}
  1063  
  1064  yystate98:
  1065  	c = l.Next()
  1066  	switch {
  1067  	default:
  1068  		goto yyabort
  1069  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1070  		goto yystate99
  1071  	}
  1072  
  1073  yystate99:
  1074  	c = l.Next()
  1075  	switch {
  1076  	default:
  1077  		goto yyabort
  1078  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1079  		goto yystate100
  1080  	}
  1081  
  1082  yystate100:
  1083  	c = l.Next()
  1084  	switch {
  1085  	default:
  1086  		goto yyabort
  1087  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1088  		goto yystate101
  1089  	}
  1090  
  1091  yystate101:
  1092  	c = l.Next()
  1093  	switch {
  1094  	default:
  1095  		goto yyabort
  1096  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1097  		goto yystate102
  1098  	}
  1099  
  1100  yystate102:
  1101  	c = l.Next()
  1102  	switch {
  1103  	default:
  1104  		goto yyabort
  1105  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1106  		goto yystate103
  1107  	}
  1108  
  1109  yystate103:
  1110  	c = l.Next()
  1111  	switch {
  1112  	default:
  1113  		goto yyabort
  1114  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1115  		goto yystate104
  1116  	}
  1117  
  1118  yystate104:
  1119  	c = l.Next()
  1120  	switch {
  1121  	default:
  1122  		goto yyabort
  1123  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1124  		goto yystate94
  1125  	}
  1126  
  1127  yystate105:
  1128  	c = l.Next()
  1129  	switch {
  1130  	default:
  1131  		goto yyabort
  1132  	case c == '\\':
  1133  		goto yystate108
  1134  	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
  1135  		goto yystate106
  1136  	}
  1137  
  1138  yystate106:
  1139  	c = l.Next()
  1140  	switch {
  1141  	default:
  1142  		goto yyabort
  1143  	case c == '\'':
  1144  		goto yystate107
  1145  	case c == '\\':
  1146  		goto yystate108
  1147  	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
  1148  		goto yystate106
  1149  	}
  1150  
  1151  yystate107:
  1152  	c = l.Next()
  1153  	yyrule = 38
  1154  	l.Mark()
  1155  	goto yyrule38
  1156  
  1157  yystate108:
  1158  	c = l.Next()
  1159  	switch {
  1160  	default:
  1161  		goto yyabort
  1162  	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
  1163  		goto yystate106
  1164  	case c == 'U':
  1165  		goto yystate109
  1166  	case c == 'u':
  1167  		goto yystate113
  1168  	case c == 'x':
  1169  		goto yystate116
  1170  	}
  1171  
  1172  yystate109:
  1173  	c = l.Next()
  1174  	switch {
  1175  	default:
  1176  		goto yyabort
  1177  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1178  		goto yystate110
  1179  	}
  1180  
  1181  yystate110:
  1182  	c = l.Next()
  1183  	switch {
  1184  	default:
  1185  		goto yyabort
  1186  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1187  		goto yystate111
  1188  	}
  1189  
  1190  yystate111:
  1191  	c = l.Next()
  1192  	switch {
  1193  	default:
  1194  		goto yyabort
  1195  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1196  		goto yystate112
  1197  	}
  1198  
  1199  yystate112:
  1200  	c = l.Next()
  1201  	switch {
  1202  	default:
  1203  		goto yyabort
  1204  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1205  		goto yystate113
  1206  	}
  1207  
  1208  yystate113:
  1209  	c = l.Next()
  1210  	switch {
  1211  	default:
  1212  		goto yyabort
  1213  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1214  		goto yystate114
  1215  	}
  1216  
  1217  yystate114:
  1218  	c = l.Next()
  1219  	switch {
  1220  	default:
  1221  		goto yyabort
  1222  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1223  		goto yystate115
  1224  	}
  1225  
  1226  yystate115:
  1227  	c = l.Next()
  1228  	switch {
  1229  	default:
  1230  		goto yyabort
  1231  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1232  		goto yystate116
  1233  	}
  1234  
  1235  yystate116:
  1236  	c = l.Next()
  1237  	switch {
  1238  	default:
  1239  		goto yyabort
  1240  	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
  1241  		goto yystate106
  1242  	}
  1243  
  1244  yystate117:
  1245  	c = l.Next()
  1246  	switch {
  1247  	default:
  1248  		goto yyabort
  1249  	case c == '=':
  1250  		goto yystate118
  1251  	}
  1252  
  1253  yystate118:
  1254  	c = l.Next()
  1255  	yyrule = 31
  1256  	l.Mark()
  1257  	goto yyrule31
  1258  
  1259  yystate119:
  1260  	c = l.Next()
  1261  	switch {
  1262  	default:
  1263  		goto yyabort
  1264  	case c == '=':
  1265  		goto yystate120
  1266  	case c == '|':
  1267  		goto yystate121
  1268  	}
  1269  
  1270  yystate120:
  1271  	c = l.Next()
  1272  	yyrule = 32
  1273  	l.Mark()
  1274  	goto yyrule32
  1275  
  1276  yystate121:
  1277  	c = l.Next()
  1278  	yyrule = 33
  1279  	l.Mark()
  1280  	goto yyrule33
  1281  
  1282  yystate122:
  1283  	c = l.Next()
  1284  	yyrule = 6
  1285  	l.Mark()
  1286  	goto yyrule6
  1287  
  1288  	goto yystate123 // silence unused label error
  1289  yystate123:
  1290  	c = l.Next()
  1291  yystart123:
  1292  	switch {
  1293  	default:
  1294  		goto yyabort
  1295  	case c == '*':
  1296  		goto yystate125
  1297  	case c == '\u0080':
  1298  		goto yystate127
  1299  	case c >= '\x01' && c <= ')' || c >= '+' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
  1300  		goto yystate124
  1301  	}
  1302  
  1303  yystate124:
  1304  	c = l.Next()
  1305  	switch {
  1306  	default:
  1307  		goto yyabort
  1308  	case c == '*':
  1309  		goto yystate125
  1310  	case c >= '\x01' && c <= ')' || c >= '+' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
  1311  		goto yystate124
  1312  	}
  1313  
  1314  yystate125:
  1315  	c = l.Next()
  1316  	switch {
  1317  	default:
  1318  		goto yyabort
  1319  	case c == '*':
  1320  		goto yystate125
  1321  	case c == '/':
  1322  		goto yystate126
  1323  	case c >= '\x01' && c <= ')' || c >= '+' && c <= '.' || c >= '0' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
  1324  		goto yystate124
  1325  	}
  1326  
  1327  yystate126:
  1328  	c = l.Next()
  1329  	yyrule = 4
  1330  	l.Mark()
  1331  	goto yyrule4
  1332  
  1333  yystate127:
  1334  	c = l.Next()
  1335  	yyrule = 5
  1336  	l.Mark()
  1337  	goto yyrule5
  1338  
  1339  yyrule1: // [ \t\f\v]+
  1340  	{
  1341  		return ' '
  1342  	}
  1343  yyrule2: // "//"[^\x80\n]*
  1344  	{
  1345  		l.comment(false)
  1346  		return ' '
  1347  	}
  1348  yyrule3: // "/*"
  1349  	{
  1350  		l.commentPos0 = l.First.Pos()
  1351  		l.sc = scCOMMENT
  1352  		goto yystate0
  1353  	}
  1354  yyrule4: // {comment-close}
  1355  	{
  1356  		l.sc = scINITIAL
  1357  		l.First = lex.NewChar(l.commentPos0, l.First.Rune)
  1358  		l.comment(true)
  1359  		return ' '
  1360  	}
  1361  yyrule5: // {eof}
  1362  	{
  1363  		l.errPos(l.commentPos0, "unterminated comment")
  1364  		l.sc = scINITIAL
  1365  		return rune2class(lex.RuneEOF)
  1366  	}
  1367  yyrule6: // {eof}
  1368  	{
  1369  		return rune2class(lex.RuneEOF)
  1370  	}
  1371  yyrule7: // "!="
  1372  	{
  1373  		return NEQ
  1374  	}
  1375  yyrule8: // "%:"
  1376  	{
  1377  		return '#'
  1378  	}
  1379  yyrule9: // "%="
  1380  	{
  1381  		return MODASSIGN
  1382  	}
  1383  yyrule10: // "%>"
  1384  	{
  1385  		return '}'
  1386  	}
  1387  yyrule11: // "&&"
  1388  	{
  1389  		return ANDAND
  1390  	}
  1391  yyrule12: // "&="
  1392  	{
  1393  		return ANDASSIGN
  1394  	}
  1395  yyrule13: // "*="
  1396  	{
  1397  		return MULASSIGN
  1398  	}
  1399  yyrule14: // "++"
  1400  	{
  1401  		return INC
  1402  	}
  1403  yyrule15: // "+="
  1404  	{
  1405  		return ADDASSIGN
  1406  	}
  1407  yyrule16: // "--"
  1408  	{
  1409  		return DEC
  1410  	}
  1411  yyrule17: // "-="
  1412  	{
  1413  		return SUBASSIGN
  1414  	}
  1415  yyrule18: // "->"
  1416  	{
  1417  		return ARROW
  1418  	}
  1419  yyrule19: // "..."
  1420  	{
  1421  		return DDD
  1422  	}
  1423  yyrule20: // "/="
  1424  	{
  1425  		return DIVASSIGN
  1426  	}
  1427  yyrule21: // ":>"
  1428  	{
  1429  		return ']'
  1430  	}
  1431  yyrule22: // "<%"
  1432  	{
  1433  		return '{'
  1434  	}
  1435  yyrule23: // "<:"
  1436  	{
  1437  		return '['
  1438  	}
  1439  yyrule24: // "<<"
  1440  	{
  1441  		return LSH
  1442  	}
  1443  yyrule25: // "<<="
  1444  	{
  1445  		return LSHASSIGN
  1446  	}
  1447  yyrule26: // "<="
  1448  	{
  1449  		return LEQ
  1450  	}
  1451  yyrule27: // "=="
  1452  	{
  1453  		return EQ
  1454  	}
  1455  yyrule28: // ">="
  1456  	{
  1457  		return GEQ
  1458  	}
  1459  yyrule29: // ">>"
  1460  	{
  1461  		return RSH
  1462  	}
  1463  yyrule30: // ">>="
  1464  	{
  1465  		return RSHASSIGN
  1466  	}
  1467  yyrule31: // "^="
  1468  	{
  1469  		return XORASSIGN
  1470  	}
  1471  yyrule32: // "|="
  1472  	{
  1473  		return ORASSIGN
  1474  	}
  1475  yyrule33: // "||"
  1476  	{
  1477  		return OROR
  1478  	}
  1479  yyrule34: // "##"
  1480  yyrule35: // "#%:"
  1481  yyrule36: // "%:#"
  1482  yyrule37: // "%:%:"
  1483  	{
  1484  		return PPPASTE
  1485  	}
  1486  yyrule38: // L{character-constant}
  1487  	{
  1488  		return LONGCHARCONST
  1489  	}
  1490  yyrule39: // L{string-literal}
  1491  	{
  1492  		return LONGSTRINGLITERAL
  1493  	}
  1494  yyrule40: // {character-constant}
  1495  	{
  1496  		return CHARCONST
  1497  	}
  1498  yyrule41: // {identifier}
  1499  	{
  1500  		return IDENTIFIER
  1501  	}
  1502  yyrule42: // {pp-number}
  1503  	{
  1504  		return PPNUMBER
  1505  	}
  1506  yyrule43: // {string-literal}
  1507  	{
  1508  		return STRINGLITERAL
  1509  	}
  1510  	panic("unreachable")
  1511  
  1512  	goto yyabort // silence unused label error
  1513  
  1514  yyabort: // no lexem recognized
  1515  	if c, ok := l.Abort(); ok {
  1516  		return c
  1517  	}
  1518  
  1519  	goto yyAction
  1520  }