-void CYArgument::Output(std::ostream &out, bool send) const {
- if (!send && name_ != NULL) {
+_finline CYFlags operator &(CYFlags lhs, CYFlags rhs) {
+ return static_cast<CYFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs));
+}
+
+_finline CYFlags operator |(CYFlags lhs, CYFlags rhs) {
+ return static_cast<CYFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs));
+}
+
+_finline CYFlags &operator |=(CYFlags &lhs, CYFlags rhs) {
+ return lhs = lhs | rhs;
+}
+
+_finline CYFlags CYLeft(CYFlags flags) {
+ return flags & ~CYNoTrailer;
+}
+
+_finline CYFlags CYCenter(CYFlags flags) {
+ return flags & CYNoIn;
+}
+
+_finline CYFlags CYRight(CYFlags flags) {
+ return flags & (CYNoIn | CYNoTrailer);
+}
+
+bool CYFalse::Value() const {
+ return false;
+}
+
+bool CYTrue::Value() const {
+ return true;
+}
+
+#define CYPA 16
+
+void CYAddressOf::Output(std::ostream &out, CYFlags flags) const {
+ rhs_->Output(out, 1, CYLeft(flags));
+ out << ".$()";
+}
+
+void CYArgument::Output(std::ostream &out) const {
+ if (name_ != NULL) {