(WIP) add CBD language
This commit is contained in:
parent
a89fe4bb71
commit
641e4b9810
6 changed files with 289 additions and 0 deletions
55
examples/cbd/models.py
Normal file
55
examples/cbd/models.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
import os
|
||||
from framework.conformance import Conformance, render_conformance_check_result
|
||||
from concrete_syntax.textual_od import parser
|
||||
|
||||
|
||||
# get file contents as string
|
||||
def read_file(filename):
|
||||
dir = os.path.dirname(__file__)
|
||||
with open(dir+'/'+filename) as file:
|
||||
return file.read()
|
||||
|
||||
# def parse_and_check(state, cs_file, mm):
|
||||
# m_cs = read_file(cs_file)
|
||||
# try:
|
||||
# _parse_and_check(state, m_cs, mm)
|
||||
# except Exception as e:
|
||||
# e.add_note(f"While parsing '{cs_file}'")
|
||||
# raise
|
||||
# return m
|
||||
|
||||
def parse_and_check(state, m_cs, mm, descr: str):
|
||||
try:
|
||||
m = parser.parse_od(
|
||||
state,
|
||||
m_text=m_cs,
|
||||
mm=mm,
|
||||
)
|
||||
conf = Conformance(state, m, mm)
|
||||
errors = conf.check_nominal()
|
||||
if len(errors) > 0:
|
||||
raise Exception(render_conformance_check_result(errors))
|
||||
except Exception as e:
|
||||
e.add_note("While parsing model " + descr)
|
||||
raise
|
||||
return m
|
||||
|
||||
def get_metamodels(state, scd_mmm):
|
||||
mm_cs = read_file('models/mm_design.od')
|
||||
mm_rt_cs = mm_cs + read_file('models/mm_runtime.od')
|
||||
|
||||
mm = parse_and_check(state, mm_cs, scd_mmm, "Design meta-model")
|
||||
mm_rt = parse_and_check(state, mm_rt_cs, scd_mmm, "Runtime meta-model")
|
||||
|
||||
return (mm, mm_rt)
|
||||
|
||||
def get_fibonacci(state, scd_mmm):
|
||||
mm, mm_rt = get_metamodels(state, scd_mmm)
|
||||
|
||||
m_cs = read_file('models/m_fibonacci.od')
|
||||
m_rt_initial_cs = m_cs + read_file('models/m_fibonacci_initial.od')
|
||||
|
||||
m = parse_and_check(state, m_cs, mm, "Fibonacci model")
|
||||
m_rt_initial = parse_and_check(state, m_rt_initial_cs, mm_rt, "Fibonacci initial state")
|
||||
|
||||
return (mm, mm_rt, m, m_rt_initial)
|
||||
Loading…
Add table
Add a link
Reference in a new issue