Beispiel #1
0
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;
  }
}
Beispiel #2
0
void compileArguments(void) {
    while(lookAhead->tokenType == SB_LPAR){
        eat(SB_LPAR);
        compileExpression();
        compileArguments2();
        eat(SB_RPAR);
    }

}
Beispiel #3
0
void compileArguments2(void) {
  // TODO
  if(lookAhead->tokenType==SB_COMMA)
    {
      eat(SB_COMMA);
      compileExpression();
      compileArguments2();
    }
}
Beispiel #4
0
void compileArguments2(void) {
  // TODO
  switch (lookAhead->tokenType) {
  case SB_COMMA:
    eat(SB_COMMA);
    compileExpression();
    compileArguments2();
    break;
  case SB_RPAR:
    break;
  default:
    error(ERR_INVALIDARGUMENTS, lookAhead->lineNo, lookAhead->colNo);
    break;
  }
}
Beispiel #5
0
void compileArguments(void) {
  // TODO
  switch (lookAhead->tokenType) {
  case SB_LPAR:
      eat(SB_LPAR);
      compileExpression();
      compileArguments2();
      eat(SB_RPAR);
      break;
  // Follow - same as call statement as statement:
  case SB_SEMICOLON:
  case KW_END:
  case KW_ELSE:
  // Follow - term2
  case SB_TIMES:
  case SB_SLASH:
  // Follow - expression3
  // Follow (For statement)
  case KW_TO:
  case KW_DO:
  // Follow (arguments2)
  case SB_COMMA:
  // Follow (condition2)
  case SB_EQ:
  case SB_NEQ:
  case SB_LE:
  case SB_LT:
  case SB_GE:
  case SB_GT:
  // Follow (factor)
  case SB_RPAR:
  // Follow (indexes)
  case SB_RSEL:
  // Follow (if statement)
  case KW_THEN:
      break;
  // Error
  default:
      error(ERR_INVALIDARGUMENTS, lookAhead->lineNo, lookAhead->colNo);
      break;
  }
}