Ejemplo n.º 1
0
        public DecompilerLookup(ScriptEngineDefinition definition)
        {
            m_functionOpCodeLookup = new Dictionary <short, ExpressionReference>();
            m_globalOpCodeLookup   = new Dictionary <short, Global>();

            // Type casters
            foreach (ExtendedTypeBase t in definition.ExtendedTypes)
            {
                foreach (InternalFunction f in t.ExplicitCasters)
                {
                    m_functionOpCodeLookup.Add(f.OperationCode, new CasterReference(/*f*/));
                }
            }

            // Special usage functions
            for (int i = 0; i < (int)FunctionSpecification.SupiFunctionCount; i++)
            {
                InternalFunction sf = definition.SpecificFunctions[i];
                m_functionOpCodeLookup.Add(sf.OperationCode, new OperatorReference(sf));
            }

            // Recurse through namespaces
            foreach (Namespace ns in definition.Namespaces)
            {
                CreateLookup(ns, null);
            }
        }
Ejemplo n.º 2
0
        public static ScriptingAssembly Decompile(byte[] scriptNodeData, ScriptEngineDefinition engineDefinition, string[] tagList, ScenarioBase scnr)
        {
            s_nodeDataReader = new BinaryReader(new MemoryStream(scriptNodeData, 56, scriptNodeData.Length - 56, false));
            s_globals        = new List <NodeBase>();
            s_scripts        = new List <NodeBase>();

            s_engineDefinition = engineDefinition;
            s_tagList          = tagList;
            s_scnr             = scnr;

            ScenarioScriptGlobal[] scnrGlobals = s_scnr.GetScriptGlobals();
            ScenarioScript[]       scnrScripts = s_scnr.GetScripts();

            foreach (ScenarioScriptGlobal g in scnrGlobals)
            {
                CompiledScriptNode cnode = new CompiledScriptNode(g.InitialisationExpressionIndex, s_nodeDataReader);
                s_globals.Add(new VariableNode(g.Name, g.Type, DecompileNode(cnode)));
            }

            foreach (ScenarioScript s in scnrScripts)
            {
                CompiledScriptNode cnode = new CompiledScriptNode(s.RootExpressionIndex, s_nodeDataReader);
                s_scripts.Add(new ScriptNode(s.Name, (ScriptType)s.ScriptType, s.ReturnType, DecompileNode(cnode).Children));
            }

            ScriptingAssembly assembly = new ScriptingAssembly(s_engineDefinition, s_globals, s_scripts);

            s_nodeDataReader   = null;
            s_globals          = null;
            s_scripts          = null;
            s_engineDefinition = null;
            s_tagList          = null;
            s_scnr             = null;

            return(assembly);
        }
Ejemplo n.º 3
0
 public void LoadScriptEngineDefinition(ScriptEngineDefinition def)
 {
     m_scriptEngineDefinition = def;
     m_scriptEngineDefinition.CreateNamespaceLookup();
 }
Ejemplo n.º 4
0
 public DynamicScriptProcessor(ScriptEngineDefinition engineDefinition)
 {
     m_engineDefinition = engineDefinition;
 }
Ejemplo n.º 5
0
 public ScriptingAssembly(ScriptEngineDefinition engineDefinition)
     : this(engineDefinition, new List <NodeBase>(), new List <NodeBase>())
 {
 }
Ejemplo n.º 6
0
 public ScriptingAssembly(ScriptEngineDefinition engineDefinition, List <NodeBase> globals, List <NodeBase> scripts)
 {
     m_engineDefinition = engineDefinition;
     m_namespaces       = new List <NamespaceNode>();
     m_namespaces.Add(new NamespaceNode(globals, scripts));
 }
Ejemplo n.º 7
0
 public EditorLookup(ScriptEngineDefinition definition)
 {
 }
Ejemplo n.º 8
0
 protected VisitorProcessorBase(ScriptingAssembly assembly)
 {
     m_assembly         = assembly;
     m_engineDefinition = assembly.EngineDefinition;
 }