1 module dxx.app.parsers.workflow; 2 3 private import dxx.app.workflow; 4 5 // grammar 6 7 private import pegged.grammar; 8 private import dxx.util.injector; 9 10 mixin(grammar(import("workflow.peg"))); 11 12 /* 13 static Workflow parseWorkflow(string wf) { 14 auto g = WorkflowGrammar(wf); 15 WorkflowElement elem_value(ParseTree p) { 16 string id = p.matches.join('.'); 17 auto e = resolveInjector!WorkflowElement(id); 18 foreach(w;p.children) { 19 //switch(w.name) { 20 //} 21 } 22 return e; 23 } 24 Workflow wf_value(ParseTree p) { 25 WorkflowElement[] e; 26 foreach(w;p.children) { 27 switch(w.name) { 28 case "WorkflowDoc.WorkflowHeader": 29 break; 30 case "WorkflowDoc.WorkflowElement": 31 e ~= elem_value(w); 32 } 33 } 34 return new DefaultWorkflow(e,arg); 35 } 36 Workflow[string] value(ParseTree p) { 37 switch (p.name) { 38 case "WorkflowDoc" : 39 Workflow[string] wf; 40 // options... 41 foreach(w;p.children[0..$]) { 42 switch(w.name) { 43 case "WorkflowDoc.WorkflowHeader" : 44 break; 45 case "WorkflowDoc.WorkflowDefinition" : 46 wf[w.matches[0]] = wf_value(wf); 47 } 48 } 49 return wf; 50 default: 51 } 52 } 53 54 return wf(g); 55 } 56 */ 57