merged braced code eater and parenthesized code eater.
authorMilind Bhandarkar <milind@cs.uiuc.edu>
Fri, 23 Mar 2001 21:52:44 +0000 (21:52 +0000)
committerMilind Bhandarkar <milind@cs.uiuc.edu>
Fri, 23 Mar 2001 21:52:44 +0000 (21:52 +0000)
src/langs/sdag/xlator/CLexer.C
src/langs/sdag/xlator/CLexer.h
src/langs/sdag/xlator/CParseNode.C

index 94692e432501948765031d00ef510adb024c265d..c055408174d7e4a3d844d5bdb1189105d76bac7d 100644 (file)
@@ -77,9 +77,9 @@ CToken *CLexer::getNextToken(void)
   }
 }
 
-CToken *CLexer::getBracedCode(void)
+CToken *CLexer::getMatchedCode(const char *start_str, EToken stok, EToken etok)
 {
-  CToken *code = new CToken(MATCHED_CPP_CODE, "{ ");
+  CToken *code = new CToken(MATCHED_CPP_CODE, start_str);
   int currentScope = 1;
   wsSignificant = 1;
   // Code to eat C++ code
@@ -87,33 +87,10 @@ CToken *CLexer::getBracedCode(void)
     CToken *cToken = getNextToken();
     if(cToken==0)
       return cToken;
-    if(cToken->type == LBRACE) {
+    if(cToken->type == stok) {
       currentScope++;
     }
-    if(cToken->type == RBRACE) {
-      currentScope--;
-    }
-    code->text->append(cToken->text);
-    delete cToken;
-  }
-  wsSignificant = 0;
-  return code;
-}
-
-CToken *CLexer::getParenCode(void)
-{
-  CToken *code = new CToken(MATCHED_CPP_CODE, "( ");
-  int currentScope = 1;
-  wsSignificant = 1;
-  // Code to eat C++ code
-  while(currentScope != 0) {
-    CToken *cToken = getNextToken();
-    if(cToken==0)
-      return cToken;
-    if(cToken->type == LP) {
-      currentScope++;
-    }
-    if(cToken->type == RP) {
+    if(cToken->type == etok) {
       currentScope--;
     }
     code->text->append(cToken->text);
index a4c6544a66f9b3023ac818121c73fc427603703f..3c74c9902cfdd9f4efc718e5bc21919f623687f8 100644 (file)
@@ -28,8 +28,7 @@ class CLexer {
     int sourceFile(char *filename);
     CToken *lookAhead(void);
     CToken *getNextToken(void);
-    CToken *getBracedCode(void);
-    CToken *getParenCode(void);
+    CToken *getMatchedCode(const char *, EToken, EToken);
     CToken *getIntExpr(EToken term);
 };
 
index 5882535e934efc5661ee0071e7053aa3d3e19150..516888bdc4ac5f4cca324602c18b2d5117328f16 100644 (file)
@@ -150,7 +150,7 @@ CParseNode::CParseNode(EToken t, CLexer *cLexer, CParser *cParser)
       break;
     case IF:
       tok = cParser->lookForToken(LP); delete tok;
-      tok = cLexer->getParenCode();
+      tok = cLexer->getMatchedCode("( ", LP, RP);
       con1 = new CParseNode(INT_EXPR, tok->text);
       tok = cLexer->getNextToken();
       if(tok->type == LBRACE) {
@@ -197,7 +197,7 @@ CParseNode::CParseNode(EToken t, CLexer *cLexer, CParser *cParser)
       break;
     case WHILE:
       tok = cParser->lookForToken(LP); delete tok;
-      tok = cLexer->getParenCode();
+      tok = cLexer->getMatchedCode("( ", LP, RP);
       con1 = new CParseNode(INT_EXPR, tok->text);
       tok = cLexer->getNextToken();
       if(tok->type == LBRACE) {
@@ -209,7 +209,7 @@ CParseNode::CParseNode(EToken t, CLexer *cLexer, CParser *cParser)
       break;
     case ATOMIC:
       tok = cParser->lookForToken(LBRACE); delete tok;
-      tok = cLexer->getBracedCode();
+      tok = cLexer->getMatchedCode("{ ", LBRACE, RBRACE);
       text = tok->text;
       break;
     case OLIST: