首先,正則表達式不僅在Java里有,其它語言裡面也有,它是一個數學上的概念,各個語言中的正則表達式是它的不同形式的實現。
其次,編譯原理的詞法分析里,會用到正則表達式去匹配源程序中的各種token(記號),比如說
int a = 8;
里識別出:
類型名:int
變數名:a
運算符:=
數字:8
結尾分號:;
總之,二者有聯系,但不是一回事。
2. 《JAVA編譯原理》
網路書店去淘一下.
3. java、c語言,編譯原理,高手來下
程序編譯??
你的最終目的是開發編譯器還是做文法解釋器?還是你就是像學編程?
如果你像做編譯方面的研究,初中還太早了。有很多基礎知識你不懂沒有辦法學的。要學編譯原理只要要先學離散數學。
如果你僅僅是要學編程(基本的軟體開發),我建議你學標准C開始,唐浩強的那本C語言教程非常經典,而且也好懂。
如果你喲問題的話,給我郵件:danndy◎21cn.com,我盡力回答。不好意思,公司將QQ封了,我不能上QQ。
4. 用eclipse 編寫JAVA代碼時,他為什麼能自動識別語法錯誤及給出正確的寫法這是JAVA編譯器的哪種特性
這是靠eclipse自帶的插件實現的,的確屬於靜態分析。動態分析我不太了解,可能會涉及到jvm,但主要是在編譯器內獲取一些動態信息,如果想對java的多態進行分析就需要動態分析,即在編譯時獲取具體調用的類的信息。但如果是問eclipse的語法糾錯,遠沒涉及那麼高級的內容。
如果你去看eclipse文件夾下的plugins文件夾,你能找到類似org.eclipse.jdt.XXX.XXX的若干jar文件,那些包就是eclipse專門用以處理java代碼分析工作的jdt插件工具包。他能抽取java代碼的AST(抽象語法樹),也就是編譯時用到的數據結構,你若學過編譯原理就知道了,反正我還沒學。如果做一些java方面的逆向工程,你甚至可以引用eclipse的jdt包,將java項目的代碼通過相應介面(你可以在網上找到jdt的api和實例代碼)傳進去,獲取代碼中的類,欄位,方法,和更細節的信息。
而jdt中也包含檢測,處理語法錯誤的包,可以發現並糾正語法錯誤。這一特點還可以用來做一些正向工程(如自修改或動生成代碼)。
哦,還有,針對你的問題還要說,這點特性不是編譯器的,而是編輯器eclipse的。注意,絕對是編輯器的特點!雖然涉及到語法問題,但在eclipse糾錯時,還沒有調用編輯器,即程序還沒有編輯。只有在運行程序前eclipse才會調用編輯器。編譯一次不容易,每次糾錯都調用編譯器的話開銷太大,糾錯的反應速度絕對不會像平時eclipse做的那麼快。
實際上eclipse可以說就是由各種插件組成的,它本身只提供一個供各種插件運行的平台,本身功能很簡單,但就是通過向jdt這樣的插件包實現各種復雜的功能。
5. 計算機怎麼讀懂java代碼的原理
首先你需要懂得編譯原理這門學科,JDK將java代碼編譯成機器能夠識別的二進制位元組碼,然後用JVM(java虛擬機)來載入這些二進制位元組碼並進行解析(翻譯),然後形成指令並執行。jre其實就是java虛擬機的實現,全名叫做Java
Runtime
Environment
6. java關於this的編譯原理
java提供了一個this關鍵字,它是一個對象的默認引用,this關鍵字總是指向調用該方法的對象,根據this的出現位置不同,this作為對象的默認引用由兩種情形:
1.構造器中引用該構造器執行初始化
的對象;
2.在方法中引用調用引用該方法的對像;
this關鍵字最大的作用就是讓類中的一個方法,訪問該類的另一個方法或屬性。
7. 有沒有介紹java編譯原理的書籍推薦。現在在學java只是模仿代碼,但不知道為什麼程序要這樣寫,我
學Java必看書籍:Java編程規范,Effective Java第二版,Java並發編程實踐,Java解惑,ROBUST Java 中文版-Java異常處理、測試與調試
另外我也有學Java的課程老師給我們推薦:Java面向對象編程
8. 關於所謂java編譯原理執行順序
System.in
相當於一個緩沖池
裡面如果有內容了 馬上就會執行後面的內容
建議你看看java 中流文件的部分就能明白了
並不是像你想想的 到那行之後執行後面而是相當於 一個監聽的感覺 這個緩沖池一直存在 來了之後馬上進行後續處理 再來時再處理
9. Exception in thread "Thread-0" java.lang.NoClassDefFoundError: javax/mail/Authenticator at MyEmai
樓主, java的編譯原理是一樣的, 用到的類必須告訴jvm在哪. jvm是通過classpath變數 和 相對目錄層次去找相應的類. 沒找到就會報NoClassDefFoundError 如果是報jre中的Class沒找到 那麼應該檢查下環境變數, 如果是報自己寫的Class 那麼應該檢查下目錄層次是否是 import 中寫的那樣
當然也可以在 javac 使用 -classpath 設置類所在的路徑, 但是一般是設置環境變數classpath
例子 : javac -classpath \C \exam\JavaTest.java