/
ツリートップを持つ文字のペア間ですべてを一致させるにはどうすればよいですか? /
エスケープ文字も一致させたいと思います。たとえば、「正規表現」を解析する場合:
/blarg: dup\/md5 [0-9a-zA-Z]{32}/
結果は次のようになります。
blarg: dup\/md5 [0-9a-zA-Z]{32}
/
これは、エスケープされたスラッシュを含む2 文字内のすべてに一致する必要があります。DATA
__END__
すべてを単一のファイルで実行できるように、Ruby の機能を使用しています。
また、解析された式の一部にタグを付けて、それらを関数として使用できることに注意してください。以下の例では、タグを付けinside
ました。elements[1]
これは、タグ付けされているのではなく、としてアクセスされた可能性もあります。
これは、ツリートップのドキュメントにある文字列の照合と同様に機能します。
require 'treetop'
Treetop.load_from_string DATA.read
parser = RegexParser.new
puts parser.parse('/blarg: dup\/md5 [0-9a-zA-Z]{32}/').inside.text_value
# => blarg: dup\/md5 [0-9a-zA-Z]{32}
__END__
grammar Regex
rule regex
'/' inside:('\/' / !'/' .)* '/'
end
end