skin_engine: rework the parser to be closer to the langauge grammar.
commite43b856ed0f2fa3cb03a1335c9dc311b572e88e2
authorJonathan Gordon <rockbox@jdgordon.info>
Mon, 16 Apr 2012 05:42:24 +0000 (16 15:42 +1000)
committerThomas Martitz <kugel@rockbox.org>
Tue, 17 Apr 2012 15:05:20 +0000 (17 17:05 +0200)
tree4b22c3178612058c739e4e76500433d11d51615a
parente92fbb42d7d25311cc03a69390ba758033d5134a
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, > 1))
is perfectly valid now.

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

Change-Id: Ibcb42bc6bb78908f79de024b61276b91b1ce02a0
Reviewed-on: http://gerrit.rockbox.org/214
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
lib/skin_parser/skin_parser.c
lib/skin_parser/skin_scan.c
lib/skin_parser/skin_scan.h