示例#1
0
        /// <summary>
        /// Parses the time expression.
        /// - 12pm
        /// - 12:30pm
        /// - 12:30 pm
        /// </summary>
        /// <returns></returns>
        public override Expr Parse()
        {
            var startToken = _tokenIt.NextToken;
            var time       = ParseTime(this, false, false);

            return(Exprs.Const(new LTime(time), startToken));
        }
示例#2
0
        /// <summary>
        /// Parses the day expression.
        /// Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
        /// </summary>
        /// <returns></returns>
        public override Expr Parse()
        {
            var startToken = _tokenIt.NextToken;

            _tokenIt.Advance();
            var word = _tokenIt.NextToken.Token.Text;

            _tokenIt.Advance();
            return(Exprs.Const(new LString(word), startToken));
        }
        /// <summary>
        /// @addwords( nasdaq, fluent script )
        /// </summary>
        /// <returns></returns>
        public override Expr Parse()
        {
            var startToken = _tokenIt.NextToken;

            if (_idCount > 0)
            {
                _tokenIt.Advance(_idCount);
            }

            // Finally move past this plugin.
            _tokenIt.Advance();
            return(Exprs.Const(new LString(_word), startToken));
        }
示例#4
0
        /// <summary>
        /// Sorts expression
        /// </summary>
        /// <returns></returns>
        public override Expr Parse(object context)
        {
            var constExp = context as ConstantExpr;
            var ctx      = _parser.Context;
            var t        = _tokenIt.Advance();
            var lobj     = (LObject)constExp.Value;

            // Validate.
            if (lobj.Type != LTypes.Number)
            {
                throw _tokenIt.BuildSyntaxException("number required when using units : " + t.Token.Text, t);
            }

            var lval     = ((LNumber)lobj).Value;
            var result   = ctx.Units.ConvertToUnits(lval, t.Token.Text);
            var lclass   = LangTypeHelper.ConvertToLangUnit(result);
            var finalExp = Exprs.Const(lclass, t);

            // Move past the plugin.
            _tokenIt.Advance();
            return(finalExp);
        }