Hi,
I am trying to understand the Swift AST by looking at output produced from
swiftc -dump-ast <file>.
Most of it makes sense to me, but there are some things that I don’t
understand. For example, consider
the following code:
var x = 42
This produces the following output:
(source_file
(top_level_code_decl
(brace_stmt
(pattern_binding_decl
(pattern_named type='Int' 'x')
(call_expr implicit type='Int' location=test.swift:1:9
range=[test.swift:1:9 - line:1:9] nothrow
(constructor_ref_call_expr implicit type='(_builtinIntegerLiteral:
Int2048) -> Int' location=test.swift:1:9 range=[test.swift:1:9 - line:1:9]
nothrow
(declref_expr implicit type='Int.Type -> (_builtinIntegerLiteral:
Int2048) -> Int' location=test.swift:1:9 range=[test.swift:1:9 - line:1:9]
decl=Swift.(file).Int.init(_builtinIntegerLiteral:) specialized=no)
(type_expr implicit type='Int.Type' location=test.swift:1:9
range=[test.swift:1:9 - line:1:9] typerepr='Int'))
(tuple_expr implicit type='(_builtinIntegerLiteral: Int2048)'
location=test.swift:1:9 range=[test.swift:1:9 - line:1:9]
names=_builtinIntegerLiteral
(integer_literal_expr type='Int2048' location=test.swift:1:9
range=[test.swift:1:9 - line:1:9] value=42))))
))
(var_decl "x" type='Int' access=internal storage_kind=stored))
Intuitively, I would have expected that the initializer is part of the
var_decl. Also, why is there a brace_stmt involved?
As far as I have seen, the term brace statement doesn’t appear anywhere in the
Swift Language Reference. Is it the
same as code-block
<https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/code-block>?
Thanks in advance!
Best regards,
Toni
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev