日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ebnf描述c语言语句结构,EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则...

發布時間:2023/11/27 生活经验 28 豆豆

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语言里语句的结构;并用操作语义的方法描述对应的语义规则...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。