Move pest parser into module

This commit is contained in:
mars 2022-03-25 15:57:34 -06:00
parent b47137d27d
commit 15687c337c
4 changed files with 24 additions and 18 deletions

View File

@ -44,12 +44,6 @@ impl ColorTheme {
}
}
mod pest_parser {
#[derive(Parser)]
#[grammar = "sprite.pest"]
pub struct SpriteParser;
}
#[cfg(test)]
mod tests {
use super::*;
@ -67,18 +61,6 @@ mod tests {
}
}
#[test]
fn parse_pest() {
use pest::Parser;
use pest_parser::{Rule, SpriteParser};
let source = include_str!("test/clock.fae");
let parsed = SpriteParser::parse(Rule::module, source);
match parsed {
Ok(ok) => println!("{:#?}", ok),
Err(err) => panic!("{}", err),
}
}
// TODO use spans to color-code instead of raw tokens, to show original whitespace
/*#[test]
fn color_file() {

View File

@ -3,6 +3,8 @@
use crate::lexer::{Lexer, Token};
pub mod pest;
#[derive(Debug)]
pub struct ParseTree<'a> {
pub defs: Vec<Definition<'a>>,

22
src/parse/pest.rs Normal file
View File

@ -0,0 +1,22 @@
pub use pest::Parser;
#[derive(Parser)]
#[grammar = "parse/sprite.pest"]
pub struct SpriteParser;
#[cfg(test)]
mod tests {
use super::*;
fn parse(rule: Rule, src: &str) {
match SpriteParser::parse(rule, src) {
Ok(ok) => println!("{:#?}", ok),
Err(err) => panic!("{}", err),
}
}
#[test]
fn parse_clock() {
parse(Rule::module, include_str!("../test/clock.fae"));
}
}