当前位置: 首页>>代码示例>>C++>>正文


C++ compileExpression函数代码示例

本文整理汇总了C++中compileExpression函数的典型用法代码示例。如果您正苦于以下问题:C++ compileExpression函数的具体用法?C++ compileExpression怎么用?C++ compileExpression使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了compileExpression函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: compileCondition

void compileCondition(void) {
  // DONE: check the type consistency of LHS and RSH, check the basic type
  Type* type1;
  Type* type2;

  type1 = compileExpression();
  checkBasicType(type1);

  switch (lookAhead->tokenType) {
  case SB_EQ:
    eat(SB_EQ);
    break;
  case SB_NEQ:
    eat(SB_NEQ);
    break;
  case SB_LE:
    eat(SB_LE);
    break;
  case SB_LT:
    eat(SB_LT);
    break;
  case SB_GE:
    eat(SB_GE);
    break;
  case SB_GT:
    eat(SB_GT);
    break;
  default:
    error(ERR_INVALID_COMPARATOR, lookAhead->lineNo, lookAhead->colNo);
  }

  type2 = compileExpression();
  checkTypeEquality(type1,type2);
}
开发者ID:NPHiep,项目名称:Compiler,代码行数:34,代码来源:parser.c

示例2: printNonterminal

void CompilationEng::compileExpressionList()
{
	printNonterminal("expressionList");
	numOfTab++;
	compileExpression();

	while(true)
	{
		getToken();
		if(m_token == ",")
		{
			printCurrentToken(false);
			compileExpression();
		}
		else if(m_token == ")")
		{
			m_bPutback = true;
			break;
		}
		else 
		{
			m_ofs << m_token << endl;
			break;
		}
	}

	numOfTab--;
	printNonterminal("expressionList",false);
}
开发者ID:zhengjiezxxy,项目名称:nand2tetris,代码行数:29,代码来源:CompilationEngine.cpp

示例3: tagNonTerminal

void CompilationEngine::compileLet()
{
    /*'let' varName('[' expression ']')? '=' expression ';' */

    tagNonTerminal("letStatement");
    readKeyword("let", Keyword::kLET);
    nextToken();
    readIdentifier();
    nextToken();

    if (jt.tokenType() == TokenType::kSYMBOL && jt.symbol() == '[') {
        readSymbol('[');
        nextToken();
        compileExpression();
        readSymbol(']');
        nextToken();
    }

    readSymbol('=');
    nextToken();
    compileExpression();
    readSymbol(';');
    untagNonTerminal("letStatement");
    nextToken();
}
开发者ID:npat1126,项目名称:nand2tetris,代码行数:25,代码来源:CompilationEngine.cpp

示例4: compileCondition

void compileCondition(void) {
  Type* type1;
  Type* type2;
  TokenType op;

  type1 = compileExpression();
  checkBasicType(type1);

  op = lookAhead->tokenType;
  switch (op) {
  case SB_EQ:
    eat(SB_EQ);
    break;
  case SB_NEQ:
    eat(SB_NEQ);
    break;
  case SB_LE:
    eat(SB_LE);
    break;
  case SB_LT:
    eat(SB_LT);
    break;
  case SB_GE:
    eat(SB_GE);
    break;
  case SB_GT:
    eat(SB_GT);
    break;
  default:
    error(ERR_INVALID_COMPARATOR, lookAhead->lineNo, lookAhead->colNo);
  }

  type2 = compileExpression();
  checkTypeEquality(type1,type2);
}
开发者ID:BichVN,项目名称:Compiler,代码行数:35,代码来源:parser.c

示例5: compileDoWhileSt

