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

Sample语言上下文无关文法

<表达式>:

<表达式>-<算术表达式>|<关系表达式>|<布尔表达式>|<赋值表达式>

<算术表达式>

<算术表达式> -> <算术表达式> + <项> | <算术表达式> - <项>|<项>

<项> -> <项>* <因子>|<项>/<因子>|<项>%<因子><因子>

<因子> -> (<算术表达式>)<常量>|<变量>|<函数调用>

<常量> -> <数值型常量><字符型常量>

<变量> -> <标识符>

<函数调用> -> <标识符>(<实参列表>)

<实参列表> -> <实参>|e

<实参> -> <表达式>|<表达式>,<实参>

<关系表达式>

<关系表达式> -> <算术表达式><关系运算符>算术表达式>

<关系运算符> -> > |<|>= l <= | == | !=

<布尔表达式>

<布尔表达式> -> <布尔表达式> || < 布尔项>|<布尔项>

<布尔项> -> <布尔项> && <布尔因子>|<布尔因子>

<布尔因子> -> <算术表达式>|<关系表达式>|!<布尔表达式>

<赋值表达式>

<赋值表达式> -> <标识符>=<表达式>

<语句>

<语句> -> <声明语句>|<执行语句>

<声明语句>

<声明语句> -> <值声明>|<函数声明>|e

<值声明> -> <常量声明>|<变量声明>

<常量声明> -> const <常量类型><常量声明表>

<常量类型> -> int | char | float

<常量声明表> -> <标识符> = <常量>;|<标识符> = <常量>,<常量声明表>

<变量声明> -> <变量类型><变量声明表>

<变量声明表> -> <单变量声明>;|<单变量声明>,<变量声明表>

<单变量声明> -> <变量>|<变量> = <表达式>

<变量类型> -> int | char | float

<函数声明> -> <函数类型><标识符>(<函数声明形参列表>);

<函数类型> -> int | char | float | void

<函数声明形参列表> -> <函数声明形参>|e

<函数声明形参> -> <变量类型>|<变量类型>,<函数声明形参>

<执行语句>

<执行语句> -> <数据处理语句>|<控制语>|<复合语>

<数据处理语句> -> <赋值语句>|<函数调用语句>

<赋值语句> -> <赋值表达式>;

<函数调用语句>-<函数调用>;

<控制语句> -> < if 语>|< for 语>|< while 语> | < do while 语> l < return 语句>

<复合语句> -> {<语句表>}

<语句表> -> <语句> | <语句><语句表>

< if 语句> -> if (<表达式>)<语句>| if (<表达式>)<语句> else <语句>

< for 语句> -> for (<表达式>;<表达式>;<表达式>)<循环语句>

< while 语句> -> while (<表达式>)<循环语句>

< do while 语句> -> do<循环用复合语> while (<表达式>);

<循环语句> -> <声明语句>|<循环执行语句> | <循环用复合语句>

<循环用复合语句> -> {<循环语句表>}

<循环语句表> -> <循环语句>|<循环语句><循环语句表>

<循环执行语句> -> <循环用 if 语句>|< for 语句>|< while 语句>< do while 语句><return语句>l< break 语句>l< continue 语句>

<循环用 if 语句> -> if (<表达式>)<循环语句>|if (<表达式>)<循环语句> else <循环语句>

<return 语句> -> return; | return <表达式>;

< break 语句> -> break;

<continue 语句> -> continue;

<函数定义>

<函数定义> -> <函数类型><标识符>(<函数定义形参列表>) <复合语句>

<函数定义形参列表> -> <函数定义形参>|e

<函数定义形参> -> <变量类型> <标识符>|<变量类型> <标识符>,<函数定义形参>

<程序>

<程序> -> <声明语句> main()<复合语句>函数块>

<函数块> -> <函数定义><函数块>|e


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

相关文章:

  • CFD 应用于分离过程:旋风分离器(第 2 部分)
  • OSRM docker环境启动
  • 笔记02----重新思考轻量化视觉Transformer中的局部感知CloFormer(即插即用)
  • 纯前端实现语音文字互转
  • k8s上部署redis高可用集群
  • 记录java Collections.sort踩的坑
  • SpringBoot操作Mongodb
  • Vue进阶-Vue cli项目搭建、项目基本操作、axios的使用、路由、Vuex
  • SpringBoot 中如何正确的实现模块日志入库?
  • 视频可视化搭建项目,通过简单拖拽方式快速生产一个短视频
  • 光波导相控阵技术
  • USB-C为什么可以取代传统接口?消费类电子产品如何改用TYPE-C接口?
  • 用 ChatGPT 进行阅读理解题目的问答
  • Ceph入门到精通-Ceph 编排器简介
  • 算力为基,生态谋远,英特尔商用客户端的三重创新进化
  • 07 - 进程创建大盘点
  • JVM 垃圾回收算法
  • 网络安全常用术语
  • React--》Redux Toolkit的使用讲解
  • 快速入门量化交易
  • 数据库管理-第六十九期 另一种累(20230422)
  • 通用el-table 修改样式
  • 【QT5:CAN卡通信的上位机-代码练习-收发数据+布局+引用外部库+基础样例(1)】
  • C++高并发多线程学习
  • 使用QToolButton和QStackedWidget的侧边栏(SideBar)的实现与实现原理解析
  • 力扣---LeetCode88. 合并两个有序数组