コード例 #1
0
        public void HexEscapeCharacter(_LRParser_Memo _memo, int _index, _LRParser_Args _args)
        {
            int _arg_index       = 0;
            int _arg_input_index = 0;

            _LRParser_Item hex = null;

            // AND 1
            int _start_i1 = _index;

            // LITERAL "#\\x"
            _ParseLiteralString(_memo, ref _index, "#\\x");

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

            // CALLORVAR HexScalarValue
            _LRParser_Item _r4;

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

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

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

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 _LRParser_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 _LRParser_Item(_r0.StartIndex, _r0.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { foreach (var input in hex.Inputs)
                                                                                                                                   {
                                                                                                                                       Console.WriteLine("{0}", input);
                                                                                                                                   }
                                                                                                                                   return(""); }, _r0), true));
            }
        }
コード例 #2
0
        public void A(_LRParser_Memo _memo, int _index, _LRParser_Args _args)
        {
            int _arg_index       = 0;
            int _arg_input_index = 0;

            _LRParser_Item a = null;
            _LRParser_Item b = null;

            // OR 0
            int _start_i0 = _index;

            // AND 2
            int _start_i2 = _index;

            // CALLORVAR A
            _LRParser_Item _r4;

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

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

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

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

            // CALLORVAR A
            _LRParser_Item _r6;

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

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

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

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 _LRParser_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;
            }

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

            if (_r1 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _LRParser_Item(_r1.StartIndex, _r1.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { return("(" + (string)a + (string)b + ")"); }, _r1), true));
            }

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

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

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

            if (_r7 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _LRParser_Item(_r7.StartIndex, _r7.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { return("a"); }, _r7), true));
            }

label0:                             // OR
            int _dummy_i0 = _index; // no-op for label
        }
コード例 #3
0
        public void AAA(_LRParser_Memo _memo, int _index, _LRParser_Args _args)
        {
            int _arg_index       = 0;
            int _arg_input_index = 0;

            _LRParser_Item x = null;
            _LRParser_Item y = null;
            _LRParser_Item z = null;

            // OR 0
            int _start_i0 = _index;

            // AND 2
            int _start_i2 = _index;

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

label4:

            // CALLORVAR AAA
            _LRParser_Item _r5;

            _r5 = _MemoCall(_memo, "AAA", _index, AAA, 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 _LRParser_Item(_start_i4, _index, _memo.InputEnumerable, _res4.Where(_NON_NULL), true));
            }

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

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

            // LITERAL "a"
            _ParseLiteralString(_memo, ref _index, "a");

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

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 _LRParser_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;
            }

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

            if (_r1 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _LRParser_Item(_r1.StartIndex, _r1.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { return("(" + (string)x + "a)"); }, _r1), true));
            }

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

            // LITERAL "b"
            _ParseLiteralString(_memo, ref _index, "b");

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

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

            if (_r8 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _LRParser_Item(_r8.StartIndex, _r8.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { return("b"); }, _r8), true));
            }

label0:                             // OR
            int _dummy_i0 = _index; // no-op for label
        }
コード例 #4
0
        public void Exp(_LRParser_Memo _memo, int _index, _LRParser_Args _args)
        {
            int _arg_index       = 0;
            int _arg_input_index = 0;

            _LRParser_Item e = null;
            _LRParser_Item t = null;

            // OR 0
            int _start_i0 = _index;

            // AND 2
            int _start_i2 = _index;

            // AND 3
            int _start_i3 = _index;

            // CALLORVAR Exp
            _LRParser_Item _r5;

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

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

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

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

            // LITERAL "+"
            _ParseLiteralString(_memo, ref _index, "+");

label3:     // AND
            var _r3_2 = _memo.Results.Pop();
            var _r3_1 = _memo.Results.Pop();

            if (_r3_1 != null && _r3_2 != null)
            {
                _memo.Results.Push(new _LRParser_Item(_start_i3, _index, _memo.InputEnumerable, _r3_1.Results.Concat(_r3_2.Results).Where(_NON_NULL), true));
            }
            else
            {
                _memo.Results.Push(null);
                _index = _start_i3;
            }

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

            // CALLORVAR Term
            _LRParser_Item _r8;

            _r8 = _MemoCall(_memo, "Term", _index, Term, null);

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

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

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 _LRParser_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;
            }

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

            if (_r1 != null)
            {
                _memo.Results.Pop();
                _memo.Results.Push(new _LRParser_Item(_r1.StartIndex, _r1.NextIndex, _memo.InputEnumerable, _Thunk(_IM_Result => { return("(" + (string)e + " + " + (string)t + ")"); }, _r1), true));
            }

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

            // CALLORVAR Term
            _LRParser_Item _r9;

            _r9 = _MemoCall(_memo, "Term", _index, Term, null);

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

label0:                             // OR
            int _dummy_i0 = _index; // no-op for label
        }