bin/ 230 CLI tools (ask-*, br-*, agent-*, roadid, carpool) scripts/ 99 automation scripts fleet/ Node configs and deployment workers/ Cloudflare Worker sources (roadpay, road-search, squad webhooks) roadc/ RoadC programming language roadnet/ Mesh network (5 APs, WireGuard) operator/ Memory system scripts config/ System configs dotfiles/ Shell configs docs/ Documentation BlackRoad OS — Pave Tomorrow. RoadChain-SHA2048: d1a24f55318d338b RoadChain-Identity: alexa@sovereign RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
217 lines
3.4 KiB
Markdown
217 lines
3.4 KiB
Markdown
# 🚀 BlackRoad Language - Quick Start Guide
|
|
|
|
## 5-Minute Setup
|
|
|
|
### Step 1: Build the Compiler
|
|
```bash
|
|
cd ~/roadc
|
|
gcc -std=c99 -O2 -o roadc roadc.c
|
|
```
|
|
|
|
### Step 2: Write Your First Program
|
|
```bash
|
|
cat > hello.road << 'EOF'
|
|
# My First BlackRoad Program
|
|
fun main():
|
|
print("Hello, BlackRoad! 🖤🛣️")
|
|
EOF
|
|
```
|
|
|
|
### Step 3: Run It!
|
|
```bash
|
|
./roadc hello.road
|
|
```
|
|
|
|
## What's Next?
|
|
|
|
### Try the Examples
|
|
```bash
|
|
# Simple 3D rotating cube
|
|
./roadc examples/hello_3d.road
|
|
|
|
# Full 3D space shooter game
|
|
./roadc examples/space_shooter.road
|
|
```
|
|
|
|
### Start the REPL
|
|
```bash
|
|
./roadc
|
|
> let x = 42
|
|
> print(x)
|
|
```
|
|
|
|
### Read the Docs
|
|
- [Full Specification](../BLACKROAD_LANGUAGE_SPECIFICATION.md)
|
|
- [README](README.md)
|
|
- [Complete Guide](../BLACKROAD_LANGUAGE_COMPLETE.md)
|
|
|
|
## Syntax Cheat Sheet
|
|
|
|
### Variables
|
|
```road
|
|
let x: int = 42 # Immutable
|
|
var y = 3.14 # Mutable (type inferred)
|
|
const PI = 3.14159 # Constant
|
|
```
|
|
|
|
### Functions
|
|
```road
|
|
fun add(a: int, b: int) -> int:
|
|
return a + b
|
|
|
|
fun greet(name: string):
|
|
print("Hello, {name}!")
|
|
```
|
|
|
|
### Control Flow
|
|
```road
|
|
if x > 10:
|
|
print("Large")
|
|
elif x > 5:
|
|
print("Medium")
|
|
else:
|
|
print("Small")
|
|
|
|
for i in 0..10:
|
|
print(i)
|
|
|
|
while condition:
|
|
process()
|
|
```
|
|
|
|
### 3D Objects
|
|
```road
|
|
space MyScene:
|
|
cube Box:
|
|
position: vec3(0, 0, 0)
|
|
color: #FF1D6C
|
|
|
|
light Sun:
|
|
type: point
|
|
intensity: 1.0
|
|
|
|
camera Cam:
|
|
position: vec3(0, 0, 5)
|
|
fov: 75
|
|
```
|
|
|
|
### Types
|
|
```road
|
|
type User:
|
|
name: string
|
|
age: int
|
|
email: string
|
|
|
|
let user = User{
|
|
name: "Alexa",
|
|
age: 25,
|
|
email: "alexa@blackroad.io"
|
|
}
|
|
```
|
|
|
|
## Common Tasks
|
|
|
|
### Create a 3D Scene
|
|
```road
|
|
space Game:
|
|
cube Player:
|
|
position: vec3(0, 0, 0)
|
|
color: #FF1D6C
|
|
|
|
fun main():
|
|
render(Game)
|
|
```
|
|
|
|
### Async/Await
|
|
```road
|
|
async fun fetchData(url: string) -> string:
|
|
let response = await http.get(url)
|
|
return response.text()
|
|
|
|
fun main():
|
|
let data = await fetchData("https://api.example.com")
|
|
print(data)
|
|
```
|
|
|
|
### Lists & Loops
|
|
```road
|
|
let numbers = [1, 2, 3, 4, 5]
|
|
|
|
for num in numbers:
|
|
print(num * 2)
|
|
```
|
|
|
|
### Pattern Matching
|
|
```road
|
|
match status:
|
|
200 -> print("OK")
|
|
404 -> print("Not Found")
|
|
500..599 -> print("Server Error")
|
|
_ -> print("Unknown")
|
|
```
|
|
|
|
## Testing Your Code
|
|
|
|
### Python Parser (for validation)
|
|
```bash
|
|
python3 parser.py
|
|
```
|
|
|
|
### C Compiler (native)
|
|
```bash
|
|
./roadc your_file.road
|
|
```
|
|
|
|
## Deploy to Raspberry Pi
|
|
|
|
```bash
|
|
# On your Mac
|
|
scp roadc.c pi@192.168.4.38:~
|
|
|
|
# On the Pi
|
|
ssh pi@192.168.4.38
|
|
gcc -std=c99 -O2 -o roadc roadc.c
|
|
./roadc
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### "Command not found: roadc"
|
|
```bash
|
|
# Make sure you compiled it
|
|
gcc -std=c99 -O2 -o roadc roadc.c
|
|
|
|
# Or use full path
|
|
./roadc test.road
|
|
```
|
|
|
|
### "Syntax Error"
|
|
Check the syntax matches the specification:
|
|
```road
|
|
# Correct
|
|
let x: int = 42
|
|
|
|
# Wrong
|
|
int x = 42 # This is C, not BlackRoad!
|
|
```
|
|
|
|
### "Unexpected token"
|
|
Make sure indentation is consistent (spaces or tabs, not mixed).
|
|
|
|
## Learning Resources
|
|
|
|
1. **Read the Spec** - `~/BLACKROAD_LANGUAGE_SPECIFICATION.md`
|
|
2. **Study Examples** - `~/roadc/examples/*.road`
|
|
3. **Experiment in REPL** - `./roadc` (no arguments)
|
|
4. **Check the Source** - Lexer and parser are well-documented
|
|
|
|
## Community
|
|
|
|
- **Issues**: blackroad.systems@gmail.com
|
|
- **Ideas**: amundsonalexa@gmail.com
|
|
- **GitHub**: Coming soon!
|
|
|
|
---
|
|
|
|
**Happy coding in BlackRoad!** 🖤🛣️
|