\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /opt/cpanel/ea-ruby27/root/usr/local/share/gems/gems/racc-1.8.1/doc/ja/

Viewing File: parser.ja.rdoc

= class Racc::Parser
Racc ã®ç”Ÿæˆã™ã‚‹ãƒ‘ーサã¯ã™ã¹ã¦ Racc::Parser クラスを継承ã—ã¾ã™ã€‚
Racc::Parser クラスã«ã¯ãƒ‘ース中ã«ä½¿ç”¨ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ãŒã„ãã¤ã‹ã‚りã€
ãã®ã‚ˆã†ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ã¨ã€ãƒ‘ãƒ¼ã‚µã‚’åˆæœŸåŒ–ã—ãŸã‚Š
ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

== Super Class

Object

== Constants

プリフィクス "Racc_" ãŒã¤ã„ãŸå®šæ•°ã¯ãƒ‘ーサã®äºˆç´„定数ã§ã™ã€‚
ãã®ã‚ˆã†ãªå®šæ•°ã¯ä½¿ã‚ãªã„ã§ãã ã•ã„。動作ä¸å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚
== Instance Methods
ã“ã“ã«è¼‰ã£ã¦ã„ã‚‹ã‚‚ã®ã®ã»ã‹ã€ãƒ—リフィクス "racc_" ãŠã‚ˆã³ "_racc_" ãŒ
ã¤ã„ãŸãƒ¡ã‚½ãƒƒãƒ‰ã¯ãƒ‘ーサã®äºˆç´„åã§ã™ã€‚ãã®ã‚ˆã†ãªãƒ¡ã‚½ãƒƒãƒ‰ã¯ä½¿ã‚ãªã„ã§
ãã ã•ã„。

: do_parse -> Object
    パースを開始ã—ã¾ã™ã€‚
    ã¾ãŸã€ãƒˆãƒ¼ã‚¯ãƒ³ãŒå¿…è¦ã«ãªã£ãŸæ™‚㯠#next_token を呼ã³å‡ºã—ã¾ã™ã€‚

      --
      # Example
      ---- inner
        def parse
          @q = [[1,1],
                [2,2],
                [3,3],
                [false, '$']]
          do_parse
        end

        def next_token
          @q.shift
        end
      --

: next_token -> [Symbol, Object]
    [abstract method]

    ãƒ‘ãƒ¼ã‚µãŒæ¬¡ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚’読ã¿ã“む時ã«ä½¿ã„ã¾ã™ã€‚
    [記å·, ãã®å€¤] ã®å½¢å¼ã®é…列を返ã—ã¦ãã ã•ã„。
    記å·ã¯ãƒ‡ãƒ•ォルトã§ã¯

      * 文法中ã€å¼•用符ã§ã‹ã“ã¾ã‚Œã¦ã„ãªã„ã‚‚ã®
        → ãã®åå‰ã®æ–‡å­—列ã®ã‚·ãƒ³ãƒœãƒ« (例ãˆã° :ATOM )
      * 引用符ã§ã‹ã“ã¾ã‚Œã¦ã„ã‚‹ã‚‚ã®<br>
        → ãã®æ–‡å­—列ãã®ã¾ã¾ (例ãˆã° '=' )

    ã§è¡¨ã—ã¾ã™ã€‚ã“れを変更ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦ã¯ã€
    文法リファレンスをå‚ç…§ã—ã¦ãã ã•ã„。

    ã¾ãŸã€ã‚‚ã†é€ã‚‹ã‚·ãƒ³ãƒœãƒ«ãŒãªããªã£ãŸã¨ãã«ã¯ 
    [false, ãªã«ã‹] ã¾ãŸã¯ nil ã‚’è¿”ã—ã¦ãã ã•ã„。

    ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ãªã®ã§ã€#do_parse を使ã†å ´åˆã¯
    å¿…ãšãƒ‘ーサクラス中ã§å†å®šç¾©ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
    定義ã—ãªã„ã¾ã¾ãƒ‘ースを始ã‚ã‚‹ã¨ä¾‹å¤– NotImplementedError ãŒ
    発生ã—ã¾ã™ã€‚

