为了说明我的问题,
TEST="Hi my name is John"
OUTP=`echo $TEST | awk '{print $3}'`
echo $OUTP
Run Code Online (Sandbox Code Playgroud)
我期望这样做是将$ TEST变量传递给awk并将第三个字存储到$ OUTP中.
相反,我得到"嗨:没找到",好像它期望输入是一个文件.但是,如果我只传递一个字符串而不是一个变量,则没有问题.什么是最好的方法来解决这个问题?
谢谢大家!
在查看好的C#解析器生成器的帖子之后,我偶然发现了GPLEX和GPPG.我想使用GPLEX为GPPG生成令牌以解析和创建树(类似于lex/yacc关系).但是,我似乎无法找到这两者如何相互作用的例子.使用lex/yacc,lex返回由yacc定义的标记,并且可以在yylval中存储值.如何在GPLEX/GPPG中完成此操作(文档中缺少这些内容)?
附件是我想要转换为GPLEX的lex代码:
%{
#include <stdio.h>
#include "y.tab.h"
%}
%%
[Oo][Rr] return OR;
[Aa][Nn][Dd] return AND;
[Nn][Oo][Tt] return NOT;
[A-Za-z][A-Za-z0-9_]* yylval=yytext; return ID;
%%
Run Code Online (Sandbox Code Playgroud)
谢谢!安德鲁
我不确定如何在C中声明一个全局联合.下面是我的代码(所有这些都在main之外).
typedef union{
int iVal;
char* cVal;
} DictVal;
struct DictEntry{
struct DictEntry* next;
char* key;
DictVal val;
int cTag;
};
DictVal find(char* key);
int main()
{
struct DictEntry dictionary[101];
//printf("Hello");
}
DictValue find(char* key)
{
DictVal a;
a.iVal = 3;
return a;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我收到错误:
test.c:35: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘find’.
Run Code Online (Sandbox Code Playgroud)
如何以一种我可以将它用作函数的返回类型的方式声明联合?
先感谢您!安德鲁