source: project/release/4/picnic/trunk/calc.grm @ 30645

Last change on this file since 30645 was 30536, checked in by Ivan Raikov, 7 years ago

initial import of npccl, the Neural Parametric Curve Connectivity Language

File size: 1.6 KB
Line 
1; -*- Hen -*-
2
3
4(require-extension lalr)
5(define calc-parser
6  (lalr-parser
7
8   ;; --- Options
9   ;; output a parser, called calc-parser, in a separate file - calc.yy.scm,
10   (output:    calc-parser "calc.yy.scm")
11   ;; output the LALR table to calc.grm.out
12   (out-table: "calc.grm.out")
13   ;; there should be no conflict
14   (expect:    5)
15
16   ;; --- token definitions
17   (ID NUM = LPAREN RPAREN NEWLINE COMMA STRING FUNCTION
18       (left: + -)
19       (left: * /)
20       (nonassoc: uminus))
21
22   ;; --- rules
23   (line     (assign NEWLINE)        : $1
24             (expr   NEWLINE)        : $1
25             (NEWLINE)               : #f
26             (error  NEWLINE)        : #f)
27
28   (assign   (ID = expr)             : (add-binding $1 $3))
29
30;;   (defn   (FUNC LPAREN args RPAREN LBRACE expr RBRACE)             : (add-binding $1 $3))
31
32   (expr     (expr + expr)           : (+ $1 $3)
33             (expr - expr)           : (- $1 $3)
34             (expr * expr)           : (* $1 $3)
35             (expr / expr)           : (/ $1 $3)
36             (- expr (prec: uminus)) : (- $2)
37             (ID)                    : (get-binding $1)
38             (ID LPAREN args RPAREN) : (invoke-func $1 $3)
39             (NUM)                   : $1
40             (LPAREN expr RPAREN)    : $2)
41
42   (args     ()                      : '()
43             (expr arg-rest)         : (cons $1 $2)
44             (STRING arg-rest)       : (cons $1 $2))
45
46   (arg-rest (COMMA expr arg-rest)   : (cons $2 $3)
47             (COMMA STRING arg-rest) : (cons $2 $3)
48             ()                      : '())
49
50   ))
Note: See TracBrowser for help on using the repository browser.