// Path: lang/src/main/java/mumbler/truffle/MumblerLanguage.java
// public static final String ID = "mumbler";
// 
// Path: lang/src/main/java/mumbler/truffle/parser/Namespace.java
// public static final String TOP_NS = "<top>";
// 
// Path: lang/src/main/java/mumbler/truffle/MumblerContext.java
// public class MumblerContext {
//     private final FrameDescriptor globalFrameDescriptor;
//     private final Namespace globalNamespace;
//     private final MaterializedFrame globalFrame;
//     private final MumblerLanguage lang;
// 
//     public MumblerContext() {
//         this(null);
//     }
// 
//     public MumblerContext(MumblerLanguage lang) {
//         this.globalFrameDescriptor = new FrameDescriptor();
//         this.globalNamespace = new Namespace(this.globalFrameDescriptor);
//         this.globalFrame = this.initGlobalFrame(lang);
//         this.lang = lang;
//     }
// 
//     private MaterializedFrame initGlobalFrame(MumblerLanguage lang) {
//         VirtualFrame frame = Truffle.getRuntime().createVirtualFrame(null,
//                 this.globalFrameDescriptor);
//         addGlobalFunctions(lang, frame);
//         return frame.materialize();
//     }
// 
//     private static void addGlobalFunctions(MumblerLanguage lang, VirtualFrame virtualFrame) {
//         FrameDescriptor frameDescriptor = virtualFrame.getFrameDescriptor();
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("println"),
//                 createBuiltinFunction(lang, PrintlnBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("+"),
//                 createBuiltinFunction(lang, AddBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("-"),
//                 createBuiltinFunction(lang, SubBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("*"),
//                 createBuiltinFunction(lang, MulBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("/"),
//                 createBuiltinFunction(lang, DivBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("%"),
//                 createBuiltinFunction(lang, ModBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("="),
//                 createBuiltinFunction(lang, EqualBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("<"),
//                 createBuiltinFunction(lang, LessThanBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot(">"),
//                 createBuiltinFunction(lang, GreaterThanBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("list"),
//                 createBuiltinFunction(lang, ListBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("cons"),
//                 createBuiltinFunction(lang, ConsBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("car"),
//                 createBuiltinFunction(lang, CarBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("cdr"),
//                 createBuiltinFunction(lang, CdrBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("now"),
//                 createBuiltinFunction(lang, NowBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
// //        virtualFrame.setObject(frameDescriptor.addFrameSlot("eval"),
// //                createBuiltinFunction(EvalBuiltinNodeFactory.getInstance(),
// //                        virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("read"),
//                 createBuiltinFunction(lang, ReadBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("sleep"),
//                 createBuiltinFunction(lang, SleepBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//     }
// 
//     /**
//      * @return A {@link MaterializedFrame} on the heap that contains all global
//      * values.
//      */
//     public MaterializedFrame getGlobalFrame() {
//         return this.globalFrame;
//     }
// 
//     public Namespace getGlobalNamespace() {
//         return this.globalNamespace;
//     }
// }
// 
// Path: lang/src/main/java/mumbler/truffle/syntax/ListSyntax.java
// public class ListSyntax extends Syntax<MumblerList<? extends Syntax<?>>> {
//     public ListSyntax(MumblerList<? extends Syntax<?>> value,
//             SourceSection sourceSection) {
//         super(value, sourceSection);
//     }
// 
//     @Override
//     public Object strip() {
//         List<Object> list = new ArrayList<Object>();
//         for (Syntax<? extends Object> syntax : getValue()) {
//             list.add(syntax.strip());
//         }
//         return MumblerList.list(list);
//     }
// 
//     @Override
//     public String getName() {
//         if (super.getName() != null) {
//             return super.getName();
//         }
//         if (this.getValue().size() == 0) {
//             return "()";
//         }
//         return this.getValue().car().getValue().toString() + "-" + this.hashCode();
//     }
// }


import static mumbler.truffle.MumblerLanguage.ID;
import static mumbler.truffle.parser.Namespace.TOP_NS;
import java.io.IOException;
import mumbler.truffle.MumblerContext;
import mumbler.truffle.syntax.ListSyntax;
import org.junit.Before;
import org.junit.Test;
import com.oracle.truffle.api.source.Source;
package mumbler.truffle.parser;






public class AnalyzerTest {

    MumblerContext context;
    Analyzer analyzer;
    Namespace fileNs;

