titan_ast_runtime_lib/
lib.rs1mod ast_automata;
2mod ast_automata_builder;
3mod automata_data;
4mod automata_tmp_ast;
5mod backtracking_bottom_up_ast_automata;
6mod backtracking_bottom_up_branch;
7mod byte_buffer;
8mod byte_buffered_input_stream;
9mod dfa_token_automata;
10mod error;
11mod fa;
12mod follow_filter_backtracking_bottom_up_ast_automata;
13mod key_word_automata;
14mod key_word_dfa_token_automata;
15mod persistent_data;
16mod persistent_object;
17mod reducing_symbol;
18mod super_backtracking_bottom_up_ast_automata;
19mod super_dfa_token_automata;
20mod syntax_dfa;
21mod token_automata;
22mod token_automata_builder;
23mod token_dfa;
24mod token_reducing_symbol_input_stream;
25
26pub mod ast;
27pub mod ast_application;
28
29#[cfg(test)]
30mod tests_in_lib {
31 use std::collections::BTreeSet;
32
33 use crate::{ast_application::RuntimeAutomataAstApplication, token_automata::TokenBuilder};
34
35 #[test]
36 fn build_json_ast() {
37 let automata_file_path =
38 "D:/github-pro/titan/titan-ast/test/json/automata.data".to_string();
39 let source_file_path =
40 "D://github-pro/titan/titan-ast/test/json/titanLanguageConfig.json".to_string();
41 build_ast(&automata_file_path, &source_file_path);
42 }
43
44 #[test]
45 fn build_c_ast() {
46 let automata_file_path = "D:/github-pro/titan/titan-ast/test/c/automata.data".to_string();
47 let source_file_path = "D://github-pro/titan/titan-ast/test/c/helloworld.c".to_string();
48 build_ast(&automata_file_path, &source_file_path);
49 }
50
51 fn build_ast(automata_file_path: &String, source_file_path: &String) {
52 let mut app = RuntimeAutomataAstApplication::default();
53
54 let set_context_result = app.set_context(automata_file_path);
55 if set_context_result.is_err() {
56 println!("{}", set_context_result.err().unwrap());
57 return;
58 }
59
60 let build_ast_result = app.build_ast(source_file_path);
61
62 match build_ast_result {
63 Ok(ast) => println!("{:#?}", ast),
64 Err(err) => println!("{err}"),
65 }
66 }
67
68 #[test]
69 fn build_c_token() {
70 let mut app = RuntimeAutomataAstApplication::default();
71
72 let automata_file_path = String::from("D:/github-pro/titan/titan-ast/test/c/automata.data");
73 let set_context_result = app.set_context(&automata_file_path);
74 if set_context_result.is_err() {
75 println!("{}", set_context_result.err().unwrap());
76 return;
77 }
78
79 let source_code_file_path =
80 String::from("D://github-pro/titan/titan-ast/test/c/helloworld.c");
81
82 let tokens = app.token_automata.build_token(&source_code_file_path);
83
84 match tokens {
85 Ok(t) => {
86 for i in 0..t.len() {
87 let grammar_name = match &t[i].terminal {
88 crate::ast::Grammar::TerminalGrammar(terminal) => terminal.name.clone(),
89 crate::ast::Grammar::NonterminalGrammar(nonterminal) => {
90 nonterminal.name.clone()
91 }
92 };
93 println!(
94 "$-->>>>>{}-{}<<<<<--$",
95 String::from_utf8_lossy(&(t[i].text.data)).to_string(),
96 grammar_name
97 );
98 }
99 }
100 Err(err) => println!("{err}"),
101 };
102 }
103
104 #[test]
105 fn simple_test() {
106 let mut tree_set = BTreeSet::from([1, 2, 3, 4, 5, 99, 87, 6, 9]);
107 print!("{:?}", tree_set);
108
109 let reducing_symbol = 0;
110 }
111}