/*								     */
/* Manual							     */
/*								     */
/* Copyright (C) 1996 Thanaruk Theeramunkong (ping@jaist.ac.jp)      */ 
/*                    Hiroki Imai            (imai@cs.titech.ac.jp)  */
/*                    Manabu Okumura         (oku@jaist.ac.jp)       */
/*                    Susumu Kunifuji        (kuni@jaist.ac.jp)      */
/*								     */
/*					       6 June 1996	     */
/*								     */
/* This file contain a manual for RLRPAR			     */
/*								     */


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                        %%
%%  ̲ LR ˡ˴Ťʹʸϴ  %%
%%                                        %%
%%           R-LRPar Beta version         %%
%%                                        %%
%%        եȥΥޥ˥奢        %%
%%                                        %%
%%                        May 1996        %%
%%                                        %%
%%           By Thanaruk THEERAMUNKONG    %%
%%                                        %%
%%                   ping@jaist.ac.jp     %%
%%                                        %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ܥޥ˥奢ϰ̲ LR ˡѤʹʸϴ "R-LRPar" ˴Ū
μӥեȥλȤˤĤƽҤ٤롥ʳΥեȥ
ȯΥץȥפǤ롥1 Ǥϰ̲ LR ʸˡδä򵭽Ҥ
롥LR ˡδμˤ 1 ɤФƤɤ
2 ǤϡR-LRPar δĶӹˤĤƽҤ٤롥R-LRPar δŪ
ˤӥեȥγѤʤɤ򵭽Ҥ롥3 ǤϡR-LRPar 
ˤäơŪʥޥɤҤ٤롥4 ǤϡŪ夲
Ѥͤʤɤ롥Ǹ 5 ǤѼ򵭽Ҥ롥

(0) ޥ˥奢ι

   1  : ̲ LR ʸˡδ
   2  : եȥδĶӹ
   3  : R-LRPar εưӴŪʥޥ
   4  : ˤ륷ƥλȤ
   5  : Ѽ

(1) ̲ LR ʸˡδ

ξϤǤϡܸǴäȤѤƤ̲ LR ʸˡ (GLR ˡ) 
ˤĤƽҤ٤롥Υ르ꥺ[tomita,87]ˤƤ졤Ψ
ɤˡȤΤƤꡤˡȤƤФ롥1.1 ǤϡGLR ˡ
άҤ١르ꥺ뤿ᡤ1.2 ˥르ꥺμº
δư򼨤

(1.1) GLR ˡθ

GLR ˡϡʸˡΰĤǤ LR ˡäȤʤäƤ롥LR ˡϡͿ
줿ʸˡ餢餫 LR ɽȸƤФ֤ɤߵ椫ʤ
ư񤭹ߡɽŪưԤϤʤ륢르
Ǥ롥LR ˡȤΤǤʸˡ LR ʸˡȸƤФʸ̮ͳʸ
ˡ (CFG) β̤Υ饹˸¤졤ʸˡѤ̤ CFG 
򰷤ȤǤʤ̤ CFG  LR ɽȡ֡
ɤߵǤưʣ礬ꡤŪưǤʤ
Ǥ롥

Ĥϡ˻ȤɽǤʣưƤ
硤ưοåʣ줾ưФƥå
ơLR βϤʤȤõμˡˤꡤ̤ CFG 
 LR ˡƱͤ˲ϤǤ뤳Ȥ򼨤ˡƱ֤Ʊ֤
ʣΥåˡλǥå礷Ϥʣ
ʤˡͰƤΤˡչ¤å (GSS) ȸƤФ
ǡ¤Ƴ

ʾˡˤꡤפʺƷ׻򤱡;ʬʥ񤷤ʤƺѤࡥ
Τ褦ħ顤 GLR ˡϹѤƤ롥

(1.2) GLR ˡˤϤμ¹

ѸδñʸˡӤʸˡб LR ɽʲ˼

ڴñʸˡ

     S   NP VP.
     S   S PP.
     NP  n.
     NP  det n.
     NP  NP PP.
     PP  prep NP.
     VP  v NP.

