 
         // "REM" commentstring
         // "'" commentstring
-        if let ((REM, comment), nextPos) =
+        if let (REM, comment, nextPos) =
             parse(pos, oneOfLit(T_REM, T_Tick), remainderOfLine)
         {
             return (.Rem(comment), nextPos)

func parse<A, B> (
    position: InputPosition,
    a: (InputPosition) -> (A, InputPosition)?,
    b: (InputPosition) -> (B, InputPosition)?) -> ((A, B), InputPosition)?
{
    if let (a, afterA) = a(position) {
        if let (b, afterB) = b(afterA) {
            return ((a, b), afterB)
        }
    }
    return nil

    /// 
    /// Returns Expression and position of next character if successful.  Returns nil if not.
    func expression(pos: InputPosition) -> (Expression, InputPosition)? {
        if let (PLUS, uexpr, nextPos) =
            parse(pos, lit(T_Plus), unsignedExpression)
        {
            return (.Plus(uexpr), nextPos)
        }

        if let (MINUS, uexpr, nextPos) =
            parse(pos, lit(T_Minus), unsignedExpression)
        {
            return (.Minus(uexpr), nextPos)
