44
MINI-BASIC MINI-BASIC Lexical box Lexical box จจจจจจจจจ จจจจจจจจจ 1. นนนนนนนนน นนนนนน 4205116 2. นนนนนนนนน นนนนนนนนนนนนน 4205150 3. นนนนนนนนนนนน น.นนนนนนนนนน 4205175 4. นนนนนนนนน นนนนนนนนนนนนน 4205432

MINI-BASIC Lexical box

Embed Size (px)

DESCRIPTION

MINI-BASIC Lexical box. จัดทำโดย 1. นายจักรินชวชาติ4205116 2. นายชานนท์ โชคธัญญาวัฒน์4205150 3. นายทรงศักดิ์จ.เจริญพานิช4205175 4. นายสราวุธวิริยะวณิชกุล4205432 5. นายเอกชัยฟังนิยมอมมตะ4205523. MINI-BASIC Lexical box. Introduction. MINI-BASIC. - PowerPoint PPT Presentation

Citation preview

Page 1: MINI-BASIC  Lexical box

MINI-BASIC MINI-BASIC Lexical boxLexical box

จั�ดทำ��โดยจั�ดทำ��โดย 1. นายจั�กริน ชวชาติ

4205116

2. นายชานนท์� โชคธั�ญญาว�ฒน�4205150

3 . นายท์ริงศั�กดิ์� จั.เจัริญพานช4205175

4. นายสริาว�ธั วริยะวณิชก�ล4205432

5. นายเอกช�ย ฟั!งนยมอมมติะ4205523

Page 2: MINI-BASIC  Lexical box

MINI-BASIC MINI-BASIC Lexical boxLexical box

IntroductionIntroduction

Page 3: MINI-BASIC  Lexical box

MINI-BASIC เป็$นโป็ริแกริมแบบเริ'ยงบริริท์�ดิ์ซึ่)*ง จัะเริ*มติ+นดิ์+วยติ�วเลข โดิ์ยท์'*ติ�วเลขเหล.าน'/เริาเริ'ยกว.า

หมายเลขบริริท์�ดิ์(Line number) หมายเลขบริริท์�ดิ์ม' ไว+เพ1*อใช+ในการิริะบ�บริริท์�ดิ์แยกบริริท์�ดิ์ ส.วนท์'*เหล1อ

นอกจัากหมายเลขบริริท์�ดิ์เริาเริ'ยกว.า ค3าส�*ง(statement) หมายเลขบริริท์�ดิ์เป็$นติ�วช.วยบอกล3าดิ์�บของค3าส�*งท์'*ถู5กป็ริะมวลผล(execute) ให+เป็$นไป็

ติามล3าดิ์�บของหมายเลขบริริท์�ดิ์น�/น ยกเว+นถู+าค3าส�*งน�/นม' ค3าส�*ง เช.น GOTO , IF, FOR,NEXT,GOSUB และ

RETURN และเม1*อ compiler เจัอช.องว.างจัะไม.สนใจัดิ์�งน�/นเริาสามาริถูเพ*มช.องว.างเพ1*อความช�ดิ์เจันไดิ์+

MINI-BASICMINI-BASIC

Page 4: MINI-BASIC  Lexical box

ติ�วเลข แบ.งออกไดิ์+ 2 ชนดิ์ค1อ1. ล3าดิ์�บของเลขฐานสบ จัะม'จั�ดิ์ท์ศันยมหริ1อไม.ม'

ก8ไดิ์+ และม'เคริ1*องหมายอย5.ข+างหน+าหริ1อไม.ม'ก8ไดิ์+ เช.น3.4715 , -1234 , 2

2. ล3าดิ์�บของเลขฐานสบ เหม1อนดิ์�งข+อ 1. แติ.จัะ ติามดิ์+วยส�ญล�กษณิ� E และติามดิ์+วยล3าดิ์�บของเลขฐาน

สบซึ่)*งม'เคริ1*องหมายหริ1อไม.ม'ก8ไดิ์+ เช.น 1234E - 11 , 12.34E - 9 , .00000001234E0

ติ�วแป็ริติ�วแป็ริจัะแสดิ์งดิ์+วยอ�กษริติ�วเดิ์'ยวหริ1ออาจัจัะเป็$น

ติ�วอ�กษริติ�วเดิ์'ยวแล+วติามดิ์+วยติ�วเลขหน)*งติ�ว เช.น A , X , Y1 , E3 , Q0

Page 5: MINI-BASIC  Lexical box

นพจัน�ท์างคณิติศัาสติริ� นพจัน�ท์างคณิติศัาสติริ�ม'ไว+เพ1*อการิค3านวณิค.า

ซึ่)*งใช+ติ�วเลข ติ�วแป็ริ และติ�วกริะท์3า(operator) ท์าง คณิติศัาสติริ� 5 ติ�ว ค1อ + , - , * , / ริวมท์�/งวงเล8บเป็:ดิ์

และวงเล8บป็:ดิ์มาป็ริะกอบก�น นพจัน�ท์างคณิติศัาสติริ�ติ�ว กริะท์3า 2 ติ�วไม.สามาริถูอย5.ติดิ์ก�นไดิ์+

ติ�วอย.าง ของ unary operator- A + B , - (A*B ) , C* (-A*B ) ติ�วอย.าง ของ นพจัน�ท์�*วๆไป็A1 + B * ( C + D ^ ( C + E ) )

Page 6: MINI-BASIC  Lexical box

** นพจัน� ซึ่)*งป็กติจัะท์3าจัากซึ่+ายไป็ขวายกเว+น** 1. ถู+าม'วงเล8บจัะท์3าในวงเล8บก.อน แล+วจั)งค3านวณิติาม

