语法

编译原理-词法分析器,语法分析器-课程设计

為{幸葍}努か 提交于 2019-12-20 00:27:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这是偶然翻出来的一段大学时的代码——词法分析器又称扫描器。词法分析是指将我们编写的文本代码流解析为一个一个的记号,分析得到的记号以供后续语法分析使用。词法分析器的工作是低级别的分析:将字符或者字符序列转化成记号.。在谈论词法分析时,我们使用术语“词法记号”(简称记号)、“模式”和“词法单元”表示特定的含义。 在分析时,一是把词法分析器当成语法分析的一部分,另一种是把词法分析器当成编译程序的独立部分。在前一种情况下,词法分析器不断地被语法分析器调用,每调用一次词法分析器将从源程序的字符序列拼出一个单词,并将其Token值返回给语法分析器。后一种情况则不同,词法分析器不是被语法分析器不断地调用,而是一次扫描全部单词完成编译器的独立一遍任务。 词法分析器主要特点是不依靠语法,而只依靠词法,即处理一个单词时不依赖于外部单词的信息,因此词法分析器一般都很简单。当然,对某些语言在作词法分析时,在有些情况下不得不往前查看多个字符,有时还要做一些特殊处理,还有一些在词法分析中处理不了的,要留到语法分析中进行处理。 本算法主要利用状态转换图生成一个词法分析器,对输入的程序进行词法分析,并将分析得到的单词造表。其中关键字表和界限符表的大小是由高级语言的子集决定的,可以用数组装载

EditPlus支持SQL突出显示,Shane版,市面最佳

两盒软妹~` 提交于 2019-12-10 07:14:17
最近要编写一批存储过程,文本编辑器使用 EditPlus3 。EditPlus 本身主打文本编辑、HTML + PHP 编辑,至 2012 年中还没有提供官方对 SQL 文件的语法高亮显示支持,需要自己编写语法高亮显示文件。市面上能找到很多资料,我看了接近十份明面上来源、时间各不一样的资料,全部都是来自一个叫 KK 之人制作的高亮显示文件。此文件没有区分各种关键字的不同,而且竟然将双引号认定为字符串包括符。于是我重写了一份 sql.stx 文件,改善了发现的上述问题。   此文件后边附上内容,文件本身的下载页面地址为: http://download.csdn.net/detail/shanelooli/4565071   拿到文件之后,将文件放在一个确定的位置,不要放在桌面这些临时位置。然后在 EditPlus 的菜单栏选择 工具(T) -> 配置用户工具(C)...   点击之后会出现如下界面:   选择左边“类别”中的 文件 -> 设置&语法 ,点击右边“添加”按钮。类型名称用 SQL ,还需要填写扩展名和语法文件。其中扩展名就写 sql ,不要加点;语法文件通过 ... 按钮选中即可。点击确定,然后最好能重启 EditPlus 。   如此,EditPlus 对 SQL 的语法识别即刻生效。 附:sql.stx #TITLE=SQL ; SQL syntax file

谈谈Java的try..catch...

匆匆过客 提交于 2019-12-05 04:16:39
我们在写Java的try..catch的时候,往往需要在最后加上finally子句关闭一些IO资源,比如 InputStream is; try{ is=openInputStream(); // do something }catch(IOException e){ e.printStaceTrace(e); }finally{ try{ is.close(); }catch(IOException e ){ } } 但是在使用这种模式时,即使是Java老手,偶尔也会犯一些错误。比如上面这段代码,当openInputStream()函数在执行过程中抛出异常,那么变量is的值仍为null,此时执行is.close()会抛出NullPointerException. 由于NullPoiterException不是IOException的子类,因此它不能被catch块捕获,而是直接往调用层抛出去. 一种改进的写法就是在关闭流的时候先进行非空判断,但这样代码会显得很啰嗦。个人认为比较优雅的写法是直接调用commons-io包提供的IOUtils.closeQuitely()方法关闭流(或者自己封装一个closeQuitely()方法)。 使用这种写法还有一种好处,就是当遇到关闭多个IO资源时不容易出错,比如下面这段代码: InputStream is; OutputStream os ;

mysql "ON DUPLICATE KEY UPDATE" 语法

前提是你 提交于 2019-12-03 21:23:54
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。 例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE TABLE SET c=c+1 WHERE a=1; 如果行作为新记录被插入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2。 这个语法还可以这样用: 如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列): 1.INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=c+1; 执行后, c 的值会变为 4 (第二条与第一条重复, c 在原值上+1). 2.INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=VALUES(c); 执行后, c 的值会变为 7 (第二条与第一条重复, c

mysql on duplicate update 语法

送分小仙女□ 提交于 2019-12-01 09:34:47
mysql "ON DUPLICATE KEY UPDATE" 语法 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。 例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: 复制代码 代码如下: INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE TABLE SET c=c+1 WHERE a=1; 如果行作为新记录被插入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2。 这个语法还可以这样用: 如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列): 复制代码 代码如下: INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=c+1; 执行后, c 的值会变为 4 (第二条与第一条重复, c 在原值上+1). 复制代码 代码如下: INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON

学习笔记之T-SQL插入数据INSERT语法和数据库编程实战技巧[图]

北慕城南 提交于 2019-11-29 17:53:44
一直以来就有写博客的习惯,记录一下学习心得、生活点滴等等,感觉也蛮好的,去年开始萌生了建立一个读书和文学博客的想法,于是就开始实施了,中途也遇到不少难题,不过还好,都逐渐解决了,虽然我在技术方面有欠缺,但好在有同学们帮忙。 今天想和大家分享的学习笔记是:关于sql server数据库操作insert语法的相关技术,数据库是我们学习建站最重要的一个难题,也是非常关键的,因此必须学好。 INSERT INTO 语句: INSERT INTO 语句用于向表格中插入新的行。 语法: INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) SQL 语句: INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing') SQL 语句: INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees') 以上是语法和一些案例,下面我们来仔细分析一下,INSERT INTO是向哪个表来插入数据的意思,后面就是表名称,然后是分别列出向哪些字段(列)中插入书籍

博客SQL-Server更新数据库UPDATE语法读书笔记[图]

我的未来我决定 提交于 2019-11-28 17:42:50
最近在研究博客网站,其实在很多年以前,博客是非常流行的,那时候互联网还处于发展的初级阶段,尤其是在中国地区,因此出现了国内-国外两大博客系统,分别是zblog和wordpress程序,当然了,很显然是国外的博客最先被开发出来,而且在插件、主题等方面,都是wordpress比较先进,另外要说明一点不同,zblog最开始采用的asp脚本语言,而wordpress采用的php脚本语言,对于我来说,最开始根本不懂php,因此也是用zblog建站,到了后来,互联网发展逐渐成熟,各种语言的博客程序就铺天盖地,但总体来说,个人独立博客建站,还是这两种。 下面来总结一下关于博客SQL-Server UPDATE更新数据库语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 举例1:我们为 lastname 是 "Wilson" 的人添加 firstname: UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' 举例2:更新某一行中的若干列: 我们会修改地址(address),并添加城市名称(city): UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'