import Foundation import SwiftSyntax import SwiftParser let sourceFile = Parser.parse(source: "let number = 100") print(sourceFile.debugDescription) func getLetMethod() { let statements = Array(sourceFile.statements) let item = statements[0].item if let decl = item.as(VariableDeclSyntax.self) { print(decl.bindingSpecifier) // let let result = decl.with(\.bindingSpecifier, .keyword(SwiftSyntax.Keyword.var)) print(result.bindingSpecifier) // var } } func getNumberMethod() { let statements = Array(sourceFile.statements) let codeBlock = statements[0] let item = codeBlock.item if let decl = item.as(VariableDeclSyntax.self) { let bindings = Array(decl.bindings) let binding = bindings[0] if let pattern = binding.pattern.as(IdentifierPatternSyntax.self) { let identifier = pattern.identifier print(identifier) // number let result = pattern.with(\.identifier, .identifier("amount")) print(result.description) // amount } } } func getEqual() { let statements = Array(sourceFile.statements) let item = statements[0].item if let decl = item.as(VariableDeclSyntax.self) { let bindings = Array(decl.bindings) let binding = bindings[0] if let initializer = binding.initializer?.as(InitializerClauseSyntax.self) { print(initializer.equal) // = } } } func get100Method() { let statements = Array(sourceFile.statements) let item = statements[0].item if let decl = item.as(VariableDeclSyntax.self) { let bindings = Array(decl.bindings) let binding = bindings[0] if let initializer = binding.initializer?.as(InitializerClauseSyntax.self) { if let value = initializer.value.as(IntegerLiteralExprSyntax.self) { print(value.literal) // 100 let result = value.with(\.literal, .floatLiteral("100.0")) print(result.literal) // 100.0 } } } }