Package kawa.lang

Class SyntaxForms


  • public class SyntaxForms
    extends java.lang.Object
    Helper method and implementation classes for SyntaxForm.
    • Constructor Detail

      • SyntaxForms

        public SyntaxForms()
    • Method Detail

      • makeForm

        public static java.lang.Object makeForm​(java.lang.Object datum,
                                                TemplateScope scope)
      • makeWithTemplate

        public static java.lang.Object makeWithTemplate​(java.lang.Object template,
                                                        java.lang.Object datum,
                                                        java.lang.Object srcloc)
        Create a syntax object with specified datum, and given syntatic context. Used to implement datum->syntax.
        Parameters:
        template - If this is a SyntaxForm, use its scope; otherwise use the current Compilation's current scope. (This means just returning the datum as-is.)
        datum - The value (S-expression datum) to use.
        srcloc - Used to set source location (line number etc). Ignored if null; otherwise should be a SourceLocator.
      • makeWithTemplate

        public static java.lang.Object makeWithTemplate​(java.lang.Object template,
                                                        java.lang.Object form)
      • identifierEquals

        public static boolean identifierEquals​(java.lang.Object id1,
                                               java.lang.Object id2,
                                               boolean checkBound)
        Utility method to implement Scheme free-identifier=? and bound-identifier=?.
        Parameters:
        id1 - An identifier - either a symbol or a SyntaxForm whose form is a symbol. We assume it satisfies the Scheme predicate identifier?.
        id2 - The other identifier to compare against.
        checkBound - true for bound-identifier=? and false for free-identifier=?.
      • isIdentifier

        public static boolean isIdentifier​(SyntaxForm form)
      • fromDatum

        public static java.lang.Object fromDatum​(java.lang.Object datum,
                                                 SyntaxForm template)
        Make a SyntaxForm object with the same contextual information as this.
        Parameters:
        datum - which used for the new syntax value. Corresponds to the datum->syntax-object function.
      • fromDatumIfNeeded

        public static java.lang.Object fromDatumIfNeeded​(java.lang.Object datum,
                                                         SyntaxForm template)
      • rewrite

        public static Expression rewrite​(java.lang.Object x)
      • rewriteCar

        public static Expression rewriteCar​(java.lang.Object x)
      • rewriteBody

        public static Expression rewriteBody​(java.lang.Object x)
      • toString

        public static java.lang.String toString​(SyntaxForm sform,
                                                java.lang.String id)