FLEX到底如何正确的使用全局变量

本文介绍如何在MXML和ActionScript(AS)文件之间传递配置信息,如WEB服务器地址等,通过设置MXML中的变量为public,并在AS文件中引入必要的包,实现跨文件的数据共享。

如下需求:在主MXML中读取了配置文件内容,在某个AS文件中需要用到这个内容,例如WEB服务器的地址,按如下步骤:
一.在MXML中将变量定义为public 型的
二.在需要的AS中引如下包import mx.core.Applicaton;
三.在该AS中就可以按如下方法“Application.application.变量名
”使用了

注意,其中第二步非常重要,记得当时我自己在网上搜索时,好多答案都没有这一步,无语。。。

 

<think>嗯,用户想了解如何使用Flex词法分析器,包括教程、示例和语法。我需要根据提供的引用内容来回答,同时遵循系统级指令。首先,用户的问题涉及Flex的安装、基本结构、语法规则和示例,可能还需要相关的问题生成。 首先,我需要确认用户提供的引用内容。引用1提到Flex的安装和使用,Lex的语法格式分为定义、规则和用户子程序。引用2解释了Lex的作用,生成词法分析器的C代码,使用正则表达式,处理.l文件生成lex.yy.c。引用3详细说明了实验要求,包括关键字、符号、空格处理、注释等。 接下来,用户需要教程和示例,所以应该分步骤讲解,从安装开始,然后介绍Lex文件的结构,各部分的作用,比如定义部分的正则表达式,规则部分的匹配动作,以及用户子程序的main函数等。需要给出一个简单的示例,比如统计单词和行数,以及更复杂的示例,如处理C-Minus-f语言的词法,引用中的实验要求可以作为例子。 要注意使用正确的LaTeX格式,行内公式用$...$,独立公式用$$...$$,但当前问题可能不涉及数学公式,但如果有变量或正则表达式可能需要用代码块或LaTeX。例如,正则表达式中的符号可能需要转义,但在代码块中可以直接显示。 需要确保回答结构清晰,分步骤说明,并且引用对应的引用内容,比如在讲安装时引用[^1],在文件结构时引用和[^2],在处理注释和空格时引用[^3]。 生成的相关问题可能涉及性能优化、错误处理、复杂正则表达式等,需要根据引用内容中的知识点来提出,比如如何添加注释处理,如何处理嵌套注释(虽然引用3提到不能嵌套),或者如何处理关键字和标识符的区分。 最后,检查是否符合所有系统指令:使用中文,正确引用,生成相关问题,代码块使用正确语法,没有使用Markdown格式,段落结尾自然添加引用标识。</think>### Flex词法分析器使用教程 #### 一、Flex基础概念 Flex(Fast Lexical Analyzer Generator)是用于生成词法分析器的工具,通过定义正则表达式和匹配动作,将输入的字符流转换为单词序列(Token)。其核心文件扩展名为`.l`,编译后生成C语言代码`lex.yy.c`[^2]。 #### 二、安装与环境配置 1. **Linux系统**:通过包管理器安装: ```bash sudo apt-get install flex ``` 2. **Windows系统**:使用Cygwin或MinGW环境安装Flex工具。 --- #### 三、Lex文件结构 Flex文件包含三部分,用`%%`分隔: ```lex %{ /* 定义部分:包含头文件、全局变量声明 */ %} /* 正则表达式定义(名字-模式) */ DIGIT [0-9] ID [a-zA-Z_][a-zA-Z0-9_]* %% /* 规则部分:模式-动作 */ {DIGIT}+ { printf("NUM: %s\n", yytext); } {ID} { printf("ID: %s\n", yytext); } "/*"(.|\n)*"*/" /* 处理注释 */ %% /* 用户子程序:main函数等 */ int main() { yylex(); return 0; } ``` --- #### 四、关键语法规则 1. **正则表达式**: - `[a-z]`匹配小写字母,`[0-9]+`匹配连续数字 - `\*`转义特殊符号,`{ID}`引用预定义模式[^3] 2. **动作代码**: - `yytext`存储匹配的字符串,`yyleng`记录长度 - 通过`return TOKEN_TYPE`返回标记类型(需配合YACC使用) --- #### 五、完整示例:统计单词和行数 ```lex %{ int word_count = 0, line_count = 0; %} WORD [a-zA-Z]+ NEWLINE \n %% {WORD} { word_count++; } {NEWLINE} { line_count++; } . /* 忽略其他字符 */ %% int main() { yylex(); printf("Words: %d\nLines: %d\n", word_count, line_count); return 0; } ``` 编译运行: ```bash flex example.l gcc lex.yy.c -o lexer ./lexer < input.txt ``` --- #### 六、进阶应用:C-Minus-f词法分析 处理关键字、运算符和注释(引用实验要求): ```lex %{ #include "tokens.h" // 自定义标记类型 %} KEYWORD if|while|do|break|real|true|false|int|char|bool|float SYMBOL "+"|"-"|"*"|"/"|"<"|"<="|">"|">="|"=="|"!="|"="|";"|","|"("|")"|"["|"]"|"{"|"}"|"/*"|"*/" %% {KEYWORD} { return KEYWORD; } {SYMBOL} { return OPERATOR; } "/*"(.|\n)*"*/" { /* 过滤注释 */ } [ \t\n]+ { /* 忽略空白 */ } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值