ebnf描述c语言语句结构,EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则...
Presentation on theme: "EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则"— Presentation transcript:
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
假定有语法类 表示一般表达式, 表示可用于 switch 标号的静态表达式 查阅 javascript语言的规范,尽可能保证你的描述反映了javascript语言规范的要求 请说明javascript程序的哪些结构要求没有在你的描述中反映出来?如果有,请说明为什么无法描述。
语句 ::= block |
| | | | | | | | | |
2.语句块 block ::= ‘{’[]'}' statement-list ::= {} 3.变量声明 variable-statement ::= 'var '[';'] variable-declaration-list ::= {','} variable-declaration ::= ['='] 4.赋值语句 assignment-statement ::= ' =' [';']
5.带标签语句 label-statement ::= : | 'case' : | 'default : ' 6.表达式语句 expression-statement ::= 7.条件语句 condition-statement ::= 'if ( ' ') ' | 'if ( '' ) ' 'else ' | 'switch ( ' ') ' 8.循环语句 iteration-statement ::= 'while ( ' ') ' | 'do' 'while (' ')' [';'] | 'for ( '[ ' =' ]';'[]';' {] ')'
9.跳转语句 jump-statement ::= 'continue '[';']' | 'break' [][';'] | 'return' [][';'] 10.with语句 with-statement ::= with '('')' 11.异常语句 exception-statement ::= 'try' 'catch' '(' ')' ['finally'] 12.throw语句 throw-statement::= 'throw'[;] 12.空语句 empty-statement ::=';'
操作语义 1.赋值语句 2.if语句 3.while语句
4.do-while语句 5.for语句 初始化: 判断循环条件:
6.continue语句(跳过循环体的后部分)
7.break语句(跳出循环体) 8.return语句
9.with语句 10.异常语句 11.空语句
堆栈帧存储与参数机制 2. 画出以下程序运行过程的堆栈存储状态 class A {
2. 画出以下程序运行过程的堆栈存储状态 class A { public static void main(String[] args) String str1="aaa"; String str2="bbb"; method1(str1,str2); System.out.println(str1+"\t"+str2); StringBuffer sb1=new StringBuffer("aaa"); StringBuffer sb2=new StringBuffer("bbb"); method2(sb1,sb2); System.out.println(sb1+"\t"+sb2); } static void method1(String str1,String str2) str1+="ccc";str2="aaa"; static void method2(StringBuffer sb1,StringBuffer sb2) sb1.append("ccc"); sb2=new StringBuffer("aaa");
调用method1前 String str1="aaa";String str2="bbb";
Java栈 main参数args main返回地址 main动态链 main静态链 main返回值 str1 str2 方法区 Class A 类型信息 aaa 常量池 (用于保存在编译期已确定的,已编译的class文件中的一份数据。 程序中有三个字符串常量aaa,bbb,ccc将被创建) bbb ccc 堆区
进入method1(传值调用) Java栈 方法区 main参数args main返回地址 Class A 类型信息 main动态链 aaa
str1 str2 method1参数str2 method1参数str1 method1返回地址 method1动态连 method1静态连 方法区 Class A 类型信息 aaa 常量池 bbb ccc 堆区
执行method1(传值调用) str1+="ccc";str2="aaa";
Java栈 main参数args main返回地址 main动态链 main静态链 main返回值 str1 str2 method1参数str2 method1参数str1 method1返回地址 method1动态连 method1静态连 方法区 Class A 类型信息 aaa 常量池 bbb ccc 堆区 aaaccc (在执行时确定)
执行method2前(引用调用) StringBuffer sb1=new StringBuffer("aaa"); StringBuffer sb2=new StringBuffer("bbb");
Java栈 main参数args main返回地址 main动态链 main静态链 main返回值 str1 str2 sb1 sb2 方法区 Class A 类型信息 aaa 常量池 bbb ccc 堆区 aaaccc aaa bbb
进入method2(引用调用) Java栈 方法区 Class A 类型信息 aaa 常量池 堆区 bbb aaaccc ccc aaa
main参数args main返回地址 main动态链 main静态链 main返回值 str1 str2 sb1 sb2 method2参数sb2 method2参数sb1 method2返回地址 method2动态链 method2静态链 方法区 Class A 类型信息 aaa 常量池 bbb ccc 堆区 aaaccc aaa bbb
执行method2(引用调用) sb1.append("ccc"); sb2=new StringBuffer("aaa");
Java栈 main参数args main返回地址 main动态链 main静态链 main返回值 str1 str2 sb1 sb2 method2参数sb2 method2参数sb1 method2返回地址 method2动态链 method2静态链 方法区 Class A 类型信息 aaa 常量池 bbb ccc 堆区 aaaccc bbb aaa
执行method2后(引用调用) Java栈 方法区 Class A 类型信息 aaa 常量池 堆区 bbb aaaccc ccc bbb
main参数args main返回地址 main动态链 main静态链 main返回值 str1 str2 sb1 sb2 方法区 Class A 类型信息 aaa 常量池 bbb ccc 堆区 aaaccc bbb aaa
欢迎大家提出质疑并交流。 谢谢!
ebnf描述c语言语句结构,EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则...相关推荐
- 听说go语言越来越火了?那么请收下这一份go语言书单吧!
关注公众号[程序员书单]后回复"book"即可领取30+精品免费电子书 Go 是一种简单.小巧.令人愉悦的语言.它也有一些犄角旮旯,但绝大部分是经过精心设计的.它的学习速度令人 ...
- web前端之dojo(用javascript语言实现的开源DHTML工具包)
web前端之dojo(用javascript语言实现的开源DHTML工具包) 一.开始Dojo开发 1.Dojo Toolkit 简介 Dojo 于 2004 年创建,使开发 DHTML 和 Java ...
- 八、深入JavaScript的条件语句和循环语句(四)
@Author:Runsen @Date:2020/5/26 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...
- c语言的调试是对源文件进行,理解C语言——从小菜到大神的晋级之路(3)——C源程序的基本结构与调试方法...
本期视频点击这里 在上一篇中,我们进行了Visual Studio 2013的安装以及第一个demo程序"HelloWorld"的建立.现在我们看一下其中的源代码及相关的C语言基础 ...
- CVPR2021 | 视觉推理解释框架VRX:用结构化视觉概念作为解释网络推理逻辑的「语言」
本文提出了一个视觉推理解释框架 (VRX: Visual Reasoning eXplanation),将人们容易理解的.high-level 的结构化的视觉概念作为「语言」,通过回答为什么是 A,为 ...
- CVPR 2021 | 视觉推理解释框架VRX:用结构化视觉概念作为解释网络推理逻辑的「语言」...
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者:葛云皓 | 编辑:Amusi 本文提出了一个视觉推理解释框架 (VRX: Visual Reaso ...
- C语言char*s 4,求讲解几道C语言的题 52 声明语句为“char s[4][15],*p1,**p2;int x,*y;”,下列语句中正...
求讲解几道C语言的题 52 声明语句为"char s[4][15],*p1,**p2:int x,*y:",下列语句中正 2018-6-15来自ip:14.144.15.70的网友 ...
- R语言嵌套的ifelse语距:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用。If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块
R语言嵌套的ifelse语句:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用.If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块 ...
- R语言构建xgboost模型:模型的特性重要度计算及可视化、模型对应的结构树(文本文件)
R语言构建xgboost模型:模型的特性重要度计算及可视化.模型对应的结构树(文本文件) 目录
最新文章
- memcache读书笔记(二)
- java用do while语句逆序输出_跟我学java编程—深入理解do-while循环语句的用法
- mysql+cur+0_MySQLcurdate()函数的实例详解
- unity声音组件AudioSource的使用
- html区域背景,保存/恢复HTML5 Canvas的背景区域
- 启发式算法、寻路算法A*算法
- 004-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-共享服务中心建设原则...
- STM32单片机和51单片机有何区别?
- android 源码导入android studio中(仿佛打开了新世界)
- [原创]K8_C段旁注查询工具5.0 30款国外主流CMS识别+智能识别未知CMS
- 2022-渗透测试-xss小游戏通关
- Chrome浏览器设置打开书签时在新标签页打开(保姆级图文)
- R语言Scheffe’s检验进行事后检验(post hoc)实战:单因素方差分析告诉我们并不是所有的群体手段的效果是均等的,确切地找出哪些组彼此不同使用Scheffe’s检验
- 我的一周re学习总结
- QOpenGLWidget空白不显示绘图内容
- 【AI白身境】计算机视觉都有哪些研究方向
- 1. Java之父是谁?java哪年推出的?
- 小学计算机课在玩中学,学中玩,玩中学的作文(共5篇)
- 顺利解决org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException!
- c++实现加法的w32控制台程序
热门文章
- 在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据
- 基于区域的CNN(R-CNN)
- Android线程池简单使用
- 2021年大数据Flink(十五):流批一体API Connectors ​​​​​​​Kafka
- git 下载的文件与git上面的文件不相同的处理方法
- vue缓存页面【二】
- 20175320 2018-2019-2 《Java程序设计》第2周学习总结
- 【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
- bzoj 1211 [HNOI2004]树的计数
- 2021襄阳谷城高考成绩查询,2021高考襄阳谷城县考生求助电话