2010-01-29 7 views
1

Je crée des macros imbriquées à Boo, j'ai écrit ce programme:Comment créer macro imbriquée à Boo

macro text: 
    macro subMacro: 
    text["Text"] = "Hello World" 

    return [| 
    block: 
     System.Console.WriteLine("Hello World"); 
    |] 

Mais je reçois l'erreur « Unknown identifer: 'texte » dans la 3ème ligne du code.

Répondre

1

L'erreur que vous obtenez est susceptible de faire avec une importation manquante dans le code d'où la macro est appelée.

Si votre macro est dans un espace de noms nommé foo par exemple, vous devez ajouter

import foo 

Au sommet du code d'appel.

Une deuxième question que vous pouvez rencontrer une fois que vous résoudre ce problème de compilateur est l'erreur

« identifiant inconnu « block »(BCE0005)

Pour corriger cela, ajoutez un .Body après la section quasi-citation comme ceci:

import Boo.Lang.Compiler.Ast 

macro text: 
    macro subMacro: 
     text["Text"] = "Hello world" 

    return [| 
     block: 
      System.Console.WriteLine("Hello World"); 
    |].Body 

EDIT - macros sont un peu mon humble avis d'un art sombre Pour plus d'aide, vous devriez essayer le boo mailing list, ou l'excellent DSLs in BOO

.