No sé si está bien que haga esto pero lo paso igual, si está mal me lo pueden comentar y no lo vuelvo a hacer nunca más y borro el comentario, bueno la cosa que esta es mi implementación del reto pero con mi lenguaje hecho en Rust:
use ezcript_ast::ast::Program;
use ezcript_ast::expressions::{Expressions, Integer};
use ezcript_ast::statements::{ReturnStatement, Statements};
use ezcript_lexer::tokens::{Literal, Token, TokenKind};
#[test]
fn test_ast_return_statement() {
let resource: &str = "return 0";
let program: Option<Program> =
Program::new(vec![Statements::ReturnStatement(ReturnStatement::new(
Token {
kind: TokenKind::Keyword,
lexeme: "return".to_string(),
literal: None,
line: 1,
},
Some(Expressions::Integer(Integer::new(
Token {
kind: TokenKind::Number,
lexeme: "0".to_string(),
literal: Some(Literal::Number(0.0)),
line: 1,
},
0,
1,
))),
1,
))]);
is_not_none!(program);
let program_str = program.unwrap().to_string();
assert_eq!(program_str, "return 0".to_string());
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.