// Code generated by golex. DO NOT EDIT.

// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Based on [0], 6.4.
//
// [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

package cc

import (
	"fmt"

	"modernc.org/golex/lex"
)

const (
	_         = iota
	scCOMMENT // [`/*`, `*/`]
)

func (l *lexer) scan() (r int) {
	c := l.Enter()

yystate0:
	yyrule := -1
	_ = yyrule
	c = l.Rule0()

	switch yyt := l.sc; yyt {
	default:
		panic(fmt.Errorf(`invalid start condition %d`, yyt))
	case 0: // start condition: INITIAL
		goto yystart1
	case 1: // start condition: COMMENT
		goto yystart123
	}

	goto yystate0 // silence unused label error
	goto yyAction // silence unused label error
yyAction:
	switch yyrule {
	case 1:
		goto yyrule1
	case 2:
		goto yyrule2
	case 3:
		goto yyrule3
	case 4:
		goto yyrule4
	case 5:
		goto yyrule5
	case 6:
		goto yyrule6
	case 7:
		goto yyrule7
	case 8:
		goto yyrule8
	case 9:
		goto yyrule9
	case 10:
		goto yyrule10
	case 11:
		goto yyrule11
	case 12:
		goto yyrule12
	case 13:
		goto yyrule13
	case 14:
		goto yyrule14
	case 15:
		goto yyrule15
	case 16:
		goto yyrule16
	case 17:
		goto yyrule17
	case 18:
		goto yyrule18
	case 19:
		goto yyrule19
	case 20:
		goto yyrule20
	case 21:
		goto yyrule21
	case 22:
		goto yyrule22
	case 23:
		goto yyrule23
	case 24:
		goto yyrule24
	case 25:
		goto yyrule25
	case 26:
		goto yyrule26
	case 27:
		goto yyrule27
	case 28:
		goto yyrule28
	case 29:
		goto yyrule29
	case 30:
		goto yyrule30
	case 31:
		goto yyrule31
	case 32:
		goto yyrule32
	case 33:
		goto yyrule33
	case 34:
		goto yyrule34
	case 35:
		goto yyrule35
	case 36:
		goto yyrule36
	case 37:
		goto yyrule37
	case 38:
		goto yyrule38
	case 39:
		goto yyrule39
	case 40:
		goto yyrule40
	case 41:
		goto yyrule41
	case 42:
		goto yyrule42
	case 43:
		goto yyrule43
	}
	goto yystate1 // silence unused label error
yystate1:
	c = l.Next()
yystart1:
	switch {
	default:
		goto yyabort
	case c == '!':
		goto yystate3
	case c == '"':
		goto yystate5
	case c == '#':
		goto yystate16
	case c == '%':
		goto yystate20
	case c == '&':
		goto yystate27
	case c == '*':
		goto yystate42
	case c == '+':
		goto yystate44
	case c == '-':
		goto yystate47
	case c == '.':
		goto yystate51
	case c == '/':
		goto yystate65
	case c == ':':
		goto yystate69
	case c == '<':
		goto yystate71
	case c == '=':
		goto yystate77
	case c == '>':
		goto yystate79
	case c == 'L':
		goto yystate93
	case c == '\'':
		goto yystate30
	case c == '\\':
		goto yystate84
	case c == '\t' || c == '\v' || c == '\f' || c == ' ':
		goto yystate2
	case c == '\u0080':
		goto yystate122
	case c == '^':
		goto yystate117
	case c == '|':
		goto yystate119
	case c >= '0' && c <= '9':
		goto yystate54
	case c >= 'A' && c <= 'K' || c >= 'M' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0084':
		goto yystate83
	}

yystate2:
	c = l.Next()
	yyrule = 1
	l.Mark()
	switch {
	default:
		goto yyrule1
	case c == '\t' || c == '\v' || c == '\f' || c == ' ':
		goto yystate2
	}

yystate3:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '=':
		goto yystate4
	}

yystate4:
	c = l.Next()
	yyrule = 7
	l.Mark()
	goto yyrule7

yystate5:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '"':
		goto yystate6
	case c == '\\':
		goto yystate7
	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate5
	}

yystate6:
	c = l.Next()
	yyrule = 43
	l.Mark()
	goto yyrule43

yystate7:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
		goto yystate5
	case c == 'U':
		goto yystate8
	case c == 'u':
		goto yystate12
	case c == 'x':
		goto yystate15
	}

yystate8:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate9
	}

yystate9:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate10
	}

yystate10:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate11
	}

yystate11:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate12
	}

