speed up value parsing: only use pyparsing when needed
diff --git a/reclass/values/value.py b/reclass/values/value.py
index ec09f81..f90eded 100644
--- a/reclass/values/value.py
+++ b/reclass/values/value.py
@@ -92,7 +92,7 @@
         content = pp.Combine(pp.OneOrMore(ref_not_open + exp_not_open + text))
         string = pp.MatchFirst([double_escape, ref_escape_open, exp_escape_open, content, white_space]).setParseAction(_string)
 
-        item = pp.MatchFirst([reference, export, string])
+        item = reference | export | string
         line = pp.OneOrMore(item) + pp.StringEnd()
         return line
 
@@ -104,15 +104,19 @@
         self._allRefs = False
         self._container = False
         if isinstance(val, str):
-            try:
-                tokens = Value._parser.leaveWhitespace().parseString(val).asList()
-            except pp.ParseException as e:
-                raise ParseError(e.msg, e.line, e.col, e.lineno)
-            items = self._createItems(tokens)
-            if len(items) is 1:
-                self._item = items[0]
+            if '$' in val:
+                # speed up: only use pyparsing if there is a $ in the string
+                try:
+                    tokens = Value._parser.leaveWhitespace().parseString(val).asList()
+                except pp.ParseException as e:
+                    raise ParseError(e.msg, e.line, e.col, e.lineno)
+                items = self._createItems(tokens)
+                if len(items) is 1:
+                    self._item = items[0]
+                else:
+                    self._item = CompItem(items)
             else:
-                self._item = CompItem(items)
+                self._item = ScaItem(val)
         elif isinstance(val, list):
             self._item = ListItem(val)
             self._container = True