 
 /// `rule` <! `action`
 /// Asserts EOI after parsing the rule, then returns the action's value.
-@infix func <! (condition: Parser.Rule, block: Parser.Action)
--> Parser.Rule
-{
-    return (.Termination([condition]) &> .Computation([block]))
-}
-
-@infix func <! (condName: String, block: Parser.Action)
--> Parser.Rule
-{
-    return (.Termination([.RulePromise(condName)]) &> .Computation([block]))
+@infix func <! (rule: Parser.Rule, block: Parser.Action)
+-> Parser.Rule
+{
+    return (.Termination([rule]) &> .Computation([block]))
+}
+
+@infix func <! (name: String, block: Parser.Action)
+-> Parser.Rule
+{
+    return (.Termination([.RulePromise(name)]) &> .Computation([block]))
 }
 
 /// Sequence construction utility for use in rule actions.

                {
                case .NestedParse(_) :
                    break
                default :
                    newRule = .NestedParse([newRule])
                }

        rule(name, parses: .RulePromise(symbol))
    }

    /// Defines a parsing rule for the named nonterminal in the grammar.
    func rule (name: String, parses block: Parser.Action)
    {
        rule(name, parses: .Computation([block]))
    }

    /// Parses the defined grammar starting with the given rule.
    func start (rule: Rule, _ lexer: Lexer)
    -> Result
