aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGanesh Viswanathan <dev@genotrance.com>2019-12-17 10:31:14 -0600
committerGanesh Viswanathan <dev@genotrance.com>2019-12-17 10:31:14 -0600
commitb426bc49bac77fdfc6c873c5c93702899a9794d7 (patch)
tree464ab1ad35ef1594ccfbda63a1401783b64567e1
parentfaeb43afbe8c8dfe13cada97ae2705db75246c85 (diff)
downloadnimterop-pcrePath.tar.gz
nimterop-pcrePath.zip
Print code in debug outputpcrePath
-rw-r--r--nimterop/ast.nim9
1 files changed, 9 insertions, 0 deletions
diff --git a/nimterop/ast.nim b/nimterop/ast.nim
index d810764..fcd9411 100644
--- a/nimterop/ast.nim
+++ b/nimterop/ast.nim
@@ -6,6 +6,8 @@ import "."/[getters, globals, treesitter/api]
proc saveNodeData(node: TSNode, nimState: NimState): bool =
let name = $node.tsNodeType()
+
+ # Atoms are nodes whose values are to be saved
if name in gAtoms:
let
pname = node.getPxName(1)
@@ -16,16 +18,20 @@ proc saveNodeData(node: TSNode, nimState: NimState): bool =
var
val = nimState.getNodeVal(node)
+ # Skip since value already obtained from parent atom
if name == "primitive_type" and pname == "sized_type_specifier":
return true
+ # Skip since value already obtained from parent expression
if name in ["number_literal", "identifier"] and pname in gExpressions:
return true
+ # Add reference point in saved data for bitfield_clause
if name in ["number_literal"] and pname == "bitfield_clause":
nimState.data.add(("bitfield_clause", val))
return true
+ # Process value as a type
if name in ["primitive_type", "sized_type_specifier"]:
val = val.getType()
@@ -58,6 +64,7 @@ proc saveNodeData(node: TSNode, nimState: NimState): bool =
elif name == "identifier":
nimState.data.add(("pointer_declarator", ""))
+ # Save node value for a top-level expression
elif name in gExpressions and name != "escape_sequence":
if $node.tsNodeParent.tsNodeType() notin gExpressions:
nimState.data.add((name, nimState.getNodeVal(node)))
@@ -125,6 +132,8 @@ proc searchAst(root: TSNode, astTable: AstTable, nimState: NimState) =
name = $node.tsNodeType()
if name in astTable:
for ast in astTable[name]:
+ if nimState.gState.debug:
+ echo "\n# " & nimState.getNodeVal(node).replace("\n", "\n# ") & "\n"
if searchAstForNode(ast, node, nimState):
ast.tonim(ast, node, nimState)
if nimState.gState.debug: