From dd5fd3372cdb53e7a3a36b5ef61b0b0c35023798 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Mon, 9 May 2022 00:36:06 +0900 Subject: Add ordered symbol notation --- spec/parser.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'spec/parser.go') 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 -- cgit v1.2.3