You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Flex示例中使用myname2.lex?编译后输入内容咨询

Flex令牌替换程序的输入指南

嘿,别慌,我来帮你搞清楚这个Flex程序该输入啥~ 你的myname2.lex是个专门用来替换特定环境变量令牌的小工具,先把你的代码格式化后放在下面:

/*
* myname2.lex : 一个用于令牌替换的Flex示例程序
*/
%{
#include <stdio.h>
%}
%x STRING
%%
\"          ECHO; BEGIN(STRING);
<STRING>[^\"]* ECHO;
<STRING>\"  ECHO; BEGIN(INITIAL);
%NAME       { printf("%s",getenv("LOGNAME")); }
%HOST       { printf("%s",getenv("HOST")); }
%HOSTTYPE   { printf("%s",getenv("HOSTTYPE"));}
%HOME       { printf("%s",getenv("HOME")); }

可以输入的内容示例:

  • 纯令牌输入:直接敲入%NAME并回车,程序会输出你的系统登录用户名;敲入%HOME则会输出你的家目录路径
  • 混合文本与令牌:比如输入我的用户名是%NAME,当前主机是%HOST,程序会自动把令牌替换成对应的环境变量值,输出类似我的用户名是alice,当前主机是my-pc
  • 带引号的字符串:输入"这段内容里的%HOSTTYPE不会被替换哦",程序会原样输出整句话——因为进入STRING状态(引号内)后,只会回显内容,不会触发令牌替换规则

简单总结:除了双引号包裹的内容,其他地方的%NAME/%HOST/%HOSTTYPE/%HOME这些令牌都会被替换成对应的系统环境变量值,普通文本则会直接输出。

内容的提问来源于stack exchange,提问作者user1424739

火山引擎 最新活动