nandgame中的Code generation(代码生成)

news2024/10/6 18:24:56

题目说明:

代码生成

为语言的语法规则定义代码生成,以支持加法和减法。
您可以使用在前面级别中定义的堆栈操作(如ADD和SUB)。

代码生成模板通常需要包含规则中其他符号的代码。
这些可以通过方括号中的符号名称插入。

例如,规则:

Expression → Expression + Number

可以有以下代码模板:

[Expression]
PUSH_VALUE [Number]
ADD

像[Number]这样的标记名称将被实际标记值替换。
像[Expression]这样的非终端将被该规则的模板替换
(以及递归地进行下去)。

Syntax rules 语法规则

指定用于语法节点生成的汇编代码。
代码可以包含汇编指令或宏指令,
并且可以嵌入规则中其他符号生成的代码。
通过用方括号括起名称来插入符号的代码,例如[Expression]

结果如下:
在这里插入图片描述
以上是最少的符号识别范围,
其中第一个[ ]+ 是指任意个空格都忽略
第二个[0-9]+是多个数字形成Number
只有前面两个是pattern模式匹配,与正则表达式语法一致。
后面的四个,+ - ( ) 是精确匹配,都是字符(literal)
在这里插入图片描述
上图是Syntax rules 语法规则的答案,
需要注意的是,右边黑色框内的asm内容也要手填,前面的只是示例,后面加的,不会自己生成asm
这部分的意思是,左边的语法规则,转换为右边的asm。

错误时,提示右手边(on the right-hand side)的内容,不是指箭头的右手边,而是指黑色部分(整个语法表达式的右手边)。

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

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

相关文章

【初中生讲机器学习】15. EM 算法一万字详解!一起来学!

创建时间:2024-04-08 最后编辑时间:2024-04-10 作者:Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~ 我是 Geeker_LStar,一名初三学生,热爱计算机和数学,我们一起加…

西门子PLC(S7-200 SMART)学习笔记1:初识PLC可编程逻辑器件

今日开始我的西门子PLC学习之路,学习的型号以S7-200 SMART为主 主要认识一下PLC是什么、型号怎么看、 通信相关、编程软件、构造及工作原理 目录 西门子官方PLC手册获取: 1、PLC可编程逻辑器件的基本认识: PLC的结构及各部分的作用&#xff…

Kali安装黑屏与进入系统后不显示中文的解决办法

使用镜像版本kali-linux-2024.1-installer-amd64.iso 一.创建虚拟机安装Kali镜像时,安装后要重启时发现左上角有个— 闪动并黑屏,启动不成功 上述办法也很简单,可以试试再windows中的CMD终端输入netsh winsock reset,重启电脑如果…

嵌入式Linux:Linux库函数

目录 1、Linux库函数简介 2、标准C语言库函数 1、Linux库函数简介 Linux 提供了丰富的库函数,涵盖了各种领域,从文件操作到网络编程、图形界面、数学运算等。这些库函数大多数都是标准的 C 库函数,同时也包括一些特定于 Linux 系统的库。 …

【Linux】初识Linux,虚拟机安装Linux系统,配置网卡

前言 VMware软件:首先,确保您已经下载了VMware Workstation软件并安装在电脑上。VMware Workstation是一款功能强大的虚拟化软件,它允许在单一物理机上运行多个操作系统。 Linux镜像文件:需要准备一个Linux操作系统的镜像文件。…

初学python记录:力扣1702. 修改后的最大二进制字符串

题目: 给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改: 操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。 比方说,…

LWIP一探究竟

1.网卡接收数据的流程 我们网卡接收数据基本上就是开发板上eth接收完数据后产生一个中断,然后释放一个信号量通知网卡接收线程去处理这些接收的数据,然后将这些数据封装成信息,投递到tcpip_mbox邮箱中,LWIP内核线程得到这个消息,就对消息进行解析,根据消息中数据包类型进行处理…

docker使用canal

