@@ -2,6 +2,7 @@ module CfgToTm1Mapper where
2
2
3
3
import qualified PdaType
4
4
import qualified GrammarType
5
+ import qualified Tm1Type
5
6
import Data.Set (Set )
6
7
import qualified Data.Set as Set
7
8
@@ -21,17 +22,19 @@ mapCfgToPda
21
22
let startState = PdaType. State ' s'
22
23
let finalState = PdaType. State ' f'
23
24
let states = PdaType. States (Set. fromList [startState, finalState])
24
- let mappedRelations = do
25
- let mapSymbolToLetter (GrammarType. T (GrammarType. Terminal x)) = PdaType. Letter x
26
- let mapSymbolToLetter (GrammarType. N (GrammarType. Nonterminal x)) = PdaType. Letter x
27
- let mapListOfSymbolsToListOfLetters = map mapSymbolToLetter
28
- Set. map (\ (GrammarType. Relation (GrammarType. Nonterminal nonterminalSymbol, symbols)) ->
29
- PdaType. TransitionRelation (
30
- (finalState, PdaType. emptySymbol, PdaType. Letter nonterminalSymbol),
31
- (finalState, mapListOfSymbolsToListOfLetters symbols)
32
- ))
25
+ let mapSymbolToLetter x =
26
+ case x of
27
+ GrammarType. T (GrammarType. Terminal c) -> PdaType. Letter c
28
+ GrammarType. N (GrammarType. Nonterminal c) -> PdaType. Letter c
29
+ let mapListOfSymbolsToListOfLetters = map mapSymbolToLetter
30
+ let mappedRelations =
31
+ Set. map (\ (GrammarType. Relation (GrammarType. Nonterminal nonterminalSymbol, symbols)) ->
32
+ PdaType. TransitionRelation (
33
+ (finalState, PdaType. emptySymbol, PdaType. Letter nonterminalSymbol),
34
+ (finalState, mapListOfSymbolsToListOfLetters symbols)
35
+ ))
33
36
setOfRelations
34
- let transinstFromTerminals = Set. map
37
+ let transitionsFromTerminals = Set. map
35
38
(\ letter ->
36
39
PdaType. TransitionRelation (
37
40
(finalState, letter, letter),
@@ -43,7 +46,7 @@ mapCfgToPda
43
46
(startState, PdaType. emptySymbol, PdaType. emptySymbol),
44
47
(finalState, [PdaType. Letter startSymbol])
45
48
))
46
- (Set. union mappedRelations transinstFromTerminals )
49
+ (Set. union mappedRelations transitionsFromTerminals )
47
50
PdaType. Pda (
48
51
states,
49
52
pdaInputAlphabet,
@@ -52,4 +55,16 @@ mapCfgToPda
52
55
startState,
53
56
PdaType. InitialStackSymbols [] ,
54
57
PdaType. AcceptingStates (PdaType. States (Set. fromList [finalState]))
55
- )
58
+ )
59
+
60
+ -- mapPdaToTm1 :: PdaType.Pda -> Tm1Type.TM1
61
+ -- mapPdaToTm1
62
+ -- (PdaType.Pda
63
+ -- (PdaType.States setOfStates,
64
+ -- PdaType.InputAlphabet setOfInputLetters,
65
+ -- PdaType.StackAlphabet setOfStackLetters,
66
+ -- PdaType.TransitionRelations setOfTransitions,
67
+ -- startState,
68
+ -- PdaType.InitialStackSymbols listOfInitialStackLetters,
69
+ -- PdaType.AcceptingStates)
70
+ -- ) = do
0 commit comments