@@ -30,40 +30,41 @@ public Placeholder(bool isCorrect, string value)
3030
3131 static void Main ( string [ ] args )
3232 {
33- var whitespaces = WhitespaceString ;
34- var endOfLines = EndOfLine . ManyString ( ) ;
33+ var whitespaces = Char ( ' ' ) . AtLeastOnceString ( ) ;
34+ var endOfLines = EndOfLine . AtLeastOnceString ( ) ;
3535 var anyCharExcept = AnyCharExcept ( '(' , ')' , '[' , ']' , '{' , '}' , '$' , ' ' , '\n ' ) . AtLeastOnceString ( ) . Try ( )
3636 . WithDebug ( "anyCharExcept" ) ;
3737 Parser < char , IEnumerable < string > > expr = null ;
38+
39+
3840 var placeholder = PlaceholderParser . Identifier . Between ( Char ( '$' ) ) . Try ( )
3941 . WithDebug ( "placeholder" ) ;
42+
43+ // var parenthesised1 = Rec(() => expr).Between(Char('('), Char(')')).WithDebug("parenthesised1");
4044 var parenthesised1 = MapToMany ( Stringc ( '(' ) , Rec ( ( ) => expr ) , Stringc ( ')' ) )
4145 . WithDebug ( "parenthesised1" ) ;
46+ // var parenthesised2 = Rec(() => expr).Between(Char('['), Char(']')).WithDebug("parenthesised1");
4247 var parenthesised2 = MapToMany ( Stringc ( '[' ) , Rec ( ( ) => expr ) , Stringc ( ']' ) )
4348 . WithDebug ( "parenthesised2" ) ;
49+ // var parenthesised3 = Rec(() => expr).Between(Char('{'), Char('}')).WithDebug("parenthesised1");
4450 var parenthesised3 = MapToMany ( Stringc ( '{' ) , Rec ( ( ) => expr ) , Stringc ( '}' ) )
4551 . WithDebug ( "parenthesised3" ) ;
52+
53+ var parenthesised = OneOf ( parenthesised1 , parenthesised2 , parenthesised3 ) . ToIEnumerable ( ) ;
54+
55+
56+ //don't work
57+ var parser = OneOf ( anyCharExcept , placeholder , whitespaces , endOfLines ) . AtLeastOnce ( ) ;
58+ expr = parser . Or ( parenthesised ) . AtLeastOnce ( ) . MergerMany ( ) ;
59+
60+ //work
61+ // var parser = OneOf(anyCharExcept, placeholder).AtLeastOnce();
62+ // expr = parser.Or(parenthesised).Separated(Whitespaces).MergerMany();
4663
47- // var parenthesised1 = Rec(() => expr)
48- // .Between(Char('('), Char(')'))
49- // .WithDebug("parenthesised1");
50- // var parenthesised2 = Rec(() => expr)
51- // .Between(Char('['), Char(']'))
52- // .WithDebug("parenthesised1");
53- // var parenthesised3 = Rec(() => expr)
54- // .Between(Char('{'), Char('}'))
55- // .WithDebug("parenthesised1");
5664
57- var parenthesised = parenthesised1 . Or ( parenthesised2 ) . Or ( parenthesised3 ) ;
58-
59- // var parser = anyCharExcept.Or(placeholder).Or(whitespaces).Or(endOfLines).Many();
60- var parser = anyCharExcept . Or ( placeholder ) . Separated ( Whitespaces ) ;
61-
62- expr = parser . Or ( parenthesised . ToIEnumerable ( ) ) ;
63-
64-
6565 var t = "((test > 25) && (test < 50))" ;
6666 var t2 = "([test > 25] && {test < 50})" ;
67+
6768 //template parser
6869 var separator = Whitespaces . AsString ( ) . Or ( EndOfLine ) ;
6970 var any = AnyCharExcept ( '$' , ' ' , '\n ' ) . AtLeastOnceString ( ) ;
0 commit comments