Example #1
0
        public void AnyText(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args)
        {
            // PLUS 1
            int _start_i1 = _index;
            var _res1     = Enumerable.Empty <MarkdownElementBase>();

label1:

            // AND 2
            int _start_i2 = _index;

            // NOT 3
            int _start_i3 = _index;

            // OR 4
            int _start_i4 = _index;

            // LITERAL '\n'
            _ParseLiteralChar(_memo, ref _index, '\n');

            // OR shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Pop(); _index = _start_i4;
            }
            else
            {
                goto label4;
            }

            // LITERAL '\r'
            _ParseLiteralChar(_memo, ref _index, '\r');

label4:                             // OR
            int _dummy_i4 = _index; // no-op for label

            // NOT 3
            var _r3 = _memo.Results.Pop();

            _memo.Results.Push(_r3 == null ? new _GithubMarkdown_Item(_start_i3, _memo.InputEnumerable) : null);
            _index = _start_i3;

            // AND shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Push(null); goto label2;
            }

            // ANY
            _ParseAny(_memo, ref _index);

label2:     // AND
            var _r2_2 = _memo.Results.Pop();
            var _r2_1 = _memo.Results.Pop();

            if (_r2_1 != null && _r2_2 != null)
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i2, _index, _memo.InputEnumerable, _r2_1.Results.Concat(_r2_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i2;
            }

            // PLUS 1
            var _r1 = _memo.Results.Pop();

            if (_r1 != null)
            {
                _res1 = _res1.Concat(_r1.Results);
                goto label1;
            }
            else
            {
                if (_index > _start_i1)
                {
                    _memo.Results.Push(new _GithubMarkdown_Item(_start_i1, _index, _memo.InputEnumerable, _res1.Where(_NON_NULL), true));
                }
                else
                {
                    _memo.Results.Push(null);
                }
            }

            // ACT
            var _r0 = _memo.Results.Peek();

            if (_r0 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { string match        = Input(_IM_Result);
                                                                                                                                         GeneralElement text = new GeneralElement(ElementType.InlineText);
                                                                                                                                         text.TextContent    = match;
                                                                                                                                         return(text); }, _r0), true));
            }
        }
Example #2
0
        public void HeadText(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args)
        {
            // STAR 1
            int _start_i1 = _index;
            var _res1     = Enumerable.Empty <MarkdownElementBase>();

label1:

            // AND 2
            int _start_i2 = _index;

            // NOT 3
            int _start_i3 = _index;

            // CALLORVAR LineBreak
            _GithubMarkdown_Item _r4;

            _r4 = _MemoCall(_memo, "LineBreak", _index, LineBreak, null);

            if (_r4 != null)
            {
                _index = _r4.NextIndex;
            }

            // NOT 3
            var _r3 = _memo.Results.Pop();

            _memo.Results.Push(_r3 == null ? new _GithubMarkdown_Item(_start_i3, _memo.InputEnumerable) : null);
            _index = _start_i3;

            // AND shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Push(null); goto label2;
            }

            // ANY
            _ParseAny(_memo, ref _index);

label2:     // AND
            var _r2_2 = _memo.Results.Pop();
            var _r2_1 = _memo.Results.Pop();

            if (_r2_1 != null && _r2_2 != null)
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i2, _index, _memo.InputEnumerable, _r2_1.Results.Concat(_r2_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i2;
            }

            // STAR 1
            var _r1 = _memo.Results.Pop();

            if (_r1 != null)
            {
                _res1 = _res1.Concat(_r1.Results);
                goto label1;
            }
            else
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i1, _index, _memo.InputEnumerable, _res1.Where(_NON_NULL), true));
            }

            // ACT
            var _r0 = _memo.Results.Peek();

            if (_r0 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { string match        = Input(_IM_Result);
                                                                                                                                         GeneralElement text = new GeneralElement(ElementType.InlineText);
                                                                                                                                         text.TextContent    = match;
                                                                                                                                         return(text); }, _r0), true));
            }
        }
