Chương trình dịch - txnam.nettxnam.net/wp-content/uploads/txnam/Bai Giang/Chuong Trinh Dich K54... · thêm luật S’ S vào tập luật ... Phần mềm phân tích G,

Embed Size (px)

Citation preview

  • CHNG TRNH DCH

    Bi 14: Phn Tch LR & Cc B T

    ng Sinh Parser

  • Ni dung

    1. B phn tch kiu gt-thu (shift-reduce)

    2. My phn tch c php LR

    3. Vn phm h LR

    CLOSURE v GOTO

    th LR(0)

    SLR

    4. nh gi v phn tch LR

    5. Cc b t ng sinh parser

    6. Bi tp

    TRNG XUN NAM 2

  • B phn tch kiu gt-thu (shift-reduce)

    Phn 1

    TRNG XUN NAM 3

  • B phn tch kiu gt-thu

    Cch lm vic xut pht t vic quan st hot ng

    ca phn tch bottom-up

    Bt u t nt l phi nht

    Thu gn dn v nt gc

    Ch 2 kiu hot ng chnh:

    Gt (shift)

    Thu (reduce)

    Shift: ly k hiu tip theo

    Reduce: thu gn nhnh thnh mt k hiu trung gian

    TRNG XUN NAM 4

  • B phn tch kiu gt-thu

    L mt dng automat lm vic theo bng phng n

    ( c cp ti trong bi trc)

    Vn : xy dng bng phng n nh th no

    Khi no th shift

    Khi no th reduce

    Cn hot ng no khc?

    C trng thi b tranh chp?

    Hot ng ca stack ra sao?

    ngha cc trng thi ca my

    TRNG XUN NAM 5

  • V d v b phn tch gt-thu

    TRNG XUN NAM 6

  • V d v b phn tch gt-thu

    TRNG XUN NAM 7

  • V d v b phn tch gt-thu

    TRNG XUN NAM 8

  • My phn tch c php LRPhn 2

    TRNG XUN NAM 9

  • Cu trc ca my phn tch LR

    TRNG XUN NAM 10

  • Cu trc ca my phn tch LR

    My phn tch LR l mt cp (STACK, INPUT)

    Trng thi ban u (s0, a1a2an$)

    Trng thi trung gian (s0X1s1Xmsm, aiai+1an$)

    Trng thi kt thc thnh cng (s0Ss1, $)

    Bng phng n gm 2 phn

    Bng action: ACTION[s, a] vi s l mt trng thi v a

    l mt terminal, gi tr trong bng ch c th l 1 trong 4

    hnh ng gt (shift), thu (reduce), nhn (accept), li

    (error)

    Bng goto: GOTO[s, A] vi s l mt trng thi v A l

    mt non-terminal, ch ra cch dch chuyn trng thi

    TRNG XUN NAM 11

  • Bng ACTION

    1. Shift s: y k hiu input v trng thi s vo stack(s0X1s1Xmsm,aiai+1an$) (s0X1s1Xmsmais,ai+1an$)

    2. Reduce k: thu gn bi lut th k (A ), r = | | Ly 2r k hiu ra khi stack: (s0X1s1Xmsm,aiai+1an$) (s0X1s1Xm-rsm-r,ai+1an$)

    y vo stack A v s = GOTO[sm-r, A]:

    (s0X1s1Xm-rsm-r,aiai+1an$)

    (s0X1s1XmsmAs,ai+1an$)

    Ghi nhn pht sinh lut A

    3. Accept: phn tch thnh cng

    4. Error: phn tch pht hin li

    TRNG XUN NAM 12

  • V d hot ng ca my LR

    TRNG XUN NAM 13

  • V d hot ng ca my LR

    TRNG XUN NAM 14

  • Vn phm h LRPhn 3

    TRNG XUN NAM 15

  • Vn phm h LR

    Vic chnh l lm th no xy dng bng phng n? C nhiu thut ton lm vic ny

    LR(0): thut ton c bn, mi thut ton LR u da trn n

    SLR (Simple LR): ci tin mt cht t LR(0), mnh hn, d ci t

    LR(1): cn gi l LR chnh tc ~ Canonical LR, s dng cho nhiu loi vn phm, kch c bng rt ln

    LALR(1): cn bng gia SLR v LR, dng cho hu ht cc vn phm nhn to

    TRNG XUN NAM 16

  • Khi nim c s

    d dng cho vic thc thi automat, ta b sung

    thm lut S S vo tp lut

    Khi nim LR(0) item: mt lut ang c phn

    tch d, s dng du chm (.) ngn gia phn

    trc v phn sau (tng t nh thut ton Earley)

    Lut S ABC s c 4 item:

    1. S .ABC

    2. S A.BC

    3. S AB.C

    4. S ABC.

    TRNG XUN NAM 17

  • Closure(I) bao ng ca I

    TRNG XUN NAM 18

  • GOTO(I, X) hm chuyn

    TRNG XUN NAM 19

  • Xy dng th LR(0)

    C cnh I n J l X

    X l terminal: (I, X) =

    shift J

    X l non-terminal: (I,

    X) = goto J

    Nu X = $: accept

    Nu state cha A .

    th in reduce vo

    mi trn dng

    TRNG XUN NAM 20

  • V d

    S S $ S ( L ) S x

    L S L L , S

    TRNG XUN NAM 21

  • V d

    TRNG XUN NAM 22

  • SLR

    S E $ E T + E

    E T T x

    TRNG XUN NAM 23

  • SLR

    SLR sa i li cch tnh reduce, ch s dng

    reduce cho nhng tnh hung X thuc FOLLOW(A)

    Ch : c nhiu loi xung t, phng php SLR

    ch sa c mt phn rt nh

    Xung t gia shift v reduce

    Xung t gia reduce v reduce

    TRNG XUN NAM 24

  • nh gi v phn tch LRPhn 4

    TRNG XUN NAM 25

  • nh gi v phn tch LR

    Phn tch LR khng mnh cho vn phm CFG

    Nhng mnh cho hu ht ngn ng nhn to LR(0): l ht nhn

    SLR: n gin, yu

    LALR(1): tm dng

    LR(1): bng qu to

    LR(k): qu phc tp

    Nhanh ~ tuyn tnh

    Rt nhiu bin th

    GLR ~ Earley

    TRNG XUN NAM 26

  • Cc b t ng sinh parserPhn 5

    TRNG XUN NAM 27

  • Cc b t ng sinh parser

    Vi cch tip cn xy dng automat tt nh: cho

    trc vn phm G, ta c th to mt bng phn tch

    ring ca G, bng phn tch ny ch cn to mt ln

    v c nh i vi vn phm G

    Cc b parser generator t ng ha vic xy dng

    cc b phn tch vn phm:

    Ngi dng nh ngha vn phm G

    Thit lp cc x l cn thc hin khi hon thnh cu

    Phn mm phn tch G, t sinh bng phng n

    Phn mm t sinh m b phn tch, chn nhng on x

    l vo cc v tr thch hpTRNG XUN NAM 28

  • Cc b t ng sinh parser

    Hu ht cc parser generator sinh bng LALR(1)

    Bng ny tt x l hu ht cc ngn ng nhn to

    Bng kch thc khng qu ln (vi ngn ng C, bng

    LR(1) c khong 10000 trng thi, bng LALR ch c

    khong 350 trng thi)

    Parser generator u tin l META II (1960)

    Ni ting nht: YACC (1975, m C)

    Sinh m Java: SableCC

    Sinh m C#, giao din trc quan: GOLD Parser

    (yu cu tm hiu phn mm ny nh l bi tp)

    TRNG XUN NAM 29

  • Bi tpPhn 6

    TRNG XUN NAM 30

  • Bi tp

    1. Cho vn phm G:S AS | b A SA | a

    Xy dng b cc tp item LR(0) cho vn phm ny

    Xy dng bng phn tch c php bng thut ton SLR

    2. Cho vn phm G:E E + T | T

    T T F | F

    F F * | a | b

    Xy dng b cc tp item LR(0) cho vn phm ny

    Xy dng bng phn tch c php bng thut ton SLR

    TRNG XUN NAM 31