diff trunk/src/Parser.d @ 184:30a4c8522b09

- Implemented parsePragmaStatement().
author aziz
date Sat, 14 Jul 2007 14:58:01 +0000
parents c9df82f6f6be
children 35c93b776be0
line wrap: on
line diff
--- a/trunk/src/Parser.d	Sat Jul 14 14:45:03 2007 +0000
+++ b/trunk/src/Parser.d	Sat Jul 14 14:58:01 2007 +0000
@@ -1194,6 +1194,9 @@
     case T.Asm:
       s = parseAsmStatement();
       break;
+    case T.Pragma:
+      s = parsePragmaStatement();
+      break;
     default:
       // TODO: issue error msg and return IllegalStatement.
     }
@@ -1599,6 +1602,31 @@
     return new VolatileStatement(volatileBody);
   }
 
+  Statement parsePragmaStatement()
+  {
+    assert(token.type == T.Pragma);
+    nT();
+
+    string ident;
+    Expression[] args;
+    Statement pragmaBody;
+
+    require(T.LParen);
+    ident = requireIdentifier();
+
+    if (token.type == T.Comma)
+      args = parseArguments(T.RParen);
+    else
+      require(T.RParen);
+
+    if (token.type == T.Semicolon)
+      nT();
+    else
+      pragmaBody = parseNoScopeStatement();
+
+    return new PragmaStatement(ident, args, pragmaBody);
+  }
+
   /+++++++++++++++++++++++++++++
   + Assembler parsing methods  +
   +++++++++++++++++++++++++++++/