KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Graf bloków, walidacja i podgląd jako KretS
Przepływ `Flow/Restock.kflow` (format `kretflow-ir/2`, JSON) z szablonu SDK: wyzwalacz, pętla, przypisania, akcja wywołująca funkcję KretS, warunek i koniec. `kret check` sprawdza wyrażenia w blokach kompilatorem KretS, `kret flow to-krets` pokazuje równoważny kod KretS (każdy wiersz oznaczony `// @flow id`), `kret flow blocks` wypisuje katalog bloków (`kretflow-blocks/1`, EXPERIMENTAL).
Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.
Kanoniczne pliki projektu
{
"format": "kretflow-ir/2",
"name": "Restock",
"variables": [
{ "name": "stock", "type": "Int64", "initial": "2" },
{ "name": "ordered", "type": "Int64", "initial": "0" },
{ "name": "cost", "type": "Int64", "initial": "0" },
{ "name": "note", "type": "String", "initial": "\"\"" }
],
"nodes": [
{ "id": "start", "kind": "trigger", "event": "stock.low", "position": { "x": 40, "y": 40 } },
{ "id": "enough", "kind": "loop", "expression": "stock < 10", "position": { "x": 200, "y": 40 } },
{ "id": "order", "kind": "assign", "variable": "ordered", "expression": "ordered + 4", "position": { "x": 360, "y": 0 } },
{ "id": "deliver", "kind": "assign", "variable": "stock", "expression": "stock + 4", "position": { "x": 520, "y": 0 } },
{ "id": "price", "kind": "action", "variable": "cost", "call": "Orders.price", "arguments": ["ordered"], "position": { "x": 360, "y": 120 } },
{ "id": "large", "kind": "condition", "expression": "cost > 100", "position": { "x": 520, "y": 120 } },
{ "id": "big", "kind": "assign", "variable": "note", "expression": "\"duże zamówienie\"", "position": { "x": 680, "y": 80 } },
{ "id": "small", "kind": "assign", "variable": "note", "expression": "\"zwykłe zamówienie\"", "position": { "x": 680, "y": 160 } },
{ "id": "say", "kind": "action", "call": "log.info", "arguments": ["note + \": \" + toString(ordered) + \" szt.\""], "position": { "x": 840, "y": 120 } },
{ "id": "done", "kind": "end", "expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)", "position": { "x": 1000, "y": 120 } }
],
"edges": [
{ "from": "start", "port": "next", "to": "enough" },
{ "from": "enough", "port": "body", "to": "order" },
{ "from": "order", "port": "next", "to": "deliver" },
{ "from": "deliver", "port": "next", "to": "enough" },
{ "from": "enough", "port": "done", "to": "price" },
{ "from": "price", "port": "next", "to": "large" },
{ "from": "large", "port": "true", "to": "big" },
{ "from": "large", "port": "false", "to": "small" },
{ "from": "big", "port": "next", "to": "say" },
{ "from": "small", "port": "next", "to": "say" },
{ "from": "say", "port": "next", "to": "done" }
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kretflow-ir/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Restock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variables": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{ "name": "stock", "type": "Int64", "initial": "2" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "name": "ordered", "type": "Int64", "initial": "0" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "name": "cost", "type": "Int64", "initial": "0" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "name": "note", "type": "String", "initial": "\"\"" }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."nodes": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{ "id": "start", "kind": "trigger", "event": "stock.low", "position": { "x": 40, "y": 40 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "enough", "kind": "loop", "expression": "stock < 10", "position": { "x": 200, "y": 40 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "order", "kind": "assign", "variable": "ordered", "expression": "ordered + 4", "position": { "x": 360, "y": 0 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "deliver", "kind": "assign", "variable": "stock", "expression": "stock + 4", "position": { "x": 520, "y": 0 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "price", "kind": "action", "variable": "cost", "call": "Orders.price", "arguments": ["ordered"], "position": { "x": 360, "y": 120 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "large", "kind": "condition", "expression": "cost > 100", "position": { "x": 520, "y": 120 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "big", "kind": "assign", "variable": "note", "expression": "\"duże zamówienie\"", "position": { "x": 680, "y": 80 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "small", "kind": "assign", "variable": "note", "expression": "\"zwykłe zamówienie\"", "position": { "x": 680, "y": 160 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "say", "kind": "action", "call": "log.info", "arguments": ["note + \": \" + toString(ordered) + \" szt.\""], "position": { "x": 840, "y": 120 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "id": "done", "kind": "end", "expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)", "position": { "x": 1000, "y": 120 } }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."edges": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{ "from": "start", "port": "next", "to": "enough" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "enough", "port": "body", "to": "order" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "order", "port": "next", "to": "deliver" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "deliver", "port": "next", "to": "enough" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "enough", "port": "done", "to": "price" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "price", "port": "next", "to": "large" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "large", "port": "true", "to": "big" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "large", "port": "false", "to": "small" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "big", "port": "next", "to": "say" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "small", "port": "next", "to": "say" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{ "from": "say", "port": "next", "to": "done" }Odczytaj 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.
Wynik i typowy błąd
Projekt jest poprawny; wynik `to-krets` jest identyczny z `Flow/Restock.krs` z szablonu; katalog bloków ma format `kretflow-blocks/1`.
Szukanie osobnego silnika przepływów: nie istnieje. Przepływ jest obniżany do KretS i wykonywany przez tę samą maszynę.
Wymagania wersji i procedura lokalna
- sdk
- 1.0.0-rc.3+kret.local.3
- sdkInfoReports
- 1.0.0-rc.3
- core
- 1.0.0-test.6.11-draft.1
- os
- Windows 11 x64
- dotnet
- .NET 10 runtime
Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.
- check
kret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0 - to-krets
kret flow to-krets Flow/Restock.kflowKatalog: project · Oczekiwany kod wyjścia: 0 - blocks
kret flow blocksKatalog: project · Oczekiwany kod wyjścia: 0
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETFLOW-B01-GraphCheckToKretS
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:28Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.
### 1. check (exit 0, PASS)
> kret check . --json
{
"format": "kret-diagnostics/1",
"project": "<project>",
"succeeded": true,
"plugin": {
"id": "LOCAL-KPL-FLB2GRPH",
"name": "GraphCheckToKretS",
"version": "1.0.0",
"profile": "standard",
"database": false
},
"permissions": {
"required": [
"logs.own.write"
],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": []
}
### 2. to-krets (exit 0, PASS)
> kret flow to-krets Flow/Restock.kflow
module Restock
fn Run() -> String {
var error: String = ""
var stock: Int64 = 2
var ordered: Int64 = 0
var cost: Int64 = 0
var note: String = ""
// @trigger stock.low // @flow start
while stock < 10 { // @flow enough
ordered = ordered + 4 // @flow order
stock = stock + 4 // @flow deliver
}
cost = Orders.price(ordered) // @flow price
if cost > 100 { // @flow large
note = "duże zamówienie" // @flow big
} else {
note = "zwykłe zamówienie" // @flow small
}
log.info(note + ": " + toString(ordered) + " szt.") // @flow say
return note + ", sztuk: " + toString(ordered) + ", koszt: " + toString(cost) // @flow done
}
### 3. blocks (exit 0, PASS)
> kret flow blocks
{
"format": "kretflow-blocks/1",
"documentFormat": "kretflow-ir/2",
"variableTypes": [
"Bool",
"Int64",
"Float64",
"String"
],
"reservedNames": [
"flowState",
"flowData",
"flowStart",
"flowResult",
"error"
],
"maxNodes": 1000,
"blocks": [
{
"kind": "trigger",
"label": "Wyzwalacz",
"description": "Początek przepływu: zdarzenie, które go uruchamia (dokładnie jeden w przepływie).",
"fields": [
{
"name": "event",
"type": "event",
"required": true,
"label": "Zdarzenie"
}
],
"ports": [
"next"
]
},
{
"kind": "assign",
"label": "Przypisanie",
"description": "Nadaje zmiennej wartość wyrażenia KretS.",
"fields": [
{
"name": "variable",
"type": "variable",
"required": true,
"label": "Zmienna"
},
{
"name": "expression",
"type": "expression",
"required": true,
"label": "Wyrażenie"
}
],
"ports": [
"next"
]
},
{
"kind": "action",
"label": "Akcja",
"description": "Wywołuje funkcję KretS (funkcja albo Moduł.funkcja); wynik może trafić do zmiennej. Port „error” obsługuje błąd.",
"fields": [
{
"name": "call",
"type": "call",
"required": true,
"label": "Funkcja"
},
{
"name": "arguments",
"type": "arguments",
"required": false,
"label": "Argumenty (wyrażenia)"
},
{
"name": "variable",
"type": "variable",
"required": false,
"label": "Wynik do zmiennej"
}
],
"ports": [
"next",
"error"
]
},
{
"kind": "condition",
"label": "Warunek",
"description": "Rozgałęzienie według warunku KretS.",
"fields": [
{
"name": "expression",
"type": "expression",
"required": true,
"label": "Warunek"
}
],
"ports": [
"true",
"false"
]
},
{
"kind": "loop",
"label": "Pętla",
"description": "Powtarza gałąź „body”, dopóki warunek jest prawdziwy; potem „done”.",
"fields": [
{
"name": "expression",
"type": "expression",
"required": true,
"label": "Warunek"
}
],
"ports": [
"body",
"done"
]
},
{
"kind": "delay",
"label": "Opóźnienie",
"description": "Czeka podany czas (0 ms – 24 h).",
"fields": [
{
"name": "durationMs",
"type": "durationMs",
"required": true,
"label": "Czas [ms]"
}
],
"ports": [
"next"
]
},
{
"kind": "checkpoint",
"label": "Punkt kontrolny",
"description": "Zapisuje stan przepływu pod nazwą.",
"fields": [
{
"name": "name",
"type": "name",
"required": true,
"label": "Nazwa"
}
],
"ports": [
"next"
]
},
{
"kind": "code",
"label": "Kod KretS",
"description": "Instrukcje KretS bez odpowiednika blokowego (zachowane bez zmian).",
"fields": [
{
"name": "source",
"type": "source",
"required": true,
"label": "Kod"
}
],
"ports": [
"next"
]
},
{
"kind": "end",
"label": "Koniec",
"description": "Kończy przepływ; opcjonalne wyrażenie jest jego wynikiem.",
"fields": [
{
"name": "expression",
"type": "expression",
"required": false,
"label": "Wynik"
}
],
"ports": []
}
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETFLOW-B01-GraphCheckToKretSOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:28Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-FLB2GRPH",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "GraphCheckToKretS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logs.own.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 2. to-krets (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret flow to-krets Flow/Restock.kflowOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.module RestockDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.fn Run() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.var error: String = ""Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.var stock: Int64 = 2Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.var ordered: Int64 = 0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.var cost: Int64 = 0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.var note: String = ""Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.// @trigger stock.low // @flow startKomentarz autora; nie jest wykonywany.while stock < 10 { // @flow enoughSterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.ordered = ordered + 4 // @flow orderOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.stock = stock + 4 // @flow deliverOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.cost = Orders.price(ordered) // @flow priceOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.if cost > 100 { // @flow largeSterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.note = "duże zamówienie" // @flow bigOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.} else {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.note = "zwykłe zamówienie" // @flow smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.log.info(note + ": " + toString(ordered) + " szt.") // @flow sayOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.return note + ", sztuk: " + toString(ordered) + ", koszt: " + toString(cost) // @flow doneZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 3. blocks (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret flow blocksOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kretflow-blocks/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."documentFormat": "kretflow-ir/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variableTypes": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."Bool",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."Int64",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."Float64",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."String"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."reservedNames": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."flowState",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."flowData",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."flowStart",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."flowResult",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."error"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."maxNodes": 1000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."blocks": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "trigger",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Wyzwalacz",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Początek przepływu: zdarzenie, które go uruchamia (dokładnie jeden w przepływie).",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "event",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "event",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Zdarzenie"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."next"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Przypisanie",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Nadaje zmiennej wartość wyrażenia KretS.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Zmienna"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Wyrażenie"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."next"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "action",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Akcja",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Wywołuje funkcję KretS (funkcja albo Moduł.funkcja); wynik może trafić do zmiennej. Port „error” obsługuje błąd.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "call",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "call",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Funkcja"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "arguments",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "arguments",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Argumenty (wyrażenia)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Wynik do zmiennej"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."next",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."error"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "condition",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Warunek",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Rozgałęzienie według warunku KretS.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Warunek"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."true",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."false"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "loop",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Pętla",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Powtarza gałąź „body”, dopóki warunek jest prawdziwy; potem „done”.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Warunek"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."body",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."done"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "delay",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Opóźnienie",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Czeka podany czas (0 ms – 24 h).",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "durationMs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "durationMs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Czas [ms]"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."next"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "checkpoint",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Punkt kontrolny",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Zapisuje stan przepływu pod nazwą.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "name",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "name",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Nazwa"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."next"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "code",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Kod KretS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Instrukcje KretS bez odpowiednika blokowego (zachowane bez zmian).",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "source",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "source",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Kod"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."next"Odczytaj 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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kind": "end",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Koniec",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."description": "Kończy przepływ; opcjonalne wyrażenie jest jego wynikiem.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."label": "Wynik"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."ports": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów
null
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Graf KretFlow — dane źródłowe
{
"format": "kretflow-ir/2",
"name": "Restock",
"variables": [
{
"name": "stock",
"type": "Int64",
"initial": "2"
},
{
"name": "ordered",
"type": "Int64",
"initial": "0"
},
{
"name": "cost",
"type": "Int64",
"initial": "0"
},
{
"name": "note",
"type": "String",
"initial": "\"\""
}
],
"nodes": [
{
"id": "start",
"kind": "trigger",
"event": "stock.low",
"position": {
"x": 40,
"y": 40
}
},
{
"id": "enough",
"kind": "loop",
"expression": "stock < 10",
"position": {
"x": 200,
"y": 40
}
},
{
"id": "order",
"kind": "assign",
"variable": "ordered",
"expression": "ordered + 4",
"position": {
"x": 360,
"y": 0
}
},
{
"id": "deliver",
"kind": "assign",
"variable": "stock",
"expression": "stock + 4",
"position": {
"x": 520,
"y": 0
}
},
{
"id": "price",
"kind": "action",
"variable": "cost",
"call": "Orders.price",
"arguments": [
"ordered"
],
"position": {
"x": 360,
"y": 120
}
},
{
"id": "large",
"kind": "condition",
"expression": "cost > 100",
"position": {
"x": 520,
"y": 120
}
},
{
"id": "big",
"kind": "assign",
"variable": "note",
"expression": "\"duże zamówienie\"",
"position": {
"x": 680,
"y": 80
}
},
{
"id": "small",
"kind": "assign",
"variable": "note",
"expression": "\"zwykłe zamówienie\"",
"position": {
"x": 680,
"y": 160
}
},
{
"id": "say",
"kind": "action",
"call": "log.info",
"arguments": [
"note + \": \" + toString(ordered) + \" szt.\""
],
"position": {
"x": 840,
"y": 120
}
},
{
"id": "done",
"kind": "end",
"expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)",
"position": {
"x": 1000,
"y": 120
}
}
],
"edges": [
{
"from": "start",
"port": "next",
"to": "enough"
},
{
"from": "enough",
"port": "body",
"to": "order"
},
{
"from": "order",
"port": "next",
"to": "deliver"
},
{
"from": "deliver",
"port": "next",
"to": "enough"
},
{
"from": "enough",
"port": "done",
"to": "price"
},
{
"from": "price",
"port": "next",
"to": "large"
},
{
"from": "large",
"port": "true",
"to": "big"
},
{
"from": "large",
"port": "false",
"to": "small"
},
{
"from": "big",
"port": "next",
"to": "say"
},
{
"from": "small",
"port": "next",
"to": "say"
},
{
"from": "say",
"port": "next",
"to": "done"
}
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kretflow-ir/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Restock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variables": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "stock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."initial": "2"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "ordered",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."initial": "0"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "cost",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."initial": "0"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."name": "note",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."initial": "\"\""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."nodes": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "trigger",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."event": "stock.low",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 40,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 40Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "enough",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "loop",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."expression": "stock < 10",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 200,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 40Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "order",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variable": "ordered",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."expression": "ordered + 4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 360,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "deliver",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variable": "stock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."expression": "stock + 4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "price",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "action",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variable": "cost",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."call": "Orders.price",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."arguments": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ordered"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 360,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "large",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "condition",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."expression": "cost > 100",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "big",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variable": "note",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."expression": "\"duże zamówienie\"",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 80Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "small",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."variable": "note",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."expression": "\"zwykłe zamówienie\"",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 160Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "say",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "action",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."call": "log.info",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."arguments": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."note + \": \" + toString(ordered) + \" szt.\""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.],Zamknięcie struktury otwartej we wcześniejszych liniach."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 840,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "done",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kind": "end",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."x": 1000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."edges": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "enough"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "enough",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "body",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "order"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "order",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "deliver"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "deliver",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "enough"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "enough",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "done",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "price"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "price",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "large"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "large",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "true",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "big"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "large",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "false",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "small"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "big",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "say"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "small",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "say"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."from": "say",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."to": "done"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Pochodzenie i integralność
KRET_LANGUAGE_KRETFLOW.zip:KretFlow/Examples/BASIC_GraphCheckToKretS/example.json
02_PLAYGROUND/EXAMPLES/KRETFLOW-B01-GraphCheckToKretS.json
SHA-256 A14911C1B4956E6EFE5C0F4427AA583EFA8ABDF2E924E62AF4F0DD89A3A3B64FMateriały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KRETFLOW-B01-GraphCheckToKretS — Graf bloków, walidacja i podgląd jako KretS
KRETFLOW-B01-GraphCheckToKretS — Graf bloków, walidacja i podgląd jako KretS
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretFlow |
| Poziom | BASIC |
| Klasyfikacja | VALIDATION_ONLY — Tylko walidacja (bez wykonania) |
| Playground | PUBLIC_STATIC — publicznie: tylko podgląd kodu i gotowe wyniki |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt |
Co pokazuje
Przepływ Flow/Restock.kflow (format kretflow-ir/2, JSON) z szablonu SDK: wyzwalacz, pętla, przypisania, akcja wywołująca funkcję KretS, warunek i koniec. kret check sprawdza wyrażenia w blokach kompilatorem KretS, kret flow to-krets pokazuje równoważny kod KretS (każdy wiersz oznaczony // @flow id), kret flow blocks wypisuje katalog bloków (kretflow-blocks/1, EXPERIMENTAL).
Pliki
| Plik |
|---|
Flow/Restock.kflow |
Flow/Restock.krs |
Script/Main.krs |
Script/Orders.krs |
host-policy.json |
plugin.kretl |
Jak uruchomić
Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.
kret check . --json— walidacja przepływu razem z projektemkret flow to-krets Flow/Restock.kflow— graf → KretSkret flow blocks— katalog bloków
Oczekiwany wynik
Projekt jest poprawny; wynik to-krets jest identyczny z Flow/Restock.krs z szablonu; katalog bloków ma format kretflow-blocks/1.
Najczęstszy błąd
Szukanie osobnego silnika przepływów: nie istnieje. Przepływ jest obniżany do KretS i wykonywany przez tę samą maszynę.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →