File: lisp.g

package info (click to toggle)
yapps2 2.2.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 408 kB
  • sloc: python: 1,016; sh: 24; makefile: 13
file content (13 lines) | stat: -rw-r--r-- 582 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
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