Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        /// <remarks>
        ///
        /// See http://www.dmtf.org/sites/default/files/standards/documents/DSP0221_3.0.0a.pdf
        /// A.1 Value definitions
        ///
        ///     literalValue       = integerValue / realValue /
        ///                          stringValue / octetStringValue
        ///                          booleanValue /
        ///                          nullValue /
        ///                          dateTimeValue
        ///
        /// </remarks>
        internal new static LiteralValueAst Parse(ParserStream stream)
        {
            //Note: This is a good candidate for the strategy pattern
            var peek = stream.Peek();

            if (peek is IntegerLiteralToken)
            {
                // integerValue
                return(IntegerValueAst.Parse(stream));
            }
            else if (peek is RealLiteralToken)
            {
                // doubleValue
                return(RealValueAst.Parse(stream));
            }
            else if (peek is StringLiteralToken)
            {
                // stringValue
                return(StringValueAst.Parse(stream));
            }
            else if (peek is BooleanLiteralToken)
            {
                // booleanValue
                return(BooleanValueAst.Parse(stream));
            }
            else if (peek is NullLiteralToken)
            {
                // nullValue
                return(NullValueAst.Parse(stream));
            }
            else
            {
                throw new UnexpectedTokenException(peek);
            }
        }
 private CompilerDirectiveAst(PragmaToken pragmaKeyword, IdentifierToken pragmaName, StringValueAst pragmaParameter)
 {
     this.PragmaKeyword   = pragmaKeyword ?? throw new ArgumentNullException(nameof(pragmaKeyword));
     this.PragmaName      = pragmaName ?? throw new ArgumentNullException(nameof(pragmaName));
     this.PragmaParameter = pragmaParameter ?? throw new ArgumentNullException(nameof(pragmaParameter));
 }