ล3าดิ์�บติ.อไป็ 2. ยกก3าล�งจัะถู5กท์3าก.อนค5ณิ และหาริ , ค5ณิและหาริ

จัะถู5กท์3าก.อนบวกและลบติ�วอย.าง แสดิ์งล3าดิ์�บข�/นติอนในนพจัน�

*A + ( B / ( C + D ) F ^ G ^ ( H + B ) + C 7 2 1 6 4 5 3

8

Page 7: MINI-BASIC  Lexical box

1) ค3าส�*งในการิก3าหนดิ์ค.า ริ5ป็แบบ LET < ติ�วแป็ริ > = <นพจัน�ท์าง

คณิติศัาสติริ�> นพจัน�ท์างคณิติศัาสติริ� จัะท์3าการิค3านวณิค.า

ก.อนแล+วน3าค.าท์'*ไดิ์+มาให+ก�บติ�วแป็ริติ�วอย.าง LET X1 = Y1 + 12.6 * Z + X12) ค3าส�*ง GOTO

ริ5ป็แบบ GOTO <หมายเลขบริริท์�ดิ์>เป็$นค3าส�*งควบค�มการิท์3างานของโป็ริแกริมโดิ์ยจัะ

กริะโดิ์ดิ์ไป็ย�งหมายเลขบริริท์�ดิ์ท์'*ก3าหนดิ์ เช.น GOTO 75

Page 8: MINI-BASIC  Lexical box

3) ค3าส�*งเง1*อนไข ริ5ป็แบบ < นพจัน�ท์างคณิติศัาสติริ�> < ติ�วกริะ

ท์3าป็ริ'ยบเท์'ยบ><นพจัน�ท์างคณิติศัาสติริ�>GOTO<หมายเลขบริริท์�ดิ์>

ติ�วกริะท์3าเป็ริ'ยบเท์'ยบ ค1อ = , <> , < ,<=, > ,>= ถู+าการิเป็ริ'ยบเท์'ยบเป็$นจัริงจัะท์3าในค3าส�*งติามหมายเลข

ท์'*ริะบ�ไว+ แติ.ถู+าเป็$นเท์8จัจัะไป็ท์3าในค3าส�*งถู�ดิ์ไป็ติ�วอย.าง IF X > Y GOTO 12

IF Z + ( X * Y ) = X1 + 12 GOTO 75

Page 9: MINI-BASIC  Lexical box

4) ค3าส�*ง FOR และ NEXT ริ5ป็แบบ ม' 2 ริ5ป็แบบ ค1อFOR <ติ�วแป็ริ> = <นพจัน�ท์าง

คณิติศัาสติริ�>TO<นพจัน�ท์างคณิติศัาสติริ�2>STEP<นพจัน�ท์างคณิติศัาสติริ�3>

FOR<ติ�วแป็ริ> = <นพจัน�ท์างคณิติศัาสติริ�>TO<นพจัน�ท์างคณิติศัาสติริ�2>ใช+ในการิท์3างานท์'*ซึ่3/าก�น(loop) ของโป็ริแกริม ริ5ป็แบบ

ท์'* 2 จัะถู5กแป็ลเหม1อนริ5ป็แบบแริกแติ.จัะม'การิเพ*มข)/นท์' ละ 1 ริ5ป็แบบค3าส�*ง FOR เพ1*อเข+าส5.โป็ริแกริมท์3าซึ่3/า

แล+วจัะท์3าค3าส�*งย.อย ๆ จันกริะท์�*งถู)งค3าส�*ง NEXT เป็$นการิคริอบริอบการิท์3างาน 1 ริอบ

ริ5ป็แบบ NEXT<ติ�วแป็ริ>

Page 10: MINI-BASIC  Lexical box

โดิ์ยท์�*วไป็ติ�วแป็ริน'/ติ+องเหม1อนก�บติ�วแป็ริของค3าส�*งFORติ�วอย.าง FOR X = 1 TO 100 STEP 5 LET W = X + Y + ZLET Z= X* YNEXT X

ในความเป็$นจัริง ค3าส�*งท์'*อย5.ใน loop ริะหว.างค3าส�*งNEXT จัะถู5กป็ริะมวลผลเกนจั3านวนคริ�/งท์'*ริะบ�ในค3าส�*งFOR ค.าของติ�วแป็ริจัะเพ*มข)/นติามค.าของ step size

Page 11: MINI-BASIC  Lexical box

5) ค3าส�*ง GOSUB และ RETURN ริ5ป็แบบ GOSUB <หมายเลขบริริท์�ดิ์>

ท์�/ง 2 ค3าส�*งเป็$นค3าส�*งท์'*จัะก3าหนดิ์และเริ'ยกใช+โป็ริแกริม ย.อย ค3าส�*ง RETURN สามาริถูม'ไดิ์+มากกว.า 1 ค3าส�*ง

และการิออกจัาก subroutine ท์3าไดิ์+โดิ์ยการิใช+ค3าส�*งRETURN เท์.าน�/น6) ค3าส�*ง END

ริ5ป็แบบ END ท์�กโป็ริแกริมติ+องม'ค3าส�*ง END เพ'ยงค3าส�*งเดิ์'ยวเป็$นค3า

