2015-05-30 4 views
6

Я пытался разобрать код и переформатировать их, но кажется, что цитата просто проигнорирует комментарии.Можно ли получить комментарии с помощью макроса?

Есть ли способ достичь этого? Думаю, я должен нырнуть в сторону эрланга?

+0

Если вы не можете получить комментарии внутри Эликсир макросов, вы можете просто хотите обработать сырой источник непосредственно. –

ответ

6

Нет, вы не можете получить комментарии кодов внутри макросов. Они никогда не становятся частью АСТ и отбрасываются еще в токенизаторе Эликсира.

+0

Итак, я думаю, что невозможно переопределить любые функции в модуле ': elixir'? Если да, можете ли вы рассмотреть возможность сохранения комментариев в токенизаторе? – Kabie

+0

Я в порядке с патчем, который сохраняет комментарии в токенизаторе, если это не поведение по умолчанию, так как это сильно усложнит парсер. Тем не менее, я не думаю, что исправление только токенизатора поможет вам. –

2

Кажется, что комментарии обрабатываются на уровне токенизатора, поэтому синтаксический анализатор даже не видит их. relevantparts из токенизатора эликсира указывают, что комментарии отбрасываются довольно рано в конвейере. This test case из ядра эликсира говорит нам то же самое:

comments_test() -> 
    [{number, {1,1,2}, 1},{eol, {1,3,4}},{number,{2,1,2},2}] = tokenize("1 # Comment\n2").