如何转换以下代码段:
let myVar: string = 'test';
到以下输出:
// type {string}
var myVar = 'test';
使用sweetjs?
更新
我正在寻找一种将确切的第一个代码片段转换为第二个的方法。包括// type {string}
评论。
我想用它来创建一个简单的 DSL 来生成一个代码,用谷歌闭包编译器检查。
如何转换以下代码段:
let myVar: string = 'test';
到以下输出:
// type {string}
var myVar = 'test';
使用sweetjs?
更新
我正在寻找一种将确切的第一个代码片段转换为第二个的方法。包括// type {string}
评论。
我想用它来创建一个简单的 DSL 来生成一个代码,用谷歌闭包编译器检查。
这应该这样做:
let let = macro {
case { _ $name $[:] $type = $init:expr } => {
var typeStr = unwrapSyntax(#{$type});
var varStx = makeKeyword("var", #{here});
varStx.token.leadingComments = [{
type: "Line",
value: " type {" + typeStr + "}"
}];
letstx $var = [varStx];
return #{
$var $name = $init
}
}
}
let myVar: string = 'test';
扩展为:
// type {string}
var myVar = 'test';
我不确定你在找什么,但也许这个片段:
macro m {
case {_ () } => {
var x = makeValue(0, #{here});
x.token.leadingComments = [{
type: "Line",
value: " type {string}"
}];
return withSyntax ($x = [x]) #{
$x
}
}
}
m()
macro foo {
rule { $id = $init } => {
var $id = $init
}
rule { $init } => { var myVar = $init }
}
foo "test";
遗憾的是,如果没有令牌,您将无法输出评论。
// type {string}
0;
var myVar = 'test';
还可以在标题“卫生”处查看此页面,它位于页面的 3/4 左右。
希望有帮助。
阅读一些文章说一个简单的规则宏应该可以完成这项工作:
macro foo {
rule { $id = $init } => {
var $id = $init
}
rule { $init } => { var myVar = $init }
}
// type {string}
foo "test";