Следующий (странный) код является частью действительной программы Scala:
/*
simple-lang s0.3.35
*/
block main()
For a = 0 to 50 {
display("Hello World at "+a+" ")
}
// end of simple-lang-like program
Несмотря на то, что этот кодовый блок является частью исходного кода программы Scala, он отличается только от 3 символов программа на другом языке .
Мне почему-то кажется мощным, если язык может обрабатывать исходный код других (не связанных) языков как собственный исходный код.
LLVM является своего рода не зависящим от языка компилятором, но он «обрабатывает» исходные файлы другого языка, компилируя их на промежуточный язык.
Могут ли существовать компиляторы, которые не обрабатывают файлы до промежуточного состояния?
Я хотел бы задать больше вопросов, но они носят умозрительный характер.Например, «Будем ли мы скоро иметь такие компиляторы» и «Является ли Scala первым шагом к такому компилятору».
Это моя первая программа Scala, так что терпите меня.Единственная цель этой программы - показать, что код, который выглядит странно для Scala, все еще может быть проанализирован без ошибок.
object HelloWorld {
class Block {
def main() {}
}
val block = new Block()
class ForClass() {
var a: Range = 0 to 0;
}
val For = new ForClass()
implicit def removeBody(int: Int) = (body: Unit) => int
class A() {
override def toString(): String = "<a>"
};
val a = new A()
var toPrint: Option[String] = None
def display(s: String) {
toPrint = Some(s)
}
def main(args: Array[String]) {
/*
simple-lang s0.3.35
*/
block main()
For a = 0 to 50 {
display("Hello World at " + a + " ")
}
// end of simple-lang-like program
println(For.a)
println(toPrint.getOrElse())
}
}