 		)
 
 		add_named_rule("create-ddl-statement", rule: Parser.matchLiteralInsensitive("CREATE TABLE")
-			~~ (^"id-table" => {
+			~~ (^"id-table" => { [unowned self] in
 					self.stack.append(.statement(.create(table: SQLTable(name: self.text), schema: SQLSchema())))
 				})
 			~~ Parser.matchLiteral("(")
-			~~ Parser.matchList(^"column-definition" => {
+			~~ Parser.matchList(^"column-definition" => { [unowned self] in
 				guard case .columnDefinition(column: let column, type: let type, primary: let primary) = self.stack.popLast()! else { fatalError() }
 				guard case .statement(let s) = self.stack.popLast()! else { fatalError() }
 				guard case .create(table: let t, schema: let oldSchema) = s else { fatalError() }

			}
		})

		add_named_rule("ex-math-multiplication-operator", rule: Parser.matchAnyFrom(["*", "/"].map { Parser.matchLiteral($0) }) => {
			switch self.text {
			case "*": self.stack.append(.binaryOperator(.multiply))
			case "/": self.stack.append(.binaryOperator(.divide))

			}
		})

		add_named_rule("ex-prefix-operator", rule: Parser.matchAnyFrom(["-"].map { Parser.matchLiteral($0) }) => { [unowned self] in
			switch self.text {
			case "-": self.stack.append(.unaryOperator(.negate))
			default: fatalError()
			}
		})

		add_named_rule("ex-prefix-call", rule: Parser.matchAnyFrom(["NOT", "ABS"].map { Parser.matchLiteral($0) }) => { [unowned self] in
			switch self.text {
			case "NOT": self.stack.append(.unaryOperator(.not))
			case "ABS": self.stack.append(.unaryOperator(.abs))
