当前位置: 首页 > news >正文

给别人做网站去掉版权个人网站备案多少钱

给别人做网站去掉版权,个人网站备案多少钱,搭建小程序多少钱,网站外链如何建设最有用Flex和Bison是Linux和Unix环境下两个非常强大的工具#xff0c;分别用于生成词法分析器和语法分析器。它们在编译器设计、文本处理等领域有着广泛的应用。下面我将详细介绍Flex和Bison的基本概念、功能、用法以及它们之间的关系。 一、Flex 1. 基本概念 Flex#xff08;其…Flex和Bison是Linux和Unix环境下两个非常强大的工具分别用于生成词法分析器和语法分析器。它们在编译器设计、文本处理等领域有着广泛的应用。下面我将详细介绍Flex和Bison的基本概念、功能、用法以及它们之间的关系。 一、Flex 1. 基本概念 Flex其前身是Lex是一个词法分析器生成器。它接受一组正则表达式和对应的动作通常是C语言代码然后生成一个C程序词法分析器该程序能够识别和处理输入文本中的词法单元如标识符、关键字、运算符等。 2. 功能 词法分析将输入文本分割成一个个词法单元token每个单元都具有一定的意义。正则表达式匹配使用正则表达式在输入文本中查找特定的字符模式。动作执行当匹配到正则表达式时执行相应的动作如计数、打印等。 3. 用法 Flex的使用通常包括以下几个步骤 编写Flex程序.l文件定义正则表达式和对应的动作。使用Flex工具编译Flex程序生成C语言源代码通常是lex.yy.c。编译生成的C代码并链接必要的库如libfl生成可执行文件。运行可执行文件对输入文本进行词法分析。 4. Flex程序示例 %{ #include stdio.h #include y.tab.h /* 假设与bison一起使用包含由bison生成的头文件 */ void count() { /* 这里可以添加一些用于调试或统计的代码 */ } %} %option noyywrap %% /* 关键字 */ PROGRAM|VAR|VAR_INPUT|VAR_OUTPUT|VAR_IN_OUT|VAR_EXTERNAL|TEMP|TEMP_VAR|END_PROGRAM| BEGIN_PROGRAM|END_VAR|BEGIN_VAR|END_STRUCT|BEGIN_STRUCT|FUNCTION_BLOCK|FUNCTION| METHOD|INTERFACE|END_INTERFACE|END_FUNCTION_BLOCK|END_FUNCTION|END_METHOD| TRUE|FALSE|VAR_ACCESS|AT|RETAIN|CONSTANT|TYPE|ALIAS|ARRAY|STRUCT|OF|POINTER| REF_TO|MOD|DIV|AND|OR|XOR|NOT|SHL|SHR|ROL|ROR|ASGN|ADD|SUB|MUL|REAL|INT|BOOL| STRING|TIME|DATE|DURATION|LREAL|DINT|UINT|SINT|BYTE|WORD|DWORD|LWORD|USINT| S5TIME|TIME_OF_DAY|DATE_AND_TIME|TIMESTAMP|TOD|DT|TS { return yytext[0]; } /* 标识符 */ [a-zA-Z_][a-zA-Z0-9_]* { yylval.str strdup(yytext); return IDENTIFIER; } /* 数字整数和浮点数 */ [0-9](\.[0-9])?([eE][-]?[0-9])? { yylval.double_val atof(yytext); return NUMBER; } /* 字符串 */ \([^\\\\n]|(\\.))*\ { yylval.str strdup(yytext1); yylval.str[strlen(yylval.str)-1] \0; return STRING; } /* 注释单行和多行 */ //.* { /* 忽略单行注释 */ } /* 和多行注释可能需要更复杂的规则来处理嵌套但这里简化处理 */ /\/*([^*]|\*[^/*])*\*/ { /* 忽略多行注释 */ } /* 空白字符 */ [ \t\n] { /* 忽略 */ } /* 操作符和分隔符 */ [:.,;(){}\[\]-*/%^|!~] { return yytext[0]; } /* 其他字符 */ . { fprintf(stderr, Unknown character %s\n, yytext); return ERROR; } %% int yywrap(void) { return 1; } int main(void) { yylex(); return 0; } /* 注意 1. 关键字列表可能不完整需要根据实际的ST语言规范进行扩展。 2. 注释的处理可能需要更复杂的Flex规则来正确处理嵌套注释但这里为了简化而省略了。 3. 确保yylval的结构和类型与你的解析器如bison生成的兼容。 4. 编译时可能需要链接到flex库和bison生成的解析器。 */ 在这个Flex程序中我定义了几个部分来匹配ST语言的关键元素 关键字列出了ST语言中可能使用的一些关键字。注意这里的关键字列表是不完整的你需要根据实际的ST语言规范进行扩展。标识符匹配以字母或下划线开头后跟字母、数字或下划线的字符串。数字匹配整数和浮点数。字符串匹配被双引号包围的字符串其中可以包含转义字符。注释简化了单行和多行注释的处理。注意多行注释的处理可能需要更复杂的规则来正确处理嵌套情况。空白字符被忽略的空格、制表符和换行符。操作符和分隔符匹配ST语言中常用的操作符和分隔符。其他字符任何不匹配上述规则的字符都将被视为未知字符并打印错误信息。 二、Bison 1. 基本概念 Bison其前身是Yacc是一个语法分析器生成器。它接受一个上下文无关文法CFG和对应的动作也通常是C语言代码然后生成一个C程序语法分析器该程序能够根据文法规则分析输入文本的结构并生成相应的语法树或执行相应的动作。 2. 功能 语法分析确定输入文本中的词法单元是如何彼此关联的即构建语法树。错误处理在语法分析过程中检测并报告错误。代码生成根据语法树生成目标代码尽管这通常不是Bison的直接功能但语法树可以用于此目的。 3. 用法 Bison的使用也包括类似的步骤 编写Bison程序.y文件定义文法规则和对应的动作。使用Bison工具编译Bison程序生成C语言源代码通常是y.tab.c和y.tab.h。编译生成的C代码并链接必要的库如libbison生成可执行文件。运行可执行文件对输入文本进行语法分析。 4. Bison程序示例 %{ #include stdio.h #include stdlib.h void yyerror(const char *s); // 假设有一些用于存储解析结果的数据结构 // 例如一个全局的符号表或AST节点 %} %token IDENTIFIER NUMBER STRING %token PROGRAM VAR VAR_INPUT VAR_OUTPUT VAR_IN_OUT VAR_EXTERNAL TEMP TEMP_VAR %token BEGIN_PROGRAM END_PROGRAM BEGIN_VAR END_VAR BEGIN_STRUCT END_STRUCT %token FUNCTION_BLOCK FUNCTION METHOD INTERFACE END_INTERFACE END_FUNCTION_BLOCK END_FUNCTION END_METHOD %token TRUE FALSE %token OPERATOR /* 假设我们有一个通用的OPERATOR token用于所有操作符 */ %start program %% program: PROGRAM IDENTIFIER ; block { printf(Parsed a program\n); } ; block: /* 这里可以添加更复杂的块结构如BEGIN_VAR ... END_VAR, BEGIN_PROGRAM ... END_PROGRAM等 */ declarations ; declarations: /* 变量声明 */ VAR declarations_list ; | /* 空声明列表 */ { $$ NULL; /* 假设我们有一个返回类型这里用NULL表示空 */ } ; declarations_list: IDENTIFIER : type | declarations_list , IDENTIFIER : type ; type: /* 这里可以添加对类型的解析如INT, REAL, BOOL等 */ IDENTIFIER ; /* 更多的语法规则可以根据需要添加 */ %% void yyerror(const char *s) { fprintf(stderr, %s\n, s); } int main(void) { yyparse(); return 0; } // 注意这个示例中的语法规则非常简化并且没有处理ST语言的许多特性。 // 你需要根据实际的ST语言规范来扩展这些规则。 重要说明 Token定义在Bison文件中我们使用%token指令来定义由Flex生成的词法单元tokens。这些tokens应该与Flex文件中定义的tokens相匹配。 起始符号%start program指定了语法分析的起始符号。在这个例子中我们期望输入以PROGRAM关键字开始。 语法规则我们定义了几个简单的语法规则来解析程序、块和变量声明。这些规则可以根据需要进行扩展和修改。 错误处理yyerror函数用于处理解析过程中的错误。 主函数main函数调用yyparse()来启动解析过程。 注意 这个Bison程序是一个非常简化的示例它不会处理ST语言的全部特性。你需要根据实际的ST语言规范来扩展和修改语法规则。你可能还需要实现一些额外的功能如符号表管理、抽象语法树AST构建等。编译Bison程序时你需要使用Bison工具生成C代码并将其与Flex生成的词法分析器代码以及任何额外的C代码一起编译。通常这可以通过在Makefile中添加适当的规则来完成。 三、Flex和Bison的关系 Flex和Bison通常一起使用来构建编译器或解析器。Flex负责词法分析将输入文本分割成词法单元Bison则负责语法分析确定这些词法单元是如何根据文法规则关联的。Flex生成的词法分析器可以作为Bison生成的语法分析器的输入源从而实现完整的编译过程。 四、总结 Flex和Bison是Linux和Unix环境下强大的工具分别用于生成词法分析器和语法分析器。它们在编译器设计、文本处理等领域有着广泛的应用。Flex通过正则表达式进行词法分析而Bison则通过上下文无关文法进行语法分析。两者通常一起使用以构建完整的编译或解析过程。
http://www.tj-hxxt.cn/news/141343.html

