- Diseñe el test:
def test_if_else_expression(self) -> None:
source: str = 'if x > y then {z} else {w}'
# Aqui va el mismo codigo que en test_if_expression
# Test alternative
assert if_expression.alternative is not None
self.assertIsInstance(if_expression.alternative, Block)
self.assertEquals(len(if_expression.alternative.statements), 1)
alternative_statement = cast(
ExpressionStatement, if_expression.alternative.statements[0])
assert alternative_statement.expression is not None
self._test_identifier(alternative_statement.expression, 'w')
- Luego implemente lo necesario para parsear
else
, enparser.py
dentro de_parse_if
al final antes dereturn
, agregue:
if self._peek_token is not None:
if self._peek_token.token_type == TokenType.ELSE:
self._advance_tokens()
if not self._expected_token(TokenType.LBRACE):
return None
if_expression.alternative = self._parse_block()
La sintaxis de SigmaF es un poco diferente, pero la implementación es casi la misma que para LPP 😉
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?