]> 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 ebc453d52a16e6e430fd8c98ba182334edab20a8..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-_]+)*')
 """
@@ -85,7 +85,7 @@ class ConfigParser(object):
     `fname` is an optional name of the file, for debugging and syntax errors. 
     `level` indicates the precedence the operations should have in the ConfigTree
     """
-    self.s = s         # Unicode, string or an open file
+    self.s = s         # Unicode, ascii string or an open file
     self.buf = u""     # Read-buffer for s file, whole unicode string for s string/unicode
     if isinstance(self.s, types.StringTypes):
       self.buf = unicode(self.s)
@@ -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