Example #1
0
        public static void parseFile(Token token, EnegyData data, VariabelDatabase db)
        {
            if (parsers == null)
                setParser();

            token.next();
            while(data.State == RunningState.Normal && token.getCache().type() != TokenType.EOF)
            {
                ParserInterface p;

                switch (token.getCache().type())
                {
                    case TokenType.Use:
                    case TokenType.Class:
                    case TokenType.Function:
                        p = parsers[token.getCache().type()];
                        break;
                    case TokenType.Public:
                        p = pp;
                        break;
                    default:
                        data.setError(new ScriptError("In file you are only allow to use 'use', 'public', 'class' or 'function'", token.getCache().posision()), db);
                        return;
                }

                p.parse(data, db, token);
            }
        }
Example #2
0
        public static CVar convert(object c, EnegyData data, VariabelDatabase db)
        {
            if (c is string)
            {
                return Types.toString((string)c, data, db, new Posision(0,0));
            }
            else if (c is bool)
            {
                return new BooleanVariabel((bool)c);
            }
            else if (c is FunctionVariabel)
            {
                return (FunctionVariabel)c;
            }
            else if (c is double)
            {
                return Types.toInt((double)c, data, db, new Posision(0,0));
            }
            else if (c is int)
            {
                return Types.toInt(Convert.ToDouble((int)c), data, db, new Posision(0,0));
            }
            else if (c is ObjectVariabel)
                return (ObjectVariabel)c;
            else if(c is ClassVariabel)
            {
                return (ClassVariabel)c;
            }

            data.setError(new ScriptError("Unkown type: " + c.GetType().Name, new Posision(0, 0)), db);
            return new NullVariabel();
        }
Example #3
0
        public Energy()
        {
            Data = new EnegyData()
            {
                Config = new ScriptConfig()
            };

            //set the impontans config so the script not can change it!
            Data.Config.append("tcp.enable",         "false", false);
            Data.Config.append("file.system.enable", "false", false);

            VariabelDatabase = new VariabelDatabase();
            StartItems.CreateStartItems(Data, VariabelDatabase);
        }
Example #4
0
        public static void parse(Token token, EnegyData data, VariabelDatabase db)
        {
            if(parsers == null)
            {
                setParser();
            }

            token.next();
            TokenType type;
            while (data.State == RunningState.Normal && (type = token.getCache().type()) != TokenType.EOF)
            {
                if (parsers.ContainsKey(type))
                {
                    parsers[type].parse(data, db, token);
                }
                else
                {
                    new VariabelParser().parse(data, db, token);
                }
            }
        }
Example #5
0
        public virtual void setError(ScriptError er, VariabelDatabase db)
        {
            if (State == RunningState.Error)
                return;
            State = RunningState.Error;
            ErrorData = er;

            if (Config.get("error.log.file", "null") != "null")
            {
                if (!File.Exists(Config.get("error.log.file", "null")))
                {
                    File.Create(Config.get("error.log.file", "null")).Close();
                }

                StreamWriter sw = new StreamWriter(Config.get("error.log.file", "null"), true);
                sw.WriteLine("[Line: " + er.Posision.Line + ", Row: " + er.Posision.Row + "]" + er.Message);
                sw.Flush();
                sw.Close();
            }

            if (ErrorHandler != null)
            {
                //okay here may not be a error handler and state must be set to normal
                FunctionVariabel eh = ErrorHandler;
                ErrorHandler = null;
                if (Config.get("error.handler.enable", "1") == "1")
                {
                    State = RunningState.Normal;
                    eh.call(this, db, er.Message, er.Posision.Line, er.Posision.Row);
                }
            }
        }
Example #6
0
 private static CVar Print_call(CVar[] stack, VariabelDatabase db, EnegyData data, Posision pos)
 {
     Console.WriteLine(stack[0].toString(pos, data, db));
     return null;
 }
Example #7
0
        private static CVar Useage_call(CVar[] stack, VariabelDatabase db, EnegyData data, Posision pos)
        {
            Console.WriteLine("----container----");
            foreach(string co in db.ContainerKeys())
            {
                Console.WriteLine("-" + co);
            }

            Console.WriteLine("------Global-----");
            foreach(string go in db.GlobalsKey())
            {
                Console.WriteLine("-" + go);
            }

            return new NullVariabel();
        }
Example #8
0
 public void Reaset()
 {
     VariabelDatabase = new VariabelDatabase();
     Data.setNormal();
 }