MCPcopy
hub / github.com/hashicorp/hcl / parseExpression

Function parseExpression

hclwrite/parser.go:378–397  ·  view source on GitHub ↗
(nativeExpr hclsyntax.Expression, from inputTokens)

Source from the content-addressed store, hash-verified

376}
377
378func parseExpression(nativeExpr hclsyntax.Expression, from inputTokens) *node {
379 expr := newExpression()
380 children := expr.children
381
382 nativeVars := nativeExpr.Variables()
383
384 for _, nativeTraversal := range nativeVars {
385 before, traversal, after := parseTraversal(nativeTraversal, from)
386 children.AppendUnstructuredTokens(before.Tokens())
387 children.AppendNode(traversal)
388 expr.absTraversals.Add(traversal)
389 from = after
390 }
391 // Attach any stragglers that don't belong to a traversal to the expression
392 // itself. In an expression with no traversals at all, this is just the
393 // entirety of "from".
394 children.AppendUnstructuredTokens(from.Tokens())
395
396 return newNode(expr)
397}
398
399func parseTraversal(nativeTraversal hcl.Traversal, from inputTokens) (before inputTokens, n *node, after inputTokens) {
400 traversal := newTraversal()

Callers 1

parseAttributeFunction · 0.70

Calls 8

newExpressionFunction · 0.85
parseTraversalFunction · 0.85
newNodeFunction · 0.85
TokensMethod · 0.80
AppendNodeMethod · 0.80
AddMethod · 0.80
VariablesMethod · 0.65

Tested by

no test coverage detected