pipeline_script/
lib.rs

1mod context;
2mod engine;
3mod error;
4mod expr;
5mod lexer;
6mod module;
7mod parser;
8mod plugin;
9mod position;
10mod stmt;
11mod token;
12mod types;
13
14#[cfg(test)]
15mod tests {
16    use crate::engine::Engine;
17    use std::sync::{Arc, RwLock};
18    // use crate::engine::Engine;
19    use crate::lexer::Lexer;
20    use crate::module::Module;
21    use crate::parser::PipelineParser;
22    // use crate::module::Module;
23    // use crate::parser::PipelineParser;
24
25    #[test]
26    fn test_lexer() {
27        let lexer = Lexer::from_script(
28            "main",
29            r#"
30fun add(a:Int,b:Int){
31    return a+b
32}
33        "#,
34        );
35        for (_, pos) in lexer.clone() {
36            println!("{:?}", pos);
37            let line1 = lexer.line(pos.row);
38            println!("{}", line1);
39            let p = String::from(' ');
40            let mut p = p.repeat(pos.col - 1);
41            p.push('↑');
42            println!("{}", p);
43        }
44    }
45    #[test]
46    fn test_parser() {
47        let lexer = Lexer::from_script(
48            "main",
49            r#"
50        val a=123456;
51        println(a);
52        fun test():Unit{
53            println("Hello,Word")
54        }
55        "#,
56        );
57        let m = Module::new("main");
58        let mut parser = PipelineParser::new(lexer, Arc::new(RwLock::new(m)));
59        let s = parser.parse_stmt_blocks().unwrap();
60        // let f=parser.get_module();
61        println!("{:?}", s);
62        // println!("{:?}",m);
63    }
64    #[test]
65    fn test_engine() {
66        let mut e = Engine::default();
67        e.compile(
68            r#"
69        fun range(n:Int):Array{
70            let i=0
71            let a=[]
72            while i<n{
73                a.append(i.clone())
74                i=i+1
75            }
76            return a
77        }
78        "#,
79        );
80        e.run(
81            r#"
82        let a=readInt()
83        print(a)
84        "#,
85        );
86    }
87
88    #[test]
89    fn it_works() {}
90}