コード例 #1
0
ファイル: cons_samediff.c プロジェクト: bubuker/keggle_santa
/** fixes variables to zero if the corresponding packings are not valid for this sonstraint/node (due to branching) */
static
SCIP_RETCODE consdataFixVariables(
   SCIP*                 scip,               /**< SCIP data structure */
   SCIP_CONSDATA*        consdata,           /**< constraint data */
   SCIP_VAR**            vars,               /**< generated variables */
   int                   nvars,              /**< number of generated variables */
   SCIP_RESULT*          result              /**< pointer to store the result of the fixing */
   )
{
   int nfixedvars;
   int v;
   SCIP_Bool cutoff;

   nfixedvars = 0;
   cutoff = FALSE;

   SCIPdebugMessage("check variables %d to %d\n", consdata->npropagatedvars, nvars);

   for( v = consdata->npropagatedvars; v < nvars && !cutoff; ++v )
   {
      SCIP_CALL( checkVariable(scip, consdata, vars[v], &nfixedvars, &cutoff) );
   }

   SCIPdebugMessage("fixed %d variables locally\n", nfixedvars);

   if( cutoff )
      *result = SCIP_CUTOFF;
   else if( nfixedvars > 0 )
      *result = SCIP_REDUCEDDOM;

   return SCIP_OKAY;
}
コード例 #2
0
ファイル: main.c プロジェクト: MonicaGandhi/SHELL-PROJECT
int main(void) {
char s[1000];
countVar=0;
countAlias=0;
getcwd(currentPath,100);

system("clear");
while(1)
{
	printf("> ");
	init();
	readCmd();
	checkVariable();
	if(strcmp("unalias",tokens[cmds[0].args[0]])!=0)
		checkAlias();
	
	checkWildcard();

	replaceHomePath();
 
	if(buildInCmd())
        continue;
    exeNormalCmd();

}
return 0;
}
コード例 #3
0
std::shared_ptr<inter::LogicalExpression> SemanticChecker::checkLogicalExpression(inter::ScopePrototype & scopePrototype, syntax::LogicalExpression & condition)
{
    CHECK_FAIL(nullptr);

    std::shared_ptr<inter::LogicalExpression> obj = std::make_shared<inter::LogicalExpression>();

    obj->operation = condition._operation;
    obj->negated = condition._isNegated;

    for (auto & operand : condition._operands)
    {
        if (operand->getType() == syntax::Node::Type::LogicalExpression)
        {
            obj->operands.push_back(checkLogicalExpression(scopePrototype, *(static_cast<syntax::LogicalExpression*>(operand.get()))));
        }
        else if (operand->getType() == syntax::Node::Type::Variable)
        {
            obj->operands.push_back(checkVariable(scopePrototype, *(static_cast<syntax::Variable*>(operand.get()))));
        }
        else if (operand->getType() == syntax::Node::Type::Call)
        {
            obj->operands.push_back(checkFunctionCall(scopePrototype, *(static_cast<syntax::Call*>(operand.get()))));
        }
        else if (operand->getType() == syntax::Node::Type::ArithmeticExpression)
        {
            obj->operands.push_back(checkArithmeticExpression(scopePrototype, *(static_cast<syntax::ArithmeticExpression*>(operand.get()))));
        }
        else
        {
            typedef syntax::Node::Type Type;
            Type nodeType = operand->getType();
            if (nodeType == Type::Number)
                obj->operands.push_back(this->checkLiteral(scopePrototype, *(static_cast<syntax::Literal*>(operand.get())), "float"));
            else if (nodeType == Type::Bool)
                obj->operands.push_back(this->checkLiteral(scopePrototype, *(static_cast<syntax::Literal*>(operand.get())), "bool"));
            else
            {
                MessageHandler::error(std::string("Invalid logical expression operand!"));
                FAIL;
                return nullptr;
            }
        }
    }

    return obj;
}
コード例 #4
0
TypePtr VariableTable::addParamLike(const string &name, TypePtr type,
                                    AnalysisResultPtr ar,
                                    ConstructPtr construct, bool firstPass) {
  TypePtr ret = type;
  if (firstPass) {
    ret = add(name, ret, false, ar,
              construct, ModifierExpressionPtr());
  } else {
    ret = checkVariable(name, ret, true, ar, construct);
    if (ret->is(Type::KindOfSome)) {
      // This is probably too conservative. The problem is that
      // a function never called will have parameter types of Any.
      // Functions that it calls won't be able to accept variant unless
      // it is forced here.
      forceVariant(ar, name, VariableTable::AnyVars);
      ret = Type::Variant;
    }
  }
  return ret;
}
コード例 #5
0
bool InputOutputMaster::convertToPrintable (int cStart, int cEnd, Printable ** ppOutput ) {
    cRead=cStart;
    //for (cRead=cStart;cRead<MAXSIZE;cRead++){
    if (findLastOperator (cStart,cEnd,ppOutput)) return true;
    Expression ** peProduct=new Expression *;
    Expression ** peMultiplyBy=new Expression *;
    bool bFirst=true;
    for (; cRead<cEnd; cRead++) {
        int cAscii=(int) hTest [cRead];
        if (! (cAscii==41) ) {//ignore close brackets
            if (cAscii==40) {
                int cCloseBracket=findClosingBracket(cRead,cEnd);//(
                Printable ** ppBracket=new Printable *;
                if(  ! (convertToPrintable (cRead+1,cCloseBracket,ppBracket) )) return false;//if (hTest[cRead]== '(') deal with brackets
                *peMultiplyBy=static_cast<Expression*> (*ppBracket);
                cRead=cCloseBracket;
            }
            else if (cAscii==91) checkNamedConstant (peMultiplyBy,cEnd);//[
            else if (cAscii>47&&cAscii<58) checkConstant (peMultiplyBy);//0-9
            else if(checkFunction (peMultiplyBy,cEnd)) ;
            else if(cAscii==45) {
                checkMinus (peMultiplyBy,cEnd);   //-
            }
            else if (cAscii==105) {
                checkImaginary (peMultiplyBy);   //i
            }
            else checkVariable(cAscii, peMultiplyBy);
            checkForPostFunctions(peMultiplyBy);
            if (bFirst) {
                *peProduct = *peMultiplyBy;
                bFirst = false;
            } else {
                *peProduct = createOperator(MULTIPLY, *peProduct, *peMultiplyBy);
            }
        }
    }
    *ppOutput = static_cast<Printable*> (*peProduct);
    //delete peProduct;delete peMultiplyBy; //? I get an error with this in, but should it not be there?
    return true;
}
コード例 #6
0
TypePtr VariableTable::checkVariable(const string &name, TypePtr type,
                                     bool coerce, AnalysisResultConstPtr ar,
                                     ConstructPtr construct) {
  return checkVariable(addSymbol(name), type,
                       coerce, ar, construct);
}
コード例 #7
0
ファイル: scanner.c プロジェクト: RFonzi/PL-0-Compiler
int scanFile(FILE *fp){
    if(fp == NULL){
        printf("File could not be found.\n");
        return -1;
    }

    printf("Reading in tokens...");

    while(fpeek(fp) != EOF){
        int tokenStart = fgetc(fp);
        int error = 0;

        //If we read whitespace, continue;
        if(tokenStart == '\n' || tokenStart == '\r' || tokenStart == '\t' ||
           tokenStart == '\v' || tokenStart == ' '){
               continue;
        }

        error = checkSymbols(fp, tokenStart);

        if(error == 4){
           printf("ERROR Invalid symbol '%c'\n", tokenStart);
           exit(4);
        }
        else if(error == 0){
           continue;
        }

        error = checkReservedWords(fp, tokenStart);

        if(error == -1){

           error = checkVariable(fp, tokenStart);

           if(error == 3){
               printf("ERROR Name exceeds 11 characters\n");
               exit(3);
           }
           else if(error == 0){
               continue;
           }
        }
        else if(error == 0){
           continue;
        }

        error = checkNumber(fp, tokenStart);

        if(error == 2){
           printf("ERROR number exceeds 5 digits\n");
           exit(2);
        }
        else if(error == 1){
           printf("ERROR Variables can't start with a letter");
           exit(1);
        }
        else if(error == 0){
           continue;
        }
    }

    createToken("null", 1);
    printf("COMPLETE\n");
    return 0;


}