Regla de análisis de Rebol: cómo corregir la regla para separar párrafos
-
06-07-2019 - |
Pregunta
Quiero analizar la serie de pedidos a continuación:
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
Tengo esto en el portapapeles
[{Wordpress Profiles
Blogger is a User
Admin is a Blogger
Author is a Blogger
Subscriber is a User} "Blogger Role^/Blogger Manage Posts"]
mientras que me gustaría obtener esto
[{
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
}]
¿Cómo debo modificar mi regla de análisis?
Gracias.
Solución
Utilizo un enfoque ligeramente diferente:
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
Sospecho que la solución en blanco adicional entre Blogger Manage Posts y Admin Roles tropezaría con la solución de Doc y Henrik.
Otros consejos
Creo que esto también funciona:
orders: []
parse orders-series [
any [
newline
| copy txt [to "^/^/" | to end] (append orders trim txt) "^/"
]
]
Simplemente elimine el | delante de: | copiar ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow