From d3486c39726800e477af6b0b40e9ee55722a9abc Mon Sep 17 00:00:00 2001 From: fabricio-p Date: Sat, 9 Nov 2024 18:33:40 +0200 Subject: [PATCH] Make DSL interpret sym nodes as ident nodes --- src/arraymancer/nn/nn_dsl.nim | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/arraymancer/nn/nn_dsl.nim b/src/arraymancer/nn/nn_dsl.nim index 6b75721cf..30b6ab52b 100644 --- a/src/arraymancer/nn/nn_dsl.nim +++ b/src/arraymancer/nn/nn_dsl.nim @@ -5,6 +5,7 @@ import macros +const IdentLike = {nnkIdent, nnkSym, nnkOpenSymChoice} type SectionInfo = object @@ -63,17 +64,25 @@ proc createLayerInfo(sectionInfo: SectionInfo): seq[LayerInfo] = if layer.kind != nnkCall or layer.len != 2 or - layer[0].kind != nnkIdent or + layer[0].kind notin IdentLike or layer[1].kind != nnkStmtList or layer[1].len != 1 or layer[1][0].kind != nnkCall or layer[1][0].len < 1 or - layer[1][0][0].kind != nnkIdent: + layer[1][0][0].kind notin IdentLike: error("Unknown configuration of layer section: \"" & $toStrLit(layer) & "\"", layer) + let + nameNode = layer[0] + typeNameNode = layer[1][0][0] + result.add LayerInfo( - name: layer[0], - typeName: layer[1][0][0] + name: + if nameNode.kind != nnkOpenSymChoice: nameNode + else: nameNode.repr.ident(), + typeName: + if typeNameNode.kind != nnkOpenSymChoice: typeNameNode + else: typeNameNode.repr.ident(), ) if layer[1][0].len >= 2: result[^1].arguments = layer[1][0][1..^1]