Commit 7ccebc95 authored by Savva Golubitsky's avatar Savva Golubitsky

Factory is near to ready, but some packages errors. Bruh, python

parent ae66f747
import re import re
import graph as gr import graph as gr
from edge import *
import importlib as imp
from typing import NamedTuple from typing import NamedTuple
from enum import Enum, auto from enum import Enum, auto
...@@ -40,6 +42,24 @@ class GraphFactory(): ...@@ -40,6 +42,24 @@ class GraphFactory():
if newst: if newst:
newstate = gr.State(statename) newstate = gr.State(statename)
self.states[statename] = newstate self.states[statename] = newstate
def _create_morphism(self, morphame):
morph = entities[morphame]
for m in morph.__slots__:
if getattr(morph,m) != None:
if m!="predicate" and m!="function":
print("ERROR: Morphisms could not have any params exept predicate and function!\n{}".format(morphame))
exit(0)
if m=="predicate":
pr = getattr(morph, m)
pred_f = getattr(imp.import_module(pr.module), pr.entry_func)
if m=="function":
fu = getattr(morph, m)
func_f = getattr(imp.import_module(fu.module), fu.entry_func)
return pred_f, func_f
def connect_states(self, st1, st2, morphism=None): def connect_states(self, st1, st2, morphism=None):
pass pass
...@@ -73,7 +93,7 @@ def check_brackets(rawfile): ...@@ -73,7 +93,7 @@ def check_brackets(rawfile):
#Props is line "[prop=smth, ...]" #Props is line "[proFp=smth, ...]"
def param_from_props(props): def param_from_props(props):
parm = Params() parm = Params()
props = props.replace("]", '') props = props.replace("]", '')
...@@ -87,7 +107,7 @@ def param_from_props(props): ...@@ -87,7 +107,7 @@ def param_from_props(props):
if r[0] in parm.__slots__: if r[0] in parm.__slots__:
setattr(parm, r[0], r[1]) setattr(parm, r[0], r[1])
else: else:
print("Unknown parameter: "+ r[0]) print("ERROR:Unknown parameter: "+ r[0])
exit(-1) exit(-1)
return parm return parm
...@@ -103,15 +123,15 @@ def param_from_topln(raw): ...@@ -103,15 +123,15 @@ def param_from_topln(raw):
right = spl[2].split(",") right = spl[2].split(",")
if len(spl)>3: if len(spl)>3:
param_from_props(spl[3]) param_from_props(spl[3])
if (len(left)!=1) and (len(right)!=1): if (len(left)>1) and (len(right)>1):
print("ERROR:Ambigious multiple connection in line:\n\t{}".format(raw)) print("ERROR:Ambigious multiple connection in line:\n\t{}".format(raw))
exit() exit()
elif len(left)==2: elif len(left)>1:
fact.add_state(right[0]) fact.add_state(right[0])
for st in left: for st in left:
fact.add_state(st) fact.add_state(st)
fact.connect_states(st, right[0]) fact.connect_states(st, right[0])
elif len(right)==2: elif len(right)>1:
fact.add_state(left[0]) fact.add_state(left[0])
for st in right: for st in right:
fact.add_state(st) fact.add_state(st)
...@@ -137,6 +157,7 @@ dot = re.sub(r"^\n$", "", dot) ...@@ -137,6 +157,7 @@ dot = re.sub(r"^\n$", "", dot)
# exit() # exit()
# #
#print("Graph id good, processing!") #print("Graph id good, processing!")
#dot = re.sub(r"//*$", "", dot) #dot = re.sub(r"//*$", "", dot)
dotlines = dot.splitlines() dotlines = dot.splitlines()
...@@ -156,12 +177,12 @@ for i, ln in enumerate(dotlines): ...@@ -156,12 +177,12 @@ for i, ln in enumerate(dotlines):
elif top_re.match(ln): elif top_re.match(ln):
param_from_topln(ln) param_from_topln(ln)
for e in entities:
print(e, entities[e])
print("states:\n") print("states:\n")
for st in fact.states: for st in fact.states:
print(st) print(st)
for e in entities:
print(e, entities[e])
exit() exit()
......
digraph CODEOBJECT_GENERATOR
{
// ??????????? ???????-????????????
FUNC_1 [module=case_gen_funcs, entry_func=function_1]
FUNC_2 [module=case_gen_funcs, entry_func=function_2]
FUNC_3 [module=case_gen_funcs, entry_func=function_3]
SAVE_TO_DB [module=case_gen_funcs, entry_func=save_to_db]
SAVE_TO_FILE [module=case_gen_funcs, entry_func=save_to_file]
REPEAT [module=case_gen_funcs, entry_func=repeat]
EXIT [module=case_gen_funcs, entry_func=exit]
CREATE_DUMP [module=case_gen_funcs, entry_func=create_dump]
// ??????????? ???????-??????????
PREDICATE_X [module=predicate_funcs, entry_func=predicate_x]
PREDICATE_Y [module=predicate_funcs, entry_func=predicate_y]
SELECTOR [module=predicate_funcs, entry_func=selector]
// ??????????? ??????? ???????? (????????)
EDGE_1 [predicate=PREDICATE_X, function=FUNC_1]
EDGE_2 [predicate=PREDICATE_Y, function=FUNC_2]
EDGE_3 [predicate=PREDICATE_X, function=FUNC_3]
EDGE_4 [predicate=PREDICATE_Y, function=SAVE_TO_DB]
EDGE_5 [predicate=PREDICATE_X, function=SAVE_TO_FILE]
EDGE_6 [predicate=PREDICATE_Y, function=REPEAT]
EDGE_7 [predicate=PREDICATE_X, function=EXIT]
EDGE_8 [function=EXIT]
EDGE_9 [predicate=CHECK_DUMP, function=EXIT]
EDGE_10 [function=CREATE_DUMP]
// ? ???? ??????? ????????? ?????????????????
CONTENT_SUBSTITUTED [parallelism=threading]
// ??????????? ???????? ??????
__BEGIN__ -> INPUT_READY
INPUT_READY -> TEPMLATE_COPIED [morphism=EDGE_1]
TEPMLATE_COPIED -> NAMES_SUBSTITUTED [morphism=EDGE_2]
NAMES_SUBSTITUTED -> CONTENT_SUBSTITUTED [morphism=EDGE_3]
CONTENT_SUBSTITUTED => DUMP_CREATED [morphism=EDGE_10]
CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_4]
CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_5]
// ? ??????????? ?? ?????? ?????????? SELECTOR ?????????????? ??????? ?? ??????? ??? ??????? ?????
RESULT_SAVED -> INPUT_READY, __END__ [selector=SELECTOR, morphism=(EDGE_6, EDGE_7)]
RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9)]
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment