Initial commit
Includes: runtime base from a previous project, syn(tax) module with parser and lexer Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
19
build.rs
Normal file
19
build.rs
Normal file
@@ -0,0 +1,19 @@
|
||||
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(())
|
||||
}
|
||||
Reference in New Issue
Block a user