示例#1
0
        void parseValue()
        {
            ComputedValue = new ComputedValueResult();

            ComputedValue.Literal = ValueMiddle.StartsWith("#");

            bool found = false;

            foreach (char identifier in BaseIdentifiers.Keys)
            {
                //Console.WriteLine(identifier.ToString());
                bool check = ValueMiddle[0] == identifier;
                if (ValueMiddle.Length > 1)
                {
                    check = check || ValueMiddle[1] == identifier;
                }

                if (check)
                {
                    ComputedValue.ValueString = ValueMiddle.Split(identifier)[1];

                    if (identifier == '0' && ComputedValue.ValueString.Length == 0)
                    {
                        ComputedValue.ValueString = "0";
                        ComputedValue.Base        = 10;

                        found = true;
                        break;
                    }

                    ComputedValue.Base = BaseIdentifiers[identifier];
                    found = true;
                    break;
                }
            }
            if (!found)
            {
                ComputedValue.ValueString = ValueMiddle;
                if (ComputedValue.Literal)
                {
                    ComputedValue.ValueString = ComputedValue.ValueString.Substring(1, ComputedValue.ValueString.Length - 1);
                }
                ComputedValue.Base = 10;
            }

            //if (ComputedValue.Literal)
            //    ComputedValue.ValueString = ComputedValue.ValueString.Substring(1, ComputedValue.ValueString.Length - 1);

            if (ComputedValue.ValueString.StartsWith("-"))
            {
                ComputedValue.ValueString  = ComputedValue.ValueString.Substring(1, ComputedValue.ValueString.Length - 1);
                ComputedValue.MakeNegative = true;
            }

            return;
        }
示例#2
0
        public void ParseValue()
        {
            //get the value out of the string

            if (this.Type == DirectiveType.@string)
            {
                return;
            }

            this.ComputedValue = Assembly.NumeralFromFormattedLiteralString(RawArgumentWithoutQuotes);
        }
示例#3
0
        public static ComputedValueResult NumeralFromFormattedLiteralString(string literalString)
        {
            ComputedValueResult ComputedValue = new ComputedValueResult();

            if (literalString.StartsWith("-"))
            {
                ComputedValue.MakeNegative = true;
                literalString = literalString.Substring(1, literalString.Length - 1);
            }

            ComputedValue.Literal = literalString.StartsWith("#");

            bool found = false;

            foreach (char identifier in BaseIdentifiers.Keys)
            {
                //Console.WriteLine(identifier.ToString());
                bool check = literalString[0] == identifier;
                if (literalString.Length > 1)
                {
                    check = check || literalString[1] == identifier;
                }

                if (check)
                {
                    ComputedValue.ValueString = literalString.Split(identifier)[1];

                    if (identifier == '0' && ComputedValue.ValueString.Length == 0)
                    {
                        ComputedValue.ValueString = "0";
                        ComputedValue.Base        = 10;

                        found = true;
                        break;
                    }

                    ComputedValue.Base = BaseIdentifiers[identifier];
                    found = true;
                    break;
                }
            }
            if (!found)
            {
                ComputedValue.ValueString = literalString;
                if (ComputedValue.Literal)
                {
                    ComputedValue.ValueString = ComputedValue.ValueString.Substring(1, ComputedValue.ValueString.Length - 1);
                }
                ComputedValue.Base = 10;
            }

            //if (ComputedValue.Literal)
            //    ComputedValue.ValueString = ComputedValue.ValueString.Substring(1, ComputedValue.ValueString.Length - 1);

            if (ComputedValue.ValueString.StartsWith("-"))
            {
                ComputedValue.ValueString  = ComputedValue.ValueString.Substring(1, ComputedValue.ValueString.Length - 1);
                ComputedValue.MakeNegative = true;
            }

            return(ComputedValue);
        }