그것에서 얻는 정보, 그리고 내가 가장 끔찍한 시간 그것으로부터 정보를 얻는 것 같다. 온라인에서 쉽게 구할 수있는 정보는 단순한 예제가없는 것처럼 보입니다. 여기서 입력 파일이 제대로 파싱 출력는 구문 분석 :: RecDescent - 나는 펄의 <a href="http://search.cpan.org/perldoc?Parse::RecDescent" rel="nofollow noreferrer">Parse::RecDescent</a> 파서 함께 일하고 있어요
PS W:\developers\paulnathan\rd_dir> perl parser.pl testfile
$VAR1 = 4;
$VAR1 = 8;
PS W:\developers\paulnathan\rd_dir>
가
event_function: object_list ':' event_list ';'
<defer:
{ #item is a special character with Parse::Recdescent.
print Dumper($item{object_list});
$return = $item[1];
}
>
| object_list ':' ';'
<defer:
{
print Dumper($item{object_list});
$return = $item[1];
}
>
: 여기
코드이다.stuff, stuff2: pre-operation event = {foo1, foo2};
이 는 "재료", "stuff2"로 키잉 해시를 출력한다.
생각하십니까?
편집 :
object_list :
object ',' object_list
<defer:
{
my $retval =();
$retval = ::merge_hash_refs($item[1], $item[3]);
$return = $retval;
}
>
| object
<defer:
{
#print Dumper($item{object});
$return = $item{object};
}
>
object :
'/' /[a-z0-9_][a-z0-9_]*/ '/' '...'
<defer:
{
$::objects->{$item[2]} = "stuff";
$return = $::objects;
}
>
| /[a-z0-9_][a-z0-9_]*/
<defer:
{
$::objects->{$item[1]} = "stuff";
$return = $::objects;
}
>
EDIT2 : 단지의 경우에 Merge_hash_refs. :-)
#takes two hash references.
sub merge_hash_refs {
my($ref1, $ref2) = @_;
my $retref =();
while(my ($k, $v) = each %$ref1) {
$retref->{$k} = $v;
}
while(my ($k, $v) = each %$ref2) {
$retref->{$k} = $v;
}
return $retref;
}
을, 때로는 마지막 요소 뒤에 가리키는 반복자를 떠나 해시 동안 안전하지 않은에 비어있는 것처럼 만드는 귀여운 작은 버그가 있었다 object_list 및 event_list 규칙의 내용을 표시 할 수 있습니까? –
Event_list가 아무것도 반환하지 않습니다. object_list가 추가되었습니다. –