ส�*งส�ดิ์ท์+าย( หมายเลขบริริท์�ดิ์มากท์'*ส�ดิ์ )7) ค3าส�*ง REM

ริ5ป็แบบ REM <ล3าดิ์�บอ�กขริะ> ค3าส�*งน'/เป็$นค3าส�*งท์'*ใช+ในการิแท์ริก comment

Page 12: MINI-BASIC  Lexical box

MINI-BASIC MINI-BASIC Lexical boxLexical box

The Token SetThe Token Set

Page 13: MINI-BASIC  Lexical box

THE TOKEN SETTHE TOKEN SET

Token น�/นป็ริะกอบดิ์+วย 2 ส.วน ค1อ CLASS ก�บVALUE

เริาจัะสมมติว.าม' routine ช1*อ CREATE TOKEN ซึ่)*ง ท์3าการิ interface ก�บ syntax box โดิ์ย CREATE

TOKEN จัะเป็$น routine ส3าหริ�บการิเข'ยน token ลงใน แฟั<มข+อม5ลริะดิ์�บกลาง (Intermediate File ) เม1*อเริ'ยกใช+

CREATE TOKEN routine เริาจัะสมมติว.าติ�วแป็ริท์'*ช1*อ C LASS REGISTER จัะถู5กก3าหนดิ์ค.าซึ่)*งแสดิ์งถู)ง class

ของ token และในส.วนของ value ของ token จัะถู5ก ก3าหนดิ์ค.าอย.างไริน�/นน�/นข)/นอย5.ก�บ class ของ token ท์'*

เก'*ยวข+อง เริาจัะพจัาริณิา token แติ.ละติ�ว ดิ์�งน'/

Page 14: MINI-BASIC  Lexical box

LINE TOKEN (line number)ถู5กใช+เพ1*อบอก บริริท์�ดิ์ จัะอย5.ในติ3าแหน.งเริ*มติ+นของ statement และ

value ของ token น'/ จัะเป็$น pointer ท์'*ช'/ไป็ย�ง- symbol table ท์'*เก8บ line number น�/นไว+ และค.า

pointer น'/จัะเก8บในติ�วแป็ริช1*อ POINTER REGISTER OPERAND TOKEN ใช+เพ1*อริะบ�ติ�วแป็ริหริ1อค.าคงท์'*

แติ.ไม.สามาริถูใช+ไดิ์+ก�บติ�วแป็ริท์'*อย5.หล�งค3าเหล.าน'/ NEXT,F OR และ LET โดิ์ยติ�วแป็ริท์'*ยกเว+นเหล.าน'/น� /นเป็$นส.วนหน)*ง ของ NEXT,FOR และ ASSIGN token ส.วน value ของ OPERAND token ค1อ pointer ช'/ไป็ย�งติาริางท์'*

เก8บติ�วแป็ริหริ1อค.าคงท์'* pointer น'/จัะถู5กเก8บไว+ในติ�วแป็ริ ช1*อ POINTER REGISTER

ARITHEMETIC OPERATOR TOKEN จัะเป็$นติ�ว ริะบ�ส�ญล�กษณิ� - +, , *, / และ ^ operater เหล.าน'/จัะถู5ก แท์นดิ์+วยติ�วเลข - 15 ติามล3าดิ์�บ ซึ่)*งติ�วเลขเหล.าน'/น� /นจัะ

เป็$น value ของ token และถู5กเก8บในติ�วแป็ริช1*อ VALUE REGISTER โดิ์ยการิใช+ transliterator rou

tine

Page 15: MINI-BASIC  Lexical box

RELATION OPERATOR TOKEN เป็$นติ�วริะบ�โดิ์ย ส�ญล�กษณิ� =, <, >, <=, >= และ <> operator

เหล.าน'/จัะถู5กแท์นดิ์+วยแท์นดิ์+วยติ�วเลข - 16 ติามล3าดิ์�บ จัะเก8บค.าติ�วเลขเหล.าน'/ในติ�วแป็ริช1*อ RELATIONAL

REGISTER

NEXT TOKEN ใช+ค3าว.า NEXT และติ�วแป็ริท์'*ติามNEXT มา value ของ NEXT token เป็$น pointer ช'/ไป็

ย�ง symbol table ท์'*ติริงก�บติ�วแป็ริน�/นและเก8บใน ติ�วแป็ริท์'*ช1*อ POINTER REGISTER ในล�กษณิะ เดิ์'ยวก�นก�บ OPERAND TOKEN ในการิ interface

น�/นเริาใช+ NEXT K3 ซึ่)*งใช+ 2 token ติ�วแริกค1อ NEXT อ'กติ�วค1อ K3 อย.างไริก8ติามเริาจัะใช+แค. 1 token เพ1*อท์'*

จัะแสดิ์งในล�กษณิะน'/วธั'น'/จัะเป็$นการิลดิ์จั3านวนคริ�/งในการิ CREATE TOKEN ซึ่)*งความจัริงแล+ว token ท์'*ใช+ในการิ compile ไม.จั3าเป็$นติ+องเหม1อนก�บ ติอน programmin

g

Page 16: MINI-BASIC  Lexical box

ASSIGN TOKEN ใช+ค3าว.า LET ติามดิ์+วยติ�วแป็ริและ เคริ1*องหมาย "=" ส.วน value ของ ASSIGN token

เป็$น pointer ช'/ไป็ย�ง symbol table ท์'*เก8บติ�วแป็ริน�/น และค.า pointer จัะเก8บในติ�วแป็ริช1*อ POINTER

REGISTER เริาจัะใช+ lexical box ย.อข+อม5ลใน source statement โดิ์ยใช+ token 1 token อธับายค3า 3 ค3า

FOR TOKEN ใช+ค3าว.า FOR ติามติ�วแป็ริและเคริ1*องหมาย "=" ส.วน value ของ FOR token เป็$น pointer ช'/ไป็

ย�ง symbol table ของติ�วแป็ริน�/น และค.า pointer น'/ เก8บในติ�วแป็ริช1*อ POINTER REGISTER แติ.ล�กษณิะ

