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 fb129a6 commit 7001c48
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
8 changes: 7 additions & 1 deletion make.c
Original file line number Diff line number Diff line change
Expand Up @@ -328,8 +328,10 @@ 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;) */\
DEFINE(X(LANG_prefix"lambda_error"),Call1(X(TOOLS_prefix"error"),String( \
"lambda_s requires C++11 or later, lambda_s_withTypeOfBody requires GCC or C++11 or later" \
"lambda_s requires C++11 or later," \
"lambda_s_withTypeOfBody, withTypeOfBody_lambda and lambda_withTypeOfBody requires GCC or C++11 or later" \
))) \
LANG_EXPORT("__") DEFINE(X(LANG_prefix"__"),X(",")) \
LANG_EXPORT("lambda_s") \
Expand All @@ -340,6 +342,7 @@ LANG_define => 全局定義
X("[&](")Call1(X(TOOLS_prefix"init"),X("__VA_ARGS__"))X(")->") \
Call1(X(TOOLS_prefix"last"),X("__VA_ARGS__"))X(" "LANG_prefix"lambda_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody"),X("args,ret"),X("[&](args)->ret "LANG_prefix"lambda_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"withTypeOfBody_lambda"),X("ret,args"),X("[&](args)->ret "LANG_prefix"lambda_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"lambda_hELPEr"),X("x"),X("{return ({x});}")) \
ELSE \
DEFINE_FUNCTION(X(LANG_prefix"lambda_s"),X("..."),X(LANG_prefix"lambda_error")) \
Expand All @@ -349,11 +352,14 @@ LANG_define => 全局定義
Call1(X(TOOLS_prefix"init"),X("__VA_ARGS__"))X(")"LANG_prefix"lambda_withTypeOfBody_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody"),X("args,ret"), \
X("({ret "LANG_prefix"lambda_withTypeOfBody_tEMp(args)"LANG_prefix"lambda_withTypeOfBody_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"withTypeOfBody_lambda"),X("ret,args"), \
X("({ret "LANG_prefix"lambda_withTypeOfBody_tEMp(args)"LANG_prefix"lambda_withTypeOfBody_hELPEr")) \
DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody_hELPEr"),X("x"), \
X("{return ({x});}"LANG_prefix"lambda_withTypeOfBody_tEMp;})")) \
ELSE \
DEFINE_FUNCTION(X(LANG_prefix"lambda_s_withTypeOfBody"),X("..."),X(LANG_prefix"lambda_error")) \
DEFINE_FUNCTION(X(LANG_prefix"lambda_withTypeOfBody"),X("..."),X(LANG_prefix"lambda_error")) \
DEFINE_FUNCTION(X(LANG_prefix"withTypeOfBody_lambda"),X("..."),X(LANG_prefix"lambda_error")) \
ENDIF \
ENDIF \
\
Expand Down
5 changes: 4 additions & 1 deletion module<
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ typedef intptr_t exprOrientedC_LANG_int_pointer;
#define exprOrientedC_LANG_let_current_continuation_notFirstClass_hELPEr(body) exprOrientedC_LANG_tEMp_letcc_notVal_val=({body});exprOrientedC_LANG_tEMp_letcc_return:exprOrientedC_LANG_tEMp_letcc_notVal_val;})
#define continuation_notFirstClass_throw exprOrientedC_LANG_continuation_notFirstClass_throw
#define exprOrientedC_LANG_continuation_notFirstClass_throw(ider,x,type) ({exprOrientedC_LANG_tEMp_letcc_notVal_val_##ider=x;goto exprOrientedC_LANG_tEMp_letcc_throw_##ider;type tEMp;tEMp;})
#define exprOrientedC_LANG_lambda_error exprOrientedC_TOOLS_error("lambda_s requires C++11 or later, lambda_s_withTypeOfBody requires GCC or C++11 or later")
#define exprOrientedC_LANG_lambda_error exprOrientedC_TOOLS_error("lambda_s requires C++11 or later,lambda_s_withTypeOfBody, withTypeOfBody_lambda and lambda_withTypeOfBody requires GCC or C++11 or later")
#define __ exprOrientedC_LANG___
#define exprOrientedC_LANG___ ,
#define lambda_s exprOrientedC_LANG_lambda_s
Expand All @@ -363,16 +363,19 @@ typedef intptr_t exprOrientedC_LANG_int_pointer;
#define exprOrientedC_LANG_lambda_s(...) [&](__VA_ARGS__) exprOrientedC_LANG_lambda_hELPEr
#define exprOrientedC_LANG_lambda_s_withTypeOfBody(...) [&](exprOrientedC_TOOLS_init(__VA_ARGS__))->exprOrientedC_TOOLS_last(__VA_ARGS__) exprOrientedC_LANG_lambda_hELPEr
#define exprOrientedC_LANG_lambda_withTypeOfBody(args,ret) [&](args)->ret exprOrientedC_LANG_lambda_hELPEr
#define exprOrientedC_LANG_withTypeOfBody_lambda(ret,args) [&](args)->ret exprOrientedC_LANG_lambda_hELPEr
#define exprOrientedC_LANG_lambda_hELPEr(x) {return ({x});}
#else
#define exprOrientedC_LANG_lambda_s(...) exprOrientedC_LANG_lambda_error
#if defined(__GNUC__)
#define exprOrientedC_LANG_lambda_s_withTypeOfBody(...) ({exprOrientedC_TOOLS_last(__VA_ARGS__) exprOrientedC_LANG_lambda_withTypeOfBody_tEMp(exprOrientedC_TOOLS_init(__VA_ARGS__))exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr
#define exprOrientedC_LANG_lambda_withTypeOfBody(args,ret) ({ret exprOrientedC_LANG_lambda_withTypeOfBody_tEMp(args)exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr
#define exprOrientedC_LANG_withTypeOfBody_lambda(ret,args) ({ret exprOrientedC_LANG_lambda_withTypeOfBody_tEMp(args)exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr
#define exprOrientedC_LANG_lambda_withTypeOfBody_hELPEr(x) {return ({x});}exprOrientedC_LANG_lambda_withTypeOfBody_tEMp;})
#else
#define exprOrientedC_LANG_lambda_s_withTypeOfBody(...) exprOrientedC_LANG_lambda_error
#define exprOrientedC_LANG_lambda_withTypeOfBody(...) exprOrientedC_LANG_lambda_error
#define exprOrientedC_LANG_withTypeOfBody_lambda(...) exprOrientedC_LANG_lambda_error
#endif
#endif
#define var exprOrientedC_LANG_var
Expand Down

0 comments on commit 7001c48

Please sign in to comment.