pLiteral = try stringLit <|> try intLit <|> boolLit
  where
    stringLit = LString <$> stringLiteral
    intLit = LInteger <$> integer
    boolLit = try (reserved "true" >> return (LBool True)) <|> (reserved "false" >> return (LBool False))
pLiteral = try stringLit <|> try intLit <|> boolLit
  where
    stringLit = LString <$> stringLiteral
    intLit = LInteger <$> integer
    boolLit = try (reserved "true" >> return (LBool True)) <|> (reserved "false" >> return (LBool False))
pLiteral = try stringLit <|> try intLit <|> boolLit
  where
    stringLit = LString <$> stringLiteral
    intLit = LInteger <$> integer
    boolLit = try (reserved "true" >> return (LBool True)) <|> (reserved "false" >> return (LBool False))