Ejemplo n.º 1
0
if args.derivation:
    output_derivation = True
else:
    output_derivation = False

if args.stack:
    output_stack = True
else:
    output_stack = False

if parse:
    parse_table = getParseTable()
    rulz = getRules()
    terminals = getTerminals()

    parser = Parser(rulz, terminals, parse_table, input_string)
    if output:
        op = open(args.output, 'w')
        # parser._parse(print_stack=False,print_derivation=False,print_symtables=False,op_file=op)
        parser._parse(print_stack=output_stack,
                      print_derivation=output_derivation,
                      print_symtables=output_tables,
                      op_file=op,
                      second_pass=True)
        op.close
    else:
        # parser._parse(print_stack=False,print_derivation=False,print_symtables=False)
        parser._parse(print_stack=output_stack,
                      print_derivation=output_derivation,
                      print_symtables=output_tables,
                      second_pass=True)
Ejemplo n.º 2
0
with open('code_sample.txt') as file:
    input_string = file.read()

# tokeniser = Lexer(input_string)
# token = tokeniser.nextToken()
# while token[0] != '$':
# 	print(token)
# 	token = tokeniser.nextToken()

parse_table = getParseTable()
rulz = getRules()
terminals = getTerminals()

parser = Parser(rulz, terminals, parse_table, input_string)
parser._parse(False)
parser._parse(print_stack=False,
              print_derivation=False,
              print_symtables=True,
              second_pass=True)

# table = SymbolTable('table')
# table.addSymbol('f1', 'function', ['float','int[2][2]', 'float'])
# table.addSymbol('f2', 'function', ['float'])
# table.addSymbol('class2', 'class', None)
# table.addSymbol('var1','variable','int[2]')
# table.printTable()

# table2 = SymbolTable('otra_cosa')
# table.printTable()
# table2.printTable()
Ejemplo n.º 3
0
## Fill the table according to slide 4-18
for rule in rulz:
    for t in terminals:
        if t in rule._first:
            parse_table[rule._symbol][t] = rule
        if 'EPSILON' in rule._first:
            for t2 in terminals:
                if t2 in rule._follow:
                    parse_table[rule._symbol][t2] = rule

with open('code_sample_from_assignment.txt') as file:
    input_string = file.read()

parser = Parser()
parser._setInput(input_string)
parser._parse(rulz, terminals, parse_table, print_stack=True)

###############################################
####### End parse table implementation ########
###############################################
###
###
###
#######
#####
###
#
###############################################
#### Begin command line call implementation ###
###############################################