Ignore:
Timestamp:
Sep 23, 2014, 3:15:47 PM (5 years ago)
Author:
nmedfort
Message:

Some refactoring of the RE CC class and CC Compiler; Moved RE into re subdirectory.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/printer_re.cpp

    r4182 r4187  
    77#include "printer_re.h"
    88
     9//Regular Expressions
     10#include "re/re_re.h"
     11#include "re/re_alt.h"
     12#include "re/re_cc.h"
     13#include "re/re_name.h"
     14#include "re/re_end.h"
     15#include "re/re_rep.h"
     16#include "re/re_seq.h"
     17#include "re/re_start.h"
    918
    10 std::string Printer_RE::PrintRE(RE * re)
     19
     20const std::string Printer_RE::PrintRE(const RE * re)
    1121{
    1222    std::string retVal = "";
     
    1525        retVal = "--> RE NullPtr! <--";
    1626    }
    17     else if (Alt* re_alt = dynamic_cast<Alt*>(re))
     27    else if (const Alt* re_alt = dynamic_cast<const Alt*>(re))
    1828    {
    1929        retVal += "(Alt[";
    20         for (RE * re : *re_alt) {
    21             retVal += PrintRE(re) + ",";
     30        bool comma = false;
     31        for (const RE * re : *re_alt) {
     32            if (comma) {
     33                retVal += ',';
     34            }
     35            retVal += PrintRE(re);
     36            comma = true;
    2237        }
    23         retVal = retVal.substr(0, retVal.size() - 1);
    2438        retVal += "])";
    2539    }
    26     else if (CC* re_cc = dynamic_cast<CC*>(re))
     40    else if (const CC* re_cc = dynamic_cast<const CC*>(re))
    2741    {
    28         retVal += "CC \"";
     42        retVal = "CC \"";
    2943        retVal += re_cc->getName();
    3044        retVal += "\" ";
    3145
    32         for (const CharSetItem & item : re_cc->getItems())
     46        for (const CharSetItem & item : *re_cc)
    3347        {
    3448            retVal += "[";
     
    3852        }
    3953    }
    40     else if (Name* re_name = dynamic_cast<Name*>(re))
     54    else if (const Name* re_name = dynamic_cast<const Name*>(re))
    4155    {
    42         retVal += "Name \"";
     56        retVal = "Name \"";
    4357        retVal += re_name->getName();
    4458        retVal += "\" ";
    4559    }
    46     else if (dynamic_cast<End*>(re))
     60    else if (dynamic_cast<const End*>(re))
    4761    {
    48         retVal += "End";
     62        retVal = "End";
    4963    }
    50     else if (Rep* re_rep = dynamic_cast<Rep*>(re))
     64    else if (const Rep* re_rep = dynamic_cast<const Rep*>(re))
    5165    {
    52         retVal += "Rep("  + PrintRE(re_rep->getRE()) + "," + std::to_string(re_rep->getLB()) + ",";
    53         retVal += (re_rep->getUB() == UNBOUNDED_REP ? "Unbounded" : "UpperBound(" + std::to_string(re_rep->getUB()) + ")");
     66        retVal = "Rep(";
     67        retVal.append(PrintRE(re_rep->getRE()));
     68        retVal.append(",");
     69        retVal.append(std::to_string(re_rep->getLB()));
     70        retVal.append(",");
     71        if (re_rep->getUB() == Rep::UNBOUNDED_REP) {
     72            retVal.append("Unbounded");
     73        }
     74        else {
     75            retVal.append(std::to_string(re_rep->getUB()));           
     76        }
     77        retVal.append(")");
    5478    }
    55     else if (Seq* re_seq = dynamic_cast<Seq*>(re))
     79    else if (const Seq* re_seq = dynamic_cast<const Seq*>(re))
    5680    {
    57         retVal += "(Seq[";
    58         for (RE * re : *re_seq) {
    59             retVal += PrintRE(re) + ",";
     81        retVal = "(Seq[";
     82        bool comma = false;
     83        for (const RE * re : *re_seq) {
     84            if (comma) {
     85                retVal.append(",");
     86            }
     87            retVal.append(PrintRE(re));
     88            comma = true;
    6089        }
    61         retVal = retVal.substr(0, retVal.size() - 1);
    62         retVal += "])";
     90        retVal.append("])");
    6391    }
    64     else if (dynamic_cast<Start*>(re))
     92    else if (dynamic_cast<const Start*>(re))
    6593    {
    66         retVal += "Start";
     94        retVal = "Start";
    6795    }
    6896    else
    6997    {
    70         retVal += "--> RE Unknown <--";
     98        retVal = "--> RE Unknown <--";
    7199    }
    72 
    73     return retVal;
     100    return std::move(retVal);
    74101}
Note: See TracChangeset for help on using the changeset viewer.