首页 > 其他分享 >Lex 生成一个词法分析器

Lex 生成一个词法分析器

时间:2024-02-18 11:35:27浏览次数:26  
标签:自定义 %% 分析器 生成 词法 Lex 声明

 lex 通过输入一个.l 文件生成一个lex.yy.c 文件,然后通过c 编译器编译成一个可执行的词法分析器。 该词法分析器扫描输入源文件,生成一个token 符号流给后面语法分析器使用。

 

.l 文件的结构, 分成三个部分,声明, 转换规则, 自定义规则。 三个部分由%%分割

declarations
%%
translation rules
%%
auxiliary procedures

声明段, 包含希望出现出现再目标c文件种的代码, 正则表达式的声明。符号常量的声明。%{ %} 包裹内容

#include <stdio.h>  
#include "y.tab.h"
typedef char * YYSTYPE;  // 符号常量声明
char * yylval;           
/* regular definitions */

2delim [ \t\n]ws 

letter [A-Za-z]
digit [0-9]
%}

规则段  由正则表达式和动作组成  {} 内表示要执行的代码动作

%% 
/*  {BEGIN(commemts)}   

*/   {END(comments)}
.....
%%

  自定义规则

其他内嵌代码

标签:自定义,%%,分析器,生成,词法,Lex,声明
From: https://www.cnblogs.com/zzas0/p/18018984

相关文章

  • 词法分析
    目录正则表达式中的epsilon闭包和克林闭包DFA和NFA正则表达式中的epsilon闭包和克林闭包正则表达式(RegularExpression,简称RE)是一种用来表示有限自动机所接受单词组合的语言,相对于有限自动机会更加直观易读。在正则表达式中,epsilon闭包和克林闭包是两个重要的概念。Epsil......
  • mysql插入数据出现java.sql.SQLException Create breakpoint : Incorrect string valu
    问题图片如下:  如果出现这个问题,就是当前的mysql设置的字符集和当前业务的需求符合;前:当前我需要在mysql中存入的内容中包括了表情等信息,如下:问题分析:因为我在docker中搭建的mysql设置的默认编码为utf-8,下面是我的my.cnf文件[client]default_character_set=utf8[my......
  • 了解 StyleX 么?
    近日,Meta开源了一款CSS-in-JS库 —— StyleX。看命名方式,Style-X是不是有点像JS-X,他们有关系么?当然有。JSX是一种用JS描述HTML的语法规范,广泛应用于前端框架中(比如React、SolidJS...),由Meta公司提出。同样的,按照Meta的设想,StyleX是一种用JS描述CSS的语法规范。早在ReactConf......
  • flex布局 自适应宽高 缩放到内容高度时不再进行缩放, 需求设置最小高度超出滚动条,并隐
    在需要滚动的元素内部添加一层div,并添加样式:position:absolute;父级样式添加 position:relative;即可<divclassName="pcCommon_left_top">          <divstyle={{position:'absolute',width:'calc(100%-72rem)'}}>     ......
  • 手撸代码:从零开始的 AlexNet 图像分类(PyTorch框架)
    摘要:本文在PyTorch框架下搭建了AlexNet,并在CIFAR10上完成了图片分类。同时,更正了一些原论文中的小错误(如:输入图像尺寸)。由于CIFAR10没有验证集,本文将训练集的10%当作验证集。完整代码已上传至GitHub:https://github.com/TiezhuXing01/AlexNet_in_PyTorch1.引入库i......
  • Flex布局,和position布局,实现上下固定中间部分滚动
    Flex布局实现上下固定中间部分滚动:<divclass="parent"><divclass="header">header--固定</div><divclass="content"><p>content--滚动</p><p>内容部分</p><p>内容部分<......
  • Flex 布局教程:语法篇
    Flex布局教程:语法篇作者:阮一峰日期:2015年7月10日网页布局(layout)是CSS的一个重点应用。布局的传统解决方案,基于盒状模型,依赖display属性+position属性+float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。2009年,W3C提出了一种新的方案----Fl......
  • 弹性布局,flex-direction: column;盒子宽度不随着上面盒子变化
    需求大盒子里面的上面盒子药固定宽度下面的盒子要随着自己文字内容宽度,要把下面盒子变成行内块样式这样就不随着上面盒子变化了.nameInfo{//大盒子                  margin-left:28upx;                  display:flex;......
  • mybatis-flex框架多数据源缺陷以及IN和exists的区别及应用
    mybatis-flex框架多数据源情况下,跨数据源查询,因为没法用在一个queryWrapper查询,所以会需要分步查询,就需要使用到子查询。众所周知,子查询速度比join查询慢,所以多数据源有该缺陷。in关键字,和exist关键字,这两个是相反的。区别及应用场景in和exists的区别:如果子查询......
  • ThreadPoolExecutor源码阅读
    目录简介继承结构ExecutorExecutorServiceAbstractExecutorServiceExecutorCompletionService线程池配置代码分析成员变量方法总结参考链接本人的源码阅读主要聚焦于类的使用场景,一般只在java层面进行分析,没有深入到一些native方法的实现。并且由于知识储备不完整,很可能出现疏漏......