コード例 #1
0
static int lista_terminos()
{
  if( !termino() )
    printErr(" expected funcion(..), variable, or const_obj",TOKEN.lexeme,toks_ptr+1); 

  toks_ptr++;
  while( termino() )
    toks_ptr++;
  
  return 1;
}
コード例 #2
0
ファイル: parser.c プロジェクト: dnoseda/alto-publisher
void expresion_simple() {

    if (sbol->codigo == CMAS || sbol->codigo == CMENOS) {
        scanner();
    }

    termino();

    while (sbol->codigo == CMAS || sbol->codigo == CMENOS || sbol->codigo == COR) {
        scanner();
        termino();
    }

}
コード例 #3
0
//expresion
void expresion()
{
 if (token==mas || token==menos) {
    obtoken();
    termino();
 }
 else 
    termino();

 while (token==mas || token==menos) {
       obtoken();
	   termino();
 }
}
コード例 #4
0
ファイル: parser.c プロジェクト: nanorarias/compilador-micro
void expresion(reg_expr * reg) {
	// <expresión> -> <termino> {<operadorAditivo> <termino>}
    reg_expr left_operand, right_operand;
    reg_op op;
    token tok;
    
    termino(&left_operand);
    
    while ((tok = next_token()) && (tok == SUMA || tok == RESTA)) {
        operador_aditivo(&op);
        termino(&right_operand);
        left_operand = gen_infijo(&left_operand, &op, &right_operand); // #gen_infijo
    }
    
    *reg = left_operand;
}
コード例 #5
0
static int comparacion()
{ 
  if( !termino() )
     printErr("expected termino  ",TOKEN.lexeme,toks_ptr+1);
  
  toks_ptr++;
  if(TOKEN.category != REL_OP)
    {
        printErr("expected relational operator ( = | != | ‘<’ | ‘>’ | <= | >= ) ",TOKEN.lexeme,toks_ptr+1);
    }

  toks_ptr++;
  if( !termino() )
    printErr("expected termino ",TOKEN.lexeme,toks_ptr+1);
  
  return 1;
}
コード例 #6
0
ファイル: parser.c プロジェクト: LeonardoSegovia/GitHubFacu
/* <expresión> → <término> {<operadorAditivo> <término> #gen_infijo} */
void expresion (struct reg_expr *preg) {
	
	struct reg_expr operando_izq, operando_der;
	struct reg_op op;
	token tok;
	
	termino(&operando_izq);
	tok = prox_token();
	while(tok == SUMA || tok == RESTA) {
		operador_aditivo(&op);
		termino(&operando_der);
		operando_izq = gen_infijo(&operando_izq, &op, &operando_der);
		
		tok = prox_token();
	}
	
	*preg = operando_izq;
}
コード例 #7
0
//expresion
void expresion(int toksig[])
{
  int setpaso[NOTOKENS]; //conjunto de paso por valor        
  
  copia_set(setpaso,toksig);
  setpaso[mas]=setpaso[menos]=1; //setpaso=mas+menos+toksig
  
  if (token==mas || token==menos) {
    obtoken();
    termino(setpaso);
  }
  else 
    termino(setpaso);
  
  while (token==mas || token==menos) {
    obtoken();
    
    copia_set(setpaso,toksig);
    setpaso[mas]=setpaso[menos]=1; //setpaso=mas+menos+toksig
    
    termino(setpaso);       
  }
}