]>
git.saurik.com Git - cycript.git/blob - Driver.cpp
e529cbc07a86be8f426dc7f7bdac5958d2b848bb
   1 /* Cycript - Optimizing JavaScript Compiler/Runtime 
   2  * Copyright (C) 2009-2015  Jay Freeman (saurik) 
   5 /* GNU Affero General Public License, Version 3 {{{ */ 
   7  * This program is free software: you can redistribute it and/or modify 
   8  * it under the terms of the GNU Affero General Public License as published by 
   9  * the Free Software Foundation, either version 3 of the License, or 
  10  * (at your option) any later version. 
  12  * This program is distributed in the hope that it will be useful, 
  13  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  15  * GNU Affero General Public License for more details. 
  17  * You should have received a copy of the GNU Affero General Public License 
  18  * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  22 #include "Cycript.tab.hh" 
  25 CYDriver::CYDriver(std::istream 
&data
, const std::string 
&filename
) : 
  37     memset(&no_
, 0, sizeof(no_
)); 
  42 CYDriver::~CYDriver() { 
  46 bool CYDriver::Parse(CYPool 
&pool
) { 
  47     CYLocal
<CYPool
> local(&pool
); 
  48     cy::parser 
parser(*this); 
  50     parser
.set_debug_level(debug_
); 
  52     return parser
.parse() != 0; 
  55 void CYDriver::Replace(CYPool 
&pool
, CYOptions 
&options
) { 
  56     CYLocal
<CYPool
> local(&pool
); 
  57     CYContext 
context(options
); 
  58     program_
->Replace(context
); 
  61 void CYDriver::Warning(const cy::parser::location_type 
&location
, const char *message
) { 
  65     CYDriver::Error error
; 
  66     error
.warning_ 
= true; 
  67     error
.location_ 
= location
; 
  68     error
.message_ 
= message
; 
  69     errors_
.push_back(error
); 
  72 void cy::parser::error(const cy::parser::location_type 
&location
, const std::string 
&message
) { 
  73     CYDriver::Error error
; 
  74     error
.warning_ 
= false; 
  75     error
.location_ 
= location
; 
  76     error
.message_ 
= message
; 
  77     driver
.errors_
.push_back(error
);