Workflow <sew-id> "<description> of the Symbolic Execution Workflow" { workspace: [ //... ] project: [ //... ] sep <id> "<description> of Global Symbolic Execution Platform Configuration" { //... } // Default Job / Director / Driver job = Job <id> "<description>" { // ... } // Additional Job job += Job <id> "<description>" { // ... } /* sop : Sequence | Parallel */ scheduler = <sop> { start <jod-id-1> start <jod-id-1> } }
workspace: [ root = "<path>" source = "<path>" output = "<path>" log = "<path>" ]
project: [ // ... ]
sep <id> "<description> of Symbolic Execution Platform Configuration" { core: [ //... ] log: [ //... ] debug: [ //... ] // ... }
job = Job <id> "<description>" { sep <id> "<description> of Local Symbolic Execution Platform Configuration" { //... } stream: [ // ... ] project: [ //... ] main = MainAnalysisModule <id> "<description> of the Main Analysis Module" { // ... } serializer = GraphVizStatemachineSerializer <id> "<description>" { // ... } serializer = GraphVizExecutionGraphSerializer <id> "<description>" { // ... } fam += StateTransitionCoverageModule "State/Transition Coverage Analysis Module" { // ... } fam += HitOrJumpModule "Hit or Jump Analysis Module" { // ... } fam "Formal Analysis Module" = hitorjump { // "Processor" de gestion des critères d'arrêt absolus (paramètres utilisateur) main { // or director / driver property: [ ] log: [ ] debug: [ ] queue: [ ] } } }
stdin as Standard Input Stream
stdout as Standard Output Stream
stderr as Standard Error Stream
project as model specification
stream: [ /* uri : std "::" ( 'cout' | 'cerr' | 'cin' ) | sew "::" ( 'log' | 'trace' ) | folder "::" "<path>" | file "::" "<path>" | filename "::" "<path>" | socket "::" <host-id> ":" <port-number> */ stdin = <uri> stdout = <uri> stderr = <uri> // ... ]
project: [ // Chemin relatif à workspace::source (ou absolu!) model = "<FormalML-Concrete-Syntax.fml>" // ... ]
fam += FAM "Transition Coverage Analysis Module" { priority: [ // ... ] scheduling: [ // ... ] log: [ // ... ] debug: [ // ... ] }
priority: [ preprocess = <integer> prefilter = <integer> postfilter = <integer> postprocess = <integer> // ... ]
scheduling: [ preprocess = <boolean> prefilter = <boolean> postfilter = <boolean> postprocess = <boolean> // ... ]
log: [ // ... ]
debug: [ // ... ]
main = MainAnalysisModule <id> "<description> of the MAM" { queue "<description> of Symbolic Execution Queue" : [ // ... ] limit "Symbolic Execution Processing Limit" : [ // ... ] irq "IRQ, Interrupt ReQuest for the Workflow" : [ // ... ] detector <id> "Enable some passive detectors" : [ // ... ] // ... }
// Default Queue Sequence queue "<description> of the Symbolic Execution Queue" : [ /* 'BFS' | 'BREADTH_FIRST_SEARCH' 'DFS' | 'DEPTH_FIRST_SEARCH' 'RFS' | 'RANDOM_FIRST_SEARCH' 'WEIGHT::{ DFS | BFS | RFS | XFS }' */ policy = <policy> // ... ] // Specific Class Queue queue = <queue_type_id> "<description> of the Symbolic Execution Queue" { /* 'BFS' | 'BREADTH_FIRST_SEARCH' 'DFS' | 'DEPTH_FIRST_SEARCH' 'RFS' | 'RANDOM_FIRST_SEARCH' 'WEIGHT::{ DFS | BFS | RFS | XFS }' */ policy = <policy> // ... }
limit "Symbolic Execution Processing Limit" : [ node = <integer> height = <integer> width = <integer> eval = <integer> step = <integer> save = <integer> // ... ]
irq "IRQ, Interrupt ReQuest for the Workflow" : [ frequency = <integer> file = "<stop-if-this-file-path-exist>" // ... ]
detector "Enable some passive detectors" : [ deadlock = <boolean> loop#trivial = <boolean> // ... ]
serializer += GraphVizStatemachineSerializer <id> "<description>" { // ... property: [ ] trace: [ ] format: [ ] vfs: [ file = "<save-file-path>" ]
serializer += GraphVizExecutionGraphSerializer <id> "<description>" { // ... property: [ ] trace: [ ] format: [ ] vfs: [ file = "<save-file-path>" ]
fam += StateTransitionCoverageModule "State/Transition Coverage Analysis Module" { // ... } ```s #### Class HitOrJumpModule ```sew fam += HitOrJumpModule <id> "<description>" { // ... }
Workflow explorationBFS "Simple model BFS exploration Workflow" { workspace: [ root = "<workspace-root-folder-from-filse-system-path>" output = "out" ] job { project: [ model = "<FormalML-Concrete-Syntax.fml>" ] main { queue "Symbolic Execution Queue" : [ policy = 'BFS' ] limit "Symbolic Execution Processing Limit" : [ step = 10 ] } serializer = GraphVizStatemachineSerializer { } serializer = GraphVizExecutionGraphSerializer { } } }