kawa.lang

Class SyntaxPattern

Implemented Interfaces:
Externalizable, Printable

public class SyntaxPattern
extends Pattern
implements Externalizable

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

Field Summary

Fields inherited from class kawa.lang.Pattern

matchPatternMethod, typePattern

Constructor Summary

SyntaxPattern(Object pattern, Object[] literal_identifiers, Translator tr)
SyntaxPattern(String program, Object[] literals, int varCount)

Method Summary

static Object[]
allocVars(int varCount, Object[] outer)
The compiler calls this method to implement syntax-case.
void
disassemble()
void
disassemble(java.io.PrintWriter ps, Translator tr)
static Object[]
getLiteralsList(Object list, SyntaxForm syntax, Translator tr)
Parse the literals list in a syntax-rules or syntax-case.
static boolean
literalIdentifierEq(Object id1, ScopeExp sc1, Object literal2)
static boolean
literalIdentifierEq(Object id1, ScopeExp sc1, Object id2, ScopeExp sc2)
boolean
match(Object obj, Object[] vars, int start_vars)
Match this Pattern against an Object.
boolean
match(Object obj, Object[] vars, int start_vars, int pc, SyntaxForm syntax)
void
print(Consumer out)
void
readExternal(ObjectInput in)
int
varCount()
void
writeExternal(ObjectOutput out)

Methods inherited from class kawa.lang.Pattern

match, match, varCount

Constructor Details

SyntaxPattern

public SyntaxPattern(Object pattern,
                     Object[] literal_identifiers,
                     Translator tr)

SyntaxPattern

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

Method Details

allocVars

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

disassemble

public void disassemble()

disassemble

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

getLiteralsList

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

literalIdentifierEq

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

literalIdentifierEq

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

match

public boolean match(Object obj,
                     Object[] vars,
                     int start_vars)
Match this Pattern against an Object.
Overrides:
match in interface 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.

match

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

print

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

readExternal

public void readExternal(ObjectInput in)
            throws IOException,
                   ClassNotFoundException

varCount

public int varCount()
Overrides:
varCount in interface Pattern

writeExternal

public void writeExternal(ObjectOutput out)
            throws IOException