<commit_before># Swift Abstract Syntax Tree

![Travis CI Status](https://api.travis-ci.org/ryuichis/swift-ast.svg?branch=master)

The Swift Abstract Syntax Tree is an initiative to parse
[Swift Programming Language](https://swift.org/about/) in Swift itself.
The output of this utility is the corresponding
[Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (AST)
of the source code.

The AST produced in this tool is intended to be consumed in various scenarios.
For example, linting tools like [swift-lint](https://github.com/ryuichis/swift-lint)
can traverse the AST and find patterns of
[code smells](https://en.wikipedia.org/wiki/Code_smell).

Refactoring and code manipulation can leverage this AST as well.

Other ideas could be llvm-codegen or jvm-codegen (thinking about JSwift) that
consumes the AST and converts them into binary or bytecode, which will make it
a fully working compiler. (If you are working on this, send me your github repo
link to <EMAIL>.)

* * *

## A Work In Progress

The Swift Abstract Syntax Tree is still in early design and development. Many
features are incomplete or partially implemented. Some with technical limitations.

However, the framework of the project is set up already, so pull requests for<commit_msg>Make travis ci status a hyberlink in readme<commit_after># Swift Abstract Syntax Tree

[![Travis CI Status](https://api.travis-ci.org/ryuichis/swift-ast.svg?branch=master)](https://travis-ci.org/ryuichis/swift-ast)

The Swift Abstract Syntax Tree is an initiative to parse
[Swift Programming Language](https://swift.org/about/) in Swift itself.
The output of this utility is the corresponding
[Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (AST)
of the source code.

The AST produced in this tool is intended to be consumed in various scenarios.
For example, linting tools like [swift-lint](https://github.com/ryuichis/swift-lint)
can traverse the AST and find patterns of
[code smells](https://en.wikipedia.org/wiki/Code_smell).

Refactoring and code manipulation can leverage this AST as well.

Other ideas could be llvm-codegen or jvm-codegen (thinking about JSwift) that
consumes the AST and converts them into binary or bytecode, which will make it
a fully working compiler. (If you are working on this, send me your github repo
link to <EMAIL>.)

* * *

## A Work In Progress

The Swift Abstract Syntax Tree is still in early design and development. Many
features are incomplete or partially implemented. Some with technical limitations.

However, the framework of the project is set up already, so pull requests for
{'fraction_non_alphanumeric': 0.07692307692307693, 'fraction_numerical': 0.0, 'mean_word_length': 4.74835886214442, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 11, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6375974', 'n_tokens_mistral': 753, 'n_tokens_neox': 713, 'n_words': 334}