Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## PSKeyword
- ##
- class PSKeyword(PSObject):
- """A class that represents a PostScript keyword.
- PostScript keywords are a dozen of predefined words.
- Commands and directives in PostScript are expressed by keywords.
- They are also used to denote the content boundaries.
- Note: Do not create an instance of PSKeyword directly.
- Always use PSKeywordTable.intern().
- """
- def __init__(self, name):
- self.name = name
- return
- def __repr__(self):
- return self.name
- ## PSSymbolTable
- ##
- class PSSymbolTable(object):
- """A utility class for storing PSLiteral/PSKeyword objects.
- Interned objects can be checked its identity with "is" operator.
- """
- def __init__(self, klass):
- self.dict = {}
- self.klass = klass
- return
- def intern(self, name):
- if name in self.dict:
- lit = self.dict[name]
- else:
- lit = self.klass(name)
- self.dict[name] = lit
- return lit
- # These are global variables being inited before init runs
- PSLiteralTable = PSSymbolTable(PSLiteral)
- PSKeywordTable = PSSymbolTable(PSKeyword)
- LIT = PSLiteralTable.intern
- KWD = PSKeywordTable.intern
- KEYWORD_PROC_BEGIN = KWD(b'{')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement