Index: uspace/app/sbi/src/stree_t.h
===================================================================
--- uspace/app/sbi/src/stree_t.h	(revision c5cb943d5d19ad0d75578f54188f2491dfd64937)
+++ uspace/app/sbi/src/stree_t.h	(revision eb522e89bed31febf22a3d81923e99a4a8ff9513)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2010 Jiri Svoboda
+ * Copyright (c) 2011 Jiri Svoboda
  * All rights reserved.
  *
@@ -364,5 +364,5 @@
 } texpr_class_t;
 
-/** Arithmetic expression */
+/** Type expression */
 typedef struct stree_texpr {
 	texpr_class_t tc;
@@ -394,4 +394,7 @@
 	stree_ident_t *name;
 	stree_texpr_t *type;
+
+	/** Type of this variable or @c NULL if not typed yet */
+	struct tdata_item *titem;
 } stree_vdecl_t;
 
@@ -401,4 +404,7 @@
 	stree_texpr_t *etype;
 	stree_block_t *block;
+
+	/** Evaluated etype or @c NULL if not typed yet */
+	struct tdata_item *titem;
 } stree_except_t;
 
@@ -418,4 +424,23 @@
 } stree_if_t;
 
+/** @c when clause */
+typedef struct {
+	/** List of expressions -- cases -- for this clause */
+	list_t exprs; /* of stree_expr_t */
+	stree_block_t *block;
+} stree_when_t;
+
+/** Switch statement */
+typedef struct {
+	/** Switch expression */
+	stree_expr_t *expr;
+
+	/** When clauses */
+	list_t when_clauses; /* of stree_when_t */
+
+	/** Else block */
+	stree_block_t *else_block;
+} stree_switch_t;
+
 /** While statement */
 typedef struct {
@@ -448,5 +473,5 @@
 } stree_exps_t;
 
-/** With-try-except-finally statement (WEF) */
+/** With-try-except-finally (WEF) statement */
 typedef struct {
 	stree_block_t *with_block;
@@ -459,4 +484,5 @@
 	st_vdecl,
 	st_if,
+	st_switch,
 	st_while,
 	st_for,
@@ -475,4 +501,5 @@
 		stree_vdecl_t *vdecl_s;
 		stree_if_t *if_s;
+		stree_switch_t *switch_s;
 		stree_while_t *while_s;
 		stree_for_t *for_s;
@@ -510,5 +537,5 @@
 /** Function signature.
  *
- * Foormal parameters and return type. This is common to function and delegate
+ * Formal parameters and return type. This is common to function and delegate
  * delcarations.
  */
@@ -788,11 +815,8 @@
 	} u;
 
-	/** Containing CSI (for all symbols) */
+	/** Containing CSI */
 	stree_csi_t *outer_csi;
 
-	/** Containing block (for block-level symbols) */
-	stree_block_t *outer_block;
-
-	/** Symbol attributes. */
+	/** Symbol attributes */
 	list_t attr; /* of stree_symbol_attr_t */
 } stree_symbol_t;
