Java语言语法语义分析器设计与实现
http://tol.bit.edu.cn/Able.Acc2.Web/Template/View.aspx?wmz=3126&courseType=1&courseId=1959&topMenuId=46336&menuType=4&contentId=3126&action=view&type=&name=&menuid=000002
?
Java語言詞法分析器的設計與實現
一.實驗目的
1.強化對系統軟件綜合工程實現能力、規劃能力的訓練;
2.加強對詞法分析原理、方法和基本實現技術的理解;
二.實驗內容
用C語言(或 C++ )作為宿主語言完成:
????? 其中具體要求:
???? 1.使用DFA實現詞法分析器的設計;
???? 2.實現對Java源程序中注釋的過濾;
???? 3.利用兩對半緩沖區從文件中逐一讀取單詞;
???? 4.詞法分析結果屬性字流存放在獨立文件(文件名:scanner_output)中;
???? 5.統計源程序每行單詞的個數和整個源文件單詞個數;
???? 6.具有報告詞法錯誤和出錯位置(源程序行號和該行字符)的功
???? 注: ?附Java語言詞法規則 (附件一);
????附Java語言詞法分析器的屬性字設計 (附件二)
?
三.實驗驗收與評分要求
?? ?1.編寫Java語言詞法分析器的源程序并調試通過;
??? 2.通過測試程序的驗收 (測試程序名稱:Test-Lexcial);
? 3.提交簡明扼要的書面實驗報告。內容包括:FA設計;源程序主要函數功能;主要數據結構設計。
?
附件一
JAVA語言詞法規則
關鍵字:
abstract?? boolean?? break?? byte?? case?? catch?? char?? class
const?? continue?? default?? do?? double?? else?? extends?? false
final?? finally?? float?? for?? goto?? if?? implements?? import
instanceof?? int?? interface?? long?? native?? new?? null?? package
private?? protected?? public?? return?? short?? static?? super?? switch
synchronized?? this?? throw?? throws?? transient?? true?? try?? void
volatile?? while
標識符:
字母或美元符號“$”或下劃線開頭,連接字母或美元符號“$”或下劃線或數字字符的串。
常量:
整型常量: 123, 0, -456, 0123 , 0x123, -0X12,123L
實型常量: 1.23, 0.123, .123, 123., 123.0, 123e3, 123E3, 12.3F
布爾常量: true、 false
字符串常量:"This is a constant string."。
字符常量: ‘ a’ ,
轉義字符描述
\ddd 1到3位8進制數據所表示的字符(ddd)
\uxxxx 1到4位16進制數所表示的字符(xxxx)
\' 單引號字符
\\ 反斜杠字符
\r 回車
\n 換行
\f 走紙換頁
\t 橫向跳格
\b 退格
界限符:
| { } | 花括號用于定義類、方法和本地范圍的代碼塊。它們也用于包含自動被初始化數組的值。 |
| [ ] | 方括號用于聲明數組類型。同時也用于廢棄數組值。 |
| , | 逗號用于分隔變量聲明中連續的標識符。它也用于連接語句。 |
| ( ) | 圓括號用于在方法定義和調用中包含參數列表。它們也用于定義表達式中的優先級,在控制語句中包含表達式,以及包含轉換類型。 |
| . | 點號用于分隔包名和類名。同時也用于把變量或者方法與引用變量分隔開。 |
| ; | 分號用于終止Java語句。 |
?
?
?
?
?
?
?
?
?
?
??
運算符:
| 操作 | 運算符 | 操作 | 運算符 | 操作 | 運算符 |
| 加賦值 | += | 大于 | > | 乘積賦值 | *= |
| 加 | + | 大于等于 | >= | 非 | ! |
| 與賦值 | &= | 自增1 | ++ | 非賦值 | ^= |
| 賦值 | = | 左移位 | << | 不等于 | != |
| 按位與 | & | 左移位賦值 | <<= | 或賦值 | |= |
| 按位取反 | ~ | 小于 | < | 右移位 | >> |
| 按位或 | | | 小于等于 | <= | 右移位賦值 | >>= |
| 按位異或 | ^ | 邏輯與 | & | 短路與 | && |
| 條件運算符 | ?: | 邏輯或 | | | 短路或 | || |
| 自減1 | -- | 邏輯異或 | ^ | 減賦值 | -= |
| 除賦值 | /= | 求模 | % | 減 | - |
| 除 | / | 模賦值 | %= | 零填充右移位 | >>> |
| 等于 | == | 乘積 | * | 零填充右移位賦值 | >>>= |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
??
附件二
?
JAVA詞法分析器的屬性字設計
單詞屬性用十六進制表示:
錯誤的單詞??????????????????????????????????????? ?0x100
注釋?????????????????????????????????????????????? 0x101
空格???????????????????????????????????????????????0x102
關鍵字???????????????????????????????????????????? 0x103
標識符???????????????????????????????????????????? 0x104
布爾型???????????????????????????????????????????? 0x105
字符型???????????????????????????????????????????? 0x106
整型???????????????????????????????????????????????0x107
浮點型???????????????????????????????????????????? 0x108
字符串???????????????????????????????????????????? 0x109
=? +=? -=? *=? /=? %=? &=
^=? |=? >>=? <<=? >>>=??????????????????????????? 0x110
?:????????????????????????????????????????????????0x111
||????????????????????????????????????????????????0x112
&&????????????????????????????????????????????????0x113
|?????????????????????????????????????????????????0x114
^?????????????????????????????????????????????????0x115
&?????????????????????????????????????????????????0x116
==? !=????????????????????????????????????????????0x117
<? >? <=? >=??????????????????????????????????????0x118
<<? >>? >>>???????????????????????????????????????0x119
+? -??????????????????????????????????????????????0x11a
*? /? %?????????????????????????????????????????? 0x11b
++? --–? !? ~?????? ???????????? ?????????????? ?0x11c
[? ]? (? )? .???????????????????????????? ????? ? 0x11d
,?????????????????????????????????????????????????0x120
{}??????????????????????????????????????????????? 0x121
;?????????????????????????????????????????????????0x122
?
?
http://tol.bit.edu.cn/Able.Acc2.Web/Template/View.aspx?wmz=3417&courseType=1&courseId=1959&topMenuId=46336&menuType=4&contentId=3417&action=view&type=&name=&menuid=000003
總結
以上是生活随笔為你收集整理的Java语言语法语义分析器设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: set escape on
- 下一篇: java美元兑换,(Java实现) 美元