yystate12:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate13
	}

yystate13:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate14
	}

yystate14:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate15
	}

yystate15:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate5
	}

yystate16:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '#':
		goto yystate17
	case c == '%':
		goto yystate18
	}

yystate17:
	c = l.Next()
	yyrule = 34
	l.Mark()
	goto yyrule34

yystate18:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == ':':
		goto yystate19
	}

yystate19:
	c = l.Next()
	yyrule = 35
	l.Mark()
	goto yyrule35

yystate20:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == ':':
		goto yystate21
	case c == '=':
		goto yystate25
	case c == '>':
		goto yystate26
	}

yystate21:
	c = l.Next()
	yyrule = 8
	l.Mark()
	switch {
	default:
		goto yyrule8
	case c == '#':
		goto yystate22
	case c == '%':
		goto yystate23
	}

yystate22:
	c = l.Next()
	yyrule = 36
	l.Mark()
	goto yyrule36

yystate23:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == ':':
		goto yystate24
	}

yystate24:
	c = l.Next()
	yyrule = 37
	l.Mark()
	goto yyrule37

yystate25:
	c = l.Next()
	yyrule = 9
	l.Mark()
	goto yyrule9

yystate26:
	c = l.Next()
	yyrule = 10
	l.Mark()
	goto yyrule10

yystate27:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '&':
		goto yystate28
	case c == '=':
		goto yystate29
	}

yystate28:
	c = l.Next()
	yyrule = 11
	l.Mark()
	goto yyrule11

yystate29:
	c = l.Next()
	yyrule = 12
	l.Mark()
	goto yyrule12

yystate30:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '\\':
		goto yystate33
	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate31
	}

yystate31:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '\'':
		goto yystate32
	case c == '\\':
		goto yystate33
	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate31
	}

yystate32:
	c = l.Next()
	yyrule = 40
	l.Mark()
	goto yyrule40

yystate33:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
		goto yystate31
	case c == 'U':
		goto yystate34
	case c == 'u':
		goto yystate38
	case c == 'x':
		goto yystate41
	}

yystate34:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate35
	}

yystate35:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate36
	}

yystate36:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate37
	}

yystate37:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate38
	}

yystate38:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate39
	}

yystate39:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate40
	}

yystate40:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate41
	}

yystate41:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate31
	}

yystate42:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '=':
		goto yystate43
	}

yystate43:
	c = l.Next()
	yyrule = 13
	l.Mark()
	goto yyrule13

yystate44:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '+':
		goto yystate45
	case c == '=':
		goto yystate46
	}

yystate45:
	c = l.Next()
	yyrule = 14
	l.Mark()
	goto yyrule14

yystate46:
	c = l.Next()
	yyrule = 15
	l.Mark()
	goto yyrule15

yystate47:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '-':
		goto yystate48
	case c == '=':
		goto yystate49
	case c == '>':
		goto yystate50
	}

yystate48:
	c = l.Next()
	yyrule = 16
	l.Mark()
	goto yyrule16

yystate49:
	c = l.Next()
	yyrule = 17
	l.Mark()
	goto yyrule17

yystate50:
	c = l.Next()
	yyrule = 18
	l.Mark()
	goto yyrule18

yystate51:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '.':
		goto yystate52
	case c >= '0' && c <= '9':
		goto yystate54
	}

yystate52:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '.':
		goto yystate53
	}

yystate53:
	c = l.Next()
	yyrule = 19
	l.Mark()
	goto yyrule19

yystate54:
	c = l.Next()
	yyrule = 42
	l.Mark()
	switch {
	default:
		goto yyrule42
	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':
		goto yystate54
	case c == 'E' || c == 'P' || c == 'e' || c == 'p':
		goto yystate55
	case c == '\\':
		goto yystate56
	}

yystate55:
	c = l.Next()
	yyrule = 42
	l.Mark()
	switch {
	default:
		goto yyrule42
	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':
		goto yystate54
	case c == 'E' || c == 'P' || c == 'e' || c == 'p':
		goto yystate55
	case c == '\\':
		goto yystate56
	}

yystate56:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == 'U':
		goto yystate57
	case c == 'u':
		goto yystate61
	}

yystate57:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate58
	}

yystate58:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate59
	}

yystate59:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate60
	}

yystate60:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate61
	}

yystate61:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate62
	}

yystate62:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate63
	}

yystate63:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate64
	}

yystate64:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate54
	}

yystate65:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '*':
		goto yystate66
	case c == '/':
		goto yystate67
	case c == '=':
		goto yystate68
	}

