sweet.js не может вернуть #`else`
main.js
import {另} from './chinese-macros';
另 {
}
Китайский-macros.js
export syntax 另 = function(ctx) {
return #`else`;
}
main.js должен скомпилироваться в else {}
но я получаю это сообщение об ошибке:
throw this.createError(start, "not a valid expression");
Любая помощь будет принята с благодарностью.
1 ответ
else {}
само по себе является недопустимым выражением, поэтому вы получаете это сообщение об ошибке. То, что (я полагаю) вы делаете, пытается заменить то и другое на китайский язык. Итак, предположим, что вы создали макрос для оператора if, компилятор в итоге оценит макрос для if, а затем отдельно для макроса else.
Вместо этого вы должны создать макрос для if/else-if/else
утверждение в одном макросе, очень похоже на то, как учебник строит один для cond
выражение: http://sweetjs.org/doc/1.0/tutorial.html. Обратите внимание, как они перебирают ключевые слова, начиная с case
затем default
и выдает ошибку, если ни один из этих двух не появляется (неверный синтаксис). Это та же идея, что вы хотите достичь, кроме как делать if
, else if
, а также else
в таком порядке... при добавлении дополнительной обработки ошибок и учета другого синтаксиса.