quipu mercurial repository
Revisão | 35dee5c7df996449c7b816289e0af5216b3de396 (tree) |
---|---|
Hora | 2018-02-21 14:01:00 |
Autor | Agustina Arzille <avarzille@rise...> |
Commiter | Agustina Arzille |
Small fixes
@@ -144,6 +144,22 @@ | ||
144 | 144 | return (__interp->retval); |
145 | 145 | } |
146 | 146 | |
147 | +template <class ...Args> | |
148 | +object call_fct (interpreter *__interp, | |
149 | + object (*__fn) (interpreter *, object *, int), Args... __args) | |
150 | +{ | |
151 | + lazy_arg __lst[] = { __args... }; | |
152 | + uint32_t __sp = __interp->sp; | |
153 | + | |
154 | + __interp->growstk (QP_NELEM (__lst)); | |
155 | + for (auto& __s : __lst) | |
156 | + __interp->stack[__sp++] = __s.get (); | |
157 | + | |
158 | + __fn (__interp, &__interp->stack[__sp], QP_NELEM (__lst)); | |
159 | + __interp->sp = __sp; | |
160 | + return (__interp->retval); | |
161 | +} | |
162 | + | |
147 | 163 | QP_DECLS_END |
148 | 164 | |
149 | 165 | #endif |
@@ -941,6 +941,16 @@ | ||
941 | 941 | return (false); |
942 | 942 | } |
943 | 943 | |
944 | +static inline void | |
945 | +bq_nonlist_splice_err (interpreter *interp, bool dot) | |
946 | +{ | |
947 | + char errmsg[] = "read: the syntax `,@form is invalid"; | |
948 | + if (dot) | |
949 | + errmsg[19] = '.'; | |
950 | + | |
951 | + interp->raise2 ("parse-error", errmsg); | |
952 | +} | |
953 | + | |
944 | 954 | object rdstate::read_bq (object lbl) |
945 | 955 | { |
946 | 956 | this->unquoted = false; |
@@ -952,13 +962,7 @@ | ||
952 | 962 | object head = xcar (obj), tst = QP_S(commaat); |
953 | 963 | |
954 | 964 | if (head == QP_S(commaat) || head == QP_S(commadot)) |
955 | - { | |
956 | - char errmsg[] = "read: the syntax `,@form is invalid"; | |
957 | - if (head == QP_S(commadot)) | |
958 | - errmsg[19] = '.'; | |
959 | - | |
960 | - this->interp->raise2 ("parse-error", errmsg); | |
961 | - } | |
965 | + bq_nonlist_splice_err (interp, head == QP_S(commadot)); | |
962 | 966 | else if (bq_member (tst, obj) || bq_member (tst = QP_S(commadot), obj)) |
963 | 967 | { |
964 | 968 | char errmsg[] = "read: the syntax `( ... . ,@form) is invalid"; |