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

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

一:概述

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

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

MODULE Gcd;
PROCEDURE GCD(a, b: INTEGER) : INTEGER;
VAR t: INTEGER;
BEGINIF b = 0 THENRETURN a;END;WHILE b # 0 DOt := 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.lryc.cn/news/523348.html

相关文章:

  • 服务化架构 IM 系统之应用 MQ
  • ELF2开发板(飞凌嵌入式)基本使用的搭建
  • Appium(四)
  • 简单的sql注入 buuctf
  • Ubuntu 24.04 LTS 空闲硬盘挂载到 文件管理器的 other locations
  • <电子幽灵>开发笔记:BAT基础笔记(一)
  • PiliPalaX ( 第三方安卓哔哩哔哩)
  • 在亚马逊云科技上高效蒸馏低成本、高精度的Llama 3.1 405B模型(上篇)
  • Amazon MSK 开启 Public 访问 SASL 配置的方法
  • LeetCode_438.找到字符串中所有字母异位词
  • 一文读懂服务器的HBA卡
  • Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化
  • 深度学习 Pytorch 基本优化思想与最小二乘法
  • C# 实现系统信息监控与获取全解析
  • Transformer详解:Attention机制原理
  • 网络安全技术深度解析与实践案例
  • JavaScript中提高效率的技巧一
  • 美食推荐系统 协同过滤余弦函数推荐美食 Springboot Vue Element-UI前后端分离
  • ThinkPHP 8的一对多关联
  • Django简介与虚拟环境安装Django
  • Redis延迟队列详解
  • 一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用
  • 第二代增强-采购申请屏幕增强
  • 图论DFS:黑红树
  • 零基础一篇打通Vue极速通关教程
  • 商城系统中的常见 BUG
  • 下定决心不去读研了。。。
  • 100个网络基础知识
  • 庄小焱——2024年博文总结与展望
  • 高通8255 Android STR 启动失败要因分析调查