var str = "string"
Run Code Online (Sandbox Code Playgroud)
LLVM如何检测变量是一个字符串?
编译器按步骤完成其工作,类型推断是此过程中的一个步骤.
通常,作为第一步,编译器执行词法分析,其中将输入文件字节拆分为数字和字符串等单位(注意:还没有与您所指的相同的字符串)并丢弃空白和注释.
例如,它分裂中的示例输入流var,str,=,",string,".
第二步是语法分析或解析,其中编译器基于语言的语法构造和验证抽象语法树.
在这种情况下,它将构造一个抽象语法树,表示形式的变量声明语句(请参阅语言参考中的声明语句):
var variable_name = expression
Run Code Online (Sandbox Code Playgroud)
其中表达式是字符串文字:
var variable_name = string_literal
Run Code Online (Sandbox Code Playgroud)
第三步是语义分析,类型推断在此步骤中发生.在这种情况下,类型推断推断字符串文字的类型是String因为没有关于变量的其他信息str,它将推断str必须是a String,因为表达式(变量声明的右侧)是类型String.
此步骤后有更多步骤.作为后续步骤,编译器通常生成中间代码,然后优化中间代码,最后生成汇编代码.之后,编译器外部的工具链通常至少具有生成最终可执行文件的链接阶段.
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |