2012-08-01 54 views
1

我想創建一個模塊來解析以特定方式切片的vim文件。一個範例文件:解析與augeas分段的文件

" My section { 
    set nocompatible   " be iMproved 
    set encoding=utf-8 
" } 
" vim: set foldmarker={,} foldlevel=0 foldmethod=marker: 

在寫模塊,我被困在這一點上:

module Vimrc = 
    autoload xfm 
    let section = del "\" " "\" " . key /[^\n]+/ . del "\n" "\n" . store /.*/ . del "\" " "\" " 
    let lns = [ section . del "\n" "\n" ] * 
    let filter = (incl "*.vim") 
    let xfm = transform lns filter 

我知道,還有其他的一些錯誤,但它抱怨正則表達式key /[^\n]+/說:

/tmp/aug/vimrc.aug:3.36-.48:exception:關鍵的regexp/[^] + /匹配 一個 '/'

我不明白/角色與此有關。

回答

1

正如錯誤所述,您的密鑰正則表達式匹配斜槓,這是非法的,因爲/被用作樹中的級別分隔符。

如果你的節名可以包含斜線,你需要將它們存儲爲節點的值,而不是標籤,這樣反而:

{ "My section" 
    { "set" = "nocompatible" { "#comment" = "be iMproved" } } } 

你必須做的:

{ "section" = "My section" 
    { "set" = "nocompatible" { "#comment" = "be iMproved" } } }