Precedência de operadores

Olá, estou na minha saga de compilador Pascal para Mepa e estou com outra duvida. Agora em relação a precedência de operadores lógicos, relacionais e aritméticos. Gostaria de saber se oque eu fiz está correto, se está na precedência correta ou se teria de alterar algo.

Deixo novamente meu link com os arquivos, esta parte foi retirada do “sintatico.y”: Pascal-para-Mepa---Parcialmente-implementado/TrabFinal at main · VictorHugX/Pascal-para-Mepa---Parcialmente-implementado · GitHub

expressao
	: expressao_simples S_IGUAL expressao_simples 
		{ fprintf(arq_mep, "%s\n","CMIG"); } 
	| expressao_simples S_DIFERENTE expressao_simples
		{ fprintf(arq_mep, "%s\n","CMDG"); } 
	| expressao_simples S_MENOR	expressao_simples
		{ fprintf(arq_mep, "%s\n","CMME"); } 
	| expressao_simples S_MAIOR	expressao_simples
		{ fprintf(arq_mep, "%s\n","CMMA"); } 
	| expressao_simples S_MEIGUAL	expressao_simples
		{ fprintf(arq_mep, "%s\n","CMEG"); } 
	| expressao_simples S_MAIGUAL 	expressao_simples
		{ fprintf(arq_mep, "%s\n","CMAG"); } 
	| expressao_simples
;

expressao_simples
	: expressao_simples S_MAIS termo
		{ fprintf(arq_mep, "%s\n","SOMA"); } 
	| expressao_simples S_MENOS termo
		{ fprintf(arq_mep, "%s\n","SUBT"); }
	| expressao_simples S_OR termo
		{ fprintf(arq_mep, "%s\n","DISJ"); }
	| S_MAIS termo
	| S_MENOS termo
		{ fprintf(arq_mep, "%s\n","INVR"); }
	| termo
;

termo
	: termo S_VEZES fator
		{ fprintf(arq_mep, "%s\n","MULT"); } 
	| termo S_DIV fator
		{ fprintf(arq_mep, "%s\n","DIVI"); } 
	| termo S_AND fator
		{ fprintf(arq_mep, "%s\n","CONJ"); } 
	| fator
;