本文整理汇总了C++中compileExpression函数的典型用法代码示例。如果您正苦于以下问题:C++ compileExpression函数的具体用法?C++ compileExpression怎么用?C++ compileExpression使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了compileExpression函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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
示例16: pointerToString
bool CMathObject::compileParticleFlux(CMathContainer & container)
{
bool success = true;
// The default value is NaN
*mpValue = InvalidValue;
// Reset the prerequisites
mPrerequisites.clear();
const CReaction * pReaction = static_cast< const CReaction * >(mpDataObject->getObjectParent());
// We need to check whether this reaction is a single compartment reaction and scale
// it if true.
// mParticleFlux = *mUnitScalingFactor * mFlux;
// mUnitScalingFactor = & pModel->getQuantity2NumberFactor();
std::ostringstream Infix;
Infix.imbue(std::locale::classic());
Infix.precision(16);
Infix << container.getModel().getQuantity2NumberFactor();
Infix << "*";
Infix << pointerToString(container.getMathObject(pReaction->getFluxReference())->getValuePointer());
CExpression E("ParticleFluxExpression", &container);
success &= E.setInfix(Infix.str());
pdelete(mpExpression);
mpExpression = new CMathExpression(E, container, !mIsInitialValue);
compileExpression();
return success;
}
开发者ID:jonasfoe,项目名称:COPASI,代码行数:35,代码来源:CMathObject.cpp
示例17: compileFactor
void compileFactor(void) {
// TODO
Token *tmp=lookAhead;
//de chuyen tiep lookAhead o duoi
switch(tmp->tokenType)
{
case TK_NUMBER:
case TK_CHAR:
compileUnsignedConstant();
break;
case SB_LPAR:
eat(SB_LPAR);
compileExpression();
eat(SB_RPAR);
break;
case TK_IDENT:
eat(TK_IDENT);
if(lookAhead->tokenType==SB_LPAR)
{
compileArguments();
}
else if(lookAhead->tokenType==SB_LSEL)
{
compileIndexes();
}
//else
//compileUnsignedConstant();
break;
default:
error(ERR_INVALIDFACTOR, lookAhead->lineNo, lookAhead->colNo);
break;
}
//free(tmp);
}
开发者ID:minh93,项目名称:thctd,代码行数:35,代码来源:parser.c
示例18: compileFactor
void compileFactor(void) {
// TODO
switch (lookAhead->tokenType) {
case TK_NUMBER:
eat(TK_NUMBER);
break;
case TK_IDENT:
eat(TK_IDENT);
compileIndexes();
compileArguments();
break;
case TK_STRING:
eat(TK_STRING);
break;
case TK_CHAR:
eat(TK_CHAR);
break;
case SB_LPAR:
compileExpression();
eat(SB_RPAR);
break;
default:
error(ERR_INVALIDFACTOR, lookAhead->lineNo, lookAhead->colNo);
break;
}
}
开发者ID:BichVN,项目名称:Compiler,代码行数:26,代码来源:parser.c
示例19: compileIndexes
Type* compileIndexes(Type* arrayType) {
// TODO: parse a sequence of indexes, check the consistency to the arrayType, and return the element type
while (lookAhead->tokenType == SB_LSEL) {
eat(SB_LSEL);
compileExpression();
eat(SB_RSEL);
}
}
开发者ID:leaderwing,项目名称:test_repo,代码行数:8,代码来源:parser.c
示例20: compileForSt
void compileForSt(void) {
eat(KW_FOR);
eat(TK_IDENT);
// check if the identifier is a variable
if (checkDeclaredVariable(currentToken->string) == NULL)
error(ERR_UNDECLARED_VARIABLE, currentToken->lineNo, currentToken->colNo);
eat(SB_ASSIGN);
compileExpression();
eat(KW_TO);
compileExpression();
eat(KW_DO);
compileStatement();
}
开发者ID:AnhTran1,项目名称:kpl-compiler,代码行数:17,代码来源:parser.c
注:本文中的compileExpression函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论