Handbok — verifierad ALB-syntax för .alb-program
AdaLogic BASIC (ALB) — handboken
Säker syntax för elever och kodskrivande verktyg — baserad på den aktuella
parsern och de inbyggda backend-vägarna. Allt nedan är det verifierade bladet.
Körbara demos: exempelgalleriet och
docs/examples/*.alb.
Allmänna regler
- Nyckelord är skiftlägesokänsliga.
- Kommentarer skrivs med
--(inte klassisktREM). - De flesta kommandon är satsbaserade.
- Arrayer är 1-baserade; index
0är utanför gränserna. - Valfritt men rekommenderat:
VERSION 0.0.0.1direkt efterBEGINmärker huvudfilens källversion — höj den förnuftigt allt eftersom filen växer. Versionsmärket är valfritt. - Använd aldrig reserverade nyckelord som identifierare eller fältnamn.
Programskelett
BEGIN
VERSION 0.0.0.1
CREATE_WINDOW "ALB APP", 960, 640
ON TICK
-- update logic
END
ON PAINT
-- draw logic
END
LISTEN
END
Deklarationer
-- comment
#MAX_ENTITIES = 64
LET score = 0
LET hp AS U16 = 100
LET name AS STRING = "ALB"
TYPE SmallHealth IS U16 RANGE 1 .. 255
TEMPORAL LET px AS I32 HISTORY 16 = 140
Säkra deklarationstyper
U0, U8, U16, U32, U64,
S32, I8–I64, F64/REAL,
PURE/RATIONAL, FLOAT2/FLOAT4,
MAT2–MAT4, BOOL, STRING/BINARY,
HW8/HW16/HW32.
Kontrollflöde
IF hp > 0 THEN
LET alive = TRUE
ELSE
LET alive = FALSE
END IF
WHILE hp > 0
LET hp = hp - 1
END WHILE
FOR i = 1 TO 10 THEN
PRINT i
END FOR
MATCH mode
0 => state = 1
ELSE => state = 99
END MATCH
MATCH använder =>-grenar (inget CASE).
SELECT använder CASE. Föredra flerrads-IF för grenar med flera åtgärder.
Funktioner och moduler
FUNCTION Twice(x AS U32) AS U32
RETURN x + x
END FUNCTION
FUNCTION PCT_X(percent AS S32) AS S32
RETURN CAST((S32(VIRTUAL_WIDTH) * percent) / 100 AS S32)
END FUNCTION
MODULE MathKit BEGIN
FUNCTION Add2(x AS U32) AS U32
RETURN x + 2
END FUNCTION
END MODULE
IMPORT MathKit
Arrayer (1-baserade)
STRICT cells[64] AS U16
LET cells[1] = 10
PARALLEL swarm[128]
x AS S32
y AS S32
hp AS U16
END PARALLEL
LET swarm[1].x = 100
SWAPPOP swarm[dead_slot], active_count
Grafik
CREATE_WINDOW "Demo", 320, 200
CLEAR $050511
COLOR $FF3300
FILL RECT x, y, w, h
DRAW LINE x1, y1, x2, y2
TEXT 8, 8, "HELLO"
DRAW TEXT 8, 24, "SCORE: " | score_s
| och & konkatenerar strängar (inte bitvis OR).
Bitvisa operationer använder OR / XOR / AND.
Indata och miljö
PRINT "HP=" | hp
INPUT "Name", player_name
LET pressed = KEY(4)
LET mx = MOUSE_X
LET vw = VIRTUAL_WIDTH
Använd KEY(code), inte KEY_STATE(code).
Exempelprogram
hello.alb
BEGIN
VERSION 0.0.0.1
PRINT "Hello from AdaLogic BASIC!"
LISTEN
END
greeter.alb
BEGIN
VERSION 0.0.0.1
LET name AS STRING = "friend"
INPUT "What should we call you?", name
PRINT "Hello, " | name | "!"
LISTEN
END
count.alb
BEGIN
VERSION 0.0.0.1
FOR i = 1 TO 10 THEN
PRINT i
END FOR
LISTEN
END
window_paint.alb
BEGIN
VERSION 0.0.0.1
CREATE_WINDOW "ALB Square", 320, 240
ON PAINT
CLEAR $101018
COLOR $0B6BCB
FILL RECT 40, 40, 80, 80
COLOR $E8F1FB
TEXT 40, 140, "FILL RECT demo"
END
LISTEN
END
cells.alb
BEGIN
VERSION 0.0.0.1
STRICT cells[8] AS U16
FOR i = 1 TO 8 THEN
LET cells[i] = i * 10
END FOR
PRINT "cells[1]=" | cells[1]
LISTEN
END
Övningsbana
BEGIN/PRINT/LISTEN(VERSIONvalfritt)- Typad
LET+IF/FOR INPUT+ sträng-|CREATE_WINDOW+ON PAINTSTRICT-arrayer (1-baserade)- Dela via konsolen
Vanliga misstag
- Använd handbokens satsformer i stället för att hitta på anropsliknande kommandon.
- Föredra
RETURN CAST(expr AS Type)vid returer med blandad aritmetik. ASSERT(expr)är runtime-assert;ASSERT pred(...)är logik-KB.- Namnge inte fält
fill,draw,matchosv. - Fler ämnen (nätverksbrandvägg, Markov/neural, statisk blit,
IMPORT_C) dokumenteras i denna handbok.
Källdokumentation
docs/LANGUAGE.md— översiktdocs/GETTING_STARTED.md— första programmet- Exempelgalleriet —
.alb-källor att köra