GithubHelp home page GithubHelp logo

fram-lang / cpspg Goto Github PK

View Code? Open in Web Editor NEW

This project forked from adampsz/cpspg

0.0 1.0 0.0 117 KB

An ocamlyacc-like, continuation-passing style parser generator

License: GNU General Public License v3.0

Shell 0.55% OCaml 95.83% Standard ML 2.61% Makefile 1.01%

cpspg's Introduction

Continuation-passing style parser generator

About

This program is a tool similar to ocamlyacc that generates LALR(1) parsers. However, unlike ocamlyacc, it uses the continuation-passing style, which allows for better type inference and better optimization by the compiler.

Usage

To generate parser from .mly grammar definition, run:

dune exec -- cpspg [-o OUTPUT] INPUT

To use this tool as a part of dune build process, add following rule to dune file:

(rule
 (deps Parser.mly)
 (target Parser.cpspg.ml)
 (action
  (chdir %{workspace_root} (run cpspg -o %{target} %{deps}))))

Building

This project is managed using dune. To build it, run:

dune build

Note that lib/Parser.ml is bootstrapped from lib/Parser.mly. When code generation changes, it can be promoted to new version:

dune build @bootstrap
dune promote

cpspg's People

Contributors

adampsz avatar

Watchers

 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.