Hi! Pike team.
I hooked Pike's compile_string() and compile_file(), and got a "new" language. I named it "Spear". In Spear, you can embed C code in Pike, and reference the variables each other. see the example:
$ cat hello.spear #! /usr/bin/env spear
void main() { C.INCLUDE("#include <stdio.h>"); C.CC("gcc -shared -fPIC");
string s="pike"; int n=2008; float pi=3.1415926535;
C{ char* str="c string"; int m=514; double e=1.41421;
printf("hello world!\n");
printf("printf %s string\n",STRING{s}); printf("printf pike int: %d\n",INT{n}); printf("printf pike float: %f\n",FLOAT{pi});
P{s="modify";} printf("%s pike var\n",STRING{s});
P{write("write %s\n",STRING{str});} P{write("write c int: %d\n",INT{m});} P{write("write c float: %f\n",FLOAT{e});}
} }
$ pike -x spear hello.spear hello world! printf pike string printf pike int: 2008 printf pike float: 3.141593 modify pike var write c string write c int: 514 write c float: 1.414
How to install:
Extract the attachment in Pike-v7.7-snapshot and make. Please see the README-spear:
$ cat README-spear Install:
tar xzvf snapshot.tar.gz cd Pike-v7.7-snapshot tar xzvf ../Pike-Spear-vN.N.NNNNNNNNN.tar.gz
Note:
* src/Makefile.in is base on Pike-v7.7.44-20080421, do a vimdiff before use with a diffrent version of Pike.