|
3 | 3 | from src.ChomskyNormalForm import ChomskyNormalForm
|
4 | 4 | from src.CYKTable import *
|
5 | 5 |
|
6 |
| -def main(): |
7 |
| - |
8 |
| - # filename handling stuff |
9 |
| - file_folder = './grammars/' # folder is test_grammars |
10 |
| - filename = '' # input('name of grammar file inside grammars (default = test.txt): ') |
| 6 | +def get_grammar_filename(): |
| 7 | + file_folder = './grammars/' |
| 8 | + if len(sys.argv) >= 2: |
| 9 | + file_folder = '' |
| 10 | + filename = sys.argv[1] |
| 11 | + |
| 12 | + else: |
| 13 | + filename = input('Enter the name of a grammar from within the ./grammars/ directory: ') |
11 | 14 | if filename == '':
|
12 |
| - filename = '4_a.txt' |
| 15 | + print('No filename given, assuming t.txt') |
| 16 | + filename = 't.txt' |
| 17 | + |
| 18 | + return file_folder + filename |
| 19 | + |
| 20 | +def get_input_word_from_command_line(): |
| 21 | + if len(sys.argv) == 3: |
| 22 | + return sys.argv[2] |
| 23 | + elif len(sys.argv) > 3: |
| 24 | + print('\nSentences (i.e., words with spaces in them) should be entered between "quote marks". \nIgnoring command-line input.') |
| 25 | + return '' |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | + |
| 30 | + |
| 31 | +def main(): |
13 | 32 |
|
14 | 33 | grammar = Grammar(log=True) # True is sent to 'log' as we want to log each step of minimization
|
15 | 34 | try:
|
16 |
| - grammar.read_grammar_from_file(file_folder + filename) |
| 35 | + filename = get_grammar_filename() |
| 36 | + grammar.read_grammar_from_file(filename) |
17 | 37 | except FileNotFoundError:
|
18 | 38 | print('File ' + filename + ' could not be found inside grammars folder. Please check if name is correct.')
|
19 | 39 | sys.exit(1)
|
20 | 40 |
|
21 | 41 | cyk_parser = Parser(grammar, log_grammar_preparation=True)
|
22 |
| - cyk_parser.parse('abaab') |
23 | 42 |
|
24 |
| - #for c in tree.children: |
25 |
| - # print('*'*30) |
26 |
| - # print(c[0].__str__() + '\n' + c[1].__str__()) |
27 |
| - # print('*'*30) |
| 43 | + command_line_word = get_input_word_from_command_line() |
| 44 | + if command_line_word: |
| 45 | + cyk_parser.parse(command_line_word) |
| 46 | + |
| 47 | + else: |
| 48 | + word = ' ' |
| 49 | + while word: |
| 50 | + word = input('Enter an input word or sentence (or just press Enter to exit): ') |
| 51 | + if word: |
| 52 | + cyk_parser.parse(word) |
| 53 | + else: |
| 54 | + print('\nNo word entered this time.') |
| 55 | + |
| 56 | + print('\nSEE YOU SPACE COWBOY...\n') |
| 57 | + |
28 | 58 |
|
29 | 59 |
|
30 | 60 |
|
|
0 commit comments