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]将保存每行信息的结构的变量(例如)?
如果这些问题看起来过于局部化,我会很感激,如果我可以引导一些可以帮助我做同样事情的资源
遗漏的细节太多了.例如,"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)