示例#1
0
        /// <inheritdoc />
        public override IExpression Parse(MoLangParser parser, Token token, IExpression leftExpr)
        {
            if (parser.MatchToken(TokenType.Colon))
            {
                return(new TernaryExpression(leftExpr, null, parser.ParseExpression(Precedence)));
            }
            else
            {
                IExpression thenExpr = parser.ParseExpression(Precedence);

                if (!parser.MatchToken(TokenType.Colon))
                {
                    return(new TernaryExpression(leftExpr, thenExpr, null));
                }
                else
                {
                    return(new TernaryExpression(leftExpr, thenExpr, parser.ParseExpression(Precedence)));
                }
            }
        }
示例#2
0
        /// <inheritdoc />
        public override IExpression Parse(MoLangParser parser, Token token)
        {
            List <IExpression> exprs = new List <IExpression>();

            if (!parser.MatchToken(TokenType.CurlyBracketRight))
            {
                do
                {
                    if (parser.MatchToken(TokenType.CurlyBracketRight, false))
                    {
                        break;
                    }

                    exprs.Add(parser.ParseExpression(Precedence.Scope));
                } while (parser.MatchToken(TokenType.Semicolon));

                parser.ConsumeToken(TokenType.CurlyBracketRight);
            }

            return(new StatementExpression(exprs.ToArray()));
        }