Commit | Line | Data |
---|---|---|
8e198a08 | 1 | (in-package :cl-user) |
171bbab3 | 2 | |
d31d0bc7 VS |
3 | (eval-when (:compile-toplevel :load-toplevel :execute) |
4 | (defparameter *parenscript-lang-exports* | |
171bbab3 RD |
5 | '( |
6 | ;; literals | |
7 | #:t | |
8 | #:f | |
9 | #:true | |
45c9f9c2 | 10 | #.(symbol-name 'nil) ; for case-sensitive Lisps like some versions of Allegro |
171bbab3 RD |
11 | #:this |
12 | #:false | |
13 | #:undefined | |
d3c4afa2 | 14 | |
171bbab3 RD |
15 | ;; keywords |
16 | #:break | |
17 | #:continue | |
d3c4afa2 | 18 | |
171bbab3 RD |
19 | ;; array literals |
20 | #:array | |
21 | #:list | |
22 | #:aref | |
23 | #:make-array | |
d3c4afa2 | 24 | |
171bbab3 RD |
25 | ;; operators |
26 | #:! #:not #:~ | |
27 | #:* #:/ #:% | |
28 | #:+ #:- | |
29 | #:<< #:>> | |
30 | #:>>> | |
31 | #:< #:> #:<= #:>= | |
32 | #:in | |
33 | #:eql #:== #:!= #:= | |
34 | #:=== #:!== | |
35 | #:& | |
36 | #:^ | |
37 | #:\| | |
38 | #:\&\& #:and | |
39 | #:\|\| #:or | |
40 | #:>>= #:<<= | |
41 | #:*= #:/= #:%= #:+= #:\&= #:^= #:\|= #:~= | |
171bbab3 | 42 | #:incf #:decf |
d3c4afa2 | 43 | |
171bbab3 RD |
44 | ;; body forms |
45 | #:progn | |
d3c4afa2 | 46 | |
171bbab3 RD |
47 | ;; object literals |
48 | #:create | |
171bbab3 | 49 | #:with-slots |
d3c4afa2 | 50 | |
171bbab3 RD |
51 | ;; macros |
52 | #:macrolet | |
53 | #:symbol-macrolet | |
d3c4afa2 | 54 | |
171bbab3 RD |
55 | ;; if |
56 | #:if | |
57 | #:when | |
58 | #:unless | |
d3c4afa2 | 59 | |
171bbab3 RD |
60 | ;; single argument statements |
61 | #:return | |
62 | #:throw | |
d3c4afa2 | 63 | |
171bbab3 RD |
64 | ;; single argument expressions |
65 | #:delete | |
66 | #:void | |
67 | #:typeof | |
68 | #:instanceof | |
69 | #:new | |
d3c4afa2 | 70 | |
d31d0bc7 | 71 | ;; assignment and binding |
171bbab3 | 72 | #:setf |
d31d0bc7 | 73 | #:defsetf |
1fe28ee1 | 74 | #:psetf |
ec227186 TC |
75 | #:setq |
76 | #:psetq | |
b5cf9e71 | 77 | #:simple-let* |
ca25a40e | 78 | #:simple-let |
58c4ef4f | 79 | #:lexical-let* |
3530f5e1 | 80 | #:lexical-let |
613457a0 TC |
81 | #:let* |
82 | #:let | |
d3c4afa2 | 83 | |
171bbab3 | 84 | ;; variables |
58c4ef4f | 85 | #:var |
171bbab3 | 86 | #:defvar |
d3c4afa2 | 87 | |
171bbab3 | 88 | ;; iteration |
6a2ce72d | 89 | #:labeled-for |
171bbab3 | 90 | #:for |
6a2ce72d | 91 | #:for-in |
171bbab3 | 92 | #:while |
613457a0 TC |
93 | #:do |
94 | #:do* | |
95 | #:dotimes | |
96 | #:dolist | |
97 | #:doeach | |
d3c4afa2 | 98 | |
171bbab3 RD |
99 | ;; with |
100 | #:with | |
d3c4afa2 | 101 | |
171bbab3 RD |
102 | ;; case |
103 | #:switch | |
104 | #:case | |
105 | #:default | |
d3c4afa2 | 106 | |
171bbab3 RD |
107 | ;; try throw catch |
108 | #:try | |
d3c4afa2 | 109 | |
171bbab3 RD |
110 | ;; regex literals |
111 | #:regex | |
d3c4afa2 | 112 | |
171bbab3 | 113 | ;; conditional compilation (IE) |
d31d0bc7 | 114 | #:cc-if |
d3c4afa2 | 115 | |
d31d0bc7 VS |
116 | ;; function definition |
117 | #:defun | |
118 | #:lambda | |
d3c4afa2 | 119 | |
d31d0bc7 VS |
120 | ;; lambda lists |
121 | #:&key | |
122 | #:&rest | |
123 | #:&body | |
124 | #:&optional | |
125 | #:&aux | |
126 | #:&environment | |
127 | #:&key-object | |
46f794a4 | 128 | |
d31d0bc7 VS |
129 | ;; slot access |
130 | #:with-slots | |
131 | #:slot-value | |
46f794a4 | 132 | |
d31d0bc7 VS |
133 | ;; macros |
134 | #:macrolet | |
135 | #:symbol-macrolet | |
136 | #:define-symbol-macro | |
137 | #:define-script-symbol-macro | |
138 | #:defmacro | |
d3c4afa2 | 139 | |
d31d0bc7 VS |
140 | ;; lisp eval |
141 | #:lisp | |
d3c4afa2 | 142 | |
d31d0bc7 | 143 | ;; v v v STUFF WE SHOULD PROBABLY MOVE TO OTHER LIBS v v v |
171bbab3 | 144 | |
d31d0bc7 VS |
145 | ;; html generator for javascript |
146 | #:ps-html | |
dbb7017b | 147 | |
d31d0bc7 VS |
148 | ;; utils |
149 | #:do-set-timeout | |
c72e87d8 | 150 | #:max |
4b6e50d2 TC |
151 | #:min |
152 | #:floor | |
c72e87d8 | 153 | #:ceiling |
4b6e50d2 | 154 | #:round |
c72e87d8 VS |
155 | #:sin |
156 | #:cos | |
157 | #:tan | |
c72e87d8 | 158 | #:asin |
4b6e50d2 | 159 | #:acos |
c72e87d8 | 160 | #:atan |
58f3113d | 161 | #:pi |
7a5c62dc TC |
162 | #:sinh |
163 | #:cosh | |
164 | #:tanh | |
165 | #:asinh | |
166 | #:acosh | |
167 | #:atanh | |
4b6e50d2 TC |
168 | #:1+ |
169 | #:1- | |
170 | #:abs | |
171 | #:evenp | |
172 | #:oddp | |
c72e87d8 | 173 | #:exp |
c72e87d8 | 174 | #:expt |
4b6e50d2 | 175 | #:log |
a7b7afae | 176 | #:sqrt |
c72e87d8 | 177 | #:random |
c72e87d8 | 178 | #:ignore-errors |
d5c9059a | 179 | #:concatenate |
c72e87d8 VS |
180 | #:length |
181 | #:null | |
182 | #:@ | |
183 | ||
352621e1 | 184 | ;; js runtime utils |
c72e87d8 VS |
185 | #:*ps-lisp-library* |
186 | #:mapcar | |
352621e1 VS |
187 | #:map-into |
188 | #:map | |
189 | #:map-until | |
190 | #:member | |
191 | #:append | |
192 | #:set-difference | |
ea7a2f57 TC |
193 | ) |
194 | "All symbols considered part of the Parenscript language.")) | |
171bbab3 | 195 | |
5aa10005 | 196 | (defpackage :parenscript |
4a987e2b | 197 | (:use :common-lisp) |
9da682ca | 198 | (:nicknames :js :ps) |
171bbab3 | 199 | #.(cons :export *parenscript-lang-exports*) |
d31d0bc7 VS |
200 | |
201 | ;;; symbols that form the interface to the Parenscript compiler | |
8e198a08 | 202 | (:export |
8e198a08 | 203 | ;; compiler |
9da682ca | 204 | #:compile-script |
7590646c | 205 | #:ps |
c11d6a09 | 206 | #:ps-doc |
7590646c | 207 | #:ps* |
33c100f0 VS |
208 | #:ps-inline |
209 | #:ps-inline* | |
d3c4afa2 | 210 | |
9da682ca | 211 | ;; for parenscript macro definition within lisp |
4a987e2b | 212 | #:defpsmacro |
a19d2bde VS |
213 | #:defmacro/ps |
214 | #:defmacro+ps | |
ca493d55 | 215 | #:import-macros-from-lisp |
d3c4afa2 | 216 | |
7590646c | 217 | ;; gensym |
4a987e2b VS |
218 | #:ps-gensym |
219 | #:with-ps-gensyms | |
6ae06336 | 220 | #:ps-once-only |
4a987e2b | 221 | #:*ps-gensym-counter* |
551080b7 | 222 | |
edfaa07b | 223 | ;; naming and namespaces |
edfaa07b | 224 | #:ps-package-prefix |
0c542be0 VS |
225 | #:obfuscate-package |
226 | #:unobfuscate-package | |
edfaa07b | 227 | |
c639fe7f VS |
228 | ;; printer |
229 | #:*js-string-delimiter* | |
230 | #:*js-inline-string-delimiter* | |
231 | #:*ps-print-pretty* | |
232 | #:*indent-num-spaces* | |
233 | ||
9da682ca | 234 | ;; deprecated interface |
7590646c | 235 | #:gen-js-name |
7590646c | 236 | #:with-unique-js-names |
9da682ca RD |
237 | #:defjsmacro |
238 | #:js-compile | |
9da682ca RD |
239 | #:js-inline |
240 | #:js-inline* | |
4a987e2b VS |
241 | #:js |
242 | #:js* | |
171bbab3 | 243 | )) |
f326f929 | 244 |