2012-08-30 40 views
6

Tôi muốn tạo một ngữ pháp rất đơn giản với thụt lề không gian. Mỗi dòng bao gồm 1 hoặc nhiều từ nhưng thụt đầu dòng như trăn (4 chỗ hoặc một tab là một thụt lề) và không có đóng cho indentation, ví dụ:ANTLR: Không gian thụt đầu dòng?

if something cool occurs 
    do this 
else 
    otherwise do this 
    loop around something 
     each time doing this 
     and do that 
say good byte 

Thay vì đọc từng dòng, tính thụt đầu dòng và xây dựng một cây bằng tay là nó có thể làm tất cả những điều đó trong ngữ pháp ANTLR? Ngôn ngữ đích của tôi là Java.

+6

Xem: http://stackoverflow.com/questions/8642154/antlr-what-is-simpliest-way-to-realize-python-like-indent-depending-grammar –

Trả lời

1

Điều này là có thể. Tất cả những gì bạn làm là xác định một quy tắc và để nó bị bỏ qua.

Ở đây bạn đi:

Ignore : (' ' | '\t' | '\n' | '\r')+ {skip();}; 

Hoặc nếu bạn cần phải nhận ra \ n hoặc \ r

Ignore : (' ' | '\t')+ {skip();}; 

Thêm phần này vào gramar bạn và tất cả không gian và các tab sẽ bị bỏ qua.

Các vấn đề liên quan