2

nnkUInt16Lit列挙バリアントとこの AST 表現を説明することを除いて、これに関するドキュメントはありません42'i16 - nnkInt16Lit(intVal = 42)

通常のように使用するnnkIntLitと失敗します。

macro test(): stmt =
  var n = newNimNode(nnkUInt16Lit)
  n.intVal = 1

  result = newLetStmt(ident("foo"), n)

test()
echo foo

これによりエラーが発生します。

フィールドintValが見つかりません

(これは私の実際の使用法ではありません。問題を示すための単なるデモです。)

でさまざまなバリエーションを試しましintValたが、エラーは常に になりundeclared identifierます。を使用しますparseExpr()が、 の$procintはコンパイル時に機能しないようです。

NimNode型定義のソース コードを探して調べてみましたが、今のところ見つかりません。

uint16では、マクロで NimNodeを作成するにはどうすればよいでしょうか?

4

1 に答える 1

4

これはうまくいくはずです:

var n = parseExpr "1'u16"

このプル リクエストを使用すると、元のコードも機能します: https://github.com/nim-lang/Nim/pull/2754

于 2015-05-18T19:27:17.460 に答える