AstunTechnology / mapserver-upgrade-config

MIT License
0 stars 2 forks source link

map_to_xml fails when filter contains IS or NOT #15

Closed archaeogeek closed 5 years ago

archaeogeek commented 5 years ago

This is in the scenario of "not like" or "is null", both of which seem to trigger the error:

(mapserver-upgrade-config) E:\iShareData\LIVE\_MapServerConfig\to_process>map-to-xml admin_testing.map  1>..\xml\admin_testing.xml
ERROR:mappyfile:Parsing of admin_testing.map unsuccessful
Traceback (most recent call last):
  File "D:\Astun\Tools\mapserver-upgrade-config\Scripts\map-to-xml-script.py", line 11, in <module>
    load_entry_point('mapfile-utils==1.0.2', 'console_scripts', 'map-to-xml')()
  File "d:\astun\tools\mapserver-upgrade-config\maputils\map_to_xml.py", line 388, in main
    mapper = map_to_xml(args.inputfile,  output_file=args.outputfile)
  File "d:\astun\tools\mapserver-upgrade-config\maputils\map_to_xml.py", line 332, in __init__
    mapp = mappyfile.utils.load(self.input)
  File "d:\astun\tools\mapserver-upgrade-config\lib\site-packages\mappyfile-0.8.2-py2.7.egg\mappyfile\utils.py", line 115, in load
    ast = p.load(fp)
  File "d:\astun\tools\mapserver-upgrade-config\lib\site-packages\mappyfile-0.8.2-py2.7.egg\mappyfile\parser.py", line 169, in load
    return self.parse(text, fn)
  File "d:\astun\tools\mapserver-upgrade-config\lib\site-packages\mappyfile-0.8.2-py2.7.egg\mappyfile\parser.py", line 198, in parse
    tree = self.lalr.parse(text)
  File "d:\astun\tools\mapserver-upgrade-config\lib\site-packages\lark_parser-0.6.6-py2.7.egg\lark\lark.py", line 228, in parse
    return self.parser.parse(text)
  File "d:\astun\tools\mapserver-upgrade-config\lib\site-packages\lark_parser-0.6.6-py2.7.egg\lark\parser_frontends.py", line 38, in parse
    return self.parser.parse(token_stream, *[sps] if sps is not NotImplemented else [])
  File "d:\astun\tools\mapserver-upgrade-config\lib\site-packages\lark_parser-0.6.6-py2.7.egg\lark\parsers\lalr_parser.py", line 70, in parse
    action, arg = get_action(token)
  File "d:\astun\tools\mapserver-upgrade-config\lib\site-packages\lark_parser-0.6.6-py2.7.egg\lark\parsers\lalr_parser.py", line 49, in get_action
    raise UnexpectedToken(token, expected, state=state)
lark.exceptions.UnexpectedToken: Unexpected token Token(UNQUOTED_STRING, u'is') at line 3655, column 24.
Expected one of:
        * STAR
        * __ANON_7
        * IN
        * EQUAL
        * RPAR
        * CIRCUMFLEX
        * LESSTHAN
        * MORETHAN
        * MINUS
        * LE
        * NE
        * LT
        * PLUS
        * TILDE
        * GT
        * PERCENT
        * __ANON_1
        * __ANON_0
        * GE
        * __ANON_2
        * __ANON_5
        * __ANON_4
        * SLASH
        * __ANON_6
        * EQ
        * AND
        * LIKE
        * __ANON_3
        * OR

Example filter strings:

FILTER ("roadno" not like 'C%' and "roadno" not like 'A%' and "roadno" not like 'B%' and street_class ='8') FILTER ("type3_usrn" is null and "highway_dedication" like 'ALL%' and "state" ='OPEN')

ianturton commented 5 years ago

Fixed in 1.1.0