Changeset 214 for trunk/lib/Parser.cc


Ignore:
Timestamp:
Sep 27, 2006, 1:16:10 PM (15 years ago)
Author:
Peter Johansson
Message:

refs #69 added parsing for comments starting with '#' and '%', respectively

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Parser.cc

    r184 r214  
    3838  {
    3939    std::ifstream is(path.c_str());
    40     cc_mode(is);
     40    if (match_end(path.begin(), path.end(), ".ac") ||
     41        match_end(path.begin(), path.end(), ".am") ||
     42        match_end(path.begin(), path.end(), ".pl") ||
     43        match_end(path.begin(), path.end(), ".pm") ||
     44        match_end(path.begin(), path.end(), ".sh"))
     45      line_com_mode(is, "#");
     46    else if (match_end(path.begin(), path.end(), ".tex"))
     47      line_com_mode(is, "%");
     48    else
     49      cc_mode(is);
    4150    is.close();
    4251  }
     
    94103
    95104
     105  void Parser::line_com_mode(std::istream& is, const std::string& com_start)
     106  {
     107    std::string str;
     108    while(getline(is,str)) {
     109      bool line_com=false;
     110      line_type lt=empty;
     111      for (std::string::iterator iter=str.begin(); iter!=str.end(); ++iter){
     112        if (lt==empty){
     113          if (isalnum(*iter)){
     114            if (line_com){
     115              lt = comment;
     116            }
     117            else{
     118              lt = code;
     119            }
     120          }
     121          else if (match_begin(iter, str.end(), com_start)){
     122            line_com=true;
     123          }
     124          else if (!line_com && !isspace(*iter)){
     125            lt = code;
     126          }
     127
     128        }
     129      }
     130      type_.push_back(lt);
     131    }
     132  }
     133
     134
    96135}} // end of namespace svndigest and namespace theplu
Note: See TracChangeset for help on using the changeset viewer.