pBlock = try (one <$> pStatement) <|> do
           reserved "begin"
           sts <- pStatement `sepEndBy1` semi
           reserved "end"
--            semi
           return sts
  where
    one x = [x]
pBlock = try (one <$> pStatement) <|> do
           reserved "begin"
           sts <- pStatement `sepEndBy1` semi
           reserved "end"
--            semi
           return sts
  where
    one x = [x]
pBlock = try (one <$> pStatement) <|> do
           reserved "begin"
           sts <- pStatement `sepEndBy1` semi
           reserved "end"
--            semi
           return sts
  where
    one x = [x]