(define-pluggable-parser module code (scanner pset)
;; `code' id `:' item-name [constraints] `{' c-fragment `}'
;;
(define-pluggable-parser module code (scanner pset)
;; `code' id `:' item-name [constraints] `{' c-fragment `}'
;;
(with-parser-context (token-scanner-context :scanner scanner)
(parse (and "set"
(lisp (let ((module-pset (module-pset *module*)))
(when pset
(pset-map (lambda (prop)
(with-parser-context (token-scanner-context :scanner scanner)
(parse (and "set"
(lisp (let ((module-pset (module-pset *module*)))
(when pset
(pset-map (lambda (prop)
(funcall make class frag pset scanner)))))
(define-pluggable-parser class-item initargs (scanner class pset)
(funcall make class frag pset scanner)))))
(define-pluggable-parser class-item initargs (scanner class pset)
;; init-declarator ::= declarator [`=' initializer]
(with-parser-context (token-scanner-context :scanner scanner)
(parse (seq ("initarg"
;; init-declarator ::= declarator [`=' initializer]
(with-parser-context (token-scanner-context :scanner scanner)
(parse (seq ("initarg"
(parser () (? (parse-initializer))))))
(parse (and (skip-many ()
(seq ((name-a :id) #\. (name-b :id)
(parser () (? (parse-initializer))))))
(parse (and (skip-many ()
(seq ((name-a :id) #\. (name-b :id)