Example #1
0
    def test_return_statement(self) -> None:

        program: Program = Program(statements=[
            ReturnStatement(token=Token(TokenType.RETURN, literal="regresa"),
                            return_value=Identifier(token=Token(
                                TokenType.IDENT, literal="mi_var"),
                                                    value="mi_var"))
        ])

        program_str = str(program)
        self.assertEquals(program_str, "regresa mi_var;")
    def parse_program(self) -> Program:
        program: Program = Program(statements=[])

        assert self._current_token is not None
        while self._current_token.token_type != TokenType.EOF:
            statement = self._parse_statement()
            if statement is not None:
                program.statements.append(statement)

            self._advance_tokens()

        return program
    def test_integer_expressions(self) -> None:
        program: Program = Program(statements=[
            ExpressionStatement(
                token=Token(TokenType.INT, literal='5'),
                expression=Integer(
                    token=Token(TokenType.INT, literal='5'),
                    value=5
                )
            ),
        ])
        
        program_str = str(program)

        self.assertEquals(program_str, '5')
Example #4
0
    def test_let_statement(self) -> None:

        program: Program = Program(statements=[
            LetStatement(token=Token(TokenType.LET, literal="variable"),
                         name=Identifier(token=Token(TokenType.IDENT,
                                                     literal="mi_var"),
                                         value="mi_var"),
                         value=Identifier(token=Token(TokenType.IDENT,
                                                      literal="otra_variable"),
                                          value="otra_variable"))
        ])

        program_str = str(program)
        self.assertEquals(program_str, "variable mi_var = otra_variable;")
Example #5
0
    def test_let_statements(self) -> None:
        
        program: Program = Program(statements=[
                LetStatement(
                    token = Token(TokenType.LET, literal='variable', line=1), 
                    name  = Identifier(token = Token(TokenType.IDENT, literal = 'mi_var', line=1), value = 'mi_var' ),
                    value = Identifier(token = Token(TokenType.IDENT, literal = 'otra_variable', line=1), value = 'otra_var')
                )
            ]
        )

        program_str = str(program)
        print(program_str)
        self.assertEquals(program_str, 'variable mi_var = otra_var;')
Example #6
0
    def test_expression_statement(self) -> None:

        program: Program = Program(statements=[
            ExpressionStatement(token=Token(TokenType.IDENT, literal="foobar"),
                                expression=Identifier(token=Token(
                                    TokenType.IDENT, literal="foobar"),
                                                      value="foobar")),
            ExpressionStatement(token=Token(TokenType.INT, literal="5"),
                                expression=Identifier(token=Token(
                                    TokenType.INT, literal="5"),
                                                      value="5"))
        ])

        program_str = str(program)
        self.assertEquals(program_str, "foobar5")
Example #7
0
    def test_return_statement(self) -> None:
        program: Program = Program(
            statements=[
                ReturnStatement(
                    token = Token(TokenType.RETURN, literal='regresa', line=1),
                    return_value = Identifier(
                                Token(TokenType.IDENT, literal = 'otra_variable',line=1), 
                                value = '5'
                            )
                )
            ]
        )

        program_str = str(program)
        self.assertEquals(program_str, 'regresa 5;')