kawa.lang
Class SyntaxPattern

java.lang.Object
  extended by kawa.lang.Pattern
      extended by kawa.lang.SyntaxPattern
All Implemented Interfaces:
Printable, java.io.Externalizable, java.io.Serializable

public class SyntaxPattern
extends Pattern
implements java.io.Externalizable

This encodes a pattern from a Scheem syntax-case or syntax-rules.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class kawa.lang.Pattern
matchPatternMethod, typePattern
 
Constructor Summary
SyntaxPattern(java.lang.Object pattern, java.lang.Object[] literal_identifiers, Translator tr)
           
SyntaxPattern(java.lang.String program, java.lang.Object[] literals, int varCount)
           
 
Method Summary
static java.lang.Object[] allocVars(int varCount, java.lang.Object[] outer)
          The compiler calls this method to implement syntax-case.
 void disassemble()
           
 void disassemble(java.io.PrintWriter ps, Translator tr)
           
static java.lang.Object[] getLiteralsList(java.lang.Object list, SyntaxForm syntax, Translator tr)
          Parse the literals list in a syntax-rules or syntax-case.
static boolean literalIdentifierEq(java.lang.Object id1, ScopeExp sc1, java.lang.Object literal2)
           
static boolean literalIdentifierEq(java.lang.Object id1, ScopeExp sc1, java.lang.Object id2, ScopeExp sc2)
           
 boolean match(java.lang.Object obj, java.lang.Object[] vars, int start_vars)
          Match this Pattern against an Object.
 boolean match(java.lang.Object obj, java.lang.Object[] vars, int start_vars, int pc, SyntaxForm syntax)
           
 void print(Consumer out)
           
 void readExternal(java.io.ObjectInput in)
           
 int varCount()
           
 void writeExternal(java.io.ObjectOutput out)
           
 
Methods inherited from class kawa.lang.Pattern
match
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SyntaxPattern

public SyntaxPattern(java.lang.String program,
                     java.lang.Object[] literals,
                     int varCount)

SyntaxPattern

public SyntaxPattern(java.lang.Object pattern,
                     java.lang.Object[] literal_identifiers,
                     Translator tr)
Method Detail

varCount

public int varCount()
Specified by:
varCount in class Pattern

match

public boolean match(java.lang.Object obj,
                     java.lang.Object[] vars,
                     int start_vars)
Description copied from class: Pattern
Match this Pattern against an Object.

Specified by:
match in class Pattern
Parameters:
obj - the Object to match against
vars - the "pattern variable" values extracted from obj go here
start_vars - where in vars to strt putting the varCount() values
Returns:
true iff the match succeeded.

disassemble

public void disassemble()

disassemble

public void disassemble(java.io.PrintWriter ps,
                        Translator tr)

match

public boolean match(java.lang.Object obj,
                     java.lang.Object[] vars,
                     int start_vars,
                     int pc,
                     SyntaxForm syntax)

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Specified by:
writeExternal in interface java.io.Externalizable
Throws:
java.io.IOException

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.io.IOException
java.lang.ClassNotFoundException

allocVars

public static java.lang.Object[] allocVars(int varCount,
                                           java.lang.Object[] outer)
The compiler calls this method to implement syntax-case.


literalIdentifierEq

public static boolean literalIdentifierEq(java.lang.Object id1,
                                          ScopeExp sc1,
                                          java.lang.Object literal2)

literalIdentifierEq

public static boolean literalIdentifierEq(java.lang.Object id1,
                                          ScopeExp sc1,
                                          java.lang.Object id2,
                                          ScopeExp sc2)

getLiteralsList

public static java.lang.Object[] getLiteralsList(java.lang.Object list,
                                                 SyntaxForm syntax,
                                                 Translator tr)
Parse the literals list in a syntax-rules or syntax-case.


print

public void print(Consumer out)
Specified by:
print in interface Printable