1 #ifndef PATCHFILEPARSER_HPP
  
   2 #define PATCHFILEPARSER_HPP
  
   3 #include <cpp2cm/cpp2cm/Patch.hpp>
  
   4 #include <soulng/lexer/Token.hpp>
  
   5 #include <soulng/parser/Match.hpp>
  
   6 #include <soulng/parser/Value.hpp>
  
   7 
  
   8 
  
   9 
  
  10 class TrivialLexer;
  
  11 
  
  12 struct PatchFileParser 
  
  13 {
  
  14     static std::unique_ptr<cpp2cm::PatchFile> Parse(TrivialLexer& lexer);
  
  15     static soulng::parser::Match PatchFile(TrivialLexer& lexer);
  
  16     static soulng::parser::Match PatchLine(TrivialLexer& lexer);
  
  17     static soulng::parser::Match FileName(TrivialLexer& lexer);
  
  18     static soulng::parser::Match LineNumber(TrivialLexer& lexer);
  
  19     static soulng::parser::Match Patch(TrivialLexer& lexer);
  
  20     static soulng::parser::Match Insert(TrivialLexer& lexer);
  
  21     static soulng::parser::Match Delete(TrivialLexer& lexer);
  
  22     static soulng::parser::Match Modify(TrivialLexer& lexer);
  
  23     static soulng::parser::Match Text(TrivialLexer& lexer);
  
  24     static soulng::parser::Match Newline(TrivialLexer& lexer);
  
  25 };
  
  26 
  
  27 #endif // PATCHFILEPARSER_HPP