diff --git a/CFGBoltzmann.py b/CFGBoltzmann.py index 8dab0fdcfad01aaf9f2bf840c30ff97e270fae3c..b05fef5b07350573dd8166fdbd3c1e9375f4ed51 100644 --- a/CFGBoltzmann.py +++ b/CFGBoltzmann.py @@ -4,6 +4,26 @@ import random from enum import * + +class TreeNode: + def __init__(self, language_element, subnodes): + self.language_element = language_element + self.subnodes = subnodes + + def __str__(self): + return str(self.language_element) + " " + str(self.subnodes) + + +def walk_the_tree(tree, level = 1): + if tree == None: + return + + print(" " * (level -1) + "|---" + str(tree.language_element) + " with " + str(len(tree.subnodes)) + " subnodes") + for subnode in tree.subnodes: + walk_the_tree(subnode, level + 1) + + + CFG = collections.namedtuple("CFG", "nonterminals terminals rules start") # We define a context-free grammar as: # 1. A list of nonterminal symbols