ของ token น'/ติ.างจัาก ASSIGN token

GOTO TOKEN ใช+ค3าว.า GOTO และติามดิ์+วย line number GOTO tokenเป็$นการิริวมเอาหล�กการิริวม

แล+วใส.ใน 1 token ส.วน value ของ GOTO token เป็$น pointer ช'/ไป็ย�ง symbol table ดิ์+วย line

number โดิ์ยค.าของ pointer เก8บในติ�วแป็ริช1*อ POIN TER REGISTER

Page 17: MINI-BASIC  Lexical box

GOSUB TOKEN ใช+ค3าว.า GOSUB ติามดิ์+วย line number ในท์3านองเดิ์'ยวก�บ LINE และ GOTO ส.วน

value ของ GOSUB token เป็$น pointer ช'/ไป็ย�ง symbol table ดิ์+วย line number โดิ์ยค.าของ

pointer เก8บในติ�วแป็ริช1*อ POINTER REGISTER

LEFT PAREN และ RIGHT PAREN TOKEN แท์น วงเล8บเป็:ดิ์และวงเล8บป็:ดิ์ ติามล3าดิ์�บ token เหล.าน'/จัะไม.ม'

value

IF , RETURN , END , TO และ STEP TOKEN เป็$น reserved word และ token เหล.าน'/จัะไม.ม' value

เช.นก�น COMMENT TOKEN ใช+ค3าว.า REM และติ�วอ�กษริท์'*

ติามในบริริท์�ดิ์น�/น ซึ่)*ง token น'/ไม.ม' value และ syntax box ใช+ token น'/ เพ1*อติริวจัสอบหาติ3าแหน.งท์'*ไม.ถู5กติ+อง

ของการิวาง comment ติ�วอย.างเช.น 13 1IF A REM THIS IS ABSURD

lexical box จัะสริ+าง COMMENT TOKEN ข)/นเพ1*อ และ syntax box จัะท์3าการิติริวจัสอบความถู5กติ+อง

Page 18: MINI-BASIC  Lexical box

ERROR TOKEN เป็$น token ท์'*lexical box ใช+บอกsyntax box ว.า ม' error เกดิ์ข)/น ท์3าให+ syntax box

สามาริถูหล'กเล'*ยงการิบอก error คริ�/งท์'* 2 token น'/อาจั เกดิ์ข)/นไดิ์+เม1*อ lexical box ไม.สามาริถูแยก source

statement เป็$น token ท์'*ม'ความหมายไดิ์+ ERROR token น'/อาจัเกดิ์ข)/นไดิ์+ถู+า reserved word ม'การิสะกดิ์

ผดิ์เช.น RETARN หริ1อ การิเข'ยน constants ท์'*ท์'*ผดิ์ริ5ป็แบบเช.น3.6E.3 ส.วน value ของ token น'/ไม.ม' value

ENDMARKER TOKEN จัะถู5กแสดิ์งเม1*อพบ End of file และในส.วนน'/จัะไม.ม' value

ข+อม5ลท์'*ติ+องการิในการิ CREATE TOKEN routine ม'ดิ์�งน'/CLASS REGISTER - Class of token

POINTER REGISTER - For pointer to symbol-table entry

VALUE REGISTER - For the number of an arithmetic operator

RELATIONAL REGISTER - For the number of a relational operator

Page 19: MINI-BASIC  Lexical box

MINI-BASIC MINI-BASIC Lexical boxLexical box

The Identification The Identification ProblemProblem

Page 20: MINI-BASIC  Lexical box

THE IDENTIFICATION THE IDENTIFICATION PROBLEMPROBLEM แบบแผนส3าหริ�บการิแก+ป็!ญหาการิแยกค3า 4

ป็!ญหาค1อ1. The detection of reserved words2. The identification of variable3. The identification of the line numbers4. The identification of relational operators

Page 21: MINI-BASIC  Lexical box

1. The detection of reserved words ( ก�รตรวจัห�คำ�� reserved words )

การิติริวจัหา reserved words น'/ เหมาะท์'*จัะใช+ วธั' prefix detection โดิ์ยม' finite set ของค3าดิ์�งน'/

{END,FOR,GOSUB,GOTO,IF,LET,NEXT,RE M,RETURN,STEP,TO} เริาสามาริถูติริวจัหาค3า

เหล.าน'/ไดิ์+ติ�/งแติ.เริ*มติ+น แติ.ไม.สามาริถู ติริวจัหาจั�ดิ์ส/นส�ดิ์ ของค3าไดิ์+โดิ์ยป็ริาศัจัากการิน3า finite set มาพจัาริณิา

ดิ์+วย วธั'การิแก+ป็!ญหาท์'*ถู5กเล1อกข)/นมาน�/นอย5.ภายใติ+การิ จั3าลองแบบของ prefix detection machine ซึ่)*ง

แสดิ์งในริ5ป็ 43. เริาใช+ transition vector ในการิ เป็ล'*ยนติ3าแหน.ง เริ*มดิ์+วยติ�วอ�กษริติ�วแริก หล�งจัากน�/น

ใช+ Transition list ส3าหริ�บ - Sub sequence trans ition ( transition ท์'*เหล1อนอกจัาก fix transition

) เม1*อเริ*มค3า reserved words อ�กษริติ�วแริกจัะใช+ เป็$น index ใน Starting Vector

Page 22: MINI-BASIC  Lexical box

A

B

C

D

E 1

F 3

G 5

H

I

J 12

K

L 14

M

N

O

P

Q

R 17

S 23

T 26

U

V

W

X

CHARACTER VALUE TRANSITION ALTERNATIVE

1 N B1d

2 D A2q

3 O B1d

4 R F1b

