public string ParseCode(Translator translator, TreeReader reader)
        {
            var data = new List <string>();

            foreach (var arg in Args)
            {
                data.Add(translator.Emulate(arg, false));
            }

            if (
                Value.Args.Count == 1 &&
                Value.Args[0].IsDotUsed &&
                (Value.Args[0].Body[0] is VariableLexeme variableLexeme && variableLexeme.Value == "init")
                )
            {
                return($"new TENGRI_{Value.Value}(new dynamic[] {{{string.Join(",", data)}}})" +
                       (translator.InBlock ? ";" : ""));
            }

            if (Value.Value == "throw" && Args.Count == 1)
            {
                var variable = translator.Emulate(Args[0], false);

                return($"throw {variable};");
            }

            var main = Value.BuildVar(translator);

            return($"{main}(new dynamic[] {{{string.Join(",", data)}}})" + (translator.InBlock ? ";" : ""));
        }
Exemple #2
0
        public string ParseCode(Translator translator, TreeReader reader)
        {
            var variable = Left.BuildVar(translator);

            if (translator.ClassName != null)
            {
                return($"{variable} {Operator} {translator.Emulate(Right, false)}" +
                       (translator.InBlock ? ";" : ""));
            }
            else if (translator.ClassName == null && Operator == "=")
            {
                return($"class SYS_TENGRI_GLOBAL_{Left.Value} {{ public static dynamic {variable} = {translator.Emulate(Right, false)};}}");
            }
            return(null);
        }
Exemple #3
0
 public string ParseCode(Translator translator, TreeReader reader)
 {
     return($"foreach (dynamic TENGRI_{VarName} in {Array.BuildVar(translator)}.TENGRI_invoke()) {{{translator.Emulate(Block, true, translator.IsStaticBlock)}}}");
 }