语义分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个C程序片断
int arr[2],b;
b = arr * 10;
源程序的结构是正确的.语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配.
又比如在语句sum:=first+count*10中,*的两个运算对象:count是实型,10是整型,则语义分析阶段进行类型审查之后,在语法分析所得到的分析树上增加一语义处理结点,表示整型变成实型的一目算符inttoreal.
语义分析的现状:编译器最实质性的工作;对源代码语义的第一次解释,引起了源程序的质的变化。
语义分析的地位:编译程序最实质性的工作;第一次对源程序的语义作出解释,引起源程序质的变化。
按照语法分析器识别的语法范畴进行语义检查和处理,产生相应的中间代码或目标代码.
介于源语言和目标代码之间的一种代码。
在社交网络中,节点之间通常存在信息交换。用于获取和理解可以在此社交网络中进行分析的文本信息的强大技术称为语义Web消息传输分析(语义分析)。作为人工智能和计算语言学的一种பைடு நூலகம்法,它提供了知识推理和语言的结构和过程。
例:id1:=id2+id3*10
经语法分析得知其是Pascal语言,表示成语法树为:
:=
/ \
id1 +
/ \
id2 *
/ \
id3 10
经语义分析得插入语义处理结点的树:
:=
/ \
id1 +
/ \
id2 *
/ \
id3 inttoreal
|
10
在高级程序设计语言翻译中,语义分析阶段的工作不与目标机器的体系结构密切相关,而目标代码生成阶段的工作与目标机器的体系结构密切相关。
语义分析是编译过程中的逻辑阶段。语义分析的任务是检查与上下文相关的属性和结构正确的源程序的类型。语义分析是检查源程序中的语义错误,并在代码生成阶段收集类型信息。例如,语义分析的任务之一是检查每个操作员是否具有语言规范所允许的操作对象。如果不符合语言规范,则编译器应报告错误。当将实数用作数组下标时,某些编译器会报告错误。例如,某些程序规定可以强制操作对象,然后将二进制操作应用于整数和实数对象时,编译器应将整数转换为实数类型,这不能视为源错误。程序。
相关文档
最新文档