@@ -57,7 +57,9 @@ public static AstNode ParseCommandRequest(string request, char commandChar = Def
5757 strPtr . SkipChar ( delimeterChar ) ;
5858
5959 if ( strPtr . End )
60+ {
6061 build = BuildStatus . End ;
62+ }
6163 else
6264 {
6365 switch ( strPtr . Char )
@@ -66,20 +68,28 @@ public static AstNode ParseCommandRequest(string request, char commandChar = Def
6668 build = BuildStatus . ParseQuotedString ;
6769 //goto case BuildStatus.ParseQuotedString;
6870 break ;
71+
6972 case '(' :
7073 if ( ! strPtr . HasNext )
74+ {
7175 build = BuildStatus . ParseFreeString ;
76+ }
7277 else if ( strPtr . IsNext ( commandChar ) )
7378 {
7479 strPtr . Next ( '(' ) ;
7580 build = BuildStatus . ParseCommand ;
7681 }
7782 else
83+ {
7884 build = BuildStatus . ParseFreeString ;
85+ }
7986 break ;
87+
8088 case ')' :
8189 if ( comAst . Count <= 0 )
90+ {
8291 build = BuildStatus . End ;
92+ }
8393 else
8494 {
8595 comAst . Pop ( ) ;
@@ -88,6 +98,7 @@ public static AstNode ParseCommandRequest(string request, char commandChar = Def
8898 }
8999 strPtr . Next ( ) ;
90100 break ;
101+
91102 default :
92103 build = BuildStatus . ParseFreeString ;
93104 break ;
@@ -96,8 +107,6 @@ public static AstNode ParseCommandRequest(string request, char commandChar = Def
96107 break ;
97108
98109 case BuildStatus . ParseFreeString :
99- strb . Clear ( ) ;
100-
101110 var valFreeAst = new AstValue ( ) ;
102111 using ( strPtr . TrackNode ( valFreeAst ) )
103112 {
@@ -106,11 +115,12 @@ public static AstNode ParseCommandRequest(string request, char commandChar = Def
106115 if ( ( strPtr . Char == '(' && strPtr . HasNext && strPtr . IsNext ( commandChar ) )
107116 || strPtr . Char == ')'
108117 || strPtr . Char == delimeterChar )
118+ {
109119 break ;
110- strb . Append ( strPtr . Char ) ;
120+ }
111121 }
112122 }
113- valFreeAst . Value = strb . ToString ( ) ;
123+ valFreeAst . BuildValue ( ) ;
114124 buildCom = comAst . Peek ( ) ;
115125 buildCom . Parameter . Add ( valFreeAst ) ;
116126 build = BuildStatus . SelectParam ;
@@ -127,14 +137,21 @@ public static AstNode ParseCommandRequest(string request, char commandChar = Def
127137 bool escaped = false ;
128138 for ( ; ! strPtr . End ; strPtr . Next ( ) )
129139 {
130- if ( strPtr . Char == '\\ ' ) escaped = true ;
140+ if ( strPtr . Char == '\\ ' )
141+ {
142+ escaped = true ;
143+ }
131144 else if ( strPtr . Char == '"' )
132145 {
133- if ( escaped ) strb . Length -- ;
146+ if ( escaped ) { strb . Length -- ; }
134147 else { strPtr . Next ( ) ; break ; }
135148 escaped = false ;
136149 }
137- else escaped = false ;
150+ else
151+ {
152+ escaped = false ;
153+ }
154+
138155 strb . Append ( strPtr . Char ) ;
139156 }
140157 }
@@ -208,7 +225,7 @@ public NodeTracker TrackNode(AstNode node)
208225 astnode . Position = index ;
209226 astnode . Length = 0 ;
210227 }
211- return ( curTrack = new NodeTracker ( this ) ) ;
228+ return curTrack = new NodeTracker ( this ) ;
212229 }
213230
214231 private void UntrackNode ( )
0 commit comments