Rebol Parsing Rule: comment corriger la règle en séparant les paragraphes

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

  •  06-07-2019
  •  | 
  •  

Question

Je souhaite analyser les commandes-séries ci-dessous:

  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

Je l'ai dans le presse-papier

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

alors que je voudrais obtenir ceci

  [{
  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
  }]

Comment dois-je modifier ma règle d'analyse?

Merci.

Était-ce utile?

La solution

J'utilise une approche légèrement différente:

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

Je soupçonne que la solution de Doc et de Henrik serait déclenchée par la ligne blanche supplémentaire entre Blogger, Gestion des publications et des rôles d'administrateur.

Autres conseils

Je pense que cela fonctionne aussi:

orders: []

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

Supprimez simplement le | devant: | copier ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top