分类目录归档:我的代码

Basic解释器-语法分析基本框架建好了

傍晚思考了一下,为了加快开发时间,还是采用简单的Basic语法好了!

在Basic基础上进行小小修改,让其可以作游戏脚本使用。

本来以为今天能实现语法分析,结果忙到夜深只实现了一半!

表达式运算和语法树的构建只能到明天再继续了。给一个今晚进度的截图:

 

脚本解释器-词法分析写好了

为了给一个小游戏加一些剧情上去,就写了一个地图编辑器。现在地图编辑器OK了, 就差一个脚本解释器了。

今天想了一天如何写一个脚本解释器,我需要什么样的语法,按照什么流程来解释脚本,如何和游戏程序交互等。鉴于我还没有认真学习过编译原理,所以只能靠自己思考整套模型了。

 

花了一个晚上,才写了200多行代码,完成了一个词法分析器。语法分析部分留到明天网上再继续了,明天的作业还没做好呢。。。

 

怎么编写博客的文章预览程序

如题,想到一种方法,使用堆栈。

每遇到一个html标签,就压栈,当遇到它的关闭标签时,就出栈(当然,直到找到对应的关闭标签)。

不过,这就存在一个问题,如果是代码规范是html4而不是xhtml,则会遇到<br>
、<img>这类没有关闭标签的标签。早知道这样,当时博客代码就应该用xhtml来写。不过要改的话,很多文章都需要转换,还是算了。所以打消使用这种方法的念头。因为html天生具有较强的容错性,少了关闭标签,解释器自动会帮你补全,所以不用担心这个问题。

继续阅读

String Reverse in C++

今夜帮沛公改了个C++程序,反转输出一个句子。觉得他写的程序过于麻烦,既使用了string又使用了char数组。
于是下了下面的程序:

#include iostream
#include cstring
int main()
{
char s[10000];
gets(s);
for(char*p; p=strrchr(s,’ ‘); *p=’\0’)
std::cout–(p+1)–” “;
std::cout–s–std::endl;
return 0;
}

但沛公喜欢简洁一点,就简化一下,如下:
#include
int main(char*p, char s[10000])
{
for(gets(s); p=strrchr(s,’ ‘); *p=’\0’)
std::cout–(p+1)–” “;
std::cout–s–std::endl;
}

(*^__^*) 嘻嘻…… 还可以试试非主流C++ , 如下:


好神奇啊~~

编译器真聪明,而且速度蛮快的。那么添加多几个是不是会变得慢呢?
复制多一些,看看情况。。。

这回无语了,编译了5分钟,结果还是内存达到2GB耗尽而终结。