- 博客(17)
- 收藏
- 关注
原创 4. ANTLR语法细节
文章目录1. 注释、命名规范、保留字2. 文件结构3. 通用规则4. 语法规则5. 词法规则6. 嵌入动作、属性等1. 注释、命名规范、保留字注释:支持单行、多行、Javadoc风格的注释。Javadoc风格注释只能出现在语法和任意规则的开头。标识符:词法符号和词法规则名以大写字母开头,语法规则以小写字母开头。后面的字符可以是大小写字符、数字、下划线。文件命名:文件第一行命名语法名字X,包含语法X的文件必须被命名为X.g4文本常量:ANTLR不区分字符常量和字符串常量,所有文本常量都是由单引号括
2020-07-16 22:00:27
739
原创 3. Antlr 语法纲要
文章目录1. 使用ANTLR语法识别常见语言模式1.1 序列模式1.2 选择模式(多个备选分支)1.3 词法符号依赖模式1.4 嵌套模式2. 优先级、左递归、结合性的处理3. 识别常见的词法结构4. 小结1. 使用ANTLR语法识别常见语言模式对于一门计算机语言的语法,有4种基本的抽象语言模式:序列:即一列元素选择:在多种可选方案中作出选择词法符号依赖:一个词法符号需要和某处的另外一个词法符号配对,例如左右括号匹配。嵌套结构:一种自相似的语言结构接下来就介绍一下Antlr如何表达这些模式
2020-07-05 23:41:06
1017
原创 2. Antlr 的快速使用
文章目录1. Antlr 的安装2. IDEA 上Antlr插件的使用3. 使用Antlr工具生成的文件4. Antlr 使用案例4.1 使用步骤4.2 将生成的语法分析器与JAVA程序集成4.3 使用监听器操纵输入的数据5. 小结1. Antlr 的安装Step1: 下载 Antlr jar包antlr-4.0-complete.jarStep2: 将jar包添加至classPathexport CLASSPATH=".:/usr/local/lib/antlr-4.0-complete.ja
2020-07-04 21:52:31
1562
原创 正则表达式
1. 语法1.1 元字符字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如: \n 匹配一个换行符^匹配输入字符串的开始位置$匹配输入字符串的结束位置*匹配前面的子表达式零次或多次。例如 zo*能匹配 z 以及 zoo+匹配前面的子表达式一次或多次。例如 zo*能匹配 zo 以及 zoo,不能匹配 z?匹配前面的兹表示零次或一次。例如 do(es)?可以匹配 do 或 does{n}n是
2020-07-04 19:16:12
176
原创 1. Antlr 初识
1. 引言什么是 Antlr? Another Tool For Language Recognition.Antlr是一个可以识别语言的工具,可以用来声明语言的语法,简称为元语言。怎样能识别语言?这就好比我们读一个句子,首先我们会自然而然地将句子自动分隔成一个一个词,然后再根据句子一般是由 主语 + 谓语 + 宾语 组成, 另外可能会有一些形容词等等修饰 这样的组成规则 来理解句子的意思。所以首先我们需要有一个词法规则将一个个字符聚集为单词或者符号,然后需要有约束语言中的各个组成部分之间关系的规
2020-06-18 23:35:30
529
原创 1. Hive版本迭代
2.3.x版本对应Hadoop 2.x.y版本2.3.0 (2017.07.17)从 HiveServer2 中移除没必要的 HMS(HiveMetaStore) 连接。(例如运行一个hql,如果有多个task就会开启多个HMS connection,但是如果这些task开启了parallel,那么有些 HMS connection 是没有必要的)分区 distinct 函数支持 ...
2020-05-01 19:06:05
372
原创 Scala编译后的class文件反编译的结果
1. class和object中参数的编译class中变量的反编译结果val 和 private val 修饰的成员变量被编译成 private final, 并提供gettervar 和 private var 修饰的成员变量被编译成 private, 并提供getter和setter没有修饰词修饰的和private[this]不会被编译成成员变量,但构造函数会带上class中非构造...
2020-04-12 20:03:02
2156
原创 IDEA 中.scala文件没有被编译
在 pom.xml中添加如下内容 <properties> <scala.version>2.12.7</scala.version> </properties> <dependencies> <dependency> <groupId&g...
2020-04-12 19:26:14
1024
原创 6. Scala中的apply、update、unapply、unapplySeq
1. applyapply方法经常被用在伴生对象中,用来构造对象而不用显式地使用new。例如以下用 Student("zs", 11, "beijing")构造对象。2. update在class中创建,在object中创建无用。作用如下:val arr = Array(1, 3, 4)arr(2) = 5 // 相当于调用了 arr.update(2, 5)println(arr....
2020-04-06 16:57:13
249
原创 4. Scala中的集合
文章目录1.2. 列表2.1 列表的声明2.2 列表的基本操作第 16、17、22、24、25 章1.2. 列表2.1 列表的声明注意点:同一个列表的所有元素都必须是相同的类型Scala的列表类型是协变的,对每一组类型S和T,如果S是T的子类型,那么List[S]就是List[T]的子类型空列表的类型为List[Nothing]。在类继承关系中,Nothing是底类型,所以对于任...
2020-04-06 07:56:55
111
原创 3. Scala类和对象
文章目录1. Scala中的Class1.1 class的声明1.2 类中的属性1.3 类中的方法2. Scala中的object2.1 object中的类和方法2.2 伴生对象2.3 APP特质1. Scala中的Class1.1 class的声明与Java中类的不同点在scala中定义的class都是public的,不用声明为public。类中的成员变量不加其他修饰符的情况下也是默认...
2020-04-06 07:56:25
256
原创 2. Scala中的方法和函数
Scala编译器并不会推断函数参数的类型函数定义的基本形式def 函数名(参数列表):函数结果类型 = {函数体}函数结果类型不一定非要给出,在有些情况下可以自动推断,但是部分情况例如递归则必须显示地给出函数的结果类型。如果函数只有一条语句,也可以不使用花括号。scala为什么用圆括号来访问数组?数组不过是类的实例,这跟其他Scala实例没有本质区别当用一组圆括号将一个或多个值包起来,并...
2020-04-06 07:56:02
179
原创 5. Scala中的match、模式匹配、样例类
1. matchScala中的match表达式可以让你用任意的模式来选择,缺省的样例以下划线(_) 来表示。样例可以是任何常量、字符串等,每个可选项的最后不需要加上break(Scala中break是隐含的,不会出现某个可选项执行完继续执行下一个可选项的情况)。match表达式可以返回值。2. 模式匹配模式匹配应用场合:switch语句、类型查询、以及析构(获取复杂表达式中的不同部分)。2...
2020-04-06 07:55:26
370
原创 1. Scala变量声明、数据类型、运算符、流程控制
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。1. 变量声明Scala的变量分为两种:val和var。val跟Java的final变量类似,一旦初始化就不能被重新赋值。var可以被重新赋值。变量声明时,可指定类型,也可不用指定类型(此时会自动推断类型) // val声明变量 val str01:String = "...
2020-04-05 17:55:37
147
原创 pom.xml文件详解
文章目录1. pom文件的基本构成(1) classifier属性(2) 打包方式1. pom文件的基本构成<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XM...
2019-12-16 08:07:00
319
原创 算法题1:二维数组查找数
1. 题目在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2. 解答 /* * 思路1:遍历每一行,二分查找是否属于这一行 */ public static boolean find01(int[][] arr, int target) {...
2019-10-19 18:09:52
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人