5 O B1d

6 T B1d 8

7 O E1a

8 S B1d

9 U B1d

10 B E1b

11 F A2r

12 E B1d

13 T F1a

14 E B1d

15 X B1d

16 T C1a

17 E B1d

18 T B1d 22

19 U B1d

20 R B1d

21 N A2s

22 M G1a

23 T B1d

24 E B1d

25 P A2t

26 O A2u

Page 23: MINI-BASIC  Lexical box

2. The identification of variables ( ปั�ญห�ในก�รแยกต�วแปัร )

จัะใช+วธั'การิ index ไป็ย�ง symbol table เริา สมมติว.าพ1/นท์'* 286 แริกของติาริาง ถู5กก3าหนดิ์

ค.าดิ์+วยติ�วแป็ริท์'*เป็$นไป็ไดิ์+ 286 ติ�วแป็ริ ( ติ�วแป็ริ ท์'*เป็$นอ�กษริเดิ์'*ยว หริ1อติ�วอ�กษริท์'*ติามดิ์+วยติ�วเลขเพ'ยง

หน)*งหล�กก8ไดิ์+ ) ส.วนท์'*เหล1อของ symbol table จัะ เป็$นท์'*ส3าหริ�บ constant,label etc.

เม1*อพบติ�วอ�กษริของติ�วแป็ริ ติ�วเลขท์'*ติริงก�น (index by letter) ก�บเลข - 126 จัะเพ*มค.าให+ก�บ base

address ของ symbol table และเก8บค.าท์'*ไดิ์+ไว+ใน Pointer register

ถู+าติ�วอ�กษริติามมาเป็$นติ�วเลข สมมติว.าเป็$น d จัะบวกจั3านวน 26* 1(d+ ) เข+าไป็ไว+ใน Pointe

r Register วธั'น'/เริาเริ'ยกว.า index method หริ1อ i- ndexed approach โดิ์ย d เป็$นค.าของติ�วเลขท์'*

ติามหล�งติ�วอ�กษริในติ�วแป็ริน�/น

Page 24: MINI-BASIC  Lexical box

3 . The identification of linenumbers ( ปั�ญห�ในก�รแยกหม�ยเลขบรรทำ�ด )

จัะแก+ไดิ์+โดิ์ยสริ+างค.าติ�วเลขของ line number ท์'*ถู5กป็ริะมวลโดิ์ยเคริ1*อง ค.าของ Value

part ของ Line Token จัะเก8บค.า Pointer ท์'*ช'/ไป็ ย�ง symbol table ท์'*เก8บ line number น�/นไว+

ดิ์�งน�/นเริาติ+องริวมท์�กอย.างท์'* line number น�/นอ+าง ถู)ง ให+ไว+ใน symbol table เดิ์'ยวก�นเท์คนคท์'*จัะใช+ ค1อ List Searching Technique บน List ของ

- Line number symbol table entries โดิ์ยจัะ ใช+วธั' Hashing

Hash function = Line.no MOD P P เป็$น จั3านวนเฉพาะ ซึ่)*งจัะม'ค.าเท์.าไหริ.น�/น

สามาริถูน�/นเริาก3าหนดิ์เองไดิ์+ และสามาริถู เป็ล'*ยนแป็ลงไดิ์+ง.ายข)/นอย5.ก�บป็!จัจั�ยบางป็ริะการิ เช.น

เน1/อท์'*ว.างของ Storage ใน compiler และขนาดิ์ ของ source program ท์'*จัะสามาริถู compile ใน

ข�/นติ+นจัะให+ P เท์.าก�บ 101

Page 25: MINI-BASIC  Lexical box

4 . The identification of relational operators ( ปั�ญห�ในก�รแยกต�วเปัร�ยบเทำ�ยบต��งๆ )

จัะม' set ของ relational operator ดิ์�งน'/ค1อ { =,<,>,<=,>=,<>} เริาใช+วธั'การิ index

method ซึ่)*งอาศั�ยข+อเท์8จัจัริงท์'*ว.าใน 1 word น�/น จัะ ป็ริะกอบดิ์+วย 1 หริ1อ 2 เคริ1*องหมาย เม1*อม'การิติริวจั

พบเคริ1*องหมายติ�วแริก จัะไดิ์+ค.าติ�วเลข - 13 และไป็ใส. ไว+ใน RELATION REGISTER และเม1*อเคริ1*องหมาย ติ�วท์'* 2 ถู5กติริวจัพบ ค.าติ�วเลขท์'*ส�มพ�นธั�ก�บ

เคริ1*องหมายน�/น จัะถู5กเก8บไว+ใน VALUE REGISTER แล+วเม1*แ พบว.าม' 2 เคริ1*องหมายติาริาง Relational

Table ก8จัะถู5กเริ'ยกใช+ ริายละเอ'ยดิ์ของวธั'น'/แสดิ์งอย5.ใน ริ5ป็ 44.

โดิ์ยริ5ป็ท์'* 4(a) แสดิ์งค.าท์'*ส�มพ�นธั�ริะหว.างค.าติ�วเลข ของเคริ1*องหมายก�บติ�วเคริ1*องหมายน�/น ( Relational

Operators) ริ5ป็ท์'* 4(b) แสดิ์ง Relational table ของติ�วม�นเอง

และสมาชกท์'*ม'ค.าเป็$น 0 จัะหมายถู)งสถูานการิณิ�ติ.างๆ เช.น ><,== ท์'*เป็$นการิป็ริะกอบก�นของเคริ1*องหมายท์'*

ไม.ถู5กติ+อง (error)

Page 26: MINI-BASIC  Lexical box

VALUE MEANING

1 =

2 <

3 >

4 <=

