Có fewresources trên web có hướng dẫn bằng cách viết trình biên dịch Scala để khớp với mã, nhưng chúng không giúp tạo mã (xây dựng cây biểu tượng) . Tôi nên bắt đầu tìm ra cách để làm điều này? (Nếu có cách dễ dàng hơn là xây dựng cây biểu tượng theo cách thủ công, tôi cũng sẽ quan tâm.)Tạo cây mã Scala từ plugin trình biên dịch Scala
Ví dụ: tôi muốn viết một plugin thay thế một số mã bằng một AST đơn giản cho biểu thức này, trong đó biến (chiết xuất từ các mã chương trình gốc) có thể là của bất kỳ loại:
"" + hello + ", " + world + "!"
tôi nhận ra điều này có thể được khôn lanh vì đấm bốc và toString
, ví dụ: nếu hello
là một đối tượng và world
là một int, điều này thực sự nên cái gì đó như:
"".+(hello.toString().+(", ".+(new Integer(world).toString().+("!"))))
Tôi không biết câu trả lời cho câu hỏi của bạn, nhưng Miguel Garcia đã tổng hợp [Góc biên dịch Scala] (http://www.sts.tu-harburg.de/people/mi.garcia/ScalaCompilerCorner /) có lẽ là trình biên dịch tài nguyên có sẵn tốt nhất về trình biên dịch Scala. –