2014-02-18 3 views
2

sweet.js 매크로의 인수에서 문자열을 어떻게 작성 하시겠습니까?sweet.js 인수를 문자열로 변환하십시오.

let foo = macro { 
    rule { 
     $name 
    } => { 
     console.log('$name', $name); 
    } 
} 

var x = 42; 

foo x 

윌 출력 : 예를 들어

console.log(x, x); 

나는 출력을 원합니다 경우 :

console.log('x', x); 

그래서 첫 번째 인수는 따옴표가있다. unwrapSyntax이 우리의 가치를 제공 (기본 아이디어는 당신이 $name에 의해 mached 식별자의 문자열 값을 사용하여 (makeValue를 통해) 새로운 문자열을 토큰을 만들 것입니다

let foo = macro { 
    case {_ 
     $name 
    } => { 
     letstx $name_str = [makeValue(unwrapSyntax(#{$name}), #{here})]; 
     return #{ 
      console.log($name_str, $name); 
     } 
    } 
} 

var x = 42; 

foo x 

:

답변

5

당신이 경우 매크로를 사용할 수 있습니다 주어진 신택스 객체, 식별자의 경우 식별자 문자열). 그런 다음 letstx은 새로 생성 된 구문 객체를 #{} 템플릿 내에서 사용할 수 있도록 바인딩합니다.

+0

우수하지만 케이스 매크로를 사용해야 할 수도 있다고 생각했지만 구문 오류로 끝나는 방법을 알아 내려고 할 때마다 설명이 잘 정리되었습니다. –

관련 문제