6 "github.com/hashicorp/hil/ast"
15 //go:generate stringer -type=TokenType
19 // Raw string data outside of ${ .. } sequences
20 LITERAL TokenType = 'o'
22 // STRING is like a LITERAL but it's inside a quoted string
23 // within a ${ ... } sequence, and so it can contain backslash
25 STRING TokenType = 'S'
28 INTEGER TokenType = 'I'
32 BEGIN TokenType = '$' // actually "${"
34 OQUOTE TokenType = '“' // Opening quote of a nested quoted sequence
35 CQUOTE TokenType = '”' // Closing quote of a nested quoted sequence
36 OPAREN TokenType = '('
37 CPAREN TokenType = ')'
38 OBRACKET TokenType = '['
39 CBRACKET TokenType = ']'
42 IDENTIFIER TokenType = 'i'
44 PERIOD TokenType = '.'
49 PERCENT TokenType = '%'
56 NOTEQUAL TokenType = '≠'
62 QUESTION TokenType = '?'
67 // Produced for sequences that cannot be understood as valid tokens
68 // e.g. due to use of unrecognized punctuation.
69 INVALID TokenType = '�'
72 func (t *Token) String() string {
75 return "end of string"
77 return fmt.Sprintf("invalid sequence %q", t.Content)
79 return fmt.Sprintf("integer %s", t.Content)
81 return fmt.Sprintf("float %s", t.Content)
83 return fmt.Sprintf("string %q", t.Content)
85 return fmt.Sprintf("literal %q", t.Content)
87 return fmt.Sprintf("opening quote")
89 return fmt.Sprintf("closing quote")
101 // The remaining token types have content that
102 // speaks for itself.
103 return fmt.Sprintf("%q", t.Content)