Package kawa.lang

Class Quote

  • All Implemented Interfaces:
    gnu.kawa.format.Printable, Named
    Direct Known Subclasses:
    syntax

    public class Quote
    extends Syntax
    The Syntax transformer that re-writes the "quote" "quasiquote" primitive. In both cases recursively resolves SyntaxForm wrappers and resolves namespaces of symbols. In the case of quasiquote also handles unquoting.
    • Field Detail

      • plainQuote

        public static final Quote plainQuote
      • quasiQuote

        public static final Quote quasiQuote
      • QUOTE_DEPTH

        protected static final int QUOTE_DEPTH
        An initial value for 'depth' for plain (non-quasi) quote.
        See Also:
        Constant Field Values
      • isQuasi

        protected boolean isQuasi
        True for quasiquote; false for plain quote.
    • Constructor Detail

      • Quote

        public Quote​(String name,
                     boolean isQuasi)
    • Method Detail

      • quote

        public static Object quote​(Object obj,
                                   Translator tr)
        Quote an object (without namespace-expansion). Basically just recursively removes SyntaxForm wrappers.
      • quote

        public static Object quote​(Object obj)
        Quote an object (without namespace-expansion). Basically just recursively removes SyntaxForm wrappers.
      • expandColonForms

        protected boolean expandColonForms()
      • rewrite

        public Expression rewrite​(Object obj,
                                  Translator tr)
        Description copied from class: Syntax
        Re-write an expression that is an "application" of this Syntax object.
        Overrides:
        rewrite in class Syntax
        Parameters:
        obj - the arguments to this "application" (i.e. the cdr of the macro/builtin invocation)
        tr - the Translator that provides context
        Returns:
        the re-written expression
      • consX$V

        public static Object consX$V​(Object[] args)
        A wrapper around LList.consX to make it a "variable-arg method".
      • append$V

        public static Object append$V​(Object[] args)
        Same as regular append, but handle SyntaxForm wrappers.