2010-01-14 5 views
9

Je veux écrire C dans des expressions-s et utiliser des macros de compilation. Est-ce que quelqu'un sait de quoi que ce soit qui fait cela? Il devrait se traduire par les s-expressions dans la norme C.Écrire C comme expressions-s

+3

Pourquoi? ............ –

+0

Pourriez-vous donner un exemple des expressions s dans lesquelles vous voulez que le code soit? Vatine a donné un exemple, mais vous avez dit que ce n'était pas tout à fait ce que vous vouliez. Si le format n'a pas d'importance, pourriez-vous expliquer pourquoi vous voulez l'écrire comme s-expressions? –

+0

Répondre

7
+0

Le lien scexp ne fonctionne plus. Utilisez http://super.para.media.kyoto-u.ac.jp/~tasuku/sc/index.html – whoplisp

+0

francogrex sur #lisp vous conseille d'utiliser http://www.isi.edu/isd/LOOM/Stella/ – whoplisp

+0

Le lien vers kyoto-u.ac.jp n'est pas le même que le projet scexp (il génère aussi C et est assez gros). Ceci est un lien vers scexp: http://tenkan.org/~tim/scexp-0.9.tar.gz – whoplisp

2

Comment voulez-vous dire? Quelque chose du genre:

 
(c-expression 
    (int main ((int argc) ((array (pointer char)) argv) 
    (block 
     (printf "%d arguments\n" argc) 
     (if (argc >= 1) 
     (printf "The first arg is %s\n" (ref argv 1))) 
     (return 0)))) 
=> 
"int main (int argc, char *argv[]) 
{ 
    printf("%d arguments\n", argc); 
    if (argc >= 1) 
    printf(The first arg is %s\n", argv[1]); 
    return 0; 
} 

Si c'est le cas, oui, c'est certainement faisable. Cependant, ce n'est pas entièrement trivial.

+0

Un peu comme ça. Bien que je ne pense pas que la version s-expression ressemblerait à certaines des choses que vous avez faites là-bas. –

2

Peut-être que vous voulez quelque chose comme ECL, qui compile Common Lisp à C.

0

Jetez un coup d'oeil au SC de Tasuku Hiraishi. Ses papiers de conférence internationale Lisp de 2005 et 2007 sont archivés à archive.org. Voir son source repo, en particulier le examples. À ma connaissance, il s'agit de la meilleure des nombreuses tentatives visant à apporter des pratiques de codage de style S-Expression à un projet C autrement vanille.