首页 > 解决方案 > 什么是语言前端?

问题描述

我对编程语言和编译器上下文中前端和后端的定义感到困惑。

LLVM 编译器基础设施项目是一组编译器和工具链技术,可用于开发任何编程语言的前端和任何指令集架构的后端。

当我搜索“编程语言前端”时,我发现的只是 HTML CSS JS,我知道这不是它在这种情况下所指的。谁能向我解释或指导我找到正确的资源?

标签: compiler-constructionllvmprogramming-languages

解决方案


编译器的前端是编译器的一部分,它从原始源代码开始,并以该程序“含义”的某种内部表示结束,以某种格式存储,使编译器的其余部分能够理解该结构并开始生成代码。它是(通常)完成扫描、解析和语义分析的地方。

编译器的后端是编译器的一部分,它采用内部表示并使用它以某种格式(汇编、机器代码、JVM 字节码、LLVM 位码等)生成代码。它通常处理诸如优化、指令之类的事情。选择,寄存器分配等。

一些编译器将这两个部分分解为逻辑上独立的组件。有时它们是交织在一起的。LLVM 的部分目标是让你可以为一种新语言构建前端,然后将其连接到现有的后端,这样你就可以设计一种新语言并获得其他人拥有的所有出色的优化工作完成,或者为现有前端构建新的后端,以防您想使用新的分析来分析以某种现有语言编写的程序。


推荐阅读