From 4d2a389c0ea605413d1cc89ae35f2a3aaa293072 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Tue, 29 Mar 2022 01:43:36 +0900 Subject: Use IDs and labels as parameters of an #ast directive instead of symbol positions --- spec/parser.go | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) (limited to 'spec/parser.go') 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 { -- cgit v1.2.3