public class DAGExpressionParser extends Object
解析:new DAGParser("A->((B->C->D),(A->F))->(G,H,X)->J; A->Y").parse();
结果:
"A->((B->C->D),(A->F))->(G,H,X)->J"
<0:0:Start -> 1:1:A>
<1:1:A -> 1:1:B>
<1:1:A -> 1:2:A>
<1:1:B -> 1:1:C>
<1:1:C -> 1:1:D>
<1:2:A -> 1:1:F>
<1:1:D -> 1:1:G>
<1:1:D -> 1:1:H>
<1:1:D -> 1:1:X>
<1:1:F -> 1:1:G>
<1:1:F -> 1:1:H>
<1:1:F -> 1:1:X>
<1:1:G -> 1:1:J>
<1:1:H -> 1:1:J>
<1:1:X -> 1:1:J>
<1:1:J -> 0:0:End>
"A->Y"
<0:0:Start -> 2:3:A>
<2:3:A -> 2:1:Y>
<2:1:Y -> 0:0:End>
---------------------------------------------------
无法用expression来表达的场景:[A->C, A->D, B->D, B->E]
┌─────────────────────────────────┐
│ ┌─────>C──┐ │
│ ┌──>A──┤ │ │
│ │ └──┐ │ │
│ Start──┤ ├──>D──┼──>End │
│ │ ┌──┘ │ │
│ └──>B──┤ │ │
│ └─────>E──┘ │
└─────────────────────────────────┘
但可通过json graph来表达:
[
{"source": "1:1:A", "target": "1:1:C"},
{"source": "1:1:A", "target": "1:1:D"},
{"source": "1:1:B", "target": "1:1:D"},
{"source": "1:1:B", "target": "1:1:E"}
]
Copyright © 2023. All rights reserved.