double_recursive_macro_call.pl 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. use vars qw(%result_texis %result_texts %result_trees %result_errors
  2. %result_indices %result_sectioning %result_nodes %result_menus
  3. %result_floats %result_converted %result_converted_errors
  4. %result_elements %result_directions_text);
  5. use utf8;
  6. $result_trees{'double_recursive_macro_call'} = {
  7. 'contents' => [
  8. {
  9. 'parent' => {},
  10. 'text' => '
  11. ',
  12. 'type' => 'empty_line'
  13. },
  14. {
  15. 'args' => [
  16. {
  17. 'parent' => {},
  18. 'text' => 'macone',
  19. 'type' => 'macro_name'
  20. },
  21. {
  22. 'parent' => {},
  23. 'text' => 'arg',
  24. 'type' => 'macro_arg'
  25. }
  26. ],
  27. 'cmdname' => 'macro',
  28. 'contents' => [
  29. {
  30. 'parent' => {},
  31. 'text' => '@mactwo{}',
  32. 'type' => 'raw'
  33. },
  34. {
  35. 'parent' => {},
  36. 'text' => '
  37. ',
  38. 'type' => 'last_raw_newline'
  39. }
  40. ],
  41. 'extra' => {
  42. 'arg_line' => ' macone {arg}
  43. '
  44. },
  45. 'line_nr' => {
  46. 'file_name' => '',
  47. 'line_nr' => 2,
  48. 'macro' => ''
  49. },
  50. 'parent' => {}
  51. },
  52. {
  53. 'extra' => {
  54. 'command' => {}
  55. },
  56. 'parent' => {},
  57. 'text' => '
  58. ',
  59. 'type' => 'empty_line_after_command'
  60. },
  61. {
  62. 'parent' => {},
  63. 'text' => '
  64. ',
  65. 'type' => 'empty_line'
  66. },
  67. {
  68. 'args' => [
  69. {
  70. 'parent' => {},
  71. 'text' => 'mactwo',
  72. 'type' => 'macro_name'
  73. },
  74. {
  75. 'parent' => {},
  76. 'text' => 'arg',
  77. 'type' => 'macro_arg'
  78. }
  79. ],
  80. 'cmdname' => 'macro',
  81. 'contents' => [
  82. {
  83. 'parent' => {},
  84. 'text' => '@macone{}',
  85. 'type' => 'raw'
  86. },
  87. {
  88. 'parent' => {},
  89. 'text' => '
  90. ',
  91. 'type' => 'last_raw_newline'
  92. }
  93. ],
  94. 'extra' => {
  95. 'arg_line' => ' mactwo{arg}
  96. '
  97. },
  98. 'line_nr' => {
  99. 'file_name' => '',
  100. 'line_nr' => 6,
  101. 'macro' => ''
  102. },
  103. 'parent' => {}
  104. },
  105. {
  106. 'extra' => {
  107. 'command' => {}
  108. },
  109. 'parent' => {},
  110. 'text' => '
  111. ',
  112. 'type' => 'empty_line_after_command'
  113. },
  114. {
  115. 'parent' => {},
  116. 'text' => '
  117. ',
  118. 'type' => 'empty_line'
  119. },
  120. {
  121. 'parent' => {},
  122. 'text' => '
  123. ',
  124. 'type' => 'empty_line'
  125. }
  126. ],
  127. 'type' => 'text_root'
  128. };
  129. $result_trees{'double_recursive_macro_call'}{'contents'}[0]{'parent'} = $result_trees{'double_recursive_macro_call'};
  130. $result_trees{'double_recursive_macro_call'}{'contents'}[1]{'args'}[0]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[1];
  131. $result_trees{'double_recursive_macro_call'}{'contents'}[1]{'args'}[1]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[1];
  132. $result_trees{'double_recursive_macro_call'}{'contents'}[1]{'contents'}[0]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[1];
  133. $result_trees{'double_recursive_macro_call'}{'contents'}[1]{'contents'}[1]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[1];
  134. $result_trees{'double_recursive_macro_call'}{'contents'}[1]{'parent'} = $result_trees{'double_recursive_macro_call'};
  135. $result_trees{'double_recursive_macro_call'}{'contents'}[2]{'extra'}{'command'} = $result_trees{'double_recursive_macro_call'}{'contents'}[1];
  136. $result_trees{'double_recursive_macro_call'}{'contents'}[2]{'parent'} = $result_trees{'double_recursive_macro_call'};
  137. $result_trees{'double_recursive_macro_call'}{'contents'}[3]{'parent'} = $result_trees{'double_recursive_macro_call'};
  138. $result_trees{'double_recursive_macro_call'}{'contents'}[4]{'args'}[0]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[4];
  139. $result_trees{'double_recursive_macro_call'}{'contents'}[4]{'args'}[1]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[4];
  140. $result_trees{'double_recursive_macro_call'}{'contents'}[4]{'contents'}[0]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[4];
  141. $result_trees{'double_recursive_macro_call'}{'contents'}[4]{'contents'}[1]{'parent'} = $result_trees{'double_recursive_macro_call'}{'contents'}[4];
  142. $result_trees{'double_recursive_macro_call'}{'contents'}[4]{'parent'} = $result_trees{'double_recursive_macro_call'};
  143. $result_trees{'double_recursive_macro_call'}{'contents'}[5]{'extra'}{'command'} = $result_trees{'double_recursive_macro_call'}{'contents'}[4];
  144. $result_trees{'double_recursive_macro_call'}{'contents'}[5]{'parent'} = $result_trees{'double_recursive_macro_call'};
  145. $result_trees{'double_recursive_macro_call'}{'contents'}[6]{'parent'} = $result_trees{'double_recursive_macro_call'};
  146. $result_trees{'double_recursive_macro_call'}{'contents'}[7]{'parent'} = $result_trees{'double_recursive_macro_call'};
  147. $result_texis{'double_recursive_macro_call'} = '
  148. @macro macone {arg}
  149. @mactwo{}
  150. @end macro
  151. @macro mactwo{arg}
  152. @macone{}
  153. @end macro
  154. ';
  155. $result_texts{'double_recursive_macro_call'} = '
  156. ';
  157. $result_errors{'double_recursive_macro_call'} = [
  158. {
  159. 'error_line' => ':10: recursive call of macro mactwo is not allowed; use @rmacro if needed (possibly involving @macone)
  160. ',
  161. 'file_name' => '',
  162. 'line_nr' => 10,
  163. 'macro' => 'macone',
  164. 'text' => 'recursive call of macro mactwo is not allowed; use @rmacro if needed',
  165. 'type' => 'error'
  166. }
  167. ];
  168. 1;