]> Git — Sourcephile - haskell/symantic-parser.git/blob - test/Grammar.hs
bug: a ref outside its def must be supported
[haskell/symantic-parser.git] / test / Grammar.hs
1 {-# LANGUAGE ExistentialQuantification #-}
2 {-# LANGUAGE FlexibleContexts #-}
3 {-# LANGUAGE NoMonomorphismRestriction #-}
4 {-# LANGUAGE RankNTypes #-}
5 {-# LANGUAGE TypeApplications #-}
6 {-# LANGUAGE TypeFamilies#-}
7 {-# OPTIONS_GHC -Wno-missing-signatures #-}
8 module Grammar where
9 import Data.Char (Char)
10 import qualified Grammar.Brainfuck
11 import qualified Grammar.Nandlang
12
13 import Symantic.Parser
14
15 data G = forall a. G (
16 forall repr.
17 Grammar Char repr =>
18 repr a
19 )
20
21 grammars :: [G]
22 grammars =
23 [ G g1
24 , G g2
25 , G g3
26 , G g4
27 , G g5
28 , G g6
29 , G g7
30 , G g8
31 , G g9
32 , G g10
33 , G g11
34 , G g12
35 , G g13
36 --, G g14
37 ]
38
39 g1 = char 'a'
40 g2 = string "abc"
41 g3 = many (char 'a')
42 g4 = some (string "abcd")
43 g5 = some (string "abcd") <* eof
44 g6 = traverse char "aa" <|> traverse char "ab"
45 g7 = string "aa" <|> string "ab"
46 g8 = many (char 'r') <* eof
47 g9 = eof
48 g10 = char 'a' <|> char 'b'
49 g11 = many (char 'a') <* char 'b'
50 g12 = many (oneOf ['a', 'b', 'c', 'd']) <* eof
51 g13 = Grammar.Brainfuck.grammar
52 --g14 = Grammar.Nandlang.grammar