nandgame中的Grammar(语法)

题目说明:

语法定义涉及数字、括号和运算符+-的表达式的语法。起始符号为Expression。一个表达式应该对应于以下之一:一个数字标记Expression + ExpressionExpression - Expression- Expression( Expression )    

level help

通过语法来描述高级语言的语法。语法是一组规则,其中每个规则命名语法的一部分,
并定义了它如何组成。例如,这是一个非常简单的语法,
用于允许两个数字相加,如“2 + 2”:Expression → Number + Number
Number和+是在标记定义阶段定义的标记。
此语法将允许任意两个数字的加法,
但不会允许多次加法,如2 + 3 + 4。
为了支持任意多次加法,我们使用引用自身的规则:Program → Expression 
Expression → Expression + Number 
Expression → Number
此语法将允许无限次加法,
因为+左边的Expression本身可以是加法。**术语**
语法中使用的术语称为符号。
规则定义了一个符号(箭头左侧)
由一个或多个其他符号(箭头右侧)组成。
箭头右侧的符号要么是通过标记规范(在前一步中定义)
定义的标记,
要么是由同一语法中的规则定义的符号本身。代表标记的符号(如Number和+)称为终结符,
像Program和Expression这样由语法中
其他规则定义的符号称为非终结符。用作非终结符号的名称是任意的 - 您可以使用对您有意义的名称。
唯一的条件是必须有一个“起始符号”称为Program,
它表示整个程序。**解析算法**
在这个级别上,我们不编写实际的解析器,
该解析器根据语法规则处理源文本并生成语法树。
解析器算法是计算机科学的一个整个分支,
超出了本游戏的范围。
也就是说,最简单的解析器形式,
递归下降解析器易于编写,并且对于大多数目的而言已经足够了。
如果您想探索编写自己的解析器,这是一个很好的起点。本游戏使用Earley解析器,它不是最快的解析器,
但它灵活且易于编写语法。
Grammar 语法规则
Specify the rules for parsing the token into a syntax tree.
On the left is the name of a production. 
On the right is one or more names of productions or tokens
指定将标记解析为语法树的规则。
左侧是产生式的名称。
右侧是一个或多个产生式或标记的名称。
The syntax tree of the source code parsed by the grammar.
源代码由语法解析生成的语法树。

最终题目期望的答案如下:
在这里插入图片描述
在这里插入图片描述
需要注意的是:
Expression 与 符号 之间,记得加空格。

