コード例 #1
0
        private Expression CharSetToExpression(BitArray charSet)
        {
            Expression expression = null;

            for (int i = 0; i < charSet.Length; i++)
            {
                if (charSet.Get(i))
                {
                    var io = new Expression.IO {
                        Byte = (byte)i, In = true, Out = true
                    };

                    if (expression == null)
                    {
                        expression = io;
                    }
                    else
                    {
                        expression = new Expression.Union
                        {
                            Left  = expression,
                            Right = io,
                        };
                    }
                }
            }

            if (expression == null)
            {
                expression = new Expression.Nothing();
            }

            return(expression);
        }
コード例 #2
0
        private Expression ReadQuotedOutput()
        {
            Expression expression = null;

            while (Peek() != '"')
            {
                var b = Read();

                if (b == '\\')
                {
                    b = Read();
                }

                var io = new Expression.IO {
                    Byte = b, In = false, Out = true
                };

                if (expression == null)
                {
                    expression = io;
                }
                else
                {
                    expression = new Expression.Concat
                    {
                        Left  = expression,
                        Right = io,
                    };
                }
            }

            _codeIndex++;

            return(expression);
        }