我希望能够使用flex/bison解析规则解析非空的,一个或多个元素,逗号分隔(以及可选的带括号的)列表.
一些例如可解析的列表:
等等
我使用以下规则来解析列表(最终结果是解析元素'顶级列表'),但它们在解析时似乎没有给出所需的结果(在提供有效列表时我得到语法错误).关于我如何设置它的任何建议?
cList : ELEMENT
{
...
}
| cList COMMA ELEMENT
{
...
}
;
topLevelList : LPAREN cList RPAREN
{
...
}
| cList
{
...
}
;
Run Code Online (Sandbox Code Playgroud) 关于以下代码的两个问题:
%h1 = {
'key1' => ( 1, 2, 3 ),
'key2' => ( 4, 5, 6 )
};
%h2 = {
'key1' => [ 1, 2, 3 ],
'key2' => [ 4, 5, 6 ]
};
print $(@h1{'key2'})[1];
Run Code Online (Sandbox Code Playgroud)
Q1:h1和h2有什么区别?请不要说'一个是列表的哈希和另一个数组的哈希'...相反,我想知道在使用方面的转换.
Q2:为什么$(@h1{'key2'})[1]print语句中的引用不能编译?这是我的想法:我想访问对应于'key2'的数组/列表:@h1{'key2'}.然后我想访问该列表/数组中索引1处的标量:$(@h1{'key2'})[1].为什么这是错的?这个变量引用的东西很混乱.