diff --git a/examples2/automaton/NIDPDA1.DET.xml b/examples2/automaton/NIDPDA1.DET.xml index b0bb5a98671aeec5934963dc0cc75a0d7d8160d0..38762778cc8d1eef29debd91cc94a802753c5a60 100644 --- a/examples2/automaton/NIDPDA1.DET.xml +++ b/examples2/automaton/NIDPDA1.DET.xml @@ -1,88 +1,636 @@ +<?xml version="1.0"?> <InputDrivenDPDA> <states> - <PrimitiveLabel><String>['0']</String></PrimitiveLabel> - <PrimitiveLabel><String>['1']</String></PrimitiveLabel> - <PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['3']</String></PrimitiveLabel> + <LabelSetLabel/> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> </states> <inputAlphabet> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> </inputAlphabet> <stackAlphabet> - <BottomOfTheStackSymbol /> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + <BottomOfTheStackSymbol/> </stackAlphabet> <initialState> - <PrimitiveLabel><String>['0']</String></PrimitiveLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> </initialState> <initialStackSymbol> - <BottomOfTheStackSymbol /> + <BottomOfTheStackSymbol/> </initialStackSymbol> <finalStates> - <PrimitiveLabel><String>['3']</String></PrimitiveLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> </finalStates> <inputToPushdownStoreOperations> <operation> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> - <pop></pop> - <push><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop/> + <push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </push> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol> - <pop></pop> - <push><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop/> + <push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </push> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol> - <pop><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></pop> - <push></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </pop> + <push/> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol> - <pop><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></pop> - <push></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </pop> + <push/> </operation> </inputToPushdownStoreOperations> <transitions> <transition> - <from><PrimitiveLabel><String>['0']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['1']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['1']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['3']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['3']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> </transition> </transitions> </InputDrivenDPDA> diff --git a/examples2/automaton/NIDPDA2.DET.xml b/examples2/automaton/NIDPDA2.DET.xml index 5afab0389a1099be7cf43e974a49e03d66dd9752..e9752e76cf470a24eabd78658b4457fb90bdc214 100644 --- a/examples2/automaton/NIDPDA2.DET.xml +++ b/examples2/automaton/NIDPDA2.DET.xml @@ -1,83 +1,496 @@ +<?xml version="1.0"?> <InputDrivenDPDA> <states> - <PrimitiveLabel><String>['0']</String></PrimitiveLabel> - <PrimitiveLabel><String>['0', '1', '2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['2']</String></PrimitiveLabel> + <LabelSetLabel/> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> </states> <inputAlphabet> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> </inputAlphabet> <stackAlphabet> - <BottomOfTheStackSymbol /> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <BottomOfTheStackSymbol/> </stackAlphabet> <initialState> - <PrimitiveLabel><String>['0']</String></PrimitiveLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> </initialState> <initialStackSymbol> - <BottomOfTheStackSymbol /> + <BottomOfTheStackSymbol/> </initialStackSymbol> <finalStates> - <PrimitiveLabel><String>['0']</String></PrimitiveLabel> - <PrimitiveLabel><String>['0', '1', '2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['2']</String></PrimitiveLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> </finalStates> <inputToPushdownStoreOperations> <operation> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> - <pop></pop> - <push><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop/> + <push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </push> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol> - <pop><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></pop> - <push></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </pop> + <push/> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol> - <pop><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></pop> - <push></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </pop> + <push/> </operation> </inputToPushdownStoreOperations> <transitions> <transition> - <from><PrimitiveLabel><String>['0']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['0', '1', '2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['0', '1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['0', '1', '2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['0', '1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['0', '1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['1', '2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> </transition> </transitions> </InputDrivenDPDA> diff --git a/examples2/automaton/NIDPDA3.DET.xml b/examples2/automaton/NIDPDA3.DET.xml index 5096cce2c63ebf503db691976881f80d0f27a873..170d0a0bf39651741a589c340951359821a985ae 100644 --- a/examples2/automaton/NIDPDA3.DET.xml +++ b/examples2/automaton/NIDPDA3.DET.xml @@ -1,104 +1,898 @@ +<?xml version="1.0"?> <InputDrivenDPDA> <states> - <PrimitiveLabel><String>['0']</String></PrimitiveLabel> - <PrimitiveLabel><String>['0', 'B1', 'C1']</String></PrimitiveLabel> - <PrimitiveLabel><String>['B1', 'B2', 'C2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['B1', 'B2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['3', 'C2']</String></PrimitiveLabel> - <PrimitiveLabel><String>['3']</String></PrimitiveLabel> - <PrimitiveLabel><String>['4']</String></PrimitiveLabel> + <LabelSetLabel/> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C1</String> + </PrimitiveLabel> + </LabelSetLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> </states> <inputAlphabet> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol> - <LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> </inputAlphabet> <stackAlphabet> - <BottomOfTheStackSymbol /> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <BottomOfTheStackSymbol/> </stackAlphabet> <initialState> - <PrimitiveLabel><String>['0']</String></PrimitiveLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> </initialState> <initialStackSymbol> - <BottomOfTheStackSymbol /> + <BottomOfTheStackSymbol/> </initialStackSymbol> <finalStates> - <PrimitiveLabel><String>['4']</String></PrimitiveLabel> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> </finalStates> <inputToPushdownStoreOperations> <operation> - <LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol> - <pop></pop> - <push><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop/> + <push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </push> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol> - <pop><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></pop> - <push></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </pop> + <push/> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol> - <pop><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></pop> - <push></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </pop> + <push/> </operation> <operation> - <LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol> - <pop></pop> - <push></push> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + <pop/> + <push/> </operation> </inputToPushdownStoreOperations> <transitions> <transition> - <from><PrimitiveLabel><String>['0']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['0', 'B1', 'C1']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['0', 'B1', 'C1']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>a</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['0', 'B1', 'C1']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['0', 'B1', 'C1']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['B1', 'B2', 'C2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['B1', 'B2', 'C2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['B1', 'B2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel/> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['B1', 'B2', 'C2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['3', 'C2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C1</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['B1', 'B2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>b</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['B1', 'B2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['B1', 'B2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['3']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['3', 'C2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>c</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['3', 'C2']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['3', 'C2']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['4']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> <transition> - <from><PrimitiveLabel><String>['3']</String></PrimitiveLabel></from> - <input><LabeledSymbol><PrimitiveLabel><Character>d</Character></PrimitiveLabel></LabeledSymbol></input> - <to><PrimitiveLabel><String>['4']</String></PrimitiveLabel></to> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>4</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C1</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>0</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C1</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>a</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>b</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>c</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel> + <PrimitiveLabel> + <String>3</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </to> + </transition> + <transition> + <from> + <LabelSetLabel> + <PrimitiveLabel> + <String>B1</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>B2</String> + </PrimitiveLabel> + <PrimitiveLabel> + <String>C2</String> + </PrimitiveLabel> + </LabelSetLabel> + </from> + <input> + <LabeledSymbol> + <PrimitiveLabel> + <Character>d</Character> + </PrimitiveLabel> + </LabeledSymbol> + </input> + <to> + <LabelSetLabel/> + </to> </transition> </transitions> </InputDrivenDPDA> diff --git a/tests.adeterminize.sh b/tests.adeterminize.sh index 7c52badc1fc204c15e9440d4cdbc83f932a1a247..ab1079a7b1e770d050cc50f3a83e564a43dd263c 100755 --- a/tests.adeterminize.sh +++ b/tests.adeterminize.sh @@ -135,8 +135,8 @@ function runTest { } runTest "NFSM" "./adeterminize2 | ./atrim2" -#runTest "NIDPDA" "./adeterminize2" runTest "ENFSM" "./aepsilon2 | ./adeterminize2" -#runTest "NPDA" "./adeterminize2" -#runTest "NVPA" "./adeterminize2" -#runTest "RHDPDA" "./adeterminize2" +runTest "NIDPDA" "./adeterminize2" +runTest "NPDA" "./adeterminize2 | ./anormalize2 --labels automaton" +runTest "NVPA" "./adeterminize2" +runTest "RHDPDA" "./adeterminize2" diff --git a/tests.astringology.sh b/tests.astringology.sh new file mode 100755 index 0000000000000000000000000000000000000000..bfe44f3047bdb12a3956a386aaa16c979201b904 --- /dev/null +++ b/tests.astringology.sh @@ -0,0 +1,151 @@ +#!/usr/bin/env bash + +# $1 test dir suffix (debug / release) + +# SETTINGS +TESTCASE_ITERATIONS=100 +TESTCASE_TIMEOUT=10 +LOGFILE="log_tests.txt" + +RAND_STATES=18 +RAND_DENSITY="2.5" +RAND_ALPHABET=4 + +EXECUTABLES="arand2 aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2 aconversions2" +TESTS_DIR="../examples2/automaton" + +RES_GOOD=0 +RES_FAIL=0 +RES_TIME=0 +RES_SEGV=0 +RES_UNKN=0 + + +# ---------------------------- + +for FILE in $EXECUTABLES; do + if [ ! -f bin-$1/$FILE ]; then + echo "Executable $FILE is required for testing. Make sure it is in bin-$1 folder." + exit 1 + fi +done + +cd bin-$1/ +rm -f $LOGFILE + +# ---------------------------- + +# $1 = conv command +# $2 = return code +# $3 = input automaton +# $4 = output of conversion +function log { + echo "----------------------------------------------------------" >> $LOGFILE + echo "conv: " $1 >> $LOGFILE + echo "ret: " $2 >> $LOGFILE + echo "input automaton:" >> $LOGFILE + echo "$3" >> $LOGFILE + echo "command out:" >> $LOGFILE + echo "$4" >> $LOGFILE +} + +function generateNFA { + ./arand2 -t FSM -d $RAND_DENSITY -n $(( $RANDOM % $RAND_STATES + 1 )) -a $(( $RANDOM % $RAND_ALPHABET + 1 )) 2>/dev/null +} + +# $1 = command for conversion. Output of such command must be (eps-)NFA !! +# $2 = automaton +function runTest2 { + MDFA="./aepsilon2 | ./adeterminize2 | ./atrim2 | ./aminimize2 | ./anormalize2 --labels automaton" + + TMPNFA="nfa.xml" + echo "$2" > $TMPNFA + + OUT=`timeout $TESTCASE_TIMEOUT bash -c "./acompare2 <(cat $TMPNFA | $1 | $MDFA ) <(cat $TMPNFA | $MDFA)"` + RET=$? + + if [ $RET == 0 ]; then # ok + rm $TMPNFA + return 0 + fi + + log "$1" $RET "$(cat $TMPNFA)" "$OUT" + rm $TMPNFA + + if [ $RET == 124 ]; then # timeout + return 2 + elif [ $RET -ge 124 ]; then #segv + return 3 + else + return 1 + fi +} + +function registerResult { + case $1 in + 0) + echo -n "." + ((RES_GOOD++)) + ;; + 1) + echo -n "x" + ((RES_FAIL++)) + ;; + 2) + echo -n "T" + ((RES_TIME++)) + ;; + 3) + echo -n "E" + ((RES_SEGV++)) + ;; + *) + echo -n "?" + ((RES_UNKN++)) + ;; + esac +} + +function clearResults { + RES_GOOD=0 + RES_FAIL=0 + RES_TIME=0 + RES_SEGV=0 + RES_UNKN=0 +} + +function outputResults { + # summary + echo -ne "\n\t" + echo "RES: GOOD:" $RES_GOOD ", FAIL:" $RES_FAIL ", TIME:" $RES_TIME ", SEGV:" $RES_SEGV, "UNKN:" $RES_UNKN + echo "" +} + +# $1 - aconversions2 sequence +function runTest { + echo $1 + echo -ne "\t" + + clearResults + + # predefined tests first + for FILE in `ls $TESTS_DIR/aconversion.test*`; do + runTest2 "$1" "$(cat $FILE)" + registerResult $? + done + + echo -n " | " + + # random tests + for i in $(seq 1 $TESTCASE_ITERATIONS ); + do + runTest2 "$1" "$(generateNFA)" + registerResult $? + done + + outputResults +} + +runTest "exact" "./astringology2 -a exactMatch -s <(./aconvert2 --string_from_string <<< "\"ababbababbb\"") -p <(./aconvert2 --string_from_string <<< "\"ab\"")" +runTest "exact" "./astringology2 -a boyerMooreHorspool -s <(./aconvert2 --string_from_string <<< "\"ababbababbb\"") -p <(./aconvert2 --string_from_string <<< "\"ab\"")" +runTest "exact" "./arun2 -t occurrences -a <(./astringology2 -a exactMatchingAutomaton -p <(./aconvert2 --string_from_string <<< "\"ab\"") | ./adeterminize2) -i <(./aconvert2 --string_from_string <<< "\"ababbababbb\"")"