Пример #1
0
    def goto(self, grammar, symbol):

        new_grammar = Context_Free_Grammar()

        for LHS in grammar.production:
            for production in grammar.production[LHS]:

                index = production.index('.') + 1
                if index < len(production) and production[index] == symbol:

                    index += 1
                    if index < len(production) and production[
                            index] in self.augmented_grammar.non_terminal:
                        new_grammar = self.track(grammar, new_grammar,
                                                 production[index])

                    new_production = deepcopy(production)
                    new_production.insert(
                        new_production.index('.') + 1,
                        new_production.pop(new_production.index('.')))
                    new_grammar.add_production_rule(LHS, new_production)

                    for a_symbol in list(set([LHS] + production)):
                        new_grammar = self.set_symbol(new_grammar, a_symbol)

        return new_grammar
Пример #2
0
	def goto(self, grammar, symbol):
	
		new_grammar = Context_Free_Grammar() 

		for LHS in grammar.production:
			for production in grammar.production[LHS]:
				
				index = production.index('.') + 1
				if index < len(production) and production[index] == symbol:
					
					index += 1
					if index < len(production) and production[index] in self.augmented_grammar.non_terminal:
						new_grammar = self.track(grammar, new_grammar, production[index])
	
					new_production = deepcopy(production)
					new_production.insert(new_production.index('.') + 1, new_production.pop(new_production.index('.')))
					new_grammar.add_production_rule(LHS, new_production)
					
					for a_symbol in list(set([LHS] + production)):
						new_grammar = self.set_symbol(new_grammar, a_symbol)

		return new_grammar
Пример #3
0
def Grammar():

    grammar = Context_Free_Grammar()

    grammar.add_terminal("a", "b", "c", "~", ":", "author", "title")
    grammar.add_non_terminal("Text", "Effect", "Alpha")
    grammar.set_start_symbol("Text")

    grammar.add_production_rule("Text", ["~", "Effect", ":", "Text", "~"], ["Alpha"])
    grammar.add_production_rule("Effect", ["author"], ["title"])
    grammar.add_production_rule("Alpha", ["a"], ["b"])
    # grammar.add_production_rule('F', ['(', 'E', ')'], ['id'])

    return grammar
Пример #4
0
def Grammar():
	
	grammar = Context_Free_Grammar()
	
	grammar.add_terminal('+', '*', '(', ')', 'id')
	grammar.add_non_terminal('E', 'T', 'F')
	grammar.set_start_symbol('E')
	
	grammar.add_production_rule('E', ['E', '+', 'T'], ['T'])
	grammar.add_production_rule('T', ['T', '*', 'F'], ['F'])
	grammar.add_production_rule('F', ['(', 'E', ')'], ['id'])
	
	return grammar
def Grammar():

    grammar = Context_Free_Grammar()

    grammar.add_terminal('a', 'b', 'c', '~', ':', 'author', 'title')
    grammar.add_non_terminal('Text', 'Effect', 'Alpha')
    grammar.set_start_symbol('Text')

    grammar.add_production_rule('Text', ['~', 'Effect', ':', 'Text', '~'],
                                ['Alpha'])
    grammar.add_production_rule('Effect', ['author'], ['title'])
    grammar.add_production_rule('Alpha', ['a'], ['b'])
    #grammar.add_production_rule('F', ['(', 'E', ')'], ['id'])

    return grammar
Пример #6
0
def Grammar():

    grammar = Context_Free_Grammar()

    grammar.add_terminal('+', '*', '(', ')', 'id')
    grammar.add_non_terminal('E', 'T', 'F')
    grammar.set_start_symbol('E')

    grammar.add_production_rule('E', ['E', '+', 'T'], ['T'])
    grammar.add_production_rule('T', ['T', '*', 'F'], ['F'])
    grammar.add_production_rule('F', ['(', 'E', ')'], ['id'])

    return grammar