Beispiel #1
0
        public IExpression ParseExpression(IEnumerator <IToken> tokens)
        {
            var expr = ParseAssignment(tokens.NextNonIgnorable());

            if (tokens.Current.Type != TokenType.End)
            {
                var invalid = ParseInvalid(ErrorCode.InvalidSymbol, tokens);
                expr = new BinaryExpression.Multiply(expr, invalid);
            }

            return(expr);
        }
Beispiel #2
0
 private static void CheckProperStatementEnd(IEnumerator <IToken> tokens, ref IExpression expr)
 {
     if (tokens.Current.Type == TokenType.SemiColon)
     {
         tokens.NextNonIgnorable();
     }
     else if (tokens.Current.Type != TokenType.End)
     {
         var invalid = ParseInvalid(ErrorCode.InvalidSymbol, tokens);
         expr = new BinaryExpression.Multiply(expr, invalid);
     }
 }
Beispiel #3
0
 private static void CheckProperlyTerminated(IEnumerator <IToken> tokens, ref IExpression expr)
 {
     if (tokens.Current.Type == TokenType.SemiColon)
     {
         tokens.NextNonIgnorable();
     }
     else
     {
         var invalid = new InvalidExpression(ErrorCode.TerminatorExpected, tokens.Current);
         expr = new BinaryExpression.Multiply(expr, invalid);
     }
 }