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