From: Mark Wooding Date: Sun, 26 Mar 2017 14:16:18 +0000 (+0100) Subject: src/module-parse.lisp: Abstract out `parse-maybe-dotted-name'. X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/commitdiff_plain/311141120e0fe0196f05861285d71472c5e91e02 src/module-parse.lisp: Abstract out `parse-maybe-dotted-name'. --- diff --git a/src/module-parse.lisp b/src/module-parse.lisp index 3f6c224..fb60b49 100644 --- a/src/module-parse.lisp +++ b/src/module-parse.lisp @@ -277,23 +277,23 @@ (defun parse-class-body (scanner pset name supers) pset scanner)) (nick (sod-class-nickname class))) - (labels ((parse-maybe-dotted-declarator (base-type) - ;; Parse a declarator or dotted-declarator, i.e., one whose - ;; centre is - ;; + (labels ((parse-maybe-dotted-name () ;; maybe-dotted-name ::= [id `.'] id ;; ;; A plain identifier is returned as a string, as usual; a ;; dotted identifier is returned as a cons cell of the two ;; names. - (parse-declarator - scanner base-type - :keywordp t - :kernel (parser () - (seq ((name-a :id) - (name-b (? (seq (#\. (id :id)) id)))) - (if name-b (cons name-a name-b) - name-a))))) + (parse (seq ((name-a :id) + (name-b (? (seq (#\. (id :id)) id)))) + (if name-b (cons name-a name-b) + name-a)))) + + (parse-maybe-dotted-declarator (base-type) + ;; Parse a declarator or dotted-declarator, i.e., one whose + ;; centre is maybe-dotted-name above. + (parse-declarator scanner base-type + :keywordp t + :kernel #'parse-maybe-dotted-name)) (parse-message-item (sub-pset type name) ;; message-item ::=