Address PR comments

This commit is contained in:
Victor Song 2024-01-30 03:23:39 -06:00
parent cdb8a88ea3
commit 1918f9b9e0
4 changed files with 78 additions and 58 deletions

View file

@ -187,6 +187,25 @@ impl SourceFile {
}
}
impl ast::Literal {
pub fn parse(text: &str) -> Parse<ast::Literal> {
let lexed = parser::LexedStr::new(text);
let parser_input = lexed.to_input();
let parser_output = parser::TopEntryPoint::Expr.parse(&parser_input);
let (green, mut errors, _) = parsing::build_tree(lexed, parser_output);
let root = SyntaxNode::new_root(green.clone());
errors.extend(validation::validate(&root));
assert_eq!(root.kind(), SyntaxKind::LITERAL);
Parse {
green,
errors: if errors.is_empty() { None } else { Some(errors.into()) },
_ty: PhantomData,
}
}
}
impl ast::TokenTree {
pub fn reparse_as_comma_separated_expr(self) -> Parse<ast::MacroEagerInput> {
let tokens = self.syntax().descendants_with_tokens().filter_map(NodeOrToken::into_token);