muMLE/examples/woods/opsem_rulebased.py
2024-11-13 10:07:16 +01:00

25 lines
880 B
Python

### Operational Semantics - defined by rule-based model transformation ###
from transformation.rule import Rule, RuleMatcherRewriter, PriorityActionGenerator
from transformation.ramify import ramify
from util import loader
import os
THIS_DIR = os.path.dirname(__file__)
get_filename = lambda rule_name, kind: f"{THIS_DIR}/rules/r_{rule_name}_{kind}.od"
def get_action_generator(state, rt_mm):
rt_mm_ramified = ramify(state, rt_mm)
matcher_rewriter = RuleMatcherRewriter(state, rt_mm, rt_mm_ramified)
rules0_dict = loader.load_rules(state, get_filename, rt_mm_ramified, ["hungry_bear_dies"])
rules1_dict = loader.load_rules(state, get_filename, rt_mm_ramified, ["advance_time", "attack"])
generator = PriorityActionGenerator(matcher_rewriter, [
rules0_dict, # highest priority
rules1_dict, # lowest priority
])
return generator