예제 #1
0
	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"))
예제 #2
0
	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##"))
예제 #3
0
	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"))
예제 #4
0
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 + '"')