Discussion:
[Lisp] Smidigt sätt att skapa Javascriptkod från CL?
Tommy Hallgren
2013-07-27 12:47:51 UTC
Permalink
Hej!

Har funderat på om det finns ett riktigt bra sätt att skapa strängar innehållande t.ex. Javascriptkod utifrån en datastruktur? Tänkte leka med att översätta nåt i stil med:
'(function theName (arg1 arg2)
(+ arg1 arg2))

till strängen:
"function theName(arg1, arg2) { return arg1 + arg2; }"

Det blir lätt (format )-galore, men det kanske är ett bra sätt trots allt?
Mvh, Tommy
Linus Ericsson
2013-07-27 14:00:03 UTC
Permalink
infixnotationen Àr en av dina fiender hÀr.

clojurescript har löst det genom att wrappa infixoperationer i vanliga
funktioner (typ "PLUS") och sedan skapa en inte fullt så förfÀrlig algebra
utifrån dem, och förlita sig på att googles closurekompilator optimerar
ihop koden till något hanterbart för olika js-implementationer.

annan lisp->c-syntax hÀnder vÀl i gcl, som verkar koda till gcc, vet ej om
det sker med AST eller till faktisk, om Àn lite otymplig C-kod.

rörande syntaxen vore det vÀl najsare om ett subset av CL gick att skriva
ut som javascript, snarare Àn ett templatinglib, men det Àr kanske att
övergöra det.

/Linus
Hej!
Har funderat på om det finns ett riktigt bra sÀtt att skapa strÀngar
innehållande t.ex. Javascriptkod utifrån en datastruktur? TÀnkte leka med
'(function theName (arg1 arg2)
(+ arg1 arg2))
"function theName(arg1, arg2) { return arg1 + arg2; }"
Det blir lÀtt (format )-galore, men det kanske Àr ett bra sÀtt trots allt?
Mvh, Tommy
_______________________________________________
Lisp mailing list
http://mailman.nocrew.org/cgi-bin/mailman/listinfo/lisp
Lars Brinkhoff
2013-07-27 18:03:19 UTC
Permalink
Post by Tommy Hallgren
Har funderat på om det finns ett riktigt bra sätt att skapa strängar
innehållande t.ex. Javascriptkod utifrån en datastruktur?
Du kanske kan använda något från denna artikel?
Post by Tommy Hallgren
"Using the New Common Lisp Pretty Printer"
As an example, it shows how the pretty printer can be used to print a
subset of Lisp as Pascal
http://www.merl.com/publications/docs/TR93-17.pdf

Annars tror jag detta är ett trevligt sätt att generera JavaScript.
http://common-lisp.net/project/parenscript/
Johan Lindberg
2013-07-29 17:26:14 UTC
Permalink
Post by Tommy Hallgren
Har funderat på om det finns ett riktigt bra sätt att skapa strängar
innehållande t.ex. Javascriptkod utifrån en datastruktur? Tänkte leka med
'(function theName (arg1 arg2)
(+ arg1 arg2))
"function theName(arg1, arg2) { return arg1 + arg2; }"
Det blir lätt (format )-galore, men det kanske är ett bra sätt trots allt?
Mvh, Tommy
Om jag förstår ditt exempel rätt så vill du applicera JavaScript-kunskap på
datastrukturen för att producera strängen? Du borde kunna, t ex ladda
respektive intressant symbol med en funktion som expanderar till
Javascript-kod när man traverserar den men det är nog en del jobb att reda
ut för att få till "läsbar" Javascript.

Lite beroende på vad du ska använda din CL->JS transformer till och med
risk för att jag missupfattat syftet så skulle jag föreslå att du tittar på
JSCL.

Se: http://davazp.net/jscl/jscl.html och https://github.com/davazp/jscl

Det är en CL till JavaScript-kompilator och borde åtminstone kunna ge lite
tips och inspiration om inte annat.

Mvh
Johan Lindberg
***@pulp.se

Loading...