compiler

Jsoup代码解读之四-parser(上)

走远了吗. 提交于 2019-12-12 21:02:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性。这部分也是Jsoup最复杂的部分,需要一些数据结构、状态机乃至编译器的知识。好在HTML语法不复杂,解析只是到DOM树为止,所以作为编译器入门倒是挺合适的。这一块不要指望囫囵吞枣,我们还是泡一杯咖啡,细细品味其中的奥妙吧。 基础知识 编译器 将计算机语言转化为另一种计算机语言(通常是更底层的语言,例如机器码、汇编、或者JVM字节码)的过程就叫做编译(compile)。编译器(Compiler)是计算机科学的一个重要领域,已经有很多年历史了,而最近各种通用语言层出不穷,加上跨语言编译的兴起、DSL概念的流行,都让编译器变成了一个很时髦的东西。 编译器领域相关有三本公认的经典书籍,龙书 《Compilers: Principles, Techniques, and Tools 》 ,虎书 《Modern Compiler Implementation in X (X表示各种语言)》 ,鲸书 《Advanced Compiler Design and Implementation》 。其中龙书是编译理论方面公认的不二之选,而后面两本则对实践更有指导意义。另外 @装配脑袋 有个很好的编译器入门系列博客: http://www

Jsoup代码解读之六-parser(下)

风流意气都作罢 提交于 2019-12-12 21:02:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近生活上有点忙,女儿老是半夜不睡,精神状态也不是很好。工作上的事情也谈不上顺心,有很多想法但是没有几个被认可,有些事情也不是说代码写得好就行的。算了,还是端正态度,毕竟资历尚浅,我还是继续我的。 读Jsoup源码并非无聊,目的其实是为了将webmagic做的更好一点,毕竟parser也是爬虫的重要组成部分之一。读了代码后,收获也不少,对HTML的知识也更进一步了。 DOM树产生过程 这里单独将 TreeBuilder 部分抽出来叫做语法分析过程可能稍微不妥,其实就是根据Token生成DOM树的过程,不过我还是沿用这个编译器里的称呼了。 TreeBuilder 同样是一个facade对象,真正进行语法解析的是以下一段代码: <!-- lang: java --> protected void runParser() { while (true) { Token token = tokeniser.read(); process(token); if (token.type == Token.TokenType.EOF) break; } } TreeBuilder 有两个子类, HtmlTreeBuilder 和 XmlTreeBuilder 。 XmlTreeBuilder 自然是构建XML树的类

compiler LLVM(zhuanzai)

隐身守侯 提交于 2019-12-10 15:49:23
Mac OS X 10.6即所谓的Snow Leopard操作系统已正式发售。一如既往,Apple产品光鲜的外表下凝聚了太多艰辛的劳作。ArsTechnic的John Siracusa以其独特的、专业的、全面的视角深入翔实地体验这款最新的操作系统。 Weiphone.com将对该综述进行翻译整理并独家连载。欢迎关注。 引用 译注:为了 帮助您更加顺畅地理解本文的内容,这里补充了文中一些相关概念的背景资料。 编译器(compiler) : 是一种能够将源代码(通常由高级别的程序语言编写而成)转换为低级别机器语言的程序。源码转换最重要的一个目的在于创建可执行文件。 详情请参考 wikipedia 。 LLVM(Low Level Virtual Machine,低级虚拟机) :是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编 译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持 开放,并兼容已有脚本。LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持开展。2006年Chris Lattner加盟Apple Inc

android ant Compile failed; see the compiler error

99封情书 提交于 2019-11-30 04:04:16
android ant 打包遇到 Compile failed; see the compiler error output for details. 1.把jdk换成jdk1.7 就能看到中文的错误信息,不然有的地方是乱码都看不懂。。。 2.如果遇到 错误: 非法字符: \65279( 在eclipse 中修改提示有非法字符的java文件的编码为:ISO-8859-1 就 看到java文件的开头有些乱码 ,删除即可 .修改完之后,把文件的编码改回utf-8 保存)其他问题就看错误信息修改吧 没错误了 用ant打包即可 来源: oschina 链接: https://my.oschina.net/u/267558/blog/209034