summaryrefslogtreecommitdiffstats
path: root/genvim.txr
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-07-04 05:48:14 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-07-04 05:48:14 -0700
commit1ed668849f55baabd50a87375a94ae89f7c5f4b7 (patch)
tree0e780096151e8abce72b7f3aa049b8c00473f744 /genvim.txr
parent4322422242f7026a931d326813f6bace50de6fe5 (diff)
downloadtxr-1ed668849f55baabd50a87375a94ae89f7c5f4b7.tar.gz
txr-1ed668849f55baabd50a87375a94ae89f7c5f4b7.tar.bz2
txr-1ed668849f55baabd50a87375a94ae89f7c5f4b7.zip
Reduce regex duplication in genvim.txr.
* genvim.txr (bs, hex, at, alpha, alnum, dig, oct, chesc, glyph): New variables. *(txr_error, txr_atat, txr_comment, txr_contin, txr_char, txr_regdir, txr_variable, txr_splicevar, txr_stresc, txr_numesc, txr_regesc, txr_chr, txr_num, txr_badnum,txr_ident, txr_braced_ident): Use regex definitions.
Diffstat (limited to 'genvim.txr')
-rw-r--r--genvim.txr69
1 files changed, 39 insertions, 30 deletions
diff --git a/genvim.txr b/genvim.txr
index 4e952844..5c70e15c 100644
--- a/genvim.txr
+++ b/genvim.txr
@@ -45,6 +45,15 @@ static void dir_tables_init(void)
@(do (set [txl-sym 0..0] '("macro-time" "macrolet" "symacrolet"
"txr-if" "txr-when" "txr-case")))
@(set (txr-sym txl-sym) (@(sort (uniq txr-sym)) @(sort (uniq txl-sym))))
+@(bind bs "\\\\")
+@(bind hex "0-9A-Fa-f")
+@(bind at "\\(@[ \\t]*\\)")
+@(bind alpha "A-Za-z_")
+@(bind alnum "A-Za-z_0-9")
+@(bind dig "0-9")
+@(bind oct "0-7")
+@(bind chesc `abtnvfre@bs\\n`)
+@(bind glyph `!$%&*+\\-<=>?@{bs}_~`)
@(define generate (txr-p))
@ (output @(if txr-p "txr.vim" "tl.vim") :named out)
" VIM Syntax file for txr
@@ -73,48 +82,48 @@ setlocal iskeyword=a-z,A-Z,48-57,!,$,&,*,+,-,<,=,>,?,\\,_,~,/
@ (if txr-p)
@ (output :continue out)
@ (rep) @{txr-sym}@(mod 0 4)@\nsyn keyword txr_keyword contained @{txr-sym}@(end)
-syn match txr_error "@@[\t ]*[*]\?[\t ]*."
-syn match txr_atat "@@[ \t]*@@"
-syn match txr_comment "@@[ \t]*[#;].*"
-syn match txr_contin "@@[ \t]*\\$"
-syn match txr_char "@@[ \t]*\\."
-syn match txr_error "@@[ \t]*\\[xo]"
-syn match txr_char "@@[ \t]*\\x[0-9A-Fa-f]\+;\?"
-syn match txr_char "@@[ \t]*\\[0-7]\+;\?"
-syn match txr_regdir "@@[ \t]*/\(\\/\|[^/]\|\\\n\)*/"
+syn match txr_error "@at[*]\?[\t ]*."
+syn match txr_atat "@at@@"
+syn match txr_comment "@at[#;].*"
+syn match txr_contin "@at\\$"
+syn match txr_char "@at\\."
+syn match txr_error "@at\\[xo]"
+syn match txr_char "@at\\x[@hex]\+;\?"
+syn match txr_char "@at\\[@oct]\+;\?"
+syn match txr_regdir "@at/\(\\/\|[^/]\|\\\n\)*/"
syn match txr_hashbang "^#!.*"
@ (end)
@ (end)
@ (output :continue out)
syn match txr_nested_error "[^\t ]\+" contained
-syn match txr_variable "@@[ \t]*[*]\?[ \t]*[A-Za-z_][A-Za-z0-9_]*"
-syn match txr_splicevar "@@[ \t,*]*[A-Za-z_][A-Za-z0-9_]*"
+syn match txr_variable "@at[*]\?[ \t]*[@alpha][@alnum]*"
+syn match txr_splicevar "@@[ \t,*]*[@alpha][@alnum]*"
syn match txr_metanum "@@[0-9]\+"
syn match txr_badesc "\\." contained
syn match txr_escat "\\@@" contained
-syn match txr_stresc "\\[abtnvfre \n"`'\\]" contained
-syn match txr_numesc "\\x[0-9A-Fa-f]\+;\?" contained
-syn match txr_numesc "\\[0-7]\+;\?" contained
-syn match txr_regesc "\\[abtnvfre\\ \n/sSdDwW()\|.*?+~&%\[\]\-]" contained
+syn match txr_stresc "\\[@chesc"`']" contained
+syn match txr_numesc "\\x[@hex]\+;\?" contained
+syn match txr_numesc "\\[@oct]\+;\?" contained
+syn match txr_regesc "\\[@chesc/sSdDwW()\|.*?+~&%\[\]\-]" contained
-syn match txr_chr "#\\x[A-Fa-f0-9]\+"@(if txr-p " contained")
-syn match txr_chr "#\\o[0-7]\+"@(if txr-p " contained")
-syn match txr_chr "#\\[^ \t\nA-Za-z0-9_]"@(if txr-p " contained")
-syn match txr_chr "#\\[A-Za-z0-9_]\+"@(if txr-p " contained")
+syn match txr_chr "#\\x[@hex]\+"@(if txr-p " contained")
+syn match txr_chr "#\\o[@oct]\+"@(if txr-p " contained")
+syn match txr_chr "#\\[^ \t\n@alnum]"@(if txr-p " contained")
+syn match txr_chr "#\\[@alnum]\+"@(if txr-p " contained")
syn match txr_ncomment ";.*"@(if txr-p " contained")
syn match txr_dot "\." contained
-syn match txr_num "#x[+\-]\?[0-9A-Fa-f]\+"@(if txr-p " contained")
-syn match txr_num "#o[+\-]\?[0-7]\+"@(if txr-p " contained")
-syn match txr_num "#b[+\-]\?[0-1]\+"@(if txr-p " contained")
-syn match txr_ident "[A-Za-z0-9!$%&*+\-<=>?\\_~]*[A-Za-z!$%&*+\-<=>?\\^_~][A-Za-z0-9!$#%&*+\-<=>?\\^_~]*" contained
-syn match txl_ident "[:@@][A-Za-z0-9!$%&*+\-<=>?\\\^_~/]\+"@(if txr-p " contained")
-syn match txr_braced_ident "[:][A-Za-z0-9!$%&*+\-<=>?\\\^_~/]\+" contained
-syn match txl_ident "[A-Za-z0-9!$%&*+\-<=>?\\_~/]*[A-Za-z!$%&*+\-<=>?\\^_~/][A-Za-z0-9!$#%&*+\-<=>?\\^_~/]*"@(if txr-p " contained")
-syn match txr_num "[+\-]\?[0-9]\+\([^A-Za-z0-9!$#%&*+\-<=>?\\^_~/]\|\n\)"me=e-1@(if txr-p " contained")
-syn match txr_badnum "[+\-]\?[0-9]*[.][0-9]\+\([eE][+\-]\?[0-9]\+\)\?[A-Za-z!$#%&*+\-<=>?\\^_~/]\+"@(if txr-p " contained")
-syn match txr_num "[+\-]\?[0-9]*[.][0-9]\+\([eE][+\-]\?[0-9]\+\)\?\([^A-Za-z0-9!$#%&*+\-<=>?\\^_~/]\|\n\)"me=e-1@(if txr-p " contained")
-syn match txr_num "[+\-]\?[0-9]\+\([eE][+\-]\?[0-9]\+\)\([^A-Za-z0-9!$#%&*+\-<=>?\\^_~/]\|\n\)"me=e-1@(if txr-p " contained")
+syn match txr_num "#x[+\-]\?[@hex]\+"@(if txr-p " contained")
+syn match txr_num "#o[+\-]\?[@oct]\+"@(if txr-p " contained")
+syn match txr_num "#b[+\-]\?[01]\+"@(if txr-p " contained")
+syn match txr_ident "[@alnum@glyph]*[@alpha@glyph^][@alnum@glyph^]*" contained
+syn match txl_ident "[:@@][@alnum@glyph^/]\+"@(if txr-p " contained")
+syn match txr_braced_ident "[:][@alnum@glyph^/]\+" contained
+syn match txl_ident "[@alnum@glyph/]*[@alpha@glyph^/#][@alnum@glyph^/#]*"@(if txr-p " contained")
+syn match txr_num "[+\-]\?[@dig]\+\([^@alnum@glyph^/#]\|\n\)"me=e-1@(if txr-p " contained")
+syn match txr_badnum "[+\-]\?[@dig]*[.][@dig]\+\([eE][+\-]\?[@dig]\+\)\?[@alpha@glyph^/#]\+"@(if txr-p " contained")
+syn match txr_num "[+\-]\?[@dig]*[.][@dig]\+\([eE][+\-]\?[@dig]\+\)\?\([^@alnum@glyph^/#]\|\n\)"me=e-1@(if txr-p " contained")
+syn match txr_num "[+\-]\?[@dig]\+\([eE][+\-]\?[@dig]\+\)\([^@alnum@glyph^/#]\|\n\)"me=e-1@(if txr-p " contained")
syn match txl_ident ":"@(if txr-p " contained")
syn match txl_splice "[ \t,]\|,[*]"@(if txr-p " contained")