Refactoring prace trace infra
This commit is contained in:
parent
66d10604ba
commit
89cf101362
@ -74,7 +74,17 @@ pub struct TraceArtifact {
|
||||
|
||||
impl TraceArtifact {
|
||||
pub fn new(stage: &str, debug: String) -> TraceArtifact {
|
||||
TraceArtifact { stage_name: stage.to_string(), debug_output: debug, text_color: "blue" }
|
||||
let color = match stage {
|
||||
"parse_trace" => "red",
|
||||
"tokens" => "green",
|
||||
_ => "blue",
|
||||
};
|
||||
TraceArtifact { stage_name: stage.to_string(), debug_output: debug, text_color: color}
|
||||
}
|
||||
|
||||
pub fn new_parse_trace(trace: Vec<String>) -> TraceArtifact {
|
||||
let debug = format!("Parse trace: {:?}", trace);
|
||||
TraceArtifact { stage_name: "parse_trace".to_string(), debug_output: debug, text_color: "red"}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,13 +34,13 @@ impl ProgrammingLanguageInterface for Schala {
|
||||
let ast = match parsing::parse(tokens) {
|
||||
(Ok(ast), trace) => {
|
||||
if options.debug_parse {
|
||||
output.add_artifact(TraceArtifact::new("Recursive descent calls:", trace));
|
||||
output.add_artifact(TraceArtifact::new_parse_trace(trace));
|
||||
output.add_artifact(TraceArtifact::new("ast", format!("{:?}", ast)));
|
||||
}
|
||||
ast
|
||||
},
|
||||
(Err(err), trace) => {
|
||||
output.add_artifact(TraceArtifact::new("Recursive descent calls:", trace));
|
||||
output.add_artifact(TraceArtifact::new_parse_trace(trace));
|
||||
output.add_output(format!("Parse error: {:?}\n", err.msg));
|
||||
return output;
|
||||
}
|
||||
|
@ -697,10 +697,10 @@ fn parse_binary(digits: String) -> ParseResult<u64> {
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
pub fn parse(input: Vec<Token>) -> (Result<AST, ParseError>, String) {
|
||||
pub fn parse(input: Vec<Token>) -> (Result<AST, ParseError>, Vec<String>) {
|
||||
let mut parser = Parser::new(input);
|
||||
let ast = parser.program();
|
||||
let trace = format!("Parse record: {:?}", parser.parse_record);
|
||||
let trace = parser.parse_record.into_iter().map(|r| r.0).collect();
|
||||
(ast, trace)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user