sdr 0.3

net.cscott.sdr.calls.transform
Class Fractional

java.lang.Object
  extended by net.cscott.sdr.calls.transform.TransformVisitor<Fraction>
      extended by net.cscott.sdr.calls.transform.Fractional

public class Fractional
extends TransformVisitor<Fraction>

Tranformation implementing BasicList._FRACTIONAL. This only handles the case where the fraction is less than one; BasicList._FRACTIONAL handles the whole-number portions of the fraction.

Author:
C. Scott Ananian
Tests:
Use Fractional class to evaluate TWICE QUARTER RIGHT:
js> importPackage(net.cscott.sdr.calls.ast)
js> importPackage(net.cscott.sdr.util)
js> callname="dosado"
dosado
js> call = net.cscott.sdr.calls.CallDB.INSTANCE.lookup(callname)
dosado[basic]
js> comp = call.apply(Apply.makeApply(callname))
(In 6 (Opt (From [FACING DANCERS] (Seq (Prim -1, 1, none, 1) (Prim 1, 1, none, 1) (Prim 1, -1, none, 1) (Prim -1, -1, none, 1)))))
js> comp.accept(new Fractional(), Fraction.ONE_QUARTER)
(In 1 1/2 (Opt (From [FACING DANCERS] (Seq (Prim -1, 1, none, 1)))))
js> try {
  >   comp.accept(new Fractional(), Fraction.ONE_THIRD)
  > } catch (e) {
  >   print(e.javaException)
  > }
net.cscott.sdr.calls.BadCallException: No formation options left: Primitives cannot be subdivided: 1/3

Constructor Summary
Fractional()
           
 
Method Summary
 SeqCall visit(Apply apply, Fraction f)
           
 In visit(In in, Fraction f)
           
 Part visit(Part p, Fraction f)
           
 Prim visit(Prim p, Fraction f)
           
 Comp visit(Seq s, Fraction f)
           
 
Methods inherited from class net.cscott.sdr.calls.transform.TransformVisitor
visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Fractional

public Fractional()
Method Detail

visit

public In visit(In in,
                Fraction f)
Overrides:
visit in class TransformVisitor<Fraction>

visit

public Prim visit(Prim p,
                  Fraction f)
Overrides:
visit in class TransformVisitor<Fraction>

visit

public Part visit(Part p,
                  Fraction f)
Overrides:
visit in class TransformVisitor<Fraction>

visit

public SeqCall visit(Apply apply,
                     Fraction f)
Overrides:
visit in class TransformVisitor<Fraction>

visit

public Comp visit(Seq s,
                  Fraction f)
Overrides:
visit in class TransformVisitor<Fraction>

sdr 0.3

Copyright © 2006-2009 C. Scott Ananian