From 05d59b98c98f1b970112ef5c82f5816770881ea0 Mon Sep 17 00:00:00 2001 Message-Id: <05d59b98c98f1b970112ef5c82f5816770881ea0.1715558022.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sun, 26 Mar 2017 15:16:18 +0100 Subject: [PATCH] src/module-parse.lisp: Factor out slot and maybe-initializer creation. Organization: Straylight/Edgeware From: Mark Wooding --- src/module-parse.lisp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/module-parse.lisp b/src/module-parse.lisp index e175a5b..028ad87 100644 --- a/src/module-parse.lisp +++ b/src/module-parse.lisp @@ -334,24 +334,24 @@ (defun parse-class-body (scanner pset name supers) ;; [`,' list[init-declarator]] `;' ;; ;; init-declarator ::= declarator [initializer] - (parse (and (seq ((init (? (parse-initializer)))) - (make-sod-slot class name type - sub-pset scanner) - (when init - (make-sod-instance-initializer - class nick name init sub-pset scanner))) - (skip-many () - (seq (#\, - (ds (parse-declarator scanner - base-type)) - (init (? (parse-initializer)))) - (make-sod-slot class (cdr ds) (car ds) - sub-pset scanner) - (when init - (make-sod-instance-initializer - class nick (cdr ds) init - sub-pset scanner)))) - #\;))) + (flet ((make-it (name type init) + (make-sod-slot class name type + sub-pset scanner) + (when init + (make-sod-instance-initializer class + nick name + init + sub-pset + scanner)))) + (parse (and (seq ((init (? (parse-initializer)))) + (make-it name type init)) + (skip-many () + (seq (#\, + (ds (parse-declarator scanner + base-type)) + (init (? (parse-initializer)))) + (make-it (cdr ds) (car ds) init))) + #\;)))) (parse-initializer-item (sub-pset must-init-p constructor) ;; initializer-item ::= -- [mdw]