]> mj.ucw.cz Git - eval.git/blobdiff - t/moe/confparser.py
Fixed small error (which should manifest anyway)
[eval.git] / t / moe / confparser.py
index 31783403a3a78c640a5b413a62b321e25b5cd287..d024912b94d9497aa679a6144603103d301ed460 100644 (file)
@@ -39,7 +39,7 @@ NOTE: ';' or '\n' is currently required even after CONDITION and SUBTREE block
   TODO: change to OPERATION only
 NOTE: Formula may contain additional/extra parentheses
 
-EXPRESSION = '"' ( ECHAR | '{' VARNAME '}' )* '"' | re"'[^'\\n]*'"
+EXPRESSION = '"' ( ECHAR | '{' VARNAME '}' )* '"' | re"'[^'\\n]*'" | VARNAME
 ECHAR = re('([^\\{}]|\\\\|\\{|\\}|\\n)*')
 VARNAME = re('[a-zA-Z0-9-_]+(\.[a-zA-Z0-9-_]+)*')
 """
@@ -278,7 +278,7 @@ class ConfigParser(object):
   def p_VARNAME(self):
     self.dbg() # Debug
     vnl = []
-    while self.peek().isalnum() or self.peek() in u'-_.':
+    while self.preread(1) and (self.peek().isalnum() or self.peek() in u'-_.'):
       vnl.append(self.next())
     vn = u''.join(vnl)
     if not conf.re_VARNAME.match(vn):
@@ -287,9 +287,11 @@ class ConfigParser(object):
 
   def p_EXPRESSION(self):
     self.dbg() # Debug
+    if self.peek() not in '\'"':
+      # Expect a variable name 
+      varname = self.p_VARNAME()
+      return conf.ConfigExpression((self.tree.lookup(varname),), varname)
     op = self.next()
-    if op not in '\'"':
-      self.syntax_error('Invalid start of expression')
     # Parse literal expression 
     if op == u'\'':
       exl = []
@@ -331,7 +333,7 @@ class ConfigParser(object):
        expr2[-1] = expr2[-1] + i
       else:
        expr2.append(i)
-    return conf.ConfigExpression(tuple(expr2), exs)
+    return conf.ConfigExpression(expr2, exs)
 
   def p_FORMULA(self):
     self.dbg() # Debug