0
到How to tokenize String in Lex and Yacc但在這篇文章中我找的整數標記如何參照記號化SSA
當我在lex文件中獲取輸入
a_2 = _6 + b_3;
我想A_2作爲整數類型令牌,我怎麼能得到這個令牌下面是我的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);}
. ;
%%
這是在數字給一些二進制值
你需要把標識符作爲一個字符串,而不是一個整數。所以,你的語法可以仔細地訪問'yytext',或者你可以設置一個更復雜的'YYSTYPE',它有一個類型的聯合;整數的整數,以及標識符的字符串。 (順便說一句:您應該可以診斷何時放棄無法識別的輸入 - 「。」規則應該有一個標識何時被調用的動作。) –
SSA與這個問題有什麼關係? – leppie
您是否試圖從令牌中解析出整數(例如a_9 => 9)並將其存儲在yylval中或保留原始字符串標記並將其放入yylval中? – emsworth