Correzioni varie

* Un sacco di errori stupidi sistemati
This commit is contained in:
Rnhmjoj 2013-08-04 14:39:19 +02:00
parent ffb836b975
commit c344dfa364
2 changed files with 23 additions and 20 deletions

View File

@ -9,8 +9,8 @@ class Macchina:
self.a = trin(0) self.a = trin(0)
#Registri #Registri
self.d = trinlist([0 for i in range(3**5)], True) self.d = trinlist()
self.c = trinlist([0 for i in range(3**5)], True) self.c = trinlist()
#Puntatori #Puntatori
self.puntatore_c = trin(0) self.puntatore_c = trin(0)
@ -33,16 +33,20 @@ class Macchina:
#Copia il programma nel registro c #Copia il programma nel registro c
for indice, word in enumerate(programma): for indice, word in enumerate(programma):
if trinord(word) not in range(33,127):
raise SyntaxError("Carattere non consentito nel programma: '%c' a %d." % (word, indice))
if word not in ("\n"," "): if word not in ("\n"," "):
if trinord(word) not in range(32,127):
raise SyntaxError("Carattere non consentito nel programma: '%c' a %d." % (word, indice))
else:
self.c[indice] = trinord(word) self.c[indice] = trinord(word)
#Esecuzione del programma #Esecuzione del programma
while self.puntatore_c < len(programma): while self.puntatore_c < len(programma):
#Calcola ed esegue l'istruzione #Calcola ed esegue l'istruzione
istruzione = self.__calcola_istruzione(trinchr(self.c[self.puntatore_c])) istruzione = self.__calcola_istruzione(trinchr(self.c[self.puntatore_c]))
try:
istruzioni[istruzione]() istruzioni[istruzione]()
except KeyError:
istruzioni["o"]()
#Operazioni per ogni istruzione #Operazioni per ogni istruzione
self.c[self.puntatore_c] -= 33 self.c[self.puntatore_c] -= 33
@ -59,7 +63,7 @@ class Macchina:
Uo[D7,XTcA\"lI.v%{gJh4G\-=O@5`_3i< \ Uo[D7,XTcA\"lI.v%{gJh4G\-=O@5`_3i< \
?Z';FNQuY]szf$!BS/|t:Pn6^Ha" ?Z';FNQuY]szf$!BS/|t:Pn6^Ha"
istruzione = (trinord(carattere) - 33 + self.puntatore_c) % 94 istruzione = (trinord(carattere) - 33 + self.puntatore_c) % 94
return tabella[istruzione] return tabella[istruzione.decimale]
def __traduci(self): def __traduci(self):
""" """
@ -69,8 +73,8 @@ class Macchina:
trascrizione = str.maketrans( trascrizione = str.maketrans(
'!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN \ '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN \
OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~', OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~',
'5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS7 2FhOA \ '5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS72FhOA1 \
1CB6v^=I_0/8|jsb9m<.TVac`uY*MK\'X~xDl}REokN:#?G"i@' CB6v^=I_0/8|jsb9m<.TVac`uY*MK\'X~xDl}REokN:#?G"i@'
) )
istruzione = str.translate(trinchr(self.c[self.puntatore_c]), trascrizione) istruzione = str.translate(trinchr(self.c[self.puntatore_c]), trascrizione)
self.c[self.puntatore_c] = trinord(istruzione) self.c[self.puntatore_c] = trinord(istruzione)
@ -98,7 +102,6 @@ class Macchina:
""" """
self.d[self.puntatore_d] = trin(self.a[-1] + self.a[0:-1]) self.d[self.puntatore_d] = trin(self.a[-1] + self.a[0:-1])
def __pazza(self): def __pazza(self):
""" """
Istruzione Malbolge "p" Istruzione Malbolge "p"
@ -126,7 +129,6 @@ class Macchina:
else: else:
self.a = trinord(carattere) self.a = trinord(carattere)
def __stampa(self): def __stampa(self):
""" """
Istruzione Malbolge "/" Istruzione Malbolge "/"

View File

@ -163,22 +163,23 @@ class Trilista:
def __init__(self, lista, converti): def __init__(self, lista, converti):
"""Inizializzazione della lista trinaria.""" """Inizializzazione della lista trinaria."""
for i in lista: self.valori ={a:trin(b, converti) for a, b in enumerate(lista)}
self.valori = [trin(i, converti) for i in lista]
#Vari override degli operatori #Vari override degli operatori
def __setitem__(self, indice, valore): def __setitem__(self, indice, valore):
try: try:
self.valori[indice.decimale] self.valori[indice.decimale] = valore
except AttributeError: except AttributeError:
self.valori[indice] self.valori[indice] = valore
def __getitem__(self, indice): def __getitem__(self, indice):
try: try:
return self.valori[indice.decimale] return self.valori[indice.decimale]
except AttributeError: except AttributeError:
return self.valori[indice] return self.valori[indice]
except KeyError:
return trin(0)
def __str__(self): def __str__(self):
return self.valori.__str__() return self.valori.__str__()
@ -207,7 +208,7 @@ def trinchr(trinario):
""" """
return chr(trinario.decimale % 256) return chr(trinario.decimale % 256)
def trinlist(lista, converti=False): def trinlist(lista=[], converti=False):
""" """
Restituisce una lista accessibile da indici trinari data una lista. Restituisce una lista accessibile da indici trinari data una lista.
Fornire converti=False come parametro solo se gli elementi della lista Fornire converti=False come parametro solo se gli elementi della lista