/// <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))); } } }
/// <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())); }