This commit is contained in:
2026-05-19 12:35:23 +01:00
commit 9101eeefa0
5 changed files with 159 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
/*
@native @inline
@expr(say (&a: String) (b: i32) times)
fn say_something(&a: String, b: i32) -> Pack<String,i32> {
for index in 0..b {
a += a
}
return {a,b}
}
*/
println("where the huzz")
+103
View File
@@ -0,0 +1,103 @@
struct Type {
name: String,
params: Vec<Type>,
}
struct Decl {
name: String,
typed: Option<Type>,
default: Option<Expr>,
}
struct Param {
borrow: bool,
decl: Decl,
}
struct Call {
name: String,
params: Vec<Param>,
}
struct StructEntry {
name: Option<String>,
value: Expr
}
struct FuncEntry {
name: Option<String>,
value: Expr,
borrow: bool,
}
struct Class {
name: String,
entries: Vec<Decl>,
methods: Vec<Function>,
}
struct Block(Vec<Statement>);
struct Function {
annotations: Vec<Annotation>,
name: String,
params: Vec<FuncEntry>,
result: Type,
}
enum Overloaded {
Plus,
Get,
Set,
GetIndex,
SetIndex,
}
enum Annotation {
Inline,
Native,
Overload(Overloaded),
Expr(String),
}
enum Statement {
DeclLet(Decl),
DeclVar(Decl),
Assignment {
name: String,
expr: Expr,
},
Call(Call),
Return(Expr),
Block(Block),
While(Expr,Box<Statement>),
Loop(Box<Statement>),
Function(Function),
Break,
}
enum Expr {
Paren(Box<Expr>),
Call(Call),
Add {
left: Box<Expr>,
right: Box<Expr>,
},
String(String),
Number(String),
}
enum TopLevel {
Class(Class),
Statement(Statement)
}
struct Program(Vec<TopLevel>);
struct ParseError(String);
struct Reader(String);
impl Reader {
}
trait Parsed {
fn enter(reader: &mut Reader) -> ;
fn exit(reader: &mut Reader) -> Result<(), ParseError>;
}
impl Parsed for TopLevel {
}
impl Parsed for Statement {
}
impl Parsed for Expr {
}
fn parse(source: String) -> Result<Program,ParseError> {
Ok(Program(Vec::new()))
}
+5
View File
@@ -0,0 +1,5 @@
use game::run;
fn main() {
run().unwrap();
}
+19
View File
@@ -0,0 +1,19 @@
struct VertexOutput {
@builtin(position) clip_position: vec4<f32>,
};
@vertex
fn vs_main(
@builtin(vertex_index) in_vertex_index: u32,
) -> VertexOutput {
var out: VertexOutput;
let x = f32(1 - i32(in_vertex_index)) * 0.5;
let y = f32(i32(in_vertex_index & 1u) * 2 - 1) * 0.5;
out.clip_position = vec4<f32>(x, y, 0.0, 1.0);
return out;
}
@fragment
fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
return vec4<f32>(0.3, 0.2, 0.1, 1.0);
}
+21
View File
@@ -0,0 +1,21 @@
struct VertexOutput {
@builtin(position) clip_position: vec4<f32>,
@location(0) color: vec4<f32>
};
@vertex
fn vs_main(
@builtin(vertex_index) in_vertex_index: u32,
) -> VertexOutput {
var out: VertexOutput;
let x = f32(1 - i32(in_vertex_index)) * 0.5;
let y = f32(i32(in_vertex_index & 1u) * 2 - 1) * 0.5;
out.clip_position = vec4<f32>(x, y, 0.0, 1.0);
out.color = vec4<f32>(0.3,x,y,1.0);
return out;
}
@fragment
fn fs_main(@location(0) col: vec4<f32>) -> @location(0) vec4<f32> {
return col;
}