我试图在客户端和服务器之间建立一个Request-response消息序列。 为解析消息我使用flex和bison语法。 我有一个关于重用不同语法规则的问题。 例如,如果我有处理请求的语法
req_message:
request_message
|response_message
|error
;
请求消息是
request_message:
|request_header_list request_hdr
和request_hdr是
request_hdr:
accept
|accept_language
|bandwidth
|user_agent
|session
|cseq
|cache_control
..
;
类似的回应我有一个语法
response_header:
cseq
|session
|range
|public
|server
|content_type
..
;
为解析cseq
,我只定义了一条规则。在解析请求时,该规则正常工作。但是在解析响应时,规则没有显示出来。有什么相似的,同样的规则不能用于不同的语法吗?为什么它可以满足要求而不是响应?在lex方面,我发现解析lexims没有问题,它能够将cseq token
返回到yacc
答案 0 :(得分:0)
如果没有看到更多的yacc规格,诊断问题有点困难。特别是,查看response_message
的作品(语法规则)会很有帮助。但是,即使没有这些信息,我也注意到您的命名不一致。您有request_hdr
但response_header
。这是故意的吗?