nyacc: fixed C99 CPP to deal with numbers correctly
[mes.git] / module / nyacc / lang / c99 / mach.d / cppact.scm
1 ;; ./mach.d/cppact.scm
2
3 ;; Copyright (C) 2016,2017 Matthew R. Wette
4 ;; 
5 ;; This software is covered by the GNU GENERAL PUBLIC LICENCE, Version 3,
6 ;; or any later version published by the Free Software Foundation.  See
7 ;; the file COPYING included with the this distribution.
8
9 (define act-v
10   (vector
11    ;; $start => conditional-expression
12    (lambda ($1 . $rest) $1)
13    ;; conditional-expression => logical-or-expression
14    (lambda ($1 . $rest) $1)
15    ;; conditional-expression => logical-or-expression "?" logical-or-expres...
16    (lambda ($5 $4 $3 $2 $1 . $rest)
17      `(cond-expr ,$1 ,$3 ,$5))
18    ;; logical-or-expression => logical-and-expression
19    (lambda ($1 . $rest) $1)
20    ;; logical-or-expression => logical-or-expression "||" logical-and-expre...
21    (lambda ($3 $2 $1 . $rest) `(or ,$1 ,$3))
22    ;; logical-and-expression => bitwise-or-expression
23    (lambda ($1 . $rest) $1)
24    ;; logical-and-expression => logical-and-expression "&&" bitwise-or-expr...
25    (lambda ($3 $2 $1 . $rest) `(and ,$1 ,$3))
26    ;; bitwise-or-expression => bitwise-xor-expression
27    (lambda ($1 . $rest) $1)
28    ;; bitwise-or-expression => bitwise-or-expression "|" bitwise-xor-expres...
29    (lambda ($3 $2 $1 . $rest) `(bitwise-or ,$1 ,$3))
30    ;; bitwise-xor-expression => bitwise-and-expression
31    (lambda ($1 . $rest) $1)
32    ;; bitwise-xor-expression => bitwise-xor-expression "^" bitwise-and-expr...
33    (lambda ($3 $2 $1 . $rest)
34      `(bitwise-xor ,$1 ,$3))
35    ;; bitwise-and-expression => equality-expression
36    (lambda ($1 . $rest) $1)
37    ;; bitwise-and-expression => bitwise-and-expression "&" equality-expression
38    (lambda ($3 $2 $1 . $rest)
39      `(bitwise-and ,$1 ,$3))
40    ;; equality-expression => relational-expression
41    (lambda ($1 . $rest) $1)
42    ;; equality-expression => equality-expression "==" relational-expression
43    (lambda ($3 $2 $1 . $rest) `(equal ,$1 ,$3))
44    ;; equality-expression => equality-expression "!=" relational-expression
45    (lambda ($3 $2 $1 . $rest) `(noteq ,$1 ,$3))
46    ;; relational-expression => shift-expression
47    (lambda ($1 . $rest) $1)
48    ;; relational-expression => relational-expression "<" shift-expression
49    (lambda ($3 $2 $1 . $rest) `(lt ,$1 ,$3))
50    ;; relational-expression => relational-expression "<=" shift-expression
51    (lambda ($3 $2 $1 . $rest) `(le ,$1 ,$3))
52    ;; relational-expression => relational-expression ">" shift-expression
53    (lambda ($3 $2 $1 . $rest) `(gt ,$1 ,$3))
54    ;; relational-expression => relational-expression ">=" shift-expression
55    (lambda ($3 $2 $1 . $rest) `(ge ,$1 ,$3))
56    ;; shift-expression => additive-expression
57    (lambda ($1 . $rest) $1)
58    ;; shift-expression => shift-expression "<<" additive-expression
59    (lambda ($3 $2 $1 . $rest) `(lshift ,$1 ,$3))
60    ;; shift-expression => shift-expression ">>" additive-expression
61    (lambda ($3 $2 $1 . $rest) `(rshift ,$1 ,$3))
62    ;; additive-expression => multiplicative-expression
63    (lambda ($1 . $rest) $1)
64    ;; additive-expression => additive-expression "+" multiplicative-expression
65    (lambda ($3 $2 $1 . $rest) `(add ,$1 ,$3))
66    ;; additive-expression => additive-expression "-" multiplicative-expression
67    (lambda ($3 $2 $1 . $rest) `(sub ,$1 ,$3))
68    ;; multiplicative-expression => unary-expression
69    (lambda ($1 . $rest) $1)
70    ;; multiplicative-expression => multiplicative-expression "*" unary-expr...
71    (lambda ($3 $2 $1 . $rest) `(mul ,$1 ,$3))
72    ;; multiplicative-expression => multiplicative-expression "/" unary-expr...
73    (lambda ($3 $2 $1 . $rest) `(div ,$1 ,$3))
74    ;; multiplicative-expression => multiplicative-expression "%" unary-expr...
75    (lambda ($3 $2 $1 . $rest) `(mod ,$1 ,$3))
76    ;; unary-expression => postfix-expression
77    (lambda ($1 . $rest) $1)
78    ;; unary-expression => "-" unary-expression
79    (lambda ($2 $1 . $rest) `(neg ,$2))
80    ;; unary-expression => "+" unary-expression
81    (lambda ($2 $1 . $rest) `(pos ,$2))
82    ;; unary-expression => "!" unary-expression
83    (lambda ($2 $1 . $rest) `(not ,$2))
84    ;; unary-expression => "~" unary-expression
85    (lambda ($2 $1 . $rest) `(bitwise-not ,$2))
86    ;; unary-expression => "++" unary-expression
87    (lambda ($2 $1 . $rest) `(pre-inc ,$2))
88    ;; unary-expression => "--" unary-expression
89    (lambda ($2 $1 . $rest) `(pre-dec ,$2))
90    ;; postfix-expression => primary-expression
91    (lambda ($1 . $rest) $1)
92    ;; postfix-expression => postfix-expression "++"
93    (lambda ($2 $1 . $rest) `(post-inc ,$1))
94    ;; postfix-expression => postfix-expression "--"
95    (lambda ($2 $1 . $rest) `(post-dec ,$1))
96    ;; primary-expression => '$ident
97    (lambda ($1 . $rest) `(ident ,$1))
98    ;; primary-expression => '$fixed
99    (lambda ($1 . $rest) `(fixed ,$1))
100    ;; primary-expression => '$chlit
101    (lambda ($1 . $rest) `(char ,$1))
102    ;; primary-expression => "defined" "(" '$ident ")"
103    (lambda ($4 $3 $2 $1 . $rest) `(defined ,$3))
104    ;; primary-expression => "defined" '$ident
105    (lambda ($2 $1 . $rest) `(defined ,$2))
106    ;; primary-expression => "(" expression-list ")"
107    (lambda ($3 $2 $1 . $rest) $2)
108    ;; expression-list => conditional-expression
109    (lambda ($1 . $rest) $1)
110    ;; expression-list => expression-list "," conditional-expression
111    (lambda ($3 $2 $1 . $rest) $3)
112    ))
113
114 ;;; end tables