编程语言的解析过程

示例代码:

1 if ( a == 10) {
2     printf("hoge\n");
3 } else {
4     printf("piyo\n");
5 }

一般编程语言的语法处理(这与编译性语言或者是解释性语言无关),都会有如下的过程:

  1. 词法分析,将源代码分割为若干个记号(token)的处理;
    示例部分代码在执行完词法分析过程后,将被分割为如下的记号,

    执行词法分析的程序称为词法分析器(lexical analyzer),lex的工作就是根据词法规则自动生成词法分析器。
  2. 语法分析,即从记号构建分析树的处理,分析树也叫语法树,或者是抽象语法树;

    执行语法分析的程序称为解析器(parser),yacc就是根据语法规则自动生成解析器的程序。
  3. 语义分析,经过语法分析生成的分析树,并不包含数据类型等语义信息,因此在语义分析阶段,会检查程序中是否含有语法正确但是存在逻辑问题的错误。
时间: 2024-12-05 17:13:42

编程语言的解析过程的相关文章

PHP编程语言解析过程讲解

PHP执行过程 任何一种语言的源代码计算机都没有办法直接执行,需要转换成计算机能够识别的机器指令. PHP编程语言也是一门高级语言,也需编译(解释) PHP的解析过程: 1.请求源代码,进行词法解析,语法解析. 词法解析,主要对源代码中的单词进行一个个的读入,判断,词法解析时,如果有错误,会报错.编译错误. 语法解析,主要判断语法结构是否正确.比如:流程控制结构是否完成. 结果:是可执行的机器代码 2.执行,执行时主要是对内存的操作,执行时也可能会出现错误,此时错误属性执行错误. 结果:纯的ht

苹果编程语言Swift解析:将推动应用开发巨变

 苹果编程语言Swift解析:将推动应用开发巨变 以下为文章全文: 许多人可能都已忘记苹果WWDC中的"D"代表了"开发者".这是一次开发者的大会,参加这一大会的程序员可以从会上了解到新的技术. 今年的WWDC回归本源,并专注于两大领域:软件,以及软件开发者. 尽管许多人对于苹果没有在今年WWDC上发布任何硬件产品感到失望,但需要指出的是,令这些硬件充满吸引力的关键在于软件.苹果今天发布的许多消息将使开发者的工作变得更简单,这将带来更多.更好的应用. 到目前为止

DNS的原理和解析过程

DNS的解析原理和过程: 在Internet上域名和IP是对应的,DNS解析有两种:一种是正向解析,另外一种是反向解析. 正向解析:正向解析就是将域名转换成对应的 IP地址的过程,它应用于在浏览器地址栏中输入网站域名时的情形. 反向解析:根据IP地址查找对应的注册域名,经常被一些后台程序使用,用户看不到. 另外需要知道的是DNS查询的工作方式: 客户端和浏览器,本地DNS之间的查询方式是递归查询: 本地DNS服务器与根域及其子域之间的查询方式是迭代查询: DNS解析过程: 场景:用户在浏览器输入

Jsp解析过程

什么是JSP? JSP---Java Server Pages 拥有servlet的特性与优点(本身就是一个servlet) 直接在HTML中内嵌JSP代码 JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行 只有当客户端第一次请求JSP时,才需要将其转换.编译 优点: 优良的性能 优于CGI,PHP,ASP 平台无关性 操作系统无关,Web服务器无关 可扩展性 tag的扩展机制,简化页面开发 JSP解析过程: 1 :JSP先把文件解析成java文件 2

DNS原理及其解析过程 精彩剖析

DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的 IP地址,而不能认识域名.我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是 因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页. 什么是DNS?     DNS( Domain Name  S

DNS原理总结及其解析过程详解

一.域名系统 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词.“域名系统”明确地指明这种系统是应用在因特网中. 我们都知道,IP地址是由32位的二进制数字组成的.用户与因特网上某台主机通信时,显然不愿意使用很难记忆的长达32位的二进制主机地址.即使

php嵌入html的解析过程

php嵌入html的解析过程 示例: 执行过程: ????首先明确:PHP是分段读取一次执行(编译),JS是分段读取分段执行 ? 程序就是对内存的操作 ????函数可以先调用后定义,原因,程序的执行时需要先编译,对程序的编译的结果在内存有影响(编译之后,函数在内存中就产生了可执行的代).开始执行函数时,就可以找到函数的代码进行执行. ????变量不可以先访问后定义,原因,程序在执行时需要行编译,但对变量的编译对内存不会有任何的影响.

ARP的解析过程

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址:收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源. 解析过程: ARP用于把一个已知的IP地址解析成MAC地址,以便在MAC层通信.为了确定目标的 MAC地址,首先查找ARP缓存表.如果要查找的MA

Android 5.0 system_fonts.xml文件的解析过程

Android 5.0 system_fonts.xml文件的解析过程 首先看看看5.0 中familyset version="22" 的格式 20 <family name="sans-serif"> 21 <font weight="100" style="normal">Roboto-Thin.ttf</font> 22 <font weight="100"