Support escaping inm grammar rules
Change-Id: I87e01605be27f165cfb4eaee69315c312e51f326
diff --git a/parser/grammar_parser_test.go b/parser/grammar_parser_test.go
index f7fefc9..c6f96d1 100644
--- a/parser/grammar_parser_test.go
+++ b/parser/grammar_parser_test.go
@@ -67,6 +67,28 @@
},
},
},
+ {
+ name: "Special symbol",
+ input: "[$\\(]",
+ defaultFoundry: "opennlp",
+ defaultLayer: "p",
+ expected: &SimpleTerm{
+ SimpleKey: &KeyTerm{
+ Key: "$(",
+ },
+ },
+ },
+ {
+ name: "Multiple escaped characters",
+ input: "[\\&\\|\\=]",
+ defaultFoundry: "opennlp",
+ defaultLayer: "p",
+ expected: &SimpleTerm{
+ SimpleKey: &KeyTerm{
+ Key: "&|=",
+ },
+ },
+ },
}
for _, tt := range tests {
@@ -81,6 +103,12 @@
}
require.NoError(t, err)
require.NotNil(t, grammar.Token, "Expected token expression")
+
+ // For testing purposes, unescape the key in the simple term
+ if grammar.Token.Expr.First.Simple.SimpleKey != nil {
+ grammar.Token.Expr.First.Simple.SimpleKey.Key = unescapeString(grammar.Token.Expr.First.Simple.SimpleKey.Key)
+ }
+
assert.Equal(t, tt.expected, grammar.Token.Expr.First.Simple)
})
}