void compileDoWhileSt(void) {
  assert("Parsing a do..while statement ....");
  // TODO
    eat(KW_DO); 
    compileStatement();  
    eat(KW_WHILE);
    compileCondition();  

  assert("Do..While statement parsed ....");
void compileForSt(void) {
  Type* varType;
  Type *type;

  eat(KW_FOR);

  varType = compileLValue();
  eat(SB_ASSIGN);
  type = compileExpression();
  checkTypeEquality(varType, type);

  eat(KW_TO);
  type = compileExpression();
  checkTypeEquality(varType, type);

  eat(KW_DO);
  compileStatement();

}
开发者ID:BichVN,项目名称:Compiler,代码行数:28,代码来源:parser.c

示例6: compileForSt

void compileForSt(void) {
    eat(KW_FOR);
    eat(TK_IDENT);
    eat(SB_ASSIGN);
    compileExpression();
    eat(KW_TO);
    compileExpression();
    eat(KW_DO);
    compileStatement();
}
开发者ID:duc17224560,项目名称:CTD-20152-Shukudai.,代码行数:10,代码来源:parser.c

示例7: compileForSt

void compileForSt(void) {
  assert("Parsing a for statement ....");
        eat(KW_FOR);
        eat(TK_IDENT);
        eat(SB_ASSIGN);
        compileExpression();
        eat(KW_TO);
        compileExpression();
        eat(KW_DO);
        compileStatement();
  assert("For statement parsed ....");
}
开发者ID:duccuongict56bkhn,项目名称:CompilerLab,代码行数:12,代码来源:parser.c

示例8: debug

Value* IRCompiler::compileAddition(KT_Addition *add) {
	debug("compiling a KT_Addition");

	Value* vl = compileExpression(add->getLExpression());
	Value* vg = compileExpression(add->getRExpression());

	vl = BasicInstructionGenerator::stripVal(vl, getCurrentBlock());
	vg = BasicInstructionGenerator::stripVal(vg, getCurrentBlock());

	Type *t = PrimitiveValueConverter::dominatingType(vl->getType(), vg->getType());

	return PrimitiveBinaryOperationGenerator::createAdd(getModule(), t, vl, vg, getCurrentBlock());
}
开发者ID:hichara,项目名称:KawaCompiler,代码行数:13,代码来源:IRCompiler_expression.cpp

示例9: compileForSt

void compileForSt(void) {
  eat(KW_FOR);
  eat(TK_IDENT);

  // TODO: check if the identifier is a variable

  eat(SB_ASSIGN);
  compileExpression();

  eat(KW_TO);
  compileExpression();

  eat(KW_DO);
  compileStatement();
}
开发者ID:BichVN,项目名称:Compiler,代码行数:15,代码来源:parser.c

示例10: compileIndexes

Type* compileIndexes(Type* arrayType) {
  // parse a sequence of indexes, check the consistency to the arrayType, and return the element type
  Type *idxType = NULL;
  Type *elmType = NULL;

  while (lookAhead->tokenType == SB_LSEL) {
    eat(SB_LSEL);

    // if current element is not of array type,
    // then the access to the next dimension is invalid
    checkArrayType(arrayType);

    idxType = compileExpression();
    checkIntType(idxType);

    eat(SB_RSEL);

    // Down 1 level of dimension
    arrayType = arrayType->elementType;
  }

  // arrayType becomes elmType when we traverse to the last dimension
  elmType = arrayType;

  return elmType;
}
开发者ID:duc17224560,项目名称:CTD-20152-Shukudai.,代码行数:26,代码来源:parser.c

示例11: compileCondition2

void compileCondition2(void) {
  // TODO
  switch (lookAhead->tokenType) 
    {
    case SB_EQ:
      eat(SB_EQ);
      break;
    case SB_NEQ:
      eat(SB_NEQ);
      break;
    case SB_LE:
      eat(SB_LE);
      break;
    case SB_LT:
      eat(SB_LT);
      break;
    case SB_GE:
      eat(SB_GE);
      break;
    case SB_GT:
      eat(SB_GT);
      break;
    default:
      error(ERR_INVALIDCOMPARATOR, lookAhead->lineNo, lookAhead->colNo);
    }
  compileExpression();
}
开发者ID:minh93,项目名称:thctd,代码行数:27,代码来源:parser.c

示例12: compileArguments

void compileArguments(void) {
  // TODO
    switch (lookAhead->tokenType) {
  case SB_LPAR:
    eat(SB_LPAR);
    compileExpression();
    compileArguments2();
    eat(SB_RPAR);
    break;
  case KW_END:
  case SB_SEMICOLON:
  case KW_ELSE:
  case SB_TIMES:
  case SB_SLASH:
  case SB_MOD:
  case SB_PLUS:
  case SB_MINUS:
  case SB_EQ:
  case SB_NEQ:
  case SB_LE:
  case SB_LT:
  case SB_GE:
  case SB_GT:
  case KW_DO:
  case KW_TO:
  case KW_THEN:
  case SB_RPAR:
  case SB_RSEL:
  case SB_COMMA:
    break;
  default:
    error(ERR_INVALIDARGUMENTS, lookAhead->lineNo, lookAhead->colNo);
    break;
  }
}
开发者ID:BichVN,项目名称:Compiler,代码行数:35,代码来源:parser.c

示例13: compileIndexes

void compileIndexes(void) {
    while (lookAhead->tokenType == SB_LSEL) {
        eat(SB_LSEL);
        compileExpression();
        eat(SB_RSEL);
    }
}
开发者ID:duc17224560,项目名称:CTD-20152-Shukudai.,代码行数:7,代码来源:parser.c

示例14: compileForSt

void compileForSt(void) {
  eat(KW_FOR);
  eat(TK_IDENT);

  // TODO: check if the identifier is a variable
  checkDeclaredVariable(currentToken->string);

  eat(SB_ASSIGN);
  compileExpression();

  eat(KW_TO);
  compileExpression();

  eat(KW_DO);
  compileStatement();
}
开发者ID:nguyentuananh1993,项目名称:chuongTrinhDich,代码行数:16,代码来源:parser.c

示例15: compileExpression

void
EditScriptDialog::compileAndSetResult(const QString& script)
{
    QString ret = compileExpression(script);

    _imp->resultEdit->setPlainText(ret);
}
开发者ID:jessezwd,项目名称:Natron,代码行数:7,代码来源:EditScriptDialog.cpp


注:本文中的compileExpression函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。