diff options
Diffstat (limited to 'spec/parser.go')
-rw-r--r-- | spec/parser.go | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/spec/parser.go b/spec/parser.go index a9e4d62..e092f59 100644 --- a/spec/parser.go +++ b/spec/parser.go @@ -55,14 +55,8 @@ type DirectiveNode struct { } type ParameterNode struct { - ID string - String string - SymbolPosition *SymbolPositionNode - Pos Position -} - -type SymbolPositionNode struct { - Position int + ID string + String string Expansion bool Pos Position } @@ -453,32 +447,25 @@ func (p *parser) parseDirective() *DirectiveNode { } func (p *parser) parseParameter() *ParameterNode { + var param *ParameterNode switch { case p.consume(tokenKindID): - return &ParameterNode{ + param = &ParameterNode{ ID: p.lastTok.text, Pos: p.lastTok.pos, } case p.consume(tokenKindStringLiteral): - return &ParameterNode{ + param = &ParameterNode{ String: p.lastTok.text, Pos: p.lastTok.pos, } - case p.consume(tokenKindPosition): - symPos := &SymbolPositionNode{ - Position: p.lastTok.num, - Pos: p.lastTok.pos, - } - if p.consume(tokenKindExpantion) { - symPos.Expansion = true - } - return &ParameterNode{ - SymbolPosition: symPos, - Pos: symPos.Pos, - } + default: + return nil } - - return nil + if p.consume(tokenKindExpantion) { + param.Expansion = true + } + return param } func (p *parser) consume(expected tokenKind) bool { |