changeset 178:62718b29679e

- Implemented parseSynchronizedStatement().
author aziz
date Sat, 14 Jul 2007 11:14:04 +0000
parents 504b1b2f7c93
children 507998c5c1ce
files trunk/src/Parser.d trunk/src/Statements.d
diffstat 2 files changed, 25 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/Parser.d	Sat Jul 14 11:10:03 2007 +0000
+++ b/trunk/src/Parser.d	Sat Jul 14 11:14:04 2007 +0000
@@ -1172,6 +1172,9 @@
     case T.With:
       s = parseWithStatement();
       break;
+    case T.Synchronized:
+      s = parseSynchronizedStatement();
+      break;
     default:
       // TODO: issue error msg and return IllegalStatement.
     }
@@ -1473,6 +1476,21 @@
     return new WithStatement(expr, parseScopeStatement());
   }
 
+  Statement parseSynchronizedStatement()
+  {
+    assert(token.type == T.Synchronized);
+    nT();
+    Expression expr;
+
+    if (token.type == T.LParen)
+    {
+      nT();
+      expr = parseExpression();
+      require(T.RParen);
+    }
+    return new SynchronizedStatement(expr, parseScopeStatement());
+  }
+
   /+++++++++++++++++++++++++++++
   + Expression parsing methods +
   +++++++++++++++++++++++++++++/
--- a/trunk/src/Statements.d	Sat Jul 14 11:10:03 2007 +0000
+++ b/trunk/src/Statements.d	Sat Jul 14 11:14:04 2007 +0000
@@ -210,7 +210,13 @@
 
 class SynchronizedStatement : Statement
 {
-
+  Expression expr;
+  Statement syncBody;
+  this(Expression expr, Statement withBody)
+  {
+    this.expr = expr;
+    this.syncBody = syncBody;
+  }
 }
 
 class TryStatement : Statement