about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorEric Holk <eric.holk@gmail.com>2012-08-01 11:56:46 -0700
committerEric Holk <eric.holk@gmail.com>2012-08-01 12:30:07 -0700
commite7a69fbe4e33602dd6f78d140aafa5125b8eec71 (patch)
treeefeae6782ee2a24f579f17c7156300dc15e79178 /src/libsyntax
parent899400cd1a7465ffcc80d848d6cb2b6fb2436e02 (diff)
downloadrust-e7a69fbe4e33602dd6f78d140aafa5125b8eec71.tar.gz
rust-e7a69fbe4e33602dd6f78d140aafa5125b8eec71.zip
Working on documentation of pipes.
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ext/pipes.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/libsyntax/ext/pipes.rs b/src/libsyntax/ext/pipes.rs
index 5a1462cea30..08562c4490f 100644
--- a/src/libsyntax/ext/pipes.rs
+++ b/src/libsyntax/ext/pipes.rs
@@ -1,3 +1,37 @@
+/*! Implementation of proto! extension.
+
+This is frequently called the pipe compiler. It handles code such as...
+
+~~~
+proto! pingpong {
+    ping: send {
+        ping -> pong
+    }
+    pong: recv {
+        pong -> ping
+    }
+}
+~~~
+
+There are several components:
+
+ * The parser (libsyntax/ext/pipes/parse_proto.rs)
+   * Responsible for building an AST from a protocol specification.
+
+ * The checker (libsyntax/ext/pipes/check.rs)
+   * Basic correctness checking for protocols (i.e. no undefined states, etc.)
+
+ * The analyzer (libsyntax/ext/pipes/liveness.rs)
+   * Determines whether the protocol is bounded or unbounded.
+
+ * The compiler (libsynatx/ext/pipes/pipec.rs)
+   * Generates a Rust AST from the protocol AST and the results of analysis.
+
+There is more documentation in each of the files referenced above.
+
+FIXME (#3072) - This is still incomplete.
+
+*/
 
 import codemap::span;
 import ext::base::ext_ctxt;