Uwaga: Znalazłem to pytanie w narzędziu do śledzenia problemów Babel (https://phabricator.babeljs.io/T2653) i zostało ono odrzucone, ale autor AFAIK go o to nie poprosił.Babel v6: Jak/Czy mogę napisać wtyczkę, która dodaje nową składnię (np. Nowy operator)?
Sprawdziłem wtyczek Babel jak packages/babel-plugin-syntax-do-expressions i wydawało się, że te ES6 + nowa składnia/operatorzy nie zostały właściwie zdefiniowane w plugin w ogóle, ale jest implemented in Babylon i po prostu bycie toggled on przez tych wtyczek.
Zostawiając roszczenie w numerze newest blog post: "Deweloperzy zbudowali wszystko, od debugowania narzędzi [...] do eksperymentalnych nowych składni [...] w celu wymuszenia skomplikowanych reguł w ich bazach kodowych" wątpliwe - w rzeczywistości przeszukałem cały ekosystem pluginów, ale nie znalazł wtyczki, która mogłaby zaoferować nowe operatory/składnię, i tylko jedną wtyczkę, która jest w stanie zaoferować operatorowi przeładowanie dla kilku istniejących operatorów.
Czy to prawda, że dzięki Babel v6 będziemy mogli zobaczyć nowe operatory/składnię zdefiniowaną w przestrzeni użytkownika i jak?
To także moja okazja, aby podziękować całemu zespołowi Babel za dobrą pracę!
PS: Zacząłem szukać, jak rozszerzyć składnię parsera Babylon, aby zaimplementować wtyczkę, która implementowałaby "dopasowywanie wzorców", jak w przypadku Julia methods.
Mam to samo pytanie, ale udało mi się uzyskać wtyczkę składni działającą bez hakowania żadnych podstawowych plików. Jest to wtyczka dla [DCI] (http://fulloo.info/) i wciąż jest rozwijana, ale [TransferMoney.js] (https://github.com/mbrowne/babel-dci/blob/master/babel- Plik przykładowy plugin-transform-dci/examples/TransferMoney/TransferMoney.js) analizuje poprawnie: https://github.com/mbrowne/babel-dci. Sposób, w jaki zaimportowałem bibliotekę 'babylon', wydaje się jednak kruchy; mam nadzieję, że jest lepszy/bardziej oficjalny sposób na zrobienie tego. Prawdopodobnie skontaktuję się ze społecznością Slack ... –
Pamiętaj, że aby to zadziałało, musisz pobrać instancję 'babylon' używaną przez aktualnie załadowany analizator składni ... więc nie możesz po prostu zrobić 'npm install babylon' wewnątrz folderu wtyczki - to ładowałoby oddzielną kopię babilonu. Dlatego zaimportowałem go jako 'babel-cli/node_modules/babel-core/node_modules/babylon/...'. –
Pamiętaj, że zespół Babel nie udostępnił jeszcze interfejsu API wtyczki dla parsera, więc wszystko to i tak może ulec zmianie. Jestem pewien, że będzie lepszy sposób na pisanie wtyczek parsera w przyszłości. –