/** * @author Martin Bravenboer * @author Eric Bouwers */ module stratego/sglr/parse-report-errors imports stratego/sglr/parse strategies /** * @param String or SerializedParseTable -> ParseTable * @param String or None */ parse-xtc-file-pt-report-errors(|tbl, sort) = if is-parse-table-open(|tbl) then parse-xtc-file-pt(strsglr-perror, strsglr-report-parse-error | tbl, sort) else // open the parse table and call recursive let parse(|tbl') = parse-xtc-file-pt-report-errors(|tbl', sort) in open-parse-table-wrap-report-errors(parse| tbl) end end /** * @param String or SerializedParseTable -> ParseTable * @param String or None */ parse-xtc-file-report-errors(|tbl, sort) = if is-parse-table-open(|tbl) then parse-xtc-file-pt(strsglr-perror, strsglr-report-parse-error | tbl, sort) ; implode-asfix else // open the parse table and call recursive let parse(|tbl') = parse-xtc-file-report-errors(|tbl', sort) in open-parse-table-wrap-report-errors(parse| tbl ) end end strategies strsglr-report-parse-error = finally( ?input ; error := <get-parse-error> ; <report-error(|error)> input , fail ) strsglr-perror = <conc-strings; perror; fail> (<whoami> (), ": ", <id>)