lc3_toolchain/ast/
parse.rs1use crate::ast::processed_ast::{Program, StandardTransform};
2use crate::ast::raw_ast::parse_ast;
3use pest::Parser;
4use pest_derive::Parser;
5
6#[derive(Parser)]
7#[grammar = "lc3.pest"]
8struct LC3Parser;
9
10pub fn get_ast(content: &str) -> Result<Program, pest::error::Error<Rule>> {
11 match LC3Parser::parse(Rule::Program, content) {
12 Ok(pairs) => {
13 let program = parse_ast(pairs.into_iter().next().unwrap());
14 let program = StandardTransform::new(true, content).transform(program);
15 Ok(program)
16 }
17 Err(e) => Err(e),
18 }
19}