Exemple #1
0
def handle_connection(conn, addr):
    message_data = ""
    while True:
        new_data = conn.recv(1)
        message_data += new_data
        if new_data == parser.message_separator:
            break

    message = parser.parse(message_data)
    if message is None:
        print "Unknown message received in connection to " + addr[0]
        conn.close()
        return
    if isinstance(message, GetFilelistMessage):
        for f in peerlist.self_peer.files:
            m = FileMessage(f.sha_hash.lower(),
                    -1 if f.ttl == float("inf") else f.ttl,
                    f.length,
                    f.name,
                    f.meta)
            conn.sendall(parser.build(m))
        conn.close()
        return
    elif isinstance(message, GetFileMessage):
        try:
            file_to_send = filter(lambda f: f.sha_hash == message.sha.lower(),
                peerlist.self_peer.files)[0]
        except:
            conn.sendall(parser.build(
                FileTransferResponseMessage(FileTransferResponseMessage
                    .NEVER_TRY_AGAIN_STATUS, 0)
                ))
            conn.close()
            return

        if message.offset + message.length > file_to_send.length:
            conn.sendall(parser.build(
                FileTransferResponseMessage(
                    FileTransferResponseMessage.NEVER_TRY_AGAIN_STATUS,
                    0)
                ))
            conn.close()
            return

        conn.sendall(parser.build(
            FileTransferResponseMessage(FileTransferResponseMessage
                .OK_STATUS, message.length)
            ))

        f = open(file_to_send.local_path)
        f.seek(message.offset)
        length_remaining_to_send = message.length
        while length_remaining_to_send > 0:
            length_to_send = min(length_remaining_to_send, 4096)
            length_remaining_to_send -= length_to_send
            conn.sendall(f.read(length_to_send))
    conn.close()
Exemple #2
0
def get_file(peer, f):
    f.local_path = os.path.join(settings.DOWNLOAD_PATH,
         os.path.split(f.name)[1])
    print "Downloading to " + f.local_path
    if os.path.exists(f.local_path):
        print("File {filename} already exists.".format(filename=f.name))
        return

    sock = socket.create_connection((peer.address, peer.tcp_port))
    sock.sendall(parser.build(GetFileMessage(f.sha_hash, 0, f.length)))

    message_data = ""
    while True:
        new_data = sock.recv(1)
        message_data += new_data
        if new_data == parser.message_separator:
            message = parser.parse(message_data)
            if message.status != FileTransferResponseMessage.OK_STATUS:
                print("File Request denied by peer.")
                sock.close()
                return
            else:
                break

    fd = file(f.local_path, "wb")
    while True:
        new_data = sock.recv(1024)
        if new_data:
            fd.write(new_data)
        else:
            break

    fd.close()
    sock.close()
Exemple #3
0
    def test_events(self):
        station, timetable = build("timetable_example.txt")
        state = StationState(station)
        state.add_timetable(timetable)

        self.check_events(state, 2, [TrainEvent(2, "1437", TrainState.BeingFormed, "4", "C")])
        self.check_events(state, 12, [TrainEvent(12, "1437", TrainState.Scheduled, "4", "C")])
        self.check_events(state, 20, [TrainEvent(20, "1437", TrainState.Railed, "4", "C"),
                                      TrainEvent(20, "7382", TrainState.Scheduled, "2", "B")])
        self.check_events(state, 23, [TrainEvent(23, "8493", TrainState.Scheduled, "1", "A")])
Exemple #4
0
	def bindParser(self, name, what=""):
		name = name.upper()
		if what is None:
			if name in self.parsers:
				del self.parsers[name]
		else:
			if callable(what):
				fun = what
			else:
				fun = parser.build(str(what))
			self.parsers[name] = new.instancemethod(fun, self, Client)
Exemple #5
0
def compile(pattern, dfa=True):
    """compile a pattern to RegEx"""
    from parser import build
    try:
        graph = build(pattern)
        if not graph:
            raise SyntaxError()
    except SyntaxError, error:
        if not error.args:
            raise SyntaxError("pattern `%s` cannot be parsed" % pattern)
        else:
            raise error
