def test_grammar2(self): grammar = Grammar("grammars/grammar2.json") grammar_analyzer = GrammarAnalyzer(grammar) # Check accepted strings. self.assertTrue(grammar_analyzer.test_string("#")) self.assertTrue(grammar_analyzer.test_string("0#0")) self.assertTrue(grammar_analyzer.test_string("1#1")) self.assertTrue(grammar_analyzer.test_string("01#10")) self.assertTrue(grammar_analyzer.test_string("10#01")) self.assertTrue(grammar_analyzer.test_string("010#010")) self.assertTrue(grammar_analyzer.test_string("1111#1111")) self.assertTrue(grammar_analyzer.test_string("010001#100010")) self.assertTrue(grammar_analyzer.test_string("0100011#1100010")) self.assertTrue(grammar_analyzer.test_string("01000101#10100010")) # Check rejected strings. self.assertFalse(grammar_analyzer.test_string("xxx")) self.assertFalse(grammar_analyzer.test_string("")) self.assertFalse(grammar_analyzer.test_string("0")) self.assertFalse(grammar_analyzer.test_string("0#1")) self.assertFalse(grammar_analyzer.test_string("1#10")) self.assertFalse(grammar_analyzer.test_string("01#01")) self.assertFalse(grammar_analyzer.test_string("11#111")) self.assertFalse(grammar_analyzer.test_string("111#11")) self.assertFalse(grammar_analyzer.test_string("111#110")) self.assertFalse(grammar_analyzer.test_string("0111#110"))
def test_grammar4(self): grammar = Grammar("grammars/grammar4.json") grammar_analyzer = GrammarAnalyzer(grammar) # Check accepted strings. self.assertTrue(grammar_analyzer.test_string("a#b#c#d")) self.assertTrue(grammar_analyzer.test_string("aa#bb#c#d")) self.assertTrue(grammar_analyzer.test_string("a#b#cc#dd")) self.assertTrue(grammar_analyzer.test_string("aaa#bbb#c#d")) self.assertTrue(grammar_analyzer.test_string("a#b#ccc#ddd")) self.assertTrue(grammar_analyzer.test_string("aaaa#bbbb#c#d")) self.assertTrue(grammar_analyzer.test_string("a#b#cccc#dddd")) self.assertTrue(grammar_analyzer.test_string("aa#bb#cccc#dddd")) self.assertTrue(grammar_analyzer.test_string("aaa#bbb#cccc#dddd")) self.assertTrue(grammar_analyzer.test_string("aaaa#bbbb#ccccc#ddddd")) self.assertTrue(grammar_analyzer.test_string("a#b#cccccc#dddddd")) self.assertTrue(grammar_analyzer.test_string("aaaaaaa#bbbbbbb#c#d")) # Check rejected strings. self.assertFalse(grammar_analyzer.test_string("xxx")) self.assertFalse(grammar_analyzer.test_string("")) self.assertFalse(grammar_analyzer.test_string("#")) self.assertFalse(grammar_analyzer.test_string("a#b#c#")) self.assertFalse(grammar_analyzer.test_string("#b#c#d")) self.assertFalse(grammar_analyzer.test_string("a#bb#c#d")) self.assertFalse(grammar_analyzer.test_string("a#b#c#dd")) self.assertFalse(grammar_analyzer.test_string("a#bb#c#dd")) self.assertFalse(grammar_analyzer.test_string("aa#bb#cc#dd#")) self.assertFalse(grammar_analyzer.test_string("aaa#bbb#ccc#dddd")) self.assertFalse(grammar_analyzer.test_string("aaa#bbb#ccc#dddd##"))
def test_grammar1(self): grammar = Grammar("grammars/grammar1.json") grammar_analyzer = GrammarAnalyzer(grammar) # Check accepted strings. self.assertTrue(grammar_analyzer.test_string("a#b")) self.assertTrue(grammar_analyzer.test_string("aa#bb")) self.assertTrue(grammar_analyzer.test_string("aaa#bbb")) self.assertTrue(grammar_analyzer.test_string("aaaa#bbbb")) self.assertTrue(grammar_analyzer.test_string("aaaaa#bbbbb")) self.assertTrue(grammar_analyzer.test_string("aaaaaa#bbbbbb")) self.assertTrue(grammar_analyzer.test_string("aaaaaaa#bbbbbbb")) self.assertTrue(grammar_analyzer.test_string("aaaaaaaa#bbbbbbbb")) self.assertTrue(grammar_analyzer.test_string("aaaaaaaaa#bbbbbbbbb")) self.assertTrue(grammar_analyzer.test_string("aaaaaaaaaa#bbbbbbbbbb")) # Check rejected strings. self.assertFalse(grammar_analyzer.test_string("xxx")) self.assertFalse(grammar_analyzer.test_string("")) self.assertFalse(grammar_analyzer.test_string("#")) self.assertFalse(grammar_analyzer.test_string("a")) self.assertFalse(grammar_analyzer.test_string("aa#b")) self.assertFalse(grammar_analyzer.test_string("a#bb")) self.assertFalse(grammar_analyzer.test_string("asdf")) self.assertFalse(grammar_analyzer.test_string("aaaa#bbbbbb"))
examples: ./analyze.py grammars/grammar1.json "a#b" ./analyze.py grammars/grammar1.json "" """ import sys from grammar import Grammar from grammaranalyzer import GrammarAnalyzer args = sys.argv # Helpful usage hints. if len(args) != 3: print("usage:") print("\t./analyze.py <path to grammar json> <input string>\n") print("examples:") print("\t./analyze.py grammars/grammar1.json \"a#b\"") print("\t./analyze.py grammars/grammar1.json \"\"") sys.exit() path_to_grammar = args[1] input_string = args[2] grammar = Grammar(path_to_grammar) grammar_analyzer = GrammarAnalyzer(grammar) if grammar_analyzer.test_string(input_string): print(grammar.get_desc() + ' CONTAINS "' + input_string + '"') else: print(grammar.get_desc() + ' DOES NOT CONTAIN "' + input_string + '"')