mpc
Haskell-like feature supports in C++
|
#include <iostream>
#include <string>
#include <string_view>
#include <mpc/control.hpp>
#include <mpc/data.hpp>
Go to the source code of this file.
Classes | |
struct | mpc::alternative_traits< mpc::either< mpc::ParseError, std::pair< T, mpc::String > > > |
Namespaces | |
namespace | mpc::detail |
Implementation details are here. | |
Macros | |
#define | MPC_FORWARD(x) std::forward<decltype(x)>(x) |
Functions | |
template<class T > | |
T | mpc::decay (T) |
Variables | |
constexpr auto | mpc::parse_test |
パーサーと文字列を受け取り、パースする。パースに成功した場合、パース結果を表示する。失敗した場合、エラーメッセージを表示する。 More... | |
constexpr auto | mpc::left |
エラーメッセージを受け取り、必ず失敗するパーサーを返す。 More... | |
constexpr auto | mpc::try1 |
パーサーを受け取り、パーサーを返す。このパーサーはパースに失敗しても直ちにエラーとならない。 More... | |
constexpr auto | mpc::many1 |
constexpr auto | mpc::many |
constexpr auto | mpc::between |
between open p close = open *> p <* close More... | |
constexpr auto | mpc::sep_by1 |
sepBy1 p sep = liftA2 (:) p (many (sep *> p)) More... | |
constexpr auto | mpc::sep_by |
sepBy p sep = sepBy1 p sep <|> pure [] More... | |
constexpr auto | mpc::chainl1 |
constexpr auto | mpc::satisfy |
述語を受け取り、パーサーを返す。このパーサーは、文字列の先頭が述語を満たす場合にそれを返す。 More... | |
constexpr auto | mpc::char1 |
文字を受け取り、パーサーを返す。このパーサーは、文字列の先頭が渡した文字に一致する場合にそれを返す。 More... | |
constexpr auto | mpc::string |
文字列を受け取り、パーサーを返す。このパーサーは、文字列の先頭が渡した文字列から始まる場合にその文字列を返す。 More... | |
const auto | mpc::detail::alnum = satisfy % mpc::isalnum or left % "expecting alnum"s |
const auto | mpc::detail::alpha = satisfy % mpc::isalpha or left % "expecting alpha"s |
const auto | mpc::detail::lower = satisfy % mpc::islower or left % "expecting lower"s |
const auto | mpc::detail::upper = satisfy % mpc::isupper or left % "expecting upper"s |
const auto | mpc::detail::digit = satisfy % mpc::isdigit or left % "expecting digit"s |
const auto | mpc::detail::xdigit = satisfy % mpc::isxdigit or left % "expecting xdigit"s |
const auto | mpc::detail::cntrl = satisfy % mpc::iscntrl or left % "expecting cntrl"s |
const auto | mpc::detail::graph = satisfy % mpc::isgraph or left % "expecting graph"s |
const auto | mpc::detail::space = satisfy % mpc::isspace or left % "expecting space"s |
const auto | mpc::detail::blank = satisfy % mpc::isblank or left % "expecting blank"s |
const auto | mpc::detail::print = satisfy % mpc::isprint or left % "expecting print"s |
const auto | mpc::detail::punct = satisfy % mpc::ispunct or left % "expecting punct"s |
const auto | mpc::detail::any_char = satisfy % (constant % true) |
|
inlineconstexpr |
between open p close = open *> p <* close
|
inlineconstexpr |
chainl1 p op = do { x <- p; rest x } where rest x = do { f <- op; y <- p; rest (f x y) } <|> return x
|
inlineconstexpr |
文字を受け取り、パーサーを返す。このパーサーは、文字列の先頭が渡した文字に一致する場合にそれを返す。
|
inlineconstexpr |
エラーメッセージを受け取り、必ず失敗するパーサーを返す。
|
inlineconstexpr |
|
inlineconstexpr |
パーサーを受け取り、パーサーを返す。このパーサーは受け取ったパーサーを1回以上可能な限り適用した結果をリストで返す。 some :: f a -> f [a] some v = (:) <$> v <*> many v
|
inlineconstexpr |
パーサーと文字列を受け取り、パースする。パースに成功した場合、パース結果を表示する。失敗した場合、エラーメッセージを表示する。
|
inlineconstexpr |
述語を受け取り、パーサーを返す。このパーサーは、文字列の先頭が述語を満たす場合にそれを返す。
|
inlineconstexpr |
sepBy p sep = sepBy1 p sep <|> pure []
|
inlineconstexpr |
sepBy1 p sep = liftA2 (:) p (many (sep *> p))
|
inlineconstexpr |
文字列を受け取り、パーサーを返す。このパーサーは、文字列の先頭が渡した文字列から始まる場合にその文字列を返す。
|
inlineconstexpr |
パーサーを受け取り、パーサーを返す。このパーサーはパースに失敗しても直ちにエラーとならない。