gcc编译通过 写了个比较简单的 调用指令 fmt 输入文件 输出文件 附带了程序的一些文档
[此贴子已经被作者于2005-7-30 17:21:59编辑过]
----------------解决方案--------------------------------------------------------
顶!
----------------解决方案--------------------------------------------------------
我也写过一个: http://www.156ok.com/article/article_list.asp?account_id=772
----------------解决方案--------------------------------------------------------
kaikai大哥的比我简短多了,真是挺好的
可惜有一些不足的地方,当你美化如
if(..)
a=1;
这种句子会出现严重的错误
[此贴子已经被作者于2005-7-30 21:25:44编辑过]
----------------解决方案--------------------------------------------------------
呵呵,我那幼稚的代码呀,快追随我改变你的命运吧!一道闪电...那个链接顿时化为灰飞了。楼下的人应该都不再能看到那个链接了吧:)
----------------解决方案--------------------------------------------------------
贴个算法简介吧:
算法思路: 我们定义一个名词――“一次性缩进”,比如while()后面跟一个句子,那只有这个句子是缩进的,所以有“一次性”的说法。 我们这样来定义一个句子:一般意义上的句子或者{....}这种形式,显然所有的缩进都可以用一次性缩进来克服――扫描到while等关键字,一次性缩进值加一,扫描到一般语句后,一次性缩进值清零。(每行的输出缩进值在扫描该行之前已经读入到输出端) 当然我们要给出计算机能处理的形式,定义一个栈(mid中),它的每个元素包括了一个一次性缩进值和这一层次的静态缩进值(总缩进=静态缩进+一次性缩进),扫描到“{”的时候栈层次加一,并且这个新层次的静态缩进值就是上一个层次的总缩进值,扫描到"}"退栈。这样可以解决{....}句子的“一次性缩进”问题 基本思路就是上面,其他的一些细节考虑还包括(else和if配对(一次性缩进的一个漏洞)),"{"和"}"的缩进问题(与上一个句子对齐)。
我们来看一下一次性缩进算法的两个例子: 对于while() if() ...; ...; 读入while,一次性缩进值加1, 下一行缩进值传输给输出端, 输出本行(缩进为0) 扫描第2行,if(),一次性缩进值加1, 下一行缩进值传输给输出端, 输出第二行(缩进为1) 描第3行,一般句子,一次性缩进值清零 下一行缩进值传输给输出端, 输出第3行(缩进为2); 扫描第4行,一般句子,一次性缩进值清零 输出第4行(缩进为0) 对于if()...; ...; 扫描第一行,if,一次性缩进值加1, 第一行继续扫描,读到一般句子,一次性缩进值清零 下一行缩进值传输给输出端, 扫描第二行 输出(缩进为0)
[此贴子已经被作者于2005-7-31 12:07:39编辑过]
----------------解决方案--------------------------------------------------------