-
Notifications
You must be signed in to change notification settings - Fork 2
Recursive descent parser DSL for Dylan
License
dylan-lang/meta
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
meta--Copyright (c) 1999 David Lichteblau <[email protected]> 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. History ======= 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 <[email protected]> and <[email protected]>. Thanks. - added `peeking' 0.5 - use libtool 0.4 - unique unique-id-base - added makefile with `make install' support - Replaced ?meta:token (wrong) with ?meta:* (correct). Thanks to <[email protected]>. 0.3 - fixed `type(variable)' - void type declarations again... - new pseudo-function `accept' - subroutines (new feature, not documented) 0.2 - created Meta library - major cleanup - `with-collector' - new documentation - fixed `store!' (now called `set!') and some type declarations. (Thanks to <[email protected]>). 0.1 meta.dylan in dfingerd-0.1 Documentation ============= See Meta.html and With-collector.html. Functional Developer support ============================ Thanks to Chris&Doug, this is supposed to work now. Else complain to <[email protected]>, please. Installation using Gwydion Dylan ================================ Compilation using d2c (obviously Mindy won't work): $ make # d2c meta.lid Testing: example$ make # d2c -L.. example.lid example$ ./example Automatic installation (requires Gwydion Dylan 2.3.1): $ make install
About
Recursive descent parser DSL for Dylan
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published