Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Recursive descent parser DSL for Open Dylan

branch: master
meta--Copyright (c) 1999 David Lichteblau <>

This is an implementation of Meta, a technique used to simplify the task
of writing parsers.  [Baker] describes Meta and shows the main ideas for
an implementation in Common Lisp.

	  If all META did was recognize regular expressions, it would
	  not be very useful. It is a programming language, however,
	  and the operations [], {} and $ correspond to the Common
	  Lisp control structures AND, OR, and DO.[8] Therefore, we
	  can utilize META to not only parse, but also to
	  transform. In this way, META is analogous to "attributed
	  grammars" [Aho86], but it is an order of magnitude simpler
	  and more efficient. Thus, with the addition of the "escape"
	  operation "!", which allows us to incorporate arbitrary Lisp
	  expressions into META, we can not only parse integers, but
	  produce their integral value as a result.  [Baker]

The macro defined here is an attempt to implement Meta (with slightly
adapted syntax) for Dylan.  It is functional, but not yet optimized.


current cvs version, to be called 0.6
  - dauclair puts former module meta into meta-base; adds meta-syntax
    sugar (meta-definer and collect-definer forms), meta-types, license is LGPL
  - added `peek', deprecated `peeking'
  - added `element-of', a much faster `type', deprecated `type'
  - updated documentation

initial cvs version
  - ported to FD by <> and <>.
  - added `peeking'
  - use libtool

  - unique unique-id-base
  - added makefile with `make install' support
  - Replaced ?meta:token (wrong) with ?meta:* (correct).
    Thanks to <>.

  - fixed `type(variable)'
  - void type declarations again...
  - new pseudo-function `accept'
  - subroutines (new feature, not documented)

  - created Meta library
  - major cleanup
  - `with-collector'
  - new documentation
  - fixed `store!' (now called `set!') and some type declarations.
    (Thanks to <>).

0.1 meta.dylan in dfingerd-0.1


See Meta.html and With-collector.html.

Something went wrong with that request. Please try again.