1 #!/usr/bin/env python 2 3 """ 4 Program code and data representations. 5 6 Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Paul Boddie <paul@boddie.org.uk> 7 8 This program is free software; you can redistribute it and/or modify it under 9 the terms of the GNU General Public License as published by the Free Software 10 Foundation; either version 3 of the License, or (at your option) any later 11 version. 12 13 This program is distributed in the hope that it will be useful, but WITHOUT 14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 16 details. 17 18 You should have received a copy of the GNU General Public License along with 19 this program. If not, see <http://www.gnu.org/licenses/>. 20 """ 21 22 class Context: 23 24 """ 25 A representation of a context used in a program, providing the special 26 context value types. 27 """ 28 29 def __init__(self, truth_value, repr): 30 self.truth_value = truth_value 31 self.repr = repr 32 33 def __repr__(self): 34 return self.repr 35 36 def __nonzero__(self): 37 return self.truth_value 38 39 __shortrepr__ = __repr__ 40 41 # A representation of a context that is replaced upon certain assignment 42 # operations. 43 44 ReplaceableContext = Context(0, "Replace") 45 46 # A representation of a context that is employed by classes so that 47 # instantiators have enough slots in the invocation frame, yet does not cause 48 # testing of the context or adjustment of the frame. 49 50 PlaceholderContext = Context(0, "Placeholder") 51 52 # vim: tabstop=4 expandtab shiftwidth=4