skin_engine: rework the parser to be closer to the langauge grammar.
commit2d3c43dffeb048297313cd9333731d47d66010a0
authorJonathan Gordon <rockbox@jdgordon.info>
Sat, 21 Apr 2012 13:34:42 +0000 (21 23:34 +1000)
committerJonathan Gordon <rockbox@jdgordon.info>
Sat, 21 Apr 2012 14:24:16 +0000 (22 00:24 +1000)
treec5f305939f17cd1014c02991790290be7987a146
parent2315a23c04ec03bbe4496dd079bb68a450658cf7
skin_engine: rework the parser to be closer to the langauge grammar.

The parser was unconditionally scanning things which it thought
were conditional/enum lists (or tag arg lists) when they couldn't
possibly be (i.e < inside a param which should be valid).

This change fixes it (i.e %?and(%if(%pv, <, -50), %if(%mp, >i, 1))
is perfectly valid now.

This *may* break your exsiting skins if you were using %if with < or >

Change-Id: Ia24dbdf0b11fc7d8a735c1111d648c3bebd68ac6
lib/skin_parser/skin_parser.c
lib/skin_parser/skin_scan.c
lib/skin_parser/skin_scan.h