20 lines
577 B
Scala
20 lines
577 B
Scala
package amyc.ast
|
|
|
|
object Identifier {
|
|
private val counter = new amyc.utils.UniqueCounter[String]
|
|
|
|
def fresh(name: String): Identifier = new Identifier(name)
|
|
}
|
|
|
|
// Denotes a unique identifier in an Amy program
|
|
// Notice that we rely on reference equality to compare Identifiers.
|
|
// The numeric id will be generated lazily,
|
|
// so the Identifiers are numbered in order when we print the program.
|
|
final class Identifier private(val name: String) {
|
|
private lazy val id = Identifier.counter.next(name)
|
|
|
|
def fullName = s"${name}_$id"
|
|
|
|
override def toString: String = name
|
|
}
|