/* Generated by re2swift */
#sourceLocation(file: "swift/reuse/usedir.re", line: 1)
// re2swift $INPUT -o $OUTPUT

// This example shows how to combine reusable re2c blocks: two blocks
// ('colors' and 'fish') are merged into one. The 'salmon' rule occurs
// in both blocks; the 'fish' block takes priority because it is used
// earlier. Default rule * occurs in all three blocks; the local (not
// inherited) definition takes priority.

#sourceLocation(file: "swift/reuse/usedir.re", line: 12)


#sourceLocation(file: "swift/reuse/usedir.re", line: 17)


func lex(_ yyinput: UnsafePointer<UInt8>) -> What {
  var yycursor = 0, yymarker = 0
  
#sourceLocation(file: "swift/reuse/usedir.swift", line: 21)
  var yych: UInt8 = 0
  var yystate: UInt = 0
  yyl: while true {
    switch yystate {
      case 0:
        yych = yyinput[yycursor]
        yycursor += 1
        switch yych {
          case 0x65:
            yystate = 3
            continue yyl
          case 0x68:
            yystate = 4
            continue yyl
          case 0x6D:
            yystate = 5
            continue yyl
          case 0x72:
            yystate = 6
            continue yyl
          case 0x73:
            yystate = 7
            continue yyl
          default:
            yystate = 1
            continue yyl
        }
      case 1:
        yystate = 2
        continue yyl
      case 2:
#sourceLocation(file: "swift/reuse/usedir.re", line: 26)
        return .dunno
#sourceLocation(file: "swift/reuse/usedir.swift", line: 55)
      case 3:
        yymarker = yycursor
        yych = yyinput[yycursor]
        switch yych {
          case 0x65:
            yycursor += 1
            yystate = 8
            continue yyl
          default:
            yystate = 2
            continue yyl
        }
      case 4:
        yymarker = yycursor
        yych = yyinput[yycursor]
        switch yych {
          case 0x61:
            yycursor += 1
            yystate = 10
            continue yyl
          default:
            yystate = 2
            continue yyl
        }
      case 5:
        yymarker = yycursor
        yych = yyinput[yycursor]
        switch yych {
          case 0x61:
            yycursor += 1
            yystate = 11
            continue yyl
          default:
            yystate = 2
            continue yyl
        }
      case 6:
        yymarker = yycursor
        yych = yyinput[yycursor]
        switch yych {
          case 0x65:
            yycursor += 1
            yystate = 12
            continue yyl
          default:
            yystate = 2
            continue yyl
        }
      case 7:
        yymarker = yycursor
        yych = yyinput[yycursor]
        switch yych {
          case 0x61:
            yycursor += 1
            yystate = 13
            continue yyl
          default:
            yystate = 2
            continue yyl
        }
      case 8:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6C:
            yycursor += 1
            yystate = 14
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 9:
        yycursor = yymarker
        yystate = 2
        continue yyl
      case 10:
        yych = yyinput[yycursor]
        switch yych {
          case 0x64:
            yycursor += 1
            yystate = 15
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 11:
        yych = yyinput[yycursor]
        switch yych {
          case 0x67:
            yycursor += 1
            yystate = 16
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 12:
        yych = yyinput[yycursor]
        switch yych {
          case 0x64:
            yycursor += 1
            yystate = 17
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 13:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6C:
            yycursor += 1
            yystate = 18
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 14:
#sourceLocation(file: "swift/reuse/usedir.re", line: 16)
        return .fish
#sourceLocation(file: "swift/reuse/usedir.swift", line: 178)
      case 15:
        yych = yyinput[yycursor]
        switch yych {
          case 0x64:
            yycursor += 1
            yystate = 19
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 16:
        yych = yyinput[yycursor]
        switch yych {
          case 0x65:
            yycursor += 1
            yystate = 20
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 17:
#sourceLocation(file: "swift/reuse/usedir.re", line: 11)
        return .color
#sourceLocation(file: "swift/reuse/usedir.swift", line: 204)
      case 18:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6D:
            yycursor += 1
            yystate = 21
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 19:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6F:
            yycursor += 1
            yystate = 22
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 20:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6E:
            yycursor += 1
            yystate = 23
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 21:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6F:
            yycursor += 1
            yystate = 24
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 22:
        yych = yyinput[yycursor]
        switch yych {
          case 0x63:
            yycursor += 1
            yystate = 25
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 23:
        yych = yyinput[yycursor]
        switch yych {
          case 0x74:
            yycursor += 1
            yystate = 26
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 24:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6E:
            yycursor += 1
            yystate = 14
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 25:
        yych = yyinput[yycursor]
        switch yych {
          case 0x6B:
            yycursor += 1
            yystate = 14
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      case 26:
        yych = yyinput[yycursor]
        switch yych {
          case 0x61:
            yycursor += 1
            yystate = 17
            continue yyl
          default:
            yystate = 9
            continue yyl
        }
      default: fatalError("internal lexer error")
    }
  }
#sourceLocation(file: "swift/reuse/usedir.re", line: 27)

}

enum What { case color, fish, dunno }

assert(lex("salmon") == .fish)
assert(lex("what?") == .dunno)
