mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-19 01:29:57 +00:00
961c878e0d
Switch to using Go modules. This migrates our vendor.json to use Go 1.11's modules system, and replaces the vendor folder with the output of go mod vendor. The vendored code should remain basically the same; I believe some tree shaking of packages and support scripts/licenses/READMEs/etc. happened. This also fixes Travis and our Makefile to no longer use govendor.
106 lines
2.9 KiB
Ragel
106 lines
2.9 KiB
Ragel
|
|
package hclsyntax
|
|
|
|
// This file is generated from scan_string_lit.rl. DO NOT EDIT.
|
|
%%{
|
|
# (except you are actually in scan_string_lit.rl here, so edit away!)
|
|
|
|
machine hclstrtok;
|
|
write data;
|
|
}%%
|
|
|
|
func scanStringLit(data []byte, quoted bool) [][]byte {
|
|
var ret [][]byte
|
|
|
|
%%{
|
|
include UnicodeDerived "unicode_derived.rl";
|
|
|
|
UTF8Cont = 0x80 .. 0xBF;
|
|
AnyUTF8 = (
|
|
0x00..0x7F |
|
|
0xC0..0xDF . UTF8Cont |
|
|
0xE0..0xEF . UTF8Cont . UTF8Cont |
|
|
0xF0..0xF7 . UTF8Cont . UTF8Cont . UTF8Cont
|
|
);
|
|
BadUTF8 = any - AnyUTF8;
|
|
|
|
Hex = ('0'..'9' | 'a'..'f' | 'A'..'F');
|
|
|
|
# Our goal with this patterns is to capture user intent as best as
|
|
# possible, even if the input is invalid. The caller will then verify
|
|
# whether each token is valid and generate suitable error messages
|
|
# if not.
|
|
UnicodeEscapeShort = "\\u" . Hex{0,4};
|
|
UnicodeEscapeLong = "\\U" . Hex{0,8};
|
|
UnicodeEscape = (UnicodeEscapeShort | UnicodeEscapeLong);
|
|
SimpleEscape = "\\" . (AnyUTF8 - ('U'|'u'))?;
|
|
TemplateEscape = ("$" . ("$" . ("{"?))?) | ("%" . ("%" . ("{"?))?);
|
|
Newline = ("\r\n" | "\r" | "\n");
|
|
|
|
action Begin {
|
|
// 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;
|
|
}
|
|
action End {
|
|
te = p;
|
|
ret = append(ret, data[ts:te]);
|
|
}
|
|
|
|
QuotedToken = (UnicodeEscape | SimpleEscape | TemplateEscape | Newline) >Begin %End;
|
|
UnquotedToken = (TemplateEscape | Newline) >Begin %End;
|
|
QuotedLiteral = (any - ("\\" | "$" | "%" | "\r" | "\n"));
|
|
UnquotedLiteral = (any - ("$" | "%" | "\r" | "\n"));
|
|
|
|
quoted := (QuotedToken | QuotedLiteral)**;
|
|
unquoted := (UnquotedToken | UnquotedLiteral)**;
|
|
|
|
}%%
|
|
|
|
// 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])
|
|
}*/
|
|
|
|
%%{
|
|
write init nocs;
|
|
write exec;
|
|
}%%
|
|
|
|
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
|
|
}
|