internal PrimitiveToken(PrimitiveTokenDataSet dataSet)
 {
     parent           = dataSet.Parent;
     codeType         = dataSet.DicValue.Type;
     codeExtraFlags   = dataSet.DicValue.Extra;
     dicValueName     = dataSet.DicValue.Name;
     oparatorPriority = dataSet.DicValue.OparatorPriority;
     tokenOffset      = dataSet.TokenOffset;
     type             = dataSet.Type;
     flag             = dataSet.Flag;
     value            = dataSet.Value;
     name             = dataSet.Name;
 }
        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));
        }