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); }
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); } } }
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)); }