Chinaunix
标题:
有人了解能生成全宇宙最快代码的ragel吗?求指点啊。很急
[打印本页]
作者:
dsy198816
时间:
2016-01-19 09:36
标题:
有人了解能生成全宇宙最快代码的ragel吗?求指点啊。很急
这是个能生成c++ java c的代码生成工具,生成的代码比标准库都快...无赖。。英文不好又没中文资料。。。求指点下 下面是官方给的最简单的例子。。。
atoi c标准库函数 把字符串转换成整数
%%{
machine atoi;
write data;
}%%
long long atoi( char *str )
{
char *p = str, *pe = str + strlen( str );
int cs;
long long val = 0;
bool neg = false;
%%{
action see_neg {
neg = true;
}
action add_digit {
val = val * 10 + (fc - '0');/*我只看懂了这里 没读一位应该循环执行这里一次.但是循环在哪里??其它地方都是什么意思?求高手指教?*/
}
main :=
( '-'@see_neg | '+' )? ( digit @add_digit )+
'\n';
# Initialize and execute.
write init;
write exec;
}%%
if ( neg )
val = -1 * val;
if ( cs < atoi_first_final )
fprintf( stderr, "atoi: there was an error\n" );
return val;
};
作者:
lxyscls
时间:
2016-01-19 10:15
你要写汇编,我觉得应该比它快
作者:
dorodaloo
时间:
2016-01-19 16:49
我大致看了一下,
我也挺奇怪 %% 这一串东西从哪儿来的?
作者:
dsy198816
时间:
2016-01-19 17:54
求熟悉这个的大神指点下啊
作者:
hanxin83
时间:
2016-01-20 11:03
不敢非常确定. 但感觉是一个语法描述文件而已, 根据语法描述文件来生成代码.
全宇宙最快? 呵呵
作者:
gkmail
时间:
2016-01-20 15:43
看说明应该是把基于正则表达式的字符串处理翻译成C语言代码状态机匹配。这样肯定比调用正则表达式库匹配字符串后再做处理效率要高。demo就是匹配一个表示整数的字符串,每匹配一个字符调用一次add_digit。
作者:
gkmail
时间:
2016-01-20 16:17
atoi将一个字符串转化为整数。字符串匹配可以用正则表达式 ( '-' | '+' )? ( digit)+ 表示,@see_neg表示匹配到最前面'-'时的动作,@add_digit表示匹配到一个数字字符时的动作。
作者:
爻易
时间:
2016-01-21 16:06
语言多级化:以人读语言和机器语言为两端,中间的分级越来越多,每层都可以单独优化。
一看 val = -1 * val;
如果这算全宇宙最快,那超光速就更容易实现了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2