Example #3
0
        public void InlineText(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args)
        {
            // AND 1
            int _start_i1 = _index;

            // NOT 2
            int _start_i2 = _index;

            // CALLORVAR StartSymbol
            _GithubMarkdown_Item _r3;

            _r3 = _MemoCall(_memo, "StartSymbol", _index, StartSymbol, null);

            if (_r3 != null)
            {
                _index = _r3.NextIndex;
            }

            // NOT 2
            var _r2 = _memo.Results.Pop();

            _memo.Results.Push(_r2 == null ? new _GithubMarkdown_Item(_start_i2, _memo.InputEnumerable) : null);
            _index = _start_i2;

            // AND shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Push(null); goto label1;
            }

            // PLUS 4
            int _start_i4 = _index;
            var _res4     = Enumerable.Empty <MarkdownElementBase>();

label4:

            // AND 5
            int _start_i5 = _index;

            // NOT 6
            int _start_i6 = _index;

            // OR 7
            int _start_i7 = _index;

            // LITERAL '\n'
            _ParseLiteralChar(_memo, ref _index, '\n');

            // OR shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Pop(); _index = _start_i7;
            }
            else
            {
                goto label7;
            }

            // LITERAL '\r'
            _ParseLiteralChar(_memo, ref _index, '\r');

label7:                             // OR
            int _dummy_i7 = _index; // no-op for label

            // NOT 6
            var _r6 = _memo.Results.Pop();

            _memo.Results.Push(_r6 == null ? new _GithubMarkdown_Item(_start_i6, _memo.InputEnumerable) : null);
            _index = _start_i6;

            // AND shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Push(null); goto label5;
            }

            // ANY
            _ParseAny(_memo, ref _index);

label5:     // AND
            var _r5_2 = _memo.Results.Pop();
            var _r5_1 = _memo.Results.Pop();

            if (_r5_1 != null && _r5_2 != null)
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i5, _index, _memo.InputEnumerable, _r5_1.Results.Concat(_r5_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i5;
            }

            // PLUS 4
            var _r4 = _memo.Results.Pop();

            if (_r4 != null)
            {
                _res4 = _res4.Concat(_r4.Results);
                goto label4;
            }
            else
            {
                if (_index > _start_i4)
                {
                    _memo.Results.Push(new _GithubMarkdown_Item(_start_i4, _index, _memo.InputEnumerable, _res4.Where(_NON_NULL), true));
                }
                else
                {
                    _memo.Results.Push(null);
                }
            }

label1:     // AND
            var _r1_2 = _memo.Results.Pop();
            var _r1_1 = _memo.Results.Pop();

            if (_r1_1 != null && _r1_2 != null)
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i1, _index, _memo.InputEnumerable, _r1_1.Results.Concat(_r1_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i1;
            }

            // ACT
            var _r0 = _memo.Results.Peek();

            if (_r0 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { string match        = Input(_IM_Result);
                                                                                                                                         GeneralElement text = new GeneralElement(ElementType.InlineText);
                                                                                                                                         text.TextContent    = match;
                                                                                                                                         return(text); }, _r0), true));
            }
        }
Example #4
0
        public void Paragraph(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args)
        {
            _GithubMarkdown_Item text = null;

            // CALLORVAR AnyText
            _GithubMarkdown_Item _r2;

            _r2 = _MemoCall(_memo, "AnyText", _index, AnyText, null);

            if (_r2 != null)
            {
                _index = _r2.NextIndex;
            }

            // BIND text
            text = _memo.Results.Peek();

            // ACT
            var _r0 = _memo.Results.Peek();

            if (_r0 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { GeneralElement para = new GeneralElement(ElementType.Paragraph);
                                                                                                                                         para.AddChildElement(text.Results.First());
                                                                                                                                         return(para); }, _r0), true));
            }
        }
