Roo
所属分类:自动编程
开发工具:C++
文件大小:92KB
下载次数:0
上传日期:2017-09-30 14:12:22
上 传 者:
sh-1993
说明: 具有x86_64代码生成器的小玩具编程语言
(Little toy programming language with an x86_64 code generator)
文件列表:
.travis.yml (641, 2017-09-30)
LICENSE.md (1083, 2017-09-30)
Makefile (2212, 2017-09-30)
Prelude-dir (0, 2017-09-30)
Prelude-dir\Prelude.roo (628, 2017-09-30)
Prelude-dir\stuff.s (718, 2017-09-30)
cloc.cfg (110, 2017-09-30)
docs (0, 2017-09-30)
docs\RooModuleFormat.md (3607, 2017-09-30)
docs\Spec.md (4951, 2017-09-30)
docs\TheCompleteAST.md (1145, 2017-09-30)
roo.vim (441, 2017-09-30)
src (0, 2017-09-30)
src\air.cpp (32549, 2017-09-30)
src\air.hpp (11182, 2017-09-30)
src\ast.cpp (12592, 2017-09-30)
src\ast.hpp (9779, 2017-09-30)
src\codegen.cpp (3850, 2017-09-30)
src\codegen.hpp (2160, 2017-09-30)
src\common.cpp (2862, 2017-09-30)
src\common.hpp (1140, 2017-09-30)
src\elf (0, 2017-09-30)
src\elf\elf.cpp (30064, 2017-09-30)
src\elf\elf.hpp (7984, 2017-09-30)
src\error.cpp (8427, 2017-09-30)
src\error.hpp (9229, 2017-09-30)
src\ir.cpp (12628, 2017-09-30)
src\ir.hpp (8929, 2017-09-30)
src\main.cpp (4363, 2017-09-30)
src\module.cpp (9144, 2017-09-30)
src\module.hpp (288, 2017-09-30)
src\parser.hpp (18550, 2017-09-30)
src\parsing.cpp (34895, 2017-09-30)
src\parsing.hpp (1250, 2017-09-30)
src\passes (0, 2017-09-30)
src\passes\conditionFolder.cpp (6177, 2017-09-30)
... ...
# Roo
[![Build Status](https://travis-ci.org/IsaacWoods/Roo.svg?branch=master)](https://travis-ci.org/IsaacWoods/Roo)
Roo is a imperitive programming language that takes concepts from functional programming. Its central goal
is to avoid the kitchen-sink-esque hodgepodge of languages like C++, instead expressing logic through fewer, more powerful
features.
### Aims
* No separation of definition and implementation (no headers)
* Easier build process - nice source and dependency management
* Safety - strong type-checking and powerful expression of programmer intent
* Terse, expressive syntax - no extranious punctuation
It looks something like this:
``` roo
#[Name(example)]
import Prelude
type color
{
r : float
g : float
b : float
a : float
}
fn PrintColor(color : color&)
{
PrintFmt("Color: ({}, {}, {}, {})\n", color.r, color.g, color.b, color.a)
}
#[Entry]
fn Main() -> int
{
#[Debug]
Print("Hello, World!\n")
// Make and print a color
myColor : color{1.0f, 0.0f, 1.0f, 1.0f}
PrintColor(myColor)
return 0
}
```
### Using the compiler
* At the moment, The compiler can only produce executables usable on x86_***, System-V, ELF-compatible systems
* (Temporary step) Run `make prelude` to build `Prelude` (our standard library)
* Run `./roo` to compile and link all the files in the current directory
* Various DOT files will also be produced, which may be converted to PNG with `dot -Tpng -o {file}.png {file}.dot`
### Contributing
Contributions are welcome. Current tasks and long-term goals can be found on the [Trello](https://trello.com/b/zxHvpzTz/roo). Please keep to the style of the existing code.
近期下载者:
相关文件:
收藏者: