GithubHelp home page GithubHelp logo

mborland / parser Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tzlaine/parser

0.0 0.0 0.0 7 MB

A C++ parser combinator library.

License: Boost Software License 1.0

Shell 0.60% C++ 88.97% Python 8.49% C 0.60% CMake 0.98% Starlark 0.36%

parser's Introduction

parser

This is a parser combinator library for C++. As a quick example of use, here is a complete program that parses one or more doubles separated by commas, ignoring whitespace:

#include <boost/parser/parser.hpp>

#include <iostream>
#include <string>


namespace bp = boost::parser;

int main()
{
    std::cout << "Enter a list of doubles, separated by commas.  No pressure. ";
    std::string input;
    std::getline(std::cin, input);

    auto const result = bp::parse(
        input, bp::double_ >> *(',' >> bp::double_), bp::ws);

    if (result) {
        std::cout << "Great! It looks like you entered:\n";
        for (double x : *result) {
            std::cout << x << "\n";
        }
    } else {
        std::cout
            << "Good job!  Please proceed to the recovery annex for cake.\n";
    }
}

This library is header-only, and has a default dependency on Boost.Hana. The Boost.Hana dependency can be eliminated, and std::tuple will be used instead of boost::hana::tuple throughout the library, if you #define BOOST_PARSER_DISABLE_HANA_TUPLE. To try out the lib without mseeing with dependencies, add its include/ dir as an include path in your build and define BOOST_PARSER_DISABLE_HANA_TUPLE your build.

Features:

  • Parsers that parse a variety of things.
  • Combining operations that make complex parsers out of simpler ones.
  • Multiple ways of getting data out of the parse, including via callbacks.
  • Sentinel- and range-friendly.
  • Very Unicode friendliness.
  • Excellent error reporting, via diagnostics like those produced by GCC and Clang.
  • Trace support for debugging your parsers.
  • Clever hacks to make compile time errors easier to deal with. (These are totally optional.)

This library targets submission to Boost.

Online docs: https://tzlaine.github.io/parser

Master status:

example workflow

example workflow

example workflow

example workflow

example workflow

Develop status:

example workflow

example workflow

example workflow

example workflow

example workflow

License

parser's People

Contributors

tzlaine avatar djowel avatar mjcaisse avatar hkaiser avatar akrzemi1 avatar tobias-loew avatar sehe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.