packages feed

antlr-haskell-0.1.0.1: test/lr/GLRPartial.hs

{-# LANGUAGE DeriveAnyClass, DeriveGeneric, TypeFamilies, QuasiQuotes
    , DataKinds, ScopedTypeVariables, OverloadedStrings, TypeSynonymInstances
    , FlexibleInstances, UndecidableInstances, FlexibleContexts, TemplateHaskell
    , DeriveDataTypeable #-}
module GLRPartial 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)
import qualified Text.ANTLR.LR as LR
import Language.ANTLR4.Syntax (stripQuotesReadEscape)

import GLRPartialGrammar

$(g4_parsers gLRPartialAST gLRPartialGrammar)

test_GLRPartial = case glrParse (== T_WS) "word\nword\nword\nw0rd" of
  (ResultAccept ast)         -> assertFailure $ "Was not suppose to parse: " ++ pshow' (ast2words ast)
  (ResultSet xs)             -> assertFailure $ "Ambiguous parse: " ++ pshow' xs                    
  (ErrorNoAction cfg asts _) -> return () -- Correct, should not have parsed
  rest                       -> assertFailure $ stripQuotesReadEscape $ "\"" ++ pshow' rest ++ "\""