5 >=

6 <>

0 1 (=) 2 (<) 3 (>)1 (=) 0 0 02 (<) 4 (<=) 0 6 (<>)3 (>) 5 (>=) 0 0

(a)

VALUE REGISTER

(b)

Fig. 4.4 (a) Values of RELATIONAL OPERATOR token ; (b) Relational table

Page 27: MINI-BASIC  Lexical box

MINI-BASIC MINI-BASIC Lexical boxLexical box

The Transliterator The Transliterator

Page 28: MINI-BASIC  Lexical box

การิใช+ transliterator เป็$นการิพยายามท์'*จัะ ป็ริะหย�ดิ์จั3านวน character เพ1*อให+ม' character

token เหล1อน+อยท์'*ส�ดิ์ การิริวมกล�.มของcharacter แสดิ์งดิ์�งริ5ป็ท์'* 4.5 การิ interface

ของ transliterator ก�บริะบบป็ฏิบ�ติการิของ คอมพวเติอริ�และก�บส.วนท์'*เหล1อของ lexical box

เริาจัะไม.ลงริายละเอ'ยดิ์มากน�ก แติ.จัะพบเม1*อเริาสริ+างstatement “ข)/นมา เช.น get input and do

state A transition.” เริาสมมติว.าtrasliterator จัะเก8บค.าของ character tokens

ในติ�วแป็ริ VALUE REGISTER ส3าหริ�บส.วนอ1*นๆเริาจัะพจัาริณิาดิ์�งน'/

THE TRANSLITERATORTHE TRANSLITERATOR

Page 29: MINI-BASIC  Lexical box

character token LETTER ใช+แท์นติ�วอ�กษริท์�/งหมดิ์character token DIGIT ใช+แท์นค.าติ�วเลขติ.างๆcharacter token ARITH–OP ใช+แท์นเคริ1*องหมายท์างคณิติศัาสติริ�character token LEFT–PAR, RIGHT–PAR

และ DOT ใช+แท์นวงเล8บเป็:ดิ์ วงเล8บป็:ดิ์และจั�ดิ์ ติามล3าดิ์�บcharacter token BLANK ใช+แท์นช.องว.างrubout และ linefeed (เว+นบริริท์�ดิ์)character token LINE-END ใช+แท์นส�ญล�กษณิ�carriage returncharacter token FILE-END ค1อส*งท์'*ส.งไป็ย�งlexical box เพ1*อบอกว.าไม.ม'ข+อม5ลเข+าอ'กแล+ว (no more character)

Page 30: MINI-BASIC  Lexical box

ติาริางTransliterator

Page 31: MINI-BASIC  Lexical box

ติาริาง Transliterator (ติ.อ)

Page 32: MINI-BASIC  Lexical box

ติาริาง Transliterator (ติ.อ)

Page 33: MINI-BASIC  Lexical box

ติาริางTransliterator (ติ.อ)

Page 34: MINI-BASIC  Lexical box

ติาริาง Transliterator (ติ.อ)

Page 35: MINI-BASIC  Lexical box

ติาริาง Transliterator (ติ.อ)

Page 36: MINI-BASIC  Lexical box

ติาริาง Transliterator (ติ.อ)

Page 37: MINI-BASIC  Lexical box

MINI-BASIC MINI-BASIC Lexical boxLexical box

The lexical boxThe lexical box

Page 38: MINI-BASIC  Lexical box
Page 39: MINI-BASIC  Lexical box

State A1 เป็$น starting state และใช+ท์'*จั�ดิ์เริ*ม ติ+นของบริริท์�ดิ์ซึ่)*ง token แริกจัะติ+องเป็$น Line

number ติ.อไป็เริาก8จัะมาพ5ดิ์ถู)งสอง control state

30 1* 1 10IF G < G (G+ ) GOTO

ติ�ว C จัะป็ริากฏิอย5.ถู)ง 4 คริ�/งดิ์+วยก�นใน statement น'/ โดิ์ยท์'*ติ�ว C สามติ�วแริก ( ค1อ ติ�วท์'*อย5.หล�ง IF , ติ�วท์'*อย5.ถู�ดิ์

มาจัาก Relational operator , และติ�วท์'*อย5.หล�งเคริ1*องหมายวงเล8บ ) โดิ์ยติ�ว C น'/จัะเป็$นติ�วเริ*มติ+นของ MIN- I BASIC variable และติ�ว C ท์'*ป็ริากฏิติ�วส�ดิ์ท์+าย (หล�ง

เคริ1*องหมายวงเล8บป็:ดิ์ ) ไม.ไดิ์+เป็$นติ�วเริ*มติ+นของติ�วแป็ริ แติ. เป็$นติ�วอ�กษริติ�วแริกของ Reserved word

State A2 จัะถู5กใช+ในสถูานการิณิ�ท์'*ติ�วอ�กษริควริจัะ เป็$นติ�วอ�กษริติ�วแริกของติ�วแป็ริ

State A3 จัะถู5กใช+ในกริณิ'ท์'*ติ�วอ�กษริเป็$นติ�วเริ*มติ+น ของ Reserved word State จัะถู5กติ�ดิ์สนว.าควริจัะเป็$น

state ไหน โดิ์ยดิ์5จัาก Lexical token ก.อนหน+า ในกริณิ' ท์'*ไม.ม'การิแยกแยะค3าว.า ค3าไหนเป็$น Reserved word ถู+า

เริาพบค3าว.า GOTO ก8จัะม'การิแป็ลค3าว.า GOTO ออกมา เป็$น CCCCCCC C ติามดิ์+วย operand O operand T และ operand O ติามล3าดิ์�บ

Page 40: MINI-BASIC  Lexical box

