scyther/scripts/if2spdl/If.py

138 lines
2.6 KiB
Python
Raw Normal View History

2005-12-03 16:12:58 +00:00
#!/usr/bin/python
#
# If.py
#
# Objects and stuff for the intermediate format
#
firstone = True
class Atomic(list):
def __init__ (self,l,type=""):
list.__init__(self,l)
self.type = type
def getType(self):
return self.type
def __str__(self):
return "".join(self)
def __repr__(self):
return "Constant<" + str(self) + ">"
class Special(Atomic):
def __init__ (self,x):
Atomic.__init__(self,[x],"special")
class Message(list):
def __str__(self):
#return "".join(self)
res = ""
for s in self:
if res != "":
res += ","
res += str(s)
return res
def subType(self):
return "(generic)"
def __repr__(self):
return "Message" + self.subType() + "<" + str(self) + ">"
class MsgList(list):
def __repr__(self):
return "Msglist<" + list.__repr__(self) + ">"
class Fact(list):
def __repr__(self):
return "Fact<" + list.__repr__(self) + ">"
class State(list):
def __repr__(self):
return "State<" + list.__repr__(self) + ">"
class Label(object):
def __init__(self, name, category):
self.name = name
self.category = category
def __str__(self):
return "lb=" + self.name + ",type=" + self.category
def __repr__(self):
return str(self)
class Rule(object):
def __init__(self,left=None,right=None):
self.left = left
self.right = right
self.label = None
def setLabel(self,label):
self.label = label
def __str__(self):
res = "Rule:"
if self.label != None:
res += " (" + str(self.label) +")"
res += "\n"
res += str(self.left) + "\n"
res += "=>\n"
res += str(self.right) + "\n"
return res
def __repr__(self):
return str(self)
class InitialRule(Rule):
def __str__(self):
return "Initial " + Rule.__str__(self)
class MessageRule(Rule):
def __init__(self,l,r):
global firstone
Rule.__init__(self,l,r)
if firstone:
print str(self)
firstone = False
def __str__(self):
return "Message " + Rule.__str__(self)
class GoalRule(Rule):
def __str__(self):
return "Goal " + Rule.__str__(self)
class CorrespondenceRule(GoalRule):
def __init__(self, l):
GoalRule.__init__(self,l,None)
def __str__(self):
return "Correspondence " + GoalRule.__str__(self)
class SecrecyRule(GoalRule):
def __init__(self, l):
GoalRule.__init__(self,l,None)
def __str__(self):
return "Secrecy " + GoalRule.__str__(self)
class STSecrecyRule(GoalRule):
def __init__(self, l):
GoalRule.__init__(self,l,None)
def __str__(self):
return "Short-term Secrecy " + GoalRule.__str__(self)
class AuthenticateRule(GoalRule):
def __init__(self, l):
GoalRule.__init__(self,l,None)
def __str__(self):
return "Authenticate " + GoalRule.__str__(self)