Sample语言上下文无关文法

news2024/11/17 23:32:22

<表达式>:

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

<算术表达式>

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

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

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

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

<变量> -> <标识符>

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

<实参列表> -> <实参>|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.coloradmin.cn/o/463446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么企业要做大规模敏捷?

背景 软件工程里一个重要的指标就是“可用的软件”&#xff0c;敏捷宣言里也同样告诉我们“工作的软件高于详尽的文档”&#xff0c;那“可用的软件”、“工作的软件”意味着什么呢&#xff1f;在我的理解里&#xff0c;可以经历用户 “千锤百炼”的软件就是一个“可用的软件”…

Linux 共享库 静态库 动态库

一、 静态库(后缀.a)&#xff1a;程序执行前&#xff08;编译&#xff09;就加入到目标程序中去了 优点&#xff1a;运行速度快&#xff0c;发布程序无需提供静态库&#xff0c;因为已经在编译到目标程序中&#xff0c;运行的时候可以直接运行&#xff0c;移植方便 缺点&…

【Java】Eclipse的安装和JDK的安装与配置教程

Java是能够跨越多平台的、可移植性高的一种面向对象的编程语言&#xff0c;其简单易学、功能强大&#xff0c;越来越多的程序员喜欢加入Java的阵营之中。 一、前言 Java具有以下功能特点&#xff1a; 跨平台性&#xff1a;Java程序可以在任何支持Java虚拟机&#xff08;JVM&am…

C. Increasing by Modulo(贪心 + 二分)

Problem - C - Codeforces Toad Zitz有一个整数数组&#xff0c;每个整数都在0到m-1的范围内。这些整数是a1,a2...an。 在一次操作中,,iz可以选择一个整数k和k个萦引1..k&#xff0c;使得1si i2. ..fiksn。然后他应该将每个选定的整数a刘j 更改为(aj 1lmodm)。整数m对于所有操作…

初识STL

长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西&#xff0c;以及一种得以制造出”可重复运用的东西”的方法&#xff0c;从函数(functions)&#xff0c;类别(classes),函数库(function libraries),类别库(class libraries)、各种组件&#xff0c;从模块化设计&am…

(C语言版)力扣(LeetCode)27.移除元素三种解法分析

移除元素 题目第一种解法&#xff1a;有效值前移第二种解法&#xff1a;双指针第三种解法&#xff1a;双指针优化结语 题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空…

【C++】vector OJ练习

文章目录 1. 只出现一次的数字思路讲解AC代码 2. 杨辉三角思路讲解AC代码 3. 只出现一次的数字 III思路讲解AC代码 4. 只出现一次的数字 II思路讲解AC代码 5. 删除有序数组中的重复项思路讲解AC代码 6. 数组中出现次数超过一半的数字思路讲解AC代码 这篇文章我们来做几道vector…

Jenkins学习笔记

Jenkins学习笔记 1、基本概念 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。 2、安装 文件包&#xff1a;https://pan.…

半监督目标检测

有监督目标检测&#xff1a; 拥有大规模带标签的数据&#xff0c;包括完整的实例级别的标注&#xff0c;即包含坐标和类别信息&#xff1b;弱监督目标检测&#xff1a; 数据集中的标注仅包含类别信息&#xff0c;不包含坐标信息&#xff0c;如图一 b 所示&#xff1b;弱半监督目…

RHCE-防火墙

目录 一、防火墙介绍 1.1、什么是防火墙 1.2、防火墙的功能&#xff1a; 1.3、linux防火墙的架构 二、iptables 2.1iptables介绍 2.2名词术语&#xff1a; 什么是容器&#xff1f; 什么是Netfilter/Iptables&#xff1f; 什么是表&#xff08;tables&#xff09;&#x…

学历到底是敲门砖还是枷锁?—探讨“孔乙己文学”热搜背后的教育话题

序言 最近&#xff0c;“孔乙己文学”一度成为网络热门话题&#xff0c;引起了不少人的讨论。其中&#xff0c;一句“学历不仅是敲门砖&#xff0c;也是我下不来的高台&#xff0c;更是孔乙己脱不下的长衫”引发了广泛共鸣&#xff0c;让人深思。 敲门砖 or 枷锁&#xff1f; 对…

黑盒测试过程中【测试方法】详解4-因果图

在黑盒测试过程中&#xff0c;有9种常用的方法&#xff1a;1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 黑盒测试过程中【测试方法】讲解1-等价类&#xff0c;边界值&#xff0c;判定表_朝一…

大模型竞争加剧,国内外 AI 监管进一步升级

随着人工智能技术的不断发展&#xff0c;大模型已成为当下最热门的话题之一。不仅国内外的科技公司都在积极投入研发&#xff0c;各国政府也在加大监管力度&#xff0c;以确保人工智能技术的安全和可持续发展。本文将从三个层次分别探讨大模型的定义和热度、国内外AI监管的现状…

【STM32】基础知识 第八课 MDK 工程

【STM32】基础知识 第八课 MDK 工程 准备工作新建寄存器版本 MDK 工程步骤新建工程文件夹添加文件魔术棒设置绝对路径和相对路径对比测试程序 新建 HAL 库版本 MDK 工程CMSISHAL 库简介DriversMiddlewaresDevice 和 Include HAL 库文件介绍HAL 库 API 函数和比那辆命名规则HAL …

Fedora 38 正式发布

Fedora Linux 38 正式发布&#xff0c;用户可以访问官网下载安装最新版本。 新网站 如果你点击了上面的官网链接&#xff0c;你应该会注意到 Fedora 的官网看起来与之前有了很大不同。这是 Fedora Websites & Apps 团队与 Design & Infrastructure 团队以及广大社区合作…

HCIA-RS实验-ENSP搭建一个基础的IP网络

HCIA-RS是华为认证网络工程师&#xff08;Routing & Switching&#xff09;的缩写。通过考取HCIA-RS证书&#xff0c;可以证明自己有能力设计、实现和维护小型网络。而HCIA-RS实验则是考试的一部分&#xff0c;是考生必须要完成的实践环节。这将是第一篇文章&#xff0c;后…

Qt连接MySQL数据库最详细的教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.直接通过MySQL的驱动加载数据库1&#xff09;所需代码2&#xff09;解决QMYSQL driver not loaded 2.通过ODBC连接MySQL数据库&#xff11;&#xff09;官方解释2…

如何react中使用redux和react-redux

Redux Redux 是 JavaScript 状态容器&#xff0c;提供可预测化的状态管理。 可以让你构建一致化的应用&#xff0c;运行于不同的环境&#xff08;客户端、服务器、原生应用&#xff09;&#xff0c;并且易于测试。 不仅于此&#xff0c;它还提供 超爽的开发体验&#xff0c;比…

指针可以这样认知

注&#xff1a;此篇文章仅限初步了解&#xff0c;本小白后续会持续进行详解指针的相关操作。 目录&#xff1a; 认知内存一个内存单元的大小地址的产生 理解指针用途 指针变量的大小&#x1f49e;结尾 了解指针为什么需要了解内存呢&#xff1f; 因为指针是用来管理内存&#x…

【k8s】ruoyi微服务迁移到k8s

书接上回【传统方式部署Ruoyi微服务】&#xff0c;此刻要迁移至k8s。 环境说明 31 master &#xff0c; 32 node1 &#xff0c; 33 node2迁移思路 交付思路: 其实和交付到Linux主机上是一样的&#xff0c;无外乎将这些微服务都做成了Docker镜像; 1、微服务数据层: MySQL、 R…