#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 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 GameLogicModelBuilderSemantics(ModelBuilderSemantics):
    def __init__(self):
        types = [
            t for t in globals().values()
            if type(t) is type and issubclass(t, ModelBase)
        ]
        super(GameLogicModelBuilderSemantics, self).__init__(types=types)


class ModelBase(Node):
    pass


class VariableNode(ModelBase):
    name = None
    type = None


class SignatureNode(ModelBase):
    name = None
    types = None


class PropositionNode(ModelBase):
    arguments = None
    name = None


class ActionPreconditionNode(ModelBase):
    condition = None
    preserve = None


class ActionNode(ModelBase):
    name = None
    postconditions = None
    preconditions = None


class PlaceholderNode(ModelBase):
    name = None
    type = None


class PredicateNode(ModelBase):
    name = None
    parameters = None


class RulePreconditionNode(ModelBase):
    condition = None
    preserve = None


class RuleNode(ModelBase):
    name = None
    postconditions = None
    preconditions = None


class AliasNode(ModelBase):
    lhs = None
    rhs = None


class ReverseRuleNode(ModelBase):
    lhs = None
    rhs = None


class PredicatesNode(ModelBase):
    predicates = None


class RulesNode(ModelBase):
    rules = None


class ReverseRulesNode(ModelBase):
    reverse_rules = None


class ConstraintsNode(ModelBase):
    constraints = None


class Inform7TypeNode(ModelBase):
    definition = None
    kind = None


class Inform7PredicateNode(ModelBase):
    predicate = None
    source = None


class Inform7PredicatesNode(ModelBase):
    predicates = None


class Inform7CommandNode(ModelBase):
    command = None
    event = None
    rule = None


class Inform7CommandsNode(ModelBase):
    commands = None


class Inform7CodeNode(ModelBase):
    code = None


class Inform7Node(ModelBase):
    parts = None


class TypeNode(ModelBase):
    name = None
    parts = None
    supertypes = None


class DocumentNode(ModelBase):
    types = None
