Skip to content

generated name

· xieyuheng

要避免生成的名字与用户所给出的名字有冲突。

方案:

假设生成的 name 都以 _ 为前缀, 并且限制用户所用的 name 不能以 _ 为前缀。 就可以避免生成的名字与用户给出的名字冲突。

注意,transpile 到系统汇编语言时, 名字又经过了转化,这个转化要保持名字之间的差异, 避免消除差异所导致的冲突。

更正 ​

[2025-11-28]

上面的方案有问题:

  • bundling 和 compiling 过程都会增加前缀。 这导致 bundling 和 compiling 的顺序相互依赖。

    • <p1><p2><name>
    • <p2><p1><name>

更正方案:

  • bundling 过程中所依赖的 mod 加 § 前缀, 当前 mod 家加 _ 前缀(c 不支持 §)。

  • compiling 过程中不生成前缀,只生成后缀。 用 © 作为分割符号来避免与用户定义的名字相冲突。

这回导致 § 和 © 是用户不能在名字中使用的字符。

_ 也需要被保留,因为编译器生成局部变量的时候要用 _ 前缀。