From 2438fa4435d6393168412574a3ef94396a4debe5 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Sun, 8 May 2022 13:07:56 +0900 Subject: Add #assign directive An #assign directive changes only precedence. --- spec/parser_test.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'spec/parser_test.go') diff --git a/spec/parser_test.go b/spec/parser_test.go index de2c6f7..3fe950f 100644 --- a/spec/parser_test.go +++ b/spec/parser_test.go @@ -34,6 +34,12 @@ func TestParse(t *testing.T) { Parameters: params, } } + assign := func(params ...*ParameterNode) *DirectiveNode { + return &DirectiveNode{ + Name: "assign", + Parameters: params, + } + } prod := func(lhs string, alts ...*AlternativeNode) *ProductionNode { return &ProductionNode{ LHS: lhs, @@ -148,6 +154,7 @@ func TestParse(t *testing.T) { #prec ( #left a b #right c d + #assign e f ); `, ast: &RootNode{ @@ -191,6 +198,19 @@ func TestParse(t *testing.T) { ), newPos(6), ), + withDirPos( + assign( + withParamPos( + idParam("e"), + newPos(7), + ), + withParamPos( + idParam("f"), + newPos(7), + ), + ), + newPos(7), + ), ), newPos(4), ), -- cgit v1.2.3