func parseRFC3164()

in libbeat/reader/syslog/rfc3164_gen.go [36:850]


func parseRFC3164(data string, loc *time.Location) (message, error) {
	var errs error
	var p, cs, tok int

	pe := len(data)
	eof := len(data)
	m := message{
		priority: -1,
	}

	{
		cs = rfc3164_parser_start
	}

	{
		if p == pe {
			goto _test_eof
		}
		switch cs {
		case 1:
			goto st_case_1
		case 0:
			goto st_case_0
		case 2:
			goto st_case_2
		case 3:
			goto st_case_3
		case 4:
			goto st_case_4
		case 5:
			goto st_case_5
		case 6:
			goto st_case_6
		case 24:
			goto st_case_24
		case 25:
			goto st_case_25
		case 26:
			goto st_case_26
		case 27:
			goto st_case_27
		case 28:
			goto st_case_28
		case 29:
			goto st_case_29
		case 30:
			goto st_case_30
		case 7:
			goto st_case_7
		case 8:
			goto st_case_8
		case 9:
			goto st_case_9
		case 10:
			goto st_case_10
		case 11:
			goto st_case_11
		case 12:
			goto st_case_12
		case 13:
			goto st_case_13
		case 14:
			goto st_case_14
		case 15:
			goto st_case_15
		case 16:
			goto st_case_16
		case 17:
			goto st_case_17
		case 18:
			goto st_case_18
		case 19:
			goto st_case_19
		case 20:
			goto st_case_20
		case 21:
			goto st_case_21
		case 22:
			goto st_case_22
		case 23:
			goto st_case_23
		}
		goto st_out
	st_case_1:
		if data[p] == 60 {
			goto st8
		}
		switch {
		case data[p] < 65:
			if 48 <= data[p] && data[p] <= 57 {
				goto tr1
			}
		case data[p] > 90:
			if 97 <= data[p] && data[p] <= 122 {
				goto tr3
			}
		default:
			goto tr3
		}
		goto tr0
	tr0:

		errs = multierr.Append(errs, &ParseError{Err: io.ErrUnexpectedEOF, Pos: p + 1})
		p--

		goto st0
	st_case_0:
	st0:
		cs = 0
		goto _out
	tr1:

		tok = p

		goto st2
	st2:
		if p++; p == pe {
			goto _test_eof2
		}
	st_case_2:
		switch data[p] {
		case 43:
			goto st3
		case 58:
			goto st3
		}
		switch {
		case data[p] < 48:
			if 45 <= data[p] && data[p] <= 46 {
				goto st3
			}
		case data[p] > 57:
			switch {
			case data[p] > 90:
				if 97 <= data[p] && data[p] <= 122 {
					goto st3
				}
			case data[p] >= 65:
				goto st3
			}
		default:
			goto st7
		}
		goto tr0
	st3:
		if p++; p == pe {
			goto _test_eof3
		}
	st_case_3:
		if data[p] == 32 {
			goto tr6
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st2
		}
		goto tr0
	tr6:

		if err := m.setTimestampRFC3339(data[tok:p]); err != nil {
			errs = multierr.Append(errs, &ValidationError{Err: err, Pos: tok + 1})
		}

		goto st4
	tr30:

		if err := m.setTimestampBSD(data[tok:p], loc); err != nil {
			errs = multierr.Append(errs, &ValidationError{Err: err, Pos: tok + 1})
		}

		goto st4
	st4:
		if p++; p == pe {
			goto _test_eof4
		}
	st_case_4:
		if 33 <= data[p] && data[p] <= 126 {
			goto tr8
		}
		goto tr0
	tr8:

		tok = p

		goto st5
	st5:
		if p++; p == pe {
			goto _test_eof5
		}
	st_case_5:
		if data[p] == 32 {
			goto tr9
		}
		if 33 <= data[p] && data[p] <= 126 {
			goto st5
		}
		goto tr0
	tr9:

		m.setHostname(data[tok:p])

		goto st6
	st6:
		if p++; p == pe {
			goto _test_eof6
		}
	st_case_6:
		switch {
		case data[p] < 59:
			if 33 <= data[p] && data[p] <= 57 {
				goto tr12
			}
		case data[p] > 90:
			if 92 <= data[p] && data[p] <= 126 {
				goto tr12
			}
		default:
			goto tr12
		}
		goto tr11
	tr11:

		tok = p

		goto st24
	st24:
		if p++; p == pe {
			goto _test_eof24
		}
	st_case_24:
		goto st24
	tr12:

		tok = p

		goto st25
	st25:
		if p++; p == pe {
			goto _test_eof25
		}
	st_case_25:
		switch data[p] {
		case 58:
			goto tr34
		case 91:
			goto tr35
		}
		if 33 <= data[p] && data[p] <= 126 {
			goto st25
		}
		goto st24
	tr34:

		m.setTag(data[tok:p])

		goto st26
	st26:
		if p++; p == pe {
			goto _test_eof26
		}
	st_case_26:
		if data[p] == 32 {
			goto st27
		}
		goto st24
	st27:
		if p++; p == pe {
			goto _test_eof27
		}
	st_case_27:
		goto tr11
	tr35:

		m.setTag(data[tok:p])

		goto st28
	st28:
		if p++; p == pe {
			goto _test_eof28
		}
	st_case_28:
		if 48 <= data[p] && data[p] <= 57 {
			goto tr37
		}
		goto st24
	tr37:

		tok = p

		goto st29
	st29:
		if p++; p == pe {
			goto _test_eof29
		}
	st_case_29:
		if data[p] == 93 {
			goto tr39
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st29
		}
		goto st24
	tr39:

		m.setContent(data[tok:p])

		goto st30
	st30:
		if p++; p == pe {
			goto _test_eof30
		}
	st_case_30:
		if data[p] == 58 {
			goto st26
		}
		goto st24
	st7:
		if p++; p == pe {
			goto _test_eof7
		}
	st_case_7:
		switch data[p] {
		case 32:
			goto tr6
		case 43:
			goto st3
		case 58:
			goto st3
		}
		switch {
		case data[p] < 48:
			if 45 <= data[p] && data[p] <= 46 {
				goto st3
			}
		case data[p] > 57:
			switch {
			case data[p] > 90:
				if 97 <= data[p] && data[p] <= 122 {
					goto st3
				}
			case data[p] >= 65:
				goto st3
			}
		default:
			goto st7
		}
		goto tr0
	st8:
		if p++; p == pe {
			goto _test_eof8
		}
	st_case_8:
		if 33 <= data[p] && data[p] <= 126 {
			goto tr13
		}
		goto tr0
	tr13:

		tok = p

		goto st9
	st9:
		if p++; p == pe {
			goto _test_eof9
		}
	st_case_9:
		if data[p] == 62 {
			goto tr15
		}
		if 33 <= data[p] && data[p] <= 126 {
			goto st9
		}
		goto tr0
	tr15:

		if err := m.setPriority(data[tok:p]); err != nil {
			errs = multierr.Append(errs, &ValidationError{Err: err, Pos: tok + 1})
		}

		goto st10
	st10:
		if p++; p == pe {
			goto _test_eof10
		}
	st_case_10:
		if data[p] == 62 {
			goto tr15
		}
		switch {
		case data[p] < 65:
			switch {
			case data[p] < 48:
				if 33 <= data[p] && data[p] <= 47 {
					goto st9
				}
			case data[p] > 57:
				if 58 <= data[p] && data[p] <= 64 {
					goto st9
				}
			default:
				goto tr16
			}
		case data[p] > 90:
			switch {
			case data[p] < 97:
				if 91 <= data[p] && data[p] <= 96 {
					goto st9
				}
			case data[p] > 122:
				if 123 <= data[p] && data[p] <= 126 {
					goto st9
				}
			default:
				goto tr17
			}
		default:
			goto tr17
		}
		goto tr0
	tr16:

		tok = p

		goto st11
	st11:
		if p++; p == pe {
			goto _test_eof11
		}
	st_case_11:
		switch data[p] {
		case 43:
			goto st12
		case 47:
			goto st9
		case 58:
			goto st12
		case 62:
			goto tr15
		}
		switch {
		case data[p] < 59:
			switch {
			case data[p] < 45:
				if 33 <= data[p] && data[p] <= 44 {
					goto st9
				}
			case data[p] > 46:
				if 48 <= data[p] && data[p] <= 57 {
					goto st13
				}
			default:
				goto st12
			}
		case data[p] > 64:
			switch {
			case data[p] < 91:
				if 65 <= data[p] && data[p] <= 90 {
					goto st12
				}
			case data[p] > 96:
				switch {
				case data[p] > 122:
					if 123 <= data[p] && data[p] <= 126 {
						goto st9
					}
				case data[p] >= 97:
					goto st12
				}
			default:
				goto st9
			}
		default:
			goto st9
		}
		goto tr0
	st12:
		if p++; p == pe {
			goto _test_eof12
		}
	st_case_12:
		switch data[p] {
		case 32:
			goto tr6
		case 62:
			goto tr15
		}
		switch {
		case data[p] < 48:
			if 33 <= data[p] && data[p] <= 47 {
				goto st9
			}
		case data[p] > 57:
			if 58 <= data[p] && data[p] <= 126 {
				goto st9
			}
		default:
			goto st11
		}
		goto tr0
	st13:
		if p++; p == pe {
			goto _test_eof13
		}
	st_case_13:
		switch data[p] {
		case 32:
			goto tr6
		case 43:
			goto st12
		case 47:
			goto st9
		case 58:
			goto st12
		case 62:
			goto tr15
		}
		switch {
		case data[p] < 59:
			switch {
			case data[p] < 45:
				if 33 <= data[p] && data[p] <= 44 {
					goto st9
				}
			case data[p] > 46:
				if 48 <= data[p] && data[p] <= 57 {
					goto st13
				}
			default:
				goto st12
			}
		case data[p] > 64:
			switch {
			case data[p] < 91:
				if 65 <= data[p] && data[p] <= 90 {
					goto st12
				}
			case data[p] > 96:
				switch {
				case data[p] > 122:
					if 123 <= data[p] && data[p] <= 126 {
						goto st9
					}
				case data[p] >= 97:
					goto st12
				}
			default:
				goto st9
			}
		default:
			goto st9
		}
		goto tr0
	tr17:

		tok = p

		goto st14
	st14:
		if p++; p == pe {
			goto _test_eof14
		}
	st_case_14:
		switch data[p] {
		case 32:
			goto st15
		case 62:
			goto tr15
		}
		switch {
		case data[p] < 91:
			switch {
			case data[p] > 64:
				if 65 <= data[p] && data[p] <= 90 {
					goto st14
				}
			case data[p] >= 33:
				goto st9
			}
		case data[p] > 96:
			switch {
			case data[p] > 122:
				if 123 <= data[p] && data[p] <= 126 {
					goto st9
				}
			case data[p] >= 97:
				goto st14
			}
		default:
			goto st9
		}
		goto tr0
	st15:
		if p++; p == pe {
			goto _test_eof15
		}
	st_case_15:
		if data[p] == 32 {
			goto st15
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st16
		}
		goto tr0
	st16:
		if p++; p == pe {
			goto _test_eof16
		}
	st_case_16:
		if data[p] == 32 {
			goto st17
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st16
		}
		goto tr0
	st17:
		if p++; p == pe {
			goto _test_eof17
		}
	st_case_17:
		if data[p] == 32 {
			goto st17
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st18
		}
		goto tr0
	st18:
		if p++; p == pe {
			goto _test_eof18
		}
	st_case_18:
		if data[p] == 58 {
			goto st19
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st18
		}
		goto tr0
	st19:
		if p++; p == pe {
			goto _test_eof19
		}
	st_case_19:
		if 48 <= data[p] && data[p] <= 57 {
			goto st20
		}
		goto tr0
	st20:
		if p++; p == pe {
			goto _test_eof20
		}
	st_case_20:
		if data[p] == 58 {
			goto st21
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st20
		}
		goto tr0
	st21:
		if p++; p == pe {
			goto _test_eof21
		}
	st_case_21:
		if 48 <= data[p] && data[p] <= 57 {
			goto st22
		}
		goto tr0
	st22:
		if p++; p == pe {
			goto _test_eof22
		}
	st_case_22:
		if data[p] == 32 {
			goto tr30
		}
		if 48 <= data[p] && data[p] <= 57 {
			goto st22
		}
		goto tr0
	tr3:

		tok = p

		goto st23
	st23:
		if p++; p == pe {
			goto _test_eof23
		}
	st_case_23:
		if data[p] == 32 {
			goto st15
		}
		switch {
		case data[p] > 90:
			if 97 <= data[p] && data[p] <= 122 {
				goto st23
			}
		case data[p] >= 65:
			goto st23
		}
		goto tr0
	st_out:
	_test_eof2:
		cs = 2
		goto _test_eof
	_test_eof3:
		cs = 3
		goto _test_eof
	_test_eof4:
		cs = 4
		goto _test_eof
	_test_eof5:
		cs = 5
		goto _test_eof
	_test_eof6:
		cs = 6
		goto _test_eof
	_test_eof24:
		cs = 24
		goto _test_eof
	_test_eof25:
		cs = 25
		goto _test_eof
	_test_eof26:
		cs = 26
		goto _test_eof
	_test_eof27:
		cs = 27
		goto _test_eof
	_test_eof28:
		cs = 28
		goto _test_eof
	_test_eof29:
		cs = 29
		goto _test_eof
	_test_eof30:
		cs = 30
		goto _test_eof
	_test_eof7:
		cs = 7
		goto _test_eof
	_test_eof8:
		cs = 8
		goto _test_eof
	_test_eof9:
		cs = 9
		goto _test_eof
	_test_eof10:
		cs = 10
		goto _test_eof
	_test_eof11:
		cs = 11
		goto _test_eof
	_test_eof12:
		cs = 12
		goto _test_eof
	_test_eof13:
		cs = 13
		goto _test_eof
	_test_eof14:
		cs = 14
		goto _test_eof
	_test_eof15:
		cs = 15
		goto _test_eof
	_test_eof16:
		cs = 16
		goto _test_eof
	_test_eof17:
		cs = 17
		goto _test_eof
	_test_eof18:
		cs = 18
		goto _test_eof
	_test_eof19:
		cs = 19
		goto _test_eof
	_test_eof20:
		cs = 20
		goto _test_eof
	_test_eof21:
		cs = 21
		goto _test_eof
	_test_eof22:
		cs = 22
		goto _test_eof
	_test_eof23:
		cs = 23
		goto _test_eof

	_test_eof:
		{
		}
		if p == eof {
			switch cs {
			case 24, 25, 26, 27, 28, 29, 30:

				m.setMsg(data[tok:p])

			case 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23:

				errs = multierr.Append(errs, &ParseError{Err: io.ErrUnexpectedEOF, Pos: p + 1})
				p--

			}
		}

	_out:
		{
		}
	}

	return m, errs
}