質問

私は現在、いく梢文法構文解析シンプルなゲーム形式のファイルで主に作業です。しかし、いくつかの質問をしています。

  1. について不明な点で実際にアクセスの構造梢発生後の解析.
  2. あり扱う時に捕捉すべての文字によって文字数です。
  3. 場合がありますコメントがないのですが書けます。

    C[player1[4k\]:こんにちはplayer2[3k\]:こんにちは!]

できない包頭の周りにどう対処すればよいかという入れ子構造のC[]ノード[]'s内します。

それだけではないですが、もう現在進行中。

sgf-文法を学びます。木のてっぺ

grammar SgfGrammar
rule node
    '(' chunk* ')' {
        def value
            text_value
        end
    }
end

rule chunk
    ';' property_set* {
        def value
            text_value
        end
    }
end

rule property_set
    property ('[' property_data ']')* / property '[' property_data ']' {
        def value
            text_value
        end
    }
end

rule property_data
    chars '[' (!'\]' . )* '\]' chars / chars / empty {
        def value
            text_value
        end
    }
end

rule property
    [A-Z]+ / [A-Z] {
        def value
            text_value
        end
    }
end

rule chars
    [a-zA-Z0-9_/\-:;|'"\\<>(){}!@#$%^&\*\+\-,\.\?!= \r\n\t]*
end

rule empty
    ''
end
end

私の試験の場合、現在のを除くC[]ノードは上記の入れ子ブラケットの問題:

例です。rb

require 'rubygems'
require 'treetop'
require 'sgf-grammar'

parser = SgfGrammarParser.new
parser.parse("(;GM[1]FF[4]CA[UTF-8]AP[CGoban:3]ST[2]
RU[Japanese]SZ[19]KM[0.50]TM[1800]OT[5x30 byo-yomi]
PW[stoic]PB[bojo]WR[3k]BR[4k]DT[2008-11-30]RE[B+2.50])")
役に立ちましたか?

解決

  1. の構造がいたとしてツリーのSyntaxNodes場合、結果は空、チェックパーサです。failure_reason).歩くことができるこのツリーまたは(およびこれはお勧めでき充実した機能をいたいものだけをお呼び主な機能タイムをお過ごし下さい。

場合にだけ意味は"どうしてそのようなアクセスの部品はノード内で機能しているのでしょうか。"があります。きられたので、その要素として[x]の表記はルールに関連付けます:

rule url_prefix
    protocol "://" host_name {
       def example
           assert element[0] == protocol
           assert element[2] == host_name
           unless protocol.text_value == "http"
               print "#{protocol.text_value} not supported" 
               end
           end
       }

できるものの名称のような:

rule phone_number
    "(" area_code:( digit digit digit ) ")" ...

その後参照することによります。

  1. お字原則をカバーするフラだけしたい致します。い合わせ 他の 文字をご利用いただけるドット(.) のように正規表現で指定する。

  2. 私は知らない言語のようとしているのを解析し、そのルールを探しているようなもの:

rule comment
    "C" balanced_square_bracket_string
    end
rule balanced_square_bracket_string
    "[" ( [^\[\]]  / balanced_square_bracket_string )* "]"
    end

中間部の規則に合いな角ブラケットや入れ子の文字列balanced_squareットに固定して使用します。

P.S.がかなり活躍 Googleグループ, は、アーカイブのオンライン&検索されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top