Alguem poderia me ajudar a identificar que linguagem é essa?
E se alguem poderia me ajudar a converter para Java?
Esses códigos estão sendo propostos para validar uma expressão matemática através de uma pilha.
clas s Item {
public :
Apontador abaixo ;
char conteudo ;
} ; / Item /
typedef struct Item Apontador ;
clas s TExp {
public :
Apontador base, topo;
EApontador anterior ;
intresultado;
//Basicas
voidfazExpVazia (void);
intvazia (void);
voidempilha (char);
chardesempilha (void);
void imprime (void);
//Programa
int leExp (char, int);
void viraPilha (void);
void converte (void);
double resolve (void);
} ; / TExp /
typedef struct TExp EApontador ;
void TExp: : empilha (char registro){
Apontador item;
item = (Apontador) malloc (sizeof (Item));
item>conteudo = registro;
item>abaixo = topo>abaixo;
topo��>abaixo = item;
} / empi lha /
char TExp : : desempilha() {
if (!vazia()) {
Apontador aux = topo>abaixo;
topo��>abaixo = aux>abaixo;
return aux>conteudo ;
} /i f/
} /desempi lha/
int eOperador (char c){
if (c=='+'|| c=='-'||c=='*'||c=='/'||c=='$')
return 1;
return 0;
} / eOperador /
int eNumero (char c){
if (c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c==
'5'||c=='6'||c=='7'||c=='8'||c=='9')
return 1;
return 0;
} / eNumero /
int abreParenteses (char c) {
if (c=='(') return 1;
return 0;
} / ab r ePar ent e s e s /
int f e chaPa r ent e s e s ( char c ) {
if (c==')') return 1 ;
return 0;
} / f e c h aPa r ent e s e s /
int qualNumero ( char c ) {
if ( c == '0' ) return 0 ;
if ( c == '1' ) return 1 ;
if ( c == '2' ) return 2 ;
if ( c == '3' ) return 3 ;
if ( c == '4' ) return 4 ;
if ( c == '5' ) return 5 ;
if ( c == '6' ) return 6 ;
if ( c == '7' ) return 7 ;
if ( c == '8' ) return 8 ;
if ( c == '9' ) return 9 ;
} / qualNumero /
int pesoOp ( char op ) {
if ( op == '$' ) return 2 ;
if ( op == '*' | | op == '/' ) return 1 ;
if ( op == '+' | | op == '-' ) return 0 ;
} / pesoOp /
int peso ( char op1 , char op2 ) {
int P1 , P2 ;
P1 = pesoOp ( op1 ) ;
P2 = pesoOp ( op2 ) ;
if ( P1 > P2 ) return 2 ;
if ( P1 == P2 ) return 1 ;
if ( P1 < P2 ) return 0 ;
} / peso /
int TExp : : leExp ( char exp ) { leExp ( exp , 0 ) } / leExp /
int TExp : : leExp ( char exp , int iterador) {
if ( validaExp ( exp ) ) {
int i = iterador;
TExp aux ;
aux . fazExpVazia ( ) ;
do{
if (abreParenteses (exp[i])) {
TExp Parenteses;
Parenteses.fazExpVazia ( ) ;
Parenteses.anterior = this ;
i++;
i = Parenteses.leExp( exp , i ) ;
}
else
if (eNumero ( exp [ i ] ) ) {
empilha( exp [ i ] ) ;
i++;
}
else
if (eOperador ( exp [ i ] ) ) {
if (aux . va z i a ()) {
aux.empilha (exp[i]) ;
i++;
}
else
if (peso (aux.topo��>abaixo��>conteudo, exp[i]) ==
2 ) {
while (!aux.vazia()) {
empilha (aux.desempilha()) ;
}
aux.empilha(exp[i]);
i++;
}
else
if (peso(aux.topo��>abaixo��>conteudo, exp[i])
== 1 ) {
aux.empilha (exp[i]);
i++;
}
else
if (peso(aux.topo��>abaixo��>conteudo, exp[i]
)==0){
aux.empilha(exp[i]) ;
i++;
}
}
else
if(fechaParenteses (exp[i])) {
while (!aux.vazia()) {
empilha (aux.desempilha());
}
if (anterior!=NULL) {
viraPilha();
while (topo��>abaixo!=base) {
anterior��>empilha (desempilha()) ;
}
i++;
return i ;
}
}
else
if (exp[i]=='\0') {
while(!aux.vazia()) {
empilha(aux.desempilha());
}
return 1;
}
} while(exp[i]!='\0');
while(!aux.vazia()) {
empilha(aux.desempilha());
}
}
else
printf("Expressão inválida");
}