src5_rs/core/parser/
ast.rs1use cairo_lang_compiler::db::RootDatabase;
2use cairo_lang_diagnostics::DiagnosticsBuilder;
3use cairo_lang_filesystem::db::FilesGroup;
4use cairo_lang_filesystem::ids::{FileLongId, VirtualFile};
5use cairo_lang_parser::parser::Parser;
6use cairo_lang_starknet::plugin::StarkNetPlugin;
7use cairo_lang_syntax::node::{SyntaxNode, TypedSyntaxNode};
8use std::sync::Arc;
9
10pub fn get_database_with_starknet_plugin() -> RootDatabase {
11 RootDatabase::builder()
12 .with_semantic_plugin(Arc::new(StarkNetPlugin::default()))
13 .build()
14 .unwrap()
15}
16
17pub fn get_syntax_tree(db: &RootDatabase, content: String) -> SyntaxNode {
19 let virtual_file = db.intern_file(FileLongId::Virtual(VirtualFile {
20 parent: None,
21 name: "string_to_parse".into(),
22 content: Arc::new(content.clone()),
23 }));
24 let mut diagnostics = DiagnosticsBuilder::new();
25 Parser::parse_file(db, &mut diagnostics, virtual_file, content.as_str()).as_syntax_node()
26}