12、编译器 I:语法分析

编译器 I:语法分析

在编程领域,编译器扮演着将源语言程序转换为目标语言程序的关键角色。本文聚焦于为 Jack 语言构建编译器的语法分析阶段,深入探讨其中的核心概念、实现方法以及项目实践。

1. 编译概述

编译过程主要分为两个阶段:语法分析和代码生成。语法分析又可细分为分词(tokenizing)和解析(parsing)两个子阶段。分词是将输入的字符流分组为语言原子,即令牌(tokens);解析则是将令牌组合成有意义的结构化语句。

在本文中,由于暂不涉及代码生成,我们选择让语法分析器将输入程序的解析结构输出为 XML 文件。这样做有两个好处:一是可以方便地检查输出文件,验证语法分析器是否正确解析源程序;二是明确输出该文件的要求,促使我们设计出一种易于扩展为完整编译器的架构。

2. 背景知识

2.1 词法分析

每个编程语言规范都定义了该语言所识别的令牌类型。在 Jack 语言中,令牌分为五类:关键字(如 class while )、符号、整数常量(如 17 314 )、字符串常量(如 "FAQ" "Frequently Asked Questions" )以及标识符(用于命名变量、类和子程序)。这些令牌共同构成了语言的词汇表。

计算机程序最原始的形式是存储在文本文件中的字符流。语法分析的第一步是将这些字符按照语言词汇表分组为令牌,同时忽略空白和注释。这个过程称为词法分析、扫描或分词,它们的含义是相同的。 <

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值