yystate66:
	c = l.Next()
	yyrule = 3
	l.Mark()
	goto yyrule3

yystate67:
	c = l.Next()
	yyrule = 2
	l.Mark()
	switch {
	default:
		goto yyrule2
	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate67
	}

yystate68:
	c = l.Next()
	yyrule = 20
	l.Mark()
	goto yyrule20

yystate69:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '>':
		goto yystate70
	}

yystate70:
	c = l.Next()
	yyrule = 21
	l.Mark()
	goto yyrule21

yystate71:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '%':
		goto yystate72
	case c == ':':
		goto yystate73
	case c == '<':
		goto yystate74
	case c == '=':
		goto yystate76
	}

yystate72:
	c = l.Next()
	yyrule = 22
	l.Mark()
	goto yyrule22

yystate73:
	c = l.Next()
	yyrule = 23
	l.Mark()
	goto yyrule23

yystate74:
	c = l.Next()
	yyrule = 24
	l.Mark()
	switch {
	default:
		goto yyrule24
	case c == '=':
		goto yystate75
	}

yystate75:
	c = l.Next()
	yyrule = 25
	l.Mark()
	goto yyrule25

yystate76:
	c = l.Next()
	yyrule = 26
	l.Mark()
	goto yyrule26

yystate77:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '=':
		goto yystate78
	}

yystate78:
	c = l.Next()
	yyrule = 27
	l.Mark()
	goto yyrule27

yystate79:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '=':
		goto yystate80
	case c == '>':
		goto yystate81
	}

yystate80:
	c = l.Next()
	yyrule = 28
	l.Mark()
	goto yyrule28

yystate81:
	c = l.Next()
	yyrule = 29
	l.Mark()
	switch {
	default:
		goto yyrule29
	case c == '=':
		goto yystate82
	}

yystate82:
	c = l.Next()
	yyrule = 30
	l.Mark()
	goto yyrule30

yystate83:
	c = l.Next()
	yyrule = 41
	l.Mark()
	switch {
	default:
		goto yyrule41
	case c == '$' || c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0083' || c == '\u0084':
		goto yystate83
	case c == '\\':
		goto yystate84
	}

yystate84:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == 'U':
		goto yystate85
	case c == 'u':
		goto yystate89
	}

yystate85:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate86
	}

yystate86:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate87
	}

yystate87:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate88
	}

yystate88:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate89
	}

yystate89:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate90
	}

yystate90:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate91
	}

yystate91:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate92
	}

yystate92:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate83
	}

yystate93:
	c = l.Next()
	yyrule = 41
	l.Mark()
	switch {
	default:
		goto yyrule41
	case c == '"':
		goto yystate94
	case c == '$' || c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0083' || c == '\u0084':
		goto yystate83
	case c == '\'':
		goto yystate105
	case c == '\\':
		goto yystate84
	}

yystate94:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '"':
		goto yystate95
	case c == '\\':
		goto yystate96
	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate94
	}

yystate95:
	c = l.Next()
	yyrule = 39
	l.Mark()
	goto yyrule39

yystate96:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
		goto yystate94
	case c == 'U':
		goto yystate97
	case c == 'u':
		goto yystate101
	case c == 'x':
		goto yystate104
	}

yystate97:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate98
	}

yystate98:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate99
	}

yystate99:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate100
	}

yystate100:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate101
	}

yystate101:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate102
	}

yystate102:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate103
	}

yystate103:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate104
	}

yystate104:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate94
	}

yystate105:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '\\':
		goto yystate108
	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate106
	}

yystate106:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '\'':
		goto yystate107
	case c == '\\':
		goto yystate108
	case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate106
	}

yystate107:
	c = l.Next()
	yyrule = 38
	l.Mark()
	goto yyrule38

yystate108:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v':
		goto yystate106
	case c == 'U':
		goto yystate109
	case c == 'u':
		goto yystate113
	case c == 'x':
		goto yystate116
	}

yystate109:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate110
	}

yystate110:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate111
	}

yystate111:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate112
	}

yystate112:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate113
	}

yystate113:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate114
	}

yystate114:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate115
	}

yystate115:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate116
	}

yystate116:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f':
		goto yystate106
	}

yystate117:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '=':
		goto yystate118
	}

yystate118:
	c = l.Next()
	yyrule = 31
	l.Mark()
	goto yyrule31

yystate119:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '=':
		goto yystate120
	case c == '|':
		goto yystate121
	}

