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:
2020-09-01 17:32:48 -07:00
commit 178ed4a952
24 changed files with 1139 additions and 0 deletions

19
build.rs Normal file
View 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(())
}