A megoldandó probléma:
Adott egy nagyon primitív scriptnyelv. Ez a nyelv magában még egy stringet sem tud kezelni, viszont C++-ból ki tudom terjeszteni új függvényekkel.
Így tudok stringeket kezelni, de a manipulálásuk eléggé nehézkes, mert minden műveletre kell egy C++ függvényt írni, kettőt összefűzni külön kaland stb.
Arra gondoltam, hogy ne kelljen tíz sort gépelni, egy fejlettebb script nyelven leírok egy bizonyos transzformációt, azt átadom a C++ kódnak, ami azt végrehajtja és az eredményt visszadobja valahogy.
Valami ilyenre gondoltam, most pl. Pythonban:
StrPython "'%'.rstrip('.!?')" str
A % helyére a programom behelyettesítené a szöveget, aztán adja át az értelmezőnek (ami most a Python).
Tehát maga a kérdés: milyen nyelv legyen az egész alapja? Van erre valami célnyelv?
Szempontok (kb. fontossági sorrendben):
- Könnyen tanulható, használható (sed kizárva, és igen, tudom, hogy ez a hup.hu :) )
- Gyors (egyébként is erőforrásigényes játékról van szó)
- Rendesen dokumentált
- Legyen elég rendelkezésre álló függvény
- Legyen valamennyire biztonságos
Ami eddig megfordult a fejemben:
Perl: Nem ismerem annyira, de amit olvastam róla, az alapján itt jól jönne.
Python: Vannak benne függvények, meg elvetemülteknek lambda, de a használatához jobban bele kell mélyedni
Tcl: Ezt sem ismerem annyira, de eddig ez látszik a legjobbnak.
Valami javaslat?
- 1303 megtekintés
Hozzászólások
Talán m4 re van szükséged ?
lua -t gyakran használnak hasonló helyeken.
Érdemes megnézni Boost::Spirit -et, vagy, C -vel szokásso flex,bison (lex,yacc) -ot, ha parsolhatnékod van.
- A hozzászóláshoz be kell jelentkezni
m4 nem hiszem, hogy a célnak megfelelő lenne... mondjuk még leginkább Sherman verzió.
Nekem egysorosokra lenne szükségem, amiket triviális megírni.
Lua bonyolultabb dolgokhoz sokat használja a saját table rendszerét, aminek az ismerete nem igazán várható el attól, aki éppen elkezd komolyabban foglalkozni egy kb. C Preprocessor és BASIC között félúton álló scriptnyelvvel.
Eddig még mindig a Tcl vezet, utána a Lua.
De ha az sem jön, be, majd összekombinálok egy parsert meg egy C++ stringkezelő libraryt...
- A hozzászóláshoz be kell jelentkezni
perl++ (eleg hatekony stringkezelo mechanizmusok + regexp.)
- A hozzászóláshoz be kell jelentkezni
Végül elkezdtem Tcl-ben, kösz a javaslatokat. Van benne pár furcsa dolog (pl. az, hogy minden string), de jónak látszik a célra.
- A hozzászóláshoz be kell jelentkezni
Jó a perl, a python, a ruby, a Tcl, a PHP.
Azt válaszd, amelyiket a legjobban ismered.
Két dologot nem értek csak :)
1 miért akarsz új scriptnyelvet írni, amikor bármelyiket használhatod a fentiek közül.
2 ha már új scriptnyelvet írsz, miért akarsz másik scriptnyelvet felhasználni hogy a függvényhívásait kiszolgáld, miért nem c.
Ha nem akarsz vele sokat melózni akkor a saját scriptnyelvben megírt scrptet inkább fordítsd át mondjuk python-ra, és úgy futtasd. Így olyan, mintha külön nyelv lenne, mégis profi és kipróbált cucc van alatta.
- A hozzászóláshoz be kell jelentkezni
Personal favorit: lua. Van hozzá tolua/tolua++/luabind, amikkel fájdalommentes az integráció. (És akkor még a swig-ről nem is beszéltünk.)
- A hozzászóláshoz be kell jelentkezni
A vacak scriptnyelvet nem én írtam, hanem bele van kódolva a programba, ami zárt forrású. Én csak egy mások által reverse engineerelt API-féleséget használok, szóval az marad.
Tcl nem ment, mert a linker ugyan nem panaszkodott, de futáskor amikor Tcl-es függényt hívok, elszáll, szóval gondolom valami nem stimmel, és nem érzem úgy, hogy van egy szabad hetem megtalálni a hibát...
A következő a listán a Lua, ezzel már tettem egy próbát, de a luabind-nek kellett volna Boost részeket fordítani, ami Windows környezetben egy rémálom, szóval jön a toLua++
- A hozzászóláshoz be kell jelentkezni