예제 #1
0
            public override void Parse(TokenStream Lexer, List <SyntaxNode> Res)
            {
                var        Right = Factor_.Parse(Lexer);
                Precedence Prec;

                while ((Prec = NextOperator(Lexer)) != null)
                {
                    Right = DoShift(Lexer, Right, Prec.Value);
                }

                Res.Add(Right);
            }
예제 #2
0
            public override void Parse(TokenStream Lexer, List <SyntaxNode> Res)
            {
                while (StoneParser_.Match(Lexer))
                {
                    var T = StoneParser_.Parse(Lexer);
                    if (!(T is SyntaxCommandNode Cmd) || Cmd.GetChildrenNum() > 0)
                    {
                        Res.Add(T);
                    }

                    if (OnlyOnce_)
                    {
                        break;
                    }
                }
            }
예제 #3
0
 public SyntaxNode Parse(TokenStream Lexer)
 {
     return(Expr_.Parse(Lexer));
 }
예제 #4
0
 public override void Parse(TokenStream Lexer, List <SyntaxNode> Res)
 {
     Res.Add(StoneParser_.Parse(Lexer));
 }