wenyan-lang/wenyan

在宏中调用函数会出现问题(已解决:宏不可以」结尾)

Wybxc opened this issue · 2 comments

Wybxc commented
吾有一術。名之曰「增益」。
欲行是術。必先得一數。曰「甲」。
是術曰。
    加「甲」以一。名之曰「乙」。乃得「乙」。
是謂「增益」之術也。

或云「「增益「甲」」」。
蓋謂「「施「增益」於「甲」。書之」」。

有數一。名之曰「某」。

增益「某」。
增益「某」。
增益「某」。
增益「某」。
增益「某」。

编译结果:

var 增益 = _ => {}
增益 =  => {
  const _ans1 =  + 1
  var  = _ans1
  return 
}
var  = 1
const _ans2 = 增益()
console.log(_ans2)
console.log()
console.log()
const _ans3 = 增益()
console.log(_ans3)
console.log()
console.log()
console.log()
const _ans4 = 增益()
console.log(_ans4)
console.log()
console.log()
console.log()
console.log()
const _ans5 = 增益()
console.log(_ans5)
console.log()
console.log()
console.log()
console.log()
console.log()
const _ans6 = 增益()
console.log(_ans6)
console.log()
console.log()
console.log()
console.log()
console.log()
console.log()

已知问题:

  1. 参数不正确。
  2. 出现大量无意义的输出。
  3. 如果再增加一行 增益「某」。,会报 syntax error。

Hi @Wybxc , thanks for the report!

Macro definition cannot end with . This is a limitation of the preprocessor, and is documented here in wiki https://github.com/wenyan-lang/wenyan/wiki/Macros#cautions.

Try adding an additional character to macro definition:

吾有一術。名之曰「增益」。
欲行是術。必先得一數。曰「甲」。
是術曰。
    加「甲」以一。名之曰「乙」。乃得「乙」。
是謂「增益」之術也。

或云「「增益「甲」焉」」。
蓋謂「「施「增益」於「甲」。書之」」。

有數一。名之曰「某」。

增益「某」焉。
增益「某」焉。
增益「某」焉。
增益「某」焉。
增益「某」焉。

Which should work.

Perhaps there's a way to detect such errors and warn the user... 🤔

Wybxc commented

谢谢!