diff options
Diffstat (limited to 'spec/parser.go')
-rw-r--r-- | spec/parser.go | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/spec/parser.go b/spec/parser.go index 3b5907e..9c66bfb 100644 --- a/spec/parser.go +++ b/spec/parser.go @@ -55,12 +55,13 @@ type DirectiveNode struct { } type ParameterNode struct { - ID string - Pattern string - String string - Group []*DirectiveNode - Expansion bool - Pos Position + ID string + Pattern string + String string + OrderedSymbol string + Group []*DirectiveNode + Expansion bool + Pos Position } type FragmentNode struct { @@ -461,6 +462,14 @@ func (p *parser) parseParameter() *ParameterNode { String: p.lastTok.text, Pos: p.lastTok.pos, } + case p.consume(tokenKindOrderedSymbolMarker): + if !p.consume(tokenKindID) { + raiseSyntaxError(p.pos.Row, synErrNoOrderedSymbolName) + } + param = &ParameterNode{ + OrderedSymbol: p.lastTok.text, + Pos: p.lastTok.pos, + } case p.consume(tokenKindLParen): pos := p.lastTok.pos var g []*DirectiveNode |