âʸ: ü桤ʸ: ü (ʻ)Ǥ롥ޤ
      S = ʸ     NP  = ̾   VP   = ư    PP = ֻ
      n = ̾   det =      v    = ư    prep = ֻ
      
Ūˤʸˡ LR ɽ򥢥르ꥺŪ˺Ǥ롥LR ɽˤϤ
μ(Simple LR, Canonical LR, Lookahead LR)ꡤ줾Ĺꡦ
û꤬ۤʤ뤿ᡤŪˤäѤɬפ롥㤨С
Canonical LR Ǥϡ֤οǤ¿Ū LR ɽǤ롥Τ
ᡤŬʸϤ˺ǤŬڤƤȹͤ롥LR ɽκ˴ؤ륢
르ꥺξܺ٤[Aho,86],[Sippu90]˻Ȥ줿ʲϾ嵭ʸˡ
Ǥ Canonical LR ɽǤ롥ɽǤϡ3 ư¸ߤƤ
롥`sh N', `re N',  `acc' Ǥ롥`sh N'  N ֤˥եȡʰư
Ȥ̣Ǥ롥`re N'  N ʸˡ§ŬѤ뤳ȤǤ롥ޤ
`acc' ϲϤȤ̣Ǥ롥


state      Action Part (ư)       Goto Part (Goto ) 
      
() det  n  v   prep   $  NP  PP  VP  S   

   0   sh3sh4                 2          1    

   1               sh6   acc     5          

   2          sh7  sh6           9    8     

   3      sh10                              

   4          re3  re3  re3                 

   5               re2  re2                 

   6   sh3sh4                11             

   7   sh3sh4                12               

   8               re1  re1                 

   9          re5  re5  re5                 

  10          re4  re4  re4                 

  11          re6  sh6  re6      9          
                   re6                      

  12               sh6   re7     9          
                   re7                      


̲ LR ˡ LR ɽѤʸβϤŪ˹Ԥʤ嵭Τ褦
ʸˡۣ¸ߤƤ뤿ᡤ1 ĤʣưƤ
սǲưŪ˹Ԥ롥

ʸβϤˤ GLR ˡư롥

ʸ      I  saw  a  man  in  the  apartment  with  a  telescope   .
ʻ        n   v  det  n  prep det      n      prep det     n       $
                                                     
ơ                                        

ʤʸǤϡñ򼭽ˤʻ줬Ф
Ȳꤹ롥ޤñ֤ζڤ֥ơפȸƤӡ1 ܤ򥹥ơ
 0n ܤ n+1 ܤδ֤򥹥ơ n Ȥ롥ʤơ n 
ǲϤ n+1 ܤθȤʤ롥

ѡϽ 0ơ 0 Ϥ򳫻Ϥ롥ޤʸñ
 1 ɤߤ롥

 0  "I"(ʻ: n) LR ɽ򻲾Ȥȡ`sh4' ȤҤ
롥ϡɤߵ򥹥å˥ץå夷ɤߤԤ 4 
ܤפȤ̣Ǥ롥shift ưλȡѡϼΥơ
βϤ˰ܤ롥

ߤñ졧 "I"   (ʻ: n) 

        ----- 
  ---|  n  |---         LR ɽ˽
        -----               n Фƾ  ˥եȤ롥
                  
                     ơֹ

