public static UnifiedIntegerLiteral CreateDecimalLiteral(XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "DECIMAL_LITERAL");

            /*
             * DECIMAL_LITERAL : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
             */
            var result = LiteralFuzzyParser.ParseBigInteger(node.Value);

            return(UnifiedIntegerLiteral.CreateInt32(result));
        }
        public static UnifiedIntegerLiteral CreateOctalLiteral(XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "OCTAL_LITERAL");

            /*
             * OCTAL_LITERAL : '0' ('0'..'7')+ IntegerTypeSuffix? ;
             */
            var result =
                LiteralFuzzyParser.ParseOcatleBigInteger(
                    node.Value.Substring(1));

            return(UnifiedIntegerLiteral.CreateInt32(result));
        }
        // literals
        public static UnifiedIntegerLiteral CreateHexLiteral(XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "HEX_LITERAL");

            /*
             * HEX_LITERAL : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
             */
            var result =
                LiteralFuzzyParser.ParseHexicalBigInteger(
                    node.Value.Substring(2));

            return(UnifiedIntegerLiteral.CreateInt32(result));
        }
 private static UnifiedExpression CreateRange(XElement node)
 {
     Contract.Requires(node != null);
     Contract.Requires(node.Name() == "Range");
     if (node.Value.Contains("..."))
     {
         var numbers = node.Value.Split(
             new[] { "..." }, StringSplitOptions.None);
         return(UnifiedRange.CreateNotContainingMax(
                    UnifiedIntegerLiteral.CreateInt32(
                        LiteralFuzzyParser.ParseBigInteger(numbers[0])),
                    UnifiedIntegerLiteral.CreateInt32(
                        LiteralFuzzyParser.ParseBigInteger(numbers[1]))));
     }
     {
         var numbers = node.Value.Split(
             new[] { ".." }, StringSplitOptions.None);
         return(UnifiedRange.Create(
                    UnifiedIntegerLiteral.CreateInt32(
                        LiteralFuzzyParser.ParseBigInteger(numbers[0])),
                    UnifiedIntegerLiteral.CreateInt32(
                        LiteralFuzzyParser.ParseBigInteger(numbers[1]))));
     }
 }