yystate120:
	c = l.Next()
	yyrule = 32
	l.Mark()
	goto yyrule32

yystate121:
	c = l.Next()
	yyrule = 33
	l.Mark()
	goto yyrule33

yystate122:
	c = l.Next()
	yyrule = 6
	l.Mark()
	goto yyrule6

	goto yystate123 // silence unused label error
yystate123:
	c = l.Next()
yystart123:
	switch {
	default:
		goto yyabort
	case c == '*':
		goto yystate125
	case c == '\u0080':
		goto yystate127
	case c >= '\x01' && c <= ')' || c >= '+' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate124
	}

yystate124:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '*':
		goto yystate125
	case c >= '\x01' && c <= ')' || c >= '+' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate124
	}

yystate125:
	c = l.Next()
	switch {
	default:
		goto yyabort
	case c == '*':
		goto yystate125
	case c == '/':
		goto yystate126
	case c >= '\x01' && c <= ')' || c >= '+' && c <= '.' || c >= '0' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ':
		goto yystate124
	}

yystate126:
	c = l.Next()
	yyrule = 4
	l.Mark()
	goto yyrule4

yystate127:
	c = l.Next()
	yyrule = 5
	l.Mark()
	goto yyrule5

yyrule1: // [ \t\f\v]+
	{
		return ' '
	}
yyrule2: // "//"[^\x80\n]*
	{
		l.comment(false)
		return ' '
	}
yyrule3: // "/*"
	{
		l.commentPos0 = l.First.Pos()
		l.sc = scCOMMENT
		goto yystate0
	}
yyrule4: // {comment-close}
	{
		l.sc = scINITIAL
		l.First = lex.NewChar(l.commentPos0, l.First.Rune)
		l.comment(true)
		return ' '
	}
yyrule5: // {eof}
	{
		l.errPos(l.commentPos0, "unterminated comment")
		l.sc = scINITIAL
		return rune2class(lex.RuneEOF)
	}
yyrule6: // {eof}
	{
		return rune2class(lex.RuneEOF)
	}
yyrule7: // "!="
	{
		return NEQ
	}
yyrule8: // "%:"
	{
		return '#'
	}
yyrule9: // "%="
	{
		return MODASSIGN
	}
yyrule10: // "%>"
	{
		return '}'
	}
yyrule11: // "&&"
	{
		return ANDAND
	}
yyrule12: // "&="
	{
		return ANDASSIGN
	}
yyrule13: // "*="
	{
		return MULASSIGN
	}
yyrule14: // "++"
	{
		return INC
	}
yyrule15: // "+="
	{
		return ADDASSIGN
	}
yyrule16: // "--"
	{
		return DEC
	}
yyrule17: // "-="
	{
		return SUBASSIGN
	}
yyrule18: // "->"
	{
		return ARROW
	}
yyrule19: // "..."
	{
		return DDD
	}
yyrule20: // "/="
	{
		return DIVASSIGN
	}
yyrule21: // ":>"
	{
		return ']'
	}
yyrule22: // "<%"
	{
		return '{'
	}
yyrule23: // "<:"
	{
		return '['
	}
yyrule24: // "<<"
	{
		return LSH
	}
yyrule25: // "<<="
	{
		return LSHASSIGN
	}
yyrule26: // "<="
	{
		return LEQ
	}
yyrule27: // "=="
	{
		return EQ
	}
yyrule28: // ">="
	{
		return GEQ
	}
yyrule29: // ">>"
	{
		return RSH
	}
yyrule30: // ">>="
	{
		return RSHASSIGN
	}
yyrule31: // "^="
	{
		return XORASSIGN
	}
yyrule32: // "|="
	{
		return ORASSIGN
	}
yyrule33: // "||"
	{
		return OROR
	}
yyrule34: // "##"
yyrule35: // "#%:"
yyrule36: // "%:#"
yyrule37: // "%:%:"
	{
		return PPPASTE
	}
yyrule38: // L{character-constant}
	{
		return LONGCHARCONST
	}
yyrule39: // L{string-literal}
	{
		return LONGSTRINGLITERAL
	}
yyrule40: // {character-constant}
	{
		return CHARCONST
	}
yyrule41: // {identifier}
	{
		return IDENTIFIER
	}
yyrule42: // {pp-number}
	{
		return PPNUMBER
	}
yyrule43: // {string-literal}
	{
		return STRINGLITERAL
	}
	panic("unreachable")

	goto yyabort // silence unused label error

yyabort: // no lexem recognized
	if c, ok := l.Abort(); ok {
		return c
	}

	goto yyAction
}
