public Token(string str,CodeData data,ref int column,bool flag)
 {
     this.data = data;
     int fir = column - (flag ? 1 : 0);
     for(;column<str.Length;++column)
     {
         if (flag ? str[column] == '"' : (str[column] == ')' || str[column] == ' ' || str[column] == '#'))
         {
             this.token = str.Substring(fir, column - fir + (flag ? 1 : 0));
             return;
         }
     }
     this.token = str.Substring(fir, column - fir + (flag ? 1 : 0));
 }
 public MultiSentence(IEnumerable<Sentence> sentences, CodeData data)
 {
     this.sentences = sentences;
     this.data = data;
 }
 public Foreach(string name,Sentence sentence,Expression expr,CodeData data)
 {
     this.name = name;
     this.sentence = sentence;
     this.expr = expr;
     this.data = data;
 }
 public YieldReturn(Expression expr,CodeData data)
 {
     this.data = data;
     this.expr = expr;
 }
 public Expr(Expression expr,CodeData data)
 {
     this.data = data;
     this.expr = expr;
 }
 public Global(string name,Expression expr,CodeData data)
 {
     this.data = data;
     this.name = name;
     this.expr = expr;
 }
 public If(IEnumerable<Tuple<Expression, Sentence>> sentences, CodeData data)
 {
     this.data = data;
     this.sentences = sentences;
     this.else_sentence = null;
 }
 public While(Expression cond,Sentence source,CodeData data)
 {
     this.data = data;
     this.cond = cond;
     this.source = source;
 }
 public For(Sentence source,string name,Expression first,Expression last,Expression step,CodeData data)
 {
     this.data = data;
     this.source = source;
     this.name = name;
     this.first = first;
     this.last = last;
     this.step = step;
 }
 public Function(IFunction func,IEnumerable<Expression> exprs,CodeData data)
 {
     this.func = func;
     this.exprs = exprs;
     this.data = data;
 }
 public Value(string name, CodeData data)
 {
     this.name = name;
     this.data = data;
 }
 public Literal(dynamic value,CodeData data)
 {
     this.data = data;
     this.value = value;
 }
 public Token(string token,CodeData data)
 {
     this.token = token;
     this.data = data;
 }
 public Tree(List<TokenTree> tree,CodeData data)
 {
     this.tree = tree;
     this.data = data;
 }
 public Tree(string str, int line, string filename)
 {
     int column = 0;
     this.tree = InitialParse(str, line, ref column, filename);
     this.data = new CodeData(line, 0, filename);
 }