aboutsummaryrefslogtreecommitdiff
path: root/examples/lisp.g
diff options
context:
space:
mode:
authorsienkiew <sienkiew@d34015c8-bcbb-4646-8ac8-8ba5febf221d>2011-07-21 11:17:58 -0400
committersienkiew <sienkiew@d34015c8-bcbb-4646-8ac8-8ba5febf221d>2011-07-21 11:17:58 -0400
commitbe5a70d3aa1c30d7c86d77649b747de2838566ce (patch)
tree7c27103a4d37b61f5dba748672f0685536e667d0 /examples/lisp.g
parent77ce1e78848ba9eead2566e3bc55523aab4547e8 (diff)
downloadexyapps-be5a70d3aa1c30d7c86d77649b747de2838566ce.tar.gz
initial import of yapps from debian sources
git-svn-id: http://svn.stsci.edu/svn/ssb/etal/exyapps/trunk@356 d34015c8-bcbb-4646-8ac8-8ba5febf221d
Diffstat (limited to 'examples/lisp.g')
-rw-r--r--examples/lisp.g13
1 files changed, 13 insertions, 0 deletions
diff --git a/examples/lisp.g b/examples/lisp.g
new file mode 100644
index 0000000..551e6f9
--- /dev/null
+++ b/examples/lisp.g
@@ -0,0 +1,13 @@
+parser Lisp:
+ ignore: r'\s+'
+ token NUM: r'[0-9]+'
+ token ID: r'[-+*/!@$%^&=.a-zA-Z0-9_]+'
+ token STR: r'"([^\\"]+|\\.)*"'
+
+ rule expr: ID {{ return ('id',ID) }}
+ | STR {{ return ('str',eval(STR)) }}
+ | NUM {{ return ('num',int(NUM)) }}
+ | r"\("
+ {{ e = [] }} # initialize the list
+ ( expr {{ e.append(expr) }} ) * # put each expr into the list
+ r"\)" {{ return e }} # return the list