46 lines
1.5 KiB
Markdown
46 lines
1.5 KiB
Markdown
# Slang Language Documentation
|
|
|
|
Slang is a high-level programming language that compiles to IC10 assembly for [Stationeers](https://store.steampowered.com/app/544550/Stationeers/).
|
|
It provides a familiar C-like syntax while targeting the limited instruction set
|
|
of in-game IC10.
|
|
|
|
## Quick Links
|
|
|
|
- [Getting Started](docs/getting-started.md) - Installation and first program
|
|
- [Language Reference](docs/language-reference.md) - Complete syntax guide
|
|
- [Built-in Functions](docs/builtins.md) - System calls and math functions
|
|
- [Examples](docs/examples.md) - Real-world code samples
|
|
|
|
## Overview
|
|
|
|
Slang aims to reduce the time spent writing IC10 assembly by providing:
|
|
|
|
- **Familiar syntax** - C-like declarations, control flow, and expressions
|
|
- **Device abstraction** - Named device bindings with property access
|
|
- **Automatic register allocation** - No manual register management
|
|
- **Built-in functions** - Math operations and device I/O as function calls
|
|
- **Temperature literals** - Native support for Celsius, Fahrenheit, and Kelvin
|
|
|
|
## Example
|
|
|
|
```mips
|
|
device gasSensor = "d0";
|
|
device airCon = "d1";
|
|
|
|
const TARGET_TEMP = 20c;
|
|
|
|
loop {
|
|
yield();
|
|
airCon.On = gasSensor.Temperature > TARGET_TEMP;
|
|
}
|
|
```
|
|
|
|
This compiles to IC10 that monitors temperature and controls an air
|
|
conditioner.
|
|
|
|
## Project Status
|
|
|
|
Slang is under active development. It may produce suboptimal code for complex programs.
|
|
It is not a replacement for IC10, for performance-critical or large scripts,
|
|
hand-written IC10 may still be preferred.
|