https://github.com/ltcmelo/uaiso
A multi-language parsing infrastructure with an unified AST
https://github.com/ltcmelo/uaiso
ast cplusplus golang haskell ide parsing python
Last synced: about 1 year ago
JSON representation
A multi-language parsing infrastructure with an unified AST
- Host: GitHub
- URL: https://github.com/ltcmelo/uaiso
- Owner: ltcmelo
- License: lgpl-2.1
- Created: 2015-09-14T00:14:12.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2017-07-15T00:02:58.000Z (almost 9 years ago)
- Last Synced: 2025-03-26T12:11:52.888Z (about 1 year ago)
- Topics: ast, cplusplus, golang, haskell, ide, parsing, python
- Language: C++
- Homepage:
- Size: 1.44 MB
- Stars: 99
- Watchers: 10
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Uaiso
Uaiso is a parsing infrastructure that provides a unifying AST (Abstract Syntax Tree) and semantic services across programming languages. Ideally it can be used to:
* Produce code completion on IDEs/text editors
* Perform static analysis on programs
* Generate LLVM code (or any other)
## Supported languages
Language | Version | Parser | AST | Semantics | Active | Demo
---------|---------|--------|-----|-----------|--------|------
D | 2.0 | bison, GLR | partial | ok | no | [D completion](https://youtu.be/71aqIwv3vJs)
Go | 1.5+ | bison, GLR | complete | ok | yes | [Go completion](https://youtu.be/nUpcVBAw0DM)
Haskell | 2010 | LL(k) | WIP | ? | yes | -
Python | 2.x | LL(1) | complete | basic | yes | [Overall intro](https://youtu.be/71aqIwv3vJs)
## Prerequisites
The source is written in standard C++. You should be able to build it anywhere, but I'm developing on Clang/OSX. Make sure to use --recursive to clone.
* Cmake
* Python
* Flex/Bison
* C++14 compiler
Obs: There's code relying on Unix-like paths, which I need to work on for Windows.
## Plugins
Uaiso is a library. In order to use it within an IDE/text editor you need to write a plugin. There's an experimental one available for Qt Creator: https://github.com/ltcmelo/uaiso-plugins