Ejemplo n.º 1
0
def is_valid(rules_text, program_text):
    rules = parse_rules(rules_text)
    table = ParseTable(rules)
    parser = LRParser(rules, table.action_table(), table.goto_table())
    try:
        derivation = parser.parse(program_text)
    except:
        return False
    return True
Ejemplo n.º 2
0
def isValid(rulesText, programText):
    rules = parseRules(rulesText)
    table = ParseTable(rules)
    parser = LRParser(rules, table.actionTable(), table.gotoTable())
    try:
        derivation = parser.parse(programText)
    except:
        return False
    return True
Ejemplo n.º 3
0
def constructParser(rulesText, isVerbose = False):
    def log(msg=""):
        if isVerbose:
            print msg

    log("Parsing rules...")
    rules = parseRules(rulesText)
    log("\n".join(map(str, rules)))
    log()
    
    log("Constructing parse tables...")
    table = ParseTable(rules)
    log(table)

    parser = LRParser(rules, table.actionTable(), table.gotoTable())
    return parser