Example #5
0
        public void BlankLine(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args)
        {
            // AND 1
            int _start_i1 = _index;

            // AND 2
            int _start_i2 = _index;

            // CALLORVAR LineBreak
            _GithubMarkdown_Item _r3;

            _r3 = _MemoCall(_memo, "LineBreak", _index, LineBreak, null);

            if (_r3 != null)
            {
                _index = _r3.NextIndex;
            }

            // AND shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Push(null); goto label2;
            }

            // STAR 4
            int _start_i4 = _index;
            var _res4     = Enumerable.Empty <MarkdownElementBase>();

label4:

            // CALLORVAR WS
            _GithubMarkdown_Item _r5;

            _r5 = _MemoCall(_memo, "WS", _index, WS, null);

            if (_r5 != null)
            {
                _index = _r5.NextIndex;
            }

            // STAR 4
            var _r4 = _memo.Results.Pop();

            if (_r4 != null)
            {
                _res4 = _res4.Concat(_r4.Results);
                goto label4;
            }
            else
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i4, _index, _memo.InputEnumerable, _res4.Where(_NON_NULL), true));
            }

label2:     // AND
            var _r2_2 = _memo.Results.Pop();
            var _r2_1 = _memo.Results.Pop();

            if (_r2_1 != null && _r2_2 != null)
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i2, _index, _memo.InputEnumerable, _r2_1.Results.Concat(_r2_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i2;
            }

            // AND shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Push(null); goto label1;
            }

            // CALLORVAR LineBreak
            _GithubMarkdown_Item _r6;

            _r6 = _MemoCall(_memo, "LineBreak", _index, LineBreak, null);

            if (_r6 != null)
            {
                _index = _r6.NextIndex;
            }

label1:     // AND
            var _r1_2 = _memo.Results.Pop();
            var _r1_1 = _memo.Results.Pop();

            if (_r1_1 != null && _r1_2 != null)
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i1, _index, _memo.InputEnumerable, _r1_1.Results.Concat(_r1_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i1;
            }

            // ACT
            var _r0 = _memo.Results.Peek();

            if (_r0 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { GeneralElement blank = new GeneralElement(ElementType.BlankLine);
                                                                                                                                         return(blank); }, _r0), true));
            }
        }
Example #6
0
        public void BlockquoteSymbol(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args)
        {
            // AND 1
            int _start_i1 = _index;

            // CALLORVAR LegalStartSpace
            _GithubMarkdown_Item _r3;

            _r3 = _MemoCall(_memo, "LegalStartSpace", _index, LegalStartSpace, null);

            if (_r3 != null)
            {
                _index = _r3.NextIndex;
            }

            // QUES
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Pop(); _memo.Results.Push(new _GithubMarkdown_Item(_index, _memo.InputEnumerable));
            }

            // AND shortcut
            if (_memo.Results.Peek() == null)
            {
                _memo.Results.Push(null); goto label1;
            }

            // PLUS 4
            int _start_i4 = _index;
            var _res4     = Enumerable.Empty <MarkdownElementBase>();

label4:

            // LITERAL '>'
            _ParseLiteralChar(_memo, ref _index, '>');

            // PLUS 4
            var _r4 = _memo.Results.Pop();

            if (_r4 != null)
            {
                _res4 = _res4.Concat(_r4.Results);
                goto label4;
            }
            else
            {
                if (_index > _start_i4)
                {
                    _memo.Results.Push(new _GithubMarkdown_Item(_start_i4, _index, _memo.InputEnumerable, _res4.Where(_NON_NULL), true));
                }
                else
                {
                    _memo.Results.Push(null);
                }
            }

