@@ -36,30 +36,31 @@ def parse(str)
36
36
37
37
# :stopdoc:
38
38
39
- EXPR_BEG = :EXPR_BEG
40
- EXPR_DATA = :EXPR_DATA
41
- EXPR_TEXT = :EXPR_TEXT
42
- EXPR_RTEXT = :EXPR_RTEXT
43
- EXPR_CTEXT = :EXPR_CTEXT
44
-
45
- T_SPACE = :SPACE
46
- T_NIL = :NIL
47
- T_NUMBER = :NUMBER
48
- T_ATOM = :ATOM
49
- T_QUOTED = :QUOTED
50
- T_LPAR = :LPAR
51
- T_RPAR = :RPAR
52
- T_BSLASH = :BSLASH
53
- T_STAR = :STAR
54
- T_LBRA = :LBRA
55
- T_RBRA = :RBRA
56
- T_LITERAL = :LITERAL
57
- T_PLUS = :PLUS
58
- T_PERCENT = :PERCENT
59
- T_CRLF = :CRLF
60
- T_EOF = :EOF
61
- T_TEXT = :TEXT
62
-
39
+ EXPR_BEG = :EXPR_BEG # the default, used in most places
40
+ EXPR_DATA = :EXPR_DATA # envelope, body(structure), namespaces
41
+ EXPR_TEXT = :EXPR_TEXT # text, after 'resp-text-code "]"'
42
+ EXPR_RTEXT = :EXPR_RTEXT # resp-text, before "["
43
+ EXPR_CTEXT = :EXPR_CTEXT # resp-text-code, after 'atom SP'
44
+
45
+ T_SPACE = :SPACE # atom special
46
+ T_ATOM = :ATOM # atom (subset of astring chars)
47
+ T_NIL = :NIL # subset of atom and label
48
+ T_NUMBER = :NUMBER # subset of atom
49
+ T_LBRA = :LBRA # subset of atom
50
+ T_PLUS = :PLUS # subset of atom; tag special
51
+ T_RBRA = :RBRA # atom special; resp_special; valid astring char
52
+ T_QUOTED = :QUOTED # starts/end with atom special
53
+ T_BSLASH = :BSLASH # atom special; quoted special
54
+ T_LPAR = :LPAR # atom special; paren list delimiter
55
+ T_RPAR = :RPAR # atom special; paren list delimiter
56
+ T_STAR = :STAR # atom special; list wildcard
57
+ T_PERCENT = :PERCENT # atom special; list wildcard
58
+ T_LITERAL = :LITERAL # starts with atom special
59
+ T_CRLF = :CRLF # atom special; text special; quoted special
60
+ T_TEXT = :TEXT # any char except CRLF
61
+ T_EOF = :EOF # end of response string
62
+
63
+ # the default, used in most places
63
64
BEG_REGEXP = /\G (?:\
64
65
(?# 1: SPACE )( +)|\
65
66
(?# 2: NIL )(NIL)(?=[\x80 -\xff (){ \x00 -\x1f \x7f %*"\\ \[ \] +])|\
@@ -78,6 +79,7 @@ def parse(str)
78
79
(?# 15: CRLF )(\r \n )|\
79
80
(?# 16: EOF )(\z ))/ni
80
81
82
+ # envelope, body(structure), namespaces
81
83
DATA_REGEXP = /\G (?:\
82
84
(?# 1: SPACE )( )|\
83
85
(?# 2: NIL )(NIL)|\
@@ -87,13 +89,16 @@ def parse(str)
87
89
(?# 6: LPAR )(\( )|\
88
90
(?# 7: RPAR )(\) ))/ni
89
91
92
+ # text, after 'resp-text-code "]"'
90
93
TEXT_REGEXP = /\G (?:\
91
94
(?# 1: TEXT )([^\x00 \r \n ]*))/ni
92
95
96
+ # resp-text, before "["
93
97
RTEXT_REGEXP = /\G (?:\
94
98
(?# 1: LBRA )(\[ )|\
95
99
(?# 2: TEXT )([^\x00 \r \n ]*))/ni
96
100
101
+ # resp-text-code, after 'atom SP'
97
102
CTEXT_REGEXP = /\G (?:\
98
103
(?# 1: TEXT )([^\x00 \r \n \] ]*))/ni
99
104
0 commit comments