2009-09-12 45 views
1

我想分析如下命令系列:雷博爾分析規則:如何糾正規則分隔段落

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

我該如何修改我的分析規則?

謝謝。

回答

2

我用稍微不同的方法:

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 

我懷疑,這兩個文件的和Henrik的解決方案將通過附加被絆倒Blogger管理員額和管理員角色之間的空白行。

+0

感謝您的回答,請嘗試。 – 2009-11-01 19:55:28

1

只要刪除|在...前面副本...

2

我覺得這個工作太:

orders: [] 

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