11using System ;
22using System . Collections . Generic ;
3+ using System . Linq ;
34using Pidgin ;
45using Pidgin . Expression ;
6+ using SimpleStateMachine . StructuralSearch . Sandbox . Extensions ;
57using static Pidgin . Parser ;
68using static Pidgin . Parser < char > ;
79
810namespace SimpleStateMachine . StructuralSearch . Sandbox
911{
1012 internal static class Program
1113 {
12- public class Test
14+ public class Placeholder
1315 {
16+ public Placeholder ( bool isCorrect , string value )
17+ {
18+ IsCorrect = isCorrect ;
19+ Value = value ;
20+ }
1421
22+ public bool IsCorrect { get ; set ; }
23+ public string Value { get ; set ; }
1524 }
1625 static void Main ( string [ ] args )
1726 {
18- Parser < char , double > r1 = Real ;
19- Parser < char , double > r2 = Real ;
20- Parser < char , IEnumerable < char > > r1r2 = Whitespaces . Then ( Char ( '+' ) ) . Then ( Whitespaces ) ;
21- Parser < char , double > rParser = Map ( ( foo , _ , bar ) => bar + foo , r1 , r1r2 , r2 ) ;
22- Parser < char , string > rParser2 = rParser . Select ( x=> x . ToString ( ) ) ;
2327
28+ // var abv = Common.Symbol.ManyString();
29+ // // AnyCharExcept(' ', '$')
30+ // // var any = Parser<TToken>.Token((Func<TToken, bool>) (_ => true)).Labelled("any character")
31+ // var any = Common.Symbol.ManyString();
32+ // var placeholder = PlaceholderParser.Identifier.Between(Char('$'));
33+ // // var token = Char("$").Then(AnyCharExcept(' ', '$').Many())
34+ // // var parser = placeholder.Separated(any).Many();
35+ //
36+ // var parser = Common.Tok(placeholder).Or(Common.Tok(any));
37+
38+ var any = AnyCharExcept ( '$' ) . ManyString ( ) ;
39+ var token = Try ( PlaceholderParser . Identifier . Between ( Char ( '$' ) ) ) ;
40+ var testpar = token . Or ( any ) . Many ( ) ;
2441
25- Parser < char , string > Var = Letter . Then ( LetterOrDigit . ManyString ( ) , ( h , t ) => h + t ) ;
26- Parser < char , string > sParser = Map ( ( foo , _ , bar ) => foo + bar , Var , r1r2 , Var ) ;
2742
43+
44+ // var str = Any.Many().Select(x => new string(x.ToArray()));
45+ // var parser = placeholder.Or(str);
46+
47+ var template =
48+ "if($condition$)\n " +
49+ "return $value1$;\n " +
50+ "else\n " +
51+ "return $value2$;" ;
2852
29- var js = String ( "js" ) . ThenReturn ( rParser2 ) ;
30- var other = Whitespaces . ThenReturn ( sParser ) ;
31-
32- var result = js . Or ( other ) . Then ( CurrentPos ) ;
33- var ds = r1r2 . Select ( x=> x ) ;
34- var tds = CurrentOffset ;
53+ var test = testpar . Parse ( "abdsfdasf $ 2323" ) ;
3554
36- var input = " + " ;
37- // var t2 = result.ParseOrThrow("55 + 25").WithResult(x => x);
38- var dsdfsdf = ds . ParseOrThrow ( input ) ;
39- var t2 = r1r2 . ParseOrThrow ( input ) ;
40- var t = result . ParseOrThrow ( "js foo + bar" ) ;
4155
42- var t23 = PlaceholderParser . Placeholder ( ) . ParseOrThrow ( "$test$" ) ;
43-
44- // Parser<char, IEnumerable<char>> parser3 = Whitespaces.Then(Char('+')).Then(Whitespaces);
45- // Parser<char, double> sequencedParser = Map((foo, _,bar) => bar + foo, parser1, parser3, parser2);
56+ // // var token = Try(PlaceholderParser.Identifier.Between(Char('$').Then(Digit));
57+ // // var testpar = token.Or(Any).Then.Many();
58+ //
59+ // var token = Try(PlaceholderParser.Identifier.Between(Char('$').Then(Digit)));
60+ // Parser<char, string> expr = null;
61+ // var parenthesised = Any
62+ // .Then(Rec(() => expr), (c, c1) =>c + c1 );
63+ //
64+ //
65+ // expr = Real.Select(x=>x.ToString()).Or(parenthesised);
66+ //
67+ // // var any = Any.Select(x=> new string(x.ToArray()));
68+ // // var token = Try(PlaceholderParser.Identifier.Between(Char('$')).Then(Digit, (s, c) => s + c).Select(x=> ));
69+ // // var testpar = token.Or(any).Select().Many();
4670 //
47- // var or = String("")
71+ // var test = Any.Then(CurrentPos, (c, pos) => (c, pos.Col)).Many();
4872 //
73+ // var teest2 = PlaceholderParser.Identifier.Test(Char('$'), Char('$'));
4974 //
50- // var t = sequencedParser.ParseOrThrow("5+5");
51- // var g = t.Invoke();
75+ //
76+ // // var gh = Any.Many().Then(String("from")).ParseOrThrow("fsdkfdsfkJFLDKJFfrom");
77+ //
78+ // var gf = expr.Many().ParseOrThrow("$test$ 4 52");
5279 }
5380 }
5481}
0 commit comments