{-# LANGUAGE DeriveAnyClass, DeriveGeneric, TypeFamilies, QuasiQuotes
, DataKinds, ScopedTypeVariables, OverloadedStrings, TypeSynonymInstances
, FlexibleInstances, UndecidableInstances, FlexibleContexts, TemplateHaskell
, DeriveDataTypeable #-}
module Grammar where
import Language.ANTLR4
import System.IO.Unsafe (unsafePerformIO)
import Data.Monoid
import Test.Framework
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2
import Test.HUnit
import Test.QuickCheck (Property, quickCheck, (==>))
import qualified Test.QuickCheck.Monadic as TQM
import Language.Haskell.TH.Syntax (lift)
data Attr = A | B
data Decl = Foo | Bar
[g4|
grammar Simple;
attrDecl : attr* decl ;
attrDecl2 : attr? decl ;
attrDecl3 : attr+ decl ;
attr : 'a' ';' -> A
| 'b' ';' -> B
;
decl : 'foo' -> Foo
| 'bar' -> Bar
;
UNICODE : '\u0008' -> String ;
|]