Esempio n. 1
0
def instal_compile(args):
    if len(args.input_files) == 1:
        mode = "single"
    else:
        mode = "composite"
        all_lists = {}
    output_files = args.lp_files
    for ifile in args.ial_files:
        if mode == "composite":
            ofile = os.path.basename(ifile)
            ofile = ofile.replace(".ial", ".lp")
            ofile = args.output_file + "/" + ofile
        else:
            ofile = args.output_file
        output_files = [ofile] + output_files
        iparser = instalparser.makeInstalParser()
        instal_compile_file(args, mode, ifile, ofile, iparser)
        if mode == "composite":
            all_lists[iparser.names["institution"]] = [
                iparser.exevents,
                iparser.inevents,
                iparser.vievents,
                iparser.fluents,
                iparser.obligation_fluents,
                iparser.noninertial_fluents,
            ]
        iparser.instal_input.close()
    if args.bridge_file:
        ofile = os.path.basename(args.bridge_file)
        ofile = ofile.replace(".ial", ".lp")
        ofile = args.output_file + "/" + ofile
        output_files = [ofile] + output_files
        bparser = bridgeparser.makeInstalParser()
        bparser.all_lists = all_lists
        instal_compile_file(args, "composite", args.bridge_file, ofile, bparser)
    return output_files
Esempio n. 2
0
import sys
import argparse
import bridgeparser
import instalparser
import copy
import string 


sys.path.insert(0,"../..")

if sys.version_info[0] >= 3:
    raw_input = input

#bridge_output = sys.stdout

bparser = bridgeparser.makeInstalParser()


typename = r"([A-Z][a-zA-Z0-9_]*)"
literal = r"([a-z|\d][a-zA-Z0-9_]*)"


# TL: ideally, we need to create instance parser for each institutions like below 

#------------------------------------------------------------------------
# command-line parameter processing

def arb(s): return s

argparser = argparse.ArgumentParser()
argparser.add_argument("-d", "--domain-file", type=arb, help="specify domain file")
Esempio n. 3
0
def pyinstal():
    args,unk=getargs()
    bparser = bridgeparser.makeInstalParser()
    iparser = instalparser.makeInstalParser()
    if args.instal_file:    
        f = open(args.instal_file,'r')
    if args.output_file and args.instal_file:
        iparser.instal_output = open(args.output_file,'w')
    if args.mode_option and args.instal_file:
        if args.mode_option in ('s','S'):
            iparser.mode = "single" 
        elif args.mode_option in ('c','C'):
            iparser.mode = "composite"
        else:
            sys.stderr.write("Mode option can only be s/S or c/C \n")
    # set up default mode to single 
    if not args.mode_option and args.instal_file:
        iparser.mode = "default" 
    idocument = ""
    if args.instal_file: idocument = idocument + f.read(-1)
    if args.instal_file:
        iparser.instal_parse(idocument) 
    if args.domain_file and args.instal_file:
        iparser.print_domain(args.domain_file) 
    if args.instal_file: iparser.instal_print_all()
    if args.instal_file: f.close()
    if args.output_file: iparser.instal_output.close()
    #####-----------process list of instal files ----------#################
    parser_dict = {} 
    output_dict = {}
    input_dict = {}
    bparser.all_lists = {} 
    if args.instal_files_list:
        for name in args.instal_files_list:
            parser= instalparser.makeInstalParser()
            f = open(name,'r')
            document = ""
            document = document + f.read(-1)
            hIn = string.rfind(name,'/') + 1  # get the index of '/' to extract the file name only     
            name = name[hIn:]
            name = name.replace('.ial','')
            input_dict[name] = f
            #print name
            #name_of_parser = name + '_parser'
            parser.mode = "composite"
            if args.output_file:
                name_of_output = args.output_file + '/' + name + '.lp'
                parser.instal_output = open(name_of_output,'w')            
            else:
                name_of_output = name + '.lp'
                parser.instal_output = open(name_of_output,'w')
            parser.instal_parse(document) 
            parser.print_domain(args.domain_file)
            parser.instal_print_all()
            bparser.all_lists[name] = [parser.exevents,
                                       parser.inevents,
                                       parser.vievents,
                                       parser.fluents,
                                       parser.obligation_fluents,
                                       parser.noninertial_fluents]
            # JAP: can't see why copy is needed since these are all instance vars.
            #      hangover from pre-class version?
            # all_lists[name] = [copy.deepcopy(parser.exevents),
            #                    copy.deepcopy(parser.inevents),
            #                    copy.deepcopy(parser.vievents),
            #                    copy.deepcopy(parser.fluents),
            #                    copy.deepcopy(parser.obligation_fluents),
            #                    copy.deepcopy(parser.noninertial_fluents)]
            f.close()
            parser_dict[name] = parser
            output_dict[name] = name_of_output 
            # parser.clear_all_dicts()
    #####-----------process bridge file ----------#################
    if args.bridge_file:
        # collect all_lists from each institution parser for bridge parser 
        # bparser.all_lists = all_lists 
        # print(bparser.all_lists,file=sys.stderr)
        # set input and output for bridge file 
        bf = open(args.bridge_file,'r')
        bdocument = ""
        bdocument = bdocument + bf.read(-1)
        name = args.bridge_file
        hIn = string.rfind(name,'/') + 1  # get the index of '/' to extract the file name only     
        name = name[hIn:] 
        boutput = name.replace('.ial','.lp')
        #boutput = args.bridge_file.replace('.ial','.lp')
        if args.output_file:
            boutput = args.output_file + '/' + boutput      
            bparser.instal_output = open(boutput,'w')
        else:      
            bparser.instal_output = open(boutput,'w')
        bparser.instal_parse(bdocument) 
        bparser.mode = "composite" 
        if args.bridge_domain_file:
            bparser.print_domain(args.bridge_domain_file)
        bparser.instal_print_all()
    #####-----------closing files ----------#################
    for name, f in input_dict.iteritems():
        f.close()
    for name, parser in parser_dict.iteritems():
        parser.instal_output.close()
    if args.bridge_file: 
        bf.close()
        bparser.instal_output.close()
