2015-05-30 15 views
6

Tôi đã cố gắng phân tích một số mã và định dạng lại chúng, nhưng có vẻ như báo giá sẽ chỉ bỏ qua các nhận xét.Có thể nhận các nhận xét bằng macro không?

Có cách nào để đạt được điều này không? Tôi đoán tôi phải lặn vào bên erlang?

+0

Nếu bạn không thể nhận được nhận xét bên trong macro Elixir, bạn có thể chỉ muốn xử lý nguồn trực tiếp. –

Trả lời

6

Không, bạn không thể nhận được nhận xét mã bên trong macro. Họ không bao giờ trở thành một phần của AST và bị loại bỏ vẫn còn trong tokenizer của Elixir.

+0

Vì vậy, tôi đoán không thể ghi đè lên bất kỳ chức năng nào trong mô-đun ': elixir'? Nếu vậy, bạn có cân nhắc tùy ý giữ lại các bình luận trong tokenizer không? – Kabie

+0

Tôi đồng ý với một bản vá lưu giữ các nhận xét trong bộ mã thông báo miễn là nó không phải là hành vi mặc định vì nó sẽ làm phức tạp nghiêm trọng trình phân tích cú pháp. Điều đó nói rằng, tôi không nghĩ rằng vá chỉ tokenizer sẽ giúp bạn. –

2

Dường như các nhận xét được xử lý ở cấp trình thông báo, vì vậy trình phân tích cú pháp sẽ không nhìn thấy chúng. relevantparts từ trình thông báo mã vạch chỉ ra rằng các nhận xét bị loại bỏ khá sớm trong kênh. This test case từ lõi elixir cho chúng ta biết điều tương tự:

comments_test() -> 
    [{number, {1,1,2}, 1},{eol, {1,3,4}},{number,{2,1,2},2}] = tokenize("1 # Comment\n2"). 
Các vấn đề liên quan