Package wyvern.tools.parsing

Source Code of wyvern.tools.parsing.DSLLit

package wyvern.tools.parsing;

import wyvern.tools.errors.FileLocation;
import wyvern.tools.typedAST.abs.AbstractTypedAST;
import wyvern.tools.typedAST.core.values.Obj;
import wyvern.tools.typedAST.core.values.UnitVal;
import wyvern.tools.typedAST.extensions.TSLBlock;
import wyvern.tools.typedAST.extensions.interop.java.Util;
import wyvern.tools.typedAST.interfaces.TypedAST;
import wyvern.tools.typedAST.interfaces.Value;
import wyvern.tools.types.Environment;
import wyvern.tools.types.MetaType;
import wyvern.tools.types.Type;
import wyvern.tools.types.extensions.TypeType;
import wyvern.tools.util.TreeWriter;
import wyvern.tools.parsing.ExtParser;

import java.io.IOException;
import java.io.StringReader;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;

/**
* Created by Ben Chung on 3/11/14.
*/
public class DSLLit extends AbstractTypedAST {
  Optional<String> dslText = Optional.empty();
  TypedAST dslAST = null;
  Type dslASTType = null;

  public void setText(String text) {
    if (dslText == null)
      throw new RuntimeException();
    dslText = Optional.of(text);
  }

  public Optional<String> getText() { return dslText; }

  public DSLLit(Optional<String> dslText) {
    this.dslText = (dslText);
  }

  public TypedAST getAST() { return (dslAST); }

  @Override
  public Type getType() {
    return dslASTType;
  }

  private Type getDefaultType() {
    //TODO
    return null;
  }

  @Override
  public Type typecheck(Environment env, Optional<Type> expected) {
    Type dslType = expected.orElseGet(this::getDefaultType);

    Value vparser =
        Util.invokeValue(((MetaType) dslType).getMetaObj(),
            "getParser", UnitVal.getInstance(FileLocation.UNKNOWN));
    ExtParser parser = (ExtParser) Util.toJavaObject(vparser, ExtParser.class);

    try {
      dslAST = new TSLBlock(parser.parse(new ParseBuffer(dslText.get())));
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
    return dslAST.typecheck(env,expected);
  }

  @Override
  public Value evaluate(Environment env) {
    return null;
  }

  @Override
  public Map<String, TypedAST> getChildren() {
    return null;
  }

  @Override
  public TypedAST cloneWithChildren(Map<String, TypedAST> newChildren) {
    return null;
  }

  @Override
  public FileLocation getLocation() {
    return null;
  }

  @Override
  public void writeArgsToTree(TreeWriter writer) {

  }
}
TOP

Related Classes of wyvern.tools.parsing.DSLLit

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.