: yyparse( receiver, method_id )
    パースを開始ã—ã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯å§‹ã‚ã¦ãƒˆãƒ¼ã‚¯ãƒ³ãŒ
    å¿…è¦ã«ãªã£ãŸæ™‚点㧠receiver ã«å¯¾ã—㦠method_id メソッドを
    呼ã³å‡ºã—ã¦ãƒˆãƒ¼ã‚¯ãƒ³ã‚’å¾—ã¾ã™ã€‚

    receiver ã® method_id メソッドã¯ãƒˆãƒ¼ã‚¯ãƒ³ã‚’ yield ã—ãªã‘れã°
    ãªã‚Šã¾ã›ã‚“。形å¼ã¯ #next_token ã¨åŒã˜ã§ [記å·, 値] ã§ã™ã€‚
    ã¤ã¾ã‚Šã€receiver ã® method_id ãƒ¡ã‚½ãƒƒãƒ‰ã®æ¦‚å½¢ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«
    ãªã‚‹ã¯ãšã§ã™ã€‚
      --
      def method_id
        until end_of_file
              :
          yield 記å·, 値
              :
        end
      end
      --
    å°‘ã—æ³¨æ„ãŒå¿…è¦ãªã®ã¯ã€method_id ãŒå‘¼ã³å‡ºã•れるã®ã¯å§‹ã‚ã¦
    トークンãŒå¿…è¦ã«ãªã£ãŸæ™‚点ã§ã‚ã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚method_id
    メソッドãŒå‘¼ã³å‡ºã•れãŸã¨ãã¯æ—¢ã«ãƒ‘ースãŒé€²è¡Œä¸­ãªã®ã§ã€
    アクション中ã§ä½¿ã†å¤‰æ•°ã‚’ method_id ã®å†’é ­ã§åˆæœŸåŒ–ã™ã‚‹ã¨
    ã¾ãšå¤±æ•—ã—ã¾ã™ã€‚

    トークンã®çµ‚端を示㙠[false, ãªã«ã‹] を渡ã—ãŸã‚‰ãれ以上㯠
    yield ã—ãªã„ã§ãã ã•ã„。ãã®å ´åˆã«ã¯ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã™ã€‚

    最後ã«ã€method_id メソッドã‹ã‚‰ã¯å¿…ãš yield ã—ã¦ãã ã•ã„。
    ã—ãªã„å ´åˆã¯ä½•ãŒèµ·ãã‚‹ã‹ã‚ã‹ã‚Šã¾ã›ã‚“。

: on_error( error_token_id, error_value, value_stack )
    ãƒ‘ãƒ¼ã‚µã‚³ã‚¢ãŒæ–‡æ³•エラーを検出ã™ã‚‹ã¨å‘¼ã³å‡ºã—ã¾ã™ (yacc ã® yyerror)。
    エラーメッセージを出ã™ãªã‚Šã€ä¾‹å¤–を発生ã™ã‚‹ãªã‚Šã—ã¦ãã ã•ã„。
    ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰æ­£å¸¸ã«æˆ»ã£ãŸå ´åˆã€ãƒ‘ーサã¯ã‚¨ãƒ©ãƒ¼å›žå¾©ãƒ¢ãƒ¼ãƒ‰
    ã«ç§»è¡Œã—ã¾ã™ã€‚

    error_token_id ã¯ãƒ‘ースエラーを起ã“ã—ãŸè¨˜å·ã®å†…éƒ¨è¡¨ç¾ (æ•´æ•°) ã§ã™ã€‚
    #token_to_str ã§æ–‡æ³•ãƒ•ã‚¡ã‚¤ãƒ«ä¸Šã®æ–‡å­—列表ç¾ã«ç›´ã›ã¾ã™ã€‚

    error_value ã¯ãã®å€¤ã§ã™ã€‚

    value_stack ã¯ã‚¨ãƒ©ãƒ¼ã®æ™‚点ã§ã®å€¤ã‚¹ã‚¿ãƒƒã‚¯ã§ã™ã€‚
    value_stack を変更ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。

    on_error ã®ãƒ‡ãƒ•ォルトã®å®Ÿè£…ã¯ä¾‹å¤– ParseError を発生ã—ã¾ã™ã€‚

: token_to_str( t ) -> String
    Racc トークンã®å†…éƒ¨è¡¨ç¾ (æ•´æ•°)
    を文法ファイル上ã®è¨˜å·è¡¨ç¾ã®æ–‡å­—列ã«å¤‰æ›ã—ã¾ã™ã€‚

    t ãŒæ•´æ•°ã§ãªã„å ´åˆã¯ TypeError を発生ã—ã¾ã™ã€‚
    t ãŒç¯„å›²å¤–ã®æ•´æ•°ã ã£ãŸå ´åˆã¯ nil ã‚’è¿”ã—ã¾ã™ã€‚

: yyerror
    エラー回復モードã«å…¥ã‚Šã¾ã™ã€‚ã“ã®ã¨ã #on_error ã¯å‘¼ã°ã‚Œã¾ã›ã‚“。
    アクション以外ã‹ã‚‰ã¯å‘¼ã³å‡ºã•ãªã„ã§ãã ã•ã„。

: yyerrok
    エラー回復モードã‹ã‚‰å¾©å¸°ã—ã¾ã™ã€‚
    アクション以外ã‹ã‚‰ã¯å‘¼ã³å‡ºã•ãªã„ã§ãã ã•ã„。

: yyaccept
    ã™ãã«å€¤ã‚¹ã‚¿ãƒƒã‚¯ã®å…ˆé ­ã®å€¤ã‚’è¿”ã—㦠#do_parseã€#yyparse を抜ã‘ã¾ã™ã€‚