Exemple #6
0
def get_file_list(peer):
    sock = socket.create_connection((peer.address, peer.tcp_port))
    sock.sendall(parser.build(GetFilelistMessage()))

    message_data = ""
    while True:
        new_data = sock.recv(1)
        if not new_data:
            break

        message_data += new_data
        if new_data == parser.message_separator:
            message = parser.parse(message_data)
            if message:
                peerlist.update_with_file_announcement_message(message, peer)
            message_data = ""

    sock.close()
Exemple #7
0
if __name__ == '__main__':

    try:
        filename = sys.argv[1] if len(
            sys.argv) > 1 else "examples/example5_1.m"
        file = open(filename, "r")
    except IOError:
        print("Cannot open {0} file".format(filename))
        sys.exit(0)

    lexer = scanner.Scanner()
    lexer.build()

    parser = parser.Parser(lexer)
    parser.build()

    text = file.read()

    typeChecker = typechecker.TypeChecker()

    try:
        ast = parser.parse(text, lexer=lexer)
    except:
        print("Syntax error(s) occured")
    else:
        return_code = typeChecker.visit(ast)
        if return_code == 0:
            ast.accept(interpreter.Interpreter())
        else:
            print("Semantic errors occured ({} error(s))".format(return_code))
import sys
import parser as parser


# función de error
def error(message):
    print("Error: " + message)
    sys.exit()


if len(sys.argv) > 1:
    # se manda el arhivo al parser
    file = sys.argv[1]
    parser.build(file)
else:
    error("No file provided")

# se lee el resultado de los quadruplos, la tabla de ctes y symboltable
f2 = open('datos.txt', 'r', newline='\n')
data = eval(f2.read())
f2.close()

# obtiene la lista de cuádruplos
quadruples = data['quadruples']
# obtiene la tabla de símbolos
symbol_table = data['symbol_table']
# obtiene la tabla de constantes
ctes_table = data['ctes']

# int, float, char, bool
cont_vars = [0, 0, 0, 0]
Exemple #9
0
path = config.data_path

# obtain the yaml skelton
with open(config.yaml_skelton_path) as f:
    default_string = f.read()

# for each sample that will be generated from search space space
for i in xrange(20):
    timestamp = get_timestamp()

    print t.bold_red('ITERATION:'), t.bold_red(str(i)), "started at: ", timestamp

    samp = sample(spa)  # generate sample (will give a description of a model)
    print t.bold_cyan('SAMP'), samp

    mod = build(samp)   # based on description generated build an object that will fit into yaml_parser
    print t.bold_blue('MODEL'), mod

    # define weight decay parameters. They depend on the number of layers (there is one parameter fo each layer)
    weight_decay_coeffs = yp.parse_weight_decay(mod)

    # generate a filename to store the best model
    pkl_filename = join(config.path_for_storing, timestamp+"best_"+str(i)+'_'+".pkl")

    # create dictionary with hyper parameters
    hyper_params = {'model': yp.parse_to_yaml(mod), 'path': yp.parse_to_yaml(path),
                    'weight_decay_coeffs': weight_decay_coeffs, 'pkl_filename': pkl_filename}

    # fill the yaml skelton with hyperparameters
    yaml_string = default_string % hyper_params
Exemple #10
0
        r = ['%s%s [' % (node.name, '^' * node.plain),
             ",\n".join(attrs),
             ']'
        ]

        return "\n".join(r)


    def visit_Attr(self, node, children):
        return node


if __name__ == '__main__':

    lexer = spec_lexer.build()
    parser = spec_parser.build()

    with open('base.cfg', 'r') as f:
        code = f.read()

    spec_ast = parser.parse(code)

    b = Indenter()
    r = b.traverse(spec_ast)

    with open('~base.cfg.bak', 'w') as f:
        f.write(code)

    with open('base.cfg', 'w') as f:
        f.write(r)
Exemple #11
0
 def data(self):
     import parser
     return parser.build(self)