注釋符就是用來標記注釋的符號,Java中有3種注釋符號
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的富縣網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1. 單行注釋:
從“//”開始到行末結(jié)束,均視為單行注釋。
2. 多行注釋:
從“/*”開始到“*/”結(jié)束,均視為多行注釋。
3. 文檔注釋:
從“/**”開始到“*/”結(jié)束,均視為文檔注釋。
所謂文檔注釋,是指用javadoc命令可以提取為Java API文檔的注釋內(nèi)容,也就是類的注釋和方法的注釋。
Java中沒有標識符的概念,有標識的概念。標識是指包名、類名、方法名、變量名、參數(shù)名。在你的代碼中,比如類名 slra、方法名 main、參數(shù)名 args,這些是標識
LL(1)就是向前只搜索1個符號,即與FIRST()匹配,如果FIRST為空則還要考慮FELLOW.
LR需要構(gòu)造一張LR分析表,此表用于當面臨輸入字符時,將它移進,規(guī)約(即自下而上分析思想),接受還是出錯.
LR(0)找出句柄前綴,構(gòu)造分析表,然后根據(jù)輸入符號進行規(guī)約.
SLR(1)使用LR(0)時若有沖突,不知道規(guī)約,移進,活移進哪一個,所以需要向前搜索,則只把有問題的地方向前搜索一次.
LR(1)1.在每個項目中增加搜索符.2.舉個列子如有A-α.Bβ,則還需將B的規(guī)則也加入.
LALR(1)就是假如兩個產(chǎn)生式集相同則將它們合并為一個,幾合并同心集.
最有效的方法是畫slr分析表,有移入-規(guī)約沖突,或者規(guī)約-規(guī)約沖突的就不是slr文法,沒有沖突就是slr文法。簡單的用follow集合是不能準確判斷它是不是slr文法的
是。
一、例如:證明下列文法是LL(1)文法但不是SLR(1)文法
S-AaAb|BbBa A-?(空值) B-?(空值)
1、首先該文法無左遞歸存在,沒有公共左因子。
其次:對于S→AaAb|BbBa FIRST(AaAb)={a} FIRST(BbBa)=
FIRST(AaAb)∩FIRST(BbBa)=Φ
所以該文法是LL(1)文法.
2、證明該文法不是SLR的。
文法的LR(0)項目集規(guī)范族為:
I0={S’→.S S→.AaAb S→.BbBa A→. B→.}
I1={ S’→ S. }
I2={ S→A.aAb }
I3={ S→B.bBa }
I4={ S→Aa.Ab A→. }
I5={ S→Bb.Ba B→. }
I6={ S→AaA.b }
I7={ S→BbB.a }
I8={ S→AaAb. }
I9={ S→BbBa. }
考察I0:
FOLLOW(A)={a,b} FOLLOW(B)={a,b} FOLLOW(A)∩FOLLOW(B)= {a,b}
產(chǎn)生規(guī)約-規(guī)約沖突,所以該文法不是SLR(1)文法。
二、構(gòu)造LR(1)自動機(沒有需要合并的狀態(tài)):
沒有狀態(tài)存在沖突,因而是LALR(1)文法。
構(gòu)造LR(0)自動機:在狀態(tài)I6,由于’a’∈FOLLOW(A),因而對于SLR(1)分析而言,存在移進-歸約,所以這一文法不是SLR(1)文法。
擴展資料:
它通過兩種方法做到這一點。首先,它在一個移進之前先考慮輸入記號以確保存在著一個恰當?shù)?DFA 。其次,使用構(gòu)造的非終結(jié)符的 Follow 集合來決定是否應(yīng)執(zhí)行一個歸約。令人吃驚的是,先行的這個簡單應(yīng)用的能力強大得足以分析幾乎所有的一般的語言構(gòu)造。
定義:SLR(1) 分析算法(SLR(1) parsing algorithm)。令s 為當前狀態(tài)(位于分析棧的頂部)。則動作可定義如下:
若狀態(tài)s 包含了格式A →a.Xb 的任意項目,其中X 是一個終結(jié)符,且X 是輸入串中的下一個記號,則動作將當前的輸入記號移進到棧中,且被壓入到棧中的新狀態(tài)是包含了項目A →aX.b 的狀態(tài)。
參考資料來源:百度百科-SLR(1)分析