2014-10-13 4 views
2

내 TODO 목록에있는 항목 중 하나는 JavaScript에 '컴파일'하는 재미있는 코딩 언어를 만드는 것입니다. 나는 이것을 위해 Sweet.js을 시험하고 싶습니다만, 인 키워드를 대상으로하는 규칙을 쓸 수있는 것이면 규칙이 궁금합니다.Sweet.js : 토큰 앞의 변수를 대상으로하는 매크로?

예를 들어 Yoda 스타일의 자바 스크립트를 만들고 싶다고 가정 해 보겠습니다. 소스 라인은 다음과 같이 수 :

six var is; 

var six; 

에 매핑 될이 가능 Sweet.js를 사용하고 계십니까? 당신은 분명한 일이 될 것 대신 var의 매크로로 is을 원한다면

let var = macro { 
    rule infix { $x:ident | is } => { 
     var $x; 
    } 
} 

six var is 

:

let is = macro { 
    rule infix { $x:ident var | } => { 
     var $x; 
    } 
} 

하지만이 '아무튼

+0

'var '을 다른 단어로 바꾸면'var'을 쓰지 않아도됩니다 - 왜 그런지는 알 수 없습니다. –

+0

예를 게시 할 수 있습니까? – thomaux

답변

3

네, 당신은 infix 매크로를 사용하는 것이 좋습니다 실제로 일합니다. 그것이 작동하지 않는 이유는 var이 ... 특별합니다. 기본적으로 var은 새로운 바인더를 만들고 매크로는 var의 식별자 위치에 확장되지 않습니다. 따라서 확장자가 var is 인 경우 is 매크로를 확장하는 대신 is이라는 새로운 바운드 변수를 만들려고합니다.

매크로를 사용하면 var 매크로가 작동합니다.

+0

감사합니다. 삽입 연산자에 대해 알지 못했습니다! – thomaux

관련 문제