Module: dfmc-macro-expander Synopsis: Generate code to reconstruct a given fragment. Author: Keith Playford Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND define method generate-constructor (f :: ) let value = fragment-value(f); #{ make-literal-fragment(?value) } end method; define method generate-constructor (f :: ) let name = fragment-name(f); #{ make-name-fragment(?name) } end method; define method generate-constructor (f :: ) let name = fragment-name(f); #{ make-escaped-name-fragment(?name) } end method; define method generate-constructor (f :: ) let name = fragment-name(fragment-name(f)); #{ make-unhygienic-name-fragment(?name) } end method; define method generate-constructor (f :: ) let name = fragment-name(f); #{ make-binary-operator-fragment(?name) } end method; define method generate-constructor (f :: ) let name = fragment-name(f); #{ make-unary-operator-fragment(?name) } end method; define method generate-constructor (f :: ) let name = fragment-name(f); #{ make-unary-and-binary-operator-fragment(?name) } end method; define method generate-constructor (f :: ) let symbol = fragment-name(f); let constraint = fragment-constraint(f); #{ make-constrained-name-fragment(?symbol, ?constraint) } end method; define method generate-constructor (f :: ) generate-constructor(fragment-escaped-fragment(f)); end method; //// Punctuation. define macro punctuation-generator-definer { define punctuation-generator "<" ## ?:name ## ">"; } => { define method generate-constructor (f :: "<" ## ?name ## ">") #{ "make-" ## ?name() } end method; } end macro; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; define punctuation-generator ; // eof