~starkingdoms/starkingdoms

ref: 339f063faf61671754325b60bcad3ab02492e742 starkingdoms/kabel_test/src/main.rs -rw-r--r-- 1.5 KiB
339f063f — ghostly_zsh print, add, sub run with manually typed bytecode 1 year, 4 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//use std::{env, fs};

//use kabel::{debug::{debug_ast, debug_token_array}, run_lexer, run_parser, run_semantic_analysis};

use vm::{Value, VM};

//use crate::vm::{Value, VM};
mod vm;
mod string;

fn main() {
    /*let args: Vec<String> = env::args().collect();
    let program =
        fs::read_to_string(args[1].clone()).unwrap();

    let mut output = "".to_string();

    let lexer = run_lexer(program.to_string());

    for error in lexer.errors.clone() {
        output += &error.to_string();
        output += "\n";
    }
    output += &format!("{:?}", lexer.output);
    if lexer.errors.len() != 0 || lexer.output.len() == 0 {
        println!("{}", output);
        return;
    }
    //output += &debug_token_array(lexer.output.clone());
    output += "\n\n";

    let (ast, parser) = run_parser(program.to_string(), lexer.output);

    for error in parser.errors.clone() {
        output += &error.to_string();
        output += "\n";
    }
    if parser.errors.len() != 0 {
        println!("{}", output);
        return;
    }
    //output += &debug_ast(ast.clone(), 0);
    output += &format!("{:#?}", ast);
    output += "\n\n";
    let analyzer = run_semantic_analysis(program.to_string(), ast);
    for error in analyzer.errors.clone() {
        output += &error.to_string();
        output += "\n";
    }

    println!("{}", output);*/
    let mut vm = VM::new(vec![0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, 0xFE], vec![(1,6)],
        vec![Value::Num(1.),Value::Num(2.)], "print 1-2+2".to_string());
    vm.run().unwrap();
}