1. 准备MySql主库 1.1.在服务器新建文件夹 mysql/data,新建文件 mysql/conf.d/my.cnf 其中my.cnf 内容如下 [mysqld] log_timestampsSYSTEM default-time-zone8:00 server-id1 log-binmysql-bin binlog-do-db mall # 要监听的库 binlog_formatROW配置解读&#…

Harmony鸿蒙南向驱动开发-Regulator

Regulator模块用于控制系统中各类设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过Regulator关闭其电源…

网络基础三——其他周边问题

3.1ARP原理 ​ ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议; ​ 以广播的形式(主机号填成全1)构建Mac帧,发送ARP请求包,告诉所有在局域网的主机我的IP地址和Mac帧,与目的IP相同的主…

意得辑意得辑

你是否也曾遇到过在发表论文时英语写作水平不尽如人意的困境?审稿意见总是指出语言表达不够好,需要找英语母语者修改?不用担心,我和你一样,也曾历经这样的挑战。但是,我找到了一家值得信赖的专业润色机构—…

深入分析Linux上下文与上下文切换

Linux 进程运行空间与特权等级 在 Linux 操作系统中,进程的运行空间被划分为内核空间和用户空间,这种划分是为了保护系统的稳定性和安全性。这两个空间对应着 CPU 的特权等级,分别为: Ring 0(内核态)Ring…

全国青少年劳动技能与智能设计大赛安徽省赛区赛前培训在肥东六中顺利举办

为推进我省青少年劳动教育和素质教育高质量发展,提升青少年家国情怀、多元思维、劳动技能、创新能力和综合素质,发现和培养创新后备人才。4月10日,肥东县教体局联合安徽省青少年劳动技能与智能设计大赛组委会在肥东六中创新科教基地成功举行全…

人工智能分类算法概述

文章目录 人工智能主要分类算法决策树随机森林逻辑回归K-均值 总结 人工智能主要分类算法 人工智能分类算法是用于将数据划分为不同类别的算法。这些算法通过学习数据的特征和模式,将输入数据映射到相应的类别。分类算法在人工智能中具有广泛的应用,如图…

目标检测——车牌图像数据集

一、重要性及意义 车牌图像识别的重要性及意义主要体现在以下几个方面: 智能交通管理:车牌图像识别技术是智能交通系统(ITS)的核心组成部分。通过自动识别车辆车牌,可以实现对交通违章行为的自动记录和处理&#xff…

SSD涨价停不下来!

随着HBM内存产能短缺问题的出现,存储市场正遭遇另一波供应短缺。在2021年存储市场陷入低迷后,SSD价格已连续下滑约两年。面对市场变化,存储厂商减少了NAND闪存的生产。随着减产策略的有效执行,需求部分回升,导致SSD供应…

jni 开发 调用dll 函数的流程

jni 调用dll方法以及dll内调用java方法的流程 编写java类 public class abc{static{System.loadLibrary("abc.dll");}public String getResponse(String ReqStr) {return "ok";}public native void InitDiagObj();public native void CarryabcEntry(Stri…

C++的并发世界(十一)——线程池

0.线程池的概念 1.线程池使用步骤 ①初始化线程池:确定线程数量,并做好互斥访问; ②启动所有线程 ③准备好任务处理基类; ④获取任务接口:通过条件变量阻塞等待任务 2.atomic原子操作 std:atomic是C11标准库中的一个…

双碳目标下太阳辐射预报模式【WRF-SOLAR】及改进技术在气象、农林、电力等相关领域中的应用

太阳能是一种清洁能源,合理有效开发太阳能资源对减少污染、保护环境以及应对气候变化和能源安全具有非常重要的实际意义,为了实现能源和环境的可持续发展,近年来世界各国都高度重视太阳能资源的开发利用;另外太阳辐射的光谱成分、…

A Note on LoRA

A Note on LoRA 摘要Additional InsightsPractical ImprovementsLooking Ahead 摘要 LoRA已成为一种首选的方法,用以高效地适应大型语言模型(LLM),其简便性和有效性令人瞩目。本文档扩展了原始LoRA论文,提供了最初未讨…