diff options
Diffstat (limited to 'pkg/ast/parser.go')
| -rw-r--r-- | pkg/ast/parser.go | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/pkg/ast/parser.go b/pkg/ast/parser.go index b8d22fd88..7b46f6611 100644 --- a/pkg/ast/parser.go +++ b/pkg/ast/parser.go @@ -314,7 +314,7 @@ func (p *parser) parseFlags(name *Ident) Node { switch p.tok { case tokInt, tokIdent: return p.parseIntFlags(name) - case tokString: + case tokString, tokStringHex: return p.parseStrFlags(name) default: p.expect(tokInt, tokIdent, tokString) @@ -417,9 +417,10 @@ func (p *parser) parseType() *Type { case tokIdent: allowColon = true arg.Ident = p.lit - case tokString: + case tokString, tokStringHex: arg.String = p.lit arg.HasString = true + arg.StringFmt = strTokToFmt(p.tok) default: p.expect(tokInt, tokIdent, tokString) } @@ -468,15 +469,27 @@ func (p *parser) parseIdent() *Ident { } func (p *parser) parseString() *String { - p.expect(tokString) + p.expect(tokString, tokStringHex) str := &String{ Pos: p.pos, Value: p.lit, + Fmt: strTokToFmt(p.tok), } p.next() return str } +func strTokToFmt(tok token) StrFmt { + switch tok { + case tokString: + return StrFmtRaw + case tokStringHex: + return StrFmtHex + default: + panic("bad string token") + } +} + func (p *parser) parseInt() *Int { i := &Int{ Pos: p.pos, |