    @Before
    public void setUp() {
        context = new MumblerContext();
// Path: lang/src/main/java/mumbler/truffle/MumblerLanguage.java
// public static final String ID = "mumbler";
// 
// Path: lang/src/main/java/mumbler/truffle/parser/Namespace.java
// public static final String TOP_NS = "<top>";
// 
// Path: lang/src/main/java/mumbler/truffle/MumblerContext.java
// public class MumblerContext {
//     private final FrameDescriptor globalFrameDescriptor;
//     private final Namespace globalNamespace;
//     private final MaterializedFrame globalFrame;
//     private final MumblerLanguage lang;
// 
//     public MumblerContext() {
//         this(null);
//     }
// 
//     public MumblerContext(MumblerLanguage lang) {
//         this.globalFrameDescriptor = new FrameDescriptor();
//         this.globalNamespace = new Namespace(this.globalFrameDescriptor);
//         this.globalFrame = this.initGlobalFrame(lang);
//         this.lang = lang;
//     }
// 
//     private MaterializedFrame initGlobalFrame(MumblerLanguage lang) {
//         VirtualFrame frame = Truffle.getRuntime().createVirtualFrame(null,
//                 this.globalFrameDescriptor);
//         addGlobalFunctions(lang, frame);
//         return frame.materialize();
//     }
// 
//     private static void addGlobalFunctions(MumblerLanguage lang, VirtualFrame virtualFrame) {
//         FrameDescriptor frameDescriptor = virtualFrame.getFrameDescriptor();
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("println"),
//                 createBuiltinFunction(lang, PrintlnBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("+"),
//                 createBuiltinFunction(lang, AddBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("-"),
//                 createBuiltinFunction(lang, SubBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("*"),
//                 createBuiltinFunction(lang, MulBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("/"),
//                 createBuiltinFunction(lang, DivBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("%"),
//                 createBuiltinFunction(lang, ModBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("="),
//                 createBuiltinFunction(lang, EqualBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("<"),
//                 createBuiltinFunction(lang, LessThanBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot(">"),
//                 createBuiltinFunction(lang, GreaterThanBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("list"),
//                 createBuiltinFunction(lang, ListBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("cons"),
//                 createBuiltinFunction(lang, ConsBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("car"),
//                 createBuiltinFunction(lang, CarBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("cdr"),
//                 createBuiltinFunction(lang, CdrBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("now"),
//                 createBuiltinFunction(lang, NowBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
// //        virtualFrame.setObject(frameDescriptor.addFrameSlot("eval"),
// //                createBuiltinFunction(EvalBuiltinNodeFactory.getInstance(),
// //                        virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("read"),
//                 createBuiltinFunction(lang, ReadBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//         virtualFrame.setObject(frameDescriptor.addFrameSlot("sleep"),
//                 createBuiltinFunction(lang, SleepBuiltinNodeFactory.getInstance(),
//                         virtualFrame));
//     }
// 
//     /**
//      * @return A {@link MaterializedFrame} on the heap that contains all global
//      * values.
//      */
//     public MaterializedFrame getGlobalFrame() {
//         return this.globalFrame;
//     }
// 
//     public Namespace getGlobalNamespace() {
//         return this.globalNamespace;
//     }
// }
// 
// Path: lang/src/main/java/mumbler/truffle/syntax/ListSyntax.java
// public class ListSyntax extends Syntax<MumblerList<? extends Syntax<?>>> {
//     public ListSyntax(MumblerList<? extends Syntax<?>> value,
//             SourceSection sourceSection) {
//         super(value, sourceSection);
//     }
// 
//     @Override
//     public Object strip() {
//         List<Object> list = new ArrayList<Object>();
//         for (Syntax<? extends Object> syntax : getValue()) {
//             list.add(syntax.strip());
//         }
//         return MumblerList.list(list);
//     }
// 
//     @Override
//     public String getName() {
//         if (super.getName() != null) {
//             return super.getName();
//         }
//         if (this.getValue().size() == 0) {
//             return "()";
//         }
//         return this.getValue().car().getValue().toString() + "-" + this.hashCode();
//     }
// }


// Path: lang/src/test/java/mumbler/truffle/parser/AnalyzerTest.java
import static mumbler.truffle.MumblerLanguage.ID;
import static mumbler.truffle.parser.Namespace.TOP_NS;
import java.io.IOException;
import mumbler.truffle.MumblerContext;
import mumbler.truffle.syntax.ListSyntax;
import org.junit.Before;
import org.junit.Test;
import com.oracle.truffle.api.source.Source;

package mumbler.truffle.parser;






public class AnalyzerTest {

    MumblerContext context;
    Analyzer analyzer;
    Namespace fileNs;

    @Before
    public void setUp() {
        context = new MumblerContext();
        fileNs = new Namespace(TOP_NS, context.getGlobalNamespace());