Beispiel #1
0
 def generic_test(self, text):
     txt = self.get_txt(text)
     my_scanner = scanner.Scanner(txt)
     my_parser = pl0_parser.Parser(my_scanner)
     my_parser.parse(debug=1)
     txt.close()
Beispiel #2
0
        if node[1] == 'MINUS':
            print "\tPUSH -1"
            print "\tMUL"

    def accept_print(self, *node):
        self.visit_node(node[1])
        print "\tPRINT"
        print "\tPOP"

    def accept_number(self, *node):
        print "\tPUSH " + `node[1]`

    def accept_name(self, *node):
        defined, value, level = self.find(node[1])

        if defined == 'VARIABLE':
            print "\tLOAD", value
        elif defined == 'CONSTANT':
            print "\tPUSH", value
        else:
            raise NameError("Invalid value name " + node[1] + " of type " + defined)

if __name__ == '__main__':
    code = sys.stdin.read()
    parser = pl0_parser.Parser()
    parser.input(code)
    program = parser.p_program()

    compiler = Compiler()
    compiler.generate(program)
Beispiel #3
0
 def test_ejemplo_9(self):
     my_scanner = scanner.Scanner(open("../ejemplos/BIEN-09.PL0", 'r'))
     parser = pl0_parser.Parser(my_scanner, output_file='BIEN-09.ELF')
     parser.parse()
Beispiel #4
0
import scanner
import pl0_parser
import sys
import os

filename = sys.argv[1]
my_scanner = scanner.Scanner(open(filename, 'r'))
parser = pl0_parser.Parser(my_scanner,
                           output_file=os.path.basename(filename) + '.elf')
parser.parse()