Example #1
0
        /// <summary>
        /// Parse a file into a stack queue.
        /// </summary>
        /// <param name="text">Text to parse.</param>
        /// <returns>Returns compiler output.</returns>
        public static CompilerOutput ParseString(string text)
        {
            var variables = new List<string>();
            var functions = new Dictionary<string, Queue<MuftecStackItem>>();
            var defines = new Dictionary<string, string>();
            var appState = new ApplicationCore(variables, functions, defines);
            var evaluator = new EvaluatorState(appState);

            var lineNum = 1;

            // Get each line to count
            foreach (var line in text.Replace("\r", "").Split('\n'))
            {
                try
                {
                    evaluator.EvaluateLine(line, lineNum);
                    lineNum++;
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error parsing at line " + lineNum);
                    Console.WriteLine("-----");
                    Console.WriteLine(line);
                    Console.WriteLine("-----");

            #if DEBUG
                    throw;
            #else
                    Console.WriteLine(e);
                    Console.WriteLine("-----");

                    return null;
            #endif
                }
            }

            // Return compiler output
            return new CompilerOutput { Variables = variables, Functions = functions, MainFunctionName = evaluator.LastFunction, MainFunction = new MuftecStackItem(evaluator.LastFunction, MuftecAdvType.Function) };
        }
 public ConditionalFunctionEvaluatorState(ApplicationCore core)
     : base(core)
 {
 }
Example #3
0
 public EvaluatorState(ApplicationCore core)
 {
     Core = core;
 }
Example #4
0
 public ConditionalState(ApplicationCore core)
 {
     Core = core;
     _trueCore = new ApplicationCore(core.Variables, core.Functions, core.Defines, new Queue<MuftecStackItem>(), core.LineNumber);
     _falseCore = new ApplicationCore(core.Variables, core.Functions, core.Defines, new Queue<MuftecStackItem>(), core.LineNumber);
 }
Example #5
0
 public FunctionState(ApplicationCore core)
 {
     Core = core;
     FunctionCore = CreateFunctionCore(core);
     Evaluator = new FunctionEvaluatorState(FunctionCore);
 }
Example #6
0
 private ApplicationCore CreateFunctionCore(ApplicationCore existingCore)
 {
     var queue = new Queue<MuftecStackItem>();
     return new ApplicationCore(existingCore.Variables, existingCore.Functions, existingCore.Defines, queue, existingCore.LineNumber);
 }