根据错误提示:
Error when parsing ‘8 + (-4)’. Parse error: Unexpected ‘(’
把 Expression + ( - Expression ) 穷举出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805777.shtml

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

相关文章

[RK-Linux] RK3399使用开源TPL与SPL方式加载U-Boot

文章目录 一、U-Boot1.1 下载源码1.2 配置U-Boot1.2.1 配置串口波特率1.2.2 配置U-Boot启动倒计时1.2.3 开启调试信息1.3 编译U-Boot1.4 U-Boot镜像二、idbloader.img2.1 tpl/u-boot-tpl.bin2.2 spl/u-boot-spl.bin三、u-boot.idb3.1 FIT介绍

SMT用料全检抽检

下载地址百度网盘: https://pan.baidu.com/s/1kDn_l8P6ReC4Lj5tgt-v4w?pwd5y41 提取码:5y41 1、扫描输入车间线体 2、根据线体获取在线订单 3、选择(全检|抽检|换接新料)开始 4、根据提示扫描站位和料号核对 5、核对成功再扫描核对下一组

纯Python实现Qt的信号与槽机制

纯Python实现Qt的信号与槽机制 Qt中的信号与槽详解 在Qt框架中,信号与槽是一种非常有特色的机制,用于对象之间的通信。这一机制是Qt中实现事件驱动编程的核心部分。下面我将详细解释信号与槽的概念和它们是如何工作的。 信号(Signals&#…

【复现】用友NC-Cloud文件上传漏洞_70

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 用友NC Cloud大型企业数字化平台,深度应用新一代数字智能技术,完全基于云原生架构,打造开放、…

碳交易机制下考虑需求响应的优化运行-MATLAB复现

读完《碳交易机制下考虑需求响应的综合能源系统优化运行——魏震波》这篇文章后,我对咱们能源系统的未来充满了期待。文章里头提到的那些复杂的数学模型和算法,虽然听起来有点高大上,但其实它们就像是给能源系统装上了一个智能大脑&#xff0…

vue3实现导出pdf、png功能

准备做的系统中出现了 想导出当前页面的png或者pdf设计数据较多后端做可能比较麻烦 就自己研究了一下 1、安装html2canvas 、jspdf包 npm install --save html2canvas // 可以将dom元素转为一张图片 npm install --save jspdf // 导出为PDF格式 2、vue组件中引用&#x…

【石上星光】context,go的上下文存储并发控制之道

目录 1 引言2 What?3 How? 3.1 用法一、上下文数据存储3.2 用法二、并发控制 3.2.1 场景1 主动取消3.2.2 场景2 超时取消 3.3 用法三、创建一个空Context(emptyCtx) 4 Why? 4.1 go中的上下文思想 4.1.1 上下文是什么…

html展示微信小程序二维码

1.生成微信小程序二维码 获取不限制的小程序码 | 微信开放文档 2.经过验证&#xff0c;下面两种方式可行 2.1直接将官方生成的内容直接在src标签里面是可以展示的 接口要支持GET请求 html代码 <body > <!--get请求可以&#xff0c;post请求不行--> <img src…

DataLoader类

DataLoader 类是 PyTorch 中用于构建数据加载器的一个重要工具&#xff0c;它可以对数据集进行批处理、洗牌和并行加载&#xff0c;以便于训练神经网络模型。 ### 输入参数&#xff1a; - **dataset**&#xff1a;数据集对象&#xff0c;通常是 torch.utils.data.Dataset 类的…

python爬虫———激发学习兴趣的案列(第十三天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

工业通信原理——CAN通信精讲

工业通信原理——CAN通信精讲 前言 CAN总线是一种用于在控制系统中进行通信的串行总线标准,常用于汽车、工业控制等领域。它允许多个设备在同一总线上进行通信,而不需要中央控制器,因此具有分布式、实时性强等特点。 CAN总线的报文格式通常分为两种:数据帧(Data Frame)…

渲染农场实时画面怎么设置?云渲染农场实时预览效果查看

许多用户在使用渲染农场服务时&#xff0c;常常难以找到查看实时渲染画面的功能。由于渲染是一个时间消耗较大的任务&#xff0c;如果最终结果与预期不符&#xff0c;可能会对整个工作流程产生负面影响。因此&#xff0c;渲染平台若能提供实时预览渲染进度和效果的功能&#xf…

代码随想录算法训练营第五十天 | 123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV

代码随想录算法训练营第五十天 | 123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV 123. 买卖股票的最佳时机 III题目解法 188. 买卖股票的最佳时机 IV题目解法 感悟 123. 买卖股票的最佳时机 III 题目 解法 题解链接 1. class Solution { public:int maxProfit(ve…

【汇编语言实战】求三个已知数最大值

C语言描述该程序流程&#xff1a; #include <stdio.h> int main() {int a10,b20,c15;//scanf("%d %d",&a,&b);if(a>b){if(a>c){printf("%d",c);}else{printf("%d",a);}}else{if(b>c){printf("%d",b);}else{pr…

【C++】掌握C++函数重载和引用开启代码优化的新篇章

欢迎来CILMY23的博客 本篇主题为 掌握C函数重载和引用开启代码优化的新篇章 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏&#xff1a; | | | CILMY23-CSDN博客 上一篇博客&#xff1a;第一个C结构&#xff0c;C关键字&#xff0c;命名空间&#xff0c;C的输入输出&…

IPEX-LLM(原名BigDL-LLM)环境配置

IPEX-LLM 是一个为Intel XPU (包括CPU和GPU) 打造的轻量级大语言模型加速库&#xff0c;在Intel平台上具有广泛的模型支持、最低的延迟和最小的内存占用。 您可以使用 IPEX-LLM 运行任何 PyTorch 模型&#xff08;例如 HuggingFace transformers 模型&#xff09;。在运行过程中…

TTL接口的输入输出

The Ins and Outs of the TTL Interface 串行通信可在相当长的距离内传输数据&#xff0c;通常与 TTL 标准有关。数据通过串行通信传输&#xff0c;串行通信通过单线传输比特位。数据通过双方--发送方和接收方--以二进制脉冲的形式使用各种串行数字二进制技术进行交换。 RS232 …

jquery按回车切换下一个文本框

/** *按回车切换下一个文本框 *param field *param event *returns Boolean *οnkeypress"return handleEnter(this,event)" */ function handleEnter(field,event){ var keyCode event.keyCode ? event.keyCode : event.which ? event.which :event.ch…

Sql缺失索引查询,自动创建执行语句

试图查询确实的索引 CREATE VIEW [dbo].[vw_Index_MissingIndex] ASSELECT [ d.name ] as DBName,[dbo].[fn_Index_CreateIndexName](mid.equality_columns,mid.Inequality_columns,mid.index_handlE) AS ID,REPLACE(mid.equality_columns,,, ASC,) AS equality_columns,REP…

Redis面试题1

Redis基础概念 1.请简述Redis是什么&#xff1f; 答&#xff1a;Redis是一个开源的使用ANSI C语言编写的、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。它通常被称为数据结构服务器&#xff0c;因为值&#xff0…