parseLine line s =
  let str = ppLex s in
  case runParser line_ s of
    Right (r, []) -> (line, r { rule_str = Just str })
    p -> error $ "line " ++ show line ++ ": incomplete parse.\n  " ++ show p
parseLine line s =
  let str = ppLex s in
  case runParser line_ s of
    Right (r, []) -> (line, r { rule_str = Just str })
    p -> error $ "line " ++ show line ++ ": incomplete parse.\n  " ++ show p
parseLine line s =
  let str = ppLex s in
  case runParser line_ s of
    Right (r, []) -> (line, r { rule_str = Just str })
    p -> error $ "line " ++ show line ++ ": incomplete parse.\n  " ++ show p