ñ졧 "saw" (ʻ: v) 

        -----           ----- 
  ---| 0:n |---    |  v  |        ư re3 Ǥ롥
        -----           ----- 
               
                                  0: [n `I']


ϡָߤΥå§ 3 Ѥ reduce פȤ̣Ǥ
롥ѡϥåȥåפ鵬§αդε˥ݥåפ
դεץå夹롥λˡݥå׸˥åȥåפ˸
֤ȡץå夹뺸դε LR ɽα¦ʬ (goto table ȸƤФ
) 򻲾Ȥܤ֤ꤹ롥ޤǤưλ֤
˼ʤޤǤϡ̾ LR ˡβϤƱǤ롥

        -----           ----- 
  ---|1:NP |---    |  v  |        ư sh7 Ǥ롥
        -----           ----- 
                                  0: [n `I']
                                  1: [NP (0)]


ʲƱͤ˲Ϥʤȡʲξ֤LR ɽ򻲾ȤʣΥ
롥ǤϤޤ reduce ư˹Ԥshift ưϺǸ˹


       ----        ---        ----          ----
  --|1:NP|----|2:v|----|5:NP|--  |prep|  ư re7 
       ----        ---        ----          ----              sh6 Ǥ롥
                                   
                                           0: [n `I']
                                                   1: [NP (0)]
                                                   2: [v `saw']
                                                   3: [det `a']
                                                   4: [n `man']
                                                   5: [NP (3 4)]

GLR ˡǤϡ٤åʣϤ˽롥
줾ΥåƱȤ뤿ᡤơñ̤ǲϤԤƥå
ϤΥơ shift ưλԤ碌롥

ơ嵭ξ֤ reduce ʳǥåʬ롥Υå
⤦ shift ưΤˤΤޤޤˤƤʲξ֤ˤʤ롥

       ----        ---        ----       
  --|1:NP|----|2:v|----|5:NP|--   ----    ư re6 Ǥ롥
       ----      ---        ----         |prep|  
                            ----          ----            
               --------------|6:VP|--             ư re1 Ǥ롥
                              ----
                                   
                                           0: [n `I']
                                                   1: [NP (0)]
                                                   2: [v `saw']
                                                   3: [det `a']
                                                   4: [n `man']
                                                   5: [NP (3 4)]
                                                   6: [VP (2 5)]

reduce ưԤäΥåư LR ɽ򸫤ȺƤ reduce ư
ȤʤäƤ롥reduce ư shift ưͥ褹뤿ᡤ reduce 
ưԤ

Υåμư shift 6 Ǥ롥ޤ⤦Υåư
 shift 6 Ǥ롥2 ĤΥåϤʸνʤ롥
ǡλˤʬƤ 2 ܤΥåȥåפޡ
Ԥ(\figref{fig:sp06})
åޡ顤ѡϼΥơؽܹԤ
롥

       ----        ---        ----          ------       -----
  --|1:NP|----|2:v|----|5:NP|----|8:prep|-- | det |
     ----        ---        ----          ------       -----     
                             ---                   ư sh3 Ǥ롥
   ---------------------------|7:S|---------      
                               ---
                                             
                                            
                                                   0: [n `I']
                                                   1: [NP (0)]
                                                   2: [v `saw']
                                                   3: [det `a']
                                                   4: [n `man']
                                                   5: [NP (3 4)]
                                                   6: [VP (2 5)]
                                                   7: [S (1 6)]
                                                   8: [prep `in']

ʲƱͤ˽ʤᡤǽŪʸޤǽʤ LR ɽ `acc' 
ʬã롥ϡϷ̤뤳Ȥ̣롥

        ----           ----- 
  ---|25:S|---    |  $  |        ư acc Ǥ롥
        ----           ----- 
                                     0: [n `I']
                                   1: [NP (0)]
                                         2: .........
                                            .........
                                        25: [S (1 24) (15 20) (7 23)]

(2) եȥδĶӹ

(2.1) Ķ

     ܥեȥ Prolog, perl, shell script ˤꡤ줿
R-LRPar Τ Prolog ư롥ȯĶ Sicstus prolog Ǥ뤬
Prolog ɸŪʥޥɤѤΤǡ¾ prolog Ǥ⺹ۤɤʤư
롥ޤBrill's Tagger ϥե꡼եȥǡC ǽ񤫤Ƥ
ΤǡC ѥ顼ɬפǤ롥

(2.2) ƥι

	     ------------
            |ʸ̮ͳʸˡ|
             ------------
                  
     
      LR ɽ⥸塼ʣ˨
     
                  
     ------------------------------
    | ʸ̮ͳʸˡб LR ɽ |
     ------------------------------
                  
 
  Prolog/KL1 ⥸塼ʣ˨
 
                  
           ---------------     ----------------------------------
          | Prolog/KL1  |   | LR ѡΥᥤץʣ|
           ---------------     ----------------------------------
                                            
                  
                                
                                        ----------
               LRѡ  | Ϸ |
                                      ----------
        ------------
       | դʸ |
        ------------
             
    
     Brill's Tagger 
    
             
          --------
         | ʸ |
          --------

      -----
     |     |     ϥǡɽƤ롥
      -----
    
             ץɽƤ롥
    

LR ɽ⥸塼(1)ϡʸ̮ͳʸˡϥǡȤʸˡб
 LR ɽư롥 LR ɽ Canonical LR ɽȤ
ȤζΤǤ롥Prolog/KL1 ⥸塼(2) LR ɽб
Prolog ᤪ KL1 롥LR ɽľѤ⤳Τ褦
ѥ뤷Ѥ뤳Ȥǥѡβ®٤Ǥ롥
줿 LR ѡΥᥤץ(3)ȹ碌 LR ѡ
Ѥ롥Ǥܸ LR ѡ Prolog νϾư
롥KL1 ץȤƤܼˡμ˴ؤƤϡ (2) ʸˡ
 KL1 Ѵ⥸塼뤬ȯѤߤǤ롥(1)  LR ɽ⥸塼
ϡˤƤ Prolog ǤΤΤƱΤѤǤΤǡ
ɬפʤޤ(3)  LR ѡΥᥤץ礭Ŭ
ʸϤʬŬ򸡽Фۤɤʬʬ뤬
ΤŬʸϤʬ KL1 ץȤƹۺѤߤǤ롥
Ԥʬ򺣸ͽǤ롥

(2.3) ץΰ

     ־Υե run.pl Ǥ롥ƥեξ̴طʲ
       ̤Ǥ롥

     src/LR_prolog βˤ롥

  run.pl
 
  mymakegss.pl
        
        change_form.pl
            symbol_handling.pl
            util.pl
            decide_action_write_table.pl
            maketable_write_table.pl
            first.pl
            expand.pl
            mkinterface.pl
            make_all_gss.pl
               
                other_entry.pl
                mkcnd.pl
                action2entry.pl
                symbol_handling.pl
     
      start.pl
         
          parseinterf.pl
            time.pl
            print_tree.pl
            parser.pl
            util.pl
            extract.pl
            record_info.pl
            error_handling.pl
            tree.pl
            retrieve-E.pl
            flags.pl
         
     ޤѤƤ Brill's Tagger  btagger Ȥǥ쥯ȥ
       βˤ롥

      Tagger Ѥ뤿 shell script ϰʲǤ롥

        runtagger

(3) R-LRPar εưӴŪʥޥ

(3.1) 

    եȥѤˡBrill's tagger ˤꡤϤʸʻ
ŤƤɬפ롥ˡ 'src/R-LRParser/README' 򻲾Ȥ
Ф褤Ǵñ˽Ҥ٤롥

    1) ϤʸǼƤե  sfile Ȳꤷ

       %  src/R-LRParser/runtagger sfile 

       ˤꡤsfile.re Ȥ̥ե뤬롥Υե
       sent_file γʸʻ줬դ줿Τ Prolog ηǽϤ
       롥

    2) ɬܤǤϤʤִñʼưϤΥե(sfile.re)
       sent_file.re ˥󥯤ĥ뤳ȤǤ롥

(3.2) ư

    ܥեȥϡLR ɽפʸ̮ͳʸˡפLR ɽб
Prolog פ롥θ̤˳ȯ֥ᥤץפ
碌 LR ѡȤƻȤΰϢưϤۤȤɼưŪ˹Ԥʤ
ˡϰʲ˽Ҥ٤롥ʲϡǥ쥯ȥ src/LR_prolog  current
directory Ȥ롥

    1) ưˤäƤޤ Prolog Ω夲롥(src/LR_prolog )

    2) [run] ˤ "run.pl"  prolog ǡ١˼ࡥ

    3) "start." Ȥޥɤǡѡư롥ޤƥγ
        Help εǽäƤ롥

(3.3) Ūʥޥ

    start.  R-LRPar ư롥
    h ǥإפ򸫤롥
    c ʸΥåȤѹ롥
    l ʸΥꥹȤ򻲾Ȥ롥
    l(N,M)  N ܤ M ܤʸ򻲾Ȥ롥
    N ()  N ܤʸϤ롥
    q ǥƥλ롥

(4) ˤư

    ʲ src/LR_prolog βǼ¹ԤͻҤɽƤ롥

---------- Begin Example (1) ----------
SICStus 3  #3: Wed Apr 17 01:11:05 JST 1996
| ?- [run].
{consulting ~/work/project/icot/Software/src/LR_prolog/run.pl...}
{consulting ~/work/project/icot/Software/src/LR_prolog/mymakegss.pl...}
..........         ..........
..........         ..........
..........         ..........
{~/work/project/icot/Software/src/LR_prolog/start.pl consulted, 3520 msec 145104 bytes}

****************************************
*  Type "start." to start the process  *
****************************************

{~/work/project/icot/Software/src/LR_prolog/run.pl consulted, 205250 msec 3944288 bytes}

yes
| ?- 
---------- End Example (1) ----------
ʾ "run.pl"  prolog Ǽ¹ԤͻҤǤ롥λ嵭˽Ҥ٤
ʣΥե뤬ɤ߹ޤ롥
----------  (1) ----------

=====================================================================

---------- Begin Example (2) ----------

| ?- start.
*******************************
*  Welcome to R-LRPar system  *
*                beta version *
*******************************
Do you want to indicate the filename of the sentences ? (y/n)
(Default is sent_file.re)
{Warning: abolish(user:input_sentence) - no matching predicate}
|: n.
{consulting ~/work/project/icot/Software/src/LR_prolog/sent_file.re...}
{~/work/project/icot/Software/src/LR_prolog/sent_file.re consulted, 20 msec 2960 bytes}

Command (h: help) > h.

  h      - help
  c      - change sentence set
  l      - list sentences
  l(N,M) - list Nth-Mth sentences
  N      - Using Nth sentence
  q      - quit


Command (h: help) > 

---------- End Example (2) ----------
 start  R-LRPar ư롥ΤȤĤΥåФ
˽äФ褤ޤCommand (h: help) >  "h." 
ȥإץ˥塼ФƤ롥ʸλȤԤʤɤʸβϤ򤹤뤫
Ǥ롥
----------  (2) ----------

=====================================================================

---------- Begin Example (3) ----------

Command (h: help) > l
     .
1: hello(uh) 
2: the(dt) secretariat(nnp) for(in) the(dt) first(jj) international(jj) conference(nn) of(in) interpreting(vbg) telephony(nn) 
3: yes(uh) that(dt) [39,115](vbz) me(prp) 
4: just(rb) a(dt) moment(nn) 
5: i(prp) would(md) like(vb) to(to) ask(vb) something(nn) about(in) registration(nn) to(to) the(dt) conference(nn) 
6: sure(rb) go(vb) ahead(rb) please(vb) 
7: i(prp) have(vbp) the(dt) registration(nn) form(nn) here(rb) at(in) hand(nn) 
8: yes(uh) 
9: in(in) the(dt) registration(nn) form(nn) there(ex) is(vbz) an(dt) item(nn) for(in) the(dt) name(nn) of(in) the(dt) credit(nn) card(nn) and(cc) the(dt) credit(nn) card(nn) number(nn) 
10: there(ex) [39,115](vbz) someone(nn) who(wp) does(vbz) [110,39,116](rb) have(vb) any(dt) credit(nn) cards(nns) 

Command (h: help) > 3.

[(265,1),(285,1),(289,1),(295,1),(299,1),(305,1),(309,1),(315,1),(319,1),(325,1),(329,1),(352,1),(356,1),(362,1),(366,1),(372,1),(376,1),(382,1),(386,1),(392,1),(396,1),(415,1),(419,1),(425,1),(429,1),(435,1),(439,1),(445,1),(449,1),(455,1),(459,1),(464,1),(466,6),(477,1),(481,1),(488,3),(491,3),(497,1),(501,1),(509,1),(514,1),(519,1),(524,1),(529,1),(535,1),(539,1),(545,1),(549,1),(555,1),(559,1),(565,1),(569,1),(574,1),(594,1),(598,1),(604,1),(608,1),(614,1),(618,1),(624,1),(628,1),(634,1),(638,1),(661,1),(665,1),(671,1),(675,1),(681,1),(685,1),(691,1),(695,1),(701,1),(705,1),(724,1),(728,1),(734,1),(738,1),(744,1),(748,1),(754,1),(758,1),(764,1),(768,1),(773,1),(775,6),(786,1),(790,1),(797,3),(800,3),(806,1),(810,1),(818,1),(823,1),(828,1),(833,1),(838,1),(844,1),(848,1),(854,1),(858,1),(864,1),(868,1),(874,1),(878,1),(886,1),(888,6),(899,1),(905,1),(910,1),(915,1),(920,1),(925,1)]
135 trees exist.
0: [sentence,[s,uh,comma(subst,orig:dt),[s,[simp,[vp,vbz,[obj,[np,prp]]]]]]].
1: [sentence,[s,[simp,[vp,vb(subst,orig:uh),[obj,[np,dt,[gerund,[vp,vbz,[obj,[np,prp]]]]]]]]]].
...............................
...............................
134: [sentence,[s,[simp,[vp,vbz(subst,orig:uh),[obj,[np,[ddet,dt]]],[infinitive1,[bep,vbz],[pred,[np,prp]]]]]]].
Parsing Time: 37960 (ms)

Command (h: help) > 

---------- End Example (3) ----------
嵭 "l." ϤơʸפǧʸֹꤷƲϤ
ҤǤ롥Ǥϡ3 ܤʸ 

yes(uh) that(dt) [39,115](vbz) me(prp) 

Ϥ롥η̤ 134 ڤ줿
----------  (3) ----------

(5) Ѽ

    ڥƥˡ
  
    ñǤʲΤ褦ưܥƥѤǤ롥

    1) ƥεưˤꡤޤ prolog ư롥
    2) ['src/LR_prolog/run']. ǥƥ consult 롥
    3) "start." ǥƥư롥
    4) "h." ޥɤΥإפ򸫤롥
    5) إפιܤ򸫤ƹԤʤưϤ롥

    ڲϤʸåȤѹˤϡ

    1) ϤʸΥե(sfile)ȤơʲΥޥɤ¹Ԥ롥

       %  src/R-LRParser/runtagger sfile 

       η̡sfile.re Ȥ̥ե뤬롥

    2) Υե(sfile.re) sent_file.re ˥󥯤ĥǤ롥

       % /bin/rm src/LR_prolog/sent_file.re
       % ln -s sfile src/LR_prolog/sent_file.re

    3) '[changesent].'  prolog Ǽ¹Ԥ뤳ȤˤꡤʸåȤ
       롥

(6) ¾

  ¾ˡܥեȥʸˡ prolog ǤϤʤ kl1Ѵ
塼󶡤Ƥ뤬ޤ̤ΤˤǾάƤ
ޤϤѤʸˡϸꤷƤ뤬ѹ⥸塼Ϻͽ
Ǥ롥

ʸ

[Tomita,87] : M. Tomita
	      An Efficient Augmented-context-free parsing algorithm
              Computational Linguistics, Vol.13, No.1-2, pp. 31--46, 1987

[Aho,86]    : Alfred V. Aho, Revi Sethi and Jeffrey D. Ullman
              Compilers (TextBook)
              Addison-Wesley

[Sippu,90]  : Seppo Sippu
              Construction and implementation of LR(1) parsers
              Parsing Theory, Chapter 6, Vol.2, pp. 119--195, 1990
              Springer-Verlag
