@@ -787,36 +787,54 @@ mod tests {
787787 use std:: fs;
788788 extern crate test;
789789
790- // #[test]
791- // fn parse_simple_grammar() {
792- // let parser = EBNFParser::new("s: c c\n c: \"C\" c | \"D\"", "s");
793- // let Ok(grammar) = parser.parse() else {
794- // panic!()
795- // };
796- // let expected_grammar = Grammar {
797- // symbol_set: vec![
798- // "__ANONYMOUS_LITERAL_C_1".to_string(),
799- // "__ANONYMOUS_LITERAL_D_2".to_string(),
800- // "c".to_string(),
801- // "s".to_string(),
802- // "$".to_string(),
803- // ],
804- // terminals: vec![
805- // Terminal::new("__ANONYMOUS_LITERAL_C_1", "C", 0),
806- // Terminal::new("__ANONYMOUS_LITERAL_D_2", "D", 0),
807- // Terminal::new("$", "", 0),
808- // ],
809- // start_symbol: "s".to_string(),
810- // productions: vec![
811- // Production::new("s", vec!["c", "c"]),
812- // Production::new("c", vec!["__ANONYMOUS_LITERAL_C_1", "c"]),
813- // Production::new("c", vec!["__ANONYMOUS_LITERAL_D_2"]),
814- // ],
815- // ignore_terminals: vec![],
816- // };
817-
818- // assert_eq!(grammar, expected_grammar);
819- // }
790+ #[ test]
791+ fn parse_simple_grammar ( ) {
792+ let parser = EBNFParser :: new (
793+ r#"
794+ s: c c
795+ c: "C" c | "D"
796+ "# ,
797+ "s" ,
798+ ) ;
799+ let Ok ( grammar) = parser. parse ( ) else {
800+ panic ! ( )
801+ } ;
802+ let expected_grammar = Grammar {
803+ start_symbol : Symbol :: NonTerminal ( "s" . to_string ( ) ) ,
804+ productions : vec ! [
805+ Production {
806+ lhs: Symbol :: NonTerminal ( "s" . to_string( ) ) . into( ) ,
807+ rhs: vec![
808+ Symbol :: NonTerminal ( "c" . to_string( ) ) ,
809+ Symbol :: NonTerminal ( "c" . to_string( ) ) ,
810+ ]
811+ . into( ) ,
812+ } ,
813+ Production {
814+ lhs: Symbol :: NonTerminal ( "c" . to_string( ) ) . into( ) ,
815+ rhs: vec![
816+ Symbol :: NonTerminal ( "__ANONYMOUS_LITERAL_C_1" . to_string( ) ) ,
817+ Symbol :: NonTerminal ( "c" . to_string( ) ) ,
818+ ]
819+ . into( ) ,
820+ } ,
821+ Production {
822+ lhs: Symbol :: NonTerminal ( "c" . to_string( ) ) . into( ) ,
823+ rhs: vec![ Symbol :: NonTerminal ( "__ANONYMOUS_LITERAL_D_2" . to_string( ) ) ] . into( ) ,
824+ } ,
825+ Production {
826+ lhs: Symbol :: NonTerminal ( "__ANONYMOUS_LITERAL_C_1" . to_string( ) ) . into( ) ,
827+ rhs: vec![ Symbol :: Terminal ( 67 ) ] . into( ) ,
828+ } ,
829+ Production {
830+ lhs: Symbol :: NonTerminal ( "__ANONYMOUS_LITERAL_D_2" . to_string( ) ) . into( ) ,
831+ rhs: vec![ Symbol :: Terminal ( 68 ) ] . into( ) ,
832+ } ,
833+ ] ,
834+ } ;
835+
836+ assert_eq ! ( grammar, expected_grammar) ;
837+ }
820838
821839 #[ test]
822840 fn parse_tokipona_grammar ( ) {
0 commit comments