Esempio n. 1
0
        VariableDeclarationStatementSyntax VarDeclaration()
        {
            if (Accept("let") == null)
            {
                return(null);
            }
            var idToken = Expect(TokenType.Identifier);
            var varDecl = new VariableDeclarationStatementSyntax(new IdentifierNameSyntax(idToken.Value));

            if (VarPrimeDeclaration() is var initExpr && initExpr != null)
            {
                varDecl.Children.Add(initExpr);
            }
            return(varDecl);

            ExpressionSyntax VarPrimeDeclaration()
            {
                if (Accept("=") == null)
                {
                    return(null);
                }
                if (Expression() is var initExpression && initExpression == null)
                {
                    throw new Exception("Expected an expression");
                }
                return(initExpression);
            }
        }
Esempio n. 2
0
        public override ProgValue Visit(VariableDeclarationStatementSyntax syntax)
        {
            var value = syntax.Value?.Accept(this) ?? NoneValue.Value;

            _logger.Log($"VAR: {syntax.Identifier.Name} = {value}");
            _symbolTable.AddSymbol(syntax.Identifier.Name, value);
            return(value);
        }