Assignment

news2024/9/19 20:57:43

1 Statement 里面包含了Expression。

对Statement 的interpret 里面包含了 对Expression 的interpret。

2 Expression 可以下降出Assignment

3 单个token前瞻递归下降解析器在解析完左侧操作数并偶然发现 = 之前,无法看清是否在解析赋值。毕竟,在解析完左操作数后,我们才知道自己在解析一个 + 表达式。

不同之处在于,赋值的左侧不是一个求值表达式。它是一种伪表达式,会求值到一个可以赋值的 “东西”。如下

由于字段赋值的接收方可以是任何表达式,而表达式的长度可以随心所欲,因此可能需要花费大量的查找符才能找到 =。

我们只有一个token,并前瞻一下,我们应该做什么?

解析赋值表达式的大部分代码与其他二元运算符(如 +)的代码相似。我们解析左侧,它可以是任何优先级较高的表达式。如果找到 =,我们就解析右侧,然后将其全部打包到赋值表达式树节点中。

这个和binary的处理不同。binary都是循环, 因为可能1+1+1+1.。。。

assignment是右结合。a=b=c=d。 

4 根据assignment的代码,这个式子会报错。

因为a+b 左侧到最后,并不是Variable。

5 对于assignment,我们不会evaluate左侧的value。

如下,第二行我们不想得到"before"。而是想的到“evaluates” a to a storage location that you can assign into.

这也就是为啥 Expr.Assign node 左侧是个Token 而不是Expr。

如果不hit到=,我们不知道这是个l-value。

6 Assignment 最后需要返回赋值的值。

才能实现 下面的功能。

7 为了实现变量的作用域。代码实现的environment变成了一个链表。inner的environment都会指向outer的environment。

变量声明的时候,自动用最内侧的environment。

但是读取和赋值时,需要考虑链上的变量。

8 使用链式的环境Environment。

运行每个block的时候,都会新建一个environment变量,创建的同时,链接上外层environment。

开始this指的是外层的。try里面换成了新赋值的。

运行结束后,还会设置回来。用finally是为了异常抛出也会运行这句。

这个是在哪里开始嵌套的?

这里

几个问题:

1 expression是equality的例子有吗

2 Assignment 和equality 什么关系?

就是语法上等级挨着。没有其他关系。

原文:这就是说,赋值要么是一个标识符,后面跟一个 = 和一个值表达式,要么是一个相等表达式(以及任何其他表达式)。

有时把英文扔到翻译里,再看一遍就理解了。

3 declaration 和 assignment 什么关系

好像确实不一样。

declaration需要var在前面

assignment直接赋值就好了。

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

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

相关文章

C语言补习课——文件篇

来源:黑马程序员 第157讲 C语言操作文件概述 读取文件:输入流 写文件:输出流 读写的方向判断取决与参照,一般我们站在程序的角度判断读写方向。 第158讲 路径 基本概念 路径就是指文件在电脑中的位置,eg&#xf…

下班后做小红书第7个月,涨粉7w,累计变现5w+,我只用到五个点

下班后做小红书第7个月,涨粉7w,累计变现5w,经常有粉丝问我怎么做博主,甚至想找我付💰Z询,因为有大家才有我的今天,所以干货直接分享给大家~ 我能快速涨粉的秘籍,其实就是“抄”&…

有关采用parallelStream并行流处理List并使用自定义线程池和lettuce redis客户端一起使用的问题

在使用parallelStream进行处理list时,如不指定线程池,默认的并行度采用cpu核数进行并行,这里采用ForJoinPool来指定线程池,但循环中使用了luttuce 来获取redis的key时,出现没有控制住线程池的线程数问题。具体上代码。…

第二证券:如何选出即将暴涨的股票?

选出行将暴升的股票是一个复杂且风险较高的进程,由于股市的波动受多种要素影响,包含但不限于公司业绩、商场心情、微观经济环境、方针变化等。以下是一些可能有助于选出潜在暴升股票的方法和建议: 1、出现严重利好消息 当股票出现严重利好消…

Nginx文件服务器搭建

1、安装依赖、关闭防火墙 [rootlocalhost ~]# yum install wget gcc gcc-c pcre pcre-devel openssl openssl-devel zlib zlib-devel [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# systemctl disable firewalld 2、创建nginx启动用户 注意:会在…

Windows与linux中docker的安装与使用

