Esempio n. 1
0
        internal bool CodeLookUp(HspDictionaryKey key, out HspDictionaryValue value)
        {
            if (codeDictionary.TryGetValue(key, out value))
            {
                return(true);
            }
            HspDictionaryKey newkey = new HspDictionaryKey(key);

            newkey.Value    = -1;
            newkey.AllValue = true;
            if (codeDictionary.TryGetValue(newkey, out value))
            {
                return(true);
            }
            if ((key.Type == 0x11) && (key.Value >= 0x1000))            //ComFunction
            {
                value.Name  = "comfunc";
                value.Type  = HspCodeType.ComFunction;
                value.Extra = HspCodeExtraFlags.NONE;
                return(true);
            }
            if (key.Type >= 0x12)            //PlugInFunction
            {
                value.Name             = "pluginFuction";
                value.OparatorPriority = key.Type - 0x12;
                value.Type             = HspCodeType.PlugInFunction;
                value.Extra            = HspCodeExtraFlags.NONE;
                return(true);
            }
            return(false);
        }
Esempio n. 2
0
        private void loadCodeDictionary(TextFieldParser stream)
        {
            while (!stream.EndOfData)
            {
                string[] tokens = stream.ReadFields();
                if (tokens.Length == 0)
                {
                    continue;
                }
                if (tokens[0] == "$End")
                {
                    return;
                }

                if (tokens.Length >= 4)
                {
                    string[] extraFlags = new string[tokens.Length - 4];
                    Array.Copy(tokens, 4, extraFlags, 0, tokens.Length - 4);
                    HspDictionaryKey   key   = new HspDictionaryKey(tokens[0], tokens[1]);
                    HspDictionaryValue value = new HspDictionaryValue(tokens[2], tokens[3], extraFlags);
                    codeDictionary.Add(key, value);
                }
            }
        }
Esempio n. 3
0
        private PrimitiveToken createPrimitive(AxData data, HspDictionaryValue dicValue, int theTokenOffset, int type, int flag, int value, int extraValue)
        {
            PrimitiveTokenDataSet dataset = new PrimitiveTokenDataSet();

            dataset.Parent      = data;
            dataset.DicValue    = dicValue;
            dataset.TokenOffset = theTokenOffset;
            dataset.Type        = type;
            dataset.Flag        = flag;
            dataset.Value       = value;
            dataset.Name        = dicValue.Name;
            switch (dicValue.Type)
            {
            case HspCodeType.Label:
                return(new LabelPrimitive(dataset));

            case HspCodeType.Integer:
                return(new IntegerPrimitive(dataset));

            case HspCodeType.Double:
                return(new DoublePrimitive(dataset, data.ReadDoubleLiteral(value)));

            case HspCodeType.String:
                return(new StringPrimitive(dataset, data.ReadStringLiteral(value)));

            case HspCodeType.Symbol:
                return(new SymbolPrimitive(dataset));

            case HspCodeType.Param:
                return(new ParameterPrimitive(dataset));

            case HspCodeType.Variable:
                return(new GlobalVariablePrimitive(dataset));

            case HspCodeType.Operator:
                return(new OperatorPrimitive(dataset));

            case HspCodeType.IfStatement:
            case HspCodeType.ElseStatement:
                if (extraValue >= 0)
                {
                    return(new IfStatementPrimitive(dataset, extraValue));
                }
                else
                {
                    return(new HspFunctionPrimitive(dataset));
                }

            case HspCodeType.HspFunction:
                return(new HspFunctionPrimitive(dataset));

            case HspCodeType.OnStatement:
                return(new OnFunctionPrimitive(dataset));

            case HspCodeType.OnEventStatement:
                return(new OnEventFunctionPrimitive(dataset));

            case HspCodeType.McallStatement:
                return(new McallFunctionPrimitive(dataset));

            case HspCodeType.UserFunction:
                return(new UserFunctionPrimitive(dataset));

            case HspCodeType.DllFunction:
                return(new DllFunctionPrimitive(dataset));

            case HspCodeType.PlugInFunction:
                return(new PlugInFunctionPrimitive(dataset));

            case HspCodeType.ComFunction:
                return(new ComFunctionPrimitive(dataset));

            case HspCodeType.NONE:
            default:
                break;
            }
            return(new UnknownPrimitive(dataset));
        }