packages feed

platinum-parsing-0.1.0.0: test/PPTest/Templates/Lr.hs

module PPTest.Templates.Lr (specs) where

import qualified Data.List        as L
import           PP
import           PP.Builders.Lalr
import           PP.Templates.Lr  as Lr
import           System.IO
import           Test.Hspec

r0 = Rule "__start" [NonTerm "E", Empty]
r1 = Rule "E" [NonTerm "T", Term '+', NonTerm "E", Empty]
r2 = Rule "E" [NonTerm "T", Empty]
r3 = Rule "T" [NonTerm "F", Term '*', NonTerm "T", Empty]
r4 = Rule "T" [NonTerm "F", Empty]
r5 = Rule "F" [Term '(', NonTerm "E", Term ')', Empty]
r6 = Rule "F" [Term 'x', Empty]
rs = ruleSet [r0, r1, r2, r3, r4, r5, r6]
fs = firstSet rs
c = collection rs fs :: LrCollection LalrItem
Right t = table c

specs = describe "PPTest.Templates.Lr" $

  it "should compile correctly a template" $ do
    te <- readFile "test/res/lr-table"
    e <- readFile "test/res/lr-table.test"
    compile (Lr.context t) te `shouldBe` e