Skip to content

Commit

Permalink
重写中
Browse files Browse the repository at this point in the history
  • Loading branch information
zaoqi committed Aug 13, 2018
1 parent 7cf6fc6 commit f14c6bf
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
12 changes: 9 additions & 3 deletions example-lambda.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
#include "module<"
define_public_lambda_withTypeOfBody(add(var(int, x), var(int, y)) __ int)(
x+y;
)
define_public_lambda_withTypeOfBody(add(var(x, int), var(y, int)) __ int)(
x+y;)
define_public_withTypeOfBody_lambda(int add2(int x, var(y, int)))(
x+y;)
define_public_inline_withTypeOfBody_lambda(int add3(int x, int y))(
x+y;)
define_private_inline_lambda_s_withTypeOfBody(add4 __ var(x, int), var(y, int)__ int)(
make_void();
add3(x,y);)
#include ">module"
10 changes: 5 additions & 5 deletions make.c
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ LANG_define => 全局定義
/* 例 lambda_s(int, int x)(x+y;) */\
/* 例 lambda_s_withTypeOfBody(int, int x __ int)(x+y;) */\
/* 例 lambda_withTypeOfBody((int, int x) __ int)(x+y;) */\
/* 例 withTypeOfBody_lambda(int __ (int, int x))(x+y;) */\
/* 例 withTypeOfBody_lambda(int __(int, int x))(x+y;) */\
DEFINE(X(LANG_prefix"lambda_error"),Call1(X(TOOLS_prefix"error"),String( \
"lambda_s requires C++11 or later," \
"lambda_s_withTypeOfBody, withTypeOfBody_lambda and lambda_withTypeOfBody requires GCC or C++11 or later" \
Expand Down Expand Up @@ -398,10 +398,10 @@ LANG_define => 全局定義
DEFINE_FUNCTION(X(LANG_prefix"hELPEr_define_lambda_withTypeOfBody"),X("prefix,iderargs,ret"), \
X("prefix ret iderargs ") \
X(LANG_prefix"hELPEr_define_lambda_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"hELPEr_declare_withTypeOfBody_lambda"),X("prefix,ret,iderargs"), \
X("prefix ret iderargs;")) \
DEFINE_FUNCTION(X(LANG_prefix"hELPEr_define_withTypeOfBody_lambda"),X("prefix,ret,iderargs"), \
X("prefix ret iderargs ") \
DEFINE_FUNCTION(X(LANG_prefix"hELPEr_declare_withTypeOfBody_lambda"),X("prefix,retiderargs"), \
X("prefix retiderargs;")) \
DEFINE_FUNCTION(X(LANG_prefix"hELPEr_define_withTypeOfBody_lambda"),X("prefix,retiderargs"), \
X("prefix retiderargs ") \
X(LANG_prefix"hELPEr_define_lambda_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"hELPEr_define_lambda_hELPEr"),X("x"),X("{return ({x});}")) \
\
Expand Down
4 changes: 2 additions & 2 deletions module<
Original file line number Diff line number Diff line change
Expand Up @@ -398,8 +398,8 @@ typedef intptr_t exprOrientedC_LANG_int_pointer;
#define exprOrientedC_LANG_hELPEr_define_lambda_s_withTypeOfBody(prefix,ider,...) prefix exprOrientedC_TOOLS_last(__VA_ARGS__) ider(exprOrientedC_TOOLS_init(__VA_ARGS__))exprOrientedC_LANG_hELPEr_define_lambda_hELPEr
#define exprOrientedC_LANG_hELPEr_declare_lambda_withTypeOfBody(prefix,iderargs,ret) prefix ret iderargs;
#define exprOrientedC_LANG_hELPEr_define_lambda_withTypeOfBody(prefix,iderargs,ret) prefix ret iderargs exprOrientedC_LANG_hELPEr_define_lambda_hELPEr
#define exprOrientedC_LANG_hELPEr_declare_withTypeOfBody_lambda(prefix,ret,iderargs) prefix ret iderargs;
#define exprOrientedC_LANG_hELPEr_define_withTypeOfBody_lambda(prefix,ret,iderargs) prefix ret iderargs exprOrientedC_LANG_hELPEr_define_lambda_hELPEr
#define exprOrientedC_LANG_hELPEr_declare_withTypeOfBody_lambda(prefix,retiderargs) prefix retiderargs;
#define exprOrientedC_LANG_hELPEr_define_withTypeOfBody_lambda(prefix,retiderargs) prefix retiderargs exprOrientedC_LANG_hELPEr_define_lambda_hELPEr
#define exprOrientedC_LANG_hELPEr_define_lambda_hELPEr(x) {return ({x});}
#define declare_public exprOrientedC_LANG_declare_public
#define exprOrientedC_LANG_declare_public(typename) extern typename;
Expand Down

0 comments on commit f14c6bf

Please sign in to comment.