KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
KretS — referencja składni
KretS — referencja składni
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: krets-2.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Opisane są wyłącznie konstrukcje potwierdzone implementacją SDK (i, gdzie zaznaczono, testami tej rundy).
module / fn
Moduł i funkcja; funkcje bez parametrów mogą być handlerami cyklu życia.
module Main
fn Start() -> String {
return "Witaj"
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return "Witaj"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | nazwa: Typ … |
| Wynik | -> Typ (domyślnie Unit) |
| Wymagania | nazwa modułu = nazwa pliku |
| Ograniczenia | 4096 funkcji; brak przeciążania |
| Możliwe błędy | KCS-KRS-01xx…03xx |
| Wprowadzono | 1.0 (KretScript) |
let / var / const
Stała modułu, stała lokalna, zmienna.
const LIMIT: Int = 100
let name = "Kret"
var total = 0
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
const LIMIT: Int = 100Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.let name = "Kret"Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.var total = 0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | wartość początkowa; const tylko literał |
| Wynik | — |
| Wymagania | null, [], list(), map() wymagają znanego typu |
| Ograniczenia | nazwa w funkcji raz |
| Możliwe błędy | KCS-KRS-0307, KCS-KRS-1029 |
| Wprowadzono | const: 2.0 |
record
Typ rekordowy; == porównuje pola; wspólny dla całego pluginu.
record Order {
customer: String
amount: Int
}
let o = Order(customer = "ala", amount = 30)
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
record Order {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.customer: StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.amount: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.let o = Order(customer = "ala", amount = 30)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | pola nazwane |
| Wynik | instancja rekordu |
| Wymagania | — |
| Ograniczenia | 1024 rekordy |
| Możliwe błędy | KCS-KRS-03xx |
| Wprowadzono | 1.0 |
if / else / while / for / break / continue
Sterowanie przepływem. for po liście, mapie (klucze rosnąco) i range(a, b).
for v in [1, 2, 3] {
if v == 2 {
continue
}
}
while n < 10 {
n = n + 1
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
for v in [1, 2, 3] {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.if v == 2 {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.continueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.while n < 10 {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.n = n + 1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | warunek Bool |
| Wynik | — |
| Wymagania | — |
| Ograniczenia | limit instrukcji profilu |
| Możliwe błędy | KCS-VM-* |
| Wprowadzono | while/break/continue: 2.0 |
try / catch / throw
Obsługa błędów; catch dostaje String.
try {
db.set("t", 1, "x")
} catch problem {
log.warn(problem)
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
try {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.db.set("t", 1, "x")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.} catch problem {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.log.warn(problem)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | dowolne wyrażenie w throw |
| Wynik | — |
| Wymagania | — |
| Ograniczenia | limity zasobów i anulowanie przez hosta nieprzechwytywalne |
| Możliwe błędy | KCS-VM-*, KCS-PERM-* |
| Wprowadzono | 2.0 |
nullable T? / orElse / unwrap
Wartość opcjonalna. parseInt zwraca Int64?, Map.get zwraca V? (sprawdzone w tej rundzie).
let n = orElse(parseInt("42"), 0)
let m: Map<String, Int> = map()
let v = orElse(m.get("x"), 0)
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
let n = orElse(parseInt("42"), 0)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.let m: Map<String, Int> = map()Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.let v = orElse(m.get("x"), 0)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | — |
| Wynik | T |
| Wymagania | odczyt/arytmetyka na T? wymaga orElse/unwrap |
| Ograniczenia | unwrap(null) → błąd wykonania |
| Możliwe błędy | KCS-KRS-0322, KCS-KRS-0320 |
| Wprowadzono | 1.0 |
class / interface / override / init / super
Klasy z pojedynczym dziedziczeniem, dowolna liczba interfejsów, wywołania wirtualne.
interface Shape {
fn area() -> Int
}
class Rect : Shape {
w: Int
init(w: Int) {
this.w = w
}
fn area() -> Int {
return this.w
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
interface Shape {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.fn area() -> IntSygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.class Rect : Shape {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.w: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.init(w: Int) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.this.w = wOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn area() -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return this.wZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | pola let/var, jeden init |
| Wynik | obiekt: Rect(2) |
| Wymagania | nadpisanie wymaga override |
| Ograniczenia | brak wielokrotnego dziedziczenia klas, metod async, wielu konstruktorów, struct |
| Możliwe błędy | KCS-KRS-1xxx |
| Wprowadzono | 2.0 |
generics
Generyki klas, interfejsów i funkcji z ograniczeniem T: Typ; argumenty typów wnioskowane.
class Pair<A, B> { … }
fn largest<T: Shape>(items: List<T>) -> T { … }
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
class Pair<A, B> { … }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.fn largest<T: Shape>(items: List<T>) -> T { … }Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
| Cecha | Wartość |
|---|---|
| Parametry / typy | parametry typu |
| Wynik | — |
| Wymagania | — |
| Ograniczenia | — |
| Możliwe błędy | KCS-KRS-1xxx |
| Wprowadzono | 2.0 |
event / on / emit / subscribe
Zdarzenia pluginu i handlery; on nazwa(...) -> T z wynikiem = komenda hosta/KretUI.
event order.placed(amount: Int)
on order.placed(amount: Int) {
log.info(toString(amount))
}
emit order.placed(5)
subscribe order.placed with extra
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
event order.placed(amount: Int)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.on order.placed(amount: Int) {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.log.info(toString(amount))Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.emit order.placed(5)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.subscribe order.placed with extraOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
| Cecha | Wartość |
|---|---|
| Parametry / typy | typowane argumenty |
| Wynik | komenda: -> T |
| Wymagania | host dostarcza tylko nazwy z handlers manifestu |
| Ograniczenia | emit nieznanego zdarzenia = błąd |
| Możliwe błędy | KCS-KRS-1028 |
| Wprowadzono | 2.0 |
async / await / Task / Stream
Zadania współbieżne i strumienie z buforem.
async fn slow(ms: Int) -> Int {
await delay(milliseconds(ms))
return ms
}
let s: Stream<Int> = stream(2)
for await v in s { … }
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
async fn slow(ms: Int) -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.await delay(milliseconds(ms))Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.return msZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.let s: Stream<Int> = stream(2)Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.for await v in s { … }Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | — |
| Wynik | Task<T> |
| Wymagania | — |
| Ograniczenia | 1024 zadania/liczniki; jeden wątek; zakleszczenie = błąd |
| Możliwe błędy | KCS-VM-* |
| Wprowadzono | 2.0 |
is / as / Any
Sprawdzenie i rzutowanie typu w czasie wykonania (także obiektów klas).
if shape is Square { … }
let n = value as Int
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
if shape is Square { … }Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.let n = value as IntWiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | — |
| Wynik | Bool / typ docelowy |
| Wymagania | — |
| Ograniczenia | złe rzutowanie → KCS-VM-0006 |
| Możliwe błędy | KCS-VM-0006 |
| Wprowadzono | 2.0 |
log.*
Dziennik pluginu: info warn error debug.
log.info("tekst")
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
log.info("tekst")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
| Cecha | Wartość |
|---|---|
| Parametry / typy | String |
| Wynik | Unit |
| Wymagania | logs.own.write (w Core zablokowane przez D-KCS-01) |
| Ograniczenia | — |
| Możliwe błędy | KCS-KRL-0302, KCS-PERM-* |
| Wprowadzono | 1.0 |
Kret.Hardware (moduł hosta, PROVISIONAL)
Odczyty sensorów przez KCS i dostawcę hosta (Core). Używany przez KretSystemDashboard/KretSensorsViewer. Nieopisany w LANGUAGE_FREEZE_1_0 — G-06 (proponowany status PROVISIONAL).
use Kret.Hardware as hardware
let text = hardware.text("cpu.usage")
let sample = hardware.sample("memory.usage")
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
use Kret.Hardware as hardwareOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.let text = hardware.text("cpu.usage")Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.let sample = hardware.sample("memory.usage")Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | nazwa odczytu (np. memory.usage, cpu.usage) |
| Wynik | text → String, sample → List<String> |
| Wymagania | uprawnienia sensorów (system.ram.read, …) — Production BLOCKED_BY_KCS |
| Ograniczenia | w samym SDK brak dostawcy — odmowa/UNAVAILABLE; starsze SDK → KCS-KRS-1010 |
| Możliwe błędy | KCS-KRS-1010, KCS-PERM-* |
| Wprowadzono | rc.3+kc-base (Core 6.10) |
Źródło i wersja
Zweryfikowany import PUBLIC_CANDIDATE. Identyfikatory źródeł odnoszą się do eksportu i nie dają dostępu do plików serwera.
01_LANGUAGES/KretS/Documentation/SYNTAX_REFERENCE.md
SHA-256 69E6769BF0B8BDE55810B363EE33311E12C1BA0074614E6B25B7F477E4E47FE9Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →