Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _default(self, ast, *args, **kwargs):
if not args:
return ast
typespec = args[0].split(BASE_CLASS_TOKEN)
typename = typespec[0]
bases = typespec[-1:0:-1]
base = self.base_type
for base_ in bases:
base = self._get_constructor(base_, base)
constructor = self._get_constructor(typename, base)
try:
if type(constructor) is type and issubclass(constructor, Node):
return constructor(*args[1:], ast=ast, ctx=self.ctx, **kwargs)
else:
return constructor(ast, *args[1:], **kwargs)
except Exception as e:
raise SemanticError(
'Could not call constructor for %s: %s'
% (typename, str(e))
)
def _find_renderer_class(self, node):
if not isinstance(node, Node):
return None
name = node.__class__.__name__
renderer = globals().get(name)
if not renderer or not issubclass(renderer, Base):
raise CodegenError('Renderer for %s not found' % name)
return renderer
def _find_renderer_class(self, item):
if not isinstance(item, Node):
return None
name = item.__class__.__name__
renderer = globals().get(name)
if not renderer or not issubclass(renderer, ModelRenderer):
raise CodegenError('Renderer for %s not found' % name)
return renderer
from __future__ import print_function, division, absolute_import, unicode_literals
from tatsu.objectmodel import Node
from tatsu.semantics import ModelBuilderSemantics
class CalcModelBuilderSemantics(ModelBuilderSemantics):
def __init__(self):
types = [
t for t in globals().values()
if type(t) is type and issubclass(t, ModelBase)
]
super(CalcModelBuilderSemantics, self).__init__(types=types)
class ModelBase(Node):
pass
class Add(ModelBase):
def __init__(self,
left=None,
op=None,
right=None,
**_kwargs_):
super(Add, self).__init__(
left=left,
op=op,
right=right,
**_kwargs_
)
def walk(self, node, *args, **kwargs):
supers_walk = super().walk
if isinstance(node, Node):
children = [self.walk(c, *args, **kwargs) for c in node.children()]
return supers_walk(node, children, *args, **kwargs)
elif isinstance(node, Mapping):
return {n: self.walk(e, *args, **kwargs) for n, e in node.items()}
elif is_list(node):
return [self.walk(e, *args, **kwargs) for e in iter(node)]
else:
return supers_walk(node, [], *args, **kwargs)
from __future__ import print_function, division, absolute_import, unicode_literals
from tatsu.objectmodel import Node
from tatsu.semantics import ModelBuilderSemantics
class CalcModelBuilderSemantics(ModelBuilderSemantics):
def __init__(self):
types = [
t for t in globals().values()
if type(t) is type and issubclass(t, ModelBase)
]
super(CalcModelBuilderSemantics, self).__init__(types=types)
class ModelBase(Node):
pass
class Add(ModelBase):
def __init__(self,
left=None,
op=None,
right=None,
**_kwargs_):
super(Add, self).__init__(
left=left,
op=op,
right=right,
**_kwargs_
)
def __init__(self, context=None, base_type=Node, types=None):
self.ctx = context
self.base_type = base_type
self.constructors = dict()
for t in types or ():
self._register_constructor(t)
super().__init__(
semantics=semantics,
trace=trace,
**kwargs
)
self.rules = {rule.name: rule for rule in rules}
@property
def pos(self):
return self._tokenizer.pos
def _find_rule(self, name):
return functools.partial(self.rules[name].parse, self)
class Model(Node):
@staticmethod
def classes():
return [
c for c in globals().values()
if isinstance(c, type) and issubclass(c, Model)
]
def __init__(self, ast=None, ctx=None):
super().__init__(ast=ast, ctx=ctx)
self._lookahead = None
self._firstset = None
self._follow_set = set()
self.value = None
self._nullability = self._nullable()
if isinstance(self._nullability, int): # Allow simple boolean values
if self._nullability:
def __str__(self):
return asjsons(self)
def __getstate__(self):
state = self.__dict__.copy()
state.update(_parent=self.parent)
return state
def __setstate__(self, state):
self.__dict__.update(state)
if self._parent is not None:
self._parent = weakref.ref(self._parent)
ParseModel = Node
# CAVEAT UTILITOR
#
# This file was automatically generated by TatSu.
#
# https://pypi.python.org/pypi/tatsu/
#
# Any changes you make to it will be overwritten the next time
# the file is generated.
from __future__ import print_function, division, absolute_import, unicode_literals
from tatsu.objectmodel import Node
from tatsu.semantics import ModelBuilderSemantics
class ModelBase(Node):
pass
class GameLogicModelBuilderSemantics(ModelBuilderSemantics):
def __init__(self, context=None, types=None):
types = [
t for t in globals().values()
if type(t) is type and issubclass(t, ModelBase)
] + (types or [])
super(GameLogicModelBuilderSemantics, self).__init__(context=context, types=types)
class VariableNode(ModelBase):
name = None
type = None