
FORTH - jak uložit program?
Tuší někdo, jak v jazyce FORTH uložit odladěné slovo, nebo ještě lépe všechna slova, do souboru, abych mohl příště pokračovat, kde jsem teď skončil?
Tuší někdo, jak v jazyce FORTH uložit odladěné slovo, nebo ještě lépe všechna slova, do souboru, abych mohl příště pokračovat, kde jsem teď skončil?
Zpět do poradny Odpovědět na původní otázku Nahoru
A není to spíš věc prostředí, ve kterém program píšeš než věc vlastního programovacího jazyka?
Tak je to interaktivní jazyk takže píšu jednotlivé příkazy a rovnou je můžu spouštět (viz příklad dole, tlustě odpovídá gforth ), ale konkrétně mi jde gforth
2 3 4 + * .
14 ok
: soucin 2 3 4 + * . ;
ok
soucin
14 ok
To pises na webu v prohlizeci nebo kam?
To, jestli se jazyk interpretuje okamzite zalezi na programovacim prostredi, ne na jazyku
Spustím xterm, ten má jako shell bash, takže se mi ukáže prompt bashe.
Napíšu gforth a enter, tím se spustí gforth a čeká na příkazy stejně jako předtím bash. (čili programovací prostředí je gforth, stejně jako těsně předtím to byl bash)
Napíšu nějaká slova a po stisknutí entru se provedou (třeba napíšu číslo a enter, tak se vloží na zásobník, nebo nějakou operaci jako sčítání, násobení ... tak ze zásobníku načte argumenty a výsledek vrátí na zásobník, nebo nějaké jiné slovo, například tečku a ta mi sebere a vypíše vrchní hodnotu ze zásobníku)
Napíšu slovo dvojtečka, pak název nového slova pak slova, ze kterých se má skládat, pak středník a mám nadefinované (naprogramované) nové slovo.
Samozřejmě bych mohl pustit gforth se jménem souboru a on by pak ten soubor načetl při startu a provedl, ale pořád to neřeší interaktivní práci/ladění a následné uložení
Problém je, jak tato nová slova nějak rozumně uložit do souboru, abych je příště nemusel psát znovu, ale jenom načetl ten soubor a tím se provedly. (a mezitím bych je mohl učesat nějakým textovým editorem, okomentovat a tak).
---
Samozřejmě bych mohl psát předem všechno do souboru, pak to jen v gforth načíst a zkusit, kde jsou chyby, vyskočit, opravit to v tom souboru, znova spustit gforth, znova načíst a zkusit, kde jsou chyby atd atd, ale doufám, že existuje nějaký elegantnější způsob. V basicu to bylo LOAD a SAVE, v bashi například
nebo
(a pak odmazat proměnné v editoru).
V gforth nevím jak.
Forth neznám, ale podle dokumentace by to mohlo být tohle:
http://gforth.org/manual/gforthmi.html#gforthmi
Díky, vyzkouším to, ale obávám se, že tím dostanu až něco "přeloženého" a ne zdrojový text - no uvidím až to zkusím
Asi bude nejlepsi se podivat do manualu pouzivaneho FORTHu. Klasicky FORTH nezna vubec soubory a nepouziva zadny souborovy system, takze slova jako BLOCK a FLUSH ti asi k nicemu nebudou.
ten manuál, co jsem našel obsahuje mraky slov a jejich hlavičky, ale nějak už tam moc není, jak to skloubit dohromady.
A tutoriály bohužel jsou (aspoň co jsem našel) ve stylu napište tohle (bezchybný příklad) a udělá to tohle (nějaký výsledek), vidíte a už umíte vytvářet vlastní slova! Ale už tam není to "a pak to uložte takhle a takhle opravujte chyby".
Nebo jsou o nějakých věcech natolik složitých, že tomu zatím nerozumím, a tak nějak se předpokládá, že když už člověk řeší tohle, tak základy prostě umí a netřeba je zmiňovat.
Takže mi zatím nezbývá, než se nějak svépomocí probít tou mezerou mezi těmito dvěma úrovněmi.
(Ale jak našel níž čítateľ, tak nějaká cesta je a mám zase chvíli co zkoumat)
Hádam by to aj šlo:
https://stackoverflow.com/questions/48859741/forth-writing-to-a-forth-disk
https://stackoverflow.com/questions/57000366/how-save-program-words-in-gforth
Jo, díky. To vypadá sice kostrbatě, ale použitelně. (Ono se všude píše, jak je Forth interaktivní, ale kdyby výsledek nešel nějak uložit (teda aspoň na systémech, kde ukládat jde), tak by to bylo dost na houby)
Když navíc na začátku dám něco jako
tak se mi všechna nová slova uloží do slovníku a půjdou vytáhnout přez WORDS a zobrazit přez SEE a protože ten editor je taky ve forthu, tak zkusím dát dohromady nějaké slovo, co vytáhne všechna nová slova a do toho editoru je našťouchá.
No a jak to jednou bude venku v texťáku, tak už si to můžu upravit jak chci. Případně dotahat z historie komenty a celé to pak uložit jako normální *.fs skript, který snadno načtu (to ten blok taky, ale ten se blbě edituje/udržuje)