windos中安装使用docker 下载Docker_Desktop 安装包进入docker官网下载Docker_Desktop: https://www.docker.com/启用wsl 我们搜索“启用或关闭Windows功能”,打开后勾选适用于Linux的Windows 子系统 Docker_Desktop设置 出现Docker Engine stopp…

vue3 el-tabs 和 el-dropdown 结合实现 tagsView 标签导航

大致思路 所谓 tagsView 可以分成两部分来去看: tagsview 那怎么分开看呢? 首先我们先来看 tags: 所谓 tgas 指的是:位于 appmain 之上的标签 那么现在我们忽略掉 view,现在只有一个要求: 在 view 之…

开源 AI 智能名片 S2B2C 商城小程序相关角色的探索

摘要:本文围绕开源 AI 智能名片 S2B2C 商城小程序的决策产品方向,基于两个原则展开研究。原则一是根据该产品方向尽可能多地寻找相关角色,原则二是以探索痛点而非销售为核心。同时确保识别出的角色覆盖价值使用者、价值传递者与价值生产者三类…

揭秘团购奇迹:如何在一个月内实现超过600万的盈利

你是否曾经对那些看似亏损的商业机会感到好奇,却意外地发现它们在短短一个月内能为你带来超过六百万的收益?这个令人震惊的数字,是否激起了你的好奇心和探索欲?如果你愿意深入了解我们今天要分享的内容,我坚信你也能找…

零基础小白能学网络安全吗?

最近看到很多朋友都在问“零基础能学网络安全吗?” 今天整一篇帮大家分析一下,希望对你有帮助。 首先,问出这个问题的朋友,我大致判断一下,你对网络安全并不了解,只是单纯看到某个视频某篇文章&#xff0…

想从事FPGA需要学好哪些知识?

想从事FPGA需要学好: 1、数字电路基础 2、微机原理,汇编语言(推荐王克义老师的《微机原理(第2版)》)或计算机体系结构或单片机原理; 3、C/C++语言; 4、Ve…

免费且实用:UI设计常用的颜色参考网站和一些Icon设计网站

用心去分享!请给我点个关注和点赞收藏!谢谢各位努力的人才! 1.在UI设计的时候,没有灵感,怎么办?可以参考这个网站(需要魔法能量) 网址如下: Color Hunt - Color Palette…

windows中多ping网络ICMP

之前没搞过ICMP,第一次弄,遇到好多坑,其中在接收ICMP消息时无法指定ip这个坑困扰了好久,最后在网上找到一种解决方法;直接看效果吧!! 其中我获取ip状态直接扔到线程池里面处理的 struct DevicePingMsg {D…

OpenAI新模型“Strawberry“蓄势待发:会思考的AI即将登场?

OpenAI新模型"Strawberry"蓄势待发:会思考的AI即将登场? OpenAI的神秘大模型"草莓"(Strawberry,之前称为Q*)可能要提早亮相了。这款AI不仅能思考,还可能彻底改变我们与人工智能互动的方…

果蔬识别系统性能优化之路(三)

目录 前情提要遗留问题 解决方案优化查询速度优化ivf初始化的速度 下一步 前情提要 果蔬识别系统性能优化之路(二) 遗留问题 优化同步速度,目前大约30秒,不是一个生产速度 这次来解决遗留问题 通过console,发现两个…

【F178】基于Springboot+vue实现的智能无人仓库管理

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 互联网发展至今,无论是其理论还是技术都已经…

揭秘数据库性能飞跃的秘密:深入理解索引与执行计划的艺术

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 目录 前言&#…

2024最新版超级全的Python基础知识

数据类型和变量 Python使用缩进来组织代码块,一般使用4个空格的缩进.使用#来注释一行,其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块.Python对大小写敏感 1.1整数 Python可以处理任意大小的整数,包括负整数,写法与数学上写法一致,例如:-100.如…

项目管理软件的技术深度剖析:从架构到创新的全面探索

各位技术小伙伴们,今天咱们跟随猴哥聊聊一个既熟悉又略带神秘的话题——项目管理软件。在快节奏的现代商业环境中,项目管理就像是企业运作的润滑剂,而项目管理软件,就是那把让一切井然有序的神器。不过,别看它平时默默…

大模型sft评估指标方案

大模型sft评估一直都是一个让人头疼的问题,那么如何进行sft评估呢? 一共有两类方案 第一类:用另一个AI或者人类 对模型答案进行打分 可以是竞技场模式,也可以是离线打分模式 打分可以用一些权威的榜单,例如 super…