Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Programovací jazyk FPL

FPL je vlastní programovací jazyk a kompiler inspirovaný Lispem. Kompilace funguje jako transpilace do C. Zdaleka není hotový a překladač vyžaduje C kompiler.

Název jazyka je akronymem Function Processing Language. S názvem nejsem zcela spokojen, takže budu rád za návrhy.

FPL vs. Lisp

Jak název napovídá, původně jsem vycházel z Lispu. Konečný výsledek je však rozdílný.

Syntaxe

Kód s veškerými syntaktickými jevy:

main {
 puts "Hello World!" #komentář
 (na více
 řádcích)
 some_func "string",$c #argumenty jsou dva výrazy (interpretované jako příkazový list) oddělené ARG_SEPARATOR
 math_func 1,0x0,1F,1D,var0 + var1 #funkce var0 s argumentem kterým je identifikátor +, který považuje za svůj argument var1
 some_class:getInstanceSize # CLASS_SELECTOR jako argument způsobí volání statické metody getInstanceSize
 some_instance getObjectSize
}

Podrobný rozbor syntaxe

Začněme komentáři. Jednořádkový komentář začíná hashtagem (#). Víceřádkový je vymezen jednoduchými závorkami (). Syntakticky se kód stejně jako v Lispu dělí na listy a atomy.

Identifikátor je nepřerušený řetězec znaků, který zároveň nesplňuje požadavky pro jiný druh atomu.

Znakový literál je stejně jako u Smalltalku ve formátu $znak.

Číslice jsou řešeny stejně jako v ostatních jazycích. Ovšem aby byl literál interpretován jako byte nebo short, musí číslice končit B nebo S. Koncové znaky (i ty i long a float) musí být velkým písmenem.

Textové řetězce jsou stejné jako v ostatních jazycích.

Posledním jsou takzvané speciální atomy. Jedná se o:

  • ; (v kódu veden jako END_ARGS),
  • , (ARG_SEPARATOR) a
  • : (CLASS_SELECTOR).

V jazyce jsou dva druhy listů:

  • příkazový, který je vymezen začátkem a koncem řádku.
  • Druhým typem je blokový, který je "překvapivě" vymezen složenými závorkami.

Není-li zpracován jinak, je každý identifikátor a literál považován za funkci. To zahrnuje true, false, nil i proměnné. Funkce může veškerý kód, který po ní následuje v příkazovém listu, považovat za své argumenty. To umožňuje sestavit většinu jazyka z funkcí.

Překlad

Zdrojový kód se v současnosti překládá do C a poté do spustitelného souboru. Argumenty pro překladač v souboru .jar jsou:

java -jar FPL.jar <sestavací soubor>

příklad sestavovacího souboru (build.properties):

outputFile = FPLC.exe
cc = C:\\TDM-GCC-64\\bin\\gcc -w
mainModule = compiler.main

Tento soubor se musí nacházet ve složce projektu, kde je zároveň složka src/, ve které je zdrojový kód. Argument -w vypne u GCC varování, jinak by dost spamoval. Použití jiného kompileru může vyžadovat změny ve standardní knihovně jazyka.

V současné době je pro přidání standardní knihovny potřeba rozbalit soubor std.zip (viz. příloha) ve zdrojové složce projektu.


Galerie

Program byl vytvořen v roce 2020.

 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 7x (71.98 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

 

Všechny články v sekci
Kompilace manuálně v Javě
Program pro vás napsal Richard H.
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Autor se věnuje programování v Javě
Aktivity