@@ -60,25 +60,22 @@ static void Main(string[] args)
6060 var spaces = Char ( ' ' ) . AtLeastOnceString ( ) ;
6161 var endOfLines = EndOfLine . AtLeastOnceString ( ) ;
6262 var _whitespaces = OneOf ( spaces , endOfLines ) ;
63- var _anyCharExcept = AnyCharExcept ( '(' , ')' , '[' , ']' , '{' , '}' , '$' , ' ' , '\n ' ) . AtLeastOnceString ( ) . Try ( )
64- . WithDebug ( "anyCharExcept" ) ;
63+ var _anyCharExcept = AnyCharExcept ( '(' , ')' , '[' , ']' , '{' , '}' , '$' , ' ' , '\n ' ) . AtLeastOnceString ( ) . Try ( ) ;
6564
6665 Parser < char , IEnumerable < string > > _expr = null ;
6766
6867
69- var _placeholder = PlaceholderParser . Identifier . Between ( Char ( '$' ) ) . Try ( )
70- . WithDebug ( "placeholder" ) ;
68+ var _placeholder = PlaceholderParser . Identifier . Between ( Char ( '$' ) ) . Try ( ) ;
7169
7270 // var parenthesised1 = Rec(() => expr).Between(Char('('), Char(')')).WithDebug("parenthesised1");
73- var _parenthesised1 = MapToMany ( Stringc ( '(' ) , Rec ( ( ) => _expr ) , Stringc ( ')' ) )
74- . WithDebug ( "parenthesised1" ) ;
71+ var _parenthesised1 = MapToMany ( Stringc ( '(' ) , Rec ( ( ) => _expr ) , Stringc ( ')' ) ) ;
7572 // var parenthesised2 = Rec(() => expr).Between(Char('['), Char(']')).WithDebug("parenthesised1");
76- var _parenthesised2 = MapToMany ( Stringc ( '[' ) , Rec ( ( ) => _expr ) , Stringc ( ']' ) )
77- . WithDebug ( "parenthesised2" ) ;
73+ var _parenthesised2 = MapToMany ( Stringc ( '[' ) , Rec ( ( ) => _expr ) , Stringc ( ']' ) ) ;
7874 // var parenthesised3 = Rec(() => expr).Between(Char('{'), Char('}')).WithDebug("parenthesised1");
79- var _parenthesised3 = MapToMany ( Stringc ( '{' ) , Rec ( ( ) => _expr ) , Stringc ( '}' ) )
80- . WithDebug ( "parenthesised3" ) ;
75+ var _parenthesised3 = MapToMany ( Stringc ( '{' ) , Rec ( ( ) => _expr ) , Stringc ( '}' ) ) ;
8176
77+
78+
8279 //don't work
8380 var _token = OneOf ( _anyCharExcept , _placeholder , _whitespaces ) ;
8481 var _tokens = _token . AtLeastOnce ( ) ;
@@ -89,19 +86,36 @@ static void Main(string[] args)
8986 Parser < char , IEnumerable < Parser < char , string > > > expr = null ;
9087
9188
89+ var _anyCharPlace = AnyCharExcept ( '(' , ')' , '[' , ']' , '{' , '}' , ' ' , '\n ' ) . AtLeastOnceString ( ) . Try ( ) ;
90+ var placeTokens = OneOf ( _anyCharPlace , _whitespaces ) . AtLeastOnce ( ) ;
91+ Parser < char , IEnumerable < string > > onPlace = null ;
92+ var placeParenthesised = MapToMany ( Stringc ( '(' ) , Rec ( ( ) => onPlace ) , Stringc ( ')' ) ) ;
93+ onPlace = placeTokens . Or ( placeParenthesised ) . AtLeastOnce ( ) . Select ( x=>
94+
95+
96+
97+ x ) . MergerMany ( ) ;
98+
99+
92100 var parenthesised1 = MapToMany ( ParserToParser . Stringc ( '(' ) , Rec ( ( ) => expr ) , ParserToParser . Stringc ( ')' ) ) ;
93101 var parenthesised2 = MapToMany ( ParserToParser . Stringc ( '[' ) , Rec ( ( ) => expr ) , ParserToParser . Stringc ( ']' ) ) ;
94102 var parenthesised3 = MapToMany ( ParserToParser . Stringc ( '{' ) , Rec ( ( ) => expr ) , ParserToParser . Stringc ( '}' ) ) ;
95103 var parenthesised = OneOf ( parenthesised1 , parenthesised2 , parenthesised3 ) ;
96- var anyCharExcept = _anyCharExcept . Select ( x => String ( x ) ) ;
104+ var anyCharExcept = _anyCharExcept . Select ( x =>
105+ {
106+
107+ Console . WriteLine ( $ " Parse { x } => String(\" { x } \" )") ;
108+ return String ( x ) ;
109+ } ) ;
97110 var whitespaces = _whitespaces . Select ( _ => WhitespaceString ) ;
98- var placeholder = _placeholder . Select ( x => _expr . Select ( x => string . Join ( "" , x ) ) ) ;
111+ var placeholder = _placeholder . Select ( x => onPlace . Select ( x => string . Join ( "" , x ) ) ) ;
99112 var token = OneOf ( anyCharExcept , placeholder , whitespaces ) ;
100113 var tokens = token . AtLeastOnce ( ) ;
101114
102115 expr = OneOf ( tokens , parenthesised ) . AtLeastOnce ( ) . MergerMany ( ) ;
103116 var parser = expr . Select ( x => Series ( x , enumerable => string . Join ( "" , enumerable ) ) ) ;
104117
118+ var test125 = Map ( ( u , v ) => string . Join ( "" , u ) + v , onPlace , Stringc ( ';' ) ) ;
105119 //
106120 //
107121 //
@@ -124,14 +138,14 @@ static void Main(string[] args)
124138 // .AsString();
125139
126140 var template1 =
127- "if(( $condition$) = ($test$) )\n " +
141+ "if($condition$)\n " +
128142 "return $value1$;\n " +
129143 "else\n " +
130144 "return $value2$;" ;
131145
132146
133147 var example1 =
134- "if(value == 5 )\n " +
148+ "if(( value) = (5) )\n " +
135149 "return \" Result1\" ;\n " +
136150 "else\n " +
137151 "return \" Result2\" ;" ;
@@ -152,19 +166,27 @@ static void Main(string[] args)
152166 "$var$ = $value2$;\n " +
153167 "}" ;
154168
155-
169+ // var g = test125.ParseOrThrow("\"Result1\";");
156170
157171 var testTempalte = "if($test$)" ;
158- var testText = "if((value1) && (value2))" ;
172+ var testText = "if((value1)&& (value2))" ;
159173
160- var test = _expr . ParseOrThrow ( testTempalte ) ;
174+ // var test = _expr.ParseOrThrow(template1 );
161175
162176 var resParser = parser . ParseOrThrow ( testTempalte ) ;
177+ Console . WriteLine ( "___________________________________________________________" ) ;
163178 var res = resParser . ParseOrThrow ( testText ) ;
164179
165180
166-
167- // var templateResult = test.ParseOrThrow("test");
181+ // OneOf (
182+ // Try ( foo ),
183+ // Try ( bar ),
184+ // Any . ThenReturn ( " " ) // отбрасываем символ
185+ // )
186+ // . Многие ()
187+ // . Select ( xs => string . Join ( " " , xs ));
188+
189+ //var templateResult = test.ParseOrThrow("test");
168190 }
169191 }
170192}
0 commit comments