[plt-scheme] BNF parser generator

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Fri Jan 16 12:03:03 EST 2004

How does it compare to Mitch's EOPL parser generator. -- Matthias


On Friday, January 16, 2004, at 01:08 AM, David Herman wrote:

>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
> I've written a little parser generator for BNF grammars that turned 
> out pretty well. It's similar to Dorai Sitaram's implementation of 
> regular expressions (i.e., the two-continuation backtracking model).
>
>     http://www.ccs.neu.edu/home/dherman/code/grammar.ss
>
> As an example, here's a grammar for a miniature regular expression 
> language:
>
> ;; --
> (define regexp-grammar
>   (grammar Regexp
>     [Regexp (alt (seq (lambda (left bar right)
>                         `(:or ,left ,right))
>                     Pieces "|" Regexp)
>                  Pieces)]
>     [Pieces (alt (seq (lambda (fst snd)
>                         (match snd
>                           [`(:seq . ,seq) `(:seq ,fst , at seq)]
>                           [_              `(:seq ,fst ,snd)]))
>                     Piece Pieces)
>                 Piece)]
>     [Piece (alt (seq (lambda (atom star)
>                        `(:star ,atom))
>                    Atom "*")
>                 Atom)]
>     [Atom (alt (seq (lambda (lp body rp)
>                       `(:sub ,body))
>                   "(" Regexp ")")
>                (not-in "()*|"))]))
> ;; --
>
> Take a look at the code if you're interested -- I think it's a nice 
> example of combinators, continuations, and even (though not explicit) 
> monadic style.
>
> Dave



Posted on the users mailing list.