Includes: runtime base from a previous project, syn(tax) module with parser and lexer Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
20 lines
648 B
Rust
20 lines
648 B
Rust
use cfgrammar::yacc::YaccKind;
|
|
use lrlex::LexerBuilder;
|
|
use lrpar::CTParserBuilder;
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let mut parser_builder = CTParserBuilder::new()
|
|
.yacckind(YaccKind::Grmtools)
|
|
.error_on_conflicts(false);
|
|
let lex_rule_ids_map = parser_builder
|
|
.process_file_in_src("syn/parser.y")?;
|
|
if let Some((grm, _, _, conflicts)) = parser_builder.conflicts() {
|
|
eprintln!("{}", conflicts.pp(grm));
|
|
return Err("conflicts in parser".into());
|
|
}
|
|
LexerBuilder::new()
|
|
.rule_ids_map(lex_rule_ids_map)
|
|
.process_file_in_src("syn/lexer.l")?;
|
|
Ok(())
|
|
}
|