如何使用变量类型对此输入行进行标记,以便我可以决定保存信息的结构的大小?

Lou*_*s93 2 c regex unix bison flex-lexer

这是一个多部分问题.首先我的输入文件如下所示:

category Shoes brand:char[50],cost:int
category Shirts brand:char[20],cost:int
Run Code Online (Sandbox Code Playgroud)

我的问题是:

a.)如何:仅在类别名称之后拆分该行?Shoes或者Shirts在这些情况下.

b.)我如何编写我的Bison解析器,以便我确定char[30]将保存每行信息的结构的变量(例如)?

如果这些问题看起来过于局部化,我会很感激,如果我可以引导一些可以帮助我做同样事情的资源

aki*_*kim 5

遗漏的细节太多了.例如,"int"可以用作类别名称吗?您打算如何存储您解析的数据?

仍然,解析器的初始草图将是这样的:

%token CATEGORY "category"
       EQ       "="
       COLON    ":"
       COMMA    ","
       LBRA     "["
       RBRA     "]"
       INT      "int"
       CHAR     "char"
       ID
       NATURAL
;
%%    
categories:
  category
| categories category
;

category:
  "category" ID fields
;

fields:
  field
| fields "," field
;

field:
  ID ":" type
;

type:
  "char"
| "int"
| type "[" NATURAL "]"
;
Run Code Online (Sandbox Code Playgroud)

这对于扫描仪:

%%
"category"   return CATEGORY;
"="          return EQ;
":"          return COLON;
","          return COMMA;
"["          return LBRA;
"]"          return RBRA;
"int"        return INT;
"char"       return CHAR;
[a-zA-Z]+    return ID;
[0-9]+       return NATURAL;
[ \n\t]+     continue;
Run Code Online (Sandbox Code Playgroud)