相关文章:

  • 创意设计公司网站网站建设用到什么软件
  • 工程建设信息网站资质公告大专ui设计师工资一般多少
  • 大连鼎信网站建设网站域名怎么快速备案价格
  • 宿州企业官方网站建设大连网站建设方案咨询
  • vi设计概念google seo是什么意思
  • 北京网站建设优化用阿里巴巴店铺做公司网站怎么样
  • 网站是每年都要付费吗网站建设之数据信息的保密性
  • 淮南网络运营公司西安网站建设优化
  • 石家庄网站免费制作人力资源信息管理平台
  • 网站开发是前端还是后台wordpress主题极简
  • 用什么软件快速做网站视频直播间话术
  • 网站空间购买北京网站设计专业实验室建设
  • 免费建英文网站新浪体育世界杯
  • 开网店的基础知识网站seo外链接
  • 巴中免费网站建设高师本科化学实验教学体系建设与创新型人才培养 教学成果奖申报网站
  • 哪个网站能免费下载电影广告公司电话号码
  • 政务大厅网站建设管理制度快速开发小程序公司
  • 公司注册信息查询重庆seo搜索引擎优化平台
  • 如何做招聘网站的评估做网站能注册账号的
  • 网站建设 万户建站跨境浏览网站
  • app那个网站开发比较好阿里巴巴网页设计教程
  • 网络推广 网站制作电影网站源码系统
  • 微信开发网站建设西安公司最新招聘信息
  • wordpress网站跳转nginx国外酷炫网站
  • 备案 网站建设方案书怎么写qq群引流推广平台免费
  • 建怎么网站比较赚钱高端礼品定制网站
  • 怎么自己做五合一网站wordpress文字
  • 哪家网站建设公司好网站建设市场价
  • 永川区做网站WordPress微信签到
  • 网站空间不能读数据库搜索引擎关键词广告