ในการิอธับายเก'*ยวก�บ Transition routine จัะแสดิ์งให+เห8นถู)งส.วนติ.างๆท์'*ถู5กสริ+างข)/นเพ1*อท์'*จัะติอบสนองในการิ

แป็ล state ท์'*เหม1อนก�น ในกริณิ'ของ control state ติ�วน3าของ Transition ในสถูานการิณิ�เหล.าน'/จัะริอ actio

n ท์'*ติ+องการิเพ1*อให+ Token ก.อนหน+าน'/สมบ5ริณิ�เพ1*อท์'*จัะ ริะบ�หน+าท์'*ไดิ์+อย.างเฉพาะเจัาะจัง โดิ์ยจัะแสดิ์งให+ผ5+อ.านไดิ์+เห8น

ถู)ง state ท์'* Transition สริ+างข)/น State B1 ใช+ในการิค+นหา Reserved word ซึ่)*ง ม�นจัะใช+ติ�วแป็ริ DETECTION REGISTER ในการิเก8บค.า

pointer ของม�นไว+ใน Detection Table ดิ์�งริ5ป็ท์'*4. 3 ซึ่)*งไดิ์+อธับายมาก.อนหน+าน'/แล+ว เม1*อ input ท์'*ริ �บเข+ามา เป็$น ติ�วอ�กษริ (Letter) สถูานะถู�ดิ์ไป็ (Next state) จัะ

ถู5กติ�ดิ์สนโดิ์ย transition M1 ซึ่)*งเล1อกสถูานะถู�ดิ์ไป็จัาก Detection Table การิท์'* M1 จัะถู5กเฉพาะเจัาะจังไดิ์+น�/น

จัะติ+องหล�งจัากท์'*ม'การิท์3า transition ท์'*เหล1อก.อน State C1 และ 2 ใช+ในการิหาติ�วแป็ริท์'*เกดิ์ข)/น

โดิ์ย state ท์�/งสองน'/จัะถู5กใช+ในการิค3านวณิค.า value part ของ token OPERAND และ NEXT

State C1 ใช+ในการิค+นหาติ�วอ�กษริ และ

Page 41: MINI-BASIC  Lexical box

State C2 ใช+ในการิติริวจัหา optional digit ซึ่)*ง จัะติามหล�งติ�วอ�กษริ ในกริณิ'ท์'* เริาไม.สามาริถูจัะบอกไดิ์+ว.า

ติ�วแป็ริน�/นเป็$นติ�วเริ*มติ+นหริ1อไม. จันกว.าจัะพบติ�วอ�กษริติ�ว แริก ในกริณิ'น'/ state C2 จัะถู5กเริ'ยกใช+โดิ์ยติริงและ

Transition routine จัะติ+องถู5กน3าไป็ใช+ริ.วมก�บการิ ท์3างานเม1*อ state C1 เข+าริ.วม ในส.วนน'/ จัะม'การิ load

CLASS REGISTER ก�บช1*อของ token ท์'*เป็$นกริะบวน การิ มาเป็$น information ดิ์+วย มฉะน�/นจัะเกดิ์การิส5ญเส'ย

อย.างริวดิ์เริ8ว State C1 ควริจัะถู5กใช+เฉพาะหล�งค3าว.า NE XT เท์.าน�/น

State D1 ถู)ง 6 ถู5กใช+เพ1*อค3านวณิค.า value part ของ - MINI BASIC โดิ์ย state เหล.าน'/จัะติริงก�บ

State 1, 23 , 4 , 5 , 6 และ 7 ใน processor ของ section 2.14 โดิ์ย section 2.14 น'/ เริาใช+ติ�วแป็ริ 4

ติ�วดิ์+วยก�นค1อ NUMBER REGISTER , EXPONENT REGISTER , COUNT REGISTER และ SIGN

REGISTER ในการิค3านวณิข�/น Intermediate โดิ์ยเริา ส�นนษฐานให+ม'งาน COMPUTE CONSTANT ซึ่)*งใช+

ติาริางส�ญล�กษณิ�ใหม. ใช+ NUMBER REGISTER และ EXPONENT REGISTERในการิสริ+างติ�วแท์นของค.า

คงท์'* จัากน�/นเก8บติ�วแท์นน'/ไว+ในติาริางใหม. และใช+ pointer ท์'*เก8บอย5.ใน POINTER REGISTER ช'/ไป็ ย�งติาริาง

Page 42: MINI-BASIC  Lexical box

โดิ์ยงานของ Transition เป็$นส*งจั3าเป็$นส3าหริ�บ section 2.14 และ 3 Exit routine ค1อ 1 2YES YES

และ YES3 ของส.วน 214. ถู5กใช+ใน routine น'/ ยกเว+นแติ.ว.า Transition routine น'/ไม.ยาวกว.า Exit

routine พวกม�นก8จัะถู5กเป็ล'*ยนช1*อเป็$น YES1D YES2D และ YES3D ติามล3าดิ์�บ เพ1*อแสดิ์งให+เห8นถู)งความส�มพ�นธั�

ของพวกม�นก�บค.าคงท์'*ของกริะบวนการิ 1 ถู)ง 6 พวก ม�นถู5กเริ'ยกใน CODE ซึ่)*งในกริะบวนการิสถูานการิณิ�ซึ่)*งม�น

จัะป็ริากฏิอย.างช�ดิ์เจันท์'*ค.าคงท์'*ม'มากเกนไป็และ token ถู�ดิ์ ไป็ก8จัะเริ*มติ+น ส3าหริ�บติ�วอย.างใน - MINI BASIC stateme

nt

512 3 103 2 3IF > ( X + . ) / E GOTO 10

