ANTLR 相关术语
下面介绍很多重要的与语言识别相关的术语。
语言(Language
)
A language is a set of
valid sentences
一门语言是一个有效语句的集合。Sentences are composed of
phrases
, which are composed of subphrases, and so on
语句由词组组成,词组由子词组组成,子词组又由更小的子词组组成,依此类推。
语法(Grammar
)
A grammar formally defines the
syntax rules
of a language
语法定义了语言的语义规则。Each rule in a grammar expresses the
structure
of a subphrase
语法中的每条规则定义了一种词组结构。
语义树或语法分析树(Syntax tree/parse tree
)
This represents the structure of the sentence where each subtree root gives an abstract name to the elements beneath it.
代表了语句的结构,其中每个子树的根节点都使用一个抽象的名字给其包含的元素命名。The
subtree roots
correspond togrammar rule
names.
子树的根节点对应了语法规则的名字。The
leaves
of the tree are symbols ortokens
s of the sentence.
树的叶子节点是语句中的符号或者词汇。
词法符号(Token
)
A token is a
vocabulary symbol
in a language;
词法符号就是一门语言的基本词汇符号these can represent a category of symbols such as "identifier" or can represent s single operator or keyword.
它们可以代表像是“标识符”这样的一类符号,也可以代表一个单一的运算符,或者代表一个关键字。
词法分析器或者分词器(Lexer or tokenizer
)
This breaks up an
input character stream
intotokens
;
分词器将输入的字符序列分解成一系列词汇。A lexer performs lexical analysis.
词法分析器执行词法分析。
语法分析器(Parser
)
A parser checks sentences for membership in a specific language by checking the sentence's structure against the rules of a grammar.
语法分析器通过检查语句的结构是否符合语法规则的定义来验证该语句在特定语言中是否合法。ANTLR generates top-down parsers called
ALL(*)
that canuse all remaining input symbols to make decisions
.
ANTLR
能够生成被称为ALL(*)
的自顶向下的语法分析器,ALL(*)
是指它可以利用剩余的所有输入文本来进行决策。Top-down parser are
goal-oriented
and start matching at the rule associated with the coarsest, such as program or inputFile.
自顶向下的语法分析器以结果为导向,首先匹配最粗粒度的规则,这样的规则通常命名为program
或者inputFile
。
递归下降的语法分析器(Recursive-descent parser
)
- This is a specific kind of top-down parser implemented with
a function
foreach rule
in the grammar.
这是自顶向下的语法分析器的一种实现,每条规则都对应语法分析器中的一个函数。
前向预测(Lookahead
)
- Parsers use lookahead to
make decisions
by comparing the symbols that begin each alternatives.
语法分析器使用前向预测来进行决策,具体方法是将输入的符号与每个备选分支的起始符号进行比较。
ANTLR 相关术语的更多相关文章
- NUI相关术语
分享一下微软资深企业架构师.应用开发专家余涛先生书中所谈到的相关术语,以便查阅,部分术语根据个人理解加入了细化内容: 1.波束形成算法(BeamformingAlgorithm) 基于现行阵列的阵列信 ...
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入
1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...
- 前端入门7-JavaScript语法之相关术语
声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...
- Spring的AOP开发的相关术语
转载自 https://www.cnblogs.com/ltfxy/p/9873618.html SpringAOP简介: AOP思想最早是由AOP联盟组织提出的.Spring使用这种思想最好的框架. ...
- IdentityServer4 中文文档 -2- (简介)相关术语
IdentityServer4 中文文档 -2- (简介)相关术语 原文:http://docs.identityserver.io/en/release/intro/terminology.html ...
- Spring框架学习05——AOP相关术语详解
1.Spring AOP 的基本概述 AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.事务管理.安全检查 ...
- Spring AOP相关术语
---------------------siwuxie095 Spring AOP 相关术语 (1)Joinpoint ...
- Java 并发,相关术语
Java 并发,相关术语: 术语 作用 synchronize 可修饰方法.代码块.类:介绍:https://www.cnblogs.com/zyxiaohuihui/p/9096882.html L ...
- 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)
[AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...
随机推荐
- Go iota 原理和源码剖析
iota 是 Go 语言的一个保留字,用作常量计数器.由于 iota 具有自增特性,所以可以简化数字增长的常量定义. iota 是一个具有魔法的关键字,往往令初学者难以理解其原理和使用方法. 本文会从 ...
- .NET 百万级 大数据插入、更新 ,支持多种数据库
功能介绍 (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...
- SpringMVC---Json的使用
1.所需文件 2.pom中加入json <?xml version="1.0" encoding="UTF-8"?> <web-app xml ...
- SpringServletContainerInitializer的代码流程
SpringServletContainerInitializer 是spring中的一个class实现了servlet3.0规范的一个接口 implements ServletContainerIn ...
- Kubernetes(K8s)极速入门
1. 概述 老话说的好:努力学习,努力提高,做一个有真才实学的人. 言归正传,之前我们聊了 如何使用国内的镜像源搭建 kubernetes(k8s)集群 ,今天我们来聊聊如何在 kubernetes( ...
- Boussinesq 近似及静压假定,内外模分离方法(附录A)
0.Formulation of the RANS equations [1] 不可压缩流体控制方程 \[\begin{array}{l l} \frac{\partial u}{\partial x ...
- Java 好用的东西
Java自带的一些好用的东西: 求一个数的每一位:(toCharArray) int i = 10;char[] s = String.valueOf(i).toCharArray(); 十进制转二进 ...
- shell批量创建用户
#!/bin/bash cat << EOF ************************************************************ 批量添加用户并随机生 ...
- selenium+chrome抓取数据,运行js
某些特殊的网站需要用selenium来抓取数据,比如用js加密的,破解难度大的 selenium支持linux和win,前提是必须安装python3,环境配置好 抓取代码: #!/usr/bin/en ...
- Excel-实现选择性粘贴(粘贴公式为文本)自动化,不想手动
10.选择性粘贴(粘贴公式为文本)自动化,不想手动: (1)参考:https://jingyan.baidu.com/article/20b68a88a8bf55796cec62a3.html (2) ...