mirror of
https://github.com/Nexoniarz/Finch.git
synced 2026-11-03 16:54:25 +00:00
A small, fast programming language on LLVM with C-like syntax. - Lexer, recursive-descent parser, single-pass type checker + LLVM IR codegen, O2 pipeline - Types: int/float/bool/char/str, sized i8..u64/f32/f64, pointers ptr[T] with addr()/.value/null - Functions (fn ... -> T), if/else, while, for..in, break/continue, Go-style operator precedence - Implicit conversions only when lossless; literals adapt to their target type - Runtime checks for division by zero, MIN/-1 and null .value - C interop: import "header.h" via libclang, link "lib" with pkg-config, link-error advice - Human-readable errors with source excerpts - Test suite (34 tests), examples, docs for beginners/technicians/engineers in English and Polish Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 lines
677 B
Text
42 lines
677 B
Text
fn classify(int n) -> str {
|
|
if n < 0 {
|
|
return "negative"
|
|
} else if n == 0 {
|
|
return "zero"
|
|
} else {
|
|
return "positive"
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
print(classify(-5), classify(0), classify(5))
|
|
|
|
total := 0
|
|
for i in 0..100 {
|
|
if i % 2 == 0 {
|
|
continue
|
|
}
|
|
if i > 10 {
|
|
break
|
|
}
|
|
total += i
|
|
}
|
|
print("odd sum below 10:", total)
|
|
|
|
n := 0
|
|
while true {
|
|
n += 1
|
|
if n == 5 {
|
|
break
|
|
}
|
|
}
|
|
print("n:", n)
|
|
|
|
for i in 3..3 {
|
|
print("never")
|
|
}
|
|
{
|
|
inner := "blocks have their own scope"
|
|
print(inner)
|
|
}
|
|
}
|