当前位置: 首页 > article >正文

LLVM - 编译器前端 - 理解BNF(巴科斯-诺尔范式)

一:概述

        BNF(Backus-Naur Form,巴科斯-诺尔范式)是一种用于描述上下文无关文法的形式语言,广泛应用于定义编程语言、协议和文件格式的语法规则。

        下面是一小段类Pascal编程语言,这个编程语言就可以用BNF描述。用BNF描述编程语言的语法规则之后,就可以根据这个规则生成抽象语法树,这是编译器前端的一个重要数据结构。是编译器的基础。

MODULE Gcd;
PROCEDURE GCD(a, b: INTEGER) : INTEGER;
VAR t: INTEGER;
BEGIN
 IF b = 0 THEN
 RETURN a;
 END;
 WHILE b # 0 DO
 t := a MOD b;
 a := b;
 b := t;
 END;
 RETURN a;
END GCD;
END Gcd.

二:BNF 的基本语法结构

        上面那段编程代码,就可以用BNF描述,其规则如下:

compilationUnit
 : "MODULE" identifier ";" ( import )* block identifier "." ;
Import : ( "FROM" identifier )? "I

http://www.kler.cn/a/508671.html

相关文章:

  • MySQL、HBase、ES的特点和区别
  • 精度论文:【Focaler-IoU: More Focused Intersection over Union Loss】
  • LDD3学习8--linux的设备模型(TODO)
  • 构建优雅、高效的 Nodejs 命令行工具 - Archons
  • 28:CAN总线入门一:CAN的基本介绍
  • 如何异地远程访问本地部署的Web-Check实现团队远程检测与维护本地站点
  • [ZJCTF 2019]NiZhuanSiWei 1
  • R语言的文件操作
  • 一分钟学习数据安全——数据安全的核心概念CIA以及安当解决方案
  • 做跨境电商服务器用什么宽带好?
  • 学习笔记081——如何备份服务器中MySQL数据库数据?
  • 【RK3588嵌入式图形编程】-SDL2-创建应用窗口
  • 微信小程序-base64加解密
  • Java(面向对象进阶——抽象类)
  • 机器学习与深度学习在气象中的应用
  • MongoDB单机版安装
  • 前后端分离与前后端不分离:深度解析**
  • 【AI插件】在VS Code中免费使用GitHub Copilot
  • vue3.0如何快速封装自定义指令!
  • 华为服务器(iBMC)监控指标解读
  • GDC杂感:怎么提高游戏销量?
  • Leetcode 983. 最低票价 动态规划
  • 职场的三个阶段及其应对规划:以前端开发工程师为例
  • Vue3初学之Element-plus Form表单
  • 使用 Vue 3 和 Pinia 创建高性能状态管理方案
  • flowable-ui 在tomcat中启动