A multi-language parsing infrastructure with an unified AST
C++ Go Python Yacc D Lex Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

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
Go 1.5+ bison, GLR complete ok yes Go completion
Haskell 2010 LL(k) WIP ? yes -
Python 2.x LL(1) complete basic yes Overall intro

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