forked from ltcmelo/uaiso
A language-unifying source code modelling engine
License
gonboy/uaiso
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The Uaiso project: A language-unifying source code modelling engine You can think of a source code modelling engine as a tool that understands your software's source code. It implements the infra-structure necessary for IDEs or text editors to provide you with features such as syntax highlighting, semantic information, code completion, and others. Essentially, it performs a task similar to what a compiler front-end would do. In action: - https://youtu.be/71aqIwv3vJs (Overall intro) - https://youtu.be/4f-jHriOR_Y (Python) - https://youtu.be/nUpcVBAw0DM (Go lang) - https://youtu.be/ZwMQ_GB-Zv0 (D lang) The videos above show a prototype running as a plugin in Qt Creator. Notice the Uaiso doesn't depend on any specific IDE or code editor, it can be plugged anywhere. I picked Qt Creator as a "validation platform" essentialy because I find it beautiful (OK... I was one of the developers). -------- Goal -------- What problem does Uaiso wanna solve? - Reimplementation of code modelling engines for different languages when, in fact, many languages share a lot of features. Uaiso offers a pragmatic approach based on common language principles, but still allows for any language to define specific behavior. - Uaiso is a self-standing library, independent of an IDE or text editor. What benefits does Uaiso bring? - Quicker and easier startup for tool creators when adding support for new languages in their tools or to expand their tools to new environments. - Consistent development experience for end-users throughout IDEs and code editors, and even accross different programming languages. The Uaiso project is in conception phase, but you can already try it out. The programming languages being initially integrated are Python, Go, and D (Haskell is on the way). Expect to find bugs and missing functionality, but I hope you enjoy what's already there. Contributions are welcome. Design overview: https://goo.gl/VBQzJW ------------- Quick Start ------------- The Uaiso project is written in Standard C++. Although you should be able to build it cross-platform, I'm developing on OS X and I have not tested it elsewhere. There's some code that assumes a Unix-like system, for instance the `/` as a directory separator. I'll work on such "details" eventually. This is a hobby project. Nevertheless, I'd like to make it easy for anyone to build and run it. Here are the guidelines (an out-of-source build is not possible yet because a few Python scripts still need work). Feel free to drop me an email for questions or feedback. $git clone --recursive git@github.com:ltcmelo/uaiso.git $cmake --version cmake version 2.8.10.2 $flex --version flex 2.5.35 Apple(flex-31) $bison --version bison (GNU Bison) 2.7.12-4996 $python --version Python 2.7.5 $clang --version Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn) $cmake . $make $./UaiSoEngineTest Note 1: The reason for using `recursive` in git clone is due to an string utils library I'm using as a submodule. It's also written by me and it's pure C++. Note 2: While the Python parser is hand-writen (a recursive descent one), the D and Go parsers are Bison-based. It's typically harder to get LR parsers working on an interactive environment. However, this decision was convenient to me in order to "quickly" sketch a prototype back then. I plan to replace those for LL parsers eventually - in particular for D, due to its grammar characteristics. Nevertheless, as you can see in the videos below, it's still possible to do error recovery at the right places so completion works decently. --------- Plugins --------- Uaiso plugins live at https://github.com/ltcmelo/uaiso-plugins and are available as a sub-module of this repository. Leandro T. C. Melo http://ltcmelo.com
About
A language-unifying source code modelling engine
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- C++ 44.4%
- Go 27.8%
- Python 17.0%
- Yacc 7.8%
- D 1.2%
- Lex 0.7%
- Other 1.1%