Shawn Pearce wrote: > There was just a short conversation on #git about converting > the sha1 expression evaluator into a split parser/interpreter > model. The idea here would be to convert an expression such as > > HEAD@{yesterday}~3^{tree} > > into a an expression tree such as (in LISP style): > > (peel-onion (walk-back 3 (date-spec yesterday (ref HEAD)))) Rather (peel-onion 'tree (walk-back 3 (date-spec yesterday (ref HEAD)))) > with such a tree it is relatively easy to evaluate the expression, > but its also easy to determine if a ref name is valid. Just pass > it through the parser and see if you get back anything more complex > then '(ref <input>)'. Didn't you meant to see if we get correct tree (not a forest), and if the root of said tree is '(ref <commit-ish>)' [1]? Interpreting said parse tree anch checking if it folds to correct object reference is the task of interpreter, not parser... [*1*] if I understand currectly that <commit-ish> mean direct sha1, shortened sha1, or ref (head or tag)? commit-ish is not in git glossary... -- Jakub Narebski Warsaw, Poland - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html