|
|
@@ -2,7 +2,7 @@ use anyhow::Result;
|
|
|
use clap::Parser as ClapParser;
|
|
|
use std::fs::read_to_string;
|
|
|
|
|
|
-use zkas::{analyzer::Analyzer, lexer::Lexer, parser::Parser};
|
|
|
+use zkas::{analyzer::Analyzer, compiler::Compiler, lexer::Lexer, parser::Parser};
|
|
|
|
|
|
#[derive(clap::Parser)]
|
|
|
#[clap(name = "zkas", version)]
|
|
|
@@ -32,18 +32,34 @@ fn main() -> Result<()> {
|
|
|
let lexer = Lexer::new(filename, source.chars());
|
|
|
let tokens = lexer.lex();
|
|
|
|
|
|
- // println!("{:#?}", tokens);
|
|
|
-
|
|
|
let parser = Parser::new(filename, source.chars(), tokens);
|
|
|
let (constants, witnesses, statements) = parser.parse();
|
|
|
|
|
|
- // println!("{:#?}", constants);
|
|
|
- // println!("{:#?}", witnesses);
|
|
|
- // println!("{:#?}", statements);
|
|
|
-
|
|
|
let mut analyzer = Analyzer::new(filename, source.chars(), constants, witnesses, statements);
|
|
|
analyzer.analyze_types();
|
|
|
analyzer.analyze_semantic();
|
|
|
|
|
|
+ if cli.evaluate {
|
|
|
+ println!("{:#?}", analyzer.constants);
|
|
|
+ println!("{:#?}", analyzer.witnesses);
|
|
|
+ println!("{:#?}", analyzer.statements);
|
|
|
+ println!("{:#?}", analyzer.stack);
|
|
|
+ return Ok(())
|
|
|
+ }
|
|
|
+
|
|
|
+ let compiler = Compiler::new(
|
|
|
+ filename,
|
|
|
+ source.chars(),
|
|
|
+ analyzer.constants,
|
|
|
+ analyzer.witnesses,
|
|
|
+ analyzer.statements,
|
|
|
+ analyzer.stack,
|
|
|
+ !cli.strip,
|
|
|
+ );
|
|
|
+
|
|
|
+ let bincode = compiler.compile();
|
|
|
+
|
|
|
+ println!("{:#?}", bincode);
|
|
|
+
|
|
|
Ok(())
|
|
|
}
|