aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front/ast.rs
diff options
context:
space:
mode:
authorMarijn Haverbeke <[email protected]>2011-03-04 07:22:43 +0100
committerGraydon Hoare <[email protected]>2011-03-07 12:58:08 -0800
commit0624f9db4aeaa5681941750c3a1a17ca5fbb7e72 (patch)
tree91844d79c0c5614ce660c3c20f1c67eaef2d5021 /src/comp/front/ast.rs
parentConstruct the wrappers to native functions. Hello world now works :-) (diff)
downloadrust-0624f9db4aeaa5681941750c3a1a17ca5fbb7e72.tar.xz
rust-0624f9db4aeaa5681941750c3a1a17ca5fbb7e72.zip
Add a pretty-printer
Adds a -pp option to the compiler which will cause it to simply pretty-print the given file.
Diffstat (limited to 'src/comp/front/ast.rs')
-rw-r--r--src/comp/front/ast.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs
index ed1e2114..d45260f3 100644
--- a/src/comp/front/ast.rs
+++ b/src/comp/front/ast.rs
@@ -122,6 +122,31 @@ tag binop {
gt;
}
+fn binop_to_str(binop op) -> str {
+ alt (op) {
+ case (add) {ret "+";}
+ case (sub) {ret "-";}
+ case (mul) {ret "*";}
+ case (div) {ret "/";}
+ case (rem) {ret "%";}
+ case (and) {ret "&&";}
+ case (or) {ret "||";}
+ case (bitxor) {ret "^";}
+ case (bitand) {ret "&";}
+ case (bitor) {ret "|";}
+ case (lsl) {ret "<<";}
+ case (lsr) {ret ">>";}
+ case (asr) {ret ">>>";}
+ case (eq) {ret "==";}
+ case (lt) {ret "<";}
+ case (le) {ret "<=";}
+ case (ne) {ret "!=";}
+ case (ge) {ret ">=";}
+ case (gt) {ret ">";}
+ }
+}
+
+
tag unop {
box;
deref;
@@ -131,6 +156,17 @@ tag unop {
_mutable;
}
+fn unop_to_str(unop op) -> str {
+ alt (op) {
+ case (box) {ret "@";}
+ case (deref) {ret "*";}
+ case (bitnot) {ret "~";}
+ case (not) {ret "!";}
+ case (neg) {ret "-";}
+ case (_mutable) {ret "mutable";}
+ }
+}
+
tag mode {
val;
alias;