Esempio n. 4
0
import re
import sys
import argparse
import bridgeparser
import instalparser_v2
import copy
import string

sys.path.insert(0, "../..")

if sys.version_info[0] >= 3:
    raw_input = input

#bridge_output = sys.stdout

bparser = bridgeparser.makeInstalParser()

typename = r"([A-Z][a-zA-Z0-9_]*)"
literal = r"([a-z|\d][a-zA-Z0-9_]*)"

# TL: ideally, we need to create instance parser for each institutions like below

#------------------------------------------------------------------------
# command-line parameter processing


def arb(s):
    return s


argparser = argparse.ArgumentParser()
Esempio n. 5
0
def pystream():
    args, unk = getargs()
    if len(args.input_files) == 1:
        pystream_single(args, unk)
        return
    #####-----------process list of instal files ----------#################
    if not (args.output_file):
        sys.stderr.write("Output directory required for composite mode\n")
        exit(-1)
    if not (os.path.isdir(args.output_file)):
        sys.stderr.write("-o argument must be a directory in composite mode\n")
    parser_dict = {}
    output_dict = {}
    input_dict = {}
    bparser = bridgeparser.makeInstalParser()
    bparser.all_lists = {}
    if args.instal_files_list:
        for name in args.instal_files_list:
            parser = instalparser.makeInstalParser()
            parser.instal_input = open(name, "r")
            parser.mode = "composite"
            document = ""
            document = document + parser.instal_input.read(-1)
            hIn = string.rfind(name, "/") + 1  # get the index of '/' to extract the file name only
            name = name[hIn:]
            name = name.replace(".ial", "")
            input_dict[name] = parser.instal_input
            # print name
            # name_of_parser = name + '_parser'
            if args.output_file:
                name_of_output = args.output_file + "/" + name + ".lp"
                parser.instal_output = open(name_of_output, "w")
            else:
                name_of_output = name + ".lp"
                parser.instal_output = open(name_of_output, "w")
            parser.instal_parse(document)
            parser.print_domain(args.domain_file)
            parser.instal_print_all()
            bparser.all_lists[name] = [
                parser.exevents,
                parser.inevents,
                parser.vievents,
                parser.fluents,
                parser.obligation_fluents,
                parser.noninertial_fluents,
            ]
            parser.instal_input.close()
            parser_dict[name] = parser
            output_dict[name] = name_of_output
    #####-----------process bridge file ----------#################
    if args.bridge_file:
        # set input and output for bridge file
        bf = open(args.bridge_file, "r")
        bdocument = ""
        bdocument = bdocument + bf.read(-1)
        name = args.bridge_file
        hIn = string.rfind(name, "/") + 1  # get the index of '/' to extract the file name only
        name = name[hIn:]
        boutput = name.replace(".ial", ".lp")
        # boutput = args.bridge_file.replace('.ial','.lp')
        if args.output_file:
            boutput = args.output_file + "/" + boutput
            bparser.instal_output = open(boutput, "w")
        else:
            bparser.instal_output = open(boutput, "w")
        bparser.instal_parse(bdocument)
        bparser.mode = "composite"
        if args.bridge_domain_file:
            bparser.print_domain(args.bridge_domain_file)
        bparser.instal_print_all()
    #####-----------closing files ----------#################
    for name, f in input_dict.iteritems():
        f.close()
    for name, parser in parser_dict.iteritems():
        parser.instal_output.close()
    if args.bridge_file:
        bf.close()
        bparser.instal_output.close()
    ##### start of multi-shot solving cycle
    if args.composite and args.output_file:  # and args.fact_file:
        institution = ["externals.lp", "bridge_externals.lp", "time.lp", boutput] + output_dict.values()
        # print("files = ",institution)
        # facts = open(args.fact_file,'r')
        initial_state = []  # initially(iparser.names["institution"],facts.readlines())
        sensor = Sensor(bparser, dummy, initial_state, institution, args)
        # print("initially:")
        # for i in initial_state:
        #     print(i.name(),i.args())
        # print("events from:",args.event_file)
        # with open(args.event_file,'r') as events:
        #     for e in events:
        for event in fileinput.input(unk):
            # observation = parse_term(event)
            if args.verbose > 1:
                print(sensor.cycle, "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
            sensor.solve(event)
            if args.verbose > 1:
                print(sensor.cycle, ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
            sensor.cycle += 1
            if args.verbose > 0:
                print("")