Higher-Order Perl 8章
地道に理解しながら。
my $parser = make_parser_for_grammer 'expression',
{
expression => [['INT', '+', 'expression'],
['INT', '*', 'expression'],
['(', 'expression', ')'],
['INT'],
],
},
['(', 'INT', '*', '(', 'INT', '+', 'INT', ')', ')']
;
$childrenの$productionの@childをprint
INT,+,expression
INT,*,expression
(,expression,)
INT
##
(,INT,+,expression,)
(,INT,*,expression,)
(,(,expression,),)
(,INT,)
##
(,INT,*,INT,+,expression,)
(,INT,*,INT,*,expression,)
(,INT,*,(,expression,),)
(,INT,*,INT,)
##
(,INT,*,(,INT,+,expression,),)
(,INT,*,(,INT,*,expression,),)
(,INT,*,(,(,expression,),),)
(,INT,*,(,INT,),)
##
(,INT,*,(,INT,+,INT,+,expression,),)
(,INT,*,(,INT,+,INT,*,expression,),)
(,INT,*,(,INT,+,(,expression,),),)
(,INT,*,(,INT,+,INT,),)
childrenでとりあえずgrammarから生成できる子を生成しといてis_interestingでフィルタリング(DFS)
Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,588 (2005-05-30)
通常24時間以内に発送
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,588 (2005-05-30)
通常24時間以内に発送
8章から突然難易度が上がる気がする。