Rebol解析ルール:ルールを修正して段落を区切る方法

StackOverflow https://stackoverflow.com/questions/1415340

  •  06-07-2019
  •  | 
  •  

質問

以下のorders-seriesを解析したい:

  orders-series: {Wordpress Profiles
  Blogger is a User
  Admin is a Blogger
  Author is a Blogger
  Subscriber is a User

  Blogger Role
  Blogger Manage Posts


  Admin Roles
  Admin Manage Site
  Manage Site Include Manage Users
  Manage Site Include Manage Themes
  Manage Site Include Manage Plugins
  }

  orders-block: copy []
  newline2: rejoin [newline newline]
  rule: [
    [some [copy orders to newline2 (append orders-block orders) thru newline2]]
    | copy orders to end (append orders-block orders)
  ]
  parse orders-series rule
  write clipboard:// mold orders-block

クリップボードに入れました

[{Wordpress Profiles
Blogger is a User
Admin is a Blogger
Author is a Blogger
Subscriber is a User} "Blogger Role^/Blogger Manage Posts"]

これを入手したい

  [{
  Wordpress Profiles
  Blogger is a User
  Admin is a Blogger
  Author is a Blogger
  Subscriber is a User
  }
  {
  Blogger Role
  Blogger Manage Posts
  }    
  {
  Admin Roles
  Admin Manage Site
  Manage Site Include Manage Users
  Manage Site Include Manage Themes
  Manage Site Include Manage Plugins
  }]

解析ルールを変更するにはどうすればよいですか

ありがとう。

役に立ちましたか?

解決

私は少し異なるアプローチを使用しています:

REBOL []

orders-series: {Wordpress Profiles
  Blogger is a User
  Admin is a Blogger
  Author is a Blogger
  Subscriber is a User

  Blogger Role
  Blogger Manage Posts


  Admin Roles
  Admin Manage Site
  Manage Site Include Manage Users
  Manage Site Include Manage Themes
  Manage Site Include Manage Plugins
}

char-cr-lf: charset [
  #"^(00)" - #"^(09)" #"^(0B)" - #"^(0C)" #"^(0E)" - #"^(FF)"
]

an-order: [
  [
    some [
      some [char-cr-lf] newline
    ] 
  ] 
]

rule: [
  (orders-block: copy [])
  [
    any [copy order an-order (append orders-block order) [ any newline | end]]
  ]
]

parse orders-series rule

DocのソリューションとHenrikのソリューションの両方が、Bloggerの投稿の管理と管理者の役割の間にある空白行によって失敗するのではないかと思います。

他のヒント

これも機能すると思います:

orders: []

parse orders-series [
    any [
        newline
        | copy txt [to "^/^/" | to end] (append orders trim txt) "^/"
    ]
]

|を削除するだけですの前に:|コピー...

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