首先声明本文是从写编译器的角度来讨论问题的,如果是写其他程序,那么讨论这些问题是很无聊的,与讨论“i+++++i”等于几一样无聊.
1. 字符:我一直认为定义字符常量的单引号中只能有一个字符,可现在却让我发现´abcd´也是合法的,换句话说,其中可以有任意多个字符.不过我真的很怀疑c/c++支持这个有什么实际用处.不错!int a = ´abcd´;相当于:int a = (((int)´a´)<<24)+(((int)´b´)<<16)+(((int)´c´)<<8)+´d´.但这并不等于你能用它来从单个的字符构造整数,因为它是平台相关的!x86上用的很好,可能拿到别的平台上就要莫名其妙的出错误了.而且它在unicode与multibytes下的效果也不同,不信你用下面的代码在vc中分别用unicode与multibytes编译一下就知道了:int a = _t(´ab´); 【程序编程相关:程序备忘录:之五-熟悉数据表(2004/】
最近想把以前写过的一个c语言子集的解释器重新实现一下,让它支持更多的语法,同时更好的理解一下编译原理. 语法分析与语义分析我不敢奢望,但在相对简单的词法分析上,我希望它能达到一个商业编译器的水平.所以也就开始抱着我的vc.net研究起它的语法细节来. 【推荐阅读:读《敏捷建模》是看到的一段文字,深有感触】
... 下一页