2019-02-02 18:07:10 +01:00
|
|
|
package treerack
|
|
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
|
|
func TestKeyword(t *testing.T) {
|
|
|
|
|
const syntax = `
|
2026-01-18 22:52:27 +01:00
|
|
|
space:ws = " ";
|
|
|
|
|
keyword:kw = "foo" | "bar";
|
|
|
|
|
symbol:nokw:nows = [a-z]+;
|
|
|
|
|
doc:root = (keyword | symbol)*;
|
2019-02-02 18:07:10 +01:00
|
|
|
`
|
|
|
|
|
|
|
|
|
|
runTests(t, syntax, []testItem{{
|
|
|
|
|
title: "not keyword",
|
|
|
|
|
text: "baz",
|
|
|
|
|
ignorePosition: true,
|
|
|
|
|
node: &Node{
|
2026-01-18 22:52:27 +01:00
|
|
|
Name: "doc",
|
|
|
|
|
Nodes: []*Node{{
|
|
|
|
|
Name: "symbol",
|
|
|
|
|
}},
|
|
|
|
|
},
|
|
|
|
|
}, {
|
|
|
|
|
title: "keyword",
|
|
|
|
|
text: "foo",
|
|
|
|
|
ignorePosition: true,
|
|
|
|
|
node: &Node{
|
|
|
|
|
Name: "doc",
|
|
|
|
|
Nodes: []*Node{{
|
|
|
|
|
Name: "keyword",
|
|
|
|
|
}},
|
|
|
|
|
},
|
|
|
|
|
}, {
|
|
|
|
|
title: "mixed",
|
|
|
|
|
text: "foo bar baz bar foo baz bar",
|
|
|
|
|
ignorePosition: true,
|
|
|
|
|
node: &Node{
|
|
|
|
|
Name: "doc",
|
|
|
|
|
Nodes: []*Node{{
|
|
|
|
|
Name: "keyword",
|
|
|
|
|
}, {
|
|
|
|
|
Name: "keyword",
|
|
|
|
|
}, {
|
|
|
|
|
Name: "symbol",
|
|
|
|
|
}, {
|
|
|
|
|
Name: "keyword",
|
|
|
|
|
}, {
|
|
|
|
|
Name: "keyword",
|
|
|
|
|
}, {
|
|
|
|
|
Name: "symbol",
|
|
|
|
|
}, {
|
|
|
|
|
Name: "keyword",
|
|
|
|
|
}},
|
2019-02-02 18:07:10 +01:00
|
|
|
},
|
|
|
|
|
}})
|
|
|
|
|
}
|