All Projects → refu-lang → refu

refu-lang / refu

Licence: other
Refu language

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to refu

Mobile Web Best Practice
🐯 移动 web 最佳实践
Stars: ✭ 1,333 (+6247.62%)
Mutual labels:  hybrid
React Native Turbolinks
React Native adapter for building hybrid apps with Turbolinks 5
Stars: ✭ 177 (+742.86%)
Mutual labels:  hybrid
Cordovacn
Apache Cordova is an open-source mobile development framework. It allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development, avoiding each mobile platforms' native development language. (Apache Cordova是一个开放源代码的移动开发框架,它允许你使用web技术如:JavaScript,HTML,CSS进行跨平台开发,避免使用原生开发。)
Stars: ✭ 240 (+1042.86%)
Mutual labels:  hybrid
Jungle
An embedded key-value store library specialized for building state machine and log store
Stars: ✭ 110 (+423.81%)
Mutual labels:  hybrid
Easybridge
A design of easy js-bridge which provide the ability to communicate between java and javascript.It is based on the android webview's feature [addJavaScriptInterface]
Stars: ✭ 158 (+652.38%)
Mutual labels:  hybrid
Kerkee android
kerkee is a hybrid app framework,This repository is kerkee for android
Stars: ✭ 208 (+890.48%)
Mutual labels:  hybrid
Weexplus
🔨基于阿里WeexSDK跨平台方案,在原有的组件基础上,提供weex调用android native方法的一套扩展通信交互库,包含页面导航、数据存储、图片选择、二维码识别、权限等。
Stars: ✭ 73 (+247.62%)
Mutual labels:  hybrid
Project-Iris
Iris systems programming language frontend & backend
Stars: ✭ 14 (-33.33%)
Mutual labels:  system-programming
Hybridfoundation
混合应用基础架构 跨平台热更新方案 Js双向通信 基础WebView
Stars: ✭ 164 (+680.95%)
Mutual labels:  hybrid
Agenericclient
AGenericClient 泛客户端开发,其中包括小程序、快应用、H5、移动 App、桌面应用、游戏开发,涉及到了:uni-app、Taro 多端统一开发框架、ReactNative和Flutter 移动端跨平台开发框架、以及移动端Native Android开发、桌面跨平台Electron 掌握多端开发
Stars: ✭ 228 (+985.71%)
Mutual labels:  hybrid
Noobaa Core
NooBaa is a Dynamic Data Gateway for cloud-native, hybrid and multi cloud environments ☁️🚀
Stars: ✭ 131 (+523.81%)
Mutual labels:  hybrid
Vassonic
VasSonic is a lightweight and high-performance Hybrid framework developed by tencent VAS team, which is intended to speed up the first screen of websites working on Android and iOS platform.
Stars: ✭ 11,466 (+54500%)
Mutual labels:  hybrid
React Native Webview Invoke
Invoke functions between React Native and WebView
Stars: ✭ 211 (+904.76%)
Mutual labels:  hybrid
Xut.js
批量生成应用平台 http://t.cn/RazBbL0
Stars: ✭ 105 (+400%)
Mutual labels:  hybrid
Next.js
The React Framework
Stars: ✭ 78,384 (+373157.14%)
Mutual labels:  hybrid
Hybrid Crypto Js
RSA+AES hybrid encryption implementation for JavaScript. Works with Node.js, React Native and modern browsers.
Stars: ✭ 87 (+314.29%)
Mutual labels:  hybrid
Android ctrip
Android Flutter 混合开发高仿大厂App
Stars: ✭ 180 (+757.14%)
Mutual labels:  hybrid
chihu
ionic2-example <吃乎>一款美食app 🍜 ☕️ 🍦 (This is a support android and apple ionic2 case, a food app)
Stars: ✭ 64 (+204.76%)
Mutual labels:  hybrid
go-sysconf
sysconf for Go, without using cgo
Stars: ✭ 119 (+466.67%)
Mutual labels:  system-programming
Linux Unattended Installation
This project provides all you need to create an unattended installation of a minimal setup of Linux.
Stars: ✭ 215 (+923.81%)
Mutual labels:  hybrid

Refulang

Travis Coveralls Join chat in gitter Read The Docs

This is the code repository for refu, a hybrid language with a strong type system based on algebraic data types.

For a language reference, tutorial and overall documentation visit here.

Dependencies

The required dependencies are:

  • For building we need cmake
  • For the backend code generation we need llvm
  • For hash table generation we use gperf
  • For units tests we need libcheck

The optional dependencies are:

  • For generating dependency graphs, we can use graphviz
  • For extra memory checks during unit testing, we can use valgrind
  • For generating a json file of the AST, we can use json-c
  • For regular expressions (not yet used anywhere yet), we can use pcre2
  • For generating code coverage reports we can use lcov

Dependencies in Linux

Use your distribution's package manager

Dependencies in Macosx

brew install cmake
brew install pkg-config
brew install check
brew install llvm
brew install lcov

Installing llvm does not place it into the PATH and as such you will also need to put its path there manually. In recent versions this means adding the following to .profile.

export PATH="$PATH:/usr/local/opt/llvm/bin/"

Building

git clone --recursive https://github.com/refu-lang/refu
cd refu
mkdir build
cd build
cmake ..
make

Run the tests

In order to run the tests you have to also build them. This is done by providing an extra option to cmake.

cmake -DCMAKE_BUILD_TYPE=Debug .. -DTEST=1

There is a convenience test script that runs all of the tests for refu and its rfbase submodule.

./test.sh --rfbase

Usage

You can invoke refu --help in order to get all the possible arguments along with their description.

Example:

 --help                                                  display this help and exit
 --version                                               display version info and exit
 -v, --verbose-level=1-4                                 Set compiler verbosity level
 --backend=GCC|LLVM                                      The backend connection the refu compiler will user
 --backend-debug                                         If given then some debug information about the backend code will be printed
 --output-ast                                            If given then after analysis state the AST will be output in JSON format
 -o, --output=name                                       output file name. Defaults to input.exe if not given
 --rir                                                   Interpret the input file as a RIR file and parse it.
 -r, --print-rir                                         If given will output the intermediate representation in a file
 <file>                                                  input files

At the moment these are the important arguments.

  • --verbose-level Will determine how verbose the output of the compiler will be.

  • --backend-debug Will print out to the stdout the LLVM IR for debugging purposes.

  • --output-ast Will output the Abstract Syntax Tree in a .json format

  • --print-rir Will print the generated Refu Intermediate Format (RIR) for deugging purposes.

Contributing

You are more than welcome to open a Pull Request here in Github if you would like to contribute to the development of refu.

Coding Style and Best Practises

TODO

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].