// Code generated by golex. DO NOT EDIT. // Copyright (c) 2011 CZ.NIC z.s.p.o. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // blame: jnml, labs.nic.cz package main import ( "bufio" "bytes" "fmt" "go/token" "io" "os" "unicode" "github.com/cznic/golex/lex" ) // Allocate Character classes anywhere in [0x80, 0xFF]. const ( classUnicodeLeter = iota + 0x80 classUnicodeDigit classOther ) var sc int const ( INITIAL = iota PHP STRING STRING_VAR STRING_VAR_INDEX STRING_VAR_NAME PROPERTY HEREDOC_END NOWDOC ) type lexer struct { *lex.Lexer } var stateStack = []int{PHP} var heredocLabel []byte func pushState(state int) { sc = state stateStack = append(stateStack, state) fmt.Printf("PUSH STATE; CURRENT STATE: %d\n", state) } func popState() { len := len(stateStack) if len <= 1 { return } sc = stateStack[len-2] stateStack = stateStack[:len-1] fmt.Printf("POP STATE; CURRENT STATE: %d\n", sc) } func begin(state int) { sc = state } func rune2Class(r rune) int { if r >= 0 && r < 0x80 { // Keep ASCII as it is. return int(r) } if unicode.IsLetter(r) { return classUnicodeLeter } if unicode.IsDigit(r) { return classUnicodeDigit } return classOther } func newLexer(src io.Reader, dst io.Writer, fName string) *lexer { file := token.NewFileSet().AddFile(fName, -1, 1<<31-1) lx, err := lex.New(file, bufio.NewReader(src), lex.RuneClass(rune2Class)) if err != nil { panic(err) } return &lexer{lx} } type yySymType struct{} func (l *lexer) unget(r rune) []byte { l.Unget(l.Lookahead()) chars := l.Token() lastChar := chars[len(chars)-1] if lastChar.Rune != r { return l.TokenBytes(nil) } l.Unget(lastChar) buf := l.TokenBytes(nil) buf = buf[:len(buf)-1] return buf } func (l *lexer) ungetN(n int) []byte { l.Unget(l.Lookahead()) chars := l.Token() for i := 1; i <= n; i++ { char := chars[len(chars)-i] l.Unget(char) } buf := l.TokenBytes(nil) buf = buf[:len(buf)-n] return buf } func (l *lexer) Lex() int { // Lex(lval *yySymType) c := l.Enter() yystate0: yyrule := -1 _ = yyrule c = l.Rule0() // ([\$]{NCH})* switch yyt := sc; yyt { default: panic(fmt.Errorf(`invalid start condition %d`, yyt)) case 0: // start condition: INITIAL goto yystart1 case 1: // start condition: PHP goto yystart11 case 2: // start condition: STRING goto yystart472 case 3: // start condition: STRING_VAR goto yystart479 case 4: // start condition: STRING_VAR_INDEX goto yystart489 case 5: // start condition: STRING_VAR_NAME goto yystart501 case 6: // start condition: PROPERTY goto yystart506 case 7: // start condition: HEREDOC_END goto yystart514 case 8: // start condition: NOWDOC goto yystart519 } 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 case 44: goto yyrule44 case 45: goto yyrule45 case 46: goto yyrule46 case 47: goto yyrule47 case 48: goto yyrule48 case 49: goto yyrule49 case 50: goto yyrule50 case 51: goto yyrule51 case 52: goto yyrule52 case 53: goto yyrule53 case 54: goto yyrule54 case 55: goto yyrule55 case 56: goto yyrule56 case 57: goto yyrule57 case 58: goto yyrule58 case 59: goto yyrule59 case 60: goto yyrule60 case 61: goto yyrule61 case 62: goto yyrule62 case 63: goto yyrule63 case 64: goto yyrule64 case 65: goto yyrule65 case 66: goto yyrule66 case 67: goto yyrule67 case 68: goto yyrule68 case 69: goto yyrule69 case 70: goto yyrule70 case 71: goto yyrule71 case 72: goto yyrule72 case 73: goto yyrule73 case 74: goto yyrule74 case 75: goto yyrule75 case 76: goto yyrule76 case 77: goto yyrule77 case 78: goto yyrule78 case 79: goto yyrule79 case 80: goto yyrule80 case 81: goto yyrule81 case 82: goto yyrule82 case 83: goto yyrule83 case 84: goto yyrule84 case 85: goto yyrule85 case 86: goto yyrule86 case 87: goto yyrule87 case 88: goto yyrule88 case 89: goto yyrule89 case 90: goto yyrule90 case 91: goto yyrule91 case 92: goto yyrule92 case 93: goto yyrule93 case 94: goto yyrule94 case 95: goto yyrule95 case 96: goto yyrule96 case 97: goto yyrule97 case 98: goto yyrule98 case 99: goto yyrule99 case 100: goto yyrule100 case 101: goto yyrule101 case 102: goto yyrule102 case 103: goto yyrule103 case 104: goto yyrule104 case 105: goto yyrule105 case 106: goto yyrule106 case 107: goto yyrule107 case 108: goto yyrule108 case 109: goto yyrule109 case 110: goto yyrule110 case 111: goto yyrule111 case 112: goto yyrule112 case 113: goto yyrule113 case 114: goto yyrule114 case 115: goto yyrule115 case 116: goto yyrule116 case 117: goto yyrule117 case 118: goto yyrule118 case 119: goto yyrule119 case 120: goto yyrule120 case 121: goto yyrule121 case 122: goto yyrule122 case 123: goto yyrule123 case 124: goto yyrule124 case 125: goto yyrule125 case 126: goto yyrule126 case 127: goto yyrule127 case 128: goto yyrule128 case 129: goto yyrule129 case 130: goto yyrule130 case 131: goto yyrule131 case 132: goto yyrule132 case 133: goto yyrule133 case 134: goto yyrule134 case 135: goto yyrule135 case 136: goto yyrule136 case 137: goto yyrule137 case 138: goto yyrule138 case 139: goto yyrule139 case 140: goto yyrule140 case 141: goto yyrule141 case 142: goto yyrule142 case 143: goto yyrule143 } goto yystate1 // silence unused label error yystate1: c = l.Next() yystart1: switch { default: goto yyabort case c == '<': goto yystate5 case c == '\n': goto yystate4 case c == '\t' || c == '\r' || c == ' ': goto yystate3 case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= ';' || c >= '=' && c <= 'ÿ': goto yystate2 } yystate2: c = l.Next() yyrule = 2 l.Mark() goto yyrule2 yystate3: c = l.Next() yyrule = 1 l.Mark() switch { default: goto yyrule1 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate4 } yystate4: c = l.Next() yyrule = 1 l.Mark() switch { default: goto yyrule1 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate4 } yystate5: c = l.Next() yyrule = 2 l.Mark() switch { default: goto yyrule2 case c == '?': goto yystate6 } yystate6: c = l.Next() yyrule = 3 l.Mark() switch { default: goto yyrule3 case c == '=': goto yystate7 case c == 'p': goto yystate8 } yystate7: c = l.Next() yyrule = 4 l.Mark() goto yyrule4 yystate8: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate9 } yystate9: c = l.Next() switch { default: goto yyabort case c == 'p': goto yystate10 } yystate10: c = l.Next() yyrule = 3 l.Mark() goto yyrule3 goto yystate11 // silence unused label error yystate11: c = l.Next() yystart11: switch { default: goto yyabort case c == '!': goto yystate15 case c == '"': goto yystate18 case c == '#': goto yystate19 case c == '$': goto yystate22 case c == '%': goto yystate24 case c == '&': goto yystate26 case c == '(': goto yystate45 case c == ')' || c == ',' || c == ';' || c == '@' || c == '[' || c == ']' || c == '~': goto yystate103 case c == '*': goto yystate104 case c == '+': goto yystate108 case c == '-': goto yystate111 case c == '.': goto yystate115 case c == '/': goto yystate119 case c == ':': goto yystate122 case c == '<': goto yystate124 case c == '=': goto yystate139 case c == '>': goto yystate143 case c == '?': goto yystate147 case c == '\'': goto yystate29 case c == '\\': goto yystate149 case c == '\n': goto yystate14 case c == '\t' || c == '\r' || c == ' ': goto yystate13 case c == '^': goto yystate150 case c == '_': goto yystate152 case c == 'a': goto yystate213 case c == 'b': goto yystate228 case c == 'c': goto yystate236 case c == 'd': goto yystate273 case c == 'e': goto yystate288 case c == 'f': goto yystate330 case c == 'g': goto yystate343 case c == 'i': goto yystate352 case c == 'n': goto yystate384 case c == 'o': goto yystate395 case c == 'p': goto yystate397 case c == 'r': goto yystate416 case c == 's': goto yystate422 case c == 't': goto yystate433 case c == 'u': goto yystate443 case c == 'v': goto yystate446 case c == 'w': goto yystate449 case c == 'x': goto yystate454 case c == 'y': goto yystate457 case c == '|': goto yystate468 case c == '}': goto yystate471 case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '`' || c == 'h' || c >= 'j' && c <= 'm' || c == 'q' || c == 'z' || c == '{' || c >= '\u007f' && c <= 'ÿ': goto yystate12 } yystate12: c = l.Next() yyrule = 143 l.Mark() goto yyrule143 yystate13: c = l.Next() yyrule = 5 l.Mark() switch { default: goto yyrule5 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate14 } yystate14: c = l.Next() yyrule = 5 l.Mark() switch { default: goto yyrule5 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate14 } yystate15: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '=': goto yystate16 } yystate16: c = l.Next() yyrule = 97 l.Mark() switch { default: goto yyrule97 case c == '=': goto yystate17 } yystate17: c = l.Next() yyrule = 98 l.Mark() goto yyrule98 yystate18: c = l.Next() yyrule = 123 l.Mark() goto yyrule123 yystate19: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == '\n': goto yystate20 case c == '\r': goto yystate21 } yystate20: c = l.Next() yyrule = 108 l.Mark() goto yyrule108 yystate21: c = l.Next() yyrule = 108 l.Mark() switch { default: goto yyrule108 case c == '\n': goto yystate20 } yystate22: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate23 } yystate23: c = l.Next() yyrule = 112 l.Mark() switch { default: goto yyrule112 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate23 } yystate24: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '=': goto yystate25 } yystate25: c = l.Next() yyrule = 92 l.Mark() goto yyrule92 yystate26: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '&': goto yystate27 case c == '=': goto yystate28 } yystate27: c = l.Next() yyrule = 81 l.Mark() goto yyrule81 yystate28: c = l.Next() yyrule = 83 l.Mark() goto yyrule83 yystate29: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == '\'': goto yystate31 case c == '\\': goto yystate32 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate30 } yystate30: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate31 case c == '\\': goto yystate32 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate30 } yystate31: c = l.Next() yyrule = 109 l.Mark() goto yyrule109 yystate32: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate39 case c == '\\': goto yystate35 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate33 } yystate33: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate34 case c == '\\': goto yystate35 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate33 } yystate34: c = l.Next() yyrule = 109 l.Mark() goto yyrule109 yystate35: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate36 case c == '\\': goto yystate35 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate33 } yystate36: c = l.Next() yyrule = 109 l.Mark() switch { default: goto yyrule109 case c == '\'': goto yystate34 case c == '\\': goto yystate37 } yystate37: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate38 } yystate38: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate34 case c == '\\': goto yystate37 } yystate39: c = l.Next() yyrule = 109 l.Mark() switch { default: goto yyrule109 case c == '\'': goto yystate31 case c == '\\': goto yystate43 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate40 } yystate40: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate41 case c == '\\': goto yystate42 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate40 } yystate41: c = l.Next() yyrule = 118 l.Mark() goto yyrule118 yystate42: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate40 } yystate43: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate44 } yystate44: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate31 case c == '\\': goto yystate43 case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ': goto yystate40 } yystate45: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '\t' || c == ' ': goto yystate46 case c == 'a': goto yystate47 case c == 'b': goto yystate53 case c == 'd': goto yystate61 case c == 'f': goto yystate68 case c == 'i': goto yystate72 case c == 'o': goto yystate80 case c == 'r': goto yystate87 case c == 's': goto yystate90 case c == 'u': goto yystate97 } yystate46: c = l.Next() switch { default: goto yyabort case c == '\t' || c == ' ': goto yystate46 case c == 'a': goto yystate47 case c == 'b': goto yystate53 case c == 'd': goto yystate61 case c == 'f': goto yystate68 case c == 'i': goto yystate72 case c == 'o': goto yystate80 case c == 'r': goto yystate87 case c == 's': goto yystate90 case c == 'u': goto yystate97 } yystate47: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate48 } yystate48: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate49 } yystate49: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate50 } yystate50: c = l.Next() switch { default: goto yyabort case c == 'y': goto yystate51 } yystate51: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate52 case c == '\t' || c == ' ': goto yystate51 } yystate52: c = l.Next() yyrule = 67 l.Mark() goto yyrule67 yystate53: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate54 } yystate54: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate55 } yystate55: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate56 } yystate56: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate58 case c == '\t' || c == ' ': goto yystate57 case c == 'e': goto yystate59 } yystate57: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate58 case c == '\t' || c == ' ': goto yystate57 } yystate58: c = l.Next() yyrule = 68 l.Mark() goto yyrule68 yystate59: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate60 } yystate60: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate57 } yystate61: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate62 } yystate62: c = l.Next() switch { default: goto yyabort case c == 'u': goto yystate63 } yystate63: c = l.Next() switch { default: goto yyabort case c == 'b': goto yystate64 } yystate64: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate65 } yystate65: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate66 } yystate66: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate67 case c == '\t' || c == ' ': goto yystate66 } yystate67: c = l.Next() yyrule = 69 l.Mark() goto yyrule69 yystate68: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate69 } yystate69: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate70 } yystate70: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate71 } yystate71: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate66 } yystate72: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate73 } yystate73: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate74 } yystate74: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate76 case c == '\t' || c == ' ': goto yystate75 case c == 'e': goto yystate77 } yystate75: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate76 case c == '\t' || c == ' ': goto yystate75 } yystate76: c = l.Next() yyrule = 70 l.Mark() goto yyrule70 yystate77: c = l.Next() switch { default: goto yyabort case c == 'g': goto yystate78 } yystate78: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate79 } yystate79: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate75 } yystate80: c = l.Next() switch { default: goto yyabort case c == 'b': goto yystate81 } yystate81: c = l.Next() switch { default: goto yyabort case c == 'j': goto yystate82 } yystate82: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate83 } yystate83: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate84 } yystate84: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate85 } yystate85: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate86 case c == '\t' || c == ' ': goto yystate85 } yystate86: c = l.Next() yyrule = 71 l.Mark() goto yyrule71 yystate87: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate88 } yystate88: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate89 } yystate89: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate66 } yystate90: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate91 } yystate91: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate92 } yystate92: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate93 } yystate93: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate94 } yystate94: c = l.Next() switch { default: goto yyabort case c == 'g': goto yystate95 } yystate95: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate96 case c == '\t' || c == ' ': goto yystate95 } yystate96: c = l.Next() yyrule = 72 l.Mark() goto yyrule72 yystate97: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate98 } yystate98: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate99 } yystate99: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate100 } yystate100: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate101 } yystate101: c = l.Next() switch { default: goto yyabort case c == ')': goto yystate102 case c == '\t' || c == ' ': goto yystate101 } yystate102: c = l.Next() yyrule = 73 l.Mark() goto yyrule73 yystate103: c = l.Next() yyrule = 110 l.Mark() goto yyrule110 yystate104: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '*': goto yystate105 case c == '=': goto yystate107 } yystate105: c = l.Next() yyrule = 105 l.Mark() switch { default: goto yyrule105 case c == '=': goto yystate106 } yystate106: c = l.Next() yyrule = 87 l.Mark() goto yyrule87 yystate107: c = l.Next() yyrule = 86 l.Mark() goto yyrule86 yystate108: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '+': goto yystate109 case c == '=': goto yystate110 } yystate109: c = l.Next() yyrule = 94 l.Mark() goto yyrule94 yystate110: c = l.Next() yyrule = 89 l.Mark() goto yyrule89 yystate111: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '-': goto yystate112 case c == '=': goto yystate113 case c == '>': goto yystate114 } yystate112: c = l.Next() yyrule = 93 l.Mark() goto yyrule93 yystate113: c = l.Next() yyrule = 90 l.Mark() goto yyrule90 yystate114: c = l.Next() yyrule = 113 l.Mark() goto yyrule113 yystate115: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '.': goto yystate116 case c == '=': goto yystate118 } yystate116: c = l.Next() switch { default: goto yyabort case c == '.': goto yystate117 } yystate117: c = l.Next() yyrule = 79 l.Mark() goto yyrule79 yystate118: c = l.Next() yyrule = 85 l.Mark() goto yyrule85 yystate119: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '/': goto yystate120 case c == '=': goto yystate121 } yystate120: c = l.Next() switch { default: goto yyabort case c == '\n': goto yystate20 case c == '\r': goto yystate21 } yystate121: c = l.Next() yyrule = 88 l.Mark() goto yyrule88 yystate122: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == ':': goto yystate123 } yystate123: c = l.Next() yyrule = 80 l.Mark() goto yyrule80 yystate124: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '<': goto yystate125 case c == '=': goto yystate136 case c == '>': goto yystate138 } yystate125: c = l.Next() yyrule = 106 l.Mark() switch { default: goto yyrule106 case c == '<': goto yystate126 case c == '=': goto yystate135 } yystate126: c = l.Next() switch { default: goto yyabort case c == '"': goto yystate127 case c == '\'': goto yystate132 case c == '\t' || c == ' ': goto yystate126 case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate134 } yystate127: c = l.Next() switch { default: goto yyabort case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate128 } yystate128: c = l.Next() switch { default: goto yyabort case c == '"': goto yystate129 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate128 } yystate129: c = l.Next() switch { default: goto yyabort case c == '\n': goto yystate130 case c == '\r': goto yystate131 } yystate130: c = l.Next() yyrule = 119 l.Mark() goto yyrule119 yystate131: c = l.Next() yyrule = 119 l.Mark() switch { default: goto yyrule119 case c == '\n': goto yystate130 } yystate132: c = l.Next() switch { default: goto yyabort case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate133 } yystate133: c = l.Next() switch { default: goto yyabort case c == '\'': goto yystate129 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate133 } yystate134: c = l.Next() switch { default: goto yyabort case c == '\n': goto yystate130 case c == '\r': goto yystate131 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate134 } yystate135: c = l.Next() yyrule = 101 l.Mark() goto yyrule101 yystate136: c = l.Next() yyrule = 104 l.Mark() switch { default: goto yyrule104 case c == '>': goto yystate137 } yystate137: c = l.Next() yyrule = 96 l.Mark() goto yyrule96 yystate138: c = l.Next() yyrule = 97 l.Mark() goto yyrule97 yystate139: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '=': goto yystate140 case c == '>': goto yystate142 } yystate140: c = l.Next() yyrule = 99 l.Mark() switch { default: goto yyrule99 case c == '=': goto yystate141 } yystate141: c = l.Next() yyrule = 100 l.Mark() goto yyrule100 yystate142: c = l.Next() yyrule = 95 l.Mark() goto yyrule95 yystate143: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '=': goto yystate144 case c == '>': goto yystate145 } yystate144: c = l.Next() yyrule = 103 l.Mark() goto yyrule103 yystate145: c = l.Next() yyrule = 107 l.Mark() switch { default: goto yyrule107 case c == '=': goto yystate146 } yystate146: c = l.Next() yyrule = 102 l.Mark() goto yyrule102 yystate147: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '>': goto yystate148 } yystate148: c = l.Next() yyrule = 6 l.Mark() goto yyrule6 yystate149: c = l.Next() yyrule = 78 l.Mark() goto yyrule78 yystate150: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '=': goto yystate151 } yystate151: c = l.Next() yyrule = 91 l.Mark() goto yyrule91 yystate152: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == '_': goto yystate153 } yystate153: c = l.Next() switch { default: goto yyabort case c == 'C': goto yystate154 case c == 'D': goto yystate161 case c == 'F': goto yystate166 case c == 'L': goto yystate181 case c == 'M': goto yystate187 case c == 'N': goto yystate195 case c == 'T': goto yystate206 } yystate154: c = l.Next() switch { default: goto yyabort case c == 'L': goto yystate155 } yystate155: c = l.Next() switch { default: goto yyabort case c == 'A': goto yystate156 } yystate156: c = l.Next() switch { default: goto yyabort case c == 'S': goto yystate157 } yystate157: c = l.Next() switch { default: goto yyabort case c == 'S': goto yystate158 } yystate158: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate159 } yystate159: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate160 } yystate160: c = l.Next() yyrule = 59 l.Mark() goto yyrule59 yystate161: c = l.Next() switch { default: goto yyabort case c == 'I': goto yystate162 } yystate162: c = l.Next() switch { default: goto yyabort case c == 'R': goto yystate163 } yystate163: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate164 } yystate164: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate165 } yystate165: c = l.Next() yyrule = 60 l.Mark() goto yyrule60 yystate166: c = l.Next() switch { default: goto yyabort case c == 'I': goto yystate167 case c == 'U': goto yystate172 } yystate167: c = l.Next() switch { default: goto yyabort case c == 'L': goto yystate168 } yystate168: c = l.Next() switch { default: goto yyabort case c == 'E': goto yystate169 } yystate169: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate170 } yystate170: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate171 } yystate171: c = l.Next() yyrule = 61 l.Mark() goto yyrule61 yystate172: c = l.Next() switch { default: goto yyabort case c == 'N': goto yystate173 } yystate173: c = l.Next() switch { default: goto yyabort case c == 'C': goto yystate174 } yystate174: c = l.Next() switch { default: goto yyabort case c == 'T': goto yystate175 } yystate175: c = l.Next() switch { default: goto yyabort case c == 'I': goto yystate176 } yystate176: c = l.Next() switch { default: goto yyabort case c == 'O': goto yystate177 } yystate177: c = l.Next() switch { default: goto yyabort case c == 'N': goto yystate178 } yystate178: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate179 } yystate179: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate180 } yystate180: c = l.Next() yyrule = 62 l.Mark() goto yyrule62 yystate181: c = l.Next() switch { default: goto yyabort case c == 'I': goto yystate182 } yystate182: c = l.Next() switch { default: goto yyabort case c == 'N': goto yystate183 } yystate183: c = l.Next() switch { default: goto yyabort case c == 'E': goto yystate184 } yystate184: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate185 } yystate185: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate186 } yystate186: c = l.Next() yyrule = 63 l.Mark() goto yyrule63 yystate187: c = l.Next() switch { default: goto yyabort case c == 'E': goto yystate188 } yystate188: c = l.Next() switch { default: goto yyabort case c == 'T': goto yystate189 } yystate189: c = l.Next() switch { default: goto yyabort case c == 'H': goto yystate190 } yystate190: c = l.Next() switch { default: goto yyabort case c == 'O': goto yystate191 } yystate191: c = l.Next() switch { default: goto yyabort case c == 'D': goto yystate192 } yystate192: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate193 } yystate193: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate194 } yystate194: c = l.Next() yyrule = 65 l.Mark() goto yyrule65 yystate195: c = l.Next() switch { default: goto yyabort case c == 'A': goto yystate196 } yystate196: c = l.Next() switch { default: goto yyabort case c == 'M': goto yystate197 } yystate197: c = l.Next() switch { default: goto yyabort case c == 'E': goto yystate198 } yystate198: c = l.Next() switch { default: goto yyabort case c == 'S': goto yystate199 } yystate199: c = l.Next() switch { default: goto yyabort case c == 'P': goto yystate200 } yystate200: c = l.Next() switch { default: goto yyabort case c == 'A': goto yystate201 } yystate201: c = l.Next() switch { default: goto yyabort case c == 'C': goto yystate202 } yystate202: c = l.Next() switch { default: goto yyabort case c == 'E': goto yystate203 } yystate203: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate204 } yystate204: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate205 } yystate205: c = l.Next() yyrule = 64 l.Mark() goto yyrule64 yystate206: c = l.Next() switch { default: goto yyabort case c == 'R': goto yystate207 } yystate207: c = l.Next() switch { default: goto yyabort case c == 'A': goto yystate208 } yystate208: c = l.Next() switch { default: goto yyabort case c == 'I': goto yystate209 } yystate209: c = l.Next() switch { default: goto yyabort case c == 'T': goto yystate210 } yystate210: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate211 } yystate211: c = l.Next() switch { default: goto yyabort case c == '_': goto yystate212 } yystate212: c = l.Next() yyrule = 66 l.Mark() goto yyrule66 yystate213: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'b': goto yystate214 case c == 'n': goto yystate221 case c == 'r': goto yystate223 case c == 's': goto yystate227 } yystate214: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate215 } yystate215: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate216 } yystate216: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate217 } yystate217: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate218 } yystate218: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate219 } yystate219: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate220 } yystate220: c = l.Next() yyrule = 7 l.Mark() goto yyrule7 yystate221: c = l.Next() switch { default: goto yyabort case c == 'd': goto yystate222 } yystate222: c = l.Next() yyrule = 75 l.Mark() goto yyrule75 yystate223: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate224 } yystate224: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate225 } yystate225: c = l.Next() switch { default: goto yyabort case c == 'y': goto yystate226 } yystate226: c = l.Next() yyrule = 8 l.Mark() goto yyrule8 yystate227: c = l.Next() yyrule = 9 l.Mark() goto yyrule9 yystate228: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == '"': goto yystate229 case c == '<': goto yystate230 case c == 'r': goto yystate232 } yystate229: c = l.Next() yyrule = 123 l.Mark() goto yyrule123 yystate230: c = l.Next() switch { default: goto yyabort case c == '<': goto yystate231 } yystate231: c = l.Next() switch { default: goto yyabort case c == '<': goto yystate126 } yystate232: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate233 } yystate233: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate234 } yystate234: c = l.Next() switch { default: goto yyabort case c == 'k': goto yystate235 } yystate235: c = l.Next() yyrule = 10 l.Mark() goto yyrule10 yystate236: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'a': goto yystate237 case c == 'f': goto yystate249 case c == 'l': goto yystate257 case c == 'o': goto yystate264 } yystate237: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate238 case c == 's': goto yystate244 case c == 't': goto yystate246 } yystate238: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate239 } yystate239: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate240 } yystate240: c = l.Next() switch { default: goto yyabort case c == 'b': goto yystate241 } yystate241: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate242 } yystate242: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate243 } yystate243: c = l.Next() yyrule = 11 l.Mark() goto yyrule11 yystate244: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate245 } yystate245: c = l.Next() yyrule = 12 l.Mark() goto yyrule12 yystate246: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate247 } yystate247: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate248 } yystate248: c = l.Next() yyrule = 13 l.Mark() goto yyrule13 yystate249: c = l.Next() switch { default: goto yyabort case c == 'u': goto yystate250 } yystate250: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate251 } yystate251: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate252 } yystate252: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate253 } yystate253: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate254 } yystate254: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate255 } yystate255: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate256 } yystate256: c = l.Next() yyrule = 36 l.Mark() goto yyrule36 yystate257: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate258 case c == 'o': goto yystate261 } yystate258: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate259 } yystate259: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate260 } yystate260: c = l.Next() yyrule = 14 l.Mark() goto yyrule14 yystate261: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate262 } yystate262: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate263 } yystate263: c = l.Next() yyrule = 15 l.Mark() goto yyrule15 yystate264: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate265 } yystate265: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate266 case c == 't': goto yystate268 } yystate266: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate267 } yystate267: c = l.Next() yyrule = 16 l.Mark() goto yyrule16 yystate268: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate269 } yystate269: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate270 } yystate270: c = l.Next() switch { default: goto yyabort case c == 'u': goto yystate271 } yystate271: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate272 } yystate272: c = l.Next() yyrule = 17 l.Mark() goto yyrule17 yystate273: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'e': goto yystate274 case c == 'i': goto yystate285 case c == 'o': goto yystate287 } yystate274: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate275 case c == 'f': goto yystate280 } yystate275: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate276 } yystate276: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate277 } yystate277: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate278 } yystate278: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate279 } yystate279: c = l.Next() yyrule = 18 l.Mark() goto yyrule18 yystate280: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate281 } yystate281: c = l.Next() switch { default: goto yyabort case c == 'u': goto yystate282 } yystate282: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate283 } yystate283: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate284 } yystate284: c = l.Next() yyrule = 19 l.Mark() goto yyrule19 yystate285: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate286 } yystate286: c = l.Next() yyrule = 30 l.Mark() goto yyrule30 yystate287: c = l.Next() yyrule = 20 l.Mark() goto yyrule20 yystate288: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'c': goto yystate289 case c == 'l': goto yystate292 case c == 'm': goto yystate297 case c == 'n': goto yystate301 case c == 'x': goto yystate323 } yystate289: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate290 } yystate290: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate291 } yystate291: c = l.Next() yyrule = 21 l.Mark() goto yyrule21 yystate292: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate293 } yystate293: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate294 } yystate294: c = l.Next() yyrule = 22 l.Mark() switch { default: goto yyrule22 case c == 'i': goto yystate295 } yystate295: c = l.Next() switch { default: goto yyabort case c == 'f': goto yystate296 } yystate296: c = l.Next() yyrule = 23 l.Mark() goto yyrule23 yystate297: c = l.Next() switch { default: goto yyabort case c == 'p': goto yystate298 } yystate298: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate299 } yystate299: c = l.Next() switch { default: goto yyabort case c == 'y': goto yystate300 } yystate300: c = l.Next() yyrule = 24 l.Mark() goto yyrule24 yystate301: c = l.Next() switch { default: goto yyabort case c == 'd': goto yystate302 } yystate302: c = l.Next() switch { default: goto yyabort case c == 'f': goto yystate303 case c == 'i': goto yystate310 case c == 's': goto yystate312 case c == 'w': goto yystate318 } yystate303: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate304 } yystate304: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate305 } yystate305: c = l.Next() yyrule = 25 l.Mark() switch { default: goto yyrule25 case c == 'e': goto yystate306 } yystate306: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate307 } yystate307: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate308 } yystate308: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate309 } yystate309: c = l.Next() yyrule = 26 l.Mark() goto yyrule26 yystate310: c = l.Next() switch { default: goto yyabort case c == 'f': goto yystate311 } yystate311: c = l.Next() yyrule = 27 l.Mark() goto yyrule27 yystate312: c = l.Next() switch { default: goto yyabort case c == 'w': goto yystate313 } yystate313: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate314 } yystate314: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate315 } yystate315: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate316 } yystate316: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate317 } yystate317: c = l.Next() yyrule = 28 l.Mark() goto yyrule28 yystate318: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate319 } yystate319: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate320 } yystate320: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate321 } yystate321: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate322 } yystate322: c = l.Next() yyrule = 29 l.Mark() goto yyrule29 yystate323: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate324 case c == 't': goto yystate325 } yystate324: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate286 } yystate325: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate326 } yystate326: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate327 } yystate327: c = l.Next() switch { default: goto yyabort case c == 'd': goto yystate328 } yystate328: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate329 } yystate329: c = l.Next() yyrule = 31 l.Mark() goto yyrule31 yystate330: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'i': goto yystate331 case c == 'o': goto yystate337 case c == 'u': goto yystate250 } yystate331: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate332 } yystate332: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate333 } yystate333: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate334 } yystate334: c = l.Next() yyrule = 32 l.Mark() switch { default: goto yyrule32 case c == 'l': goto yystate335 } yystate335: c = l.Next() switch { default: goto yyabort case c == 'y': goto yystate336 } yystate336: c = l.Next() yyrule = 33 l.Mark() goto yyrule33 yystate337: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate338 } yystate338: c = l.Next() yyrule = 34 l.Mark() switch { default: goto yyrule34 case c == 'e': goto yystate339 } yystate339: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate340 } yystate340: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate341 } yystate341: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate342 } yystate342: c = l.Next() yyrule = 35 l.Mark() goto yyrule35 yystate343: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'l': goto yystate344 case c == 'o': goto yystate349 } yystate344: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate345 } yystate345: c = l.Next() switch { default: goto yyabort case c == 'b': goto yystate346 } yystate346: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate347 } yystate347: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate348 } yystate348: c = l.Next() yyrule = 37 l.Mark() goto yyrule37 yystate349: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate350 } yystate350: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate351 } yystate351: c = l.Next() yyrule = 38 l.Mark() goto yyrule38 yystate352: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'f': goto yystate353 case c == 'm': goto yystate354 case c == 'n': goto yystate363 } yystate353: c = l.Next() yyrule = 39 l.Mark() goto yyrule39 yystate354: c = l.Next() switch { default: goto yyabort case c == 'p': goto yystate355 } yystate355: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate356 } yystate356: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate357 } yystate357: c = l.Next() switch { default: goto yyabort case c == 'm': goto yystate358 } yystate358: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate359 } yystate359: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate360 } yystate360: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate361 } yystate361: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate362 } yystate362: c = l.Next() yyrule = 40 l.Mark() goto yyrule40 yystate363: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate364 case c == 't': goto yystate377 } yystate364: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate365 } yystate365: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate366 case c == 'e': goto yystate372 } yystate366: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate367 } yystate367: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate368 } yystate368: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate369 } yystate369: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate370 } yystate370: c = l.Next() switch { default: goto yyabort case c == 'f': goto yystate371 } yystate371: c = l.Next() yyrule = 41 l.Mark() goto yyrule41 yystate372: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate373 } yystate373: c = l.Next() switch { default: goto yyabort case c == 'd': goto yystate374 } yystate374: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate375 } yystate375: c = l.Next() switch { default: goto yyabort case c == 'f': goto yystate376 } yystate376: c = l.Next() yyrule = 42 l.Mark() goto yyrule42 yystate377: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate378 } yystate378: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate379 } yystate379: c = l.Next() switch { default: goto yyabort case c == 'f': goto yystate380 } yystate380: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate381 } yystate381: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate382 } yystate382: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate383 } yystate383: c = l.Next() yyrule = 43 l.Mark() goto yyrule43 yystate384: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'a': goto yystate385 case c == 'e': goto yystate393 } yystate385: c = l.Next() switch { default: goto yyabort case c == 'm': goto yystate386 } yystate386: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate387 } yystate387: c = l.Next() switch { default: goto yyabort case c == 's': goto yystate388 } yystate388: c = l.Next() switch { default: goto yyabort case c == 'p': goto yystate389 } yystate389: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate390 } yystate390: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate391 } yystate391: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate392 } yystate392: c = l.Next() yyrule = 44 l.Mark() goto yyrule44 yystate393: c = l.Next() switch { default: goto yyabort case c == 'w': goto yystate394 } yystate394: c = l.Next() yyrule = 74 l.Mark() goto yyrule74 yystate395: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'r': goto yystate396 } yystate396: c = l.Next() yyrule = 76 l.Mark() goto yyrule76 yystate397: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'r': goto yystate398 case c == 'u': goto yystate411 } yystate398: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate399 case c == 'o': goto yystate404 } yystate399: c = l.Next() switch { default: goto yyabort case c == 'v': goto yystate400 } yystate400: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate401 } yystate401: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate402 } yystate402: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate403 } yystate403: c = l.Next() yyrule = 45 l.Mark() goto yyrule45 yystate404: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate405 } yystate405: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate406 } yystate406: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate407 } yystate407: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate408 } yystate408: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate409 } yystate409: c = l.Next() switch { default: goto yyabort case c == 'd': goto yystate410 } yystate410: c = l.Next() yyrule = 47 l.Mark() goto yyrule47 yystate411: c = l.Next() switch { default: goto yyabort case c == 'b': goto yystate412 } yystate412: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate413 } yystate413: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate414 } yystate414: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate415 } yystate415: c = l.Next() yyrule = 46 l.Mark() goto yyrule46 yystate416: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'e': goto yystate417 } yystate417: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate418 } yystate418: c = l.Next() switch { default: goto yyabort case c == 'u': goto yystate419 } yystate419: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate420 } yystate420: c = l.Next() switch { default: goto yyabort case c == 'n': goto yystate421 } yystate421: c = l.Next() yyrule = 48 l.Mark() goto yyrule48 yystate422: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 't': goto yystate423 case c == 'w': goto yystate428 } yystate423: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate424 } yystate424: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate425 } yystate425: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate426 } yystate426: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate427 } yystate427: c = l.Next() yyrule = 49 l.Mark() goto yyrule49 yystate428: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate429 } yystate429: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate430 } yystate430: c = l.Next() switch { default: goto yyabort case c == 'c': goto yystate431 } yystate431: c = l.Next() switch { default: goto yyabort case c == 'h': goto yystate432 } yystate432: c = l.Next() yyrule = 50 l.Mark() goto yyrule50 yystate433: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'h': goto yystate434 case c == 'r': goto yystate438 } yystate434: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate435 } yystate435: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate436 } yystate436: c = l.Next() switch { default: goto yyabort case c == 'w': goto yystate437 } yystate437: c = l.Next() yyrule = 51 l.Mark() goto yyrule51 yystate438: c = l.Next() switch { default: goto yyabort case c == 'a': goto yystate439 case c == 'y': goto yystate442 } yystate439: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate440 } yystate440: c = l.Next() switch { default: goto yyabort case c == 't': goto yystate441 } yystate441: c = l.Next() yyrule = 52 l.Mark() goto yyrule52 yystate442: c = l.Next() yyrule = 53 l.Mark() goto yyrule53 yystate443: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 's': goto yystate444 } yystate444: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate445 } yystate445: c = l.Next() yyrule = 54 l.Mark() goto yyrule54 yystate446: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'a': goto yystate447 } yystate447: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate448 } yystate448: c = l.Next() yyrule = 55 l.Mark() goto yyrule55 yystate449: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'h': goto yystate450 } yystate450: c = l.Next() switch { default: goto yyabort case c == 'i': goto yystate451 } yystate451: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate452 } yystate452: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate453 } yystate453: c = l.Next() yyrule = 56 l.Mark() goto yyrule56 yystate454: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'o': goto yystate455 } yystate455: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate456 } yystate456: c = l.Next() yyrule = 77 l.Mark() goto yyrule77 yystate457: c = l.Next() yyrule = 143 l.Mark() switch { default: goto yyrule143 case c == 'i': goto yystate458 } yystate458: c = l.Next() switch { default: goto yyabort case c == 'e': goto yystate459 } yystate459: c = l.Next() switch { default: goto yyabort case c == 'l': goto yystate460 } yystate460: c = l.Next() switch { default: goto yyabort case c == 'd': goto yystate461 } yystate461: c = l.Next() yyrule = 58 l.Mark() switch { default: goto yyrule58 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate462 } yystate462: c = l.Next() switch { default: goto yyabort case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate462 case c == 'f': goto yystate463 } yystate463: c = l.Next() switch { default: goto yyabort case c == 'r': goto yystate464 } yystate464: c = l.Next() switch { default: goto yyabort case c == 'o': goto yystate465 } yystate465: c = l.Next() switch { default: goto yyabort case c == 'm': goto yystate466 } yystate466: c = l.Next() switch { default: goto yyabort case c >= '\x01' && c <= '/' || c >= ':' && c <= '@' || c >= '[' && c <= '^' || c == '`' || c >= '{' && c <= '\u007f': goto yystate467 } yystate467: c = l.Next() yyrule = 57 l.Mark() goto yyrule57 yystate468: c = l.Next() yyrule = 110 l.Mark() switch { default: goto yyrule110 case c == '=': goto yystate469 case c == '|': goto yystate470 } yystate469: c = l.Next() yyrule = 84 l.Mark() goto yyrule84 yystate470: c = l.Next() yyrule = 82 l.Mark() goto yyrule82 yystate471: c = l.Next() yyrule = 111 l.Mark() goto yyrule111 goto yystate472 // silence unused label error yystate472: c = l.Next() yystart472: switch { default: goto yyabort case c == '"': goto yystate474 case c == '$': goto yystate475 case c == '{': goto yystate477 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '!' || c == '#' || c >= '%' && c <= 'z' || c >= '|' && c <= 'ÿ': goto yystate473 } yystate473: c = l.Next() yyrule = 128 l.Mark() goto yyrule128 yystate474: c = l.Next() yyrule = 124 l.Mark() goto yyrule124 yystate475: c = l.Next() yyrule = 127 l.Mark() switch { default: goto yyrule127 case c == '{': goto yystate476 } yystate476: c = l.Next() yyrule = 126 l.Mark() goto yyrule126 yystate477: c = l.Next() yyrule = 128 l.Mark() switch { default: goto yyrule128 case c == '$': goto yystate478 } yystate478: c = l.Next() yyrule = 125 l.Mark() goto yyrule125 goto yystate479 // silence unused label error yystate479: c = l.Next() yystart479: switch { default: goto yyabort case c == '$': goto yystate481 case c == '-': goto yystate483 case c == '[': goto yystate488 case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate486 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '#' || c >= '%' && c <= ',' || c >= '.' && c <= '@' || c >= '\\' && c <= '^' || c == '`' || c >= '{' && c <= '~': goto yystate480 } yystate480: c = l.Next() yyrule = 133 l.Mark() goto yyrule133 yystate481: c = l.Next() yyrule = 133 l.Mark() switch { default: goto yyrule133 case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate482 } yystate482: c = l.Next() yyrule = 129 l.Mark() switch { default: goto yyrule129 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate482 } yystate483: c = l.Next() yyrule = 133 l.Mark() switch { default: goto yyrule133 case c == '>': goto yystate484 } yystate484: c = l.Next() switch { default: goto yyabort case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate485 } yystate485: c = l.Next() yyrule = 130 l.Mark() switch { default: goto yyrule130 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate485 } yystate486: c = l.Next() yyrule = 131 l.Mark() switch { default: goto yyrule131 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate487 } yystate487: c = l.Next() yyrule = 131 l.Mark() switch { default: goto yyrule131 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate487 } yystate488: c = l.Next() yyrule = 132 l.Mark() goto yyrule132 goto yystate489 // silence unused label error yystate489: c = l.Next() yystart489: switch { default: goto yyabort case c == '!' || c == '%' || c == '&' || c >= '(' && c <= '/' || c >= ':' && c <= '@' || c == '[' || c == '^' || c == '|' || c == '~': goto yystate493 case c == '$': goto yystate494 case c == '\n': goto yystate492 case c == '\t' || c == '\r' || c == ' ' || c == '#' || c == '\'' || c == '\\': goto yystate491 case c == ']': goto yystate500 case c >= '0' && c <= '9': goto yystate496 case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate498 case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c == '"' || c == '`' || c == '{' || c == '}': goto yystate490 } yystate490: c = l.Next() yyrule = 140 l.Mark() goto yyrule140 yystate491: c = l.Next() yyrule = 138 l.Mark() goto yyrule138 yystate492: c = l.Next() yyrule = 138 l.Mark() goto yyrule138 yystate493: c = l.Next() yyrule = 139 l.Mark() goto yyrule139 yystate494: c = l.Next() yyrule = 139 l.Mark() switch { default: goto yyrule139 case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate495 } yystate495: c = l.Next() yyrule = 135 l.Mark() switch { default: goto yyrule135 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate495 } yystate496: c = l.Next() yyrule = 134 l.Mark() switch { default: goto yyrule134 case c >= '0' && c <= '9': goto yystate497 } yystate497: c = l.Next() yyrule = 134 l.Mark() switch { default: goto yyrule134 case c >= '0' && c <= '9': goto yystate497 } yystate498: c = l.Next() yyrule = 136 l.Mark() switch { default: goto yyrule136 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate499 } yystate499: c = l.Next() yyrule = 136 l.Mark() switch { default: goto yyrule136 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate499 } yystate500: c = l.Next() yyrule = 137 l.Mark() goto yyrule137 goto yystate501 // silence unused label error yystate501: c = l.Next() yystart501: switch { default: goto yyabort case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate503 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '@' || c >= '[' && c <= '^' || c == '`' || c >= '{' && c <= '~': goto yystate502 } yystate502: c = l.Next() yyrule = 142 l.Mark() goto yyrule142 yystate503: c = l.Next() yyrule = 142 l.Mark() switch { default: goto yyrule142 case c == '[' || c == '}': goto yystate505 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate504 } yystate504: c = l.Next() switch { default: goto yyabort case c == '[' || c == '}': goto yystate505 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate504 } yystate505: c = l.Next() yyrule = 141 l.Mark() goto yyrule141 goto yystate506 // silence unused label error yystate506: c = l.Next() yystart506: switch { default: goto yyabort case c == '-': goto yystate510 case c == '\n': goto yystate509 case c == '\t' || c == '\r' || c == ' ': goto yystate508 case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate512 case c >= '\x01' && c <= '\b' || c == '\v' || c == '\f' || c >= '\x0e' && c <= '\x1f' || c >= '!' && c <= ',' || c >= '.' && c <= '@' || c >= '[' && c <= '^' || c == '`' || c >= '{' && c <= '~': goto yystate507 } yystate507: c = l.Next() yyrule = 117 l.Mark() goto yyrule117 yystate508: c = l.Next() yyrule = 114 l.Mark() switch { default: goto yyrule114 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate509 } yystate509: c = l.Next() yyrule = 114 l.Mark() switch { default: goto yyrule114 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate509 } yystate510: c = l.Next() yyrule = 117 l.Mark() switch { default: goto yyrule117 case c == '>': goto yystate511 } yystate511: c = l.Next() yyrule = 115 l.Mark() goto yyrule115 yystate512: c = l.Next() yyrule = 116 l.Mark() switch { default: goto yyrule116 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate513 } yystate513: c = l.Next() yyrule = 116 l.Mark() switch { default: goto yyrule116 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate513 } goto yystate514 // silence unused label error yystate514: c = l.Next() yystart514: switch { default: goto yyabort case c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate516 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '@' || c >= '[' && c <= '^' || c == '`' || c >= '{' && c <= '~': goto yystate515 } yystate515: c = l.Next() yyrule = 122 l.Mark() goto yyrule122 yystate516: c = l.Next() yyrule = 122 l.Mark() switch { default: goto yyrule122 case c == ';': goto yystate518 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate517 } yystate517: c = l.Next() switch { default: goto yyabort case c == ';': goto yystate518 case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ': goto yystate517 } yystate518: c = l.Next() yyrule = 121 l.Mark() goto yyrule121 goto yystate519 // silence unused label error yystate519: c = l.Next() yystart519: switch { default: goto yyabort case c >= '\x01' && c <= '\t' || c >= '\v' && c <= 'ÿ': goto yystate520 } yystate520: c = l.Next() yyrule = 120 l.Mark() goto yyrule120 yyrule1: // [ \t\n\r]+ goto yystate0 yyrule2: // . goto yystate0 yyrule3: // \<\?|\<\?php { fmt.Println("T_OPEN_TAG") begin(PHP) goto yystate0 } yyrule4: // \<\?= { fmt.Println("T_OPEN_TAG_WITH_ECHO") begin(PHP) goto yystate0 } yyrule5: // [ \t\n\r]+ { fmt.Println("T_WHITESPACE") goto yystate0 } yyrule6: // \?\> { fmt.Println("T_CLOSE_TAG") begin(INITIAL) goto yystate0 } yyrule7: // abstract { fmt.Println("T_ABSTRACT") goto yystate0 } yyrule8: // array { fmt.Println("T_ARRAY") goto yystate0 } yyrule9: // as { fmt.Println("T_AS") goto yystate0 } yyrule10: // break { fmt.Println("T_BREAK") goto yystate0 } yyrule11: // callable { fmt.Println("T_CALLABLE") goto yystate0 } yyrule12: // case { fmt.Println("T_CASE") goto yystate0 } yyrule13: // catch { fmt.Println("T_CATCH") goto yystate0 } yyrule14: // class { fmt.Println("T_CLASS") goto yystate0 } yyrule15: // clone { fmt.Println("T_CLONE") goto yystate0 } yyrule16: // const { fmt.Println("T_CONST") goto yystate0 } yyrule17: // continue { fmt.Println("T_CONTINUE") goto yystate0 } yyrule18: // declare { fmt.Println("T_DECLARE") goto yystate0 } yyrule19: // default { fmt.Println("T_DEFAULT") goto yystate0 } yyrule20: // do { fmt.Println("T_DO") goto yystate0 } yyrule21: // echo { fmt.Println("T_ECHO") goto yystate0 } yyrule22: // else { fmt.Println("T_ELSE") goto yystate0 } yyrule23: // elseif { fmt.Println("T_ELSEIF") goto yystate0 } yyrule24: // empty { fmt.Println("T_EMPTY") goto yystate0 } yyrule25: // endfor { fmt.Println("T_ENDFOR") goto yystate0 } yyrule26: // endforeach { fmt.Println("T_ENDFOREACH") goto yystate0 } yyrule27: // endif { fmt.Println("T_ENDIF") goto yystate0 } yyrule28: // endswitch { fmt.Println("T_ENDSWITCH") goto yystate0 } yyrule29: // endwhile { fmt.Println("T_ENDWHILE") goto yystate0 } yyrule30: // exit|die { fmt.Println("T_EXIT") goto yystate0 } yyrule31: // extends { fmt.Println("T_EXTENDS") goto yystate0 } yyrule32: // final { fmt.Println("T_FINAL") goto yystate0 } yyrule33: // finally { fmt.Println("T_FINALLY") goto yystate0 } yyrule34: // for { fmt.Println("T_FOR") goto yystate0 } yyrule35: // foreach { fmt.Println("T_FOREACH") goto yystate0 } yyrule36: // function|cfunction { fmt.Println("T_FUNCTION") goto yystate0 } yyrule37: // global { fmt.Println("T_GLOBAL") goto yystate0 } yyrule38: // goto { fmt.Println("T_GOTO") goto yystate0 } yyrule39: // if { fmt.Println("T_IF") goto yystate0 } yyrule40: // implements { fmt.Println("T_IMPLEMENTS") goto yystate0 } yyrule41: // instanceof { fmt.Println("T_INSTANCEOF") goto yystate0 } yyrule42: // insteadof { fmt.Println("T_INSTEADOF") goto yystate0 } yyrule43: // interface { fmt.Println("T_INTERFACE") goto yystate0 } yyrule44: // namespace { fmt.Println("T_NAMESPACE") goto yystate0 } yyrule45: // private { fmt.Println("T_PRIVATE") goto yystate0 } yyrule46: // public { fmt.Println("T_PUBLIC") goto yystate0 } yyrule47: // protected { fmt.Println("T_PROTECTED") goto yystate0 } yyrule48: // return { fmt.Println("T_RETURN") goto yystate0 } yyrule49: // static { fmt.Println("T_STATIC") goto yystate0 } yyrule50: // switch { fmt.Println("T_SWITCH") goto yystate0 } yyrule51: // throw { fmt.Println("T_THROW") goto yystate0 } yyrule52: // trait { fmt.Println("T_TRAIT") goto yystate0 } yyrule53: // try { fmt.Println("T_TRY") goto yystate0 } yyrule54: // use { fmt.Println("T_USE") goto yystate0 } yyrule55: // var { fmt.Println("T_VAR") goto yystate0 } yyrule56: // while { fmt.Println("T_WHILE") goto yystate0 } yyrule57: // yield[ \t\n\r]+from[^a-zA-Z0-9_\x80-\xff] { fmt.Println("T_YIELD_FROM") goto yystate0 } yyrule58: // yield { fmt.Println("T_YIELD") goto yystate0 } yyrule59: // __CLASS__ { fmt.Println("T_CLASS_C") goto yystate0 } yyrule60: // __DIR__ { fmt.Println("T_DIR") goto yystate0 } yyrule61: // __FILE__ { fmt.Println("T_FILE") goto yystate0 } yyrule62: // __FUNCTION__ { fmt.Println("T_FUNC_C") goto yystate0 } yyrule63: // __LINE__ { fmt.Println("T_LINE") goto yystate0 } yyrule64: // __NAMESPACE__ { fmt.Println("T_NS_C") goto yystate0 } yyrule65: // __METHOD__ { fmt.Println("T_METHOD_C") goto yystate0 } yyrule66: // __TRAIT__ { fmt.Println("T_TRAIT_C") goto yystate0 } yyrule67: // \([ \t]*array[ \t]*\) { fmt.Println("T_ARRAY_CAST") goto yystate0 } yyrule68: // \([ \t]*(bool|boolean)[ \t]*\) { fmt.Println("T_BOOL_CAST") goto yystate0 } yyrule69: // \([ \t]*(real|double|float)[ \t]*\) { fmt.Println("T_DOUBLE_CAST") goto yystate0 } yyrule70: // \([ \t]*(int|integer)[ \t]*\) { fmt.Println("T_INT_CAST") goto yystate0 } yyrule71: // \([ \t]*object[ \t]*\) { fmt.Println("T_OBJECT_CAST") goto yystate0 } yyrule72: // \([ \t]*string[ \t]*\) { fmt.Println("T_STRING_CAST") goto yystate0 } yyrule73: // \([ \t]*unset[ \t]*\) { fmt.Println("T_UNSET_CAST") goto yystate0 } yyrule74: // new { fmt.Println("T_NEW") goto yystate0 } yyrule75: // and { fmt.Println("T_LOGICAL_AND") goto yystate0 } yyrule76: // or { fmt.Println("T_LOGICAL_OR") goto yystate0 } yyrule77: // xor { fmt.Println("T_LOGICAL_XOR") goto yystate0 } yyrule78: // \\ { fmt.Println("T_NS_SEPARATOR") goto yystate0 } yyrule79: // \.\.\. { fmt.Println("T_ELLIPSIS") goto yystate0 } yyrule80: // :: { fmt.Println("T_PAAMAYIM_NEKUDOTAYIM") // T_DOUBLE_COLON goto yystate0 } yyrule81: // && { fmt.Println("T_BOOLEAN_AND") goto yystate0 } yyrule82: // \|\| { fmt.Println("T_BOOLEAN_OR") goto yystate0 } yyrule83: // &= { fmt.Println("T_AND_EQUAL") goto yystate0 } yyrule84: // \|= { fmt.Println("T_OR_EQUAL") goto yystate0 } yyrule85: // \.= { fmt.Println("T_CONCAT_EQUAL") goto yystate0 } yyrule86: // \*= { fmt.Println("T_MUL_EQUAL") goto yystate0 } yyrule87: // \*\*= { fmt.Println("T_POW_EQUAL") goto yystate0 } yyrule88: // [/]= { fmt.Println("T_DIV_EQUAL") goto yystate0 } yyrule89: // \+= { fmt.Println("T_PLUS_EQUAL") goto yystate0 } yyrule90: // -= { fmt.Println("T_MINUS_EQUAL") goto yystate0 } yyrule91: // \^= { fmt.Println("T_XOR_EQUAL") goto yystate0 } yyrule92: // %= { fmt.Println("T_MOD_EQUAL") goto yystate0 } yyrule93: // -- { fmt.Println("T_DEC") goto yystate0 } yyrule94: // \+\+ { fmt.Println("T_INC") goto yystate0 } yyrule95: // => { fmt.Println("T_DOUBLE_ARROW") goto yystate0 } yyrule96: // \<=\> { fmt.Println("T_SPACESHIP") goto yystate0 } yyrule97: // \!=|\<\> { fmt.Println("T_IS_NOT_EQUAL") goto yystate0 } yyrule98: // \!== { fmt.Println("T_IS_NOT_IDENTICAL") goto yystate0 } yyrule99: // == { fmt.Println("T_IS_EQUAL") goto yystate0 } yyrule100: // === { fmt.Println("T_IS_IDENTICAL") goto yystate0 } yyrule101: // \<\<= { fmt.Println("T_SL_EQUAL") goto yystate0 } yyrule102: // \>\>= { fmt.Println("T_SR_EQUAL") goto yystate0 } yyrule103: // \>= { fmt.Println("T_IS_GREATER_OR_EQUAL") goto yystate0 } yyrule104: // \<= { fmt.Println("T_IS_SMALLER_OR_EQUAL") goto yystate0 } yyrule105: // \*\* { fmt.Println("T_POW") goto yystate0 } yyrule106: // \<\< { fmt.Println("T_SL") goto yystate0 } yyrule107: // \>\> { fmt.Println("T_SR") goto yystate0 } yyrule108: // (#|[/][/]){NEW_LINE} { fmt.Println("T_COMMENT") // TODO: handle \r\n and allow ?> goto yystate0 } yyrule109: // '[^']*(\\')*' { fmt.Println("T_CONSTANT_ENCAPSED_STRING") goto yystate0 } yyrule110: // {OPERATORS} { fmt.Printf("%s\n", l.TokenBytes(nil)) goto yystate0 } yyrule111: // \} { fmt.Println("}") popState() goto yystate0 } yyrule112: // \${VAR_NAME} { fmt.Printf("T_VARIABLE: %q\n", l.TokenBytes(nil)) goto yystate0 } yyrule113: // -> { fmt.Println("T_OBJECT_OPERATOR") begin(PROPERTY) goto yystate0 } yyrule114: // [ \t\n\r]+ { fmt.Println("T_WHITESPACE") goto yystate0 } yyrule115: // -> { fmt.Println("T_OBJECT_OPERATOR") goto yystate0 } yyrule116: // {VAR_NAME} { fmt.Println("T_STRING") begin(PHP) goto yystate0 } yyrule117: // . { l.ungetN(1) begin(PHP) goto yystate0 } yyrule118: // [\']([^\\\']*([\\][\'])*)*[\'] { fmt.Printf("T_CONSTANT_ENCAPSED_STRING: %s\n", l.TokenBytes(nil)) goto yystate0 } yyrule119: // [b]?\<\<\<[ \t]*({VAR_NAME}|([']{VAR_NAME}['])|(["]{VAR_NAME}["])){NEW_LINE} { tb := l.TokenBytes(nil) binPrefix := 0 if tb[0] == 'b' { binPrefix = 1 } lblFirst := 3 + binPrefix lblLast := len(tb) - 2 if tb[lblLast] == '\r' { lblLast-- } for { if tb[lblFirst] == ' ' || tb[lblFirst] == '\t' { lblFirst++ continue } break } switch tb[lblFirst] { case '\'': lblFirst++ lblLast-- begin(NOWDOC) case '"': lblFirst++ lblLast-- fmt.Println("HEREDOC") //begin(HEREDOC) default: //begin(HEREDOC) } heredocLabel = tb[lblFirst : lblLast+1] ungetCnt := len(heredocLabel) searchLabelAhead := []byte{} for i := 0; i < len(heredocLabel); i++ { if c == -1 { break } searchLabelAhead = append(searchLabelAhead, byte(rune(c))) c = l.Next() } if bytes.Equal(heredocLabel, searchLabelAhead) && ';' == rune(c) { ungetCnt++ c = l.Next() if '\n' == rune(c) || '\r' == rune(c) { begin(HEREDOC_END) } } l.ungetN(ungetCnt) fmt.Printf("T_START_HEREDOC: %q\n", tb) goto yystate0 } yyrule120: // . { searchLabel := []byte{} tb := []byte{} ND_FOR: for { if c == -1 { break } if '\n' == rune(c) || '\r' == rune(c) { if bytes.Equal(append(heredocLabel, ';'), searchLabel) { begin(HEREDOC_END) tb = l.ungetN(len(heredocLabel) + 1) break ND_FOR } searchLabel = []byte{} } else { searchLabel = append(searchLabel, byte(rune(c))) } // fmt.Printf("current: %q\n", rune(c)); // ND_SWITCH:switch c { // case '\r': // c = l.Next() // if rune(c) != '\n' { // l.ungetN(0) // } // fallthrough // case '\n': // c = l.Next() // ungetCnt := len(heredocLabel) // searchLabelAhead := []byte{} // for i := 0; i <= len(heredocLabel); i++ { // if c == -1 { // break ND_FOR; // } // if '\n' == rune(c) || '\r' == rune(c) { // break ND_SWITCH; // } // searchLabelAhead = append(searchLabelAhead, byte(rune(c))) // c = l.Next() // } // fmt.Printf("searchLabelAhead: %q %q\n", searchLabelAhead, heredocLabel); // if bytes.Equal(heredocLabel, searchLabelAhead) && ';' == rune(c) { // ungetCnt++ // c = l.Next() // if c == -1 { // break ND_FOR; // } // if '\n' == rune(c) || '\r' == rune(c) { // begin(HEREDOC_END) // l.ungetN(ungetCnt) // break ND_FOR; // } // } // } c = l.Next() } fmt.Printf("T_ENCAPSED_AND_WHITESPACE: %q\n", tb) goto yystate0 } yyrule121: // {VAR_NAME}\; { fmt.Printf("T_END_HEREDOC: %q\n", l.ungetN(1)) begin(PHP) goto yystate0 } yyrule122: // . { fmt.Printf("ERROR HEREDOC: %q\n", l.ungetN(1)) goto yystate0 } yyrule123: // [b]?[\"] { binPrefix := l.TokenBytes(nil)[0] == 'b' beginString := func() { cnt := 1 if binPrefix { cnt = 2 } l.ungetN(len(l.TokenBytes(nil)) - cnt) tokenBytes := l.TokenBytes(nil)[:cnt] fmt.Println(string(tokenBytes)) // TODO: RETURN TOKEN pushState(STRING) } F: for { if c == -1 { break } switch c { case '"': c = l.Next() fmt.Printf("T_CONSTANT_ENCAPSED_STRING: %s\n", l.TokenBytes(nil)) break F case '$': c = l.Next() if rune(c) == '{' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ' { beginString() break F } l.ungetN(0) case '{': c = l.Next() if rune(c) == '$' { beginString() break F } l.ungetN(0) case '\\': c = l.Next() } c = l.Next() } goto yystate0 } yyrule124: // \" { fmt.Println("\"") popState() goto yystate0 } yyrule125: // \{\$ { fmt.Printf("T_CURLY_OPEN: %q\n", l.ungetN(1)) pushState(PHP) goto yystate0 } yyrule126: // \$\{ { fmt.Printf("T_DOLLAR_OPEN_CURLY_BRACES: %q\n", l.TokenBytes(nil)) pushState(STRING_VAR_NAME) goto yystate0 } yyrule127: // \$ { l.ungetN(1) begin(STRING_VAR) goto yystate0 } yyrule128: // . { F1: for { if c == -1 { break } switch c { case '"': fmt.Printf("T_ENCAPSED_AND_WHITESPACE: %s\n", l.TokenBytes(nil)) break F1 case '$': c = l.Next() if rune(c) == '{' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c >= '\u007f' && c <= 'ÿ' { l.ungetN(1) tb := l.TokenBytes(nil) fmt.Printf("T_ENCAPSED_AND_WHITESPACE: %s\n", tb[:len(tb)-1]) break F1 } l.ungetN(0) case '{': c = l.Next() if rune(c) == '$' { l.ungetN(1) tb := l.TokenBytes(nil) fmt.Printf("T_ENCAPSED_AND_WHITESPACE: %s\n", tb[:len(tb)-1]) break F1 } l.ungetN(0) case '\\': c = l.Next() } c = l.Next() } goto yystate0 } yyrule129: // \${VAR_NAME} { fmt.Printf("T_VARIABLE: %q\n", l.TokenBytes(nil)) goto yystate0 } yyrule130: // ->{VAR_NAME} { fmt.Printf("T_OBJECT_OPERATOR: %q\n", l.ungetN(len(l.TokenBytes(nil))-2)) goto yystate0 } yyrule131: // {VAR_NAME} { fmt.Printf("T_STRING: %q\n", l.TokenBytes(nil)) begin(STRING) goto yystate0 } yyrule132: // \[ { fmt.Println("[") begin(STRING_VAR_INDEX) goto yystate0 } yyrule133: // . { l.ungetN(1) begin(STRING) goto yystate0 } yyrule134: // {LNUM} { fmt.Printf("T_NUM_STRING: %q\n", l.TokenBytes(nil)) goto yystate0 } yyrule135: // \${VAR_NAME} { fmt.Printf("T_VARIABLE: %q\n", l.TokenBytes(nil)) goto yystate0 } yyrule136: // {VAR_NAME} { fmt.Printf("T_STRING: %q\n", l.TokenBytes(nil)) goto yystate0 } yyrule137: // \] { fmt.Println("\"]\"") begin(STRING) goto yystate0 } yyrule138: // [ \n\r\t\\'#] { fmt.Printf("T_ENCAPSED_AND_WHITESPACE: %q\n", l.ungetN(1)) begin(STRING) goto yystate0 } yyrule139: // {OPERATORS} { fmt.Printf("%q\n", l.TokenBytes(nil)) goto yystate0 } yyrule140: // . { fmt.Printf("%q\n", l.TokenBytes(nil)) goto yystate0 } yyrule141: // {VAR_NAME}[\[\}] { fmt.Printf("T_STRING_VARNAME: %q\n", l.ungetN(1)) popState() pushState(PHP) goto yystate0 } yyrule142: // . { l.ungetN(1) popState() pushState(PHP) goto yystate0 } yyrule143: // . { fmt.Printf("other: %q\n", l.TokenBytes(nil)) goto yystate0 } panic("unreachable") goto yyabort // silence unused label error yyabort: // no lexem recognized if c, ok := l.Abort(); ok { return int(c) } goto yyAction } func main() { l := newLexer(os.Stdin, os.Stdout, "file.name") l.Lex() }