【龙书笔记】语法分析涉及的基础概念简介

这篇笔记概述了编译器语法分析的关键概念,包括语法制导翻译(Syntax-Directed Translation, SDT)、语法制导翻译计划(SDTS)以及具体语法树(CST)和抽象语法树(AST)。内容来源于龙书第2.3-2.5节,未来将基于这些概念实现一个Python版的后缀式语法翻译器。" 74171390,6201087,R语言朴素贝叶斯模型在iris数据集上的应用与分析,"['机器学习', 'R语言', '数据处理', '贝叶斯算法', '分类模型']
摘要由CSDN通过智能技术生成

本篇笔记是我对龙书第2.3-2.5节内容的理解,主要介绍编译器前端关于语法分析的众多基础概念。下篇笔记将根据本篇笔记的主要内容,实现一个针对简单表达式的后缀式语法翻译器Demo(原书中是java实例,我给出的将是逻辑一致的Python版本的实现)。

1. 语法分析(Syntax Analysis)
简单来说,语法分析的任务是分析输入的符号字符串(string of symbols, 通常是词法分析产生的tokens)是否遵循某种语言在其上下文无关文法(context-free grammar)中给出的规则,其中,规则由一系列产生式(production)给出。
如果分析成功,则它会构造出程序的抽象语法树(Abstract syntax tree);否则它会抛出类似于"syntax error"的错误提示。
完成语法分析的程序在术语上被称为Parser,其任务是判决输入的token streams是否可以由该语言的文法的开始符号推导出来以及如何推导。
原则上parser必须具备为输入串构造出语法分析树的能力(虽然事实上,编译器在实现语法分析时是不会真正去构造完整的语法分析树的,它会构造更简洁的抽象语法树)。
Paser有两类常见实现方式:
1) top-down parsing

自顶向下类型的parser从根节点开始构造语法分析树,逐步向叶子节点方向进行。这种方法可以较容易地手工构造出高效的语法分析器。
与此类parser相关的常见术语有inherited attributesLL parser
2) bottom-up parsing
自底向上的方法从叶子节点开始,逐步构造出根节点。这种方法可以处理更多种文法和翻译计划,故直接从文法生成语法分析器的软件工具通常采用bottom-up的方法。
与此类parser相关的常见术语有synthesized attributes
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值