label1:     // AND
            var _r1_2 = _memo.Results.Pop();
            var _r1_1 = _memo.Results.Pop();

            if (_r1_1 != null && _r1_2 != null)
            {
                _memo.Results.Push(new _GithubMarkdown_Item(_start_i1, _index, _memo.InputEnumerable, _r1_1.Results.Concat(_r1_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i1;
            }

            // ACT
            var _r0 = _memo.Results.Peek();

            if (_r0 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { string match        = Input(_IM_Result);
                                                                                                                                         GeneralElement text = new GeneralElement(ElementType.InlineText);
                                                                                                                                         text.TextContent    = match;
                                                                                                                                         return(text); }, _r0), true));
            }
        }
Example #7
0
        public void HeadSymbol(_GithubMarkdown_Memo _memo, int _index, _GithubMarkdown_Args _args)
        {
            // PLUS 1
            int _start_i1 = _index;
            var _res1     = Enumerable.Empty <MarkdownElementBase>();

label1:

            // LITERAL '#'
            _ParseLiteralChar(_memo, ref _index, '#');

            // PLUS 1
            var _r1 = _memo.Results.Pop();

            if (_r1 != null)
            {
                _res1 = _res1.Concat(_r1.Results);
                goto label1;
            }
            else
            {
                if (_index > _start_i1)
                {
                    _memo.Results.Push(new _GithubMarkdown_Item(_start_i1, _index, _memo.InputEnumerable, _res1.Where(_NON_NULL), true));
                }
                else
                {
                    _memo.Results.Push(null);
                }
            }

            // ACT
            var _r0 = _memo.Results.Peek();

            if (_r0 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _GithubMarkdown_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { string match        = Input(_IM_Result);
                                                                                                                                         GeneralElement text = new GeneralElement(ElementType.InlineText);
                                                                                                                                         text.TextContent    = match;
                                                                                                                                         return(text); }, _r0), true));
            }
        }
Example #8
0
        public static double[] Solve(double[,] data)
        {
            data = (double[, ])data.Clone(); //The method mustn't change an argument

            // varOrder - array for variables' order
            int[] varOrder = new int[data.GetLength(1) - 1];
            for (int i = 0; i < varOrder.Length; ++i)
            {
                varOrder[i] = i;
            }

            // Print equations
            printEqs(data, varOrder, "Initial system of linear equations:");
            Console.WriteLine("Gaussian elimination with the general element in rows\n");

            // Main loop
            for (int i = 0; i < data.GetLength(0); ++i)
            {
                Console.WriteLine("Step #{0}", i + 1);

                //Looking for the general element
                GeneralElement generalElement = new GeneralElement();
                for (int j = i; j < data.GetLength(1) - 1; ++j)
                {
                    if (Math.Abs(data[i, j]) - generalElement.absVal > 1e-10)
                    {
                        generalElement.setPoint(i, j, data[i, j]);
                    }
                }

                Console.WriteLine(generalElement);
                if (!generalElement.isSet) // Its mean every a-coefficient in row = 0
                {
                    throw new NoSolutionException();
                }

                // Row reduction
                for (int k = 0; k < data.GetLength(0); ++k)
                {
                    if (k != generalElement.row)
                    {
                        double m = -data[k, generalElement.col] / generalElement.val;
                        for (int j = 0; j < data.GetLength(1); ++j)
                        {
                            data[k, j] += data[generalElement.row, j] * m;
                        }
                    }
                }

                // Print intermediate results
                printEqs(data, varOrder, "Row reduction:");

                // Change variables' order
                if (i != generalElement.col)
                {
                    swap <int>(ref varOrder[generalElement.col], ref varOrder[i]);
                    for (int k = 0; k < data.GetLength(0); ++k)
                    {
                        swap <double>(ref data[k, generalElement.col], ref data[k, i]);
                    }

                    printEqs(data, varOrder, "Changing variables' order:");
                }
            }
            // Getting variables' values
            double[] answers = new double[data.GetLength(0)];
            for (int i = 0; i < data.GetLength(0); ++i)
            {
                answers[varOrder[i]] = data[i, data.GetLength(1) - 1] / data[i, i];
            }
            return(answers);
        }