gpt4 book ai didi

c - 如何标记 SSA

转载 作者:行者123 更新时间:2023-11-30 17:36:26 26 4
gpt4 key购买 nike

引用How to tokenize String in Lex and Yacc但在这篇文章中我正在寻找整数 token

当我收到输入时

a_2 = _6 + b_3;

在lex文件中我想获取a_2作为整数类型 token ,我如何获取这个 token 下面是我的lex文件

 %{
/*
parser for ssa;
*/

#include<stdio.h>
#include<stdlib.h>
#include"y.tab.h"


%}
%%
[\t]+ ;
\n ;



"if" printf("first input\n");
"else" return(op);
"=" return(equal);
"+" return(op);
"*" return(op);
"-" return(op);

[\<][b][b][ ]+[1-9][\>] {return(bblock);}

([[_][a-z]])|([a-z][_][0-9]+)|([0-9]+) { yylval=atoi(yytext); return(var);}

. ;




%%

这给出了一些二进制值

最佳答案

这是一个简单但完整的示例,展示了使用 union (yylval) 处理整数和字符串的方法。请注意,我可能没有理解您的所有规则/正则表达式要求,但这应该可以帮助您入门。

词法分析器文件:example.l

%{
#include "y.tab.h"
%}
SSAINTEGER [a-z\_0-9]*\_[0-9]+
%option noyywrap
%%
[0-9]+ { yylval.number = atoi(yytext); return NUMBER; }
{SSAINTEGER} { yylval.string = strdup(yytext); return SSANUMBER; }
[ \t\n]+ /* eat up whitespace */
%%

解析器文件 example.y

%{
#include<stdio.h>
void yyerror (char const *s) {
fprintf (stderr, "%s\n", s);
}
%}
%union {
char * string;
int number;
}
%type <string> SSANUMBER
%type <number> NUMBER
%token NUMBER SSANUMBER
%%

myinputs: myinput
| myinput myinputs

myinput : NUMBER { printf("Number: %d\n", $1); }
| SSANUMBER { printf("SSA Number: %s\n", $1); }
;
%%
int main()
{
return yyparse();
}

关于c - 如何标记 SSA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22679444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com