diff --git a/pygeofilter/parsers/ecql/grammar.lark b/pygeofilter/parsers/ecql/grammar.lark index 0a9e7b9..16bc156 100644 --- a/pygeofilter/parsers/ecql/grammar.lark +++ b/pygeofilter/parsers/ecql/grammar.lark @@ -90,6 +90,7 @@ attribute: NAME | DOUBLE_QUOTED + | QUALIFIED_NAME ?literal: number | BOOLEAN @@ -113,6 +114,8 @@ BOOLEAN: ( "TRUE" | "FALSE" ) DOUBLE_QUOTED: "\"" /.*?/ "\"" SINGLE_QUOTED: "'" /.*?/ "'" +QUALIFIED_NAME: NAME ":" NAME + %import .wkt.ewkt_geometry %import .iso8601.DATETIME %import .iso8601.DURATION diff --git a/tests/parsers/ecql/test_parser.py b/tests/parsers/ecql/test_parser.py index 59b41a4..c6dbbc6 100644 --- a/tests/parsers/ecql/test_parser.py +++ b/tests/parsers/ecql/test_parser.py @@ -34,6 +34,14 @@ from pygeofilter.parsers.ecql import parse +def test_namespace_attribute_eq_literal(): + result = parse("ns:attr = 'A'") + assert result == ast.Equal( + ast.Attribute("ns:attr"), + "A", + ) + + def test_attribute_eq_literal(): result = parse("attr = 'A'") assert result == ast.Equal(