lang:使用BNF范式设计一个文法

本文介绍了如何利用BNF(巴科斯范式)来定义编程语言的语法结构,包括变量、表达式、语句、函数、对象、数组和高级数组代替类的概念。BNF是一种数学描述语言,有助于提高语言的可读性。文中详细阐述了各个组成部分的规则,如变量命名限制、表达式的类型、语句的结构以及函数和数组的定义方式。
摘要由CSDN通过智能技术生成

前言

上个月买了本《两周自制脚本语言》,虽然我是不信这种鬼话的。买了后也不信,两周的时间是假的,但是知识还是有的。这一篇不会实现任何匹配,而是如何用数学点的方法定义自己要求的语言。

BNF范式是一种描述编程语言的数学方法,可读性接近自然语言。


BNF规则

  • ::= 左边是非终结符或元变量,右边是终结符——一些事先规定好的符号,这些符号可能是简单的单词或者在其他BNF式子中作为非终结符。有些BNF式子中是用冒号代替 ::=
  • 双引号中的内容表示符号本身的意思,之所以用双引号包上是因为部分符号在BNF中表达特定的意思。看BNF需要把双引号拿掉再看。有些BNF式子中是用的引号代替双引号
  • 双引号外的内容表示语法部分
  • 括号中的内容是必选项。有些BNF式子是用的尖括号
  • 方括号中的内容是可选项
  • 花括号中的内容可以是零次或者许多次
  • 竖线表示左右任选一项
  • 有的单词加引号表示原本的意思,有的不用引号也表示原本的意思(好不严谨的样子)

变量var

这里指变量的命名,即标识符!
变量开头不能是数字,可以是字母和下划线。变量其他字符可以是数字、字母、下划线

实验2 文法的读入、判定和处理 一、实验目的 熟悉文法的结构,了解文法在计算机内的表示方法。 二、实验内容 1、 设计一个表示文法的数据结构; 2、 从文本文件中读入文法,利用定义的数据结构存放文法,并输出; 3、 本实验结果将来还有用。 三、实验要求 1、 了解文法定义的4个部分: G(Vn, Vt, S, P) Vn 文法的非终结符号集合,在实验中用大写的英文字母表示; Vt 文法的终结符号集合,在实验中用小写的英文字母表示; S 开始符号,在实验中是Vn集合中的一个元素; P 产生式,分左部和右部,左部为非终结符号中的一个,右部为终结符号或非终结符号组成的字符串,如S->ab|c 2、 根据文法各个部分的性质,设计一个合理的数据结构用来表示文法, 1) 若使用C语言编写,则文法可以设计成结构体形式,结构体中应包含上述的4部分, 2) 若使用C++语言或java语言编写,则文法可以设计文法类形式,类中至少含有4个数据成员,分别表示上述4个部分 文法数据结构的具体设计由学生根据自己想法完成,并使用C或C++语言或Java实现设计的数据结构。 3、 利用完成的数据结构完成以下功能: 1) 从文本文件中读入文法文法事先应写入文本文件); 2) 根据文法产生式的结构,分析出文法的4个部分,分别写入定义好的文法数据结构的相应部分; 3) 整理文法的结构,判断该文法文法类型,是否为0型,1型,2型或3型文法,并输出判断结果; 4) 在计算机屏幕或者文本框中输出文法文法输出按照一个非终结符号一行,开始符号引出的产生式写在第一行,同一个非终结符号的候选式用“|”分隔的方式输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念心科道尊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值