ม'ค.าคงท์'* 3 ติ�วและ lexical box ไม.สามาริถูบอกถู)งส�ญล�กษณิ�ส�ดิ์ท์+ายของค.าคงท์'*ไดิ์+จันกว.าม�นจัะพบ

ส�ญล�กษณิ�ท์'*ติามมา ไดิ์+แก.ส�ญล�กษณิ� > , ) และ C ส3าหริ�บ ค3าอ1*น เลข 3 อาจัหมายถู)ง 37103. อาจัหมาย

ถู)ง 1031. และ 2 3E อาจัจัะหมายถู)ง 2 30E ในแติ.ละกริณิ'ของ 3 กริณิ'น'/ Transition routine จัะ

ติ+องท์3าส3าเริ8จัท์�/งกริะบวนการิของค.าคงท์'*และเริ*มติ+น กริะบวนการิ lexical token ถู�ดิ์ไป็ ดิ์�งน�/น Transition

routine ท์'*สอดิ์คล+อง ( เช.น 1 3H c , A e และ 1B c) ล3าดิ์�บแริกจัะม'การิเริ'ยก YES routine ท์'*เหมาะสมเพ1*อจัะให+

ค.าคงท์'*ส3าเริ8จั และ Transition routine จัะเริ*มท์3างาน ส3าหริ�บ token ถู�ดิ์ไป็

Page 43: MINI-BASIC  Lexical box

State E1 และ E2 ใช+ส3าหริ�บกริะบวนการิ line numbers พวกม�นจัะถู5กใช+ในการิค3านวณิค.า value part

ของ token LINE , GOTO และ GOSUB โดิ์ย State E1 จัะใช+ส3าหริ�บค+นหาติ�วเลขติ�วแริกของ line number และ State E2 ใช+ส3าหริ�บกริะบวนการิในส.วนท์'*เหล1อของ line number โดิ์ยเม1*อ digits ถู5กพบ integer ท์'*

สอดิ์คล+องจัะถู5กเก8บในติ�วแป็ริช1*อ LINE REGISTER เม1*อ line number สมบ5ริณิ�แล+ว routine YES1E จัะถู5ก

เริ'ยกเพ1*อค+นหา ติาริางส�ญล�กษณิ�ท์'*สอดิ์คล+องก�น และแท์น ค.า pointer ลงในติาริางส�ญล�กษณิ� ใน POINTER

REGISTER โดิ์ย routine จัะติ+องถู5เริ'ยกหล�งจัาก ส�ญล�กษณิ�ท์'*ติาม line number ถู5กพบ เช.นเดิ์'ยวก�บกริณิ'

YES routine อ1*นๆ State F1 F2 และ 3 ถู5กใช+ในการิค+นหาติ�วแป็ริท์'*

ติามดิ์+วยเคริ1*องหมายเท์.าก�บ (=) และใช+ในการิค3านวณิค.า value part ของ token ASSIGN และ FOR State 1 จัะหา letter part ของติ�วแป็ริ State F2 จัะหา

optional digit และ 3 จัะหาเคริ1*องหมายเท์.าก�บหล�ง optional digit พวกม�นจัะใช+ POINTER REGISTER

ในท์างเดิ์'ยวก�บ 1 และ 2

Page 44: MINI-BASIC  Lexical box

State G1 จัะใช+ในการิค+นหา - LINE END หล�งค3าว.า REM ถู5กติริวจัพบ โดิ์ยม�นม'ผลกริะท์บติ.อการิลบ

comment ( หาจั�ดิ์ส/นส�ดิ์ของ comment) State G1 สามาริถูท์'*จัะถู5กใช+หล�งจัาก lexical error ถู5กติริวจัพบเพ1*อ

ท์'*จัะเริ*มกริะบวนการิ lexical โดิ์ยป็กติในบริริท์�ดิ์ถู�ดิ์ไป็ State H1 ถู5กใช+หล�งจัาก character token

- REL OP(relational operators) และดิ์5ว.าม' - REL OP ติ�วท์'* 2 ติามมาหริ1อไม. ม'ติ�วท์'*เพ*มเข+ามาใน Transition

table ของ Lexical analyzer ซึ่)*ง error routine สามาริถูถู5กเริ'ยกใช+ ยกติ�วอย.างของ การิน3าเข+า -RIGHT

PAR ในติาริางส3าหริ�บ State A2 เน1*องจัาก State A2 จัะ เข+าริ.วมเฉพาะ หล�ง arithmetic หริ1อ relational

operator หริ1อ left parenthesis หริ1อค3า END , IF , RETURN , STEP และ TO เริาท์ริาบก�นว.า right

parenthesis ไม.สามาริถูติามดิ์+วย - well formed statement ท์3าให+เริาริ5 +ว.า อย.างไริก8ติาม lexical box

ควริสริ+าง - RIGHT PAREN token และดิ์3าเนนการิติ.อ เน1*องไป็ ถู+าไม.ม'ส*งผดิ์ป็กติใดิ์เกดิ์ข)/น The syntax box

เป็$นส.วนส1บค+น error และค�ดิ์ท์/งข+อความ โดิ์ยกฎท์�*วๆไป็ เริาสริ+าง token เม1*อขอบเขติของส�ญล�กษณิ� lexical ถู5ก

ติ�ดิ์อย.างช�ดิ์เจัน และ syntax box ติริวจัสอบ errors ท์'* เริาท์3าเช.นน'/เพริาะเริาสมม�ติให+ syntax box ม' informati

on มากกว.า เก'*ยวก�บว.า User จัะท์3าอะไริและสามาริถูให+ ความหมายของข+อความ error ไดิ์+มากข)/น