• 2024-07-02C语言小项目-词法分析器
    1.什么是词法分析器?        词法分析器是编译器中的第一个阶段,其主要任务是扫描输入的源代码字符流,并将字符组成的序列转换为有意义的标记(Token)。每个Token包含一个词法单元的信息,如关键字、标识符、运算符、常量等。例如,对于表达式inta=10;,词法分析器会生成诸
  • 2024-06-17[JS] 动态执行JS与修改词法作用域
    相关可行的操作eval:同步执行,当前作用域;setTimeout:异步执行,全局作用域;第1个参数可以传入函数对象,也可以传入字符串,即要执行的代码。script:同步执行,全局作用域;创建script标签,并设置innerHTML为要执行的代码。Function:同步执行,全局作用域。Function构造函
  • 2024-06-12一次搞懂作用域和闭包
    前言对于那些有一点JavaScript使用经验但从未真正理解闭包概念的人来说,理解闭包可以看作是某种意义上的重生,但需要付出非常多的努力和牺牲才能理解这个概念。闭包并不是一个需要学习新的语法或模式才能使用的工具,它也不是一件必须接受像Luke一样的原力训练才能使用和
  • 2024-06-03编译原理:代替LR分析法的MP分析法
    LR分析法由Knuth先生于1965年开发。LR分析法存在一个问题:当文法产生式变多,分析表变大之后,占用很多内存。为了接近自然语言编程,需要大量的文法产生式,有可能分析表过大,内存里放不下。MP分析法,是multi-pass(多遍分析法)。词法分析和语法分析仍然是分开的,语法分析按照“先乘除
  • 2024-05-31编译原理------一个简单语言的编译程序的设计与实现
    所完成功能 1.词法分析 2.语法分析3.语义分析和中间代码生成4.代码优化5.目标代码生成所实现语言的文法采用下降分析方法,已将原来的文法改写成LL(1)文法。<程序>→<main关键字>(){<声明序列><语句序列>}<声明序列>→<声明语句><声明序列'>|ε<声明序列'>→<
  • 2024-05-30如何设计简单词法分析器 C++(面向对象)
    前言与其他教程不同,本文实现的词法分析器借鉴于C++输入流我搜过的教程基本上都是从状态转换的思想入手,虽然本文思路类似于状态转换,但也有独到之处。从面向对象的角度其他教程大多采用面向过程,二者都能解决问题,各有优劣。只不过我从面向对象的角度,给读者提供一个新
  • 2024-05-25【编译原理】词法分析器的设计与实现
    一、实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分
  • 2024-05-22词法分析和语法分析
    词法分析和语法分析(例子)让我们以一个简单的例子来说明词法分析和语法分析的过程,假设我们有一个非常基础的编程语言片段:x=3+5词法分析(LexicalAnalysis):读取源代码:系统首先读取这行代码的字符流。分割和识别词法单元:x 被识别为一个标识符(Identifier)。= 被识别
  • 2024-04-28pl0词法分析器
    pl/0词法分析器下面是这个分析器的功能:1、待分析的简单语言的词法(1)关键字:beginifthenwhiledoend所有关键字都是小写。(2)运算符和界符::=+–*/<<=<>>>==;()#(3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义:ID=letter(letter|digit)*NUM=digitd
  • 2024-04-11编译原理(清华大学版)第一章
    第一章概论基本概念 词法分析经过词法分析器识别出Token,把字符串转化为一个个Token。Token包括:关键字、标识符、界符等语法分析把Token串转换成体现语法规则的抽象树(AST)语义分析审查源程序有无语义错误找到变量的作用域识别执行的运算方式进行类型
  • 2024-04-09【编译原理】Antlr 入门使用
    前面文章我们学习了编译器前端的词法和语法分析工具,本篇我们来看看如何借助Antlr工具,快速生成词法和语法分析代码。一、安装mac环境:1)安装brewinstallantlr2)配置classpath(把Antlr的JAR文件设置到CLASSPATH环境变量中,以便顺利编译所生成的Java源代码。)vi~/.b
  • 2024-04-08开源数据库OpenGauss的SQL解析源码分析
    开源数据库OpenGauss的SQL解析源码分析OpenGauss数据库体系概述openGauss是关系型数据库,采用客户端/服务器,单进程多线程架构;支持单机和一主多备部署方式,同时支持备机可读、双机高可用等特性。从代码结构体系结构的角度来说,oepnGauss的第一个组成部分是通信管理。openGa
  • 2024-04-07词法分析基础
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:奇铭什么是词法分析要弄清楚什么是词法分析,需要先搞清楚代码是如何执行的。高级编程语言的代码通常需要通过翻译才能被机器执行,而翻译
  • 2024-04-06C#词法分析自动生成器
    C#词法分析自动生成器前言在做编译原理实验时,要求使用自动生成器生成词法分析器,老师推荐的是用flex,但用flex只会生成C代码,自己项目用的又是C#,本来想使用C代码直接生成dll库并用C#调用,但非常麻烦。干脆找了个能生成C#代码的生成器。配置相关的生成器很多,但我能找到的且能成功
  • 2024-04-052 程序设计语言
    程序设计语言编译程序和解释程序低级语言汇编和机器语言高级语言cc++javapython源程序(.java)-------------------解释(脚本)/编译(cc++java)程序翻译--------------------->目标程序(机器可以识别)编译程序:源程序.java------编译程序------>等价源程序的目标
  • 2024-03-31PL/SQL的词法单元
    目录字符集标识符分隔符注释oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645PL/SQL块中的每一条语句都必须以分号结束。一个SQL语句可以跨多行,但分号表示该语句的结束:一行中也可以有多条SQL语句,各语句之间以分号
  • 2024-03-30计算机基础知识问答:编译原理篇
    编译原理一个C语言程序跑起来的过程是怎样的?预处理:在这一步,预处理器(如gcc-E)处理源文件中的预处理器指令,如#include、#define等。编译:编译器(如gcc-S)将预处理后的代码转换为汇编语言。这一步包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。汇
  • 2024-03-26Hive-技术补充-ANTLR语法编写
    一、导读我们学习一门语言,或外语或编程语言,是不是都是要先学语法,想想这些语言有哪些相同点    1、中文、英语、日语......是不是都有主谓宾的规则    2、c、java、python、js......是不是都有数据类型、循环等语法或数据结构虽然人们在过去的几十年里
  • 2024-03-17C语言词法符号
    目录词法符号关键字标识符运算符算术运算符逻辑运算符位运算符关系运算符 赋值运算符条件运算符(三目运算符)运算符优先级标点符号分隔符词法符号关键字        标识符        运算符        标点符号        分隔符
  • 2024-03-10作用域
    作用域是什么?作用域作用域是根据名称查找变量的一套规则,作用域是在运行时代码中的某些特定部分中变量,函数的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。作用域链作用域链指的是作用域与作用域之间形成的链条。当我们查找一个当前作用域没有定义的变量(
  • 2024-02-22《程序是怎样跑起来的》第四章第一节读后感
    在《程序是怎样跑起来的》第四章第一节中,作者介绍了计算机程序的编译过程。通过阅读这一部分,我对计算机程序的编译原理有了更深入的理解,并对程序的执行过程有了更全面的认识。首先,作者介绍了编译器的概念和作用。编译器是一种将高级语言源代码转换成机器码的工具。编译
  • 2024-02-18Lex 生成一个词法分析器
     lex通过输入一个.l文件生成一个lex.yy.c文件,然后通过c编译器编译成一个可执行的词法分析器。该词法分析器扫描输入源文件,生成一个token符号流给后面语法分析器使用。 .l文件的结构,分成三个部分,声明,转换规则,自定义规则。三个部分由%%分割declarations%%transl
  • 2024-02-08词法分析
    目录正则表达式中的epsilon闭包和克林闭包DFA和NFA正则表达式中的epsilon闭包和克林闭包正则表达式(RegularExpression,简称RE)是一种用来表示有限自动机所接受单词组合的语言,相对于有限自动机会更加直观易读。在正则表达式中,epsilon闭包和克林闭包是两个重要的概念。Epsil
  • 2024-02-04探寻SQL的背后机制
    探寻SQL的背后机制前言在数据领域,SQL(StructuredQueryLanguage)是一门广泛使用的语言,用于查询和处理数据。你可能已经使用过诸如MySQL、Hive、ClickHouse、Doris、Spark和Flink等工具来编写SQL查询。每一种框架都提供了对应的SQL语法,可以帮助我们从庞大的数据集中提取所需的信息,但
  • 2024-01-16以 Golang 为例详解 AST 抽象语法树
    前言各位同行有没有想过一件事,一个程序文件,比如hello.go是如何被编译器理解的,平常在编写程序时,IDE又是如何提供代码提示的。在这奥妙无穷的背后,AST(AbstractSyntaxTree)抽象语法树功不可没,他站在每一行程序的身后,默默无闻的工作,为繁荣的互联网世界立下了汗马功劳。AST抽象