Mercurial > projects > dil
comparison trunk/src/Parser.d @ 184:30a4c8522b09
- Implemented parsePragmaStatement().
author | aziz |
---|---|
date | Sat, 14 Jul 2007 14:58:01 +0000 |
parents | c9df82f6f6be |
children | 35c93b776be0 |
comparison
equal
deleted
inserted
replaced
183:c9df82f6f6be | 184:30a4c8522b09 |
---|---|
1192 s = parseVolatileStatement(); | 1192 s = parseVolatileStatement(); |
1193 break; | 1193 break; |
1194 case T.Asm: | 1194 case T.Asm: |
1195 s = parseAsmStatement(); | 1195 s = parseAsmStatement(); |
1196 break; | 1196 break; |
1197 case T.Pragma: | |
1198 s = parsePragmaStatement(); | |
1199 break; | |
1197 default: | 1200 default: |
1198 // TODO: issue error msg and return IllegalStatement. | 1201 // TODO: issue error msg and return IllegalStatement. |
1199 } | 1202 } |
1200 return s; | 1203 return s; |
1201 } | 1204 } |
1595 else if (token.type == T.LBrace) | 1598 else if (token.type == T.LBrace) |
1596 volatileBody = parseScopeStatement(); | 1599 volatileBody = parseScopeStatement(); |
1597 else | 1600 else |
1598 volatileBody = parseNoScopeStatement(); | 1601 volatileBody = parseNoScopeStatement(); |
1599 return new VolatileStatement(volatileBody); | 1602 return new VolatileStatement(volatileBody); |
1603 } | |
1604 | |
1605 Statement parsePragmaStatement() | |
1606 { | |
1607 assert(token.type == T.Pragma); | |
1608 nT(); | |
1609 | |
1610 string ident; | |
1611 Expression[] args; | |
1612 Statement pragmaBody; | |
1613 | |
1614 require(T.LParen); | |
1615 ident = requireIdentifier(); | |
1616 | |
1617 if (token.type == T.Comma) | |
1618 args = parseArguments(T.RParen); | |
1619 else | |
1620 require(T.RParen); | |
1621 | |
1622 if (token.type == T.Semicolon) | |
1623 nT(); | |
1624 else | |
1625 pragmaBody = parseNoScopeStatement(); | |
1626 | |
1627 return new PragmaStatement(ident, args, pragmaBody); | |
1600 } | 1628 } |
1601 | 1629 |
1602 /+++++++++++++++++++++++++++++ | 1630 /+++++++++++++++++++++++++++++ |
1603 + Assembler parsing methods + | 1631 + Assembler parsing methods + |
1604 +++++++++++++++++++++++++++++/ | 1632 +++++++++++++++++++++++++++++/ |