I have recently released a PEG parser library for the Pony programming language: Kiuatan (“horse” or “pony” in Chinook Jargon). This is mostly a learning exercise for me. It doesn’t make use of any of Pony’s actor model functionality.
Kiuatan (“horse” or “pony” in Chinook Jargon) is a library for building and running parsers in the Pony programming language.
Kiuatan uses Parsing Expression Grammar semantics, which means:
- Choices are ordered, i.e. the parser will always try to parse alternatives in the order they are declared.
- Parsers do not backtrack from successful choices.
- Sequences are greedy, i.e. the parser will not backtrack from the end of a sequence.
- Kiuatan parsers are “packrat” parsers; they memoize intermediate results, resulting in linear-time parsing.
- Parsers use Mederios et al’s algorithm to handle unlimited left-recursion.
I have made a vastly simpler build system for Pony on Windows.
I have been taking a look at the very interesting Pony programming language in my copious free time for a couple of weeks now. It’s fairly straightforward to build on Ubuntu. Here’s how I built it on Windows 10:
This process uses GnuWin32, which LLVM recommends, to provide unix utils; your mileage may vary with MSYS or Cygwin.
- Install GnuWin32 via the GetGnuWin32 tool; make sure it’s in your PATH.
- Install Python (I used 3.5.1; 2.7 is supposed to work as well); make sure it’s in PATH.
- Installed CMake; make sure it’s in PATH.
- Get the LLVM source. I used the tarball of 3.7.1 (requireds 7-zip to open on Windows).
- Make sure you have VS2015 with C++ installed.
- Generate LLVM VS2015 configuration with CMake. I used the GUI to configure and generate the VS projects; make sure you use the 64-bit generator (“Visual Studio 14 2015 Win64”), and set the CMAKE_INSTALL_PREFIX to where you want LLVM to live.
- Build the INSTALL project in the LLVM solution.
- Get the PreMake5 executable, and put it somewhere in your PATH.
- Get the PonyC source.
premake5.exe --with-tests --to=..\vs vs2015 to generate
- Changed the Character Set property of each project in the PonyC solution to Not Set.
In order to run the pony compiler, you’ll need a few libraries in your environment. I have made a utility that will get the libraries and set up your environment:
- Install 7-Zip, make sure it’s in PATH.
Open a VS2015 x64 Native Tools Command Prompt (things will not work correctly otherwise!) and run:
> git clone firstname.lastname@example.org:kulibali/ponyc-windows-libs.git
> cd ponyc-windows-libs
Now you can run the pony compiler and tests:
> cd path_to_pony_source
> build\release\ponyc.exe -d -s packages\stdlib