[−][src]Function rslint_parser::parse_text
pub fn parse_text(text: &str, file_id: usize) -> Parse<Script>
Parse text into a Parse
which can then be turned into an untyped root SyntaxNode
.
Or turned into a typed Script
with tree
.
use rslint_parser::{ast::BracketExpr, parse_text, AstNode, SyntaxToken, SyntaxNodeExt, util}; let parse = parse_text("foo. bar[2]", 0); // The untyped syntax node of `foo.bar[2]`, the root node is `Script`. let untyped_expr_node = parse.syntax().first_child().unwrap(); // SyntaxNodes can be turned into a nice string representation. println!("{:#?}", untyped_expr_node); // You can then cast syntax nodes into a typed AST node. let typed_ast_node = BracketExpr::cast(untyped_expr_node.first_child().unwrap().to_owned()).unwrap(); // Everything on every ast node is optional because of error recovery. let prop = dbg!(typed_ast_node.prop()).unwrap(); // You can then go back to an untyped SyntaxNode and get its range, text, parents, children, etc. assert_eq!(prop.syntax().text(), "2"); // Util has a function for yielding all tokens of a node. let tokens = untyped_expr_node.tokens(); assert_eq!(&util::concat_tokens(&tokens), "foo. bar[2]")