Hack around the fact that the tokenizers are not really integrated with parsers.

This commit is contained in:
Dave Halter
2017-08-25 21:21:57 +02:00
parent 09b05422a6
commit 609ab1ffa9
2 changed files with 16 additions and 1 deletions

View File

@@ -206,6 +206,13 @@ class Leaf(NodeOrLeaf):
return "<%s: %s>" % (type(self).__name__, self.value)
class TypedLeaf(Leaf):
__slots__ = ('type',)
def __init__(self, type, value, start_pos, prefix=''):
super(TypedLeaf, self).__init__(value, start_pos, prefix)
self.type = type
class BaseNode(NodeOrLeaf):
"""
The super class for all nodes.
@@ -310,7 +317,7 @@ class ErrorLeaf(Leaf):
A leaf that is either completely invalid in a language (like `$` in Python)
or is invalid at that position. Like the star in `1 +* 1`.
"""
__slots__ = ('original_type')
__slots__ = ('original_type',)
type = 'error_leaf'
def __init__(self, original_type, value, start_pos, prefix=''):