2

Я пытаюсь получить AST простой фрагмент кода в Nemerle, используя квази-кавычки Nemerle.Как использовать квази-цитаты, чтобы получить AST в Nemerle?

Это код, который я попробовал:

def ast() : void { 
    System.Console.WriteLine(<["Test"]>) 
} 

Я побежал на IdeOne (НКК 0.9.3), и я получил эту ошибку:

prog.nem:2:30:2:36: error: unbound name `Literal.String' 
prog.nem:2:30:2:36: error: unbound name `PExpr.Literal' 

Как я могу решить эти проблемы?

ответ

3

Вам просто нужно добавить Nemerle.Compiler.dll в качестве ссылки на ваш проект. Кроме того, некоторые более сложные квази-кавычки будут работать только в макросах.

using Nemerle.Compiler; 
using System.Console; 

macro Test() 
{ 
    def x = <[ while (true) WriteLine(4) ]>.ToString(); 
    <[ WriteLine($x) ]> 
} 
2

Квази-цитаты предназначены для использования в макросах. Им нужен контекст компилятора. Создайте проект библиотеки макросов и используйте в нем квазикомиссии.