Boa noite,
Estou com uma dúvida. Na última aula foi apresentado que, se quisermos estabelecer algum tipo de precedência entre operadores (por exemplo, * antes de +), haveria restrições sintáticas no BNF.
Pensando em um exemplo: suponha que queiramos construir um BNF para uma linguagem onde podemos ter funções, como f: a -> b e g: b -> c. Também gostaríamos que fosse possível compor essas duas funções, por exemplo g ° f. É sabido que o contradomínio de f deve ser igual ao domínio de g.
Minha dúvida é: essa restrição de compatibilidade entre domínio e contradomínio é considerada mais sintática ou semântica? Existe algo que possa ser feito no BNF para capturar essa condição, ou esse tipo de verificação é tratado de outra forma (por exemplo, no compilador ou através da descrição da semântica formal da linguagem)?