很多时候,我们需要在 cmd 启动时,设置一些环境,比如编译环境,这样就可以直接打开 cmd 编译文件了。
发现只要写出 BNF 式,用 LL1 的自上向下分析法很轻易的就解决问题。
语法分析器完成的功能:... 语法树的变化:... 源代码的实现:...
By: Lars Marius Garshol 原文参见:http://www.garshol.priv.no/download/text/bnf.html (本文是上述作者文章的翻译,原文版权归作者所有) (译者:Sunnybill) BNF 和EBNF的含义与用法 1 简介 关于本文 什么是BNF? 工作原理 基本原理 一个实例 EBNF及其用途 一个EBNF语法实例 BNF和EBNF的使用 一般用法 如何使用形式语法 解析 最简单的方法 自上而下的解析(LL) 一个LL分析实例 一个LL转换实例 稍难的方法 自底而上的解析(LR) LL还是LR? 更多信息 附录 致谢
符号表是一个编译器工作的核心部分,从收集到整理再到通过它生成最终文件。
最近看 UCC 的代码,研究下编译器的工作原理。大学时候的编译原理知识也忘得差不多了,本来当初就学的不好。现在拿一个实例来研究下吧。
电脑硬盘格式化,东西都没有了。上网上找emacs,赫然发现,emacs 23 已经有 release 版本了,这下可以气定神闲的用了。Gnu官网写着发布日期是 2009年 7 月 29 号,刚刚发布没多长时间
1. 使用Mutex内核对象
bool IsHaveAnotherProcess() { HANDLE hMutex = CreateMutex( NULL, FALSE, "ProcessA" ); if ( GetLastError() == ERROR_ALREADY_EXISTS ) { CloseHandle( hMutex ); AfxMessageBox( "程序已经启动" ); return false; } return true; }
先用 CreateMutex 来创建一个具名互斥量,若是创建成功返回一个互斥量对象的句柄; 反之,函数返回这个已经存在的互斥量的句柄,并 GetLastError() 返回错误代码 ERROR_ALREADY_EXISTS。
事实上,这是利用了windows内核对象的知识。命名的内核对象属于全局可访问的,唯一的,当创建一个命名的内核对象时 ( Create* ),系统会先检查内核里是否有这个对象,有则返回这个对象的句柄,无则创建一个。
第二个参数设成 : HWND_NOTOPMOST , 就可以取消前端显示了
在Windows XP 下安装 Grub4Dos 开机总是提示 缺少 hal.dll 文件,可能是文件丢失。 貌似是没有将 glrdr.mbr 考到C盘,以前只是将 glrdr 和 gurb.exe 考过去。 哎,才发现原来是把 grldr 写成了glrdr.郁闷中。。。。 备记一下硬盘安装 Ubuntu 的过程