diff options
| author | Ganesh Viswanathan <dev@genotrance.com> | 2019-12-17 10:31:14 -0600 |
|---|---|---|
| committer | Ganesh Viswanathan <dev@genotrance.com> | 2019-12-17 10:31:14 -0600 |
| commit | b426bc49bac77fdfc6c873c5c93702899a9794d7 (patch) | |
| tree | 464ab1ad35ef1594ccfbda63a1401783b64567e1 | |
| parent | faeb43afbe8c8dfe13cada97ae2705db75246c85 (diff) | |
| download | nimterop-pcrePath.tar.gz nimterop-pcrePath.zip | |
Print code in debug outputpcrePath
| -rw-r--r-- | nimterop/ast.nim | 9 |
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: |
