我正在使用 flex 和 bison 编写语义分析器。在那里,我有一个矩阵文字,类似于 [1,2,3;3,4;5]。假设它们是整数。我有以下规则:
在弹性文件中:
int {yylval.type_id.Type=1;return tINTTYPE;}
在野牛文件中:
char m[80]; //to keep the value of matrix literal
%union semrec
{
struct
{
int Type;
char *id;
}type_id;
}
matrixLit : '[' row ';' rows ']'
row : value
| value ',' row
rows : row
| row ';' rows
value : tINT {$$.id=$1.id;}
| tREAL {$$.id=$1.id;}
| tIDENT {$$.id=$1.id;}
通过使用这些,我试图获取矩阵文字的值。例如,如果矩阵文字是 [1;2;3,4;5,6],我尝试得到 1;2;3,4;5,6。我尝试使用 $$.id=$1.id 和 strcat(m, $1.id)、strcpy(m,$1.id) 等,但无论我做什么,我都无法按此顺序获取值。我得到类似 4,2;1;3,5,6 的东西。谁能帮我这个?
谢谢