6c4344623b
The main HCL package is more visible this way, and so it's easier than having to pick it out from dozens of other package directories.
302 lines
6.2 KiB
Go
302 lines
6.2 KiB
Go
//line scan_string_lit.rl:1
|
|
|
|
package hclsyntax
|
|
|
|
// This file is generated from scan_string_lit.rl. DO NOT EDIT.
|
|
|
|
//line scan_string_lit.go:9
|
|
var _hclstrtok_actions []byte = []byte{
|
|
0, 1, 0, 1, 1, 2, 1, 0,
|
|
}
|
|
|
|
var _hclstrtok_key_offsets []byte = []byte{
|
|
0, 0, 2, 4, 6, 10, 14, 18,
|
|
22, 27, 31, 36, 41, 46, 51, 57,
|
|
62, 74, 85, 96, 107, 118, 129, 140,
|
|
151,
|
|
}
|
|
|
|
var _hclstrtok_trans_keys []byte = []byte{
|
|
128, 191, 128, 191, 128, 191, 10, 13,
|
|
36, 37, 10, 13, 36, 37, 10, 13,
|
|
36, 37, 10, 13, 36, 37, 10, 13,
|
|
36, 37, 123, 10, 13, 36, 37, 10,
|
|
13, 36, 37, 92, 10, 13, 36, 37,
|
|
92, 10, 13, 36, 37, 92, 10, 13,
|
|
36, 37, 92, 10, 13, 36, 37, 92,
|
|
123, 10, 13, 36, 37, 92, 85, 117,
|
|
128, 191, 192, 223, 224, 239, 240, 247,
|
|
248, 255, 10, 13, 36, 37, 92, 48,
|
|
57, 65, 70, 97, 102, 10, 13, 36,
|
|
37, 92, 48, 57, 65, 70, 97, 102,
|
|
10, 13, 36, 37, 92, 48, 57, 65,
|
|
70, 97, 102, 10, 13, 36, 37, 92,
|
|
48, 57, 65, 70, 97, 102, 10, 13,
|
|
36, 37, 92, 48, 57, 65, 70, 97,
|
|
102, 10, 13, 36, 37, 92, 48, 57,
|
|
65, 70, 97, 102, 10, 13, 36, 37,
|
|
92, 48, 57, 65, 70, 97, 102, 10,
|
|
13, 36, 37, 92, 48, 57, 65, 70,
|
|
97, 102,
|
|
}
|
|
|
|
var _hclstrtok_single_lengths []byte = []byte{
|
|
0, 0, 0, 0, 4, 4, 4, 4,
|
|
5, 4, 5, 5, 5, 5, 6, 5,
|
|
2, 5, 5, 5, 5, 5, 5, 5,
|
|
5,
|
|
}
|
|
|
|
var _hclstrtok_range_lengths []byte = []byte{
|
|
0, 1, 1, 1, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
5, 3, 3, 3, 3, 3, 3, 3,
|
|
3,
|
|
}
|
|
|
|
var _hclstrtok_index_offsets []byte = []byte{
|
|
0, 0, 2, 4, 6, 11, 16, 21,
|
|
26, 32, 37, 43, 49, 55, 61, 68,
|
|
74, 82, 91, 100, 109, 118, 127, 136,
|
|
145,
|
|
}
|
|
|
|
var _hclstrtok_indicies []byte = []byte{
|
|
0, 1, 2, 1, 3, 1, 5, 6,
|
|
7, 8, 4, 10, 11, 12, 13, 9,
|
|
14, 11, 12, 13, 9, 10, 11, 15,
|
|
13, 9, 10, 11, 12, 13, 14, 9,
|
|
10, 11, 12, 15, 9, 17, 18, 19,
|
|
20, 21, 16, 23, 24, 25, 26, 27,
|
|
22, 0, 24, 25, 26, 27, 22, 23,
|
|
24, 28, 26, 27, 22, 23, 24, 25,
|
|
26, 27, 0, 22, 23, 24, 25, 28,
|
|
27, 22, 29, 30, 22, 2, 3, 31,
|
|
22, 0, 23, 24, 25, 26, 27, 32,
|
|
32, 32, 22, 23, 24, 25, 26, 27,
|
|
33, 33, 33, 22, 23, 24, 25, 26,
|
|
27, 34, 34, 34, 22, 23, 24, 25,
|
|
26, 27, 30, 30, 30, 22, 23, 24,
|
|
25, 26, 27, 35, 35, 35, 22, 23,
|
|
24, 25, 26, 27, 36, 36, 36, 22,
|
|
23, 24, 25, 26, 27, 37, 37, 37,
|
|
22, 23, 24, 25, 26, 27, 0, 0,
|
|
0, 22,
|
|
}
|
|
|
|
var _hclstrtok_trans_targs []byte = []byte{
|
|
11, 0, 1, 2, 4, 5, 6, 7,
|
|
9, 4, 5, 6, 7, 9, 5, 8,
|
|
10, 11, 12, 13, 15, 16, 10, 11,
|
|
12, 13, 15, 16, 14, 17, 21, 3,
|
|
18, 19, 20, 22, 23, 24,
|
|
}
|
|
|
|
var _hclstrtok_trans_actions []byte = []byte{
|
|
0, 0, 0, 0, 0, 1, 1, 1,
|
|
1, 3, 5, 5, 5, 5, 0, 0,
|
|
0, 1, 1, 1, 1, 1, 3, 5,
|
|
5, 5, 5, 5, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0,
|
|
}
|
|
|
|
var _hclstrtok_eof_actions []byte = []byte{
|
|
0, 0, 0, 0, 0, 3, 3, 3,
|
|
3, 3, 0, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3,
|
|
3,
|
|
}
|
|
|
|
const hclstrtok_start int = 4
|
|
const hclstrtok_first_final int = 4
|
|
const hclstrtok_error int = 0
|
|
|
|
const hclstrtok_en_quoted int = 10
|
|
const hclstrtok_en_unquoted int = 4
|
|
|
|
//line scan_string_lit.rl:10
|
|
|
|
func scanStringLit(data []byte, quoted bool) [][]byte {
|
|
var ret [][]byte
|
|
|
|
//line scan_string_lit.rl:61
|
|
|
|
// Ragel state
|
|
p := 0 // "Pointer" into data
|
|
pe := len(data) // End-of-data "pointer"
|
|
ts := 0
|
|
te := 0
|
|
eof := pe
|
|
|
|
var cs int // current state
|
|
switch {
|
|
case quoted:
|
|
cs = hclstrtok_en_quoted
|
|
default:
|
|
cs = hclstrtok_en_unquoted
|
|
}
|
|
|
|
// Make Go compiler happy
|
|
_ = ts
|
|
_ = eof
|
|
|
|
/*token := func () {
|
|
ret = append(ret, data[ts:te])
|
|
}*/
|
|
|
|
//line scan_string_lit.go:154
|
|
{
|
|
}
|
|
|
|
//line scan_string_lit.go:158
|
|
{
|
|
var _klen int
|
|
var _trans int
|
|
var _acts int
|
|
var _nacts uint
|
|
var _keys int
|
|
if p == pe {
|
|
goto _test_eof
|
|
}
|
|
if cs == 0 {
|
|
goto _out
|
|
}
|
|
_resume:
|
|
_keys = int(_hclstrtok_key_offsets[cs])
|
|
_trans = int(_hclstrtok_index_offsets[cs])
|
|
|
|
_klen = int(_hclstrtok_single_lengths[cs])
|
|
if _klen > 0 {
|
|
_lower := int(_keys)
|
|
var _mid int
|
|
_upper := int(_keys + _klen - 1)
|
|
for {
|
|
if _upper < _lower {
|
|
break
|
|
}
|
|
|
|
_mid = _lower + ((_upper - _lower) >> 1)
|
|
switch {
|
|
case data[p] < _hclstrtok_trans_keys[_mid]:
|
|
_upper = _mid - 1
|
|
case data[p] > _hclstrtok_trans_keys[_mid]:
|
|
_lower = _mid + 1
|
|
default:
|
|
_trans += int(_mid - int(_keys))
|
|
goto _match
|
|
}
|
|
}
|
|
_keys += _klen
|
|
_trans += _klen
|
|
}
|
|
|
|
_klen = int(_hclstrtok_range_lengths[cs])
|
|
if _klen > 0 {
|
|
_lower := int(_keys)
|
|
var _mid int
|
|
_upper := int(_keys + (_klen << 1) - 2)
|
|
for {
|
|
if _upper < _lower {
|
|
break
|
|
}
|
|
|
|
_mid = _lower + (((_upper - _lower) >> 1) & ^1)
|
|
switch {
|
|
case data[p] < _hclstrtok_trans_keys[_mid]:
|
|
_upper = _mid - 2
|
|
case data[p] > _hclstrtok_trans_keys[_mid+1]:
|
|
_lower = _mid + 2
|
|
default:
|
|
_trans += int((_mid - int(_keys)) >> 1)
|
|
goto _match
|
|
}
|
|
}
|
|
_trans += _klen
|
|
}
|
|
|
|
_match:
|
|
_trans = int(_hclstrtok_indicies[_trans])
|
|
cs = int(_hclstrtok_trans_targs[_trans])
|
|
|
|
if _hclstrtok_trans_actions[_trans] == 0 {
|
|
goto _again
|
|
}
|
|
|
|
_acts = int(_hclstrtok_trans_actions[_trans])
|
|
_nacts = uint(_hclstrtok_actions[_acts])
|
|
_acts++
|
|
for ; _nacts > 0; _nacts-- {
|
|
_acts++
|
|
switch _hclstrtok_actions[_acts-1] {
|
|
case 0:
|
|
//line scan_string_lit.rl:40
|
|
|
|
// If te is behind p then we've skipped over some literal
|
|
// characters which we must now return.
|
|
if te < p {
|
|
ret = append(ret, data[te:p])
|
|
}
|
|
ts = p
|
|
|
|
case 1:
|
|
//line scan_string_lit.rl:48
|
|
|
|
te = p
|
|
ret = append(ret, data[ts:te])
|
|
|
|
//line scan_string_lit.go:253
|
|
}
|
|
}
|
|
|
|
_again:
|
|
if cs == 0 {
|
|
goto _out
|
|
}
|
|
p++
|
|
if p != pe {
|
|
goto _resume
|
|
}
|
|
_test_eof:
|
|
{
|
|
}
|
|
if p == eof {
|
|
__acts := _hclstrtok_eof_actions[cs]
|
|
__nacts := uint(_hclstrtok_actions[__acts])
|
|
__acts++
|
|
for ; __nacts > 0; __nacts-- {
|
|
__acts++
|
|
switch _hclstrtok_actions[__acts-1] {
|
|
case 1:
|
|
//line scan_string_lit.rl:48
|
|
|
|
te = p
|
|
ret = append(ret, data[ts:te])
|
|
|
|
//line scan_string_lit.go:278
|
|
}
|
|
}
|
|
}
|
|
|
|
_out:
|
|
{
|
|
}
|
|
}
|
|
|
|
//line scan_string_lit.rl:89
|
|
|
|
if te < p {
|
|
// Collect any leftover literal characters at the end of the input
|
|
ret = append(ret, data[te:p])
|
|
}
|
|
|
|
// If we fall out here without being in a final state then we've
|
|
// encountered something that the scanner can't match, which should
|
|
// be impossible (the scanner matches all bytes _somehow_) but we'll
|
|
// tolerate it and let the caller deal with it.
|
|
if cs < hclstrtok_first_final {
|
|
ret = append(ret, data[p:len(data)])
|
|
}
|
|
|
|
return ret
|
|
}
|