use super::types;
const HEADERMSG: &str = r#"
//
// This file was generated by llmaker.
//
"use std::cmp::Ordering;"
"#;
pub fn head_to_str(headvec: types::Head, setting: types::Setting) -> String {
let headstr = vecstr_to_str(headvec);
let (main_type_str, _) = setting;
let parse_error_type_str = make_parse_erro_type_str(main_type_str);
format!("{}\n{}\n\n{}", HEADERMSG, headstr, parse_error_type_str)
}
fn vecstr_to_str(v: Vec<(types::Range, String)>) -> String {
let mut s = String::new();
for d in v.iter() {
let (_, st) = d;
s.push_str(&format!("{}\n", st))
}
s
}
fn make_parse_erro_type_str(main_type_str: String) -> String {
format!(
"
#[derive(Debug, Clone)]
pub enum ParseError {{
UnexpectedToken({}),
RedundantExpression({}),
Eof,
}}
",
main_type_str, main_type_str
)
}