Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 900.98 KB | None | 0 0
  1. Running transformer pass 'apply_includes'
  2. Running transformer pass 'rewrite_namespaces'
  3. Running transformer pass 'elide_groupings'
  4. Running transformer pass 'fold_constants'
  5. Running transformer pass 'elide_branches'
  6. Running transformer pass 'strip_seps'
  7. Running transformer pass 'predefine_types'
  8. Running transformer pass 'define_types'
  9.  
  10. FileNode: (N_Statements=28)
  11. |0- FileNode: (N_Statements=99)
  12. |0- SepExpr (Consumed=1)
  13. |1- IntrinsicExpr: '@declare_c_func("printf", "int", "(...)")@'
  14. |2- SepExpr (Consumed=1)
  15. |3- IntrinsicExpr: '@declare_c_func("puts", "int", "(i8*)")@'
  16. |4- SepExpr (Consumed=1)
  17. |5- IntrinsicExpr: '@declare_c_func("system", "int", "(i8*)")@'
  18. |6- SepExpr (Consumed=1)
  19. |7- IntrinsicExpr: '@declare_c_func("sprintf", "int", "(...)")@'
  20. |8- SepExpr (Consumed=1)
  21. |9- IntrinsicExpr: '@declare_c_func("scanf", "int", "(...)")@'
  22. |10- SepExpr (Consumed=1)
  23. |11- IntrinsicExpr: '@declare_c_func("malloc", "ptr", "(i32)")@'
  24. |12- SepExpr (Consumed=1)
  25. |13- IntrinsicExpr: '@declare_c_func("usleep", "void", "(i32)")@'
  26. |14- SepExpr (Consumed=1)
  27. |15- IntrinsicExpr: '@declare_c_func("realloc", "ptr", "(i8*, i32)")@'
  28. |16- SepExpr (Consumed=1)
  29. |17- IntrinsicExpr: '@declare_c_func("strcat", "cstr", "(i8*, i8*)")@'
  30. |18- SepExpr (Consumed=1)
  31. |19- IntrinsicExpr: '@declare_c_func("memcpy", "void", "(i8*, i8*, i32)")@'
  32. |20- SepExpr (Consumed=1)
  33. |21- IntrinsicExpr: '@declare_c_func("memset", "void", "(i8*, i32, i32)")@'
  34. |22- SepExpr (Consumed=1)
  35. |23- IntrinsicExpr: '@declare_c_func("strcpy", "cstr", "(i8*, i8*)")@'
  36. |24- SepExpr (Consumed=1)
  37. |25- IntrinsicExpr: '@declare_c_func("strncpy", "void", "(i8*, i8*, i32)")@'
  38. |26- SepExpr (Consumed=1)
  39. |27- IntrinsicExpr: '@declare_c_func("strlen", "int", "(i8*)")@'
  40. |28- SepExpr (Consumed=1)
  41. |29- IntrinsicExpr: '@declare_c_func("atoi", "int", "(i8*)")@'
  42. |30- SepExpr (Consumed=1)
  43. |31- IntrinsicExpr: '@declare_c_func("strtod", "float", "(i8*, i8*)")@'
  44. |32- SepExpr (Consumed=1)
  45. |33- IntrinsicExpr: '@declare_c_func("strcmp", "int", "(i8*, i8*)")@'
  46. |34- SepExpr (Consumed=1)
  47. |35- IntrinsicExpr: '@declare_c_func("strncmp", "int", "(i8*, i8*, i32)")@'
  48. |36- SepExpr (Consumed=1)
  49. |37- IntrinsicExpr: '@declare_c_func("free", "void", "(i8*)")@'
  50. |38- SepExpr (Consumed=1)
  51. |39- IntrinsicExpr: '@declare_c_func("exit", "int", "(i32)")@'
  52. |40- SepExpr (Consumed=1)
  53. |41- IntrinsicExpr: '@declare_c_func("clock", "long", "()")@'
  54. |42- SepExpr (Consumed=2)
  55. |43- FunctionDecl:
  56. |- Head: FunctionDeclHead: Name='cstr:__add__' Type='cstr' Nargs=2
  57. |0- cstr a
  58. \1- cstr b
  59. |0- AssignmentExpr (Operator='=')
  60. |- LHS: DeclExpr: 'cstr result'
  61. \- RHS: CallExpr:
  62. |- Method: NameExpr: 'malloc'
  63. \- Arguments: (Len=1)
  64. \0- BinOpExpr (Operator='+')
  65. |- LHS: CallExpr:
  66. |- Method: NameExpr: 'strlen'
  67. \- Arguments: (Len=1)
  68. \0- NameExpr: 'a'
  69. \- RHS: BinOpExpr (Operator='+')
  70. |- LHS: CallExpr:
  71. |- Method: NameExpr: 'strlen'
  72. \- Arguments: (Len=1)
  73. \0- NameExpr: 'b'
  74. \- RHS: LiteralExpr: type=int, value=1
  75. |1- CallExpr:
  76. |- Method: NameExpr: 'strcpy'
  77. \- Arguments: (Len=2)
  78. |0- NameExpr: 'result'
  79. \1- NameExpr: 'a'
  80. |2- CallExpr:
  81. |- Method: NameExpr: 'strcat'
  82. \- Arguments: (Len=2)
  83. |0- NameExpr: 'result'
  84. \1- NameExpr: 'b'
  85. \3- ReturnExpr: NameExpr: 'result'
  86. |44- SepExpr (Consumed=2)
  87. |45- FunctionDecl:
  88. |- Head: FunctionDeclHead: Name='cstr:__mul__' Type='cstr' Nargs=2
  89. |0- cstr a
  90. \1- int b
  91. |0- AssignmentExpr (Operator='=')
  92. |- LHS: DeclExpr: 'int sz'
  93. \- RHS: BinOpExpr (Operator='*')
  94. |- LHS: CallExpr:
  95. |- Method: NameExpr: 'strlen'
  96. \- Arguments: (Len=1)
  97. \0- NameExpr: 'a'
  98. \- RHS: NameExpr: 'b'
  99. |1- AssignmentExpr (Operator='+=')
  100. |- LHS: NameExpr: 'sz'
  101. \- RHS: LiteralExpr: type=int, value=1
  102. |2- AssignmentExpr (Operator='=')
  103. |- LHS: DeclExpr: 'cstr result'
  104. \- RHS: CallExpr:
  105. |- Method: NameExpr: 'malloc'
  106. \- Arguments: (Len=1)
  107. \0- NameExpr: 'sz'
  108. |3- AssignmentExpr (Operator='=')
  109. |- LHS: DeclExpr: 'int idx'
  110. \- RHS: NameExpr: 'b'
  111. |4- WhileExpr:
  112. |- Condition: BinOpExpr (Operator='>')
  113. |- LHS: NameExpr: 'b'
  114. \- RHS: LiteralExpr: type=int, value=0
  115. |- Body: BlockBody: (N_Statements=2)
  116. |0- AssignmentExpr (Operator='-=')
  117. |- LHS: NameExpr: 'b'
  118. \- RHS: LiteralExpr: type=int, value=1
  119. |1- CallExpr:
  120. |- Method: NameExpr: 'strcat'
  121. \- Arguments: (Len=2)
  122. |0- NameExpr: 'result'
  123. \1- NameExpr: 'a'
  124. \5- ReturnExpr: NameExpr: 'result'
  125. |46- SepExpr (Consumed=2)
  126. |47- FunctionDecl:
  127. |- Head: FunctionDeclHead: Name='bool:or' Type='bool' Nargs=2
  128. |0- bool a
  129. \1- bool b
  130. |0- IfExpr:
  131. |- Condition: NameExpr: 'a'
  132. |- Body: BlockBody: (N_Statements=1)
  133. |0- ReturnExpr: NameExpr: 'a'
  134. \1- ReturnExpr: NameExpr: 'b'
  135. |48- SepExpr (Consumed=2)
  136. |49- FunctionDecl:
  137. |- Head: FunctionDeclHead: Name='ptr:offset' Type='ptr' Nargs=2
  138. |0- ptr a
  139. \1- int b
  140. \0- ReturnExpr: CastExpr (Target='ptr')
  141. \- Value: BinOpExpr (Operator='+')
  142. |- LHS: CastExpr (Target='long')
  143. \- Value: NameExpr: 'a'
  144. \- RHS: CastExpr (Target='long')
  145. \- Value: NameExpr: 'b'
  146. |50- SepExpr (Consumed=2)
  147. |51- FunctionDecl:
  148. |- Head: FunctionDeclHead: Name='cstr:offset' Type='cstr' Nargs=2
  149. |0- cstr a
  150. \1- int b
  151. \0- ReturnExpr: CastExpr (Target='cstr')
  152. \- Value: CallExpr:
  153. |- Method: AccessorExpr (Mode=':')
  154. |- Object: CastExpr (Target='ptr')
  155. \- Value: NameExpr: 'a'
  156. \- Field: offset
  157. \- Arguments: (Len=1)
  158. \0- NameExpr: 'b'
  159. |52- SepExpr (Consumed=2)
  160. |53- FunctionDecl:
  161. |- Head: FunctionDeclHead: Name='cstr:__eq__' Type='bool' Nargs=2
  162. |0- cstr a
  163. \1- cstr b
  164. \0- ReturnExpr: BinOpExpr (Operator='==')
  165. |- LHS: CallExpr:
  166. |- Method: NameExpr: 'strcmp'
  167. \- Arguments: (Len=2)
  168. |0- NameExpr: 'a'
  169. \1- NameExpr: 'b'
  170. \- RHS: LiteralExpr: type=int, value=0
  171. |54- SepExpr (Consumed=2)
  172. |55- FunctionDecl:
  173. |- Head: FunctionDeclHead: Name='cstr:__ne__' Type='bool' Nargs=2
  174. |0- cstr a
  175. \1- cstr b
  176. \0- ReturnExpr: BinOpExpr (Operator='!=')
  177. |- LHS: CallExpr:
  178. |- Method: NameExpr: 'strcmp'
  179. \- Arguments: (Len=2)
  180. |0- NameExpr: 'a'
  181. \1- NameExpr: 'b'
  182. \- RHS: LiteralExpr: type=int, value=0
  183. |56- SepExpr (Consumed=2)
  184. |57- FunctionDecl:
  185. |- Head: FunctionDeclHead: Name='ptr:__eq__' Type='bool' Nargs=2
  186. |0- ptr a
  187. \1- ptr b
  188. \0- ReturnExpr: BinOpExpr (Operator='==')
  189. |- LHS: CastExpr (Target='long')
  190. \- Value: NameExpr: 'a'
  191. \- RHS: CastExpr (Target='long')
  192. \- Value: NameExpr: 'b'
  193. |58- SepExpr (Consumed=2)
  194. |59- FunctionDecl:
  195. |- Head: FunctionDeclHead: Name='ptr:__ne__' Type='bool' Nargs=2
  196. |0- ptr a
  197. \1- ptr b
  198. \0- ReturnExpr: BinOpExpr (Operator='!=')
  199. |- LHS: CastExpr (Target='long')
  200. \- Value: NameExpr: 'a'
  201. \- RHS: CastExpr (Target='long')
  202. \- Value: NameExpr: 'b'
  203. |60- SepExpr (Consumed=2)
  204. |61- FunctionDecl:
  205. |- Head: FunctionDeclHead: Name='cstr:free' Type='void' Nargs=1
  206. \0- cstr s
  207. |0- CallExpr:
  208. |- Method: NameExpr: 'free'
  209. \- Arguments: (Len=1)
  210. \0- NameExpr: 's'
  211. \1- ReturnExpr: <void>
  212. |62- SepExpr (Consumed=2)
  213. |63- FunctionDecl:
  214. |- Head: FunctionDeclHead: Name='cstr:copy' Type='cstr' Nargs=1
  215. \0- cstr s
  216. |0- AssignmentExpr (Operator='=')
  217. |- LHS: DeclExpr: 'cstr n'
  218. \- RHS: CallExpr:
  219. |- Method: NameExpr: 'malloc'
  220. \- Arguments: (Len=1)
  221. \0- BinOpExpr (Operator='+')
  222. |- LHS: CallExpr:
  223. |- Method: AccessorExpr (Mode=':')
  224. |- Object: NameExpr: 's'
  225. \- Field: len
  226. \- Arguments: (Len=0)
  227. \- RHS: LiteralExpr: type=int, value=1
  228. |1- CallExpr:
  229. |- Method: NameExpr: 'strcat'
  230. \- Arguments: (Len=2)
  231. |0- NameExpr: 'n'
  232. \1- NameExpr: 's'
  233. \2- ReturnExpr: NameExpr: 'n'
  234. |64- SepExpr (Consumed=2)
  235. |65- FunctionDecl:
  236. |- Head: FunctionDeclHead: Name='cstr:int' Type='int' Nargs=1
  237. \0- cstr s
  238. \0- ReturnExpr: CallExpr:
  239. |- Method: NameExpr: 'atoi'
  240. \- Arguments: (Len=1)
  241. \0- NameExpr: 's'
  242. |66- SepExpr (Consumed=2)
  243. |67- FunctionDecl:
  244. |- Head: FunctionDeclHead: Name='cstr:float' Type='float' Nargs=1
  245. \0- cstr s
  246. \0- ReturnExpr: CallExpr:
  247. |- Method: NameExpr: 'strtod'
  248. \- Arguments: (Len=2)
  249. |0- NameExpr: 's'
  250. \1- LiteralExpr: type=ptr, value=0
  251. |68- SepExpr (Consumed=2)
  252. |69- FunctionDecl:
  253. |- Head: FunctionDeclHead: Name='byte:in' Type='bool' Nargs=2
  254. |0- byte b
  255. \1- cstr s
  256. |0- AssignmentExpr (Operator='=')
  257. |- LHS: DeclExpr: 'int i'
  258. \- RHS: LiteralExpr: type=int, value=0
  259. |1- AssignmentExpr (Operator='=')
  260. |- LHS: DeclExpr: 'int len'
  261. \- RHS: CallExpr:
  262. |- Method: AccessorExpr (Mode=':')
  263. |- Object: NameExpr: 's'
  264. \- Field: len
  265. \- Arguments: (Len=0)
  266. |2- WhileExpr:
  267. |- Condition: BinOpExpr (Operator='<')
  268. |- LHS: NameExpr: 'i'
  269. \- RHS: NameExpr: 'len'
  270. |- Body: BlockBody: (N_Statements=2)
  271. |0- IfExpr:
  272. |- Condition: BinOpExpr (Operator='==')
  273. |- LHS: IndexExpr
  274. |- Array: NameExpr: 's'
  275. \- Value: NameExpr: 'i'
  276. \- RHS: NameExpr: 'b'
  277. |- Body: BlockBody: (N_Statements=1)
  278. |0- ReturnExpr: CastExpr (Target='bool')
  279. \- Value: LiteralExpr: type=int, value=1
  280. |1- AssignmentExpr (Operator='+=')
  281. |- LHS: NameExpr: 'i'
  282. \- RHS: LiteralExpr: type=int, value=1
  283. \3- ReturnExpr: CastExpr (Target='bool')
  284. \- Value: LiteralExpr: type=int, value=0
  285. |70- SepExpr (Consumed=2)
  286. |71- FunctionDecl:
  287. |- Head: FunctionDeclHead: Name='cstr:len' Type='int' Nargs=1
  288. \0- cstr s
  289. \0- ReturnExpr: CallExpr:
  290. |- Method: NameExpr: 'strlen'
  291. \- Arguments: (Len=1)
  292. \0- NameExpr: 's'
  293. |72- SepExpr (Consumed=2)
  294. |73- FunctionDecl:
  295. |- Head: FunctionDeclHead: Name='cstr:substr' Type='cstr' Nargs=3
  296. |0- cstr s
  297. |1- int start
  298. \2- int len
  299. |0- AssignmentExpr (Operator='=')
  300. |- LHS: DeclExpr: 'cstr res'
  301. \- RHS: CastExpr (Target='cstr')
  302. \- Value: CallExpr:
  303. |- Method: NameExpr: 'malloc'
  304. \- Arguments: (Len=1)
  305. \0- BinOpExpr (Operator='+')
  306. |- LHS: NameExpr: 'len'
  307. \- RHS: LiteralExpr: type=int, value=1
  308. |1- CallExpr:
  309. |- Method: NameExpr: 'strncpy'
  310. \- Arguments: (Len=3)
  311. |0- NameExpr: 'res'
  312. |1- CallExpr:
  313. |- Method: AccessorExpr (Mode=':')
  314. |- Object: NameExpr: 's'
  315. \- Field: offset
  316. \- Arguments: (Len=1)
  317. \0- NameExpr: 'start'
  318. \2- NameExpr: 'len'
  319. |2- AssignmentExpr (Operator='=')
  320. |- LHS: IndexExpr
  321. |- Array: NameExpr: 'res'
  322. \- Value: NameExpr: 'len'
  323. \- RHS: CastExpr (Target='byte')
  324. \- Value: LiteralExpr: type=int, value=0
  325. \3- ReturnExpr: NameExpr: 'res'
  326. |74- SepExpr (Consumed=2)
  327. |75- FunctionDecl:
  328. |- Head: FunctionDeclHead: Name='cstr:equals_l' Type='bool' Nargs=3
  329. |0- cstr s
  330. |1- cstr o
  331. \2- int l
  332. |0- AssignmentExpr (Operator='=')
  333. |- LHS: DeclExpr: 'int i'
  334. \- RHS: LiteralExpr: type=int, value=0
  335. |1- WhileExpr:
  336. |- Condition: BinOpExpr (Operator='<')
  337. |- LHS: NameExpr: 'i'
  338. \- RHS: NameExpr: 'l'
  339. |- Body: BlockBody: (N_Statements=2)
  340. |0- IfExpr:
  341. |- Condition: BinOpExpr (Operator='!=')
  342. |- LHS: IndexExpr
  343. |- Array: NameExpr: 's'
  344. \- Value: NameExpr: 'i'
  345. \- RHS: IndexExpr
  346. |- Array: NameExpr: 'o'
  347. \- Value: NameExpr: 'i'
  348. |- Body: BlockBody: (N_Statements=1)
  349. |0- ReturnExpr: LiteralExpr: type=bool, value=0
  350. |1- AssignmentExpr (Operator='+=')
  351. |- LHS: NameExpr: 'i'
  352. \- RHS: LiteralExpr: type=int, value=1
  353. \2- ReturnExpr: LiteralExpr: type=bool, value=1
  354. |76- SepExpr (Consumed=2)
  355. |77- FunctionDecl:
  356. |- Head: FunctionDeclHead: Name='cstr:startswith' Type='bool' Nargs=2
  357. |0- cstr s
  358. \1- cstr o
  359. \0- ReturnExpr: CallExpr:
  360. |- Method: AccessorExpr (Mode=':')
  361. |- Object: NameExpr: 's'
  362. \- Field: equals_l
  363. \- Arguments: (Len=2)
  364. |0- NameExpr: 'o'
  365. \1- CallExpr:
  366. |- Method: AccessorExpr (Mode=':')
  367. |- Object: NameExpr: 'o'
  368. \- Field: len
  369. \- Arguments: (Len=0)
  370. |78- SepExpr (Consumed=2)
  371. |79- FunctionDecl:
  372. |- Head: FunctionDeclHead: Name='cstr:find' Type='int' Nargs=2
  373. |0- cstr s
  374. \1- cstr t
  375. |0- AssignmentExpr (Operator='=')
  376. |- LHS: DeclExpr: 'int pos'
  377. \- RHS: LiteralExpr: type=int, value=0
  378. |1- WhileExpr:
  379. |- Condition: BinOpExpr (Operator='<')
  380. |- LHS: NameExpr: 'pos'
  381. \- RHS: CallExpr:
  382. |- Method: AccessorExpr (Mode=':')
  383. |- Object: NameExpr: 's'
  384. \- Field: len
  385. \- Arguments: (Len=0)
  386. |- Body: BlockBody: (N_Statements=2)
  387. |0- IfExpr:
  388. |- Condition: BinOpExpr (Operator='==')
  389. |- LHS: CallExpr:
  390. |- Method: NameExpr: 'strncmp'
  391. \- Arguments: (Len=3)
  392. |0- NameExpr: 't'
  393. |1- CallExpr:
  394. |- Method: AccessorExpr (Mode=':')
  395. |- Object: NameExpr: 's'
  396. \- Field: offset
  397. \- Arguments: (Len=1)
  398. \0- NameExpr: 'pos'
  399. \2- CallExpr:
  400. |- Method: AccessorExpr (Mode=':')
  401. |- Object: NameExpr: 't'
  402. \- Field: len
  403. \- Arguments: (Len=0)
  404. \- RHS: LiteralExpr: type=int, value=0
  405. |- Body: BlockBody: (N_Statements=1)
  406. |0- ReturnExpr: NameExpr: 'pos'
  407. |1- AssignmentExpr (Operator='+=')
  408. |- LHS: NameExpr: 'pos'
  409. \- RHS: LiteralExpr: type=int, value=1
  410. \2- ReturnExpr: UnOpExpr (Operator='-')
  411. \- Value: LiteralExpr: type=int, value=1
  412. |80- SepExpr (Consumed=2)
  413. |81- FunctionDecl:
  414. |- Head: FunctionDeclHead: Name='cstr:contains' Type='bool' Nargs=2
  415. |0- cstr s
  416. \1- cstr t
  417. \0- ReturnExpr: BinOpExpr (Operator='!=')
  418. |- LHS: CallExpr:
  419. |- Method: AccessorExpr (Mode=':')
  420. |- Object: NameExpr: 's'
  421. \- Field: find
  422. \- Arguments: (Len=1)
  423. \0- NameExpr: 't'
  424. \- RHS: UnOpExpr (Operator='-')
  425. \- Value: LiteralExpr: type=int, value=1
  426. |82- SepExpr (Consumed=2)
  427. |83- FunctionDecl:
  428. |- Head: FunctionDeclHead: Name='int:str' Type='cstr' Nargs=1
  429. \0- int i
  430. |0- AssignmentExpr (Operator='=')
  431. |- LHS: DeclExpr: 'cstr str'
  432. \- RHS: CallExpr:
  433. |- Method: NameExpr: 'malloc'
  434. \- Arguments: (Len=1)
  435. \0- LiteralExpr: type=int, value=50
  436. |1- CallExpr:
  437. |- Method: NameExpr: 'sprintf'
  438. \- Arguments: (Len=3)
  439. |0- NameExpr: 'str'
  440. |1- LiteralExpr: type=cstr, value=%i
  441. \2- NameExpr: 'i'
  442. \2- ReturnExpr: NameExpr: 'str'
  443. |84- SepExpr (Consumed=2)
  444. |85- FunctionDecl:
  445. |- Head: FunctionDeclHead: Name='float:str' Type='cstr' Nargs=1
  446. \0- float i
  447. |0- AssignmentExpr (Operator='=')
  448. |- LHS: DeclExpr: 'cstr str'
  449. \- RHS: CallExpr:
  450. |- Method: NameExpr: 'malloc'
  451. \- Arguments: (Len=1)
  452. \0- LiteralExpr: type=int, value=50
  453. |1- CallExpr:
  454. |- Method: NameExpr: 'sprintf'
  455. \- Arguments: (Len=3)
  456. |0- NameExpr: 'str'
  457. |1- LiteralExpr: type=cstr, value=%f
  458. \2- NameExpr: 'i'
  459. \2- ReturnExpr: NameExpr: 'str'
  460. |86- SepExpr (Consumed=2)
  461. |87- FunctionDecl:
  462. |- Head: FunctionDeclHead: Name='bool:str' Type='cstr' Nargs=1
  463. \0- bool b
  464. \0- ReturnExpr: CallExpr:
  465. |- Method: AccessorExpr (Mode=':')
  466. |- Object: CastExpr (Target='int')
  467. \- Value: NameExpr: 'b'
  468. \- Field: str
  469. \- Arguments: (Len=0)
  470. |88- SepExpr (Consumed=2)
  471. |89- TypeDecl:
  472. |- Head: TypeDeclHead: `_STDReadIntBox` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  473. \- Body: TypeDeclBody: (N_Statements=1)
  474. \0- DeclExpr: 'int i'
  475. |90- SepExpr (Consumed=2)
  476. |91- FunctionDecl:
  477. |- Head: FunctionDeclHead: Name='read_int' Type='int' Nargs=1
  478. \0- cstr prompt
  479. |0- AssignmentExpr (Operator='=')
  480. |- LHS: DeclExpr: '_STDReadIntBox box'
  481. \- RHS: CastExpr (Target='_STDReadIntBox')
  482. \- Value: CallExpr:
  483. |- Method: NameExpr: 'malloc'
  484. \- Arguments: (Len=1)
  485. \0- IntrinsicExpr: '@sizeof(int)@'
  486. |1- CallExpr:
  487. |- Method: NameExpr: 'printf'
  488. \- Arguments: (Len=1)
  489. \0- NameExpr: 'prompt'
  490. |2- CallExpr:
  491. |- Method: NameExpr: 'scanf'
  492. \- Arguments: (Len=2)
  493. |0- LiteralExpr: type=cstr, value=%d
  494. \1- NameExpr: 'box'
  495. |3- AssignmentExpr (Operator='=')
  496. |- LHS: DeclExpr: 'int result'
  497. \- RHS: AccessorExpr (Mode='.')
  498. |- Object: NameExpr: 'box'
  499. \- Field: i
  500. |4- CallExpr:
  501. |- Method: NameExpr: 'free'
  502. \- Arguments: (Len=1)
  503. \0- NameExpr: 'box'
  504. \5- ReturnExpr: NameExpr: 'result'
  505. |92- SepExpr (Consumed=2)
  506. |93- FunctionDecl:
  507. |- Head: FunctionDeclHead: Name='read_line' Type='cstr' Nargs=1
  508. \0- cstr prompt
  509. |0- AssignmentExpr (Operator='=')
  510. |- LHS: DeclExpr: 'cstr result'
  511. \- RHS: CallExpr:
  512. |- Method: NameExpr: 'malloc'
  513. \- Arguments: (Len=1)
  514. \0- LiteralExpr: type=int, value=256
  515. |1- CallExpr:
  516. |- Method: NameExpr: 'printf'
  517. \- Arguments: (Len=1)
  518. \0- NameExpr: 'prompt'
  519. |2- CallExpr:
  520. |- Method: NameExpr: 'scanf'
  521. \- Arguments: (Len=2)
  522. |0- LiteralExpr: type=cstr, value=%s
  523. \1- NameExpr: 'result'
  524. \3- ReturnExpr: NameExpr: 'result'
  525. |94- SepExpr (Consumed=2)
  526. |95- FunctionDecl:
  527. |- Head: FunctionDeclHead: Name='ord' Type='int' Nargs=1
  528. \0- cstr c
  529. \0- ReturnExpr: CastExpr (Target='int')
  530. \- Value: IndexExpr
  531. |- Array: NameExpr: 'c'
  532. \- Value: LiteralExpr: type=int, value=0
  533. |96- SepExpr (Consumed=2)
  534. |97- FunctionDecl:
  535. |- Head: FunctionDeclHead: Name='prints' Type='void' Nargs=1
  536. \0- cstr s
  537. |0- CallExpr:
  538. |- Method: NameExpr: 'printf'
  539. \- Arguments: (Len=2)
  540. |0- LiteralExpr: type=cstr, value=%s
  541. \1- NameExpr: 's'
  542. \1- ReturnExpr: <void>
  543. |98- SepExpr (Consumed=1)
  544. |1- FileNode: (N_Statements=15)
  545. |0- SepExpr (Consumed=1)
  546. |1- IntrinsicExpr: '@declare_c_func("fopen", "ptr", "(i8*, i8*)")@'
  547. |2- SepExpr (Consumed=2)
  548. |3- IntrinsicExpr: '@declare_c_func("fprintf", "void", "(...)")@'
  549. |4- SepExpr (Consumed=2)
  550. |5- IntrinsicExpr: '@declare_c_func("fclose", "void", "(i8*)")@'
  551. |6- SepExpr (Consumed=2)
  552. |7- IntrinsicExpr: '@declare_c_func("fflush", "void", "(i8*)")@'
  553. |8- SepExpr (Consumed=2)
  554. |9- IntrinsicExpr: '@declare_c_func("fgets", "ptr", "(i8*, i32, i8*)")@'
  555. |10- SepExpr (Consumed=2)
  556. |11- FileNode: (N_Statements=33)
  557. |0- SepExpr (Consumed=1)
  558. |1- FileNode: (N_Statements=67)
  559. |0- SepExpr (Consumed=1)
  560. |1- SepExpr (Consumed=1)
  561. |2- SepExpr (Consumed=2)
  562. |3- TypeDecl:
  563. |- Head: TypeDeclHead: `MemArena` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  564. \- Body: TypeDeclBody: (N_Statements=12)
  565. |0- DeclExpr: 'ptr allocation'
  566. |1- DeclExpr: 'int position'
  567. |2- DeclExpr: 'ptr last_alloc'
  568. |3- DeclExpr: 'int last_alloc_amount'
  569. |4- DeclExpr: 'int arena_size'
  570. |5- DeclExpr: 'int layer_id'
  571. |6- DeclExpr: 'MemArena _next'
  572. |7- FunctionDecl:
  573. |- Head: FunctionDeclHead: Name='MemArena::new' Type='MemArena' Nargs=2
  574. |0- int size
  575. \1- int layer
  576. |0- AssignmentExpr (Operator='=')
  577. |- LHS: DeclExpr: 'MemArena new'
  578. \- RHS: CastExpr (Target='MemArena')
  579. \- Value: CallExpr:
  580. |- Method: AccessorExpr (Mode='::')
  581. |- Object: NameExpr: 'mem'
  582. \- Field: alloc_unmanaged
  583. \- Arguments: (Len=1)
  584. \0- IntrinsicExpr: '@sizeof(MemArena)@'
  585. |1- AssignmentExpr (Operator='=')
  586. |- LHS: AccessorExpr (Mode='.')
  587. |- Object: NameExpr: 'new'
  588. \- Field: arena_size
  589. \- RHS: NameExpr: 'size'
  590. |2- AssignmentExpr (Operator='=')
  591. |- LHS: AccessorExpr (Mode='.')
  592. |- Object: NameExpr: 'new'
  593. \- Field: allocation
  594. \- RHS: CallExpr:
  595. |- Method: AccessorExpr (Mode='::')
  596. |- Object: NameExpr: 'mem'
  597. \- Field: alloc_unmanaged
  598. \- Arguments: (Len=1)
  599. \0- AccessorExpr (Mode='.')
  600. |- Object: NameExpr: 'new'
  601. \- Field: arena_size
  602. |3- AssignmentExpr (Operator='=')
  603. |- LHS: AccessorExpr (Mode='.')
  604. |- Object: NameExpr: 'new'
  605. \- Field: position
  606. \- RHS: LiteralExpr: type=int, value=0
  607. |4- AssignmentExpr (Operator='=')
  608. |- LHS: AccessorExpr (Mode='.')
  609. |- Object: NameExpr: 'new'
  610. \- Field: layer_id
  611. \- RHS: NameExpr: 'layer'
  612. |5- AssignmentExpr (Operator='=')
  613. |- LHS: AccessorExpr (Mode='.')
  614. |- Object: NameExpr: 'new'
  615. \- Field: _next
  616. \- RHS: CastExpr (Target='MemArena')
  617. \- Value: LiteralExpr: type=ptr, value=0
  618. \6- ReturnExpr: NameExpr: 'new'
  619. |8- FunctionDecl:
  620. |- Head: FunctionDeclHead: Name='MemArena:allocate' Type='ptr' Nargs=2
  621. |0- MemArena self
  622. \1- int amount
  623. |0- AssignmentExpr (Operator='+=')
  624. |- LHS: NameExpr: 'amount'
  625. \- RHS: BinOpExpr (Operator='-')
  626. |- LHS: LiteralExpr: type=int, value=8
  627. \- RHS: GroupingExpr: BinOpExpr (Operator='%')
  628. |- LHS: NameExpr: 'amount'
  629. \- RHS: LiteralExpr: type=int, value=8
  630. |1- AssignmentExpr (Operator='+=')
  631. |- LHS: AccessorExpr (Mode='.')
  632. |- Object: NameExpr: 'self'
  633. \- Field: position
  634. \- RHS: NameExpr: 'amount'
  635. |2- AssignmentExpr (Operator='=')
  636. |- LHS: AccessorExpr (Mode='.')
  637. |- Object: NameExpr: 'self'
  638. \- Field: last_alloc_amount
  639. \- RHS: NameExpr: 'amount'
  640. |3- AssignmentExpr (Operator='=')
  641. |- LHS: AccessorExpr (Mode='.')
  642. |- Object: NameExpr: 'self'
  643. \- Field: last_alloc
  644. \- RHS: CallExpr:
  645. |- Method: AccessorExpr (Mode=':')
  646. |- Object: AccessorExpr (Mode='.')
  647. |- Object: NameExpr: 'self'
  648. \- Field: allocation
  649. \- Field: offset
  650. \- Arguments: (Len=1)
  651. \0- BinOpExpr (Operator='-')
  652. |- LHS: AccessorExpr (Mode='.')
  653. |- Object: NameExpr: 'self'
  654. \- Field: position
  655. \- RHS: NameExpr: 'amount'
  656. \4- ReturnExpr: AccessorExpr (Mode='.')
  657. |- Object: NameExpr: 'self'
  658. \- Field: last_alloc
  659. |9- FunctionDecl:
  660. |- Head: FunctionDeclHead: Name='MemArena:has_room' Type='bool' Nargs=2
  661. |0- MemArena self
  662. \1- int amount
  663. \0- ReturnExpr: BinOpExpr (Operator='>=')
  664. |- LHS: GroupingExpr: BinOpExpr (Operator='-')
  665. |- LHS: AccessorExpr (Mode='.')
  666. |- Object: NameExpr: 'self'
  667. \- Field: arena_size
  668. \- RHS: AccessorExpr (Mode='.')
  669. |- Object: NameExpr: 'self'
  670. \- Field: position
  671. \- RHS: BinOpExpr (Operator='+')
  672. |- LHS: NameExpr: 'amount'
  673. \- RHS: BinOpExpr (Operator='+')
  674. |- LHS: LiteralExpr: type=int, value=1
  675. \- RHS: GroupingExpr: BinOpExpr (Operator='-')
  676. |- LHS: LiteralExpr: type=int, value=8
  677. \- RHS: GroupingExpr: BinOpExpr (Operator='%')
  678. |- LHS: NameExpr: 'amount'
  679. \- RHS: LiteralExpr: type=int, value=8
  680. |10- FunctionDecl:
  681. |- Head: FunctionDeclHead: Name='MemArena:try_free' Type='void' Nargs=2
  682. |0- MemArena self
  683. \1- ptr ob
  684. |0- IfExpr:
  685. |- Condition: BinOpExpr (Operator='==')
  686. |- LHS: NameExpr: 'ob'
  687. \- RHS: AccessorExpr (Mode='.')
  688. |- Object: NameExpr: 'self'
  689. \- Field: last_alloc
  690. |- Body: BlockBody: (N_Statements=2)
  691. |0- AssignmentExpr (Operator='-=')
  692. |- LHS: AccessorExpr (Mode='.')
  693. |- Object: NameExpr: 'self'
  694. \- Field: position
  695. \- RHS: AccessorExpr (Mode='.')
  696. |- Object: NameExpr: 'self'
  697. \- Field: last_alloc_amount
  698. |1- AssignmentExpr (Operator='=')
  699. |- LHS: AccessorExpr (Mode='.')
  700. |- Object: NameExpr: 'self'
  701. \- Field: last_alloc
  702. \- RHS: CastExpr (Target='ptr')
  703. \- Value: LiteralExpr: type=int, value=0
  704. \1- ReturnExpr: <void>
  705. \11- FunctionDecl:
  706. |- Head: FunctionDeclHead: Name='MemArena:free' Type='void' Nargs=1
  707. \0- MemArena self
  708. |0- CallExpr:
  709. |- Method: AccessorExpr (Mode='::')
  710. |- Object: NameExpr: 'mem'
  711. \- Field: free_unmanaged
  712. \- Arguments: (Len=1)
  713. \0- AccessorExpr (Mode='.')
  714. |- Object: NameExpr: 'self'
  715. \- Field: allocation
  716. |1- CallExpr:
  717. |- Method: AccessorExpr (Mode='::')
  718. |- Object: NameExpr: 'mem'
  719. \- Field: free_unmanaged
  720. \- Arguments: (Len=1)
  721. \0- NameExpr: 'self'
  722. \2- ReturnExpr: <void>
  723. |4- SepExpr (Consumed=2)
  724. |5- DeclExpr: 'MemArena __mem_head_arena'
  725. |6- SepExpr (Consumed=1)
  726. |7- DeclExpr: 'MemArena __mem_tail_arena'
  727. |8- SepExpr (Consumed=1)
  728. |9- DeclExpr: 'int __mem_arena_min_sz'
  729. |10- SepExpr (Consumed=1)
  730. |11- DeclExpr: 'int __mem_arena_curr_layer'
  731. |12- SepExpr (Consumed=2)
  732. |13- FunctionDecl:
  733. |- Head: FunctionDeclHead: Name='mem::arena::alloc' Type='ptr' Nargs=1
  734. \0- int amount
  735. |0- IfExpr:
  736. |- Condition: UnOpExpr (Operator='-')
  737. \- Value: CallExpr:
  738. |- Method: AccessorExpr (Mode=':')
  739. |- Object: NameExpr: '__mem_tail_arena'
  740. \- Field: has_room
  741. \- Arguments: (Len=1)
  742. \0- NameExpr: 'amount'
  743. |- Body: BlockBody: (N_Statements=2)
  744. |0- AssignmentExpr (Operator='=')
  745. |- LHS: AccessorExpr (Mode='.')
  746. |- Object: NameExpr: '__mem_tail_arena'
  747. \- Field: _next
  748. \- RHS: CallExpr:
  749. |- Method: NameExpr: 'MemArena$$new'
  750. \- Arguments: (Len=2)
  751. |0- BinOpExpr (Operator='+')
  752. |- LHS: NameExpr: 'amount'
  753. \- RHS: NameExpr: '__mem_arena_min_sz'
  754. \1- NameExpr: '__mem_arena_curr_layer'
  755. |1- AssignmentExpr (Operator='=')
  756. |- LHS: NameExpr: '__mem_tail_arena'
  757. \- RHS: AccessorExpr (Mode='.')
  758. |- Object: NameExpr: '__mem_tail_arena'
  759. \- Field: _next
  760. \1- ReturnExpr: CallExpr:
  761. |- Method: AccessorExpr (Mode=':')
  762. |- Object: NameExpr: '__mem_tail_arena'
  763. \- Field: allocate
  764. \- Arguments: (Len=1)
  765. \0- NameExpr: 'amount'
  766. |14- SepExpr (Consumed=2)
  767. |15- FunctionDecl:
  768. |- Head: FunctionDeclHead: Name='mem::arena::free' Type='void' Nargs=1
  769. \0- ptr ob
  770. |0- CallExpr:
  771. |- Method: AccessorExpr (Mode=':')
  772. |- Object: NameExpr: '__mem_tail_arena'
  773. \- Field: try_free
  774. \- Arguments: (Len=1)
  775. \0- NameExpr: 'ob'
  776. \1- ReturnExpr: <void>
  777. |16- SepExpr (Consumed=2)
  778. |17- FunctionDecl:
  779. |- Head: FunctionDeclHead: Name='mem::arena::push_arena' Type='void' Nargs=0
  780. |0- AssignmentExpr (Operator='+=')
  781. |- LHS: NameExpr: '__mem_arena_curr_layer'
  782. \- RHS: LiteralExpr: type=int, value=1
  783. |1- AssignmentExpr (Operator='=')
  784. |- LHS: AccessorExpr (Mode='.')
  785. |- Object: NameExpr: '__mem_tail_arena'
  786. \- Field: _next
  787. \- RHS: CallExpr:
  788. |- Method: NameExpr: 'MemArena$$new'
  789. \- Arguments: (Len=2)
  790. |0- NameExpr: '__mem_arena_min_sz'
  791. \1- NameExpr: '__mem_arena_curr_layer'
  792. |2- AssignmentExpr (Operator='=')
  793. |- LHS: NameExpr: '__mem_tail_arena'
  794. \- RHS: AccessorExpr (Mode='.')
  795. |- Object: NameExpr: '__mem_tail_arena'
  796. \- Field: _next
  797. \3- ReturnExpr: <void>
  798. |18- SepExpr (Consumed=2)
  799. |19- FunctionDecl:
  800. |- Head: FunctionDeclHead: Name='mem::arena::pop_arena' Type='void' Nargs=0
  801. |0- AssignmentExpr (Operator='=')
  802. |- LHS: DeclExpr: 'MemArena curr'
  803. \- RHS: NameExpr: '__mem_head_arena'
  804. |1- DeclExpr: 'MemArena next'
  805. |2- WhileExpr:
  806. |- Condition: BinOpExpr (Operator='!=')
  807. |- LHS: CastExpr (Target='ptr')
  808. \- Value: NameExpr: 'curr'
  809. \- RHS: LiteralExpr: type=ptr, value=0
  810. |- Body: BlockBody: (N_Statements=3)
  811. |0- AssignmentExpr (Operator='=')
  812. |- LHS: NameExpr: 'next'
  813. \- RHS: AccessorExpr (Mode='.')
  814. |- Object: NameExpr: 'curr'
  815. \- Field: _next
  816. |1- IfExpr:
  817. |- Condition: BinOpExpr (Operator='==')
  818. |- LHS: AccessorExpr (Mode='.')
  819. |- Object: NameExpr: 'curr'
  820. \- Field: layer_id
  821. \- RHS: NameExpr: '__mem_arena_curr_layer'
  822. |- Body: BlockBody: (N_Statements=1)
  823. |0- CallExpr:
  824. |- Method: AccessorExpr (Mode=':')
  825. |- Object: NameExpr: 'curr'
  826. \- Field: free
  827. \- Arguments: (Len=0)
  828. |2- AssignmentExpr (Operator='=')
  829. |- LHS: NameExpr: 'curr'
  830. \- RHS: NameExpr: 'next'
  831. |3- AssignmentExpr (Operator='-=')
  832. |- LHS: NameExpr: '__mem_arena_curr_layer'
  833. \- RHS: LiteralExpr: type=int, value=1
  834. \4- ReturnExpr: <void>
  835. |20- SepExpr (Consumed=2)
  836. |21- FunctionDecl:
  837. |- Head: FunctionDeclHead: Name='mem::arena::clean_up' Type='void' Nargs=0
  838. |0- AssignmentExpr (Operator='=')
  839. |- LHS: DeclExpr: 'MemArena curr'
  840. \- RHS: NameExpr: '__mem_head_arena'
  841. |1- DeclExpr: 'MemArena next'
  842. |2- WhileExpr:
  843. |- Condition: BinOpExpr (Operator='!=')
  844. |- LHS: CastExpr (Target='ptr')
  845. \- Value: NameExpr: 'curr'
  846. \- RHS: LiteralExpr: type=ptr, value=0
  847. |- Body: BlockBody: (N_Statements=3)
  848. |0- AssignmentExpr (Operator='=')
  849. |- LHS: NameExpr: 'next'
  850. \- RHS: AccessorExpr (Mode='.')
  851. |- Object: NameExpr: 'curr'
  852. \- Field: _next
  853. |1- CallExpr:
  854. |- Method: AccessorExpr (Mode=':')
  855. |- Object: NameExpr: 'curr'
  856. \- Field: free
  857. \- Arguments: (Len=0)
  858. |2- AssignmentExpr (Operator='=')
  859. |- LHS: NameExpr: 'curr'
  860. \- RHS: NameExpr: 'next'
  861. \3- ReturnExpr: <void>
  862. |22- SepExpr (Consumed=2)
  863. |23- FunctionDecl:
  864. |- Head: FunctionDeclHead: Name='mem::init_arena_allocator' Type='void' Nargs=1
  865. \0- int min_arena_sz
  866. |0- AssignmentExpr (Operator='=')
  867. |- LHS: NameExpr: '__mem_arena_min_sz'
  868. \- RHS: NameExpr: 'min_arena_sz'
  869. |1- AssignmentExpr (Operator='=')
  870. |- LHS: NameExpr: '__mem_arena_curr_layer'
  871. \- RHS: LiteralExpr: type=int, value=0
  872. |2- AssignmentExpr (Operator='=')
  873. |- LHS: NameExpr: '__mem_head_arena'
  874. \- RHS: CallExpr:
  875. |- Method: NameExpr: 'MemArena$$new'
  876. \- Arguments: (Len=2)
  877. |0- NameExpr: '__mem_arena_min_sz'
  878. \1- NameExpr: '__mem_arena_curr_layer'
  879. |3- AssignmentExpr (Operator='=')
  880. |- LHS: NameExpr: '__mem_tail_arena'
  881. \- RHS: NameExpr: '__mem_head_arena'
  882. |4- AssignmentExpr (Operator='=')
  883. |- LHS: NameExpr: '__mem_allocator'
  884. \- RHS: CastExpr (Target='MemAllocator')
  885. \- Value: NameExpr: 'mem$$arena$$alloc'
  886. |5- AssignmentExpr (Operator='=')
  887. |- LHS: NameExpr: '__mem_deallocator'
  888. \- RHS: CastExpr (Target='MemDeallocator')
  889. \- Value: NameExpr: 'mem$$arena$$free'
  890. |6- AssignmentExpr (Operator='=')
  891. |- LHS: NameExpr: '__mem_cleaner'
  892. \- RHS: CastExpr (Target='MemCleaner')
  893. \- Value: NameExpr: 'mem$$arena$$clean_up'
  894. \7- ReturnExpr: <void>
  895. |24- SepExpr (Consumed=2)
  896. |25- TypeDeclHead: `MemAllocator` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`ptr`
  897. |26- SepExpr (Consumed=1)
  898. |27- TypeDeclHead: `MemDeallocator` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`void`
  899. |28- SepExpr (Consumed=1)
  900. |29- TypeDeclHead: `MemCleaner` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`void`
  901. |30- SepExpr (Consumed=2)
  902. |31- DeclExpr: 'MemAllocator __mem_allocator'
  903. |32- SepExpr (Consumed=1)
  904. |33- DeclExpr: 'MemDeallocator __mem_deallocator'
  905. |34- SepExpr (Consumed=1)
  906. |35- DeclExpr: 'MemCleaner __mem_cleaner'
  907. |36- SepExpr (Consumed=2)
  908. |37- DeclExpr: 'int __mem_total_unmanaged_allocs'
  909. |38- SepExpr (Consumed=2)
  910. |39- FunctionDecl:
  911. |- Head: FunctionDeclHead: Name='mem::alloc' Type='ptr' Nargs=1
  912. \0- int amount
  913. \0- ReturnExpr: CallExpr:
  914. |- Method: NameExpr: '__mem_allocator'
  915. \- Arguments: (Len=1)
  916. \0- NameExpr: 'amount'
  917. |40- SepExpr (Consumed=2)
  918. |41- FunctionDecl:
  919. |- Head: FunctionDeclHead: Name='mem::alloc_unmanaged' Type='ptr' Nargs=1
  920. \0- int amount
  921. |0- AssignmentExpr (Operator='+=')
  922. |- LHS: NameExpr: '__mem_total_unmanaged_allocs'
  923. \- RHS: LiteralExpr: type=int, value=1
  924. \1- ReturnExpr: CallExpr:
  925. |- Method: NameExpr: '__raw_malloc'
  926. \- Arguments: (Len=1)
  927. \0- NameExpr: 'amount'
  928. |42- SepExpr (Consumed=2)
  929. |43- FunctionDecl:
  930. |- Head: FunctionDeclHead: Name='mem::free' Type='void' Nargs=1
  931. \0- ptr ob
  932. |0- CallExpr:
  933. |- Method: NameExpr: '__mem_deallocator'
  934. \- Arguments: (Len=1)
  935. \0- NameExpr: 'ob'
  936. \1- ReturnExpr: <void>
  937. |44- SepExpr (Consumed=2)
  938. |45- FunctionDecl:
  939. |- Head: FunctionDeclHead: Name='mem::free_unmanaged' Type='void' Nargs=1
  940. \0- ptr ob
  941. |0- AssignmentExpr (Operator='-=')
  942. |- LHS: NameExpr: '__mem_total_unmanaged_allocs'
  943. \- RHS: LiteralExpr: type=int, value=1
  944. |1- CallExpr:
  945. |- Method: NameExpr: '__raw_free'
  946. \- Arguments: (Len=1)
  947. \0- NameExpr: 'ob'
  948. \2- ReturnExpr: <void>
  949. |46- SepExpr (Consumed=2)
  950. |47- FunctionDecl:
  951. |- Head: FunctionDeclHead: Name='mem::raw_free' Type='void' Nargs=1
  952. \0- ptr ob
  953. |0- CallExpr:
  954. |- Method: NameExpr: '__raw_free'
  955. \- Arguments: (Len=1)
  956. \0- NameExpr: 'ob'
  957. \1- ReturnExpr: <void>
  958. |48- SepExpr (Consumed=2)
  959. |49- FunctionDecl:
  960. |- Head: FunctionDeclHead: Name='mem::__empty' Type='void' Nargs=0
  961. \0- ReturnExpr: <void>
  962. |50- SepExpr (Consumed=2)
  963. |51- IntrinsicExpr: '@set_autoconv("mem::free_unmanaged")@'
  964. |52- SepExpr (Consumed=2)
  965. |53- FunctionDecl:
  966. |- Head: FunctionDeclHead: Name='mem::init_default_allocator' Type='void' Nargs=0
  967. |0- AssignmentExpr (Operator='=')
  968. |- LHS: NameExpr: '__mem_allocator'
  969. \- RHS: CastExpr (Target='MemAllocator')
  970. \- Value: NameExpr: 'mem$$alloc_unmanaged'
  971. |1- AssignmentExpr (Operator='=')
  972. |- LHS: NameExpr: '__mem_deallocator'
  973. \- RHS: CastExpr (Target='MemDeallocator')
  974. \- Value: NameExpr: 'mem$$free_unmanaged'
  975. |2- AssignmentExpr (Operator='=')
  976. |- LHS: NameExpr: '__mem_cleaner'
  977. \- RHS: CastExpr (Target='MemCleaner')
  978. \- Value: NameExpr: 'mem$$__empty'
  979. \3- ReturnExpr: <void>
  980. |54- SepExpr (Consumed=2)
  981. |55- FunctionDecl:
  982. |- Head: FunctionDeclHead: Name='mem::clean_up' Type='void' Nargs=0
  983. |0- CallExpr:
  984. |- Method: NameExpr: '__mem_cleaner'
  985. \- Arguments: (Len=0)
  986. |1- AssignmentExpr (Operator='=')
  987. |- LHS: DeclExpr: 'int excusable'
  988. \- RHS: LiteralExpr: type=int, value=0
  989. |2- IfExpr:
  990. |- Condition: BinOpExpr (Operator='!=')
  991. |- LHS: CastExpr (Target='ptr')
  992. \- Value: NameExpr: '__stack'
  993. \- RHS: LiteralExpr: type=ptr, value=0
  994. |- Body: BlockBody: (N_Statements=1)
  995. |0- AssignmentExpr (Operator='=')
  996. |- LHS: NameExpr: 'excusable'
  997. \- RHS: LiteralExpr: type=int, value=3
  998. |3- IfExpr:
  999. |- Condition: BinOpExpr (Operator='>')
  1000. |- LHS: NameExpr: '__mem_total_unmanaged_allocs'
  1001. \- RHS: NameExpr: 'excusable'
  1002. |- Body: BlockBody: (N_Statements=1)
  1003. |0- CallExpr:
  1004. |- Method: NameExpr: 'printf'
  1005. \- Arguments: (Len=2)
  1006. |0- LiteralExpr: type=cstr, value=W: Did not free all memory, %i allocations unfreed\n
  1007. \1- BinOpExpr (Operator='-')
  1008. |- LHS: NameExpr: '__mem_total_unmanaged_allocs'
  1009. \- RHS: NameExpr: 'excusable'
  1010. \4- ReturnExpr: <void>
  1011. |56- SepExpr (Consumed=2)
  1012. |57- IntrinsicExpr: '@construct_signature("__raw_malloc", "malloc", ["int"], "ptr")@'
  1013. |58- SepExpr (Consumed=1)
  1014. |59- IntrinsicExpr: '@construct_signature("__raw_free", "free", ["ptr"], "void", auto_conv=True)@'
  1015. |60- SepExpr (Consumed=1)
  1016. |61- IntrinsicExpr: '@construct_signature("malloc", "mem::alloc", ["int"], "ptr")@'
  1017. |62- SepExpr (Consumed=1)
  1018. |63- IntrinsicExpr: '@construct_signature("free", "mem::free", ["ptr"], "void", auto_conv=True)@'
  1019. |64- SepExpr (Consumed=1)
  1020. |65- IntrinsicExpr: '@register_startup("mem::init_default_allocator")@'
  1021. |66- SepExpr (Consumed=1)
  1022. |2- SepExpr (Consumed=2)
  1023. |3- TypeDecl:
  1024. |- Head: TypeDeclHead: `_StackNode` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  1025. \- Body: TypeDeclBody: (N_Statements=3)
  1026. |0- DeclExpr: '_StackNode _next'
  1027. |1- DeclExpr: '_StackNode _prev'
  1028. \2- DeclExpr: 'cstr name'
  1029. |4- SepExpr (Consumed=2)
  1030. |5- DeclExpr: '_StackNode __stack'
  1031. |6- SepExpr (Consumed=1)
  1032. |7- DeclExpr: '_StackNode __stack_tail'
  1033. |8- SepExpr (Consumed=2)
  1034. |9- TypeDeclHead: `AddtlEnterExitCallback` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`void`
  1035. |10- SepExpr (Consumed=2)
  1036. |11- DeclExpr: 'AddtlEnterExitCallback __fex_addtl_callback_enter'
  1037. |12- SepExpr (Consumed=1)
  1038. |13- DeclExpr: 'AddtlEnterExitCallback __fex_addtl_callback_exit'
  1039. |14- SepExpr (Consumed=1)
  1040. |15- DeclExpr: 'bool __in_err'
  1041. |16- SepExpr (Consumed=2)
  1042. |17- FunctionDecl:
  1043. |- Head: FunctionDeclHead: Name='orth::internal::hooks::function_enter_hook' Type='void' Nargs=1
  1044. \0- cstr name
  1045. |0- IfExpr:
  1046. |- Condition: BinOpExpr (Operator='==')
  1047. |- LHS: CastExpr (Target='int')
  1048. \- Value: CastExpr (Target='ptr')
  1049. \- Value: NameExpr: '__stack'
  1050. \- RHS: LiteralExpr: type=int, value=0
  1051. |- Body: BlockBody: (N_Statements=1)
  1052. |0- ReturnExpr: <void>
  1053. |1- IfExpr:
  1054. |- Condition: NameExpr: '__in_err'
  1055. |- Body: BlockBody: (N_Statements=1)
  1056. |0- ReturnExpr: <void>
  1057. |2- AssignmentExpr (Operator='=')
  1058. |- LHS: NameExpr: '__in_err'
  1059. \- RHS: LiteralExpr: type=bool, value=1
  1060. |3- IfExpr:
  1061. |- Condition: BinOpExpr (Operator='!=')
  1062. |- LHS: CastExpr (Target='int')
  1063. \- Value: CastExpr (Target='ptr')
  1064. \- Value: NameExpr: '__fex_addtl_callback_enter'
  1065. \- RHS: CastExpr (Target='int')
  1066. \- Value: LiteralExpr: type=ptr, value=0
  1067. |- Body: BlockBody: (N_Statements=1)
  1068. |0- CallExpr:
  1069. |- Method: NameExpr: '__fex_addtl_callback_enter'
  1070. \- Arguments: (Len=1)
  1071. \0- NameExpr: 'name'
  1072. |4- AssignmentExpr (Operator='=')
  1073. |- LHS: DeclExpr: '_StackNode new'
  1074. \- RHS: CastExpr (Target='_StackNode')
  1075. \- Value: CallExpr:
  1076. |- Method: NameExpr: 'mem$$alloc_unmanaged'
  1077. \- Arguments: (Len=1)
  1078. \0- IntrinsicExpr: '@sizeof(_StackNode)@'
  1079. |5- AssignmentExpr (Operator='=')
  1080. |- LHS: AccessorExpr (Mode='.')
  1081. |- Object: NameExpr: 'new'
  1082. \- Field: _next
  1083. \- RHS: CastExpr (Target='_StackNode')
  1084. \- Value: LiteralExpr: type=ptr, value=0
  1085. |6- AssignmentExpr (Operator='=')
  1086. |- LHS: AccessorExpr (Mode='.')
  1087. |- Object: NameExpr: 'new'
  1088. \- Field: _prev
  1089. \- RHS: CastExpr (Target='_StackNode')
  1090. \- Value: LiteralExpr: type=ptr, value=0
  1091. |7- AssignmentExpr (Operator='=')
  1092. |- LHS: AccessorExpr (Mode='.')
  1093. |- Object: NameExpr: 'new'
  1094. \- Field: name
  1095. \- RHS: NameExpr: 'name'
  1096. |8- AssignmentExpr (Operator='=')
  1097. |- LHS: AccessorExpr (Mode='.')
  1098. |- Object: NameExpr: '__stack_tail'
  1099. \- Field: _next
  1100. \- RHS: NameExpr: 'new'
  1101. |9- AssignmentExpr (Operator='=')
  1102. |- LHS: AccessorExpr (Mode='.')
  1103. |- Object: NameExpr: 'new'
  1104. \- Field: _prev
  1105. \- RHS: NameExpr: '__stack_tail'
  1106. |10- AssignmentExpr (Operator='=')
  1107. |- LHS: NameExpr: '__stack_tail'
  1108. \- RHS: NameExpr: 'new'
  1109. |11- AssignmentExpr (Operator='=')
  1110. |- LHS: NameExpr: '__in_err'
  1111. \- RHS: LiteralExpr: type=bool, value=0
  1112. \12- ReturnExpr: <void>
  1113. |18- SepExpr (Consumed=2)
  1114. |19- FunctionDecl:
  1115. |- Head: FunctionDeclHead: Name='orth::internal::hooks::function_exit_hook' Type='void' Nargs=1
  1116. \0- cstr name
  1117. |0- IfExpr:
  1118. |- Condition: BinOpExpr (Operator='==')
  1119. |- LHS: CastExpr (Target='int')
  1120. \- Value: CastExpr (Target='ptr')
  1121. \- Value: NameExpr: '__stack'
  1122. \- RHS: LiteralExpr: type=int, value=0
  1123. |- Body: BlockBody: (N_Statements=1)
  1124. |0- ReturnExpr: <void>
  1125. |1- IfExpr:
  1126. |- Condition: NameExpr: '__in_err'
  1127. |- Body: BlockBody: (N_Statements=1)
  1128. |0- ReturnExpr: <void>
  1129. |2- AssignmentExpr (Operator='=')
  1130. |- LHS: NameExpr: '__in_err'
  1131. \- RHS: LiteralExpr: type=bool, value=1
  1132. |3- IfExpr:
  1133. |- Condition: BinOpExpr (Operator='==')
  1134. |- LHS: CastExpr (Target='int')
  1135. \- Value: CastExpr (Target='ptr')
  1136. \- Value: AccessorExpr (Mode='.')
  1137. |- Object: NameExpr: '__stack'
  1138. \- Field: _next
  1139. \- RHS: CastExpr (Target='int')
  1140. \- Value: LiteralExpr: type=ptr, value=0
  1141. |- Body: BlockBody: (N_Statements=1)
  1142. |0- ReturnExpr: <void>
  1143. |4- IfExpr:
  1144. |- Condition: BinOpExpr (Operator='!=')
  1145. |- LHS: CastExpr (Target='int')
  1146. \- Value: CastExpr (Target='ptr')
  1147. \- Value: NameExpr: '__fex_addtl_callback_exit'
  1148. \- RHS: CastExpr (Target='int')
  1149. \- Value: LiteralExpr: type=ptr, value=0
  1150. |- Body: BlockBody: (N_Statements=1)
  1151. |0- CallExpr:
  1152. |- Method: NameExpr: '__fex_addtl_callback_exit'
  1153. \- Arguments: (Len=1)
  1154. \0- NameExpr: 'name'
  1155. |5- AssignmentExpr (Operator='=')
  1156. |- LHS: DeclExpr: '_StackNode new_last'
  1157. \- RHS: AccessorExpr (Mode='.')
  1158. |- Object: NameExpr: '__stack_tail'
  1159. \- Field: _prev
  1160. |6- CallExpr:
  1161. |- Method: NameExpr: 'mem$$free_unmanaged'
  1162. \- Arguments: (Len=1)
  1163. \0- NameExpr: '__stack_tail'
  1164. |7- AssignmentExpr (Operator='=')
  1165. |- LHS: NameExpr: '__stack_tail'
  1166. \- RHS: NameExpr: 'new_last'
  1167. |8- AssignmentExpr (Operator='=')
  1168. |- LHS: AccessorExpr (Mode='.')
  1169. |- Object: NameExpr: 'new_last'
  1170. \- Field: _next
  1171. \- RHS: CastExpr (Target='_StackNode')
  1172. \- Value: LiteralExpr: type=ptr, value=0
  1173. |9- AssignmentExpr (Operator='=')
  1174. |- LHS: NameExpr: '__in_err'
  1175. \- RHS: LiteralExpr: type=bool, value=0
  1176. \10- ReturnExpr: <void>
  1177. |20- SepExpr (Consumed=2)
  1178. |21- FunctionDecl:
  1179. |- Head: FunctionDeclHead: Name='orth::internal::hooks::setup_pstack' Type='void' Nargs=0
  1180. |0- AssignmentExpr (Operator='=')
  1181. |- LHS: DeclExpr: '_StackNode new'
  1182. \- RHS: CastExpr (Target='_StackNode')
  1183. \- Value: CallExpr:
  1184. |- Method: NameExpr: 'mem$$alloc_unmanaged'
  1185. \- Arguments: (Len=1)
  1186. \0- IntrinsicExpr: '@sizeof(_StackNode)@'
  1187. |1- AssignmentExpr (Operator='=')
  1188. |- LHS: AccessorExpr (Mode='.')
  1189. |- Object: NameExpr: 'new'
  1190. \- Field: _next
  1191. \- RHS: CastExpr (Target='_StackNode')
  1192. \- Value: LiteralExpr: type=ptr, value=0
  1193. |2- AssignmentExpr (Operator='=')
  1194. |- LHS: AccessorExpr (Mode='.')
  1195. |- Object: NameExpr: 'new'
  1196. \- Field: _prev
  1197. \- RHS: CastExpr (Target='_StackNode')
  1198. \- Value: LiteralExpr: type=ptr, value=0
  1199. |3- AssignmentExpr (Operator='=')
  1200. |- LHS: AccessorExpr (Mode='.')
  1201. |- Object: NameExpr: 'new'
  1202. \- Field: name
  1203. \- RHS: LiteralExpr: type=cstr, value=<dummy root>
  1204. |4- AssignmentExpr (Operator='=')
  1205. |- LHS: NameExpr: '__stack'
  1206. \- RHS: NameExpr: 'new'
  1207. |5- AssignmentExpr (Operator='=')
  1208. |- LHS: NameExpr: '__stack_tail'
  1209. \- RHS: NameExpr: 'new'
  1210. \6- ReturnExpr: <void>
  1211. |22- SepExpr (Consumed=2)
  1212. |23- IntrinsicExpr: '@register_startup("orth::internal::hooks::setup_pstack", 0)@'
  1213. |24- SepExpr (Consumed=2)
  1214. |25- FunctionDecl:
  1215. |- Head: FunctionDeclHead: Name='orth::fail' Type='void' Nargs=1
  1216. \0- cstr err
  1217. |0- CallExpr:
  1218. |- Method: NameExpr: 'printf'
  1219. \- Arguments: (Len=1)
  1220. \0- LiteralExpr: type=cstr, value=\x1B[41m==================== orth::fail bailout report ====================\x1B[0m\n
  1221. |1- CallExpr:
  1222. |- Method: NameExpr: 'printf'
  1223. \- Arguments: (Len=2)
  1224. |0- LiteralExpr: type=cstr, value=Bailout message: '%s'\n
  1225. \1- NameExpr: 'err'
  1226. |2- IfExpr:
  1227. |- Condition: BinOpExpr (Operator='==')
  1228. |- LHS: CastExpr (Target='ptr')
  1229. \- Value: NameExpr: '__stack'
  1230. \- RHS: LiteralExpr: type=ptr, value=0
  1231. |- Body: BlockBody: (N_Statements=2)
  1232. |0- CallExpr:
  1233. |- Method: NameExpr: 'printf'
  1234. \- Arguments: (Len=1)
  1235. \0- LiteralExpr: type=cstr, value=Cannot print traceback, __stack is null. Did you compile with the 'funchooks' flag?\n
  1236. |1- CallExpr:
  1237. |- Method: NameExpr: 'exit'
  1238. \- Arguments: (Len=1)
  1239. \0- LiteralExpr: type=int, value=2
  1240. |3- CallExpr:
  1241. |- Method: NameExpr: 'printf'
  1242. \- Arguments: (Len=1)
  1243. \0- LiteralExpr: type=cstr, value=Traceback (orth calls only, most recent call last):\n
  1244. |4- AssignmentExpr (Operator='=')
  1245. |- LHS: DeclExpr: '_StackNode curr'
  1246. \- RHS: NameExpr: '__stack'
  1247. |5- AssignmentExpr (Operator='=')
  1248. |- LHS: DeclExpr: 'int curr_idx'
  1249. \- RHS: LiteralExpr: type=int, value=0
  1250. |6- WhileExpr:
  1251. |- Condition: BinOpExpr (Operator='!=')
  1252. |- LHS: CastExpr (Target='ptr')
  1253. \- Value: NameExpr: 'curr'
  1254. \- RHS: LiteralExpr: type=ptr, value=0
  1255. |- Body: BlockBody: (N_Statements=3)
  1256. |0- CallExpr:
  1257. |- Method: NameExpr: 'printf'
  1258. \- Arguments: (Len=3)
  1259. |0- LiteralExpr: type=cstr, value= %04i: %s\n
  1260. |1- NameExpr: 'curr_idx'
  1261. \2- AccessorExpr (Mode='.')
  1262. |- Object: NameExpr: 'curr'
  1263. \- Field: name
  1264. |1- AssignmentExpr (Operator='+=')
  1265. |- LHS: NameExpr: 'curr_idx'
  1266. \- RHS: LiteralExpr: type=int, value=1
  1267. |2- AssignmentExpr (Operator='=')
  1268. |- LHS: NameExpr: 'curr'
  1269. \- RHS: AccessorExpr (Mode='.')
  1270. |- Object: NameExpr: 'curr'
  1271. \- Field: _next
  1272. |7- CallExpr:
  1273. |- Method: NameExpr: 'mem$$clean_up'
  1274. \- Arguments: (Len=0)
  1275. |8- CallExpr:
  1276. |- Method: NameExpr: 'exit'
  1277. \- Arguments: (Len=1)
  1278. \0- LiteralExpr: type=int, value=1
  1279. \9- ReturnExpr: <void>
  1280. |26- SepExpr (Consumed=2)
  1281. |27- FunctionDecl:
  1282. |- Head: FunctionDeclHead: Name='__orth_sig_h' Type='void' Nargs=1
  1283. \0- int code
  1284. |0- IfExpr:
  1285. |- Condition: BinOpExpr (Operator='==')
  1286. |- LHS: NameExpr: 'code'
  1287. \- RHS: LiteralExpr: type=int, value=11
  1288. |- Body: BlockBody: (N_Statements=1)
  1289. |0- CallExpr:
  1290. |- Method: NameExpr: 'orth$$fail'
  1291. \- Arguments: (Len=1)
  1292. \0- LiteralExpr: type=cstr, value=Segmentation Fault Caught
  1293. \-- Runoff Clause: IfExpr:
  1294. |- Condition: BinOpExpr (Operator='==')
  1295. |- LHS: NameExpr: 'code'
  1296. \- RHS: LiteralExpr: type=int, value=6
  1297. |- Body: BlockBody: (N_Statements=1)
  1298. |0- CallExpr:
  1299. |- Method: NameExpr: 'orth$$fail'
  1300. \- Arguments: (Len=1)
  1301. \0- LiteralExpr: type=cstr, value=Abort (malloc) Fault Caught
  1302. \-- Runoff Clause: BlockBody: (N_Statements=1)
  1303. |0- CallExpr:
  1304. |- Method: NameExpr: 'orth$$fail'
  1305. \- Arguments: (Len=1)
  1306. \0- BinOpExpr (Operator='+')
  1307. |- LHS: LiteralExpr: type=cstr, value=??? Fault Caught -
  1308. \- RHS: CallExpr:
  1309. |- Method: AccessorExpr (Mode=':')
  1310. |- Object: NameExpr: 'code'
  1311. \- Field: str
  1312. \- Arguments: (Len=0)
  1313. \1- ReturnExpr: <void>
  1314. |28- SepExpr (Consumed=2)
  1315. |29- FileNode: (N_Statements=7)
  1316. |0- SepExpr (Consumed=1)
  1317. |1- IntrinsicExpr: '@declare_c_func("signal", "ptr", "(...)")@'
  1318. |2- SepExpr (Consumed=2)
  1319. |3- TypeDeclHead: `SignalHandler` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`void`
  1320. |4- SepExpr (Consumed=2)
  1321. |5- FunctionDecl:
  1322. |- Head: FunctionDeclHead: Name='system::set_interrupt_handler' Type='void' Nargs=2
  1323. |0- int id
  1324. \1- SignalHandler h
  1325. |0- CallExpr:
  1326. |- Method: NameExpr: 'signal'
  1327. \- Arguments: (Len=2)
  1328. |0- NameExpr: 'id'
  1329. \1- NameExpr: 'h'
  1330. \1- ReturnExpr: <void>
  1331. |6- SepExpr (Consumed=1)
  1332. |30- SepExpr (Consumed=1)
  1333. |31- FunctionDecl:
  1334. |- Head: FunctionDeclHead: Name='orth::install_sigsev_handler' Type='void' Nargs=0
  1335. |0- CallExpr:
  1336. |- Method: NameExpr: 'system$$set_interrupt_handler'
  1337. \- Arguments: (Len=2)
  1338. |0- LiteralExpr: type=int, value=11
  1339. \1- CastExpr (Target='SignalHandler')
  1340. \- Value: NameExpr: '__orth_sig_h'
  1341. |1- CallExpr:
  1342. |- Method: NameExpr: 'system$$set_interrupt_handler'
  1343. \- Arguments: (Len=2)
  1344. |0- LiteralExpr: type=int, value=6
  1345. \1- CastExpr (Target='SignalHandler')
  1346. \- Value: NameExpr: '__orth_sig_h'
  1347. \2- ReturnExpr: <void>
  1348. |32- SepExpr (Consumed=1)
  1349. |12- SepExpr (Consumed=4)
  1350. |13- TypeDecl:
  1351. |- Head: TypeDeclHead: `File` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  1352. \- Body: TypeDeclBody: (N_Statements=15)
  1353. |0- DeclExpr: 'cstr path'
  1354. |1- DeclExpr: 'cstr mode'
  1355. |2- DeclExpr: 'bool writable'
  1356. |3- DeclExpr: 'bool reached_eof'
  1357. |4- DeclExpr: 'bool closed'
  1358. |5- DeclExpr: 'ptr _file'
  1359. |6- FunctionDecl:
  1360. |- Head: FunctionDeclHead: Name='File::open' Type='File' Nargs=2
  1361. |0- cstr path
  1362. \1- cstr mode
  1363. |0- AssignmentExpr (Operator='=')
  1364. |- LHS: DeclExpr: 'File f'
  1365. \- RHS: CastExpr (Target='File')
  1366. \- Value: CallExpr:
  1367. |- Method: NameExpr: 'malloc'
  1368. \- Arguments: (Len=1)
  1369. \0- IntrinsicExpr: '@sizeof(File)@'
  1370. |1- AssignmentExpr (Operator='=')
  1371. |- LHS: AccessorExpr (Mode='.')
  1372. |- Object: NameExpr: 'f'
  1373. \- Field: writable
  1374. \- RHS: CallExpr:
  1375. |- Method: AccessorExpr (Mode=':')
  1376. |- Object: NameExpr: 'mode'
  1377. \- Field: contains
  1378. \- Arguments: (Len=1)
  1379. \0- LiteralExpr: type=cstr, value=w
  1380. |2- AssignmentExpr (Operator='=')
  1381. |- LHS: AccessorExpr (Mode='.')
  1382. |- Object: NameExpr: 'f'
  1383. \- Field: _file
  1384. \- RHS: CallExpr:
  1385. |- Method: NameExpr: 'fopen'
  1386. \- Arguments: (Len=2)
  1387. |0- NameExpr: 'path'
  1388. \1- NameExpr: 'mode'
  1389. |3- IfExpr:
  1390. |- Condition: BinOpExpr (Operator='==')
  1391. |- LHS: CastExpr (Target='int')
  1392. \- Value: CastExpr (Target='ptr')
  1393. \- Value: AccessorExpr (Mode='.')
  1394. |- Object: NameExpr: 'f'
  1395. \- Field: _file
  1396. \- RHS: LiteralExpr: type=int, value=0
  1397. |- Body: BlockBody: (N_Statements=1)
  1398. |0- CallExpr:
  1399. |- Method: AccessorExpr (Mode='::')
  1400. |- Object: NameExpr: 'orth'
  1401. \- Field: fail
  1402. \- Arguments: (Len=1)
  1403. \0- LiteralExpr: type=cstr, value=***FATAL fileio/File::open error, fopen->0***\n
  1404. |4- AssignmentExpr (Operator='=')
  1405. |- LHS: AccessorExpr (Mode='.')
  1406. |- Object: NameExpr: 'f'
  1407. \- Field: mode
  1408. \- RHS: NameExpr: 'mode'
  1409. |5- AssignmentExpr (Operator='=')
  1410. |- LHS: AccessorExpr (Mode='.')
  1411. |- Object: NameExpr: 'f'
  1412. \- Field: path
  1413. \- RHS: NameExpr: 'path'
  1414. |6- AssignmentExpr (Operator='=')
  1415. |- LHS: AccessorExpr (Mode='.')
  1416. |- Object: NameExpr: 'f'
  1417. \- Field: reached_eof
  1418. \- RHS: CastExpr (Target='bool')
  1419. \- Value: LiteralExpr: type=int, value=0
  1420. |7- AssignmentExpr (Operator='=')
  1421. |- LHS: AccessorExpr (Mode='.')
  1422. |- Object: NameExpr: 'f'
  1423. \- Field: closed
  1424. \- RHS: CastExpr (Target='bool')
  1425. \- Value: LiteralExpr: type=int, value=0
  1426. \8- ReturnExpr: NameExpr: 'f'
  1427. |7- FunctionDecl:
  1428. |- Head: FunctionDeclHead: Name='File::exists' Type='bool' Nargs=1
  1429. \0- cstr path
  1430. |0- AssignmentExpr (Operator='=')
  1431. |- LHS: DeclExpr: 'ptr file'
  1432. \- RHS: CallExpr:
  1433. |- Method: NameExpr: 'fopen'
  1434. \- Arguments: (Len=2)
  1435. |0- NameExpr: 'path'
  1436. \1- LiteralExpr: type=cstr, value=r
  1437. |1- IfExpr:
  1438. |- Condition: BinOpExpr (Operator='==')
  1439. |- LHS: NameExpr: 'file'
  1440. \- RHS: LiteralExpr: type=ptr, value=0
  1441. |- Body: BlockBody: (N_Statements=1)
  1442. |0- ReturnExpr: LiteralExpr: type=bool, value=0
  1443. |2- CallExpr:
  1444. |- Method: NameExpr: 'fclose'
  1445. \- Arguments: (Len=1)
  1446. \0- NameExpr: 'file'
  1447. \3- ReturnExpr: LiteralExpr: type=bool, value=1
  1448. |8- FunctionDecl:
  1449. |- Head: FunctionDeclHead: Name='File:ready' Type='bool' Nargs=1
  1450. \0- File f
  1451. |0- IfExpr:
  1452. |- Condition: BinOpExpr (Operator='==')
  1453. |- LHS: AccessorExpr (Mode='.')
  1454. |- Object: NameExpr: 'f'
  1455. \- Field: reached_eof
  1456. \- RHS: CastExpr (Target='bool')
  1457. \- Value: LiteralExpr: type=int, value=0
  1458. |- Body: BlockBody: (N_Statements=1)
  1459. |0- ReturnExpr: CastExpr (Target='bool')
  1460. \- Value: LiteralExpr: type=int, value=1
  1461. \1- ReturnExpr: AccessorExpr (Mode='.')
  1462. |- Object: NameExpr: 'f'
  1463. \- Field: writable
  1464. |9- FunctionDecl:
  1465. |- Head: FunctionDeclHead: Name='File:readline' Type='cstr' Nargs=1
  1466. \0- File f
  1467. |0- AssignmentExpr (Operator='=')
  1468. |- LHS: DeclExpr: 'int BLOCK_SIZE'
  1469. \- RHS: LiteralExpr: type=int, value=63
  1470. |1- AssignmentExpr (Operator='=')
  1471. |- LHS: DeclExpr: 'cstr buf'
  1472. \- RHS: CallExpr:
  1473. |- Method: NameExpr: 'malloc'
  1474. \- Arguments: (Len=1)
  1475. \0- NameExpr: 'BLOCK_SIZE'
  1476. |2- AssignmentExpr (Operator='=')
  1477. |- LHS: IndexExpr
  1478. |- Array: NameExpr: 'buf'
  1479. \- Value: LiteralExpr: type=int, value=0
  1480. \- RHS: IndexExpr
  1481. |- Array: GroupingExpr: LiteralExpr: type=cstr, value=\0
  1482. \- Value: LiteralExpr: type=int, value=0
  1483. |3- AssignmentExpr (Operator='=')
  1484. |- LHS: DeclExpr: 'int buf_sz'
  1485. \- RHS: NameExpr: 'BLOCK_SIZE'
  1486. |4- DeclExpr: 'cstr new_buf'
  1487. |5- AssignmentExpr (Operator='=')
  1488. |- LHS: DeclExpr: 'int last_size'
  1489. \- RHS: UnOpExpr (Operator='-')
  1490. \- Value: LiteralExpr: type=int, value=1
  1491. |6- DeclExpr: 'cstr ra_buf'
  1492. |7- WhileExpr:
  1493. |- Condition: BinOpExpr (Operator='!=')
  1494. |- LHS: CallExpr:
  1495. |- Method: AccessorExpr (Mode=':')
  1496. |- Object: NameExpr: 'buf'
  1497. \- Field: len
  1498. \- Arguments: (Len=0)
  1499. \- RHS: NameExpr: 'last_size'
  1500. |- Body: BlockBody: (N_Statements=3)
  1501. |0- AssignmentExpr (Operator='=')
  1502. |- LHS: NameExpr: 'last_size'
  1503. \- RHS: CallExpr:
  1504. |- Method: AccessorExpr (Mode=':')
  1505. |- Object: NameExpr: 'buf'
  1506. \- Field: len
  1507. \- Arguments: (Len=0)
  1508. |1- CallExpr:
  1509. |- Method: NameExpr: 'fgets'
  1510. \- Arguments: (Len=3)
  1511. |0- CallExpr:
  1512. |- Method: AccessorExpr (Mode=':')
  1513. |- Object: NameExpr: 'buf'
  1514. \- Field: offset
  1515. \- Arguments: (Len=1)
  1516. \0- CallExpr:
  1517. |- Method: AccessorExpr (Mode=':')
  1518. |- Object: NameExpr: 'buf'
  1519. \- Field: len
  1520. \- Arguments: (Len=0)
  1521. |1- NameExpr: 'BLOCK_SIZE'
  1522. \2- AccessorExpr (Mode='.')
  1523. |- Object: NameExpr: 'f'
  1524. \- Field: _file
  1525. |2- IfExpr:
  1526. |- Condition: BinOpExpr (Operator='==')
  1527. |- LHS: CallExpr:
  1528. |- Method: AccessorExpr (Mode=':')
  1529. |- Object: NameExpr: 'buf'
  1530. \- Field: len
  1531. \- Arguments: (Len=0)
  1532. \- RHS: LiteralExpr: type=int, value=0
  1533. |- Body: BlockBody: (N_Statements=2)
  1534. |0- AssignmentExpr (Operator='=')
  1535. |- LHS: AccessorExpr (Mode='.')
  1536. |- Object: NameExpr: 'f'
  1537. \- Field: reached_eof
  1538. \- RHS: LiteralExpr: type=bool, value=1
  1539. |1- ReturnExpr: NameExpr: 'buf'
  1540. \-- Runoff Clause: IfExpr:
  1541. |- Condition: BinOpExpr (Operator='==')
  1542. |- LHS: IndexExpr
  1543. |- Array: NameExpr: 'buf'
  1544. \- Value: BinOpExpr (Operator='-')
  1545. |- LHS: CallExpr:
  1546. |- Method: AccessorExpr (Mode=':')
  1547. |- Object: NameExpr: 'buf'
  1548. \- Field: len
  1549. \- Arguments: (Len=0)
  1550. \- RHS: LiteralExpr: type=int, value=1
  1551. \- RHS: CastExpr (Target='byte')
  1552. \- Value: CallExpr:
  1553. |- Method: NameExpr: 'ord'
  1554. \- Arguments: (Len=1)
  1555. \0- LiteralExpr: type=cstr, value=\n
  1556. |- Body: BlockBody: (N_Statements=1)
  1557. |0- ReturnExpr: NameExpr: 'buf'
  1558. \-- Runoff Clause: BlockBody: (N_Statements=6)
  1559. |0- AssignmentExpr (Operator='+=')
  1560. |- LHS: NameExpr: 'buf_sz'
  1561. \- RHS: NameExpr: 'BLOCK_SIZE'
  1562. |1- AssignmentExpr (Operator='=')
  1563. |- LHS: NameExpr: 'ra_buf'
  1564. \- RHS: CallExpr:
  1565. |- Method: NameExpr: 'malloc'
  1566. \- Arguments: (Len=1)
  1567. \0- NameExpr: 'buf_sz'
  1568. |2- CallExpr:
  1569. |- Method: NameExpr: 'memcpy'
  1570. \- Arguments: (Len=3)
  1571. |0- NameExpr: 'ra_buf'
  1572. |1- NameExpr: 'buf'
  1573. \2- BinOpExpr (Operator='-')
  1574. |- LHS: NameExpr: 'buf_sz'
  1575. \- RHS: NameExpr: 'BLOCK_SIZE'
  1576. |3- CallExpr:
  1577. |- Method: NameExpr: 'free'
  1578. \- Arguments: (Len=1)
  1579. \0- NameExpr: 'buf'
  1580. |4- AssignmentExpr (Operator='=')
  1581. |- LHS: NameExpr: 'buf'
  1582. \- RHS: NameExpr: 'ra_buf'
  1583. |5- IfExpr:
  1584. |- Condition: BinOpExpr (Operator='==')
  1585. |- LHS: CastExpr (Target='int')
  1586. \- Value: CastExpr (Target='ptr')
  1587. \- Value: NameExpr: 'buf'
  1588. \- RHS: LiteralExpr: type=int, value=0
  1589. |- Body: BlockBody: (N_Statements=2)
  1590. |0- CallExpr:
  1591. |- Method: NameExpr: 'printf'
  1592. \- Arguments: (Len=2)
  1593. |0- LiteralExpr: type=cstr, value=***FATAL fileio/File::readline error, realloc->0 for req_sz=%i***\n
  1594. \1- NameExpr: 'buf_sz'
  1595. |1- CallExpr:
  1596. |- Method: NameExpr: 'exit'
  1597. \- Arguments: (Len=1)
  1598. \0- LiteralExpr: type=int, value=1
  1599. |8- AssignmentExpr (Operator='=')
  1600. |- LHS: AccessorExpr (Mode='.')
  1601. |- Object: NameExpr: 'f'
  1602. \- Field: reached_eof
  1603. \- RHS: CastExpr (Target='bool')
  1604. \- Value: LiteralExpr: type=int, value=1
  1605. \9- ReturnExpr: NameExpr: 'buf'
  1606. |10- FunctionDecl:
  1607. |- Head: FunctionDeclHead: Name='File:readall' Type='cstr' Nargs=1
  1608. \0- File f
  1609. |0- AssignmentExpr (Operator='=')
  1610. |- LHS: DeclExpr: 'cstr contents'
  1611. \- RHS: CallExpr:
  1612. |- Method: AccessorExpr (Mode=':')
  1613. |- Object: NameExpr: 'f'
  1614. \- Field: readline
  1615. \- Arguments: (Len=0)
  1616. |1- DeclExpr: 'cstr new_contents'
  1617. |2- WhileExpr:
  1618. |- Condition: CallExpr:
  1619. |- Method: AccessorExpr (Mode=':')
  1620. |- Object: NameExpr: 'f'
  1621. \- Field: ready
  1622. \- Arguments: (Len=0)
  1623. |- Body: BlockBody: (N_Statements=3)
  1624. |0- AssignmentExpr (Operator='=')
  1625. |- LHS: NameExpr: 'new_contents'
  1626. \- RHS: BinOpExpr (Operator='+')
  1627. |- LHS: NameExpr: 'contents'
  1628. \- RHS: CallExpr:
  1629. |- Method: AccessorExpr (Mode=':')
  1630. |- Object: NameExpr: 'f'
  1631. \- Field: readline
  1632. \- Arguments: (Len=0)
  1633. |1- CallExpr:
  1634. |- Method: AccessorExpr (Mode=':')
  1635. |- Object: NameExpr: 'contents'
  1636. \- Field: free
  1637. \- Arguments: (Len=0)
  1638. |2- AssignmentExpr (Operator='=')
  1639. |- LHS: NameExpr: 'contents'
  1640. \- RHS: NameExpr: 'new_contents'
  1641. \3- ReturnExpr: NameExpr: 'contents'
  1642. |11- FunctionDecl:
  1643. |- Head: FunctionDeclHead: Name='File:write' Type='void' Nargs=2
  1644. |0- File f
  1645. \1- cstr s
  1646. |0- CallExpr:
  1647. |- Method: NameExpr: 'fprintf'
  1648. \- Arguments: (Len=3)
  1649. |0- AccessorExpr (Mode='.')
  1650. |- Object: NameExpr: 'f'
  1651. \- Field: _file
  1652. |1- LiteralExpr: type=cstr, value=%s
  1653. \2- NameExpr: 's'
  1654. \1- ReturnExpr: <void>
  1655. |12- FunctionDecl:
  1656. |- Head: FunctionDeclHead: Name='File:writeln' Type='void' Nargs=2
  1657. |0- File f
  1658. \1- cstr s
  1659. |0- CallExpr:
  1660. |- Method: NameExpr: 'fprintf'
  1661. \- Arguments: (Len=3)
  1662. |0- AccessorExpr (Mode='.')
  1663. |- Object: NameExpr: 'f'
  1664. \- Field: _file
  1665. |1- LiteralExpr: type=cstr, value=%s\n
  1666. \2- NameExpr: 's'
  1667. \1- ReturnExpr: <void>
  1668. |13- FunctionDecl:
  1669. |- Head: FunctionDeclHead: Name='File:close' Type='void' Nargs=1
  1670. \0- File f
  1671. |0- IfExpr:
  1672. |- Condition: AccessorExpr (Mode='.')
  1673. |- Object: NameExpr: 'f'
  1674. \- Field: writable
  1675. |- Body: BlockBody: (N_Statements=1)
  1676. |0- CallExpr:
  1677. |- Method: NameExpr: 'fflush'
  1678. \- Arguments: (Len=1)
  1679. \0- CastExpr (Target='ptr')
  1680. \- Value: AccessorExpr (Mode='.')
  1681. |- Object: NameExpr: 'f'
  1682. \- Field: _file
  1683. |1- CallExpr:
  1684. |- Method: NameExpr: 'fclose'
  1685. \- Arguments: (Len=1)
  1686. \0- CastExpr (Target='ptr')
  1687. \- Value: AccessorExpr (Mode='.')
  1688. |- Object: NameExpr: 'f'
  1689. \- Field: _file
  1690. |2- AssignmentExpr (Operator='=')
  1691. |- LHS: AccessorExpr (Mode='.')
  1692. |- Object: NameExpr: 'f'
  1693. \- Field: closed
  1694. \- RHS: CastExpr (Target='bool')
  1695. \- Value: LiteralExpr: type=int, value=1
  1696. \3- ReturnExpr: <void>
  1697. \14- FunctionDecl:
  1698. |- Head: FunctionDeclHead: Name='File:free' Type='void' Nargs=1
  1699. \0- File f
  1700. |0- IfExpr:
  1701. |- Condition: BinOpExpr (Operator='==')
  1702. |- LHS: AccessorExpr (Mode='.')
  1703. |- Object: NameExpr: 'f'
  1704. \- Field: closed
  1705. \- RHS: CastExpr (Target='bool')
  1706. \- Value: LiteralExpr: type=int, value=0
  1707. |- Body: BlockBody: (N_Statements=1)
  1708. |0- CallExpr:
  1709. |- Method: AccessorExpr (Mode=':')
  1710. |- Object: NameExpr: 'f'
  1711. \- Field: close
  1712. \- Arguments: (Len=0)
  1713. |1- CallExpr:
  1714. |- Method: NameExpr: 'free'
  1715. \- Arguments: (Len=1)
  1716. \0- CastExpr (Target='ptr')
  1717. \- Value: NameExpr: 'f'
  1718. \2- ReturnExpr: <void>
  1719. |14- SepExpr (Consumed=1)
  1720. |2- FileNode: (N_Statements=7)
  1721. |0- SepExpr (Consumed=1)
  1722. |1- FileNode: (N_Statements=37)
  1723. |0- SepExpr (Consumed=2)
  1724. |1- TypeDecl:
  1725. |- Head: TypeDeclHead: `Box_cstr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1726. \- Body: TypeDeclBody: (N_Statements=1)
  1727. \0- DeclExpr: 'cstr val'
  1728. |2- SepExpr (Consumed=2)
  1729. |3- TypeDecl:
  1730. |- Head: TypeDeclHead: `Box_int` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1731. \- Body: TypeDeclBody: (N_Statements=1)
  1732. \0- DeclExpr: 'int val'
  1733. |4- SepExpr (Consumed=2)
  1734. |5- TypeDecl:
  1735. |- Head: TypeDeclHead: `Box_short` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1736. \- Body: TypeDeclBody: (N_Statements=1)
  1737. \0- DeclExpr: 'short val'
  1738. |6- SepExpr (Consumed=2)
  1739. |7- TypeDecl:
  1740. |- Head: TypeDeclHead: `Box_bool` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1741. \- Body: TypeDeclBody: (N_Statements=1)
  1742. \0- DeclExpr: 'bool val'
  1743. |8- SepExpr (Consumed=2)
  1744. |9- TypeDecl:
  1745. |- Head: TypeDeclHead: `Box_long` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1746. \- Body: TypeDeclBody: (N_Statements=1)
  1747. \0- DeclExpr: 'long val'
  1748. |10- SepExpr (Consumed=2)
  1749. |11- TypeDecl:
  1750. |- Head: TypeDeclHead: `Box_ptr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1751. \- Body: TypeDeclBody: (N_Statements=1)
  1752. \0- DeclExpr: 'ptr val'
  1753. |12- SepExpr (Consumed=2)
  1754. |13- FunctionDecl:
  1755. |- Head: FunctionDeclHead: Name='unbox::cstr' Type='cstr' Nargs=1
  1756. \0- ptr p
  1757. \0- ReturnExpr: AccessorExpr (Mode='.')
  1758. |- Object: CastExpr (Target='Box_cstr')
  1759. \- Value: NameExpr: 'p'
  1760. \- Field: val
  1761. |14- SepExpr (Consumed=2)
  1762. |15- FunctionDecl:
  1763. |- Head: FunctionDeclHead: Name='unbox::int' Type='int' Nargs=1
  1764. \0- ptr p
  1765. \0- ReturnExpr: AccessorExpr (Mode='.')
  1766. |- Object: CastExpr (Target='Box_int')
  1767. \- Value: NameExpr: 'p'
  1768. \- Field: val
  1769. |16- SepExpr (Consumed=2)
  1770. |17- FunctionDecl:
  1771. |- Head: FunctionDeclHead: Name='unbox::short' Type='short' Nargs=1
  1772. \0- ptr p
  1773. \0- ReturnExpr: AccessorExpr (Mode='.')
  1774. |- Object: CastExpr (Target='Box_short')
  1775. \- Value: NameExpr: 'p'
  1776. \- Field: val
  1777. |18- SepExpr (Consumed=2)
  1778. |19- FunctionDecl:
  1779. |- Head: FunctionDeclHead: Name='unbox::bool' Type='bool' Nargs=1
  1780. \0- ptr p
  1781. \0- ReturnExpr: AccessorExpr (Mode='.')
  1782. |- Object: CastExpr (Target='Box_bool')
  1783. \- Value: NameExpr: 'p'
  1784. \- Field: val
  1785. |20- SepExpr (Consumed=2)
  1786. |21- FunctionDecl:
  1787. |- Head: FunctionDeclHead: Name='unbox::long' Type='long' Nargs=1
  1788. \0- ptr p
  1789. \0- ReturnExpr: AccessorExpr (Mode='.')
  1790. |- Object: CastExpr (Target='Box_long')
  1791. \- Value: NameExpr: 'p'
  1792. \- Field: val
  1793. |22- SepExpr (Consumed=2)
  1794. |23- FunctionDecl:
  1795. |- Head: FunctionDeclHead: Name='unbox::ptr' Type='ptr' Nargs=1
  1796. \0- ptr p
  1797. \0- ReturnExpr: AccessorExpr (Mode='.')
  1798. |- Object: CastExpr (Target='Box_ptr')
  1799. \- Value: NameExpr: 'p'
  1800. \- Field: val
  1801. |24- SepExpr (Consumed=2)
  1802. |25- FunctionDecl:
  1803. |- Head: FunctionDeclHead: Name='unbox_l::cstr' Type='cstr' Nargs=1
  1804. \0- long p
  1805. \0- ReturnExpr: AccessorExpr (Mode='.')
  1806. |- Object: CastExpr (Target='Box_cstr')
  1807. \- Value: CastExpr (Target='ptr')
  1808. \- Value: NameExpr: 'p'
  1809. \- Field: val
  1810. |26- SepExpr (Consumed=2)
  1811. |27- FunctionDecl:
  1812. |- Head: FunctionDeclHead: Name='unbox_l::int' Type='int' Nargs=1
  1813. \0- long p
  1814. \0- ReturnExpr: AccessorExpr (Mode='.')
  1815. |- Object: CastExpr (Target='Box_int')
  1816. \- Value: CastExpr (Target='ptr')
  1817. \- Value: NameExpr: 'p'
  1818. \- Field: val
  1819. |28- SepExpr (Consumed=2)
  1820. |29- FunctionDecl:
  1821. |- Head: FunctionDeclHead: Name='unbox_l::short' Type='short' Nargs=1
  1822. \0- long p
  1823. \0- ReturnExpr: AccessorExpr (Mode='.')
  1824. |- Object: CastExpr (Target='Box_short')
  1825. \- Value: CastExpr (Target='ptr')
  1826. \- Value: NameExpr: 'p'
  1827. \- Field: val
  1828. |30- SepExpr (Consumed=2)
  1829. |31- FunctionDecl:
  1830. |- Head: FunctionDeclHead: Name='unbox_l::bool' Type='bool' Nargs=1
  1831. \0- long p
  1832. \0- ReturnExpr: AccessorExpr (Mode='.')
  1833. |- Object: CastExpr (Target='Box_bool')
  1834. \- Value: CastExpr (Target='ptr')
  1835. \- Value: NameExpr: 'p'
  1836. \- Field: val
  1837. |32- SepExpr (Consumed=2)
  1838. |33- FunctionDecl:
  1839. |- Head: FunctionDeclHead: Name='unbox_l::long' Type='long' Nargs=1
  1840. \0- long p
  1841. \0- ReturnExpr: AccessorExpr (Mode='.')
  1842. |- Object: CastExpr (Target='Box_long')
  1843. \- Value: CastExpr (Target='ptr')
  1844. \- Value: NameExpr: 'p'
  1845. \- Field: val
  1846. |34- SepExpr (Consumed=2)
  1847. |35- FunctionDecl:
  1848. |- Head: FunctionDeclHead: Name='unbox_l::ptr' Type='ptr' Nargs=1
  1849. \0- long p
  1850. \0- ReturnExpr: AccessorExpr (Mode='.')
  1851. |- Object: CastExpr (Target='Box_ptr')
  1852. \- Value: CastExpr (Target='ptr')
  1853. \- Value: NameExpr: 'p'
  1854. \- Field: val
  1855. |36- SepExpr (Consumed=1)
  1856. |2- SepExpr (Consumed=2)
  1857. |3- TypeDecl:
  1858. |- Head: TypeDeclHead: `_ArgList_CStrBox` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1859. \- Body: TypeDeclBody: (N_Statements=1)
  1860. \0- DeclExpr: 'cstr str'
  1861. |4- SepExpr (Consumed=2)
  1862. |5- TypeDecl:
  1863. |- Head: TypeDeclHead: `ArgList` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  1864. \- Body: TypeDeclBody: (N_Statements=1)
  1865. \0- FunctionDecl:
  1866. |- Head: FunctionDeclHead: Name='ArgList:get' Type='cstr' Nargs=2
  1867. |0- ArgList l
  1868. \1- int pos
  1869. \0- ReturnExpr: CallExpr:
  1870. |- Method: AccessorExpr (Mode='::')
  1871. |- Object: NameExpr: 'unbox_l'
  1872. \- Field: cstr
  1873. \- Arguments: (Len=1)
  1874. \0- BinOpExpr (Operator='+')
  1875. |- LHS: CastExpr (Target='long')
  1876. \- Value: CastExpr (Target='ptr')
  1877. \- Value: NameExpr: 'l'
  1878. \- RHS: CastExpr (Target='long')
  1879. \- Value: GroupingExpr: BinOpExpr (Operator='*')
  1880. |- LHS: NameExpr: 'pos'
  1881. \- RHS: IntrinsicExpr: '@sizeof(ptr)@'
  1882. |6- SepExpr (Consumed=2)
  1883. |3- FileNode: (N_Statements=13)
  1884. |0- SepExpr (Consumed=1)
  1885. |1- IntrinsicExpr: '@declare_c_func("fdopen", "ptr", "(i32, i8*)")@'
  1886. |2- SepExpr (Consumed=1)
  1887. |3- IntrinsicExpr: '@declare_c_func("fflush", "void", "(i8*)")@'
  1888. |4- SepExpr (Consumed=2)
  1889. |5- DeclExpr: 'ptr stdout'
  1890. |6- SepExpr (Consumed=1)
  1891. |7- DeclExpr: 'ptr stderr'
  1892. |8- SepExpr (Consumed=1)
  1893. |9- DeclExpr: 'ptr stdin'
  1894. |10- SepExpr (Consumed=2)
  1895. |11- FunctionDecl:
  1896. |- Head: FunctionDeclHead: Name='stdio::init' Type='void' Nargs=0
  1897. |0- AssignmentExpr (Operator='=')
  1898. |- LHS: NameExpr: 'stdout'
  1899. \- RHS: CallExpr:
  1900. |- Method: NameExpr: 'fdopen'
  1901. \- Arguments: (Len=2)
  1902. |0- LiteralExpr: type=int, value=1
  1903. \1- LiteralExpr: type=cstr, value=w
  1904. |1- AssignmentExpr (Operator='=')
  1905. |- LHS: NameExpr: 'stderr'
  1906. \- RHS: CallExpr:
  1907. |- Method: NameExpr: 'fdopen'
  1908. \- Arguments: (Len=2)
  1909. |0- LiteralExpr: type=int, value=2
  1910. \1- LiteralExpr: type=cstr, value=w
  1911. |2- AssignmentExpr (Operator='=')
  1912. |- LHS: NameExpr: 'stdin'
  1913. \- RHS: CallExpr:
  1914. |- Method: NameExpr: 'fdopen'
  1915. \- Arguments: (Len=2)
  1916. |0- LiteralExpr: type=int, value=0
  1917. \1- LiteralExpr: type=cstr, value=r
  1918. \3- ReturnExpr: <void>
  1919. |12- SepExpr (Consumed=1)
  1920. |4- SepExpr (Consumed=1)
  1921. |5- FileNode: (N_Statements=12)
  1922. |0- SepExpr (Consumed=2)
  1923. |1- TypeDecl:
  1924. |- Head: TypeDeclHead: `_ProfileEntry` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  1925. \- Body: TypeDeclBody: (N_Statements=8)
  1926. |0- DeclExpr: '_ProfileEntry _next'
  1927. |1- DeclExpr: 'cstr fname'
  1928. |2- DeclExpr: 'long total_time'
  1929. |3- DeclExpr: 'long exclusive_time'
  1930. |4- DeclExpr: 'long exc_entry_time'
  1931. |5- DeclExpr: 'long tot_entry_time'
  1932. |6- DeclExpr: 'int stack_count'
  1933. \7- DeclExpr: 'int entrance_count'
  1934. |2- DeclExpr: '_ProfileEntry __profiler_entry_chain_head'
  1935. |3- DeclExpr: '_ProfileEntry __profiler_entry_chain_tail'
  1936. |4- FunctionDecl:
  1937. |- Head: FunctionDeclHead: Name='orth::internal::hooks::make_profile_entry' Type='_ProfileEntry' Nargs=1
  1938. \0- cstr name
  1939. |0- AssignmentExpr (Operator='=')
  1940. |- LHS: DeclExpr: '_ProfileEntry entry'
  1941. \- RHS: CastExpr (Target='_ProfileEntry')
  1942. \- Value: CallExpr:
  1943. |- Method: NameExpr: 'malloc'
  1944. \- Arguments: (Len=1)
  1945. \0- IntrinsicExpr: '@sizeof(_ProfileEntry)@'
  1946. |1- AssignmentExpr (Operator='=')
  1947. |- LHS: AccessorExpr (Mode='.')
  1948. |- Object: NameExpr: 'entry'
  1949. \- Field: fname
  1950. \- RHS: NameExpr: 'name'
  1951. |2- AssignmentExpr (Operator='=')
  1952. |- LHS: AccessorExpr (Mode='.')
  1953. |- Object: NameExpr: 'entry'
  1954. \- Field: total_time
  1955. \- RHS: CastExpr (Target='long')
  1956. \- Value: LiteralExpr: type=int, value=0
  1957. |3- AssignmentExpr (Operator='=')
  1958. |- LHS: AccessorExpr (Mode='.')
  1959. |- Object: NameExpr: 'entry'
  1960. \- Field: exclusive_time
  1961. \- RHS: CastExpr (Target='long')
  1962. \- Value: LiteralExpr: type=int, value=0
  1963. |4- AssignmentExpr (Operator='=')
  1964. |- LHS: AccessorExpr (Mode='.')
  1965. |- Object: NameExpr: 'entry'
  1966. \- Field: exc_entry_time
  1967. \- RHS: CastExpr (Target='long')
  1968. \- Value: LiteralExpr: type=int, value=0
  1969. |5- AssignmentExpr (Operator='=')
  1970. |- LHS: AccessorExpr (Mode='.')
  1971. |- Object: NameExpr: 'entry'
  1972. \- Field: tot_entry_time
  1973. \- RHS: CastExpr (Target='long')
  1974. \- Value: LiteralExpr: type=int, value=0
  1975. |6- AssignmentExpr (Operator='=')
  1976. |- LHS: AccessorExpr (Mode='.')
  1977. |- Object: NameExpr: 'entry'
  1978. \- Field: stack_count
  1979. \- RHS: LiteralExpr: type=int, value=0
  1980. |7- AssignmentExpr (Operator='=')
  1981. |- LHS: AccessorExpr (Mode='.')
  1982. |- Object: NameExpr: 'entry'
  1983. \- Field: entrance_count
  1984. \- RHS: LiteralExpr: type=int, value=0
  1985. |8- AssignmentExpr (Operator='=')
  1986. |- LHS: AccessorExpr (Mode='.')
  1987. |- Object: NameExpr: 'entry'
  1988. \- Field: _next
  1989. \- RHS: CastExpr (Target='_ProfileEntry')
  1990. \- Value: LiteralExpr: type=ptr, value=0
  1991. \9- ReturnExpr: NameExpr: 'entry'
  1992. |5- FunctionDecl:
  1993. |- Head: FunctionDeclHead: Name='orth::internal::hooks::get_profile_entry' Type='_ProfileEntry' Nargs=1
  1994. \0- cstr name
  1995. |0- AssignmentExpr (Operator='=')
  1996. |- LHS: DeclExpr: '_ProfileEntry curr'
  1997. \- RHS: NameExpr: '__profiler_entry_chain_head'
  1998. |1- WhileExpr:
  1999. |- Condition: BinOpExpr (Operator='!=')
  2000. |- LHS: CastExpr (Target='int')
  2001. \- Value: CastExpr (Target='ptr')
  2002. \- Value: NameExpr: 'curr'
  2003. \- RHS: CastExpr (Target='int')
  2004. \- Value: LiteralExpr: type=ptr, value=0
  2005. |- Body: BlockBody: (N_Statements=2)
  2006. |0- IfExpr:
  2007. |- Condition: BinOpExpr (Operator='==')
  2008. |- LHS: AccessorExpr (Mode='.')
  2009. |- Object: NameExpr: 'curr'
  2010. \- Field: fname
  2011. \- RHS: NameExpr: 'name'
  2012. |- Body: BlockBody: (N_Statements=1)
  2013. |0- ReturnExpr: NameExpr: 'curr'
  2014. |1- AssignmentExpr (Operator='=')
  2015. |- LHS: NameExpr: 'curr'
  2016. \- RHS: AccessorExpr (Mode='.')
  2017. |- Object: NameExpr: 'curr'
  2018. \- Field: _next
  2019. |2- AssignmentExpr (Operator='=')
  2020. |- LHS: AccessorExpr (Mode='.')
  2021. |- Object: NameExpr: '__profiler_entry_chain_tail'
  2022. \- Field: _next
  2023. \- RHS: CallExpr:
  2024. |- Method: NameExpr: 'orth$$internal$$hooks$$make_profile_entry'
  2025. \- Arguments: (Len=1)
  2026. \0- NameExpr: 'name'
  2027. |3- AssignmentExpr (Operator='=')
  2028. |- LHS: NameExpr: '__profiler_entry_chain_tail'
  2029. \- RHS: AccessorExpr (Mode='.')
  2030. |- Object: NameExpr: '__profiler_entry_chain_tail'
  2031. \- Field: _next
  2032. \4- ReturnExpr: NameExpr: '__profiler_entry_chain_tail'
  2033. |6- FunctionDecl:
  2034. |- Head: FunctionDeclHead: Name='orth::internal::hooks::profile_enter' Type='void' Nargs=1
  2035. \0- cstr name
  2036. |0- IfExpr:
  2037. |- Condition: BinOpExpr (Operator='!=')
  2038. |- LHS: CastExpr (Target='int')
  2039. \- Value: CastExpr (Target='ptr')
  2040. \- Value: NameExpr: '__profiler_entry_chain_tail'
  2041. \- RHS: CastExpr (Target='int')
  2042. \- Value: CastExpr (Target='ptr')
  2043. \- Value: NameExpr: '__profiler_entry_chain_head'
  2044. |- Body: BlockBody: (N_Statements=2)
  2045. |0- AssignmentExpr (Operator='=')
  2046. |- LHS: DeclExpr: '_ProfileEntry last'
  2047. \- RHS: CallExpr:
  2048. |- Method: NameExpr: 'orth$$internal$$hooks$$get_profile_entry'
  2049. \- Arguments: (Len=1)
  2050. \0- AccessorExpr (Mode='.')
  2051. |- Object: NameExpr: '__stack_tail'
  2052. \- Field: name
  2053. |1- AssignmentExpr (Operator='+=')
  2054. |- LHS: AccessorExpr (Mode='.')
  2055. |- Object: NameExpr: 'last'
  2056. \- Field: exclusive_time
  2057. \- RHS: BinOpExpr (Operator='-')
  2058. |- LHS: CallExpr:
  2059. |- Method: NameExpr: 'clock'
  2060. \- Arguments: (Len=0)
  2061. \- RHS: AccessorExpr (Mode='.')
  2062. |- Object: NameExpr: 'last'
  2063. \- Field: exc_entry_time
  2064. |1- AssignmentExpr (Operator='=')
  2065. |- LHS: DeclExpr: '_ProfileEntry this'
  2066. \- RHS: CallExpr:
  2067. |- Method: NameExpr: 'orth$$internal$$hooks$$get_profile_entry'
  2068. \- Arguments: (Len=1)
  2069. \0- NameExpr: 'name'
  2070. |2- IfExpr:
  2071. |- Condition: BinOpExpr (Operator='==')
  2072. |- LHS: AccessorExpr (Mode='.')
  2073. |- Object: NameExpr: 'this'
  2074. \- Field: stack_count
  2075. \- RHS: LiteralExpr: type=int, value=0
  2076. |- Body: BlockBody: (N_Statements=2)
  2077. |0- AssignmentExpr (Operator='=')
  2078. |- LHS: AccessorExpr (Mode='.')
  2079. |- Object: NameExpr: 'this'
  2080. \- Field: tot_entry_time
  2081. \- RHS: CallExpr:
  2082. |- Method: NameExpr: 'clock'
  2083. \- Arguments: (Len=0)
  2084. |1- AssignmentExpr (Operator='=')
  2085. |- LHS: AccessorExpr (Mode='.')
  2086. |- Object: NameExpr: 'this'
  2087. \- Field: exc_entry_time
  2088. \- RHS: AccessorExpr (Mode='.')
  2089. |- Object: NameExpr: 'this'
  2090. \- Field: tot_entry_time
  2091. \-- Runoff Clause: BlockBody: (N_Statements=1)
  2092. |0- AssignmentExpr (Operator='=')
  2093. |- LHS: AccessorExpr (Mode='.')
  2094. |- Object: NameExpr: 'this'
  2095. \- Field: exc_entry_time
  2096. \- RHS: CallExpr:
  2097. |- Method: NameExpr: 'clock'
  2098. \- Arguments: (Len=0)
  2099. |3- AssignmentExpr (Operator='+=')
  2100. |- LHS: AccessorExpr (Mode='.')
  2101. |- Object: NameExpr: 'this'
  2102. \- Field: stack_count
  2103. \- RHS: LiteralExpr: type=int, value=1
  2104. |4- AssignmentExpr (Operator='+=')
  2105. |- LHS: AccessorExpr (Mode='.')
  2106. |- Object: NameExpr: 'this'
  2107. \- Field: entrance_count
  2108. \- RHS: LiteralExpr: type=int, value=1
  2109. \5- ReturnExpr: <void>
  2110. |7- FunctionDecl:
  2111. |- Head: FunctionDeclHead: Name='orth::internal::hooks::profile_exit' Type='void' Nargs=1
  2112. \0- cstr name
  2113. |0- AssignmentExpr (Operator='=')
  2114. |- LHS: DeclExpr: '_ProfileEntry this'
  2115. \- RHS: CallExpr:
  2116. |- Method: NameExpr: 'orth$$internal$$hooks$$get_profile_entry'
  2117. \- Arguments: (Len=1)
  2118. \0- NameExpr: 'name'
  2119. |1- AssignmentExpr (Operator='+=')
  2120. |- LHS: AccessorExpr (Mode='.')
  2121. |- Object: NameExpr: 'this'
  2122. \- Field: exclusive_time
  2123. \- RHS: BinOpExpr (Operator='-')
  2124. |- LHS: CallExpr:
  2125. |- Method: NameExpr: 'clock'
  2126. \- Arguments: (Len=0)
  2127. \- RHS: AccessorExpr (Mode='.')
  2128. |- Object: NameExpr: 'this'
  2129. \- Field: exc_entry_time
  2130. |2- AssignmentExpr (Operator='-=')
  2131. |- LHS: AccessorExpr (Mode='.')
  2132. |- Object: NameExpr: 'this'
  2133. \- Field: stack_count
  2134. \- RHS: LiteralExpr: type=int, value=1
  2135. |3- IfExpr:
  2136. |- Condition: BinOpExpr (Operator='==')
  2137. |- LHS: AccessorExpr (Mode='.')
  2138. |- Object: NameExpr: 'this'
  2139. \- Field: stack_count
  2140. \- RHS: LiteralExpr: type=int, value=0
  2141. |- Body: BlockBody: (N_Statements=1)
  2142. |0- AssignmentExpr (Operator='+=')
  2143. |- LHS: AccessorExpr (Mode='.')
  2144. |- Object: NameExpr: 'this'
  2145. \- Field: total_time
  2146. \- RHS: BinOpExpr (Operator='-')
  2147. |- LHS: CallExpr:
  2148. |- Method: NameExpr: 'clock'
  2149. \- Arguments: (Len=0)
  2150. \- RHS: AccessorExpr (Mode='.')
  2151. |- Object: NameExpr: 'this'
  2152. \- Field: tot_entry_time
  2153. |4- AssignmentExpr (Operator='=')
  2154. |- LHS: AccessorExpr (Mode='.')
  2155. |- Object: CallExpr:
  2156. |- Method: NameExpr: 'orth$$internal$$hooks$$get_profile_entry'
  2157. \- Arguments: (Len=1)
  2158. \0- AccessorExpr (Mode='.')
  2159. |- Object: AccessorExpr (Mode='.')
  2160. |- Object: NameExpr: '__stack_tail'
  2161. \- Field: _prev
  2162. \- Field: name
  2163. \- Field: exc_entry_time
  2164. \- RHS: CallExpr:
  2165. |- Method: NameExpr: 'clock'
  2166. \- Arguments: (Len=0)
  2167. \5- ReturnExpr: <void>
  2168. |8- FunctionDecl:
  2169. |- Head: FunctionDeclHead: Name='orth::internal::profile::display_profiling_data' Type='void' Nargs=0
  2170. |0- AssignmentExpr (Operator='=')
  2171. |- LHS: NameExpr: '__in_err'
  2172. \- RHS: LiteralExpr: type=bool, value=1
  2173. |1- CallExpr:
  2174. |- Method: NameExpr: 'printf'
  2175. \- Arguments: (Len=1)
  2176. \0- LiteralExpr: type=cstr, value=Profiling Data:\n
  2177. |2- AssignmentExpr (Operator='=')
  2178. |- LHS: DeclExpr: '_ProfileEntry curr'
  2179. \- RHS: NameExpr: '__profiler_entry_chain_head'
  2180. |3- WhileExpr:
  2181. |- Condition: BinOpExpr (Operator='!=')
  2182. |- LHS: CastExpr (Target='ptr')
  2183. \- Value: NameExpr: 'curr'
  2184. \- RHS: LiteralExpr: type=ptr, value=0
  2185. |- Body: BlockBody: (N_Statements=2)
  2186. |0- IfExpr:
  2187. |- Condition: BinOpExpr (Operator='&')
  2188. |- LHS: BinOpExpr (Operator='!=')
  2189. |- LHS: AccessorExpr (Mode='.')
  2190. |- Object: NameExpr: 'curr'
  2191. \- Field: fname
  2192. \- RHS: LiteralExpr: type=cstr, value=<dummy>
  2193. \- RHS: BinOpExpr (Operator='&')
  2194. |- LHS: BinOpExpr (Operator='!=')
  2195. |- LHS: AccessorExpr (Mode='.')
  2196. |- Object: NameExpr: 'curr'
  2197. \- Field: fname
  2198. \- RHS: LiteralExpr: type=cstr, value=main
  2199. \- RHS: UnOpExpr (Operator='-')
  2200. \- Value: CallExpr:
  2201. |- Method: AccessorExpr (Mode=':')
  2202. |- Object: AccessorExpr (Mode='.')
  2203. |- Object: NameExpr: 'curr'
  2204. \- Field: fname
  2205. \- Field: startswith
  2206. \- Arguments: (Len=1)
  2207. \0- LiteralExpr: type=cstr, value=orth$$internal$$
  2208. |- Body: BlockBody: (N_Statements=1)
  2209. |0- CallExpr:
  2210. |- Method: NameExpr: 'printf'
  2211. \- Arguments: (Len=5)
  2212. |0- LiteralExpr: type=cstr, value= tot:%10lu exc:%10lu ent:%5lu - %s\n
  2213. |1- AccessorExpr (Mode='.')
  2214. |- Object: NameExpr: 'curr'
  2215. \- Field: total_time
  2216. |2- AccessorExpr (Mode='.')
  2217. |- Object: NameExpr: 'curr'
  2218. \- Field: exclusive_time
  2219. |3- AccessorExpr (Mode='.')
  2220. |- Object: NameExpr: 'curr'
  2221. \- Field: entrance_count
  2222. \4- AccessorExpr (Mode='.')
  2223. |- Object: NameExpr: 'curr'
  2224. \- Field: fname
  2225. |1- AssignmentExpr (Operator='=')
  2226. |- LHS: NameExpr: 'curr'
  2227. \- RHS: AccessorExpr (Mode='.')
  2228. |- Object: NameExpr: 'curr'
  2229. \- Field: _next
  2230. |4- AssignmentExpr (Operator='=')
  2231. |- LHS: NameExpr: '__in_err'
  2232. \- RHS: LiteralExpr: type=bool, value=0
  2233. \5- ReturnExpr: <void>
  2234. |9- SepExpr (Consumed=2)
  2235. |10- FunctionDecl:
  2236. |- Head: FunctionDeclHead: Name='orth::internal::profile::dump_profiling_data_csv' Type='void' Nargs=1
  2237. \0- cstr filename
  2238. |0- AssignmentExpr (Operator='=')
  2239. |- LHS: NameExpr: '__in_err'
  2240. \- RHS: LiteralExpr: type=bool, value=1
  2241. |1- AssignmentExpr (Operator='=')
  2242. |- LHS: DeclExpr: 'File out'
  2243. \- RHS: CallExpr:
  2244. |- Method: NameExpr: 'File$$open'
  2245. \- Arguments: (Len=2)
  2246. |0- NameExpr: 'filename'
  2247. \1- LiteralExpr: type=cstr, value=w
  2248. |2- AssignmentExpr (Operator='=')
  2249. |- LHS: DeclExpr: '_ProfileEntry curr'
  2250. \- RHS: NameExpr: '__profiler_entry_chain_head'
  2251. |3- CallExpr:
  2252. |- Method: NameExpr: 'fprintf'
  2253. \- Arguments: (Len=2)
  2254. |0- AccessorExpr (Mode='.')
  2255. |- Object: NameExpr: 'out'
  2256. \- Field: _file
  2257. \1- LiteralExpr: type=cstr, value=Total Time,Exclusive Time,Entry Count,Symbol Name\n
  2258. |4- WhileExpr:
  2259. |- Condition: BinOpExpr (Operator='!=')
  2260. |- LHS: CastExpr (Target='ptr')
  2261. \- Value: NameExpr: 'curr'
  2262. \- RHS: LiteralExpr: type=ptr, value=0
  2263. |- Body: BlockBody: (N_Statements=2)
  2264. |0- IfExpr:
  2265. |- Condition: BinOpExpr (Operator='&')
  2266. |- LHS: BinOpExpr (Operator='!=')
  2267. |- LHS: AccessorExpr (Mode='.')
  2268. |- Object: NameExpr: 'curr'
  2269. \- Field: fname
  2270. \- RHS: LiteralExpr: type=cstr, value=<dummy>
  2271. \- RHS: BinOpExpr (Operator='&')
  2272. |- LHS: BinOpExpr (Operator='!=')
  2273. |- LHS: AccessorExpr (Mode='.')
  2274. |- Object: NameExpr: 'curr'
  2275. \- Field: fname
  2276. \- RHS: LiteralExpr: type=cstr, value=main
  2277. \- RHS: UnOpExpr (Operator='-')
  2278. \- Value: CallExpr:
  2279. |- Method: AccessorExpr (Mode=':')
  2280. |- Object: AccessorExpr (Mode='.')
  2281. |- Object: NameExpr: 'curr'
  2282. \- Field: fname
  2283. \- Field: startswith
  2284. \- Arguments: (Len=1)
  2285. \0- LiteralExpr: type=cstr, value=orth$$internal$$
  2286. |- Body: BlockBody: (N_Statements=1)
  2287. |0- CallExpr:
  2288. |- Method: NameExpr: 'fprintf'
  2289. \- Arguments: (Len=6)
  2290. |0- AccessorExpr (Mode='.')
  2291. |- Object: NameExpr: 'out'
  2292. \- Field: _file
  2293. |1- LiteralExpr: type=cstr, value=%10lu,%10lu,%5lu,%s\n
  2294. |2- AccessorExpr (Mode='.')
  2295. |- Object: NameExpr: 'curr'
  2296. \- Field: total_time
  2297. |3- AccessorExpr (Mode='.')
  2298. |- Object: NameExpr: 'curr'
  2299. \- Field: exclusive_time
  2300. |4- AccessorExpr (Mode='.')
  2301. |- Object: NameExpr: 'curr'
  2302. \- Field: entrance_count
  2303. \5- AccessorExpr (Mode='.')
  2304. |- Object: NameExpr: 'curr'
  2305. \- Field: fname
  2306. |1- AssignmentExpr (Operator='=')
  2307. |- LHS: NameExpr: 'curr'
  2308. \- RHS: AccessorExpr (Mode='.')
  2309. |- Object: NameExpr: 'curr'
  2310. \- Field: _next
  2311. |5- CallExpr:
  2312. |- Method: AccessorExpr (Mode=':')
  2313. |- Object: NameExpr: 'out'
  2314. \- Field: close
  2315. \- Arguments: (Len=0)
  2316. |6- CallExpr:
  2317. |- Method: NameExpr: 'printf'
  2318. \- Arguments: (Len=2)
  2319. |0- LiteralExpr: type=cstr, value=Data written to '%s'\n
  2320. \1- NameExpr: 'filename'
  2321. |7- AssignmentExpr (Operator='=')
  2322. |- LHS: NameExpr: '__in_err'
  2323. \- RHS: LiteralExpr: type=bool, value=0
  2324. \8- ReturnExpr: <void>
  2325. |11- FunctionDecl:
  2326. |- Head: FunctionDeclHead: Name='orth::internal::profile::install_profiler' Type='void' Nargs=0
  2327. |0- AssignmentExpr (Operator='=')
  2328. |- LHS: NameExpr: '__fex_addtl_callback_enter'
  2329. \- RHS: CastExpr (Target='AddtlEnterExitCallback')
  2330. \- Value: NameExpr: 'orth$$internal$$hooks$$profile_enter'
  2331. |1- AssignmentExpr (Operator='=')
  2332. |- LHS: NameExpr: '__fex_addtl_callback_exit'
  2333. \- RHS: CastExpr (Target='AddtlEnterExitCallback')
  2334. \- Value: NameExpr: 'orth$$internal$$hooks$$profile_exit'
  2335. |2- AssignmentExpr (Operator='=')
  2336. |- LHS: NameExpr: '__profiler_entry_chain_head'
  2337. \- RHS: CallExpr:
  2338. |- Method: NameExpr: 'orth$$internal$$hooks$$make_profile_entry'
  2339. \- Arguments: (Len=1)
  2340. \0- LiteralExpr: type=cstr, value=<dummy>
  2341. |3- AssignmentExpr (Operator='=')
  2342. |- LHS: NameExpr: '__profiler_entry_chain_tail'
  2343. \- RHS: NameExpr: '__profiler_entry_chain_head'
  2344. \4- ReturnExpr: <void>
  2345. |6- SepExpr (Consumed=1)
  2346. |7- FileNode: (N_Statements=5)
  2347. |0- IntrinsicExpr: '@declare_c_func("get_current_dir_name", "cstr", "()")@'
  2348. |1- IntrinsicExpr: '@declare_c_func("getenv", "cstr", "(i8*)")@'
  2349. |2- FunctionDecl:
  2350. |- Head: FunctionDeclHead: Name='os::get_cwd' Type='cstr' Nargs=0
  2351. |0- AssignmentExpr (Operator='=')
  2352. |- LHS: DeclExpr: 'cstr raw_cwd'
  2353. \- RHS: CallExpr:
  2354. |- Method: NameExpr: 'get_current_dir_name'
  2355. \- Arguments: (Len=0)
  2356. |1- AssignmentExpr (Operator='=')
  2357. |- LHS: DeclExpr: 'cstr ret'
  2358. \- RHS: CallExpr:
  2359. |- Method: AccessorExpr (Mode=':')
  2360. |- Object: NameExpr: 'raw_cwd'
  2361. \- Field: copy
  2362. \- Arguments: (Len=0)
  2363. |2- CallExpr:
  2364. |- Method: NameExpr: 'mem$$raw_free'
  2365. \- Arguments: (Len=1)
  2366. \0- NameExpr: 'raw_cwd'
  2367. \3- ReturnExpr: NameExpr: 'ret'
  2368. |3- FunctionDecl:
  2369. |- Head: FunctionDeclHead: Name='os::env::get' Type='cstr' Nargs=1
  2370. \0- cstr key
  2371. |0- IfExpr:
  2372. |- Condition: UnOpExpr (Operator='-')
  2373. \- Value: CallExpr:
  2374. |- Method: NameExpr: 'os$$env$$has'
  2375. \- Arguments: (Len=1)
  2376. \0- NameExpr: 'key'
  2377. |- Body: BlockBody: (N_Statements=1)
  2378. |0- CallExpr:
  2379. |- Method: NameExpr: 'orth$$fail'
  2380. \- Arguments: (Len=1)
  2381. \0- BinOpExpr (Operator='+')
  2382. |- LHS: LiteralExpr: type=cstr, value=os::env::get called on nonexistant key :
  2383. \- RHS: NameExpr: 'key'
  2384. \1- ReturnExpr: CallExpr:
  2385. |- Method: NameExpr: 'getenv'
  2386. \- Arguments: (Len=1)
  2387. \0- NameExpr: 'key'
  2388. |4- FunctionDecl:
  2389. |- Head: FunctionDeclHead: Name='os::env::has' Type='bool' Nargs=1
  2390. \0- cstr key
  2391. \0- ReturnExpr: BinOpExpr (Operator='!=')
  2392. |- LHS: CastExpr (Target='ptr')
  2393. \- Value: CallExpr:
  2394. |- Method: NameExpr: 'getenv'
  2395. \- Arguments: (Len=1)
  2396. \0- NameExpr: 'key'
  2397. \- RHS: LiteralExpr: type=ptr, value=0
  2398. |8- FileNode: (N_Statements=41)
  2399. |0- SepExpr (Consumed=1)
  2400. |1- FileNode: (N_Statements=47)
  2401. |0- SepExpr (Consumed=1)
  2402. |1- FileNode: (N_Statements=8)
  2403. |0- SepExpr (Consumed=1)
  2404. |1- SepExpr (Consumed=2)
  2405. |2- TypeDecl:
  2406. |- Head: TypeDeclHead: `LinkedListNode` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  2407. \- Body: TypeDeclBody: (N_Statements=4)
  2408. |0- DeclExpr: 'ptr value'
  2409. |1- DeclExpr: 'LinkedListNode next'
  2410. |2- FunctionDecl:
  2411. |- Head: FunctionDeclHead: Name='LinkedListNode::new' Type='LinkedListNode' Nargs=1
  2412. \0- ptr value
  2413. |0- AssignmentExpr (Operator='=')
  2414. |- LHS: DeclExpr: 'LinkedListNode new'
  2415. \- RHS: CastExpr (Target='LinkedListNode')
  2416. \- Value: CallExpr:
  2417. |- Method: NameExpr: 'malloc'
  2418. \- Arguments: (Len=1)
  2419. \0- IntrinsicExpr: '@sizeof(LinkedListNode)@'
  2420. |1- AssignmentExpr (Operator='=')
  2421. |- LHS: AccessorExpr (Mode='.')
  2422. |- Object: NameExpr: 'new'
  2423. \- Field: value
  2424. \- RHS: NameExpr: 'value'
  2425. |2- AssignmentExpr (Operator='=')
  2426. |- LHS: AccessorExpr (Mode='.')
  2427. |- Object: NameExpr: 'new'
  2428. \- Field: next
  2429. \- RHS: CastExpr (Target='LinkedListNode')
  2430. \- Value: LiteralExpr: type=ptr, value=0
  2431. \3- ReturnExpr: NameExpr: 'new'
  2432. \3- FunctionDecl:
  2433. |- Head: FunctionDeclHead: Name='LinkedListNode:free' Type='void' Nargs=1
  2434. \0- LinkedListNode n
  2435. |0- CallExpr:
  2436. |- Method: NameExpr: 'free'
  2437. \- Arguments: (Len=1)
  2438. \0- NameExpr: 'n'
  2439. \1- ReturnExpr: <void>
  2440. |3- SepExpr (Consumed=2)
  2441. |4- TypeDecl:
  2442. |- Head: TypeDeclHead: `ListCacheBox` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  2443. \- Body: TypeDeclBody: (N_Statements=1)
  2444. \0- DeclExpr: 'LinkedListNode node'
  2445. |5- SepExpr (Consumed=2)
  2446. |6- TypeDecl:
  2447. |- Head: TypeDeclHead: `List` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  2448. \- Body: TypeDeclBody: (N_Statements=16)
  2449. |0- DeclExpr: 'int len'
  2450. |1- DeclExpr: 'LinkedListNode head'
  2451. |2- DeclExpr: 'ptr cache'
  2452. |3- DeclExpr: 'bool cache_ready'
  2453. |4- DeclExpr: 'bool cache_alloced'
  2454. |5- FunctionDecl:
  2455. |- Head: FunctionDeclHead: Name='List::new' Type='List' Nargs=0
  2456. |0- AssignmentExpr (Operator='=')
  2457. |- LHS: DeclExpr: 'List new'
  2458. \- RHS: CastExpr (Target='List')
  2459. \- Value: CallExpr:
  2460. |- Method: NameExpr: 'malloc'
  2461. \- Arguments: (Len=1)
  2462. \0- IntrinsicExpr: '@sizeof(List)@'
  2463. |1- AssignmentExpr (Operator='=')
  2464. |- LHS: AccessorExpr (Mode='.')
  2465. |- Object: NameExpr: 'new'
  2466. \- Field: len
  2467. \- RHS: LiteralExpr: type=int, value=0
  2468. |2- AssignmentExpr (Operator='=')
  2469. |- LHS: AccessorExpr (Mode='.')
  2470. |- Object: NameExpr: 'new'
  2471. \- Field: cache_ready
  2472. \- RHS: LiteralExpr: type=bool, value=0
  2473. |3- AssignmentExpr (Operator='=')
  2474. |- LHS: AccessorExpr (Mode='.')
  2475. |- Object: NameExpr: 'new'
  2476. \- Field: cache_alloced
  2477. \- RHS: LiteralExpr: type=bool, value=0
  2478. |4- AssignmentExpr (Operator='=')
  2479. |- LHS: AccessorExpr (Mode='.')
  2480. |- Object: NameExpr: 'new'
  2481. \- Field: head
  2482. \- RHS: CastExpr (Target='LinkedListNode')
  2483. \- Value: LiteralExpr: type=ptr, value=0
  2484. \5- ReturnExpr: NameExpr: 'new'
  2485. |6- FunctionDecl:
  2486. |- Head: FunctionDeclHead: Name='List::copy' Type='List' Nargs=1
  2487. \0- List o
  2488. |0- AssignmentExpr (Operator='=')
  2489. |- LHS: DeclExpr: 'List new'
  2490. \- RHS: CallExpr:
  2491. |- Method: AccessorExpr (Mode='::')
  2492. |- Object: NameExpr: 'List'
  2493. \- Field: new
  2494. \- Arguments: (Len=0)
  2495. |1- AssignmentExpr (Operator='=')
  2496. |- LHS: DeclExpr: 'int i'
  2497. \- RHS: LiteralExpr: type=int, value=0
  2498. |2- WhileExpr:
  2499. |- Condition: BinOpExpr (Operator='<')
  2500. |- LHS: NameExpr: 'i'
  2501. \- RHS: AccessorExpr (Mode='.')
  2502. |- Object: NameExpr: 'o'
  2503. \- Field: len
  2504. |- Body: BlockBody: (N_Statements=2)
  2505. |0- CallExpr:
  2506. |- Method: AccessorExpr (Mode=':')
  2507. |- Object: NameExpr: 'new'
  2508. \- Field: append
  2509. \- Arguments: (Len=1)
  2510. \0- CallExpr:
  2511. |- Method: AccessorExpr (Mode=':')
  2512. |- Object: NameExpr: 'o'
  2513. \- Field: get
  2514. \- Arguments: (Len=1)
  2515. \0- NameExpr: 'i'
  2516. |1- AssignmentExpr (Operator='+=')
  2517. |- LHS: NameExpr: 'i'
  2518. \- RHS: LiteralExpr: type=int, value=1
  2519. \3- ReturnExpr: NameExpr: 'new'
  2520. |7- FunctionDecl:
  2521. |- Head: FunctionDeclHead: Name='List:gen_cache' Type='void' Nargs=1
  2522. \0- List l
  2523. |0- IfExpr:
  2524. |- Condition: AccessorExpr (Mode='.')
  2525. |- Object: NameExpr: 'l'
  2526. \- Field: cache_alloced
  2527. |- Body: BlockBody: (N_Statements=1)
  2528. |0- CallExpr:
  2529. |- Method: NameExpr: 'free'
  2530. \- Arguments: (Len=1)
  2531. \0- AccessorExpr (Mode='.')
  2532. |- Object: NameExpr: 'l'
  2533. \- Field: cache
  2534. |1- AssignmentExpr (Operator='=')
  2535. |- LHS: DeclExpr: 'int SOB'
  2536. \- RHS: GroupingExpr: IntrinsicExpr: '@sizeof(ListCacheBox)@'
  2537. |2- AssignmentExpr (Operator='=')
  2538. |- LHS: AccessorExpr (Mode='.')
  2539. |- Object: NameExpr: 'l'
  2540. \- Field: cache_alloced
  2541. \- RHS: LiteralExpr: type=bool, value=1
  2542. |3- AssignmentExpr (Operator='=')
  2543. |- LHS: AccessorExpr (Mode='.')
  2544. |- Object: NameExpr: 'l'
  2545. \- Field: cache_ready
  2546. \- RHS: LiteralExpr: type=bool, value=1
  2547. |4- AssignmentExpr (Operator='=')
  2548. |- LHS: AccessorExpr (Mode='.')
  2549. |- Object: NameExpr: 'l'
  2550. \- Field: cache
  2551. \- RHS: CallExpr:
  2552. |- Method: NameExpr: 'malloc'
  2553. \- Arguments: (Len=1)
  2554. \0- BinOpExpr (Operator='*')
  2555. |- LHS: NameExpr: 'SOB'
  2556. \- RHS: GroupingExpr: BinOpExpr (Operator='+')
  2557. |- LHS: AccessorExpr (Mode='.')
  2558. |- Object: NameExpr: 'l'
  2559. \- Field: len
  2560. \- RHS: LiteralExpr: type=int, value=1
  2561. |5- AssignmentExpr (Operator='=')
  2562. |- LHS: DeclExpr: 'int idx'
  2563. \- RHS: LiteralExpr: type=int, value=0
  2564. |6- AssignmentExpr (Operator='=')
  2565. |- LHS: DeclExpr: 'LinkedListNode current'
  2566. \- RHS: AccessorExpr (Mode='.')
  2567. |- Object: NameExpr: 'l'
  2568. \- Field: head
  2569. |7- DeclExpr: 'ListCacheBox box'
  2570. |8- WhileExpr:
  2571. |- Condition: BinOpExpr (Operator='<')
  2572. |- LHS: NameExpr: 'idx'
  2573. \- RHS: AccessorExpr (Mode='.')
  2574. |- Object: NameExpr: 'l'
  2575. \- Field: len
  2576. |- Body: BlockBody: (N_Statements=4)
  2577. |0- AssignmentExpr (Operator='=')
  2578. |- LHS: NameExpr: 'box'
  2579. \- RHS: CastExpr (Target='ListCacheBox')
  2580. \- Value: CastExpr (Target='ptr')
  2581. \- Value: GroupingExpr: BinOpExpr (Operator='+')
  2582. |- LHS: CastExpr (Target='long')
  2583. \- Value: AccessorExpr (Mode='.')
  2584. |- Object: NameExpr: 'l'
  2585. \- Field: cache
  2586. \- RHS: CastExpr (Target='long')
  2587. \- Value: GroupingExpr: BinOpExpr (Operator='*')
  2588. |- LHS: NameExpr: 'SOB'
  2589. \- RHS: NameExpr: 'idx'
  2590. |1- AssignmentExpr (Operator='=')
  2591. |- LHS: AccessorExpr (Mode='.')
  2592. |- Object: NameExpr: 'box'
  2593. \- Field: node
  2594. \- RHS: NameExpr: 'current'
  2595. |2- AssignmentExpr (Operator='+=')
  2596. |- LHS: NameExpr: 'idx'
  2597. \- RHS: LiteralExpr: type=int, value=1
  2598. |3- IfExpr:
  2599. |- Condition: BinOpExpr (Operator='!=')
  2600. |- LHS: CastExpr (Target='ptr')
  2601. \- Value: AccessorExpr (Mode='.')
  2602. |- Object: NameExpr: 'current'
  2603. \- Field: next
  2604. \- RHS: LiteralExpr: type=ptr, value=0
  2605. |- Body: BlockBody: (N_Statements=1)
  2606. |0- AssignmentExpr (Operator='=')
  2607. |- LHS: NameExpr: 'current'
  2608. \- RHS: AccessorExpr (Mode='.')
  2609. |- Object: NameExpr: 'current'
  2610. \- Field: next
  2611. \9- ReturnExpr: <void>
  2612. |8- FunctionDecl:
  2613. |- Head: FunctionDeclHead: Name='List:get_node' Type='LinkedListNode' Nargs=2
  2614. |0- List l
  2615. \1- int want
  2616. |0- IfExpr:
  2617. |- Condition: UnOpExpr (Operator='-')
  2618. \- Value: AccessorExpr (Mode='.')
  2619. |- Object: NameExpr: 'l'
  2620. \- Field: cache_ready
  2621. |- Body: BlockBody: (N_Statements=1)
  2622. |0- CallExpr:
  2623. |- Method: AccessorExpr (Mode=':')
  2624. |- Object: NameExpr: 'l'
  2625. \- Field: gen_cache
  2626. \- Arguments: (Len=0)
  2627. |1- IfExpr:
  2628. |- Condition: BinOpExpr (Operator='>=')
  2629. |- LHS: NameExpr: 'want'
  2630. \- RHS: AccessorExpr (Mode='.')
  2631. |- Object: NameExpr: 'l'
  2632. \- Field: len
  2633. |- Body: BlockBody: (N_Statements=1)
  2634. |0- CallExpr:
  2635. |- Method: AccessorExpr (Mode='::')
  2636. |- Object: NameExpr: 'orth'
  2637. \- Field: fail
  2638. \- Arguments: (Len=1)
  2639. \0- BinOpExpr (Operator='+')
  2640. |- LHS: LiteralExpr: type=cstr, value=Requested List pos > than exists,
  2641. \- RHS: BinOpExpr (Operator='+')
  2642. |- LHS: CallExpr:
  2643. |- Method: AccessorExpr (Mode=':')
  2644. |- Object: NameExpr: 'want'
  2645. \- Field: str
  2646. \- Arguments: (Len=0)
  2647. \- RHS: BinOpExpr (Operator='+')
  2648. |- LHS: LiteralExpr: type=cstr, value=>
  2649. \- RHS: CallExpr:
  2650. |- Method: AccessorExpr (Mode=':')
  2651. |- Object: AccessorExpr (Mode='.')
  2652. |- Object: NameExpr: 'l'
  2653. \- Field: len
  2654. \- Field: str
  2655. \- Arguments: (Len=0)
  2656. \2- ReturnExpr: AccessorExpr (Mode='.')
  2657. |- Object: GroupingExpr: CastExpr (Target='ListCacheBox')
  2658. \- Value: CastExpr (Target='ptr')
  2659. \- Value: GroupingExpr: BinOpExpr (Operator='+')
  2660. |- LHS: CastExpr (Target='long')
  2661. \- Value: AccessorExpr (Mode='.')
  2662. |- Object: NameExpr: 'l'
  2663. \- Field: cache
  2664. \- RHS: CastExpr (Target='long')
  2665. \- Value: GroupingExpr: BinOpExpr (Operator='*')
  2666. |- LHS: GroupingExpr: IntrinsicExpr: '@sizeof(ListCacheBox)@'
  2667. \- RHS: NameExpr: 'want'
  2668. \- Field: node
  2669. |9- FunctionDecl:
  2670. |- Head: FunctionDeclHead: Name='List:get' Type='ptr' Nargs=2
  2671. |0- List l
  2672. \1- int want
  2673. \0- ReturnExpr: AccessorExpr (Mode='.')
  2674. |- Object: CallExpr:
  2675. |- Method: AccessorExpr (Mode=':')
  2676. |- Object: NameExpr: 'l'
  2677. \- Field: get_node
  2678. \- Arguments: (Len=1)
  2679. \0- NameExpr: 'want'
  2680. \- Field: value
  2681. |10- FunctionDecl:
  2682. |- Head: FunctionDeclHead: Name='List:append' Type='void' Nargs=2
  2683. |0- List l
  2684. \1- ptr item
  2685. |0- AssignmentExpr (Operator='=')
  2686. |- LHS: DeclExpr: 'LinkedListNode new'
  2687. \- RHS: CallExpr:
  2688. |- Method: AccessorExpr (Mode='::')
  2689. |- Object: NameExpr: 'LinkedListNode'
  2690. \- Field: new
  2691. \- Arguments: (Len=1)
  2692. \0- NameExpr: 'item'
  2693. |1- IfExpr:
  2694. |- Condition: BinOpExpr (Operator='>')
  2695. |- LHS: AccessorExpr (Mode='.')
  2696. |- Object: NameExpr: 'l'
  2697. \- Field: len
  2698. \- RHS: LiteralExpr: type=int, value=0
  2699. |- Body: BlockBody: (N_Statements=2)
  2700. |0- AssignmentExpr (Operator='=')
  2701. |- LHS: DeclExpr: 'LinkedListNode last'
  2702. \- RHS: CallExpr:
  2703. |- Method: AccessorExpr (Mode=':')
  2704. |- Object: NameExpr: 'l'
  2705. \- Field: get_node
  2706. \- Arguments: (Len=1)
  2707. \0- BinOpExpr (Operator='-')
  2708. |- LHS: AccessorExpr (Mode='.')
  2709. |- Object: NameExpr: 'l'
  2710. \- Field: len
  2711. \- RHS: LiteralExpr: type=int, value=1
  2712. |1- AssignmentExpr (Operator='=')
  2713. |- LHS: AccessorExpr (Mode='.')
  2714. |- Object: NameExpr: 'last'
  2715. \- Field: next
  2716. \- RHS: NameExpr: 'new'
  2717. \-- Runoff Clause: BlockBody: (N_Statements=1)
  2718. |0- AssignmentExpr (Operator='=')
  2719. |- LHS: AccessorExpr (Mode='.')
  2720. |- Object: NameExpr: 'l'
  2721. \- Field: head
  2722. \- RHS: NameExpr: 'new'
  2723. |2- AssignmentExpr (Operator='+=')
  2724. |- LHS: AccessorExpr (Mode='.')
  2725. |- Object: NameExpr: 'l'
  2726. \- Field: len
  2727. \- RHS: LiteralExpr: type=int, value=1
  2728. |3- AssignmentExpr (Operator='=')
  2729. |- LHS: AccessorExpr (Mode='.')
  2730. |- Object: NameExpr: 'l'
  2731. \- Field: cache_ready
  2732. \- RHS: LiteralExpr: type=bool, value=0
  2733. \4- ReturnExpr: <void>
  2734. |11- FunctionDecl:
  2735. |- Head: FunctionDeclHead: Name='List:set' Type='void' Nargs=3
  2736. |0- List l
  2737. |1- int i
  2738. \2- ptr item
  2739. |0- AssignmentExpr (Operator='=')
  2740. |- LHS: AccessorExpr (Mode='.')
  2741. |- Object: CallExpr:
  2742. |- Method: AccessorExpr (Mode=':')
  2743. |- Object: NameExpr: 'l'
  2744. \- Field: get_node
  2745. \- Arguments: (Len=1)
  2746. \0- NameExpr: 'i'
  2747. \- Field: value
  2748. \- RHS: NameExpr: 'item'
  2749. \1- ReturnExpr: <void>
  2750. |12- FunctionDecl:
  2751. |- Head: FunctionDeclHead: Name='List:insert' Type='void' Nargs=3
  2752. |0- List l
  2753. |1- int i
  2754. \2- ptr item
  2755. |0- IfExpr:
  2756. |- Condition: BinOpExpr (Operator='==')
  2757. |- LHS: NameExpr: 'i'
  2758. \- RHS: AccessorExpr (Mode='.')
  2759. |- Object: NameExpr: 'l'
  2760. \- Field: len
  2761. |- Body: BlockBody: (N_Statements=3)
  2762. |0- CallExpr:
  2763. |- Method: AccessorExpr (Mode=':')
  2764. |- Object: NameExpr: 'l'
  2765. \- Field: append
  2766. \- Arguments: (Len=1)
  2767. \0- NameExpr: 'item'
  2768. |1- AssignmentExpr (Operator='=')
  2769. |- LHS: AccessorExpr (Mode='.')
  2770. |- Object: NameExpr: 'l'
  2771. \- Field: cache_ready
  2772. \- RHS: LiteralExpr: type=bool, value=0
  2773. |2- ReturnExpr: <void>
  2774. \-- Runoff Clause: IfExpr:
  2775. |- Condition: BinOpExpr (Operator='>')
  2776. |- LHS: NameExpr: 'i'
  2777. \- RHS: AccessorExpr (Mode='.')
  2778. |- Object: NameExpr: 'l'
  2779. \- Field: len
  2780. |- Body: BlockBody: (N_Statements=2)
  2781. |0- CallExpr:
  2782. |- Method: NameExpr: 'printf'
  2783. \- Arguments: (Len=1)
  2784. \0- LiteralExpr: type=cstr, value=Can't insert past end of list!\n
  2785. |1- ReturnExpr: <void>
  2786. |1- AssignmentExpr (Operator='=')
  2787. |- LHS: DeclExpr: 'LinkedListNode new'
  2788. \- RHS: CallExpr:
  2789. |- Method: AccessorExpr (Mode='::')
  2790. |- Object: NameExpr: 'LinkedListNode'
  2791. \- Field: new
  2792. \- Arguments: (Len=1)
  2793. \0- NameExpr: 'item'
  2794. |2- IfExpr:
  2795. |- Condition: BinOpExpr (Operator='==')
  2796. |- LHS: NameExpr: 'i'
  2797. \- RHS: LiteralExpr: type=int, value=0
  2798. |- Body: BlockBody: (N_Statements=5)
  2799. |0- IfExpr:
  2800. |- Condition: BinOpExpr (Operator='!=')
  2801. |- LHS: AccessorExpr (Mode='.')
  2802. |- Object: NameExpr: 'l'
  2803. \- Field: len
  2804. \- RHS: LiteralExpr: type=int, value=0
  2805. |- Body: BlockBody: (N_Statements=1)
  2806. |0- AssignmentExpr (Operator='=')
  2807. |- LHS: AccessorExpr (Mode='.')
  2808. |- Object: NameExpr: 'new'
  2809. \- Field: next
  2810. \- RHS: AccessorExpr (Mode='.')
  2811. |- Object: NameExpr: 'l'
  2812. \- Field: head
  2813. |1- AssignmentExpr (Operator='=')
  2814. |- LHS: AccessorExpr (Mode='.')
  2815. |- Object: NameExpr: 'l'
  2816. \- Field: head
  2817. \- RHS: NameExpr: 'new'
  2818. |2- AssignmentExpr (Operator='+=')
  2819. |- LHS: AccessorExpr (Mode='.')
  2820. |- Object: NameExpr: 'l'
  2821. \- Field: len
  2822. \- RHS: LiteralExpr: type=int, value=1
  2823. |3- AssignmentExpr (Operator='=')
  2824. |- LHS: AccessorExpr (Mode='.')
  2825. |- Object: NameExpr: 'l'
  2826. \- Field: cache_ready
  2827. \- RHS: LiteralExpr: type=bool, value=0
  2828. |4- ReturnExpr: <void>
  2829. |3- AssignmentExpr (Operator='+=')
  2830. |- LHS: AccessorExpr (Mode='.')
  2831. |- Object: NameExpr: 'l'
  2832. \- Field: len
  2833. \- RHS: LiteralExpr: type=int, value=1
  2834. |4- AssignmentExpr (Operator='=')
  2835. |- LHS: DeclExpr: 'LinkedListNode prev'
  2836. \- RHS: CallExpr:
  2837. |- Method: AccessorExpr (Mode=':')
  2838. |- Object: NameExpr: 'l'
  2839. \- Field: get_node
  2840. \- Arguments: (Len=1)
  2841. \0- BinOpExpr (Operator='-')
  2842. |- LHS: NameExpr: 'i'
  2843. \- RHS: LiteralExpr: type=int, value=1
  2844. |5- AssignmentExpr (Operator='=')
  2845. |- LHS: AccessorExpr (Mode='.')
  2846. |- Object: NameExpr: 'new'
  2847. \- Field: next
  2848. \- RHS: AccessorExpr (Mode='.')
  2849. |- Object: NameExpr: 'prev'
  2850. \- Field: next
  2851. |6- AssignmentExpr (Operator='=')
  2852. |- LHS: AccessorExpr (Mode='.')
  2853. |- Object: NameExpr: 'prev'
  2854. \- Field: next
  2855. \- RHS: NameExpr: 'new'
  2856. |7- AssignmentExpr (Operator='=')
  2857. |- LHS: AccessorExpr (Mode='.')
  2858. |- Object: NameExpr: 'l'
  2859. \- Field: cache_ready
  2860. \- RHS: LiteralExpr: type=bool, value=0
  2861. \8- ReturnExpr: <void>
  2862. |13- FunctionDecl:
  2863. |- Head: FunctionDeclHead: Name='List:del' Type='void' Nargs=2
  2864. |0- List l
  2865. \1- int i
  2866. |0- IfExpr:
  2867. |- Condition: BinOpExpr (Operator='>=')
  2868. |- LHS: NameExpr: 'i'
  2869. \- RHS: AccessorExpr (Mode='.')
  2870. |- Object: NameExpr: 'l'
  2871. \- Field: len
  2872. |- Body: BlockBody: (N_Statements=2)
  2873. |0- CallExpr:
  2874. |- Method: NameExpr: 'printf'
  2875. \- Arguments: (Len=1)
  2876. \0- LiteralExpr: type=cstr, value=No such item\n
  2877. |1- ReturnExpr: <void>
  2878. |1- IfExpr:
  2879. |- Condition: BinOpExpr (Operator='==')
  2880. |- LHS: NameExpr: 'i'
  2881. \- RHS: LiteralExpr: type=int, value=0
  2882. |- Body: BlockBody: (N_Statements=6)
  2883. |0- AssignmentExpr (Operator='=')
  2884. |- LHS: DeclExpr: 'LinkedListNode old_head'
  2885. \- RHS: AccessorExpr (Mode='.')
  2886. |- Object: NameExpr: 'l'
  2887. \- Field: head
  2888. |1- IfExpr:
  2889. |- Condition: BinOpExpr (Operator='>')
  2890. |- LHS: AccessorExpr (Mode='.')
  2891. |- Object: NameExpr: 'l'
  2892. \- Field: len
  2893. \- RHS: LiteralExpr: type=int, value=1
  2894. |- Body: BlockBody: (N_Statements=1)
  2895. |0- AssignmentExpr (Operator='=')
  2896. |- LHS: AccessorExpr (Mode='.')
  2897. |- Object: NameExpr: 'l'
  2898. \- Field: head
  2899. \- RHS: AccessorExpr (Mode='.')
  2900. |- Object: AccessorExpr (Mode='.')
  2901. |- Object: NameExpr: 'l'
  2902. \- Field: head
  2903. \- Field: next
  2904. |2- CallExpr:
  2905. |- Method: AccessorExpr (Mode=':')
  2906. |- Object: NameExpr: 'old_head'
  2907. \- Field: free
  2908. \- Arguments: (Len=0)
  2909. |3- AssignmentExpr (Operator='-=')
  2910. |- LHS: AccessorExpr (Mode='.')
  2911. |- Object: NameExpr: 'l'
  2912. \- Field: len
  2913. \- RHS: LiteralExpr: type=int, value=1
  2914. |4- AssignmentExpr (Operator='=')
  2915. |- LHS: AccessorExpr (Mode='.')
  2916. |- Object: NameExpr: 'l'
  2917. \- Field: cache_ready
  2918. \- RHS: LiteralExpr: type=bool, value=0
  2919. |5- ReturnExpr: <void>
  2920. |2- AssignmentExpr (Operator='=')
  2921. |- LHS: DeclExpr: 'LinkedListNode prev'
  2922. \- RHS: CallExpr:
  2923. |- Method: AccessorExpr (Mode=':')
  2924. |- Object: NameExpr: 'l'
  2925. \- Field: get_node
  2926. \- Arguments: (Len=1)
  2927. \0- BinOpExpr (Operator='-')
  2928. |- LHS: NameExpr: 'i'
  2929. \- RHS: LiteralExpr: type=int, value=1
  2930. |3- CallExpr:
  2931. |- Method: AccessorExpr (Mode=':')
  2932. |- Object: AccessorExpr (Mode='.')
  2933. |- Object: NameExpr: 'prev'
  2934. \- Field: next
  2935. \- Field: free
  2936. \- Arguments: (Len=0)
  2937. |4- IfExpr:
  2938. |- Condition: BinOpExpr (Operator='!=')
  2939. |- LHS: NameExpr: 'i'
  2940. \- RHS: BinOpExpr (Operator='-')
  2941. |- LHS: AccessorExpr (Mode='.')
  2942. |- Object: NameExpr: 'l'
  2943. \- Field: len
  2944. \- RHS: LiteralExpr: type=int, value=1
  2945. |- Body: BlockBody: (N_Statements=1)
  2946. |0- AssignmentExpr (Operator='=')
  2947. |- LHS: AccessorExpr (Mode='.')
  2948. |- Object: NameExpr: 'prev'
  2949. \- Field: next
  2950. \- RHS: AccessorExpr (Mode='.')
  2951. |- Object: AccessorExpr (Mode='.')
  2952. |- Object: NameExpr: 'prev'
  2953. \- Field: next
  2954. \- Field: next
  2955. |5- AssignmentExpr (Operator='-=')
  2956. |- LHS: AccessorExpr (Mode='.')
  2957. |- Object: NameExpr: 'l'
  2958. \- Field: len
  2959. \- RHS: LiteralExpr: type=int, value=1
  2960. |6- AssignmentExpr (Operator='=')
  2961. |- LHS: AccessorExpr (Mode='.')
  2962. |- Object: NameExpr: 'l'
  2963. \- Field: cache_ready
  2964. \- RHS: LiteralExpr: type=bool, value=0
  2965. \7- ReturnExpr: <void>
  2966. |14- FunctionDecl:
  2967. |- Head: FunctionDeclHead: Name='List:clear' Type='void' Nargs=1
  2968. \0- List l
  2969. |0- AssignmentExpr (Operator='=')
  2970. |- LHS: DeclExpr: 'int idx'
  2971. \- RHS: BinOpExpr (Operator='-')
  2972. |- LHS: AccessorExpr (Mode='.')
  2973. |- Object: NameExpr: 'l'
  2974. \- Field: len
  2975. \- RHS: LiteralExpr: type=int, value=1
  2976. |1- WhileExpr:
  2977. |- Condition: BinOpExpr (Operator='!=')
  2978. |- LHS: NameExpr: 'idx'
  2979. \- RHS: UnOpExpr (Operator='-')
  2980. \- Value: LiteralExpr: type=int, value=1
  2981. |- Body: BlockBody: (N_Statements=2)
  2982. |0- CallExpr:
  2983. |- Method: AccessorExpr (Mode=':')
  2984. |- Object: CallExpr:
  2985. |- Method: AccessorExpr (Mode=':')
  2986. |- Object: NameExpr: 'l'
  2987. \- Field: get_node
  2988. \- Arguments: (Len=1)
  2989. \0- NameExpr: 'idx'
  2990. \- Field: free
  2991. \- Arguments: (Len=0)
  2992. |1- AssignmentExpr (Operator='-=')
  2993. |- LHS: NameExpr: 'idx'
  2994. \- RHS: LiteralExpr: type=int, value=1
  2995. |2- AssignmentExpr (Operator='=')
  2996. |- LHS: AccessorExpr (Mode='.')
  2997. |- Object: NameExpr: 'l'
  2998. \- Field: len
  2999. \- RHS: LiteralExpr: type=int, value=0
  3000. |3- AssignmentExpr (Operator='=')
  3001. |- LHS: AccessorExpr (Mode='.')
  3002. |- Object: NameExpr: 'l'
  3003. \- Field: cache_ready
  3004. \- RHS: LiteralExpr: type=bool, value=0
  3005. \4- ReturnExpr: <void>
  3006. \15- FunctionDecl:
  3007. |- Head: FunctionDeclHead: Name='List:free' Type='void' Nargs=1
  3008. \0- List l
  3009. |0- CallExpr:
  3010. |- Method: NameExpr: 'free'
  3011. \- Arguments: (Len=1)
  3012. \0- NameExpr: 'l'
  3013. \1- ReturnExpr: <void>
  3014. |7- SepExpr (Consumed=2)
  3015. |2- SepExpr (Consumed=2)
  3016. |3- FunctionDecl:
  3017. |- Head: FunctionDeclHead: Name='lex::get_alphabet' Type='cstr' Nargs=0
  3018. \0- ReturnExpr: LiteralExpr: type=cstr, value=qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_
  3019. |4- SepExpr (Consumed=2)
  3020. |5- FunctionDecl:
  3021. |- Head: FunctionDeclHead: Name='lex::get_ext_identifier' Type='cstr' Nargs=0
  3022. \0- ReturnExpr: LiteralExpr: type=cstr, value=qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_1234567890
  3023. |6- SepExpr (Consumed=2)
  3024. |7- FunctionDecl:
  3025. |- Head: FunctionDeclHead: Name='lex::match_identifier' Type='int' Nargs=1
  3026. \0- cstr text
  3027. |0- IfExpr:
  3028. |- Condition: UnOpExpr (Operator='-')
  3029. \- Value: CallExpr:
  3030. |- Method: AccessorExpr (Mode=':')
  3031. |- Object: IndexExpr
  3032. |- Array: NameExpr: 'text'
  3033. \- Value: LiteralExpr: type=int, value=0
  3034. \- Field: in
  3035. \- Arguments: (Len=1)
  3036. \0- CallExpr:
  3037. |- Method: NameExpr: 'lex$$get_alphabet'
  3038. \- Arguments: (Len=0)
  3039. |- Body: BlockBody: (N_Statements=1)
  3040. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3041. |1- AssignmentExpr (Operator='=')
  3042. |- LHS: DeclExpr: 'int i'
  3043. \- RHS: LiteralExpr: type=int, value=1
  3044. |2- WhileExpr:
  3045. |- Condition: BinOpExpr (Operator='&')
  3046. |- LHS: CallExpr:
  3047. |- Method: AccessorExpr (Mode=':')
  3048. |- Object: IndexExpr
  3049. |- Array: NameExpr: 'text'
  3050. \- Value: NameExpr: 'i'
  3051. \- Field: in
  3052. \- Arguments: (Len=1)
  3053. \0- CallExpr:
  3054. |- Method: NameExpr: 'lex$$get_ext_identifier'
  3055. \- Arguments: (Len=0)
  3056. \- RHS: BinOpExpr (Operator='<')
  3057. |- LHS: NameExpr: 'i'
  3058. \- RHS: CallExpr:
  3059. |- Method: AccessorExpr (Mode=':')
  3060. |- Object: NameExpr: 'text'
  3061. \- Field: len
  3062. \- Arguments: (Len=0)
  3063. |- Body: BlockBody: (N_Statements=1)
  3064. |0- AssignmentExpr (Operator='+=')
  3065. |- LHS: NameExpr: 'i'
  3066. \- RHS: LiteralExpr: type=int, value=1
  3067. \3- ReturnExpr: NameExpr: 'i'
  3068. |8- SepExpr (Consumed=2)
  3069. |9- FunctionDecl:
  3070. |- Head: FunctionDeclHead: Name='lex::match_function_identifier' Type='int' Nargs=1
  3071. \0- cstr text
  3072. |0- IfExpr:
  3073. |- Condition: UnOpExpr (Operator='-')
  3074. \- Value: CallExpr:
  3075. |- Method: AccessorExpr (Mode=':')
  3076. |- Object: IndexExpr
  3077. |- Array: NameExpr: 'text'
  3078. \- Value: LiteralExpr: type=int, value=0
  3079. \- Field: in
  3080. \- Arguments: (Len=1)
  3081. \0- CallExpr:
  3082. |- Method: NameExpr: 'lex$$get_alphabet'
  3083. \- Arguments: (Len=0)
  3084. |- Body: BlockBody: (N_Statements=1)
  3085. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3086. |1- AssignmentExpr (Operator='=')
  3087. |- LHS: DeclExpr: 'int i'
  3088. \- RHS: LiteralExpr: type=int, value=1
  3089. |2- WhileExpr:
  3090. |- Condition: BinOpExpr (Operator='&')
  3091. |- LHS: BinOpExpr (Operator='+')
  3092. |- LHS: CallExpr:
  3093. |- Method: AccessorExpr (Mode=':')
  3094. |- Object: IndexExpr
  3095. |- Array: NameExpr: 'text'
  3096. \- Value: NameExpr: 'i'
  3097. \- Field: in
  3098. \- Arguments: (Len=1)
  3099. \0- CallExpr:
  3100. |- Method: NameExpr: 'lex$$get_ext_identifier'
  3101. \- Arguments: (Len=0)
  3102. \- RHS: CallExpr:
  3103. |- Method: AccessorExpr (Mode=':')
  3104. |- Object: IndexExpr
  3105. |- Array: NameExpr: 'text'
  3106. \- Value: NameExpr: 'i'
  3107. \- Field: in
  3108. \- Arguments: (Len=1)
  3109. \0- LiteralExpr: type=cstr, value=:
  3110. \- RHS: BinOpExpr (Operator='<')
  3111. |- LHS: NameExpr: 'i'
  3112. \- RHS: CallExpr:
  3113. |- Method: AccessorExpr (Mode=':')
  3114. |- Object: NameExpr: 'text'
  3115. \- Field: len
  3116. \- Arguments: (Len=0)
  3117. |- Body: BlockBody: (N_Statements=1)
  3118. |0- AssignmentExpr (Operator='+=')
  3119. |- LHS: NameExpr: 'i'
  3120. \- RHS: LiteralExpr: type=int, value=1
  3121. \3- ReturnExpr: NameExpr: 'i'
  3122. |10- SepExpr (Consumed=2)
  3123. |11- FunctionDecl:
  3124. |- Head: FunctionDeclHead: Name='lex::match_binop' Type='int' Nargs=1
  3125. \0- cstr text
  3126. |0- IfExpr:
  3127. |- Condition: BinOpExpr (Operator='+')
  3128. |- LHS: CallExpr:
  3129. |- Method: AccessorExpr (Mode=':')
  3130. |- Object: NameExpr: 'text'
  3131. \- Field: startswith
  3132. \- Arguments: (Len=1)
  3133. \0- LiteralExpr: type=cstr, value===
  3134. \- RHS: BinOpExpr (Operator='+')
  3135. |- LHS: CallExpr:
  3136. |- Method: AccessorExpr (Mode=':')
  3137. |- Object: NameExpr: 'text'
  3138. \- Field: startswith
  3139. \- Arguments: (Len=1)
  3140. \0- LiteralExpr: type=cstr, value=!=
  3141. \- RHS: BinOpExpr (Operator='+')
  3142. |- LHS: CallExpr:
  3143. |- Method: AccessorExpr (Mode=':')
  3144. |- Object: NameExpr: 'text'
  3145. \- Field: startswith
  3146. \- Arguments: (Len=1)
  3147. \0- LiteralExpr: type=cstr, value=>=
  3148. \- RHS: BinOpExpr (Operator='+')
  3149. |- LHS: CallExpr:
  3150. |- Method: AccessorExpr (Mode=':')
  3151. |- Object: NameExpr: 'text'
  3152. \- Field: startswith
  3153. \- Arguments: (Len=1)
  3154. \0- LiteralExpr: type=cstr, value=<=
  3155. \- RHS: BinOpExpr (Operator='+')
  3156. |- LHS: CallExpr:
  3157. |- Method: AccessorExpr (Mode=':')
  3158. |- Object: NameExpr: 'text'
  3159. \- Field: startswith
  3160. \- Arguments: (Len=1)
  3161. \0- LiteralExpr: type=cstr, value=>>
  3162. \- RHS: CallExpr:
  3163. |- Method: AccessorExpr (Mode=':')
  3164. |- Object: NameExpr: 'text'
  3165. \- Field: startswith
  3166. \- Arguments: (Len=1)
  3167. \0- LiteralExpr: type=cstr, value=<<
  3168. |- Body: BlockBody: (N_Statements=1)
  3169. |0- ReturnExpr: LiteralExpr: type=int, value=2
  3170. \1- ReturnExpr: CastExpr (Target='int')
  3171. \- Value: CallExpr:
  3172. |- Method: AccessorExpr (Mode=':')
  3173. |- Object: IndexExpr
  3174. |- Array: NameExpr: 'text'
  3175. \- Value: LiteralExpr: type=int, value=0
  3176. \- Field: in
  3177. \- Arguments: (Len=1)
  3178. \0- LiteralExpr: type=cstr, value=&*/-+%<>
  3179. |12- SepExpr (Consumed=2)
  3180. |13- FunctionDecl:
  3181. |- Head: FunctionDeclHead: Name='lex::match_augassign' Type='int' Nargs=1
  3182. \0- cstr text
  3183. |0- IfExpr:
  3184. |- Condition: BinOpExpr (Operator='+')
  3185. |- LHS: CallExpr:
  3186. |- Method: AccessorExpr (Mode=':')
  3187. |- Object: NameExpr: 'text'
  3188. \- Field: startswith
  3189. \- Arguments: (Len=1)
  3190. \0- LiteralExpr: type=cstr, value=+=
  3191. \- RHS: BinOpExpr (Operator='+')
  3192. |- LHS: CallExpr:
  3193. |- Method: AccessorExpr (Mode=':')
  3194. |- Object: NameExpr: 'text'
  3195. \- Field: startswith
  3196. \- Arguments: (Len=1)
  3197. \0- LiteralExpr: type=cstr, value=-=
  3198. \- RHS: BinOpExpr (Operator='+')
  3199. |- LHS: CallExpr:
  3200. |- Method: AccessorExpr (Mode=':')
  3201. |- Object: NameExpr: 'text'
  3202. \- Field: startswith
  3203. \- Arguments: (Len=1)
  3204. \0- LiteralExpr: type=cstr, value=*=
  3205. \- RHS: CallExpr:
  3206. |- Method: AccessorExpr (Mode=':')
  3207. |- Object: NameExpr: 'text'
  3208. \- Field: startswith
  3209. \- Arguments: (Len=1)
  3210. \0- LiteralExpr: type=cstr, value=/=
  3211. |- Body: BlockBody: (N_Statements=1)
  3212. |0- ReturnExpr: LiteralExpr: type=int, value=2
  3213. \1- ReturnExpr: LiteralExpr: type=int, value=0
  3214. |14- SepExpr (Consumed=2)
  3215. |15- FunctionDecl:
  3216. |- Head: FunctionDeclHead: Name='lex::match_int_literal' Type='int' Nargs=1
  3217. \0- cstr text
  3218. |0- IfExpr:
  3219. |- Condition: UnOpExpr (Operator='-')
  3220. \- Value: CallExpr:
  3221. |- Method: AccessorExpr (Mode=':')
  3222. |- Object: IndexExpr
  3223. |- Array: NameExpr: 'text'
  3224. \- Value: LiteralExpr: type=int, value=0
  3225. \- Field: in
  3226. \- Arguments: (Len=1)
  3227. \0- LiteralExpr: type=cstr, value=1234567890
  3228. |- Body: BlockBody: (N_Statements=1)
  3229. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3230. |1- AssignmentExpr (Operator='=')
  3231. |- LHS: DeclExpr: 'int i'
  3232. \- RHS: LiteralExpr: type=int, value=0
  3233. |2- WhileExpr:
  3234. |- Condition: CallExpr:
  3235. |- Method: AccessorExpr (Mode=':')
  3236. |- Object: IndexExpr
  3237. |- Array: NameExpr: 'text'
  3238. \- Value: NameExpr: 'i'
  3239. \- Field: in
  3240. \- Arguments: (Len=1)
  3241. \0- LiteralExpr: type=cstr, value=1234567890xbXB
  3242. |- Body: BlockBody: (N_Statements=1)
  3243. |0- AssignmentExpr (Operator='+=')
  3244. |- LHS: NameExpr: 'i'
  3245. \- RHS: LiteralExpr: type=int, value=1
  3246. |3- IfExpr:
  3247. |- Condition: CallExpr:
  3248. |- Method: AccessorExpr (Mode=':')
  3249. |- Object: IndexExpr
  3250. |- Array: NameExpr: 'text'
  3251. \- Value: NameExpr: 'i'
  3252. \- Field: in
  3253. \- Arguments: (Len=1)
  3254. \0- LiteralExpr: type=cstr, value=.
  3255. |- Body: BlockBody: (N_Statements=1)
  3256. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3257. \4- ReturnExpr: NameExpr: 'i'
  3258. |16- SepExpr (Consumed=2)
  3259. |17- FunctionDecl:
  3260. |- Head: FunctionDeclHead: Name='lex::match_bool_literal' Type='int' Nargs=1
  3261. \0- cstr text
  3262. |0- IfExpr:
  3263. |- Condition: CallExpr:
  3264. |- Method: AccessorExpr (Mode=':')
  3265. |- Object: NameExpr: 'text'
  3266. \- Field: startswith
  3267. \- Arguments: (Len=1)
  3268. \0- LiteralExpr: type=cstr, value=true
  3269. |- Body: BlockBody: (N_Statements=1)
  3270. |0- ReturnExpr: LiteralExpr: type=int, value=4
  3271. \-- Runoff Clause: IfExpr:
  3272. |- Condition: CallExpr:
  3273. |- Method: AccessorExpr (Mode=':')
  3274. |- Object: NameExpr: 'text'
  3275. \- Field: startswith
  3276. \- Arguments: (Len=1)
  3277. \0- LiteralExpr: type=cstr, value=false
  3278. |- Body: BlockBody: (N_Statements=1)
  3279. |0- ReturnExpr: LiteralExpr: type=int, value=5
  3280. \1- ReturnExpr: LiteralExpr: type=int, value=0
  3281. |18- SepExpr (Consumed=2)
  3282. |19- FunctionDecl:
  3283. |- Head: FunctionDeclHead: Name='lex::match_float_literal' Type='int' Nargs=1
  3284. \0- cstr text
  3285. |0- AssignmentExpr (Operator='=')
  3286. |- LHS: DeclExpr: 'int i'
  3287. \- RHS: LiteralExpr: type=int, value=0
  3288. |1- WhileExpr:
  3289. |- Condition: CallExpr:
  3290. |- Method: AccessorExpr (Mode=':')
  3291. |- Object: IndexExpr
  3292. |- Array: NameExpr: 'text'
  3293. \- Value: NameExpr: 'i'
  3294. \- Field: in
  3295. \- Arguments: (Len=1)
  3296. \0- LiteralExpr: type=cstr, value=1234567890.
  3297. |- Body: BlockBody: (N_Statements=1)
  3298. |0- AssignmentExpr (Operator='+=')
  3299. |- LHS: NameExpr: 'i'
  3300. \- RHS: LiteralExpr: type=int, value=1
  3301. |2- IfExpr:
  3302. |- Condition: BinOpExpr (Operator='==')
  3303. |- LHS: NameExpr: 'i'
  3304. \- RHS: LiteralExpr: type=int, value=1
  3305. |- Body: BlockBody: (N_Statements=1)
  3306. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3307. \3- ReturnExpr: NameExpr: 'i'
  3308. |20- SepExpr (Consumed=2)
  3309. |21- FunctionDecl:
  3310. |- Head: FunctionDeclHead: Name='lex::match_var_decl' Type='int' Nargs=1
  3311. \0- cstr text
  3312. |0- AssignmentExpr (Operator='=')
  3313. |- LHS: DeclExpr: 'int i'
  3314. \- RHS: CallExpr:
  3315. |- Method: NameExpr: 'lex$$match_identifier'
  3316. \- Arguments: (Len=1)
  3317. \0- NameExpr: 'text'
  3318. |1- IfExpr:
  3319. |- Condition: BinOpExpr (Operator='==')
  3320. |- LHS: NameExpr: 'i'
  3321. \- RHS: LiteralExpr: type=int, value=0
  3322. |- Body: BlockBody: (N_Statements=1)
  3323. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3324. |2- WhileExpr:
  3325. |- Condition: CallExpr:
  3326. |- Method: AccessorExpr (Mode=':')
  3327. |- Object: IndexExpr
  3328. |- Array: NameExpr: 'text'
  3329. \- Value: NameExpr: 'i'
  3330. \- Field: in
  3331. \- Arguments: (Len=1)
  3332. \0- LiteralExpr: type=cstr, value= \t
  3333. |- Body: BlockBody: (N_Statements=1)
  3334. |0- AssignmentExpr (Operator='+=')
  3335. |- LHS: NameExpr: 'i'
  3336. \- RHS: LiteralExpr: type=int, value=1
  3337. |3- AssignmentExpr (Operator='=')
  3338. |- LHS: DeclExpr: 'int name'
  3339. \- RHS: CallExpr:
  3340. |- Method: NameExpr: 'lex$$match_identifier'
  3341. \- Arguments: (Len=1)
  3342. \0- CallExpr:
  3343. |- Method: AccessorExpr (Mode=':')
  3344. |- Object: NameExpr: 'text'
  3345. \- Field: offset
  3346. \- Arguments: (Len=1)
  3347. \0- NameExpr: 'i'
  3348. |4- IfExpr:
  3349. |- Condition: BinOpExpr (Operator='==')
  3350. |- LHS: NameExpr: 'name'
  3351. \- RHS: LiteralExpr: type=int, value=0
  3352. |- Body: BlockBody: (N_Statements=1)
  3353. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3354. |5- AssignmentExpr (Operator='+=')
  3355. |- LHS: NameExpr: 'i'
  3356. \- RHS: NameExpr: 'name'
  3357. \6- ReturnExpr: NameExpr: 'i'
  3358. |22- SepExpr (Consumed=2)
  3359. |23- FunctionDecl:
  3360. |- Head: FunctionDeclHead: Name='lex::match_string_literal' Type='int' Nargs=1
  3361. \0- cstr text
  3362. |0- IfExpr:
  3363. |- Condition: UnOpExpr (Operator='-')
  3364. \- Value: BinOpExpr (Operator='==')
  3365. |- LHS: IndexExpr
  3366. |- Array: NameExpr: 'text'
  3367. \- Value: LiteralExpr: type=int, value=0
  3368. \- RHS: CastExpr (Target='byte')
  3369. \- Value: LiteralExpr: type=int, value=34
  3370. |- Body: BlockBody: (N_Statements=1)
  3371. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3372. |1- AssignmentExpr (Operator='=')
  3373. |- LHS: DeclExpr: 'int i'
  3374. \- RHS: LiteralExpr: type=int, value=1
  3375. |2- AssignmentExpr (Operator='=')
  3376. |- LHS: DeclExpr: 'bool escape'
  3377. \- RHS: LiteralExpr: type=bool, value=0
  3378. |3- AssignmentExpr (Operator='=')
  3379. |- LHS: DeclExpr: 'bool continue'
  3380. \- RHS: LiteralExpr: type=bool, value=1
  3381. |4- WhileExpr:
  3382. |- Condition: NameExpr: 'continue'
  3383. |- Body: BlockBody: (N_Statements=3)
  3384. |0- IfExpr:
  3385. |- Condition: BinOpExpr (Operator='&')
  3386. |- LHS: BinOpExpr (Operator='==')
  3387. |- LHS: IndexExpr
  3388. |- Array: NameExpr: 'text'
  3389. \- Value: NameExpr: 'i'
  3390. \- RHS: CastExpr (Target='byte')
  3391. \- Value: LiteralExpr: type=int, value=34
  3392. \- RHS: UnOpExpr (Operator='-')
  3393. \- Value: NameExpr: 'escape'
  3394. |- Body: BlockBody: (N_Statements=1)
  3395. |0- AssignmentExpr (Operator='=')
  3396. |- LHS: NameExpr: 'continue'
  3397. \- RHS: LiteralExpr: type=bool, value=0
  3398. |1- IfExpr:
  3399. |- Condition: BinOpExpr (Operator='&')
  3400. |- LHS: CallExpr:
  3401. |- Method: AccessorExpr (Mode=':')
  3402. |- Object: IndexExpr
  3403. |- Array: NameExpr: 'text'
  3404. \- Value: NameExpr: 'i'
  3405. \- Field: in
  3406. \- Arguments: (Len=1)
  3407. \0- LiteralExpr: type=cstr, value=\\
  3408. \- RHS: UnOpExpr (Operator='-')
  3409. \- Value: NameExpr: 'escape'
  3410. |- Body: BlockBody: (N_Statements=1)
  3411. |0- AssignmentExpr (Operator='=')
  3412. |- LHS: NameExpr: 'escape'
  3413. \- RHS: LiteralExpr: type=bool, value=1
  3414. \-- Runoff Clause: BlockBody: (N_Statements=1)
  3415. |0- AssignmentExpr (Operator='=')
  3416. |- LHS: NameExpr: 'escape'
  3417. \- RHS: LiteralExpr: type=bool, value=0
  3418. |2- AssignmentExpr (Operator='+=')
  3419. |- LHS: NameExpr: 'i'
  3420. \- RHS: LiteralExpr: type=int, value=1
  3421. \5- ReturnExpr: NameExpr: 'i'
  3422. |24- SepExpr (Consumed=2)
  3423. |25- FunctionDecl:
  3424. |- Head: FunctionDeclHead: Name='lex::match_line_comment' Type='int' Nargs=1
  3425. \0- cstr text
  3426. |0- IfExpr:
  3427. |- Condition: UnOpExpr (Operator='-')
  3428. \- Value: CallExpr:
  3429. |- Method: AccessorExpr (Mode=':')
  3430. |- Object: IndexExpr
  3431. |- Array: NameExpr: 'text'
  3432. \- Value: LiteralExpr: type=int, value=0
  3433. \- Field: in
  3434. \- Arguments: (Len=1)
  3435. \0- LiteralExpr: type=cstr, value=#
  3436. |- Body: BlockBody: (N_Statements=1)
  3437. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3438. |1- AssignmentExpr (Operator='=')
  3439. |- LHS: DeclExpr: 'int i'
  3440. \- RHS: LiteralExpr: type=int, value=1
  3441. |2- WhileExpr:
  3442. |- Condition: UnOpExpr (Operator='-')
  3443. \- Value: CallExpr:
  3444. |- Method: AccessorExpr (Mode=':')
  3445. |- Object: IndexExpr
  3446. |- Array: NameExpr: 'text'
  3447. \- Value: NameExpr: 'i'
  3448. \- Field: in
  3449. \- Arguments: (Len=1)
  3450. \0- LiteralExpr: type=cstr, value=\r\n
  3451. |- Body: BlockBody: (N_Statements=1)
  3452. |0- AssignmentExpr (Operator='+=')
  3453. |- LHS: NameExpr: 'i'
  3454. \- RHS: LiteralExpr: type=int, value=1
  3455. \3- ReturnExpr: NameExpr: 'i'
  3456. |26- SepExpr (Consumed=2)
  3457. |27- FunctionDecl:
  3458. |- Head: FunctionDeclHead: Name='lex::match_block_comment' Type='int' Nargs=1
  3459. \0- cstr text
  3460. |0- IfExpr:
  3461. |- Condition: UnOpExpr (Operator='-')
  3462. \- Value: CallExpr:
  3463. |- Method: AccessorExpr (Mode=':')
  3464. |- Object: NameExpr: 'text'
  3465. \- Field: startswith
  3466. \- Arguments: (Len=1)
  3467. \0- LiteralExpr: type=cstr, value=<#
  3468. |- Body: BlockBody: (N_Statements=1)
  3469. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3470. |1- AssignmentExpr (Operator='=')
  3471. |- LHS: DeclExpr: 'int i'
  3472. \- RHS: LiteralExpr: type=int, value=1
  3473. |2- WhileExpr:
  3474. |- Condition: UnOpExpr (Operator='-')
  3475. \- Value: CallExpr:
  3476. |- Method: AccessorExpr (Mode=':')
  3477. |- Object: CallExpr:
  3478. |- Method: AccessorExpr (Mode=':')
  3479. |- Object: NameExpr: 'text'
  3480. \- Field: offset
  3481. \- Arguments: (Len=1)
  3482. \0- NameExpr: 'i'
  3483. \- Field: startswith
  3484. \- Arguments: (Len=1)
  3485. \0- LiteralExpr: type=cstr, value=#>
  3486. |- Body: BlockBody: (N_Statements=1)
  3487. |0- AssignmentExpr (Operator='+=')
  3488. |- LHS: NameExpr: 'i'
  3489. \- RHS: LiteralExpr: type=int, value=1
  3490. \3- ReturnExpr: NameExpr: 'i'
  3491. |28- SepExpr (Consumed=2)
  3492. |29- FunctionDecl:
  3493. |- Head: FunctionDeclHead: Name='lex::match_import' Type='int' Nargs=1
  3494. \0- cstr text
  3495. |0- IfExpr:
  3496. |- Condition: UnOpExpr (Operator='-')
  3497. \- Value: CallExpr:
  3498. |- Method: AccessorExpr (Mode=':')
  3499. |- Object: NameExpr: 'text'
  3500. \- Field: startswith
  3501. \- Arguments: (Len=1)
  3502. \0- LiteralExpr: type=cstr, value=import
  3503. |- Body: BlockBody: (N_Statements=1)
  3504. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3505. |1- AssignmentExpr (Operator='=')
  3506. |- LHS: DeclExpr: 'int i'
  3507. \- RHS: CallExpr:
  3508. |- Method: AccessorExpr (Mode=':')
  3509. |- Object: LiteralExpr: type=cstr, value=import
  3510. \- Field: len
  3511. \- Arguments: (Len=0)
  3512. |2- WhileExpr:
  3513. |- Condition: CallExpr:
  3514. |- Method: AccessorExpr (Mode=':')
  3515. |- Object: IndexExpr
  3516. |- Array: NameExpr: 'text'
  3517. \- Value: NameExpr: 'i'
  3518. \- Field: in
  3519. \- Arguments: (Len=1)
  3520. \0- LiteralExpr: type=cstr, value= \t
  3521. |- Body: BlockBody: (N_Statements=1)
  3522. |0- AssignmentExpr (Operator='+=')
  3523. |- LHS: NameExpr: 'i'
  3524. \- RHS: LiteralExpr: type=int, value=1
  3525. |3- WhileExpr:
  3526. |- Condition: UnOpExpr (Operator='-')
  3527. \- Value: CallExpr:
  3528. |- Method: AccessorExpr (Mode=':')
  3529. |- Object: IndexExpr
  3530. |- Array: NameExpr: 'text'
  3531. \- Value: NameExpr: 'i'
  3532. \- Field: in
  3533. \- Arguments: (Len=1)
  3534. \0- LiteralExpr: type=cstr, value= \r\n\t
  3535. |- Body: BlockBody: (N_Statements=1)
  3536. |0- AssignmentExpr (Operator='+=')
  3537. |- LHS: NameExpr: 'i'
  3538. \- RHS: LiteralExpr: type=int, value=1
  3539. \4- ReturnExpr: NameExpr: 'i'
  3540. |30- SepExpr (Consumed=2)
  3541. |31- FunctionDecl:
  3542. |- Head: FunctionDeclHead: Name='lex::match_intrinsic' Type='int' Nargs=1
  3543. \0- cstr text
  3544. |0- IfExpr:
  3545. |- Condition: UnOpExpr (Operator='-')
  3546. \- Value: CallExpr:
  3547. |- Method: AccessorExpr (Mode=':')
  3548. |- Object: IndexExpr
  3549. |- Array: NameExpr: 'text'
  3550. \- Value: LiteralExpr: type=int, value=0
  3551. \- Field: in
  3552. \- Arguments: (Len=1)
  3553. \0- LiteralExpr: type=cstr, value=@
  3554. |- Body: BlockBody: (N_Statements=1)
  3555. |0- ReturnExpr: LiteralExpr: type=int, value=0
  3556. |1- AssignmentExpr (Operator='=')
  3557. |- LHS: DeclExpr: 'int i'
  3558. \- RHS: LiteralExpr: type=int, value=1
  3559. |2- WhileExpr:
  3560. |- Condition: UnOpExpr (Operator='-')
  3561. \- Value: CallExpr:
  3562. |- Method: AccessorExpr (Mode=':')
  3563. |- Object: IndexExpr
  3564. |- Array: NameExpr: 'text'
  3565. \- Value: NameExpr: 'i'
  3566. \- Field: in
  3567. \- Arguments: (Len=1)
  3568. \0- LiteralExpr: type=cstr, value=@
  3569. |- Body: BlockBody: (N_Statements=1)
  3570. |0- AssignmentExpr (Operator='+=')
  3571. |- LHS: NameExpr: 'i'
  3572. \- RHS: LiteralExpr: type=int, value=1
  3573. |3- AssignmentExpr (Operator='+=')
  3574. |- LHS: NameExpr: 'i'
  3575. \- RHS: LiteralExpr: type=int, value=1
  3576. \4- ReturnExpr: NameExpr: 'i'
  3577. |32- SepExpr (Consumed=2)
  3578. |33- TypeDeclHead: `TokenMatcher` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`int`
  3579. |34- SepExpr (Consumed=1)
  3580. |35- TypeDecl:
  3581. |- Head: TypeDeclHead: `TokenType` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  3582. \- Body: TypeDeclBody: (N_Statements=18)
  3583. |0- DeclExpr: 'cstr name'
  3584. |1- DeclExpr: 'int simple_type'
  3585. |2- DeclExpr: 'cstr simple_text'
  3586. |3- DeclExpr: 'TokenMatcher func'
  3587. |4- DeclExpr: 'List preceeded_opts'
  3588. |5- DeclExpr: 'bool produce_token'
  3589. |6- FunctionDecl:
  3590. |- Head: FunctionDeclHead: Name='TokenType::new_fn' Type='TokenType' Nargs=2
  3591. |0- cstr name
  3592. \1- TokenMatcher func
  3593. |0- AssignmentExpr (Operator='=')
  3594. |- LHS: DeclExpr: 'TokenType new'
  3595. \- RHS: CastExpr (Target='TokenType')
  3596. \- Value: CallExpr:
  3597. |- Method: NameExpr: 'malloc'
  3598. \- Arguments: (Len=1)
  3599. \0- IntrinsicExpr: '@sizeof(TokenType)@'
  3600. |1- AssignmentExpr (Operator='=')
  3601. |- LHS: AccessorExpr (Mode='.')
  3602. |- Object: NameExpr: 'new'
  3603. \- Field: name
  3604. \- RHS: NameExpr: 'name'
  3605. |2- AssignmentExpr (Operator='=')
  3606. |- LHS: AccessorExpr (Mode='.')
  3607. |- Object: NameExpr: 'new'
  3608. \- Field: simple_type
  3609. \- RHS: LiteralExpr: type=int, value=0
  3610. |3- AssignmentExpr (Operator='=')
  3611. |- LHS: AccessorExpr (Mode='.')
  3612. |- Object: NameExpr: 'new'
  3613. \- Field: func
  3614. \- RHS: NameExpr: 'func'
  3615. |4- AssignmentExpr (Operator='=')
  3616. |- LHS: AccessorExpr (Mode='.')
  3617. |- Object: NameExpr: 'new'
  3618. \- Field: preceeded_opts
  3619. \- RHS: CastExpr (Target='List')
  3620. \- Value: LiteralExpr: type=ptr, value=0
  3621. |5- AssignmentExpr (Operator='=')
  3622. |- LHS: AccessorExpr (Mode='.')
  3623. |- Object: NameExpr: 'new'
  3624. \- Field: produce_token
  3625. \- RHS: LiteralExpr: type=bool, value=1
  3626. \6- ReturnExpr: NameExpr: 'new'
  3627. |7- FunctionDecl:
  3628. |- Head: FunctionDeclHead: Name='TokenType::new_in' Type='TokenType' Nargs=2
  3629. |0- cstr name
  3630. \1- cstr text
  3631. |0- AssignmentExpr (Operator='=')
  3632. |- LHS: DeclExpr: 'TokenType new'
  3633. \- RHS: CallExpr:
  3634. |- Method: AccessorExpr (Mode='::')
  3635. |- Object: NameExpr: 'TokenType'
  3636. \- Field: new_fn
  3637. \- Arguments: (Len=2)
  3638. |0- NameExpr: 'name'
  3639. \1- CastExpr (Target='TokenMatcher')
  3640. \- Value: LiteralExpr: type=ptr, value=0
  3641. |1- AssignmentExpr (Operator='=')
  3642. |- LHS: AccessorExpr (Mode='.')
  3643. |- Object: NameExpr: 'new'
  3644. \- Field: simple_type
  3645. \- RHS: LiteralExpr: type=int, value=1
  3646. |2- AssignmentExpr (Operator='=')
  3647. |- LHS: AccessorExpr (Mode='.')
  3648. |- Object: NameExpr: 'new'
  3649. \- Field: simple_text
  3650. \- RHS: NameExpr: 'text'
  3651. \3- ReturnExpr: NameExpr: 'new'
  3652. |8- FunctionDecl:
  3653. |- Head: FunctionDeclHead: Name='TokenType::new_eq' Type='TokenType' Nargs=2
  3654. |0- cstr name
  3655. \1- cstr text
  3656. |0- AssignmentExpr (Operator='=')
  3657. |- LHS: DeclExpr: 'TokenType new'
  3658. \- RHS: CallExpr:
  3659. |- Method: AccessorExpr (Mode='::')
  3660. |- Object: NameExpr: 'TokenType'
  3661. \- Field: new_in
  3662. \- Arguments: (Len=2)
  3663. |0- NameExpr: 'name'
  3664. \1- NameExpr: 'text'
  3665. |1- AssignmentExpr (Operator='=')
  3666. |- LHS: AccessorExpr (Mode='.')
  3667. |- Object: NameExpr: 'new'
  3668. \- Field: simple_type
  3669. \- RHS: LiteralExpr: type=int, value=2
  3670. \2- ReturnExpr: NameExpr: 'new'
  3671. |9- FunctionDecl:
  3672. |- Head: FunctionDeclHead: Name='TokenType::new_kw' Type='TokenType' Nargs=2
  3673. |0- cstr name
  3674. \1- cstr text
  3675. |0- AssignmentExpr (Operator='=')
  3676. |- LHS: DeclExpr: 'TokenType new'
  3677. \- RHS: CallExpr:
  3678. |- Method: AccessorExpr (Mode='::')
  3679. |- Object: NameExpr: 'TokenType'
  3680. \- Field: new_in
  3681. \- Arguments: (Len=2)
  3682. |0- NameExpr: 'name'
  3683. \1- NameExpr: 'text'
  3684. |1- AssignmentExpr (Operator='=')
  3685. |- LHS: AccessorExpr (Mode='.')
  3686. |- Object: NameExpr: 'new'
  3687. \- Field: simple_type
  3688. \- RHS: LiteralExpr: type=int, value=3
  3689. \2- ReturnExpr: NameExpr: 'new'
  3690. |10- FunctionDecl:
  3691. |- Head: FunctionDeclHead: Name='TokenType:match_internal' Type='int' Nargs=2
  3692. |0- TokenType self
  3693. \1- cstr text
  3694. |0- IfExpr:
  3695. |- Condition: BinOpExpr (Operator='==')
  3696. |- LHS: AccessorExpr (Mode='.')
  3697. |- Object: NameExpr: 'self'
  3698. \- Field: simple_type
  3699. \- RHS: LiteralExpr: type=int, value=1
  3700. |- Body: BlockBody: (N_Statements=1)
  3701. |0- ReturnExpr: CastExpr (Target='int')
  3702. \- Value: CallExpr:
  3703. |- Method: AccessorExpr (Mode=':')
  3704. |- Object: IndexExpr
  3705. |- Array: NameExpr: 'text'
  3706. \- Value: LiteralExpr: type=int, value=0
  3707. \- Field: in
  3708. \- Arguments: (Len=1)
  3709. \0- AccessorExpr (Mode='.')
  3710. |- Object: NameExpr: 'self'
  3711. \- Field: simple_text
  3712. \-- Runoff Clause: IfExpr:
  3713. |- Condition: BinOpExpr (Operator='==')
  3714. |- LHS: AccessorExpr (Mode='.')
  3715. |- Object: NameExpr: 'self'
  3716. \- Field: simple_type
  3717. \- RHS: LiteralExpr: type=int, value=2
  3718. |- Body: BlockBody: (N_Statements=2)
  3719. |0- IfExpr:
  3720. |- Condition: CallExpr:
  3721. |- Method: AccessorExpr (Mode=':')
  3722. |- Object: NameExpr: 'text'
  3723. \- Field: startswith
  3724. \- Arguments: (Len=1)
  3725. \0- AccessorExpr (Mode='.')
  3726. |- Object: NameExpr: 'self'
  3727. \- Field: simple_text
  3728. |- Body: BlockBody: (N_Statements=1)
  3729. |0- ReturnExpr: CallExpr:
  3730. |- Method: AccessorExpr (Mode=':')
  3731. |- Object: AccessorExpr (Mode='.')
  3732. |- Object: NameExpr: 'self'
  3733. \- Field: simple_text
  3734. \- Field: len
  3735. \- Arguments: (Len=0)
  3736. |1- ReturnExpr: LiteralExpr: type=int, value=0
  3737. \-- Runoff Clause: IfExpr:
  3738. |- Condition: BinOpExpr (Operator='==')
  3739. |- LHS: AccessorExpr (Mode='.')
  3740. |- Object: NameExpr: 'self'
  3741. \- Field: simple_type
  3742. \- RHS: LiteralExpr: type=int, value=3
  3743. |- Body: BlockBody: (N_Statements=2)
  3744. |0- IfExpr:
  3745. |- Condition: CallExpr:
  3746. |- Method: AccessorExpr (Mode=':')
  3747. |- Object: NameExpr: 'text'
  3748. \- Field: startswith
  3749. \- Arguments: (Len=1)
  3750. \0- AccessorExpr (Mode='.')
  3751. |- Object: NameExpr: 'self'
  3752. \- Field: simple_text
  3753. |- Body: BlockBody: (N_Statements=2)
  3754. |0- IfExpr:
  3755. |- Condition: CallExpr:
  3756. |- Method: AccessorExpr (Mode=':')
  3757. |- Object: IndexExpr
  3758. |- Array: NameExpr: 'text'
  3759. \- Value: CallExpr:
  3760. |- Method: AccessorExpr (Mode=':')
  3761. |- Object: AccessorExpr (Mode='.')
  3762. |- Object: NameExpr: 'self'
  3763. \- Field: simple_text
  3764. \- Field: len
  3765. \- Arguments: (Len=0)
  3766. \- Field: in
  3767. \- Arguments: (Len=1)
  3768. \0- LiteralExpr: type=cstr, value= \t\r\n
  3769. |- Body: BlockBody: (N_Statements=1)
  3770. |0- ReturnExpr: CallExpr:
  3771. |- Method: AccessorExpr (Mode=':')
  3772. |- Object: AccessorExpr (Mode='.')
  3773. |- Object: NameExpr: 'self'
  3774. \- Field: simple_text
  3775. \- Field: len
  3776. \- Arguments: (Len=0)
  3777. |1- ReturnExpr: LiteralExpr: type=int, value=0
  3778. |1- ReturnExpr: LiteralExpr: type=int, value=0
  3779. \1- ReturnExpr: CallExpr:
  3780. |- Method: AccessorExpr (Mode='.')
  3781. |- Object: NameExpr: 'self'
  3782. \- Field: func
  3783. \- Arguments: (Len=1)
  3784. \0- NameExpr: 'text'
  3785. |11- FunctionDecl:
  3786. |- Head: FunctionDeclHead: Name='TokenType:match' Type='int' Nargs=3
  3787. |0- TokenType self
  3788. |1- List token_context
  3789. \2- cstr text
  3790. |0- AssignmentExpr (Operator='=')
  3791. |- LHS: DeclExpr: 'int count'
  3792. \- RHS: CallExpr:
  3793. |- Method: AccessorExpr (Mode=':')
  3794. |- Object: NameExpr: 'self'
  3795. \- Field: match_internal
  3796. \- Arguments: (Len=1)
  3797. \0- NameExpr: 'text'
  3798. |1- IfExpr:
  3799. |- Condition: BinOpExpr (Operator='!=')
  3800. |- LHS: CastExpr (Target='ptr')
  3801. \- Value: AccessorExpr (Mode='.')
  3802. |- Object: NameExpr: 'self'
  3803. \- Field: preceeded_opts
  3804. \- RHS: LiteralExpr: type=ptr, value=0
  3805. |- Body: BlockBody: (N_Statements=3)
  3806. |0- AssignmentExpr (Operator='=')
  3807. |- LHS: DeclExpr: 'TokenType last_type'
  3808. \- RHS: AccessorExpr (Mode='.')
  3809. |- Object: GroupingExpr: CastExpr (Target='Token')
  3810. \- Value: CallExpr:
  3811. |- Method: AccessorExpr (Mode=':')
  3812. |- Object: NameExpr: 'token_context'
  3813. \- Field: get
  3814. \- Arguments: (Len=1)
  3815. \0- BinOpExpr (Operator='-')
  3816. |- LHS: AccessorExpr (Mode='.')
  3817. |- Object: NameExpr: 'token_context'
  3818. \- Field: len
  3819. \- RHS: LiteralExpr: type=int, value=1
  3820. \- Field: type_
  3821. |1- AssignmentExpr (Operator='=')
  3822. |- LHS: DeclExpr: 'int opts_pos'
  3823. \- RHS: LiteralExpr: type=int, value=0
  3824. |2- WhileExpr:
  3825. |- Condition: BinOpExpr (Operator='<')
  3826. |- LHS: NameExpr: 'opts_pos'
  3827. \- RHS: AccessorExpr (Mode='.')
  3828. |- Object: AccessorExpr (Mode='.')
  3829. |- Object: NameExpr: 'self'
  3830. \- Field: preceeded_opts
  3831. \- Field: len
  3832. |- Body: BlockBody: (N_Statements=2)
  3833. |0- IfExpr:
  3834. |- Condition: BinOpExpr (Operator='==')
  3835. |- LHS: AccessorExpr (Mode='.')
  3836. |- Object: NameExpr: 'last_type'
  3837. \- Field: name
  3838. \- RHS: CastExpr (Target='cstr')
  3839. \- Value: CallExpr:
  3840. |- Method: AccessorExpr (Mode=':')
  3841. |- Object: AccessorExpr (Mode='.')
  3842. |- Object: NameExpr: 'self'
  3843. \- Field: preceeded_opts
  3844. \- Field: get
  3845. \- Arguments: (Len=1)
  3846. \0- NameExpr: 'opts_pos'
  3847. |- Body: BlockBody: (N_Statements=1)
  3848. |0- ReturnExpr: NameExpr: 'count'
  3849. |1- AssignmentExpr (Operator='+=')
  3850. |- LHS: NameExpr: 'opts_pos'
  3851. \- RHS: LiteralExpr: type=int, value=1
  3852. \-- Runoff Clause: BlockBody: (N_Statements=1)
  3853. |0- ReturnExpr: NameExpr: 'count'
  3854. \2- ReturnExpr: LiteralExpr: type=int, value=0
  3855. |12- FunctionDecl:
  3856. |- Head: FunctionDeclHead: Name='TokenType:after' Type='TokenType' Nargs=2
  3857. |0- TokenType self
  3858. \1- cstr prev_req
  3859. |0- IfExpr:
  3860. |- Condition: BinOpExpr (Operator='==')
  3861. |- LHS: CastExpr (Target='ptr')
  3862. \- Value: AccessorExpr (Mode='.')
  3863. |- Object: NameExpr: 'self'
  3864. \- Field: preceeded_opts
  3865. \- RHS: LiteralExpr: type=ptr, value=0
  3866. |- Body: BlockBody: (N_Statements=1)
  3867. |0- AssignmentExpr (Operator='=')
  3868. |- LHS: AccessorExpr (Mode='.')
  3869. |- Object: NameExpr: 'self'
  3870. \- Field: preceeded_opts
  3871. \- RHS: CallExpr:
  3872. |- Method: AccessorExpr (Mode='::')
  3873. |- Object: NameExpr: 'List'
  3874. \- Field: new
  3875. \- Arguments: (Len=0)
  3876. |1- CallExpr:
  3877. |- Method: AccessorExpr (Mode=':')
  3878. |- Object: AccessorExpr (Mode='.')
  3879. |- Object: NameExpr: 'self'
  3880. \- Field: preceeded_opts
  3881. \- Field: append
  3882. \- Arguments: (Len=1)
  3883. \0- CastExpr (Target='ptr')
  3884. \- Value: NameExpr: 'prev_req'
  3885. \2- ReturnExpr: NameExpr: 'self'
  3886. |13- FunctionDecl:
  3887. |- Head: FunctionDeclHead: Name='TokenType:or' Type='TokenType' Nargs=2
  3888. |0- TokenType self
  3889. \1- cstr prev_req
  3890. \0- ReturnExpr: CallExpr:
  3891. |- Method: AccessorExpr (Mode=':')
  3892. |- Object: NameExpr: 'self'
  3893. \- Field: after
  3894. \- Arguments: (Len=1)
  3895. \0- NameExpr: 'prev_req'
  3896. |14- FunctionDecl:
  3897. |- Head: FunctionDeclHead: Name='TokenType:free' Type='void' Nargs=1
  3898. \0- TokenType self
  3899. |0- IfExpr:
  3900. |- Condition: BinOpExpr (Operator='!=')
  3901. |- LHS: CastExpr (Target='ptr')
  3902. \- Value: AccessorExpr (Mode='.')
  3903. |- Object: NameExpr: 'self'
  3904. \- Field: preceeded_opts
  3905. \- RHS: LiteralExpr: type=ptr, value=0
  3906. |- Body: BlockBody: (N_Statements=2)
  3907. |0- CallExpr:
  3908. |- Method: AccessorExpr (Mode=':')
  3909. |- Object: AccessorExpr (Mode='.')
  3910. |- Object: NameExpr: 'self'
  3911. \- Field: preceeded_opts
  3912. \- Field: clear
  3913. \- Arguments: (Len=0)
  3914. |1- CallExpr:
  3915. |- Method: AccessorExpr (Mode=':')
  3916. |- Object: AccessorExpr (Mode='.')
  3917. |- Object: NameExpr: 'self'
  3918. \- Field: preceeded_opts
  3919. \- Field: free
  3920. \- Arguments: (Len=0)
  3921. |1- CallExpr:
  3922. |- Method: NameExpr: 'free'
  3923. \- Arguments: (Len=1)
  3924. \0- CastExpr (Target='ptr')
  3925. \- Value: NameExpr: 'self'
  3926. \2- ReturnExpr: <void>
  3927. |15- FunctionDecl:
  3928. |- Head: FunctionDeclHead: Name='TokenType:__eq__' Type='bool' Nargs=2
  3929. |0- TokenType self
  3930. \1- TokenType other
  3931. \0- ReturnExpr: BinOpExpr (Operator='==')
  3932. |- LHS: AccessorExpr (Mode='.')
  3933. |- Object: NameExpr: 'self'
  3934. \- Field: name
  3935. \- RHS: AccessorExpr (Mode='.')
  3936. |- Object: NameExpr: 'other'
  3937. \- Field: name
  3938. |16- FunctionDecl:
  3939. |- Head: FunctionDeclHead: Name='TokenType:notoken' Type='TokenType' Nargs=1
  3940. \0- TokenType self
  3941. |0- AssignmentExpr (Operator='=')
  3942. |- LHS: AccessorExpr (Mode='.')
  3943. |- Object: NameExpr: 'self'
  3944. \- Field: produce_token
  3945. \- RHS: LiteralExpr: type=bool, value=0
  3946. \1- ReturnExpr: NameExpr: 'self'
  3947. \17- FunctionDecl:
  3948. |- Head: FunctionDeclHead: Name='TokenType:make_token' Type='Token' Nargs=2
  3949. |0- TokenType self
  3950. \1- cstr text
  3951. \0- ReturnExpr: CallExpr:
  3952. |- Method: AccessorExpr (Mode='::')
  3953. |- Object: NameExpr: 'Token'
  3954. \- Field: _new
  3955. \- Arguments: (Len=2)
  3956. |0- CallExpr:
  3957. |- Method: AccessorExpr (Mode=':')
  3958. |- Object: NameExpr: 'text'
  3959. \- Field: substr
  3960. \- Arguments: (Len=2)
  3961. |0- LiteralExpr: type=int, value=0
  3962. \1- CallExpr:
  3963. |- Method: AccessorExpr (Mode=':')
  3964. |- Object: NameExpr: 'self'
  3965. \- Field: match_internal
  3966. \- Arguments: (Len=1)
  3967. \0- NameExpr: 'text'
  3968. \1- NameExpr: 'self'
  3969. |36- SepExpr (Consumed=2)
  3970. |37- TypeDecl:
  3971. |- Head: TypeDeclHead: `Token` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  3972. \- Body: TypeDeclBody: (N_Statements=7)
  3973. |0- DeclExpr: 'cstr text'
  3974. |1- DeclExpr: 'TokenType type_'
  3975. |2- DeclExpr: 'cstr origin_file'
  3976. |3- DeclExpr: 'int origin_line'
  3977. |4- FunctionDecl:
  3978. |- Head: FunctionDeclHead: Name='Token::_new' Type='Token' Nargs=2
  3979. |0- cstr text
  3980. \1- TokenType type_
  3981. |0- AssignmentExpr (Operator='=')
  3982. |- LHS: DeclExpr: 'Token new'
  3983. \- RHS: CastExpr (Target='Token')
  3984. \- Value: CallExpr:
  3985. |- Method: NameExpr: 'malloc'
  3986. \- Arguments: (Len=1)
  3987. \0- IntrinsicExpr: '@sizeof(Token)@'
  3988. |1- AssignmentExpr (Operator='=')
  3989. |- LHS: AccessorExpr (Mode='.')
  3990. |- Object: NameExpr: 'new'
  3991. \- Field: text
  3992. \- RHS: NameExpr: 'text'
  3993. |2- AssignmentExpr (Operator='=')
  3994. |- LHS: AccessorExpr (Mode='.')
  3995. |- Object: NameExpr: 'new'
  3996. \- Field: type_
  3997. \- RHS: NameExpr: 'type_'
  3998. \3- ReturnExpr: NameExpr: 'new'
  3999. |5- FunctionDecl:
  4000. |- Head: FunctionDeclHead: Name='Token:free' Type='void' Nargs=1
  4001. \0- Token self
  4002. |0- CallExpr:
  4003. |- Method: NameExpr: 'free'
  4004. \- Arguments: (Len=1)
  4005. \0- CastExpr (Target='ptr')
  4006. \- Value: NameExpr: 'self'
  4007. \1- ReturnExpr: <void>
  4008. \6- FunctionDecl:
  4009. |- Head: FunctionDeclHead: Name='Token::free_token_list' Type='void' Nargs=1
  4010. \0- List l
  4011. |0- WhileExpr:
  4012. |- Condition: BinOpExpr (Operator='>')
  4013. |- LHS: AccessorExpr (Mode='.')
  4014. |- Object: NameExpr: 'l'
  4015. \- Field: len
  4016. \- RHS: LiteralExpr: type=int, value=0
  4017. |- Body: BlockBody: (N_Statements=2)
  4018. |0- CallExpr:
  4019. |- Method: AccessorExpr (Mode=':')
  4020. |- Object: GroupingExpr: CastExpr (Target='Token')
  4021. \- Value: CallExpr:
  4022. |- Method: AccessorExpr (Mode=':')
  4023. |- Object: NameExpr: 'l'
  4024. \- Field: get
  4025. \- Arguments: (Len=1)
  4026. \0- LiteralExpr: type=int, value=0
  4027. \- Field: free
  4028. \- Arguments: (Len=0)
  4029. |1- CallExpr:
  4030. |- Method: AccessorExpr (Mode=':')
  4031. |- Object: NameExpr: 'l'
  4032. \- Field: del
  4033. \- Arguments: (Len=1)
  4034. \0- LiteralExpr: type=int, value=0
  4035. |1- CallExpr:
  4036. |- Method: AccessorExpr (Mode=':')
  4037. |- Object: NameExpr: 'l'
  4038. \- Field: clear
  4039. \- Arguments: (Len=0)
  4040. |2- CallExpr:
  4041. |- Method: AccessorExpr (Mode=':')
  4042. |- Object: NameExpr: 'l'
  4043. \- Field: free
  4044. \- Arguments: (Len=0)
  4045. \3- ReturnExpr: <void>
  4046. |38- SepExpr (Consumed=2)
  4047. |39- FunctionDecl:
  4048. |- Head: FunctionDeclHead: Name='List:append_TT' Type='void' Nargs=2
  4049. |0- List l
  4050. \1- TokenType t
  4051. |0- CallExpr:
  4052. |- Method: AccessorExpr (Mode=':')
  4053. |- Object: NameExpr: 'l'
  4054. \- Field: append
  4055. \- Arguments: (Len=1)
  4056. \0- CastExpr (Target='ptr')
  4057. \- Value: NameExpr: 't'
  4058. \1- ReturnExpr: <void>
  4059. |40- SepExpr (Consumed=2)
  4060. |41- FunctionDecl:
  4061. |- Head: FunctionDeclHead: Name='lex::init_default' Type='void' Nargs=1
  4062. \0- List t
  4063. |0- CallExpr:
  4064. |- Method: AccessorExpr (Mode=':')
  4065. |- Object: NameExpr: 't'
  4066. \- Field: append_TT
  4067. \- Arguments: (Len=1)
  4068. \0- CallExpr:
  4069. |- Method: AccessorExpr (Mode=':')
  4070. |- Object: CallExpr:
  4071. |- Method: NameExpr: 'TokenType$$new_fn'
  4072. \- Arguments: (Len=2)
  4073. |0- LiteralExpr: type=cstr, value=T_LINE_COMMENT
  4074. \1- CastExpr (Target='TokenMatcher')
  4075. \- Value: NameExpr: 'lex$$match_line_comment'
  4076. \- Field: notoken
  4077. \- Arguments: (Len=0)
  4078. |1- CallExpr:
  4079. |- Method: AccessorExpr (Mode=':')
  4080. |- Object: NameExpr: 't'
  4081. \- Field: append_TT
  4082. \- Arguments: (Len=1)
  4083. \0- CallExpr:
  4084. |- Method: AccessorExpr (Mode=':')
  4085. |- Object: CallExpr:
  4086. |- Method: NameExpr: 'TokenType$$new_fn'
  4087. \- Arguments: (Len=2)
  4088. |0- LiteralExpr: type=cstr, value=T_BLOCK_COMMENT
  4089. \1- CastExpr (Target='TokenMatcher')
  4090. \- Value: NameExpr: 'lex$$match_block_comment'
  4091. \- Field: notoken
  4092. \- Arguments: (Len=0)
  4093. |2- CallExpr:
  4094. |- Method: AccessorExpr (Mode=':')
  4095. |- Object: NameExpr: 't'
  4096. \- Field: append_TT
  4097. \- Arguments: (Len=1)
  4098. \0- CallExpr:
  4099. |- Method: NameExpr: 'TokenType$$new_fn'
  4100. \- Arguments: (Len=2)
  4101. |0- LiteralExpr: type=cstr, value=T_IMPORT
  4102. \1- CastExpr (Target='TokenMatcher')
  4103. \- Value: NameExpr: 'lex$$match_import'
  4104. |3- CallExpr:
  4105. |- Method: AccessorExpr (Mode=':')
  4106. |- Object: NameExpr: 't'
  4107. \- Field: append_TT
  4108. \- Arguments: (Len=1)
  4109. \0- CallExpr:
  4110. |- Method: NameExpr: 'TokenType$$new_fn'
  4111. \- Arguments: (Len=2)
  4112. |0- LiteralExpr: type=cstr, value=T_INTRINSIC
  4113. \1- CastExpr (Target='TokenMatcher')
  4114. \- Value: NameExpr: 'lex$$match_intrinsic'
  4115. |4- CallExpr:
  4116. |- Method: AccessorExpr (Mode=':')
  4117. |- Object: NameExpr: 't'
  4118. \- Field: append_TT
  4119. \- Arguments: (Len=1)
  4120. \0- CallExpr:
  4121. |- Method: NameExpr: 'TokenType$$new_kw'
  4122. \- Arguments: (Len=2)
  4123. |0- LiteralExpr: type=cstr, value=T_IF
  4124. \1- LiteralExpr: type=cstr, value=if
  4125. |5- CallExpr:
  4126. |- Method: AccessorExpr (Mode=':')
  4127. |- Object: NameExpr: 't'
  4128. \- Field: append_TT
  4129. \- Arguments: (Len=1)
  4130. \0- CallExpr:
  4131. |- Method: NameExpr: 'TokenType$$new_kw'
  4132. \- Arguments: (Len=2)
  4133. |0- LiteralExpr: type=cstr, value=T_DONE
  4134. \1- LiteralExpr: type=cstr, value=done
  4135. |6- CallExpr:
  4136. |- Method: AccessorExpr (Mode=':')
  4137. |- Object: NameExpr: 't'
  4138. \- Field: append_TT
  4139. \- Arguments: (Len=1)
  4140. \0- CallExpr:
  4141. |- Method: NameExpr: 'TokenType$$new_kw'
  4142. \- Arguments: (Len=2)
  4143. |0- LiteralExpr: type=cstr, value=T_DO
  4144. \1- LiteralExpr: type=cstr, value=do
  4145. |7- CallExpr:
  4146. |- Method: AccessorExpr (Mode=':')
  4147. |- Object: NameExpr: 't'
  4148. \- Field: append_TT
  4149. \- Arguments: (Len=1)
  4150. \0- CallExpr:
  4151. |- Method: AccessorExpr (Mode=':')
  4152. |- Object: CallExpr:
  4153. |- Method: NameExpr: 'TokenType$$new_kw'
  4154. \- Arguments: (Len=2)
  4155. |0- LiteralExpr: type=cstr, value=T_ELIF
  4156. \1- LiteralExpr: type=cstr, value=elif
  4157. \- Field: after
  4158. \- Arguments: (Len=1)
  4159. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4160. |8- CallExpr:
  4161. |- Method: AccessorExpr (Mode=':')
  4162. |- Object: NameExpr: 't'
  4163. \- Field: append_TT
  4164. \- Arguments: (Len=1)
  4165. \0- CallExpr:
  4166. |- Method: AccessorExpr (Mode=':')
  4167. |- Object: CallExpr:
  4168. |- Method: NameExpr: 'TokenType$$new_kw'
  4169. \- Arguments: (Len=2)
  4170. |0- LiteralExpr: type=cstr, value=T_ELSE
  4171. \1- LiteralExpr: type=cstr, value=else
  4172. \- Field: after
  4173. \- Arguments: (Len=1)
  4174. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4175. |9- CallExpr:
  4176. |- Method: AccessorExpr (Mode=':')
  4177. |- Object: NameExpr: 't'
  4178. \- Field: append_TT
  4179. \- Arguments: (Len=1)
  4180. \0- CallExpr:
  4181. |- Method: AccessorExpr (Mode=':')
  4182. |- Object: CallExpr:
  4183. |- Method: NameExpr: 'TokenType$$new_kw'
  4184. \- Arguments: (Len=2)
  4185. |0- LiteralExpr: type=cstr, value=T_RETURN
  4186. \1- LiteralExpr: type=cstr, value=return
  4187. \- Field: after
  4188. \- Arguments: (Len=1)
  4189. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4190. |10- CallExpr:
  4191. |- Method: AccessorExpr (Mode=':')
  4192. |- Object: NameExpr: 't'
  4193. \- Field: append_TT
  4194. \- Arguments: (Len=1)
  4195. \0- CallExpr:
  4196. |- Method: AccessorExpr (Mode=':')
  4197. |- Object: CallExpr:
  4198. |- Method: NameExpr: 'TokenType$$new_kw'
  4199. \- Arguments: (Len=2)
  4200. |0- LiteralExpr: type=cstr, value=T_WHILE
  4201. \1- LiteralExpr: type=cstr, value=while
  4202. \- Field: after
  4203. \- Arguments: (Len=1)
  4204. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4205. |11- CallExpr:
  4206. |- Method: AccessorExpr (Mode=':')
  4207. |- Object: NameExpr: 't'
  4208. \- Field: append_TT
  4209. \- Arguments: (Len=1)
  4210. \0- CallExpr:
  4211. |- Method: NameExpr: 'TokenType$$new_kw'
  4212. \- Arguments: (Len=2)
  4213. |0- LiteralExpr: type=cstr, value=T_TYPEDECL
  4214. \1- LiteralExpr: type=cstr, value=type
  4215. |12- CallExpr:
  4216. |- Method: AccessorExpr (Mode=':')
  4217. |- Object: NameExpr: 't'
  4218. \- Field: append_TT
  4219. \- Arguments: (Len=1)
  4220. \0- CallExpr:
  4221. |- Method: NameExpr: 'TokenType$$new_kw'
  4222. \- Arguments: (Len=2)
  4223. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_IS
  4224. \1- LiteralExpr: type=cstr, value=is
  4225. |13- CallExpr:
  4226. |- Method: AccessorExpr (Mode=':')
  4227. |- Object: NameExpr: 't'
  4228. \- Field: append_TT
  4229. \- Arguments: (Len=1)
  4230. \0- CallExpr:
  4231. |- Method: AccessorExpr (Mode=':')
  4232. |- Object: CallExpr:
  4233. |- Method: NameExpr: 'TokenType$$new_fn'
  4234. \- Arguments: (Len=2)
  4235. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_NAME
  4236. \1- CastExpr (Target='TokenMatcher')
  4237. \- Value: NameExpr: 'lex$$match_identifier'
  4238. \- Field: after
  4239. \- Arguments: (Len=1)
  4240. \0- LiteralExpr: type=cstr, value=T_TYPEDECL
  4241. |14- CallExpr:
  4242. |- Method: AccessorExpr (Mode=':')
  4243. |- Object: NameExpr: 't'
  4244. \- Field: append_TT
  4245. \- Arguments: (Len=1)
  4246. \0- CallExpr:
  4247. |- Method: NameExpr: 'TokenType$$new_kw'
  4248. \- Arguments: (Len=2)
  4249. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_ENDTYPE
  4250. \1- LiteralExpr: type=cstr, value=endtype
  4251. |15- CallExpr:
  4252. |- Method: AccessorExpr (Mode=':')
  4253. |- Object: NameExpr: 't'
  4254. \- Field: append_TT
  4255. \- Arguments: (Len=1)
  4256. \0- CallExpr:
  4257. |- Method: AccessorExpr (Mode=':')
  4258. |- Object: CallExpr:
  4259. |- Method: NameExpr: 'TokenType$$new_kw'
  4260. \- Arguments: (Len=2)
  4261. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_PACKED
  4262. \1- LiteralExpr: type=cstr, value=packed
  4263. \- Field: after
  4264. \- Arguments: (Len=1)
  4265. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_IS
  4266. |16- CallExpr:
  4267. |- Method: AccessorExpr (Mode=':')
  4268. |- Object: NameExpr: 't'
  4269. \- Field: append_TT
  4270. \- Arguments: (Len=1)
  4271. \0- CallExpr:
  4272. |- Method: AccessorExpr (Mode=':')
  4273. |- Object: CallExpr:
  4274. |- Method: NameExpr: 'TokenType$$new_kw'
  4275. \- Arguments: (Len=2)
  4276. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS
  4277. \1- LiteralExpr: type=cstr, value=a
  4278. \- Field: after
  4279. \- Arguments: (Len=1)
  4280. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_IS
  4281. |17- CallExpr:
  4282. |- Method: AccessorExpr (Mode=':')
  4283. |- Object: NameExpr: 't'
  4284. \- Field: append_TT
  4285. \- Arguments: (Len=1)
  4286. \0- CallExpr:
  4287. |- Method: AccessorExpr (Mode=':')
  4288. |- Object: CallExpr:
  4289. |- Method: NameExpr: 'TokenType$$new_eq'
  4290. \- Arguments: (Len=2)
  4291. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS_FUNC
  4292. \1- LiteralExpr: type=cstr, value=function->
  4293. \- Field: after
  4294. \- Arguments: (Len=1)
  4295. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS
  4296. |18- CallExpr:
  4297. |- Method: AccessorExpr (Mode=':')
  4298. |- Object: NameExpr: 't'
  4299. \- Field: append_TT
  4300. \- Arguments: (Len=1)
  4301. \0- CallExpr:
  4302. |- Method: AccessorExpr (Mode=':')
  4303. |- Object: CallExpr:
  4304. |- Method: NameExpr: 'TokenType$$new_fn'
  4305. \- Arguments: (Len=2)
  4306. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS_FUNC_RT
  4307. \1- CastExpr (Target='TokenMatcher')
  4308. \- Value: NameExpr: 'lex$$match_identifier'
  4309. \- Field: after
  4310. \- Arguments: (Len=1)
  4311. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS_FUNC
  4312. |19- CallExpr:
  4313. |- Method: AccessorExpr (Mode=':')
  4314. |- Object: NameExpr: 't'
  4315. \- Field: append_TT
  4316. \- Arguments: (Len=1)
  4317. \0- CallExpr:
  4318. |- Method: AccessorExpr (Mode=':')
  4319. |- Object: CallExpr:
  4320. |- Method: NameExpr: 'TokenType$$new_fn'
  4321. \- Arguments: (Len=2)
  4322. |0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS_NAME
  4323. \1- CastExpr (Target='TokenMatcher')
  4324. \- Value: NameExpr: 'lex$$match_identifier'
  4325. \- Field: after
  4326. \- Arguments: (Len=1)
  4327. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS
  4328. |20- CallExpr:
  4329. |- Method: AccessorExpr (Mode=':')
  4330. |- Object: NameExpr: 't'
  4331. \- Field: append_TT
  4332. \- Arguments: (Len=1)
  4333. \0- CallExpr:
  4334. |- Method: AccessorExpr (Mode=':')
  4335. |- Object: CallExpr:
  4336. |- Method: NameExpr: 'TokenType$$new_eq'
  4337. \- Arguments: (Len=2)
  4338. |0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL
  4339. \1- LiteralExpr: type=cstr, value=function
  4340. \- Field: after
  4341. \- Arguments: (Len=1)
  4342. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4343. |21- CallExpr:
  4344. |- Method: AccessorExpr (Mode=':')
  4345. |- Object: NameExpr: 't'
  4346. \- Field: append_TT
  4347. \- Arguments: (Len=1)
  4348. \0- CallExpr:
  4349. |- Method: AccessorExpr (Mode=':')
  4350. |- Object: CallExpr:
  4351. |- Method: NameExpr: 'TokenType$$new_eq'
  4352. \- Arguments: (Len=2)
  4353. |0- LiteralExpr: type=cstr, value=T_ARGLIST_START
  4354. \1- LiteralExpr: type=cstr, value=(
  4355. \- Field: after
  4356. \- Arguments: (Len=1)
  4357. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL
  4358. |22- CallExpr:
  4359. |- Method: AccessorExpr (Mode=':')
  4360. |- Object: NameExpr: 't'
  4361. \- Field: append_TT
  4362. \- Arguments: (Len=1)
  4363. \0- CallExpr:
  4364. |- Method: AccessorExpr (Mode=':')
  4365. |- Object: CallExpr:
  4366. |- Method: AccessorExpr (Mode=':')
  4367. |- Object: CallExpr:
  4368. |- Method: NameExpr: 'TokenType$$new_fn'
  4369. \- Arguments: (Len=2)
  4370. |0- LiteralExpr: type=cstr, value=T_ARGLIST_ELE
  4371. \1- CastExpr (Target='TokenMatcher')
  4372. \- Value: NameExpr: 'lex$$match_var_decl'
  4373. \- Field: after
  4374. \- Arguments: (Len=1)
  4375. \0- LiteralExpr: type=cstr, value=T_ARGLIST_START
  4376. \- Field: or
  4377. \- Arguments: (Len=1)
  4378. \0- LiteralExpr: type=cstr, value=T_ARGLIST_SEP
  4379. |23- CallExpr:
  4380. |- Method: AccessorExpr (Mode=':')
  4381. |- Object: NameExpr: 't'
  4382. \- Field: append_TT
  4383. \- Arguments: (Len=1)
  4384. \0- CallExpr:
  4385. |- Method: AccessorExpr (Mode=':')
  4386. |- Object: CallExpr:
  4387. |- Method: NameExpr: 'TokenType$$new_eq'
  4388. \- Arguments: (Len=2)
  4389. |0- LiteralExpr: type=cstr, value=T_ARGLIST_SEP
  4390. \1- LiteralExpr: type=cstr, value=,
  4391. \- Field: after
  4392. \- Arguments: (Len=1)
  4393. \0- LiteralExpr: type=cstr, value=T_ARGLIST_ELE
  4394. |24- CallExpr:
  4395. |- Method: AccessorExpr (Mode=':')
  4396. |- Object: NameExpr: 't'
  4397. \- Field: append_TT
  4398. \- Arguments: (Len=1)
  4399. \0- CallExpr:
  4400. |- Method: AccessorExpr (Mode=':')
  4401. |- Object: CallExpr:
  4402. |- Method: AccessorExpr (Mode=':')
  4403. |- Object: CallExpr:
  4404. |- Method: NameExpr: 'TokenType$$new_eq'
  4405. \- Arguments: (Len=2)
  4406. |0- LiteralExpr: type=cstr, value=T_ARGLIST_END
  4407. \1- LiteralExpr: type=cstr, value=)
  4408. \- Field: after
  4409. \- Arguments: (Len=1)
  4410. \0- LiteralExpr: type=cstr, value=T_ARGLIST_ELE
  4411. \- Field: or
  4412. \- Arguments: (Len=1)
  4413. \0- LiteralExpr: type=cstr, value=T_ARGLIST_START
  4414. |25- CallExpr:
  4415. |- Method: AccessorExpr (Mode=':')
  4416. |- Object: NameExpr: 't'
  4417. \- Field: append_TT
  4418. \- Arguments: (Len=1)
  4419. \0- CallExpr:
  4420. |- Method: AccessorExpr (Mode=':')
  4421. |- Object: CallExpr:
  4422. |- Method: NameExpr: 'TokenType$$new_fn'
  4423. \- Arguments: (Len=2)
  4424. |0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_NAME
  4425. \1- CastExpr (Target='TokenMatcher')
  4426. \- Value: NameExpr: 'lex$$match_function_identifier'
  4427. \- Field: after
  4428. \- Arguments: (Len=1)
  4429. \0- LiteralExpr: type=cstr, value=T_ARGLIST_END
  4430. |26- CallExpr:
  4431. |- Method: AccessorExpr (Mode=':')
  4432. |- Object: NameExpr: 't'
  4433. \- Field: append_TT
  4434. \- Arguments: (Len=1)
  4435. \0- CallExpr:
  4436. |- Method: AccessorExpr (Mode=':')
  4437. |- Object: CallExpr:
  4438. |- Method: NameExpr: 'TokenType$$new_eq'
  4439. \- Arguments: (Len=2)
  4440. |0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_RETURN
  4441. \1- LiteralExpr: type=cstr, value=->
  4442. \- Field: after
  4443. \- Arguments: (Len=1)
  4444. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_NAME
  4445. |27- CallExpr:
  4446. |- Method: AccessorExpr (Mode=':')
  4447. |- Object: NameExpr: 't'
  4448. \- Field: append_TT
  4449. \- Arguments: (Len=1)
  4450. \0- CallExpr:
  4451. |- Method: AccessorExpr (Mode=':')
  4452. |- Object: CallExpr:
  4453. |- Method: NameExpr: 'TokenType$$new_fn'
  4454. \- Arguments: (Len=2)
  4455. |0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_RETURN_TY
  4456. \1- CastExpr (Target='TokenMatcher')
  4457. \- Value: NameExpr: 'lex$$match_identifier'
  4458. \- Field: after
  4459. \- Arguments: (Len=1)
  4460. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_RETURN
  4461. |28- CallExpr:
  4462. |- Method: AccessorExpr (Mode=':')
  4463. |- Object: NameExpr: 't'
  4464. \- Field: append_TT
  4465. \- Arguments: (Len=1)
  4466. \0- CallExpr:
  4467. |- Method: AccessorExpr (Mode=':')
  4468. |- Object: CallExpr:
  4469. |- Method: NameExpr: 'TokenType$$new_kw'
  4470. \- Arguments: (Len=2)
  4471. |0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_DOES
  4472. \1- LiteralExpr: type=cstr, value=does
  4473. \- Field: after
  4474. \- Arguments: (Len=1)
  4475. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_RETURN_TY
  4476. |29- CallExpr:
  4477. |- Method: AccessorExpr (Mode=':')
  4478. |- Object: NameExpr: 't'
  4479. \- Field: append_TT
  4480. \- Arguments: (Len=1)
  4481. \0- CallExpr:
  4482. |- Method: NameExpr: 'TokenType$$new_fn'
  4483. \- Arguments: (Len=2)
  4484. |0- LiteralExpr: type=cstr, value=T_INT_LITERAL
  4485. \1- CastExpr (Target='TokenMatcher')
  4486. \- Value: NameExpr: 'lex$$match_int_literal'
  4487. |30- CallExpr:
  4488. |- Method: AccessorExpr (Mode=':')
  4489. |- Object: NameExpr: 't'
  4490. \- Field: append_TT
  4491. \- Arguments: (Len=1)
  4492. \0- CallExpr:
  4493. |- Method: NameExpr: 'TokenType$$new_fn'
  4494. \- Arguments: (Len=2)
  4495. |0- LiteralExpr: type=cstr, value=T_BOOL_LITERAL
  4496. \1- CastExpr (Target='TokenMatcher')
  4497. \- Value: NameExpr: 'lex$$match_bool_literal'
  4498. |31- CallExpr:
  4499. |- Method: AccessorExpr (Mode=':')
  4500. |- Object: NameExpr: 't'
  4501. \- Field: append_TT
  4502. \- Arguments: (Len=1)
  4503. \0- CallExpr:
  4504. |- Method: NameExpr: 'TokenType$$new_eq'
  4505. \- Arguments: (Len=2)
  4506. |0- LiteralExpr: type=cstr, value=T_NULL_LITERAL
  4507. \1- LiteralExpr: type=cstr, value=null
  4508. |32- CallExpr:
  4509. |- Method: AccessorExpr (Mode=':')
  4510. |- Object: NameExpr: 't'
  4511. \- Field: append_TT
  4512. \- Arguments: (Len=1)
  4513. \0- CallExpr:
  4514. |- Method: NameExpr: 'TokenType$$new_fn'
  4515. \- Arguments: (Len=2)
  4516. |0- LiteralExpr: type=cstr, value=T_FLOAT_LITERAL
  4517. \1- CastExpr (Target='TokenMatcher')
  4518. \- Value: NameExpr: 'lex$$match_float_literal'
  4519. |33- CallExpr:
  4520. |- Method: AccessorExpr (Mode=':')
  4521. |- Object: NameExpr: 't'
  4522. \- Field: append_TT
  4523. \- Arguments: (Len=1)
  4524. \0- CallExpr:
  4525. |- Method: NameExpr: 'TokenType$$new_fn'
  4526. \- Arguments: (Len=2)
  4527. |0- LiteralExpr: type=cstr, value=T_STRING_LITERAL
  4528. \1- CastExpr (Target='TokenMatcher')
  4529. \- Value: NameExpr: 'lex$$match_string_literal'
  4530. |34- CallExpr:
  4531. |- Method: AccessorExpr (Mode=':')
  4532. |- Object: NameExpr: 't'
  4533. \- Field: append_TT
  4534. \- Arguments: (Len=1)
  4535. \0- CallExpr:
  4536. |- Method: AccessorExpr (Mode=':')
  4537. |- Object: CallExpr:
  4538. |- Method: NameExpr: 'TokenType$$new_fn'
  4539. \- Arguments: (Len=2)
  4540. |0- LiteralExpr: type=cstr, value=T_VAR_DECL
  4541. \1- CastExpr (Target='TokenMatcher')
  4542. \- Value: NameExpr: 'lex$$match_var_decl'
  4543. \- Field: after
  4544. \- Arguments: (Len=1)
  4545. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4546. |35- CallExpr:
  4547. |- Method: AccessorExpr (Mode=':')
  4548. |- Object: NameExpr: 't'
  4549. \- Field: append_TT
  4550. \- Arguments: (Len=1)
  4551. \0- CallExpr:
  4552. |- Method: NameExpr: 'TokenType$$new_fn'
  4553. \- Arguments: (Len=2)
  4554. |0- LiteralExpr: type=cstr, value=T_NAME
  4555. \1- CastExpr (Target='TokenMatcher')
  4556. \- Value: NameExpr: 'lex$$match_identifier'
  4557. |36- CallExpr:
  4558. |- Method: AccessorExpr (Mode=':')
  4559. |- Object: NameExpr: 't'
  4560. \- Field: append_TT
  4561. \- Arguments: (Len=1)
  4562. \0- CallExpr:
  4563. |- Method: NameExpr: 'TokenType$$new_fn'
  4564. \- Arguments: (Len=2)
  4565. |0- LiteralExpr: type=cstr, value=T_AUGASSIGN
  4566. \1- CastExpr (Target='TokenMatcher')
  4567. \- Value: NameExpr: 'lex$$match_augassign'
  4568. |37- CallExpr:
  4569. |- Method: AccessorExpr (Mode=':')
  4570. |- Object: NameExpr: 't'
  4571. \- Field: append_TT
  4572. \- Arguments: (Len=1)
  4573. \0- CallExpr:
  4574. |- Method: AccessorExpr (Mode=':')
  4575. |- Object: CallExpr:
  4576. |- Method: AccessorExpr (Mode=':')
  4577. |- Object: CallExpr:
  4578. |- Method: AccessorExpr (Mode=':')
  4579. |- Object: CallExpr:
  4580. |- Method: AccessorExpr (Mode=':')
  4581. |- Object: CallExpr:
  4582. |- Method: AccessorExpr (Mode=':')
  4583. |- Object: CallExpr:
  4584. |- Method: AccessorExpr (Mode=':')
  4585. |- Object: CallExpr:
  4586. |- Method: NameExpr: 'TokenType$$new_fn'
  4587. \- Arguments: (Len=2)
  4588. |0- LiteralExpr: type=cstr, value=T_BINOP
  4589. \1- CastExpr (Target='TokenMatcher')
  4590. \- Value: NameExpr: 'lex$$match_binop'
  4591. \- Field: after
  4592. \- Arguments: (Len=1)
  4593. \0- LiteralExpr: type=cstr, value=T_NAME
  4594. \- Field: or
  4595. \- Arguments: (Len=1)
  4596. \0- LiteralExpr: type=cstr, value=T_BRACKET_CLOSE
  4597. \- Field: or
  4598. \- Arguments: (Len=1)
  4599. \0- LiteralExpr: type=cstr, value=T_PAREN_CLOSE
  4600. \- Field: or
  4601. \- Arguments: (Len=1)
  4602. \0- LiteralExpr: type=cstr, value=T_INT_LITERAL
  4603. \- Field: or
  4604. \- Arguments: (Len=1)
  4605. \0- LiteralExpr: type=cstr, value=T_STRING_LITERAL
  4606. \- Field: or
  4607. \- Arguments: (Len=1)
  4608. \0- LiteralExpr: type=cstr, value=T_FLOAT_LITERAL
  4609. |38- CallExpr:
  4610. |- Method: AccessorExpr (Mode=':')
  4611. |- Object: NameExpr: 't'
  4612. \- Field: append_TT
  4613. \- Arguments: (Len=1)
  4614. \0- CallExpr:
  4615. |- Method: NameExpr: 'TokenType$$new_eq'
  4616. \- Arguments: (Len=2)
  4617. |0- LiteralExpr: type=cstr, value=T_ASSIGN
  4618. \1- LiteralExpr: type=cstr, value==
  4619. |39- CallExpr:
  4620. |- Method: AccessorExpr (Mode=':')
  4621. |- Object: NameExpr: 't'
  4622. \- Field: append_TT
  4623. \- Arguments: (Len=1)
  4624. \0- CallExpr:
  4625. |- Method: NameExpr: 'TokenType$$new_eq'
  4626. \- Arguments: (Len=2)
  4627. |0- LiteralExpr: type=cstr, value=T_PAREN_OPEN
  4628. \1- LiteralExpr: type=cstr, value=(
  4629. |40- CallExpr:
  4630. |- Method: AccessorExpr (Mode=':')
  4631. |- Object: NameExpr: 't'
  4632. \- Field: append_TT
  4633. \- Arguments: (Len=1)
  4634. \0- CallExpr:
  4635. |- Method: NameExpr: 'TokenType$$new_eq'
  4636. \- Arguments: (Len=2)
  4637. |0- LiteralExpr: type=cstr, value=T_PAREN_CLOSE
  4638. \1- LiteralExpr: type=cstr, value=)
  4639. |41- CallExpr:
  4640. |- Method: AccessorExpr (Mode=':')
  4641. |- Object: NameExpr: 't'
  4642. \- Field: append_TT
  4643. \- Arguments: (Len=1)
  4644. \0- CallExpr:
  4645. |- Method: NameExpr: 'TokenType$$new_eq'
  4646. \- Arguments: (Len=2)
  4647. |0- LiteralExpr: type=cstr, value=T_CAST
  4648. \1- LiteralExpr: type=cstr, value=|
  4649. |42- CallExpr:
  4650. |- Method: AccessorExpr (Mode=':')
  4651. |- Object: NameExpr: 't'
  4652. \- Field: append_TT
  4653. \- Arguments: (Len=1)
  4654. \0- CallExpr:
  4655. |- Method: NameExpr: 'TokenType$$new_eq'
  4656. \- Arguments: (Len=2)
  4657. |0- LiteralExpr: type=cstr, value=T_DOT
  4658. \1- LiteralExpr: type=cstr, value=.
  4659. |43- CallExpr:
  4660. |- Method: AccessorExpr (Mode=':')
  4661. |- Object: NameExpr: 't'
  4662. \- Field: append_TT
  4663. \- Arguments: (Len=1)
  4664. \0- CallExpr:
  4665. |- Method: NameExpr: 'TokenType$$new_eq'
  4666. \- Arguments: (Len=2)
  4667. |0- LiteralExpr: type=cstr, value=T_BRACKET_OPEN
  4668. \1- LiteralExpr: type=cstr, value=[
  4669. |44- CallExpr:
  4670. |- Method: AccessorExpr (Mode=':')
  4671. |- Object: NameExpr: 't'
  4672. \- Field: append_TT
  4673. \- Arguments: (Len=1)
  4674. \0- CallExpr:
  4675. |- Method: NameExpr: 'TokenType$$new_eq'
  4676. \- Arguments: (Len=2)
  4677. |0- LiteralExpr: type=cstr, value=T_BRACKET_CLOSE
  4678. \1- LiteralExpr: type=cstr, value=]
  4679. |45- CallExpr:
  4680. |- Method: AccessorExpr (Mode=':')
  4681. |- Object: NameExpr: 't'
  4682. \- Field: append_TT
  4683. \- Arguments: (Len=1)
  4684. \0- CallExpr:
  4685. |- Method: NameExpr: 'TokenType$$new_eq'
  4686. \- Arguments: (Len=2)
  4687. |0- LiteralExpr: type=cstr, value=T_DOT
  4688. \1- LiteralExpr: type=cstr, value=.
  4689. |46- CallExpr:
  4690. |- Method: AccessorExpr (Mode=':')
  4691. |- Object: NameExpr: 't'
  4692. \- Field: append_TT
  4693. \- Arguments: (Len=1)
  4694. \0- CallExpr:
  4695. |- Method: NameExpr: 'TokenType$$new_eq'
  4696. \- Arguments: (Len=2)
  4697. |0- LiteralExpr: type=cstr, value=T_COMMA
  4698. \1- LiteralExpr: type=cstr, value=,
  4699. |47- CallExpr:
  4700. |- Method: AccessorExpr (Mode=':')
  4701. |- Object: NameExpr: 't'
  4702. \- Field: append_TT
  4703. \- Arguments: (Len=1)
  4704. \0- CallExpr:
  4705. |- Method: NameExpr: 'TokenType$$new_eq'
  4706. \- Arguments: (Len=2)
  4707. |0- LiteralExpr: type=cstr, value=T_DOUBLECOLON
  4708. \1- LiteralExpr: type=cstr, value=::
  4709. |48- CallExpr:
  4710. |- Method: AccessorExpr (Mode=':')
  4711. |- Object: NameExpr: 't'
  4712. \- Field: append_TT
  4713. \- Arguments: (Len=1)
  4714. \0- CallExpr:
  4715. |- Method: NameExpr: 'TokenType$$new_eq'
  4716. \- Arguments: (Len=2)
  4717. |0- LiteralExpr: type=cstr, value=T_COLON
  4718. \1- LiteralExpr: type=cstr, value=:
  4719. |49- CallExpr:
  4720. |- Method: AccessorExpr (Mode=':')
  4721. |- Object: NameExpr: 't'
  4722. \- Field: append_TT
  4723. \- Arguments: (Len=1)
  4724. \0- CallExpr:
  4725. |- Method: NameExpr: 'TokenType$$new_in'
  4726. \- Arguments: (Len=2)
  4727. |0- LiteralExpr: type=cstr, value=T_UNOP
  4728. \1- LiteralExpr: type=cstr, value=-!
  4729. |50- CallExpr:
  4730. |- Method: AccessorExpr (Mode=':')
  4731. |- Object: NameExpr: 't'
  4732. \- Field: append_TT
  4733. \- Arguments: (Len=1)
  4734. \0- CallExpr:
  4735. |- Method: NameExpr: 'TokenType$$new_in'
  4736. \- Arguments: (Len=2)
  4737. |0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4738. \1- LiteralExpr: type=cstr, value=\r\n;
  4739. \51- ReturnExpr: <void>
  4740. |42- SepExpr (Consumed=2)
  4741. |43- FunctionDecl:
  4742. |- Head: FunctionDeclHead: Name='Project:tokty_by_name' Type='TokenType' Nargs=2
  4743. |0- Project p
  4744. \1- cstr name
  4745. |0- AssignmentExpr (Operator='=')
  4746. |- LHS: DeclExpr: 'int i'
  4747. \- RHS: LiteralExpr: type=int, value=0
  4748. |1- WhileExpr:
  4749. |- Condition: BinOpExpr (Operator='<')
  4750. |- LHS: NameExpr: 'i'
  4751. \- RHS: AccessorExpr (Mode='.')
  4752. |- Object: AccessorExpr (Mode='.')
  4753. |- Object: NameExpr: 'p'
  4754. \- Field: token_types
  4755. \- Field: len
  4756. |- Body: BlockBody: (N_Statements=2)
  4757. |0- IfExpr:
  4758. |- Condition: BinOpExpr (Operator='==')
  4759. |- LHS: AccessorExpr (Mode='.')
  4760. |- Object: CastExpr (Target='TokenType')
  4761. \- Value: CallExpr:
  4762. |- Method: AccessorExpr (Mode=':')
  4763. |- Object: AccessorExpr (Mode='.')
  4764. |- Object: NameExpr: 'p'
  4765. \- Field: token_types
  4766. \- Field: get
  4767. \- Arguments: (Len=1)
  4768. \0- NameExpr: 'i'
  4769. \- Field: name
  4770. \- RHS: NameExpr: 'name'
  4771. |- Body: BlockBody: (N_Statements=1)
  4772. |0- ReturnExpr: CastExpr (Target='TokenType')
  4773. \- Value: CallExpr:
  4774. |- Method: AccessorExpr (Mode=':')
  4775. |- Object: AccessorExpr (Mode='.')
  4776. |- Object: NameExpr: 'p'
  4777. \- Field: token_types
  4778. \- Field: get
  4779. \- Arguments: (Len=1)
  4780. \0- NameExpr: 'i'
  4781. |1- AssignmentExpr (Operator='+=')
  4782. |- LHS: NameExpr: 'i'
  4783. \- RHS: LiteralExpr: type=int, value=1
  4784. \2- ReturnExpr: CastExpr (Target='TokenType')
  4785. \- Value: LiteralExpr: type=ptr, value=0
  4786. |44- SepExpr (Consumed=2)
  4787. |45- FunctionDecl:
  4788. |- Head: FunctionDeclHead: Name='Project:tokenize' Type='List' Nargs=2
  4789. |0- Project p
  4790. \1- cstr text
  4791. |0- AssignmentExpr (Operator='=')
  4792. |- LHS: DeclExpr: 'ProgressBar bar'
  4793. \- RHS: CallExpr:
  4794. |- Method: NameExpr: 'ProgressBar$$new'
  4795. \- Arguments: (Len=3)
  4796. |0- CallExpr:
  4797. |- Method: AccessorExpr (Mode=':')
  4798. |- Object: NameExpr: 'text'
  4799. \- Field: len
  4800. \- Arguments: (Len=0)
  4801. |1- LiteralExpr: type=int, value=40
  4802. \2- LiteralExpr: type=cstr, value=Tokenizing...
  4803. |1- AssignmentExpr (Operator='=')
  4804. |- LHS: DeclExpr: 'int text_pos'
  4805. \- RHS: LiteralExpr: type=int, value=0
  4806. |2- DeclExpr: 'int current_matcher_idx'
  4807. |3- DeclExpr: 'TokenType current_matcher'
  4808. |4- DeclExpr: 'int dbg_print_token_pos'
  4809. |5- DeclExpr: 'int match_len'
  4810. |6- DeclExpr: 'bool matched'
  4811. |7- AssignmentExpr (Operator='=')
  4812. |- LHS: DeclExpr: 'List tokens'
  4813. \- RHS: CallExpr:
  4814. |- Method: NameExpr: 'List$$new'
  4815. \- Arguments: (Len=0)
  4816. |8- CallExpr:
  4817. |- Method: AccessorExpr (Mode=':')
  4818. |- Object: NameExpr: 'tokens'
  4819. \- Field: append
  4820. \- Arguments: (Len=1)
  4821. \0- CastExpr (Target='ptr')
  4822. \- Value: CallExpr:
  4823. |- Method: AccessorExpr (Mode=':')
  4824. |- Object: CallExpr:
  4825. |- Method: AccessorExpr (Mode=':')
  4826. |- Object: NameExpr: 'p'
  4827. \- Field: tokty_by_name
  4828. \- Arguments: (Len=1)
  4829. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  4830. \- Field: make_token
  4831. \- Arguments: (Len=1)
  4832. \0- LiteralExpr: type=cstr, value=;
  4833. |9- AssignmentExpr (Operator='=')
  4834. |- LHS: DeclExpr: 'bool ok'
  4835. \- RHS: LiteralExpr: type=bool, value=1
  4836. |10- WhileExpr:
  4837. |- Condition: BinOpExpr (Operator='&')
  4838. |- LHS: BinOpExpr (Operator='<')
  4839. |- LHS: NameExpr: 'text_pos'
  4840. \- RHS: CallExpr:
  4841. |- Method: AccessorExpr (Mode=':')
  4842. |- Object: NameExpr: 'text'
  4843. \- Field: len
  4844. \- Arguments: (Len=0)
  4845. \- RHS: NameExpr: 'ok'
  4846. |- Body: BlockBody: (N_Statements=5)
  4847. |0- AssignmentExpr (Operator='=')
  4848. |- LHS: NameExpr: 'current_matcher_idx'
  4849. \- RHS: LiteralExpr: type=int, value=0
  4850. |1- AssignmentExpr (Operator='=')
  4851. |- LHS: NameExpr: 'matched'
  4852. \- RHS: LiteralExpr: type=bool, value=0
  4853. |2- WhileExpr:
  4854. |- Condition: BinOpExpr (Operator='&')
  4855. |- LHS: BinOpExpr (Operator='<')
  4856. |- LHS: NameExpr: 'current_matcher_idx'
  4857. \- RHS: AccessorExpr (Mode='.')
  4858. |- Object: AccessorExpr (Mode='.')
  4859. |- Object: NameExpr: 'p'
  4860. \- Field: token_types
  4861. \- Field: len
  4862. \- RHS: UnOpExpr (Operator='-')
  4863. \- Value: NameExpr: 'matched'
  4864. |- Body: BlockBody: (N_Statements=4)
  4865. |0- AssignmentExpr (Operator='=')
  4866. |- LHS: NameExpr: 'current_matcher'
  4867. \- RHS: CastExpr (Target='TokenType')
  4868. \- Value: CallExpr:
  4869. |- Method: AccessorExpr (Mode=':')
  4870. |- Object: AccessorExpr (Mode='.')
  4871. |- Object: NameExpr: 'p'
  4872. \- Field: token_types
  4873. \- Field: get
  4874. \- Arguments: (Len=1)
  4875. \0- NameExpr: 'current_matcher_idx'
  4876. |1- AssignmentExpr (Operator='=')
  4877. |- LHS: NameExpr: 'match_len'
  4878. \- RHS: CallExpr:
  4879. |- Method: AccessorExpr (Mode=':')
  4880. |- Object: NameExpr: 'current_matcher'
  4881. \- Field: match
  4882. \- Arguments: (Len=2)
  4883. |0- NameExpr: 'tokens'
  4884. \1- CallExpr:
  4885. |- Method: AccessorExpr (Mode=':')
  4886. |- Object: NameExpr: 'text'
  4887. \- Field: offset
  4888. \- Arguments: (Len=1)
  4889. \0- NameExpr: 'text_pos'
  4890. |2- IfExpr:
  4891. |- Condition: BinOpExpr (Operator='>')
  4892. |- LHS: NameExpr: 'match_len'
  4893. \- RHS: LiteralExpr: type=int, value=0
  4894. |- Body: BlockBody: (N_Statements=3)
  4895. |0- AssignmentExpr (Operator='=')
  4896. |- LHS: NameExpr: 'matched'
  4897. \- RHS: LiteralExpr: type=bool, value=1
  4898. |1- IfExpr:
  4899. |- Condition: AccessorExpr (Mode='.')
  4900. |- Object: NameExpr: 'current_matcher'
  4901. \- Field: produce_token
  4902. |- Body: BlockBody: (N_Statements=1)
  4903. |0- CallExpr:
  4904. |- Method: AccessorExpr (Mode=':')
  4905. |- Object: NameExpr: 'tokens'
  4906. \- Field: append
  4907. \- Arguments: (Len=1)
  4908. \0- CastExpr (Target='ptr')
  4909. \- Value: CallExpr:
  4910. |- Method: AccessorExpr (Mode=':')
  4911. |- Object: NameExpr: 'current_matcher'
  4912. \- Field: make_token
  4913. \- Arguments: (Len=1)
  4914. \0- CallExpr:
  4915. |- Method: AccessorExpr (Mode=':')
  4916. |- Object: NameExpr: 'text'
  4917. \- Field: offset
  4918. \- Arguments: (Len=1)
  4919. \0- NameExpr: 'text_pos'
  4920. |2- AssignmentExpr (Operator='+=')
  4921. |- LHS: NameExpr: 'text_pos'
  4922. \- RHS: NameExpr: 'match_len'
  4923. |3- AssignmentExpr (Operator='+=')
  4924. |- LHS: NameExpr: 'current_matcher_idx'
  4925. \- RHS: LiteralExpr: type=int, value=1
  4926. |3- IfExpr:
  4927. |- Condition: CallExpr:
  4928. |- Method: AccessorExpr (Mode=':')
  4929. |- Object: IndexExpr
  4930. |- Array: NameExpr: 'text'
  4931. \- Value: NameExpr: 'text_pos'
  4932. \- Field: in
  4933. \- Arguments: (Len=1)
  4934. \0- LiteralExpr: type=cstr, value= \t
  4935. |- Body: BlockBody: (N_Statements=1)
  4936. |0- AssignmentExpr (Operator='+=')
  4937. |- LHS: NameExpr: 'text_pos'
  4938. \- RHS: LiteralExpr: type=int, value=1
  4939. \-- Runoff Clause: IfExpr:
  4940. |- Condition: CallExpr:
  4941. |- Method: AccessorExpr (Mode=':')
  4942. |- Object: IndexExpr
  4943. |- Array: NameExpr: 'text'
  4944. \- Value: NameExpr: 'text_pos'
  4945. \- Field: in
  4946. \- Arguments: (Len=1)
  4947. \0- LiteralExpr: type=cstr, value=\\
  4948. |- Body: BlockBody: (N_Statements=2)
  4949. |0- AssignmentExpr (Operator='+=')
  4950. |- LHS: NameExpr: 'text_pos'
  4951. \- RHS: LiteralExpr: type=int, value=1
  4952. |1- WhileExpr:
  4953. |- Condition: CallExpr:
  4954. |- Method: AccessorExpr (Mode=':')
  4955. |- Object: IndexExpr
  4956. |- Array: NameExpr: 'text'
  4957. \- Value: NameExpr: 'text_pos'
  4958. \- Field: in
  4959. \- Arguments: (Len=1)
  4960. \0- LiteralExpr: type=cstr, value= \t\r\n
  4961. |- Body: BlockBody: (N_Statements=1)
  4962. |0- AssignmentExpr (Operator='+=')
  4963. |- LHS: NameExpr: 'text_pos'
  4964. \- RHS: LiteralExpr: type=int, value=1
  4965. \-- Runoff Clause: IfExpr:
  4966. |- Condition: UnOpExpr (Operator='-')
  4967. \- Value: NameExpr: 'matched'
  4968. |- Body: BlockBody: (N_Statements=3)
  4969. |0- CallExpr:
  4970. |- Method: NameExpr: 'printf'
  4971. \- Arguments: (Len=3)
  4972. |0- LiteralExpr: type=cstr, value=E: can't match any furter after %i:`%s`\n
  4973. |1- NameExpr: 'text_pos'
  4974. \2- CallExpr:
  4975. |- Method: AccessorExpr (Mode=':')
  4976. |- Object: NameExpr: 'text'
  4977. \- Field: offset
  4978. \- Arguments: (Len=1)
  4979. \0- NameExpr: 'text_pos'
  4980. |1- CallExpr:
  4981. |- Method: NameExpr: 'shoc$$bail_out'
  4982. \- Arguments: (Len=1)
  4983. \0- LiteralExpr: type=cstr, value=Can't match input string
  4984. |2- AssignmentExpr (Operator='=')
  4985. |- LHS: NameExpr: 'ok'
  4986. \- RHS: LiteralExpr: type=bool, value=0
  4987. |4- CallExpr:
  4988. |- Method: AccessorExpr (Mode=':')
  4989. |- Object: NameExpr: 'bar'
  4990. \- Field: update
  4991. \- Arguments: (Len=1)
  4992. \0- NameExpr: 'text_pos'
  4993. |11- CallExpr:
  4994. |- Method: AccessorExpr (Mode=':')
  4995. |- Object: NameExpr: 'bar'
  4996. \- Field: free
  4997. \- Arguments: (Len=0)
  4998. \12- ReturnExpr: NameExpr: 'tokens'
  4999. |46- SepExpr (Consumed=1)
  5000. |2- SepExpr (Consumed=2)
  5001. |3- FileNode: (N_Statements=43)
  5002. |0- SepExpr (Consumed=1)
  5003. |1- SepExpr (Consumed=1)
  5004. |2- SepExpr (Consumed=1)
  5005. |3- FileNode: (N_Statements=5)
  5006. |0- SepExpr (Consumed=1)
  5007. |1- SepExpr (Consumed=1)
  5008. |2- SepExpr (Consumed=2)
  5009. |3- TypeDecl:
  5010. |- Head: TypeDeclHead: `ProgressBar` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  5011. \- Body: TypeDeclBody: (N_Statements=12)
  5012. |0- DeclExpr: 'int last_update'
  5013. |1- DeclExpr: 'int steps'
  5014. |2- DeclExpr: 'int out_of'
  5015. |3- DeclExpr: 'int step'
  5016. |4- DeclExpr: 'cstr text'
  5017. |5- DeclExpr: 'bool reverse'
  5018. |6- DeclExpr: 'bool finished'
  5019. |7- FunctionDecl:
  5020. |- Head: FunctionDeclHead: Name='ProgressBar::new' Type='ProgressBar' Nargs=3
  5021. |0- int out_of
  5022. |1- int steps
  5023. \2- cstr text
  5024. |0- AssignmentExpr (Operator='=')
  5025. |- LHS: DeclExpr: 'ProgressBar new'
  5026. \- RHS: CastExpr (Target='ProgressBar')
  5027. \- Value: CallExpr:
  5028. |- Method: NameExpr: 'malloc'
  5029. \- Arguments: (Len=1)
  5030. \0- IntrinsicExpr: '@sizeof(ProgressBar)@'
  5031. |1- AssignmentExpr (Operator='=')
  5032. |- LHS: AccessorExpr (Mode='.')
  5033. |- Object: NameExpr: 'new'
  5034. \- Field: out_of
  5035. \- RHS: NameExpr: 'out_of'
  5036. |2- AssignmentExpr (Operator='=')
  5037. |- LHS: AccessorExpr (Mode='.')
  5038. |- Object: NameExpr: 'new'
  5039. \- Field: steps
  5040. \- RHS: NameExpr: 'steps'
  5041. |3- AssignmentExpr (Operator='=')
  5042. |- LHS: AccessorExpr (Mode='.')
  5043. |- Object: NameExpr: 'new'
  5044. \- Field: last_update
  5045. \- RHS: UnOpExpr (Operator='-')
  5046. \- Value: LiteralExpr: type=int, value=1
  5047. |4- AssignmentExpr (Operator='=')
  5048. |- LHS: AccessorExpr (Mode='.')
  5049. |- Object: NameExpr: 'new'
  5050. \- Field: step
  5051. \- RHS: CastExpr (Target='int')
  5052. \- Value: GroupingExpr: BinOpExpr (Operator='/')
  5053. |- LHS: NameExpr: 'out_of'
  5054. \- RHS: NameExpr: 'steps'
  5055. |5- AssignmentExpr (Operator='=')
  5056. |- LHS: AccessorExpr (Mode='.')
  5057. |- Object: NameExpr: 'new'
  5058. \- Field: reverse
  5059. \- RHS: LiteralExpr: type=bool, value=0
  5060. |6- AssignmentExpr (Operator='=')
  5061. |- LHS: AccessorExpr (Mode='.')
  5062. |- Object: NameExpr: 'new'
  5063. \- Field: text
  5064. \- RHS: NameExpr: 'text'
  5065. |7- AssignmentExpr (Operator='=')
  5066. |- LHS: AccessorExpr (Mode='.')
  5067. |- Object: NameExpr: 'new'
  5068. \- Field: finished
  5069. \- RHS: LiteralExpr: type=bool, value=0
  5070. |8- IfExpr:
  5071. |- Condition: BinOpExpr (Operator='==')
  5072. |- LHS: AccessorExpr (Mode='.')
  5073. |- Object: NameExpr: 'new'
  5074. \- Field: step
  5075. \- RHS: LiteralExpr: type=int, value=0
  5076. |- Body: BlockBody: (N_Statements=1)
  5077. |0- AssignmentExpr (Operator='=')
  5078. |- LHS: AccessorExpr (Mode='.')
  5079. |- Object: NameExpr: 'new'
  5080. \- Field: step
  5081. \- RHS: LiteralExpr: type=int, value=1
  5082. \9- ReturnExpr: NameExpr: 'new'
  5083. |8- FunctionDecl:
  5084. |- Head: FunctionDeclHead: Name='ProgressBar::new_reversed' Type='ProgressBar' Nargs=3
  5085. |0- int out_of
  5086. |1- int steps
  5087. \2- cstr text
  5088. |0- AssignmentExpr (Operator='=')
  5089. |- LHS: DeclExpr: 'ProgressBar new'
  5090. \- RHS: CallExpr:
  5091. |- Method: AccessorExpr (Mode='::')
  5092. |- Object: NameExpr: 'ProgressBar'
  5093. \- Field: new
  5094. \- Arguments: (Len=3)
  5095. |0- NameExpr: 'out_of'
  5096. |1- NameExpr: 'steps'
  5097. \2- NameExpr: 'text'
  5098. |1- AssignmentExpr (Operator='=')
  5099. |- LHS: AccessorExpr (Mode='.')
  5100. |- Object: NameExpr: 'new'
  5101. \- Field: reverse
  5102. \- RHS: LiteralExpr: type=bool, value=1
  5103. \2- ReturnExpr: NameExpr: 'new'
  5104. |9- FunctionDecl:
  5105. |- Head: FunctionDeclHead: Name='ProgressBar:update' Type='void' Nargs=2
  5106. |0- ProgressBar self
  5107. \1- int pos
  5108. |0- IfExpr:
  5109. |- Condition: AccessorExpr (Mode='.')
  5110. |- Object: NameExpr: 'self'
  5111. \- Field: finished
  5112. |- Body: BlockBody: (N_Statements=1)
  5113. |0- ReturnExpr: <void>
  5114. |1- IfExpr:
  5115. |- Condition: AccessorExpr (Mode='.')
  5116. |- Object: NameExpr: 'self'
  5117. \- Field: reverse
  5118. |- Body: BlockBody: (N_Statements=1)
  5119. |0- AssignmentExpr (Operator='=')
  5120. |- LHS: NameExpr: 'pos'
  5121. \- RHS: BinOpExpr (Operator='-')
  5122. |- LHS: AccessorExpr (Mode='.')
  5123. |- Object: NameExpr: 'self'
  5124. \- Field: out_of
  5125. \- RHS: NameExpr: 'pos'
  5126. |2- AssignmentExpr (Operator='=')
  5127. |- LHS: DeclExpr: 'int cur_state'
  5128. \- RHS: GroupingExpr: BinOpExpr (Operator='/')
  5129. |- LHS: NameExpr: 'pos'
  5130. \- RHS: AccessorExpr (Mode='.')
  5131. |- Object: NameExpr: 'self'
  5132. \- Field: step
  5133. |3- IfExpr:
  5134. |- Condition: CallExpr:
  5135. |- Method: AccessorExpr (Mode=':')
  5136. |- Object: GroupingExpr: BinOpExpr (Operator='>')
  5137. |- LHS: NameExpr: 'cur_state'
  5138. \- RHS: AccessorExpr (Mode='.')
  5139. |- Object: NameExpr: 'self'
  5140. \- Field: last_update
  5141. \- Field: or
  5142. \- Arguments: (Len=1)
  5143. \0- BinOpExpr (Operator='==')
  5144. |- LHS: NameExpr: 'pos'
  5145. \- RHS: AccessorExpr (Mode='.')
  5146. |- Object: NameExpr: 'self'
  5147. \- Field: out_of
  5148. |- Body: BlockBody: (N_Statements=9)
  5149. |0- AssignmentExpr (Operator='=')
  5150. |- LHS: DeclExpr: 'int pct'
  5151. \- RHS: CastExpr (Target='int')
  5152. \- Value: GroupingExpr: BinOpExpr (Operator='*')
  5153. |- LHS: GroupingExpr: BinOpExpr (Operator='/')
  5154. |- LHS: CastExpr (Target='float')
  5155. \- Value: NameExpr: 'pos'
  5156. \- RHS: CastExpr (Target='float')
  5157. \- Value: AccessorExpr (Mode='.')
  5158. |- Object: NameExpr: 'self'
  5159. \- Field: out_of
  5160. \- RHS: LiteralExpr: type=float, value=100.
  5161. |1- AssignmentExpr (Operator='=')
  5162. |- LHS: AccessorExpr (Mode='.')
  5163. |- Object: NameExpr: 'self'
  5164. \- Field: last_update
  5165. \- RHS: NameExpr: 'cur_state'
  5166. |2- CallExpr:
  5167. |- Method: NameExpr: 'fprintf'
  5168. \- Arguments: (Len=5)
  5169. |0- NameExpr: 'stdout'
  5170. |1- LiteralExpr: type=cstr, value=\r%s %010i/%010i [
  5171. |2- AccessorExpr (Mode='.')
  5172. |- Object: NameExpr: 'self'
  5173. \- Field: text
  5174. |3- NameExpr: 'pos'
  5175. \4- AccessorExpr (Mode='.')
  5176. |- Object: NameExpr: 'self'
  5177. \- Field: out_of
  5178. |3- AssignmentExpr (Operator='=')
  5179. |- LHS: DeclExpr: 'int i'
  5180. \- RHS: LiteralExpr: type=int, value=1
  5181. |4- WhileExpr:
  5182. |- Condition: BinOpExpr (Operator='<')
  5183. |- LHS: NameExpr: 'i'
  5184. \- RHS: AccessorExpr (Mode='.')
  5185. |- Object: NameExpr: 'self'
  5186. \- Field: steps
  5187. |- Body: BlockBody: (N_Statements=2)
  5188. |0- IfExpr:
  5189. |- Condition: CallExpr:
  5190. |- Method: AccessorExpr (Mode=':')
  5191. |- Object: GroupingExpr: BinOpExpr (Operator='&')
  5192. |- LHS: GroupingExpr: BinOpExpr (Operator='>=')
  5193. |- LHS: NameExpr: 'pos'
  5194. \- RHS: GroupingExpr: BinOpExpr (Operator='*')
  5195. |- LHS: AccessorExpr (Mode='.')
  5196. |- Object: NameExpr: 'self'
  5197. \- Field: step
  5198. \- RHS: GroupingExpr: BinOpExpr (Operator='+')
  5199. |- LHS: NameExpr: 'i'
  5200. \- RHS: LiteralExpr: type=int, value=1
  5201. \- RHS: UnOpExpr (Operator='-')
  5202. \- Value: GroupingExpr: BinOpExpr (Operator='==')
  5203. |- LHS: NameExpr: 'i'
  5204. \- RHS: BinOpExpr (Operator='-')
  5205. |- LHS: AccessorExpr (Mode='.')
  5206. |- Object: NameExpr: 'self'
  5207. \- Field: steps
  5208. \- RHS: LiteralExpr: type=int, value=1
  5209. \- Field: or
  5210. \- Arguments: (Len=1)
  5211. \0- BinOpExpr (Operator='==')
  5212. |- LHS: NameExpr: 'pct'
  5213. \- RHS: LiteralExpr: type=int, value=100
  5214. |- Body: BlockBody: (N_Statements=1)
  5215. |0- CallExpr:
  5216. |- Method: NameExpr: 'fprintf'
  5217. \- Arguments: (Len=2)
  5218. |0- NameExpr: 'stdout'
  5219. \1- LiteralExpr: type=cstr, value==
  5220. \-- Runoff Clause: IfExpr:
  5221. |- Condition: GroupingExpr: BinOpExpr (Operator='>=')
  5222. |- LHS: NameExpr: 'pos'
  5223. \- RHS: GroupingExpr: BinOpExpr (Operator='*')
  5224. |- LHS: AccessorExpr (Mode='.')
  5225. |- Object: NameExpr: 'self'
  5226. \- Field: step
  5227. \- RHS: NameExpr: 'i'
  5228. |- Body: BlockBody: (N_Statements=1)
  5229. |0- CallExpr:
  5230. |- Method: NameExpr: 'fprintf'
  5231. \- Arguments: (Len=2)
  5232. |0- NameExpr: 'stdout'
  5233. \1- LiteralExpr: type=cstr, value=>
  5234. \-- Runoff Clause: BlockBody: (N_Statements=1)
  5235. |0- CallExpr:
  5236. |- Method: NameExpr: 'fprintf'
  5237. \- Arguments: (Len=2)
  5238. |0- NameExpr: 'stdout'
  5239. \1- LiteralExpr: type=cstr, value=
  5240. |1- AssignmentExpr (Operator='+=')
  5241. |- LHS: NameExpr: 'i'
  5242. \- RHS: LiteralExpr: type=int, value=1
  5243. |5- IfExpr:
  5244. |- Condition: BinOpExpr (Operator='==')
  5245. |- LHS: NameExpr: 'pct'
  5246. \- RHS: LiteralExpr: type=int, value=100
  5247. |- Body: BlockBody: (N_Statements=1)
  5248. |0- CallExpr:
  5249. |- Method: NameExpr: 'fprintf'
  5250. \- Arguments: (Len=2)
  5251. |0- NameExpr: 'stdout'
  5252. \1- LiteralExpr: type=cstr, value==
  5253. \-- Runoff Clause: BlockBody: (N_Statements=1)
  5254. |0- CallExpr:
  5255. |- Method: NameExpr: 'fprintf'
  5256. \- Arguments: (Len=2)
  5257. |0- NameExpr: 'stdout'
  5258. \1- LiteralExpr: type=cstr, value=
  5259. |6- CallExpr:
  5260. |- Method: NameExpr: 'fprintf'
  5261. \- Arguments: (Len=3)
  5262. |0- NameExpr: 'stdout'
  5263. |1- LiteralExpr: type=cstr, value=] %03i%%
  5264. \2- NameExpr: 'pct'
  5265. |7- CallExpr:
  5266. |- Method: NameExpr: 'fflush'
  5267. \- Arguments: (Len=1)
  5268. \0- NameExpr: 'stdout'
  5269. |8- IfExpr:
  5270. |- Condition: BinOpExpr (Operator='==')
  5271. |- LHS: NameExpr: 'pct'
  5272. \- RHS: LiteralExpr: type=int, value=100
  5273. |- Body: BlockBody: (N_Statements=2)
  5274. |0- CallExpr:
  5275. |- Method: NameExpr: 'printf'
  5276. \- Arguments: (Len=1)
  5277. \0- LiteralExpr: type=cstr, value=Done!\n
  5278. |1- AssignmentExpr (Operator='=')
  5279. |- LHS: AccessorExpr (Mode='.')
  5280. |- Object: NameExpr: 'self'
  5281. \- Field: finished
  5282. \- RHS: LiteralExpr: type=bool, value=1
  5283. \4- ReturnExpr: <void>
  5284. |10- FunctionDecl:
  5285. |- Head: FunctionDeclHead: Name='ProgressBar:done' Type='void' Nargs=1
  5286. \0- ProgressBar self
  5287. |0- CallExpr:
  5288. |- Method: AccessorExpr (Mode=':')
  5289. |- Object: NameExpr: 'self'
  5290. \- Field: update
  5291. \- Arguments: (Len=1)
  5292. \0- AccessorExpr (Mode='.')
  5293. |- Object: NameExpr: 'self'
  5294. \- Field: out_of
  5295. \1- ReturnExpr: <void>
  5296. \11- FunctionDecl:
  5297. |- Head: FunctionDeclHead: Name='ProgressBar:free' Type='void' Nargs=1
  5298. \0- ProgressBar self
  5299. |0- CallExpr:
  5300. |- Method: NameExpr: 'free'
  5301. \- Arguments: (Len=1)
  5302. \0- CastExpr (Target='ptr')
  5303. \- Value: NameExpr: 'self'
  5304. \1- ReturnExpr: <void>
  5305. |4- SepExpr (Consumed=1)
  5306. |4- SepExpr (Consumed=1)
  5307. |5- FileNode: (N_Statements=10)
  5308. |0- SepExpr (Consumed=1)
  5309. |1- FileNode: (N_Statements=7)
  5310. |0- SepExpr (Consumed=1)
  5311. |1- FileNode: (N_Statements=2)
  5312. |0- SepExpr (Consumed=1)
  5313. |1- SepExpr (Consumed=1)
  5314. |2- SepExpr (Consumed=2)
  5315. |3- TypeDecl:
  5316. |- Head: TypeDeclHead: `MapEntry` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  5317. \- Body: TypeDeclBody: (N_Statements=3)
  5318. |0- DeclExpr: 'cstr key'
  5319. |1- DeclExpr: 'ptr value'
  5320. \2- FunctionDecl:
  5321. |- Head: FunctionDeclHead: Name='MapEntry::new' Type='MapEntry' Nargs=2
  5322. |0- cstr key
  5323. \1- ptr value
  5324. |0- AssignmentExpr (Operator='=')
  5325. |- LHS: DeclExpr: 'MapEntry new'
  5326. \- RHS: CastExpr (Target='MapEntry')
  5327. \- Value: CallExpr:
  5328. |- Method: NameExpr: 'malloc'
  5329. \- Arguments: (Len=1)
  5330. \0- IntrinsicExpr: '@sizeof(MapEntry)@'
  5331. |1- AssignmentExpr (Operator='=')
  5332. |- LHS: AccessorExpr (Mode='.')
  5333. |- Object: NameExpr: 'new'
  5334. \- Field: key
  5335. \- RHS: NameExpr: 'key'
  5336. |2- AssignmentExpr (Operator='=')
  5337. |- LHS: AccessorExpr (Mode='.')
  5338. |- Object: NameExpr: 'new'
  5339. \- Field: value
  5340. \- RHS: NameExpr: 'value'
  5341. \3- ReturnExpr: NameExpr: 'new'
  5342. |4- SepExpr (Consumed=2)
  5343. |5- TypeDecl:
  5344. |- Head: TypeDeclHead: `StrMap` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  5345. \- Body: TypeDeclBody: (N_Statements=8)
  5346. |0- FunctionDecl:
  5347. |- Head: FunctionDeclHead: Name='StrMap::new' Type='StrMap' Nargs=0
  5348. \0- ReturnExpr: CastExpr (Target='StrMap')
  5349. \- Value: CallExpr:
  5350. |- Method: AccessorExpr (Mode='::')
  5351. |- Object: NameExpr: 'List'
  5352. \- Field: new
  5353. \- Arguments: (Len=0)
  5354. |1- FunctionDecl:
  5355. |- Head: FunctionDeclHead: Name='StrMap:_al' Type='List' Nargs=1
  5356. \0- StrMap self
  5357. \0- ReturnExpr: CastExpr (Target='List')
  5358. \- Value: NameExpr: 'self'
  5359. |2- FunctionDecl:
  5360. |- Head: FunctionDeclHead: Name='StrMap:get_entry' Type='MapEntry' Nargs=2
  5361. |0- StrMap self
  5362. \1- cstr key
  5363. |0- AssignmentExpr (Operator='=')
  5364. |- LHS: DeclExpr: 'int i'
  5365. \- RHS: LiteralExpr: type=int, value=0
  5366. |1- WhileExpr:
  5367. |- Condition: BinOpExpr (Operator='<')
  5368. |- LHS: NameExpr: 'i'
  5369. \- RHS: AccessorExpr (Mode='.')
  5370. |- Object: CallExpr:
  5371. |- Method: AccessorExpr (Mode=':')
  5372. |- Object: NameExpr: 'self'
  5373. \- Field: _al
  5374. \- Arguments: (Len=0)
  5375. \- Field: len
  5376. |- Body: BlockBody: (N_Statements=2)
  5377. |0- IfExpr:
  5378. |- Condition: BinOpExpr (Operator='==')
  5379. |- LHS: AccessorExpr (Mode='.')
  5380. |- Object: GroupingExpr: CastExpr (Target='MapEntry')
  5381. \- Value: CallExpr:
  5382. |- Method: AccessorExpr (Mode=':')
  5383. |- Object: CallExpr:
  5384. |- Method: AccessorExpr (Mode=':')
  5385. |- Object: NameExpr: 'self'
  5386. \- Field: _al
  5387. \- Arguments: (Len=0)
  5388. \- Field: get
  5389. \- Arguments: (Len=1)
  5390. \0- NameExpr: 'i'
  5391. \- Field: key
  5392. \- RHS: NameExpr: 'key'
  5393. |- Body: BlockBody: (N_Statements=1)
  5394. |0- ReturnExpr: CastExpr (Target='MapEntry')
  5395. \- Value: CallExpr:
  5396. |- Method: AccessorExpr (Mode=':')
  5397. |- Object: CallExpr:
  5398. |- Method: AccessorExpr (Mode=':')
  5399. |- Object: NameExpr: 'self'
  5400. \- Field: _al
  5401. \- Arguments: (Len=0)
  5402. \- Field: get
  5403. \- Arguments: (Len=1)
  5404. \0- NameExpr: 'i'
  5405. |1- AssignmentExpr (Operator='+=')
  5406. |- LHS: NameExpr: 'i'
  5407. \- RHS: LiteralExpr: type=int, value=1
  5408. \2- ReturnExpr: CastExpr (Target='MapEntry')
  5409. \- Value: LiteralExpr: type=ptr, value=0
  5410. |3- FunctionDecl:
  5411. |- Head: FunctionDeclHead: Name='StrMap:contains' Type='bool' Nargs=2
  5412. |0- StrMap self
  5413. \1- cstr key
  5414. \0- ReturnExpr: BinOpExpr (Operator='!=')
  5415. |- LHS: CastExpr (Target='ptr')
  5416. \- Value: CallExpr:
  5417. |- Method: AccessorExpr (Mode=':')
  5418. |- Object: NameExpr: 'self'
  5419. \- Field: get_entry
  5420. \- Arguments: (Len=1)
  5421. \0- NameExpr: 'key'
  5422. \- RHS: LiteralExpr: type=ptr, value=0
  5423. |4- FunctionDecl:
  5424. |- Head: FunctionDeclHead: Name='StrMap:set' Type='void' Nargs=3
  5425. |0- StrMap self
  5426. |1- cstr key
  5427. \2- ptr value
  5428. |0- IfExpr:
  5429. |- Condition: UnOpExpr (Operator='-')
  5430. \- Value: CallExpr:
  5431. |- Method: AccessorExpr (Mode=':')
  5432. |- Object: NameExpr: 'self'
  5433. \- Field: contains
  5434. \- Arguments: (Len=1)
  5435. \0- NameExpr: 'key'
  5436. |- Body: BlockBody: (N_Statements=1)
  5437. |0- CallExpr:
  5438. |- Method: AccessorExpr (Mode=':')
  5439. |- Object: CallExpr:
  5440. |- Method: AccessorExpr (Mode=':')
  5441. |- Object: NameExpr: 'self'
  5442. \- Field: _al
  5443. \- Arguments: (Len=0)
  5444. \- Field: append
  5445. \- Arguments: (Len=1)
  5446. \0- CastExpr (Target='ptr')
  5447. \- Value: CallExpr:
  5448. |- Method: AccessorExpr (Mode='::')
  5449. |- Object: NameExpr: 'MapEntry'
  5450. \- Field: new
  5451. \- Arguments: (Len=2)
  5452. |0- NameExpr: 'key'
  5453. \1- NameExpr: 'value'
  5454. \-- Runoff Clause: BlockBody: (N_Statements=1)
  5455. |0- AssignmentExpr (Operator='=')
  5456. |- LHS: AccessorExpr (Mode='.')
  5457. |- Object: CallExpr:
  5458. |- Method: AccessorExpr (Mode=':')
  5459. |- Object: NameExpr: 'self'
  5460. \- Field: get_entry
  5461. \- Arguments: (Len=1)
  5462. \0- NameExpr: 'key'
  5463. \- Field: value
  5464. \- RHS: NameExpr: 'value'
  5465. \1- ReturnExpr: <void>
  5466. |5- FunctionDecl:
  5467. |- Head: FunctionDeclHead: Name='StrMap:get' Type='ptr' Nargs=2
  5468. |0- StrMap self
  5469. \1- cstr key
  5470. |0- IfExpr:
  5471. |- Condition: UnOpExpr (Operator='-')
  5472. \- Value: CallExpr:
  5473. |- Method: AccessorExpr (Mode=':')
  5474. |- Object: NameExpr: 'self'
  5475. \- Field: contains
  5476. \- Arguments: (Len=1)
  5477. \0- NameExpr: 'key'
  5478. |- Body: BlockBody: (N_Statements=1)
  5479. |0- CallExpr:
  5480. |- Method: AccessorExpr (Mode='::')
  5481. |- Object: NameExpr: 'orth'
  5482. \- Field: fail
  5483. \- Arguments: (Len=1)
  5484. \0- BinOpExpr (Operator='+')
  5485. |- LHS: LiteralExpr: type=cstr, value=KeyError in StrMap:
  5486. \- RHS: NameExpr: 'key'
  5487. \1- ReturnExpr: AccessorExpr (Mode='.')
  5488. |- Object: CallExpr:
  5489. |- Method: AccessorExpr (Mode=':')
  5490. |- Object: NameExpr: 'self'
  5491. \- Field: get_entry
  5492. \- Arguments: (Len=1)
  5493. \0- NameExpr: 'key'
  5494. \- Field: value
  5495. |6- FunctionDecl:
  5496. |- Head: FunctionDeclHead: Name='StrMap:num_keys' Type='int' Nargs=1
  5497. \0- StrMap self
  5498. \0- ReturnExpr: AccessorExpr (Mode='.')
  5499. |- Object: CallExpr:
  5500. |- Method: AccessorExpr (Mode=':')
  5501. |- Object: NameExpr: 'self'
  5502. \- Field: _al
  5503. \- Arguments: (Len=0)
  5504. \- Field: len
  5505. \7- FunctionDecl:
  5506. |- Head: FunctionDeclHead: Name='StrMap:get_by_num' Type='ptr' Nargs=2
  5507. |0- StrMap self
  5508. \1- int req
  5509. \0- ReturnExpr: AccessorExpr (Mode='.')
  5510. |- Object: GroupingExpr: CastExpr (Target='MapEntry')
  5511. \- Value: CallExpr:
  5512. |- Method: AccessorExpr (Mode=':')
  5513. |- Object: CallExpr:
  5514. |- Method: AccessorExpr (Mode=':')
  5515. |- Object: NameExpr: 'self'
  5516. \- Field: _al
  5517. \- Arguments: (Len=0)
  5518. \- Field: get
  5519. \- Arguments: (Len=1)
  5520. \0- NameExpr: 'req'
  5521. \- Field: value
  5522. |6- SepExpr (Consumed=1)
  5523. |2- SepExpr (Consumed=1)
  5524. |3- SepExpr (Consumed=2)
  5525. |4- TypeDeclHead: `NodeTransformer` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`Node`
  5526. |5- SepExpr (Consumed=2)
  5527. |6- TypeDecl:
  5528. |- Head: TypeDeclHead: `TransformerPass` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  5529. \- Body: TypeDeclBody: (N_Statements=10)
  5530. |0- DeclExpr: 'cstr name'
  5531. |1- DeclExpr: 'StrMap visitor_map'
  5532. |2- DeclExpr: 'ptr extra_info'
  5533. |3- DeclExpr: 'Project proj'
  5534. |4- FunctionDecl:
  5535. |- Head: FunctionDeclHead: Name='TransformerPass::new' Type='TransformerPass' Nargs=1
  5536. \0- cstr name
  5537. |0- AssignmentExpr (Operator='=')
  5538. |- LHS: DeclExpr: 'TransformerPass new'
  5539. \- RHS: CastExpr (Target='TransformerPass')
  5540. \- Value: CallExpr:
  5541. |- Method: NameExpr: 'malloc'
  5542. \- Arguments: (Len=1)
  5543. \0- IntrinsicExpr: '@sizeof(TransformerPass)@'
  5544. |1- AssignmentExpr (Operator='=')
  5545. |- LHS: AccessorExpr (Mode='.')
  5546. |- Object: NameExpr: 'new'
  5547. \- Field: name
  5548. \- RHS: NameExpr: 'name'
  5549. |2- AssignmentExpr (Operator='=')
  5550. |- LHS: AccessorExpr (Mode='.')
  5551. |- Object: NameExpr: 'new'
  5552. \- Field: visitor_map
  5553. \- RHS: CallExpr:
  5554. |- Method: AccessorExpr (Mode='::')
  5555. |- Object: NameExpr: 'StrMap'
  5556. \- Field: new
  5557. \- Arguments: (Len=0)
  5558. \3- ReturnExpr: NameExpr: 'new'
  5559. |5- FunctionDecl:
  5560. |- Head: FunctionDeclHead: Name='TransformerPass:set_project' Type='TransformerPass' Nargs=2
  5561. |0- TransformerPass p
  5562. \1- Project proj
  5563. |0- AssignmentExpr (Operator='=')
  5564. |- LHS: AccessorExpr (Mode='.')
  5565. |- Object: NameExpr: 'p'
  5566. \- Field: proj
  5567. \- RHS: NameExpr: 'proj'
  5568. \1- ReturnExpr: NameExpr: 'p'
  5569. |6- FunctionDecl:
  5570. |- Head: FunctionDeclHead: Name='TransformerPass:add_specialization' Type='TransformerPass' Nargs=3
  5571. |0- TransformerPass self
  5572. |1- cstr node_type
  5573. \2- NodeTransformer visitor
  5574. |0- CallExpr:
  5575. |- Method: AccessorExpr (Mode=':')
  5576. |- Object: AccessorExpr (Mode='.')
  5577. |- Object: NameExpr: 'self'
  5578. \- Field: visitor_map
  5579. \- Field: set
  5580. \- Arguments: (Len=2)
  5581. |0- NameExpr: 'node_type'
  5582. \1- CastExpr (Target='ptr')
  5583. \- Value: NameExpr: 'visitor'
  5584. \1- ReturnExpr: NameExpr: 'self'
  5585. |7- FunctionDecl:
  5586. |- Head: FunctionDeclHead: Name='TransformerPass:set_info' Type='TransformerPass' Nargs=2
  5587. |0- TransformerPass self
  5588. \1- ptr info
  5589. |0- AssignmentExpr (Operator='=')
  5590. |- LHS: AccessorExpr (Mode='.')
  5591. |- Object: NameExpr: 'self'
  5592. \- Field: extra_info
  5593. \- RHS: NameExpr: 'info'
  5594. \1- ReturnExpr: NameExpr: 'self'
  5595. |8- FunctionDecl:
  5596. |- Head: FunctionDeclHead: Name='TransformerPass:visit_children' Type='void' Nargs=2
  5597. |0- TransformerPass self
  5598. \1- Node n
  5599. |0- CallExpr:
  5600. |- Method: AccessorExpr (Mode=':')
  5601. |- Object: NameExpr: 'n'
  5602. \- Field: run_transformer_on_children
  5603. \- Arguments: (Len=1)
  5604. \0- NameExpr: 'self'
  5605. \1- ReturnExpr: <void>
  5606. \9- FunctionDecl:
  5607. |- Head: FunctionDeclHead: Name='TransformerPass:visit' Type='Node' Nargs=2
  5608. |0- TransformerPass self
  5609. \1- Node n
  5610. |0- CallExpr:
  5611. |- Method: AccessorExpr (Mode=':')
  5612. |- Object: NameExpr: 'self'
  5613. \- Field: visit_children
  5614. \- Arguments: (Len=1)
  5615. \0- NameExpr: 'n'
  5616. |1- IfExpr:
  5617. |- Condition: CallExpr:
  5618. |- Method: AccessorExpr (Mode=':')
  5619. |- Object: AccessorExpr (Mode='.')
  5620. |- Object: NameExpr: 'self'
  5621. \- Field: visitor_map
  5622. \- Field: contains
  5623. \- Arguments: (Len=1)
  5624. \0- AccessorExpr (Mode='.')
  5625. |- Object: AccessorExpr (Mode='.')
  5626. |- Object: NameExpr: 'n'
  5627. \- Field: type_
  5628. \- Field: name
  5629. |- Body: BlockBody: (N_Statements=3)
  5630. |0- AssignmentExpr (Operator='=')
  5631. |- LHS: DeclExpr: 'ptr entry'
  5632. \- RHS: CallExpr:
  5633. |- Method: AccessorExpr (Mode=':')
  5634. |- Object: AccessorExpr (Mode='.')
  5635. |- Object: NameExpr: 'self'
  5636. \- Field: visitor_map
  5637. \- Field: get
  5638. \- Arguments: (Len=1)
  5639. \0- AccessorExpr (Mode='.')
  5640. |- Object: AccessorExpr (Mode='.')
  5641. |- Object: NameExpr: 'n'
  5642. \- Field: type_
  5643. \- Field: name
  5644. |1- AssignmentExpr (Operator='=')
  5645. |- LHS: DeclExpr: 'NodeTransformer v'
  5646. \- RHS: CastExpr (Target='NodeTransformer')
  5647. \- Value: NameExpr: 'entry'
  5648. |2- ReturnExpr: CallExpr:
  5649. |- Method: NameExpr: 'v'
  5650. \- Arguments: (Len=2)
  5651. |0- NameExpr: 'n'
  5652. \1- NameExpr: 'self'
  5653. \2- ReturnExpr: NameExpr: 'n'
  5654. |7- SepExpr (Consumed=2)
  5655. |8- FunctionDecl:
  5656. |- Head: FunctionDeclHead: Name='Project:run_transformers' Type='Node' Nargs=2
  5657. |0- Project p
  5658. \1- Node n
  5659. |0- AssignmentExpr (Operator='=')
  5660. |- LHS: DeclExpr: 'int i'
  5661. \- RHS: LiteralExpr: type=int, value=0
  5662. |1- WhileExpr:
  5663. |- Condition: BinOpExpr (Operator='<')
  5664. |- LHS: NameExpr: 'i'
  5665. \- RHS: AccessorExpr (Mode='.')
  5666. |- Object: AccessorExpr (Mode='.')
  5667. |- Object: NameExpr: 'p'
  5668. \- Field: transformer_passes
  5669. \- Field: len
  5670. |- Body: BlockBody: (N_Statements=3)
  5671. |0- CallExpr:
  5672. |- Method: NameExpr: 'printf'
  5673. \- Arguments: (Len=2)
  5674. |0- LiteralExpr: type=cstr, value=Running transformer pass '%s'\n
  5675. \1- AccessorExpr (Mode='.')
  5676. |- Object: CastExpr (Target='TransformerPass')
  5677. \- Value: CallExpr:
  5678. |- Method: AccessorExpr (Mode=':')
  5679. |- Object: AccessorExpr (Mode='.')
  5680. |- Object: NameExpr: 'p'
  5681. \- Field: transformer_passes
  5682. \- Field: get
  5683. \- Arguments: (Len=1)
  5684. \0- NameExpr: 'i'
  5685. \- Field: name
  5686. |1- AssignmentExpr (Operator='=')
  5687. |- LHS: NameExpr: 'n'
  5688. \- RHS: CallExpr:
  5689. |- Method: AccessorExpr (Mode=':')
  5690. |- Object: CastExpr (Target='TransformerPass')
  5691. \- Value: CallExpr:
  5692. |- Method: AccessorExpr (Mode=':')
  5693. |- Object: AccessorExpr (Mode='.')
  5694. |- Object: NameExpr: 'p'
  5695. \- Field: transformer_passes
  5696. \- Field: get
  5697. \- Arguments: (Len=1)
  5698. \0- NameExpr: 'i'
  5699. \- Field: visit
  5700. \- Arguments: (Len=1)
  5701. \0- NameExpr: 'n'
  5702. |2- AssignmentExpr (Operator='+=')
  5703. |- LHS: NameExpr: 'i'
  5704. \- RHS: LiteralExpr: type=int, value=1
  5705. \2- ReturnExpr: NameExpr: 'n'
  5706. |9- SepExpr (Consumed=1)
  5707. |6- SepExpr (Consumed=2)
  5708. |7- FunctionDecl:
  5709. |- Head: FunctionDeclHead: Name='Token:is_a' Type='bool' Nargs=2
  5710. |0- Token self
  5711. \1- cstr type_
  5712. \0- ReturnExpr: BinOpExpr (Operator='==')
  5713. |- LHS: AccessorExpr (Mode='.')
  5714. |- Object: AccessorExpr (Mode='.')
  5715. |- Object: NameExpr: 'self'
  5716. \- Field: type_
  5717. \- Field: name
  5718. \- RHS: NameExpr: 'type_'
  5719. |8- SepExpr (Consumed=2)
  5720. |9- FunctionDecl:
  5721. |- Head: FunctionDeclHead: Name='parse::indent' Type='void' Nargs=1
  5722. \0- int depth
  5723. |0- AssignmentExpr (Operator='=')
  5724. |- LHS: DeclExpr: 'int i'
  5725. \- RHS: LiteralExpr: type=int, value=0
  5726. |1- WhileExpr:
  5727. |- Condition: BinOpExpr (Operator='<')
  5728. |- LHS: NameExpr: 'i'
  5729. \- RHS: NameExpr: 'depth'
  5730. |- Body: BlockBody: (N_Statements=2)
  5731. |0- CallExpr:
  5732. |- Method: NameExpr: 'printf'
  5733. \- Arguments: (Len=1)
  5734. \0- LiteralExpr: type=cstr, value=\t
  5735. |1- AssignmentExpr (Operator='+=')
  5736. |- LHS: NameExpr: 'i'
  5737. \- RHS: LiteralExpr: type=int, value=1
  5738. \2- ReturnExpr: <void>
  5739. |10- SepExpr (Consumed=2)
  5740. |11- TypeDecl:
  5741. |- Head: TypeDeclHead: `Node` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  5742. \- Body: TypeDeclBody: (N_Statements=6)
  5743. |0- DeclExpr: 'NodeType type_'
  5744. |1- FunctionDecl:
  5745. |- Head: FunctionDeclHead: Name='Node:free' Type='void' Nargs=1
  5746. \0- Node self
  5747. |0- LiteralExpr: type=int, value=0
  5748. \1- ReturnExpr: <void>
  5749. |2- FunctionDecl:
  5750. |- Head: FunctionDeclHead: Name='Node:print' Type='void' Nargs=2
  5751. |0- Node self
  5752. \1- int depth
  5753. |0- CallExpr:
  5754. |- Method: AccessorExpr (Mode='.')
  5755. |- Object: AccessorExpr (Mode='.')
  5756. |- Object: NameExpr: 'self'
  5757. \- Field: type_
  5758. \- Field: printer
  5759. \- Arguments: (Len=2)
  5760. |0- NameExpr: 'self'
  5761. \1- NameExpr: 'depth'
  5762. \1- ReturnExpr: <void>
  5763. |3- FunctionDecl:
  5764. |- Head: FunctionDeclHead: Name='Node:print_root' Type='void' Nargs=1
  5765. \0- Node self
  5766. |0- CallExpr:
  5767. |- Method: AccessorExpr (Mode=':')
  5768. |- Object: NameExpr: 'self'
  5769. \- Field: print
  5770. \- Arguments: (Len=1)
  5771. \0- LiteralExpr: type=int, value=0
  5772. \1- ReturnExpr: <void>
  5773. |4- FunctionDecl:
  5774. |- Head: FunctionDeclHead: Name='Node:is_a' Type='bool' Nargs=2
  5775. |0- Node self
  5776. \1- cstr ty
  5777. \0- ReturnExpr: CallExpr:
  5778. |- Method: AccessorExpr (Mode=':')
  5779. |- Object: AccessorExpr (Mode='.')
  5780. |- Object: NameExpr: 'self'
  5781. \- Field: type_
  5782. \- Field: is_a
  5783. \- Arguments: (Len=1)
  5784. \0- NameExpr: 'ty'
  5785. \5- FunctionDecl:
  5786. |- Head: FunctionDeclHead: Name='Node:run_transformer_on_children' Type='void' Nargs=2
  5787. |0- Node self
  5788. \1- TransformerPass p
  5789. |0- CallExpr:
  5790. |- Method: AccessorExpr (Mode='.')
  5791. |- Object: AccessorExpr (Mode='.')
  5792. |- Object: NameExpr: 'self'
  5793. \- Field: type_
  5794. \- Field: child_visitor
  5795. \- Arguments: (Len=2)
  5796. |0- NameExpr: 'self'
  5797. \1- NameExpr: 'p'
  5798. \1- ReturnExpr: <void>
  5799. |12- SepExpr (Consumed=2)
  5800. |13- TypeDecl:
  5801. |- Head: TypeDeclHead: `Element` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  5802. \- Body: TypeDeclBody: (N_Statements=8)
  5803. |0- DeclExpr: 'bool is_token'
  5804. |1- DeclExpr: 'ptr thing'
  5805. |2- FunctionDecl:
  5806. |- Head: FunctionDeclHead: Name='Element::from_token' Type='Element' Nargs=1
  5807. \0- Token t
  5808. |0- AssignmentExpr (Operator='=')
  5809. |- LHS: DeclExpr: 'Element new'
  5810. \- RHS: CastExpr (Target='Element')
  5811. \- Value: CallExpr:
  5812. |- Method: NameExpr: 'malloc'
  5813. \- Arguments: (Len=1)
  5814. \0- IntrinsicExpr: '@sizeof(Element)@'
  5815. |1- AssignmentExpr (Operator='=')
  5816. |- LHS: AccessorExpr (Mode='.')
  5817. |- Object: NameExpr: 'new'
  5818. \- Field: is_token
  5819. \- RHS: LiteralExpr: type=bool, value=1
  5820. |2- AssignmentExpr (Operator='=')
  5821. |- LHS: AccessorExpr (Mode='.')
  5822. |- Object: NameExpr: 'new'
  5823. \- Field: thing
  5824. \- RHS: CastExpr (Target='ptr')
  5825. \- Value: NameExpr: 't'
  5826. \3- ReturnExpr: NameExpr: 'new'
  5827. |3- FunctionDecl:
  5828. |- Head: FunctionDeclHead: Name='Element::from_node' Type='Element' Nargs=1
  5829. \0- Node n
  5830. |0- AssignmentExpr (Operator='=')
  5831. |- LHS: DeclExpr: 'Element new'
  5832. \- RHS: CastExpr (Target='Element')
  5833. \- Value: CallExpr:
  5834. |- Method: NameExpr: 'malloc'
  5835. \- Arguments: (Len=1)
  5836. \0- IntrinsicExpr: '@sizeof(Element)@'
  5837. |1- AssignmentExpr (Operator='=')
  5838. |- LHS: AccessorExpr (Mode='.')
  5839. |- Object: NameExpr: 'new'
  5840. \- Field: is_token
  5841. \- RHS: LiteralExpr: type=bool, value=0
  5842. |2- AssignmentExpr (Operator='=')
  5843. |- LHS: AccessorExpr (Mode='.')
  5844. |- Object: NameExpr: 'new'
  5845. \- Field: thing
  5846. \- RHS: CastExpr (Target='ptr')
  5847. \- Value: NameExpr: 'n'
  5848. \3- ReturnExpr: NameExpr: 'new'
  5849. |4- FunctionDecl:
  5850. |- Head: FunctionDeclHead: Name='Element:t' Type='Token' Nargs=1
  5851. \0- Element self
  5852. |0- IfExpr:
  5853. |- Condition: UnOpExpr (Operator='-')
  5854. \- Value: AccessorExpr (Mode='.')
  5855. |- Object: NameExpr: 'self'
  5856. \- Field: is_token
  5857. |- Body: BlockBody: (N_Statements=4)
  5858. |0- CallExpr:
  5859. |- Method: NameExpr: 'printf'
  5860. \- Arguments: (Len=1)
  5861. \0- LiteralExpr: type=cstr, value=\nE: shoc/parse//Token:t() on non-token\n
  5862. |1- CallExpr:
  5863. |- Method: NameExpr: 'printf'
  5864. \- Arguments: (Len=1)
  5865. \0- LiteralExpr: type=cstr, value=\tCalled on:
  5866. |2- CallExpr:
  5867. |- Method: AccessorExpr (Mode=':')
  5868. |- Object: NameExpr: 'self'
  5869. \- Field: print
  5870. \- Arguments: (Len=0)
  5871. |3- CallExpr:
  5872. |- Method: AccessorExpr (Mode='::')
  5873. |- Object: NameExpr: 'shoc'
  5874. \- Field: bail_out
  5875. \- Arguments: (Len=1)
  5876. \0- LiteralExpr: type=cstr, value=Invalid Element Narrowing
  5877. \1- ReturnExpr: CastExpr (Target='Token')
  5878. \- Value: AccessorExpr (Mode='.')
  5879. |- Object: NameExpr: 'self'
  5880. \- Field: thing
  5881. |5- FunctionDecl:
  5882. |- Head: FunctionDeclHead: Name='Element:n' Type='Node' Nargs=1
  5883. \0- Element self
  5884. |0- IfExpr:
  5885. |- Condition: AccessorExpr (Mode='.')
  5886. |- Object: NameExpr: 'self'
  5887. \- Field: is_token
  5888. |- Body: BlockBody: (N_Statements=4)
  5889. |0- CallExpr:
  5890. |- Method: NameExpr: 'printf'
  5891. \- Arguments: (Len=1)
  5892. \0- LiteralExpr: type=cstr, value=\nE: shoc/parse//Token:n() on non-node\n
  5893. |1- CallExpr:
  5894. |- Method: NameExpr: 'printf'
  5895. \- Arguments: (Len=1)
  5896. \0- LiteralExpr: type=cstr, value=\tCalled on:
  5897. |2- CallExpr:
  5898. |- Method: AccessorExpr (Mode=':')
  5899. |- Object: NameExpr: 'self'
  5900. \- Field: print
  5901. \- Arguments: (Len=0)
  5902. |3- CallExpr:
  5903. |- Method: AccessorExpr (Mode='::')
  5904. |- Object: NameExpr: 'shoc'
  5905. \- Field: bail_out
  5906. \- Arguments: (Len=1)
  5907. \0- LiteralExpr: type=cstr, value=Invalid Element Narrowing
  5908. \1- ReturnExpr: CastExpr (Target='Node')
  5909. \- Value: AccessorExpr (Mode='.')
  5910. |- Object: NameExpr: 'self'
  5911. \- Field: thing
  5912. |6- FunctionDecl:
  5913. |- Head: FunctionDeclHead: Name='Element:print' Type='void' Nargs=1
  5914. \0- Element self
  5915. |0- IfExpr:
  5916. |- Condition: AccessorExpr (Mode='.')
  5917. |- Object: NameExpr: 'self'
  5918. \- Field: is_token
  5919. |- Body: BlockBody: (N_Statements=1)
  5920. |0- CallExpr:
  5921. |- Method: NameExpr: 'printf'
  5922. \- Arguments: (Len=3)
  5923. |0- LiteralExpr: type=cstr, value=%s(%s)\n
  5924. |1- AccessorExpr (Mode='.')
  5925. |- Object: AccessorExpr (Mode='.')
  5926. |- Object: CallExpr:
  5927. |- Method: AccessorExpr (Mode=':')
  5928. |- Object: NameExpr: 'self'
  5929. \- Field: t
  5930. \- Arguments: (Len=0)
  5931. \- Field: type_
  5932. \- Field: name
  5933. \2- AccessorExpr (Mode='.')
  5934. |- Object: CallExpr:
  5935. |- Method: AccessorExpr (Mode=':')
  5936. |- Object: NameExpr: 'self'
  5937. \- Field: t
  5938. \- Arguments: (Len=0)
  5939. \- Field: text
  5940. \-- Runoff Clause: BlockBody: (N_Statements=1)
  5941. |0- CallExpr:
  5942. |- Method: AccessorExpr (Mode=':')
  5943. |- Object: CallExpr:
  5944. |- Method: AccessorExpr (Mode=':')
  5945. |- Object: NameExpr: 'self'
  5946. \- Field: n
  5947. \- Arguments: (Len=0)
  5948. \- Field: print
  5949. \- Arguments: (Len=1)
  5950. \0- LiteralExpr: type=int, value=1
  5951. \1- ReturnExpr: <void>
  5952. \7- FunctionDecl:
  5953. |- Head: FunctionDeclHead: Name='Element:free' Type='void' Nargs=1
  5954. \0- Element self
  5955. |0- IfExpr:
  5956. |- Condition: AccessorExpr (Mode='.')
  5957. |- Object: NameExpr: 'self'
  5958. \- Field: is_token
  5959. |- Body: BlockBody: (N_Statements=1)
  5960. |0- CallExpr:
  5961. |- Method: AccessorExpr (Mode=':')
  5962. |- Object: GroupingExpr: CastExpr (Target='Token')
  5963. \- Value: AccessorExpr (Mode='.')
  5964. |- Object: NameExpr: 'self'
  5965. \- Field: thing
  5966. \- Field: free
  5967. \- Arguments: (Len=0)
  5968. \-- Runoff Clause: BlockBody: (N_Statements=1)
  5969. |0- CallExpr:
  5970. |- Method: AccessorExpr (Mode=':')
  5971. |- Object: GroupingExpr: CastExpr (Target='Node')
  5972. \- Value: AccessorExpr (Mode='.')
  5973. |- Object: NameExpr: 'self'
  5974. \- Field: thing
  5975. \- Field: free
  5976. \- Arguments: (Len=0)
  5977. |1- CallExpr:
  5978. |- Method: NameExpr: 'free'
  5979. \- Arguments: (Len=1)
  5980. \0- CastExpr (Target='ptr')
  5981. \- Value: NameExpr: 'self'
  5982. \2- ReturnExpr: <void>
  5983. |14- SepExpr (Consumed=2)
  5984. |15- TypeDecl:
  5985. |- Head: TypeDeclHead: `EleList` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  5986. \- Body: TypeDeclBody: (N_Statements=11)
  5987. |0- DeclExpr: 'int position'
  5988. |1- DeclExpr: 'List list'
  5989. |2- FunctionDecl:
  5990. |- Head: FunctionDeclHead: Name='EleList::from' Type='EleList' Nargs=1
  5991. \0- List l
  5992. |0- AssignmentExpr (Operator='=')
  5993. |- LHS: DeclExpr: 'EleList new'
  5994. \- RHS: CastExpr (Target='EleList')
  5995. \- Value: CallExpr:
  5996. |- Method: NameExpr: 'malloc'
  5997. \- Arguments: (Len=1)
  5998. \0- IntrinsicExpr: '@sizeof(EleList)@'
  5999. |1- AssignmentExpr (Operator='=')
  6000. |- LHS: AccessorExpr (Mode='.')
  6001. |- Object: NameExpr: 'new'
  6002. \- Field: list
  6003. \- RHS: CallExpr:
  6004. |- Method: AccessorExpr (Mode='::')
  6005. |- Object: NameExpr: 'List'
  6006. \- Field: new
  6007. \- Arguments: (Len=0)
  6008. |2- AssignmentExpr (Operator='=')
  6009. |- LHS: DeclExpr: 'int i'
  6010. \- RHS: LiteralExpr: type=int, value=0
  6011. |3- WhileExpr:
  6012. |- Condition: BinOpExpr (Operator='<')
  6013. |- LHS: NameExpr: 'i'
  6014. \- RHS: AccessorExpr (Mode='.')
  6015. |- Object: NameExpr: 'l'
  6016. \- Field: len
  6017. |- Body: BlockBody: (N_Statements=2)
  6018. |0- CallExpr:
  6019. |- Method: AccessorExpr (Mode=':')
  6020. |- Object: AccessorExpr (Mode='.')
  6021. |- Object: NameExpr: 'new'
  6022. \- Field: list
  6023. \- Field: append
  6024. \- Arguments: (Len=1)
  6025. \0- CastExpr (Target='ptr')
  6026. \- Value: CallExpr:
  6027. |- Method: AccessorExpr (Mode='::')
  6028. |- Object: NameExpr: 'Element'
  6029. \- Field: from_token
  6030. \- Arguments: (Len=1)
  6031. \0- CastExpr (Target='Token')
  6032. \- Value: CallExpr:
  6033. |- Method: AccessorExpr (Mode=':')
  6034. |- Object: NameExpr: 'l'
  6035. \- Field: get
  6036. \- Arguments: (Len=1)
  6037. \0- NameExpr: 'i'
  6038. |1- AssignmentExpr (Operator='+=')
  6039. |- LHS: NameExpr: 'i'
  6040. \- RHS: LiteralExpr: type=int, value=1
  6041. |4- AssignmentExpr (Operator='=')
  6042. |- LHS: AccessorExpr (Mode='.')
  6043. |- Object: NameExpr: 'new'
  6044. \- Field: position
  6045. \- RHS: BinOpExpr (Operator='-')
  6046. |- LHS: AccessorExpr (Mode='.')
  6047. |- Object: NameExpr: 'l'
  6048. \- Field: len
  6049. \- RHS: LiteralExpr: type=int, value=1
  6050. \5- ReturnExpr: NameExpr: 'new'
  6051. |3- FunctionDecl:
  6052. |- Head: FunctionDeclHead: Name='EleList:get' Type='Element' Nargs=2
  6053. |0- EleList self
  6054. \1- int pos
  6055. |0- IfExpr:
  6056. |- Condition: BinOpExpr (Operator='>=')
  6057. |- LHS: GroupingExpr: BinOpExpr (Operator='+')
  6058. |- LHS: AccessorExpr (Mode='.')
  6059. |- Object: NameExpr: 'self'
  6060. \- Field: position
  6061. \- RHS: NameExpr: 'pos'
  6062. \- RHS: AccessorExpr (Mode='.')
  6063. |- Object: AccessorExpr (Mode='.')
  6064. |- Object: NameExpr: 'self'
  6065. \- Field: list
  6066. \- Field: len
  6067. |- Body: BlockBody: (N_Statements=1)
  6068. |0- CallExpr:
  6069. |- Method: AccessorExpr (Mode='::')
  6070. |- Object: NameExpr: 'shoc'
  6071. \- Field: bail_out
  6072. \- Arguments: (Len=1)
  6073. \0- BinOpExpr (Operator='+')
  6074. |- LHS: LiteralExpr: type=cstr, value=Requested EleList pos > than exists,
  6075. \- RHS: BinOpExpr (Operator='+')
  6076. |- LHS: CallExpr:
  6077. |- Method: AccessorExpr (Mode=':')
  6078. |- Object: GroupingExpr: BinOpExpr (Operator='+')
  6079. |- LHS: AccessorExpr (Mode='.')
  6080. |- Object: NameExpr: 'self'
  6081. \- Field: position
  6082. \- RHS: NameExpr: 'pos'
  6083. \- Field: str
  6084. \- Arguments: (Len=0)
  6085. \- RHS: BinOpExpr (Operator='+')
  6086. |- LHS: LiteralExpr: type=cstr, value=>
  6087. \- RHS: CallExpr:
  6088. |- Method: AccessorExpr (Mode=':')
  6089. |- Object: AccessorExpr (Mode='.')
  6090. |- Object: AccessorExpr (Mode='.')
  6091. |- Object: NameExpr: 'self'
  6092. \- Field: list
  6093. \- Field: len
  6094. \- Field: str
  6095. \- Arguments: (Len=0)
  6096. |1- IfExpr:
  6097. |- Condition: BinOpExpr (Operator='<')
  6098. |- LHS: GroupingExpr: BinOpExpr (Operator='+')
  6099. |- LHS: AccessorExpr (Mode='.')
  6100. |- Object: NameExpr: 'self'
  6101. \- Field: position
  6102. \- RHS: NameExpr: 'pos'
  6103. \- RHS: LiteralExpr: type=int, value=0
  6104. |- Body: BlockBody: (N_Statements=1)
  6105. |0- CallExpr:
  6106. |- Method: AccessorExpr (Mode='::')
  6107. |- Object: NameExpr: 'shoc'
  6108. \- Field: bail_out
  6109. \- Arguments: (Len=1)
  6110. \0- LiteralExpr: type=cstr, value=Requested EleList pos <0
  6111. \2- ReturnExpr: CastExpr (Target='Element')
  6112. \- Value: CallExpr:
  6113. |- Method: AccessorExpr (Mode=':')
  6114. |- Object: AccessorExpr (Mode='.')
  6115. |- Object: NameExpr: 'self'
  6116. \- Field: list
  6117. \- Field: get
  6118. \- Arguments: (Len=1)
  6119. \0- BinOpExpr (Operator='+')
  6120. |- LHS: AccessorExpr (Mode='.')
  6121. |- Object: NameExpr: 'self'
  6122. \- Field: position
  6123. \- RHS: NameExpr: 'pos'
  6124. |4- FunctionDecl:
  6125. |- Head: FunctionDeclHead: Name='EleList:get_lookahead' Type='Element' Nargs=1
  6126. \0- EleList self
  6127. \0- ReturnExpr: CallExpr:
  6128. |- Method: AccessorExpr (Mode=':')
  6129. |- Object: NameExpr: 'self'
  6130. \- Field: get
  6131. \- Arguments: (Len=1)
  6132. \0- UnOpExpr (Operator='-')
  6133. \- Value: LiteralExpr: type=int, value=1
  6134. |5- FunctionDecl:
  6135. |- Head: FunctionDeclHead: Name='EleList:has_lookahead' Type='bool' Nargs=1
  6136. \0- EleList self
  6137. \0- ReturnExpr: BinOpExpr (Operator='!=')
  6138. |- LHS: AccessorExpr (Mode='.')
  6139. |- Object: NameExpr: 'self'
  6140. \- Field: position
  6141. \- RHS: LiteralExpr: type=int, value=0
  6142. |6- FunctionDecl:
  6143. |- Head: FunctionDeclHead: Name='EleList:advance' Type='EleList' Nargs=2
  6144. |0- EleList self
  6145. \1- int by
  6146. |0- AssignmentExpr (Operator='-=')
  6147. |- LHS: AccessorExpr (Mode='.')
  6148. |- Object: NameExpr: 'self'
  6149. \- Field: position
  6150. \- RHS: NameExpr: 'by'
  6151. \1- ReturnExpr: NameExpr: 'self'
  6152. |7- FunctionDecl:
  6153. |- Head: FunctionDeclHead: Name='EleList:in_slice' Type='int' Nargs=1
  6154. \0- EleList self
  6155. \0- ReturnExpr: BinOpExpr (Operator='-')
  6156. |- LHS: AccessorExpr (Mode='.')
  6157. |- Object: AccessorExpr (Mode='.')
  6158. |- Object: NameExpr: 'self'
  6159. \- Field: list
  6160. \- Field: len
  6161. \- RHS: AccessorExpr (Mode='.')
  6162. |- Object: NameExpr: 'self'
  6163. \- Field: position
  6164. |8- FunctionDecl:
  6165. |- Head: FunctionDeclHead: Name='EleList:set_tail' Type='EleList' Nargs=3
  6166. |0- EleList self
  6167. |1- int count
  6168. \2- Element e
  6169. |0- AssignmentExpr (Operator='=')
  6170. |- LHS: DeclExpr: 'int i'
  6171. \- RHS: LiteralExpr: type=int, value=0
  6172. |1- WhileExpr:
  6173. |- Condition: BinOpExpr (Operator='<')
  6174. |- LHS: NameExpr: 'i'
  6175. \- RHS: NameExpr: 'count'
  6176. |- Body: BlockBody: (N_Statements=2)
  6177. |0- CallExpr:
  6178. |- Method: AccessorExpr (Mode=':')
  6179. |- Object: AccessorExpr (Mode='.')
  6180. |- Object: NameExpr: 'self'
  6181. \- Field: list
  6182. \- Field: del
  6183. \- Arguments: (Len=1)
  6184. \0- AccessorExpr (Mode='.')
  6185. |- Object: NameExpr: 'self'
  6186. \- Field: position
  6187. |1- AssignmentExpr (Operator='+=')
  6188. |- LHS: NameExpr: 'i'
  6189. \- RHS: LiteralExpr: type=int, value=1
  6190. |2- CallExpr:
  6191. |- Method: AccessorExpr (Mode=':')
  6192. |- Object: AccessorExpr (Mode='.')
  6193. |- Object: NameExpr: 'self'
  6194. \- Field: list
  6195. \- Field: insert
  6196. \- Arguments: (Len=2)
  6197. |0- AccessorExpr (Mode='.')
  6198. |- Object: NameExpr: 'self'
  6199. \- Field: position
  6200. \1- CastExpr (Target='ptr')
  6201. \- Value: NameExpr: 'e'
  6202. \3- ReturnExpr: NameExpr: 'self'
  6203. |9- FunctionDecl:
  6204. |- Head: FunctionDeclHead: Name='EleList:print' Type='void' Nargs=1
  6205. \0- EleList self
  6206. |0- AssignmentExpr (Operator='=')
  6207. |- LHS: DeclExpr: 'int i'
  6208. \- RHS: LiteralExpr: type=int, value=0
  6209. |1- WhileExpr:
  6210. |- Condition: BinOpExpr (Operator='<')
  6211. |- LHS: NameExpr: 'i'
  6212. \- RHS: AccessorExpr (Mode='.')
  6213. |- Object: AccessorExpr (Mode='.')
  6214. |- Object: NameExpr: 'self'
  6215. \- Field: list
  6216. \- Field: len
  6217. |- Body: BlockBody: (N_Statements=5)
  6218. |0- CallExpr:
  6219. |- Method: NameExpr: 'printf'
  6220. \- Arguments: (Len=2)
  6221. |0- LiteralExpr: type=cstr, value=%03i
  6222. \1- NameExpr: 'i'
  6223. |1- IfExpr:
  6224. |- Condition: BinOpExpr (Operator='==')
  6225. |- LHS: NameExpr: 'i'
  6226. \- RHS: AccessorExpr (Mode='.')
  6227. |- Object: NameExpr: 'self'
  6228. \- Field: position
  6229. |- Body: BlockBody: (N_Statements=1)
  6230. |0- CallExpr:
  6231. |- Method: NameExpr: 'printf'
  6232. \- Arguments: (Len=1)
  6233. \0- LiteralExpr: type=cstr, value=*
  6234. |2- CallExpr:
  6235. |- Method: NameExpr: 'printf'
  6236. \- Arguments: (Len=1)
  6237. \0- LiteralExpr: type=cstr, value=\t
  6238. |3- CallExpr:
  6239. |- Method: AccessorExpr (Mode=':')
  6240. |- Object: GroupingExpr: CastExpr (Target='Element')
  6241. \- Value: CallExpr:
  6242. |- Method: AccessorExpr (Mode=':')
  6243. |- Object: AccessorExpr (Mode='.')
  6244. |- Object: NameExpr: 'self'
  6245. \- Field: list
  6246. \- Field: get
  6247. \- Arguments: (Len=1)
  6248. \0- NameExpr: 'i'
  6249. \- Field: print
  6250. \- Arguments: (Len=0)
  6251. |4- AssignmentExpr (Operator='+=')
  6252. |- LHS: NameExpr: 'i'
  6253. \- RHS: LiteralExpr: type=int, value=1
  6254. \2- ReturnExpr: <void>
  6255. \10- FunctionDecl:
  6256. |- Head: FunctionDeclHead: Name='EleList:print_depth' Type='void' Nargs=2
  6257. |0- EleList self
  6258. \1- int depth
  6259. |0- AssignmentExpr (Operator='=')
  6260. |- LHS: DeclExpr: 'int i'
  6261. \- RHS: LiteralExpr: type=int, value=0
  6262. |1- WhileExpr:
  6263. |- Condition: BinOpExpr (Operator='<')
  6264. |- LHS: NameExpr: 'i'
  6265. \- RHS: AccessorExpr (Mode='.')
  6266. |- Object: AccessorExpr (Mode='.')
  6267. |- Object: NameExpr: 'self'
  6268. \- Field: list
  6269. \- Field: len
  6270. |- Body: BlockBody: (N_Statements=6)
  6271. |0- CallExpr:
  6272. |- Method: AccessorExpr (Mode='::')
  6273. |- Object: NameExpr: 'parse'
  6274. \- Field: indent
  6275. \- Arguments: (Len=1)
  6276. \0- NameExpr: 'depth'
  6277. |1- CallExpr:
  6278. |- Method: NameExpr: 'printf'
  6279. \- Arguments: (Len=2)
  6280. |0- LiteralExpr: type=cstr, value=%03i
  6281. \1- NameExpr: 'i'
  6282. |2- IfExpr:
  6283. |- Condition: BinOpExpr (Operator='==')
  6284. |- LHS: NameExpr: 'i'
  6285. \- RHS: AccessorExpr (Mode='.')
  6286. |- Object: NameExpr: 'self'
  6287. \- Field: position
  6288. |- Body: BlockBody: (N_Statements=1)
  6289. |0- CallExpr:
  6290. |- Method: NameExpr: 'printf'
  6291. \- Arguments: (Len=1)
  6292. \0- LiteralExpr: type=cstr, value=*
  6293. |3- CallExpr:
  6294. |- Method: NameExpr: 'printf'
  6295. \- Arguments: (Len=1)
  6296. \0- LiteralExpr: type=cstr, value=\t
  6297. |4- IfExpr:
  6298. |- Condition: AccessorExpr (Mode='.')
  6299. |- Object: GroupingExpr: CastExpr (Target='Element')
  6300. \- Value: CallExpr:
  6301. |- Method: AccessorExpr (Mode=':')
  6302. |- Object: AccessorExpr (Mode='.')
  6303. |- Object: NameExpr: 'self'
  6304. \- Field: list
  6305. \- Field: get
  6306. \- Arguments: (Len=1)
  6307. \0- NameExpr: 'i'
  6308. \- Field: is_token
  6309. |- Body: BlockBody: (N_Statements=1)
  6310. |0- CallExpr:
  6311. |- Method: AccessorExpr (Mode=':')
  6312. |- Object: GroupingExpr: CastExpr (Target='Element')
  6313. \- Value: CallExpr:
  6314. |- Method: AccessorExpr (Mode=':')
  6315. |- Object: AccessorExpr (Mode='.')
  6316. |- Object: NameExpr: 'self'
  6317. \- Field: list
  6318. \- Field: get
  6319. \- Arguments: (Len=1)
  6320. \0- NameExpr: 'i'
  6321. \- Field: print
  6322. \- Arguments: (Len=0)
  6323. \-- Runoff Clause: BlockBody: (N_Statements=1)
  6324. |0- CallExpr:
  6325. |- Method: AccessorExpr (Mode=':')
  6326. |- Object: CallExpr:
  6327. |- Method: AccessorExpr (Mode=':')
  6328. |- Object: GroupingExpr: CastExpr (Target='Element')
  6329. \- Value: CallExpr:
  6330. |- Method: AccessorExpr (Mode=':')
  6331. |- Object: AccessorExpr (Mode='.')
  6332. |- Object: NameExpr: 'self'
  6333. \- Field: list
  6334. \- Field: get
  6335. \- Arguments: (Len=1)
  6336. \0- NameExpr: 'i'
  6337. \- Field: n
  6338. \- Arguments: (Len=0)
  6339. \- Field: print
  6340. \- Arguments: (Len=1)
  6341. \0- BinOpExpr (Operator='+')
  6342. |- LHS: NameExpr: 'depth'
  6343. \- RHS: LiteralExpr: type=int, value=1
  6344. |5- AssignmentExpr (Operator='+=')
  6345. |- LHS: NameExpr: 'i'
  6346. \- RHS: LiteralExpr: type=int, value=1
  6347. \2- ReturnExpr: <void>
  6348. |16- SepExpr (Consumed=2)
  6349. |17- TypeDeclHead: `NodeDeleter` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`void`
  6350. |18- SepExpr (Consumed=1)
  6351. |19- TypeDeclHead: `NodePrinter` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`void`
  6352. |20- SepExpr (Consumed=1)
  6353. |21- TypeDeclHead: `NodeVisitor` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`void`
  6354. |22- SepExpr (Consumed=1)
  6355. |23- TypeDeclHead: `NodeCreator` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`Node`
  6356. |24- SepExpr (Consumed=1)
  6357. |25- TypeDeclHead: `NodeMatcher` (Is_Func_Alias=1, Is_Type_Alias:0, Is_Packed=0) Aliases Function->`int`
  6358. |26- SepExpr (Consumed=2)
  6359. |27- FunctionDecl:
  6360. |- Head: FunctionDeclHead: Name='_default_node_child_visitor' Type='void' Nargs=2
  6361. |0- Node n
  6362. \1- TransformerPass p
  6363. \0- ReturnExpr: <void>
  6364. |28- SepExpr (Consumed=2)
  6365. |29- TypeDecl:
  6366. |- Head: TypeDeclHead: `NodeType` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  6367. \- Body: TypeDeclBody: (N_Statements=24)
  6368. |0- DeclExpr: 'cstr name'
  6369. |1- DeclExpr: 'List things_i_am'
  6370. |2- DeclExpr: 'NodePrinter printer'
  6371. |3- DeclExpr: 'NodeDeleter deleter'
  6372. |4- DeclExpr: 'NodeCreator creator'
  6373. |5- DeclExpr: 'NodeVisitor child_visitor'
  6374. |6- DeclExpr: 'int matcher_flags'
  6375. |7- DeclExpr: 'int matcher_count'
  6376. |8- DeclExpr: 'NodeMatcher matcher'
  6377. |9- FunctionDecl:
  6378. |- Head: FunctionDeclHead: Name='NodeType:set_printer' Type='NodeType' Nargs=2
  6379. |0- NodeType self
  6380. \1- NodePrinter p
  6381. |0- AssignmentExpr (Operator='=')
  6382. |- LHS: AccessorExpr (Mode='.')
  6383. |- Object: NameExpr: 'self'
  6384. \- Field: printer
  6385. \- RHS: NameExpr: 'p'
  6386. \1- ReturnExpr: NameExpr: 'self'
  6387. |10- FunctionDecl:
  6388. |- Head: FunctionDeclHead: Name='NodeType:set_visitor' Type='NodeType' Nargs=2
  6389. |0- NodeType self
  6390. \1- NodeVisitor v
  6391. |0- AssignmentExpr (Operator='=')
  6392. |- LHS: AccessorExpr (Mode='.')
  6393. |- Object: NameExpr: 'self'
  6394. \- Field: child_visitor
  6395. \- RHS: NameExpr: 'v'
  6396. \1- ReturnExpr: NameExpr: 'self'
  6397. |11- FunctionDecl:
  6398. |- Head: FunctionDeclHead: Name='NodeType:set_deleter' Type='NodeType' Nargs=2
  6399. |0- NodeType self
  6400. \1- NodeDeleter d
  6401. |0- AssignmentExpr (Operator='=')
  6402. |- LHS: AccessorExpr (Mode='.')
  6403. |- Object: NameExpr: 'self'
  6404. \- Field: deleter
  6405. \- RHS: NameExpr: 'd'
  6406. \1- ReturnExpr: NameExpr: 'self'
  6407. |12- FunctionDecl:
  6408. |- Head: FunctionDeclHead: Name='NodeType:set_creator' Type='NodeType' Nargs=2
  6409. |0- NodeType self
  6410. \1- NodeCreator d
  6411. |0- AssignmentExpr (Operator='=')
  6412. |- LHS: AccessorExpr (Mode='.')
  6413. |- Object: NameExpr: 'self'
  6414. \- Field: creator
  6415. \- RHS: NameExpr: 'd'
  6416. \1- ReturnExpr: NameExpr: 'self'
  6417. |13- FunctionDecl:
  6418. |- Head: FunctionDeclHead: Name='NodeType:set_matcher' Type='NodeType' Nargs=2
  6419. |0- NodeType self
  6420. \1- NodeMatcher m
  6421. |0- AssignmentExpr (Operator='=')
  6422. |- LHS: AccessorExpr (Mode='.')
  6423. |- Object: NameExpr: 'self'
  6424. \- Field: matcher
  6425. \- RHS: NameExpr: 'm'
  6426. \1- ReturnExpr: NameExpr: 'self'
  6427. |14- FunctionDecl:
  6428. |- Head: FunctionDeclHead: Name='NodeType:create_node' Type='Node' Nargs=2
  6429. |0- NodeType self
  6430. \1- EleList eles
  6431. |0- AssignmentExpr (Operator='=')
  6432. |- LHS: DeclExpr: 'Node new'
  6433. \- RHS: CallExpr:
  6434. |- Method: AccessorExpr (Mode='.')
  6435. |- Object: NameExpr: 'self'
  6436. \- Field: creator
  6437. \- Arguments: (Len=1)
  6438. \0- NameExpr: 'eles'
  6439. |1- AssignmentExpr (Operator='=')
  6440. |- LHS: AccessorExpr (Mode='.')
  6441. |- Object: NameExpr: 'new'
  6442. \- Field: type_
  6443. \- RHS: NameExpr: 'self'
  6444. \2- ReturnExpr: NameExpr: 'new'
  6445. |15- FunctionDecl:
  6446. |- Head: FunctionDeclHead: Name='NodeType::new' Type='NodeType' Nargs=1
  6447. \0- cstr name
  6448. |0- AssignmentExpr (Operator='=')
  6449. |- LHS: DeclExpr: 'NodeType new'
  6450. \- RHS: CastExpr (Target='NodeType')
  6451. \- Value: CallExpr:
  6452. |- Method: NameExpr: 'malloc'
  6453. \- Arguments: (Len=1)
  6454. \0- IntrinsicExpr: '@sizeof(NodeType)@'
  6455. |1- AssignmentExpr (Operator='=')
  6456. |- LHS: AccessorExpr (Mode='.')
  6457. |- Object: NameExpr: 'new'
  6458. \- Field: name
  6459. \- RHS: NameExpr: 'name'
  6460. |2- AssignmentExpr (Operator='=')
  6461. |- LHS: AccessorExpr (Mode='.')
  6462. |- Object: NameExpr: 'new'
  6463. \- Field: child_visitor
  6464. \- RHS: CastExpr (Target='NodeVisitor')
  6465. \- Value: NameExpr: '_default_node_child_visitor'
  6466. |3- AssignmentExpr (Operator='=')
  6467. |- LHS: AccessorExpr (Mode='.')
  6468. |- Object: NameExpr: 'new'
  6469. \- Field: things_i_am
  6470. \- RHS: CastExpr (Target='List')
  6471. \- Value: LiteralExpr: type=ptr, value=0
  6472. |4- AssignmentExpr (Operator='=')
  6473. |- LHS: AccessorExpr (Mode='.')
  6474. |- Object: NameExpr: 'new'
  6475. \- Field: matcher_count
  6476. \- RHS: LiteralExpr: type=int, value=1
  6477. |5- AssignmentExpr (Operator='=')
  6478. |- LHS: AccessorExpr (Mode='.')
  6479. |- Object: NameExpr: 'new'
  6480. \- Field: matcher_flags
  6481. \- RHS: LiteralExpr: type=int, value=0
  6482. \6- ReturnExpr: NameExpr: 'new'
  6483. |16- FunctionDecl:
  6484. |- Head: FunctionDeclHead: Name='NodeType:match' Type='int' Nargs=2
  6485. |0- NodeType self
  6486. \1- EleList elements
  6487. |0- IfExpr:
  6488. |- Condition: BinOpExpr (Operator='<')
  6489. |- LHS: CallExpr:
  6490. |- Method: AccessorExpr (Mode=':')
  6491. |- Object: NameExpr: 'elements'
  6492. \- Field: in_slice
  6493. \- Arguments: (Len=0)
  6494. \- RHS: AccessorExpr (Mode='.')
  6495. |- Object: NameExpr: 'self'
  6496. \- Field: matcher_count
  6497. |- Body: BlockBody: (N_Statements=1)
  6498. |0- ReturnExpr: LiteralExpr: type=int, value=0
  6499. |1- IfExpr:
  6500. |- Condition: BinOpExpr (Operator='!=')
  6501. |- LHS: AccessorExpr (Mode='.')
  6502. |- Object: NameExpr: 'self'
  6503. \- Field: matcher_flags
  6504. \- RHS: LiteralExpr: type=int, value=0
  6505. |- Body: BlockBody: (N_Statements=2)
  6506. |0- AssignmentExpr (Operator='=')
  6507. |- LHS: DeclExpr: 'int i'
  6508. \- RHS: LiteralExpr: type=int, value=0
  6509. |1- WhileExpr:
  6510. |- Condition: BinOpExpr (Operator='<')
  6511. |- LHS: NameExpr: 'i'
  6512. \- RHS: AccessorExpr (Mode='.')
  6513. |- Object: NameExpr: 'self'
  6514. \- Field: matcher_count
  6515. |- Body: BlockBody: (N_Statements=2)
  6516. |0- IfExpr:
  6517. |- Condition: CallExpr:
  6518. |- Method: AccessorExpr (Mode=':')
  6519. |- Object: GroupingExpr: BinOpExpr (Operator='&')
  6520. |- LHS: GroupingExpr: BinOpExpr (Operator='==')
  6521. |- LHS: AccessorExpr (Mode='.')
  6522. |- Object: NameExpr: 'self'
  6523. \- Field: matcher_flags
  6524. \- RHS: LiteralExpr: type=int, value=1
  6525. \- RHS: UnOpExpr (Operator='-')
  6526. \- Value: AccessorExpr (Mode='.')
  6527. |- Object: CallExpr:
  6528. |- Method: AccessorExpr (Mode=':')
  6529. |- Object: NameExpr: 'elements'
  6530. \- Field: get
  6531. \- Arguments: (Len=1)
  6532. \0- NameExpr: 'i'
  6533. \- Field: is_token
  6534. \- Field: or
  6535. \- Arguments: (Len=1)
  6536. \0- BinOpExpr (Operator='&')
  6537. |- LHS: GroupingExpr: BinOpExpr (Operator='==')
  6538. |- LHS: AccessorExpr (Mode='.')
  6539. |- Object: NameExpr: 'self'
  6540. \- Field: matcher_flags
  6541. \- RHS: LiteralExpr: type=int, value=2
  6542. \- RHS: AccessorExpr (Mode='.')
  6543. |- Object: CallExpr:
  6544. |- Method: AccessorExpr (Mode=':')
  6545. |- Object: NameExpr: 'elements'
  6546. \- Field: get
  6547. \- Arguments: (Len=1)
  6548. \0- NameExpr: 'i'
  6549. \- Field: is_token
  6550. |- Body: BlockBody: (N_Statements=1)
  6551. |0- ReturnExpr: LiteralExpr: type=int, value=0
  6552. |1- AssignmentExpr (Operator='+=')
  6553. |- LHS: NameExpr: 'i'
  6554. \- RHS: LiteralExpr: type=int, value=1
  6555. \2- ReturnExpr: CallExpr:
  6556. |- Method: AccessorExpr (Mode='.')
  6557. |- Object: NameExpr: 'self'
  6558. \- Field: matcher
  6559. \- Arguments: (Len=1)
  6560. \0- NameExpr: 'elements'
  6561. |17- FunctionDecl:
  6562. |- Head: FunctionDeclHead: Name='NodeType:matches' Type='NodeType' Nargs=2
  6563. |0- NodeType self
  6564. \1- int count
  6565. |0- AssignmentExpr (Operator='=')
  6566. |- LHS: AccessorExpr (Mode='.')
  6567. |- Object: NameExpr: 'self'
  6568. \- Field: matcher_count
  6569. \- RHS: NameExpr: 'count'
  6570. \1- ReturnExpr: NameExpr: 'self'
  6571. |18- FunctionDecl:
  6572. |- Head: FunctionDeclHead: Name='NodeType:matches_only_tokens' Type='NodeType' Nargs=1
  6573. \0- NodeType self
  6574. |0- AssignmentExpr (Operator='=')
  6575. |- LHS: AccessorExpr (Mode='.')
  6576. |- Object: NameExpr: 'self'
  6577. \- Field: matcher_flags
  6578. \- RHS: LiteralExpr: type=int, value=1
  6579. \1- ReturnExpr: NameExpr: 'self'
  6580. |19- FunctionDecl:
  6581. |- Head: FunctionDeclHead: Name='NodeType:matches_only_nodes' Type='NodeType' Nargs=1
  6582. \0- NodeType self
  6583. |0- AssignmentExpr (Operator='=')
  6584. |- LHS: AccessorExpr (Mode='.')
  6585. |- Object: NameExpr: 'self'
  6586. \- Field: matcher_flags
  6587. \- RHS: LiteralExpr: type=int, value=2
  6588. \1- ReturnExpr: NameExpr: 'self'
  6589. |20- FunctionDecl:
  6590. |- Head: FunctionDeclHead: Name='NodeType:isinstance' Type='bool' Nargs=2
  6591. |0- NodeType self
  6592. \1- cstr thing
  6593. |0- IfExpr:
  6594. |- Condition: BinOpExpr (Operator='==')
  6595. |- LHS: NameExpr: 'thing'
  6596. \- RHS: AccessorExpr (Mode='.')
  6597. |- Object: NameExpr: 'self'
  6598. \- Field: name
  6599. |- Body: BlockBody: (N_Statements=1)
  6600. |0- ReturnExpr: LiteralExpr: type=bool, value=1
  6601. |1- IfExpr:
  6602. |- Condition: BinOpExpr (Operator='==')
  6603. |- LHS: CastExpr (Target='ptr')
  6604. \- Value: AccessorExpr (Mode='.')
  6605. |- Object: NameExpr: 'self'
  6606. \- Field: things_i_am
  6607. \- RHS: LiteralExpr: type=ptr, value=0
  6608. |- Body: BlockBody: (N_Statements=1)
  6609. |0- ReturnExpr: LiteralExpr: type=bool, value=0
  6610. |2- AssignmentExpr (Operator='=')
  6611. |- LHS: DeclExpr: 'int i'
  6612. \- RHS: LiteralExpr: type=int, value=0
  6613. |3- WhileExpr:
  6614. |- Condition: BinOpExpr (Operator='<')
  6615. |- LHS: NameExpr: 'i'
  6616. \- RHS: AccessorExpr (Mode='.')
  6617. |- Object: AccessorExpr (Mode='.')
  6618. |- Object: NameExpr: 'self'
  6619. \- Field: things_i_am
  6620. \- Field: len
  6621. |- Body: BlockBody: (N_Statements=2)
  6622. |0- IfExpr:
  6623. |- Condition: BinOpExpr (Operator='==')
  6624. |- LHS: GroupingExpr: CastExpr (Target='cstr')
  6625. \- Value: CallExpr:
  6626. |- Method: AccessorExpr (Mode=':')
  6627. |- Object: AccessorExpr (Mode='.')
  6628. |- Object: NameExpr: 'self'
  6629. \- Field: things_i_am
  6630. \- Field: get
  6631. \- Arguments: (Len=1)
  6632. \0- NameExpr: 'i'
  6633. \- RHS: NameExpr: 'thing'
  6634. |- Body: BlockBody: (N_Statements=1)
  6635. |0- ReturnExpr: LiteralExpr: type=bool, value=1
  6636. |1- AssignmentExpr (Operator='+=')
  6637. |- LHS: NameExpr: 'i'
  6638. \- RHS: LiteralExpr: type=int, value=1
  6639. \4- ReturnExpr: LiteralExpr: type=bool, value=0
  6640. |21- FunctionDecl:
  6641. |- Head: FunctionDeclHead: Name='NodeType:is_a' Type='bool' Nargs=2
  6642. |0- NodeType self
  6643. \1- cstr thing
  6644. \0- ReturnExpr: CallExpr:
  6645. |- Method: AccessorExpr (Mode=':')
  6646. |- Object: NameExpr: 'self'
  6647. \- Field: isinstance
  6648. \- Arguments: (Len=1)
  6649. \0- NameExpr: 'thing'
  6650. |22- FunctionDecl:
  6651. |- Head: FunctionDeclHead: Name='NodeType:addtype' Type='NodeType' Nargs=2
  6652. |0- NodeType self
  6653. \1- cstr thing
  6654. |0- IfExpr:
  6655. |- Condition: BinOpExpr (Operator='==')
  6656. |- LHS: CastExpr (Target='ptr')
  6657. \- Value: AccessorExpr (Mode='.')
  6658. |- Object: NameExpr: 'self'
  6659. \- Field: things_i_am
  6660. \- RHS: LiteralExpr: type=ptr, value=0
  6661. |- Body: BlockBody: (N_Statements=1)
  6662. |0- AssignmentExpr (Operator='=')
  6663. |- LHS: AccessorExpr (Mode='.')
  6664. |- Object: NameExpr: 'self'
  6665. \- Field: things_i_am
  6666. \- RHS: CallExpr:
  6667. |- Method: AccessorExpr (Mode='::')
  6668. |- Object: NameExpr: 'List'
  6669. \- Field: new
  6670. \- Arguments: (Len=0)
  6671. |1- CallExpr:
  6672. |- Method: AccessorExpr (Mode=':')
  6673. |- Object: AccessorExpr (Mode='.')
  6674. |- Object: NameExpr: 'self'
  6675. \- Field: things_i_am
  6676. \- Field: append
  6677. \- Arguments: (Len=1)
  6678. \0- CastExpr (Target='ptr')
  6679. \- Value: NameExpr: 'thing'
  6680. |2- IfExpr:
  6681. |- Condition: BinOpExpr (Operator='==')
  6682. |- LHS: NameExpr: 'thing'
  6683. \- RHS: LiteralExpr: type=cstr, value=ValueExpression
  6684. |- Body: BlockBody: (N_Statements=1)
  6685. |0- CallExpr:
  6686. |- Method: AccessorExpr (Mode=':')
  6687. |- Object: NameExpr: 'self'
  6688. \- Field: addtype
  6689. \- Arguments: (Len=1)
  6690. \0- LiteralExpr: type=cstr, value=Expression
  6691. |3- IfExpr:
  6692. |- Condition: BinOpExpr (Operator='==')
  6693. |- LHS: NameExpr: 'thing'
  6694. \- RHS: LiteralExpr: type=cstr, value=IdentifierExpression
  6695. |- Body: BlockBody: (N_Statements=1)
  6696. |0- CallExpr:
  6697. |- Method: AccessorExpr (Mode=':')
  6698. |- Object: NameExpr: 'self'
  6699. \- Field: addtype
  6700. \- Arguments: (Len=1)
  6701. \0- LiteralExpr: type=cstr, value=ValueExpression
  6702. \4- ReturnExpr: NameExpr: 'self'
  6703. \23- FunctionDecl:
  6704. |- Head: FunctionDeclHead: Name='NodeType:free' Type='void' Nargs=1
  6705. \0- NodeType self
  6706. |0- CallExpr:
  6707. |- Method: NameExpr: 'free'
  6708. \- Arguments: (Len=1)
  6709. \0- CastExpr (Target='ptr')
  6710. \- Value: NameExpr: 'self'
  6711. \1- ReturnExpr: <void>
  6712. |30- SepExpr (Consumed=2)
  6713. |31- FunctionDecl:
  6714. |- Head: FunctionDeclHead: Name='Project:type_by_name' Type='NodeType' Nargs=2
  6715. |0- Project p
  6716. \1- cstr name
  6717. |0- AssignmentExpr (Operator='=')
  6718. |- LHS: DeclExpr: 'int i'
  6719. \- RHS: LiteralExpr: type=int, value=0
  6720. |1- WhileExpr:
  6721. |- Condition: BinOpExpr (Operator='<')
  6722. |- LHS: NameExpr: 'i'
  6723. \- RHS: AccessorExpr (Mode='.')
  6724. |- Object: AccessorExpr (Mode='.')
  6725. |- Object: NameExpr: 'p'
  6726. \- Field: node_types
  6727. \- Field: len
  6728. |- Body: BlockBody: (N_Statements=2)
  6729. |0- IfExpr:
  6730. |- Condition: BinOpExpr (Operator='==')
  6731. |- LHS: AccessorExpr (Mode='.')
  6732. |- Object: CastExpr (Target='NodeType')
  6733. \- Value: CallExpr:
  6734. |- Method: AccessorExpr (Mode=':')
  6735. |- Object: AccessorExpr (Mode='.')
  6736. |- Object: NameExpr: 'p'
  6737. \- Field: node_types
  6738. \- Field: get
  6739. \- Arguments: (Len=1)
  6740. \0- NameExpr: 'i'
  6741. \- Field: name
  6742. \- RHS: NameExpr: 'name'
  6743. |- Body: BlockBody: (N_Statements=1)
  6744. |0- ReturnExpr: CastExpr (Target='NodeType')
  6745. \- Value: CallExpr:
  6746. |- Method: AccessorExpr (Mode=':')
  6747. |- Object: AccessorExpr (Mode='.')
  6748. |- Object: NameExpr: 'p'
  6749. \- Field: node_types
  6750. \- Field: get
  6751. \- Arguments: (Len=1)
  6752. \0- NameExpr: 'i'
  6753. |1- AssignmentExpr (Operator='+=')
  6754. |- LHS: NameExpr: 'i'
  6755. \- RHS: LiteralExpr: type=int, value=1
  6756. \2- ReturnExpr: CastExpr (Target='NodeType')
  6757. \- Value: LiteralExpr: type=ptr, value=0
  6758. |32- SepExpr (Consumed=2)
  6759. |33- FunctionDecl:
  6760. |- Head: FunctionDeclHead: Name='List:append_NodeType' Type='void' Nargs=2
  6761. |0- List l
  6762. \1- NodeType n
  6763. |0- CallExpr:
  6764. |- Method: AccessorExpr (Mode=':')
  6765. |- Object: NameExpr: 'l'
  6766. \- Field: append
  6767. \- Arguments: (Len=1)
  6768. \0- CastExpr (Target='ptr')
  6769. \- Value: NameExpr: 'n'
  6770. \1- ReturnExpr: <void>
  6771. |34- SepExpr (Consumed=2)
  6772. |35- FunctionDecl:
  6773. |- Head: FunctionDeclHead: Name='List:append_Node' Type='void' Nargs=2
  6774. |0- List l
  6775. \1- Node n
  6776. |0- CallExpr:
  6777. |- Method: AccessorExpr (Mode=':')
  6778. |- Object: NameExpr: 'l'
  6779. \- Field: append
  6780. \- Arguments: (Len=1)
  6781. \0- CastExpr (Target='ptr')
  6782. \- Value: NameExpr: 'n'
  6783. \1- ReturnExpr: <void>
  6784. |36- SepExpr (Consumed=2)
  6785. |37- FunctionDecl:
  6786. |- Head: FunctionDeclHead: Name='List:get_Node' Type='Node' Nargs=2
  6787. |0- List l
  6788. \1- int n
  6789. \0- ReturnExpr: CastExpr (Target='Node')
  6790. \- Value: CallExpr:
  6791. |- Method: AccessorExpr (Mode=':')
  6792. |- Object: NameExpr: 'l'
  6793. \- Field: get
  6794. \- Arguments: (Len=1)
  6795. \0- NameExpr: 'n'
  6796. |38- SepExpr (Consumed=2)
  6797. |39- FunctionDecl:
  6798. |- Head: FunctionDeclHead: Name='parse::update_viz' Type='void' Nargs=2
  6799. |0- EleList e
  6800. \1- cstr s
  6801. |0- AssignmentExpr (Operator='=')
  6802. |- LHS: DeclExpr: 'bool fancy'
  6803. \- RHS: LiteralExpr: type=bool, value=0
  6804. |1- AssignmentExpr (Operator='=')
  6805. |- LHS: DeclExpr: 'float speed'
  6806. \- RHS: LiteralExpr: type=float, value=0.0
  6807. |2- IfExpr:
  6808. |- Condition: NameExpr: 'fancy'
  6809. |- Body: BlockBody: (N_Statements=2)
  6810. |0- CallExpr:
  6811. |- Method: NameExpr: 'usleep'
  6812. \- Arguments: (Len=1)
  6813. \0- CastExpr (Target='int')
  6814. \- Value: BinOpExpr (Operator='*')
  6815. |- LHS: NameExpr: 'speed'
  6816. \- RHS: LiteralExpr: type=float, value=1000000.
  6817. |1- CallExpr:
  6818. |- Method: NameExpr: 'system'
  6819. \- Arguments: (Len=1)
  6820. \0- LiteralExpr: type=cstr, value=clear
  6821. |3- CallExpr:
  6822. |- Method: NameExpr: 'printf'
  6823. \- Arguments: (Len=2)
  6824. |0- LiteralExpr: type=cstr, value=\n\nParsing '%s'\n\n
  6825. \1- NameExpr: 's'
  6826. |4- CallExpr:
  6827. |- Method: AccessorExpr (Mode=':')
  6828. |- Object: NameExpr: 'e'
  6829. \- Field: print
  6830. \- Arguments: (Len=0)
  6831. \5- ReturnExpr: <void>
  6832. |40- SepExpr (Consumed=2)
  6833. |41- FunctionDecl:
  6834. |- Head: FunctionDeclHead: Name='Project:parse' Type='Node' Nargs=3
  6835. |0- Project p
  6836. |1- List tokens
  6837. \2- cstr text
  6838. |0- AssignmentExpr (Operator='=')
  6839. |- LHS: DeclExpr: 'EleList eles'
  6840. \- RHS: CallExpr:
  6841. |- Method: NameExpr: 'EleList$$from'
  6842. \- Arguments: (Len=1)
  6843. \0- NameExpr: 'tokens'
  6844. |1- AssignmentExpr (Operator='=')
  6845. |- LHS: DeclExpr: 'ProgressBar bar'
  6846. \- RHS: CallExpr:
  6847. |- Method: NameExpr: 'ProgressBar$$new_reversed'
  6848. \- Arguments: (Len=3)
  6849. |0- AccessorExpr (Mode='.')
  6850. |- Object: NameExpr: 'tokens'
  6851. \- Field: len
  6852. |1- LiteralExpr: type=int, value=40
  6853. \2- LiteralExpr: type=cstr, value=Parsing......
  6854. |2- DeclExpr: 'bool progress'
  6855. |3- DeclExpr: 'int current_type_idx'
  6856. |4- DeclExpr: 'NodeType current_type'
  6857. |5- DeclExpr: 'int match_count'
  6858. |6- AssignmentExpr (Operator='=')
  6859. |- LHS: DeclExpr: 'bool DEBUG'
  6860. \- RHS: LiteralExpr: type=bool, value=0
  6861. |7- WhileExpr:
  6862. |- Condition: BinOpExpr (Operator='>=')
  6863. |- LHS: AccessorExpr (Mode='.')
  6864. |- Object: NameExpr: 'eles'
  6865. \- Field: position
  6866. \- RHS: LiteralExpr: type=int, value=0
  6867. |- Body: BlockBody: (N_Statements=5)
  6868. |0- AssignmentExpr (Operator='=')
  6869. |- LHS: NameExpr: 'progress'
  6870. \- RHS: LiteralExpr: type=bool, value=1
  6871. |1- WhileExpr:
  6872. |- Condition: NameExpr: 'progress'
  6873. |- Body: BlockBody: (N_Statements=3)
  6874. |0- AssignmentExpr (Operator='=')
  6875. |- LHS: NameExpr: 'progress'
  6876. \- RHS: LiteralExpr: type=bool, value=0
  6877. |1- AssignmentExpr (Operator='=')
  6878. |- LHS: NameExpr: 'current_type_idx'
  6879. \- RHS: LiteralExpr: type=int, value=0
  6880. |2- WhileExpr:
  6881. |- Condition: BinOpExpr (Operator='&')
  6882. |- LHS: BinOpExpr (Operator='<')
  6883. |- LHS: NameExpr: 'current_type_idx'
  6884. \- RHS: AccessorExpr (Mode='.')
  6885. |- Object: AccessorExpr (Mode='.')
  6886. |- Object: NameExpr: 'p'
  6887. \- Field: node_types
  6888. \- Field: len
  6889. \- RHS: UnOpExpr (Operator='-')
  6890. \- Value: NameExpr: 'progress'
  6891. |- Body: BlockBody: (N_Statements=4)
  6892. |0- AssignmentExpr (Operator='=')
  6893. |- LHS: NameExpr: 'current_type'
  6894. \- RHS: CastExpr (Target='NodeType')
  6895. \- Value: CallExpr:
  6896. |- Method: AccessorExpr (Mode=':')
  6897. |- Object: AccessorExpr (Mode='.')
  6898. |- Object: NameExpr: 'p'
  6899. \- Field: node_types
  6900. \- Field: get
  6901. \- Arguments: (Len=1)
  6902. \0- NameExpr: 'current_type_idx'
  6903. |1- AssignmentExpr (Operator='=')
  6904. |- LHS: NameExpr: 'match_count'
  6905. \- RHS: CallExpr:
  6906. |- Method: AccessorExpr (Mode=':')
  6907. |- Object: NameExpr: 'current_type'
  6908. \- Field: match
  6909. \- Arguments: (Len=1)
  6910. \0- NameExpr: 'eles'
  6911. |2- IfExpr:
  6912. |- Condition: BinOpExpr (Operator='>')
  6913. |- LHS: NameExpr: 'match_count'
  6914. \- RHS: LiteralExpr: type=int, value=0
  6915. |- Body: BlockBody: (N_Statements=3)
  6916. |0- CallExpr:
  6917. |- Method: AccessorExpr (Mode=':')
  6918. |- Object: NameExpr: 'eles'
  6919. \- Field: set_tail
  6920. \- Arguments: (Len=2)
  6921. |0- NameExpr: 'match_count'
  6922. \1- CallExpr:
  6923. |- Method: NameExpr: 'Element$$from_node'
  6924. \- Arguments: (Len=1)
  6925. \0- CallExpr:
  6926. |- Method: AccessorExpr (Mode=':')
  6927. |- Object: NameExpr: 'current_type'
  6928. \- Field: create_node
  6929. \- Arguments: (Len=1)
  6930. \0- NameExpr: 'eles'
  6931. |1- AssignmentExpr (Operator='=')
  6932. |- LHS: NameExpr: 'progress'
  6933. \- RHS: LiteralExpr: type=bool, value=1
  6934. |2- IfExpr:
  6935. |- Condition: NameExpr: 'DEBUG'
  6936. |- Body: BlockBody: (N_Statements=2)
  6937. |0- CallExpr:
  6938. |- Method: NameExpr: 'parse$$update_viz'
  6939. \- Arguments: (Len=2)
  6940. |0- NameExpr: 'eles'
  6941. \1- NameExpr: 'text'
  6942. |1- CallExpr:
  6943. |- Method: NameExpr: 'printf'
  6944. \- Arguments: (Len=4)
  6945. |0- LiteralExpr: type=cstr, value=Replaced %i elements at %i with a %s node\n
  6946. |1- NameExpr: 'match_count'
  6947. |2- AccessorExpr (Mode='.')
  6948. |- Object: NameExpr: 'eles'
  6949. \- Field: position
  6950. \3- AccessorExpr (Mode='.')
  6951. |- Object: NameExpr: 'current_type'
  6952. \- Field: name
  6953. |3- AssignmentExpr (Operator='+=')
  6954. |- LHS: NameExpr: 'current_type_idx'
  6955. \- RHS: LiteralExpr: type=int, value=1
  6956. |2- CallExpr:
  6957. |- Method: AccessorExpr (Mode=':')
  6958. |- Object: NameExpr: 'eles'
  6959. \- Field: advance
  6960. \- Arguments: (Len=1)
  6961. \0- LiteralExpr: type=int, value=1
  6962. |3- IfExpr:
  6963. |- Condition: NameExpr: 'DEBUG'
  6964. |- Body: BlockBody: (N_Statements=2)
  6965. |0- CallExpr:
  6966. |- Method: NameExpr: 'parse$$update_viz'
  6967. \- Arguments: (Len=2)
  6968. |0- NameExpr: 'eles'
  6969. \1- NameExpr: 'text'
  6970. |1- CallExpr:
  6971. |- Method: NameExpr: 'printf'
  6972. \- Arguments: (Len=1)
  6973. \0- LiteralExpr: type=cstr, value=No further possible parses, advanced by 1\n
  6974. |4- CallExpr:
  6975. |- Method: AccessorExpr (Mode=':')
  6976. |- Object: NameExpr: 'bar'
  6977. \- Field: update
  6978. \- Arguments: (Len=1)
  6979. \0- BinOpExpr (Operator='+')
  6980. |- LHS: AccessorExpr (Mode='.')
  6981. |- Object: NameExpr: 'eles'
  6982. \- Field: position
  6983. \- RHS: LiteralExpr: type=int, value=1
  6984. |8- CallExpr:
  6985. |- Method: NameExpr: 'printf'
  6986. \- Arguments: (Len=1)
  6987. \0- LiteralExpr: type=cstr, value=Done!\n
  6988. |9- CallExpr:
  6989. |- Method: AccessorExpr (Mode=':')
  6990. |- Object: NameExpr: 'bar'
  6991. \- Field: free
  6992. \- Arguments: (Len=0)
  6993. |10- AssignmentExpr (Operator='=')
  6994. |- LHS: AccessorExpr (Mode='.')
  6995. |- Object: NameExpr: 'eles'
  6996. \- Field: position
  6997. \- RHS: LiteralExpr: type=int, value=0
  6998. \11- ReturnExpr: CastExpr (Target='Node')
  6999. \- Value: CallExpr:
  7000. |- Method: NameExpr: 'FileNode$$create'
  7001. \- Arguments: (Len=2)
  7002. |0- NameExpr: 'p'
  7003. \1- NameExpr: 'eles'
  7004. |42- SepExpr (Consumed=1)
  7005. |4- SepExpr (Consumed=2)
  7006. |5- FileNode: (N_Statements=55)
  7007. |0- SepExpr (Consumed=1)
  7008. |1- SepExpr (Consumed=1)
  7009. |2- SepExpr (Consumed=2)
  7010. |3- FunctionDecl:
  7011. |- Head: FunctionDeclHead: Name='parse::lookahead_is_accessor' Type='bool' Nargs=1
  7012. \0- EleList eles
  7013. |0- IfExpr:
  7014. |- Condition: CallExpr:
  7015. |- Method: AccessorExpr (Mode=':')
  7016. |- Object: NameExpr: 'eles'
  7017. \- Field: has_lookahead
  7018. \- Arguments: (Len=0)
  7019. |- Body: BlockBody: (N_Statements=1)
  7020. |0- IfExpr:
  7021. |- Condition: AccessorExpr (Mode='.')
  7022. |- Object: CallExpr:
  7023. |- Method: AccessorExpr (Mode=':')
  7024. |- Object: NameExpr: 'eles'
  7025. \- Field: get_lookahead
  7026. \- Arguments: (Len=0)
  7027. \- Field: is_token
  7028. |- Body: BlockBody: (N_Statements=1)
  7029. |0- IfExpr:
  7030. |- Condition: CallExpr:
  7031. |- Method: AccessorExpr (Mode=':')
  7032. |- Object: CallExpr:
  7033. |- Method: AccessorExpr (Mode=':')
  7034. |- Object: CallExpr:
  7035. |- Method: AccessorExpr (Mode=':')
  7036. |- Object: BinOpExpr (Operator='==')
  7037. |- LHS: AccessorExpr (Mode='.')
  7038. |- Object: AccessorExpr (Mode='.')
  7039. |- Object: CallExpr:
  7040. |- Method: AccessorExpr (Mode=':')
  7041. |- Object: CallExpr:
  7042. |- Method: AccessorExpr (Mode=':')
  7043. |- Object: NameExpr: 'eles'
  7044. \- Field: get_lookahead
  7045. \- Arguments: (Len=0)
  7046. \- Field: t
  7047. \- Arguments: (Len=0)
  7048. \- Field: type_
  7049. \- Field: name
  7050. \- RHS: LiteralExpr: type=cstr, value=T_DOT
  7051. \- Field: or
  7052. \- Arguments: (Len=1)
  7053. \0- BinOpExpr (Operator='==')
  7054. |- LHS: AccessorExpr (Mode='.')
  7055. |- Object: AccessorExpr (Mode='.')
  7056. |- Object: CallExpr:
  7057. |- Method: AccessorExpr (Mode=':')
  7058. |- Object: CallExpr:
  7059. |- Method: AccessorExpr (Mode=':')
  7060. |- Object: NameExpr: 'eles'
  7061. \- Field: get_lookahead
  7062. \- Arguments: (Len=0)
  7063. \- Field: t
  7064. \- Arguments: (Len=0)
  7065. \- Field: type_
  7066. \- Field: name
  7067. \- RHS: LiteralExpr: type=cstr, value=T_COLON
  7068. \- Field: or
  7069. \- Arguments: (Len=1)
  7070. \0- BinOpExpr (Operator='==')
  7071. |- LHS: AccessorExpr (Mode='.')
  7072. |- Object: AccessorExpr (Mode='.')
  7073. |- Object: CallExpr:
  7074. |- Method: AccessorExpr (Mode=':')
  7075. |- Object: CallExpr:
  7076. |- Method: AccessorExpr (Mode=':')
  7077. |- Object: NameExpr: 'eles'
  7078. \- Field: get_lookahead
  7079. \- Arguments: (Len=0)
  7080. \- Field: t
  7081. \- Arguments: (Len=0)
  7082. \- Field: type_
  7083. \- Field: name
  7084. \- RHS: LiteralExpr: type=cstr, value=T_DOUBLECOLON
  7085. \- Field: or
  7086. \- Arguments: (Len=1)
  7087. \0- BinOpExpr (Operator='==')
  7088. |- LHS: AccessorExpr (Mode='.')
  7089. |- Object: AccessorExpr (Mode='.')
  7090. |- Object: CallExpr:
  7091. |- Method: AccessorExpr (Mode=':')
  7092. |- Object: CallExpr:
  7093. |- Method: AccessorExpr (Mode=':')
  7094. |- Object: NameExpr: 'eles'
  7095. \- Field: get_lookahead
  7096. \- Arguments: (Len=0)
  7097. \- Field: t
  7098. \- Arguments: (Len=0)
  7099. \- Field: type_
  7100. \- Field: name
  7101. \- RHS: LiteralExpr: type=cstr, value=T_CAST
  7102. |- Body: BlockBody: (N_Statements=1)
  7103. |0- ReturnExpr: LiteralExpr: type=bool, value=1
  7104. \1- ReturnExpr: LiteralExpr: type=bool, value=0
  7105. |4- SepExpr (Consumed=2)
  7106. |5- FunctionDecl:
  7107. |- Head: FunctionDeclHead: Name='parse::lookahead_is_possibly_function' Type='bool' Nargs=1
  7108. \0- EleList eles
  7109. |0- IfExpr:
  7110. |- Condition: CallExpr:
  7111. |- Method: AccessorExpr (Mode=':')
  7112. |- Object: NameExpr: 'eles'
  7113. \- Field: has_lookahead
  7114. \- Arguments: (Len=0)
  7115. |- Body: BlockBody: (N_Statements=1)
  7116. |0- IfExpr:
  7117. |- Condition: AccessorExpr (Mode='.')
  7118. |- Object: CallExpr:
  7119. |- Method: AccessorExpr (Mode=':')
  7120. |- Object: NameExpr: 'eles'
  7121. \- Field: get_lookahead
  7122. \- Arguments: (Len=0)
  7123. \- Field: is_token
  7124. |- Body: BlockBody: (N_Statements=1)
  7125. |0- IfExpr:
  7126. |- Condition: CallExpr:
  7127. |- Method: AccessorExpr (Mode=':')
  7128. |- Object: CallExpr:
  7129. |- Method: AccessorExpr (Mode=':')
  7130. |- Object: CallExpr:
  7131. |- Method: AccessorExpr (Mode=':')
  7132. |- Object: CallExpr:
  7133. |- Method: AccessorExpr (Mode=':')
  7134. |- Object: CallExpr:
  7135. |- Method: AccessorExpr (Mode=':')
  7136. |- Object: NameExpr: 'eles'
  7137. \- Field: get_lookahead
  7138. \- Arguments: (Len=0)
  7139. \- Field: t
  7140. \- Arguments: (Len=0)
  7141. \- Field: is_a
  7142. \- Arguments: (Len=1)
  7143. \0- LiteralExpr: type=cstr, value=T_NAME
  7144. \- Field: or
  7145. \- Arguments: (Len=1)
  7146. \0- CallExpr:
  7147. |- Method: AccessorExpr (Mode=':')
  7148. |- Object: CallExpr:
  7149. |- Method: AccessorExpr (Mode=':')
  7150. |- Object: CallExpr:
  7151. |- Method: AccessorExpr (Mode=':')
  7152. |- Object: NameExpr: 'eles'
  7153. \- Field: get_lookahead
  7154. \- Arguments: (Len=0)
  7155. \- Field: t
  7156. \- Arguments: (Len=0)
  7157. \- Field: is_a
  7158. \- Arguments: (Len=1)
  7159. \0- LiteralExpr: type=cstr, value=T_PAREN_CLOSE
  7160. \- Field: or
  7161. \- Arguments: (Len=1)
  7162. \0- CallExpr:
  7163. |- Method: AccessorExpr (Mode=':')
  7164. |- Object: CallExpr:
  7165. |- Method: AccessorExpr (Mode=':')
  7166. |- Object: CallExpr:
  7167. |- Method: AccessorExpr (Mode=':')
  7168. |- Object: NameExpr: 'eles'
  7169. \- Field: get_lookahead
  7170. \- Arguments: (Len=0)
  7171. \- Field: t
  7172. \- Arguments: (Len=0)
  7173. \- Field: is_a
  7174. \- Arguments: (Len=1)
  7175. \0- LiteralExpr: type=cstr, value=T_BRACKET_CLOSE
  7176. |- Body: BlockBody: (N_Statements=1)
  7177. |0- ReturnExpr: LiteralExpr: type=bool, value=1
  7178. \1- ReturnExpr: LiteralExpr: type=bool, value=0
  7179. |6- SepExpr (Consumed=2)
  7180. |7- FileNode: (N_Statements=3)
  7181. |0- SepExpr (Consumed=1)
  7182. |1- TypeDecl:
  7183. |- Head: TypeDeclHead: `AccessorExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  7184. \- Body: TypeDeclBody: (N_Statements=9)
  7185. |0- DeclExpr: 'NodeType type_'
  7186. |1- DeclExpr: 'cstr mode'
  7187. |2- DeclExpr: 'Node object'
  7188. |3- DeclExpr: 'cstr field'
  7189. |4- FunctionDecl:
  7190. |- Head: FunctionDeclHead: Name='AccessorExpr::print' Type='void' Nargs=2
  7191. |0- AccessorExpr node
  7192. \1- int depth
  7193. |0- CallExpr:
  7194. |- Method: NameExpr: 'printf'
  7195. \- Arguments: (Len=2)
  7196. |0- LiteralExpr: type=cstr, value=AccessorExpr (Mode='%s')\n
  7197. \1- AccessorExpr (Mode='.')
  7198. |- Object: NameExpr: 'node'
  7199. \- Field: mode
  7200. |1- CallExpr:
  7201. |- Method: AccessorExpr (Mode='::')
  7202. |- Object: NameExpr: 'parse'
  7203. \- Field: indent
  7204. \- Arguments: (Len=1)
  7205. \0- NameExpr: 'depth'
  7206. |2- CallExpr:
  7207. |- Method: NameExpr: 'printf'
  7208. \- Arguments: (Len=1)
  7209. \0- LiteralExpr: type=cstr, value=|- Object:
  7210. |3- CallExpr:
  7211. |- Method: AccessorExpr (Mode=':')
  7212. |- Object: AccessorExpr (Mode='.')
  7213. |- Object: NameExpr: 'node'
  7214. \- Field: object
  7215. \- Field: print
  7216. \- Arguments: (Len=1)
  7217. \0- BinOpExpr (Operator='+')
  7218. |- LHS: NameExpr: 'depth'
  7219. \- RHS: LiteralExpr: type=int, value=1
  7220. |4- CallExpr:
  7221. |- Method: AccessorExpr (Mode='::')
  7222. |- Object: NameExpr: 'parse'
  7223. \- Field: indent
  7224. \- Arguments: (Len=1)
  7225. \0- NameExpr: 'depth'
  7226. |5- CallExpr:
  7227. |- Method: NameExpr: 'printf'
  7228. \- Arguments: (Len=2)
  7229. |0- LiteralExpr: type=cstr, value=\- Field: %s\n
  7230. \1- AccessorExpr (Mode='.')
  7231. |- Object: NameExpr: 'node'
  7232. \- Field: field
  7233. \6- ReturnExpr: <void>
  7234. |5- FunctionDecl:
  7235. |- Head: FunctionDeclHead: Name='AccessorExpr::create' Type='AccessorExpr' Nargs=1
  7236. \0- EleList eles
  7237. |0- AssignmentExpr (Operator='=')
  7238. |- LHS: DeclExpr: 'AccessorExpr new'
  7239. \- RHS: CastExpr (Target='AccessorExpr')
  7240. \- Value: CallExpr:
  7241. |- Method: NameExpr: 'malloc'
  7242. \- Arguments: (Len=1)
  7243. \0- IntrinsicExpr: '@sizeof(AccessorExpr)@'
  7244. |1- AssignmentExpr (Operator='=')
  7245. |- LHS: AccessorExpr (Mode='.')
  7246. |- Object: NameExpr: 'new'
  7247. \- Field: object
  7248. \- RHS: CallExpr:
  7249. |- Method: AccessorExpr (Mode=':')
  7250. |- Object: CallExpr:
  7251. |- Method: AccessorExpr (Mode=':')
  7252. |- Object: NameExpr: 'eles'
  7253. \- Field: get
  7254. \- Arguments: (Len=1)
  7255. \0- LiteralExpr: type=int, value=0
  7256. \- Field: n
  7257. \- Arguments: (Len=0)
  7258. |2- AssignmentExpr (Operator='=')
  7259. |- LHS: AccessorExpr (Mode='.')
  7260. |- Object: NameExpr: 'new'
  7261. \- Field: mode
  7262. \- RHS: AccessorExpr (Mode='.')
  7263. |- Object: CallExpr:
  7264. |- Method: AccessorExpr (Mode=':')
  7265. |- Object: CallExpr:
  7266. |- Method: AccessorExpr (Mode=':')
  7267. |- Object: NameExpr: 'eles'
  7268. \- Field: get
  7269. \- Arguments: (Len=1)
  7270. \0- LiteralExpr: type=int, value=1
  7271. \- Field: t
  7272. \- Arguments: (Len=0)
  7273. \- Field: text
  7274. |3- AssignmentExpr (Operator='=')
  7275. |- LHS: AccessorExpr (Mode='.')
  7276. |- Object: NameExpr: 'new'
  7277. \- Field: field
  7278. \- RHS: AccessorExpr (Mode='.')
  7279. |- Object: GroupingExpr: CastExpr (Target='NameExpr')
  7280. \- Value: CallExpr:
  7281. |- Method: AccessorExpr (Mode=':')
  7282. |- Object: CallExpr:
  7283. |- Method: AccessorExpr (Mode=':')
  7284. |- Object: NameExpr: 'eles'
  7285. \- Field: get
  7286. \- Arguments: (Len=1)
  7287. \0- LiteralExpr: type=int, value=2
  7288. \- Field: n
  7289. \- Arguments: (Len=0)
  7290. \- Field: name
  7291. \4- ReturnExpr: NameExpr: 'new'
  7292. |6- FunctionDecl:
  7293. |- Head: FunctionDeclHead: Name='AccessorExpr::match' Type='int' Nargs=1
  7294. \0- EleList eles
  7295. |0- IfExpr:
  7296. |- Condition: CallExpr:
  7297. |- Method: AccessorExpr (Mode=':')
  7298. |- Object: CallExpr:
  7299. |- Method: AccessorExpr (Mode=':')
  7300. |- Object: AccessorExpr (Mode='.')
  7301. |- Object: CallExpr:
  7302. |- Method: AccessorExpr (Mode=':')
  7303. |- Object: NameExpr: 'eles'
  7304. \- Field: get
  7305. \- Arguments: (Len=1)
  7306. \0- LiteralExpr: type=int, value=0
  7307. \- Field: is_token
  7308. \- Field: or
  7309. \- Arguments: (Len=1)
  7310. \0- UnOpExpr (Operator='-')
  7311. \- Value: AccessorExpr (Mode='.')
  7312. |- Object: CallExpr:
  7313. |- Method: AccessorExpr (Mode=':')
  7314. |- Object: NameExpr: 'eles'
  7315. \- Field: get
  7316. \- Arguments: (Len=1)
  7317. \0- LiteralExpr: type=int, value=1
  7318. \- Field: is_token
  7319. \- Field: or
  7320. \- Arguments: (Len=1)
  7321. \0- AccessorExpr (Mode='.')
  7322. |- Object: CallExpr:
  7323. |- Method: AccessorExpr (Mode=':')
  7324. |- Object: NameExpr: 'eles'
  7325. \- Field: get
  7326. \- Arguments: (Len=1)
  7327. \0- LiteralExpr: type=int, value=2
  7328. \- Field: is_token
  7329. |- Body: BlockBody: (N_Statements=1)
  7330. |0- ReturnExpr: LiteralExpr: type=int, value=0
  7331. |1- IfExpr:
  7332. |- Condition: CallExpr:
  7333. |- Method: AccessorExpr (Mode=':')
  7334. |- Object: CallExpr:
  7335. |- Method: AccessorExpr (Mode=':')
  7336. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  7337. \- Value: GroupingExpr: CallExpr:
  7338. |- Method: AccessorExpr (Mode=':')
  7339. |- Object: CallExpr:
  7340. |- Method: AccessorExpr (Mode=':')
  7341. |- Object: GroupingExpr: BinOpExpr (Operator='==')
  7342. |- LHS: AccessorExpr (Mode='.')
  7343. |- Object: AccessorExpr (Mode='.')
  7344. |- Object: CallExpr:
  7345. |- Method: AccessorExpr (Mode=':')
  7346. |- Object: CallExpr:
  7347. |- Method: AccessorExpr (Mode=':')
  7348. |- Object: NameExpr: 'eles'
  7349. \- Field: get
  7350. \- Arguments: (Len=1)
  7351. \0- LiteralExpr: type=int, value=1
  7352. \- Field: t
  7353. \- Arguments: (Len=0)
  7354. \- Field: type_
  7355. \- Field: name
  7356. \- RHS: LiteralExpr: type=cstr, value=T_DOT
  7357. \- Field: or
  7358. \- Arguments: (Len=1)
  7359. \0- BinOpExpr (Operator='==')
  7360. |- LHS: AccessorExpr (Mode='.')
  7361. |- Object: AccessorExpr (Mode='.')
  7362. |- Object: CallExpr:
  7363. |- Method: AccessorExpr (Mode=':')
  7364. |- Object: CallExpr:
  7365. |- Method: AccessorExpr (Mode=':')
  7366. |- Object: NameExpr: 'eles'
  7367. \- Field: get
  7368. \- Arguments: (Len=1)
  7369. \0- LiteralExpr: type=int, value=1
  7370. \- Field: t
  7371. \- Arguments: (Len=0)
  7372. \- Field: type_
  7373. \- Field: name
  7374. \- RHS: LiteralExpr: type=cstr, value=T_COLON
  7375. \- Field: or
  7376. \- Arguments: (Len=1)
  7377. \0- BinOpExpr (Operator='==')
  7378. |- LHS: AccessorExpr (Mode='.')
  7379. |- Object: AccessorExpr (Mode='.')
  7380. |- Object: CallExpr:
  7381. |- Method: AccessorExpr (Mode=':')
  7382. |- Object: CallExpr:
  7383. |- Method: AccessorExpr (Mode=':')
  7384. |- Object: NameExpr: 'eles'
  7385. \- Field: get
  7386. \- Arguments: (Len=1)
  7387. \0- LiteralExpr: type=int, value=1
  7388. \- Field: t
  7389. \- Arguments: (Len=0)
  7390. \- Field: type_
  7391. \- Field: name
  7392. \- RHS: LiteralExpr: type=cstr, value=T_DOUBLECOLON
  7393. \- Field: or
  7394. \- Arguments: (Len=1)
  7395. \0- UnOpExpr (Operator='-')
  7396. \- Value: CallExpr:
  7397. |- Method: AccessorExpr (Mode=':')
  7398. |- Object: CallExpr:
  7399. |- Method: AccessorExpr (Mode=':')
  7400. |- Object: CallExpr:
  7401. |- Method: AccessorExpr (Mode=':')
  7402. |- Object: NameExpr: 'eles'
  7403. \- Field: get
  7404. \- Arguments: (Len=1)
  7405. \0- LiteralExpr: type=int, value=0
  7406. \- Field: n
  7407. \- Arguments: (Len=0)
  7408. \- Field: is_a
  7409. \- Arguments: (Len=1)
  7410. \0- LiteralExpr: type=cstr, value=ValueExpression
  7411. \- Field: or
  7412. \- Arguments: (Len=1)
  7413. \0- UnOpExpr (Operator='-')
  7414. \- Value: CallExpr:
  7415. |- Method: AccessorExpr (Mode=':')
  7416. |- Object: CallExpr:
  7417. |- Method: AccessorExpr (Mode=':')
  7418. |- Object: CallExpr:
  7419. |- Method: AccessorExpr (Mode=':')
  7420. |- Object: NameExpr: 'eles'
  7421. \- Field: get
  7422. \- Arguments: (Len=1)
  7423. \0- LiteralExpr: type=int, value=2
  7424. \- Field: n
  7425. \- Arguments: (Len=0)
  7426. \- Field: is_a
  7427. \- Arguments: (Len=1)
  7428. \0- LiteralExpr: type=cstr, value=NameExpr
  7429. |- Body: BlockBody: (N_Statements=1)
  7430. |0- ReturnExpr: LiteralExpr: type=int, value=0
  7431. |2- IfExpr:
  7432. |- Condition: CallExpr:
  7433. |- Method: AccessorExpr (Mode='::')
  7434. |- Object: NameExpr: 'parse'
  7435. \- Field: lookahead_is_accessor
  7436. \- Arguments: (Len=1)
  7437. \0- NameExpr: 'eles'
  7438. |- Body: BlockBody: (N_Statements=1)
  7439. |0- ReturnExpr: LiteralExpr: type=int, value=0
  7440. \3- ReturnExpr: LiteralExpr: type=int, value=3
  7441. |7- FunctionDecl:
  7442. |- Head: FunctionDeclHead: Name='AccessorExpr::visit' Type='void' Nargs=2
  7443. |0- AccessorExpr n
  7444. \1- TransformerPass p
  7445. |0- AssignmentExpr (Operator='=')
  7446. |- LHS: AccessorExpr (Mode='.')
  7447. |- Object: NameExpr: 'n'
  7448. \- Field: object
  7449. \- RHS: CallExpr:
  7450. |- Method: AccessorExpr (Mode=':')
  7451. |- Object: NameExpr: 'p'
  7452. \- Field: visit
  7453. \- Arguments: (Len=1)
  7454. \0- AccessorExpr (Mode='.')
  7455. |- Object: NameExpr: 'n'
  7456. \- Field: object
  7457. \1- ReturnExpr: <void>
  7458. \8- FunctionDecl:
  7459. |- Head: FunctionDeclHead: Name='AccessorExpr::impl' Type='NodeType' Nargs=0
  7460. \0- ReturnExpr: CallExpr:
  7461. |- Method: AccessorExpr (Mode=':')
  7462. |- Object: CallExpr:
  7463. |- Method: AccessorExpr (Mode=':')
  7464. |- Object: CallExpr:
  7465. |- Method: AccessorExpr (Mode=':')
  7466. |- Object: CallExpr:
  7467. |- Method: AccessorExpr (Mode=':')
  7468. |- Object: CallExpr:
  7469. |- Method: AccessorExpr (Mode=':')
  7470. |- Object: CallExpr:
  7471. |- Method: AccessorExpr (Mode=':')
  7472. |- Object: CallExpr:
  7473. |- Method: AccessorExpr (Mode='::')
  7474. |- Object: NameExpr: 'NodeType'
  7475. \- Field: new
  7476. \- Arguments: (Len=1)
  7477. \0- LiteralExpr: type=cstr, value=AccessorExpr
  7478. \- Field: set_printer
  7479. \- Arguments: (Len=1)
  7480. \0- CastExpr (Target='NodePrinter')
  7481. \- Value: AccessorExpr (Mode='::')
  7482. |- Object: NameExpr: 'AccessorExpr'
  7483. \- Field: print
  7484. \- Field: set_creator
  7485. \- Arguments: (Len=1)
  7486. \0- CastExpr (Target='NodeCreator')
  7487. \- Value: AccessorExpr (Mode='::')
  7488. |- Object: NameExpr: 'AccessorExpr'
  7489. \- Field: create
  7490. \- Field: set_matcher
  7491. \- Arguments: (Len=1)
  7492. \0- CastExpr (Target='NodeMatcher')
  7493. \- Value: AccessorExpr (Mode='::')
  7494. |- Object: NameExpr: 'AccessorExpr'
  7495. \- Field: match
  7496. \- Field: set_visitor
  7497. \- Arguments: (Len=1)
  7498. \0- CastExpr (Target='NodeVisitor')
  7499. \- Value: AccessorExpr (Mode='::')
  7500. |- Object: NameExpr: 'AccessorExpr'
  7501. \- Field: visit
  7502. \- Field: matches
  7503. \- Arguments: (Len=1)
  7504. \0- LiteralExpr: type=int, value=3
  7505. \- Field: addtype
  7506. \- Arguments: (Len=1)
  7507. \0- LiteralExpr: type=cstr, value=IdentifierExpression
  7508. |2- SepExpr (Consumed=2)
  7509. |8- SepExpr (Consumed=1)
  7510. |9- FileNode: (N_Statements=3)
  7511. |0- SepExpr (Consumed=1)
  7512. |1- TypeDecl:
  7513. |- Head: TypeDeclHead: `AssignmentExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  7514. \- Body: TypeDeclBody: (N_Statements=9)
  7515. |0- DeclExpr: 'NodeType type_'
  7516. |1- DeclExpr: 'cstr op'
  7517. |2- DeclExpr: 'Node lhs'
  7518. |3- DeclExpr: 'Node rhs'
  7519. |4- FunctionDecl:
  7520. |- Head: FunctionDeclHead: Name='AssignmentExpr::print' Type='void' Nargs=2
  7521. |0- AssignmentExpr node
  7522. \1- int depth
  7523. |0- CallExpr:
  7524. |- Method: NameExpr: 'printf'
  7525. \- Arguments: (Len=2)
  7526. |0- LiteralExpr: type=cstr, value=AssignmentExpr (Operator='%s')\n
  7527. \1- AccessorExpr (Mode='.')
  7528. |- Object: NameExpr: 'node'
  7529. \- Field: op
  7530. |1- CallExpr:
  7531. |- Method: AccessorExpr (Mode='::')
  7532. |- Object: NameExpr: 'parse'
  7533. \- Field: indent
  7534. \- Arguments: (Len=1)
  7535. \0- NameExpr: 'depth'
  7536. |2- CallExpr:
  7537. |- Method: NameExpr: 'printf'
  7538. \- Arguments: (Len=1)
  7539. \0- LiteralExpr: type=cstr, value=|- LHS:
  7540. |3- CallExpr:
  7541. |- Method: AccessorExpr (Mode=':')
  7542. |- Object: AccessorExpr (Mode='.')
  7543. |- Object: NameExpr: 'node'
  7544. \- Field: lhs
  7545. \- Field: print
  7546. \- Arguments: (Len=1)
  7547. \0- BinOpExpr (Operator='+')
  7548. |- LHS: NameExpr: 'depth'
  7549. \- RHS: LiteralExpr: type=int, value=1
  7550. |4- CallExpr:
  7551. |- Method: AccessorExpr (Mode='::')
  7552. |- Object: NameExpr: 'parse'
  7553. \- Field: indent
  7554. \- Arguments: (Len=1)
  7555. \0- NameExpr: 'depth'
  7556. |5- CallExpr:
  7557. |- Method: NameExpr: 'printf'
  7558. \- Arguments: (Len=1)
  7559. \0- LiteralExpr: type=cstr, value=\- RHS:
  7560. |6- CallExpr:
  7561. |- Method: AccessorExpr (Mode=':')
  7562. |- Object: AccessorExpr (Mode='.')
  7563. |- Object: NameExpr: 'node'
  7564. \- Field: rhs
  7565. \- Field: print
  7566. \- Arguments: (Len=1)
  7567. \0- BinOpExpr (Operator='+')
  7568. |- LHS: NameExpr: 'depth'
  7569. \- RHS: LiteralExpr: type=int, value=1
  7570. \7- ReturnExpr: <void>
  7571. |5- FunctionDecl:
  7572. |- Head: FunctionDeclHead: Name='AssignmentExpr::create' Type='AssignmentExpr' Nargs=1
  7573. \0- EleList eles
  7574. |0- AssignmentExpr (Operator='=')
  7575. |- LHS: DeclExpr: 'AssignmentExpr new'
  7576. \- RHS: CastExpr (Target='AssignmentExpr')
  7577. \- Value: CallExpr:
  7578. |- Method: NameExpr: 'malloc'
  7579. \- Arguments: (Len=1)
  7580. \0- IntrinsicExpr: '@sizeof(AssignmentExpr)@'
  7581. |1- AssignmentExpr (Operator='=')
  7582. |- LHS: AccessorExpr (Mode='.')
  7583. |- Object: NameExpr: 'new'
  7584. \- Field: lhs
  7585. \- RHS: CallExpr:
  7586. |- Method: AccessorExpr (Mode=':')
  7587. |- Object: CallExpr:
  7588. |- Method: AccessorExpr (Mode=':')
  7589. |- Object: NameExpr: 'eles'
  7590. \- Field: get
  7591. \- Arguments: (Len=1)
  7592. \0- LiteralExpr: type=int, value=0
  7593. \- Field: n
  7594. \- Arguments: (Len=0)
  7595. |2- AssignmentExpr (Operator='=')
  7596. |- LHS: AccessorExpr (Mode='.')
  7597. |- Object: NameExpr: 'new'
  7598. \- Field: op
  7599. \- RHS: AccessorExpr (Mode='.')
  7600. |- Object: CallExpr:
  7601. |- Method: AccessorExpr (Mode=':')
  7602. |- Object: CallExpr:
  7603. |- Method: AccessorExpr (Mode=':')
  7604. |- Object: NameExpr: 'eles'
  7605. \- Field: get
  7606. \- Arguments: (Len=1)
  7607. \0- LiteralExpr: type=int, value=1
  7608. \- Field: t
  7609. \- Arguments: (Len=0)
  7610. \- Field: text
  7611. |3- AssignmentExpr (Operator='=')
  7612. |- LHS: AccessorExpr (Mode='.')
  7613. |- Object: NameExpr: 'new'
  7614. \- Field: rhs
  7615. \- RHS: CallExpr:
  7616. |- Method: AccessorExpr (Mode=':')
  7617. |- Object: CallExpr:
  7618. |- Method: AccessorExpr (Mode=':')
  7619. |- Object: NameExpr: 'eles'
  7620. \- Field: get
  7621. \- Arguments: (Len=1)
  7622. \0- LiteralExpr: type=int, value=2
  7623. \- Field: n
  7624. \- Arguments: (Len=0)
  7625. \4- ReturnExpr: NameExpr: 'new'
  7626. |6- FunctionDecl:
  7627. |- Head: FunctionDeclHead: Name='AssignmentExpr::match' Type='int' Nargs=1
  7628. \0- EleList eles
  7629. |0- IfExpr:
  7630. |- Condition: CallExpr:
  7631. |- Method: AccessorExpr (Mode=':')
  7632. |- Object: CallExpr:
  7633. |- Method: AccessorExpr (Mode=':')
  7634. |- Object: AccessorExpr (Mode='.')
  7635. |- Object: CallExpr:
  7636. |- Method: AccessorExpr (Mode=':')
  7637. |- Object: NameExpr: 'eles'
  7638. \- Field: get
  7639. \- Arguments: (Len=1)
  7640. \0- LiteralExpr: type=int, value=0
  7641. \- Field: is_token
  7642. \- Field: or
  7643. \- Arguments: (Len=1)
  7644. \0- UnOpExpr (Operator='-')
  7645. \- Value: AccessorExpr (Mode='.')
  7646. |- Object: CallExpr:
  7647. |- Method: AccessorExpr (Mode=':')
  7648. |- Object: NameExpr: 'eles'
  7649. \- Field: get
  7650. \- Arguments: (Len=1)
  7651. \0- LiteralExpr: type=int, value=1
  7652. \- Field: is_token
  7653. \- Field: or
  7654. \- Arguments: (Len=1)
  7655. \0- AccessorExpr (Mode='.')
  7656. |- Object: CallExpr:
  7657. |- Method: AccessorExpr (Mode=':')
  7658. |- Object: NameExpr: 'eles'
  7659. \- Field: get
  7660. \- Arguments: (Len=1)
  7661. \0- LiteralExpr: type=int, value=2
  7662. \- Field: is_token
  7663. |- Body: BlockBody: (N_Statements=1)
  7664. |0- ReturnExpr: LiteralExpr: type=int, value=0
  7665. |1- IfExpr:
  7666. |- Condition: CallExpr:
  7667. |- Method: AccessorExpr (Mode=':')
  7668. |- Object: CallExpr:
  7669. |- Method: AccessorExpr (Mode=':')
  7670. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  7671. \- Value: GroupingExpr: CallExpr:
  7672. |- Method: AccessorExpr (Mode=':')
  7673. |- Object: GroupingExpr: BinOpExpr (Operator='==')
  7674. |- LHS: AccessorExpr (Mode='.')
  7675. |- Object: AccessorExpr (Mode='.')
  7676. |- Object: CallExpr:
  7677. |- Method: AccessorExpr (Mode=':')
  7678. |- Object: CallExpr:
  7679. |- Method: AccessorExpr (Mode=':')
  7680. |- Object: NameExpr: 'eles'
  7681. \- Field: get
  7682. \- Arguments: (Len=1)
  7683. \0- LiteralExpr: type=int, value=1
  7684. \- Field: t
  7685. \- Arguments: (Len=0)
  7686. \- Field: type_
  7687. \- Field: name
  7688. \- RHS: LiteralExpr: type=cstr, value=T_ASSIGN
  7689. \- Field: or
  7690. \- Arguments: (Len=1)
  7691. \0- BinOpExpr (Operator='==')
  7692. |- LHS: AccessorExpr (Mode='.')
  7693. |- Object: AccessorExpr (Mode='.')
  7694. |- Object: CallExpr:
  7695. |- Method: AccessorExpr (Mode=':')
  7696. |- Object: CallExpr:
  7697. |- Method: AccessorExpr (Mode=':')
  7698. |- Object: NameExpr: 'eles'
  7699. \- Field: get
  7700. \- Arguments: (Len=1)
  7701. \0- LiteralExpr: type=int, value=1
  7702. \- Field: t
  7703. \- Arguments: (Len=0)
  7704. \- Field: type_
  7705. \- Field: name
  7706. \- RHS: LiteralExpr: type=cstr, value=T_AUGASSIGN
  7707. \- Field: or
  7708. \- Arguments: (Len=1)
  7709. \0- UnOpExpr (Operator='-')
  7710. \- Value: CallExpr:
  7711. |- Method: AccessorExpr (Mode=':')
  7712. |- Object: CallExpr:
  7713. |- Method: AccessorExpr (Mode=':')
  7714. |- Object: CallExpr:
  7715. |- Method: AccessorExpr (Mode=':')
  7716. |- Object: NameExpr: 'eles'
  7717. \- Field: get
  7718. \- Arguments: (Len=1)
  7719. \0- LiteralExpr: type=int, value=0
  7720. \- Field: n
  7721. \- Arguments: (Len=0)
  7722. \- Field: is_a
  7723. \- Arguments: (Len=1)
  7724. \0- LiteralExpr: type=cstr, value=IdentifierExpression
  7725. \- Field: or
  7726. \- Arguments: (Len=1)
  7727. \0- UnOpExpr (Operator='-')
  7728. \- Value: CallExpr:
  7729. |- Method: AccessorExpr (Mode=':')
  7730. |- Object: CallExpr:
  7731. |- Method: AccessorExpr (Mode=':')
  7732. |- Object: CallExpr:
  7733. |- Method: AccessorExpr (Mode=':')
  7734. |- Object: NameExpr: 'eles'
  7735. \- Field: get
  7736. \- Arguments: (Len=1)
  7737. \0- LiteralExpr: type=int, value=2
  7738. \- Field: n
  7739. \- Arguments: (Len=0)
  7740. \- Field: is_a
  7741. \- Arguments: (Len=1)
  7742. \0- LiteralExpr: type=cstr, value=ValueExpression
  7743. |- Body: BlockBody: (N_Statements=1)
  7744. |0- ReturnExpr: LiteralExpr: type=int, value=0
  7745. |2- IfExpr:
  7746. |- Condition: CallExpr:
  7747. |- Method: AccessorExpr (Mode='::')
  7748. |- Object: NameExpr: 'parse'
  7749. \- Field: lookahead_is_accessor
  7750. \- Arguments: (Len=1)
  7751. \0- NameExpr: 'eles'
  7752. |- Body: BlockBody: (N_Statements=1)
  7753. |0- ReturnExpr: LiteralExpr: type=int, value=0
  7754. \3- ReturnExpr: LiteralExpr: type=int, value=3
  7755. |7- FunctionDecl:
  7756. |- Head: FunctionDeclHead: Name='AssignmentExpr::visit' Type='void' Nargs=2
  7757. |0- AssignmentExpr n
  7758. \1- TransformerPass p
  7759. |0- AssignmentExpr (Operator='=')
  7760. |- LHS: AccessorExpr (Mode='.')
  7761. |- Object: NameExpr: 'n'
  7762. \- Field: rhs
  7763. \- RHS: CallExpr:
  7764. |- Method: AccessorExpr (Mode=':')
  7765. |- Object: NameExpr: 'p'
  7766. \- Field: visit
  7767. \- Arguments: (Len=1)
  7768. \0- AccessorExpr (Mode='.')
  7769. |- Object: NameExpr: 'n'
  7770. \- Field: rhs
  7771. |1- AssignmentExpr (Operator='=')
  7772. |- LHS: AccessorExpr (Mode='.')
  7773. |- Object: NameExpr: 'n'
  7774. \- Field: lhs
  7775. \- RHS: CallExpr:
  7776. |- Method: AccessorExpr (Mode=':')
  7777. |- Object: NameExpr: 'p'
  7778. \- Field: visit
  7779. \- Arguments: (Len=1)
  7780. \0- AccessorExpr (Mode='.')
  7781. |- Object: NameExpr: 'n'
  7782. \- Field: lhs
  7783. \2- ReturnExpr: <void>
  7784. \8- FunctionDecl:
  7785. |- Head: FunctionDeclHead: Name='AssignmentExpr::impl' Type='NodeType' Nargs=0
  7786. \0- ReturnExpr: CallExpr:
  7787. |- Method: AccessorExpr (Mode=':')
  7788. |- Object: CallExpr:
  7789. |- Method: AccessorExpr (Mode=':')
  7790. |- Object: CallExpr:
  7791. |- Method: AccessorExpr (Mode=':')
  7792. |- Object: CallExpr:
  7793. |- Method: AccessorExpr (Mode=':')
  7794. |- Object: CallExpr:
  7795. |- Method: AccessorExpr (Mode=':')
  7796. |- Object: CallExpr:
  7797. |- Method: AccessorExpr (Mode=':')
  7798. |- Object: CallExpr:
  7799. |- Method: AccessorExpr (Mode='::')
  7800. |- Object: NameExpr: 'NodeType'
  7801. \- Field: new
  7802. \- Arguments: (Len=1)
  7803. \0- LiteralExpr: type=cstr, value=AssignmentExpr
  7804. \- Field: set_printer
  7805. \- Arguments: (Len=1)
  7806. \0- CastExpr (Target='NodePrinter')
  7807. \- Value: AccessorExpr (Mode='::')
  7808. |- Object: NameExpr: 'AssignmentExpr'
  7809. \- Field: print
  7810. \- Field: set_creator
  7811. \- Arguments: (Len=1)
  7812. \0- CastExpr (Target='NodeCreator')
  7813. \- Value: AccessorExpr (Mode='::')
  7814. |- Object: NameExpr: 'AssignmentExpr'
  7815. \- Field: create
  7816. \- Field: set_matcher
  7817. \- Arguments: (Len=1)
  7818. \0- CastExpr (Target='NodeMatcher')
  7819. \- Value: AccessorExpr (Mode='::')
  7820. |- Object: NameExpr: 'AssignmentExpr'
  7821. \- Field: match
  7822. \- Field: set_visitor
  7823. \- Arguments: (Len=1)
  7824. \0- CastExpr (Target='NodeVisitor')
  7825. \- Value: AccessorExpr (Mode='::')
  7826. |- Object: NameExpr: 'AssignmentExpr'
  7827. \- Field: visit
  7828. \- Field: matches
  7829. \- Arguments: (Len=1)
  7830. \0- LiteralExpr: type=int, value=3
  7831. \- Field: addtype
  7832. \- Arguments: (Len=1)
  7833. \0- LiteralExpr: type=cstr, value=Expression
  7834. |2- SepExpr (Consumed=1)
  7835. |10- SepExpr (Consumed=1)
  7836. |11- FileNode: (N_Statements=3)
  7837. |0- SepExpr (Consumed=1)
  7838. |1- TypeDecl:
  7839. |- Head: TypeDeclHead: `BinOpExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  7840. \- Body: TypeDeclBody: (N_Statements=9)
  7841. |0- DeclExpr: 'NodeType type_'
  7842. |1- DeclExpr: 'cstr op'
  7843. |2- DeclExpr: 'Node lhs'
  7844. |3- DeclExpr: 'Node rhs'
  7845. |4- FunctionDecl:
  7846. |- Head: FunctionDeclHead: Name='BinOpExpr::print' Type='void' Nargs=2
  7847. |0- BinOpExpr node
  7848. \1- int depth
  7849. |0- CallExpr:
  7850. |- Method: NameExpr: 'printf'
  7851. \- Arguments: (Len=2)
  7852. |0- LiteralExpr: type=cstr, value=BinOpExpr (Operator='%s')\n
  7853. \1- AccessorExpr (Mode='.')
  7854. |- Object: NameExpr: 'node'
  7855. \- Field: op
  7856. |1- CallExpr:
  7857. |- Method: AccessorExpr (Mode='::')
  7858. |- Object: NameExpr: 'parse'
  7859. \- Field: indent
  7860. \- Arguments: (Len=1)
  7861. \0- NameExpr: 'depth'
  7862. |2- CallExpr:
  7863. |- Method: NameExpr: 'printf'
  7864. \- Arguments: (Len=1)
  7865. \0- LiteralExpr: type=cstr, value=|- LHS:
  7866. |3- CallExpr:
  7867. |- Method: AccessorExpr (Mode=':')
  7868. |- Object: AccessorExpr (Mode='.')
  7869. |- Object: NameExpr: 'node'
  7870. \- Field: lhs
  7871. \- Field: print
  7872. \- Arguments: (Len=1)
  7873. \0- BinOpExpr (Operator='+')
  7874. |- LHS: NameExpr: 'depth'
  7875. \- RHS: LiteralExpr: type=int, value=1
  7876. |4- CallExpr:
  7877. |- Method: AccessorExpr (Mode='::')
  7878. |- Object: NameExpr: 'parse'
  7879. \- Field: indent
  7880. \- Arguments: (Len=1)
  7881. \0- NameExpr: 'depth'
  7882. |5- CallExpr:
  7883. |- Method: NameExpr: 'printf'
  7884. \- Arguments: (Len=1)
  7885. \0- LiteralExpr: type=cstr, value=\- RHS:
  7886. |6- CallExpr:
  7887. |- Method: AccessorExpr (Mode=':')
  7888. |- Object: AccessorExpr (Mode='.')
  7889. |- Object: NameExpr: 'node'
  7890. \- Field: rhs
  7891. \- Field: print
  7892. \- Arguments: (Len=1)
  7893. \0- BinOpExpr (Operator='+')
  7894. |- LHS: NameExpr: 'depth'
  7895. \- RHS: LiteralExpr: type=int, value=1
  7896. \7- ReturnExpr: <void>
  7897. |5- FunctionDecl:
  7898. |- Head: FunctionDeclHead: Name='BinOpExpr::create' Type='BinOpExpr' Nargs=1
  7899. \0- EleList eles
  7900. |0- AssignmentExpr (Operator='=')
  7901. |- LHS: DeclExpr: 'BinOpExpr new'
  7902. \- RHS: CastExpr (Target='BinOpExpr')
  7903. \- Value: CallExpr:
  7904. |- Method: NameExpr: 'malloc'
  7905. \- Arguments: (Len=1)
  7906. \0- IntrinsicExpr: '@sizeof(BinOpExpr)@'
  7907. |1- AssignmentExpr (Operator='=')
  7908. |- LHS: AccessorExpr (Mode='.')
  7909. |- Object: NameExpr: 'new'
  7910. \- Field: lhs
  7911. \- RHS: CallExpr:
  7912. |- Method: AccessorExpr (Mode=':')
  7913. |- Object: CallExpr:
  7914. |- Method: AccessorExpr (Mode=':')
  7915. |- Object: NameExpr: 'eles'
  7916. \- Field: get
  7917. \- Arguments: (Len=1)
  7918. \0- LiteralExpr: type=int, value=0
  7919. \- Field: n
  7920. \- Arguments: (Len=0)
  7921. |2- AssignmentExpr (Operator='=')
  7922. |- LHS: AccessorExpr (Mode='.')
  7923. |- Object: NameExpr: 'new'
  7924. \- Field: op
  7925. \- RHS: AccessorExpr (Mode='.')
  7926. |- Object: CallExpr:
  7927. |- Method: AccessorExpr (Mode=':')
  7928. |- Object: CallExpr:
  7929. |- Method: AccessorExpr (Mode=':')
  7930. |- Object: NameExpr: 'eles'
  7931. \- Field: get
  7932. \- Arguments: (Len=1)
  7933. \0- LiteralExpr: type=int, value=1
  7934. \- Field: t
  7935. \- Arguments: (Len=0)
  7936. \- Field: text
  7937. |3- AssignmentExpr (Operator='=')
  7938. |- LHS: AccessorExpr (Mode='.')
  7939. |- Object: NameExpr: 'new'
  7940. \- Field: rhs
  7941. \- RHS: CallExpr:
  7942. |- Method: AccessorExpr (Mode=':')
  7943. |- Object: CallExpr:
  7944. |- Method: AccessorExpr (Mode=':')
  7945. |- Object: NameExpr: 'eles'
  7946. \- Field: get
  7947. \- Arguments: (Len=1)
  7948. \0- LiteralExpr: type=int, value=2
  7949. \- Field: n
  7950. \- Arguments: (Len=0)
  7951. \4- ReturnExpr: NameExpr: 'new'
  7952. |6- FunctionDecl:
  7953. |- Head: FunctionDeclHead: Name='BinOpExpr::match' Type='int' Nargs=1
  7954. \0- EleList eles
  7955. |0- IfExpr:
  7956. |- Condition: CallExpr:
  7957. |- Method: AccessorExpr (Mode=':')
  7958. |- Object: CallExpr:
  7959. |- Method: AccessorExpr (Mode=':')
  7960. |- Object: AccessorExpr (Mode='.')
  7961. |- Object: CallExpr:
  7962. |- Method: AccessorExpr (Mode=':')
  7963. |- Object: NameExpr: 'eles'
  7964. \- Field: get
  7965. \- Arguments: (Len=1)
  7966. \0- LiteralExpr: type=int, value=0
  7967. \- Field: is_token
  7968. \- Field: or
  7969. \- Arguments: (Len=1)
  7970. \0- UnOpExpr (Operator='-')
  7971. \- Value: AccessorExpr (Mode='.')
  7972. |- Object: CallExpr:
  7973. |- Method: AccessorExpr (Mode=':')
  7974. |- Object: NameExpr: 'eles'
  7975. \- Field: get
  7976. \- Arguments: (Len=1)
  7977. \0- LiteralExpr: type=int, value=1
  7978. \- Field: is_token
  7979. \- Field: or
  7980. \- Arguments: (Len=1)
  7981. \0- AccessorExpr (Mode='.')
  7982. |- Object: CallExpr:
  7983. |- Method: AccessorExpr (Mode=':')
  7984. |- Object: NameExpr: 'eles'
  7985. \- Field: get
  7986. \- Arguments: (Len=1)
  7987. \0- LiteralExpr: type=int, value=2
  7988. \- Field: is_token
  7989. |- Body: BlockBody: (N_Statements=1)
  7990. |0- ReturnExpr: LiteralExpr: type=int, value=0
  7991. |1- IfExpr:
  7992. |- Condition: CallExpr:
  7993. |- Method: AccessorExpr (Mode=':')
  7994. |- Object: CallExpr:
  7995. |- Method: AccessorExpr (Mode=':')
  7996. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  7997. |- LHS: AccessorExpr (Mode='.')
  7998. |- Object: AccessorExpr (Mode='.')
  7999. |- Object: CallExpr:
  8000. |- Method: AccessorExpr (Mode=':')
  8001. |- Object: CallExpr:
  8002. |- Method: AccessorExpr (Mode=':')
  8003. |- Object: NameExpr: 'eles'
  8004. \- Field: get
  8005. \- Arguments: (Len=1)
  8006. \0- LiteralExpr: type=int, value=1
  8007. \- Field: t
  8008. \- Arguments: (Len=0)
  8009. \- Field: type_
  8010. \- Field: name
  8011. \- RHS: LiteralExpr: type=cstr, value=T_BINOP
  8012. \- Field: or
  8013. \- Arguments: (Len=1)
  8014. \0- UnOpExpr (Operator='-')
  8015. \- Value: CallExpr:
  8016. |- Method: AccessorExpr (Mode=':')
  8017. |- Object: CallExpr:
  8018. |- Method: AccessorExpr (Mode=':')
  8019. |- Object: CallExpr:
  8020. |- Method: AccessorExpr (Mode=':')
  8021. |- Object: NameExpr: 'eles'
  8022. \- Field: get
  8023. \- Arguments: (Len=1)
  8024. \0- LiteralExpr: type=int, value=0
  8025. \- Field: n
  8026. \- Arguments: (Len=0)
  8027. \- Field: is_a
  8028. \- Arguments: (Len=1)
  8029. \0- LiteralExpr: type=cstr, value=ValueExpression
  8030. \- Field: or
  8031. \- Arguments: (Len=1)
  8032. \0- UnOpExpr (Operator='-')
  8033. \- Value: CallExpr:
  8034. |- Method: AccessorExpr (Mode=':')
  8035. |- Object: CallExpr:
  8036. |- Method: AccessorExpr (Mode=':')
  8037. |- Object: CallExpr:
  8038. |- Method: AccessorExpr (Mode=':')
  8039. |- Object: NameExpr: 'eles'
  8040. \- Field: get
  8041. \- Arguments: (Len=1)
  8042. \0- LiteralExpr: type=int, value=2
  8043. \- Field: n
  8044. \- Arguments: (Len=0)
  8045. \- Field: is_a
  8046. \- Arguments: (Len=1)
  8047. \0- LiteralExpr: type=cstr, value=ValueExpression
  8048. |- Body: BlockBody: (N_Statements=1)
  8049. |0- ReturnExpr: LiteralExpr: type=int, value=0
  8050. |2- IfExpr:
  8051. |- Condition: CallExpr:
  8052. |- Method: AccessorExpr (Mode='::')
  8053. |- Object: NameExpr: 'parse'
  8054. \- Field: lookahead_is_accessor
  8055. \- Arguments: (Len=1)
  8056. \0- NameExpr: 'eles'
  8057. |- Body: BlockBody: (N_Statements=1)
  8058. |0- ReturnExpr: LiteralExpr: type=int, value=0
  8059. |3- IfExpr:
  8060. |- Condition: CallExpr:
  8061. |- Method: AccessorExpr (Mode='::')
  8062. |- Object: NameExpr: 'parse'
  8063. \- Field: lookahead_is_possibly_function
  8064. \- Arguments: (Len=1)
  8065. \0- NameExpr: 'eles'
  8066. |- Body: BlockBody: (N_Statements=1)
  8067. |0- ReturnExpr: LiteralExpr: type=int, value=0
  8068. \4- ReturnExpr: LiteralExpr: type=int, value=3
  8069. |7- FunctionDecl:
  8070. |- Head: FunctionDeclHead: Name='BinOpExpr::visit' Type='void' Nargs=2
  8071. |0- BinOpExpr n
  8072. \1- TransformerPass p
  8073. |0- AssignmentExpr (Operator='=')
  8074. |- LHS: AccessorExpr (Mode='.')
  8075. |- Object: NameExpr: 'n'
  8076. \- Field: lhs
  8077. \- RHS: CallExpr:
  8078. |- Method: AccessorExpr (Mode=':')
  8079. |- Object: NameExpr: 'p'
  8080. \- Field: visit
  8081. \- Arguments: (Len=1)
  8082. \0- AccessorExpr (Mode='.')
  8083. |- Object: NameExpr: 'n'
  8084. \- Field: lhs
  8085. |1- AssignmentExpr (Operator='=')
  8086. |- LHS: AccessorExpr (Mode='.')
  8087. |- Object: NameExpr: 'n'
  8088. \- Field: rhs
  8089. \- RHS: CallExpr:
  8090. |- Method: AccessorExpr (Mode=':')
  8091. |- Object: NameExpr: 'p'
  8092. \- Field: visit
  8093. \- Arguments: (Len=1)
  8094. \0- AccessorExpr (Mode='.')
  8095. |- Object: NameExpr: 'n'
  8096. \- Field: rhs
  8097. \2- ReturnExpr: <void>
  8098. \8- FunctionDecl:
  8099. |- Head: FunctionDeclHead: Name='BinOpExpr::impl' Type='NodeType' Nargs=0
  8100. \0- ReturnExpr: CallExpr:
  8101. |- Method: AccessorExpr (Mode=':')
  8102. |- Object: CallExpr:
  8103. |- Method: AccessorExpr (Mode=':')
  8104. |- Object: CallExpr:
  8105. |- Method: AccessorExpr (Mode=':')
  8106. |- Object: CallExpr:
  8107. |- Method: AccessorExpr (Mode=':')
  8108. |- Object: CallExpr:
  8109. |- Method: AccessorExpr (Mode=':')
  8110. |- Object: CallExpr:
  8111. |- Method: AccessorExpr (Mode=':')
  8112. |- Object: CallExpr:
  8113. |- Method: AccessorExpr (Mode='::')
  8114. |- Object: NameExpr: 'NodeType'
  8115. \- Field: new
  8116. \- Arguments: (Len=1)
  8117. \0- LiteralExpr: type=cstr, value=BinOpExpr
  8118. \- Field: set_printer
  8119. \- Arguments: (Len=1)
  8120. \0- CastExpr (Target='NodePrinter')
  8121. \- Value: AccessorExpr (Mode='::')
  8122. |- Object: NameExpr: 'BinOpExpr'
  8123. \- Field: print
  8124. \- Field: set_creator
  8125. \- Arguments: (Len=1)
  8126. \0- CastExpr (Target='NodeCreator')
  8127. \- Value: AccessorExpr (Mode='::')
  8128. |- Object: NameExpr: 'BinOpExpr'
  8129. \- Field: create
  8130. \- Field: set_matcher
  8131. \- Arguments: (Len=1)
  8132. \0- CastExpr (Target='NodeMatcher')
  8133. \- Value: AccessorExpr (Mode='::')
  8134. |- Object: NameExpr: 'BinOpExpr'
  8135. \- Field: match
  8136. \- Field: set_visitor
  8137. \- Arguments: (Len=1)
  8138. \0- CastExpr (Target='NodeVisitor')
  8139. \- Value: AccessorExpr (Mode='::')
  8140. |- Object: NameExpr: 'BinOpExpr'
  8141. \- Field: visit
  8142. \- Field: matches
  8143. \- Arguments: (Len=1)
  8144. \0- LiteralExpr: type=int, value=3
  8145. \- Field: addtype
  8146. \- Arguments: (Len=1)
  8147. \0- LiteralExpr: type=cstr, value=ValueExpression
  8148. |2- SepExpr (Consumed=2)
  8149. |12- SepExpr (Consumed=1)
  8150. |13- FileNode: (N_Statements=3)
  8151. |0- SepExpr (Consumed=1)
  8152. |1- TypeDecl:
  8153. |- Head: TypeDeclHead: `BlockBody` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  8154. \- Body: TypeDeclBody: (N_Statements=10)
  8155. |0- DeclExpr: 'NodeType type_'
  8156. |1- DeclExpr: 'List statements'
  8157. |2- DeclExpr: 'bool has_runoff_clause'
  8158. |3- DeclExpr: 'Node runoff_clause'
  8159. |4- FunctionDecl:
  8160. |- Head: FunctionDeclHead: Name='BlockBody::print' Type='void' Nargs=2
  8161. |0- BlockBody node
  8162. \1- int depth
  8163. |0- CallExpr:
  8164. |- Method: NameExpr: 'printf'
  8165. \- Arguments: (Len=2)
  8166. |0- LiteralExpr: type=cstr, value=BlockBody: (N_Statements=%i)\n
  8167. \1- AccessorExpr (Mode='.')
  8168. |- Object: AccessorExpr (Mode='.')
  8169. |- Object: NameExpr: 'node'
  8170. \- Field: statements
  8171. \- Field: len
  8172. |1- AssignmentExpr (Operator='=')
  8173. |- LHS: DeclExpr: 'int i'
  8174. \- RHS: LiteralExpr: type=int, value=0
  8175. |2- WhileExpr:
  8176. |- Condition: BinOpExpr (Operator='<')
  8177. |- LHS: NameExpr: 'i'
  8178. \- RHS: AccessorExpr (Mode='.')
  8179. |- Object: AccessorExpr (Mode='.')
  8180. |- Object: NameExpr: 'node'
  8181. \- Field: statements
  8182. \- Field: len
  8183. |- Body: BlockBody: (N_Statements=4)
  8184. |0- CallExpr:
  8185. |- Method: AccessorExpr (Mode='::')
  8186. |- Object: NameExpr: 'parse'
  8187. \- Field: indent
  8188. \- Arguments: (Len=1)
  8189. \0- NameExpr: 'depth'
  8190. |1- CallExpr:
  8191. |- Method: NameExpr: 'printf'
  8192. \- Arguments: (Len=2)
  8193. |0- LiteralExpr: type=cstr, value=|%i-
  8194. \1- NameExpr: 'i'
  8195. |2- CallExpr:
  8196. |- Method: AccessorExpr (Mode=':')
  8197. |- Object: CallExpr:
  8198. |- Method: AccessorExpr (Mode=':')
  8199. |- Object: AccessorExpr (Mode='.')
  8200. |- Object: NameExpr: 'node'
  8201. \- Field: statements
  8202. \- Field: get_Node
  8203. \- Arguments: (Len=1)
  8204. \0- NameExpr: 'i'
  8205. \- Field: print
  8206. \- Arguments: (Len=1)
  8207. \0- BinOpExpr (Operator='+')
  8208. |- LHS: NameExpr: 'depth'
  8209. \- RHS: LiteralExpr: type=int, value=1
  8210. |3- AssignmentExpr (Operator='+=')
  8211. |- LHS: NameExpr: 'i'
  8212. \- RHS: LiteralExpr: type=int, value=1
  8213. |3- CallExpr:
  8214. |- Method: AccessorExpr (Mode='::')
  8215. |- Object: NameExpr: 'parse'
  8216. \- Field: indent
  8217. \- Arguments: (Len=1)
  8218. \0- BinOpExpr (Operator='-')
  8219. |- LHS: NameExpr: 'depth'
  8220. \- RHS: LiteralExpr: type=int, value=1
  8221. |4- IfExpr:
  8222. |- Condition: AccessorExpr (Mode='.')
  8223. |- Object: NameExpr: 'node'
  8224. \- Field: has_runoff_clause
  8225. |- Body: BlockBody: (N_Statements=2)
  8226. |0- CallExpr:
  8227. |- Method: NameExpr: 'printf'
  8228. \- Arguments: (Len=1)
  8229. \0- LiteralExpr: type=cstr, value=\\-- Runoff Clause:
  8230. |1- CallExpr:
  8231. |- Method: AccessorExpr (Mode=':')
  8232. |- Object: AccessorExpr (Mode='.')
  8233. |- Object: NameExpr: 'node'
  8234. \- Field: runoff_clause
  8235. \- Field: print
  8236. \- Arguments: (Len=1)
  8237. \0- NameExpr: 'depth'
  8238. \5- ReturnExpr: <void>
  8239. |5- FunctionDecl:
  8240. |- Head: FunctionDeclHead: Name='BlockBody::create_direct' Type='Node' Nargs=2
  8241. |0- Project p
  8242. \1- List nodes
  8243. |0- AssignmentExpr (Operator='=')
  8244. |- LHS: DeclExpr: 'BlockBody new'
  8245. \- RHS: CastExpr (Target='BlockBody')
  8246. \- Value: CallExpr:
  8247. |- Method: NameExpr: 'malloc'
  8248. \- Arguments: (Len=1)
  8249. \0- IntrinsicExpr: '@sizeof(BlockBody)@'
  8250. |1- AssignmentExpr (Operator='=')
  8251. |- LHS: AccessorExpr (Mode='.')
  8252. |- Object: NameExpr: 'new'
  8253. \- Field: type_
  8254. \- RHS: CallExpr:
  8255. |- Method: AccessorExpr (Mode=':')
  8256. |- Object: NameExpr: 'p'
  8257. \- Field: type_by_name
  8258. \- Arguments: (Len=1)
  8259. \0- LiteralExpr: type=cstr, value=BlockBody
  8260. |2- AssignmentExpr (Operator='=')
  8261. |- LHS: AccessorExpr (Mode='.')
  8262. |- Object: NameExpr: 'new'
  8263. \- Field: statements
  8264. \- RHS: NameExpr: 'nodes'
  8265. |3- AssignmentExpr (Operator='=')
  8266. |- LHS: AccessorExpr (Mode='.')
  8267. |- Object: NameExpr: 'new'
  8268. \- Field: has_runoff_clause
  8269. \- RHS: LiteralExpr: type=bool, value=0
  8270. \4- ReturnExpr: CastExpr (Target='Node')
  8271. \- Value: NameExpr: 'new'
  8272. |6- FunctionDecl:
  8273. |- Head: FunctionDeclHead: Name='BlockBody::create' Type='BlockBody' Nargs=1
  8274. \0- EleList eles
  8275. |0- AssignmentExpr (Operator='=')
  8276. |- LHS: DeclExpr: 'BlockBody new'
  8277. \- RHS: CastExpr (Target='BlockBody')
  8278. \- Value: CallExpr:
  8279. |- Method: NameExpr: 'malloc'
  8280. \- Arguments: (Len=1)
  8281. \0- IntrinsicExpr: '@sizeof(BlockBody)@'
  8282. |1- AssignmentExpr (Operator='=')
  8283. |- LHS: DeclExpr: 'int matchnum'
  8284. \- RHS: CallExpr:
  8285. |- Method: AccessorExpr (Mode='::')
  8286. |- Object: NameExpr: 'BlockBody'
  8287. \- Field: match
  8288. \- Arguments: (Len=1)
  8289. \0- NameExpr: 'eles'
  8290. |2- IfExpr:
  8291. |- Condition: BinOpExpr (Operator='==')
  8292. |- LHS: NameExpr: 'matchnum'
  8293. \- RHS: LiteralExpr: type=int, value=2
  8294. |- Body: BlockBody: (N_Statements=1)
  8295. |0- IfExpr:
  8296. |- Condition: UnOpExpr (Operator='-')
  8297. \- Value: AccessorExpr (Mode='.')
  8298. |- Object: CallExpr:
  8299. |- Method: AccessorExpr (Mode=':')
  8300. |- Object: NameExpr: 'eles'
  8301. \- Field: get
  8302. \- Arguments: (Len=1)
  8303. \0- LiteralExpr: type=int, value=1
  8304. \- Field: is_token
  8305. |- Body: BlockBody: (N_Statements=5)
  8306. |0- IfExpr:
  8307. |- Condition: UnOpExpr (Operator='-')
  8308. \- Value: GroupingExpr: CallExpr:
  8309. |- Method: AccessorExpr (Mode=':')
  8310. |- Object: CallExpr:
  8311. |- Method: AccessorExpr (Mode=':')
  8312. |- Object: CallExpr:
  8313. |- Method: AccessorExpr (Mode=':')
  8314. |- Object: CallExpr:
  8315. |- Method: AccessorExpr (Mode=':')
  8316. |- Object: NameExpr: 'eles'
  8317. \- Field: get
  8318. \- Arguments: (Len=1)
  8319. \0- LiteralExpr: type=int, value=1
  8320. \- Field: n
  8321. \- Arguments: (Len=0)
  8322. \- Field: is_a
  8323. \- Arguments: (Len=1)
  8324. \0- LiteralExpr: type=cstr, value=BlockBody
  8325. \- Field: or
  8326. \- Arguments: (Len=1)
  8327. \0- CallExpr:
  8328. |- Method: AccessorExpr (Mode=':')
  8329. |- Object: CallExpr:
  8330. |- Method: AccessorExpr (Mode=':')
  8331. |- Object: CallExpr:
  8332. |- Method: AccessorExpr (Mode=':')
  8333. |- Object: NameExpr: 'eles'
  8334. \- Field: get
  8335. \- Arguments: (Len=1)
  8336. \0- LiteralExpr: type=int, value=1
  8337. \- Field: n
  8338. \- Arguments: (Len=0)
  8339. \- Field: is_a
  8340. \- Arguments: (Len=1)
  8341. \0- LiteralExpr: type=cstr, value=IfExpr
  8342. |- Body: BlockBody: (N_Statements=1)
  8343. |0- CallExpr:
  8344. |- Method: AccessorExpr (Mode='::')
  8345. |- Object: NameExpr: 'shoc'
  8346. \- Field: bail_out
  8347. \- Arguments: (Len=1)
  8348. \0- LiteralExpr: type=cstr, value=BlockBody matched against thing of len 2 of which [1] was a node but not a BlockBody
  8349. |1- IfExpr:
  8350. |- Condition: CallExpr:
  8351. |- Method: AccessorExpr (Mode=':')
  8352. |- Object: CallExpr:
  8353. |- Method: AccessorExpr (Mode=':')
  8354. |- Object: CallExpr:
  8355. |- Method: AccessorExpr (Mode=':')
  8356. |- Object: NameExpr: 'eles'
  8357. \- Field: get
  8358. \- Arguments: (Len=1)
  8359. \0- LiteralExpr: type=int, value=1
  8360. \- Field: n
  8361. \- Arguments: (Len=0)
  8362. \- Field: is_a
  8363. \- Arguments: (Len=1)
  8364. \0- LiteralExpr: type=cstr, value=IfExpr
  8365. |- Body: BlockBody: (N_Statements=1)
  8366. |0- IfExpr:
  8367. |- Condition: UnOpExpr (Operator='-')
  8368. \- Value: AccessorExpr (Mode='.')
  8369. |- Object: GroupingExpr: CastExpr (Target='IfExpr')
  8370. \- Value: CallExpr:
  8371. |- Method: AccessorExpr (Mode=':')
  8372. |- Object: CallExpr:
  8373. |- Method: AccessorExpr (Mode=':')
  8374. |- Object: NameExpr: 'eles'
  8375. \- Field: get
  8376. \- Arguments: (Len=1)
  8377. \0- LiteralExpr: type=int, value=1
  8378. \- Field: n
  8379. \- Arguments: (Len=0)
  8380. \- Field: is_elif
  8381. |- Body: BlockBody: (N_Statements=5)
  8382. |0- AssignmentExpr (Operator='=')
  8383. |- LHS: AccessorExpr (Mode='.')
  8384. |- Object: NameExpr: 'new'
  8385. \- Field: has_runoff_clause
  8386. \- RHS: LiteralExpr: type=bool, value=0
  8387. |1- AssignmentExpr (Operator='=')
  8388. |- LHS: AccessorExpr (Mode='.')
  8389. |- Object: NameExpr: 'new'
  8390. \- Field: runoff_clause
  8391. \- RHS: CastExpr (Target='Node')
  8392. \- Value: LiteralExpr: type=ptr, value=0
  8393. |2- AssignmentExpr (Operator='=')
  8394. |- LHS: AccessorExpr (Mode='.')
  8395. |- Object: NameExpr: 'new'
  8396. \- Field: statements
  8397. \- RHS: CallExpr:
  8398. |- Method: AccessorExpr (Mode='::')
  8399. |- Object: NameExpr: 'List'
  8400. \- Field: new
  8401. \- Arguments: (Len=0)
  8402. |3- CallExpr:
  8403. |- Method: AccessorExpr (Mode=':')
  8404. |- Object: AccessorExpr (Mode='.')
  8405. |- Object: NameExpr: 'new'
  8406. \- Field: statements
  8407. \- Field: append_Node
  8408. \- Arguments: (Len=1)
  8409. \0- CallExpr:
  8410. |- Method: AccessorExpr (Mode=':')
  8411. |- Object: CallExpr:
  8412. |- Method: AccessorExpr (Mode=':')
  8413. |- Object: NameExpr: 'eles'
  8414. \- Field: get
  8415. \- Arguments: (Len=1)
  8416. \0- LiteralExpr: type=int, value=1
  8417. \- Field: n
  8418. \- Arguments: (Len=0)
  8419. |4- ReturnExpr: NameExpr: 'new'
  8420. |2- AssignmentExpr (Operator='=')
  8421. |- LHS: AccessorExpr (Mode='.')
  8422. |- Object: NameExpr: 'new'
  8423. \- Field: statements
  8424. \- RHS: CallExpr:
  8425. |- Method: AccessorExpr (Mode='::')
  8426. |- Object: NameExpr: 'List'
  8427. \- Field: new
  8428. \- Arguments: (Len=0)
  8429. |3- AssignmentExpr (Operator='=')
  8430. |- LHS: AccessorExpr (Mode='.')
  8431. |- Object: NameExpr: 'new'
  8432. \- Field: has_runoff_clause
  8433. \- RHS: LiteralExpr: type=bool, value=1
  8434. |4- AssignmentExpr (Operator='=')
  8435. |- LHS: AccessorExpr (Mode='.')
  8436. |- Object: NameExpr: 'new'
  8437. \- Field: runoff_clause
  8438. \- RHS: CallExpr:
  8439. |- Method: AccessorExpr (Mode=':')
  8440. |- Object: CallExpr:
  8441. |- Method: AccessorExpr (Mode=':')
  8442. |- Object: NameExpr: 'eles'
  8443. \- Field: get
  8444. \- Arguments: (Len=1)
  8445. \0- LiteralExpr: type=int, value=1
  8446. \- Field: n
  8447. \- Arguments: (Len=0)
  8448. \-- Runoff Clause: BlockBody: (N_Statements=3)
  8449. |0- AssignmentExpr (Operator='=')
  8450. |- LHS: AccessorExpr (Mode='.')
  8451. |- Object: NameExpr: 'new'
  8452. \- Field: statements
  8453. \- RHS: CallExpr:
  8454. |- Method: AccessorExpr (Mode='::')
  8455. |- Object: NameExpr: 'List'
  8456. \- Field: new
  8457. \- Arguments: (Len=0)
  8458. |1- AssignmentExpr (Operator='=')
  8459. |- LHS: AccessorExpr (Mode='.')
  8460. |- Object: NameExpr: 'new'
  8461. \- Field: has_runoff_clause
  8462. \- RHS: LiteralExpr: type=bool, value=0
  8463. |2- AssignmentExpr (Operator='=')
  8464. |- LHS: AccessorExpr (Mode='.')
  8465. |- Object: NameExpr: 'new'
  8466. \- Field: runoff_clause
  8467. \- RHS: CastExpr (Target='Node')
  8468. \- Value: LiteralExpr: type=ptr, value=0
  8469. \-- Runoff Clause: IfExpr:
  8470. |- Condition: BinOpExpr (Operator='==')
  8471. |- LHS: NameExpr: 'matchnum'
  8472. \- RHS: LiteralExpr: type=int, value=3
  8473. |- Body: BlockBody: (N_Statements=5)
  8474. |0- AssignmentExpr (Operator='=')
  8475. |- LHS: DeclExpr: 'BlockBody old'
  8476. \- RHS: CastExpr (Target='BlockBody')
  8477. \- Value: CallExpr:
  8478. |- Method: AccessorExpr (Mode=':')
  8479. |- Object: CallExpr:
  8480. |- Method: AccessorExpr (Mode=':')
  8481. |- Object: NameExpr: 'eles'
  8482. \- Field: get
  8483. \- Arguments: (Len=1)
  8484. \0- LiteralExpr: type=int, value=2
  8485. \- Field: n
  8486. \- Arguments: (Len=0)
  8487. |1- AssignmentExpr (Operator='=')
  8488. |- LHS: AccessorExpr (Mode='.')
  8489. |- Object: NameExpr: 'new'
  8490. \- Field: has_runoff_clause
  8491. \- RHS: AccessorExpr (Mode='.')
  8492. |- Object: NameExpr: 'old'
  8493. \- Field: has_runoff_clause
  8494. |2- AssignmentExpr (Operator='=')
  8495. |- LHS: AccessorExpr (Mode='.')
  8496. |- Object: NameExpr: 'new'
  8497. \- Field: runoff_clause
  8498. \- RHS: AccessorExpr (Mode='.')
  8499. |- Object: NameExpr: 'old'
  8500. \- Field: runoff_clause
  8501. |3- AssignmentExpr (Operator='=')
  8502. |- LHS: AccessorExpr (Mode='.')
  8503. |- Object: NameExpr: 'new'
  8504. \- Field: statements
  8505. \- RHS: AccessorExpr (Mode='.')
  8506. |- Object: NameExpr: 'old'
  8507. \- Field: statements
  8508. |4- CallExpr:
  8509. |- Method: AccessorExpr (Mode=':')
  8510. |- Object: AccessorExpr (Mode='.')
  8511. |- Object: NameExpr: 'new'
  8512. \- Field: statements
  8513. \- Field: insert
  8514. \- Arguments: (Len=2)
  8515. |0- LiteralExpr: type=int, value=0
  8516. \1- CastExpr (Target='ptr')
  8517. \- Value: CallExpr:
  8518. |- Method: AccessorExpr (Mode=':')
  8519. |- Object: CallExpr:
  8520. |- Method: AccessorExpr (Mode=':')
  8521. |- Object: NameExpr: 'eles'
  8522. \- Field: get
  8523. \- Arguments: (Len=1)
  8524. \0- LiteralExpr: type=int, value=1
  8525. \- Field: n
  8526. \- Arguments: (Len=0)
  8527. \-- Runoff Clause: BlockBody: (N_Statements=3)
  8528. |0- AssignmentExpr (Operator='=')
  8529. |- LHS: AccessorExpr (Mode='.')
  8530. |- Object: NameExpr: 'new'
  8531. \- Field: has_runoff_clause
  8532. \- RHS: LiteralExpr: type=bool, value=1
  8533. |1- AssignmentExpr (Operator='=')
  8534. |- LHS: AccessorExpr (Mode='.')
  8535. |- Object: NameExpr: 'new'
  8536. \- Field: runoff_clause
  8537. \- RHS: CallExpr:
  8538. |- Method: AccessorExpr (Mode=':')
  8539. |- Object: CallExpr:
  8540. |- Method: AccessorExpr (Mode=':')
  8541. |- Object: NameExpr: 'eles'
  8542. \- Field: get
  8543. \- Arguments: (Len=1)
  8544. \0- LiteralExpr: type=int, value=3
  8545. \- Field: n
  8546. \- Arguments: (Len=0)
  8547. |2- AssignmentExpr (Operator='=')
  8548. |- LHS: AccessorExpr (Mode='.')
  8549. |- Object: NameExpr: 'new'
  8550. \- Field: statements
  8551. \- RHS: CallExpr:
  8552. |- Method: AccessorExpr (Mode='::')
  8553. |- Object: NameExpr: 'List'
  8554. \- Field: new
  8555. \- Arguments: (Len=0)
  8556. \3- ReturnExpr: NameExpr: 'new'
  8557. |7- FunctionDecl:
  8558. |- Head: FunctionDeclHead: Name='BlockBody::match' Type='int' Nargs=1
  8559. \0- EleList eles
  8560. |0- IfExpr:
  8561. |- Condition: AccessorExpr (Mode='.')
  8562. |- Object: CallExpr:
  8563. |- Method: AccessorExpr (Mode=':')
  8564. |- Object: NameExpr: 'eles'
  8565. \- Field: get
  8566. \- Arguments: (Len=1)
  8567. \0- LiteralExpr: type=int, value=0
  8568. \- Field: is_token
  8569. |- Body: BlockBody: (N_Statements=1)
  8570. |0- ReturnExpr: LiteralExpr: type=int, value=0
  8571. |1- IfExpr:
  8572. |- Condition: UnOpExpr (Operator='-')
  8573. \- Value: CallExpr:
  8574. |- Method: AccessorExpr (Mode=':')
  8575. |- Object: CallExpr:
  8576. |- Method: AccessorExpr (Mode=':')
  8577. |- Object: CallExpr:
  8578. |- Method: AccessorExpr (Mode=':')
  8579. |- Object: NameExpr: 'eles'
  8580. \- Field: get
  8581. \- Arguments: (Len=1)
  8582. \0- LiteralExpr: type=int, value=0
  8583. \- Field: n
  8584. \- Arguments: (Len=0)
  8585. \- Field: is_a
  8586. \- Arguments: (Len=1)
  8587. \0- LiteralExpr: type=cstr, value=SepExpr
  8588. |- Body: BlockBody: (N_Statements=1)
  8589. |0- ReturnExpr: LiteralExpr: type=int, value=0
  8590. |2- IfExpr:
  8591. |- Condition: AccessorExpr (Mode='.')
  8592. |- Object: CallExpr:
  8593. |- Method: AccessorExpr (Mode=':')
  8594. |- Object: NameExpr: 'eles'
  8595. \- Field: get
  8596. \- Arguments: (Len=1)
  8597. \0- LiteralExpr: type=int, value=1
  8598. \- Field: is_token
  8599. |- Body: BlockBody: (N_Statements=1)
  8600. |0- IfExpr:
  8601. |- Condition: CallExpr:
  8602. |- Method: AccessorExpr (Mode=':')
  8603. |- Object: CallExpr:
  8604. |- Method: AccessorExpr (Mode=':')
  8605. |- Object: CallExpr:
  8606. |- Method: AccessorExpr (Mode=':')
  8607. |- Object: NameExpr: 'eles'
  8608. \- Field: get
  8609. \- Arguments: (Len=1)
  8610. \0- LiteralExpr: type=int, value=1
  8611. \- Field: t
  8612. \- Arguments: (Len=0)
  8613. \- Field: is_a
  8614. \- Arguments: (Len=1)
  8615. \0- LiteralExpr: type=cstr, value=T_DONE
  8616. |- Body: BlockBody: (N_Statements=1)
  8617. |0- ReturnExpr: LiteralExpr: type=int, value=2
  8618. \-- Runoff Clause: IfExpr:
  8619. |- Condition: BinOpExpr (Operator='>')
  8620. |- LHS: CallExpr:
  8621. |- Method: AccessorExpr (Mode=':')
  8622. |- Object: NameExpr: 'eles'
  8623. \- Field: in_slice
  8624. \- Arguments: (Len=0)
  8625. \- RHS: LiteralExpr: type=int, value=2
  8626. |- Body: BlockBody: (N_Statements=1)
  8627. |0- IfExpr:
  8628. |- Condition: BinOpExpr (Operator='&')
  8629. |- LHS: AccessorExpr (Mode='.')
  8630. |- Object: CallExpr:
  8631. |- Method: AccessorExpr (Mode=':')
  8632. |- Object: NameExpr: 'eles'
  8633. \- Field: get
  8634. \- Arguments: (Len=1)
  8635. \0- LiteralExpr: type=int, value=1
  8636. \- Field: is_token
  8637. \- RHS: AccessorExpr (Mode='.')
  8638. |- Object: CallExpr:
  8639. |- Method: AccessorExpr (Mode=':')
  8640. |- Object: NameExpr: 'eles'
  8641. \- Field: get
  8642. \- Arguments: (Len=1)
  8643. \0- LiteralExpr: type=int, value=2
  8644. \- Field: is_token
  8645. |- Body: BlockBody: (N_Statements=1)
  8646. |0- IfExpr:
  8647. |- Condition: BinOpExpr (Operator='&')
  8648. |- LHS: CallExpr:
  8649. |- Method: AccessorExpr (Mode=':')
  8650. |- Object: CallExpr:
  8651. |- Method: AccessorExpr (Mode=':')
  8652. |- Object: CallExpr:
  8653. |- Method: AccessorExpr (Mode=':')
  8654. |- Object: NameExpr: 'eles'
  8655. \- Field: get
  8656. \- Arguments: (Len=1)
  8657. \0- LiteralExpr: type=int, value=1
  8658. \- Field: t
  8659. \- Arguments: (Len=0)
  8660. \- Field: is_a
  8661. \- Arguments: (Len=1)
  8662. \0- LiteralExpr: type=cstr, value=T_ELSE
  8663. \- RHS: CallExpr:
  8664. |- Method: AccessorExpr (Mode=':')
  8665. |- Object: CallExpr:
  8666. |- Method: AccessorExpr (Mode=':')
  8667. |- Object: CallExpr:
  8668. |- Method: AccessorExpr (Mode=':')
  8669. |- Object: NameExpr: 'eles'
  8670. \- Field: get
  8671. \- Arguments: (Len=1)
  8672. \0- LiteralExpr: type=int, value=2
  8673. \- Field: t
  8674. \- Arguments: (Len=0)
  8675. \- Field: is_a
  8676. \- Arguments: (Len=1)
  8677. \0- LiteralExpr: type=cstr, value=T_DO
  8678. |- Body: BlockBody: (N_Statements=1)
  8679. |0- ReturnExpr: LiteralExpr: type=int, value=4
  8680. \-- Runoff Clause: IfExpr:
  8681. |- Condition: CallExpr:
  8682. |- Method: AccessorExpr (Mode=':')
  8683. |- Object: CallExpr:
  8684. |- Method: AccessorExpr (Mode=':')
  8685. |- Object: CallExpr:
  8686. |- Method: AccessorExpr (Mode=':')
  8687. |- Object: NameExpr: 'eles'
  8688. \- Field: get
  8689. \- Arguments: (Len=1)
  8690. \0- LiteralExpr: type=int, value=1
  8691. \- Field: n
  8692. \- Arguments: (Len=0)
  8693. \- Field: is_a
  8694. \- Arguments: (Len=1)
  8695. \0- LiteralExpr: type=cstr, value=BlockBody
  8696. |- Body: BlockBody: (N_Statements=1)
  8697. |0- ReturnExpr: LiteralExpr: type=int, value=2
  8698. \-- Runoff Clause: IfExpr:
  8699. |- Condition: GroupingExpr: UnOpExpr (Operator='-')
  8700. \- Value: AccessorExpr (Mode='.')
  8701. |- Object: CallExpr:
  8702. |- Method: AccessorExpr (Mode=':')
  8703. |- Object: NameExpr: 'eles'
  8704. \- Field: get
  8705. \- Arguments: (Len=1)
  8706. \0- LiteralExpr: type=int, value=1
  8707. \- Field: is_token
  8708. |- Body: BlockBody: (N_Statements=2)
  8709. |0- IfExpr:
  8710. |- Condition: CallExpr:
  8711. |- Method: AccessorExpr (Mode=':')
  8712. |- Object: CallExpr:
  8713. |- Method: AccessorExpr (Mode=':')
  8714. |- Object: CallExpr:
  8715. |- Method: AccessorExpr (Mode=':')
  8716. |- Object: NameExpr: 'eles'
  8717. \- Field: get
  8718. \- Arguments: (Len=1)
  8719. \0- LiteralExpr: type=int, value=1
  8720. \- Field: n
  8721. \- Arguments: (Len=0)
  8722. \- Field: is_a
  8723. \- Arguments: (Len=1)
  8724. \0- LiteralExpr: type=cstr, value=IfExpr
  8725. |- Body: BlockBody: (N_Statements=1)
  8726. |0- IfExpr:
  8727. |- Condition: AccessorExpr (Mode='.')
  8728. |- Object: GroupingExpr: CastExpr (Target='IfExpr')
  8729. \- Value: CallExpr:
  8730. |- Method: AccessorExpr (Mode=':')
  8731. |- Object: CallExpr:
  8732. |- Method: AccessorExpr (Mode=':')
  8733. |- Object: NameExpr: 'eles'
  8734. \- Field: get
  8735. \- Arguments: (Len=1)
  8736. \0- LiteralExpr: type=int, value=1
  8737. \- Field: n
  8738. \- Arguments: (Len=0)
  8739. \- Field: is_elif
  8740. |- Body: BlockBody: (N_Statements=1)
  8741. |0- ReturnExpr: LiteralExpr: type=int, value=2
  8742. |1- IfExpr:
  8743. |- Condition: BinOpExpr (Operator='>')
  8744. |- LHS: CallExpr:
  8745. |- Method: AccessorExpr (Mode=':')
  8746. |- Object: NameExpr: 'eles'
  8747. \- Field: in_slice
  8748. \- Arguments: (Len=0)
  8749. \- RHS: LiteralExpr: type=int, value=2
  8750. |- Body: BlockBody: (N_Statements=1)
  8751. |0- IfExpr:
  8752. |- Condition: GroupingExpr: UnOpExpr (Operator='-')
  8753. \- Value: AccessorExpr (Mode='.')
  8754. |- Object: CallExpr:
  8755. |- Method: AccessorExpr (Mode=':')
  8756. |- Object: NameExpr: 'eles'
  8757. \- Field: get
  8758. \- Arguments: (Len=1)
  8759. \0- LiteralExpr: type=int, value=2
  8760. \- Field: is_token
  8761. |- Body: BlockBody: (N_Statements=1)
  8762. |0- IfExpr:
  8763. |- Condition: BinOpExpr (Operator='&')
  8764. |- LHS: CallExpr:
  8765. |- Method: AccessorExpr (Mode=':')
  8766. |- Object: CallExpr:
  8767. |- Method: AccessorExpr (Mode=':')
  8768. |- Object: CallExpr:
  8769. |- Method: AccessorExpr (Mode=':')
  8770. |- Object: NameExpr: 'eles'
  8771. \- Field: get
  8772. \- Arguments: (Len=1)
  8773. \0- LiteralExpr: type=int, value=1
  8774. \- Field: n
  8775. \- Arguments: (Len=0)
  8776. \- Field: is_a
  8777. \- Arguments: (Len=1)
  8778. \0- LiteralExpr: type=cstr, value=Expression
  8779. \- RHS: GroupingExpr: CallExpr:
  8780. |- Method: AccessorExpr (Mode=':')
  8781. |- Object: CallExpr:
  8782. |- Method: AccessorExpr (Mode=':')
  8783. |- Object: CallExpr:
  8784. |- Method: AccessorExpr (Mode=':')
  8785. |- Object: NameExpr: 'eles'
  8786. \- Field: get
  8787. \- Arguments: (Len=1)
  8788. \0- LiteralExpr: type=int, value=2
  8789. \- Field: n
  8790. \- Arguments: (Len=0)
  8791. \- Field: is_a
  8792. \- Arguments: (Len=1)
  8793. \0- LiteralExpr: type=cstr, value=BlockBody
  8794. |- Body: BlockBody: (N_Statements=1)
  8795. |0- ReturnExpr: LiteralExpr: type=int, value=3
  8796. \3- ReturnExpr: LiteralExpr: type=int, value=0
  8797. |8- FunctionDecl:
  8798. |- Head: FunctionDeclHead: Name='BlockBody::visit' Type='void' Nargs=2
  8799. |0- BlockBody n
  8800. \1- TransformerPass p
  8801. |0- AssignmentExpr (Operator='=')
  8802. |- LHS: DeclExpr: 'int i'
  8803. \- RHS: LiteralExpr: type=int, value=0
  8804. |1- DeclExpr: 'Node res'
  8805. |2- WhileExpr:
  8806. |- Condition: BinOpExpr (Operator='<')
  8807. |- LHS: NameExpr: 'i'
  8808. \- RHS: AccessorExpr (Mode='.')
  8809. |- Object: AccessorExpr (Mode='.')
  8810. |- Object: NameExpr: 'n'
  8811. \- Field: statements
  8812. \- Field: len
  8813. |- Body: BlockBody: (N_Statements=3)
  8814. |0- AssignmentExpr (Operator='=')
  8815. |- LHS: NameExpr: 'res'
  8816. \- RHS: CallExpr:
  8817. |- Method: AccessorExpr (Mode=':')
  8818. |- Object: NameExpr: 'p'
  8819. \- Field: visit
  8820. \- Arguments: (Len=1)
  8821. \0- CallExpr:
  8822. |- Method: AccessorExpr (Mode=':')
  8823. |- Object: AccessorExpr (Mode='.')
  8824. |- Object: NameExpr: 'n'
  8825. \- Field: statements
  8826. \- Field: get_Node
  8827. \- Arguments: (Len=1)
  8828. \0- NameExpr: 'i'
  8829. |1- IfExpr:
  8830. |- Condition: BinOpExpr (Operator='==')
  8831. |- LHS: CastExpr (Target='ptr')
  8832. \- Value: NameExpr: 'res'
  8833. \- RHS: LiteralExpr: type=ptr, value=0
  8834. |- Body: BlockBody: (N_Statements=1)
  8835. |0- CallExpr:
  8836. |- Method: AccessorExpr (Mode=':')
  8837. |- Object: AccessorExpr (Mode='.')
  8838. |- Object: NameExpr: 'n'
  8839. \- Field: statements
  8840. \- Field: del
  8841. \- Arguments: (Len=1)
  8842. \0- NameExpr: 'i'
  8843. \-- Runoff Clause: BlockBody: (N_Statements=1)
  8844. |0- CallExpr:
  8845. |- Method: AccessorExpr (Mode=':')
  8846. |- Object: AccessorExpr (Mode='.')
  8847. |- Object: NameExpr: 'n'
  8848. \- Field: statements
  8849. \- Field: set
  8850. \- Arguments: (Len=2)
  8851. |0- NameExpr: 'i'
  8852. \1- CastExpr (Target='ptr')
  8853. \- Value: NameExpr: 'res'
  8854. |2- AssignmentExpr (Operator='+=')
  8855. |- LHS: NameExpr: 'i'
  8856. \- RHS: LiteralExpr: type=int, value=1
  8857. |3- IfExpr:
  8858. |- Condition: AccessorExpr (Mode='.')
  8859. |- Object: NameExpr: 'n'
  8860. \- Field: has_runoff_clause
  8861. |- Body: BlockBody: (N_Statements=2)
  8862. |0- AssignmentExpr (Operator='=')
  8863. |- LHS: DeclExpr: 'Node runoff'
  8864. \- RHS: CallExpr:
  8865. |- Method: AccessorExpr (Mode=':')
  8866. |- Object: NameExpr: 'p'
  8867. \- Field: visit
  8868. \- Arguments: (Len=1)
  8869. \0- AccessorExpr (Mode='.')
  8870. |- Object: NameExpr: 'n'
  8871. \- Field: runoff_clause
  8872. |1- IfExpr:
  8873. |- Condition: BinOpExpr (Operator='==')
  8874. |- LHS: CastExpr (Target='ptr')
  8875. \- Value: NameExpr: 'runoff'
  8876. \- RHS: LiteralExpr: type=ptr, value=0
  8877. |- Body: BlockBody: (N_Statements=1)
  8878. |0- AssignmentExpr (Operator='=')
  8879. |- LHS: AccessorExpr (Mode='.')
  8880. |- Object: NameExpr: 'n'
  8881. \- Field: has_runoff_clause
  8882. \- RHS: LiteralExpr: type=bool, value=0
  8883. \-- Runoff Clause: BlockBody: (N_Statements=1)
  8884. |0- AssignmentExpr (Operator='=')
  8885. |- LHS: AccessorExpr (Mode='.')
  8886. |- Object: NameExpr: 'n'
  8887. \- Field: runoff_clause
  8888. \- RHS: NameExpr: 'runoff'
  8889. \4- ReturnExpr: <void>
  8890. \9- FunctionDecl:
  8891. |- Head: FunctionDeclHead: Name='BlockBody::impl' Type='NodeType' Nargs=0
  8892. \0- ReturnExpr: CallExpr:
  8893. |- Method: AccessorExpr (Mode=':')
  8894. |- Object: CallExpr:
  8895. |- Method: AccessorExpr (Mode=':')
  8896. |- Object: CallExpr:
  8897. |- Method: AccessorExpr (Mode=':')
  8898. |- Object: CallExpr:
  8899. |- Method: AccessorExpr (Mode=':')
  8900. |- Object: CallExpr:
  8901. |- Method: AccessorExpr (Mode=':')
  8902. |- Object: CallExpr:
  8903. |- Method: AccessorExpr (Mode=':')
  8904. |- Object: CallExpr:
  8905. |- Method: AccessorExpr (Mode='::')
  8906. |- Object: NameExpr: 'NodeType'
  8907. \- Field: new
  8908. \- Arguments: (Len=1)
  8909. \0- LiteralExpr: type=cstr, value=BlockBody
  8910. \- Field: set_printer
  8911. \- Arguments: (Len=1)
  8912. \0- CastExpr (Target='NodePrinter')
  8913. \- Value: AccessorExpr (Mode='::')
  8914. |- Object: NameExpr: 'BlockBody'
  8915. \- Field: print
  8916. \- Field: set_creator
  8917. \- Arguments: (Len=1)
  8918. \0- CastExpr (Target='NodeCreator')
  8919. \- Value: AccessorExpr (Mode='::')
  8920. |- Object: NameExpr: 'BlockBody'
  8921. \- Field: create
  8922. \- Field: set_matcher
  8923. \- Arguments: (Len=1)
  8924. \0- CastExpr (Target='NodeMatcher')
  8925. \- Value: AccessorExpr (Mode='::')
  8926. |- Object: NameExpr: 'BlockBody'
  8927. \- Field: match
  8928. \- Field: set_visitor
  8929. \- Arguments: (Len=1)
  8930. \0- CastExpr (Target='NodeVisitor')
  8931. \- Value: AccessorExpr (Mode='::')
  8932. |- Object: NameExpr: 'BlockBody'
  8933. \- Field: visit
  8934. \- Field: matches
  8935. \- Arguments: (Len=1)
  8936. \0- LiteralExpr: type=int, value=2
  8937. \- Field: addtype
  8938. \- Arguments: (Len=1)
  8939. \0- LiteralExpr: type=cstr, value=Expression
  8940. |2- SepExpr (Consumed=2)
  8941. |14- SepExpr (Consumed=1)
  8942. |15- FileNode: (N_Statements=3)
  8943. |0- SepExpr (Consumed=1)
  8944. |1- TypeDecl:
  8945. |- Head: TypeDeclHead: `CallExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  8946. \- Body: TypeDeclBody: (N_Statements=8)
  8947. |0- DeclExpr: 'NodeType type_'
  8948. |1- DeclExpr: 'Node meth'
  8949. |2- DeclExpr: 'List args'
  8950. |3- FunctionDecl:
  8951. |- Head: FunctionDeclHead: Name='CallExpr::print' Type='void' Nargs=2
  8952. |0- CallExpr node
  8953. \1- int depth
  8954. |0- CallExpr:
  8955. |- Method: NameExpr: 'printf'
  8956. \- Arguments: (Len=1)
  8957. \0- LiteralExpr: type=cstr, value=CallExpr:\n
  8958. |1- CallExpr:
  8959. |- Method: AccessorExpr (Mode='::')
  8960. |- Object: NameExpr: 'parse'
  8961. \- Field: indent
  8962. \- Arguments: (Len=1)
  8963. \0- NameExpr: 'depth'
  8964. |2- CallExpr:
  8965. |- Method: NameExpr: 'printf'
  8966. \- Arguments: (Len=1)
  8967. \0- LiteralExpr: type=cstr, value=|- Method:
  8968. |3- CallExpr:
  8969. |- Method: AccessorExpr (Mode=':')
  8970. |- Object: AccessorExpr (Mode='.')
  8971. |- Object: NameExpr: 'node'
  8972. \- Field: meth
  8973. \- Field: print
  8974. \- Arguments: (Len=1)
  8975. \0- BinOpExpr (Operator='+')
  8976. |- LHS: NameExpr: 'depth'
  8977. \- RHS: LiteralExpr: type=int, value=1
  8978. |4- CallExpr:
  8979. |- Method: AccessorExpr (Mode='::')
  8980. |- Object: NameExpr: 'parse'
  8981. \- Field: indent
  8982. \- Arguments: (Len=1)
  8983. \0- NameExpr: 'depth'
  8984. |5- CallExpr:
  8985. |- Method: NameExpr: 'printf'
  8986. \- Arguments: (Len=2)
  8987. |0- LiteralExpr: type=cstr, value=\- Arguments: (Len=%i)\n
  8988. \1- AccessorExpr (Mode='.')
  8989. |- Object: AccessorExpr (Mode='.')
  8990. |- Object: NameExpr: 'node'
  8991. \- Field: args
  8992. \- Field: len
  8993. |6- AssignmentExpr (Operator='=')
  8994. |- LHS: DeclExpr: 'int i'
  8995. \- RHS: LiteralExpr: type=int, value=0
  8996. |7- WhileExpr:
  8997. |- Condition: BinOpExpr (Operator='<')
  8998. |- LHS: NameExpr: 'i'
  8999. \- RHS: AccessorExpr (Mode='.')
  9000. |- Object: AccessorExpr (Mode='.')
  9001. |- Object: NameExpr: 'node'
  9002. \- Field: args
  9003. \- Field: len
  9004. |- Body: BlockBody: (N_Statements=4)
  9005. |0- CallExpr:
  9006. |- Method: AccessorExpr (Mode='::')
  9007. |- Object: NameExpr: 'parse'
  9008. \- Field: indent
  9009. \- Arguments: (Len=1)
  9010. \0- BinOpExpr (Operator='+')
  9011. |- LHS: NameExpr: 'depth'
  9012. \- RHS: LiteralExpr: type=int, value=1
  9013. |1- IfExpr:
  9014. |- Condition: BinOpExpr (Operator='==')
  9015. |- LHS: NameExpr: 'i'
  9016. \- RHS: BinOpExpr (Operator='-')
  9017. |- LHS: AccessorExpr (Mode='.')
  9018. |- Object: AccessorExpr (Mode='.')
  9019. |- Object: NameExpr: 'node'
  9020. \- Field: args
  9021. \- Field: len
  9022. \- RHS: LiteralExpr: type=int, value=1
  9023. |- Body: BlockBody: (N_Statements=1)
  9024. |0- CallExpr:
  9025. |- Method: NameExpr: 'printf'
  9026. \- Arguments: (Len=2)
  9027. |0- LiteralExpr: type=cstr, value=\\%i-
  9028. \1- NameExpr: 'i'
  9029. \-- Runoff Clause: BlockBody: (N_Statements=1)
  9030. |0- CallExpr:
  9031. |- Method: NameExpr: 'printf'
  9032. \- Arguments: (Len=2)
  9033. |0- LiteralExpr: type=cstr, value=|%i-
  9034. \1- NameExpr: 'i'
  9035. |2- CallExpr:
  9036. |- Method: AccessorExpr (Mode=':')
  9037. |- Object: CallExpr:
  9038. |- Method: AccessorExpr (Mode=':')
  9039. |- Object: AccessorExpr (Mode='.')
  9040. |- Object: NameExpr: 'node'
  9041. \- Field: args
  9042. \- Field: get_Node
  9043. \- Arguments: (Len=1)
  9044. \0- NameExpr: 'i'
  9045. \- Field: print
  9046. \- Arguments: (Len=1)
  9047. \0- BinOpExpr (Operator='+')
  9048. |- LHS: NameExpr: 'depth'
  9049. \- RHS: LiteralExpr: type=int, value=2
  9050. |3- AssignmentExpr (Operator='+=')
  9051. |- LHS: NameExpr: 'i'
  9052. \- RHS: LiteralExpr: type=int, value=1
  9053. \8- ReturnExpr: <void>
  9054. |4- FunctionDecl:
  9055. |- Head: FunctionDeclHead: Name='CallExpr::create' Type='CallExpr' Nargs=1
  9056. \0- EleList eles
  9057. |0- AssignmentExpr (Operator='=')
  9058. |- LHS: DeclExpr: 'CallExpr new'
  9059. \- RHS: CastExpr (Target='CallExpr')
  9060. \- Value: CallExpr:
  9061. |- Method: NameExpr: 'malloc'
  9062. \- Arguments: (Len=1)
  9063. \0- IntrinsicExpr: '@sizeof(CallExpr)@'
  9064. |1- AssignmentExpr (Operator='=')
  9065. |- LHS: AccessorExpr (Mode='.')
  9066. |- Object: NameExpr: 'new'
  9067. \- Field: meth
  9068. \- RHS: CallExpr:
  9069. |- Method: AccessorExpr (Mode=':')
  9070. |- Object: CallExpr:
  9071. |- Method: AccessorExpr (Mode=':')
  9072. |- Object: NameExpr: 'eles'
  9073. \- Field: get
  9074. \- Arguments: (Len=1)
  9075. \0- LiteralExpr: type=int, value=0
  9076. \- Field: n
  9077. \- Arguments: (Len=0)
  9078. |2- AssignmentExpr (Operator='=')
  9079. |- LHS: DeclExpr: 'Node args'
  9080. \- RHS: CallExpr:
  9081. |- Method: AccessorExpr (Mode=':')
  9082. |- Object: CallExpr:
  9083. |- Method: AccessorExpr (Mode=':')
  9084. |- Object: NameExpr: 'eles'
  9085. \- Field: get
  9086. \- Arguments: (Len=1)
  9087. \0- LiteralExpr: type=int, value=1
  9088. \- Field: n
  9089. \- Arguments: (Len=0)
  9090. |3- IfExpr:
  9091. |- Condition: CallExpr:
  9092. |- Method: AccessorExpr (Mode=':')
  9093. |- Object: NameExpr: 'args'
  9094. \- Field: is_a
  9095. \- Arguments: (Len=1)
  9096. \0- LiteralExpr: type=cstr, value=ZeroTuple
  9097. |- Body: BlockBody: (N_Statements=1)
  9098. |0- AssignmentExpr (Operator='=')
  9099. |- LHS: AccessorExpr (Mode='.')
  9100. |- Object: NameExpr: 'new'
  9101. \- Field: args
  9102. \- RHS: CallExpr:
  9103. |- Method: AccessorExpr (Mode='::')
  9104. |- Object: NameExpr: 'List'
  9105. \- Field: new
  9106. \- Arguments: (Len=0)
  9107. \-- Runoff Clause: IfExpr:
  9108. |- Condition: CallExpr:
  9109. |- Method: AccessorExpr (Mode=':')
  9110. |- Object: NameExpr: 'args'
  9111. \- Field: is_a
  9112. \- Arguments: (Len=1)
  9113. \0- LiteralExpr: type=cstr, value=OneTuple
  9114. |- Body: BlockBody: (N_Statements=2)
  9115. |0- AssignmentExpr (Operator='=')
  9116. |- LHS: AccessorExpr (Mode='.')
  9117. |- Object: NameExpr: 'new'
  9118. \- Field: args
  9119. \- RHS: CallExpr:
  9120. |- Method: AccessorExpr (Mode='::')
  9121. |- Object: NameExpr: 'List'
  9122. \- Field: new
  9123. \- Arguments: (Len=0)
  9124. |1- CallExpr:
  9125. |- Method: AccessorExpr (Mode=':')
  9126. |- Object: AccessorExpr (Mode='.')
  9127. |- Object: NameExpr: 'new'
  9128. \- Field: args
  9129. \- Field: append_Node
  9130. \- Arguments: (Len=1)
  9131. \0- AccessorExpr (Mode='.')
  9132. |- Object: GroupingExpr: CastExpr (Target='OneTuple')
  9133. \- Value: NameExpr: 'args'
  9134. \- Field: element
  9135. \-- Runoff Clause: IfExpr:
  9136. |- Condition: CallExpr:
  9137. |- Method: AccessorExpr (Mode=':')
  9138. |- Object: NameExpr: 'args'
  9139. \- Field: is_a
  9140. \- Arguments: (Len=1)
  9141. \0- LiteralExpr: type=cstr, value=GroupingExpr
  9142. |- Body: BlockBody: (N_Statements=2)
  9143. |0- AssignmentExpr (Operator='=')
  9144. |- LHS: AccessorExpr (Mode='.')
  9145. |- Object: NameExpr: 'new'
  9146. \- Field: args
  9147. \- RHS: CallExpr:
  9148. |- Method: AccessorExpr (Mode='::')
  9149. |- Object: NameExpr: 'List'
  9150. \- Field: new
  9151. \- Arguments: (Len=0)
  9152. |1- CallExpr:
  9153. |- Method: AccessorExpr (Mode=':')
  9154. |- Object: AccessorExpr (Mode='.')
  9155. |- Object: NameExpr: 'new'
  9156. \- Field: args
  9157. \- Field: append_Node
  9158. \- Arguments: (Len=1)
  9159. \0- AccessorExpr (Mode='.')
  9160. |- Object: GroupingExpr: CastExpr (Target='GroupingExpr')
  9161. \- Value: NameExpr: 'args'
  9162. \- Field: contents
  9163. \-- Runoff Clause: BlockBody: (N_Statements=1)
  9164. |0- AssignmentExpr (Operator='=')
  9165. |- LHS: AccessorExpr (Mode='.')
  9166. |- Object: NameExpr: 'new'
  9167. \- Field: args
  9168. \- RHS: AccessorExpr (Mode='.')
  9169. |- Object: GroupingExpr: CastExpr (Target='Tuple')
  9170. \- Value: NameExpr: 'args'
  9171. \- Field: elements
  9172. \4- ReturnExpr: NameExpr: 'new'
  9173. |5- FunctionDecl:
  9174. |- Head: FunctionDeclHead: Name='CallExpr::match' Type='int' Nargs=1
  9175. \0- EleList eles
  9176. |0- IfExpr:
  9177. |- Condition: UnOpExpr (Operator='-')
  9178. \- Value: CallExpr:
  9179. |- Method: AccessorExpr (Mode=':')
  9180. |- Object: CallExpr:
  9181. |- Method: AccessorExpr (Mode=':')
  9182. |- Object: CallExpr:
  9183. |- Method: AccessorExpr (Mode=':')
  9184. |- Object: NameExpr: 'eles'
  9185. \- Field: get
  9186. \- Arguments: (Len=1)
  9187. \0- LiteralExpr: type=int, value=0
  9188. \- Field: n
  9189. \- Arguments: (Len=0)
  9190. \- Field: is_a
  9191. \- Arguments: (Len=1)
  9192. \0- LiteralExpr: type=cstr, value=ValueExpression
  9193. |- Body: BlockBody: (N_Statements=1)
  9194. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9195. |1- IfExpr:
  9196. |- Condition: UnOpExpr (Operator='-')
  9197. \- Value: CallExpr:
  9198. |- Method: AccessorExpr (Mode=':')
  9199. |- Object: CallExpr:
  9200. |- Method: AccessorExpr (Mode=':')
  9201. |- Object: CallExpr:
  9202. |- Method: AccessorExpr (Mode=':')
  9203. |- Object: NameExpr: 'eles'
  9204. \- Field: get
  9205. \- Arguments: (Len=1)
  9206. \0- LiteralExpr: type=int, value=1
  9207. \- Field: n
  9208. \- Arguments: (Len=0)
  9209. \- Field: is_a
  9210. \- Arguments: (Len=1)
  9211. \0- LiteralExpr: type=cstr, value=Tuple
  9212. |- Body: BlockBody: (N_Statements=1)
  9213. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9214. |2- IfExpr:
  9215. |- Condition: CallExpr:
  9216. |- Method: AccessorExpr (Mode='::')
  9217. |- Object: NameExpr: 'parse'
  9218. \- Field: lookahead_is_accessor
  9219. \- Arguments: (Len=1)
  9220. \0- NameExpr: 'eles'
  9221. |- Body: BlockBody: (N_Statements=1)
  9222. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9223. \3- ReturnExpr: LiteralExpr: type=int, value=2
  9224. |6- FunctionDecl:
  9225. |- Head: FunctionDeclHead: Name='CallExpr::visit' Type='void' Nargs=2
  9226. |0- CallExpr n
  9227. \1- TransformerPass p
  9228. |0- AssignmentExpr (Operator='=')
  9229. |- LHS: AccessorExpr (Mode='.')
  9230. |- Object: NameExpr: 'n'
  9231. \- Field: meth
  9232. \- RHS: CallExpr:
  9233. |- Method: AccessorExpr (Mode=':')
  9234. |- Object: NameExpr: 'p'
  9235. \- Field: visit
  9236. \- Arguments: (Len=1)
  9237. \0- AccessorExpr (Mode='.')
  9238. |- Object: NameExpr: 'n'
  9239. \- Field: meth
  9240. |1- AssignmentExpr (Operator='=')
  9241. |- LHS: DeclExpr: 'int i'
  9242. \- RHS: LiteralExpr: type=int, value=0
  9243. |2- DeclExpr: 'Node res'
  9244. |3- WhileExpr:
  9245. |- Condition: BinOpExpr (Operator='<')
  9246. |- LHS: NameExpr: 'i'
  9247. \- RHS: AccessorExpr (Mode='.')
  9248. |- Object: AccessorExpr (Mode='.')
  9249. |- Object: NameExpr: 'n'
  9250. \- Field: args
  9251. \- Field: len
  9252. |- Body: BlockBody: (N_Statements=3)
  9253. |0- AssignmentExpr (Operator='=')
  9254. |- LHS: NameExpr: 'res'
  9255. \- RHS: CallExpr:
  9256. |- Method: AccessorExpr (Mode=':')
  9257. |- Object: NameExpr: 'p'
  9258. \- Field: visit
  9259. \- Arguments: (Len=1)
  9260. \0- CallExpr:
  9261. |- Method: AccessorExpr (Mode=':')
  9262. |- Object: AccessorExpr (Mode='.')
  9263. |- Object: NameExpr: 'n'
  9264. \- Field: args
  9265. \- Field: get_Node
  9266. \- Arguments: (Len=1)
  9267. \0- NameExpr: 'i'
  9268. |1- IfExpr:
  9269. |- Condition: BinOpExpr (Operator='!=')
  9270. |- LHS: CastExpr (Target='ptr')
  9271. \- Value: NameExpr: 'res'
  9272. \- RHS: LiteralExpr: type=ptr, value=0
  9273. |- Body: BlockBody: (N_Statements=1)
  9274. |0- CallExpr:
  9275. |- Method: AccessorExpr (Mode=':')
  9276. |- Object: AccessorExpr (Mode='.')
  9277. |- Object: NameExpr: 'n'
  9278. \- Field: args
  9279. \- Field: set
  9280. \- Arguments: (Len=2)
  9281. |0- NameExpr: 'i'
  9282. \1- CastExpr (Target='ptr')
  9283. \- Value: NameExpr: 'res'
  9284. |2- AssignmentExpr (Operator='+=')
  9285. |- LHS: NameExpr: 'i'
  9286. \- RHS: LiteralExpr: type=int, value=1
  9287. \4- ReturnExpr: <void>
  9288. \7- FunctionDecl:
  9289. |- Head: FunctionDeclHead: Name='CallExpr::impl' Type='NodeType' Nargs=0
  9290. \0- ReturnExpr: CallExpr:
  9291. |- Method: AccessorExpr (Mode=':')
  9292. |- Object: CallExpr:
  9293. |- Method: AccessorExpr (Mode=':')
  9294. |- Object: CallExpr:
  9295. |- Method: AccessorExpr (Mode=':')
  9296. |- Object: CallExpr:
  9297. |- Method: AccessorExpr (Mode=':')
  9298. |- Object: CallExpr:
  9299. |- Method: AccessorExpr (Mode=':')
  9300. |- Object: CallExpr:
  9301. |- Method: AccessorExpr (Mode=':')
  9302. |- Object: CallExpr:
  9303. |- Method: AccessorExpr (Mode=':')
  9304. |- Object: CallExpr:
  9305. |- Method: AccessorExpr (Mode='::')
  9306. |- Object: NameExpr: 'NodeType'
  9307. \- Field: new
  9308. \- Arguments: (Len=1)
  9309. \0- LiteralExpr: type=cstr, value=CallExpr
  9310. \- Field: set_printer
  9311. \- Arguments: (Len=1)
  9312. \0- CastExpr (Target='NodePrinter')
  9313. \- Value: AccessorExpr (Mode='::')
  9314. |- Object: NameExpr: 'CallExpr'
  9315. \- Field: print
  9316. \- Field: set_creator
  9317. \- Arguments: (Len=1)
  9318. \0- CastExpr (Target='NodeCreator')
  9319. \- Value: AccessorExpr (Mode='::')
  9320. |- Object: NameExpr: 'CallExpr'
  9321. \- Field: create
  9322. \- Field: set_matcher
  9323. \- Arguments: (Len=1)
  9324. \0- CastExpr (Target='NodeMatcher')
  9325. \- Value: AccessorExpr (Mode='::')
  9326. |- Object: NameExpr: 'CallExpr'
  9327. \- Field: match
  9328. \- Field: set_visitor
  9329. \- Arguments: (Len=1)
  9330. \0- CastExpr (Target='NodeVisitor')
  9331. \- Value: AccessorExpr (Mode='::')
  9332. |- Object: NameExpr: 'CallExpr'
  9333. \- Field: visit
  9334. \- Field: matches
  9335. \- Arguments: (Len=1)
  9336. \0- LiteralExpr: type=int, value=2
  9337. \- Field: matches_only_nodes
  9338. \- Arguments: (Len=0)
  9339. \- Field: addtype
  9340. \- Arguments: (Len=1)
  9341. \0- LiteralExpr: type=cstr, value=ValueExpression
  9342. |2- SepExpr (Consumed=2)
  9343. |16- SepExpr (Consumed=1)
  9344. |17- FileNode: (N_Statements=3)
  9345. |0- SepExpr (Consumed=1)
  9346. |1- TypeDecl:
  9347. |- Head: TypeDeclHead: `CastExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  9348. \- Body: TypeDeclBody: (N_Statements=8)
  9349. |0- DeclExpr: 'NodeType type_'
  9350. |1- DeclExpr: 'Node value'
  9351. |2- DeclExpr: 'cstr target'
  9352. |3- FunctionDecl:
  9353. |- Head: FunctionDeclHead: Name='CastExpr::print' Type='void' Nargs=2
  9354. |0- CastExpr node
  9355. \1- int depth
  9356. |0- CallExpr:
  9357. |- Method: NameExpr: 'printf'
  9358. \- Arguments: (Len=2)
  9359. |0- LiteralExpr: type=cstr, value=CastExpr (Target='%s')\n
  9360. \1- AccessorExpr (Mode='.')
  9361. |- Object: NameExpr: 'node'
  9362. \- Field: target
  9363. |1- CallExpr:
  9364. |- Method: AccessorExpr (Mode='::')
  9365. |- Object: NameExpr: 'parse'
  9366. \- Field: indent
  9367. \- Arguments: (Len=1)
  9368. \0- NameExpr: 'depth'
  9369. |2- CallExpr:
  9370. |- Method: NameExpr: 'printf'
  9371. \- Arguments: (Len=1)
  9372. \0- LiteralExpr: type=cstr, value=\- Value:
  9373. |3- CallExpr:
  9374. |- Method: AccessorExpr (Mode=':')
  9375. |- Object: AccessorExpr (Mode='.')
  9376. |- Object: NameExpr: 'node'
  9377. \- Field: value
  9378. \- Field: print
  9379. \- Arguments: (Len=1)
  9380. \0- BinOpExpr (Operator='+')
  9381. |- LHS: NameExpr: 'depth'
  9382. \- RHS: LiteralExpr: type=int, value=1
  9383. \4- ReturnExpr: <void>
  9384. |4- FunctionDecl:
  9385. |- Head: FunctionDeclHead: Name='CastExpr::create' Type='CastExpr' Nargs=1
  9386. \0- EleList eles
  9387. |0- AssignmentExpr (Operator='=')
  9388. |- LHS: DeclExpr: 'CastExpr new'
  9389. \- RHS: CastExpr (Target='CastExpr')
  9390. \- Value: CallExpr:
  9391. |- Method: NameExpr: 'malloc'
  9392. \- Arguments: (Len=1)
  9393. \0- IntrinsicExpr: '@sizeof(CastExpr)@'
  9394. |1- AssignmentExpr (Operator='=')
  9395. |- LHS: AccessorExpr (Mode='.')
  9396. |- Object: NameExpr: 'new'
  9397. \- Field: value
  9398. \- RHS: CallExpr:
  9399. |- Method: AccessorExpr (Mode=':')
  9400. |- Object: CallExpr:
  9401. |- Method: AccessorExpr (Mode=':')
  9402. |- Object: NameExpr: 'eles'
  9403. \- Field: get
  9404. \- Arguments: (Len=1)
  9405. \0- LiteralExpr: type=int, value=0
  9406. \- Field: n
  9407. \- Arguments: (Len=0)
  9408. |2- AssignmentExpr (Operator='=')
  9409. |- LHS: AccessorExpr (Mode='.')
  9410. |- Object: NameExpr: 'new'
  9411. \- Field: target
  9412. \- RHS: AccessorExpr (Mode='.')
  9413. |- Object: GroupingExpr: CastExpr (Target='NameExpr')
  9414. \- Value: CallExpr:
  9415. |- Method: AccessorExpr (Mode=':')
  9416. |- Object: CallExpr:
  9417. |- Method: AccessorExpr (Mode=':')
  9418. |- Object: NameExpr: 'eles'
  9419. \- Field: get
  9420. \- Arguments: (Len=1)
  9421. \0- LiteralExpr: type=int, value=2
  9422. \- Field: n
  9423. \- Arguments: (Len=0)
  9424. \- Field: name
  9425. \3- ReturnExpr: NameExpr: 'new'
  9426. |5- FunctionDecl:
  9427. |- Head: FunctionDeclHead: Name='CastExpr::match' Type='int' Nargs=1
  9428. \0- EleList eles
  9429. |0- IfExpr:
  9430. |- Condition: CallExpr:
  9431. |- Method: AccessorExpr (Mode=':')
  9432. |- Object: CallExpr:
  9433. |- Method: AccessorExpr (Mode=':')
  9434. |- Object: AccessorExpr (Mode='.')
  9435. |- Object: CallExpr:
  9436. |- Method: AccessorExpr (Mode=':')
  9437. |- Object: NameExpr: 'eles'
  9438. \- Field: get
  9439. \- Arguments: (Len=1)
  9440. \0- LiteralExpr: type=int, value=0
  9441. \- Field: is_token
  9442. \- Field: or
  9443. \- Arguments: (Len=1)
  9444. \0- UnOpExpr (Operator='-')
  9445. \- Value: AccessorExpr (Mode='.')
  9446. |- Object: CallExpr:
  9447. |- Method: AccessorExpr (Mode=':')
  9448. |- Object: NameExpr: 'eles'
  9449. \- Field: get
  9450. \- Arguments: (Len=1)
  9451. \0- LiteralExpr: type=int, value=1
  9452. \- Field: is_token
  9453. \- Field: or
  9454. \- Arguments: (Len=1)
  9455. \0- AccessorExpr (Mode='.')
  9456. |- Object: CallExpr:
  9457. |- Method: AccessorExpr (Mode=':')
  9458. |- Object: NameExpr: 'eles'
  9459. \- Field: get
  9460. \- Arguments: (Len=1)
  9461. \0- LiteralExpr: type=int, value=2
  9462. \- Field: is_token
  9463. |- Body: BlockBody: (N_Statements=1)
  9464. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9465. |1- IfExpr:
  9466. |- Condition: CallExpr:
  9467. |- Method: AccessorExpr (Mode=':')
  9468. |- Object: CallExpr:
  9469. |- Method: AccessorExpr (Mode=':')
  9470. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  9471. |- LHS: AccessorExpr (Mode='.')
  9472. |- Object: AccessorExpr (Mode='.')
  9473. |- Object: CallExpr:
  9474. |- Method: AccessorExpr (Mode=':')
  9475. |- Object: CallExpr:
  9476. |- Method: AccessorExpr (Mode=':')
  9477. |- Object: NameExpr: 'eles'
  9478. \- Field: get
  9479. \- Arguments: (Len=1)
  9480. \0- LiteralExpr: type=int, value=1
  9481. \- Field: t
  9482. \- Arguments: (Len=0)
  9483. \- Field: type_
  9484. \- Field: name
  9485. \- RHS: LiteralExpr: type=cstr, value=T_CAST
  9486. \- Field: or
  9487. \- Arguments: (Len=1)
  9488. \0- UnOpExpr (Operator='-')
  9489. \- Value: CallExpr:
  9490. |- Method: AccessorExpr (Mode=':')
  9491. |- Object: CallExpr:
  9492. |- Method: AccessorExpr (Mode=':')
  9493. |- Object: CallExpr:
  9494. |- Method: AccessorExpr (Mode=':')
  9495. |- Object: NameExpr: 'eles'
  9496. \- Field: get
  9497. \- Arguments: (Len=1)
  9498. \0- LiteralExpr: type=int, value=0
  9499. \- Field: n
  9500. \- Arguments: (Len=0)
  9501. \- Field: is_a
  9502. \- Arguments: (Len=1)
  9503. \0- LiteralExpr: type=cstr, value=ValueExpression
  9504. \- Field: or
  9505. \- Arguments: (Len=1)
  9506. \0- UnOpExpr (Operator='-')
  9507. \- Value: CallExpr:
  9508. |- Method: AccessorExpr (Mode=':')
  9509. |- Object: CallExpr:
  9510. |- Method: AccessorExpr (Mode=':')
  9511. |- Object: CallExpr:
  9512. |- Method: AccessorExpr (Mode=':')
  9513. |- Object: NameExpr: 'eles'
  9514. \- Field: get
  9515. \- Arguments: (Len=1)
  9516. \0- LiteralExpr: type=int, value=2
  9517. \- Field: n
  9518. \- Arguments: (Len=0)
  9519. \- Field: is_a
  9520. \- Arguments: (Len=1)
  9521. \0- LiteralExpr: type=cstr, value=NameExpr
  9522. |- Body: BlockBody: (N_Statements=1)
  9523. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9524. |2- IfExpr:
  9525. |- Condition: CallExpr:
  9526. |- Method: AccessorExpr (Mode='::')
  9527. |- Object: NameExpr: 'parse'
  9528. \- Field: lookahead_is_accessor
  9529. \- Arguments: (Len=1)
  9530. \0- NameExpr: 'eles'
  9531. |- Body: BlockBody: (N_Statements=1)
  9532. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9533. |3- IfExpr:
  9534. |- Condition: CallExpr:
  9535. |- Method: AccessorExpr (Mode='::')
  9536. |- Object: NameExpr: 'parse'
  9537. \- Field: lookahead_is_possibly_function
  9538. \- Arguments: (Len=1)
  9539. \0- NameExpr: 'eles'
  9540. |- Body: BlockBody: (N_Statements=1)
  9541. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9542. |4- IfExpr:
  9543. |- Condition: AccessorExpr (Mode='.')
  9544. |- Object: CallExpr:
  9545. |- Method: AccessorExpr (Mode=':')
  9546. |- Object: NameExpr: 'eles'
  9547. \- Field: get_lookahead
  9548. \- Arguments: (Len=0)
  9549. \- Field: is_token
  9550. |- Body: BlockBody: (N_Statements=1)
  9551. |0- IfExpr:
  9552. |- Condition: CallExpr:
  9553. |- Method: AccessorExpr (Mode=':')
  9554. |- Object: CallExpr:
  9555. |- Method: AccessorExpr (Mode=':')
  9556. |- Object: CallExpr:
  9557. |- Method: AccessorExpr (Mode=':')
  9558. |- Object: NameExpr: 'eles'
  9559. \- Field: get_lookahead
  9560. \- Arguments: (Len=0)
  9561. \- Field: t
  9562. \- Arguments: (Len=0)
  9563. \- Field: is_a
  9564. \- Arguments: (Len=1)
  9565. \0- LiteralExpr: type=cstr, value=T_CAST
  9566. |- Body: BlockBody: (N_Statements=1)
  9567. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9568. \5- ReturnExpr: LiteralExpr: type=int, value=3
  9569. |6- FunctionDecl:
  9570. |- Head: FunctionDeclHead: Name='CastExpr::visit' Type='void' Nargs=2
  9571. |0- CastExpr n
  9572. \1- TransformerPass p
  9573. |0- AssignmentExpr (Operator='=')
  9574. |- LHS: AccessorExpr (Mode='.')
  9575. |- Object: NameExpr: 'n'
  9576. \- Field: value
  9577. \- RHS: CallExpr:
  9578. |- Method: AccessorExpr (Mode=':')
  9579. |- Object: NameExpr: 'p'
  9580. \- Field: visit
  9581. \- Arguments: (Len=1)
  9582. \0- AccessorExpr (Mode='.')
  9583. |- Object: NameExpr: 'n'
  9584. \- Field: value
  9585. \1- ReturnExpr: <void>
  9586. \7- FunctionDecl:
  9587. |- Head: FunctionDeclHead: Name='CastExpr::impl' Type='NodeType' Nargs=0
  9588. \0- ReturnExpr: CallExpr:
  9589. |- Method: AccessorExpr (Mode=':')
  9590. |- Object: CallExpr:
  9591. |- Method: AccessorExpr (Mode=':')
  9592. |- Object: CallExpr:
  9593. |- Method: AccessorExpr (Mode=':')
  9594. |- Object: CallExpr:
  9595. |- Method: AccessorExpr (Mode=':')
  9596. |- Object: CallExpr:
  9597. |- Method: AccessorExpr (Mode=':')
  9598. |- Object: CallExpr:
  9599. |- Method: AccessorExpr (Mode=':')
  9600. |- Object: CallExpr:
  9601. |- Method: AccessorExpr (Mode='::')
  9602. |- Object: NameExpr: 'NodeType'
  9603. \- Field: new
  9604. \- Arguments: (Len=1)
  9605. \0- LiteralExpr: type=cstr, value=CastExpr
  9606. \- Field: set_printer
  9607. \- Arguments: (Len=1)
  9608. \0- CastExpr (Target='NodePrinter')
  9609. \- Value: AccessorExpr (Mode='::')
  9610. |- Object: NameExpr: 'CastExpr'
  9611. \- Field: print
  9612. \- Field: set_creator
  9613. \- Arguments: (Len=1)
  9614. \0- CastExpr (Target='NodeCreator')
  9615. \- Value: AccessorExpr (Mode='::')
  9616. |- Object: NameExpr: 'CastExpr'
  9617. \- Field: create
  9618. \- Field: set_matcher
  9619. \- Arguments: (Len=1)
  9620. \0- CastExpr (Target='NodeMatcher')
  9621. \- Value: AccessorExpr (Mode='::')
  9622. |- Object: NameExpr: 'CastExpr'
  9623. \- Field: match
  9624. \- Field: set_visitor
  9625. \- Arguments: (Len=1)
  9626. \0- CastExpr (Target='NodeVisitor')
  9627. \- Value: AccessorExpr (Mode='::')
  9628. |- Object: NameExpr: 'CastExpr'
  9629. \- Field: visit
  9630. \- Field: matches
  9631. \- Arguments: (Len=1)
  9632. \0- LiteralExpr: type=int, value=3
  9633. \- Field: addtype
  9634. \- Arguments: (Len=1)
  9635. \0- LiteralExpr: type=cstr, value=ValueExpression
  9636. |2- SepExpr (Consumed=2)
  9637. |18- SepExpr (Consumed=1)
  9638. |19- FileNode: (N_Statements=7)
  9639. |0- SepExpr (Consumed=1)
  9640. |1- TypeDecl:
  9641. |- Head: TypeDeclHead: `FunctionDeclHead` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  9642. \- Body: TypeDeclBody: (N_Statements=8)
  9643. |0- DeclExpr: 'NodeType type_'
  9644. |1- DeclExpr: 'List args'
  9645. |2- DeclExpr: 'cstr name'
  9646. |3- DeclExpr: 'cstr ret_type'
  9647. |4- FunctionDecl:
  9648. |- Head: FunctionDeclHead: Name='FunctionDeclHead::print' Type='void' Nargs=2
  9649. |0- FunctionDeclHead node
  9650. \1- int depth
  9651. |0- CallExpr:
  9652. |- Method: NameExpr: 'printf'
  9653. \- Arguments: (Len=4)
  9654. |0- LiteralExpr: type=cstr, value=FunctionDeclHead: Name='%s' Type='%s' Nargs=%i\n
  9655. |1- AccessorExpr (Mode='.')
  9656. |- Object: NameExpr: 'node'
  9657. \- Field: name
  9658. |2- AccessorExpr (Mode='.')
  9659. |- Object: NameExpr: 'node'
  9660. \- Field: ret_type
  9661. \3- AccessorExpr (Mode='.')
  9662. |- Object: AccessorExpr (Mode='.')
  9663. |- Object: NameExpr: 'node'
  9664. \- Field: args
  9665. \- Field: len
  9666. |1- AssignmentExpr (Operator='=')
  9667. |- LHS: DeclExpr: 'int i'
  9668. \- RHS: LiteralExpr: type=int, value=0
  9669. |2- WhileExpr:
  9670. |- Condition: BinOpExpr (Operator='<')
  9671. |- LHS: NameExpr: 'i'
  9672. \- RHS: AccessorExpr (Mode='.')
  9673. |- Object: AccessorExpr (Mode='.')
  9674. |- Object: NameExpr: 'node'
  9675. \- Field: args
  9676. \- Field: len
  9677. |- Body: BlockBody: (N_Statements=3)
  9678. |0- CallExpr:
  9679. |- Method: AccessorExpr (Mode='::')
  9680. |- Object: NameExpr: 'parse'
  9681. \- Field: indent
  9682. \- Arguments: (Len=1)
  9683. \0- BinOpExpr (Operator='+')
  9684. |- LHS: NameExpr: 'depth'
  9685. \- RHS: LiteralExpr: type=int, value=1
  9686. |1- IfExpr:
  9687. |- Condition: BinOpExpr (Operator='==')
  9688. |- LHS: NameExpr: 'i'
  9689. \- RHS: BinOpExpr (Operator='-')
  9690. |- LHS: AccessorExpr (Mode='.')
  9691. |- Object: AccessorExpr (Mode='.')
  9692. |- Object: NameExpr: 'node'
  9693. \- Field: args
  9694. \- Field: len
  9695. \- RHS: LiteralExpr: type=int, value=1
  9696. |- Body: BlockBody: (N_Statements=1)
  9697. |0- CallExpr:
  9698. |- Method: NameExpr: 'printf'
  9699. \- Arguments: (Len=3)
  9700. |0- LiteralExpr: type=cstr, value=\\%i- %s\n
  9701. |1- NameExpr: 'i'
  9702. \2- CallExpr:
  9703. |- Method: AccessorExpr (Mode=':')
  9704. |- Object: AccessorExpr (Mode='.')
  9705. |- Object: NameExpr: 'node'
  9706. \- Field: args
  9707. \- Field: get
  9708. \- Arguments: (Len=1)
  9709. \0- NameExpr: 'i'
  9710. \-- Runoff Clause: BlockBody: (N_Statements=1)
  9711. |0- CallExpr:
  9712. |- Method: NameExpr: 'printf'
  9713. \- Arguments: (Len=3)
  9714. |0- LiteralExpr: type=cstr, value=|%i- %s\n
  9715. |1- NameExpr: 'i'
  9716. \2- CallExpr:
  9717. |- Method: AccessorExpr (Mode=':')
  9718. |- Object: AccessorExpr (Mode='.')
  9719. |- Object: NameExpr: 'node'
  9720. \- Field: args
  9721. \- Field: get
  9722. \- Arguments: (Len=1)
  9723. \0- NameExpr: 'i'
  9724. |2- AssignmentExpr (Operator='+=')
  9725. |- LHS: NameExpr: 'i'
  9726. \- RHS: LiteralExpr: type=int, value=1
  9727. \3- ReturnExpr: <void>
  9728. |5- FunctionDecl:
  9729. |- Head: FunctionDeclHead: Name='FunctionDeclHead::create' Type='FunctionDeclHead' Nargs=1
  9730. \0- EleList eles
  9731. |0- AssignmentExpr (Operator='=')
  9732. |- LHS: DeclExpr: 'FunctionDeclHead new'
  9733. \- RHS: CastExpr (Target='FunctionDeclHead')
  9734. \- Value: CallExpr:
  9735. |- Method: NameExpr: 'malloc'
  9736. \- Arguments: (Len=1)
  9737. \0- IntrinsicExpr: '@sizeof(FunctionDeclHead)@'
  9738. |1- AssignmentExpr (Operator='=')
  9739. |- LHS: AccessorExpr (Mode='.')
  9740. |- Object: NameExpr: 'new'
  9741. \- Field: name
  9742. \- RHS: AccessorExpr (Mode='.')
  9743. |- Object: CallExpr:
  9744. |- Method: AccessorExpr (Mode=':')
  9745. |- Object: CallExpr:
  9746. |- Method: AccessorExpr (Mode=':')
  9747. |- Object: NameExpr: 'eles'
  9748. \- Field: get
  9749. \- Arguments: (Len=1)
  9750. \0- LiteralExpr: type=int, value=2
  9751. \- Field: t
  9752. \- Arguments: (Len=0)
  9753. \- Field: text
  9754. |2- AssignmentExpr (Operator='=')
  9755. |- LHS: AccessorExpr (Mode='.')
  9756. |- Object: NameExpr: 'new'
  9757. \- Field: ret_type
  9758. \- RHS: AccessorExpr (Mode='.')
  9759. |- Object: CallExpr:
  9760. |- Method: AccessorExpr (Mode=':')
  9761. |- Object: CallExpr:
  9762. |- Method: AccessorExpr (Mode=':')
  9763. |- Object: NameExpr: 'eles'
  9764. \- Field: get
  9765. \- Arguments: (Len=1)
  9766. \0- LiteralExpr: type=int, value=4
  9767. \- Field: t
  9768. \- Arguments: (Len=0)
  9769. \- Field: text
  9770. |3- AssignmentExpr (Operator='=')
  9771. |- LHS: DeclExpr: 'Node args'
  9772. \- RHS: CallExpr:
  9773. |- Method: AccessorExpr (Mode=':')
  9774. |- Object: CallExpr:
  9775. |- Method: AccessorExpr (Mode=':')
  9776. |- Object: NameExpr: 'eles'
  9777. \- Field: get
  9778. \- Arguments: (Len=1)
  9779. \0- LiteralExpr: type=int, value=1
  9780. \- Field: n
  9781. \- Arguments: (Len=0)
  9782. |4- IfExpr:
  9783. |- Condition: CallExpr:
  9784. |- Method: AccessorExpr (Mode=':')
  9785. |- Object: NameExpr: 'args'
  9786. \- Field: is_a
  9787. \- Arguments: (Len=1)
  9788. \0- LiteralExpr: type=cstr, value=ZeroArgList
  9789. |- Body: BlockBody: (N_Statements=1)
  9790. |0- AssignmentExpr (Operator='=')
  9791. |- LHS: AccessorExpr (Mode='.')
  9792. |- Object: NameExpr: 'new'
  9793. \- Field: args
  9794. \- RHS: CallExpr:
  9795. |- Method: AccessorExpr (Mode='::')
  9796. |- Object: NameExpr: 'List'
  9797. \- Field: new
  9798. \- Arguments: (Len=0)
  9799. \-- Runoff Clause: IfExpr:
  9800. |- Condition: CallExpr:
  9801. |- Method: AccessorExpr (Mode=':')
  9802. |- Object: NameExpr: 'args'
  9803. \- Field: is_a
  9804. \- Arguments: (Len=1)
  9805. \0- LiteralExpr: type=cstr, value=OneArgList
  9806. |- Body: BlockBody: (N_Statements=2)
  9807. |0- AssignmentExpr (Operator='=')
  9808. |- LHS: AccessorExpr (Mode='.')
  9809. |- Object: NameExpr: 'new'
  9810. \- Field: args
  9811. \- RHS: CallExpr:
  9812. |- Method: AccessorExpr (Mode='::')
  9813. |- Object: NameExpr: 'List'
  9814. \- Field: new
  9815. \- Arguments: (Len=0)
  9816. |1- CallExpr:
  9817. |- Method: AccessorExpr (Mode=':')
  9818. |- Object: AccessorExpr (Mode='.')
  9819. |- Object: NameExpr: 'new'
  9820. \- Field: args
  9821. \- Field: append
  9822. \- Arguments: (Len=1)
  9823. \0- AccessorExpr (Mode='.')
  9824. |- Object: GroupingExpr: CastExpr (Target='OneArgList')
  9825. \- Value: CallExpr:
  9826. |- Method: AccessorExpr (Mode=':')
  9827. |- Object: CallExpr:
  9828. |- Method: AccessorExpr (Mode=':')
  9829. |- Object: NameExpr: 'eles'
  9830. \- Field: get
  9831. \- Arguments: (Len=1)
  9832. \0- LiteralExpr: type=int, value=1
  9833. \- Field: n
  9834. \- Arguments: (Len=0)
  9835. \- Field: text
  9836. \-- Runoff Clause: BlockBody: (N_Statements=1)
  9837. |0- AssignmentExpr (Operator='=')
  9838. |- LHS: AccessorExpr (Mode='.')
  9839. |- Object: NameExpr: 'new'
  9840. \- Field: args
  9841. \- RHS: AccessorExpr (Mode='.')
  9842. |- Object: GroupingExpr: CastExpr (Target='MultiArgList')
  9843. \- Value: CallExpr:
  9844. |- Method: AccessorExpr (Mode=':')
  9845. |- Object: CallExpr:
  9846. |- Method: AccessorExpr (Mode=':')
  9847. |- Object: NameExpr: 'eles'
  9848. \- Field: get
  9849. \- Arguments: (Len=1)
  9850. \0- LiteralExpr: type=int, value=1
  9851. \- Field: n
  9852. \- Arguments: (Len=0)
  9853. \- Field: args
  9854. \5- ReturnExpr: NameExpr: 'new'
  9855. |6- FunctionDecl:
  9856. |- Head: FunctionDeclHead: Name='FunctionDeclHead::match' Type='int' Nargs=1
  9857. \0- EleList eles
  9858. |0- IfExpr:
  9859. |- Condition: CallExpr:
  9860. |- Method: AccessorExpr (Mode=':')
  9861. |- Object: CallExpr:
  9862. |- Method: AccessorExpr (Mode=':')
  9863. |- Object: CallExpr:
  9864. |- Method: AccessorExpr (Mode=':')
  9865. |- Object: CallExpr:
  9866. |- Method: AccessorExpr (Mode=':')
  9867. |- Object: CallExpr:
  9868. |- Method: AccessorExpr (Mode=':')
  9869. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  9870. \- Value: AccessorExpr (Mode='.')
  9871. |- Object: CallExpr:
  9872. |- Method: AccessorExpr (Mode=':')
  9873. |- Object: NameExpr: 'eles'
  9874. \- Field: get
  9875. \- Arguments: (Len=1)
  9876. \0- LiteralExpr: type=int, value=0
  9877. \- Field: is_token
  9878. \- Field: or
  9879. \- Arguments: (Len=1)
  9880. \0- AccessorExpr (Mode='.')
  9881. |- Object: CallExpr:
  9882. |- Method: AccessorExpr (Mode=':')
  9883. |- Object: NameExpr: 'eles'
  9884. \- Field: get
  9885. \- Arguments: (Len=1)
  9886. \0- LiteralExpr: type=int, value=1
  9887. \- Field: is_token
  9888. \- Field: or
  9889. \- Arguments: (Len=1)
  9890. \0- UnOpExpr (Operator='-')
  9891. \- Value: AccessorExpr (Mode='.')
  9892. |- Object: CallExpr:
  9893. |- Method: AccessorExpr (Mode=':')
  9894. |- Object: NameExpr: 'eles'
  9895. \- Field: get
  9896. \- Arguments: (Len=1)
  9897. \0- LiteralExpr: type=int, value=2
  9898. \- Field: is_token
  9899. \- Field: or
  9900. \- Arguments: (Len=1)
  9901. \0- UnOpExpr (Operator='-')
  9902. \- Value: AccessorExpr (Mode='.')
  9903. |- Object: CallExpr:
  9904. |- Method: AccessorExpr (Mode=':')
  9905. |- Object: NameExpr: 'eles'
  9906. \- Field: get
  9907. \- Arguments: (Len=1)
  9908. \0- LiteralExpr: type=int, value=3
  9909. \- Field: is_token
  9910. \- Field: or
  9911. \- Arguments: (Len=1)
  9912. \0- UnOpExpr (Operator='-')
  9913. \- Value: AccessorExpr (Mode='.')
  9914. |- Object: CallExpr:
  9915. |- Method: AccessorExpr (Mode=':')
  9916. |- Object: NameExpr: 'eles'
  9917. \- Field: get
  9918. \- Arguments: (Len=1)
  9919. \0- LiteralExpr: type=int, value=4
  9920. \- Field: is_token
  9921. \- Field: or
  9922. \- Arguments: (Len=1)
  9923. \0- UnOpExpr (Operator='-')
  9924. \- Value: AccessorExpr (Mode='.')
  9925. |- Object: CallExpr:
  9926. |- Method: AccessorExpr (Mode=':')
  9927. |- Object: NameExpr: 'eles'
  9928. \- Field: get
  9929. \- Arguments: (Len=1)
  9930. \0- LiteralExpr: type=int, value=5
  9931. \- Field: is_token
  9932. |- Body: BlockBody: (N_Statements=1)
  9933. |0- ReturnExpr: LiteralExpr: type=int, value=0
  9934. |1- IfExpr:
  9935. |- Condition: CallExpr:
  9936. |- Method: AccessorExpr (Mode=':')
  9937. |- Object: CallExpr:
  9938. |- Method: AccessorExpr (Mode=':')
  9939. |- Object: CallExpr:
  9940. |- Method: AccessorExpr (Mode=':')
  9941. |- Object: CallExpr:
  9942. |- Method: AccessorExpr (Mode=':')
  9943. |- Object: CallExpr:
  9944. |- Method: AccessorExpr (Mode=':')
  9945. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  9946. \- Value: CallExpr:
  9947. |- Method: AccessorExpr (Mode=':')
  9948. |- Object: CallExpr:
  9949. |- Method: AccessorExpr (Mode=':')
  9950. |- Object: CallExpr:
  9951. |- Method: AccessorExpr (Mode=':')
  9952. |- Object: NameExpr: 'eles'
  9953. \- Field: get
  9954. \- Arguments: (Len=1)
  9955. \0- LiteralExpr: type=int, value=0
  9956. \- Field: t
  9957. \- Arguments: (Len=0)
  9958. \- Field: is_a
  9959. \- Arguments: (Len=1)
  9960. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL
  9961. \- Field: or
  9962. \- Arguments: (Len=1)
  9963. \0- UnOpExpr (Operator='-')
  9964. \- Value: CallExpr:
  9965. |- Method: AccessorExpr (Mode=':')
  9966. |- Object: CallExpr:
  9967. |- Method: AccessorExpr (Mode=':')
  9968. |- Object: CallExpr:
  9969. |- Method: AccessorExpr (Mode=':')
  9970. |- Object: NameExpr: 'eles'
  9971. \- Field: get
  9972. \- Arguments: (Len=1)
  9973. \0- LiteralExpr: type=int, value=1
  9974. \- Field: n
  9975. \- Arguments: (Len=0)
  9976. \- Field: is_a
  9977. \- Arguments: (Len=1)
  9978. \0- LiteralExpr: type=cstr, value=ArgList
  9979. \- Field: or
  9980. \- Arguments: (Len=1)
  9981. \0- UnOpExpr (Operator='-')
  9982. \- Value: CallExpr:
  9983. |- Method: AccessorExpr (Mode=':')
  9984. |- Object: CallExpr:
  9985. |- Method: AccessorExpr (Mode=':')
  9986. |- Object: CallExpr:
  9987. |- Method: AccessorExpr (Mode=':')
  9988. |- Object: NameExpr: 'eles'
  9989. \- Field: get
  9990. \- Arguments: (Len=1)
  9991. \0- LiteralExpr: type=int, value=2
  9992. \- Field: t
  9993. \- Arguments: (Len=0)
  9994. \- Field: is_a
  9995. \- Arguments: (Len=1)
  9996. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_NAME
  9997. \- Field: or
  9998. \- Arguments: (Len=1)
  9999. \0- UnOpExpr (Operator='-')
  10000. \- Value: CallExpr:
  10001. |- Method: AccessorExpr (Mode=':')
  10002. |- Object: CallExpr:
  10003. |- Method: AccessorExpr (Mode=':')
  10004. |- Object: CallExpr:
  10005. |- Method: AccessorExpr (Mode=':')
  10006. |- Object: NameExpr: 'eles'
  10007. \- Field: get
  10008. \- Arguments: (Len=1)
  10009. \0- LiteralExpr: type=int, value=3
  10010. \- Field: t
  10011. \- Arguments: (Len=0)
  10012. \- Field: is_a
  10013. \- Arguments: (Len=1)
  10014. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_RETURN
  10015. \- Field: or
  10016. \- Arguments: (Len=1)
  10017. \0- UnOpExpr (Operator='-')
  10018. \- Value: CallExpr:
  10019. |- Method: AccessorExpr (Mode=':')
  10020. |- Object: CallExpr:
  10021. |- Method: AccessorExpr (Mode=':')
  10022. |- Object: CallExpr:
  10023. |- Method: AccessorExpr (Mode=':')
  10024. |- Object: NameExpr: 'eles'
  10025. \- Field: get
  10026. \- Arguments: (Len=1)
  10027. \0- LiteralExpr: type=int, value=4
  10028. \- Field: t
  10029. \- Arguments: (Len=0)
  10030. \- Field: is_a
  10031. \- Arguments: (Len=1)
  10032. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_RETURN_TY
  10033. \- Field: or
  10034. \- Arguments: (Len=1)
  10035. \0- UnOpExpr (Operator='-')
  10036. \- Value: CallExpr:
  10037. |- Method: AccessorExpr (Mode=':')
  10038. |- Object: CallExpr:
  10039. |- Method: AccessorExpr (Mode=':')
  10040. |- Object: CallExpr:
  10041. |- Method: AccessorExpr (Mode=':')
  10042. |- Object: NameExpr: 'eles'
  10043. \- Field: get
  10044. \- Arguments: (Len=1)
  10045. \0- LiteralExpr: type=int, value=5
  10046. \- Field: t
  10047. \- Arguments: (Len=0)
  10048. \- Field: is_a
  10049. \- Arguments: (Len=1)
  10050. \0- LiteralExpr: type=cstr, value=T_FUNCTIONDECL_DOES
  10051. |- Body: BlockBody: (N_Statements=1)
  10052. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10053. \2- ReturnExpr: LiteralExpr: type=int, value=6
  10054. \7- FunctionDecl:
  10055. |- Head: FunctionDeclHead: Name='FunctionDeclHead::impl' Type='NodeType' Nargs=0
  10056. \0- ReturnExpr: CallExpr:
  10057. |- Method: AccessorExpr (Mode=':')
  10058. |- Object: CallExpr:
  10059. |- Method: AccessorExpr (Mode=':')
  10060. |- Object: CallExpr:
  10061. |- Method: AccessorExpr (Mode=':')
  10062. |- Object: CallExpr:
  10063. |- Method: AccessorExpr (Mode=':')
  10064. |- Object: CallExpr:
  10065. |- Method: AccessorExpr (Mode='::')
  10066. |- Object: NameExpr: 'NodeType'
  10067. \- Field: new
  10068. \- Arguments: (Len=1)
  10069. \0- LiteralExpr: type=cstr, value=FunctionDeclHead
  10070. \- Field: set_printer
  10071. \- Arguments: (Len=1)
  10072. \0- CastExpr (Target='NodePrinter')
  10073. \- Value: AccessorExpr (Mode='::')
  10074. |- Object: NameExpr: 'FunctionDeclHead'
  10075. \- Field: print
  10076. \- Field: set_creator
  10077. \- Arguments: (Len=1)
  10078. \0- CastExpr (Target='NodeCreator')
  10079. \- Value: AccessorExpr (Mode='::')
  10080. |- Object: NameExpr: 'FunctionDeclHead'
  10081. \- Field: create
  10082. \- Field: set_matcher
  10083. \- Arguments: (Len=1)
  10084. \0- CastExpr (Target='NodeMatcher')
  10085. \- Value: AccessorExpr (Mode='::')
  10086. |- Object: NameExpr: 'FunctionDeclHead'
  10087. \- Field: match
  10088. \- Field: matches
  10089. \- Arguments: (Len=1)
  10090. \0- LiteralExpr: type=int, value=6
  10091. |2- SepExpr (Consumed=2)
  10092. |3- TypeDecl:
  10093. |- Head: TypeDeclHead: `FunctionBody` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  10094. \- Body: TypeDeclBody: (N_Statements=6)
  10095. |0- DeclExpr: 'NodeType type_'
  10096. |1- DeclExpr: 'List statements'
  10097. |2- FunctionDecl:
  10098. |- Head: FunctionDeclHead: Name='FunctionBody::print' Type='void' Nargs=2
  10099. |0- FunctionBody node
  10100. \1- int depth
  10101. |0- CallExpr:
  10102. |- Method: NameExpr: 'printf'
  10103. \- Arguments: (Len=2)
  10104. |0- LiteralExpr: type=cstr, value=FunctionBody: (N_Statements=%i)\n
  10105. \1- AccessorExpr (Mode='.')
  10106. |- Object: AccessorExpr (Mode='.')
  10107. |- Object: NameExpr: 'node'
  10108. \- Field: statements
  10109. \- Field: len
  10110. |1- AssignmentExpr (Operator='=')
  10111. |- LHS: DeclExpr: 'int i'
  10112. \- RHS: LiteralExpr: type=int, value=0
  10113. |2- WhileExpr:
  10114. |- Condition: BinOpExpr (Operator='<')
  10115. |- LHS: NameExpr: 'i'
  10116. \- RHS: AccessorExpr (Mode='.')
  10117. |- Object: AccessorExpr (Mode='.')
  10118. |- Object: NameExpr: 'node'
  10119. \- Field: statements
  10120. \- Field: len
  10121. |- Body: BlockBody: (N_Statements=3)
  10122. |0- CallExpr:
  10123. |- Method: AccessorExpr (Mode='::')
  10124. |- Object: NameExpr: 'parse'
  10125. \- Field: indent
  10126. \- Arguments: (Len=1)
  10127. \0- BinOpExpr (Operator='+')
  10128. |- LHS: NameExpr: 'depth'
  10129. \- RHS: LiteralExpr: type=int, value=1
  10130. |1- IfExpr:
  10131. |- Condition: BinOpExpr (Operator='==')
  10132. |- LHS: NameExpr: 'i'
  10133. \- RHS: BinOpExpr (Operator='-')
  10134. |- LHS: AccessorExpr (Mode='.')
  10135. |- Object: AccessorExpr (Mode='.')
  10136. |- Object: NameExpr: 'node'
  10137. \- Field: statements
  10138. \- Field: len
  10139. \- RHS: LiteralExpr: type=int, value=1
  10140. |- Body: BlockBody: (N_Statements=2)
  10141. |0- CallExpr:
  10142. |- Method: NameExpr: 'printf'
  10143. \- Arguments: (Len=2)
  10144. |0- LiteralExpr: type=cstr, value=\\%i-
  10145. \1- NameExpr: 'i'
  10146. |1- CallExpr:
  10147. |- Method: AccessorExpr (Mode=':')
  10148. |- Object: CallExpr:
  10149. |- Method: AccessorExpr (Mode=':')
  10150. |- Object: AccessorExpr (Mode='.')
  10151. |- Object: NameExpr: 'node'
  10152. \- Field: statements
  10153. \- Field: get_Node
  10154. \- Arguments: (Len=1)
  10155. \0- NameExpr: 'i'
  10156. \- Field: print
  10157. \- Arguments: (Len=1)
  10158. \0- BinOpExpr (Operator='+')
  10159. |- LHS: NameExpr: 'depth'
  10160. \- RHS: LiteralExpr: type=int, value=2
  10161. \-- Runoff Clause: BlockBody: (N_Statements=2)
  10162. |0- CallExpr:
  10163. |- Method: NameExpr: 'printf'
  10164. \- Arguments: (Len=2)
  10165. |0- LiteralExpr: type=cstr, value=|%i-
  10166. \1- NameExpr: 'i'
  10167. |1- CallExpr:
  10168. |- Method: AccessorExpr (Mode=':')
  10169. |- Object: CallExpr:
  10170. |- Method: AccessorExpr (Mode=':')
  10171. |- Object: AccessorExpr (Mode='.')
  10172. |- Object: NameExpr: 'node'
  10173. \- Field: statements
  10174. \- Field: get_Node
  10175. \- Arguments: (Len=1)
  10176. \0- NameExpr: 'i'
  10177. \- Field: print
  10178. \- Arguments: (Len=1)
  10179. \0- BinOpExpr (Operator='+')
  10180. |- LHS: NameExpr: 'depth'
  10181. \- RHS: LiteralExpr: type=int, value=2
  10182. |2- AssignmentExpr (Operator='+=')
  10183. |- LHS: NameExpr: 'i'
  10184. \- RHS: LiteralExpr: type=int, value=1
  10185. \3- ReturnExpr: <void>
  10186. |3- FunctionDecl:
  10187. |- Head: FunctionDeclHead: Name='FunctionBody::create' Type='FunctionBody' Nargs=1
  10188. \0- EleList eles
  10189. |0- AssignmentExpr (Operator='=')
  10190. |- LHS: DeclExpr: 'FunctionBody new'
  10191. \- RHS: CastExpr (Target='FunctionBody')
  10192. \- Value: CallExpr:
  10193. |- Method: NameExpr: 'malloc'
  10194. \- Arguments: (Len=1)
  10195. \0- IntrinsicExpr: '@sizeof(FunctionBody)@'
  10196. |1- IfExpr:
  10197. |- Condition: BinOpExpr (Operator='>')
  10198. |- LHS: CallExpr:
  10199. |- Method: AccessorExpr (Mode=':')
  10200. |- Object: NameExpr: 'eles'
  10201. \- Field: in_slice
  10202. \- Arguments: (Len=0)
  10203. \- RHS: LiteralExpr: type=int, value=2
  10204. |- Body: BlockBody: (N_Statements=1)
  10205. |0- IfExpr:
  10206. |- Condition: CallExpr:
  10207. |- Method: AccessorExpr (Mode=':')
  10208. |- Object: CallExpr:
  10209. |- Method: AccessorExpr (Mode=':')
  10210. |- Object: CallExpr:
  10211. |- Method: AccessorExpr (Mode=':')
  10212. |- Object: NameExpr: 'eles'
  10213. \- Field: get
  10214. \- Arguments: (Len=1)
  10215. \0- LiteralExpr: type=int, value=1
  10216. \- Field: n
  10217. \- Arguments: (Len=0)
  10218. \- Field: is_a
  10219. \- Arguments: (Len=1)
  10220. \0- LiteralExpr: type=cstr, value=Expression
  10221. |- Body: BlockBody: (N_Statements=1)
  10222. |0- IfExpr:
  10223. |- Condition: UnOpExpr (Operator='-')
  10224. \- Value: AccessorExpr (Mode='.')
  10225. |- Object: CallExpr:
  10226. |- Method: AccessorExpr (Mode=':')
  10227. |- Object: NameExpr: 'eles'
  10228. \- Field: get
  10229. \- Arguments: (Len=1)
  10230. \0- LiteralExpr: type=int, value=2
  10231. \- Field: is_token
  10232. |- Body: BlockBody: (N_Statements=1)
  10233. |0- IfExpr:
  10234. |- Condition: CallExpr:
  10235. |- Method: AccessorExpr (Mode=':')
  10236. |- Object: CallExpr:
  10237. |- Method: AccessorExpr (Mode=':')
  10238. |- Object: CallExpr:
  10239. |- Method: AccessorExpr (Mode=':')
  10240. |- Object: NameExpr: 'eles'
  10241. \- Field: get
  10242. \- Arguments: (Len=1)
  10243. \0- LiteralExpr: type=int, value=2
  10244. \- Field: n
  10245. \- Arguments: (Len=0)
  10246. \- Field: is_a
  10247. \- Arguments: (Len=1)
  10248. \0- LiteralExpr: type=cstr, value=FunctionBody
  10249. |- Body: BlockBody: (N_Statements=2)
  10250. |0- AssignmentExpr (Operator='=')
  10251. |- LHS: AccessorExpr (Mode='.')
  10252. |- Object: NameExpr: 'new'
  10253. \- Field: statements
  10254. \- RHS: AccessorExpr (Mode='.')
  10255. |- Object: GroupingExpr: CastExpr (Target='FunctionBody')
  10256. \- Value: CallExpr:
  10257. |- Method: AccessorExpr (Mode=':')
  10258. |- Object: CallExpr:
  10259. |- Method: AccessorExpr (Mode=':')
  10260. |- Object: NameExpr: 'eles'
  10261. \- Field: get
  10262. \- Arguments: (Len=1)
  10263. \0- LiteralExpr: type=int, value=2
  10264. \- Field: n
  10265. \- Arguments: (Len=0)
  10266. \- Field: statements
  10267. |1- CallExpr:
  10268. |- Method: AccessorExpr (Mode=':')
  10269. |- Object: AccessorExpr (Mode='.')
  10270. |- Object: NameExpr: 'new'
  10271. \- Field: statements
  10272. \- Field: insert
  10273. \- Arguments: (Len=2)
  10274. |0- LiteralExpr: type=int, value=0
  10275. \1- CastExpr (Target='ptr')
  10276. \- Value: CallExpr:
  10277. |- Method: AccessorExpr (Mode=':')
  10278. |- Object: CallExpr:
  10279. |- Method: AccessorExpr (Mode=':')
  10280. |- Object: NameExpr: 'eles'
  10281. \- Field: get
  10282. \- Arguments: (Len=1)
  10283. \0- LiteralExpr: type=int, value=1
  10284. \- Field: n
  10285. \- Arguments: (Len=0)
  10286. |2- IfExpr:
  10287. |- Condition: CallExpr:
  10288. |- Method: AccessorExpr (Mode=':')
  10289. |- Object: CallExpr:
  10290. |- Method: AccessorExpr (Mode=':')
  10291. |- Object: CallExpr:
  10292. |- Method: AccessorExpr (Mode=':')
  10293. |- Object: NameExpr: 'eles'
  10294. \- Field: get
  10295. \- Arguments: (Len=1)
  10296. \0- LiteralExpr: type=int, value=1
  10297. \- Field: n
  10298. \- Arguments: (Len=0)
  10299. \- Field: is_a
  10300. \- Arguments: (Len=1)
  10301. \0- LiteralExpr: type=cstr, value=ReturnExpr
  10302. |- Body: BlockBody: (N_Statements=2)
  10303. |0- AssignmentExpr (Operator='=')
  10304. |- LHS: AccessorExpr (Mode='.')
  10305. |- Object: NameExpr: 'new'
  10306. \- Field: statements
  10307. \- RHS: CallExpr:
  10308. |- Method: AccessorExpr (Mode='::')
  10309. |- Object: NameExpr: 'List'
  10310. \- Field: new
  10311. \- Arguments: (Len=0)
  10312. |1- CallExpr:
  10313. |- Method: AccessorExpr (Mode=':')
  10314. |- Object: AccessorExpr (Mode='.')
  10315. |- Object: NameExpr: 'new'
  10316. \- Field: statements
  10317. \- Field: append_Node
  10318. \- Arguments: (Len=1)
  10319. \0- CallExpr:
  10320. |- Method: AccessorExpr (Mode=':')
  10321. |- Object: CallExpr:
  10322. |- Method: AccessorExpr (Mode=':')
  10323. |- Object: NameExpr: 'eles'
  10324. \- Field: get
  10325. \- Arguments: (Len=1)
  10326. \0- LiteralExpr: type=int, value=1
  10327. \- Field: n
  10328. \- Arguments: (Len=0)
  10329. \3- ReturnExpr: NameExpr: 'new'
  10330. |4- FunctionDecl:
  10331. |- Head: FunctionDeclHead: Name='FunctionBody::match' Type='int' Nargs=1
  10332. \0- EleList eles
  10333. |0- IfExpr:
  10334. |- Condition: GroupingExpr: AccessorExpr (Mode='.')
  10335. |- Object: CallExpr:
  10336. |- Method: AccessorExpr (Mode=':')
  10337. |- Object: NameExpr: 'eles'
  10338. \- Field: get
  10339. \- Arguments: (Len=1)
  10340. \0- LiteralExpr: type=int, value=0
  10341. \- Field: is_token
  10342. |- Body: BlockBody: (N_Statements=1)
  10343. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10344. |1- IfExpr:
  10345. |- Condition: UnOpExpr (Operator='-')
  10346. \- Value: CallExpr:
  10347. |- Method: AccessorExpr (Mode=':')
  10348. |- Object: CallExpr:
  10349. |- Method: AccessorExpr (Mode=':')
  10350. |- Object: CallExpr:
  10351. |- Method: AccessorExpr (Mode=':')
  10352. |- Object: NameExpr: 'eles'
  10353. \- Field: get
  10354. \- Arguments: (Len=1)
  10355. \0- LiteralExpr: type=int, value=0
  10356. \- Field: n
  10357. \- Arguments: (Len=0)
  10358. \- Field: is_a
  10359. \- Arguments: (Len=1)
  10360. \0- LiteralExpr: type=cstr, value=SepExpr
  10361. |- Body: BlockBody: (N_Statements=1)
  10362. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10363. |2- IfExpr:
  10364. |- Condition: AccessorExpr (Mode='.')
  10365. |- Object: CallExpr:
  10366. |- Method: AccessorExpr (Mode=':')
  10367. |- Object: NameExpr: 'eles'
  10368. \- Field: get
  10369. \- Arguments: (Len=1)
  10370. \0- LiteralExpr: type=int, value=1
  10371. \- Field: is_token
  10372. |- Body: BlockBody: (N_Statements=1)
  10373. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10374. |3- IfExpr:
  10375. |- Condition: BinOpExpr (Operator='>')
  10376. |- LHS: CallExpr:
  10377. |- Method: AccessorExpr (Mode=':')
  10378. |- Object: NameExpr: 'eles'
  10379. \- Field: in_slice
  10380. \- Arguments: (Len=0)
  10381. \- RHS: LiteralExpr: type=int, value=2
  10382. |- Body: BlockBody: (N_Statements=1)
  10383. |0- IfExpr:
  10384. |- Condition: CallExpr:
  10385. |- Method: AccessorExpr (Mode=':')
  10386. |- Object: CallExpr:
  10387. |- Method: AccessorExpr (Mode=':')
  10388. |- Object: CallExpr:
  10389. |- Method: AccessorExpr (Mode=':')
  10390. |- Object: NameExpr: 'eles'
  10391. \- Field: get
  10392. \- Arguments: (Len=1)
  10393. \0- LiteralExpr: type=int, value=1
  10394. \- Field: n
  10395. \- Arguments: (Len=0)
  10396. \- Field: is_a
  10397. \- Arguments: (Len=1)
  10398. \0- LiteralExpr: type=cstr, value=Expression
  10399. |- Body: BlockBody: (N_Statements=1)
  10400. |0- IfExpr:
  10401. |- Condition: UnOpExpr (Operator='-')
  10402. \- Value: AccessorExpr (Mode='.')
  10403. |- Object: CallExpr:
  10404. |- Method: AccessorExpr (Mode=':')
  10405. |- Object: NameExpr: 'eles'
  10406. \- Field: get
  10407. \- Arguments: (Len=1)
  10408. \0- LiteralExpr: type=int, value=2
  10409. \- Field: is_token
  10410. |- Body: BlockBody: (N_Statements=1)
  10411. |0- IfExpr:
  10412. |- Condition: CallExpr:
  10413. |- Method: AccessorExpr (Mode=':')
  10414. |- Object: CallExpr:
  10415. |- Method: AccessorExpr (Mode=':')
  10416. |- Object: CallExpr:
  10417. |- Method: AccessorExpr (Mode=':')
  10418. |- Object: NameExpr: 'eles'
  10419. \- Field: get
  10420. \- Arguments: (Len=1)
  10421. \0- LiteralExpr: type=int, value=2
  10422. \- Field: n
  10423. \- Arguments: (Len=0)
  10424. \- Field: is_a
  10425. \- Arguments: (Len=1)
  10426. \0- LiteralExpr: type=cstr, value=FunctionBody
  10427. |- Body: BlockBody: (N_Statements=2)
  10428. |0- IfExpr:
  10429. |- Condition: CallExpr:
  10430. |- Method: AccessorExpr (Mode=':')
  10431. |- Object: CallExpr:
  10432. |- Method: AccessorExpr (Mode=':')
  10433. |- Object: CallExpr:
  10434. |- Method: AccessorExpr (Mode=':')
  10435. |- Object: NameExpr: 'eles'
  10436. \- Field: get
  10437. \- Arguments: (Len=1)
  10438. \0- LiteralExpr: type=int, value=1
  10439. \- Field: n
  10440. \- Arguments: (Len=0)
  10441. \- Field: is_a
  10442. \- Arguments: (Len=1)
  10443. \0- LiteralExpr: type=cstr, value=IfExpr
  10444. |- Body: BlockBody: (N_Statements=1)
  10445. |0- IfExpr:
  10446. |- Condition: AccessorExpr (Mode='.')
  10447. |- Object: GroupingExpr: CastExpr (Target='IfExpr')
  10448. \- Value: CallExpr:
  10449. |- Method: AccessorExpr (Mode=':')
  10450. |- Object: CallExpr:
  10451. |- Method: AccessorExpr (Mode=':')
  10452. |- Object: NameExpr: 'eles'
  10453. \- Field: get
  10454. \- Arguments: (Len=1)
  10455. \0- LiteralExpr: type=int, value=1
  10456. \- Field: n
  10457. \- Arguments: (Len=0)
  10458. \- Field: is_elif
  10459. |- Body: BlockBody: (N_Statements=1)
  10460. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10461. |1- ReturnExpr: LiteralExpr: type=int, value=3
  10462. |4- IfExpr:
  10463. |- Condition: CallExpr:
  10464. |- Method: AccessorExpr (Mode=':')
  10465. |- Object: CallExpr:
  10466. |- Method: AccessorExpr (Mode=':')
  10467. |- Object: CallExpr:
  10468. |- Method: AccessorExpr (Mode=':')
  10469. |- Object: NameExpr: 'eles'
  10470. \- Field: get
  10471. \- Arguments: (Len=1)
  10472. \0- LiteralExpr: type=int, value=1
  10473. \- Field: n
  10474. \- Arguments: (Len=0)
  10475. \- Field: is_a
  10476. \- Arguments: (Len=1)
  10477. \0- LiteralExpr: type=cstr, value=ReturnExpr
  10478. |- Body: BlockBody: (N_Statements=4)
  10479. |0- AssignmentExpr (Operator='=')
  10480. |- LHS: DeclExpr: 'int i'
  10481. \- RHS: LiteralExpr: type=int, value=0
  10482. |1- DeclExpr: 'Element e'
  10483. |2- WhileExpr:
  10484. |- Condition: BinOpExpr (Operator='<')
  10485. |- LHS: NameExpr: 'i'
  10486. \- RHS: CallExpr:
  10487. |- Method: AccessorExpr (Mode=':')
  10488. |- Object: NameExpr: 'eles'
  10489. \- Field: in_slice
  10490. \- Arguments: (Len=0)
  10491. |- Body: BlockBody: (N_Statements=3)
  10492. |0- AssignmentExpr (Operator='=')
  10493. |- LHS: NameExpr: 'e'
  10494. \- RHS: CallExpr:
  10495. |- Method: AccessorExpr (Mode=':')
  10496. |- Object: NameExpr: 'eles'
  10497. \- Field: get
  10498. \- Arguments: (Len=1)
  10499. \0- NameExpr: 'i'
  10500. |1- IfExpr:
  10501. |- Condition: UnOpExpr (Operator='-')
  10502. \- Value: AccessorExpr (Mode='.')
  10503. |- Object: NameExpr: 'e'
  10504. \- Field: is_token
  10505. |- Body: BlockBody: (N_Statements=1)
  10506. |0- IfExpr:
  10507. |- Condition: CallExpr:
  10508. |- Method: AccessorExpr (Mode=':')
  10509. |- Object: CallExpr:
  10510. |- Method: AccessorExpr (Mode=':')
  10511. |- Object: NameExpr: 'e'
  10512. \- Field: n
  10513. \- Arguments: (Len=0)
  10514. \- Field: is_a
  10515. \- Arguments: (Len=1)
  10516. \0- LiteralExpr: type=cstr, value=FunctionBody
  10517. |- Body: BlockBody: (N_Statements=1)
  10518. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10519. |2- AssignmentExpr (Operator='+=')
  10520. |- LHS: NameExpr: 'i'
  10521. \- RHS: LiteralExpr: type=int, value=1
  10522. |3- ReturnExpr: LiteralExpr: type=int, value=2
  10523. \5- ReturnExpr: LiteralExpr: type=int, value=0
  10524. \5- FunctionDecl:
  10525. |- Head: FunctionDeclHead: Name='FunctionBody::impl' Type='NodeType' Nargs=0
  10526. \0- ReturnExpr: CallExpr:
  10527. |- Method: AccessorExpr (Mode=':')
  10528. |- Object: CallExpr:
  10529. |- Method: AccessorExpr (Mode=':')
  10530. |- Object: CallExpr:
  10531. |- Method: AccessorExpr (Mode=':')
  10532. |- Object: CallExpr:
  10533. |- Method: AccessorExpr (Mode=':')
  10534. |- Object: CallExpr:
  10535. |- Method: AccessorExpr (Mode='::')
  10536. |- Object: NameExpr: 'NodeType'
  10537. \- Field: new
  10538. \- Arguments: (Len=1)
  10539. \0- LiteralExpr: type=cstr, value=FunctionBody
  10540. \- Field: set_printer
  10541. \- Arguments: (Len=1)
  10542. \0- CastExpr (Target='NodePrinter')
  10543. \- Value: AccessorExpr (Mode='::')
  10544. |- Object: NameExpr: 'FunctionBody'
  10545. \- Field: print
  10546. \- Field: set_creator
  10547. \- Arguments: (Len=1)
  10548. \0- CastExpr (Target='NodeCreator')
  10549. \- Value: AccessorExpr (Mode='::')
  10550. |- Object: NameExpr: 'FunctionBody'
  10551. \- Field: create
  10552. \- Field: set_matcher
  10553. \- Arguments: (Len=1)
  10554. \0- CastExpr (Target='NodeMatcher')
  10555. \- Value: AccessorExpr (Mode='::')
  10556. |- Object: NameExpr: 'FunctionBody'
  10557. \- Field: match
  10558. \- Field: matches
  10559. \- Arguments: (Len=1)
  10560. \0- LiteralExpr: type=int, value=2
  10561. |4- SepExpr (Consumed=2)
  10562. |5- TypeDecl:
  10563. |- Head: TypeDeclHead: `FunctionDecl` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  10564. \- Body: TypeDeclBody: (N_Statements=8)
  10565. |0- DeclExpr: 'NodeType type_'
  10566. |1- DeclExpr: 'FunctionDeclHead head'
  10567. |2- DeclExpr: 'List body'
  10568. |3- FunctionDecl:
  10569. |- Head: FunctionDeclHead: Name='FunctionDecl::print' Type='void' Nargs=2
  10570. |0- FunctionDecl node
  10571. \1- int depth
  10572. |0- CallExpr:
  10573. |- Method: NameExpr: 'printf'
  10574. \- Arguments: (Len=1)
  10575. \0- LiteralExpr: type=cstr, value=FunctionDecl:\n
  10576. |1- CallExpr:
  10577. |- Method: AccessorExpr (Mode='::')
  10578. |- Object: NameExpr: 'parse'
  10579. \- Field: indent
  10580. \- Arguments: (Len=1)
  10581. \0- BinOpExpr (Operator='+')
  10582. |- LHS: NameExpr: 'depth'
  10583. \- RHS: LiteralExpr: type=int, value=1
  10584. |2- CallExpr:
  10585. |- Method: NameExpr: 'printf'
  10586. \- Arguments: (Len=1)
  10587. \0- LiteralExpr: type=cstr, value=|- Head:
  10588. |3- CallExpr:
  10589. |- Method: AccessorExpr (Mode=':')
  10590. |- Object: GroupingExpr: CastExpr (Target='Node')
  10591. \- Value: AccessorExpr (Mode='.')
  10592. |- Object: NameExpr: 'node'
  10593. \- Field: head
  10594. \- Field: print
  10595. \- Arguments: (Len=1)
  10596. \0- BinOpExpr (Operator='+')
  10597. |- LHS: NameExpr: 'depth'
  10598. \- RHS: LiteralExpr: type=int, value=1
  10599. |4- AssignmentExpr (Operator='=')
  10600. |- LHS: DeclExpr: 'int i'
  10601. \- RHS: LiteralExpr: type=int, value=0
  10602. |5- WhileExpr:
  10603. |- Condition: BinOpExpr (Operator='<')
  10604. |- LHS: NameExpr: 'i'
  10605. \- RHS: AccessorExpr (Mode='.')
  10606. |- Object: AccessorExpr (Mode='.')
  10607. |- Object: NameExpr: 'node'
  10608. \- Field: body
  10609. \- Field: len
  10610. |- Body: BlockBody: (N_Statements=3)
  10611. |0- CallExpr:
  10612. |- Method: AccessorExpr (Mode='::')
  10613. |- Object: NameExpr: 'parse'
  10614. \- Field: indent
  10615. \- Arguments: (Len=1)
  10616. \0- BinOpExpr (Operator='+')
  10617. |- LHS: NameExpr: 'depth'
  10618. \- RHS: LiteralExpr: type=int, value=1
  10619. |1- IfExpr:
  10620. |- Condition: BinOpExpr (Operator='==')
  10621. |- LHS: NameExpr: 'i'
  10622. \- RHS: BinOpExpr (Operator='-')
  10623. |- LHS: AccessorExpr (Mode='.')
  10624. |- Object: AccessorExpr (Mode='.')
  10625. |- Object: NameExpr: 'node'
  10626. \- Field: body
  10627. \- Field: len
  10628. \- RHS: LiteralExpr: type=int, value=1
  10629. |- Body: BlockBody: (N_Statements=2)
  10630. |0- CallExpr:
  10631. |- Method: NameExpr: 'printf'
  10632. \- Arguments: (Len=2)
  10633. |0- LiteralExpr: type=cstr, value=\\%i-
  10634. \1- NameExpr: 'i'
  10635. |1- CallExpr:
  10636. |- Method: AccessorExpr (Mode=':')
  10637. |- Object: CallExpr:
  10638. |- Method: AccessorExpr (Mode=':')
  10639. |- Object: AccessorExpr (Mode='.')
  10640. |- Object: NameExpr: 'node'
  10641. \- Field: body
  10642. \- Field: get_Node
  10643. \- Arguments: (Len=1)
  10644. \0- NameExpr: 'i'
  10645. \- Field: print
  10646. \- Arguments: (Len=1)
  10647. \0- BinOpExpr (Operator='+')
  10648. |- LHS: NameExpr: 'depth'
  10649. \- RHS: LiteralExpr: type=int, value=2
  10650. \-- Runoff Clause: BlockBody: (N_Statements=2)
  10651. |0- CallExpr:
  10652. |- Method: NameExpr: 'printf'
  10653. \- Arguments: (Len=2)
  10654. |0- LiteralExpr: type=cstr, value=|%i-
  10655. \1- NameExpr: 'i'
  10656. |1- CallExpr:
  10657. |- Method: AccessorExpr (Mode=':')
  10658. |- Object: CallExpr:
  10659. |- Method: AccessorExpr (Mode=':')
  10660. |- Object: AccessorExpr (Mode='.')
  10661. |- Object: NameExpr: 'node'
  10662. \- Field: body
  10663. \- Field: get_Node
  10664. \- Arguments: (Len=1)
  10665. \0- NameExpr: 'i'
  10666. \- Field: print
  10667. \- Arguments: (Len=1)
  10668. \0- BinOpExpr (Operator='+')
  10669. |- LHS: NameExpr: 'depth'
  10670. \- RHS: LiteralExpr: type=int, value=2
  10671. |2- AssignmentExpr (Operator='+=')
  10672. |- LHS: NameExpr: 'i'
  10673. \- RHS: LiteralExpr: type=int, value=1
  10674. \6- ReturnExpr: <void>
  10675. |4- FunctionDecl:
  10676. |- Head: FunctionDeclHead: Name='FunctionDecl::create' Type='FunctionDecl' Nargs=1
  10677. \0- EleList eles
  10678. |0- AssignmentExpr (Operator='=')
  10679. |- LHS: DeclExpr: 'FunctionDecl new'
  10680. \- RHS: CastExpr (Target='FunctionDecl')
  10681. \- Value: CallExpr:
  10682. |- Method: NameExpr: 'malloc'
  10683. \- Arguments: (Len=1)
  10684. \0- IntrinsicExpr: '@sizeof(FunctionDecl)@'
  10685. |1- AssignmentExpr (Operator='=')
  10686. |- LHS: AccessorExpr (Mode='.')
  10687. |- Object: NameExpr: 'new'
  10688. \- Field: head
  10689. \- RHS: CastExpr (Target='FunctionDeclHead')
  10690. \- Value: CallExpr:
  10691. |- Method: AccessorExpr (Mode=':')
  10692. |- Object: CallExpr:
  10693. |- Method: AccessorExpr (Mode=':')
  10694. |- Object: NameExpr: 'eles'
  10695. \- Field: get
  10696. \- Arguments: (Len=1)
  10697. \0- LiteralExpr: type=int, value=0
  10698. \- Field: n
  10699. \- Arguments: (Len=0)
  10700. |2- AssignmentExpr (Operator='=')
  10701. |- LHS: AccessorExpr (Mode='.')
  10702. |- Object: NameExpr: 'new'
  10703. \- Field: body
  10704. \- RHS: AccessorExpr (Mode='.')
  10705. |- Object: GroupingExpr: CastExpr (Target='FunctionBody')
  10706. \- Value: CallExpr:
  10707. |- Method: AccessorExpr (Mode=':')
  10708. |- Object: CallExpr:
  10709. |- Method: AccessorExpr (Mode=':')
  10710. |- Object: NameExpr: 'eles'
  10711. \- Field: get
  10712. \- Arguments: (Len=1)
  10713. \0- LiteralExpr: type=int, value=1
  10714. \- Field: n
  10715. \- Arguments: (Len=0)
  10716. \- Field: statements
  10717. \3- ReturnExpr: NameExpr: 'new'
  10718. |5- FunctionDecl:
  10719. |- Head: FunctionDeclHead: Name='FunctionDecl::match' Type='int' Nargs=1
  10720. \0- EleList eles
  10721. |0- IfExpr:
  10722. |- Condition: CallExpr:
  10723. |- Method: AccessorExpr (Mode=':')
  10724. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  10725. \- Value: CallExpr:
  10726. |- Method: AccessorExpr (Mode=':')
  10727. |- Object: CallExpr:
  10728. |- Method: AccessorExpr (Mode=':')
  10729. |- Object: CallExpr:
  10730. |- Method: AccessorExpr (Mode=':')
  10731. |- Object: NameExpr: 'eles'
  10732. \- Field: get
  10733. \- Arguments: (Len=1)
  10734. \0- LiteralExpr: type=int, value=0
  10735. \- Field: n
  10736. \- Arguments: (Len=0)
  10737. \- Field: is_a
  10738. \- Arguments: (Len=1)
  10739. \0- LiteralExpr: type=cstr, value=FunctionDeclHead
  10740. \- Field: or
  10741. \- Arguments: (Len=1)
  10742. \0- UnOpExpr (Operator='-')
  10743. \- Value: CallExpr:
  10744. |- Method: AccessorExpr (Mode=':')
  10745. |- Object: CallExpr:
  10746. |- Method: AccessorExpr (Mode=':')
  10747. |- Object: CallExpr:
  10748. |- Method: AccessorExpr (Mode=':')
  10749. |- Object: NameExpr: 'eles'
  10750. \- Field: get
  10751. \- Arguments: (Len=1)
  10752. \0- LiteralExpr: type=int, value=1
  10753. \- Field: n
  10754. \- Arguments: (Len=0)
  10755. \- Field: is_a
  10756. \- Arguments: (Len=1)
  10757. \0- LiteralExpr: type=cstr, value=FunctionBody
  10758. |- Body: BlockBody: (N_Statements=1)
  10759. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10760. \1- ReturnExpr: LiteralExpr: type=int, value=2
  10761. |6- FunctionDecl:
  10762. |- Head: FunctionDeclHead: Name='FunctionDecl::visit' Type='void' Nargs=2
  10763. |0- FunctionDecl n
  10764. \1- TransformerPass p
  10765. |0- AssignmentExpr (Operator='=')
  10766. |- LHS: DeclExpr: 'int i'
  10767. \- RHS: LiteralExpr: type=int, value=0
  10768. |1- DeclExpr: 'Node res'
  10769. |2- WhileExpr:
  10770. |- Condition: BinOpExpr (Operator='<')
  10771. |- LHS: NameExpr: 'i'
  10772. \- RHS: AccessorExpr (Mode='.')
  10773. |- Object: AccessorExpr (Mode='.')
  10774. |- Object: NameExpr: 'n'
  10775. \- Field: body
  10776. \- Field: len
  10777. |- Body: BlockBody: (N_Statements=3)
  10778. |0- AssignmentExpr (Operator='=')
  10779. |- LHS: NameExpr: 'res'
  10780. \- RHS: CallExpr:
  10781. |- Method: AccessorExpr (Mode=':')
  10782. |- Object: NameExpr: 'p'
  10783. \- Field: visit
  10784. \- Arguments: (Len=1)
  10785. \0- CallExpr:
  10786. |- Method: AccessorExpr (Mode=':')
  10787. |- Object: AccessorExpr (Mode='.')
  10788. |- Object: NameExpr: 'n'
  10789. \- Field: body
  10790. \- Field: get_Node
  10791. \- Arguments: (Len=1)
  10792. \0- NameExpr: 'i'
  10793. |1- IfExpr:
  10794. |- Condition: BinOpExpr (Operator='==')
  10795. |- LHS: CastExpr (Target='ptr')
  10796. \- Value: NameExpr: 'res'
  10797. \- RHS: LiteralExpr: type=ptr, value=0
  10798. |- Body: BlockBody: (N_Statements=1)
  10799. |0- CallExpr:
  10800. |- Method: AccessorExpr (Mode=':')
  10801. |- Object: AccessorExpr (Mode='.')
  10802. |- Object: NameExpr: 'n'
  10803. \- Field: body
  10804. \- Field: del
  10805. \- Arguments: (Len=1)
  10806. \0- NameExpr: 'i'
  10807. \-- Runoff Clause: BlockBody: (N_Statements=1)
  10808. |0- CallExpr:
  10809. |- Method: AccessorExpr (Mode=':')
  10810. |- Object: AccessorExpr (Mode='.')
  10811. |- Object: NameExpr: 'n'
  10812. \- Field: body
  10813. \- Field: set
  10814. \- Arguments: (Len=2)
  10815. |0- NameExpr: 'i'
  10816. \1- CastExpr (Target='ptr')
  10817. \- Value: NameExpr: 'res'
  10818. |2- AssignmentExpr (Operator='+=')
  10819. |- LHS: NameExpr: 'i'
  10820. \- RHS: LiteralExpr: type=int, value=1
  10821. \3- ReturnExpr: <void>
  10822. \7- FunctionDecl:
  10823. |- Head: FunctionDeclHead: Name='FunctionDecl::impl' Type='NodeType' Nargs=0
  10824. \0- ReturnExpr: CallExpr:
  10825. |- Method: AccessorExpr (Mode=':')
  10826. |- Object: CallExpr:
  10827. |- Method: AccessorExpr (Mode=':')
  10828. |- Object: CallExpr:
  10829. |- Method: AccessorExpr (Mode=':')
  10830. |- Object: CallExpr:
  10831. |- Method: AccessorExpr (Mode=':')
  10832. |- Object: CallExpr:
  10833. |- Method: AccessorExpr (Mode=':')
  10834. |- Object: CallExpr:
  10835. |- Method: AccessorExpr (Mode=':')
  10836. |- Object: CallExpr:
  10837. |- Method: AccessorExpr (Mode='::')
  10838. |- Object: NameExpr: 'NodeType'
  10839. \- Field: new
  10840. \- Arguments: (Len=1)
  10841. \0- LiteralExpr: type=cstr, value=FunctionDecl
  10842. \- Field: set_printer
  10843. \- Arguments: (Len=1)
  10844. \0- CastExpr (Target='NodePrinter')
  10845. \- Value: AccessorExpr (Mode='::')
  10846. |- Object: NameExpr: 'FunctionDecl'
  10847. \- Field: print
  10848. \- Field: set_creator
  10849. \- Arguments: (Len=1)
  10850. \0- CastExpr (Target='NodeCreator')
  10851. \- Value: AccessorExpr (Mode='::')
  10852. |- Object: NameExpr: 'FunctionDecl'
  10853. \- Field: create
  10854. \- Field: set_matcher
  10855. \- Arguments: (Len=1)
  10856. \0- CastExpr (Target='NodeMatcher')
  10857. \- Value: AccessorExpr (Mode='::')
  10858. |- Object: NameExpr: 'FunctionDecl'
  10859. \- Field: match
  10860. \- Field: set_visitor
  10861. \- Arguments: (Len=1)
  10862. \0- CastExpr (Target='NodeVisitor')
  10863. \- Value: AccessorExpr (Mode='::')
  10864. |- Object: NameExpr: 'FunctionDecl'
  10865. \- Field: visit
  10866. \- Field: matches
  10867. \- Arguments: (Len=1)
  10868. \0- LiteralExpr: type=int, value=2
  10869. \- Field: matches_only_nodes
  10870. \- Arguments: (Len=0)
  10871. |6- SepExpr (Consumed=2)
  10872. |20- SepExpr (Consumed=1)
  10873. |21- FileNode: (N_Statements=11)
  10874. |0- SepExpr (Consumed=1)
  10875. |1- TypeDecl:
  10876. |- Head: TypeDeclHead: `ZeroArgList` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  10877. \- Body: TypeDeclBody: (N_Statements=5)
  10878. |0- DeclExpr: 'NodeType type_'
  10879. |1- FunctionDecl:
  10880. |- Head: FunctionDeclHead: Name='ZeroArgList::print' Type='void' Nargs=2
  10881. |0- ZeroArgList node
  10882. \1- int depth
  10883. |0- CallExpr:
  10884. |- Method: NameExpr: 'printf'
  10885. \- Arguments: (Len=1)
  10886. \0- LiteralExpr: type=cstr, value=ZeroArgList: (Size=0)\n
  10887. \1- ReturnExpr: <void>
  10888. |2- FunctionDecl:
  10889. |- Head: FunctionDeclHead: Name='ZeroArgList::create' Type='ZeroArgList' Nargs=1
  10890. \0- EleList eles
  10891. |0- AssignmentExpr (Operator='=')
  10892. |- LHS: DeclExpr: 'ZeroArgList new'
  10893. \- RHS: CastExpr (Target='ZeroArgList')
  10894. \- Value: CallExpr:
  10895. |- Method: NameExpr: 'malloc'
  10896. \- Arguments: (Len=1)
  10897. \0- IntrinsicExpr: '@sizeof(ZeroArgList)@'
  10898. \1- ReturnExpr: NameExpr: 'new'
  10899. |3- FunctionDecl:
  10900. |- Head: FunctionDeclHead: Name='ZeroArgList::match' Type='int' Nargs=1
  10901. \0- EleList eles
  10902. |0- IfExpr:
  10903. |- Condition: CallExpr:
  10904. |- Method: AccessorExpr (Mode=':')
  10905. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  10906. \- Value: CallExpr:
  10907. |- Method: AccessorExpr (Mode=':')
  10908. |- Object: CallExpr:
  10909. |- Method: AccessorExpr (Mode=':')
  10910. |- Object: CallExpr:
  10911. |- Method: AccessorExpr (Mode=':')
  10912. |- Object: NameExpr: 'eles'
  10913. \- Field: get
  10914. \- Arguments: (Len=1)
  10915. \0- LiteralExpr: type=int, value=0
  10916. \- Field: t
  10917. \- Arguments: (Len=0)
  10918. \- Field: is_a
  10919. \- Arguments: (Len=1)
  10920. \0- LiteralExpr: type=cstr, value=T_ARGLIST_START
  10921. \- Field: or
  10922. \- Arguments: (Len=1)
  10923. \0- UnOpExpr (Operator='-')
  10924. \- Value: CallExpr:
  10925. |- Method: AccessorExpr (Mode=':')
  10926. |- Object: CallExpr:
  10927. |- Method: AccessorExpr (Mode=':')
  10928. |- Object: CallExpr:
  10929. |- Method: AccessorExpr (Mode=':')
  10930. |- Object: NameExpr: 'eles'
  10931. \- Field: get
  10932. \- Arguments: (Len=1)
  10933. \0- LiteralExpr: type=int, value=1
  10934. \- Field: t
  10935. \- Arguments: (Len=0)
  10936. \- Field: is_a
  10937. \- Arguments: (Len=1)
  10938. \0- LiteralExpr: type=cstr, value=T_ARGLIST_END
  10939. |- Body: BlockBody: (N_Statements=1)
  10940. |0- ReturnExpr: LiteralExpr: type=int, value=0
  10941. \1- ReturnExpr: LiteralExpr: type=int, value=2
  10942. \4- FunctionDecl:
  10943. |- Head: FunctionDeclHead: Name='ZeroArgList::impl' Type='NodeType' Nargs=0
  10944. \0- ReturnExpr: CallExpr:
  10945. |- Method: AccessorExpr (Mode=':')
  10946. |- Object: CallExpr:
  10947. |- Method: AccessorExpr (Mode=':')
  10948. |- Object: CallExpr:
  10949. |- Method: AccessorExpr (Mode=':')
  10950. |- Object: CallExpr:
  10951. |- Method: AccessorExpr (Mode=':')
  10952. |- Object: CallExpr:
  10953. |- Method: AccessorExpr (Mode=':')
  10954. |- Object: CallExpr:
  10955. |- Method: AccessorExpr (Mode=':')
  10956. |- Object: CallExpr:
  10957. |- Method: AccessorExpr (Mode='::')
  10958. |- Object: NameExpr: 'NodeType'
  10959. \- Field: new
  10960. \- Arguments: (Len=1)
  10961. \0- LiteralExpr: type=cstr, value=ZeroArgList
  10962. \- Field: set_printer
  10963. \- Arguments: (Len=1)
  10964. \0- CastExpr (Target='NodePrinter')
  10965. \- Value: AccessorExpr (Mode='::')
  10966. |- Object: NameExpr: 'ZeroArgList'
  10967. \- Field: print
  10968. \- Field: set_creator
  10969. \- Arguments: (Len=1)
  10970. \0- CastExpr (Target='NodeCreator')
  10971. \- Value: AccessorExpr (Mode='::')
  10972. |- Object: NameExpr: 'ZeroArgList'
  10973. \- Field: create
  10974. \- Field: set_matcher
  10975. \- Arguments: (Len=1)
  10976. \0- CastExpr (Target='NodeMatcher')
  10977. \- Value: AccessorExpr (Mode='::')
  10978. |- Object: NameExpr: 'ZeroArgList'
  10979. \- Field: match
  10980. \- Field: matches
  10981. \- Arguments: (Len=1)
  10982. \0- LiteralExpr: type=int, value=2
  10983. \- Field: matches_only_tokens
  10984. \- Arguments: (Len=0)
  10985. \- Field: addtype
  10986. \- Arguments: (Len=1)
  10987. \0- LiteralExpr: type=cstr, value=ArgList
  10988. |2- SepExpr (Consumed=2)
  10989. |3- TypeDecl:
  10990. |- Head: TypeDeclHead: `OneArgList` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  10991. \- Body: TypeDeclBody: (N_Statements=6)
  10992. |0- DeclExpr: 'NodeType type_'
  10993. |1- DeclExpr: 'cstr text'
  10994. |2- FunctionDecl:
  10995. |- Head: FunctionDeclHead: Name='OneArgList::print' Type='void' Nargs=2
  10996. |0- OneArgList node
  10997. \1- int depth
  10998. |0- CallExpr:
  10999. |- Method: NameExpr: 'printf'
  11000. \- Arguments: (Len=1)
  11001. \0- LiteralExpr: type=cstr, value=OneArgList: (Size=1)\n
  11002. |1- CallExpr:
  11003. |- Method: AccessorExpr (Mode='::')
  11004. |- Object: NameExpr: 'parse'
  11005. \- Field: indent
  11006. \- Arguments: (Len=1)
  11007. \0- BinOpExpr (Operator='+')
  11008. |- LHS: NameExpr: 'depth'
  11009. \- RHS: LiteralExpr: type=int, value=1
  11010. |2- CallExpr:
  11011. |- Method: NameExpr: 'printf'
  11012. \- Arguments: (Len=2)
  11013. |0- LiteralExpr: type=cstr, value=\\0- %s\n
  11014. \1- AccessorExpr (Mode='.')
  11015. |- Object: NameExpr: 'node'
  11016. \- Field: text
  11017. \3- ReturnExpr: <void>
  11018. |3- FunctionDecl:
  11019. |- Head: FunctionDeclHead: Name='OneArgList::create' Type='OneArgList' Nargs=1
  11020. \0- EleList eles
  11021. |0- AssignmentExpr (Operator='=')
  11022. |- LHS: DeclExpr: 'OneArgList new'
  11023. \- RHS: CastExpr (Target='OneArgList')
  11024. \- Value: CallExpr:
  11025. |- Method: NameExpr: 'malloc'
  11026. \- Arguments: (Len=1)
  11027. \0- IntrinsicExpr: '@sizeof(OneArgList)@'
  11028. |1- AssignmentExpr (Operator='=')
  11029. |- LHS: AccessorExpr (Mode='.')
  11030. |- Object: NameExpr: 'new'
  11031. \- Field: text
  11032. \- RHS: AccessorExpr (Mode='.')
  11033. |- Object: CallExpr:
  11034. |- Method: AccessorExpr (Mode=':')
  11035. |- Object: CallExpr:
  11036. |- Method: AccessorExpr (Mode=':')
  11037. |- Object: NameExpr: 'eles'
  11038. \- Field: get
  11039. \- Arguments: (Len=1)
  11040. \0- LiteralExpr: type=int, value=1
  11041. \- Field: t
  11042. \- Arguments: (Len=0)
  11043. \- Field: text
  11044. \2- ReturnExpr: NameExpr: 'new'
  11045. |4- FunctionDecl:
  11046. |- Head: FunctionDeclHead: Name='OneArgList::match' Type='int' Nargs=1
  11047. \0- EleList eles
  11048. |0- IfExpr:
  11049. |- Condition: CallExpr:
  11050. |- Method: AccessorExpr (Mode=':')
  11051. |- Object: CallExpr:
  11052. |- Method: AccessorExpr (Mode=':')
  11053. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  11054. \- Value: CallExpr:
  11055. |- Method: AccessorExpr (Mode=':')
  11056. |- Object: CallExpr:
  11057. |- Method: AccessorExpr (Mode=':')
  11058. |- Object: CallExpr:
  11059. |- Method: AccessorExpr (Mode=':')
  11060. |- Object: NameExpr: 'eles'
  11061. \- Field: get
  11062. \- Arguments: (Len=1)
  11063. \0- LiteralExpr: type=int, value=0
  11064. \- Field: t
  11065. \- Arguments: (Len=0)
  11066. \- Field: is_a
  11067. \- Arguments: (Len=1)
  11068. \0- LiteralExpr: type=cstr, value=T_ARGLIST_START
  11069. \- Field: or
  11070. \- Arguments: (Len=1)
  11071. \0- UnOpExpr (Operator='-')
  11072. \- Value: CallExpr:
  11073. |- Method: AccessorExpr (Mode=':')
  11074. |- Object: CallExpr:
  11075. |- Method: AccessorExpr (Mode=':')
  11076. |- Object: CallExpr:
  11077. |- Method: AccessorExpr (Mode=':')
  11078. |- Object: NameExpr: 'eles'
  11079. \- Field: get
  11080. \- Arguments: (Len=1)
  11081. \0- LiteralExpr: type=int, value=1
  11082. \- Field: t
  11083. \- Arguments: (Len=0)
  11084. \- Field: is_a
  11085. \- Arguments: (Len=1)
  11086. \0- LiteralExpr: type=cstr, value=T_ARGLIST_ELE
  11087. \- Field: or
  11088. \- Arguments: (Len=1)
  11089. \0- UnOpExpr (Operator='-')
  11090. \- Value: CallExpr:
  11091. |- Method: AccessorExpr (Mode=':')
  11092. |- Object: CallExpr:
  11093. |- Method: AccessorExpr (Mode=':')
  11094. |- Object: CallExpr:
  11095. |- Method: AccessorExpr (Mode=':')
  11096. |- Object: NameExpr: 'eles'
  11097. \- Field: get
  11098. \- Arguments: (Len=1)
  11099. \0- LiteralExpr: type=int, value=2
  11100. \- Field: t
  11101. \- Arguments: (Len=0)
  11102. \- Field: is_a
  11103. \- Arguments: (Len=1)
  11104. \0- LiteralExpr: type=cstr, value=T_ARGLIST_END
  11105. |- Body: BlockBody: (N_Statements=1)
  11106. |0- ReturnExpr: LiteralExpr: type=int, value=0
  11107. \1- ReturnExpr: LiteralExpr: type=int, value=3
  11108. \5- FunctionDecl:
  11109. |- Head: FunctionDeclHead: Name='OneArgList::impl' Type='NodeType' Nargs=0
  11110. \0- ReturnExpr: CallExpr:
  11111. |- Method: AccessorExpr (Mode=':')
  11112. |- Object: CallExpr:
  11113. |- Method: AccessorExpr (Mode=':')
  11114. |- Object: CallExpr:
  11115. |- Method: AccessorExpr (Mode=':')
  11116. |- Object: CallExpr:
  11117. |- Method: AccessorExpr (Mode=':')
  11118. |- Object: CallExpr:
  11119. |- Method: AccessorExpr (Mode=':')
  11120. |- Object: CallExpr:
  11121. |- Method: AccessorExpr (Mode=':')
  11122. |- Object: CallExpr:
  11123. |- Method: AccessorExpr (Mode='::')
  11124. |- Object: NameExpr: 'NodeType'
  11125. \- Field: new
  11126. \- Arguments: (Len=1)
  11127. \0- LiteralExpr: type=cstr, value=OneArgList
  11128. \- Field: set_printer
  11129. \- Arguments: (Len=1)
  11130. \0- CastExpr (Target='NodePrinter')
  11131. \- Value: AccessorExpr (Mode='::')
  11132. |- Object: NameExpr: 'OneArgList'
  11133. \- Field: print
  11134. \- Field: set_creator
  11135. \- Arguments: (Len=1)
  11136. \0- CastExpr (Target='NodeCreator')
  11137. \- Value: AccessorExpr (Mode='::')
  11138. |- Object: NameExpr: 'OneArgList'
  11139. \- Field: create
  11140. \- Field: set_matcher
  11141. \- Arguments: (Len=1)
  11142. \0- CastExpr (Target='NodeMatcher')
  11143. \- Value: AccessorExpr (Mode='::')
  11144. |- Object: NameExpr: 'OneArgList'
  11145. \- Field: match
  11146. \- Field: matches
  11147. \- Arguments: (Len=1)
  11148. \0- LiteralExpr: type=int, value=3
  11149. \- Field: matches_only_tokens
  11150. \- Arguments: (Len=0)
  11151. \- Field: addtype
  11152. \- Arguments: (Len=1)
  11153. \0- LiteralExpr: type=cstr, value=ArgList
  11154. |4- SepExpr (Consumed=2)
  11155. |5- TypeDecl:
  11156. |- Head: TypeDeclHead: `MultiArgListStart` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  11157. \- Body: TypeDeclBody: (N_Statements=6)
  11158. |0- DeclExpr: 'NodeType type_'
  11159. |1- DeclExpr: 'cstr text'
  11160. |2- FunctionDecl:
  11161. |- Head: FunctionDeclHead: Name='MultiArgListStart::print' Type='void' Nargs=2
  11162. |0- MultiArgListStart node
  11163. \1- int depth
  11164. |0- CallExpr:
  11165. |- Method: NameExpr: 'printf'
  11166. \- Arguments: (Len=1)
  11167. \0- LiteralExpr: type=cstr, value=MultiArgListStart: (Size=1)\n
  11168. |1- CallExpr:
  11169. |- Method: AccessorExpr (Mode='::')
  11170. |- Object: NameExpr: 'parse'
  11171. \- Field: indent
  11172. \- Arguments: (Len=1)
  11173. \0- BinOpExpr (Operator='+')
  11174. |- LHS: NameExpr: 'depth'
  11175. \- RHS: LiteralExpr: type=int, value=1
  11176. |2- CallExpr:
  11177. |- Method: NameExpr: 'printf'
  11178. \- Arguments: (Len=2)
  11179. |0- LiteralExpr: type=cstr, value=\\0- %s\n
  11180. \1- AccessorExpr (Mode='.')
  11181. |- Object: NameExpr: 'node'
  11182. \- Field: text
  11183. \3- ReturnExpr: <void>
  11184. |3- FunctionDecl:
  11185. |- Head: FunctionDeclHead: Name='MultiArgListStart::create' Type='MultiArgListStart' Nargs=1
  11186. \0- EleList eles
  11187. |0- AssignmentExpr (Operator='=')
  11188. |- LHS: DeclExpr: 'MultiArgListStart new'
  11189. \- RHS: CastExpr (Target='MultiArgListStart')
  11190. \- Value: CallExpr:
  11191. |- Method: NameExpr: 'malloc'
  11192. \- Arguments: (Len=1)
  11193. \0- IntrinsicExpr: '@sizeof(MultiArgListStart)@'
  11194. |1- AssignmentExpr (Operator='=')
  11195. |- LHS: AccessorExpr (Mode='.')
  11196. |- Object: NameExpr: 'new'
  11197. \- Field: text
  11198. \- RHS: AccessorExpr (Mode='.')
  11199. |- Object: CallExpr:
  11200. |- Method: AccessorExpr (Mode=':')
  11201. |- Object: CallExpr:
  11202. |- Method: AccessorExpr (Mode=':')
  11203. |- Object: NameExpr: 'eles'
  11204. \- Field: get
  11205. \- Arguments: (Len=1)
  11206. \0- LiteralExpr: type=int, value=1
  11207. \- Field: t
  11208. \- Arguments: (Len=0)
  11209. \- Field: text
  11210. \2- ReturnExpr: NameExpr: 'new'
  11211. |4- FunctionDecl:
  11212. |- Head: FunctionDeclHead: Name='MultiArgListStart::match' Type='int' Nargs=1
  11213. \0- EleList eles
  11214. |0- IfExpr:
  11215. |- Condition: CallExpr:
  11216. |- Method: AccessorExpr (Mode=':')
  11217. |- Object: CallExpr:
  11218. |- Method: AccessorExpr (Mode=':')
  11219. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  11220. \- Value: CallExpr:
  11221. |- Method: AccessorExpr (Mode=':')
  11222. |- Object: CallExpr:
  11223. |- Method: AccessorExpr (Mode=':')
  11224. |- Object: CallExpr:
  11225. |- Method: AccessorExpr (Mode=':')
  11226. |- Object: NameExpr: 'eles'
  11227. \- Field: get
  11228. \- Arguments: (Len=1)
  11229. \0- LiteralExpr: type=int, value=0
  11230. \- Field: t
  11231. \- Arguments: (Len=0)
  11232. \- Field: is_a
  11233. \- Arguments: (Len=1)
  11234. \0- LiteralExpr: type=cstr, value=T_ARGLIST_SEP
  11235. \- Field: or
  11236. \- Arguments: (Len=1)
  11237. \0- UnOpExpr (Operator='-')
  11238. \- Value: CallExpr:
  11239. |- Method: AccessorExpr (Mode=':')
  11240. |- Object: CallExpr:
  11241. |- Method: AccessorExpr (Mode=':')
  11242. |- Object: CallExpr:
  11243. |- Method: AccessorExpr (Mode=':')
  11244. |- Object: NameExpr: 'eles'
  11245. \- Field: get
  11246. \- Arguments: (Len=1)
  11247. \0- LiteralExpr: type=int, value=1
  11248. \- Field: t
  11249. \- Arguments: (Len=0)
  11250. \- Field: is_a
  11251. \- Arguments: (Len=1)
  11252. \0- LiteralExpr: type=cstr, value=T_ARGLIST_ELE
  11253. \- Field: or
  11254. \- Arguments: (Len=1)
  11255. \0- UnOpExpr (Operator='-')
  11256. \- Value: CallExpr:
  11257. |- Method: AccessorExpr (Mode=':')
  11258. |- Object: CallExpr:
  11259. |- Method: AccessorExpr (Mode=':')
  11260. |- Object: CallExpr:
  11261. |- Method: AccessorExpr (Mode=':')
  11262. |- Object: NameExpr: 'eles'
  11263. \- Field: get
  11264. \- Arguments: (Len=1)
  11265. \0- LiteralExpr: type=int, value=2
  11266. \- Field: t
  11267. \- Arguments: (Len=0)
  11268. \- Field: is_a
  11269. \- Arguments: (Len=1)
  11270. \0- LiteralExpr: type=cstr, value=T_ARGLIST_END
  11271. |- Body: BlockBody: (N_Statements=1)
  11272. |0- ReturnExpr: LiteralExpr: type=int, value=0
  11273. \1- ReturnExpr: LiteralExpr: type=int, value=3
  11274. \5- FunctionDecl:
  11275. |- Head: FunctionDeclHead: Name='MultiArgListStart::impl' Type='NodeType' Nargs=0
  11276. \0- ReturnExpr: CallExpr:
  11277. |- Method: AccessorExpr (Mode=':')
  11278. |- Object: CallExpr:
  11279. |- Method: AccessorExpr (Mode=':')
  11280. |- Object: CallExpr:
  11281. |- Method: AccessorExpr (Mode=':')
  11282. |- Object: CallExpr:
  11283. |- Method: AccessorExpr (Mode=':')
  11284. |- Object: CallExpr:
  11285. |- Method: AccessorExpr (Mode=':')
  11286. |- Object: CallExpr:
  11287. |- Method: AccessorExpr (Mode=':')
  11288. |- Object: CallExpr:
  11289. |- Method: AccessorExpr (Mode='::')
  11290. |- Object: NameExpr: 'NodeType'
  11291. \- Field: new
  11292. \- Arguments: (Len=1)
  11293. \0- LiteralExpr: type=cstr, value=MultiArgListStart
  11294. \- Field: set_printer
  11295. \- Arguments: (Len=1)
  11296. \0- CastExpr (Target='NodePrinter')
  11297. \- Value: AccessorExpr (Mode='::')
  11298. |- Object: NameExpr: 'MultiArgListStart'
  11299. \- Field: print
  11300. \- Field: set_creator
  11301. \- Arguments: (Len=1)
  11302. \0- CastExpr (Target='NodeCreator')
  11303. \- Value: AccessorExpr (Mode='::')
  11304. |- Object: NameExpr: 'MultiArgListStart'
  11305. \- Field: create
  11306. \- Field: set_matcher
  11307. \- Arguments: (Len=1)
  11308. \0- CastExpr (Target='NodeMatcher')
  11309. \- Value: AccessorExpr (Mode='::')
  11310. |- Object: NameExpr: 'MultiArgListStart'
  11311. \- Field: match
  11312. \- Field: matches
  11313. \- Arguments: (Len=1)
  11314. \0- LiteralExpr: type=int, value=3
  11315. \- Field: matches_only_tokens
  11316. \- Arguments: (Len=0)
  11317. \- Field: addtype
  11318. \- Arguments: (Len=1)
  11319. \0- LiteralExpr: type=cstr, value=MultiArgListFragment
  11320. |6- SepExpr (Consumed=2)
  11321. |7- TypeDecl:
  11322. |- Head: TypeDeclHead: `MultiArgListExt` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  11323. \- Body: TypeDeclBody: (N_Statements=6)
  11324. |0- DeclExpr: 'NodeType type_'
  11325. |1- DeclExpr: 'List args'
  11326. |2- FunctionDecl:
  11327. |- Head: FunctionDeclHead: Name='MultiArgListExt::print' Type='void' Nargs=2
  11328. |0- MultiArgListExt node
  11329. \1- int depth
  11330. |0- CallExpr:
  11331. |- Method: NameExpr: 'printf'
  11332. \- Arguments: (Len=2)
  11333. |0- LiteralExpr: type=cstr, value=MultiArgListExt: (Size=%i)\n
  11334. \1- AccessorExpr (Mode='.')
  11335. |- Object: AccessorExpr (Mode='.')
  11336. |- Object: NameExpr: 'node'
  11337. \- Field: args
  11338. \- Field: len
  11339. |1- AssignmentExpr (Operator='=')
  11340. |- LHS: DeclExpr: 'int i'
  11341. \- RHS: LiteralExpr: type=int, value=0
  11342. |2- WhileExpr:
  11343. |- Condition: BinOpExpr (Operator='<')
  11344. |- LHS: NameExpr: 'i'
  11345. \- RHS: AccessorExpr (Mode='.')
  11346. |- Object: AccessorExpr (Mode='.')
  11347. |- Object: NameExpr: 'node'
  11348. \- Field: args
  11349. \- Field: len
  11350. |- Body: BlockBody: (N_Statements=3)
  11351. |0- CallExpr:
  11352. |- Method: AccessorExpr (Mode='::')
  11353. |- Object: NameExpr: 'parse'
  11354. \- Field: indent
  11355. \- Arguments: (Len=1)
  11356. \0- BinOpExpr (Operator='+')
  11357. |- LHS: NameExpr: 'depth'
  11358. \- RHS: LiteralExpr: type=int, value=1
  11359. |1- IfExpr:
  11360. |- Condition: BinOpExpr (Operator='==')
  11361. |- LHS: NameExpr: 'i'
  11362. \- RHS: BinOpExpr (Operator='-')
  11363. |- LHS: AccessorExpr (Mode='.')
  11364. |- Object: AccessorExpr (Mode='.')
  11365. |- Object: NameExpr: 'node'
  11366. \- Field: args
  11367. \- Field: len
  11368. \- RHS: LiteralExpr: type=int, value=1
  11369. |- Body: BlockBody: (N_Statements=1)
  11370. |0- CallExpr:
  11371. |- Method: NameExpr: 'printf'
  11372. \- Arguments: (Len=3)
  11373. |0- LiteralExpr: type=cstr, value=\\%i- %s\n
  11374. |1- NameExpr: 'i'
  11375. \2- CallExpr:
  11376. |- Method: AccessorExpr (Mode=':')
  11377. |- Object: AccessorExpr (Mode='.')
  11378. |- Object: NameExpr: 'node'
  11379. \- Field: args
  11380. \- Field: get
  11381. \- Arguments: (Len=1)
  11382. \0- NameExpr: 'i'
  11383. \-- Runoff Clause: BlockBody: (N_Statements=1)
  11384. |0- CallExpr:
  11385. |- Method: NameExpr: 'printf'
  11386. \- Arguments: (Len=3)
  11387. |0- LiteralExpr: type=cstr, value=|%i- %s\n
  11388. |1- NameExpr: 'i'
  11389. \2- CallExpr:
  11390. |- Method: AccessorExpr (Mode=':')
  11391. |- Object: AccessorExpr (Mode='.')
  11392. |- Object: NameExpr: 'node'
  11393. \- Field: args
  11394. \- Field: get
  11395. \- Arguments: (Len=1)
  11396. \0- NameExpr: 'i'
  11397. |2- AssignmentExpr (Operator='+=')
  11398. |- LHS: NameExpr: 'i'
  11399. \- RHS: LiteralExpr: type=int, value=1
  11400. \3- ReturnExpr: <void>
  11401. |3- FunctionDecl:
  11402. |- Head: FunctionDeclHead: Name='MultiArgListExt::create' Type='MultiArgListExt' Nargs=1
  11403. \0- EleList eles
  11404. |0- AssignmentExpr (Operator='=')
  11405. |- LHS: DeclExpr: 'MultiArgListExt new'
  11406. \- RHS: CastExpr (Target='MultiArgListExt')
  11407. \- Value: CallExpr:
  11408. |- Method: NameExpr: 'malloc'
  11409. \- Arguments: (Len=1)
  11410. \0- IntrinsicExpr: '@sizeof(MultiArgListExt)@'
  11411. |1- AssignmentExpr (Operator='=')
  11412. |- LHS: DeclExpr: 'Node ele'
  11413. \- RHS: CallExpr:
  11414. |- Method: AccessorExpr (Mode=':')
  11415. |- Object: CallExpr:
  11416. |- Method: AccessorExpr (Mode=':')
  11417. |- Object: NameExpr: 'eles'
  11418. \- Field: get
  11419. \- Arguments: (Len=1)
  11420. \0- LiteralExpr: type=int, value=2
  11421. \- Field: n
  11422. \- Arguments: (Len=0)
  11423. |2- IfExpr:
  11424. |- Condition: CallExpr:
  11425. |- Method: AccessorExpr (Mode=':')
  11426. |- Object: NameExpr: 'ele'
  11427. \- Field: is_a
  11428. \- Arguments: (Len=1)
  11429. \0- LiteralExpr: type=cstr, value=MultiArgListStart
  11430. |- Body: BlockBody: (N_Statements=3)
  11431. |0- AssignmentExpr (Operator='=')
  11432. |- LHS: AccessorExpr (Mode='.')
  11433. |- Object: NameExpr: 'new'
  11434. \- Field: args
  11435. \- RHS: CallExpr:
  11436. |- Method: AccessorExpr (Mode='::')
  11437. |- Object: NameExpr: 'List'
  11438. \- Field: new
  11439. \- Arguments: (Len=0)
  11440. |1- CallExpr:
  11441. |- Method: AccessorExpr (Mode=':')
  11442. |- Object: AccessorExpr (Mode='.')
  11443. |- Object: NameExpr: 'new'
  11444. \- Field: args
  11445. \- Field: append
  11446. \- Arguments: (Len=1)
  11447. \0- AccessorExpr (Mode='.')
  11448. |- Object: CallExpr:
  11449. |- Method: AccessorExpr (Mode=':')
  11450. |- Object: CallExpr:
  11451. |- Method: AccessorExpr (Mode=':')
  11452. |- Object: NameExpr: 'eles'
  11453. \- Field: get
  11454. \- Arguments: (Len=1)
  11455. \0- LiteralExpr: type=int, value=1
  11456. \- Field: t
  11457. \- Arguments: (Len=0)
  11458. \- Field: text
  11459. |2- CallExpr:
  11460. |- Method: AccessorExpr (Mode=':')
  11461. |- Object: AccessorExpr (Mode='.')
  11462. |- Object: NameExpr: 'new'
  11463. \- Field: args
  11464. \- Field: append
  11465. \- Arguments: (Len=1)
  11466. \0- AccessorExpr (Mode='.')
  11467. |- Object: GroupingExpr: CastExpr (Target='MultiArgListStart')
  11468. \- Value: CallExpr:
  11469. |- Method: AccessorExpr (Mode=':')
  11470. |- Object: CallExpr:
  11471. |- Method: AccessorExpr (Mode=':')
  11472. |- Object: NameExpr: 'eles'
  11473. \- Field: get
  11474. \- Arguments: (Len=1)
  11475. \0- LiteralExpr: type=int, value=2
  11476. \- Field: n
  11477. \- Arguments: (Len=0)
  11478. \- Field: text
  11479. \-- Runoff Clause: BlockBody: (N_Statements=2)
  11480. |0- AssignmentExpr (Operator='=')
  11481. |- LHS: AccessorExpr (Mode='.')
  11482. |- Object: NameExpr: 'new'
  11483. \- Field: args
  11484. \- RHS: AccessorExpr (Mode='.')
  11485. |- Object: GroupingExpr: CastExpr (Target='MultiArgListExt')
  11486. \- Value: NameExpr: 'ele'
  11487. \- Field: args
  11488. |1- CallExpr:
  11489. |- Method: AccessorExpr (Mode=':')
  11490. |- Object: AccessorExpr (Mode='.')
  11491. |- Object: NameExpr: 'new'
  11492. \- Field: args
  11493. \- Field: insert
  11494. \- Arguments: (Len=2)
  11495. |0- LiteralExpr: type=int, value=0
  11496. \1- AccessorExpr (Mode='.')
  11497. |- Object: CallExpr:
  11498. |- Method: AccessorExpr (Mode=':')
  11499. |- Object: CallExpr:
  11500. |- Method: AccessorExpr (Mode=':')
  11501. |- Object: NameExpr: 'eles'
  11502. \- Field: get
  11503. \- Arguments: (Len=1)
  11504. \0- LiteralExpr: type=int, value=1
  11505. \- Field: t
  11506. \- Arguments: (Len=0)
  11507. \- Field: text
  11508. \3- ReturnExpr: NameExpr: 'new'
  11509. |4- FunctionDecl:
  11510. |- Head: FunctionDeclHead: Name='MultiArgListExt::match' Type='int' Nargs=1
  11511. \0- EleList eles
  11512. |0- IfExpr:
  11513. |- Condition: CallExpr:
  11514. |- Method: AccessorExpr (Mode=':')
  11515. |- Object: CallExpr:
  11516. |- Method: AccessorExpr (Mode=':')
  11517. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  11518. \- Value: AccessorExpr (Mode='.')
  11519. |- Object: CallExpr:
  11520. |- Method: AccessorExpr (Mode=':')
  11521. |- Object: NameExpr: 'eles'
  11522. \- Field: get
  11523. \- Arguments: (Len=1)
  11524. \0- LiteralExpr: type=int, value=0
  11525. \- Field: is_token
  11526. \- Field: or
  11527. \- Arguments: (Len=1)
  11528. \0- UnOpExpr (Operator='-')
  11529. \- Value: AccessorExpr (Mode='.')
  11530. |- Object: CallExpr:
  11531. |- Method: AccessorExpr (Mode=':')
  11532. |- Object: NameExpr: 'eles'
  11533. \- Field: get
  11534. \- Arguments: (Len=1)
  11535. \0- LiteralExpr: type=int, value=1
  11536. \- Field: is_token
  11537. \- Field: or
  11538. \- Arguments: (Len=1)
  11539. \0- AccessorExpr (Mode='.')
  11540. |- Object: CallExpr:
  11541. |- Method: AccessorExpr (Mode=':')
  11542. |- Object: NameExpr: 'eles'
  11543. \- Field: get
  11544. \- Arguments: (Len=1)
  11545. \0- LiteralExpr: type=int, value=2
  11546. \- Field: is_token
  11547. |- Body: BlockBody: (N_Statements=1)
  11548. |0- ReturnExpr: LiteralExpr: type=int, value=0
  11549. |1- IfExpr:
  11550. |- Condition: CallExpr:
  11551. |- Method: AccessorExpr (Mode=':')
  11552. |- Object: CallExpr:
  11553. |- Method: AccessorExpr (Mode=':')
  11554. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  11555. \- Value: CallExpr:
  11556. |- Method: AccessorExpr (Mode=':')
  11557. |- Object: CallExpr:
  11558. |- Method: AccessorExpr (Mode=':')
  11559. |- Object: CallExpr:
  11560. |- Method: AccessorExpr (Mode=':')
  11561. |- Object: NameExpr: 'eles'
  11562. \- Field: get
  11563. \- Arguments: (Len=1)
  11564. \0- LiteralExpr: type=int, value=0
  11565. \- Field: t
  11566. \- Arguments: (Len=0)
  11567. \- Field: is_a
  11568. \- Arguments: (Len=1)
  11569. \0- LiteralExpr: type=cstr, value=T_ARGLIST_SEP
  11570. \- Field: or
  11571. \- Arguments: (Len=1)
  11572. \0- UnOpExpr (Operator='-')
  11573. \- Value: CallExpr:
  11574. |- Method: AccessorExpr (Mode=':')
  11575. |- Object: CallExpr:
  11576. |- Method: AccessorExpr (Mode=':')
  11577. |- Object: CallExpr:
  11578. |- Method: AccessorExpr (Mode=':')
  11579. |- Object: NameExpr: 'eles'
  11580. \- Field: get
  11581. \- Arguments: (Len=1)
  11582. \0- LiteralExpr: type=int, value=1
  11583. \- Field: t
  11584. \- Arguments: (Len=0)
  11585. \- Field: is_a
  11586. \- Arguments: (Len=1)
  11587. \0- LiteralExpr: type=cstr, value=T_ARGLIST_ELE
  11588. \- Field: or
  11589. \- Arguments: (Len=1)
  11590. \0- UnOpExpr (Operator='-')
  11591. \- Value: CallExpr:
  11592. |- Method: AccessorExpr (Mode=':')
  11593. |- Object: CallExpr:
  11594. |- Method: AccessorExpr (Mode=':')
  11595. |- Object: CallExpr:
  11596. |- Method: AccessorExpr (Mode=':')
  11597. |- Object: NameExpr: 'eles'
  11598. \- Field: get
  11599. \- Arguments: (Len=1)
  11600. \0- LiteralExpr: type=int, value=2
  11601. \- Field: n
  11602. \- Arguments: (Len=0)
  11603. \- Field: is_a
  11604. \- Arguments: (Len=1)
  11605. \0- LiteralExpr: type=cstr, value=MultiArgListFragment
  11606. |- Body: BlockBody: (N_Statements=1)
  11607. |0- ReturnExpr: LiteralExpr: type=int, value=0
  11608. \2- ReturnExpr: LiteralExpr: type=int, value=3
  11609. \5- FunctionDecl:
  11610. |- Head: FunctionDeclHead: Name='MultiArgListExt::impl' Type='NodeType' Nargs=0
  11611. \0- ReturnExpr: CallExpr:
  11612. |- Method: AccessorExpr (Mode=':')
  11613. |- Object: CallExpr:
  11614. |- Method: AccessorExpr (Mode=':')
  11615. |- Object: CallExpr:
  11616. |- Method: AccessorExpr (Mode=':')
  11617. |- Object: CallExpr:
  11618. |- Method: AccessorExpr (Mode=':')
  11619. |- Object: CallExpr:
  11620. |- Method: AccessorExpr (Mode=':')
  11621. |- Object: CallExpr:
  11622. |- Method: AccessorExpr (Mode='::')
  11623. |- Object: NameExpr: 'NodeType'
  11624. \- Field: new
  11625. \- Arguments: (Len=1)
  11626. \0- LiteralExpr: type=cstr, value=MultiArgListExt
  11627. \- Field: set_printer
  11628. \- Arguments: (Len=1)
  11629. \0- CastExpr (Target='NodePrinter')
  11630. \- Value: AccessorExpr (Mode='::')
  11631. |- Object: NameExpr: 'MultiArgListExt'
  11632. \- Field: print
  11633. \- Field: set_creator
  11634. \- Arguments: (Len=1)
  11635. \0- CastExpr (Target='NodeCreator')
  11636. \- Value: AccessorExpr (Mode='::')
  11637. |- Object: NameExpr: 'MultiArgListExt'
  11638. \- Field: create
  11639. \- Field: set_matcher
  11640. \- Arguments: (Len=1)
  11641. \0- CastExpr (Target='NodeMatcher')
  11642. \- Value: AccessorExpr (Mode='::')
  11643. |- Object: NameExpr: 'MultiArgListExt'
  11644. \- Field: match
  11645. \- Field: matches
  11646. \- Arguments: (Len=1)
  11647. \0- LiteralExpr: type=int, value=3
  11648. \- Field: addtype
  11649. \- Arguments: (Len=1)
  11650. \0- LiteralExpr: type=cstr, value=MultiArgListFragment
  11651. |8- SepExpr (Consumed=2)
  11652. |9- TypeDecl:
  11653. |- Head: TypeDeclHead: `MultiArgList` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  11654. \- Body: TypeDeclBody: (N_Statements=6)
  11655. |0- DeclExpr: 'NodeType type_'
  11656. |1- DeclExpr: 'List args'
  11657. |2- FunctionDecl:
  11658. |- Head: FunctionDeclHead: Name='MultiArgList::print' Type='void' Nargs=2
  11659. |0- MultiArgList node
  11660. \1- int depth
  11661. |0- CallExpr:
  11662. |- Method: NameExpr: 'printf'
  11663. \- Arguments: (Len=2)
  11664. |0- LiteralExpr: type=cstr, value=MultiArgList: (Size=%i)\n
  11665. \1- AccessorExpr (Mode='.')
  11666. |- Object: AccessorExpr (Mode='.')
  11667. |- Object: NameExpr: 'node'
  11668. \- Field: args
  11669. \- Field: len
  11670. |1- AssignmentExpr (Operator='=')
  11671. |- LHS: DeclExpr: 'int i'
  11672. \- RHS: LiteralExpr: type=int, value=0
  11673. |2- WhileExpr:
  11674. |- Condition: BinOpExpr (Operator='<')
  11675. |- LHS: NameExpr: 'i'
  11676. \- RHS: AccessorExpr (Mode='.')
  11677. |- Object: AccessorExpr (Mode='.')
  11678. |- Object: NameExpr: 'node'
  11679. \- Field: args
  11680. \- Field: len
  11681. |- Body: BlockBody: (N_Statements=3)
  11682. |0- CallExpr:
  11683. |- Method: AccessorExpr (Mode='::')
  11684. |- Object: NameExpr: 'parse'
  11685. \- Field: indent
  11686. \- Arguments: (Len=1)
  11687. \0- BinOpExpr (Operator='+')
  11688. |- LHS: NameExpr: 'depth'
  11689. \- RHS: LiteralExpr: type=int, value=1
  11690. |1- IfExpr:
  11691. |- Condition: BinOpExpr (Operator='==')
  11692. |- LHS: NameExpr: 'i'
  11693. \- RHS: BinOpExpr (Operator='-')
  11694. |- LHS: AccessorExpr (Mode='.')
  11695. |- Object: AccessorExpr (Mode='.')
  11696. |- Object: NameExpr: 'node'
  11697. \- Field: args
  11698. \- Field: len
  11699. \- RHS: LiteralExpr: type=int, value=1
  11700. |- Body: BlockBody: (N_Statements=1)
  11701. |0- CallExpr:
  11702. |- Method: NameExpr: 'printf'
  11703. \- Arguments: (Len=3)
  11704. |0- LiteralExpr: type=cstr, value=\\%i- %s\n
  11705. |1- NameExpr: 'i'
  11706. \2- CallExpr:
  11707. |- Method: AccessorExpr (Mode=':')
  11708. |- Object: AccessorExpr (Mode='.')
  11709. |- Object: NameExpr: 'node'
  11710. \- Field: args
  11711. \- Field: get
  11712. \- Arguments: (Len=1)
  11713. \0- NameExpr: 'i'
  11714. \-- Runoff Clause: BlockBody: (N_Statements=1)
  11715. |0- CallExpr:
  11716. |- Method: NameExpr: 'printf'
  11717. \- Arguments: (Len=3)
  11718. |0- LiteralExpr: type=cstr, value=|%i- %s\n
  11719. |1- NameExpr: 'i'
  11720. \2- CallExpr:
  11721. |- Method: AccessorExpr (Mode=':')
  11722. |- Object: AccessorExpr (Mode='.')
  11723. |- Object: NameExpr: 'node'
  11724. \- Field: args
  11725. \- Field: get
  11726. \- Arguments: (Len=1)
  11727. \0- NameExpr: 'i'
  11728. |2- AssignmentExpr (Operator='+=')
  11729. |- LHS: NameExpr: 'i'
  11730. \- RHS: LiteralExpr: type=int, value=1
  11731. \3- ReturnExpr: <void>
  11732. |3- FunctionDecl:
  11733. |- Head: FunctionDeclHead: Name='MultiArgList::create' Type='MultiArgList' Nargs=1
  11734. \0- EleList eles
  11735. |0- AssignmentExpr (Operator='=')
  11736. |- LHS: DeclExpr: 'MultiArgList new'
  11737. \- RHS: CastExpr (Target='MultiArgList')
  11738. \- Value: CallExpr:
  11739. |- Method: NameExpr: 'malloc'
  11740. \- Arguments: (Len=1)
  11741. \0- IntrinsicExpr: '@sizeof(MultiArgList)@'
  11742. |1- AssignmentExpr (Operator='=')
  11743. |- LHS: DeclExpr: 'Node ele'
  11744. \- RHS: CallExpr:
  11745. |- Method: AccessorExpr (Mode=':')
  11746. |- Object: CallExpr:
  11747. |- Method: AccessorExpr (Mode=':')
  11748. |- Object: NameExpr: 'eles'
  11749. \- Field: get
  11750. \- Arguments: (Len=1)
  11751. \0- LiteralExpr: type=int, value=2
  11752. \- Field: n
  11753. \- Arguments: (Len=0)
  11754. |2- IfExpr:
  11755. |- Condition: CallExpr:
  11756. |- Method: AccessorExpr (Mode=':')
  11757. |- Object: NameExpr: 'ele'
  11758. \- Field: is_a
  11759. \- Arguments: (Len=1)
  11760. \0- LiteralExpr: type=cstr, value=MultiArgListStart
  11761. |- Body: BlockBody: (N_Statements=3)
  11762. |0- AssignmentExpr (Operator='=')
  11763. |- LHS: AccessorExpr (Mode='.')
  11764. |- Object: NameExpr: 'new'
  11765. \- Field: args
  11766. \- RHS: CallExpr:
  11767. |- Method: AccessorExpr (Mode='::')
  11768. |- Object: NameExpr: 'List'
  11769. \- Field: new
  11770. \- Arguments: (Len=0)
  11771. |1- CallExpr:
  11772. |- Method: AccessorExpr (Mode=':')
  11773. |- Object: AccessorExpr (Mode='.')
  11774. |- Object: NameExpr: 'new'
  11775. \- Field: args
  11776. \- Field: append
  11777. \- Arguments: (Len=1)
  11778. \0- AccessorExpr (Mode='.')
  11779. |- Object: CallExpr:
  11780. |- Method: AccessorExpr (Mode=':')
  11781. |- Object: CallExpr:
  11782. |- Method: AccessorExpr (Mode=':')
  11783. |- Object: NameExpr: 'eles'
  11784. \- Field: get
  11785. \- Arguments: (Len=1)
  11786. \0- LiteralExpr: type=int, value=1
  11787. \- Field: t
  11788. \- Arguments: (Len=0)
  11789. \- Field: text
  11790. |2- CallExpr:
  11791. |- Method: AccessorExpr (Mode=':')
  11792. |- Object: AccessorExpr (Mode='.')
  11793. |- Object: NameExpr: 'new'
  11794. \- Field: args
  11795. \- Field: append
  11796. \- Arguments: (Len=1)
  11797. \0- AccessorExpr (Mode='.')
  11798. |- Object: GroupingExpr: CastExpr (Target='MultiArgListStart')
  11799. \- Value: CallExpr:
  11800. |- Method: AccessorExpr (Mode=':')
  11801. |- Object: CallExpr:
  11802. |- Method: AccessorExpr (Mode=':')
  11803. |- Object: NameExpr: 'eles'
  11804. \- Field: get
  11805. \- Arguments: (Len=1)
  11806. \0- LiteralExpr: type=int, value=2
  11807. \- Field: n
  11808. \- Arguments: (Len=0)
  11809. \- Field: text
  11810. \-- Runoff Clause: BlockBody: (N_Statements=2)
  11811. |0- AssignmentExpr (Operator='=')
  11812. |- LHS: AccessorExpr (Mode='.')
  11813. |- Object: NameExpr: 'new'
  11814. \- Field: args
  11815. \- RHS: AccessorExpr (Mode='.')
  11816. |- Object: GroupingExpr: CastExpr (Target='MultiArgList')
  11817. \- Value: NameExpr: 'ele'
  11818. \- Field: args
  11819. |1- CallExpr:
  11820. |- Method: AccessorExpr (Mode=':')
  11821. |- Object: AccessorExpr (Mode='.')
  11822. |- Object: NameExpr: 'new'
  11823. \- Field: args
  11824. \- Field: insert
  11825. \- Arguments: (Len=2)
  11826. |0- LiteralExpr: type=int, value=0
  11827. \1- AccessorExpr (Mode='.')
  11828. |- Object: CallExpr:
  11829. |- Method: AccessorExpr (Mode=':')
  11830. |- Object: CallExpr:
  11831. |- Method: AccessorExpr (Mode=':')
  11832. |- Object: NameExpr: 'eles'
  11833. \- Field: get
  11834. \- Arguments: (Len=1)
  11835. \0- LiteralExpr: type=int, value=1
  11836. \- Field: t
  11837. \- Arguments: (Len=0)
  11838. \- Field: text
  11839. \3- ReturnExpr: NameExpr: 'new'
  11840. |4- FunctionDecl:
  11841. |- Head: FunctionDeclHead: Name='MultiArgList::match' Type='int' Nargs=1
  11842. \0- EleList eles
  11843. |0- IfExpr:
  11844. |- Condition: CallExpr:
  11845. |- Method: AccessorExpr (Mode=':')
  11846. |- Object: CallExpr:
  11847. |- Method: AccessorExpr (Mode=':')
  11848. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  11849. \- Value: AccessorExpr (Mode='.')
  11850. |- Object: CallExpr:
  11851. |- Method: AccessorExpr (Mode=':')
  11852. |- Object: NameExpr: 'eles'
  11853. \- Field: get
  11854. \- Arguments: (Len=1)
  11855. \0- LiteralExpr: type=int, value=0
  11856. \- Field: is_token
  11857. \- Field: or
  11858. \- Arguments: (Len=1)
  11859. \0- UnOpExpr (Operator='-')
  11860. \- Value: AccessorExpr (Mode='.')
  11861. |- Object: CallExpr:
  11862. |- Method: AccessorExpr (Mode=':')
  11863. |- Object: NameExpr: 'eles'
  11864. \- Field: get
  11865. \- Arguments: (Len=1)
  11866. \0- LiteralExpr: type=int, value=1
  11867. \- Field: is_token
  11868. \- Field: or
  11869. \- Arguments: (Len=1)
  11870. \0- AccessorExpr (Mode='.')
  11871. |- Object: CallExpr:
  11872. |- Method: AccessorExpr (Mode=':')
  11873. |- Object: NameExpr: 'eles'
  11874. \- Field: get
  11875. \- Arguments: (Len=1)
  11876. \0- LiteralExpr: type=int, value=2
  11877. \- Field: is_token
  11878. |- Body: BlockBody: (N_Statements=1)
  11879. |0- ReturnExpr: LiteralExpr: type=int, value=0
  11880. |1- IfExpr:
  11881. |- Condition: CallExpr:
  11882. |- Method: AccessorExpr (Mode=':')
  11883. |- Object: CallExpr:
  11884. |- Method: AccessorExpr (Mode=':')
  11885. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  11886. \- Value: CallExpr:
  11887. |- Method: AccessorExpr (Mode=':')
  11888. |- Object: CallExpr:
  11889. |- Method: AccessorExpr (Mode=':')
  11890. |- Object: CallExpr:
  11891. |- Method: AccessorExpr (Mode=':')
  11892. |- Object: NameExpr: 'eles'
  11893. \- Field: get
  11894. \- Arguments: (Len=1)
  11895. \0- LiteralExpr: type=int, value=0
  11896. \- Field: t
  11897. \- Arguments: (Len=0)
  11898. \- Field: is_a
  11899. \- Arguments: (Len=1)
  11900. \0- LiteralExpr: type=cstr, value=T_ARGLIST_START
  11901. \- Field: or
  11902. \- Arguments: (Len=1)
  11903. \0- UnOpExpr (Operator='-')
  11904. \- Value: CallExpr:
  11905. |- Method: AccessorExpr (Mode=':')
  11906. |- Object: CallExpr:
  11907. |- Method: AccessorExpr (Mode=':')
  11908. |- Object: CallExpr:
  11909. |- Method: AccessorExpr (Mode=':')
  11910. |- Object: NameExpr: 'eles'
  11911. \- Field: get
  11912. \- Arguments: (Len=1)
  11913. \0- LiteralExpr: type=int, value=1
  11914. \- Field: t
  11915. \- Arguments: (Len=0)
  11916. \- Field: is_a
  11917. \- Arguments: (Len=1)
  11918. \0- LiteralExpr: type=cstr, value=T_ARGLIST_ELE
  11919. \- Field: or
  11920. \- Arguments: (Len=1)
  11921. \0- UnOpExpr (Operator='-')
  11922. \- Value: CallExpr:
  11923. |- Method: AccessorExpr (Mode=':')
  11924. |- Object: CallExpr:
  11925. |- Method: AccessorExpr (Mode=':')
  11926. |- Object: CallExpr:
  11927. |- Method: AccessorExpr (Mode=':')
  11928. |- Object: NameExpr: 'eles'
  11929. \- Field: get
  11930. \- Arguments: (Len=1)
  11931. \0- LiteralExpr: type=int, value=2
  11932. \- Field: n
  11933. \- Arguments: (Len=0)
  11934. \- Field: is_a
  11935. \- Arguments: (Len=1)
  11936. \0- LiteralExpr: type=cstr, value=MultiArgListFragment
  11937. |- Body: BlockBody: (N_Statements=1)
  11938. |0- ReturnExpr: LiteralExpr: type=int, value=0
  11939. \2- ReturnExpr: LiteralExpr: type=int, value=3
  11940. \5- FunctionDecl:
  11941. |- Head: FunctionDeclHead: Name='MultiArgList::impl' Type='NodeType' Nargs=0
  11942. \0- ReturnExpr: CallExpr:
  11943. |- Method: AccessorExpr (Mode=':')
  11944. |- Object: CallExpr:
  11945. |- Method: AccessorExpr (Mode=':')
  11946. |- Object: CallExpr:
  11947. |- Method: AccessorExpr (Mode=':')
  11948. |- Object: CallExpr:
  11949. |- Method: AccessorExpr (Mode=':')
  11950. |- Object: CallExpr:
  11951. |- Method: AccessorExpr (Mode=':')
  11952. |- Object: CallExpr:
  11953. |- Method: AccessorExpr (Mode='::')
  11954. |- Object: NameExpr: 'NodeType'
  11955. \- Field: new
  11956. \- Arguments: (Len=1)
  11957. \0- LiteralExpr: type=cstr, value=MultiArgList
  11958. \- Field: set_printer
  11959. \- Arguments: (Len=1)
  11960. \0- CastExpr (Target='NodePrinter')
  11961. \- Value: AccessorExpr (Mode='::')
  11962. |- Object: NameExpr: 'MultiArgList'
  11963. \- Field: print
  11964. \- Field: set_creator
  11965. \- Arguments: (Len=1)
  11966. \0- CastExpr (Target='NodeCreator')
  11967. \- Value: AccessorExpr (Mode='::')
  11968. |- Object: NameExpr: 'MultiArgList'
  11969. \- Field: create
  11970. \- Field: set_matcher
  11971. \- Arguments: (Len=1)
  11972. \0- CastExpr (Target='NodeMatcher')
  11973. \- Value: AccessorExpr (Mode='::')
  11974. |- Object: NameExpr: 'MultiArgList'
  11975. \- Field: match
  11976. \- Field: matches
  11977. \- Arguments: (Len=1)
  11978. \0- LiteralExpr: type=int, value=3
  11979. \- Field: addtype
  11980. \- Arguments: (Len=1)
  11981. \0- LiteralExpr: type=cstr, value=ArgList
  11982. |10- SepExpr (Consumed=2)
  11983. |22- SepExpr (Consumed=1)
  11984. |23- FileNode: (N_Statements=3)
  11985. |0- SepExpr (Consumed=1)
  11986. |1- TypeDecl:
  11987. |- Head: TypeDeclHead: `GroupingExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  11988. \- Body: TypeDeclBody: (N_Statements=7)
  11989. |0- DeclExpr: 'NodeType type_'
  11990. |1- DeclExpr: 'Node contents'
  11991. |2- FunctionDecl:
  11992. |- Head: FunctionDeclHead: Name='GroupingExpr::print' Type='void' Nargs=2
  11993. |0- GroupingExpr node
  11994. \1- int depth
  11995. |0- CallExpr:
  11996. |- Method: NameExpr: 'printf'
  11997. \- Arguments: (Len=1)
  11998. \0- LiteralExpr: type=cstr, value=GroupingExpr:
  11999. |1- CallExpr:
  12000. |- Method: AccessorExpr (Mode=':')
  12001. |- Object: AccessorExpr (Mode='.')
  12002. |- Object: NameExpr: 'node'
  12003. \- Field: contents
  12004. \- Field: print
  12005. \- Arguments: (Len=1)
  12006. \0- BinOpExpr (Operator='+')
  12007. |- LHS: NameExpr: 'depth'
  12008. \- RHS: LiteralExpr: type=int, value=1
  12009. \2- ReturnExpr: <void>
  12010. |3- FunctionDecl:
  12011. |- Head: FunctionDeclHead: Name='GroupingExpr::create' Type='GroupingExpr' Nargs=1
  12012. \0- EleList eles
  12013. |0- AssignmentExpr (Operator='=')
  12014. |- LHS: DeclExpr: 'GroupingExpr new'
  12015. \- RHS: CastExpr (Target='GroupingExpr')
  12016. \- Value: CallExpr:
  12017. |- Method: NameExpr: 'malloc'
  12018. \- Arguments: (Len=1)
  12019. \0- IntrinsicExpr: '@sizeof(GroupingExpr)@'
  12020. |1- AssignmentExpr (Operator='=')
  12021. |- LHS: AccessorExpr (Mode='.')
  12022. |- Object: NameExpr: 'new'
  12023. \- Field: contents
  12024. \- RHS: CallExpr:
  12025. |- Method: AccessorExpr (Mode=':')
  12026. |- Object: CallExpr:
  12027. |- Method: AccessorExpr (Mode=':')
  12028. |- Object: NameExpr: 'eles'
  12029. \- Field: get
  12030. \- Arguments: (Len=1)
  12031. \0- LiteralExpr: type=int, value=1
  12032. \- Field: n
  12033. \- Arguments: (Len=0)
  12034. \2- ReturnExpr: NameExpr: 'new'
  12035. |4- FunctionDecl:
  12036. |- Head: FunctionDeclHead: Name='GroupingExpr::match' Type='int' Nargs=1
  12037. \0- EleList eles
  12038. |0- IfExpr:
  12039. |- Condition: CallExpr:
  12040. |- Method: AccessorExpr (Mode=':')
  12041. |- Object: CallExpr:
  12042. |- Method: AccessorExpr (Mode=':')
  12043. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  12044. \- Value: AccessorExpr (Mode='.')
  12045. |- Object: CallExpr:
  12046. |- Method: AccessorExpr (Mode=':')
  12047. |- Object: NameExpr: 'eles'
  12048. \- Field: get
  12049. \- Arguments: (Len=1)
  12050. \0- LiteralExpr: type=int, value=0
  12051. \- Field: is_token
  12052. \- Field: or
  12053. \- Arguments: (Len=1)
  12054. \0- AccessorExpr (Mode='.')
  12055. |- Object: CallExpr:
  12056. |- Method: AccessorExpr (Mode=':')
  12057. |- Object: NameExpr: 'eles'
  12058. \- Field: get
  12059. \- Arguments: (Len=1)
  12060. \0- LiteralExpr: type=int, value=1
  12061. \- Field: is_token
  12062. \- Field: or
  12063. \- Arguments: (Len=1)
  12064. \0- UnOpExpr (Operator='-')
  12065. \- Value: AccessorExpr (Mode='.')
  12066. |- Object: CallExpr:
  12067. |- Method: AccessorExpr (Mode=':')
  12068. |- Object: NameExpr: 'eles'
  12069. \- Field: get
  12070. \- Arguments: (Len=1)
  12071. \0- LiteralExpr: type=int, value=2
  12072. \- Field: is_token
  12073. |- Body: BlockBody: (N_Statements=1)
  12074. |0- ReturnExpr: LiteralExpr: type=int, value=0
  12075. |1- IfExpr:
  12076. |- Condition: CallExpr:
  12077. |- Method: AccessorExpr (Mode=':')
  12078. |- Object: CallExpr:
  12079. |- Method: AccessorExpr (Mode=':')
  12080. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  12081. |- LHS: AccessorExpr (Mode='.')
  12082. |- Object: AccessorExpr (Mode='.')
  12083. |- Object: CallExpr:
  12084. |- Method: AccessorExpr (Mode=':')
  12085. |- Object: CallExpr:
  12086. |- Method: AccessorExpr (Mode=':')
  12087. |- Object: NameExpr: 'eles'
  12088. \- Field: get
  12089. \- Arguments: (Len=1)
  12090. \0- LiteralExpr: type=int, value=0
  12091. \- Field: t
  12092. \- Arguments: (Len=0)
  12093. \- Field: type_
  12094. \- Field: name
  12095. \- RHS: LiteralExpr: type=cstr, value=T_PAREN_OPEN
  12096. \- Field: or
  12097. \- Arguments: (Len=1)
  12098. \0- BinOpExpr (Operator='!=')
  12099. |- LHS: AccessorExpr (Mode='.')
  12100. |- Object: AccessorExpr (Mode='.')
  12101. |- Object: CallExpr:
  12102. |- Method: AccessorExpr (Mode=':')
  12103. |- Object: CallExpr:
  12104. |- Method: AccessorExpr (Mode=':')
  12105. |- Object: NameExpr: 'eles'
  12106. \- Field: get
  12107. \- Arguments: (Len=1)
  12108. \0- LiteralExpr: type=int, value=2
  12109. \- Field: t
  12110. \- Arguments: (Len=0)
  12111. \- Field: type_
  12112. \- Field: name
  12113. \- RHS: LiteralExpr: type=cstr, value=T_PAREN_CLOSE
  12114. \- Field: or
  12115. \- Arguments: (Len=1)
  12116. \0- UnOpExpr (Operator='-')
  12117. \- Value: CallExpr:
  12118. |- Method: AccessorExpr (Mode=':')
  12119. |- Object: CallExpr:
  12120. |- Method: AccessorExpr (Mode=':')
  12121. |- Object: CallExpr:
  12122. |- Method: AccessorExpr (Mode=':')
  12123. |- Object: NameExpr: 'eles'
  12124. \- Field: get
  12125. \- Arguments: (Len=1)
  12126. \0- LiteralExpr: type=int, value=1
  12127. \- Field: n
  12128. \- Arguments: (Len=0)
  12129. \- Field: is_a
  12130. \- Arguments: (Len=1)
  12131. \0- LiteralExpr: type=cstr, value=ValueExpression
  12132. |- Body: BlockBody: (N_Statements=1)
  12133. |0- ReturnExpr: LiteralExpr: type=int, value=0
  12134. |2- IfExpr:
  12135. |- Condition: CallExpr:
  12136. |- Method: AccessorExpr (Mode='::')
  12137. |- Object: NameExpr: 'parse'
  12138. \- Field: lookahead_is_possibly_function
  12139. \- Arguments: (Len=1)
  12140. \0- NameExpr: 'eles'
  12141. |- Body: BlockBody: (N_Statements=1)
  12142. |0- ReturnExpr: LiteralExpr: type=int, value=0
  12143. \3- ReturnExpr: LiteralExpr: type=int, value=3
  12144. |5- FunctionDecl:
  12145. |- Head: FunctionDeclHead: Name='GroupingExpr::visit' Type='void' Nargs=2
  12146. |0- GroupingExpr n
  12147. \1- TransformerPass p
  12148. |0- AssignmentExpr (Operator='=')
  12149. |- LHS: AccessorExpr (Mode='.')
  12150. |- Object: NameExpr: 'n'
  12151. \- Field: contents
  12152. \- RHS: CallExpr:
  12153. |- Method: AccessorExpr (Mode=':')
  12154. |- Object: NameExpr: 'p'
  12155. \- Field: visit
  12156. \- Arguments: (Len=1)
  12157. \0- AccessorExpr (Mode='.')
  12158. |- Object: NameExpr: 'n'
  12159. \- Field: contents
  12160. \1- ReturnExpr: <void>
  12161. \6- FunctionDecl:
  12162. |- Head: FunctionDeclHead: Name='GroupingExpr::impl' Type='NodeType' Nargs=0
  12163. \0- ReturnExpr: CallExpr:
  12164. |- Method: AccessorExpr (Mode=':')
  12165. |- Object: CallExpr:
  12166. |- Method: AccessorExpr (Mode=':')
  12167. |- Object: CallExpr:
  12168. |- Method: AccessorExpr (Mode=':')
  12169. |- Object: CallExpr:
  12170. |- Method: AccessorExpr (Mode=':')
  12171. |- Object: CallExpr:
  12172. |- Method: AccessorExpr (Mode=':')
  12173. |- Object: CallExpr:
  12174. |- Method: AccessorExpr (Mode=':')
  12175. |- Object: CallExpr:
  12176. |- Method: AccessorExpr (Mode=':')
  12177. |- Object: CallExpr:
  12178. |- Method: AccessorExpr (Mode='::')
  12179. |- Object: NameExpr: 'NodeType'
  12180. \- Field: new
  12181. \- Arguments: (Len=1)
  12182. \0- LiteralExpr: type=cstr, value=GroupingExpr
  12183. \- Field: set_printer
  12184. \- Arguments: (Len=1)
  12185. \0- CastExpr (Target='NodePrinter')
  12186. \- Value: AccessorExpr (Mode='::')
  12187. |- Object: NameExpr: 'GroupingExpr'
  12188. \- Field: print
  12189. \- Field: set_creator
  12190. \- Arguments: (Len=1)
  12191. \0- CastExpr (Target='NodeCreator')
  12192. \- Value: AccessorExpr (Mode='::')
  12193. |- Object: NameExpr: 'GroupingExpr'
  12194. \- Field: create
  12195. \- Field: set_matcher
  12196. \- Arguments: (Len=1)
  12197. \0- CastExpr (Target='NodeMatcher')
  12198. \- Value: AccessorExpr (Mode='::')
  12199. |- Object: NameExpr: 'GroupingExpr'
  12200. \- Field: match
  12201. \- Field: set_visitor
  12202. \- Arguments: (Len=1)
  12203. \0- CastExpr (Target='NodeVisitor')
  12204. \- Value: AccessorExpr (Mode='::')
  12205. |- Object: NameExpr: 'GroupingExpr'
  12206. \- Field: visit
  12207. \- Field: matches
  12208. \- Arguments: (Len=1)
  12209. \0- LiteralExpr: type=int, value=3
  12210. \- Field: addtype
  12211. \- Arguments: (Len=1)
  12212. \0- LiteralExpr: type=cstr, value=Tuple
  12213. \- Field: addtype
  12214. \- Arguments: (Len=1)
  12215. \0- LiteralExpr: type=cstr, value=ValueExpression
  12216. |2- SepExpr (Consumed=2)
  12217. |24- SepExpr (Consumed=1)
  12218. |25- FileNode: (N_Statements=5)
  12219. |0- SepExpr (Consumed=1)
  12220. |1- TypeDecl:
  12221. |- Head: TypeDeclHead: `IfExprHead` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  12222. \- Body: TypeDeclBody: (N_Statements=7)
  12223. |0- DeclExpr: 'NodeType type_'
  12224. |1- DeclExpr: 'Node condition'
  12225. |2- DeclExpr: 'bool is_elif'
  12226. |3- FunctionDecl:
  12227. |- Head: FunctionDeclHead: Name='IfExprHead::print' Type='void' Nargs=2
  12228. |0- IfExprHead node
  12229. \1- int depth
  12230. |0- CallExpr:
  12231. |- Method: NameExpr: 'printf'
  12232. \- Arguments: (Len=2)
  12233. |0- LiteralExpr: type=cstr, value=IfExprHead: Is_Elif:%i, Condition=
  12234. \1- CastExpr (Target='int')
  12235. \- Value: AccessorExpr (Mode='.')
  12236. |- Object: NameExpr: 'node'
  12237. \- Field: is_elif
  12238. |1- CallExpr:
  12239. |- Method: AccessorExpr (Mode=':')
  12240. |- Object: AccessorExpr (Mode='.')
  12241. |- Object: NameExpr: 'node'
  12242. \- Field: condition
  12243. \- Field: print
  12244. \- Arguments: (Len=1)
  12245. \0- BinOpExpr (Operator='+')
  12246. |- LHS: NameExpr: 'depth'
  12247. \- RHS: LiteralExpr: type=int, value=1
  12248. \2- ReturnExpr: <void>
  12249. |4- FunctionDecl:
  12250. |- Head: FunctionDeclHead: Name='IfExprHead::create' Type='IfExprHead' Nargs=1
  12251. \0- EleList eles
  12252. |0- AssignmentExpr (Operator='=')
  12253. |- LHS: DeclExpr: 'IfExprHead new'
  12254. \- RHS: CastExpr (Target='IfExprHead')
  12255. \- Value: CallExpr:
  12256. |- Method: NameExpr: 'malloc'
  12257. \- Arguments: (Len=1)
  12258. \0- IntrinsicExpr: '@sizeof(IfExprHead)@'
  12259. |1- AssignmentExpr (Operator='=')
  12260. |- LHS: AccessorExpr (Mode='.')
  12261. |- Object: NameExpr: 'new'
  12262. \- Field: condition
  12263. \- RHS: CallExpr:
  12264. |- Method: AccessorExpr (Mode=':')
  12265. |- Object: CallExpr:
  12266. |- Method: AccessorExpr (Mode=':')
  12267. |- Object: NameExpr: 'eles'
  12268. \- Field: get
  12269. \- Arguments: (Len=1)
  12270. \0- LiteralExpr: type=int, value=1
  12271. \- Field: n
  12272. \- Arguments: (Len=0)
  12273. |2- AssignmentExpr (Operator='=')
  12274. |- LHS: AccessorExpr (Mode='.')
  12275. |- Object: NameExpr: 'new'
  12276. \- Field: is_elif
  12277. \- RHS: CallExpr:
  12278. |- Method: AccessorExpr (Mode=':')
  12279. |- Object: CallExpr:
  12280. |- Method: AccessorExpr (Mode=':')
  12281. |- Object: CallExpr:
  12282. |- Method: AccessorExpr (Mode=':')
  12283. |- Object: NameExpr: 'eles'
  12284. \- Field: get
  12285. \- Arguments: (Len=1)
  12286. \0- LiteralExpr: type=int, value=0
  12287. \- Field: t
  12288. \- Arguments: (Len=0)
  12289. \- Field: is_a
  12290. \- Arguments: (Len=1)
  12291. \0- LiteralExpr: type=cstr, value=T_ELIF
  12292. \3- ReturnExpr: NameExpr: 'new'
  12293. |5- FunctionDecl:
  12294. |- Head: FunctionDeclHead: Name='IfExprHead::match' Type='int' Nargs=1
  12295. \0- EleList eles
  12296. |0- IfExpr:
  12297. |- Condition: CallExpr:
  12298. |- Method: AccessorExpr (Mode=':')
  12299. |- Object: CallExpr:
  12300. |- Method: AccessorExpr (Mode=':')
  12301. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  12302. \- Value: AccessorExpr (Mode='.')
  12303. |- Object: CallExpr:
  12304. |- Method: AccessorExpr (Mode=':')
  12305. |- Object: NameExpr: 'eles'
  12306. \- Field: get
  12307. \- Arguments: (Len=1)
  12308. \0- LiteralExpr: type=int, value=0
  12309. \- Field: is_token
  12310. \- Field: or
  12311. \- Arguments: (Len=1)
  12312. \0- AccessorExpr (Mode='.')
  12313. |- Object: CallExpr:
  12314. |- Method: AccessorExpr (Mode=':')
  12315. |- Object: NameExpr: 'eles'
  12316. \- Field: get
  12317. \- Arguments: (Len=1)
  12318. \0- LiteralExpr: type=int, value=1
  12319. \- Field: is_token
  12320. \- Field: or
  12321. \- Arguments: (Len=1)
  12322. \0- UnOpExpr (Operator='-')
  12323. \- Value: AccessorExpr (Mode='.')
  12324. |- Object: CallExpr:
  12325. |- Method: AccessorExpr (Mode=':')
  12326. |- Object: NameExpr: 'eles'
  12327. \- Field: get
  12328. \- Arguments: (Len=1)
  12329. \0- LiteralExpr: type=int, value=2
  12330. \- Field: is_token
  12331. |- Body: BlockBody: (N_Statements=1)
  12332. |0- ReturnExpr: LiteralExpr: type=int, value=0
  12333. |1- IfExpr:
  12334. |- Condition: CallExpr:
  12335. |- Method: AccessorExpr (Mode=':')
  12336. |- Object: CallExpr:
  12337. |- Method: AccessorExpr (Mode=':')
  12338. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  12339. \- Value: CallExpr:
  12340. |- Method: AccessorExpr (Mode=':')
  12341. |- Object: GroupingExpr: BinOpExpr (Operator='==')
  12342. |- LHS: AccessorExpr (Mode='.')
  12343. |- Object: AccessorExpr (Mode='.')
  12344. |- Object: CallExpr:
  12345. |- Method: AccessorExpr (Mode=':')
  12346. |- Object: CallExpr:
  12347. |- Method: AccessorExpr (Mode=':')
  12348. |- Object: NameExpr: 'eles'
  12349. \- Field: get
  12350. \- Arguments: (Len=1)
  12351. \0- LiteralExpr: type=int, value=0
  12352. \- Field: t
  12353. \- Arguments: (Len=0)
  12354. \- Field: type_
  12355. \- Field: name
  12356. \- RHS: LiteralExpr: type=cstr, value=T_IF
  12357. \- Field: or
  12358. \- Arguments: (Len=1)
  12359. \0- BinOpExpr (Operator='==')
  12360. |- LHS: AccessorExpr (Mode='.')
  12361. |- Object: AccessorExpr (Mode='.')
  12362. |- Object: CallExpr:
  12363. |- Method: AccessorExpr (Mode=':')
  12364. |- Object: CallExpr:
  12365. |- Method: AccessorExpr (Mode=':')
  12366. |- Object: NameExpr: 'eles'
  12367. \- Field: get
  12368. \- Arguments: (Len=1)
  12369. \0- LiteralExpr: type=int, value=0
  12370. \- Field: t
  12371. \- Arguments: (Len=0)
  12372. \- Field: type_
  12373. \- Field: name
  12374. \- RHS: LiteralExpr: type=cstr, value=T_ELIF
  12375. \- Field: or
  12376. \- Arguments: (Len=1)
  12377. \0- BinOpExpr (Operator='!=')
  12378. |- LHS: AccessorExpr (Mode='.')
  12379. |- Object: AccessorExpr (Mode='.')
  12380. |- Object: CallExpr:
  12381. |- Method: AccessorExpr (Mode=':')
  12382. |- Object: CallExpr:
  12383. |- Method: AccessorExpr (Mode=':')
  12384. |- Object: NameExpr: 'eles'
  12385. \- Field: get
  12386. \- Arguments: (Len=1)
  12387. \0- LiteralExpr: type=int, value=2
  12388. \- Field: t
  12389. \- Arguments: (Len=0)
  12390. \- Field: type_
  12391. \- Field: name
  12392. \- RHS: LiteralExpr: type=cstr, value=T_DO
  12393. \- Field: or
  12394. \- Arguments: (Len=1)
  12395. \0- UnOpExpr (Operator='-')
  12396. \- Value: CallExpr:
  12397. |- Method: AccessorExpr (Mode=':')
  12398. |- Object: CallExpr:
  12399. |- Method: AccessorExpr (Mode=':')
  12400. |- Object: CallExpr:
  12401. |- Method: AccessorExpr (Mode=':')
  12402. |- Object: NameExpr: 'eles'
  12403. \- Field: get
  12404. \- Arguments: (Len=1)
  12405. \0- LiteralExpr: type=int, value=1
  12406. \- Field: n
  12407. \- Arguments: (Len=0)
  12408. \- Field: is_a
  12409. \- Arguments: (Len=1)
  12410. \0- LiteralExpr: type=cstr, value=ValueExpression
  12411. |- Body: BlockBody: (N_Statements=1)
  12412. |0- ReturnExpr: LiteralExpr: type=int, value=0
  12413. \2- ReturnExpr: LiteralExpr: type=int, value=3
  12414. \6- FunctionDecl:
  12415. |- Head: FunctionDeclHead: Name='IfExprHead::impl' Type='NodeType' Nargs=0
  12416. \0- ReturnExpr: CallExpr:
  12417. |- Method: AccessorExpr (Mode=':')
  12418. |- Object: CallExpr:
  12419. |- Method: AccessorExpr (Mode=':')
  12420. |- Object: CallExpr:
  12421. |- Method: AccessorExpr (Mode=':')
  12422. |- Object: CallExpr:
  12423. |- Method: AccessorExpr (Mode=':')
  12424. |- Object: CallExpr:
  12425. |- Method: AccessorExpr (Mode='::')
  12426. |- Object: NameExpr: 'NodeType'
  12427. \- Field: new
  12428. \- Arguments: (Len=1)
  12429. \0- LiteralExpr: type=cstr, value=IfExprHead
  12430. \- Field: set_printer
  12431. \- Arguments: (Len=1)
  12432. \0- CastExpr (Target='NodePrinter')
  12433. \- Value: AccessorExpr (Mode='::')
  12434. |- Object: NameExpr: 'IfExprHead'
  12435. \- Field: print
  12436. \- Field: set_creator
  12437. \- Arguments: (Len=1)
  12438. \0- CastExpr (Target='NodeCreator')
  12439. \- Value: AccessorExpr (Mode='::')
  12440. |- Object: NameExpr: 'IfExprHead'
  12441. \- Field: create
  12442. \- Field: set_matcher
  12443. \- Arguments: (Len=1)
  12444. \0- CastExpr (Target='NodeMatcher')
  12445. \- Value: AccessorExpr (Mode='::')
  12446. |- Object: NameExpr: 'IfExprHead'
  12447. \- Field: match
  12448. \- Field: matches
  12449. \- Arguments: (Len=1)
  12450. \0- LiteralExpr: type=int, value=3
  12451. |2- SepExpr (Consumed=2)
  12452. |3- TypeDecl:
  12453. |- Head: TypeDeclHead: `IfExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  12454. \- Body: TypeDeclBody: (N_Statements=9)
  12455. |0- DeclExpr: 'NodeType type_'
  12456. |1- DeclExpr: 'Node condition'
  12457. |2- DeclExpr: 'bool is_elif'
  12458. |3- DeclExpr: 'BlockBody body'
  12459. |4- FunctionDecl:
  12460. |- Head: FunctionDeclHead: Name='IfExpr::print' Type='void' Nargs=2
  12461. |0- IfExpr node
  12462. \1- int depth
  12463. |0- CallExpr:
  12464. |- Method: NameExpr: 'printf'
  12465. \- Arguments: (Len=1)
  12466. \0- LiteralExpr: type=cstr, value=IfExpr:\n
  12467. |1- CallExpr:
  12468. |- Method: AccessorExpr (Mode='::')
  12469. |- Object: NameExpr: 'parse'
  12470. \- Field: indent
  12471. \- Arguments: (Len=1)
  12472. \0- BinOpExpr (Operator='+')
  12473. |- LHS: NameExpr: 'depth'
  12474. \- RHS: LiteralExpr: type=int, value=1
  12475. |2- CallExpr:
  12476. |- Method: NameExpr: 'printf'
  12477. \- Arguments: (Len=1)
  12478. \0- LiteralExpr: type=cstr, value=|- Condition:
  12479. |3- CallExpr:
  12480. |- Method: AccessorExpr (Mode=':')
  12481. |- Object: GroupingExpr: CastExpr (Target='Node')
  12482. \- Value: AccessorExpr (Mode='.')
  12483. |- Object: NameExpr: 'node'
  12484. \- Field: condition
  12485. \- Field: print
  12486. \- Arguments: (Len=1)
  12487. \0- BinOpExpr (Operator='+')
  12488. |- LHS: NameExpr: 'depth'
  12489. \- RHS: LiteralExpr: type=int, value=2
  12490. |4- CallExpr:
  12491. |- Method: AccessorExpr (Mode='::')
  12492. |- Object: NameExpr: 'parse'
  12493. \- Field: indent
  12494. \- Arguments: (Len=1)
  12495. \0- BinOpExpr (Operator='+')
  12496. |- LHS: NameExpr: 'depth'
  12497. \- RHS: LiteralExpr: type=int, value=1
  12498. |5- CallExpr:
  12499. |- Method: NameExpr: 'printf'
  12500. \- Arguments: (Len=1)
  12501. \0- LiteralExpr: type=cstr, value=|- Body:
  12502. |6- CallExpr:
  12503. |- Method: AccessorExpr (Mode=':')
  12504. |- Object: GroupingExpr: CastExpr (Target='Node')
  12505. \- Value: AccessorExpr (Mode='.')
  12506. |- Object: NameExpr: 'node'
  12507. \- Field: body
  12508. \- Field: print
  12509. \- Arguments: (Len=1)
  12510. \0- BinOpExpr (Operator='+')
  12511. |- LHS: NameExpr: 'depth'
  12512. \- RHS: LiteralExpr: type=int, value=2
  12513. \7- ReturnExpr: <void>
  12514. |5- FunctionDecl:
  12515. |- Head: FunctionDeclHead: Name='IfExpr::create' Type='IfExpr' Nargs=1
  12516. \0- EleList eles
  12517. |0- AssignmentExpr (Operator='=')
  12518. |- LHS: DeclExpr: 'IfExpr new'
  12519. \- RHS: CastExpr (Target='IfExpr')
  12520. \- Value: CallExpr:
  12521. |- Method: NameExpr: 'malloc'
  12522. \- Arguments: (Len=1)
  12523. \0- IntrinsicExpr: '@sizeof(IfExpr)@'
  12524. |1- AssignmentExpr (Operator='=')
  12525. |- LHS: AccessorExpr (Mode='.')
  12526. |- Object: NameExpr: 'new'
  12527. \- Field: condition
  12528. \- RHS: AccessorExpr (Mode='.')
  12529. |- Object: GroupingExpr: CastExpr (Target='IfExprHead')
  12530. \- Value: CallExpr:
  12531. |- Method: AccessorExpr (Mode=':')
  12532. |- Object: CallExpr:
  12533. |- Method: AccessorExpr (Mode=':')
  12534. |- Object: NameExpr: 'eles'
  12535. \- Field: get
  12536. \- Arguments: (Len=1)
  12537. \0- LiteralExpr: type=int, value=0
  12538. \- Field: n
  12539. \- Arguments: (Len=0)
  12540. \- Field: condition
  12541. |2- AssignmentExpr (Operator='=')
  12542. |- LHS: AccessorExpr (Mode='.')
  12543. |- Object: NameExpr: 'new'
  12544. \- Field: is_elif
  12545. \- RHS: AccessorExpr (Mode='.')
  12546. |- Object: GroupingExpr: CastExpr (Target='IfExprHead')
  12547. \- Value: CallExpr:
  12548. |- Method: AccessorExpr (Mode=':')
  12549. |- Object: CallExpr:
  12550. |- Method: AccessorExpr (Mode=':')
  12551. |- Object: NameExpr: 'eles'
  12552. \- Field: get
  12553. \- Arguments: (Len=1)
  12554. \0- LiteralExpr: type=int, value=0
  12555. \- Field: n
  12556. \- Arguments: (Len=0)
  12557. \- Field: is_elif
  12558. |3- AssignmentExpr (Operator='=')
  12559. |- LHS: AccessorExpr (Mode='.')
  12560. |- Object: NameExpr: 'new'
  12561. \- Field: body
  12562. \- RHS: CastExpr (Target='BlockBody')
  12563. \- Value: CallExpr:
  12564. |- Method: AccessorExpr (Mode=':')
  12565. |- Object: CallExpr:
  12566. |- Method: AccessorExpr (Mode=':')
  12567. |- Object: NameExpr: 'eles'
  12568. \- Field: get
  12569. \- Arguments: (Len=1)
  12570. \0- LiteralExpr: type=int, value=1
  12571. \- Field: n
  12572. \- Arguments: (Len=0)
  12573. \4- ReturnExpr: NameExpr: 'new'
  12574. |6- FunctionDecl:
  12575. |- Head: FunctionDeclHead: Name='IfExpr::match' Type='int' Nargs=1
  12576. \0- EleList eles
  12577. |0- IfExpr:
  12578. |- Condition: CallExpr:
  12579. |- Method: AccessorExpr (Mode=':')
  12580. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  12581. \- Value: CallExpr:
  12582. |- Method: AccessorExpr (Mode=':')
  12583. |- Object: CallExpr:
  12584. |- Method: AccessorExpr (Mode=':')
  12585. |- Object: CallExpr:
  12586. |- Method: AccessorExpr (Mode=':')
  12587. |- Object: NameExpr: 'eles'
  12588. \- Field: get
  12589. \- Arguments: (Len=1)
  12590. \0- LiteralExpr: type=int, value=0
  12591. \- Field: n
  12592. \- Arguments: (Len=0)
  12593. \- Field: is_a
  12594. \- Arguments: (Len=1)
  12595. \0- LiteralExpr: type=cstr, value=IfExprHead
  12596. \- Field: or
  12597. \- Arguments: (Len=1)
  12598. \0- UnOpExpr (Operator='-')
  12599. \- Value: CallExpr:
  12600. |- Method: AccessorExpr (Mode=':')
  12601. |- Object: CallExpr:
  12602. |- Method: AccessorExpr (Mode=':')
  12603. |- Object: CallExpr:
  12604. |- Method: AccessorExpr (Mode=':')
  12605. |- Object: NameExpr: 'eles'
  12606. \- Field: get
  12607. \- Arguments: (Len=1)
  12608. \0- LiteralExpr: type=int, value=1
  12609. \- Field: n
  12610. \- Arguments: (Len=0)
  12611. \- Field: is_a
  12612. \- Arguments: (Len=1)
  12613. \0- LiteralExpr: type=cstr, value=BlockBody
  12614. |- Body: BlockBody: (N_Statements=1)
  12615. |0- ReturnExpr: LiteralExpr: type=int, value=0
  12616. \1- ReturnExpr: LiteralExpr: type=int, value=2
  12617. |7- FunctionDecl:
  12618. |- Head: FunctionDeclHead: Name='IfExpr::visit' Type='void' Nargs=2
  12619. |0- IfExpr n
  12620. \1- TransformerPass p
  12621. |0- AssignmentExpr (Operator='=')
  12622. |- LHS: AccessorExpr (Mode='.')
  12623. |- Object: NameExpr: 'n'
  12624. \- Field: condition
  12625. \- RHS: CallExpr:
  12626. |- Method: AccessorExpr (Mode=':')
  12627. |- Object: NameExpr: 'p'
  12628. \- Field: visit
  12629. \- Arguments: (Len=1)
  12630. \0- AccessorExpr (Mode='.')
  12631. |- Object: NameExpr: 'n'
  12632. \- Field: condition
  12633. |1- AssignmentExpr (Operator='=')
  12634. |- LHS: AccessorExpr (Mode='.')
  12635. |- Object: NameExpr: 'n'
  12636. \- Field: body
  12637. \- RHS: CastExpr (Target='BlockBody')
  12638. \- Value: CallExpr:
  12639. |- Method: AccessorExpr (Mode=':')
  12640. |- Object: NameExpr: 'p'
  12641. \- Field: visit
  12642. \- Arguments: (Len=1)
  12643. \0- CastExpr (Target='Node')
  12644. \- Value: AccessorExpr (Mode='.')
  12645. |- Object: NameExpr: 'n'
  12646. \- Field: body
  12647. \2- ReturnExpr: <void>
  12648. \8- FunctionDecl:
  12649. |- Head: FunctionDeclHead: Name='IfExpr::impl' Type='NodeType' Nargs=0
  12650. \0- ReturnExpr: CallExpr:
  12651. |- Method: AccessorExpr (Mode=':')
  12652. |- Object: CallExpr:
  12653. |- Method: AccessorExpr (Mode=':')
  12654. |- Object: CallExpr:
  12655. |- Method: AccessorExpr (Mode=':')
  12656. |- Object: CallExpr:
  12657. |- Method: AccessorExpr (Mode=':')
  12658. |- Object: CallExpr:
  12659. |- Method: AccessorExpr (Mode=':')
  12660. |- Object: CallExpr:
  12661. |- Method: AccessorExpr (Mode=':')
  12662. |- Object: CallExpr:
  12663. |- Method: AccessorExpr (Mode=':')
  12664. |- Object: CallExpr:
  12665. |- Method: AccessorExpr (Mode='::')
  12666. |- Object: NameExpr: 'NodeType'
  12667. \- Field: new
  12668. \- Arguments: (Len=1)
  12669. \0- LiteralExpr: type=cstr, value=IfExpr
  12670. \- Field: set_printer
  12671. \- Arguments: (Len=1)
  12672. \0- CastExpr (Target='NodePrinter')
  12673. \- Value: AccessorExpr (Mode='::')
  12674. |- Object: NameExpr: 'IfExpr'
  12675. \- Field: print
  12676. \- Field: set_creator
  12677. \- Arguments: (Len=1)
  12678. \0- CastExpr (Target='NodeCreator')
  12679. \- Value: AccessorExpr (Mode='::')
  12680. |- Object: NameExpr: 'IfExpr'
  12681. \- Field: create
  12682. \- Field: set_matcher
  12683. \- Arguments: (Len=1)
  12684. \0- CastExpr (Target='NodeMatcher')
  12685. \- Value: AccessorExpr (Mode='::')
  12686. |- Object: NameExpr: 'IfExpr'
  12687. \- Field: match
  12688. \- Field: set_visitor
  12689. \- Arguments: (Len=1)
  12690. \0- CastExpr (Target='NodeVisitor')
  12691. \- Value: AccessorExpr (Mode='::')
  12692. |- Object: NameExpr: 'IfExpr'
  12693. \- Field: visit
  12694. \- Field: matches
  12695. \- Arguments: (Len=1)
  12696. \0- LiteralExpr: type=int, value=2
  12697. \- Field: matches_only_nodes
  12698. \- Arguments: (Len=0)
  12699. \- Field: addtype
  12700. \- Arguments: (Len=1)
  12701. \0- LiteralExpr: type=cstr, value=Expression
  12702. |4- SepExpr (Consumed=2)
  12703. |26- SepExpr (Consumed=1)
  12704. |27- FileNode: (N_Statements=3)
  12705. |0- SepExpr (Consumed=1)
  12706. |1- TypeDecl:
  12707. |- Head: TypeDeclHead: `ImportStmt` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  12708. \- Body: TypeDeclBody: (N_Statements=6)
  12709. |0- DeclExpr: 'NodeType type_'
  12710. |1- DeclExpr: 'cstr name'
  12711. |2- FunctionDecl:
  12712. |- Head: FunctionDeclHead: Name='ImportStmt::print' Type='void' Nargs=2
  12713. |0- ImportStmt node
  12714. \1- int depth
  12715. |0- CallExpr:
  12716. |- Method: NameExpr: 'printf'
  12717. \- Arguments: (Len=2)
  12718. |0- LiteralExpr: type=cstr, value=ImportStmt: '%s'\n
  12719. \1- AccessorExpr (Mode='.')
  12720. |- Object: NameExpr: 'node'
  12721. \- Field: name
  12722. \1- ReturnExpr: <void>
  12723. |3- FunctionDecl:
  12724. |- Head: FunctionDeclHead: Name='ImportStmt::create' Type='ImportStmt' Nargs=1
  12725. \0- EleList eles
  12726. |0- AssignmentExpr (Operator='=')
  12727. |- LHS: DeclExpr: 'ImportStmt new'
  12728. \- RHS: CastExpr (Target='ImportStmt')
  12729. \- Value: CallExpr:
  12730. |- Method: NameExpr: 'malloc'
  12731. \- Arguments: (Len=1)
  12732. \0- IntrinsicExpr: '@sizeof(ImportStmt)@'
  12733. |1- AssignmentExpr (Operator='=')
  12734. |- LHS: AccessorExpr (Mode='.')
  12735. |- Object: NameExpr: 'new'
  12736. \- Field: name
  12737. \- RHS: AccessorExpr (Mode='.')
  12738. |- Object: CallExpr:
  12739. |- Method: AccessorExpr (Mode=':')
  12740. |- Object: CallExpr:
  12741. |- Method: AccessorExpr (Mode=':')
  12742. |- Object: NameExpr: 'eles'
  12743. \- Field: get
  12744. \- Arguments: (Len=1)
  12745. \0- LiteralExpr: type=int, value=0
  12746. \- Field: t
  12747. \- Arguments: (Len=0)
  12748. \- Field: text
  12749. \2- ReturnExpr: NameExpr: 'new'
  12750. |4- FunctionDecl:
  12751. |- Head: FunctionDeclHead: Name='ImportStmt::match' Type='int' Nargs=1
  12752. \0- EleList eles
  12753. \0- ReturnExpr: CastExpr (Target='int')
  12754. \- Value: GroupingExpr: BinOpExpr (Operator='==')
  12755. |- LHS: AccessorExpr (Mode='.')
  12756. |- Object: AccessorExpr (Mode='.')
  12757. |- Object: CallExpr:
  12758. |- Method: AccessorExpr (Mode=':')
  12759. |- Object: CallExpr:
  12760. |- Method: AccessorExpr (Mode=':')
  12761. |- Object: NameExpr: 'eles'
  12762. \- Field: get
  12763. \- Arguments: (Len=1)
  12764. \0- LiteralExpr: type=int, value=0
  12765. \- Field: t
  12766. \- Arguments: (Len=0)
  12767. \- Field: type_
  12768. \- Field: name
  12769. \- RHS: LiteralExpr: type=cstr, value=T_IMPORT
  12770. \5- FunctionDecl:
  12771. |- Head: FunctionDeclHead: Name='ImportStmt::impl' Type='NodeType' Nargs=0
  12772. \0- ReturnExpr: CallExpr:
  12773. |- Method: AccessorExpr (Mode=':')
  12774. |- Object: CallExpr:
  12775. |- Method: AccessorExpr (Mode=':')
  12776. |- Object: CallExpr:
  12777. |- Method: AccessorExpr (Mode=':')
  12778. |- Object: CallExpr:
  12779. |- Method: AccessorExpr (Mode=':')
  12780. |- Object: CallExpr:
  12781. |- Method: AccessorExpr (Mode=':')
  12782. |- Object: CallExpr:
  12783. |- Method: AccessorExpr (Mode=':')
  12784. |- Object: CallExpr:
  12785. |- Method: AccessorExpr (Mode='::')
  12786. |- Object: NameExpr: 'NodeType'
  12787. \- Field: new
  12788. \- Arguments: (Len=1)
  12789. \0- LiteralExpr: type=cstr, value=ImportStmt
  12790. \- Field: set_printer
  12791. \- Arguments: (Len=1)
  12792. \0- CastExpr (Target='NodePrinter')
  12793. \- Value: AccessorExpr (Mode='::')
  12794. |- Object: NameExpr: 'ImportStmt'
  12795. \- Field: print
  12796. \- Field: set_creator
  12797. \- Arguments: (Len=1)
  12798. \0- CastExpr (Target='NodeCreator')
  12799. \- Value: AccessorExpr (Mode='::')
  12800. |- Object: NameExpr: 'ImportStmt'
  12801. \- Field: create
  12802. \- Field: set_matcher
  12803. \- Arguments: (Len=1)
  12804. \0- CastExpr (Target='NodeMatcher')
  12805. \- Value: AccessorExpr (Mode='::')
  12806. |- Object: NameExpr: 'ImportStmt'
  12807. \- Field: match
  12808. \- Field: matches
  12809. \- Arguments: (Len=1)
  12810. \0- LiteralExpr: type=int, value=1
  12811. \- Field: matches_only_tokens
  12812. \- Arguments: (Len=0)
  12813. \- Field: addtype
  12814. \- Arguments: (Len=1)
  12815. \0- LiteralExpr: type=cstr, value=ValueExpression
  12816. |2- SepExpr (Consumed=70)
  12817. |28- SepExpr (Consumed=1)
  12818. |29- FileNode: (N_Statements=3)
  12819. |0- SepExpr (Consumed=1)
  12820. |1- TypeDecl:
  12821. |- Head: TypeDeclHead: `IndexExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  12822. \- Body: TypeDeclBody: (N_Statements=8)
  12823. |0- DeclExpr: 'NodeType type_'
  12824. |1- DeclExpr: 'Node value'
  12825. |2- DeclExpr: 'Node array'
  12826. |3- FunctionDecl:
  12827. |- Head: FunctionDeclHead: Name='IndexExpr::print' Type='void' Nargs=2
  12828. |0- IndexExpr node
  12829. \1- int depth
  12830. |0- CallExpr:
  12831. |- Method: NameExpr: 'printf'
  12832. \- Arguments: (Len=1)
  12833. \0- LiteralExpr: type=cstr, value=IndexExpr\n
  12834. |1- CallExpr:
  12835. |- Method: AccessorExpr (Mode='::')
  12836. |- Object: NameExpr: 'parse'
  12837. \- Field: indent
  12838. \- Arguments: (Len=1)
  12839. \0- NameExpr: 'depth'
  12840. |2- CallExpr:
  12841. |- Method: NameExpr: 'printf'
  12842. \- Arguments: (Len=1)
  12843. \0- LiteralExpr: type=cstr, value=|- Array:
  12844. |3- CallExpr:
  12845. |- Method: AccessorExpr (Mode=':')
  12846. |- Object: AccessorExpr (Mode='.')
  12847. |- Object: NameExpr: 'node'
  12848. \- Field: array
  12849. \- Field: print
  12850. \- Arguments: (Len=1)
  12851. \0- BinOpExpr (Operator='+')
  12852. |- LHS: NameExpr: 'depth'
  12853. \- RHS: LiteralExpr: type=int, value=1
  12854. |4- CallExpr:
  12855. |- Method: AccessorExpr (Mode='::')
  12856. |- Object: NameExpr: 'parse'
  12857. \- Field: indent
  12858. \- Arguments: (Len=1)
  12859. \0- NameExpr: 'depth'
  12860. |5- CallExpr:
  12861. |- Method: NameExpr: 'printf'
  12862. \- Arguments: (Len=1)
  12863. \0- LiteralExpr: type=cstr, value=\\- Value:
  12864. |6- CallExpr:
  12865. |- Method: AccessorExpr (Mode=':')
  12866. |- Object: AccessorExpr (Mode='.')
  12867. |- Object: NameExpr: 'node'
  12868. \- Field: value
  12869. \- Field: print
  12870. \- Arguments: (Len=1)
  12871. \0- BinOpExpr (Operator='+')
  12872. |- LHS: NameExpr: 'depth'
  12873. \- RHS: LiteralExpr: type=int, value=1
  12874. \7- ReturnExpr: <void>
  12875. |4- FunctionDecl:
  12876. |- Head: FunctionDeclHead: Name='IndexExpr::create' Type='IndexExpr' Nargs=1
  12877. \0- EleList eles
  12878. |0- AssignmentExpr (Operator='=')
  12879. |- LHS: DeclExpr: 'IndexExpr new'
  12880. \- RHS: CastExpr (Target='IndexExpr')
  12881. \- Value: CallExpr:
  12882. |- Method: NameExpr: 'malloc'
  12883. \- Arguments: (Len=1)
  12884. \0- IntrinsicExpr: '@sizeof(IndexExpr)@'
  12885. |1- AssignmentExpr (Operator='=')
  12886. |- LHS: AccessorExpr (Mode='.')
  12887. |- Object: NameExpr: 'new'
  12888. \- Field: array
  12889. \- RHS: CallExpr:
  12890. |- Method: AccessorExpr (Mode=':')
  12891. |- Object: CallExpr:
  12892. |- Method: AccessorExpr (Mode=':')
  12893. |- Object: NameExpr: 'eles'
  12894. \- Field: get
  12895. \- Arguments: (Len=1)
  12896. \0- LiteralExpr: type=int, value=0
  12897. \- Field: n
  12898. \- Arguments: (Len=0)
  12899. |2- AssignmentExpr (Operator='=')
  12900. |- LHS: AccessorExpr (Mode='.')
  12901. |- Object: NameExpr: 'new'
  12902. \- Field: value
  12903. \- RHS: CallExpr:
  12904. |- Method: AccessorExpr (Mode=':')
  12905. |- Object: CallExpr:
  12906. |- Method: AccessorExpr (Mode=':')
  12907. |- Object: NameExpr: 'eles'
  12908. \- Field: get
  12909. \- Arguments: (Len=1)
  12910. \0- LiteralExpr: type=int, value=2
  12911. \- Field: n
  12912. \- Arguments: (Len=0)
  12913. \3- ReturnExpr: NameExpr: 'new'
  12914. |5- FunctionDecl:
  12915. |- Head: FunctionDeclHead: Name='IndexExpr::match' Type='int' Nargs=1
  12916. \0- EleList eles
  12917. |0- IfExpr:
  12918. |- Condition: CallExpr:
  12919. |- Method: AccessorExpr (Mode=':')
  12920. |- Object: CallExpr:
  12921. |- Method: AccessorExpr (Mode=':')
  12922. |- Object: CallExpr:
  12923. |- Method: AccessorExpr (Mode=':')
  12924. |- Object: AccessorExpr (Mode='.')
  12925. |- Object: CallExpr:
  12926. |- Method: AccessorExpr (Mode=':')
  12927. |- Object: NameExpr: 'eles'
  12928. \- Field: get
  12929. \- Arguments: (Len=1)
  12930. \0- LiteralExpr: type=int, value=0
  12931. \- Field: is_token
  12932. \- Field: or
  12933. \- Arguments: (Len=1)
  12934. \0- UnOpExpr (Operator='-')
  12935. \- Value: AccessorExpr (Mode='.')
  12936. |- Object: CallExpr:
  12937. |- Method: AccessorExpr (Mode=':')
  12938. |- Object: NameExpr: 'eles'
  12939. \- Field: get
  12940. \- Arguments: (Len=1)
  12941. \0- LiteralExpr: type=int, value=1
  12942. \- Field: is_token
  12943. \- Field: or
  12944. \- Arguments: (Len=1)
  12945. \0- AccessorExpr (Mode='.')
  12946. |- Object: CallExpr:
  12947. |- Method: AccessorExpr (Mode=':')
  12948. |- Object: NameExpr: 'eles'
  12949. \- Field: get
  12950. \- Arguments: (Len=1)
  12951. \0- LiteralExpr: type=int, value=2
  12952. \- Field: is_token
  12953. \- Field: or
  12954. \- Arguments: (Len=1)
  12955. \0- UnOpExpr (Operator='-')
  12956. \- Value: AccessorExpr (Mode='.')
  12957. |- Object: CallExpr:
  12958. |- Method: AccessorExpr (Mode=':')
  12959. |- Object: NameExpr: 'eles'
  12960. \- Field: get
  12961. \- Arguments: (Len=1)
  12962. \0- LiteralExpr: type=int, value=3
  12963. \- Field: is_token
  12964. |- Body: BlockBody: (N_Statements=1)
  12965. |0- ReturnExpr: LiteralExpr: type=int, value=0
  12966. |1- IfExpr:
  12967. |- Condition: CallExpr:
  12968. |- Method: AccessorExpr (Mode=':')
  12969. |- Object: CallExpr:
  12970. |- Method: AccessorExpr (Mode=':')
  12971. |- Object: CallExpr:
  12972. |- Method: AccessorExpr (Mode=':')
  12973. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  12974. |- LHS: AccessorExpr (Mode='.')
  12975. |- Object: AccessorExpr (Mode='.')
  12976. |- Object: CallExpr:
  12977. |- Method: AccessorExpr (Mode=':')
  12978. |- Object: CallExpr:
  12979. |- Method: AccessorExpr (Mode=':')
  12980. |- Object: NameExpr: 'eles'
  12981. \- Field: get
  12982. \- Arguments: (Len=1)
  12983. \0- LiteralExpr: type=int, value=1
  12984. \- Field: t
  12985. \- Arguments: (Len=0)
  12986. \- Field: type_
  12987. \- Field: name
  12988. \- RHS: LiteralExpr: type=cstr, value=T_BRACKET_OPEN
  12989. \- Field: or
  12990. \- Arguments: (Len=1)
  12991. \0- BinOpExpr (Operator='!=')
  12992. |- LHS: AccessorExpr (Mode='.')
  12993. |- Object: AccessorExpr (Mode='.')
  12994. |- Object: CallExpr:
  12995. |- Method: AccessorExpr (Mode=':')
  12996. |- Object: CallExpr:
  12997. |- Method: AccessorExpr (Mode=':')
  12998. |- Object: NameExpr: 'eles'
  12999. \- Field: get
  13000. \- Arguments: (Len=1)
  13001. \0- LiteralExpr: type=int, value=3
  13002. \- Field: t
  13003. \- Arguments: (Len=0)
  13004. \- Field: type_
  13005. \- Field: name
  13006. \- RHS: LiteralExpr: type=cstr, value=T_BRACKET_CLOSE
  13007. \- Field: or
  13008. \- Arguments: (Len=1)
  13009. \0- UnOpExpr (Operator='-')
  13010. \- Value: CallExpr:
  13011. |- Method: AccessorExpr (Mode=':')
  13012. |- Object: CallExpr:
  13013. |- Method: AccessorExpr (Mode=':')
  13014. |- Object: CallExpr:
  13015. |- Method: AccessorExpr (Mode=':')
  13016. |- Object: NameExpr: 'eles'
  13017. \- Field: get
  13018. \- Arguments: (Len=1)
  13019. \0- LiteralExpr: type=int, value=0
  13020. \- Field: n
  13021. \- Arguments: (Len=0)
  13022. \- Field: is_a
  13023. \- Arguments: (Len=1)
  13024. \0- LiteralExpr: type=cstr, value=ValueExpression
  13025. \- Field: or
  13026. \- Arguments: (Len=1)
  13027. \0- UnOpExpr (Operator='-')
  13028. \- Value: CallExpr:
  13029. |- Method: AccessorExpr (Mode=':')
  13030. |- Object: CallExpr:
  13031. |- Method: AccessorExpr (Mode=':')
  13032. |- Object: CallExpr:
  13033. |- Method: AccessorExpr (Mode=':')
  13034. |- Object: NameExpr: 'eles'
  13035. \- Field: get
  13036. \- Arguments: (Len=1)
  13037. \0- LiteralExpr: type=int, value=2
  13038. \- Field: n
  13039. \- Arguments: (Len=0)
  13040. \- Field: is_a
  13041. \- Arguments: (Len=1)
  13042. \0- LiteralExpr: type=cstr, value=ValueExpression
  13043. |- Body: BlockBody: (N_Statements=1)
  13044. |0- ReturnExpr: LiteralExpr: type=int, value=0
  13045. |2- IfExpr:
  13046. |- Condition: CallExpr:
  13047. |- Method: AccessorExpr (Mode='::')
  13048. |- Object: NameExpr: 'parse'
  13049. \- Field: lookahead_is_accessor
  13050. \- Arguments: (Len=1)
  13051. \0- NameExpr: 'eles'
  13052. |- Body: BlockBody: (N_Statements=1)
  13053. |0- ReturnExpr: LiteralExpr: type=int, value=0
  13054. |3- IfExpr:
  13055. |- Condition: CallExpr:
  13056. |- Method: AccessorExpr (Mode='::')
  13057. |- Object: NameExpr: 'parse'
  13058. \- Field: lookahead_is_possibly_function
  13059. \- Arguments: (Len=1)
  13060. \0- NameExpr: 'eles'
  13061. |- Body: BlockBody: (N_Statements=1)
  13062. |0- ReturnExpr: LiteralExpr: type=int, value=0
  13063. \4- ReturnExpr: LiteralExpr: type=int, value=4
  13064. |6- FunctionDecl:
  13065. |- Head: FunctionDeclHead: Name='IndexExpr::visit' Type='void' Nargs=2
  13066. |0- IndexExpr n
  13067. \1- TransformerPass p
  13068. |0- AssignmentExpr (Operator='=')
  13069. |- LHS: AccessorExpr (Mode='.')
  13070. |- Object: NameExpr: 'n'
  13071. \- Field: value
  13072. \- RHS: CallExpr:
  13073. |- Method: AccessorExpr (Mode=':')
  13074. |- Object: NameExpr: 'p'
  13075. \- Field: visit
  13076. \- Arguments: (Len=1)
  13077. \0- AccessorExpr (Mode='.')
  13078. |- Object: NameExpr: 'n'
  13079. \- Field: value
  13080. |1- AssignmentExpr (Operator='=')
  13081. |- LHS: AccessorExpr (Mode='.')
  13082. |- Object: NameExpr: 'n'
  13083. \- Field: array
  13084. \- RHS: CallExpr:
  13085. |- Method: AccessorExpr (Mode=':')
  13086. |- Object: NameExpr: 'p'
  13087. \- Field: visit
  13088. \- Arguments: (Len=1)
  13089. \0- AccessorExpr (Mode='.')
  13090. |- Object: NameExpr: 'n'
  13091. \- Field: array
  13092. \2- ReturnExpr: <void>
  13093. \7- FunctionDecl:
  13094. |- Head: FunctionDeclHead: Name='IndexExpr::impl' Type='NodeType' Nargs=0
  13095. \0- ReturnExpr: CallExpr:
  13096. |- Method: AccessorExpr (Mode=':')
  13097. |- Object: CallExpr:
  13098. |- Method: AccessorExpr (Mode=':')
  13099. |- Object: CallExpr:
  13100. |- Method: AccessorExpr (Mode=':')
  13101. |- Object: CallExpr:
  13102. |- Method: AccessorExpr (Mode=':')
  13103. |- Object: CallExpr:
  13104. |- Method: AccessorExpr (Mode=':')
  13105. |- Object: CallExpr:
  13106. |- Method: AccessorExpr (Mode=':')
  13107. |- Object: CallExpr:
  13108. |- Method: AccessorExpr (Mode='::')
  13109. |- Object: NameExpr: 'NodeType'
  13110. \- Field: new
  13111. \- Arguments: (Len=1)
  13112. \0- LiteralExpr: type=cstr, value=IndexExpr
  13113. \- Field: set_printer
  13114. \- Arguments: (Len=1)
  13115. \0- CastExpr (Target='NodePrinter')
  13116. \- Value: AccessorExpr (Mode='::')
  13117. |- Object: NameExpr: 'IndexExpr'
  13118. \- Field: print
  13119. \- Field: set_creator
  13120. \- Arguments: (Len=1)
  13121. \0- CastExpr (Target='NodeCreator')
  13122. \- Value: AccessorExpr (Mode='::')
  13123. |- Object: NameExpr: 'IndexExpr'
  13124. \- Field: create
  13125. \- Field: set_matcher
  13126. \- Arguments: (Len=1)
  13127. \0- CastExpr (Target='NodeMatcher')
  13128. \- Value: AccessorExpr (Mode='::')
  13129. |- Object: NameExpr: 'IndexExpr'
  13130. \- Field: match
  13131. \- Field: set_visitor
  13132. \- Arguments: (Len=1)
  13133. \0- CastExpr (Target='NodeVisitor')
  13134. \- Value: AccessorExpr (Mode='::')
  13135. |- Object: NameExpr: 'IndexExpr'
  13136. \- Field: visit
  13137. \- Field: matches
  13138. \- Arguments: (Len=1)
  13139. \0- LiteralExpr: type=int, value=4
  13140. \- Field: addtype
  13141. \- Arguments: (Len=1)
  13142. \0- LiteralExpr: type=cstr, value=IdentifierExpression
  13143. |2- SepExpr (Consumed=2)
  13144. |30- SepExpr (Consumed=1)
  13145. |31- FileNode: (N_Statements=3)
  13146. |0- SepExpr (Consumed=1)
  13147. |1- TypeDecl:
  13148. |- Head: TypeDeclHead: `IntrinsicExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  13149. \- Body: TypeDeclBody: (N_Statements=6)
  13150. |0- DeclExpr: 'NodeType type_'
  13151. |1- DeclExpr: 'cstr name'
  13152. |2- FunctionDecl:
  13153. |- Head: FunctionDeclHead: Name='IntrinsicExpr::print' Type='void' Nargs=2
  13154. |0- IntrinsicExpr node
  13155. \1- int depth
  13156. |0- CallExpr:
  13157. |- Method: NameExpr: 'printf'
  13158. \- Arguments: (Len=2)
  13159. |0- LiteralExpr: type=cstr, value=IntrinsicExpr: '%s'\n
  13160. \1- AccessorExpr (Mode='.')
  13161. |- Object: NameExpr: 'node'
  13162. \- Field: name
  13163. \1- ReturnExpr: <void>
  13164. |3- FunctionDecl:
  13165. |- Head: FunctionDeclHead: Name='IntrinsicExpr::create' Type='IntrinsicExpr' Nargs=1
  13166. \0- EleList eles
  13167. |0- AssignmentExpr (Operator='=')
  13168. |- LHS: DeclExpr: 'IntrinsicExpr new'
  13169. \- RHS: CastExpr (Target='IntrinsicExpr')
  13170. \- Value: CallExpr:
  13171. |- Method: NameExpr: 'malloc'
  13172. \- Arguments: (Len=1)
  13173. \0- IntrinsicExpr: '@sizeof(IntrinsicExpr)@'
  13174. |1- AssignmentExpr (Operator='=')
  13175. |- LHS: AccessorExpr (Mode='.')
  13176. |- Object: NameExpr: 'new'
  13177. \- Field: name
  13178. \- RHS: AccessorExpr (Mode='.')
  13179. |- Object: CallExpr:
  13180. |- Method: AccessorExpr (Mode=':')
  13181. |- Object: CallExpr:
  13182. |- Method: AccessorExpr (Mode=':')
  13183. |- Object: NameExpr: 'eles'
  13184. \- Field: get
  13185. \- Arguments: (Len=1)
  13186. \0- LiteralExpr: type=int, value=0
  13187. \- Field: t
  13188. \- Arguments: (Len=0)
  13189. \- Field: text
  13190. \2- ReturnExpr: NameExpr: 'new'
  13191. |4- FunctionDecl:
  13192. |- Head: FunctionDeclHead: Name='IntrinsicExpr::match' Type='int' Nargs=1
  13193. \0- EleList eles
  13194. \0- ReturnExpr: CastExpr (Target='int')
  13195. \- Value: GroupingExpr: BinOpExpr (Operator='==')
  13196. |- LHS: AccessorExpr (Mode='.')
  13197. |- Object: AccessorExpr (Mode='.')
  13198. |- Object: CallExpr:
  13199. |- Method: AccessorExpr (Mode=':')
  13200. |- Object: CallExpr:
  13201. |- Method: AccessorExpr (Mode=':')
  13202. |- Object: NameExpr: 'eles'
  13203. \- Field: get
  13204. \- Arguments: (Len=1)
  13205. \0- LiteralExpr: type=int, value=0
  13206. \- Field: t
  13207. \- Arguments: (Len=0)
  13208. \- Field: type_
  13209. \- Field: name
  13210. \- RHS: LiteralExpr: type=cstr, value=T_INTRINSIC
  13211. \5- FunctionDecl:
  13212. |- Head: FunctionDeclHead: Name='IntrinsicExpr::impl' Type='NodeType' Nargs=0
  13213. \0- ReturnExpr: CallExpr:
  13214. |- Method: AccessorExpr (Mode=':')
  13215. |- Object: CallExpr:
  13216. |- Method: AccessorExpr (Mode=':')
  13217. |- Object: CallExpr:
  13218. |- Method: AccessorExpr (Mode=':')
  13219. |- Object: CallExpr:
  13220. |- Method: AccessorExpr (Mode=':')
  13221. |- Object: CallExpr:
  13222. |- Method: AccessorExpr (Mode=':')
  13223. |- Object: CallExpr:
  13224. |- Method: AccessorExpr (Mode=':')
  13225. |- Object: CallExpr:
  13226. |- Method: AccessorExpr (Mode='::')
  13227. |- Object: NameExpr: 'NodeType'
  13228. \- Field: new
  13229. \- Arguments: (Len=1)
  13230. \0- LiteralExpr: type=cstr, value=IntrinsicExpr
  13231. \- Field: set_printer
  13232. \- Arguments: (Len=1)
  13233. \0- CastExpr (Target='NodePrinter')
  13234. \- Value: AccessorExpr (Mode='::')
  13235. |- Object: NameExpr: 'IntrinsicExpr'
  13236. \- Field: print
  13237. \- Field: set_creator
  13238. \- Arguments: (Len=1)
  13239. \0- CastExpr (Target='NodeCreator')
  13240. \- Value: AccessorExpr (Mode='::')
  13241. |- Object: NameExpr: 'IntrinsicExpr'
  13242. \- Field: create
  13243. \- Field: set_matcher
  13244. \- Arguments: (Len=1)
  13245. \0- CastExpr (Target='NodeMatcher')
  13246. \- Value: AccessorExpr (Mode='::')
  13247. |- Object: NameExpr: 'IntrinsicExpr'
  13248. \- Field: match
  13249. \- Field: matches
  13250. \- Arguments: (Len=1)
  13251. \0- LiteralExpr: type=int, value=1
  13252. \- Field: matches_only_tokens
  13253. \- Arguments: (Len=0)
  13254. \- Field: addtype
  13255. \- Arguments: (Len=1)
  13256. \0- LiteralExpr: type=cstr, value=ValueExpression
  13257. |2- SepExpr (Consumed=2)
  13258. |32- SepExpr (Consumed=1)
  13259. |33- FileNode: (N_Statements=3)
  13260. |0- SepExpr (Consumed=1)
  13261. |1- TypeDecl:
  13262. |- Head: TypeDeclHead: `LiteralExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  13263. \- Body: TypeDeclBody: (N_Statements=11)
  13264. |0- DeclExpr: 'NodeType type_'
  13265. |1- DeclExpr: 'cstr value'
  13266. |2- DeclExpr: 'cstr value_type'
  13267. |3- FunctionDecl:
  13268. |- Head: FunctionDeclHead: Name='LiteralExpr::print' Type='void' Nargs=2
  13269. |0- LiteralExpr node
  13270. \1- int depth
  13271. |0- CallExpr:
  13272. |- Method: NameExpr: 'printf'
  13273. \- Arguments: (Len=3)
  13274. |0- LiteralExpr: type=cstr, value=LiteralExpr: type=%s, value=%s\n
  13275. |1- AccessorExpr (Mode='.')
  13276. |- Object: NameExpr: 'node'
  13277. \- Field: value_type
  13278. \2- AccessorExpr (Mode='.')
  13279. |- Object: NameExpr: 'node'
  13280. \- Field: value
  13281. \1- ReturnExpr: <void>
  13282. |4- FunctionDecl:
  13283. |- Head: FunctionDeclHead: Name='LiteralExpr::create' Type='LiteralExpr' Nargs=1
  13284. \0- EleList eles
  13285. |0- AssignmentExpr (Operator='=')
  13286. |- LHS: DeclExpr: 'LiteralExpr new'
  13287. \- RHS: CastExpr (Target='LiteralExpr')
  13288. \- Value: CallExpr:
  13289. |- Method: NameExpr: 'malloc'
  13290. \- Arguments: (Len=1)
  13291. \0- IntrinsicExpr: '@sizeof(LiteralExpr)@'
  13292. |1- AssignmentExpr (Operator='=')
  13293. |- LHS: AccessorExpr (Mode='.')
  13294. |- Object: NameExpr: 'new'
  13295. \- Field: value
  13296. \- RHS: AccessorExpr (Mode='.')
  13297. |- Object: CallExpr:
  13298. |- Method: AccessorExpr (Mode=':')
  13299. |- Object: CallExpr:
  13300. |- Method: AccessorExpr (Mode=':')
  13301. |- Object: NameExpr: 'eles'
  13302. \- Field: get
  13303. \- Arguments: (Len=1)
  13304. \0- LiteralExpr: type=int, value=0
  13305. \- Field: t
  13306. \- Arguments: (Len=0)
  13307. \- Field: text
  13308. |2- IfExpr:
  13309. |- Condition: BinOpExpr (Operator='==')
  13310. |- LHS: AccessorExpr (Mode='.')
  13311. |- Object: AccessorExpr (Mode='.')
  13312. |- Object: CallExpr:
  13313. |- Method: AccessorExpr (Mode=':')
  13314. |- Object: CallExpr:
  13315. |- Method: AccessorExpr (Mode=':')
  13316. |- Object: NameExpr: 'eles'
  13317. \- Field: get
  13318. \- Arguments: (Len=1)
  13319. \0- LiteralExpr: type=int, value=0
  13320. \- Field: t
  13321. \- Arguments: (Len=0)
  13322. \- Field: type_
  13323. \- Field: name
  13324. \- RHS: LiteralExpr: type=cstr, value=T_INT_LITERAL
  13325. |- Body: BlockBody: (N_Statements=1)
  13326. |0- AssignmentExpr (Operator='=')
  13327. |- LHS: AccessorExpr (Mode='.')
  13328. |- Object: NameExpr: 'new'
  13329. \- Field: value_type
  13330. \- RHS: LiteralExpr: type=cstr, value=int
  13331. \-- Runoff Clause: IfExpr:
  13332. |- Condition: BinOpExpr (Operator='==')
  13333. |- LHS: AccessorExpr (Mode='.')
  13334. |- Object: AccessorExpr (Mode='.')
  13335. |- Object: CallExpr:
  13336. |- Method: AccessorExpr (Mode=':')
  13337. |- Object: CallExpr:
  13338. |- Method: AccessorExpr (Mode=':')
  13339. |- Object: NameExpr: 'eles'
  13340. \- Field: get
  13341. \- Arguments: (Len=1)
  13342. \0- LiteralExpr: type=int, value=0
  13343. \- Field: t
  13344. \- Arguments: (Len=0)
  13345. \- Field: type_
  13346. \- Field: name
  13347. \- RHS: LiteralExpr: type=cstr, value=T_FLOAT_LITERAL
  13348. |- Body: BlockBody: (N_Statements=1)
  13349. |0- AssignmentExpr (Operator='=')
  13350. |- LHS: AccessorExpr (Mode='.')
  13351. |- Object: NameExpr: 'new'
  13352. \- Field: value_type
  13353. \- RHS: LiteralExpr: type=cstr, value=float
  13354. \-- Runoff Clause: IfExpr:
  13355. |- Condition: BinOpExpr (Operator='==')
  13356. |- LHS: AccessorExpr (Mode='.')
  13357. |- Object: AccessorExpr (Mode='.')
  13358. |- Object: CallExpr:
  13359. |- Method: AccessorExpr (Mode=':')
  13360. |- Object: CallExpr:
  13361. |- Method: AccessorExpr (Mode=':')
  13362. |- Object: NameExpr: 'eles'
  13363. \- Field: get
  13364. \- Arguments: (Len=1)
  13365. \0- LiteralExpr: type=int, value=0
  13366. \- Field: t
  13367. \- Arguments: (Len=0)
  13368. \- Field: type_
  13369. \- Field: name
  13370. \- RHS: LiteralExpr: type=cstr, value=T_NULL_LITERAL
  13371. |- Body: BlockBody: (N_Statements=2)
  13372. |0- AssignmentExpr (Operator='=')
  13373. |- LHS: AccessorExpr (Mode='.')
  13374. |- Object: NameExpr: 'new'
  13375. \- Field: value_type
  13376. \- RHS: LiteralExpr: type=cstr, value=ptr
  13377. |1- AssignmentExpr (Operator='=')
  13378. |- LHS: AccessorExpr (Mode='.')
  13379. |- Object: NameExpr: 'new'
  13380. \- Field: value
  13381. \- RHS: LiteralExpr: type=cstr, value=0
  13382. \-- Runoff Clause: IfExpr:
  13383. |- Condition: BinOpExpr (Operator='==')
  13384. |- LHS: AccessorExpr (Mode='.')
  13385. |- Object: AccessorExpr (Mode='.')
  13386. |- Object: CallExpr:
  13387. |- Method: AccessorExpr (Mode=':')
  13388. |- Object: CallExpr:
  13389. |- Method: AccessorExpr (Mode=':')
  13390. |- Object: NameExpr: 'eles'
  13391. \- Field: get
  13392. \- Arguments: (Len=1)
  13393. \0- LiteralExpr: type=int, value=0
  13394. \- Field: t
  13395. \- Arguments: (Len=0)
  13396. \- Field: type_
  13397. \- Field: name
  13398. \- RHS: LiteralExpr: type=cstr, value=T_BOOL_LITERAL
  13399. |- Body: BlockBody: (N_Statements=2)
  13400. |0- AssignmentExpr (Operator='=')
  13401. |- LHS: AccessorExpr (Mode='.')
  13402. |- Object: NameExpr: 'new'
  13403. \- Field: value_type
  13404. \- RHS: LiteralExpr: type=cstr, value=bool
  13405. |1- AssignmentExpr (Operator='=')
  13406. |- LHS: AccessorExpr (Mode='.')
  13407. |- Object: NameExpr: 'new'
  13408. \- Field: value
  13409. \- RHS: CallExpr:
  13410. |- Method: AccessorExpr (Mode=':')
  13411. |- Object: GroupingExpr: BinOpExpr (Operator='==')
  13412. |- LHS: AccessorExpr (Mode='.')
  13413. |- Object: CallExpr:
  13414. |- Method: AccessorExpr (Mode=':')
  13415. |- Object: CallExpr:
  13416. |- Method: AccessorExpr (Mode=':')
  13417. |- Object: NameExpr: 'eles'
  13418. \- Field: get
  13419. \- Arguments: (Len=1)
  13420. \0- LiteralExpr: type=int, value=0
  13421. \- Field: t
  13422. \- Arguments: (Len=0)
  13423. \- Field: text
  13424. \- RHS: LiteralExpr: type=cstr, value=true
  13425. \- Field: str
  13426. \- Arguments: (Len=0)
  13427. \-- Runoff Clause: BlockBody: (N_Statements=2)
  13428. |0- AssignmentExpr (Operator='=')
  13429. |- LHS: AccessorExpr (Mode='.')
  13430. |- Object: NameExpr: 'new'
  13431. \- Field: value_type
  13432. \- RHS: LiteralExpr: type=cstr, value=cstr
  13433. |1- AssignmentExpr (Operator='=')
  13434. |- LHS: AccessorExpr (Mode='.')
  13435. |- Object: NameExpr: 'new'
  13436. \- Field: value
  13437. \- RHS: CallExpr:
  13438. |- Method: AccessorExpr (Mode=':')
  13439. |- Object: AccessorExpr (Mode='.')
  13440. |- Object: NameExpr: 'new'
  13441. \- Field: value
  13442. \- Field: substr
  13443. \- Arguments: (Len=2)
  13444. |0- LiteralExpr: type=int, value=1
  13445. \1- BinOpExpr (Operator='-')
  13446. |- LHS: CallExpr:
  13447. |- Method: AccessorExpr (Mode=':')
  13448. |- Object: AccessorExpr (Mode='.')
  13449. |- Object: NameExpr: 'new'
  13450. \- Field: value
  13451. \- Field: len
  13452. \- Arguments: (Len=0)
  13453. \- RHS: LiteralExpr: type=int, value=2
  13454. \3- ReturnExpr: NameExpr: 'new'
  13455. |5- FunctionDecl:
  13456. |- Head: FunctionDeclHead: Name='LiteralExpr::create_direct' Type='Node' Nargs=3
  13457. |0- Project p
  13458. |1- cstr value_type
  13459. \2- cstr value
  13460. |0- AssignmentExpr (Operator='=')
  13461. |- LHS: DeclExpr: 'LiteralExpr new'
  13462. \- RHS: CastExpr (Target='LiteralExpr')
  13463. \- Value: CallExpr:
  13464. |- Method: NameExpr: 'malloc'
  13465. \- Arguments: (Len=1)
  13466. \0- IntrinsicExpr: '@sizeof(LiteralExpr)@'
  13467. |1- AssignmentExpr (Operator='=')
  13468. |- LHS: AccessorExpr (Mode='.')
  13469. |- Object: NameExpr: 'new'
  13470. \- Field: value
  13471. \- RHS: NameExpr: 'value'
  13472. |2- AssignmentExpr (Operator='=')
  13473. |- LHS: AccessorExpr (Mode='.')
  13474. |- Object: NameExpr: 'new'
  13475. \- Field: value_type
  13476. \- RHS: NameExpr: 'value_type'
  13477. |3- AssignmentExpr (Operator='=')
  13478. |- LHS: AccessorExpr (Mode='.')
  13479. |- Object: NameExpr: 'new'
  13480. \- Field: type_
  13481. \- RHS: CallExpr:
  13482. |- Method: AccessorExpr (Mode=':')
  13483. |- Object: NameExpr: 'p'
  13484. \- Field: type_by_name
  13485. \- Arguments: (Len=1)
  13486. \0- LiteralExpr: type=cstr, value=LiteralExpr
  13487. \4- ReturnExpr: CastExpr (Target='Node')
  13488. \- Value: NameExpr: 'new'
  13489. |6- FunctionDecl:
  13490. |- Head: FunctionDeclHead: Name='LiteralExpr::create_direct_int' Type='Node' Nargs=2
  13491. |0- Project p
  13492. \1- int value
  13493. \0- ReturnExpr: CallExpr:
  13494. |- Method: AccessorExpr (Mode='::')
  13495. |- Object: NameExpr: 'LiteralExpr'
  13496. \- Field: create_direct
  13497. \- Arguments: (Len=3)
  13498. |0- NameExpr: 'p'
  13499. |1- LiteralExpr: type=cstr, value=int
  13500. \2- CallExpr:
  13501. |- Method: AccessorExpr (Mode=':')
  13502. |- Object: NameExpr: 'value'
  13503. \- Field: str
  13504. \- Arguments: (Len=0)
  13505. |7- FunctionDecl:
  13506. |- Head: FunctionDeclHead: Name='LiteralExpr::create_direct_bool' Type='Node' Nargs=2
  13507. |0- Project p
  13508. \1- bool value
  13509. \0- ReturnExpr: CallExpr:
  13510. |- Method: AccessorExpr (Mode='::')
  13511. |- Object: NameExpr: 'LiteralExpr'
  13512. \- Field: create_direct
  13513. \- Arguments: (Len=3)
  13514. |0- NameExpr: 'p'
  13515. |1- LiteralExpr: type=cstr, value=bool
  13516. \2- CallExpr:
  13517. |- Method: AccessorExpr (Mode=':')
  13518. |- Object: NameExpr: 'value'
  13519. \- Field: str
  13520. \- Arguments: (Len=0)
  13521. |8- FunctionDecl:
  13522. |- Head: FunctionDeclHead: Name='LiteralExpr::create_direct_float' Type='Node' Nargs=2
  13523. |0- Project p
  13524. \1- float value
  13525. \0- ReturnExpr: CallExpr:
  13526. |- Method: AccessorExpr (Mode='::')
  13527. |- Object: NameExpr: 'LiteralExpr'
  13528. \- Field: create_direct
  13529. \- Arguments: (Len=3)
  13530. |0- NameExpr: 'p'
  13531. |1- LiteralExpr: type=cstr, value=float
  13532. \2- CallExpr:
  13533. |- Method: AccessorExpr (Mode=':')
  13534. |- Object: NameExpr: 'value'
  13535. \- Field: str
  13536. \- Arguments: (Len=0)
  13537. |9- FunctionDecl:
  13538. |- Head: FunctionDeclHead: Name='LiteralExpr::match' Type='int' Nargs=1
  13539. \0- EleList eles
  13540. \0- ReturnExpr: CastExpr (Target='int')
  13541. \- Value: GroupingExpr: BinOpExpr (Operator='+')
  13542. |- LHS: GroupingExpr: BinOpExpr (Operator='==')
  13543. |- LHS: AccessorExpr (Mode='.')
  13544. |- Object: AccessorExpr (Mode='.')
  13545. |- Object: CallExpr:
  13546. |- Method: AccessorExpr (Mode=':')
  13547. |- Object: CallExpr:
  13548. |- Method: AccessorExpr (Mode=':')
  13549. |- Object: NameExpr: 'eles'
  13550. \- Field: get
  13551. \- Arguments: (Len=1)
  13552. \0- LiteralExpr: type=int, value=0
  13553. \- Field: t
  13554. \- Arguments: (Len=0)
  13555. \- Field: type_
  13556. \- Field: name
  13557. \- RHS: LiteralExpr: type=cstr, value=T_INT_LITERAL
  13558. \- RHS: BinOpExpr (Operator='+')
  13559. |- LHS: GroupingExpr: BinOpExpr (Operator='==')
  13560. |- LHS: AccessorExpr (Mode='.')
  13561. |- Object: AccessorExpr (Mode='.')
  13562. |- Object: CallExpr:
  13563. |- Method: AccessorExpr (Mode=':')
  13564. |- Object: CallExpr:
  13565. |- Method: AccessorExpr (Mode=':')
  13566. |- Object: NameExpr: 'eles'
  13567. \- Field: get
  13568. \- Arguments: (Len=1)
  13569. \0- LiteralExpr: type=int, value=0
  13570. \- Field: t
  13571. \- Arguments: (Len=0)
  13572. \- Field: type_
  13573. \- Field: name
  13574. \- RHS: LiteralExpr: type=cstr, value=T_FLOAT_LITERAL
  13575. \- RHS: BinOpExpr (Operator='+')
  13576. |- LHS: GroupingExpr: BinOpExpr (Operator='==')
  13577. |- LHS: AccessorExpr (Mode='.')
  13578. |- Object: AccessorExpr (Mode='.')
  13579. |- Object: CallExpr:
  13580. |- Method: AccessorExpr (Mode=':')
  13581. |- Object: CallExpr:
  13582. |- Method: AccessorExpr (Mode=':')
  13583. |- Object: NameExpr: 'eles'
  13584. \- Field: get
  13585. \- Arguments: (Len=1)
  13586. \0- LiteralExpr: type=int, value=0
  13587. \- Field: t
  13588. \- Arguments: (Len=0)
  13589. \- Field: type_
  13590. \- Field: name
  13591. \- RHS: LiteralExpr: type=cstr, value=T_BOOL_LITERAL
  13592. \- RHS: BinOpExpr (Operator='+')
  13593. |- LHS: GroupingExpr: BinOpExpr (Operator='==')
  13594. |- LHS: AccessorExpr (Mode='.')
  13595. |- Object: AccessorExpr (Mode='.')
  13596. |- Object: CallExpr:
  13597. |- Method: AccessorExpr (Mode=':')
  13598. |- Object: CallExpr:
  13599. |- Method: AccessorExpr (Mode=':')
  13600. |- Object: NameExpr: 'eles'
  13601. \- Field: get
  13602. \- Arguments: (Len=1)
  13603. \0- LiteralExpr: type=int, value=0
  13604. \- Field: t
  13605. \- Arguments: (Len=0)
  13606. \- Field: type_
  13607. \- Field: name
  13608. \- RHS: LiteralExpr: type=cstr, value=T_NULL_LITERAL
  13609. \- RHS: GroupingExpr: BinOpExpr (Operator='==')
  13610. |- LHS: AccessorExpr (Mode='.')
  13611. |- Object: AccessorExpr (Mode='.')
  13612. |- Object: CallExpr:
  13613. |- Method: AccessorExpr (Mode=':')
  13614. |- Object: CallExpr:
  13615. |- Method: AccessorExpr (Mode=':')
  13616. |- Object: NameExpr: 'eles'
  13617. \- Field: get
  13618. \- Arguments: (Len=1)
  13619. \0- LiteralExpr: type=int, value=0
  13620. \- Field: t
  13621. \- Arguments: (Len=0)
  13622. \- Field: type_
  13623. \- Field: name
  13624. \- RHS: LiteralExpr: type=cstr, value=T_STRING_LITERAL
  13625. \10- FunctionDecl:
  13626. |- Head: FunctionDeclHead: Name='LiteralExpr::impl' Type='NodeType' Nargs=0
  13627. \0- ReturnExpr: CallExpr:
  13628. |- Method: AccessorExpr (Mode=':')
  13629. |- Object: CallExpr:
  13630. |- Method: AccessorExpr (Mode=':')
  13631. |- Object: CallExpr:
  13632. |- Method: AccessorExpr (Mode=':')
  13633. |- Object: CallExpr:
  13634. |- Method: AccessorExpr (Mode=':')
  13635. |- Object: CallExpr:
  13636. |- Method: AccessorExpr (Mode=':')
  13637. |- Object: CallExpr:
  13638. |- Method: AccessorExpr (Mode=':')
  13639. |- Object: CallExpr:
  13640. |- Method: AccessorExpr (Mode='::')
  13641. |- Object: NameExpr: 'NodeType'
  13642. \- Field: new
  13643. \- Arguments: (Len=1)
  13644. \0- LiteralExpr: type=cstr, value=LiteralExpr
  13645. \- Field: set_printer
  13646. \- Arguments: (Len=1)
  13647. \0- CastExpr (Target='NodePrinter')
  13648. \- Value: AccessorExpr (Mode='::')
  13649. |- Object: NameExpr: 'LiteralExpr'
  13650. \- Field: print
  13651. \- Field: set_creator
  13652. \- Arguments: (Len=1)
  13653. \0- CastExpr (Target='NodeCreator')
  13654. \- Value: AccessorExpr (Mode='::')
  13655. |- Object: NameExpr: 'LiteralExpr'
  13656. \- Field: create
  13657. \- Field: set_matcher
  13658. \- Arguments: (Len=1)
  13659. \0- CastExpr (Target='NodeMatcher')
  13660. \- Value: AccessorExpr (Mode='::')
  13661. |- Object: NameExpr: 'LiteralExpr'
  13662. \- Field: match
  13663. \- Field: matches
  13664. \- Arguments: (Len=1)
  13665. \0- LiteralExpr: type=int, value=1
  13666. \- Field: matches_only_tokens
  13667. \- Arguments: (Len=0)
  13668. \- Field: addtype
  13669. \- Arguments: (Len=1)
  13670. \0- LiteralExpr: type=cstr, value=ValueExpression
  13671. |2- SepExpr (Consumed=2)
  13672. |34- SepExpr (Consumed=1)
  13673. |35- FileNode: (N_Statements=5)
  13674. |0- SepExpr (Consumed=1)
  13675. |1- TypeDecl:
  13676. |- Head: TypeDeclHead: `NameExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  13677. \- Body: TypeDeclBody: (N_Statements=7)
  13678. |0- DeclExpr: 'NodeType type_'
  13679. |1- DeclExpr: 'cstr name'
  13680. |2- FunctionDecl:
  13681. |- Head: FunctionDeclHead: Name='NameExpr::print' Type='void' Nargs=2
  13682. |0- NameExpr node
  13683. \1- int depth
  13684. |0- CallExpr:
  13685. |- Method: NameExpr: 'printf'
  13686. \- Arguments: (Len=2)
  13687. |0- LiteralExpr: type=cstr, value=NameExpr: '%s'\n
  13688. \1- AccessorExpr (Mode='.')
  13689. |- Object: NameExpr: 'node'
  13690. \- Field: name
  13691. \1- ReturnExpr: <void>
  13692. |3- FunctionDecl:
  13693. |- Head: FunctionDeclHead: Name='NameExpr::create' Type='NameExpr' Nargs=1
  13694. \0- EleList eles
  13695. |0- AssignmentExpr (Operator='=')
  13696. |- LHS: DeclExpr: 'NameExpr new'
  13697. \- RHS: CastExpr (Target='NameExpr')
  13698. \- Value: CallExpr:
  13699. |- Method: NameExpr: 'malloc'
  13700. \- Arguments: (Len=1)
  13701. \0- IntrinsicExpr: '@sizeof(NameExpr)@'
  13702. |1- AssignmentExpr (Operator='=')
  13703. |- LHS: AccessorExpr (Mode='.')
  13704. |- Object: NameExpr: 'new'
  13705. \- Field: name
  13706. \- RHS: AccessorExpr (Mode='.')
  13707. |- Object: CallExpr:
  13708. |- Method: AccessorExpr (Mode=':')
  13709. |- Object: CallExpr:
  13710. |- Method: AccessorExpr (Mode=':')
  13711. |- Object: NameExpr: 'eles'
  13712. \- Field: get
  13713. \- Arguments: (Len=1)
  13714. \0- LiteralExpr: type=int, value=0
  13715. \- Field: t
  13716. \- Arguments: (Len=0)
  13717. \- Field: text
  13718. \2- ReturnExpr: NameExpr: 'new'
  13719. |4- FunctionDecl:
  13720. |- Head: FunctionDeclHead: Name='NameExpr::create_direct' Type='NameExpr' Nargs=2
  13721. |0- Project p
  13722. \1- cstr name
  13723. |0- AssignmentExpr (Operator='=')
  13724. |- LHS: DeclExpr: 'NameExpr new'
  13725. \- RHS: CastExpr (Target='NameExpr')
  13726. \- Value: CallExpr:
  13727. |- Method: NameExpr: 'malloc'
  13728. \- Arguments: (Len=1)
  13729. \0- IntrinsicExpr: '@sizeof(NameExpr)@'
  13730. |1- AssignmentExpr (Operator='=')
  13731. |- LHS: AccessorExpr (Mode='.')
  13732. |- Object: NameExpr: 'new'
  13733. \- Field: type_
  13734. \- RHS: CallExpr:
  13735. |- Method: AccessorExpr (Mode=':')
  13736. |- Object: NameExpr: 'p'
  13737. \- Field: type_by_name
  13738. \- Arguments: (Len=1)
  13739. \0- LiteralExpr: type=cstr, value=NameExpr
  13740. |2- AssignmentExpr (Operator='=')
  13741. |- LHS: AccessorExpr (Mode='.')
  13742. |- Object: NameExpr: 'new'
  13743. \- Field: name
  13744. \- RHS: NameExpr: 'name'
  13745. \3- ReturnExpr: NameExpr: 'new'
  13746. |5- FunctionDecl:
  13747. |- Head: FunctionDeclHead: Name='NameExpr::match' Type='int' Nargs=1
  13748. \0- EleList eles
  13749. \0- ReturnExpr: CastExpr (Target='int')
  13750. \- Value: GroupingExpr: BinOpExpr (Operator='==')
  13751. |- LHS: AccessorExpr (Mode='.')
  13752. |- Object: AccessorExpr (Mode='.')
  13753. |- Object: CallExpr:
  13754. |- Method: AccessorExpr (Mode=':')
  13755. |- Object: CallExpr:
  13756. |- Method: AccessorExpr (Mode=':')
  13757. |- Object: NameExpr: 'eles'
  13758. \- Field: get
  13759. \- Arguments: (Len=1)
  13760. \0- LiteralExpr: type=int, value=0
  13761. \- Field: t
  13762. \- Arguments: (Len=0)
  13763. \- Field: type_
  13764. \- Field: name
  13765. \- RHS: LiteralExpr: type=cstr, value=T_NAME
  13766. \6- FunctionDecl:
  13767. |- Head: FunctionDeclHead: Name='NameExpr::impl' Type='NodeType' Nargs=0
  13768. \0- ReturnExpr: CallExpr:
  13769. |- Method: AccessorExpr (Mode=':')
  13770. |- Object: CallExpr:
  13771. |- Method: AccessorExpr (Mode=':')
  13772. |- Object: CallExpr:
  13773. |- Method: AccessorExpr (Mode=':')
  13774. |- Object: CallExpr:
  13775. |- Method: AccessorExpr (Mode=':')
  13776. |- Object: CallExpr:
  13777. |- Method: AccessorExpr (Mode=':')
  13778. |- Object: CallExpr:
  13779. |- Method: AccessorExpr (Mode=':')
  13780. |- Object: CallExpr:
  13781. |- Method: AccessorExpr (Mode='::')
  13782. |- Object: NameExpr: 'NodeType'
  13783. \- Field: new
  13784. \- Arguments: (Len=1)
  13785. \0- LiteralExpr: type=cstr, value=NameExpr
  13786. \- Field: set_printer
  13787. \- Arguments: (Len=1)
  13788. \0- CastExpr (Target='NodePrinter')
  13789. \- Value: AccessorExpr (Mode='::')
  13790. |- Object: NameExpr: 'NameExpr'
  13791. \- Field: print
  13792. \- Field: set_creator
  13793. \- Arguments: (Len=1)
  13794. \0- CastExpr (Target='NodeCreator')
  13795. \- Value: AccessorExpr (Mode='::')
  13796. |- Object: NameExpr: 'NameExpr'
  13797. \- Field: create
  13798. \- Field: set_matcher
  13799. \- Arguments: (Len=1)
  13800. \0- CastExpr (Target='NodeMatcher')
  13801. \- Value: AccessorExpr (Mode='::')
  13802. |- Object: NameExpr: 'NameExpr'
  13803. \- Field: match
  13804. \- Field: matches
  13805. \- Arguments: (Len=1)
  13806. \0- LiteralExpr: type=int, value=1
  13807. \- Field: matches_only_tokens
  13808. \- Arguments: (Len=0)
  13809. \- Field: addtype
  13810. \- Arguments: (Len=1)
  13811. \0- LiteralExpr: type=cstr, value=IdentifierExpression
  13812. |2- SepExpr (Consumed=2)
  13813. |3- TypeDecl:
  13814. |- Head: TypeDeclHead: `DeclExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  13815. \- Body: TypeDeclBody: (N_Statements=6)
  13816. |0- DeclExpr: 'NodeType type_'
  13817. |1- DeclExpr: 'cstr name'
  13818. |2- FunctionDecl:
  13819. |- Head: FunctionDeclHead: Name='DeclExpr::print' Type='void' Nargs=2
  13820. |0- DeclExpr node
  13821. \1- int depth
  13822. |0- CallExpr:
  13823. |- Method: NameExpr: 'printf'
  13824. \- Arguments: (Len=2)
  13825. |0- LiteralExpr: type=cstr, value=DeclExpr: '%s'\n
  13826. \1- AccessorExpr (Mode='.')
  13827. |- Object: NameExpr: 'node'
  13828. \- Field: name
  13829. \1- ReturnExpr: <void>
  13830. |3- FunctionDecl:
  13831. |- Head: FunctionDeclHead: Name='DeclExpr::create' Type='DeclExpr' Nargs=1
  13832. \0- EleList eles
  13833. |0- AssignmentExpr (Operator='=')
  13834. |- LHS: DeclExpr: 'DeclExpr new'
  13835. \- RHS: CastExpr (Target='DeclExpr')
  13836. \- Value: CallExpr:
  13837. |- Method: NameExpr: 'malloc'
  13838. \- Arguments: (Len=1)
  13839. \0- IntrinsicExpr: '@sizeof(DeclExpr)@'
  13840. |1- AssignmentExpr (Operator='=')
  13841. |- LHS: AccessorExpr (Mode='.')
  13842. |- Object: NameExpr: 'new'
  13843. \- Field: name
  13844. \- RHS: AccessorExpr (Mode='.')
  13845. |- Object: CallExpr:
  13846. |- Method: AccessorExpr (Mode=':')
  13847. |- Object: CallExpr:
  13848. |- Method: AccessorExpr (Mode=':')
  13849. |- Object: NameExpr: 'eles'
  13850. \- Field: get
  13851. \- Arguments: (Len=1)
  13852. \0- LiteralExpr: type=int, value=0
  13853. \- Field: t
  13854. \- Arguments: (Len=0)
  13855. \- Field: text
  13856. \2- ReturnExpr: NameExpr: 'new'
  13857. |4- FunctionDecl:
  13858. |- Head: FunctionDeclHead: Name='DeclExpr::match' Type='int' Nargs=1
  13859. \0- EleList eles
  13860. \0- ReturnExpr: CastExpr (Target='int')
  13861. \- Value: GroupingExpr: BinOpExpr (Operator='==')
  13862. |- LHS: AccessorExpr (Mode='.')
  13863. |- Object: AccessorExpr (Mode='.')
  13864. |- Object: CallExpr:
  13865. |- Method: AccessorExpr (Mode=':')
  13866. |- Object: CallExpr:
  13867. |- Method: AccessorExpr (Mode=':')
  13868. |- Object: NameExpr: 'eles'
  13869. \- Field: get
  13870. \- Arguments: (Len=1)
  13871. \0- LiteralExpr: type=int, value=0
  13872. \- Field: t
  13873. \- Arguments: (Len=0)
  13874. \- Field: type_
  13875. \- Field: name
  13876. \- RHS: LiteralExpr: type=cstr, value=T_VAR_DECL
  13877. \5- FunctionDecl:
  13878. |- Head: FunctionDeclHead: Name='DeclExpr::impl' Type='NodeType' Nargs=0
  13879. \0- ReturnExpr: CallExpr:
  13880. |- Method: AccessorExpr (Mode=':')
  13881. |- Object: CallExpr:
  13882. |- Method: AccessorExpr (Mode=':')
  13883. |- Object: CallExpr:
  13884. |- Method: AccessorExpr (Mode=':')
  13885. |- Object: CallExpr:
  13886. |- Method: AccessorExpr (Mode=':')
  13887. |- Object: CallExpr:
  13888. |- Method: AccessorExpr (Mode=':')
  13889. |- Object: CallExpr:
  13890. |- Method: AccessorExpr (Mode=':')
  13891. |- Object: CallExpr:
  13892. |- Method: AccessorExpr (Mode='::')
  13893. |- Object: NameExpr: 'NodeType'
  13894. \- Field: new
  13895. \- Arguments: (Len=1)
  13896. \0- LiteralExpr: type=cstr, value=DeclExpr
  13897. \- Field: set_printer
  13898. \- Arguments: (Len=1)
  13899. \0- CastExpr (Target='NodePrinter')
  13900. \- Value: AccessorExpr (Mode='::')
  13901. |- Object: NameExpr: 'DeclExpr'
  13902. \- Field: print
  13903. \- Field: set_creator
  13904. \- Arguments: (Len=1)
  13905. \0- CastExpr (Target='NodeCreator')
  13906. \- Value: AccessorExpr (Mode='::')
  13907. |- Object: NameExpr: 'DeclExpr'
  13908. \- Field: create
  13909. \- Field: set_matcher
  13910. \- Arguments: (Len=1)
  13911. \0- CastExpr (Target='NodeMatcher')
  13912. \- Value: AccessorExpr (Mode='::')
  13913. |- Object: NameExpr: 'DeclExpr'
  13914. \- Field: match
  13915. \- Field: matches
  13916. \- Arguments: (Len=1)
  13917. \0- LiteralExpr: type=int, value=1
  13918. \- Field: matches_only_tokens
  13919. \- Arguments: (Len=0)
  13920. \- Field: addtype
  13921. \- Arguments: (Len=1)
  13922. \0- LiteralExpr: type=cstr, value=IdentifierExpression
  13923. |4- SepExpr (Consumed=2)
  13924. |36- SepExpr (Consumed=1)
  13925. |37- FileNode: (N_Statements=3)
  13926. |0- SepExpr (Consumed=1)
  13927. |1- TypeDecl:
  13928. |- Head: TypeDeclHead: `ReturnExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  13929. \- Body: TypeDeclBody: (N_Statements=8)
  13930. |0- DeclExpr: 'NodeType type_'
  13931. |1- DeclExpr: 'bool is_void'
  13932. |2- DeclExpr: 'Node value'
  13933. |3- FunctionDecl:
  13934. |- Head: FunctionDeclHead: Name='ReturnExpr::print' Type='void' Nargs=2
  13935. |0- ReturnExpr node
  13936. \1- int depth
  13937. |0- CallExpr:
  13938. |- Method: NameExpr: 'printf'
  13939. \- Arguments: (Len=1)
  13940. \0- LiteralExpr: type=cstr, value=ReturnExpr:
  13941. |1- IfExpr:
  13942. |- Condition: AccessorExpr (Mode='.')
  13943. |- Object: NameExpr: 'node'
  13944. \- Field: is_void
  13945. |- Body: BlockBody: (N_Statements=1)
  13946. |0- CallExpr:
  13947. |- Method: NameExpr: 'printf'
  13948. \- Arguments: (Len=1)
  13949. \0- LiteralExpr: type=cstr, value=<void>\n
  13950. \-- Runoff Clause: BlockBody: (N_Statements=1)
  13951. |0- CallExpr:
  13952. |- Method: AccessorExpr (Mode=':')
  13953. |- Object: AccessorExpr (Mode='.')
  13954. |- Object: NameExpr: 'node'
  13955. \- Field: value
  13956. \- Field: print
  13957. \- Arguments: (Len=1)
  13958. \0- BinOpExpr (Operator='+')
  13959. |- LHS: NameExpr: 'depth'
  13960. \- RHS: LiteralExpr: type=int, value=1
  13961. \2- ReturnExpr: <void>
  13962. |4- FunctionDecl:
  13963. |- Head: FunctionDeclHead: Name='ReturnExpr::create' Type='ReturnExpr' Nargs=1
  13964. \0- EleList eles
  13965. |0- AssignmentExpr (Operator='=')
  13966. |- LHS: DeclExpr: 'ReturnExpr new'
  13967. \- RHS: CastExpr (Target='ReturnExpr')
  13968. \- Value: CallExpr:
  13969. |- Method: NameExpr: 'malloc'
  13970. \- Arguments: (Len=1)
  13971. \0- IntrinsicExpr: '@sizeof(ReturnExpr)@'
  13972. |1- AssignmentExpr (Operator='=')
  13973. |- LHS: AccessorExpr (Mode='.')
  13974. |- Object: NameExpr: 'new'
  13975. \- Field: is_void
  13976. \- RHS: LiteralExpr: type=bool, value=1
  13977. |2- IfExpr:
  13978. |- Condition: BinOpExpr (Operator='>')
  13979. |- LHS: CallExpr:
  13980. |- Method: AccessorExpr (Mode=':')
  13981. |- Object: NameExpr: 'eles'
  13982. \- Field: in_slice
  13983. \- Arguments: (Len=0)
  13984. \- RHS: LiteralExpr: type=int, value=1
  13985. |- Body: BlockBody: (N_Statements=1)
  13986. |0- IfExpr:
  13987. |- Condition: UnOpExpr (Operator='-')
  13988. \- Value: AccessorExpr (Mode='.')
  13989. |- Object: CallExpr:
  13990. |- Method: AccessorExpr (Mode=':')
  13991. |- Object: NameExpr: 'eles'
  13992. \- Field: get
  13993. \- Arguments: (Len=1)
  13994. \0- LiteralExpr: type=int, value=1
  13995. \- Field: is_token
  13996. |- Body: BlockBody: (N_Statements=1)
  13997. |0- AssignmentExpr (Operator='=')
  13998. |- LHS: AccessorExpr (Mode='.')
  13999. |- Object: NameExpr: 'new'
  14000. \- Field: is_void
  14001. \- RHS: UnOpExpr (Operator='-')
  14002. \- Value: CallExpr:
  14003. |- Method: AccessorExpr (Mode=':')
  14004. |- Object: CallExpr:
  14005. |- Method: AccessorExpr (Mode=':')
  14006. |- Object: CallExpr:
  14007. |- Method: AccessorExpr (Mode=':')
  14008. |- Object: NameExpr: 'eles'
  14009. \- Field: get
  14010. \- Arguments: (Len=1)
  14011. \0- LiteralExpr: type=int, value=1
  14012. \- Field: n
  14013. \- Arguments: (Len=0)
  14014. \- Field: is_a
  14015. \- Arguments: (Len=1)
  14016. \0- LiteralExpr: type=cstr, value=ValueExpression
  14017. |3- IfExpr:
  14018. |- Condition: UnOpExpr (Operator='-')
  14019. \- Value: AccessorExpr (Mode='.')
  14020. |- Object: NameExpr: 'new'
  14021. \- Field: is_void
  14022. |- Body: BlockBody: (N_Statements=1)
  14023. |0- AssignmentExpr (Operator='=')
  14024. |- LHS: AccessorExpr (Mode='.')
  14025. |- Object: NameExpr: 'new'
  14026. \- Field: value
  14027. \- RHS: CallExpr:
  14028. |- Method: AccessorExpr (Mode=':')
  14029. |- Object: CallExpr:
  14030. |- Method: AccessorExpr (Mode=':')
  14031. |- Object: NameExpr: 'eles'
  14032. \- Field: get
  14033. \- Arguments: (Len=1)
  14034. \0- LiteralExpr: type=int, value=1
  14035. \- Field: n
  14036. \- Arguments: (Len=0)
  14037. \4- ReturnExpr: NameExpr: 'new'
  14038. |5- FunctionDecl:
  14039. |- Head: FunctionDeclHead: Name='ReturnExpr::match' Type='int' Nargs=1
  14040. \0- EleList eles
  14041. |0- IfExpr:
  14042. |- Condition: GroupingExpr: UnOpExpr (Operator='-')
  14043. \- Value: AccessorExpr (Mode='.')
  14044. |- Object: CallExpr:
  14045. |- Method: AccessorExpr (Mode=':')
  14046. |- Object: NameExpr: 'eles'
  14047. \- Field: get
  14048. \- Arguments: (Len=1)
  14049. \0- LiteralExpr: type=int, value=0
  14050. \- Field: is_token
  14051. |- Body: BlockBody: (N_Statements=1)
  14052. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14053. |1- IfExpr:
  14054. |- Condition: GroupingExpr: BinOpExpr (Operator='!=')
  14055. |- LHS: AccessorExpr (Mode='.')
  14056. |- Object: AccessorExpr (Mode='.')
  14057. |- Object: CallExpr:
  14058. |- Method: AccessorExpr (Mode=':')
  14059. |- Object: CallExpr:
  14060. |- Method: AccessorExpr (Mode=':')
  14061. |- Object: NameExpr: 'eles'
  14062. \- Field: get
  14063. \- Arguments: (Len=1)
  14064. \0- LiteralExpr: type=int, value=0
  14065. \- Field: t
  14066. \- Arguments: (Len=0)
  14067. \- Field: type_
  14068. \- Field: name
  14069. \- RHS: LiteralExpr: type=cstr, value=T_RETURN
  14070. |- Body: BlockBody: (N_Statements=1)
  14071. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14072. |2- IfExpr:
  14073. |- Condition: BinOpExpr (Operator='>')
  14074. |- LHS: CallExpr:
  14075. |- Method: AccessorExpr (Mode=':')
  14076. |- Object: NameExpr: 'eles'
  14077. \- Field: in_slice
  14078. \- Arguments: (Len=0)
  14079. \- RHS: LiteralExpr: type=int, value=1
  14080. |- Body: BlockBody: (N_Statements=1)
  14081. |0- IfExpr:
  14082. |- Condition: UnOpExpr (Operator='-')
  14083. \- Value: AccessorExpr (Mode='.')
  14084. |- Object: CallExpr:
  14085. |- Method: AccessorExpr (Mode=':')
  14086. |- Object: NameExpr: 'eles'
  14087. \- Field: get
  14088. \- Arguments: (Len=1)
  14089. \0- LiteralExpr: type=int, value=1
  14090. \- Field: is_token
  14091. |- Body: BlockBody: (N_Statements=1)
  14092. |0- IfExpr:
  14093. |- Condition: CallExpr:
  14094. |- Method: AccessorExpr (Mode=':')
  14095. |- Object: CallExpr:
  14096. |- Method: AccessorExpr (Mode=':')
  14097. |- Object: CallExpr:
  14098. |- Method: AccessorExpr (Mode=':')
  14099. |- Object: NameExpr: 'eles'
  14100. \- Field: get
  14101. \- Arguments: (Len=1)
  14102. \0- LiteralExpr: type=int, value=1
  14103. \- Field: n
  14104. \- Arguments: (Len=0)
  14105. \- Field: is_a
  14106. \- Arguments: (Len=1)
  14107. \0- LiteralExpr: type=cstr, value=ValueExpression
  14108. |- Body: BlockBody: (N_Statements=1)
  14109. |0- ReturnExpr: LiteralExpr: type=int, value=2
  14110. \3- ReturnExpr: LiteralExpr: type=int, value=1
  14111. |6- FunctionDecl:
  14112. |- Head: FunctionDeclHead: Name='ReturnExpr::visit' Type='void' Nargs=2
  14113. |0- ReturnExpr n
  14114. \1- TransformerPass p
  14115. |0- IfExpr:
  14116. |- Condition: UnOpExpr (Operator='-')
  14117. \- Value: AccessorExpr (Mode='.')
  14118. |- Object: NameExpr: 'n'
  14119. \- Field: is_void
  14120. |- Body: BlockBody: (N_Statements=1)
  14121. |0- AssignmentExpr (Operator='=')
  14122. |- LHS: AccessorExpr (Mode='.')
  14123. |- Object: NameExpr: 'n'
  14124. \- Field: value
  14125. \- RHS: CallExpr:
  14126. |- Method: AccessorExpr (Mode=':')
  14127. |- Object: NameExpr: 'p'
  14128. \- Field: visit
  14129. \- Arguments: (Len=1)
  14130. \0- AccessorExpr (Mode='.')
  14131. |- Object: NameExpr: 'n'
  14132. \- Field: value
  14133. \1- ReturnExpr: <void>
  14134. \7- FunctionDecl:
  14135. |- Head: FunctionDeclHead: Name='ReturnExpr::impl' Type='NodeType' Nargs=0
  14136. \0- ReturnExpr: CallExpr:
  14137. |- Method: AccessorExpr (Mode=':')
  14138. |- Object: CallExpr:
  14139. |- Method: AccessorExpr (Mode=':')
  14140. |- Object: CallExpr:
  14141. |- Method: AccessorExpr (Mode=':')
  14142. |- Object: CallExpr:
  14143. |- Method: AccessorExpr (Mode=':')
  14144. |- Object: CallExpr:
  14145. |- Method: AccessorExpr (Mode=':')
  14146. |- Object: CallExpr:
  14147. |- Method: AccessorExpr (Mode=':')
  14148. |- Object: CallExpr:
  14149. |- Method: AccessorExpr (Mode='::')
  14150. |- Object: NameExpr: 'NodeType'
  14151. \- Field: new
  14152. \- Arguments: (Len=1)
  14153. \0- LiteralExpr: type=cstr, value=ReturnExpr
  14154. \- Field: set_printer
  14155. \- Arguments: (Len=1)
  14156. \0- CastExpr (Target='NodePrinter')
  14157. \- Value: AccessorExpr (Mode='::')
  14158. |- Object: NameExpr: 'ReturnExpr'
  14159. \- Field: print
  14160. \- Field: set_creator
  14161. \- Arguments: (Len=1)
  14162. \0- CastExpr (Target='NodeCreator')
  14163. \- Value: AccessorExpr (Mode='::')
  14164. |- Object: NameExpr: 'ReturnExpr'
  14165. \- Field: create
  14166. \- Field: set_matcher
  14167. \- Arguments: (Len=1)
  14168. \0- CastExpr (Target='NodeMatcher')
  14169. \- Value: AccessorExpr (Mode='::')
  14170. |- Object: NameExpr: 'ReturnExpr'
  14171. \- Field: match
  14172. \- Field: set_visitor
  14173. \- Arguments: (Len=1)
  14174. \0- CastExpr (Target='NodeVisitor')
  14175. \- Value: AccessorExpr (Mode='::')
  14176. |- Object: NameExpr: 'ReturnExpr'
  14177. \- Field: visit
  14178. \- Field: matches
  14179. \- Arguments: (Len=1)
  14180. \0- LiteralExpr: type=int, value=1
  14181. \- Field: addtype
  14182. \- Arguments: (Len=1)
  14183. \0- LiteralExpr: type=cstr, value=Expression
  14184. |2- SepExpr (Consumed=2)
  14185. |38- SepExpr (Consumed=1)
  14186. |39- FileNode: (N_Statements=3)
  14187. |0- SepExpr (Consumed=1)
  14188. |1- TypeDecl:
  14189. |- Head: TypeDeclHead: `SepExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  14190. \- Body: TypeDeclBody: (N_Statements=6)
  14191. |0- DeclExpr: 'NodeType type_'
  14192. |1- DeclExpr: 'int consumed'
  14193. |2- FunctionDecl:
  14194. |- Head: FunctionDeclHead: Name='SepExpr::print' Type='void' Nargs=2
  14195. |0- SepExpr node
  14196. \1- int depth
  14197. |0- CallExpr:
  14198. |- Method: NameExpr: 'printf'
  14199. \- Arguments: (Len=2)
  14200. |0- LiteralExpr: type=cstr, value=SepExpr (Consumed=%i)\n
  14201. \1- AccessorExpr (Mode='.')
  14202. |- Object: NameExpr: 'node'
  14203. \- Field: consumed
  14204. \1- ReturnExpr: <void>
  14205. |3- FunctionDecl:
  14206. |- Head: FunctionDeclHead: Name='SepExpr::create' Type='SepExpr' Nargs=1
  14207. \0- EleList eles
  14208. |0- AssignmentExpr (Operator='=')
  14209. |- LHS: DeclExpr: 'SepExpr new'
  14210. \- RHS: CastExpr (Target='SepExpr')
  14211. \- Value: CallExpr:
  14212. |- Method: NameExpr: 'malloc'
  14213. \- Arguments: (Len=1)
  14214. \0- IntrinsicExpr: '@sizeof(SepExpr)@'
  14215. |1- AssignmentExpr (Operator='=')
  14216. |- LHS: AccessorExpr (Mode='.')
  14217. |- Object: NameExpr: 'new'
  14218. \- Field: consumed
  14219. \- RHS: LiteralExpr: type=int, value=1
  14220. |2- IfExpr:
  14221. |- Condition: BinOpExpr (Operator='>')
  14222. |- LHS: CallExpr:
  14223. |- Method: AccessorExpr (Mode=':')
  14224. |- Object: NameExpr: 'eles'
  14225. \- Field: in_slice
  14226. \- Arguments: (Len=0)
  14227. \- RHS: LiteralExpr: type=int, value=1
  14228. |- Body: BlockBody: (N_Statements=1)
  14229. |0- IfExpr:
  14230. |- Condition: AccessorExpr (Mode='.')
  14231. |- Object: CallExpr:
  14232. |- Method: AccessorExpr (Mode=':')
  14233. |- Object: NameExpr: 'eles'
  14234. \- Field: get
  14235. \- Arguments: (Len=1)
  14236. \0- LiteralExpr: type=int, value=1
  14237. \- Field: is_token
  14238. |- Body: BlockBody: (N_Statements=1)
  14239. |0- IfExpr:
  14240. |- Condition: CallExpr:
  14241. |- Method: AccessorExpr (Mode=':')
  14242. |- Object: CallExpr:
  14243. |- Method: AccessorExpr (Mode=':')
  14244. |- Object: CallExpr:
  14245. |- Method: AccessorExpr (Mode=':')
  14246. |- Object: NameExpr: 'eles'
  14247. \- Field: get
  14248. \- Arguments: (Len=1)
  14249. \0- LiteralExpr: type=int, value=1
  14250. \- Field: t
  14251. \- Arguments: (Len=0)
  14252. \- Field: is_a
  14253. \- Arguments: (Len=1)
  14254. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  14255. |- Body: BlockBody: (N_Statements=1)
  14256. |0- IfExpr:
  14257. |- Condition: UnOpExpr (Operator='-')
  14258. \- Value: AccessorExpr (Mode='.')
  14259. |- Object: CallExpr:
  14260. |- Method: AccessorExpr (Mode=':')
  14261. |- Object: NameExpr: 'eles'
  14262. \- Field: get
  14263. \- Arguments: (Len=1)
  14264. \0- LiteralExpr: type=int, value=0
  14265. \- Field: is_token
  14266. |- Body: BlockBody: (N_Statements=1)
  14267. |0- IfExpr:
  14268. |- Condition: CallExpr:
  14269. |- Method: AccessorExpr (Mode=':')
  14270. |- Object: CallExpr:
  14271. |- Method: AccessorExpr (Mode=':')
  14272. |- Object: CallExpr:
  14273. |- Method: AccessorExpr (Mode=':')
  14274. |- Object: NameExpr: 'eles'
  14275. \- Field: get
  14276. \- Arguments: (Len=1)
  14277. \0- LiteralExpr: type=int, value=0
  14278. \- Field: n
  14279. \- Arguments: (Len=0)
  14280. \- Field: is_a
  14281. \- Arguments: (Len=1)
  14282. \0- LiteralExpr: type=cstr, value=SepExpr
  14283. |- Body: BlockBody: (N_Statements=1)
  14284. |0- AssignmentExpr (Operator='=')
  14285. |- LHS: AccessorExpr (Mode='.')
  14286. |- Object: NameExpr: 'new'
  14287. \- Field: consumed
  14288. \- RHS: BinOpExpr (Operator='+')
  14289. |- LHS: AccessorExpr (Mode='.')
  14290. |- Object: GroupingExpr: CastExpr (Target='SepExpr')
  14291. \- Value: CallExpr:
  14292. |- Method: AccessorExpr (Mode=':')
  14293. |- Object: CallExpr:
  14294. |- Method: AccessorExpr (Mode=':')
  14295. |- Object: NameExpr: 'eles'
  14296. \- Field: get
  14297. \- Arguments: (Len=1)
  14298. \0- LiteralExpr: type=int, value=0
  14299. \- Field: n
  14300. \- Arguments: (Len=0)
  14301. \- Field: consumed
  14302. \- RHS: LiteralExpr: type=int, value=1
  14303. \3- ReturnExpr: NameExpr: 'new'
  14304. |4- FunctionDecl:
  14305. |- Head: FunctionDeclHead: Name='SepExpr::match' Type='int' Nargs=1
  14306. \0- EleList eles
  14307. |0- IfExpr:
  14308. |- Condition: BinOpExpr (Operator='>')
  14309. |- LHS: CallExpr:
  14310. |- Method: AccessorExpr (Mode=':')
  14311. |- Object: NameExpr: 'eles'
  14312. \- Field: in_slice
  14313. \- Arguments: (Len=0)
  14314. \- RHS: LiteralExpr: type=int, value=1
  14315. |- Body: BlockBody: (N_Statements=1)
  14316. |0- IfExpr:
  14317. |- Condition: AccessorExpr (Mode='.')
  14318. |- Object: CallExpr:
  14319. |- Method: AccessorExpr (Mode=':')
  14320. |- Object: NameExpr: 'eles'
  14321. \- Field: get
  14322. \- Arguments: (Len=1)
  14323. \0- LiteralExpr: type=int, value=1
  14324. \- Field: is_token
  14325. |- Body: BlockBody: (N_Statements=1)
  14326. |0- IfExpr:
  14327. |- Condition: CallExpr:
  14328. |- Method: AccessorExpr (Mode=':')
  14329. |- Object: CallExpr:
  14330. |- Method: AccessorExpr (Mode=':')
  14331. |- Object: CallExpr:
  14332. |- Method: AccessorExpr (Mode=':')
  14333. |- Object: NameExpr: 'eles'
  14334. \- Field: get
  14335. \- Arguments: (Len=1)
  14336. \0- LiteralExpr: type=int, value=1
  14337. \- Field: t
  14338. \- Arguments: (Len=0)
  14339. \- Field: is_a
  14340. \- Arguments: (Len=1)
  14341. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  14342. |- Body: BlockBody: (N_Statements=1)
  14343. |0- IfExpr:
  14344. |- Condition: UnOpExpr (Operator='-')
  14345. \- Value: AccessorExpr (Mode='.')
  14346. |- Object: CallExpr:
  14347. |- Method: AccessorExpr (Mode=':')
  14348. |- Object: NameExpr: 'eles'
  14349. \- Field: get
  14350. \- Arguments: (Len=1)
  14351. \0- LiteralExpr: type=int, value=0
  14352. \- Field: is_token
  14353. |- Body: BlockBody: (N_Statements=1)
  14354. |0- IfExpr:
  14355. |- Condition: CallExpr:
  14356. |- Method: AccessorExpr (Mode=':')
  14357. |- Object: CallExpr:
  14358. |- Method: AccessorExpr (Mode=':')
  14359. |- Object: CallExpr:
  14360. |- Method: AccessorExpr (Mode=':')
  14361. |- Object: NameExpr: 'eles'
  14362. \- Field: get
  14363. \- Arguments: (Len=1)
  14364. \0- LiteralExpr: type=int, value=0
  14365. \- Field: n
  14366. \- Arguments: (Len=0)
  14367. \- Field: is_a
  14368. \- Arguments: (Len=1)
  14369. \0- LiteralExpr: type=cstr, value=SepExpr
  14370. |- Body: BlockBody: (N_Statements=1)
  14371. |0- ReturnExpr: LiteralExpr: type=int, value=2
  14372. |1- IfExpr:
  14373. |- Condition: GroupingExpr: UnOpExpr (Operator='-')
  14374. \- Value: AccessorExpr (Mode='.')
  14375. |- Object: CallExpr:
  14376. |- Method: AccessorExpr (Mode=':')
  14377. |- Object: NameExpr: 'eles'
  14378. \- Field: get
  14379. \- Arguments: (Len=1)
  14380. \0- LiteralExpr: type=int, value=0
  14381. \- Field: is_token
  14382. |- Body: BlockBody: (N_Statements=1)
  14383. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14384. |2- IfExpr:
  14385. |- Condition: GroupingExpr: BinOpExpr (Operator='!=')
  14386. |- LHS: AccessorExpr (Mode='.')
  14387. |- Object: AccessorExpr (Mode='.')
  14388. |- Object: CallExpr:
  14389. |- Method: AccessorExpr (Mode=':')
  14390. |- Object: CallExpr:
  14391. |- Method: AccessorExpr (Mode=':')
  14392. |- Object: NameExpr: 'eles'
  14393. \- Field: get
  14394. \- Arguments: (Len=1)
  14395. \0- LiteralExpr: type=int, value=0
  14396. \- Field: t
  14397. \- Arguments: (Len=0)
  14398. \- Field: type_
  14399. \- Field: name
  14400. \- RHS: LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  14401. |- Body: BlockBody: (N_Statements=1)
  14402. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14403. |3- IfExpr:
  14404. |- Condition: CallExpr:
  14405. |- Method: AccessorExpr (Mode=':')
  14406. |- Object: NameExpr: 'eles'
  14407. \- Field: has_lookahead
  14408. \- Arguments: (Len=0)
  14409. |- Body: BlockBody: (N_Statements=1)
  14410. |0- IfExpr:
  14411. |- Condition: AccessorExpr (Mode='.')
  14412. |- Object: CallExpr:
  14413. |- Method: AccessorExpr (Mode=':')
  14414. |- Object: NameExpr: 'eles'
  14415. \- Field: get_lookahead
  14416. \- Arguments: (Len=0)
  14417. \- Field: is_token
  14418. |- Body: BlockBody: (N_Statements=1)
  14419. |0- IfExpr:
  14420. |- Condition: CallExpr:
  14421. |- Method: AccessorExpr (Mode=':')
  14422. |- Object: CallExpr:
  14423. |- Method: AccessorExpr (Mode=':')
  14424. |- Object: CallExpr:
  14425. |- Method: AccessorExpr (Mode=':')
  14426. |- Object: NameExpr: 'eles'
  14427. \- Field: get_lookahead
  14428. \- Arguments: (Len=0)
  14429. \- Field: t
  14430. \- Arguments: (Len=0)
  14431. \- Field: is_a
  14432. \- Arguments: (Len=1)
  14433. \0- LiteralExpr: type=cstr, value=T_ENDOFSTATEMENT
  14434. |- Body: BlockBody: (N_Statements=1)
  14435. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14436. \4- ReturnExpr: LiteralExpr: type=int, value=1
  14437. \5- FunctionDecl:
  14438. |- Head: FunctionDeclHead: Name='SepExpr::impl' Type='NodeType' Nargs=0
  14439. \0- ReturnExpr: CallExpr:
  14440. |- Method: AccessorExpr (Mode=':')
  14441. |- Object: CallExpr:
  14442. |- Method: AccessorExpr (Mode=':')
  14443. |- Object: CallExpr:
  14444. |- Method: AccessorExpr (Mode=':')
  14445. |- Object: CallExpr:
  14446. |- Method: AccessorExpr (Mode=':')
  14447. |- Object: CallExpr:
  14448. |- Method: AccessorExpr (Mode=':')
  14449. |- Object: CallExpr:
  14450. |- Method: AccessorExpr (Mode='::')
  14451. |- Object: NameExpr: 'NodeType'
  14452. \- Field: new
  14453. \- Arguments: (Len=1)
  14454. \0- LiteralExpr: type=cstr, value=SepExpr
  14455. \- Field: set_printer
  14456. \- Arguments: (Len=1)
  14457. \0- CastExpr (Target='NodePrinter')
  14458. \- Value: AccessorExpr (Mode='::')
  14459. |- Object: NameExpr: 'SepExpr'
  14460. \- Field: print
  14461. \- Field: set_creator
  14462. \- Arguments: (Len=1)
  14463. \0- CastExpr (Target='NodeCreator')
  14464. \- Value: AccessorExpr (Mode='::')
  14465. |- Object: NameExpr: 'SepExpr'
  14466. \- Field: create
  14467. \- Field: set_matcher
  14468. \- Arguments: (Len=1)
  14469. \0- CastExpr (Target='NodeMatcher')
  14470. \- Value: AccessorExpr (Mode='::')
  14471. |- Object: NameExpr: 'SepExpr'
  14472. \- Field: match
  14473. \- Field: matches
  14474. \- Arguments: (Len=1)
  14475. \0- LiteralExpr: type=int, value=1
  14476. \- Field: addtype
  14477. \- Arguments: (Len=1)
  14478. \0- LiteralExpr: type=cstr, value=Expression
  14479. |2- SepExpr (Consumed=2)
  14480. |40- SepExpr (Consumed=1)
  14481. |41- FileNode: (N_Statements=11)
  14482. |0- SepExpr (Consumed=1)
  14483. |1- TypeDecl:
  14484. |- Head: TypeDeclHead: `TupleEndFragment` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  14485. \- Body: TypeDeclBody: (N_Statements=6)
  14486. |0- DeclExpr: 'NodeType type_'
  14487. |1- DeclExpr: 'Node element'
  14488. |2- FunctionDecl:
  14489. |- Head: FunctionDeclHead: Name='TupleEndFragment::print' Type='void' Nargs=2
  14490. |0- TupleEndFragment node
  14491. \1- int depth
  14492. |0- CallExpr:
  14493. |- Method: NameExpr: 'printf'
  14494. \- Arguments: (Len=1)
  14495. \0- LiteralExpr: type=cstr, value=TupleEndFragment, element=
  14496. |1- CallExpr:
  14497. |- Method: AccessorExpr (Mode=':')
  14498. |- Object: AccessorExpr (Mode='.')
  14499. |- Object: NameExpr: 'node'
  14500. \- Field: element
  14501. \- Field: print
  14502. \- Arguments: (Len=1)
  14503. \0- BinOpExpr (Operator='+')
  14504. |- LHS: NameExpr: 'depth'
  14505. \- RHS: LiteralExpr: type=int, value=1
  14506. \2- ReturnExpr: <void>
  14507. |3- FunctionDecl:
  14508. |- Head: FunctionDeclHead: Name='TupleEndFragment::create' Type='TupleEndFragment' Nargs=1
  14509. \0- EleList eles
  14510. |0- AssignmentExpr (Operator='=')
  14511. |- LHS: DeclExpr: 'TupleEndFragment new'
  14512. \- RHS: CastExpr (Target='TupleEndFragment')
  14513. \- Value: CallExpr:
  14514. |- Method: NameExpr: 'malloc'
  14515. \- Arguments: (Len=1)
  14516. \0- IntrinsicExpr: '@sizeof(TupleEndFragment)@'
  14517. |1- AssignmentExpr (Operator='=')
  14518. |- LHS: AccessorExpr (Mode='.')
  14519. |- Object: NameExpr: 'new'
  14520. \- Field: element
  14521. \- RHS: CallExpr:
  14522. |- Method: AccessorExpr (Mode=':')
  14523. |- Object: CallExpr:
  14524. |- Method: AccessorExpr (Mode=':')
  14525. |- Object: NameExpr: 'eles'
  14526. \- Field: get
  14527. \- Arguments: (Len=1)
  14528. \0- LiteralExpr: type=int, value=1
  14529. \- Field: n
  14530. \- Arguments: (Len=0)
  14531. \2- ReturnExpr: NameExpr: 'new'
  14532. |4- FunctionDecl:
  14533. |- Head: FunctionDeclHead: Name='TupleEndFragment::match' Type='int' Nargs=1
  14534. \0- EleList eles
  14535. |0- IfExpr:
  14536. |- Condition: CallExpr:
  14537. |- Method: AccessorExpr (Mode=':')
  14538. |- Object: CallExpr:
  14539. |- Method: AccessorExpr (Mode=':')
  14540. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  14541. \- Value: AccessorExpr (Mode='.')
  14542. |- Object: CallExpr:
  14543. |- Method: AccessorExpr (Mode=':')
  14544. |- Object: NameExpr: 'eles'
  14545. \- Field: get
  14546. \- Arguments: (Len=1)
  14547. \0- LiteralExpr: type=int, value=0
  14548. \- Field: is_token
  14549. \- Field: or
  14550. \- Arguments: (Len=1)
  14551. \0- AccessorExpr (Mode='.')
  14552. |- Object: CallExpr:
  14553. |- Method: AccessorExpr (Mode=':')
  14554. |- Object: NameExpr: 'eles'
  14555. \- Field: get
  14556. \- Arguments: (Len=1)
  14557. \0- LiteralExpr: type=int, value=1
  14558. \- Field: is_token
  14559. \- Field: or
  14560. \- Arguments: (Len=1)
  14561. \0- UnOpExpr (Operator='-')
  14562. \- Value: AccessorExpr (Mode='.')
  14563. |- Object: CallExpr:
  14564. |- Method: AccessorExpr (Mode=':')
  14565. |- Object: NameExpr: 'eles'
  14566. \- Field: get
  14567. \- Arguments: (Len=1)
  14568. \0- LiteralExpr: type=int, value=2
  14569. \- Field: is_token
  14570. |- Body: BlockBody: (N_Statements=1)
  14571. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14572. |1- IfExpr:
  14573. |- Condition: CallExpr:
  14574. |- Method: AccessorExpr (Mode=':')
  14575. |- Object: CallExpr:
  14576. |- Method: AccessorExpr (Mode=':')
  14577. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  14578. |- LHS: AccessorExpr (Mode='.')
  14579. |- Object: AccessorExpr (Mode='.')
  14580. |- Object: CallExpr:
  14581. |- Method: AccessorExpr (Mode=':')
  14582. |- Object: CallExpr:
  14583. |- Method: AccessorExpr (Mode=':')
  14584. |- Object: NameExpr: 'eles'
  14585. \- Field: get
  14586. \- Arguments: (Len=1)
  14587. \0- LiteralExpr: type=int, value=0
  14588. \- Field: t
  14589. \- Arguments: (Len=0)
  14590. \- Field: type_
  14591. \- Field: name
  14592. \- RHS: LiteralExpr: type=cstr, value=T_COMMA
  14593. \- Field: or
  14594. \- Arguments: (Len=1)
  14595. \0- BinOpExpr (Operator='!=')
  14596. |- LHS: AccessorExpr (Mode='.')
  14597. |- Object: AccessorExpr (Mode='.')
  14598. |- Object: CallExpr:
  14599. |- Method: AccessorExpr (Mode=':')
  14600. |- Object: CallExpr:
  14601. |- Method: AccessorExpr (Mode=':')
  14602. |- Object: NameExpr: 'eles'
  14603. \- Field: get
  14604. \- Arguments: (Len=1)
  14605. \0- LiteralExpr: type=int, value=2
  14606. \- Field: t
  14607. \- Arguments: (Len=0)
  14608. \- Field: type_
  14609. \- Field: name
  14610. \- RHS: LiteralExpr: type=cstr, value=T_PAREN_CLOSE
  14611. \- Field: or
  14612. \- Arguments: (Len=1)
  14613. \0- UnOpExpr (Operator='-')
  14614. \- Value: CallExpr:
  14615. |- Method: AccessorExpr (Mode=':')
  14616. |- Object: CallExpr:
  14617. |- Method: AccessorExpr (Mode=':')
  14618. |- Object: CallExpr:
  14619. |- Method: AccessorExpr (Mode=':')
  14620. |- Object: NameExpr: 'eles'
  14621. \- Field: get
  14622. \- Arguments: (Len=1)
  14623. \0- LiteralExpr: type=int, value=1
  14624. \- Field: n
  14625. \- Arguments: (Len=0)
  14626. \- Field: is_a
  14627. \- Arguments: (Len=1)
  14628. \0- LiteralExpr: type=cstr, value=ValueExpression
  14629. |- Body: BlockBody: (N_Statements=1)
  14630. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14631. \2- ReturnExpr: LiteralExpr: type=int, value=3
  14632. \5- FunctionDecl:
  14633. |- Head: FunctionDeclHead: Name='TupleEndFragment::impl' Type='NodeType' Nargs=0
  14634. \0- ReturnExpr: CallExpr:
  14635. |- Method: AccessorExpr (Mode=':')
  14636. |- Object: CallExpr:
  14637. |- Method: AccessorExpr (Mode=':')
  14638. |- Object: CallExpr:
  14639. |- Method: AccessorExpr (Mode=':')
  14640. |- Object: CallExpr:
  14641. |- Method: AccessorExpr (Mode=':')
  14642. |- Object: CallExpr:
  14643. |- Method: AccessorExpr (Mode=':')
  14644. |- Object: CallExpr:
  14645. |- Method: AccessorExpr (Mode='::')
  14646. |- Object: NameExpr: 'NodeType'
  14647. \- Field: new
  14648. \- Arguments: (Len=1)
  14649. \0- LiteralExpr: type=cstr, value=TupleEndFragment
  14650. \- Field: set_printer
  14651. \- Arguments: (Len=1)
  14652. \0- CastExpr (Target='NodePrinter')
  14653. \- Value: AccessorExpr (Mode='::')
  14654. |- Object: NameExpr: 'TupleEndFragment'
  14655. \- Field: print
  14656. \- Field: set_creator
  14657. \- Arguments: (Len=1)
  14658. \0- CastExpr (Target='NodeCreator')
  14659. \- Value: AccessorExpr (Mode='::')
  14660. |- Object: NameExpr: 'TupleEndFragment'
  14661. \- Field: create
  14662. \- Field: set_matcher
  14663. \- Arguments: (Len=1)
  14664. \0- CastExpr (Target='NodeMatcher')
  14665. \- Value: AccessorExpr (Mode='::')
  14666. |- Object: NameExpr: 'TupleEndFragment'
  14667. \- Field: match
  14668. \- Field: matches
  14669. \- Arguments: (Len=1)
  14670. \0- LiteralExpr: type=int, value=3
  14671. \- Field: addtype
  14672. \- Arguments: (Len=1)
  14673. \0- LiteralExpr: type=cstr, value=TupleFragment
  14674. |2- SepExpr (Consumed=2)
  14675. |3- TypeDecl:
  14676. |- Head: TypeDeclHead: `TupleMidFragment` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  14677. \- Body: TypeDeclBody: (N_Statements=6)
  14678. |0- DeclExpr: 'NodeType type_'
  14679. |1- DeclExpr: 'List elements'
  14680. |2- FunctionDecl:
  14681. |- Head: FunctionDeclHead: Name='TupleMidFragment::print' Type='void' Nargs=2
  14682. |0- TupleMidFragment node
  14683. \1- int depth
  14684. |0- CallExpr:
  14685. |- Method: NameExpr: 'printf'
  14686. \- Arguments: (Len=2)
  14687. |0- LiteralExpr: type=cstr, value=TupleMidFragment: (Length=%i)\n
  14688. \1- AccessorExpr (Mode='.')
  14689. |- Object: AccessorExpr (Mode='.')
  14690. |- Object: NameExpr: 'node'
  14691. \- Field: elements
  14692. \- Field: len
  14693. |1- AssignmentExpr (Operator='=')
  14694. |- LHS: DeclExpr: 'int i'
  14695. \- RHS: LiteralExpr: type=int, value=0
  14696. |2- WhileExpr:
  14697. |- Condition: BinOpExpr (Operator='<')
  14698. |- LHS: NameExpr: 'i'
  14699. \- RHS: AccessorExpr (Mode='.')
  14700. |- Object: AccessorExpr (Mode='.')
  14701. |- Object: NameExpr: 'node'
  14702. \- Field: elements
  14703. \- Field: len
  14704. |- Body: BlockBody: (N_Statements=4)
  14705. |0- CallExpr:
  14706. |- Method: AccessorExpr (Mode='::')
  14707. |- Object: NameExpr: 'parse'
  14708. \- Field: indent
  14709. \- Arguments: (Len=1)
  14710. \0- NameExpr: 'depth'
  14711. |1- CallExpr:
  14712. |- Method: NameExpr: 'printf'
  14713. \- Arguments: (Len=2)
  14714. |0- LiteralExpr: type=cstr, value=|%i-
  14715. \1- NameExpr: 'i'
  14716. |2- CallExpr:
  14717. |- Method: AccessorExpr (Mode=':')
  14718. |- Object: CallExpr:
  14719. |- Method: AccessorExpr (Mode=':')
  14720. |- Object: AccessorExpr (Mode='.')
  14721. |- Object: NameExpr: 'node'
  14722. \- Field: elements
  14723. \- Field: get_Node
  14724. \- Arguments: (Len=1)
  14725. \0- NameExpr: 'i'
  14726. \- Field: print
  14727. \- Arguments: (Len=1)
  14728. \0- BinOpExpr (Operator='+')
  14729. |- LHS: NameExpr: 'depth'
  14730. \- RHS: LiteralExpr: type=int, value=1
  14731. |3- AssignmentExpr (Operator='+=')
  14732. |- LHS: NameExpr: 'i'
  14733. \- RHS: LiteralExpr: type=int, value=1
  14734. \3- ReturnExpr: <void>
  14735. |3- FunctionDecl:
  14736. |- Head: FunctionDeclHead: Name='TupleMidFragment::create' Type='TupleMidFragment' Nargs=1
  14737. \0- EleList eles
  14738. |0- AssignmentExpr (Operator='=')
  14739. |- LHS: DeclExpr: 'TupleMidFragment new'
  14740. \- RHS: CastExpr (Target='TupleMidFragment')
  14741. \- Value: CallExpr:
  14742. |- Method: NameExpr: 'malloc'
  14743. \- Arguments: (Len=1)
  14744. \0- IntrinsicExpr: '@sizeof(TupleMidFragment)@'
  14745. |1- IfExpr:
  14746. |- Condition: CallExpr:
  14747. |- Method: AccessorExpr (Mode=':')
  14748. |- Object: CallExpr:
  14749. |- Method: AccessorExpr (Mode=':')
  14750. |- Object: CallExpr:
  14751. |- Method: AccessorExpr (Mode=':')
  14752. |- Object: NameExpr: 'eles'
  14753. \- Field: get
  14754. \- Arguments: (Len=1)
  14755. \0- LiteralExpr: type=int, value=2
  14756. \- Field: n
  14757. \- Arguments: (Len=0)
  14758. \- Field: is_a
  14759. \- Arguments: (Len=1)
  14760. \0- LiteralExpr: type=cstr, value=TupleEndFragment
  14761. |- Body: BlockBody: (N_Statements=3)
  14762. |0- AssignmentExpr (Operator='=')
  14763. |- LHS: AccessorExpr (Mode='.')
  14764. |- Object: NameExpr: 'new'
  14765. \- Field: elements
  14766. \- RHS: CallExpr:
  14767. |- Method: AccessorExpr (Mode='::')
  14768. |- Object: NameExpr: 'List'
  14769. \- Field: new
  14770. \- Arguments: (Len=0)
  14771. |1- CallExpr:
  14772. |- Method: AccessorExpr (Mode=':')
  14773. |- Object: AccessorExpr (Mode='.')
  14774. |- Object: NameExpr: 'new'
  14775. \- Field: elements
  14776. \- Field: append_Node
  14777. \- Arguments: (Len=1)
  14778. \0- CallExpr:
  14779. |- Method: AccessorExpr (Mode=':')
  14780. |- Object: CallExpr:
  14781. |- Method: AccessorExpr (Mode=':')
  14782. |- Object: NameExpr: 'eles'
  14783. \- Field: get
  14784. \- Arguments: (Len=1)
  14785. \0- LiteralExpr: type=int, value=1
  14786. \- Field: n
  14787. \- Arguments: (Len=0)
  14788. |2- CallExpr:
  14789. |- Method: AccessorExpr (Mode=':')
  14790. |- Object: AccessorExpr (Mode='.')
  14791. |- Object: NameExpr: 'new'
  14792. \- Field: elements
  14793. \- Field: append_Node
  14794. \- Arguments: (Len=1)
  14795. \0- AccessorExpr (Mode='.')
  14796. |- Object: GroupingExpr: CastExpr (Target='TupleEndFragment')
  14797. \- Value: CallExpr:
  14798. |- Method: AccessorExpr (Mode=':')
  14799. |- Object: CallExpr:
  14800. |- Method: AccessorExpr (Mode=':')
  14801. |- Object: NameExpr: 'eles'
  14802. \- Field: get
  14803. \- Arguments: (Len=1)
  14804. \0- LiteralExpr: type=int, value=2
  14805. \- Field: n
  14806. \- Arguments: (Len=0)
  14807. \- Field: element
  14808. \-- Runoff Clause: BlockBody: (N_Statements=2)
  14809. |0- AssignmentExpr (Operator='=')
  14810. |- LHS: AccessorExpr (Mode='.')
  14811. |- Object: NameExpr: 'new'
  14812. \- Field: elements
  14813. \- RHS: AccessorExpr (Mode='.')
  14814. |- Object: GroupingExpr: CastExpr (Target='TupleMidFragment')
  14815. \- Value: CallExpr:
  14816. |- Method: AccessorExpr (Mode=':')
  14817. |- Object: CallExpr:
  14818. |- Method: AccessorExpr (Mode=':')
  14819. |- Object: NameExpr: 'eles'
  14820. \- Field: get
  14821. \- Arguments: (Len=1)
  14822. \0- LiteralExpr: type=int, value=2
  14823. \- Field: n
  14824. \- Arguments: (Len=0)
  14825. \- Field: elements
  14826. |1- CallExpr:
  14827. |- Method: AccessorExpr (Mode=':')
  14828. |- Object: AccessorExpr (Mode='.')
  14829. |- Object: NameExpr: 'new'
  14830. \- Field: elements
  14831. \- Field: insert
  14832. \- Arguments: (Len=2)
  14833. |0- LiteralExpr: type=int, value=0
  14834. \1- CastExpr (Target='ptr')
  14835. \- Value: CallExpr:
  14836. |- Method: AccessorExpr (Mode=':')
  14837. |- Object: CallExpr:
  14838. |- Method: AccessorExpr (Mode=':')
  14839. |- Object: NameExpr: 'eles'
  14840. \- Field: get
  14841. \- Arguments: (Len=1)
  14842. \0- LiteralExpr: type=int, value=1
  14843. \- Field: n
  14844. \- Arguments: (Len=0)
  14845. \2- ReturnExpr: NameExpr: 'new'
  14846. |4- FunctionDecl:
  14847. |- Head: FunctionDeclHead: Name='TupleMidFragment::match' Type='int' Nargs=1
  14848. \0- EleList eles
  14849. |0- IfExpr:
  14850. |- Condition: CallExpr:
  14851. |- Method: AccessorExpr (Mode=':')
  14852. |- Object: CallExpr:
  14853. |- Method: AccessorExpr (Mode=':')
  14854. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  14855. \- Value: AccessorExpr (Mode='.')
  14856. |- Object: CallExpr:
  14857. |- Method: AccessorExpr (Mode=':')
  14858. |- Object: NameExpr: 'eles'
  14859. \- Field: get
  14860. \- Arguments: (Len=1)
  14861. \0- LiteralExpr: type=int, value=0
  14862. \- Field: is_token
  14863. \- Field: or
  14864. \- Arguments: (Len=1)
  14865. \0- AccessorExpr (Mode='.')
  14866. |- Object: CallExpr:
  14867. |- Method: AccessorExpr (Mode=':')
  14868. |- Object: NameExpr: 'eles'
  14869. \- Field: get
  14870. \- Arguments: (Len=1)
  14871. \0- LiteralExpr: type=int, value=1
  14872. \- Field: is_token
  14873. \- Field: or
  14874. \- Arguments: (Len=1)
  14875. \0- AccessorExpr (Mode='.')
  14876. |- Object: CallExpr:
  14877. |- Method: AccessorExpr (Mode=':')
  14878. |- Object: NameExpr: 'eles'
  14879. \- Field: get
  14880. \- Arguments: (Len=1)
  14881. \0- LiteralExpr: type=int, value=2
  14882. \- Field: is_token
  14883. |- Body: BlockBody: (N_Statements=1)
  14884. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14885. |1- IfExpr:
  14886. |- Condition: CallExpr:
  14887. |- Method: AccessorExpr (Mode=':')
  14888. |- Object: CallExpr:
  14889. |- Method: AccessorExpr (Mode=':')
  14890. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  14891. |- LHS: AccessorExpr (Mode='.')
  14892. |- Object: AccessorExpr (Mode='.')
  14893. |- Object: CallExpr:
  14894. |- Method: AccessorExpr (Mode=':')
  14895. |- Object: CallExpr:
  14896. |- Method: AccessorExpr (Mode=':')
  14897. |- Object: NameExpr: 'eles'
  14898. \- Field: get
  14899. \- Arguments: (Len=1)
  14900. \0- LiteralExpr: type=int, value=0
  14901. \- Field: t
  14902. \- Arguments: (Len=0)
  14903. \- Field: type_
  14904. \- Field: name
  14905. \- RHS: LiteralExpr: type=cstr, value=T_COMMA
  14906. \- Field: or
  14907. \- Arguments: (Len=1)
  14908. \0- UnOpExpr (Operator='-')
  14909. \- Value: CallExpr:
  14910. |- Method: AccessorExpr (Mode=':')
  14911. |- Object: CallExpr:
  14912. |- Method: AccessorExpr (Mode=':')
  14913. |- Object: CallExpr:
  14914. |- Method: AccessorExpr (Mode=':')
  14915. |- Object: NameExpr: 'eles'
  14916. \- Field: get
  14917. \- Arguments: (Len=1)
  14918. \0- LiteralExpr: type=int, value=1
  14919. \- Field: n
  14920. \- Arguments: (Len=0)
  14921. \- Field: is_a
  14922. \- Arguments: (Len=1)
  14923. \0- LiteralExpr: type=cstr, value=ValueExpression
  14924. \- Field: or
  14925. \- Arguments: (Len=1)
  14926. \0- UnOpExpr (Operator='-')
  14927. \- Value: CallExpr:
  14928. |- Method: AccessorExpr (Mode=':')
  14929. |- Object: CallExpr:
  14930. |- Method: AccessorExpr (Mode=':')
  14931. |- Object: CallExpr:
  14932. |- Method: AccessorExpr (Mode=':')
  14933. |- Object: NameExpr: 'eles'
  14934. \- Field: get
  14935. \- Arguments: (Len=1)
  14936. \0- LiteralExpr: type=int, value=2
  14937. \- Field: n
  14938. \- Arguments: (Len=0)
  14939. \- Field: is_a
  14940. \- Arguments: (Len=1)
  14941. \0- LiteralExpr: type=cstr, value=TupleFragment
  14942. |- Body: BlockBody: (N_Statements=1)
  14943. |0- ReturnExpr: LiteralExpr: type=int, value=0
  14944. \2- ReturnExpr: LiteralExpr: type=int, value=3
  14945. \5- FunctionDecl:
  14946. |- Head: FunctionDeclHead: Name='TupleMidFragment::impl' Type='NodeType' Nargs=0
  14947. \0- ReturnExpr: CallExpr:
  14948. |- Method: AccessorExpr (Mode=':')
  14949. |- Object: CallExpr:
  14950. |- Method: AccessorExpr (Mode=':')
  14951. |- Object: CallExpr:
  14952. |- Method: AccessorExpr (Mode=':')
  14953. |- Object: CallExpr:
  14954. |- Method: AccessorExpr (Mode=':')
  14955. |- Object: CallExpr:
  14956. |- Method: AccessorExpr (Mode=':')
  14957. |- Object: CallExpr:
  14958. |- Method: AccessorExpr (Mode='::')
  14959. |- Object: NameExpr: 'NodeType'
  14960. \- Field: new
  14961. \- Arguments: (Len=1)
  14962. \0- LiteralExpr: type=cstr, value=TupleMidFragment
  14963. \- Field: set_printer
  14964. \- Arguments: (Len=1)
  14965. \0- CastExpr (Target='NodePrinter')
  14966. \- Value: AccessorExpr (Mode='::')
  14967. |- Object: NameExpr: 'TupleMidFragment'
  14968. \- Field: print
  14969. \- Field: set_creator
  14970. \- Arguments: (Len=1)
  14971. \0- CastExpr (Target='NodeCreator')
  14972. \- Value: AccessorExpr (Mode='::')
  14973. |- Object: NameExpr: 'TupleMidFragment'
  14974. \- Field: create
  14975. \- Field: set_matcher
  14976. \- Arguments: (Len=1)
  14977. \0- CastExpr (Target='NodeMatcher')
  14978. \- Value: AccessorExpr (Mode='::')
  14979. |- Object: NameExpr: 'TupleMidFragment'
  14980. \- Field: match
  14981. \- Field: matches
  14982. \- Arguments: (Len=1)
  14983. \0- LiteralExpr: type=int, value=3
  14984. \- Field: addtype
  14985. \- Arguments: (Len=1)
  14986. \0- LiteralExpr: type=cstr, value=TupleFragment
  14987. |4- SepExpr (Consumed=2)
  14988. |5- TypeDecl:
  14989. |- Head: TypeDeclHead: `Tuple` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  14990. \- Body: TypeDeclBody: (N_Statements=6)
  14991. |0- DeclExpr: 'NodeType type_'
  14992. |1- DeclExpr: 'List elements'
  14993. |2- FunctionDecl:
  14994. |- Head: FunctionDeclHead: Name='Tuple::print' Type='void' Nargs=2
  14995. |0- Tuple node
  14996. \1- int depth
  14997. |0- CallExpr:
  14998. |- Method: NameExpr: 'printf'
  14999. \- Arguments: (Len=2)
  15000. |0- LiteralExpr: type=cstr, value=Tuple: (Length=%i)\n
  15001. \1- AccessorExpr (Mode='.')
  15002. |- Object: AccessorExpr (Mode='.')
  15003. |- Object: NameExpr: 'node'
  15004. \- Field: elements
  15005. \- Field: len
  15006. |1- AssignmentExpr (Operator='=')
  15007. |- LHS: DeclExpr: 'int i'
  15008. \- RHS: LiteralExpr: type=int, value=0
  15009. |2- WhileExpr:
  15010. |- Condition: BinOpExpr (Operator='<')
  15011. |- LHS: NameExpr: 'i'
  15012. \- RHS: AccessorExpr (Mode='.')
  15013. |- Object: AccessorExpr (Mode='.')
  15014. |- Object: NameExpr: 'node'
  15015. \- Field: elements
  15016. \- Field: len
  15017. |- Body: BlockBody: (N_Statements=4)
  15018. |0- CallExpr:
  15019. |- Method: AccessorExpr (Mode='::')
  15020. |- Object: NameExpr: 'parse'
  15021. \- Field: indent
  15022. \- Arguments: (Len=1)
  15023. \0- NameExpr: 'depth'
  15024. |1- IfExpr:
  15025. |- Condition: BinOpExpr (Operator='==')
  15026. |- LHS: NameExpr: 'i'
  15027. \- RHS: BinOpExpr (Operator='-')
  15028. |- LHS: AccessorExpr (Mode='.')
  15029. |- Object: AccessorExpr (Mode='.')
  15030. |- Object: NameExpr: 'node'
  15031. \- Field: elements
  15032. \- Field: len
  15033. \- RHS: LiteralExpr: type=int, value=1
  15034. |- Body: BlockBody: (N_Statements=1)
  15035. |0- CallExpr:
  15036. |- Method: NameExpr: 'printf'
  15037. \- Arguments: (Len=2)
  15038. |0- LiteralExpr: type=cstr, value=\\%i-
  15039. \1- NameExpr: 'i'
  15040. \-- Runoff Clause: BlockBody: (N_Statements=1)
  15041. |0- CallExpr:
  15042. |- Method: NameExpr: 'printf'
  15043. \- Arguments: (Len=2)
  15044. |0- LiteralExpr: type=cstr, value=|%i-
  15045. \1- NameExpr: 'i'
  15046. |2- CallExpr:
  15047. |- Method: AccessorExpr (Mode=':')
  15048. |- Object: CallExpr:
  15049. |- Method: AccessorExpr (Mode=':')
  15050. |- Object: AccessorExpr (Mode='.')
  15051. |- Object: NameExpr: 'node'
  15052. \- Field: elements
  15053. \- Field: get_Node
  15054. \- Arguments: (Len=1)
  15055. \0- NameExpr: 'i'
  15056. \- Field: print
  15057. \- Arguments: (Len=1)
  15058. \0- BinOpExpr (Operator='+')
  15059. |- LHS: NameExpr: 'depth'
  15060. \- RHS: LiteralExpr: type=int, value=1
  15061. |3- AssignmentExpr (Operator='+=')
  15062. |- LHS: NameExpr: 'i'
  15063. \- RHS: LiteralExpr: type=int, value=1
  15064. \3- ReturnExpr: <void>
  15065. |3- FunctionDecl:
  15066. |- Head: FunctionDeclHead: Name='Tuple::create' Type='Tuple' Nargs=1
  15067. \0- EleList eles
  15068. |0- AssignmentExpr (Operator='=')
  15069. |- LHS: DeclExpr: 'Tuple new'
  15070. \- RHS: CastExpr (Target='Tuple')
  15071. \- Value: CallExpr:
  15072. |- Method: NameExpr: 'malloc'
  15073. \- Arguments: (Len=1)
  15074. \0- IntrinsicExpr: '@sizeof(Tuple)@'
  15075. |1- IfExpr:
  15076. |- Condition: CallExpr:
  15077. |- Method: AccessorExpr (Mode=':')
  15078. |- Object: CallExpr:
  15079. |- Method: AccessorExpr (Mode=':')
  15080. |- Object: CallExpr:
  15081. |- Method: AccessorExpr (Mode=':')
  15082. |- Object: NameExpr: 'eles'
  15083. \- Field: get
  15084. \- Arguments: (Len=1)
  15085. \0- LiteralExpr: type=int, value=2
  15086. \- Field: n
  15087. \- Arguments: (Len=0)
  15088. \- Field: is_a
  15089. \- Arguments: (Len=1)
  15090. \0- LiteralExpr: type=cstr, value=TupleEndFragment
  15091. |- Body: BlockBody: (N_Statements=3)
  15092. |0- AssignmentExpr (Operator='=')
  15093. |- LHS: AccessorExpr (Mode='.')
  15094. |- Object: NameExpr: 'new'
  15095. \- Field: elements
  15096. \- RHS: CallExpr:
  15097. |- Method: AccessorExpr (Mode='::')
  15098. |- Object: NameExpr: 'List'
  15099. \- Field: new
  15100. \- Arguments: (Len=0)
  15101. |1- CallExpr:
  15102. |- Method: AccessorExpr (Mode=':')
  15103. |- Object: AccessorExpr (Mode='.')
  15104. |- Object: NameExpr: 'new'
  15105. \- Field: elements
  15106. \- Field: append_Node
  15107. \- Arguments: (Len=1)
  15108. \0- CallExpr:
  15109. |- Method: AccessorExpr (Mode=':')
  15110. |- Object: CallExpr:
  15111. |- Method: AccessorExpr (Mode=':')
  15112. |- Object: NameExpr: 'eles'
  15113. \- Field: get
  15114. \- Arguments: (Len=1)
  15115. \0- LiteralExpr: type=int, value=1
  15116. \- Field: n
  15117. \- Arguments: (Len=0)
  15118. |2- CallExpr:
  15119. |- Method: AccessorExpr (Mode=':')
  15120. |- Object: AccessorExpr (Mode='.')
  15121. |- Object: NameExpr: 'new'
  15122. \- Field: elements
  15123. \- Field: append_Node
  15124. \- Arguments: (Len=1)
  15125. \0- AccessorExpr (Mode='.')
  15126. |- Object: GroupingExpr: CastExpr (Target='TupleEndFragment')
  15127. \- Value: CallExpr:
  15128. |- Method: AccessorExpr (Mode=':')
  15129. |- Object: CallExpr:
  15130. |- Method: AccessorExpr (Mode=':')
  15131. |- Object: NameExpr: 'eles'
  15132. \- Field: get
  15133. \- Arguments: (Len=1)
  15134. \0- LiteralExpr: type=int, value=2
  15135. \- Field: n
  15136. \- Arguments: (Len=0)
  15137. \- Field: element
  15138. \-- Runoff Clause: BlockBody: (N_Statements=2)
  15139. |0- AssignmentExpr (Operator='=')
  15140. |- LHS: AccessorExpr (Mode='.')
  15141. |- Object: NameExpr: 'new'
  15142. \- Field: elements
  15143. \- RHS: AccessorExpr (Mode='.')
  15144. |- Object: GroupingExpr: CastExpr (Target='TupleMidFragment')
  15145. \- Value: CallExpr:
  15146. |- Method: AccessorExpr (Mode=':')
  15147. |- Object: CallExpr:
  15148. |- Method: AccessorExpr (Mode=':')
  15149. |- Object: NameExpr: 'eles'
  15150. \- Field: get
  15151. \- Arguments: (Len=1)
  15152. \0- LiteralExpr: type=int, value=2
  15153. \- Field: n
  15154. \- Arguments: (Len=0)
  15155. \- Field: elements
  15156. |1- CallExpr:
  15157. |- Method: AccessorExpr (Mode=':')
  15158. |- Object: AccessorExpr (Mode='.')
  15159. |- Object: NameExpr: 'new'
  15160. \- Field: elements
  15161. \- Field: insert
  15162. \- Arguments: (Len=2)
  15163. |0- LiteralExpr: type=int, value=0
  15164. \1- CastExpr (Target='ptr')
  15165. \- Value: CallExpr:
  15166. |- Method: AccessorExpr (Mode=':')
  15167. |- Object: CallExpr:
  15168. |- Method: AccessorExpr (Mode=':')
  15169. |- Object: NameExpr: 'eles'
  15170. \- Field: get
  15171. \- Arguments: (Len=1)
  15172. \0- LiteralExpr: type=int, value=1
  15173. \- Field: n
  15174. \- Arguments: (Len=0)
  15175. \2- ReturnExpr: NameExpr: 'new'
  15176. |4- FunctionDecl:
  15177. |- Head: FunctionDeclHead: Name='Tuple::match' Type='int' Nargs=1
  15178. \0- EleList eles
  15179. |0- IfExpr:
  15180. |- Condition: CallExpr:
  15181. |- Method: AccessorExpr (Mode=':')
  15182. |- Object: CallExpr:
  15183. |- Method: AccessorExpr (Mode=':')
  15184. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  15185. \- Value: AccessorExpr (Mode='.')
  15186. |- Object: CallExpr:
  15187. |- Method: AccessorExpr (Mode=':')
  15188. |- Object: NameExpr: 'eles'
  15189. \- Field: get
  15190. \- Arguments: (Len=1)
  15191. \0- LiteralExpr: type=int, value=0
  15192. \- Field: is_token
  15193. \- Field: or
  15194. \- Arguments: (Len=1)
  15195. \0- AccessorExpr (Mode='.')
  15196. |- Object: CallExpr:
  15197. |- Method: AccessorExpr (Mode=':')
  15198. |- Object: NameExpr: 'eles'
  15199. \- Field: get
  15200. \- Arguments: (Len=1)
  15201. \0- LiteralExpr: type=int, value=1
  15202. \- Field: is_token
  15203. \- Field: or
  15204. \- Arguments: (Len=1)
  15205. \0- AccessorExpr (Mode='.')
  15206. |- Object: CallExpr:
  15207. |- Method: AccessorExpr (Mode=':')
  15208. |- Object: NameExpr: 'eles'
  15209. \- Field: get
  15210. \- Arguments: (Len=1)
  15211. \0- LiteralExpr: type=int, value=2
  15212. \- Field: is_token
  15213. |- Body: BlockBody: (N_Statements=1)
  15214. |0- ReturnExpr: LiteralExpr: type=int, value=0
  15215. |1- IfExpr:
  15216. |- Condition: CallExpr:
  15217. |- Method: AccessorExpr (Mode=':')
  15218. |- Object: CallExpr:
  15219. |- Method: AccessorExpr (Mode=':')
  15220. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  15221. |- LHS: AccessorExpr (Mode='.')
  15222. |- Object: AccessorExpr (Mode='.')
  15223. |- Object: CallExpr:
  15224. |- Method: AccessorExpr (Mode=':')
  15225. |- Object: CallExpr:
  15226. |- Method: AccessorExpr (Mode=':')
  15227. |- Object: NameExpr: 'eles'
  15228. \- Field: get
  15229. \- Arguments: (Len=1)
  15230. \0- LiteralExpr: type=int, value=0
  15231. \- Field: t
  15232. \- Arguments: (Len=0)
  15233. \- Field: type_
  15234. \- Field: name
  15235. \- RHS: LiteralExpr: type=cstr, value=T_PAREN_OPEN
  15236. \- Field: or
  15237. \- Arguments: (Len=1)
  15238. \0- UnOpExpr (Operator='-')
  15239. \- Value: CallExpr:
  15240. |- Method: AccessorExpr (Mode=':')
  15241. |- Object: CallExpr:
  15242. |- Method: AccessorExpr (Mode=':')
  15243. |- Object: CallExpr:
  15244. |- Method: AccessorExpr (Mode=':')
  15245. |- Object: NameExpr: 'eles'
  15246. \- Field: get
  15247. \- Arguments: (Len=1)
  15248. \0- LiteralExpr: type=int, value=2
  15249. \- Field: n
  15250. \- Arguments: (Len=0)
  15251. \- Field: is_a
  15252. \- Arguments: (Len=1)
  15253. \0- LiteralExpr: type=cstr, value=TupleFragment
  15254. \- Field: or
  15255. \- Arguments: (Len=1)
  15256. \0- UnOpExpr (Operator='-')
  15257. \- Value: CallExpr:
  15258. |- Method: AccessorExpr (Mode=':')
  15259. |- Object: CallExpr:
  15260. |- Method: AccessorExpr (Mode=':')
  15261. |- Object: CallExpr:
  15262. |- Method: AccessorExpr (Mode=':')
  15263. |- Object: NameExpr: 'eles'
  15264. \- Field: get
  15265. \- Arguments: (Len=1)
  15266. \0- LiteralExpr: type=int, value=1
  15267. \- Field: n
  15268. \- Arguments: (Len=0)
  15269. \- Field: is_a
  15270. \- Arguments: (Len=1)
  15271. \0- LiteralExpr: type=cstr, value=ValueExpression
  15272. |- Body: BlockBody: (N_Statements=1)
  15273. |0- ReturnExpr: LiteralExpr: type=int, value=0
  15274. \2- ReturnExpr: LiteralExpr: type=int, value=3
  15275. \5- FunctionDecl:
  15276. |- Head: FunctionDeclHead: Name='Tuple::impl' Type='NodeType' Nargs=0
  15277. \0- ReturnExpr: CallExpr:
  15278. |- Method: AccessorExpr (Mode=':')
  15279. |- Object: CallExpr:
  15280. |- Method: AccessorExpr (Mode=':')
  15281. |- Object: CallExpr:
  15282. |- Method: AccessorExpr (Mode=':')
  15283. |- Object: CallExpr:
  15284. |- Method: AccessorExpr (Mode=':')
  15285. |- Object: CallExpr:
  15286. |- Method: AccessorExpr (Mode='::')
  15287. |- Object: NameExpr: 'NodeType'
  15288. \- Field: new
  15289. \- Arguments: (Len=1)
  15290. \0- LiteralExpr: type=cstr, value=Tuple
  15291. \- Field: set_printer
  15292. \- Arguments: (Len=1)
  15293. \0- CastExpr (Target='NodePrinter')
  15294. \- Value: AccessorExpr (Mode='::')
  15295. |- Object: NameExpr: 'Tuple'
  15296. \- Field: print
  15297. \- Field: set_creator
  15298. \- Arguments: (Len=1)
  15299. \0- CastExpr (Target='NodeCreator')
  15300. \- Value: AccessorExpr (Mode='::')
  15301. |- Object: NameExpr: 'Tuple'
  15302. \- Field: create
  15303. \- Field: set_matcher
  15304. \- Arguments: (Len=1)
  15305. \0- CastExpr (Target='NodeMatcher')
  15306. \- Value: AccessorExpr (Mode='::')
  15307. |- Object: NameExpr: 'Tuple'
  15308. \- Field: match
  15309. \- Field: matches
  15310. \- Arguments: (Len=1)
  15311. \0- LiteralExpr: type=int, value=3
  15312. |6- SepExpr (Consumed=2)
  15313. |7- TypeDecl:
  15314. |- Head: TypeDeclHead: `ZeroTuple` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  15315. \- Body: TypeDeclBody: (N_Statements=5)
  15316. |0- DeclExpr: 'NodeType type_'
  15317. |1- FunctionDecl:
  15318. |- Head: FunctionDeclHead: Name='ZeroTuple::print' Type='void' Nargs=2
  15319. |0- ZeroTuple node
  15320. \1- int depth
  15321. |0- CallExpr:
  15322. |- Method: NameExpr: 'printf'
  15323. \- Arguments: (Len=1)
  15324. \0- LiteralExpr: type=cstr, value=ZeroTuple: (Length=0)\n
  15325. \1- ReturnExpr: <void>
  15326. |2- FunctionDecl:
  15327. |- Head: FunctionDeclHead: Name='ZeroTuple::create' Type='ZeroTuple' Nargs=1
  15328. \0- EleList eles
  15329. |0- AssignmentExpr (Operator='=')
  15330. |- LHS: DeclExpr: 'ZeroTuple new'
  15331. \- RHS: CastExpr (Target='ZeroTuple')
  15332. \- Value: CallExpr:
  15333. |- Method: NameExpr: 'malloc'
  15334. \- Arguments: (Len=1)
  15335. \0- IntrinsicExpr: '@sizeof(ZeroTuple)@'
  15336. \1- ReturnExpr: NameExpr: 'new'
  15337. |3- FunctionDecl:
  15338. |- Head: FunctionDeclHead: Name='ZeroTuple::match' Type='int' Nargs=1
  15339. \0- EleList eles
  15340. |0- IfExpr:
  15341. |- Condition: CallExpr:
  15342. |- Method: AccessorExpr (Mode=':')
  15343. |- Object: GroupingExpr: BinOpExpr (Operator='!=')
  15344. |- LHS: AccessorExpr (Mode='.')
  15345. |- Object: AccessorExpr (Mode='.')
  15346. |- Object: CallExpr:
  15347. |- Method: AccessorExpr (Mode=':')
  15348. |- Object: CallExpr:
  15349. |- Method: AccessorExpr (Mode=':')
  15350. |- Object: NameExpr: 'eles'
  15351. \- Field: get
  15352. \- Arguments: (Len=1)
  15353. \0- LiteralExpr: type=int, value=0
  15354. \- Field: t
  15355. \- Arguments: (Len=0)
  15356. \- Field: type_
  15357. \- Field: name
  15358. \- RHS: LiteralExpr: type=cstr, value=T_PAREN_OPEN
  15359. \- Field: or
  15360. \- Arguments: (Len=1)
  15361. \0- BinOpExpr (Operator='!=')
  15362. |- LHS: AccessorExpr (Mode='.')
  15363. |- Object: AccessorExpr (Mode='.')
  15364. |- Object: CallExpr:
  15365. |- Method: AccessorExpr (Mode=':')
  15366. |- Object: CallExpr:
  15367. |- Method: AccessorExpr (Mode=':')
  15368. |- Object: NameExpr: 'eles'
  15369. \- Field: get
  15370. \- Arguments: (Len=1)
  15371. \0- LiteralExpr: type=int, value=1
  15372. \- Field: t
  15373. \- Arguments: (Len=0)
  15374. \- Field: type_
  15375. \- Field: name
  15376. \- RHS: LiteralExpr: type=cstr, value=T_PAREN_CLOSE
  15377. |- Body: BlockBody: (N_Statements=1)
  15378. |0- ReturnExpr: LiteralExpr: type=int, value=0
  15379. \1- ReturnExpr: LiteralExpr: type=int, value=2
  15380. \4- FunctionDecl:
  15381. |- Head: FunctionDeclHead: Name='ZeroTuple::impl' Type='NodeType' Nargs=0
  15382. \0- ReturnExpr: CallExpr:
  15383. |- Method: AccessorExpr (Mode=':')
  15384. |- Object: CallExpr:
  15385. |- Method: AccessorExpr (Mode=':')
  15386. |- Object: CallExpr:
  15387. |- Method: AccessorExpr (Mode=':')
  15388. |- Object: CallExpr:
  15389. |- Method: AccessorExpr (Mode=':')
  15390. |- Object: CallExpr:
  15391. |- Method: AccessorExpr (Mode=':')
  15392. |- Object: CallExpr:
  15393. |- Method: AccessorExpr (Mode=':')
  15394. |- Object: CallExpr:
  15395. |- Method: AccessorExpr (Mode='::')
  15396. |- Object: NameExpr: 'NodeType'
  15397. \- Field: new
  15398. \- Arguments: (Len=1)
  15399. \0- LiteralExpr: type=cstr, value=ZeroTuple
  15400. \- Field: set_printer
  15401. \- Arguments: (Len=1)
  15402. \0- CastExpr (Target='NodePrinter')
  15403. \- Value: AccessorExpr (Mode='::')
  15404. |- Object: NameExpr: 'ZeroTuple'
  15405. \- Field: print
  15406. \- Field: set_creator
  15407. \- Arguments: (Len=1)
  15408. \0- CastExpr (Target='NodeCreator')
  15409. \- Value: AccessorExpr (Mode='::')
  15410. |- Object: NameExpr: 'ZeroTuple'
  15411. \- Field: create
  15412. \- Field: set_matcher
  15413. \- Arguments: (Len=1)
  15414. \0- CastExpr (Target='NodeMatcher')
  15415. \- Value: AccessorExpr (Mode='::')
  15416. |- Object: NameExpr: 'ZeroTuple'
  15417. \- Field: match
  15418. \- Field: matches
  15419. \- Arguments: (Len=1)
  15420. \0- LiteralExpr: type=int, value=2
  15421. \- Field: matches_only_tokens
  15422. \- Arguments: (Len=0)
  15423. \- Field: addtype
  15424. \- Arguments: (Len=1)
  15425. \0- LiteralExpr: type=cstr, value=Tuple
  15426. |8- SepExpr (Consumed=2)
  15427. |9- TypeDecl:
  15428. |- Head: TypeDeclHead: `OneTuple` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  15429. \- Body: TypeDeclBody: (N_Statements=6)
  15430. |0- DeclExpr: 'NodeType type_'
  15431. |1- DeclExpr: 'Node element'
  15432. |2- FunctionDecl:
  15433. |- Head: FunctionDeclHead: Name='OneTuple::print' Type='void' Nargs=2
  15434. |0- OneTuple node
  15435. \1- int depth
  15436. |0- CallExpr:
  15437. |- Method: NameExpr: 'printf'
  15438. \- Arguments: (Len=1)
  15439. \0- LiteralExpr: type=cstr, value=OneTuple: (Length=1)\n
  15440. |1- CallExpr:
  15441. |- Method: AccessorExpr (Mode='::')
  15442. |- Object: NameExpr: 'parse'
  15443. \- Field: indent
  15444. \- Arguments: (Len=1)
  15445. \0- NameExpr: 'depth'
  15446. |2- CallExpr:
  15447. |- Method: NameExpr: 'printf'
  15448. \- Arguments: (Len=1)
  15449. \0- LiteralExpr: type=cstr, value=\\-
  15450. |3- CallExpr:
  15451. |- Method: AccessorExpr (Mode=':')
  15452. |- Object: AccessorExpr (Mode='.')
  15453. |- Object: NameExpr: 'node'
  15454. \- Field: element
  15455. \- Field: print
  15456. \- Arguments: (Len=1)
  15457. \0- BinOpExpr (Operator='+')
  15458. |- LHS: NameExpr: 'depth'
  15459. \- RHS: LiteralExpr: type=int, value=1
  15460. \4- ReturnExpr: <void>
  15461. |3- FunctionDecl:
  15462. |- Head: FunctionDeclHead: Name='OneTuple::create' Type='OneTuple' Nargs=1
  15463. \0- EleList eles
  15464. |0- AssignmentExpr (Operator='=')
  15465. |- LHS: DeclExpr: 'OneTuple new'
  15466. \- RHS: CastExpr (Target='OneTuple')
  15467. \- Value: CallExpr:
  15468. |- Method: NameExpr: 'malloc'
  15469. \- Arguments: (Len=1)
  15470. \0- IntrinsicExpr: '@sizeof(OneTuple)@'
  15471. |1- AssignmentExpr (Operator='=')
  15472. |- LHS: AccessorExpr (Mode='.')
  15473. |- Object: NameExpr: 'new'
  15474. \- Field: element
  15475. \- RHS: CallExpr:
  15476. |- Method: AccessorExpr (Mode=':')
  15477. |- Object: CallExpr:
  15478. |- Method: AccessorExpr (Mode=':')
  15479. |- Object: NameExpr: 'eles'
  15480. \- Field: get
  15481. \- Arguments: (Len=1)
  15482. \0- LiteralExpr: type=int, value=1
  15483. \- Field: n
  15484. \- Arguments: (Len=0)
  15485. \2- ReturnExpr: NameExpr: 'new'
  15486. |4- FunctionDecl:
  15487. |- Head: FunctionDeclHead: Name='OneTuple::match' Type='int' Nargs=1
  15488. \0- EleList eles
  15489. |0- IfExpr:
  15490. |- Condition: CallExpr:
  15491. |- Method: AccessorExpr (Mode=':')
  15492. |- Object: CallExpr:
  15493. |- Method: AccessorExpr (Mode=':')
  15494. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  15495. \- Value: AccessorExpr (Mode='.')
  15496. |- Object: CallExpr:
  15497. |- Method: AccessorExpr (Mode=':')
  15498. |- Object: NameExpr: 'eles'
  15499. \- Field: get
  15500. \- Arguments: (Len=1)
  15501. \0- LiteralExpr: type=int, value=0
  15502. \- Field: is_token
  15503. \- Field: or
  15504. \- Arguments: (Len=1)
  15505. \0- AccessorExpr (Mode='.')
  15506. |- Object: CallExpr:
  15507. |- Method: AccessorExpr (Mode=':')
  15508. |- Object: NameExpr: 'eles'
  15509. \- Field: get
  15510. \- Arguments: (Len=1)
  15511. \0- LiteralExpr: type=int, value=1
  15512. \- Field: is_token
  15513. \- Field: or
  15514. \- Arguments: (Len=1)
  15515. \0- UnOpExpr (Operator='-')
  15516. \- Value: AccessorExpr (Mode='.')
  15517. |- Object: CallExpr:
  15518. |- Method: AccessorExpr (Mode=':')
  15519. |- Object: NameExpr: 'eles'
  15520. \- Field: get
  15521. \- Arguments: (Len=1)
  15522. \0- LiteralExpr: type=int, value=2
  15523. \- Field: is_token
  15524. |- Body: BlockBody: (N_Statements=1)
  15525. |0- ReturnExpr: LiteralExpr: type=int, value=0
  15526. |1- IfExpr:
  15527. |- Condition: CallExpr:
  15528. |- Method: AccessorExpr (Mode=':')
  15529. |- Object: CallExpr:
  15530. |- Method: AccessorExpr (Mode=':')
  15531. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  15532. \- Value: CallExpr:
  15533. |- Method: AccessorExpr (Mode=':')
  15534. |- Object: CallExpr:
  15535. |- Method: AccessorExpr (Mode=':')
  15536. |- Object: CallExpr:
  15537. |- Method: AccessorExpr (Mode=':')
  15538. |- Object: NameExpr: 'eles'
  15539. \- Field: get
  15540. \- Arguments: (Len=1)
  15541. \0- LiteralExpr: type=int, value=0
  15542. \- Field: t
  15543. \- Arguments: (Len=0)
  15544. \- Field: is_a
  15545. \- Arguments: (Len=1)
  15546. \0- LiteralExpr: type=cstr, value=T_PAREN_OPEN
  15547. \- Field: or
  15548. \- Arguments: (Len=1)
  15549. \0- UnOpExpr (Operator='-')
  15550. \- Value: CallExpr:
  15551. |- Method: AccessorExpr (Mode=':')
  15552. |- Object: CallExpr:
  15553. |- Method: AccessorExpr (Mode=':')
  15554. |- Object: CallExpr:
  15555. |- Method: AccessorExpr (Mode=':')
  15556. |- Object: NameExpr: 'eles'
  15557. \- Field: get
  15558. \- Arguments: (Len=1)
  15559. \0- LiteralExpr: type=int, value=1
  15560. \- Field: n
  15561. \- Arguments: (Len=0)
  15562. \- Field: is_a
  15563. \- Arguments: (Len=1)
  15564. \0- LiteralExpr: type=cstr, value=ValueExpression
  15565. \- Field: or
  15566. \- Arguments: (Len=1)
  15567. \0- UnOpExpr (Operator='-')
  15568. \- Value: CallExpr:
  15569. |- Method: AccessorExpr (Mode=':')
  15570. |- Object: CallExpr:
  15571. |- Method: AccessorExpr (Mode=':')
  15572. |- Object: CallExpr:
  15573. |- Method: AccessorExpr (Mode=':')
  15574. |- Object: NameExpr: 'eles'
  15575. \- Field: get
  15576. \- Arguments: (Len=1)
  15577. \0- LiteralExpr: type=int, value=2
  15578. \- Field: t
  15579. \- Arguments: (Len=0)
  15580. \- Field: is_a
  15581. \- Arguments: (Len=1)
  15582. \0- LiteralExpr: type=cstr, value=T_PAREN_CLOSE
  15583. |- Body: BlockBody: (N_Statements=1)
  15584. |0- ReturnExpr: LiteralExpr: type=int, value=0
  15585. \2- ReturnExpr: LiteralExpr: type=int, value=3
  15586. \5- FunctionDecl:
  15587. |- Head: FunctionDeclHead: Name='OneTuple::impl' Type='NodeType' Nargs=0
  15588. \0- ReturnExpr: CallExpr:
  15589. |- Method: AccessorExpr (Mode=':')
  15590. |- Object: CallExpr:
  15591. |- Method: AccessorExpr (Mode=':')
  15592. |- Object: CallExpr:
  15593. |- Method: AccessorExpr (Mode=':')
  15594. |- Object: CallExpr:
  15595. |- Method: AccessorExpr (Mode=':')
  15596. |- Object: CallExpr:
  15597. |- Method: AccessorExpr (Mode=':')
  15598. |- Object: CallExpr:
  15599. |- Method: AccessorExpr (Mode='::')
  15600. |- Object: NameExpr: 'NodeType'
  15601. \- Field: new
  15602. \- Arguments: (Len=1)
  15603. \0- LiteralExpr: type=cstr, value=OneTuple
  15604. \- Field: set_printer
  15605. \- Arguments: (Len=1)
  15606. \0- CastExpr (Target='NodePrinter')
  15607. \- Value: AccessorExpr (Mode='::')
  15608. |- Object: NameExpr: 'OneTuple'
  15609. \- Field: print
  15610. \- Field: set_creator
  15611. \- Arguments: (Len=1)
  15612. \0- CastExpr (Target='NodeCreator')
  15613. \- Value: AccessorExpr (Mode='::')
  15614. |- Object: NameExpr: 'OneTuple'
  15615. \- Field: create
  15616. \- Field: set_matcher
  15617. \- Arguments: (Len=1)
  15618. \0- CastExpr (Target='NodeMatcher')
  15619. \- Value: AccessorExpr (Mode='::')
  15620. |- Object: NameExpr: 'OneTuple'
  15621. \- Field: match
  15622. \- Field: matches
  15623. \- Arguments: (Len=1)
  15624. \0- LiteralExpr: type=int, value=3
  15625. \- Field: addtype
  15626. \- Arguments: (Len=1)
  15627. \0- LiteralExpr: type=cstr, value=Tuple
  15628. |10- SepExpr (Consumed=2)
  15629. |42- SepExpr (Consumed=1)
  15630. |43- FileNode: (N_Statements=7)
  15631. |0- SepExpr (Consumed=1)
  15632. |1- TypeDecl:
  15633. |- Head: TypeDeclHead: `TypeDeclHead` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  15634. \- Body: TypeDeclBody: (N_Statements=10)
  15635. |0- DeclExpr: 'NodeType type_'
  15636. |1- DeclExpr: 'cstr name'
  15637. |2- DeclExpr: 'bool is_type_alias'
  15638. |3- DeclExpr: 'bool is_func_alias'
  15639. |4- DeclExpr: 'bool packed'
  15640. |5- DeclExpr: 'cstr alias_type'
  15641. |6- FunctionDecl:
  15642. |- Head: FunctionDeclHead: Name='TypeDeclHead::print' Type='void' Nargs=2
  15643. |0- TypeDeclHead node
  15644. \1- int depth
  15645. |0- CallExpr:
  15646. |- Method: NameExpr: 'printf'
  15647. \- Arguments: (Len=5)
  15648. |0- LiteralExpr: type=cstr, value=TypeDeclHead: `%s` (Is_Func_Alias=%i, Is_Type_Alias:%i, Is_Packed=%i)
  15649. |1- AccessorExpr (Mode='.')
  15650. |- Object: NameExpr: 'node'
  15651. \- Field: name
  15652. |2- CastExpr (Target='int')
  15653. \- Value: AccessorExpr (Mode='.')
  15654. |- Object: NameExpr: 'node'
  15655. \- Field: is_func_alias
  15656. |3- CastExpr (Target='int')
  15657. \- Value: AccessorExpr (Mode='.')
  15658. |- Object: NameExpr: 'node'
  15659. \- Field: is_type_alias
  15660. \4- CastExpr (Target='int')
  15661. \- Value: AccessorExpr (Mode='.')
  15662. |- Object: NameExpr: 'node'
  15663. \- Field: packed
  15664. |1- IfExpr:
  15665. |- Condition: AccessorExpr (Mode='.')
  15666. |- Object: NameExpr: 'node'
  15667. \- Field: is_type_alias
  15668. |- Body: BlockBody: (N_Statements=1)
  15669. |0- CallExpr:
  15670. |- Method: NameExpr: 'printf'
  15671. \- Arguments: (Len=2)
  15672. |0- LiteralExpr: type=cstr, value= Aliases Type: `%s`
  15673. \1- AccessorExpr (Mode='.')
  15674. |- Object: NameExpr: 'node'
  15675. \- Field: alias_type
  15676. \-- Runoff Clause: IfExpr:
  15677. |- Condition: AccessorExpr (Mode='.')
  15678. |- Object: NameExpr: 'node'
  15679. \- Field: is_func_alias
  15680. |- Body: BlockBody: (N_Statements=1)
  15681. |0- CallExpr:
  15682. |- Method: NameExpr: 'printf'
  15683. \- Arguments: (Len=2)
  15684. |0- LiteralExpr: type=cstr, value= Aliases Function->`%s`
  15685. \1- AccessorExpr (Mode='.')
  15686. |- Object: NameExpr: 'node'
  15687. \- Field: alias_type
  15688. |2- CallExpr:
  15689. |- Method: NameExpr: 'printf'
  15690. \- Arguments: (Len=1)
  15691. \0- LiteralExpr: type=cstr, value=\n
  15692. \3- ReturnExpr: <void>
  15693. |7- FunctionDecl:
  15694. |- Head: FunctionDeclHead: Name='TypeDeclHead::create' Type='TypeDeclHead' Nargs=1
  15695. \0- EleList eles
  15696. |0- AssignmentExpr (Operator='=')
  15697. |- LHS: DeclExpr: 'TypeDeclHead new'
  15698. \- RHS: CastExpr (Target='TypeDeclHead')
  15699. \- Value: CallExpr:
  15700. |- Method: NameExpr: 'malloc'
  15701. \- Arguments: (Len=1)
  15702. \0- IntrinsicExpr: '@sizeof(TypeDeclHead)@'
  15703. |1- AssignmentExpr (Operator='=')
  15704. |- LHS: DeclExpr: 'int matchnum'
  15705. \- RHS: CallExpr:
  15706. |- Method: AccessorExpr (Mode='::')
  15707. |- Object: NameExpr: 'TypeDeclHead'
  15708. \- Field: match
  15709. \- Arguments: (Len=1)
  15710. \0- NameExpr: 'eles'
  15711. |2- AssignmentExpr (Operator='=')
  15712. |- LHS: AccessorExpr (Mode='.')
  15713. |- Object: NameExpr: 'new'
  15714. \- Field: name
  15715. \- RHS: AccessorExpr (Mode='.')
  15716. |- Object: CallExpr:
  15717. |- Method: AccessorExpr (Mode=':')
  15718. |- Object: CallExpr:
  15719. |- Method: AccessorExpr (Mode=':')
  15720. |- Object: NameExpr: 'eles'
  15721. \- Field: get
  15722. \- Arguments: (Len=1)
  15723. \0- LiteralExpr: type=int, value=1
  15724. \- Field: t
  15725. \- Arguments: (Len=0)
  15726. \- Field: text
  15727. |3- AssignmentExpr (Operator='=')
  15728. |- LHS: AccessorExpr (Mode='.')
  15729. |- Object: NameExpr: 'new'
  15730. \- Field: packed
  15731. \- RHS: LiteralExpr: type=bool, value=0
  15732. |4- AssignmentExpr (Operator='=')
  15733. |- LHS: AccessorExpr (Mode='.')
  15734. |- Object: NameExpr: 'new'
  15735. \- Field: is_type_alias
  15736. \- RHS: LiteralExpr: type=bool, value=0
  15737. |5- AssignmentExpr (Operator='=')
  15738. |- LHS: AccessorExpr (Mode='.')
  15739. |- Object: NameExpr: 'new'
  15740. \- Field: is_func_alias
  15741. \- RHS: LiteralExpr: type=bool, value=0
  15742. |6- IfExpr:
  15743. |- Condition: BinOpExpr (Operator='==')
  15744. |- LHS: NameExpr: 'matchnum'
  15745. \- RHS: LiteralExpr: type=int, value=4
  15746. |- Body: BlockBody: (N_Statements=1)
  15747. |0- AssignmentExpr (Operator='=')
  15748. |- LHS: AccessorExpr (Mode='.')
  15749. |- Object: NameExpr: 'new'
  15750. \- Field: packed
  15751. \- RHS: LiteralExpr: type=bool, value=1
  15752. \-- Runoff Clause: IfExpr:
  15753. |- Condition: BinOpExpr (Operator='==')
  15754. |- LHS: NameExpr: 'matchnum'
  15755. \- RHS: LiteralExpr: type=int, value=5
  15756. |- Body: BlockBody: (N_Statements=2)
  15757. |0- AssignmentExpr (Operator='=')
  15758. |- LHS: AccessorExpr (Mode='.')
  15759. |- Object: NameExpr: 'new'
  15760. \- Field: is_type_alias
  15761. \- RHS: LiteralExpr: type=bool, value=1
  15762. |1- AssignmentExpr (Operator='=')
  15763. |- LHS: AccessorExpr (Mode='.')
  15764. |- Object: NameExpr: 'new'
  15765. \- Field: alias_type
  15766. \- RHS: AccessorExpr (Mode='.')
  15767. |- Object: CallExpr:
  15768. |- Method: AccessorExpr (Mode=':')
  15769. |- Object: CallExpr:
  15770. |- Method: AccessorExpr (Mode=':')
  15771. |- Object: NameExpr: 'eles'
  15772. \- Field: get
  15773. \- Arguments: (Len=1)
  15774. \0- LiteralExpr: type=int, value=4
  15775. \- Field: t
  15776. \- Arguments: (Len=0)
  15777. \- Field: text
  15778. \-- Runoff Clause: IfExpr:
  15779. |- Condition: BinOpExpr (Operator='==')
  15780. |- LHS: NameExpr: 'matchnum'
  15781. \- RHS: LiteralExpr: type=int, value=6
  15782. |- Body: BlockBody: (N_Statements=2)
  15783. |0- AssignmentExpr (Operator='=')
  15784. |- LHS: AccessorExpr (Mode='.')
  15785. |- Object: NameExpr: 'new'
  15786. \- Field: is_func_alias
  15787. \- RHS: LiteralExpr: type=bool, value=1
  15788. |1- AssignmentExpr (Operator='=')
  15789. |- LHS: AccessorExpr (Mode='.')
  15790. |- Object: NameExpr: 'new'
  15791. \- Field: alias_type
  15792. \- RHS: AccessorExpr (Mode='.')
  15793. |- Object: CallExpr:
  15794. |- Method: AccessorExpr (Mode=':')
  15795. |- Object: CallExpr:
  15796. |- Method: AccessorExpr (Mode=':')
  15797. |- Object: NameExpr: 'eles'
  15798. \- Field: get
  15799. \- Arguments: (Len=1)
  15800. \0- LiteralExpr: type=int, value=5
  15801. \- Field: t
  15802. \- Arguments: (Len=0)
  15803. \- Field: text
  15804. \7- ReturnExpr: NameExpr: 'new'
  15805. |8- FunctionDecl:
  15806. |- Head: FunctionDeclHead: Name='TypeDeclHead::match' Type='int' Nargs=1
  15807. \0- EleList eles
  15808. |0- IfExpr:
  15809. |- Condition: UnOpExpr (Operator='-')
  15810. \- Value: GroupingExpr: BinOpExpr (Operator='&')
  15811. |- LHS: CallExpr:
  15812. |- Method: AccessorExpr (Mode=':')
  15813. |- Object: CallExpr:
  15814. |- Method: AccessorExpr (Mode=':')
  15815. |- Object: CallExpr:
  15816. |- Method: AccessorExpr (Mode=':')
  15817. |- Object: NameExpr: 'eles'
  15818. \- Field: get
  15819. \- Arguments: (Len=1)
  15820. \0- LiteralExpr: type=int, value=0
  15821. \- Field: t
  15822. \- Arguments: (Len=0)
  15823. \- Field: is_a
  15824. \- Arguments: (Len=1)
  15825. \0- LiteralExpr: type=cstr, value=T_TYPEDECL
  15826. \- RHS: BinOpExpr (Operator='&')
  15827. |- LHS: CallExpr:
  15828. |- Method: AccessorExpr (Mode=':')
  15829. |- Object: CallExpr:
  15830. |- Method: AccessorExpr (Mode=':')
  15831. |- Object: CallExpr:
  15832. |- Method: AccessorExpr (Mode=':')
  15833. |- Object: NameExpr: 'eles'
  15834. \- Field: get
  15835. \- Arguments: (Len=1)
  15836. \0- LiteralExpr: type=int, value=1
  15837. \- Field: t
  15838. \- Arguments: (Len=0)
  15839. \- Field: is_a
  15840. \- Arguments: (Len=1)
  15841. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_NAME
  15842. \- RHS: CallExpr:
  15843. |- Method: AccessorExpr (Mode=':')
  15844. |- Object: CallExpr:
  15845. |- Method: AccessorExpr (Mode=':')
  15846. |- Object: CallExpr:
  15847. |- Method: AccessorExpr (Mode=':')
  15848. |- Object: NameExpr: 'eles'
  15849. \- Field: get
  15850. \- Arguments: (Len=1)
  15851. \0- LiteralExpr: type=int, value=2
  15852. \- Field: t
  15853. \- Arguments: (Len=0)
  15854. \- Field: is_a
  15855. \- Arguments: (Len=1)
  15856. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_IS
  15857. |- Body: BlockBody: (N_Statements=1)
  15858. |0- ReturnExpr: LiteralExpr: type=int, value=0
  15859. |1- IfExpr:
  15860. |- Condition: BinOpExpr (Operator='>=')
  15861. |- LHS: CallExpr:
  15862. |- Method: AccessorExpr (Mode=':')
  15863. |- Object: NameExpr: 'eles'
  15864. \- Field: in_slice
  15865. \- Arguments: (Len=0)
  15866. \- RHS: LiteralExpr: type=int, value=4
  15867. |- Body: BlockBody: (N_Statements=1)
  15868. |0- IfExpr:
  15869. |- Condition: AccessorExpr (Mode='.')
  15870. |- Object: CallExpr:
  15871. |- Method: AccessorExpr (Mode=':')
  15872. |- Object: NameExpr: 'eles'
  15873. \- Field: get
  15874. \- Arguments: (Len=1)
  15875. \0- LiteralExpr: type=int, value=3
  15876. \- Field: is_token
  15877. |- Body: BlockBody: (N_Statements=2)
  15878. |0- IfExpr:
  15879. |- Condition: CallExpr:
  15880. |- Method: AccessorExpr (Mode=':')
  15881. |- Object: CallExpr:
  15882. |- Method: AccessorExpr (Mode=':')
  15883. |- Object: CallExpr:
  15884. |- Method: AccessorExpr (Mode=':')
  15885. |- Object: NameExpr: 'eles'
  15886. \- Field: get
  15887. \- Arguments: (Len=1)
  15888. \0- LiteralExpr: type=int, value=3
  15889. \- Field: t
  15890. \- Arguments: (Len=0)
  15891. \- Field: is_a
  15892. \- Arguments: (Len=1)
  15893. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_PACKED
  15894. |- Body: BlockBody: (N_Statements=1)
  15895. |0- ReturnExpr: LiteralExpr: type=int, value=4
  15896. |1- IfExpr:
  15897. |- Condition: CallExpr:
  15898. |- Method: AccessorExpr (Mode=':')
  15899. |- Object: CallExpr:
  15900. |- Method: AccessorExpr (Mode=':')
  15901. |- Object: CallExpr:
  15902. |- Method: AccessorExpr (Mode=':')
  15903. |- Object: NameExpr: 'eles'
  15904. \- Field: get
  15905. \- Arguments: (Len=1)
  15906. \0- LiteralExpr: type=int, value=3
  15907. \- Field: t
  15908. \- Arguments: (Len=0)
  15909. \- Field: is_a
  15910. \- Arguments: (Len=1)
  15911. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS
  15912. |- Body: BlockBody: (N_Statements=1)
  15913. |0- IfExpr:
  15914. |- Condition: BinOpExpr (Operator='>=')
  15915. |- LHS: CallExpr:
  15916. |- Method: AccessorExpr (Mode=':')
  15917. |- Object: NameExpr: 'eles'
  15918. \- Field: in_slice
  15919. \- Arguments: (Len=0)
  15920. \- RHS: LiteralExpr: type=int, value=5
  15921. |- Body: BlockBody: (N_Statements=1)
  15922. |0- IfExpr:
  15923. |- Condition: AccessorExpr (Mode='.')
  15924. |- Object: CallExpr:
  15925. |- Method: AccessorExpr (Mode=':')
  15926. |- Object: NameExpr: 'eles'
  15927. \- Field: get
  15928. \- Arguments: (Len=1)
  15929. \0- LiteralExpr: type=int, value=4
  15930. \- Field: is_token
  15931. |- Body: BlockBody: (N_Statements=2)
  15932. |0- IfExpr:
  15933. |- Condition: CallExpr:
  15934. |- Method: AccessorExpr (Mode=':')
  15935. |- Object: CallExpr:
  15936. |- Method: AccessorExpr (Mode=':')
  15937. |- Object: CallExpr:
  15938. |- Method: AccessorExpr (Mode=':')
  15939. |- Object: NameExpr: 'eles'
  15940. \- Field: get
  15941. \- Arguments: (Len=1)
  15942. \0- LiteralExpr: type=int, value=4
  15943. \- Field: t
  15944. \- Arguments: (Len=0)
  15945. \- Field: is_a
  15946. \- Arguments: (Len=1)
  15947. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS_NAME
  15948. |- Body: BlockBody: (N_Statements=1)
  15949. |0- ReturnExpr: LiteralExpr: type=int, value=5
  15950. |1- IfExpr:
  15951. |- Condition: BinOpExpr (Operator='>=')
  15952. |- LHS: CallExpr:
  15953. |- Method: AccessorExpr (Mode=':')
  15954. |- Object: NameExpr: 'eles'
  15955. \- Field: in_slice
  15956. \- Arguments: (Len=0)
  15957. \- RHS: LiteralExpr: type=int, value=6
  15958. |- Body: BlockBody: (N_Statements=1)
  15959. |0- IfExpr:
  15960. |- Condition: AccessorExpr (Mode='.')
  15961. |- Object: CallExpr:
  15962. |- Method: AccessorExpr (Mode=':')
  15963. |- Object: NameExpr: 'eles'
  15964. \- Field: get
  15965. \- Arguments: (Len=1)
  15966. \0- LiteralExpr: type=int, value=5
  15967. \- Field: is_token
  15968. |- Body: BlockBody: (N_Statements=1)
  15969. |0- IfExpr:
  15970. |- Condition: BinOpExpr (Operator='&')
  15971. |- LHS: CallExpr:
  15972. |- Method: AccessorExpr (Mode=':')
  15973. |- Object: CallExpr:
  15974. |- Method: AccessorExpr (Mode=':')
  15975. |- Object: CallExpr:
  15976. |- Method: AccessorExpr (Mode=':')
  15977. |- Object: NameExpr: 'eles'
  15978. \- Field: get
  15979. \- Arguments: (Len=1)
  15980. \0- LiteralExpr: type=int, value=4
  15981. \- Field: t
  15982. \- Arguments: (Len=0)
  15983. \- Field: is_a
  15984. \- Arguments: (Len=1)
  15985. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS_FUNC
  15986. \- RHS: CallExpr:
  15987. |- Method: AccessorExpr (Mode=':')
  15988. |- Object: CallExpr:
  15989. |- Method: AccessorExpr (Mode=':')
  15990. |- Object: CallExpr:
  15991. |- Method: AccessorExpr (Mode=':')
  15992. |- Object: NameExpr: 'eles'
  15993. \- Field: get
  15994. \- Arguments: (Len=1)
  15995. \0- LiteralExpr: type=int, value=5
  15996. \- Field: t
  15997. \- Arguments: (Len=0)
  15998. \- Field: is_a
  15999. \- Arguments: (Len=1)
  16000. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ALIAS_FUNC_RT
  16001. |- Body: BlockBody: (N_Statements=1)
  16002. |0- ReturnExpr: LiteralExpr: type=int, value=6
  16003. \2- ReturnExpr: LiteralExpr: type=int, value=3
  16004. \9- FunctionDecl:
  16005. |- Head: FunctionDeclHead: Name='TypeDeclHead::impl' Type='NodeType' Nargs=0
  16006. \0- ReturnExpr: CallExpr:
  16007. |- Method: AccessorExpr (Mode=':')
  16008. |- Object: CallExpr:
  16009. |- Method: AccessorExpr (Mode=':')
  16010. |- Object: CallExpr:
  16011. |- Method: AccessorExpr (Mode=':')
  16012. |- Object: CallExpr:
  16013. |- Method: AccessorExpr (Mode=':')
  16014. |- Object: CallExpr:
  16015. |- Method: AccessorExpr (Mode=':')
  16016. |- Object: CallExpr:
  16017. |- Method: AccessorExpr (Mode='::')
  16018. |- Object: NameExpr: 'NodeType'
  16019. \- Field: new
  16020. \- Arguments: (Len=1)
  16021. \0- LiteralExpr: type=cstr, value=TypeDeclHead
  16022. \- Field: set_printer
  16023. \- Arguments: (Len=1)
  16024. \0- CastExpr (Target='NodePrinter')
  16025. \- Value: AccessorExpr (Mode='::')
  16026. |- Object: NameExpr: 'TypeDeclHead'
  16027. \- Field: print
  16028. \- Field: set_creator
  16029. \- Arguments: (Len=1)
  16030. \0- CastExpr (Target='NodeCreator')
  16031. \- Value: AccessorExpr (Mode='::')
  16032. |- Object: NameExpr: 'TypeDeclHead'
  16033. \- Field: create
  16034. \- Field: set_matcher
  16035. \- Arguments: (Len=1)
  16036. \0- CastExpr (Target='NodeMatcher')
  16037. \- Value: AccessorExpr (Mode='::')
  16038. |- Object: NameExpr: 'TypeDeclHead'
  16039. \- Field: match
  16040. \- Field: matches
  16041. \- Arguments: (Len=1)
  16042. \0- LiteralExpr: type=int, value=3
  16043. \- Field: matches_only_tokens
  16044. \- Arguments: (Len=0)
  16045. |2- SepExpr (Consumed=2)
  16046. |3- TypeDecl:
  16047. |- Head: TypeDeclHead: `TypeDeclBody` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  16048. \- Body: TypeDeclBody: (N_Statements=6)
  16049. |0- DeclExpr: 'NodeType type_'
  16050. |1- DeclExpr: 'List statements'
  16051. |2- FunctionDecl:
  16052. |- Head: FunctionDeclHead: Name='TypeDeclBody::print' Type='void' Nargs=2
  16053. |0- TypeDeclBody node
  16054. \1- int depth
  16055. |0- CallExpr:
  16056. |- Method: NameExpr: 'printf'
  16057. \- Arguments: (Len=2)
  16058. |0- LiteralExpr: type=cstr, value=TypeDeclBody: (N_Statements=%i)\n
  16059. \1- AccessorExpr (Mode='.')
  16060. |- Object: AccessorExpr (Mode='.')
  16061. |- Object: NameExpr: 'node'
  16062. \- Field: statements
  16063. \- Field: len
  16064. |1- AssignmentExpr (Operator='=')
  16065. |- LHS: DeclExpr: 'int i'
  16066. \- RHS: LiteralExpr: type=int, value=0
  16067. |2- WhileExpr:
  16068. |- Condition: BinOpExpr (Operator='<')
  16069. |- LHS: NameExpr: 'i'
  16070. \- RHS: AccessorExpr (Mode='.')
  16071. |- Object: AccessorExpr (Mode='.')
  16072. |- Object: NameExpr: 'node'
  16073. \- Field: statements
  16074. \- Field: len
  16075. |- Body: BlockBody: (N_Statements=3)
  16076. |0- CallExpr:
  16077. |- Method: AccessorExpr (Mode='::')
  16078. |- Object: NameExpr: 'parse'
  16079. \- Field: indent
  16080. \- Arguments: (Len=1)
  16081. \0- BinOpExpr (Operator='+')
  16082. |- LHS: NameExpr: 'depth'
  16083. \- RHS: LiteralExpr: type=int, value=1
  16084. |1- IfExpr:
  16085. |- Condition: BinOpExpr (Operator='==')
  16086. |- LHS: NameExpr: 'i'
  16087. \- RHS: BinOpExpr (Operator='-')
  16088. |- LHS: AccessorExpr (Mode='.')
  16089. |- Object: AccessorExpr (Mode='.')
  16090. |- Object: NameExpr: 'node'
  16091. \- Field: statements
  16092. \- Field: len
  16093. \- RHS: LiteralExpr: type=int, value=1
  16094. |- Body: BlockBody: (N_Statements=2)
  16095. |0- CallExpr:
  16096. |- Method: NameExpr: 'printf'
  16097. \- Arguments: (Len=2)
  16098. |0- LiteralExpr: type=cstr, value=\\%i-
  16099. \1- NameExpr: 'i'
  16100. |1- CallExpr:
  16101. |- Method: AccessorExpr (Mode=':')
  16102. |- Object: CallExpr:
  16103. |- Method: AccessorExpr (Mode=':')
  16104. |- Object: AccessorExpr (Mode='.')
  16105. |- Object: NameExpr: 'node'
  16106. \- Field: statements
  16107. \- Field: get_Node
  16108. \- Arguments: (Len=1)
  16109. \0- NameExpr: 'i'
  16110. \- Field: print
  16111. \- Arguments: (Len=1)
  16112. \0- BinOpExpr (Operator='+')
  16113. |- LHS: NameExpr: 'depth'
  16114. \- RHS: LiteralExpr: type=int, value=2
  16115. \-- Runoff Clause: BlockBody: (N_Statements=2)
  16116. |0- CallExpr:
  16117. |- Method: NameExpr: 'printf'
  16118. \- Arguments: (Len=2)
  16119. |0- LiteralExpr: type=cstr, value=|%i-
  16120. \1- NameExpr: 'i'
  16121. |1- CallExpr:
  16122. |- Method: AccessorExpr (Mode=':')
  16123. |- Object: CallExpr:
  16124. |- Method: AccessorExpr (Mode=':')
  16125. |- Object: AccessorExpr (Mode='.')
  16126. |- Object: NameExpr: 'node'
  16127. \- Field: statements
  16128. \- Field: get_Node
  16129. \- Arguments: (Len=1)
  16130. \0- NameExpr: 'i'
  16131. \- Field: print
  16132. \- Arguments: (Len=1)
  16133. \0- BinOpExpr (Operator='+')
  16134. |- LHS: NameExpr: 'depth'
  16135. \- RHS: LiteralExpr: type=int, value=2
  16136. |2- AssignmentExpr (Operator='+=')
  16137. |- LHS: NameExpr: 'i'
  16138. \- RHS: LiteralExpr: type=int, value=1
  16139. \3- ReturnExpr: <void>
  16140. |3- FunctionDecl:
  16141. |- Head: FunctionDeclHead: Name='TypeDeclBody::create' Type='TypeDeclBody' Nargs=1
  16142. \0- EleList eles
  16143. |0- AssignmentExpr (Operator='=')
  16144. |- LHS: DeclExpr: 'TypeDeclBody new'
  16145. \- RHS: CastExpr (Target='TypeDeclBody')
  16146. \- Value: CallExpr:
  16147. |- Method: NameExpr: 'malloc'
  16148. \- Arguments: (Len=1)
  16149. \0- IntrinsicExpr: '@sizeof(TypeDeclBody)@'
  16150. |1- IfExpr:
  16151. |- Condition: AccessorExpr (Mode='.')
  16152. |- Object: CallExpr:
  16153. |- Method: AccessorExpr (Mode=':')
  16154. |- Object: NameExpr: 'eles'
  16155. \- Field: get
  16156. \- Arguments: (Len=1)
  16157. \0- LiteralExpr: type=int, value=1
  16158. \- Field: is_token
  16159. |- Body: BlockBody: (N_Statements=1)
  16160. |0- AssignmentExpr (Operator='=')
  16161. |- LHS: AccessorExpr (Mode='.')
  16162. |- Object: NameExpr: 'new'
  16163. \- Field: statements
  16164. \- RHS: CallExpr:
  16165. |- Method: AccessorExpr (Mode='::')
  16166. |- Object: NameExpr: 'List'
  16167. \- Field: new
  16168. \- Arguments: (Len=0)
  16169. \-- Runoff Clause: BlockBody: (N_Statements=2)
  16170. |0- AssignmentExpr (Operator='=')
  16171. |- LHS: AccessorExpr (Mode='.')
  16172. |- Object: NameExpr: 'new'
  16173. \- Field: statements
  16174. \- RHS: AccessorExpr (Mode='.')
  16175. |- Object: GroupingExpr: CastExpr (Target='TypeDeclBody')
  16176. \- Value: CallExpr:
  16177. |- Method: AccessorExpr (Mode=':')
  16178. |- Object: CallExpr:
  16179. |- Method: AccessorExpr (Mode=':')
  16180. |- Object: NameExpr: 'eles'
  16181. \- Field: get
  16182. \- Arguments: (Len=1)
  16183. \0- LiteralExpr: type=int, value=2
  16184. \- Field: n
  16185. \- Arguments: (Len=0)
  16186. \- Field: statements
  16187. |1- CallExpr:
  16188. |- Method: AccessorExpr (Mode=':')
  16189. |- Object: AccessorExpr (Mode='.')
  16190. |- Object: NameExpr: 'new'
  16191. \- Field: statements
  16192. \- Field: insert
  16193. \- Arguments: (Len=2)
  16194. |0- LiteralExpr: type=int, value=0
  16195. \1- CastExpr (Target='ptr')
  16196. \- Value: CallExpr:
  16197. |- Method: AccessorExpr (Mode=':')
  16198. |- Object: CallExpr:
  16199. |- Method: AccessorExpr (Mode=':')
  16200. |- Object: NameExpr: 'eles'
  16201. \- Field: get
  16202. \- Arguments: (Len=1)
  16203. \0- LiteralExpr: type=int, value=1
  16204. \- Field: n
  16205. \- Arguments: (Len=0)
  16206. \2- ReturnExpr: NameExpr: 'new'
  16207. |4- FunctionDecl:
  16208. |- Head: FunctionDeclHead: Name='TypeDeclBody::match' Type='int' Nargs=1
  16209. \0- EleList eles
  16210. |0- IfExpr:
  16211. |- Condition: GroupingExpr: AccessorExpr (Mode='.')
  16212. |- Object: CallExpr:
  16213. |- Method: AccessorExpr (Mode=':')
  16214. |- Object: NameExpr: 'eles'
  16215. \- Field: get
  16216. \- Arguments: (Len=1)
  16217. \0- LiteralExpr: type=int, value=0
  16218. \- Field: is_token
  16219. |- Body: BlockBody: (N_Statements=1)
  16220. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16221. |1- IfExpr:
  16222. |- Condition: UnOpExpr (Operator='-')
  16223. \- Value: CallExpr:
  16224. |- Method: AccessorExpr (Mode=':')
  16225. |- Object: CallExpr:
  16226. |- Method: AccessorExpr (Mode=':')
  16227. |- Object: CallExpr:
  16228. |- Method: AccessorExpr (Mode=':')
  16229. |- Object: NameExpr: 'eles'
  16230. \- Field: get
  16231. \- Arguments: (Len=1)
  16232. \0- LiteralExpr: type=int, value=0
  16233. \- Field: n
  16234. \- Arguments: (Len=0)
  16235. \- Field: is_a
  16236. \- Arguments: (Len=1)
  16237. \0- LiteralExpr: type=cstr, value=SepExpr
  16238. |- Body: BlockBody: (N_Statements=1)
  16239. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16240. |2- IfExpr:
  16241. |- Condition: CallExpr:
  16242. |- Method: AccessorExpr (Mode=':')
  16243. |- Object: CallExpr:
  16244. |- Method: AccessorExpr (Mode=':')
  16245. |- Object: CallExpr:
  16246. |- Method: AccessorExpr (Mode=':')
  16247. |- Object: NameExpr: 'eles'
  16248. \- Field: get
  16249. \- Arguments: (Len=1)
  16250. \0- LiteralExpr: type=int, value=0
  16251. \- Field: n
  16252. \- Arguments: (Len=0)
  16253. \- Field: is_a
  16254. \- Arguments: (Len=1)
  16255. \0- LiteralExpr: type=cstr, value=TypeDeclHead
  16256. |- Body: BlockBody: (N_Statements=1)
  16257. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16258. |3- IfExpr:
  16259. |- Condition: UnOpExpr (Operator='-')
  16260. \- Value: AccessorExpr (Mode='.')
  16261. |- Object: CallExpr:
  16262. |- Method: AccessorExpr (Mode=':')
  16263. |- Object: NameExpr: 'eles'
  16264. \- Field: get
  16265. \- Arguments: (Len=1)
  16266. \0- LiteralExpr: type=int, value=1
  16267. \- Field: is_token
  16268. |- Body: BlockBody: (N_Statements=1)
  16269. |0- IfExpr:
  16270. |- Condition: BinOpExpr (Operator='>')
  16271. |- LHS: CallExpr:
  16272. |- Method: AccessorExpr (Mode=':')
  16273. |- Object: NameExpr: 'eles'
  16274. \- Field: in_slice
  16275. \- Arguments: (Len=0)
  16276. \- RHS: LiteralExpr: type=int, value=2
  16277. |- Body: BlockBody: (N_Statements=1)
  16278. |0- IfExpr:
  16279. |- Condition: CallExpr:
  16280. |- Method: AccessorExpr (Mode=':')
  16281. |- Object: CallExpr:
  16282. |- Method: AccessorExpr (Mode=':')
  16283. |- Object: CallExpr:
  16284. |- Method: AccessorExpr (Mode=':')
  16285. |- Object: NameExpr: 'eles'
  16286. \- Field: get
  16287. \- Arguments: (Len=1)
  16288. \0- LiteralExpr: type=int, value=2
  16289. \- Field: n
  16290. \- Arguments: (Len=0)
  16291. \- Field: is_a
  16292. \- Arguments: (Len=1)
  16293. \0- LiteralExpr: type=cstr, value=TypeDeclBody
  16294. |- Body: BlockBody: (N_Statements=1)
  16295. |0- ReturnExpr: LiteralExpr: type=int, value=3
  16296. \-- Runoff Clause: BlockBody: (N_Statements=1)
  16297. |0- IfExpr:
  16298. |- Condition: CallExpr:
  16299. |- Method: AccessorExpr (Mode=':')
  16300. |- Object: CallExpr:
  16301. |- Method: AccessorExpr (Mode=':')
  16302. |- Object: CallExpr:
  16303. |- Method: AccessorExpr (Mode=':')
  16304. |- Object: NameExpr: 'eles'
  16305. \- Field: get
  16306. \- Arguments: (Len=1)
  16307. \0- LiteralExpr: type=int, value=1
  16308. \- Field: t
  16309. \- Arguments: (Len=0)
  16310. \- Field: is_a
  16311. \- Arguments: (Len=1)
  16312. \0- LiteralExpr: type=cstr, value=T_TYPEDECL_ENDTYPE
  16313. |- Body: BlockBody: (N_Statements=1)
  16314. |0- ReturnExpr: LiteralExpr: type=int, value=2
  16315. \4- ReturnExpr: LiteralExpr: type=int, value=0
  16316. \5- FunctionDecl:
  16317. |- Head: FunctionDeclHead: Name='TypeDeclBody::impl' Type='NodeType' Nargs=0
  16318. \0- ReturnExpr: CallExpr:
  16319. |- Method: AccessorExpr (Mode=':')
  16320. |- Object: CallExpr:
  16321. |- Method: AccessorExpr (Mode=':')
  16322. |- Object: CallExpr:
  16323. |- Method: AccessorExpr (Mode=':')
  16324. |- Object: CallExpr:
  16325. |- Method: AccessorExpr (Mode=':')
  16326. |- Object: CallExpr:
  16327. |- Method: AccessorExpr (Mode='::')
  16328. |- Object: NameExpr: 'NodeType'
  16329. \- Field: new
  16330. \- Arguments: (Len=1)
  16331. \0- LiteralExpr: type=cstr, value=TypeDeclBody
  16332. \- Field: set_printer
  16333. \- Arguments: (Len=1)
  16334. \0- CastExpr (Target='NodePrinter')
  16335. \- Value: AccessorExpr (Mode='::')
  16336. |- Object: NameExpr: 'TypeDeclBody'
  16337. \- Field: print
  16338. \- Field: set_creator
  16339. \- Arguments: (Len=1)
  16340. \0- CastExpr (Target='NodeCreator')
  16341. \- Value: AccessorExpr (Mode='::')
  16342. |- Object: NameExpr: 'TypeDeclBody'
  16343. \- Field: create
  16344. \- Field: set_matcher
  16345. \- Arguments: (Len=1)
  16346. \0- CastExpr (Target='NodeMatcher')
  16347. \- Value: AccessorExpr (Mode='::')
  16348. |- Object: NameExpr: 'TypeDeclBody'
  16349. \- Field: match
  16350. \- Field: matches
  16351. \- Arguments: (Len=1)
  16352. \0- LiteralExpr: type=int, value=2
  16353. |4- SepExpr (Consumed=2)
  16354. |5- TypeDecl:
  16355. |- Head: TypeDeclHead: `TypeDecl` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  16356. \- Body: TypeDeclBody: (N_Statements=7)
  16357. |0- DeclExpr: 'NodeType type_'
  16358. |1- DeclExpr: 'TypeDeclHead head'
  16359. |2- DeclExpr: 'TypeDeclBody body'
  16360. |3- FunctionDecl:
  16361. |- Head: FunctionDeclHead: Name='TypeDecl::print' Type='void' Nargs=2
  16362. |0- TypeDecl node
  16363. \1- int depth
  16364. |0- CallExpr:
  16365. |- Method: NameExpr: 'printf'
  16366. \- Arguments: (Len=1)
  16367. \0- LiteralExpr: type=cstr, value=TypeDecl:\n
  16368. |1- CallExpr:
  16369. |- Method: AccessorExpr (Mode='::')
  16370. |- Object: NameExpr: 'parse'
  16371. \- Field: indent
  16372. \- Arguments: (Len=1)
  16373. \0- BinOpExpr (Operator='+')
  16374. |- LHS: NameExpr: 'depth'
  16375. \- RHS: LiteralExpr: type=int, value=1
  16376. |2- CallExpr:
  16377. |- Method: NameExpr: 'printf'
  16378. \- Arguments: (Len=1)
  16379. \0- LiteralExpr: type=cstr, value=|- Head:
  16380. |3- CallExpr:
  16381. |- Method: AccessorExpr (Mode=':')
  16382. |- Object: GroupingExpr: CastExpr (Target='Node')
  16383. \- Value: AccessorExpr (Mode='.')
  16384. |- Object: NameExpr: 'node'
  16385. \- Field: head
  16386. \- Field: print
  16387. \- Arguments: (Len=1)
  16388. \0- BinOpExpr (Operator='+')
  16389. |- LHS: NameExpr: 'depth'
  16390. \- RHS: LiteralExpr: type=int, value=2
  16391. |4- CallExpr:
  16392. |- Method: AccessorExpr (Mode='::')
  16393. |- Object: NameExpr: 'parse'
  16394. \- Field: indent
  16395. \- Arguments: (Len=1)
  16396. \0- BinOpExpr (Operator='+')
  16397. |- LHS: NameExpr: 'depth'
  16398. \- RHS: LiteralExpr: type=int, value=1
  16399. |5- CallExpr:
  16400. |- Method: NameExpr: 'printf'
  16401. \- Arguments: (Len=1)
  16402. \0- LiteralExpr: type=cstr, value=\\- Body:
  16403. |6- CallExpr:
  16404. |- Method: AccessorExpr (Mode=':')
  16405. |- Object: GroupingExpr: CastExpr (Target='Node')
  16406. \- Value: AccessorExpr (Mode='.')
  16407. |- Object: NameExpr: 'node'
  16408. \- Field: body
  16409. \- Field: print
  16410. \- Arguments: (Len=1)
  16411. \0- BinOpExpr (Operator='+')
  16412. |- LHS: NameExpr: 'depth'
  16413. \- RHS: LiteralExpr: type=int, value=2
  16414. \7- ReturnExpr: <void>
  16415. |4- FunctionDecl:
  16416. |- Head: FunctionDeclHead: Name='TypeDecl::create' Type='TypeDecl' Nargs=1
  16417. \0- EleList eles
  16418. |0- AssignmentExpr (Operator='=')
  16419. |- LHS: DeclExpr: 'TypeDecl new'
  16420. \- RHS: CastExpr (Target='TypeDecl')
  16421. \- Value: CallExpr:
  16422. |- Method: NameExpr: 'malloc'
  16423. \- Arguments: (Len=1)
  16424. \0- IntrinsicExpr: '@sizeof(TypeDecl)@'
  16425. |1- AssignmentExpr (Operator='=')
  16426. |- LHS: AccessorExpr (Mode='.')
  16427. |- Object: NameExpr: 'new'
  16428. \- Field: head
  16429. \- RHS: CastExpr (Target='TypeDeclHead')
  16430. \- Value: CallExpr:
  16431. |- Method: AccessorExpr (Mode=':')
  16432. |- Object: CallExpr:
  16433. |- Method: AccessorExpr (Mode=':')
  16434. |- Object: NameExpr: 'eles'
  16435. \- Field: get
  16436. \- Arguments: (Len=1)
  16437. \0- LiteralExpr: type=int, value=0
  16438. \- Field: n
  16439. \- Arguments: (Len=0)
  16440. |2- AssignmentExpr (Operator='=')
  16441. |- LHS: AccessorExpr (Mode='.')
  16442. |- Object: NameExpr: 'new'
  16443. \- Field: body
  16444. \- RHS: CastExpr (Target='TypeDeclBody')
  16445. \- Value: CallExpr:
  16446. |- Method: AccessorExpr (Mode=':')
  16447. |- Object: CallExpr:
  16448. |- Method: AccessorExpr (Mode=':')
  16449. |- Object: NameExpr: 'eles'
  16450. \- Field: get
  16451. \- Arguments: (Len=1)
  16452. \0- LiteralExpr: type=int, value=1
  16453. \- Field: n
  16454. \- Arguments: (Len=0)
  16455. \3- ReturnExpr: NameExpr: 'new'
  16456. |5- FunctionDecl:
  16457. |- Head: FunctionDeclHead: Name='TypeDecl::match' Type='int' Nargs=1
  16458. \0- EleList eles
  16459. |0- IfExpr:
  16460. |- Condition: CallExpr:
  16461. |- Method: AccessorExpr (Mode=':')
  16462. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  16463. \- Value: CallExpr:
  16464. |- Method: AccessorExpr (Mode=':')
  16465. |- Object: CallExpr:
  16466. |- Method: AccessorExpr (Mode=':')
  16467. |- Object: CallExpr:
  16468. |- Method: AccessorExpr (Mode=':')
  16469. |- Object: NameExpr: 'eles'
  16470. \- Field: get
  16471. \- Arguments: (Len=1)
  16472. \0- LiteralExpr: type=int, value=0
  16473. \- Field: n
  16474. \- Arguments: (Len=0)
  16475. \- Field: is_a
  16476. \- Arguments: (Len=1)
  16477. \0- LiteralExpr: type=cstr, value=TypeDeclHead
  16478. \- Field: or
  16479. \- Arguments: (Len=1)
  16480. \0- UnOpExpr (Operator='-')
  16481. \- Value: CallExpr:
  16482. |- Method: AccessorExpr (Mode=':')
  16483. |- Object: CallExpr:
  16484. |- Method: AccessorExpr (Mode=':')
  16485. |- Object: CallExpr:
  16486. |- Method: AccessorExpr (Mode=':')
  16487. |- Object: NameExpr: 'eles'
  16488. \- Field: get
  16489. \- Arguments: (Len=1)
  16490. \0- LiteralExpr: type=int, value=1
  16491. \- Field: n
  16492. \- Arguments: (Len=0)
  16493. \- Field: is_a
  16494. \- Arguments: (Len=1)
  16495. \0- LiteralExpr: type=cstr, value=TypeDeclBody
  16496. |- Body: BlockBody: (N_Statements=1)
  16497. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16498. \1- ReturnExpr: LiteralExpr: type=int, value=2
  16499. \6- FunctionDecl:
  16500. |- Head: FunctionDeclHead: Name='TypeDecl::impl' Type='NodeType' Nargs=0
  16501. \0- ReturnExpr: CallExpr:
  16502. |- Method: AccessorExpr (Mode=':')
  16503. |- Object: CallExpr:
  16504. |- Method: AccessorExpr (Mode=':')
  16505. |- Object: CallExpr:
  16506. |- Method: AccessorExpr (Mode=':')
  16507. |- Object: CallExpr:
  16508. |- Method: AccessorExpr (Mode=':')
  16509. |- Object: CallExpr:
  16510. |- Method: AccessorExpr (Mode=':')
  16511. |- Object: CallExpr:
  16512. |- Method: AccessorExpr (Mode='::')
  16513. |- Object: NameExpr: 'NodeType'
  16514. \- Field: new
  16515. \- Arguments: (Len=1)
  16516. \0- LiteralExpr: type=cstr, value=TypeDecl
  16517. \- Field: set_printer
  16518. \- Arguments: (Len=1)
  16519. \0- CastExpr (Target='NodePrinter')
  16520. \- Value: AccessorExpr (Mode='::')
  16521. |- Object: NameExpr: 'TypeDecl'
  16522. \- Field: print
  16523. \- Field: set_creator
  16524. \- Arguments: (Len=1)
  16525. \0- CastExpr (Target='NodeCreator')
  16526. \- Value: AccessorExpr (Mode='::')
  16527. |- Object: NameExpr: 'TypeDecl'
  16528. \- Field: create
  16529. \- Field: set_matcher
  16530. \- Arguments: (Len=1)
  16531. \0- CastExpr (Target='NodeMatcher')
  16532. \- Value: AccessorExpr (Mode='::')
  16533. |- Object: NameExpr: 'TypeDecl'
  16534. \- Field: match
  16535. \- Field: matches
  16536. \- Arguments: (Len=1)
  16537. \0- LiteralExpr: type=int, value=2
  16538. \- Field: matches_only_nodes
  16539. \- Arguments: (Len=0)
  16540. |6- SepExpr (Consumed=2)
  16541. |44- SepExpr (Consumed=1)
  16542. |45- FileNode: (N_Statements=3)
  16543. |0- SepExpr (Consumed=1)
  16544. |1- TypeDecl:
  16545. |- Head: TypeDeclHead: `UnOpExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  16546. \- Body: TypeDeclBody: (N_Statements=8)
  16547. |0- DeclExpr: 'NodeType type_'
  16548. |1- DeclExpr: 'cstr op'
  16549. |2- DeclExpr: 'Node value'
  16550. |3- FunctionDecl:
  16551. |- Head: FunctionDeclHead: Name='UnOpExpr::print' Type='void' Nargs=2
  16552. |0- UnOpExpr node
  16553. \1- int depth
  16554. |0- CallExpr:
  16555. |- Method: NameExpr: 'printf'
  16556. \- Arguments: (Len=2)
  16557. |0- LiteralExpr: type=cstr, value=UnOpExpr (Operator='%s')\n
  16558. \1- AccessorExpr (Mode='.')
  16559. |- Object: NameExpr: 'node'
  16560. \- Field: op
  16561. |1- CallExpr:
  16562. |- Method: AccessorExpr (Mode='::')
  16563. |- Object: NameExpr: 'parse'
  16564. \- Field: indent
  16565. \- Arguments: (Len=1)
  16566. \0- NameExpr: 'depth'
  16567. |2- CallExpr:
  16568. |- Method: NameExpr: 'printf'
  16569. \- Arguments: (Len=1)
  16570. \0- LiteralExpr: type=cstr, value=\- Value:
  16571. |3- CallExpr:
  16572. |- Method: AccessorExpr (Mode=':')
  16573. |- Object: AccessorExpr (Mode='.')
  16574. |- Object: NameExpr: 'node'
  16575. \- Field: value
  16576. \- Field: print
  16577. \- Arguments: (Len=1)
  16578. \0- BinOpExpr (Operator='+')
  16579. |- LHS: NameExpr: 'depth'
  16580. \- RHS: LiteralExpr: type=int, value=1
  16581. \4- ReturnExpr: <void>
  16582. |4- FunctionDecl:
  16583. |- Head: FunctionDeclHead: Name='UnOpExpr::create' Type='UnOpExpr' Nargs=1
  16584. \0- EleList eles
  16585. |0- AssignmentExpr (Operator='=')
  16586. |- LHS: DeclExpr: 'UnOpExpr new'
  16587. \- RHS: CastExpr (Target='UnOpExpr')
  16588. \- Value: CallExpr:
  16589. |- Method: NameExpr: 'malloc'
  16590. \- Arguments: (Len=1)
  16591. \0- IntrinsicExpr: '@sizeof(UnOpExpr)@'
  16592. |1- AssignmentExpr (Operator='=')
  16593. |- LHS: AccessorExpr (Mode='.')
  16594. |- Object: NameExpr: 'new'
  16595. \- Field: value
  16596. \- RHS: CallExpr:
  16597. |- Method: AccessorExpr (Mode=':')
  16598. |- Object: CallExpr:
  16599. |- Method: AccessorExpr (Mode=':')
  16600. |- Object: NameExpr: 'eles'
  16601. \- Field: get
  16602. \- Arguments: (Len=1)
  16603. \0- LiteralExpr: type=int, value=1
  16604. \- Field: n
  16605. \- Arguments: (Len=0)
  16606. |2- AssignmentExpr (Operator='=')
  16607. |- LHS: AccessorExpr (Mode='.')
  16608. |- Object: NameExpr: 'new'
  16609. \- Field: op
  16610. \- RHS: AccessorExpr (Mode='.')
  16611. |- Object: CallExpr:
  16612. |- Method: AccessorExpr (Mode=':')
  16613. |- Object: CallExpr:
  16614. |- Method: AccessorExpr (Mode=':')
  16615. |- Object: NameExpr: 'eles'
  16616. \- Field: get
  16617. \- Arguments: (Len=1)
  16618. \0- LiteralExpr: type=int, value=0
  16619. \- Field: t
  16620. \- Arguments: (Len=0)
  16621. \- Field: text
  16622. \3- ReturnExpr: NameExpr: 'new'
  16623. |5- FunctionDecl:
  16624. |- Head: FunctionDeclHead: Name='UnOpExpr::match' Type='int' Nargs=1
  16625. \0- EleList eles
  16626. |0- IfExpr:
  16627. |- Condition: CallExpr:
  16628. |- Method: AccessorExpr (Mode=':')
  16629. |- Object: AccessorExpr (Mode='.')
  16630. |- Object: CallExpr:
  16631. |- Method: AccessorExpr (Mode=':')
  16632. |- Object: NameExpr: 'eles'
  16633. \- Field: get
  16634. \- Arguments: (Len=1)
  16635. \0- LiteralExpr: type=int, value=1
  16636. \- Field: is_token
  16637. \- Field: or
  16638. \- Arguments: (Len=1)
  16639. \0- UnOpExpr (Operator='-')
  16640. \- Value: AccessorExpr (Mode='.')
  16641. |- Object: CallExpr:
  16642. |- Method: AccessorExpr (Mode=':')
  16643. |- Object: NameExpr: 'eles'
  16644. \- Field: get
  16645. \- Arguments: (Len=1)
  16646. \0- LiteralExpr: type=int, value=0
  16647. \- Field: is_token
  16648. |- Body: BlockBody: (N_Statements=1)
  16649. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16650. |1- IfExpr:
  16651. |- Condition: CallExpr:
  16652. |- Method: AccessorExpr (Mode=':')
  16653. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  16654. \- Value: CallExpr:
  16655. |- Method: AccessorExpr (Mode=':')
  16656. |- Object: CallExpr:
  16657. |- Method: AccessorExpr (Mode=':')
  16658. |- Object: CallExpr:
  16659. |- Method: AccessorExpr (Mode=':')
  16660. |- Object: NameExpr: 'eles'
  16661. \- Field: get
  16662. \- Arguments: (Len=1)
  16663. \0- LiteralExpr: type=int, value=0
  16664. \- Field: t
  16665. \- Arguments: (Len=0)
  16666. \- Field: is_a
  16667. \- Arguments: (Len=1)
  16668. \0- LiteralExpr: type=cstr, value=T_UNOP
  16669. \- Field: or
  16670. \- Arguments: (Len=1)
  16671. \0- UnOpExpr (Operator='-')
  16672. \- Value: CallExpr:
  16673. |- Method: AccessorExpr (Mode=':')
  16674. |- Object: CallExpr:
  16675. |- Method: AccessorExpr (Mode=':')
  16676. |- Object: CallExpr:
  16677. |- Method: AccessorExpr (Mode=':')
  16678. |- Object: NameExpr: 'eles'
  16679. \- Field: get
  16680. \- Arguments: (Len=1)
  16681. \0- LiteralExpr: type=int, value=1
  16682. \- Field: n
  16683. \- Arguments: (Len=0)
  16684. \- Field: is_a
  16685. \- Arguments: (Len=1)
  16686. \0- LiteralExpr: type=cstr, value=ValueExpression
  16687. |- Body: BlockBody: (N_Statements=1)
  16688. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16689. \2- ReturnExpr: LiteralExpr: type=int, value=2
  16690. |6- FunctionDecl:
  16691. |- Head: FunctionDeclHead: Name='UnOpExpr::visit' Type='void' Nargs=2
  16692. |0- UnOpExpr n
  16693. \1- TransformerPass p
  16694. |0- AssignmentExpr (Operator='=')
  16695. |- LHS: AccessorExpr (Mode='.')
  16696. |- Object: NameExpr: 'n'
  16697. \- Field: value
  16698. \- RHS: CallExpr:
  16699. |- Method: AccessorExpr (Mode=':')
  16700. |- Object: NameExpr: 'p'
  16701. \- Field: visit
  16702. \- Arguments: (Len=1)
  16703. \0- AccessorExpr (Mode='.')
  16704. |- Object: NameExpr: 'n'
  16705. \- Field: value
  16706. \1- ReturnExpr: <void>
  16707. \7- FunctionDecl:
  16708. |- Head: FunctionDeclHead: Name='UnOpExpr::impl' Type='NodeType' Nargs=0
  16709. \0- ReturnExpr: CallExpr:
  16710. |- Method: AccessorExpr (Mode=':')
  16711. |- Object: CallExpr:
  16712. |- Method: AccessorExpr (Mode=':')
  16713. |- Object: CallExpr:
  16714. |- Method: AccessorExpr (Mode=':')
  16715. |- Object: CallExpr:
  16716. |- Method: AccessorExpr (Mode=':')
  16717. |- Object: CallExpr:
  16718. |- Method: AccessorExpr (Mode=':')
  16719. |- Object: CallExpr:
  16720. |- Method: AccessorExpr (Mode=':')
  16721. |- Object: CallExpr:
  16722. |- Method: AccessorExpr (Mode='::')
  16723. |- Object: NameExpr: 'NodeType'
  16724. \- Field: new
  16725. \- Arguments: (Len=1)
  16726. \0- LiteralExpr: type=cstr, value=UnOpExpr
  16727. \- Field: set_printer
  16728. \- Arguments: (Len=1)
  16729. \0- CastExpr (Target='NodePrinter')
  16730. \- Value: AccessorExpr (Mode='::')
  16731. |- Object: NameExpr: 'UnOpExpr'
  16732. \- Field: print
  16733. \- Field: set_creator
  16734. \- Arguments: (Len=1)
  16735. \0- CastExpr (Target='NodeCreator')
  16736. \- Value: AccessorExpr (Mode='::')
  16737. |- Object: NameExpr: 'UnOpExpr'
  16738. \- Field: create
  16739. \- Field: set_matcher
  16740. \- Arguments: (Len=1)
  16741. \0- CastExpr (Target='NodeMatcher')
  16742. \- Value: AccessorExpr (Mode='::')
  16743. |- Object: NameExpr: 'UnOpExpr'
  16744. \- Field: match
  16745. \- Field: set_visitor
  16746. \- Arguments: (Len=1)
  16747. \0- CastExpr (Target='NodeVisitor')
  16748. \- Value: AccessorExpr (Mode='::')
  16749. |- Object: NameExpr: 'UnOpExpr'
  16750. \- Field: visit
  16751. \- Field: matches
  16752. \- Arguments: (Len=1)
  16753. \0- LiteralExpr: type=int, value=2
  16754. \- Field: addtype
  16755. \- Arguments: (Len=1)
  16756. \0- LiteralExpr: type=cstr, value=ValueExpression
  16757. |2- SepExpr (Consumed=2)
  16758. |46- SepExpr (Consumed=1)
  16759. |47- FileNode: (N_Statements=3)
  16760. |0- SepExpr (Consumed=1)
  16761. |1- TypeDecl:
  16762. |- Head: TypeDeclHead: `WhileExpr` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  16763. \- Body: TypeDeclBody: (N_Statements=8)
  16764. |0- DeclExpr: 'NodeType type_'
  16765. |1- DeclExpr: 'Node condition'
  16766. |2- DeclExpr: 'BlockBody body'
  16767. |3- FunctionDecl:
  16768. |- Head: FunctionDeclHead: Name='WhileExpr::print' Type='void' Nargs=2
  16769. |0- WhileExpr node
  16770. \1- int depth
  16771. |0- CallExpr:
  16772. |- Method: NameExpr: 'printf'
  16773. \- Arguments: (Len=1)
  16774. \0- LiteralExpr: type=cstr, value=WhileExpr:\n
  16775. |1- CallExpr:
  16776. |- Method: AccessorExpr (Mode='::')
  16777. |- Object: NameExpr: 'parse'
  16778. \- Field: indent
  16779. \- Arguments: (Len=1)
  16780. \0- BinOpExpr (Operator='+')
  16781. |- LHS: NameExpr: 'depth'
  16782. \- RHS: LiteralExpr: type=int, value=1
  16783. |2- CallExpr:
  16784. |- Method: NameExpr: 'printf'
  16785. \- Arguments: (Len=1)
  16786. \0- LiteralExpr: type=cstr, value=|- Condition:
  16787. |3- CallExpr:
  16788. |- Method: AccessorExpr (Mode=':')
  16789. |- Object: GroupingExpr: AccessorExpr (Mode='.')
  16790. |- Object: NameExpr: 'node'
  16791. \- Field: condition
  16792. \- Field: print
  16793. \- Arguments: (Len=1)
  16794. \0- BinOpExpr (Operator='+')
  16795. |- LHS: NameExpr: 'depth'
  16796. \- RHS: LiteralExpr: type=int, value=2
  16797. |4- CallExpr:
  16798. |- Method: AccessorExpr (Mode='::')
  16799. |- Object: NameExpr: 'parse'
  16800. \- Field: indent
  16801. \- Arguments: (Len=1)
  16802. \0- BinOpExpr (Operator='+')
  16803. |- LHS: NameExpr: 'depth'
  16804. \- RHS: LiteralExpr: type=int, value=1
  16805. |5- CallExpr:
  16806. |- Method: NameExpr: 'printf'
  16807. \- Arguments: (Len=1)
  16808. \0- LiteralExpr: type=cstr, value=|- Body:
  16809. |6- CallExpr:
  16810. |- Method: AccessorExpr (Mode=':')
  16811. |- Object: GroupingExpr: CastExpr (Target='Node')
  16812. \- Value: AccessorExpr (Mode='.')
  16813. |- Object: NameExpr: 'node'
  16814. \- Field: body
  16815. \- Field: print
  16816. \- Arguments: (Len=1)
  16817. \0- BinOpExpr (Operator='+')
  16818. |- LHS: NameExpr: 'depth'
  16819. \- RHS: LiteralExpr: type=int, value=2
  16820. \7- ReturnExpr: <void>
  16821. |4- FunctionDecl:
  16822. |- Head: FunctionDeclHead: Name='WhileExpr::create' Type='WhileExpr' Nargs=1
  16823. \0- EleList eles
  16824. |0- AssignmentExpr (Operator='=')
  16825. |- LHS: DeclExpr: 'WhileExpr new'
  16826. \- RHS: CastExpr (Target='WhileExpr')
  16827. \- Value: CallExpr:
  16828. |- Method: NameExpr: 'malloc'
  16829. \- Arguments: (Len=1)
  16830. \0- IntrinsicExpr: '@sizeof(WhileExpr)@'
  16831. |1- AssignmentExpr (Operator='=')
  16832. |- LHS: AccessorExpr (Mode='.')
  16833. |- Object: NameExpr: 'new'
  16834. \- Field: condition
  16835. \- RHS: CallExpr:
  16836. |- Method: AccessorExpr (Mode=':')
  16837. |- Object: CallExpr:
  16838. |- Method: AccessorExpr (Mode=':')
  16839. |- Object: NameExpr: 'eles'
  16840. \- Field: get
  16841. \- Arguments: (Len=1)
  16842. \0- LiteralExpr: type=int, value=1
  16843. \- Field: n
  16844. \- Arguments: (Len=0)
  16845. |2- AssignmentExpr (Operator='=')
  16846. |- LHS: AccessorExpr (Mode='.')
  16847. |- Object: NameExpr: 'new'
  16848. \- Field: body
  16849. \- RHS: CastExpr (Target='BlockBody')
  16850. \- Value: CallExpr:
  16851. |- Method: AccessorExpr (Mode=':')
  16852. |- Object: CallExpr:
  16853. |- Method: AccessorExpr (Mode=':')
  16854. |- Object: NameExpr: 'eles'
  16855. \- Field: get
  16856. \- Arguments: (Len=1)
  16857. \0- LiteralExpr: type=int, value=3
  16858. \- Field: n
  16859. \- Arguments: (Len=0)
  16860. \3- ReturnExpr: NameExpr: 'new'
  16861. |5- FunctionDecl:
  16862. |- Head: FunctionDeclHead: Name='WhileExpr::match' Type='int' Nargs=1
  16863. \0- EleList eles
  16864. |0- IfExpr:
  16865. |- Condition: CallExpr:
  16866. |- Method: AccessorExpr (Mode=':')
  16867. |- Object: CallExpr:
  16868. |- Method: AccessorExpr (Mode=':')
  16869. |- Object: CallExpr:
  16870. |- Method: AccessorExpr (Mode=':')
  16871. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  16872. \- Value: AccessorExpr (Mode='.')
  16873. |- Object: CallExpr:
  16874. |- Method: AccessorExpr (Mode=':')
  16875. |- Object: NameExpr: 'eles'
  16876. \- Field: get
  16877. \- Arguments: (Len=1)
  16878. \0- LiteralExpr: type=int, value=0
  16879. \- Field: is_token
  16880. \- Field: or
  16881. \- Arguments: (Len=1)
  16882. \0- UnOpExpr (Operator='-')
  16883. \- Value: AccessorExpr (Mode='.')
  16884. |- Object: CallExpr:
  16885. |- Method: AccessorExpr (Mode=':')
  16886. |- Object: NameExpr: 'eles'
  16887. \- Field: get
  16888. \- Arguments: (Len=1)
  16889. \0- LiteralExpr: type=int, value=2
  16890. \- Field: is_token
  16891. \- Field: or
  16892. \- Arguments: (Len=1)
  16893. \0- AccessorExpr (Mode='.')
  16894. |- Object: CallExpr:
  16895. |- Method: AccessorExpr (Mode=':')
  16896. |- Object: NameExpr: 'eles'
  16897. \- Field: get
  16898. \- Arguments: (Len=1)
  16899. \0- LiteralExpr: type=int, value=1
  16900. \- Field: is_token
  16901. \- Field: or
  16902. \- Arguments: (Len=1)
  16903. \0- AccessorExpr (Mode='.')
  16904. |- Object: CallExpr:
  16905. |- Method: AccessorExpr (Mode=':')
  16906. |- Object: NameExpr: 'eles'
  16907. \- Field: get
  16908. \- Arguments: (Len=1)
  16909. \0- LiteralExpr: type=int, value=3
  16910. \- Field: is_token
  16911. |- Body: BlockBody: (N_Statements=1)
  16912. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16913. |1- IfExpr:
  16914. |- Condition: CallExpr:
  16915. |- Method: AccessorExpr (Mode=':')
  16916. |- Object: CallExpr:
  16917. |- Method: AccessorExpr (Mode=':')
  16918. |- Object: CallExpr:
  16919. |- Method: AccessorExpr (Mode=':')
  16920. |- Object: GroupingExpr: UnOpExpr (Operator='-')
  16921. \- Value: CallExpr:
  16922. |- Method: AccessorExpr (Mode=':')
  16923. |- Object: CallExpr:
  16924. |- Method: AccessorExpr (Mode=':')
  16925. |- Object: CallExpr:
  16926. |- Method: AccessorExpr (Mode=':')
  16927. |- Object: NameExpr: 'eles'
  16928. \- Field: get
  16929. \- Arguments: (Len=1)
  16930. \0- LiteralExpr: type=int, value=0
  16931. \- Field: t
  16932. \- Arguments: (Len=0)
  16933. \- Field: is_a
  16934. \- Arguments: (Len=1)
  16935. \0- LiteralExpr: type=cstr, value=T_WHILE
  16936. \- Field: or
  16937. \- Arguments: (Len=1)
  16938. \0- UnOpExpr (Operator='-')
  16939. \- Value: CallExpr:
  16940. |- Method: AccessorExpr (Mode=':')
  16941. |- Object: CallExpr:
  16942. |- Method: AccessorExpr (Mode=':')
  16943. |- Object: CallExpr:
  16944. |- Method: AccessorExpr (Mode=':')
  16945. |- Object: NameExpr: 'eles'
  16946. \- Field: get
  16947. \- Arguments: (Len=1)
  16948. \0- LiteralExpr: type=int, value=2
  16949. \- Field: t
  16950. \- Arguments: (Len=0)
  16951. \- Field: is_a
  16952. \- Arguments: (Len=1)
  16953. \0- LiteralExpr: type=cstr, value=T_DO
  16954. \- Field: or
  16955. \- Arguments: (Len=1)
  16956. \0- UnOpExpr (Operator='-')
  16957. \- Value: CallExpr:
  16958. |- Method: AccessorExpr (Mode=':')
  16959. |- Object: CallExpr:
  16960. |- Method: AccessorExpr (Mode=':')
  16961. |- Object: CallExpr:
  16962. |- Method: AccessorExpr (Mode=':')
  16963. |- Object: NameExpr: 'eles'
  16964. \- Field: get
  16965. \- Arguments: (Len=1)
  16966. \0- LiteralExpr: type=int, value=1
  16967. \- Field: n
  16968. \- Arguments: (Len=0)
  16969. \- Field: is_a
  16970. \- Arguments: (Len=1)
  16971. \0- LiteralExpr: type=cstr, value=ValueExpression
  16972. \- Field: or
  16973. \- Arguments: (Len=1)
  16974. \0- UnOpExpr (Operator='-')
  16975. \- Value: CallExpr:
  16976. |- Method: AccessorExpr (Mode=':')
  16977. |- Object: CallExpr:
  16978. |- Method: AccessorExpr (Mode=':')
  16979. |- Object: CallExpr:
  16980. |- Method: AccessorExpr (Mode=':')
  16981. |- Object: NameExpr: 'eles'
  16982. \- Field: get
  16983. \- Arguments: (Len=1)
  16984. \0- LiteralExpr: type=int, value=3
  16985. \- Field: n
  16986. \- Arguments: (Len=0)
  16987. \- Field: is_a
  16988. \- Arguments: (Len=1)
  16989. \0- LiteralExpr: type=cstr, value=BlockBody
  16990. |- Body: BlockBody: (N_Statements=1)
  16991. |0- ReturnExpr: LiteralExpr: type=int, value=0
  16992. \2- ReturnExpr: LiteralExpr: type=int, value=4
  16993. |6- FunctionDecl:
  16994. |- Head: FunctionDeclHead: Name='WhileExpr::visit' Type='void' Nargs=2
  16995. |0- WhileExpr n
  16996. \1- TransformerPass p
  16997. |0- AssignmentExpr (Operator='=')
  16998. |- LHS: AccessorExpr (Mode='.')
  16999. |- Object: NameExpr: 'n'
  17000. \- Field: condition
  17001. \- RHS: CallExpr:
  17002. |- Method: AccessorExpr (Mode=':')
  17003. |- Object: NameExpr: 'p'
  17004. \- Field: visit
  17005. \- Arguments: (Len=1)
  17006. \0- AccessorExpr (Mode='.')
  17007. |- Object: NameExpr: 'n'
  17008. \- Field: condition
  17009. |1- AssignmentExpr (Operator='=')
  17010. |- LHS: AccessorExpr (Mode='.')
  17011. |- Object: NameExpr: 'n'
  17012. \- Field: body
  17013. \- RHS: CastExpr (Target='BlockBody')
  17014. \- Value: CallExpr:
  17015. |- Method: AccessorExpr (Mode=':')
  17016. |- Object: NameExpr: 'p'
  17017. \- Field: visit
  17018. \- Arguments: (Len=1)
  17019. \0- CastExpr (Target='Node')
  17020. \- Value: AccessorExpr (Mode='.')
  17021. |- Object: NameExpr: 'n'
  17022. \- Field: body
  17023. \2- ReturnExpr: <void>
  17024. \7- FunctionDecl:
  17025. |- Head: FunctionDeclHead: Name='WhileExpr::impl' Type='NodeType' Nargs=0
  17026. \0- ReturnExpr: CallExpr:
  17027. |- Method: AccessorExpr (Mode=':')
  17028. |- Object: CallExpr:
  17029. |- Method: AccessorExpr (Mode=':')
  17030. |- Object: CallExpr:
  17031. |- Method: AccessorExpr (Mode=':')
  17032. |- Object: CallExpr:
  17033. |- Method: AccessorExpr (Mode=':')
  17034. |- Object: CallExpr:
  17035. |- Method: AccessorExpr (Mode=':')
  17036. |- Object: CallExpr:
  17037. |- Method: AccessorExpr (Mode=':')
  17038. |- Object: CallExpr:
  17039. |- Method: AccessorExpr (Mode='::')
  17040. |- Object: NameExpr: 'NodeType'
  17041. \- Field: new
  17042. \- Arguments: (Len=1)
  17043. \0- LiteralExpr: type=cstr, value=WhileExpr
  17044. \- Field: set_printer
  17045. \- Arguments: (Len=1)
  17046. \0- CastExpr (Target='NodePrinter')
  17047. \- Value: AccessorExpr (Mode='::')
  17048. |- Object: NameExpr: 'WhileExpr'
  17049. \- Field: print
  17050. \- Field: set_creator
  17051. \- Arguments: (Len=1)
  17052. \0- CastExpr (Target='NodeCreator')
  17053. \- Value: AccessorExpr (Mode='::')
  17054. |- Object: NameExpr: 'WhileExpr'
  17055. \- Field: create
  17056. \- Field: set_matcher
  17057. \- Arguments: (Len=1)
  17058. \0- CastExpr (Target='NodeMatcher')
  17059. \- Value: AccessorExpr (Mode='::')
  17060. |- Object: NameExpr: 'WhileExpr'
  17061. \- Field: match
  17062. \- Field: set_visitor
  17063. \- Arguments: (Len=1)
  17064. \0- CastExpr (Target='NodeVisitor')
  17065. \- Value: AccessorExpr (Mode='::')
  17066. |- Object: NameExpr: 'WhileExpr'
  17067. \- Field: visit
  17068. \- Field: matches
  17069. \- Arguments: (Len=1)
  17070. \0- LiteralExpr: type=int, value=4
  17071. \- Field: addtype
  17072. \- Arguments: (Len=1)
  17073. \0- LiteralExpr: type=cstr, value=Expression
  17074. |2- SepExpr (Consumed=2)
  17075. |48- SepExpr (Consumed=1)
  17076. |49- FileNode: (N_Statements=3)
  17077. |0- SepExpr (Consumed=1)
  17078. |1- TypeDecl:
  17079. |- Head: TypeDeclHead: `FileNode` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  17080. \- Body: TypeDeclBody: (N_Statements=7)
  17081. |0- DeclExpr: 'NodeType type_'
  17082. |1- DeclExpr: 'List statements'
  17083. |2- FunctionDecl:
  17084. |- Head: FunctionDeclHead: Name='FileNode::print' Type='void' Nargs=2
  17085. |0- FileNode node
  17086. \1- int depth
  17087. |0- CallExpr:
  17088. |- Method: NameExpr: 'printf'
  17089. \- Arguments: (Len=2)
  17090. |0- LiteralExpr: type=cstr, value=FileNode: (N_Statements=%i)\n
  17091. \1- AccessorExpr (Mode='.')
  17092. |- Object: AccessorExpr (Mode='.')
  17093. |- Object: NameExpr: 'node'
  17094. \- Field: statements
  17095. \- Field: len
  17096. |1- AssignmentExpr (Operator='=')
  17097. |- LHS: DeclExpr: 'int i'
  17098. \- RHS: LiteralExpr: type=int, value=0
  17099. |2- WhileExpr:
  17100. |- Condition: BinOpExpr (Operator='<')
  17101. |- LHS: NameExpr: 'i'
  17102. \- RHS: AccessorExpr (Mode='.')
  17103. |- Object: AccessorExpr (Mode='.')
  17104. |- Object: NameExpr: 'node'
  17105. \- Field: statements
  17106. \- Field: len
  17107. |- Body: BlockBody: (N_Statements=4)
  17108. |0- CallExpr:
  17109. |- Method: AccessorExpr (Mode='::')
  17110. |- Object: NameExpr: 'parse'
  17111. \- Field: indent
  17112. \- Arguments: (Len=1)
  17113. \0- BinOpExpr (Operator='+')
  17114. |- LHS: NameExpr: 'depth'
  17115. \- RHS: LiteralExpr: type=int, value=1
  17116. |1- CallExpr:
  17117. |- Method: NameExpr: 'printf'
  17118. \- Arguments: (Len=2)
  17119. |0- LiteralExpr: type=cstr, value=|%i-
  17120. \1- NameExpr: 'i'
  17121. |2- CallExpr:
  17122. |- Method: AccessorExpr (Mode=':')
  17123. |- Object: CallExpr:
  17124. |- Method: AccessorExpr (Mode=':')
  17125. |- Object: AccessorExpr (Mode='.')
  17126. |- Object: NameExpr: 'node'
  17127. \- Field: statements
  17128. \- Field: get_Node
  17129. \- Arguments: (Len=1)
  17130. \0- NameExpr: 'i'
  17131. \- Field: print
  17132. \- Arguments: (Len=1)
  17133. \0- BinOpExpr (Operator='+')
  17134. |- LHS: NameExpr: 'depth'
  17135. \- RHS: LiteralExpr: type=int, value=2
  17136. |3- AssignmentExpr (Operator='+=')
  17137. |- LHS: NameExpr: 'i'
  17138. \- RHS: LiteralExpr: type=int, value=1
  17139. \3- ReturnExpr: <void>
  17140. |3- FunctionDecl:
  17141. |- Head: FunctionDeclHead: Name='FileNode::create' Type='FileNode' Nargs=2
  17142. |0- Project p
  17143. \1- EleList eles
  17144. |0- AssignmentExpr (Operator='=')
  17145. |- LHS: DeclExpr: 'FileNode new'
  17146. \- RHS: CastExpr (Target='FileNode')
  17147. \- Value: CallExpr:
  17148. |- Method: NameExpr: 'malloc'
  17149. \- Arguments: (Len=1)
  17150. \0- IntrinsicExpr: '@sizeof(FileNode)@'
  17151. |1- AssignmentExpr (Operator='=')
  17152. |- LHS: AccessorExpr (Mode='.')
  17153. |- Object: NameExpr: 'new'
  17154. \- Field: type_
  17155. \- RHS: CallExpr:
  17156. |- Method: AccessorExpr (Mode=':')
  17157. |- Object: NameExpr: 'p'
  17158. \- Field: type_by_name
  17159. \- Arguments: (Len=1)
  17160. \0- LiteralExpr: type=cstr, value=FileNode
  17161. |2- AssignmentExpr (Operator='=')
  17162. |- LHS: AccessorExpr (Mode='.')
  17163. |- Object: NameExpr: 'new'
  17164. \- Field: statements
  17165. \- RHS: CallExpr:
  17166. |- Method: AccessorExpr (Mode='::')
  17167. |- Object: NameExpr: 'List'
  17168. \- Field: new
  17169. \- Arguments: (Len=0)
  17170. |3- AssignmentExpr (Operator='=')
  17171. |- LHS: DeclExpr: 'int i'
  17172. \- RHS: LiteralExpr: type=int, value=0
  17173. |4- WhileExpr:
  17174. |- Condition: BinOpExpr (Operator='<')
  17175. |- LHS: NameExpr: 'i'
  17176. \- RHS: CallExpr:
  17177. |- Method: AccessorExpr (Mode=':')
  17178. |- Object: NameExpr: 'eles'
  17179. \- Field: in_slice
  17180. \- Arguments: (Len=0)
  17181. |- Body: BlockBody: (N_Statements=3)
  17182. |0- IfExpr:
  17183. |- Condition: AccessorExpr (Mode='.')
  17184. |- Object: CallExpr:
  17185. |- Method: AccessorExpr (Mode=':')
  17186. |- Object: NameExpr: 'eles'
  17187. \- Field: get
  17188. \- Arguments: (Len=1)
  17189. \0- NameExpr: 'i'
  17190. \- Field: is_token
  17191. |- Body: BlockBody: (N_Statements=2)
  17192. |0- CallExpr:
  17193. |- Method: AccessorExpr (Mode=':')
  17194. |- Object: CallExpr:
  17195. |- Method: AccessorExpr (Mode=':')
  17196. |- Object: NameExpr: 'eles'
  17197. \- Field: get
  17198. \- Arguments: (Len=1)
  17199. \0- NameExpr: 'i'
  17200. \- Field: print
  17201. \- Arguments: (Len=0)
  17202. |1- CallExpr:
  17203. |- Method: AccessorExpr (Mode='::')
  17204. |- Object: NameExpr: 'shoc'
  17205. \- Field: bail_out
  17206. \- Arguments: (Len=1)
  17207. \0- LiteralExpr: type=cstr, value=Got a token in the input to FileNode::create!
  17208. |1- CallExpr:
  17209. |- Method: AccessorExpr (Mode=':')
  17210. |- Object: AccessorExpr (Mode='.')
  17211. |- Object: NameExpr: 'new'
  17212. \- Field: statements
  17213. \- Field: append_Node
  17214. \- Arguments: (Len=1)
  17215. \0- CallExpr:
  17216. |- Method: AccessorExpr (Mode=':')
  17217. |- Object: CallExpr:
  17218. |- Method: AccessorExpr (Mode=':')
  17219. |- Object: NameExpr: 'eles'
  17220. \- Field: get
  17221. \- Arguments: (Len=1)
  17222. \0- NameExpr: 'i'
  17223. \- Field: n
  17224. \- Arguments: (Len=0)
  17225. |2- AssignmentExpr (Operator='+=')
  17226. |- LHS: NameExpr: 'i'
  17227. \- RHS: LiteralExpr: type=int, value=1
  17228. \5- ReturnExpr: NameExpr: 'new'
  17229. |4- FunctionDecl:
  17230. |- Head: FunctionDeclHead: Name='FileNode::match' Type='int' Nargs=1
  17231. \0- EleList eles
  17232. \0- ReturnExpr: LiteralExpr: type=int, value=0
  17233. |5- FunctionDecl:
  17234. |- Head: FunctionDeclHead: Name='FileNode::visit' Type='void' Nargs=2
  17235. |0- FileNode n
  17236. \1- TransformerPass p
  17237. |0- AssignmentExpr (Operator='=')
  17238. |- LHS: DeclExpr: 'int i'
  17239. \- RHS: LiteralExpr: type=int, value=0
  17240. |1- DeclExpr: 'Node res'
  17241. |2- WhileExpr:
  17242. |- Condition: BinOpExpr (Operator='<')
  17243. |- LHS: NameExpr: 'i'
  17244. \- RHS: AccessorExpr (Mode='.')
  17245. |- Object: AccessorExpr (Mode='.')
  17246. |- Object: NameExpr: 'n'
  17247. \- Field: statements
  17248. \- Field: len
  17249. |- Body: BlockBody: (N_Statements=3)
  17250. |0- AssignmentExpr (Operator='=')
  17251. |- LHS: NameExpr: 'res'
  17252. \- RHS: CallExpr:
  17253. |- Method: AccessorExpr (Mode=':')
  17254. |- Object: NameExpr: 'p'
  17255. \- Field: visit
  17256. \- Arguments: (Len=1)
  17257. \0- CallExpr:
  17258. |- Method: AccessorExpr (Mode=':')
  17259. |- Object: AccessorExpr (Mode='.')
  17260. |- Object: NameExpr: 'n'
  17261. \- Field: statements
  17262. \- Field: get_Node
  17263. \- Arguments: (Len=1)
  17264. \0- NameExpr: 'i'
  17265. |1- IfExpr:
  17266. |- Condition: BinOpExpr (Operator='==')
  17267. |- LHS: CastExpr (Target='ptr')
  17268. \- Value: NameExpr: 'res'
  17269. \- RHS: LiteralExpr: type=ptr, value=0
  17270. |- Body: BlockBody: (N_Statements=1)
  17271. |0- CallExpr:
  17272. |- Method: AccessorExpr (Mode=':')
  17273. |- Object: AccessorExpr (Mode='.')
  17274. |- Object: NameExpr: 'n'
  17275. \- Field: statements
  17276. \- Field: del
  17277. \- Arguments: (Len=1)
  17278. \0- NameExpr: 'i'
  17279. \-- Runoff Clause: BlockBody: (N_Statements=1)
  17280. |0- CallExpr:
  17281. |- Method: AccessorExpr (Mode=':')
  17282. |- Object: AccessorExpr (Mode='.')
  17283. |- Object: NameExpr: 'n'
  17284. \- Field: statements
  17285. \- Field: set
  17286. \- Arguments: (Len=2)
  17287. |0- NameExpr: 'i'
  17288. \1- CastExpr (Target='ptr')
  17289. \- Value: NameExpr: 'res'
  17290. |2- AssignmentExpr (Operator='+=')
  17291. |- LHS: NameExpr: 'i'
  17292. \- RHS: LiteralExpr: type=int, value=1
  17293. \3- ReturnExpr: <void>
  17294. \6- FunctionDecl:
  17295. |- Head: FunctionDeclHead: Name='FileNode::impl' Type='NodeType' Nargs=0
  17296. \0- ReturnExpr: CallExpr:
  17297. |- Method: AccessorExpr (Mode=':')
  17298. |- Object: CallExpr:
  17299. |- Method: AccessorExpr (Mode=':')
  17300. |- Object: CallExpr:
  17301. |- Method: AccessorExpr (Mode=':')
  17302. |- Object: CallExpr:
  17303. |- Method: AccessorExpr (Mode=':')
  17304. |- Object: CallExpr:
  17305. |- Method: AccessorExpr (Mode=':')
  17306. |- Object: CallExpr:
  17307. |- Method: AccessorExpr (Mode='::')
  17308. |- Object: NameExpr: 'NodeType'
  17309. \- Field: new
  17310. \- Arguments: (Len=1)
  17311. \0- LiteralExpr: type=cstr, value=FileNode
  17312. \- Field: set_printer
  17313. \- Arguments: (Len=1)
  17314. \0- CastExpr (Target='NodePrinter')
  17315. \- Value: AccessorExpr (Mode='::')
  17316. |- Object: NameExpr: 'FileNode'
  17317. \- Field: print
  17318. \- Field: set_creator
  17319. \- Arguments: (Len=1)
  17320. \0- CastExpr (Target='NodeCreator')
  17321. \- Value: AccessorExpr (Mode='::')
  17322. |- Object: NameExpr: 'FileNode'
  17323. \- Field: create
  17324. \- Field: set_matcher
  17325. \- Arguments: (Len=1)
  17326. \0- CastExpr (Target='NodeMatcher')
  17327. \- Value: AccessorExpr (Mode='::')
  17328. |- Object: NameExpr: 'FileNode'
  17329. \- Field: match
  17330. \- Field: set_visitor
  17331. \- Arguments: (Len=1)
  17332. \0- CastExpr (Target='NodeVisitor')
  17333. \- Value: AccessorExpr (Mode='::')
  17334. |- Object: NameExpr: 'FileNode'
  17335. \- Field: visit
  17336. \- Field: matches
  17337. \- Arguments: (Len=1)
  17338. \0- LiteralExpr: type=int, value=2
  17339. |2- SepExpr (Consumed=2)
  17340. |50- SepExpr (Consumed=2)
  17341. |51- FunctionDecl:
  17342. |- Head: FunctionDeclHead: Name='parse::init_default' Type='void' Nargs=1
  17343. \0- List l
  17344. |0- CallExpr:
  17345. |- Method: AccessorExpr (Mode=':')
  17346. |- Object: NameExpr: 'l'
  17347. \- Field: append_NodeType
  17348. \- Arguments: (Len=1)
  17349. \0- CallExpr:
  17350. |- Method: NameExpr: 'NameExpr$$impl'
  17351. \- Arguments: (Len=0)
  17352. |1- CallExpr:
  17353. |- Method: AccessorExpr (Mode=':')
  17354. |- Object: NameExpr: 'l'
  17355. \- Field: append_NodeType
  17356. \- Arguments: (Len=1)
  17357. \0- CallExpr:
  17358. |- Method: NameExpr: 'DeclExpr$$impl'
  17359. \- Arguments: (Len=0)
  17360. |2- CallExpr:
  17361. |- Method: AccessorExpr (Mode=':')
  17362. |- Object: NameExpr: 'l'
  17363. \- Field: append_NodeType
  17364. \- Arguments: (Len=1)
  17365. \0- CallExpr:
  17366. |- Method: NameExpr: 'AccessorExpr$$impl'
  17367. \- Arguments: (Len=0)
  17368. |3- CallExpr:
  17369. |- Method: AccessorExpr (Mode=':')
  17370. |- Object: NameExpr: 'l'
  17371. \- Field: append_NodeType
  17372. \- Arguments: (Len=1)
  17373. \0- CallExpr:
  17374. |- Method: NameExpr: 'LiteralExpr$$impl'
  17375. \- Arguments: (Len=0)
  17376. |4- CallExpr:
  17377. |- Method: AccessorExpr (Mode=':')
  17378. |- Object: NameExpr: 'l'
  17379. \- Field: append_NodeType
  17380. \- Arguments: (Len=1)
  17381. \0- CallExpr:
  17382. |- Method: NameExpr: 'GroupingExpr$$impl'
  17383. \- Arguments: (Len=0)
  17384. |5- CallExpr:
  17385. |- Method: AccessorExpr (Mode=':')
  17386. |- Object: NameExpr: 'l'
  17387. \- Field: append_NodeType
  17388. \- Arguments: (Len=1)
  17389. \0- CallExpr:
  17390. |- Method: NameExpr: 'BinOpExpr$$impl'
  17391. \- Arguments: (Len=0)
  17392. |6- CallExpr:
  17393. |- Method: AccessorExpr (Mode=':')
  17394. |- Object: NameExpr: 'l'
  17395. \- Field: append_NodeType
  17396. \- Arguments: (Len=1)
  17397. \0- CallExpr:
  17398. |- Method: NameExpr: 'UnOpExpr$$impl'
  17399. \- Arguments: (Len=0)
  17400. |7- CallExpr:
  17401. |- Method: AccessorExpr (Mode=':')
  17402. |- Object: NameExpr: 'l'
  17403. \- Field: append_NodeType
  17404. \- Arguments: (Len=1)
  17405. \0- CallExpr:
  17406. |- Method: NameExpr: 'CastExpr$$impl'
  17407. \- Arguments: (Len=0)
  17408. |8- CallExpr:
  17409. |- Method: AccessorExpr (Mode=':')
  17410. |- Object: NameExpr: 'l'
  17411. \- Field: append_NodeType
  17412. \- Arguments: (Len=1)
  17413. \0- CallExpr:
  17414. |- Method: NameExpr: 'IndexExpr$$impl'
  17415. \- Arguments: (Len=0)
  17416. |9- CallExpr:
  17417. |- Method: AccessorExpr (Mode=':')
  17418. |- Object: NameExpr: 'l'
  17419. \- Field: append_NodeType
  17420. \- Arguments: (Len=1)
  17421. \0- CallExpr:
  17422. |- Method: NameExpr: 'CallExpr$$impl'
  17423. \- Arguments: (Len=0)
  17424. |10- CallExpr:
  17425. |- Method: AccessorExpr (Mode=':')
  17426. |- Object: NameExpr: 'l'
  17427. \- Field: append_NodeType
  17428. \- Arguments: (Len=1)
  17429. \0- CallExpr:
  17430. |- Method: NameExpr: 'AssignmentExpr$$impl'
  17431. \- Arguments: (Len=0)
  17432. |11- CallExpr:
  17433. |- Method: AccessorExpr (Mode=':')
  17434. |- Object: NameExpr: 'l'
  17435. \- Field: append_NodeType
  17436. \- Arguments: (Len=1)
  17437. \0- CallExpr:
  17438. |- Method: NameExpr: 'ReturnExpr$$impl'
  17439. \- Arguments: (Len=0)
  17440. |12- CallExpr:
  17441. |- Method: AccessorExpr (Mode=':')
  17442. |- Object: NameExpr: 'l'
  17443. \- Field: append_NodeType
  17444. \- Arguments: (Len=1)
  17445. \0- CallExpr:
  17446. |- Method: NameExpr: 'TupleEndFragment$$impl'
  17447. \- Arguments: (Len=0)
  17448. |13- CallExpr:
  17449. |- Method: AccessorExpr (Mode=':')
  17450. |- Object: NameExpr: 'l'
  17451. \- Field: append_NodeType
  17452. \- Arguments: (Len=1)
  17453. \0- CallExpr:
  17454. |- Method: NameExpr: 'TupleMidFragment$$impl'
  17455. \- Arguments: (Len=0)
  17456. |14- CallExpr:
  17457. |- Method: AccessorExpr (Mode=':')
  17458. |- Object: NameExpr: 'l'
  17459. \- Field: append_NodeType
  17460. \- Arguments: (Len=1)
  17461. \0- CallExpr:
  17462. |- Method: NameExpr: 'Tuple$$impl'
  17463. \- Arguments: (Len=0)
  17464. |15- CallExpr:
  17465. |- Method: AccessorExpr (Mode=':')
  17466. |- Object: NameExpr: 'l'
  17467. \- Field: append_NodeType
  17468. \- Arguments: (Len=1)
  17469. \0- CallExpr:
  17470. |- Method: NameExpr: 'ZeroTuple$$impl'
  17471. \- Arguments: (Len=0)
  17472. |16- CallExpr:
  17473. |- Method: AccessorExpr (Mode=':')
  17474. |- Object: NameExpr: 'l'
  17475. \- Field: append_NodeType
  17476. \- Arguments: (Len=1)
  17477. \0- CallExpr:
  17478. |- Method: NameExpr: 'ZeroArgList$$impl'
  17479. \- Arguments: (Len=0)
  17480. |17- CallExpr:
  17481. |- Method: AccessorExpr (Mode=':')
  17482. |- Object: NameExpr: 'l'
  17483. \- Field: append_NodeType
  17484. \- Arguments: (Len=1)
  17485. \0- CallExpr:
  17486. |- Method: NameExpr: 'OneArgList$$impl'
  17487. \- Arguments: (Len=0)
  17488. |18- CallExpr:
  17489. |- Method: AccessorExpr (Mode=':')
  17490. |- Object: NameExpr: 'l'
  17491. \- Field: append_NodeType
  17492. \- Arguments: (Len=1)
  17493. \0- CallExpr:
  17494. |- Method: NameExpr: 'MultiArgListStart$$impl'
  17495. \- Arguments: (Len=0)
  17496. |19- CallExpr:
  17497. |- Method: AccessorExpr (Mode=':')
  17498. |- Object: NameExpr: 'l'
  17499. \- Field: append_NodeType
  17500. \- Arguments: (Len=1)
  17501. \0- CallExpr:
  17502. |- Method: NameExpr: 'MultiArgListExt$$impl'
  17503. \- Arguments: (Len=0)
  17504. |20- CallExpr:
  17505. |- Method: AccessorExpr (Mode=':')
  17506. |- Object: NameExpr: 'l'
  17507. \- Field: append_NodeType
  17508. \- Arguments: (Len=1)
  17509. \0- CallExpr:
  17510. |- Method: NameExpr: 'MultiArgList$$impl'
  17511. \- Arguments: (Len=0)
  17512. |21- CallExpr:
  17513. |- Method: AccessorExpr (Mode=':')
  17514. |- Object: NameExpr: 'l'
  17515. \- Field: append_NodeType
  17516. \- Arguments: (Len=1)
  17517. \0- CallExpr:
  17518. |- Method: NameExpr: 'FunctionDeclHead$$impl'
  17519. \- Arguments: (Len=0)
  17520. |22- CallExpr:
  17521. |- Method: AccessorExpr (Mode=':')
  17522. |- Object: NameExpr: 'l'
  17523. \- Field: append_NodeType
  17524. \- Arguments: (Len=1)
  17525. \0- CallExpr:
  17526. |- Method: NameExpr: 'FunctionBody$$impl'
  17527. \- Arguments: (Len=0)
  17528. |23- CallExpr:
  17529. |- Method: AccessorExpr (Mode=':')
  17530. |- Object: NameExpr: 'l'
  17531. \- Field: append_NodeType
  17532. \- Arguments: (Len=1)
  17533. \0- CallExpr:
  17534. |- Method: NameExpr: 'FunctionDecl$$impl'
  17535. \- Arguments: (Len=0)
  17536. |24- CallExpr:
  17537. |- Method: AccessorExpr (Mode=':')
  17538. |- Object: NameExpr: 'l'
  17539. \- Field: append_NodeType
  17540. \- Arguments: (Len=1)
  17541. \0- CallExpr:
  17542. |- Method: NameExpr: 'IfExprHead$$impl'
  17543. \- Arguments: (Len=0)
  17544. |25- CallExpr:
  17545. |- Method: AccessorExpr (Mode=':')
  17546. |- Object: NameExpr: 'l'
  17547. \- Field: append_NodeType
  17548. \- Arguments: (Len=1)
  17549. \0- CallExpr:
  17550. |- Method: NameExpr: 'IfExpr$$impl'
  17551. \- Arguments: (Len=0)
  17552. |26- CallExpr:
  17553. |- Method: AccessorExpr (Mode=':')
  17554. |- Object: NameExpr: 'l'
  17555. \- Field: append_NodeType
  17556. \- Arguments: (Len=1)
  17557. \0- CallExpr:
  17558. |- Method: NameExpr: 'WhileExpr$$impl'
  17559. \- Arguments: (Len=0)
  17560. |27- CallExpr:
  17561. |- Method: AccessorExpr (Mode=':')
  17562. |- Object: NameExpr: 'l'
  17563. \- Field: append_NodeType
  17564. \- Arguments: (Len=1)
  17565. \0- CallExpr:
  17566. |- Method: NameExpr: 'BlockBody$$impl'
  17567. \- Arguments: (Len=0)
  17568. |28- CallExpr:
  17569. |- Method: AccessorExpr (Mode=':')
  17570. |- Object: NameExpr: 'l'
  17571. \- Field: append_NodeType
  17572. \- Arguments: (Len=1)
  17573. \0- CallExpr:
  17574. |- Method: NameExpr: 'IntrinsicExpr$$impl'
  17575. \- Arguments: (Len=0)
  17576. |29- CallExpr:
  17577. |- Method: AccessorExpr (Mode=':')
  17578. |- Object: NameExpr: 'l'
  17579. \- Field: append_NodeType
  17580. \- Arguments: (Len=1)
  17581. \0- CallExpr:
  17582. |- Method: NameExpr: 'ImportStmt$$impl'
  17583. \- Arguments: (Len=0)
  17584. |30- CallExpr:
  17585. |- Method: AccessorExpr (Mode=':')
  17586. |- Object: NameExpr: 'l'
  17587. \- Field: append_NodeType
  17588. \- Arguments: (Len=1)
  17589. \0- CallExpr:
  17590. |- Method: NameExpr: 'TypeDeclHead$$impl'
  17591. \- Arguments: (Len=0)
  17592. |31- CallExpr:
  17593. |- Method: AccessorExpr (Mode=':')
  17594. |- Object: NameExpr: 'l'
  17595. \- Field: append_NodeType
  17596. \- Arguments: (Len=1)
  17597. \0- CallExpr:
  17598. |- Method: NameExpr: 'TypeDeclBody$$impl'
  17599. \- Arguments: (Len=0)
  17600. |32- CallExpr:
  17601. |- Method: AccessorExpr (Mode=':')
  17602. |- Object: NameExpr: 'l'
  17603. \- Field: append_NodeType
  17604. \- Arguments: (Len=1)
  17605. \0- CallExpr:
  17606. |- Method: NameExpr: 'TypeDecl$$impl'
  17607. \- Arguments: (Len=0)
  17608. |33- CallExpr:
  17609. |- Method: AccessorExpr (Mode=':')
  17610. |- Object: NameExpr: 'l'
  17611. \- Field: append_NodeType
  17612. \- Arguments: (Len=1)
  17613. \0- CallExpr:
  17614. |- Method: NameExpr: 'SepExpr$$impl'
  17615. \- Arguments: (Len=0)
  17616. |34- CallExpr:
  17617. |- Method: AccessorExpr (Mode=':')
  17618. |- Object: NameExpr: 'l'
  17619. \- Field: append_NodeType
  17620. \- Arguments: (Len=1)
  17621. \0- CallExpr:
  17622. |- Method: NameExpr: 'OneTuple$$impl'
  17623. \- Arguments: (Len=0)
  17624. |35- CallExpr:
  17625. |- Method: AccessorExpr (Mode=':')
  17626. |- Object: NameExpr: 'l'
  17627. \- Field: append_NodeType
  17628. \- Arguments: (Len=1)
  17629. \0- CallExpr:
  17630. |- Method: NameExpr: 'FileNode$$impl'
  17631. \- Arguments: (Len=0)
  17632. \36- ReturnExpr: <void>
  17633. |52- SepExpr (Consumed=2)
  17634. |53- FunctionDecl:
  17635. |- Head: FunctionDeclHead: Name='Project:show_types' Type='void' Nargs=1
  17636. \0- Project proj
  17637. |0- AssignmentExpr (Operator='=')
  17638. |- LHS: DeclExpr: 'int p'
  17639. \- RHS: LiteralExpr: type=int, value=0
  17640. |1- DeclExpr: 'int i'
  17641. |2- DeclExpr: 'NodeType t'
  17642. |3- WhileExpr:
  17643. |- Condition: BinOpExpr (Operator='<')
  17644. |- LHS: NameExpr: 'p'
  17645. \- RHS: AccessorExpr (Mode='.')
  17646. |- Object: AccessorExpr (Mode='.')
  17647. |- Object: NameExpr: 'proj'
  17648. \- Field: node_types
  17649. \- Field: len
  17650. |- Body: BlockBody: (N_Statements=5)
  17651. |0- AssignmentExpr (Operator='=')
  17652. |- LHS: NameExpr: 't'
  17653. \- RHS: CastExpr (Target='NodeType')
  17654. \- Value: CallExpr:
  17655. |- Method: AccessorExpr (Mode=':')
  17656. |- Object: AccessorExpr (Mode='.')
  17657. |- Object: NameExpr: 'proj'
  17658. \- Field: node_types
  17659. \- Field: get
  17660. \- Arguments: (Len=1)
  17661. \0- NameExpr: 'p'
  17662. |1- CallExpr:
  17663. |- Method: NameExpr: 'printf'
  17664. \- Arguments: (Len=3)
  17665. |0- LiteralExpr: type=cstr, value=\n%s%s:
  17666. |1- AccessorExpr (Mode='.')
  17667. |- Object: NameExpr: 't'
  17668. \- Field: name
  17669. \2- BinOpExpr (Operator='*')
  17670. |- LHS: LiteralExpr: type=cstr, value=
  17671. \- RHS: BinOpExpr (Operator='-')
  17672. |- LHS: LiteralExpr: type=int, value=20
  17673. \- RHS: CallExpr:
  17674. |- Method: AccessorExpr (Mode=':')
  17675. |- Object: AccessorExpr (Mode='.')
  17676. |- Object: NameExpr: 't'
  17677. \- Field: name
  17678. \- Field: len
  17679. \- Arguments: (Len=0)
  17680. |2- IfExpr:
  17681. |- Condition: BinOpExpr (Operator='!=')
  17682. |- LHS: CastExpr (Target='ptr')
  17683. \- Value: AccessorExpr (Mode='.')
  17684. |- Object: NameExpr: 't'
  17685. \- Field: things_i_am
  17686. \- RHS: LiteralExpr: type=ptr, value=0
  17687. |- Body: BlockBody: (N_Statements=2)
  17688. |0- AssignmentExpr (Operator='=')
  17689. |- LHS: NameExpr: 'i'
  17690. \- RHS: BinOpExpr (Operator='-')
  17691. |- LHS: AccessorExpr (Mode='.')
  17692. |- Object: AccessorExpr (Mode='.')
  17693. |- Object: NameExpr: 't'
  17694. \- Field: things_i_am
  17695. \- Field: len
  17696. \- RHS: LiteralExpr: type=int, value=1
  17697. |1- WhileExpr:
  17698. |- Condition: BinOpExpr (Operator='>')
  17699. |- LHS: NameExpr: 'i'
  17700. \- RHS: UnOpExpr (Operator='-')
  17701. \- Value: LiteralExpr: type=int, value=1
  17702. |- Body: BlockBody: (N_Statements=2)
  17703. |0- CallExpr:
  17704. |- Method: NameExpr: 'printf'
  17705. \- Arguments: (Len=3)
  17706. |0- LiteralExpr: type=cstr, value= %s%s
  17707. |1- CastExpr (Target='cstr')
  17708. \- Value: CallExpr:
  17709. |- Method: AccessorExpr (Mode=':')
  17710. |- Object: AccessorExpr (Mode='.')
  17711. |- Object: NameExpr: 't'
  17712. \- Field: things_i_am
  17713. \- Field: get
  17714. \- Arguments: (Len=1)
  17715. \0- NameExpr: 'i'
  17716. \2- BinOpExpr (Operator='*')
  17717. |- LHS: LiteralExpr: type=cstr, value=
  17718. \- RHS: BinOpExpr (Operator='-')
  17719. |- LHS: LiteralExpr: type=int, value=25
  17720. \- RHS: CallExpr:
  17721. |- Method: AccessorExpr (Mode=':')
  17722. |- Object: CastExpr (Target='cstr')
  17723. \- Value: CallExpr:
  17724. |- Method: AccessorExpr (Mode=':')
  17725. |- Object: AccessorExpr (Mode='.')
  17726. |- Object: NameExpr: 't'
  17727. \- Field: things_i_am
  17728. \- Field: get
  17729. \- Arguments: (Len=1)
  17730. \0- NameExpr: 'i'
  17731. \- Field: len
  17732. \- Arguments: (Len=0)
  17733. |1- AssignmentExpr (Operator='-=')
  17734. |- LHS: NameExpr: 'i'
  17735. \- RHS: LiteralExpr: type=int, value=1
  17736. |3- CallExpr:
  17737. |- Method: NameExpr: 'printf'
  17738. \- Arguments: (Len=2)
  17739. |0- LiteralExpr: type=cstr, value= %s
  17740. \1- AccessorExpr (Mode='.')
  17741. |- Object: NameExpr: 't'
  17742. \- Field: name
  17743. |4- AssignmentExpr (Operator='+=')
  17744. |- LHS: NameExpr: 'p'
  17745. \- RHS: LiteralExpr: type=int, value=1
  17746. |4- CallExpr:
  17747. |- Method: NameExpr: 'printf'
  17748. \- Arguments: (Len=1)
  17749. \0- LiteralExpr: type=cstr, value=\n
  17750. \5- ReturnExpr: <void>
  17751. |54- SepExpr (Consumed=1)
  17752. |6- SepExpr (Consumed=2)
  17753. |7- FileNode: (N_Statements=20)
  17754. |0- SepExpr (Consumed=1)
  17755. |1- SepExpr (Consumed=2)
  17756. |2- FileNode: (N_Statements=5)
  17757. |0- SepExpr (Consumed=2)
  17758. |1- FunctionDecl:
  17759. |- Head: FunctionDeclHead: Name='rewrite_namespaces::visit_accessor' Type='AccessorExpr' Nargs=2
  17760. |0- AccessorExpr n
  17761. \1- TransformerPass p
  17762. |0- IfExpr:
  17763. |- Condition: BinOpExpr (Operator='==')
  17764. |- LHS: AccessorExpr (Mode='.')
  17765. |- Object: NameExpr: 'n'
  17766. \- Field: mode
  17767. \- RHS: LiteralExpr: type=cstr, value=::
  17768. |- Body: BlockBody: (N_Statements=1)
  17769. |0- IfExpr:
  17770. |- Condition: CallExpr:
  17771. |- Method: AccessorExpr (Mode=':')
  17772. |- Object: AccessorExpr (Mode='.')
  17773. |- Object: NameExpr: 'n'
  17774. \- Field: object
  17775. \- Field: is_a
  17776. \- Arguments: (Len=1)
  17777. \0- LiteralExpr: type=cstr, value=NameExpr
  17778. |- Body: BlockBody: (N_Statements=1)
  17779. |0- ReturnExpr: CastExpr (Target='AccessorExpr')
  17780. \- Value: CallExpr:
  17781. |- Method: NameExpr: 'NameExpr$$create_direct'
  17782. \- Arguments: (Len=2)
  17783. |0- AccessorExpr (Mode='.')
  17784. |- Object: NameExpr: 'p'
  17785. \- Field: proj
  17786. \1- BinOpExpr (Operator='+')
  17787. |- LHS: AccessorExpr (Mode='.')
  17788. |- Object: CastExpr (Target='NameExpr')
  17789. \- Value: AccessorExpr (Mode='.')
  17790. |- Object: NameExpr: 'n'
  17791. \- Field: object
  17792. \- Field: name
  17793. \- RHS: BinOpExpr (Operator='+')
  17794. |- LHS: LiteralExpr: type=cstr, value=$$
  17795. \- RHS: AccessorExpr (Mode='.')
  17796. |- Object: NameExpr: 'n'
  17797. \- Field: field
  17798. \1- ReturnExpr: NameExpr: 'n'
  17799. |2- SepExpr (Consumed=2)
  17800. |3- FunctionDecl:
  17801. |- Head: FunctionDeclHead: Name='rewrite_namespaces::init' Type='TransformerPass' Nargs=0
  17802. \0- ReturnExpr: CallExpr:
  17803. |- Method: AccessorExpr (Mode=':')
  17804. |- Object: CallExpr:
  17805. |- Method: NameExpr: 'TransformerPass$$new'
  17806. \- Arguments: (Len=1)
  17807. \0- LiteralExpr: type=cstr, value=rewrite_namespaces
  17808. \- Field: add_specialization
  17809. \- Arguments: (Len=2)
  17810. |0- LiteralExpr: type=cstr, value=AccessorExpr
  17811. \1- CastExpr (Target='NodeTransformer')
  17812. \- Value: NameExpr: 'rewrite_namespaces$$visit_accessor'
  17813. |4- SepExpr (Consumed=1)
  17814. |3- SepExpr (Consumed=1)
  17815. |4- FileNode: (N_Statements=5)
  17816. |0- SepExpr (Consumed=2)
  17817. |1- FunctionDecl:
  17818. |- Head: FunctionDeclHead: Name='fold_constants::visit_binop' Type='Node' Nargs=2
  17819. |0- BinOpExpr n
  17820. \1- TransformerPass p
  17821. |0- IfExpr:
  17822. |- Condition: BinOpExpr (Operator='&')
  17823. |- LHS: CallExpr:
  17824. |- Method: AccessorExpr (Mode=':')
  17825. |- Object: AccessorExpr (Mode='.')
  17826. |- Object: NameExpr: 'n'
  17827. \- Field: lhs
  17828. \- Field: is_a
  17829. \- Arguments: (Len=1)
  17830. \0- LiteralExpr: type=cstr, value=LiteralExpr
  17831. \- RHS: CallExpr:
  17832. |- Method: AccessorExpr (Mode=':')
  17833. |- Object: AccessorExpr (Mode='.')
  17834. |- Object: NameExpr: 'n'
  17835. \- Field: rhs
  17836. \- Field: is_a
  17837. \- Arguments: (Len=1)
  17838. \0- LiteralExpr: type=cstr, value=LiteralExpr
  17839. |- Body: BlockBody: (N_Statements=3)
  17840. |0- AssignmentExpr (Operator='=')
  17841. |- LHS: DeclExpr: 'LiteralExpr lhs'
  17842. \- RHS: CastExpr (Target='LiteralExpr')
  17843. \- Value: AccessorExpr (Mode='.')
  17844. |- Object: NameExpr: 'n'
  17845. \- Field: lhs
  17846. |1- AssignmentExpr (Operator='=')
  17847. |- LHS: DeclExpr: 'LiteralExpr rhs'
  17848. \- RHS: CastExpr (Target='LiteralExpr')
  17849. \- Value: AccessorExpr (Mode='.')
  17850. |- Object: NameExpr: 'n'
  17851. \- Field: rhs
  17852. |2- IfExpr:
  17853. |- Condition: BinOpExpr (Operator='&')
  17854. |- LHS: BinOpExpr (Operator='==')
  17855. |- LHS: AccessorExpr (Mode='.')
  17856. |- Object: NameExpr: 'lhs'
  17857. \- Field: value_type
  17858. \- RHS: LiteralExpr: type=cstr, value=int
  17859. \- RHS: BinOpExpr (Operator='==')
  17860. |- LHS: AccessorExpr (Mode='.')
  17861. |- Object: NameExpr: 'rhs'
  17862. \- Field: value_type
  17863. \- RHS: LiteralExpr: type=cstr, value=int
  17864. |- Body: BlockBody: (N_Statements=3)
  17865. |0- AssignmentExpr (Operator='=')
  17866. |- LHS: DeclExpr: 'int ri'
  17867. \- RHS: CallExpr:
  17868. |- Method: AccessorExpr (Mode=':')
  17869. |- Object: AccessorExpr (Mode='.')
  17870. |- Object: NameExpr: 'rhs'
  17871. \- Field: value
  17872. \- Field: int
  17873. \- Arguments: (Len=0)
  17874. |1- AssignmentExpr (Operator='=')
  17875. |- LHS: DeclExpr: 'int li'
  17876. \- RHS: CallExpr:
  17877. |- Method: AccessorExpr (Mode=':')
  17878. |- Object: AccessorExpr (Mode='.')
  17879. |- Object: NameExpr: 'lhs'
  17880. \- Field: value
  17881. \- Field: int
  17882. \- Arguments: (Len=0)
  17883. |2- IfExpr:
  17884. |- Condition: BinOpExpr (Operator='==')
  17885. |- LHS: AccessorExpr (Mode='.')
  17886. |- Object: NameExpr: 'n'
  17887. \- Field: op
  17888. \- RHS: LiteralExpr: type=cstr, value=+
  17889. |- Body: BlockBody: (N_Statements=1)
  17890. |0- ReturnExpr: CallExpr:
  17891. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  17892. \- Arguments: (Len=2)
  17893. |0- AccessorExpr (Mode='.')
  17894. |- Object: NameExpr: 'p'
  17895. \- Field: proj
  17896. \1- BinOpExpr (Operator='+')
  17897. |- LHS: NameExpr: 'ri'
  17898. \- RHS: NameExpr: 'li'
  17899. \-- Runoff Clause: IfExpr:
  17900. |- Condition: BinOpExpr (Operator='==')
  17901. |- LHS: AccessorExpr (Mode='.')
  17902. |- Object: NameExpr: 'n'
  17903. \- Field: op
  17904. \- RHS: LiteralExpr: type=cstr, value=-
  17905. |- Body: BlockBody: (N_Statements=1)
  17906. |0- ReturnExpr: CallExpr:
  17907. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  17908. \- Arguments: (Len=2)
  17909. |0- AccessorExpr (Mode='.')
  17910. |- Object: NameExpr: 'p'
  17911. \- Field: proj
  17912. \1- BinOpExpr (Operator='-')
  17913. |- LHS: NameExpr: 'li'
  17914. \- RHS: NameExpr: 'ri'
  17915. \-- Runoff Clause: IfExpr:
  17916. |- Condition: BinOpExpr (Operator='==')
  17917. |- LHS: AccessorExpr (Mode='.')
  17918. |- Object: NameExpr: 'n'
  17919. \- Field: op
  17920. \- RHS: LiteralExpr: type=cstr, value=*
  17921. |- Body: BlockBody: (N_Statements=1)
  17922. |0- ReturnExpr: CallExpr:
  17923. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  17924. \- Arguments: (Len=2)
  17925. |0- AccessorExpr (Mode='.')
  17926. |- Object: NameExpr: 'p'
  17927. \- Field: proj
  17928. \1- BinOpExpr (Operator='*')
  17929. |- LHS: NameExpr: 'li'
  17930. \- RHS: NameExpr: 'ri'
  17931. \-- Runoff Clause: IfExpr:
  17932. |- Condition: BinOpExpr (Operator='==')
  17933. |- LHS: AccessorExpr (Mode='.')
  17934. |- Object: NameExpr: 'n'
  17935. \- Field: op
  17936. \- RHS: LiteralExpr: type=cstr, value=/
  17937. |- Body: BlockBody: (N_Statements=1)
  17938. |0- ReturnExpr: CallExpr:
  17939. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  17940. \- Arguments: (Len=2)
  17941. |0- AccessorExpr (Mode='.')
  17942. |- Object: NameExpr: 'p'
  17943. \- Field: proj
  17944. \1- BinOpExpr (Operator='/')
  17945. |- LHS: NameExpr: 'li'
  17946. \- RHS: NameExpr: 'ri'
  17947. \-- Runoff Clause: IfExpr:
  17948. |- Condition: BinOpExpr (Operator='==')
  17949. |- LHS: AccessorExpr (Mode='.')
  17950. |- Object: NameExpr: 'n'
  17951. \- Field: op
  17952. \- RHS: LiteralExpr: type=cstr, value=>>
  17953. |- Body: BlockBody: (N_Statements=1)
  17954. |0- ReturnExpr: CallExpr:
  17955. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  17956. \- Arguments: (Len=2)
  17957. |0- AccessorExpr (Mode='.')
  17958. |- Object: NameExpr: 'p'
  17959. \- Field: proj
  17960. \1- BinOpExpr (Operator='>>')
  17961. |- LHS: NameExpr: 'li'
  17962. \- RHS: NameExpr: 'ri'
  17963. \-- Runoff Clause: IfExpr:
  17964. |- Condition: BinOpExpr (Operator='==')
  17965. |- LHS: AccessorExpr (Mode='.')
  17966. |- Object: NameExpr: 'n'
  17967. \- Field: op
  17968. \- RHS: LiteralExpr: type=cstr, value=<<
  17969. |- Body: BlockBody: (N_Statements=1)
  17970. |0- ReturnExpr: CallExpr:
  17971. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  17972. \- Arguments: (Len=2)
  17973. |0- AccessorExpr (Mode='.')
  17974. |- Object: NameExpr: 'p'
  17975. \- Field: proj
  17976. \1- BinOpExpr (Operator='<<')
  17977. |- LHS: NameExpr: 'li'
  17978. \- RHS: NameExpr: 'ri'
  17979. \-- Runoff Clause: IfExpr:
  17980. |- Condition: BinOpExpr (Operator='==')
  17981. |- LHS: AccessorExpr (Mode='.')
  17982. |- Object: NameExpr: 'n'
  17983. \- Field: op
  17984. \- RHS: LiteralExpr: type=cstr, value===
  17985. |- Body: BlockBody: (N_Statements=1)
  17986. |0- ReturnExpr: CallExpr:
  17987. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  17988. \- Arguments: (Len=2)
  17989. |0- AccessorExpr (Mode='.')
  17990. |- Object: NameExpr: 'p'
  17991. \- Field: proj
  17992. \1- BinOpExpr (Operator='==')
  17993. |- LHS: NameExpr: 'li'
  17994. \- RHS: NameExpr: 'ri'
  17995. \-- Runoff Clause: IfExpr:
  17996. |- Condition: BinOpExpr (Operator='==')
  17997. |- LHS: AccessorExpr (Mode='.')
  17998. |- Object: NameExpr: 'n'
  17999. \- Field: op
  18000. \- RHS: LiteralExpr: type=cstr, value=!=
  18001. |- Body: BlockBody: (N_Statements=1)
  18002. |0- ReturnExpr: CallExpr:
  18003. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18004. \- Arguments: (Len=2)
  18005. |0- AccessorExpr (Mode='.')
  18006. |- Object: NameExpr: 'p'
  18007. \- Field: proj
  18008. \1- BinOpExpr (Operator='!=')
  18009. |- LHS: NameExpr: 'li'
  18010. \- RHS: NameExpr: 'ri'
  18011. \-- Runoff Clause: IfExpr:
  18012. |- Condition: BinOpExpr (Operator='==')
  18013. |- LHS: AccessorExpr (Mode='.')
  18014. |- Object: NameExpr: 'n'
  18015. \- Field: op
  18016. \- RHS: LiteralExpr: type=cstr, value=>
  18017. |- Body: BlockBody: (N_Statements=1)
  18018. |0- ReturnExpr: CallExpr:
  18019. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18020. \- Arguments: (Len=2)
  18021. |0- AccessorExpr (Mode='.')
  18022. |- Object: NameExpr: 'p'
  18023. \- Field: proj
  18024. \1- BinOpExpr (Operator='>')
  18025. |- LHS: NameExpr: 'li'
  18026. \- RHS: NameExpr: 'ri'
  18027. \-- Runoff Clause: IfExpr:
  18028. |- Condition: BinOpExpr (Operator='==')
  18029. |- LHS: AccessorExpr (Mode='.')
  18030. |- Object: NameExpr: 'n'
  18031. \- Field: op
  18032. \- RHS: LiteralExpr: type=cstr, value=<
  18033. |- Body: BlockBody: (N_Statements=1)
  18034. |0- ReturnExpr: CallExpr:
  18035. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18036. \- Arguments: (Len=2)
  18037. |0- AccessorExpr (Mode='.')
  18038. |- Object: NameExpr: 'p'
  18039. \- Field: proj
  18040. \1- BinOpExpr (Operator='<')
  18041. |- LHS: NameExpr: 'li'
  18042. \- RHS: NameExpr: 'ri'
  18043. \-- Runoff Clause: IfExpr:
  18044. |- Condition: BinOpExpr (Operator='==')
  18045. |- LHS: AccessorExpr (Mode='.')
  18046. |- Object: NameExpr: 'n'
  18047. \- Field: op
  18048. \- RHS: LiteralExpr: type=cstr, value=>=
  18049. |- Body: BlockBody: (N_Statements=1)
  18050. |0- ReturnExpr: CallExpr:
  18051. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18052. \- Arguments: (Len=2)
  18053. |0- AccessorExpr (Mode='.')
  18054. |- Object: NameExpr: 'p'
  18055. \- Field: proj
  18056. \1- BinOpExpr (Operator='>=')
  18057. |- LHS: NameExpr: 'li'
  18058. \- RHS: NameExpr: 'ri'
  18059. \-- Runoff Clause: IfExpr:
  18060. |- Condition: BinOpExpr (Operator='==')
  18061. |- LHS: AccessorExpr (Mode='.')
  18062. |- Object: NameExpr: 'n'
  18063. \- Field: op
  18064. \- RHS: LiteralExpr: type=cstr, value=<=
  18065. |- Body: BlockBody: (N_Statements=1)
  18066. |0- ReturnExpr: CallExpr:
  18067. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18068. \- Arguments: (Len=2)
  18069. |0- AccessorExpr (Mode='.')
  18070. |- Object: NameExpr: 'p'
  18071. \- Field: proj
  18072. \1- BinOpExpr (Operator='<=')
  18073. |- LHS: NameExpr: 'li'
  18074. \- RHS: NameExpr: 'ri'
  18075. \-- Runoff Clause: IfExpr:
  18076. |- Condition: BinOpExpr (Operator='==')
  18077. |- LHS: AccessorExpr (Mode='.')
  18078. |- Object: NameExpr: 'n'
  18079. \- Field: op
  18080. \- RHS: LiteralExpr: type=cstr, value=&
  18081. |- Body: BlockBody: (N_Statements=1)
  18082. |0- ReturnExpr: CallExpr:
  18083. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  18084. \- Arguments: (Len=2)
  18085. |0- AccessorExpr (Mode='.')
  18086. |- Object: NameExpr: 'p'
  18087. \- Field: proj
  18088. \1- BinOpExpr (Operator='&')
  18089. |- LHS: NameExpr: 'li'
  18090. \- RHS: NameExpr: 'ri'
  18091. \-- Runoff Clause: IfExpr:
  18092. |- Condition: BinOpExpr (Operator='==')
  18093. |- LHS: AccessorExpr (Mode='.')
  18094. |- Object: NameExpr: 'n'
  18095. \- Field: op
  18096. \- RHS: LiteralExpr: type=cstr, value=%
  18097. |- Body: BlockBody: (N_Statements=1)
  18098. |0- ReturnExpr: CallExpr:
  18099. |- Method: NameExpr: 'LiteralExpr$$create_direct_int'
  18100. \- Arguments: (Len=2)
  18101. |0- AccessorExpr (Mode='.')
  18102. |- Object: NameExpr: 'p'
  18103. \- Field: proj
  18104. \1- BinOpExpr (Operator='%')
  18105. |- LHS: NameExpr: 'li'
  18106. \- RHS: NameExpr: 'ri'
  18107. \-- Runoff Clause: IfExpr:
  18108. |- Condition: BinOpExpr (Operator='&')
  18109. |- LHS: BinOpExpr (Operator='==')
  18110. |- LHS: AccessorExpr (Mode='.')
  18111. |- Object: NameExpr: 'lhs'
  18112. \- Field: value_type
  18113. \- RHS: LiteralExpr: type=cstr, value=float
  18114. \- RHS: BinOpExpr (Operator='==')
  18115. |- LHS: AccessorExpr (Mode='.')
  18116. |- Object: NameExpr: 'rhs'
  18117. \- Field: value_type
  18118. \- RHS: LiteralExpr: type=cstr, value=float
  18119. |- Body: BlockBody: (N_Statements=3)
  18120. |0- AssignmentExpr (Operator='=')
  18121. |- LHS: DeclExpr: 'float rf'
  18122. \- RHS: CallExpr:
  18123. |- Method: AccessorExpr (Mode=':')
  18124. |- Object: AccessorExpr (Mode='.')
  18125. |- Object: NameExpr: 'rhs'
  18126. \- Field: value
  18127. \- Field: float
  18128. \- Arguments: (Len=0)
  18129. |1- AssignmentExpr (Operator='=')
  18130. |- LHS: DeclExpr: 'float lf'
  18131. \- RHS: CallExpr:
  18132. |- Method: AccessorExpr (Mode=':')
  18133. |- Object: AccessorExpr (Mode='.')
  18134. |- Object: NameExpr: 'lhs'
  18135. \- Field: value
  18136. \- Field: float
  18137. \- Arguments: (Len=0)
  18138. |2- IfExpr:
  18139. |- Condition: BinOpExpr (Operator='==')
  18140. |- LHS: AccessorExpr (Mode='.')
  18141. |- Object: NameExpr: 'n'
  18142. \- Field: op
  18143. \- RHS: LiteralExpr: type=cstr, value=+
  18144. |- Body: BlockBody: (N_Statements=1)
  18145. |0- ReturnExpr: CallExpr:
  18146. |- Method: NameExpr: 'LiteralExpr$$create_direct_float'
  18147. \- Arguments: (Len=2)
  18148. |0- AccessorExpr (Mode='.')
  18149. |- Object: NameExpr: 'p'
  18150. \- Field: proj
  18151. \1- BinOpExpr (Operator='+')
  18152. |- LHS: NameExpr: 'rf'
  18153. \- RHS: NameExpr: 'lf'
  18154. \-- Runoff Clause: IfExpr:
  18155. |- Condition: BinOpExpr (Operator='==')
  18156. |- LHS: AccessorExpr (Mode='.')
  18157. |- Object: NameExpr: 'n'
  18158. \- Field: op
  18159. \- RHS: LiteralExpr: type=cstr, value=-
  18160. |- Body: BlockBody: (N_Statements=1)
  18161. |0- ReturnExpr: CallExpr:
  18162. |- Method: NameExpr: 'LiteralExpr$$create_direct_float'
  18163. \- Arguments: (Len=2)
  18164. |0- AccessorExpr (Mode='.')
  18165. |- Object: NameExpr: 'p'
  18166. \- Field: proj
  18167. \1- BinOpExpr (Operator='-')
  18168. |- LHS: NameExpr: 'lf'
  18169. \- RHS: NameExpr: 'rf'
  18170. \-- Runoff Clause: IfExpr:
  18171. |- Condition: BinOpExpr (Operator='==')
  18172. |- LHS: AccessorExpr (Mode='.')
  18173. |- Object: NameExpr: 'n'
  18174. \- Field: op
  18175. \- RHS: LiteralExpr: type=cstr, value=*
  18176. |- Body: BlockBody: (N_Statements=1)
  18177. |0- ReturnExpr: CallExpr:
  18178. |- Method: NameExpr: 'LiteralExpr$$create_direct_float'
  18179. \- Arguments: (Len=2)
  18180. |0- AccessorExpr (Mode='.')
  18181. |- Object: NameExpr: 'p'
  18182. \- Field: proj
  18183. \1- BinOpExpr (Operator='*')
  18184. |- LHS: NameExpr: 'lf'
  18185. \- RHS: NameExpr: 'rf'
  18186. \-- Runoff Clause: IfExpr:
  18187. |- Condition: BinOpExpr (Operator='==')
  18188. |- LHS: AccessorExpr (Mode='.')
  18189. |- Object: NameExpr: 'n'
  18190. \- Field: op
  18191. \- RHS: LiteralExpr: type=cstr, value=/
  18192. |- Body: BlockBody: (N_Statements=1)
  18193. |0- ReturnExpr: CallExpr:
  18194. |- Method: NameExpr: 'LiteralExpr$$create_direct_float'
  18195. \- Arguments: (Len=2)
  18196. |0- AccessorExpr (Mode='.')
  18197. |- Object: NameExpr: 'p'
  18198. \- Field: proj
  18199. \1- BinOpExpr (Operator='/')
  18200. |- LHS: NameExpr: 'lf'
  18201. \- RHS: NameExpr: 'rf'
  18202. \-- Runoff Clause: IfExpr:
  18203. |- Condition: BinOpExpr (Operator='==')
  18204. |- LHS: AccessorExpr (Mode='.')
  18205. |- Object: NameExpr: 'n'
  18206. \- Field: op
  18207. \- RHS: LiteralExpr: type=cstr, value===
  18208. |- Body: BlockBody: (N_Statements=1)
  18209. |0- ReturnExpr: CallExpr:
  18210. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18211. \- Arguments: (Len=2)
  18212. |0- AccessorExpr (Mode='.')
  18213. |- Object: NameExpr: 'p'
  18214. \- Field: proj
  18215. \1- BinOpExpr (Operator='==')
  18216. |- LHS: NameExpr: 'lf'
  18217. \- RHS: NameExpr: 'rf'
  18218. \-- Runoff Clause: IfExpr:
  18219. |- Condition: BinOpExpr (Operator='==')
  18220. |- LHS: AccessorExpr (Mode='.')
  18221. |- Object: NameExpr: 'n'
  18222. \- Field: op
  18223. \- RHS: LiteralExpr: type=cstr, value=!=
  18224. |- Body: BlockBody: (N_Statements=1)
  18225. |0- ReturnExpr: CallExpr:
  18226. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18227. \- Arguments: (Len=2)
  18228. |0- AccessorExpr (Mode='.')
  18229. |- Object: NameExpr: 'p'
  18230. \- Field: proj
  18231. \1- BinOpExpr (Operator='!=')
  18232. |- LHS: NameExpr: 'lf'
  18233. \- RHS: NameExpr: 'rf'
  18234. \-- Runoff Clause: IfExpr:
  18235. |- Condition: BinOpExpr (Operator='==')
  18236. |- LHS: AccessorExpr (Mode='.')
  18237. |- Object: NameExpr: 'n'
  18238. \- Field: op
  18239. \- RHS: LiteralExpr: type=cstr, value=>
  18240. |- Body: BlockBody: (N_Statements=1)
  18241. |0- ReturnExpr: CallExpr:
  18242. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18243. \- Arguments: (Len=2)
  18244. |0- AccessorExpr (Mode='.')
  18245. |- Object: NameExpr: 'p'
  18246. \- Field: proj
  18247. \1- BinOpExpr (Operator='>')
  18248. |- LHS: NameExpr: 'lf'
  18249. \- RHS: NameExpr: 'rf'
  18250. \-- Runoff Clause: IfExpr:
  18251. |- Condition: BinOpExpr (Operator='==')
  18252. |- LHS: AccessorExpr (Mode='.')
  18253. |- Object: NameExpr: 'n'
  18254. \- Field: op
  18255. \- RHS: LiteralExpr: type=cstr, value=<
  18256. |- Body: BlockBody: (N_Statements=1)
  18257. |0- ReturnExpr: CallExpr:
  18258. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18259. \- Arguments: (Len=2)
  18260. |0- AccessorExpr (Mode='.')
  18261. |- Object: NameExpr: 'p'
  18262. \- Field: proj
  18263. \1- BinOpExpr (Operator='<')
  18264. |- LHS: NameExpr: 'lf'
  18265. \- RHS: NameExpr: 'rf'
  18266. \-- Runoff Clause: IfExpr:
  18267. |- Condition: BinOpExpr (Operator='==')
  18268. |- LHS: AccessorExpr (Mode='.')
  18269. |- Object: NameExpr: 'n'
  18270. \- Field: op
  18271. \- RHS: LiteralExpr: type=cstr, value=>=
  18272. |- Body: BlockBody: (N_Statements=1)
  18273. |0- ReturnExpr: CallExpr:
  18274. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18275. \- Arguments: (Len=2)
  18276. |0- AccessorExpr (Mode='.')
  18277. |- Object: NameExpr: 'p'
  18278. \- Field: proj
  18279. \1- BinOpExpr (Operator='>=')
  18280. |- LHS: NameExpr: 'lf'
  18281. \- RHS: NameExpr: 'rf'
  18282. \-- Runoff Clause: IfExpr:
  18283. |- Condition: BinOpExpr (Operator='==')
  18284. |- LHS: AccessorExpr (Mode='.')
  18285. |- Object: NameExpr: 'n'
  18286. \- Field: op
  18287. \- RHS: LiteralExpr: type=cstr, value=<=
  18288. |- Body: BlockBody: (N_Statements=1)
  18289. |0- ReturnExpr: CallExpr:
  18290. |- Method: NameExpr: 'LiteralExpr$$create_direct_bool'
  18291. \- Arguments: (Len=2)
  18292. |0- AccessorExpr (Mode='.')
  18293. |- Object: NameExpr: 'p'
  18294. \- Field: proj
  18295. \1- BinOpExpr (Operator='<=')
  18296. |- LHS: NameExpr: 'lf'
  18297. \- RHS: NameExpr: 'rf'
  18298. \-- Runoff Clause: IfExpr:
  18299. |- Condition: BinOpExpr (Operator='&')
  18300. |- LHS: BinOpExpr (Operator='==')
  18301. |- LHS: AccessorExpr (Mode='.')
  18302. |- Object: NameExpr: 'lhs'
  18303. \- Field: value_type
  18304. \- RHS: LiteralExpr: type=cstr, value=cstr
  18305. \- RHS: BinOpExpr (Operator='==')
  18306. |- LHS: AccessorExpr (Mode='.')
  18307. |- Object: NameExpr: 'rhs'
  18308. \- Field: value_type
  18309. \- RHS: LiteralExpr: type=cstr, value=cstr
  18310. |- Body: BlockBody: (N_Statements=1)
  18311. |0- IfExpr:
  18312. |- Condition: BinOpExpr (Operator='&')
  18313. |- LHS: BinOpExpr (Operator='==')
  18314. |- LHS: AccessorExpr (Mode='.')
  18315. |- Object: NameExpr: 'n'
  18316. \- Field: op
  18317. \- RHS: LiteralExpr: type=cstr, value=+
  18318. \- RHS: UnOpExpr (Operator='-')
  18319. \- Value: CallExpr:
  18320. |- Method: AccessorExpr (Mode=':')
  18321. |- Object: AccessorExpr (Mode='.')
  18322. |- Object: AccessorExpr (Mode='.')
  18323. |- Object: NameExpr: 'p'
  18324. \- Field: proj
  18325. \- Field: options
  18326. \- Field: contains
  18327. \- Arguments: (Len=1)
  18328. \0- LiteralExpr: type=cstr, value=no_str_add_fold
  18329. |- Body: BlockBody: (N_Statements=1)
  18330. |0- ReturnExpr: CallExpr:
  18331. |- Method: NameExpr: 'LiteralExpr$$create_direct'
  18332. \- Arguments: (Len=3)
  18333. |0- AccessorExpr (Mode='.')
  18334. |- Object: NameExpr: 'p'
  18335. \- Field: proj
  18336. |1- LiteralExpr: type=cstr, value=cstr
  18337. \2- BinOpExpr (Operator='+')
  18338. |- LHS: AccessorExpr (Mode='.')
  18339. |- Object: NameExpr: 'lhs'
  18340. \- Field: value
  18341. \- RHS: AccessorExpr (Mode='.')
  18342. |- Object: NameExpr: 'rhs'
  18343. \- Field: value
  18344. \-- Runoff Clause: IfExpr:
  18345. |- Condition: BinOpExpr (Operator='&')
  18346. |- LHS: BinOpExpr (Operator='==')
  18347. |- LHS: AccessorExpr (Mode='.')
  18348. |- Object: NameExpr: 'lhs'
  18349. \- Field: value_type
  18350. \- RHS: LiteralExpr: type=cstr, value=cstr
  18351. \- RHS: BinOpExpr (Operator='==')
  18352. |- LHS: AccessorExpr (Mode='.')
  18353. |- Object: NameExpr: 'rhs'
  18354. \- Field: value_type
  18355. \- RHS: LiteralExpr: type=cstr, value=int
  18356. |- Body: BlockBody: (N_Statements=1)
  18357. |0- IfExpr:
  18358. |- Condition: BinOpExpr (Operator='&')
  18359. |- LHS: BinOpExpr (Operator='==')
  18360. |- LHS: AccessorExpr (Mode='.')
  18361. |- Object: NameExpr: 'n'
  18362. \- Field: op
  18363. \- RHS: LiteralExpr: type=cstr, value=*
  18364. \- RHS: UnOpExpr (Operator='-')
  18365. \- Value: CallExpr:
  18366. |- Method: AccessorExpr (Mode=':')
  18367. |- Object: AccessorExpr (Mode='.')
  18368. |- Object: AccessorExpr (Mode='.')
  18369. |- Object: NameExpr: 'p'
  18370. \- Field: proj
  18371. \- Field: options
  18372. \- Field: contains
  18373. \- Arguments: (Len=1)
  18374. \0- LiteralExpr: type=cstr, value=no_str_mul_fold
  18375. |- Body: BlockBody: (N_Statements=1)
  18376. |0- ReturnExpr: CallExpr:
  18377. |- Method: NameExpr: 'LiteralExpr$$create_direct'
  18378. \- Arguments: (Len=3)
  18379. |0- AccessorExpr (Mode='.')
  18380. |- Object: NameExpr: 'p'
  18381. \- Field: proj
  18382. |1- LiteralExpr: type=cstr, value=cstr
  18383. \2- BinOpExpr (Operator='*')
  18384. |- LHS: AccessorExpr (Mode='.')
  18385. |- Object: NameExpr: 'lhs'
  18386. \- Field: value
  18387. \- RHS: CallExpr:
  18388. |- Method: AccessorExpr (Mode=':')
  18389. |- Object: AccessorExpr (Mode='.')
  18390. |- Object: NameExpr: 'rhs'
  18391. \- Field: value
  18392. \- Field: int
  18393. \- Arguments: (Len=0)
  18394. \1- ReturnExpr: CastExpr (Target='Node')
  18395. \- Value: NameExpr: 'n'
  18396. |2- SepExpr (Consumed=2)
  18397. |3- FunctionDecl:
  18398. |- Head: FunctionDeclHead: Name='fold_constants::init' Type='TransformerPass' Nargs=0
  18399. \0- ReturnExpr: CallExpr:
  18400. |- Method: AccessorExpr (Mode=':')
  18401. |- Object: CallExpr:
  18402. |- Method: NameExpr: 'TransformerPass$$new'
  18403. \- Arguments: (Len=1)
  18404. \0- LiteralExpr: type=cstr, value=fold_constants
  18405. \- Field: add_specialization
  18406. \- Arguments: (Len=2)
  18407. |0- LiteralExpr: type=cstr, value=BinOpExpr
  18408. \1- CastExpr (Target='NodeTransformer')
  18409. \- Value: NameExpr: 'fold_constants$$visit_binop'
  18410. |4- SepExpr (Consumed=1)
  18411. |5- SepExpr (Consumed=1)
  18412. |6- FileNode: (N_Statements=5)
  18413. |0- SepExpr (Consumed=2)
  18414. |1- FunctionDecl:
  18415. |- Head: FunctionDeclHead: Name='elide_groupings::visit_grouping' Type='Node' Nargs=2
  18416. |0- GroupingExpr n
  18417. \1- TransformerPass p
  18418. \0- ReturnExpr: AccessorExpr (Mode='.')
  18419. |- Object: NameExpr: 'n'
  18420. \- Field: contents
  18421. |2- SepExpr (Consumed=2)
  18422. |3- FunctionDecl:
  18423. |- Head: FunctionDeclHead: Name='elide_groupings::init' Type='TransformerPass' Nargs=0
  18424. \0- ReturnExpr: CallExpr:
  18425. |- Method: AccessorExpr (Mode=':')
  18426. |- Object: CallExpr:
  18427. |- Method: NameExpr: 'TransformerPass$$new'
  18428. \- Arguments: (Len=1)
  18429. \0- LiteralExpr: type=cstr, value=elide_groupings
  18430. \- Field: add_specialization
  18431. \- Arguments: (Len=2)
  18432. |0- LiteralExpr: type=cstr, value=GroupingExpr
  18433. \1- CastExpr (Target='NodeTransformer')
  18434. \- Value: NameExpr: 'elide_groupings$$visit_grouping'
  18435. |4- SepExpr (Consumed=1)
  18436. |7- SepExpr (Consumed=1)
  18437. |8- FileNode: (N_Statements=7)
  18438. |0- SepExpr (Consumed=2)
  18439. |1- FunctionDecl:
  18440. |- Head: FunctionDeclHead: Name='elide_branches::visit_if' Type='Node' Nargs=2
  18441. |0- IfExpr n
  18442. \1- TransformerPass p
  18443. |0- IfExpr:
  18444. |- Condition: CallExpr:
  18445. |- Method: AccessorExpr (Mode=':')
  18446. |- Object: AccessorExpr (Mode='.')
  18447. |- Object: NameExpr: 'n'
  18448. \- Field: condition
  18449. \- Field: is_a
  18450. \- Arguments: (Len=1)
  18451. \0- LiteralExpr: type=cstr, value=LiteralExpr
  18452. |- Body: BlockBody: (N_Statements=2)
  18453. |0- AssignmentExpr (Operator='=')
  18454. |- LHS: DeclExpr: 'LiteralExpr lit'
  18455. \- RHS: CastExpr (Target='LiteralExpr')
  18456. \- Value: AccessorExpr (Mode='.')
  18457. |- Object: NameExpr: 'n'
  18458. \- Field: condition
  18459. |1- IfExpr:
  18460. |- Condition: CallExpr:
  18461. |- Method: AccessorExpr (Mode=':')
  18462. |- Object: BinOpExpr (Operator='==')
  18463. |- LHS: AccessorExpr (Mode='.')
  18464. |- Object: NameExpr: 'lit'
  18465. \- Field: value_type
  18466. \- RHS: LiteralExpr: type=cstr, value=int
  18467. \- Field: or
  18468. \- Arguments: (Len=1)
  18469. \0- BinOpExpr (Operator='==')
  18470. |- LHS: AccessorExpr (Mode='.')
  18471. |- Object: NameExpr: 'lit'
  18472. \- Field: value_type
  18473. \- RHS: LiteralExpr: type=cstr, value=bool
  18474. |- Body: BlockBody: (N_Statements=1)
  18475. |0- IfExpr:
  18476. |- Condition: BinOpExpr (Operator='!=')
  18477. |- LHS: CallExpr:
  18478. |- Method: AccessorExpr (Mode=':')
  18479. |- Object: AccessorExpr (Mode='.')
  18480. |- Object: NameExpr: 'lit'
  18481. \- Field: value
  18482. \- Field: int
  18483. \- Arguments: (Len=0)
  18484. \- RHS: LiteralExpr: type=int, value=0
  18485. |- Body: BlockBody: (N_Statements=1)
  18486. |0- ReturnExpr: CastExpr (Target='Node')
  18487. \- Value: CallExpr:
  18488. |- Method: NameExpr: 'BlockBody$$create_direct'
  18489. \- Arguments: (Len=2)
  18490. |0- AccessorExpr (Mode='.')
  18491. |- Object: NameExpr: 'p'
  18492. \- Field: proj
  18493. \1- AccessorExpr (Mode='.')
  18494. |- Object: AccessorExpr (Mode='.')
  18495. |- Object: NameExpr: 'n'
  18496. \- Field: body
  18497. \- Field: statements
  18498. \-- Runoff Clause: BlockBody: (N_Statements=1)
  18499. |0- IfExpr:
  18500. |- Condition: AccessorExpr (Mode='.')
  18501. |- Object: AccessorExpr (Mode='.')
  18502. |- Object: NameExpr: 'n'
  18503. \- Field: body
  18504. \- Field: has_runoff_clause
  18505. |- Body: BlockBody: (N_Statements=1)
  18506. |0- IfExpr:
  18507. |- Condition: CallExpr:
  18508. |- Method: AccessorExpr (Mode=':')
  18509. |- Object: AccessorExpr (Mode='.')
  18510. |- Object: AccessorExpr (Mode='.')
  18511. |- Object: NameExpr: 'n'
  18512. \- Field: body
  18513. \- Field: runoff_clause
  18514. \- Field: is_a
  18515. \- Arguments: (Len=1)
  18516. \0- LiteralExpr: type=cstr, value=BlockBody
  18517. |- Body: BlockBody: (N_Statements=1)
  18518. |0- ReturnExpr: CastExpr (Target='Node')
  18519. \- Value: CallExpr:
  18520. |- Method: NameExpr: 'BlockBody$$create_direct'
  18521. \- Arguments: (Len=2)
  18522. |0- AccessorExpr (Mode='.')
  18523. |- Object: NameExpr: 'p'
  18524. \- Field: proj
  18525. \1- AccessorExpr (Mode='.')
  18526. |- Object: CastExpr (Target='BlockBody')
  18527. \- Value: AccessorExpr (Mode='.')
  18528. |- Object: AccessorExpr (Mode='.')
  18529. |- Object: NameExpr: 'n'
  18530. \- Field: body
  18531. \- Field: runoff_clause
  18532. \- Field: statements
  18533. \-- Runoff Clause: BlockBody: (N_Statements=1)
  18534. |0- ReturnExpr: CastExpr (Target='Node')
  18535. \- Value: LiteralExpr: type=ptr, value=0
  18536. \1- ReturnExpr: CastExpr (Target='Node')
  18537. \- Value: NameExpr: 'n'
  18538. |2- SepExpr (Consumed=2)
  18539. |3- FunctionDecl:
  18540. |- Head: FunctionDeclHead: Name='elide_branches::visit_while' Type='Node' Nargs=2
  18541. |0- WhileExpr n
  18542. \1- TransformerPass p
  18543. |0- IfExpr:
  18544. |- Condition: CallExpr:
  18545. |- Method: AccessorExpr (Mode=':')
  18546. |- Object: AccessorExpr (Mode='.')
  18547. |- Object: NameExpr: 'n'
  18548. \- Field: condition
  18549. \- Field: is_a
  18550. \- Arguments: (Len=1)
  18551. \0- LiteralExpr: type=cstr, value=LiteralExpr
  18552. |- Body: BlockBody: (N_Statements=2)
  18553. |0- AssignmentExpr (Operator='=')
  18554. |- LHS: DeclExpr: 'LiteralExpr lit'
  18555. \- RHS: CastExpr (Target='LiteralExpr')
  18556. \- Value: AccessorExpr (Mode='.')
  18557. |- Object: NameExpr: 'n'
  18558. \- Field: condition
  18559. |1- IfExpr:
  18560. |- Condition: BinOpExpr (Operator='==')
  18561. |- LHS: AccessorExpr (Mode='.')
  18562. |- Object: NameExpr: 'lit'
  18563. \- Field: value_type
  18564. \- RHS: LiteralExpr: type=cstr, value=int
  18565. |- Body: BlockBody: (N_Statements=1)
  18566. |0- IfExpr:
  18567. |- Condition: BinOpExpr (Operator='==')
  18568. |- LHS: CallExpr:
  18569. |- Method: AccessorExpr (Mode=':')
  18570. |- Object: AccessorExpr (Mode='.')
  18571. |- Object: NameExpr: 'lit'
  18572. \- Field: value
  18573. \- Field: int
  18574. \- Arguments: (Len=0)
  18575. \- RHS: LiteralExpr: type=int, value=0
  18576. |- Body: BlockBody: (N_Statements=1)
  18577. |0- ReturnExpr: CastExpr (Target='Node')
  18578. \- Value: LiteralExpr: type=ptr, value=0
  18579. \1- ReturnExpr: CastExpr (Target='Node')
  18580. \- Value: NameExpr: 'n'
  18581. |4- SepExpr (Consumed=2)
  18582. |5- FunctionDecl:
  18583. |- Head: FunctionDeclHead: Name='elide_branches::init' Type='TransformerPass' Nargs=0
  18584. \0- ReturnExpr: CallExpr:
  18585. |- Method: AccessorExpr (Mode=':')
  18586. |- Object: CallExpr:
  18587. |- Method: AccessorExpr (Mode=':')
  18588. |- Object: CallExpr:
  18589. |- Method: NameExpr: 'TransformerPass$$new'
  18590. \- Arguments: (Len=1)
  18591. \0- LiteralExpr: type=cstr, value=elide_branches
  18592. \- Field: add_specialization
  18593. \- Arguments: (Len=2)
  18594. |0- LiteralExpr: type=cstr, value=IfExpr
  18595. \1- CastExpr (Target='NodeTransformer')
  18596. \- Value: NameExpr: 'elide_branches$$visit_if'
  18597. \- Field: add_specialization
  18598. \- Arguments: (Len=2)
  18599. |0- LiteralExpr: type=cstr, value=WhileExpr
  18600. \1- CastExpr (Target='NodeTransformer')
  18601. \- Value: NameExpr: 'elide_branches$$visit_while'
  18602. |6- SepExpr (Consumed=1)
  18603. |9- SepExpr (Consumed=1)
  18604. |10- FileNode: (N_Statements=7)
  18605. |0- SepExpr (Consumed=1)
  18606. |1- FileNode: (N_Statements=6)
  18607. |0- SepExpr (Consumed=1)
  18608. |1- SepExpr (Consumed=2)
  18609. |2- FunctionDecl:
  18610. |- Head: FunctionDeclHead: Name='shoc::resolve_name_import' Type='cstr' Nargs=2
  18611. |0- List path
  18612. \1- cstr import_name
  18613. |0- AssignmentExpr (Operator='=')
  18614. |- LHS: DeclExpr: 'int i'
  18615. \- RHS: LiteralExpr: type=int, value=0
  18616. |1- DeclExpr: 'cstr path_attempt'
  18617. |2- WhileExpr:
  18618. |- Condition: BinOpExpr (Operator='<')
  18619. |- LHS: NameExpr: 'i'
  18620. \- RHS: AccessorExpr (Mode='.')
  18621. |- Object: NameExpr: 'path'
  18622. \- Field: len
  18623. |- Body: BlockBody: (N_Statements=5)
  18624. |0- AssignmentExpr (Operator='=')
  18625. |- LHS: NameExpr: 'path_attempt'
  18626. \- RHS: BinOpExpr (Operator='+')
  18627. |- LHS: CastExpr (Target='cstr')
  18628. \- Value: CallExpr:
  18629. |- Method: AccessorExpr (Mode=':')
  18630. |- Object: NameExpr: 'path'
  18631. \- Field: get
  18632. \- Arguments: (Len=1)
  18633. \0- NameExpr: 'i'
  18634. \- RHS: BinOpExpr (Operator='+')
  18635. |- LHS: LiteralExpr: type=cstr, value=/
  18636. \- RHS: BinOpExpr (Operator='+')
  18637. |- LHS: NameExpr: 'import_name'
  18638. \- RHS: LiteralExpr: type=cstr, value=.ort
  18639. |1- IfExpr:
  18640. |- Condition: CallExpr:
  18641. |- Method: NameExpr: 'File$$exists'
  18642. \- Arguments: (Len=1)
  18643. \0- NameExpr: 'path_attempt'
  18644. |- Body: BlockBody: (N_Statements=1)
  18645. |0- ReturnExpr: NameExpr: 'path_attempt'
  18646. |2- AssignmentExpr (Operator='=')
  18647. |- LHS: NameExpr: 'path_attempt'
  18648. \- RHS: BinOpExpr (Operator='+')
  18649. |- LHS: CastExpr (Target='cstr')
  18650. \- Value: CallExpr:
  18651. |- Method: AccessorExpr (Mode=':')
  18652. |- Object: NameExpr: 'path'
  18653. \- Field: get
  18654. \- Arguments: (Len=1)
  18655. \0- NameExpr: 'i'
  18656. \- RHS: BinOpExpr (Operator='+')
  18657. |- LHS: LiteralExpr: type=cstr, value=/
  18658. \- RHS: BinOpExpr (Operator='+')
  18659. |- LHS: NameExpr: 'import_name'
  18660. \- RHS: LiteralExpr: type=cstr, value=/__init__.ort
  18661. |3- IfExpr:
  18662. |- Condition: CallExpr:
  18663. |- Method: NameExpr: 'File$$exists'
  18664. \- Arguments: (Len=1)
  18665. \0- NameExpr: 'path_attempt'
  18666. |- Body: BlockBody: (N_Statements=1)
  18667. |0- ReturnExpr: NameExpr: 'path_attempt'
  18668. |4- AssignmentExpr (Operator='+=')
  18669. |- LHS: NameExpr: 'i'
  18670. \- RHS: LiteralExpr: type=int, value=1
  18671. |3- CallExpr:
  18672. |- Method: NameExpr: 'shoc$$bail_out'
  18673. \- Arguments: (Len=1)
  18674. \0- BinOpExpr (Operator='+')
  18675. |- LHS: LiteralExpr: type=cstr, value=Can't resolve bare-name import of:
  18676. \- RHS: NameExpr: 'import_name'
  18677. \4- ReturnExpr: LiteralExpr: type=cstr, value=
  18678. |3- SepExpr (Consumed=2)
  18679. |4- FunctionDecl:
  18680. |- Head: FunctionDeclHead: Name='shoc::resolve_absolute_import' Type='cstr' Nargs=1
  18681. \0- cstr path
  18682. |0- AssignmentExpr (Operator='=')
  18683. |- LHS: DeclExpr: 'cstr ret'
  18684. \- RHS: BinOpExpr (Operator='+')
  18685. |- LHS: CallExpr:
  18686. |- Method: NameExpr: 'os$$get_cwd'
  18687. \- Arguments: (Len=0)
  18688. \- RHS: BinOpExpr (Operator='+')
  18689. |- LHS: LiteralExpr: type=cstr, value=/
  18690. \- RHS: NameExpr: 'path'
  18691. |1- IfExpr:
  18692. |- Condition: UnOpExpr (Operator='-')
  18693. \- Value: CallExpr:
  18694. |- Method: NameExpr: 'File$$exists'
  18695. \- Arguments: (Len=1)
  18696. \0- NameExpr: 'ret'
  18697. |- Body: BlockBody: (N_Statements=1)
  18698. |0- CallExpr:
  18699. |- Method: NameExpr: 'shoc$$bail_out'
  18700. \- Arguments: (Len=1)
  18701. \0- BinOpExpr (Operator='+')
  18702. |- LHS: LiteralExpr: type=cstr, value=Can't resolve quoted-path import of:
  18703. \- RHS: NameExpr: 'path'
  18704. \2- ReturnExpr: NameExpr: 'ret'
  18705. |5- SepExpr (Consumed=1)
  18706. |2- SepExpr (Consumed=2)
  18707. |3- FunctionDecl:
  18708. |- Head: FunctionDeclHead: Name='apply_includes::visit_import' Type='Node' Nargs=2
  18709. |0- ImportStmt n
  18710. \1- TransformerPass p
  18711. |0- DeclExpr: 'cstr path'
  18712. |1- IfExpr:
  18713. |- Condition: CallExpr:
  18714. |- Method: AccessorExpr (Mode=':')
  18715. |- Object: AccessorExpr (Mode='.')
  18716. |- Object: NameExpr: 'n'
  18717. \- Field: name
  18718. \- Field: contains
  18719. \- Arguments: (Len=1)
  18720. \0- LiteralExpr: type=cstr, value=\x22
  18721. |- Body: BlockBody: (N_Statements=3)
  18722. |0- AssignmentExpr (Operator='=')
  18723. |- LHS: DeclExpr: 'int start'
  18724. \- RHS: CallExpr:
  18725. |- Method: AccessorExpr (Mode=':')
  18726. |- Object: AccessorExpr (Mode='.')
  18727. |- Object: NameExpr: 'n'
  18728. \- Field: name
  18729. \- Field: find
  18730. \- Arguments: (Len=1)
  18731. \0- LiteralExpr: type=cstr, value=\x22
  18732. |1- AssignmentExpr (Operator='=')
  18733. |- LHS: DeclExpr: 'int end'
  18734. \- RHS: CallExpr:
  18735. |- Method: AccessorExpr (Mode=':')
  18736. |- Object: CallExpr:
  18737. |- Method: AccessorExpr (Mode=':')
  18738. |- Object: AccessorExpr (Mode='.')
  18739. |- Object: NameExpr: 'n'
  18740. \- Field: name
  18741. \- Field: offset
  18742. \- Arguments: (Len=1)
  18743. \0- BinOpExpr (Operator='+')
  18744. |- LHS: NameExpr: 'start'
  18745. \- RHS: LiteralExpr: type=int, value=1
  18746. \- Field: find
  18747. \- Arguments: (Len=1)
  18748. \0- LiteralExpr: type=cstr, value=\x22
  18749. |2- AssignmentExpr (Operator='=')
  18750. |- LHS: NameExpr: 'path'
  18751. \- RHS: CallExpr:
  18752. |- Method: NameExpr: 'shoc$$resolve_absolute_import'
  18753. \- Arguments: (Len=1)
  18754. \0- CallExpr:
  18755. |- Method: AccessorExpr (Mode=':')
  18756. |- Object: AccessorExpr (Mode='.')
  18757. |- Object: NameExpr: 'n'
  18758. \- Field: name
  18759. \- Field: substr
  18760. \- Arguments: (Len=2)
  18761. |0- BinOpExpr (Operator='+')
  18762. |- LHS: NameExpr: 'start'
  18763. \- RHS: LiteralExpr: type=int, value=1
  18764. \1- NameExpr: 'end'
  18765. \-- Runoff Clause: BlockBody: (N_Statements=1)
  18766. |0- AssignmentExpr (Operator='=')
  18767. |- LHS: NameExpr: 'path'
  18768. \- RHS: CallExpr:
  18769. |- Method: NameExpr: 'shoc$$resolve_name_import'
  18770. \- Arguments: (Len=2)
  18771. |0- AccessorExpr (Mode='.')
  18772. |- Object: AccessorExpr (Mode='.')
  18773. |- Object: NameExpr: 'p'
  18774. \- Field: proj
  18775. \- Field: search_path
  18776. \1- CallExpr:
  18777. |- Method: AccessorExpr (Mode=':')
  18778. |- Object: AccessorExpr (Mode='.')
  18779. |- Object: NameExpr: 'n'
  18780. \- Field: name
  18781. \- Field: substr
  18782. \- Arguments: (Len=2)
  18783. |0- BinOpExpr (Operator='+')
  18784. |- LHS: CallExpr:
  18785. |- Method: AccessorExpr (Mode=':')
  18786. |- Object: AccessorExpr (Mode='.')
  18787. |- Object: NameExpr: 'n'
  18788. \- Field: name
  18789. \- Field: find
  18790. \- Arguments: (Len=1)
  18791. \0- LiteralExpr: type=cstr, value=
  18792. \- RHS: LiteralExpr: type=int, value=1
  18793. \1- BinOpExpr (Operator='-')
  18794. |- LHS: CallExpr:
  18795. |- Method: AccessorExpr (Mode=':')
  18796. |- Object: AccessorExpr (Mode='.')
  18797. |- Object: NameExpr: 'n'
  18798. \- Field: name
  18799. \- Field: len
  18800. \- Arguments: (Len=0)
  18801. \- RHS: BinOpExpr (Operator='+')
  18802. |- LHS: CallExpr:
  18803. |- Method: AccessorExpr (Mode=':')
  18804. |- Object: AccessorExpr (Mode='.')
  18805. |- Object: NameExpr: 'n'
  18806. \- Field: name
  18807. \- Field: find
  18808. \- Arguments: (Len=1)
  18809. \0- LiteralExpr: type=cstr, value=
  18810. \- RHS: LiteralExpr: type=int, value=1
  18811. |2- AssignmentExpr (Operator='=')
  18812. |- LHS: DeclExpr: 'int i'
  18813. \- RHS: LiteralExpr: type=int, value=0
  18814. |3- WhileExpr:
  18815. |- Condition: BinOpExpr (Operator='<')
  18816. |- LHS: NameExpr: 'i'
  18817. \- RHS: AccessorExpr (Mode='.')
  18818. |- Object: AccessorExpr (Mode='.')
  18819. |- Object: AccessorExpr (Mode='.')
  18820. |- Object: NameExpr: 'p'
  18821. \- Field: proj
  18822. \- Field: included_files
  18823. \- Field: len
  18824. |- Body: BlockBody: (N_Statements=2)
  18825. |0- IfExpr:
  18826. |- Condition: BinOpExpr (Operator='==')
  18827. |- LHS: CastExpr (Target='cstr')
  18828. \- Value: CallExpr:
  18829. |- Method: AccessorExpr (Mode=':')
  18830. |- Object: AccessorExpr (Mode='.')
  18831. |- Object: AccessorExpr (Mode='.')
  18832. |- Object: NameExpr: 'p'
  18833. \- Field: proj
  18834. \- Field: included_files
  18835. \- Field: get
  18836. \- Arguments: (Len=1)
  18837. \0- NameExpr: 'i'
  18838. \- RHS: NameExpr: 'path'
  18839. |- Body: BlockBody: (N_Statements=1)
  18840. |0- ReturnExpr: CastExpr (Target='Node')
  18841. \- Value: LiteralExpr: type=ptr, value=0
  18842. |1- AssignmentExpr (Operator='+=')
  18843. |- LHS: NameExpr: 'i'
  18844. \- RHS: LiteralExpr: type=int, value=1
  18845. |4- CallExpr:
  18846. |- Method: AccessorExpr (Mode=':')
  18847. |- Object: AccessorExpr (Mode='.')
  18848. |- Object: AccessorExpr (Mode='.')
  18849. |- Object: NameExpr: 'p'
  18850. \- Field: proj
  18851. \- Field: included_files
  18852. \- Field: append
  18853. \- Arguments: (Len=1)
  18854. \0- NameExpr: 'path'
  18855. |5- AssignmentExpr (Operator='=')
  18856. |- LHS: DeclExpr: 'File fd'
  18857. \- RHS: CallExpr:
  18858. |- Method: NameExpr: 'File$$open'
  18859. \- Arguments: (Len=2)
  18860. |0- NameExpr: 'path'
  18861. \1- LiteralExpr: type=cstr, value=r
  18862. |6- AssignmentExpr (Operator='=')
  18863. |- LHS: DeclExpr: 'cstr text'
  18864. \- RHS: CallExpr:
  18865. |- Method: AccessorExpr (Mode=':')
  18866. |- Object: NameExpr: 'fd'
  18867. \- Field: readall
  18868. \- Arguments: (Len=0)
  18869. |7- CallExpr:
  18870. |- Method: AccessorExpr (Mode=':')
  18871. |- Object: NameExpr: 'fd'
  18872. \- Field: close
  18873. \- Arguments: (Len=0)
  18874. \8- ReturnExpr: CallExpr:
  18875. |- Method: AccessorExpr (Mode=':')
  18876. |- Object: AccessorExpr (Mode='.')
  18877. |- Object: NameExpr: 'p'
  18878. \- Field: proj
  18879. \- Field: process_text
  18880. \- Arguments: (Len=1)
  18881. \0- NameExpr: 'text'
  18882. |4- SepExpr (Consumed=2)
  18883. |5- FunctionDecl:
  18884. |- Head: FunctionDeclHead: Name='apply_includes::init' Type='TransformerPass' Nargs=0
  18885. \0- ReturnExpr: CallExpr:
  18886. |- Method: AccessorExpr (Mode=':')
  18887. |- Object: CallExpr:
  18888. |- Method: NameExpr: 'TransformerPass$$new'
  18889. \- Arguments: (Len=1)
  18890. \0- LiteralExpr: type=cstr, value=apply_includes
  18891. \- Field: add_specialization
  18892. \- Arguments: (Len=2)
  18893. |0- LiteralExpr: type=cstr, value=ImportStmt
  18894. \1- CastExpr (Target='NodeTransformer')
  18895. \- Value: NameExpr: 'apply_includes$$visit_import'
  18896. |6- SepExpr (Consumed=1)
  18897. |11- SepExpr (Consumed=1)
  18898. |12- FileNode: (N_Statements=5)
  18899. |0- SepExpr (Consumed=2)
  18900. |1- FunctionDecl:
  18901. |- Head: FunctionDeclHead: Name='strip_seps::visit_sep' Type='Node' Nargs=2
  18902. |0- SepExpr n
  18903. \1- TransformerPass p
  18904. \0- ReturnExpr: CastExpr (Target='Node')
  18905. \- Value: LiteralExpr: type=ptr, value=0
  18906. |2- SepExpr (Consumed=2)
  18907. |3- FunctionDecl:
  18908. |- Head: FunctionDeclHead: Name='strip_seps::init' Type='TransformerPass' Nargs=0
  18909. \0- ReturnExpr: CallExpr:
  18910. |- Method: AccessorExpr (Mode=':')
  18911. |- Object: CallExpr:
  18912. |- Method: NameExpr: 'TransformerPass$$new'
  18913. \- Arguments: (Len=1)
  18914. \0- LiteralExpr: type=cstr, value=strip_seps
  18915. \- Field: add_specialization
  18916. \- Arguments: (Len=2)
  18917. |0- LiteralExpr: type=cstr, value=SepExpr
  18918. \1- CastExpr (Target='NodeTransformer')
  18919. \- Value: NameExpr: 'strip_seps$$visit_sep'
  18920. |4- SepExpr (Consumed=1)
  18921. |13- SepExpr (Consumed=2)
  18922. |14- FileNode: (N_Statements=5)
  18923. |0- SepExpr (Consumed=2)
  18924. |1- FunctionDecl:
  18925. |- Head: FunctionDeclHead: Name='predefine_types::visit_type' Type='TypeDecl' Nargs=2
  18926. |0- TypeDecl n
  18927. \1- TransformerPass p
  18928. |0- CallExpr:
  18929. |- Method: AccessorExpr (Mode=':')
  18930. |- Object: AccessorExpr (Mode='.')
  18931. |- Object: NameExpr: 'p'
  18932. \- Field: proj
  18933. \- Field: add_Type
  18934. \- Arguments: (Len=1)
  18935. \0- CallExpr:
  18936. |- Method: NameExpr: 'StructOType$$new'
  18937. \- Arguments: (Len=1)
  18938. \0- AccessorExpr (Mode='.')
  18939. |- Object: AccessorExpr (Mode='.')
  18940. |- Object: NameExpr: 'n'
  18941. \- Field: head
  18942. \- Field: name
  18943. \1- ReturnExpr: NameExpr: 'n'
  18944. |2- SepExpr (Consumed=2)
  18945. |3- FunctionDecl:
  18946. |- Head: FunctionDeclHead: Name='predefine_types::init' Type='TransformerPass' Nargs=0
  18947. \0- ReturnExpr: CallExpr:
  18948. |- Method: AccessorExpr (Mode=':')
  18949. |- Object: CallExpr:
  18950. |- Method: NameExpr: 'TransformerPass$$new'
  18951. \- Arguments: (Len=1)
  18952. \0- LiteralExpr: type=cstr, value=predefine_types
  18953. \- Field: add_specialization
  18954. \- Arguments: (Len=2)
  18955. |0- LiteralExpr: type=cstr, value=TypeDecl
  18956. \1- CastExpr (Target='NodeTransformer')
  18957. \- Value: NameExpr: 'predefine_types$$visit_type'
  18958. |4- SepExpr (Consumed=1)
  18959. |15- SepExpr (Consumed=1)
  18960. |16- FileNode: (N_Statements=7)
  18961. |0- SepExpr (Consumed=2)
  18962. |1- FunctionDecl:
  18963. |- Head: FunctionDeclHead: Name='define_types::visit_type' Type='TypeDecl' Nargs=2
  18964. |0- TypeDecl n
  18965. \1- TransformerPass p
  18966. |0- AssignmentExpr (Operator='=')
  18967. |- LHS: DeclExpr: 'int i'
  18968. \- RHS: LiteralExpr: type=int, value=0
  18969. |1- DeclExpr: 'Node st'
  18970. |2- WhileExpr:
  18971. |- Condition: BinOpExpr (Operator='<')
  18972. |- LHS: NameExpr: 'i'
  18973. \- RHS: AccessorExpr (Mode='.')
  18974. |- Object: AccessorExpr (Mode='.')
  18975. |- Object: AccessorExpr (Mode='.')
  18976. |- Object: NameExpr: 'n'
  18977. \- Field: body
  18978. \- Field: statements
  18979. \- Field: len
  18980. |- Body: BlockBody: (N_Statements=3)
  18981. |0- AssignmentExpr (Operator='=')
  18982. |- LHS: NameExpr: 'st'
  18983. \- RHS: CallExpr:
  18984. |- Method: AccessorExpr (Mode=':')
  18985. |- Object: AccessorExpr (Mode='.')
  18986. |- Object: AccessorExpr (Mode='.')
  18987. |- Object: NameExpr: 'n'
  18988. \- Field: body
  18989. \- Field: statements
  18990. \- Field: get_Node
  18991. \- Arguments: (Len=1)
  18992. \0- NameExpr: 'i'
  18993. |1- IfExpr:
  18994. |- Condition: CallExpr:
  18995. |- Method: AccessorExpr (Mode=':')
  18996. |- Object: NameExpr: 'st'
  18997. \- Field: is_a
  18998. \- Arguments: (Len=1)
  18999. \0- LiteralExpr: type=cstr, value=DeclExpr
  19000. |- Body: BlockBody: (N_Statements=1)
  19001. |0- CallExpr:
  19002. |- Method: AccessorExpr (Mode=':')
  19003. |- Object: AccessorExpr (Mode='.')
  19004. |- Object: CastExpr (Target='StructOType')
  19005. \- Value: CallExpr:
  19006. |- Method: AccessorExpr (Mode=':')
  19007. |- Object: AccessorExpr (Mode='.')
  19008. |- Object: NameExpr: 'p'
  19009. \- Field: proj
  19010. \- Field: get_type
  19011. \- Arguments: (Len=1)
  19012. \0- AccessorExpr (Mode='.')
  19013. |- Object: AccessorExpr (Mode='.')
  19014. |- Object: NameExpr: 'n'
  19015. \- Field: head
  19016. \- Field: name
  19017. \- Field: fields
  19018. \- Field: append
  19019. \- Arguments: (Len=1)
  19020. \0- AccessorExpr (Mode='.')
  19021. |- Object: CastExpr (Target='DeclExpr')
  19022. \- Value: NameExpr: 'st'
  19023. \- Field: name
  19024. |2- AssignmentExpr (Operator='+=')
  19025. |- LHS: NameExpr: 'i'
  19026. \- RHS: LiteralExpr: type=int, value=1
  19027. \3- ReturnExpr: NameExpr: 'n'
  19028. |2- SepExpr (Consumed=2)
  19029. |3- FunctionDecl:
  19030. |- Head: FunctionDeclHead: Name='define_types::visit_alias' Type='TypeDeclHead' Nargs=2
  19031. |0- TypeDeclHead n
  19032. \1- TransformerPass p
  19033. |0- IfExpr:
  19034. |- Condition: BinOpExpr (Operator='&')
  19035. |- LHS: UnOpExpr (Operator='-')
  19036. \- Value: AccessorExpr (Mode='.')
  19037. |- Object: NameExpr: 'n'
  19038. \- Field: is_type_alias
  19039. \- RHS: UnOpExpr (Operator='-')
  19040. \- Value: AccessorExpr (Mode='.')
  19041. |- Object: NameExpr: 'n'
  19042. \- Field: is_func_alias
  19043. |- Body: BlockBody: (N_Statements=1)
  19044. |0- CallExpr:
  19045. |- Method: NameExpr: 'shoc$$bail_out'
  19046. \- Arguments: (Len=1)
  19047. \0- BinOpExpr (Operator='+')
  19048. |- LHS: LiteralExpr: type=cstr, value=Malformed typedecl
  19049. \- RHS: BinOpExpr (Operator='+')
  19050. |- LHS: AccessorExpr (Mode='.')
  19051. |- Object: NameExpr: 'n'
  19052. \- Field: name
  19053. \- RHS: LiteralExpr: type=cstr, value=... head only
  19054. |1- IfExpr:
  19055. |- Condition: UnOpExpr (Operator='-')
  19056. \- Value: CallExpr:
  19057. |- Method: AccessorExpr (Mode=':')
  19058. |- Object: AccessorExpr (Mode='.')
  19059. |- Object: AccessorExpr (Mode='.')
  19060. |- Object: NameExpr: 'p'
  19061. \- Field: proj
  19062. \- Field: types
  19063. \- Field: contains
  19064. \- Arguments: (Len=1)
  19065. \0- AccessorExpr (Mode='.')
  19066. |- Object: NameExpr: 'n'
  19067. \- Field: alias_type
  19068. |- Body: BlockBody: (N_Statements=1)
  19069. |0- CallExpr:
  19070. |- Method: NameExpr: 'shoc$$bail_out'
  19071. \- Arguments: (Len=1)
  19072. \0- BinOpExpr (Operator='+')
  19073. |- LHS: LiteralExpr: type=cstr, value=No such type
  19074. \- RHS: BinOpExpr (Operator='+')
  19075. |- LHS: AccessorExpr (Mode='.')
  19076. |- Object: NameExpr: 'n'
  19077. \- Field: alias_type
  19078. \- RHS: BinOpExpr (Operator='+')
  19079. |- LHS: LiteralExpr: type=cstr, value= for RT of FPtr in define_types::visit_alias, atype=
  19080. \- RHS: AccessorExpr (Mode='.')
  19081. |- Object: NameExpr: 'n'
  19082. \- Field: name
  19083. |2- CallExpr:
  19084. |- Method: AccessorExpr (Mode=':')
  19085. |- Object: AccessorExpr (Mode='.')
  19086. |- Object: NameExpr: 'p'
  19087. \- Field: proj
  19088. \- Field: add_Type
  19089. \- Arguments: (Len=1)
  19090. \0- CallExpr:
  19091. |- Method: NameExpr: 'FPtrOType$$new'
  19092. \- Arguments: (Len=2)
  19093. |0- AccessorExpr (Mode='.')
  19094. |- Object: NameExpr: 'n'
  19095. \- Field: name
  19096. \1- CallExpr:
  19097. |- Method: AccessorExpr (Mode=':')
  19098. |- Object: AccessorExpr (Mode='.')
  19099. |- Object: NameExpr: 'p'
  19100. \- Field: proj
  19101. \- Field: get_type
  19102. \- Arguments: (Len=1)
  19103. \0- AccessorExpr (Mode='.')
  19104. |- Object: NameExpr: 'n'
  19105. \- Field: alias_type
  19106. \3- ReturnExpr: NameExpr: 'n'
  19107. |4- SepExpr (Consumed=2)
  19108. |5- FunctionDecl:
  19109. |- Head: FunctionDeclHead: Name='define_types::init' Type='TransformerPass' Nargs=0
  19110. \0- ReturnExpr: CallExpr:
  19111. |- Method: AccessorExpr (Mode=':')
  19112. |- Object: CallExpr:
  19113. |- Method: AccessorExpr (Mode=':')
  19114. |- Object: CallExpr:
  19115. |- Method: NameExpr: 'TransformerPass$$new'
  19116. \- Arguments: (Len=1)
  19117. \0- LiteralExpr: type=cstr, value=define_types
  19118. \- Field: add_specialization
  19119. \- Arguments: (Len=2)
  19120. |0- LiteralExpr: type=cstr, value=TypeDecl
  19121. \1- CastExpr (Target='NodeTransformer')
  19122. \- Value: NameExpr: 'define_types$$visit_type'
  19123. \- Field: add_specialization
  19124. \- Arguments: (Len=2)
  19125. |0- LiteralExpr: type=cstr, value=TypeDeclHead
  19126. \1- CastExpr (Target='NodeTransformer')
  19127. \- Value: NameExpr: 'define_types$$visit_alias'
  19128. |6- SepExpr (Consumed=1)
  19129. |17- SepExpr (Consumed=2)
  19130. |18- FunctionDecl:
  19131. |- Head: FunctionDeclHead: Name='shoc::transformers::init' Type='void' Nargs=1
  19132. \0- Project p
  19133. |0- CallExpr:
  19134. |- Method: AccessorExpr (Mode=':')
  19135. |- Object: NameExpr: 'p'
  19136. \- Field: add_Transformer
  19137. \- Arguments: (Len=1)
  19138. \0- CallExpr:
  19139. |- Method: NameExpr: 'apply_includes$$init'
  19140. \- Arguments: (Len=0)
  19141. |1- CallExpr:
  19142. |- Method: AccessorExpr (Mode=':')
  19143. |- Object: NameExpr: 'p'
  19144. \- Field: add_Transformer
  19145. \- Arguments: (Len=1)
  19146. \0- CallExpr:
  19147. |- Method: NameExpr: 'rewrite_namespaces$$init'
  19148. \- Arguments: (Len=0)
  19149. |2- CallExpr:
  19150. |- Method: AccessorExpr (Mode=':')
  19151. |- Object: NameExpr: 'p'
  19152. \- Field: add_Transformer
  19153. \- Arguments: (Len=1)
  19154. \0- CallExpr:
  19155. |- Method: NameExpr: 'elide_groupings$$init'
  19156. \- Arguments: (Len=0)
  19157. |3- CallExpr:
  19158. |- Method: AccessorExpr (Mode=':')
  19159. |- Object: NameExpr: 'p'
  19160. \- Field: add_Transformer
  19161. \- Arguments: (Len=1)
  19162. \0- CallExpr:
  19163. |- Method: NameExpr: 'fold_constants$$init'
  19164. \- Arguments: (Len=0)
  19165. |4- CallExpr:
  19166. |- Method: AccessorExpr (Mode=':')
  19167. |- Object: NameExpr: 'p'
  19168. \- Field: add_Transformer
  19169. \- Arguments: (Len=1)
  19170. \0- CallExpr:
  19171. |- Method: NameExpr: 'elide_branches$$init'
  19172. \- Arguments: (Len=0)
  19173. |5- CallExpr:
  19174. |- Method: AccessorExpr (Mode=':')
  19175. |- Object: NameExpr: 'p'
  19176. \- Field: add_Transformer
  19177. \- Arguments: (Len=1)
  19178. \0- CallExpr:
  19179. |- Method: NameExpr: 'strip_seps$$init'
  19180. \- Arguments: (Len=0)
  19181. |6- CallExpr:
  19182. |- Method: AccessorExpr (Mode=':')
  19183. |- Object: NameExpr: 'p'
  19184. \- Field: add_Transformer
  19185. \- Arguments: (Len=1)
  19186. \0- CallExpr:
  19187. |- Method: NameExpr: 'predefine_types$$init'
  19188. \- Arguments: (Len=0)
  19189. |7- CallExpr:
  19190. |- Method: AccessorExpr (Mode=':')
  19191. |- Object: NameExpr: 'p'
  19192. \- Field: add_Transformer
  19193. \- Arguments: (Len=1)
  19194. \0- CallExpr:
  19195. |- Method: NameExpr: 'define_types$$init'
  19196. \- Arguments: (Len=0)
  19197. \8- ReturnExpr: <void>
  19198. |19- SepExpr (Consumed=1)
  19199. |8- SepExpr (Consumed=2)
  19200. |9- FileNode: (N_Statements=29)
  19201. |0- SepExpr (Consumed=1)
  19202. |1- DeclExpr: 'int VOID'
  19203. |2- SepExpr (Consumed=1)
  19204. |3- DeclExpr: 'int S_INT'
  19205. |4- SepExpr (Consumed=1)
  19206. |5- DeclExpr: 'int U_INT'
  19207. |6- SepExpr (Consumed=1)
  19208. |7- DeclExpr: 'int FLOAT'
  19209. |8- SepExpr (Consumed=1)
  19210. |9- DeclExpr: 'int POINTER'
  19211. |10- SepExpr (Consumed=1)
  19212. |11- DeclExpr: 'int F_PTR'
  19213. |12- SepExpr (Consumed=1)
  19214. |13- DeclExpr: 'int STRUCT'
  19215. |14- SepExpr (Consumed=2)
  19216. |15- FunctionDecl:
  19217. |- Head: FunctionDeclHead: Name='datamodel::variety_to_name' Type='cstr' Nargs=1
  19218. \0- int variety
  19219. |0- IfExpr:
  19220. |- Condition: BinOpExpr (Operator='==')
  19221. |- LHS: NameExpr: 'variety'
  19222. \- RHS: LiteralExpr: type=int, value=0
  19223. |- Body: BlockBody: (N_Statements=1)
  19224. |0- ReturnExpr: LiteralExpr: type=cstr, value=VOID
  19225. \-- Runoff Clause: IfExpr:
  19226. |- Condition: BinOpExpr (Operator='==')
  19227. |- LHS: NameExpr: 'variety'
  19228. \- RHS: LiteralExpr: type=int, value=1
  19229. |- Body: BlockBody: (N_Statements=1)
  19230. |0- ReturnExpr: LiteralExpr: type=cstr, value=S_INT
  19231. \-- Runoff Clause: IfExpr:
  19232. |- Condition: BinOpExpr (Operator='==')
  19233. |- LHS: NameExpr: 'variety'
  19234. \- RHS: LiteralExpr: type=int, value=2
  19235. |- Body: BlockBody: (N_Statements=1)
  19236. |0- ReturnExpr: LiteralExpr: type=cstr, value=U_INT
  19237. \-- Runoff Clause: IfExpr:
  19238. |- Condition: BinOpExpr (Operator='==')
  19239. |- LHS: NameExpr: 'variety'
  19240. \- RHS: LiteralExpr: type=int, value=3
  19241. |- Body: BlockBody: (N_Statements=1)
  19242. |0- ReturnExpr: LiteralExpr: type=cstr, value=FLOAT
  19243. \-- Runoff Clause: IfExpr:
  19244. |- Condition: BinOpExpr (Operator='==')
  19245. |- LHS: NameExpr: 'variety'
  19246. \- RHS: LiteralExpr: type=int, value=4
  19247. |- Body: BlockBody: (N_Statements=1)
  19248. |0- ReturnExpr: LiteralExpr: type=cstr, value=POINTER
  19249. \-- Runoff Clause: IfExpr:
  19250. |- Condition: BinOpExpr (Operator='==')
  19251. |- LHS: NameExpr: 'variety'
  19252. \- RHS: LiteralExpr: type=int, value=5
  19253. |- Body: BlockBody: (N_Statements=1)
  19254. |0- ReturnExpr: LiteralExpr: type=cstr, value=F_PTR
  19255. \-- Runoff Clause: IfExpr:
  19256. |- Condition: BinOpExpr (Operator='==')
  19257. |- LHS: NameExpr: 'variety'
  19258. \- RHS: LiteralExpr: type=int, value=6
  19259. |- Body: BlockBody: (N_Statements=1)
  19260. |0- ReturnExpr: LiteralExpr: type=cstr, value=STRUCT
  19261. |1- CallExpr:
  19262. |- Method: NameExpr: 'shoc$$bail_out'
  19263. \- Arguments: (Len=1)
  19264. \0- BinOpExpr (Operator='+')
  19265. |- LHS: LiteralExpr: type=cstr, value=datamodel::variety_to_name called on invalid variety:
  19266. \- RHS: CallExpr:
  19267. |- Method: AccessorExpr (Mode=':')
  19268. |- Object: NameExpr: 'variety'
  19269. \- Field: str
  19270. \- Arguments: (Len=0)
  19271. \2- ReturnExpr: LiteralExpr: type=cstr, value=
  19272. |16- SepExpr (Consumed=2)
  19273. |17- TypeDecl:
  19274. |- Head: TypeDeclHead: `OType` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  19275. \- Body: TypeDeclBody: (N_Statements=12)
  19276. |0- DeclExpr: 'int variety'
  19277. |1- DeclExpr: 'cstr name'
  19278. |2- DeclExpr: 'Project proj'
  19279. |3- FunctionDecl:
  19280. |- Head: FunctionDeclHead: Name='OType:is_primitive' Type='bool' Nargs=1
  19281. \0- OType t
  19282. \0- ReturnExpr: BinOpExpr (Operator='<')
  19283. |- LHS: AccessorExpr (Mode='.')
  19284. |- Object: NameExpr: 't'
  19285. \- Field: variety
  19286. \- RHS: LiteralExpr: type=int, value=5
  19287. |4- FunctionDecl:
  19288. |- Head: FunctionDeclHead: Name='OType:is_fptr' Type='bool' Nargs=1
  19289. \0- OType t
  19290. \0- ReturnExpr: BinOpExpr (Operator='==')
  19291. |- LHS: AccessorExpr (Mode='.')
  19292. |- Object: NameExpr: 't'
  19293. \- Field: variety
  19294. \- RHS: LiteralExpr: type=int, value=5
  19295. |5- FunctionDecl:
  19296. |- Head: FunctionDeclHead: Name='OType:is_struct' Type='bool' Nargs=1
  19297. \0- OType t
  19298. \0- ReturnExpr: BinOpExpr (Operator='==')
  19299. |- LHS: AccessorExpr (Mode='.')
  19300. |- Object: NameExpr: 't'
  19301. \- Field: variety
  19302. \- RHS: LiteralExpr: type=int, value=6
  19303. |6- FunctionDecl:
  19304. |- Head: FunctionDeclHead: Name='OType:as_primitive' Type='PrimitiveOType' Nargs=1
  19305. \0- OType t
  19306. \0- ReturnExpr: CastExpr (Target='PrimitiveOType')
  19307. \- Value: NameExpr: 't'
  19308. |7- FunctionDecl:
  19309. |- Head: FunctionDeclHead: Name='OType:as_struct' Type='StructOType' Nargs=1
  19310. \0- OType t
  19311. \0- ReturnExpr: CastExpr (Target='StructOType')
  19312. \- Value: NameExpr: 't'
  19313. |8- FunctionDecl:
  19314. |- Head: FunctionDeclHead: Name='OType:as_fptr' Type='FPtrOType' Nargs=1
  19315. \0- OType t
  19316. \0- ReturnExpr: CastExpr (Target='FPtrOType')
  19317. \- Value: NameExpr: 't'
  19318. |9- FunctionDecl:
  19319. |- Head: FunctionDeclHead: Name='OType:get_size' Type='int' Nargs=1
  19320. \0- OType t
  19321. |0- IfExpr:
  19322. |- Condition: CallExpr:
  19323. |- Method: AccessorExpr (Mode=':')
  19324. |- Object: NameExpr: 't'
  19325. \- Field: is_primitive
  19326. \- Arguments: (Len=0)
  19327. |- Body: BlockBody: (N_Statements=1)
  19328. |0- ReturnExpr: CallExpr:
  19329. |- Method: AccessorExpr (Mode=':')
  19330. |- Object: CallExpr:
  19331. |- Method: AccessorExpr (Mode=':')
  19332. |- Object: NameExpr: 't'
  19333. \- Field: as_primitive
  19334. \- Arguments: (Len=0)
  19335. \- Field: get_size
  19336. \- Arguments: (Len=0)
  19337. \-- Runoff Clause: IfExpr:
  19338. |- Condition: CallExpr:
  19339. |- Method: AccessorExpr (Mode=':')
  19340. |- Object: NameExpr: 't'
  19341. \- Field: is_fptr
  19342. \- Arguments: (Len=0)
  19343. |- Body: BlockBody: (N_Statements=1)
  19344. |0- ReturnExpr: CallExpr:
  19345. |- Method: AccessorExpr (Mode=':')
  19346. |- Object: CallExpr:
  19347. |- Method: AccessorExpr (Mode=':')
  19348. |- Object: NameExpr: 't'
  19349. \- Field: as_fptr
  19350. \- Arguments: (Len=0)
  19351. \- Field: get_size
  19352. \- Arguments: (Len=0)
  19353. \1- ReturnExpr: CallExpr:
  19354. |- Method: AccessorExpr (Mode=':')
  19355. |- Object: CallExpr:
  19356. |- Method: AccessorExpr (Mode=':')
  19357. |- Object: NameExpr: 't'
  19358. \- Field: as_struct
  19359. \- Arguments: (Len=0)
  19360. \- Field: get_size
  19361. \- Arguments: (Len=0)
  19362. |10- FunctionDecl:
  19363. |- Head: FunctionDeclHead: Name='OType:set_project' Type='OType' Nargs=2
  19364. |0- OType t
  19365. \1- Project p
  19366. |0- AssignmentExpr (Operator='=')
  19367. |- LHS: AccessorExpr (Mode='.')
  19368. |- Object: NameExpr: 't'
  19369. \- Field: proj
  19370. \- RHS: NameExpr: 'p'
  19371. \1- ReturnExpr: NameExpr: 't'
  19372. \11- FunctionDecl:
  19373. |- Head: FunctionDeclHead: Name='OType:print' Type='void' Nargs=1
  19374. \0- OType t
  19375. |0- IfExpr:
  19376. |- Condition: CallExpr:
  19377. |- Method: AccessorExpr (Mode=':')
  19378. |- Object: NameExpr: 't'
  19379. \- Field: is_primitive
  19380. \- Arguments: (Len=0)
  19381. |- Body: BlockBody: (N_Statements=1)
  19382. |0- CallExpr:
  19383. |- Method: AccessorExpr (Mode=':')
  19384. |- Object: CallExpr:
  19385. |- Method: AccessorExpr (Mode=':')
  19386. |- Object: NameExpr: 't'
  19387. \- Field: as_primitive
  19388. \- Arguments: (Len=0)
  19389. \- Field: print
  19390. \- Arguments: (Len=0)
  19391. \-- Runoff Clause: IfExpr:
  19392. |- Condition: CallExpr:
  19393. |- Method: AccessorExpr (Mode=':')
  19394. |- Object: NameExpr: 't'
  19395. \- Field: is_fptr
  19396. \- Arguments: (Len=0)
  19397. |- Body: BlockBody: (N_Statements=1)
  19398. |0- CallExpr:
  19399. |- Method: AccessorExpr (Mode=':')
  19400. |- Object: CallExpr:
  19401. |- Method: AccessorExpr (Mode=':')
  19402. |- Object: NameExpr: 't'
  19403. \- Field: as_fptr
  19404. \- Arguments: (Len=0)
  19405. \- Field: print
  19406. \- Arguments: (Len=0)
  19407. \-- Runoff Clause: IfExpr:
  19408. |- Condition: CallExpr:
  19409. |- Method: AccessorExpr (Mode=':')
  19410. |- Object: NameExpr: 't'
  19411. \- Field: is_struct
  19412. \- Arguments: (Len=0)
  19413. |- Body: BlockBody: (N_Statements=1)
  19414. |0- CallExpr:
  19415. |- Method: AccessorExpr (Mode=':')
  19416. |- Object: CallExpr:
  19417. |- Method: AccessorExpr (Mode=':')
  19418. |- Object: NameExpr: 't'
  19419. \- Field: as_struct
  19420. \- Arguments: (Len=0)
  19421. \- Field: print
  19422. \- Arguments: (Len=0)
  19423. \-- Runoff Clause: BlockBody: (N_Statements=1)
  19424. |0- CallExpr:
  19425. |- Method: NameExpr: 'printf'
  19426. \- Arguments: (Len=2)
  19427. |0- LiteralExpr: type=cstr, value=??? %i\n
  19428. \1- AccessorExpr (Mode='.')
  19429. |- Object: NameExpr: 't'
  19430. \- Field: variety
  19431. \1- ReturnExpr: <void>
  19432. |18- SepExpr (Consumed=2)
  19433. |19- TypeDecl:
  19434. |- Head: TypeDeclHead: `PrimitiveOType` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  19435. \- Body: TypeDeclBody: (N_Statements=7)
  19436. |0- DeclExpr: 'int variety'
  19437. |1- DeclExpr: 'cstr name'
  19438. |2- DeclExpr: 'Project proj'
  19439. |3- DeclExpr: 'int size'
  19440. |4- FunctionDecl:
  19441. |- Head: FunctionDeclHead: Name='PrimitiveOType::new' Type='OType' Nargs=3
  19442. |0- cstr name
  19443. |1- int v
  19444. \2- int size
  19445. |0- AssignmentExpr (Operator='=')
  19446. |- LHS: DeclExpr: 'PrimitiveOType new'
  19447. \- RHS: CastExpr (Target='PrimitiveOType')
  19448. \- Value: CallExpr:
  19449. |- Method: NameExpr: 'malloc'
  19450. \- Arguments: (Len=1)
  19451. \0- IntrinsicExpr: '@sizeof(PrimitiveOType)@'
  19452. |1- AssignmentExpr (Operator='=')
  19453. |- LHS: AccessorExpr (Mode='.')
  19454. |- Object: NameExpr: 'new'
  19455. \- Field: name
  19456. \- RHS: NameExpr: 'name'
  19457. |2- AssignmentExpr (Operator='=')
  19458. |- LHS: AccessorExpr (Mode='.')
  19459. |- Object: NameExpr: 'new'
  19460. \- Field: variety
  19461. \- RHS: NameExpr: 'v'
  19462. |3- AssignmentExpr (Operator='=')
  19463. |- LHS: AccessorExpr (Mode='.')
  19464. |- Object: NameExpr: 'new'
  19465. \- Field: size
  19466. \- RHS: NameExpr: 'size'
  19467. \4- ReturnExpr: CastExpr (Target='OType')
  19468. \- Value: NameExpr: 'new'
  19469. |5- FunctionDecl:
  19470. |- Head: FunctionDeclHead: Name='PrimitiveOType:get_size' Type='int' Nargs=1
  19471. \0- PrimitiveOType t
  19472. \0- ReturnExpr: AccessorExpr (Mode='.')
  19473. |- Object: NameExpr: 't'
  19474. \- Field: size
  19475. \6- FunctionDecl:
  19476. |- Head: FunctionDeclHead: Name='PrimitiveOType:print' Type='void' Nargs=1
  19477. \0- PrimitiveOType t
  19478. |0- CallExpr:
  19479. |- Method: NameExpr: 'printf'
  19480. \- Arguments: (Len=5)
  19481. |0- LiteralExpr: type=cstr, value=%i P %s\t%s\t %i bytes\n
  19482. |1- AccessorExpr (Mode='.')
  19483. |- Object: NameExpr: 't'
  19484. \- Field: variety
  19485. |2- CallExpr:
  19486. |- Method: AccessorExpr (Mode='::')
  19487. |- Object: NameExpr: 'datamodel'
  19488. \- Field: variety_to_name
  19489. \- Arguments: (Len=1)
  19490. \0- AccessorExpr (Mode='.')
  19491. |- Object: NameExpr: 't'
  19492. \- Field: variety
  19493. |3- AccessorExpr (Mode='.')
  19494. |- Object: NameExpr: 't'
  19495. \- Field: name
  19496. \4- AccessorExpr (Mode='.')
  19497. |- Object: NameExpr: 't'
  19498. \- Field: size
  19499. \1- ReturnExpr: <void>
  19500. |20- SepExpr (Consumed=2)
  19501. |21- TypeDecl:
  19502. |- Head: TypeDeclHead: `FPtrOType` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  19503. \- Body: TypeDeclBody: (N_Statements=7)
  19504. |0- DeclExpr: 'int variety'
  19505. |1- DeclExpr: 'cstr name'
  19506. |2- DeclExpr: 'Project proj'
  19507. |3- DeclExpr: 'OType return_value'
  19508. |4- FunctionDecl:
  19509. |- Head: FunctionDeclHead: Name='FPtrOType::new' Type='OType' Nargs=2
  19510. |0- cstr name
  19511. \1- OType return_value
  19512. |0- AssignmentExpr (Operator='=')
  19513. |- LHS: DeclExpr: 'FPtrOType new'
  19514. \- RHS: CastExpr (Target='FPtrOType')
  19515. \- Value: CallExpr:
  19516. |- Method: NameExpr: 'malloc'
  19517. \- Arguments: (Len=1)
  19518. \0- IntrinsicExpr: '@sizeof(FPtrOType)@'
  19519. |1- AssignmentExpr (Operator='=')
  19520. |- LHS: AccessorExpr (Mode='.')
  19521. |- Object: NameExpr: 'new'
  19522. \- Field: name
  19523. \- RHS: NameExpr: 'name'
  19524. |2- AssignmentExpr (Operator='=')
  19525. |- LHS: AccessorExpr (Mode='.')
  19526. |- Object: NameExpr: 'new'
  19527. \- Field: variety
  19528. \- RHS: NameExpr: 'F_PTR'
  19529. |3- AssignmentExpr (Operator='=')
  19530. |- LHS: AccessorExpr (Mode='.')
  19531. |- Object: NameExpr: 'new'
  19532. \- Field: return_value
  19533. \- RHS: NameExpr: 'return_value'
  19534. \4- ReturnExpr: CastExpr (Target='OType')
  19535. \- Value: NameExpr: 'new'
  19536. |5- FunctionDecl:
  19537. |- Head: FunctionDeclHead: Name='FPtrOType:get_size' Type='int' Nargs=1
  19538. \0- FPtrOType self
  19539. \0- ReturnExpr: AccessorExpr (Mode='.')
  19540. |- Object: AccessorExpr (Mode='.')
  19541. |- Object: NameExpr: 'self'
  19542. \- Field: proj
  19543. \- Field: pointer_size
  19544. \6- FunctionDecl:
  19545. |- Head: FunctionDeclHead: Name='FPtrOType:print' Type='void' Nargs=1
  19546. \0- FPtrOType t
  19547. |0- CallExpr:
  19548. |- Method: NameExpr: 'printf'
  19549. \- Arguments: (Len=5)
  19550. |0- LiteralExpr: type=cstr, value=%i F %s\t%s\t-> %s\n
  19551. |1- AccessorExpr (Mode='.')
  19552. |- Object: NameExpr: 't'
  19553. \- Field: variety
  19554. |2- CallExpr:
  19555. |- Method: AccessorExpr (Mode='::')
  19556. |- Object: NameExpr: 'datamodel'
  19557. \- Field: variety_to_name
  19558. \- Arguments: (Len=1)
  19559. \0- AccessorExpr (Mode='.')
  19560. |- Object: NameExpr: 't'
  19561. \- Field: variety
  19562. |3- AccessorExpr (Mode='.')
  19563. |- Object: NameExpr: 't'
  19564. \- Field: name
  19565. \4- AccessorExpr (Mode='.')
  19566. |- Object: AccessorExpr (Mode='.')
  19567. |- Object: NameExpr: 't'
  19568. \- Field: return_value
  19569. \- Field: name
  19570. \1- ReturnExpr: <void>
  19571. |22- SepExpr (Consumed=2)
  19572. |23- TypeDecl:
  19573. |- Head: TypeDeclHead: `StructOType` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=1)
  19574. \- Body: TypeDeclBody: (N_Statements=9)
  19575. |0- DeclExpr: 'int variety'
  19576. |1- DeclExpr: 'cstr name'
  19577. |2- DeclExpr: 'Project proj'
  19578. |3- DeclExpr: 'bool packed'
  19579. |4- DeclExpr: 'List fields'
  19580. |5- FunctionDecl:
  19581. |- Head: FunctionDeclHead: Name='StructOType::new' Type='OType' Nargs=1
  19582. \0- cstr name
  19583. |0- AssignmentExpr (Operator='=')
  19584. |- LHS: DeclExpr: 'StructOType new'
  19585. \- RHS: CastExpr (Target='StructOType')
  19586. \- Value: CallExpr:
  19587. |- Method: NameExpr: 'malloc'
  19588. \- Arguments: (Len=1)
  19589. \0- IntrinsicExpr: '@sizeof(StructOType)@'
  19590. |1- AssignmentExpr (Operator='=')
  19591. |- LHS: AccessorExpr (Mode='.')
  19592. |- Object: NameExpr: 'new'
  19593. \- Field: name
  19594. \- RHS: NameExpr: 'name'
  19595. |2- AssignmentExpr (Operator='=')
  19596. |- LHS: AccessorExpr (Mode='.')
  19597. |- Object: NameExpr: 'new'
  19598. \- Field: variety
  19599. \- RHS: NameExpr: 'STRUCT'
  19600. |3- AssignmentExpr (Operator='=')
  19601. |- LHS: AccessorExpr (Mode='.')
  19602. |- Object: NameExpr: 'new'
  19603. \- Field: fields
  19604. \- RHS: CallExpr:
  19605. |- Method: AccessorExpr (Mode='::')
  19606. |- Object: NameExpr: 'List'
  19607. \- Field: new
  19608. \- Arguments: (Len=0)
  19609. |4- AssignmentExpr (Operator='=')
  19610. |- LHS: AccessorExpr (Mode='.')
  19611. |- Object: NameExpr: 'new'
  19612. \- Field: packed
  19613. \- RHS: LiteralExpr: type=bool, value=0
  19614. \5- ReturnExpr: CastExpr (Target='OType')
  19615. \- Value: NameExpr: 'new'
  19616. |6- FunctionDecl:
  19617. |- Head: FunctionDeclHead: Name='StructOType:get_field_type_by_pos' Type='OType' Nargs=2
  19618. |0- StructOType self
  19619. \1- int i
  19620. \0- ReturnExpr: CastExpr (Target='OType')
  19621. \- Value: CallExpr:
  19622. |- Method: AccessorExpr (Mode=':')
  19623. |- Object: AccessorExpr (Mode='.')
  19624. |- Object: NameExpr: 'self'
  19625. \- Field: proj
  19626. \- Field: get_type
  19627. \- Arguments: (Len=1)
  19628. \0- CallExpr:
  19629. |- Method: AccessorExpr (Mode=':')
  19630. |- Object: GroupingExpr: CastExpr (Target='cstr')
  19631. \- Value: CallExpr:
  19632. |- Method: AccessorExpr (Mode=':')
  19633. |- Object: AccessorExpr (Mode='.')
  19634. |- Object: NameExpr: 'self'
  19635. \- Field: fields
  19636. \- Field: get
  19637. \- Arguments: (Len=1)
  19638. \0- NameExpr: 'i'
  19639. \- Field: substr
  19640. \- Arguments: (Len=2)
  19641. |0- LiteralExpr: type=int, value=0
  19642. \1- CallExpr:
  19643. |- Method: AccessorExpr (Mode=':')
  19644. |- Object: GroupingExpr: CastExpr (Target='cstr')
  19645. \- Value: CallExpr:
  19646. |- Method: AccessorExpr (Mode=':')
  19647. |- Object: AccessorExpr (Mode='.')
  19648. |- Object: NameExpr: 'self'
  19649. \- Field: fields
  19650. \- Field: get
  19651. \- Arguments: (Len=1)
  19652. \0- NameExpr: 'i'
  19653. \- Field: find
  19654. \- Arguments: (Len=1)
  19655. \0- LiteralExpr: type=cstr, value=
  19656. |7- FunctionDecl:
  19657. |- Head: FunctionDeclHead: Name='StructOType:get_size' Type='int' Nargs=1
  19658. \0- StructOType self
  19659. |0- AssignmentExpr (Operator='=')
  19660. |- LHS: DeclExpr: 'int i'
  19661. \- RHS: LiteralExpr: type=int, value=0
  19662. |1- AssignmentExpr (Operator='=')
  19663. |- LHS: DeclExpr: 'int sum'
  19664. \- RHS: LiteralExpr: type=int, value=0
  19665. |2- WhileExpr:
  19666. |- Condition: BinOpExpr (Operator='<')
  19667. |- LHS: NameExpr: 'i'
  19668. \- RHS: AccessorExpr (Mode='.')
  19669. |- Object: AccessorExpr (Mode='.')
  19670. |- Object: NameExpr: 'self'
  19671. \- Field: fields
  19672. \- Field: len
  19673. |- Body: BlockBody: (N_Statements=2)
  19674. |0- IfExpr:
  19675. |- Condition: CallExpr:
  19676. |- Method: AccessorExpr (Mode=':')
  19677. |- Object: CallExpr:
  19678. |- Method: AccessorExpr (Mode=':')
  19679. |- Object: NameExpr: 'self'
  19680. \- Field: get_field_type_by_pos
  19681. \- Arguments: (Len=1)
  19682. \0- NameExpr: 'i'
  19683. \- Field: is_struct
  19684. \- Arguments: (Len=0)
  19685. |- Body: BlockBody: (N_Statements=1)
  19686. |0- AssignmentExpr (Operator='+=')
  19687. |- LHS: NameExpr: 'sum'
  19688. \- RHS: AccessorExpr (Mode='.')
  19689. |- Object: AccessorExpr (Mode='.')
  19690. |- Object: NameExpr: 'self'
  19691. \- Field: proj
  19692. \- Field: pointer_size
  19693. \-- Runoff Clause: BlockBody: (N_Statements=1)
  19694. |0- AssignmentExpr (Operator='+=')
  19695. |- LHS: NameExpr: 'sum'
  19696. \- RHS: CallExpr:
  19697. |- Method: AccessorExpr (Mode=':')
  19698. |- Object: CallExpr:
  19699. |- Method: AccessorExpr (Mode=':')
  19700. |- Object: NameExpr: 'self'
  19701. \- Field: get_field_type_by_pos
  19702. \- Arguments: (Len=1)
  19703. \0- NameExpr: 'i'
  19704. \- Field: get_size
  19705. \- Arguments: (Len=0)
  19706. |1- AssignmentExpr (Operator='+=')
  19707. |- LHS: NameExpr: 'i'
  19708. \- RHS: LiteralExpr: type=int, value=1
  19709. \3- ReturnExpr: NameExpr: 'sum'
  19710. \8- FunctionDecl:
  19711. |- Head: FunctionDeclHead: Name='StructOType:print' Type='void' Nargs=1
  19712. \0- StructOType t
  19713. |0- CallExpr:
  19714. |- Method: NameExpr: 'printf'
  19715. \- Arguments: (Len=5)
  19716. |0- LiteralExpr: type=cstr, value=%i S %s\t%s\t %i bytes {
  19717. |1- AccessorExpr (Mode='.')
  19718. |- Object: NameExpr: 't'
  19719. \- Field: variety
  19720. |2- CallExpr:
  19721. |- Method: AccessorExpr (Mode='::')
  19722. |- Object: NameExpr: 'datamodel'
  19723. \- Field: variety_to_name
  19724. \- Arguments: (Len=1)
  19725. \0- AccessorExpr (Mode='.')
  19726. |- Object: NameExpr: 't'
  19727. \- Field: variety
  19728. |3- AccessorExpr (Mode='.')
  19729. |- Object: NameExpr: 't'
  19730. \- Field: name
  19731. \4- CallExpr:
  19732. |- Method: AccessorExpr (Mode=':')
  19733. |- Object: NameExpr: 't'
  19734. \- Field: get_size
  19735. \- Arguments: (Len=0)
  19736. |1- AssignmentExpr (Operator='=')
  19737. |- LHS: DeclExpr: 'int i'
  19738. \- RHS: LiteralExpr: type=int, value=0
  19739. |2- WhileExpr:
  19740. |- Condition: BinOpExpr (Operator='<')
  19741. |- LHS: NameExpr: 'i'
  19742. \- RHS: AccessorExpr (Mode='.')
  19743. |- Object: AccessorExpr (Mode='.')
  19744. |- Object: NameExpr: 't'
  19745. \- Field: fields
  19746. \- Field: len
  19747. |- Body: BlockBody: (N_Statements=3)
  19748. |0- CallExpr:
  19749. |- Method: NameExpr: 'printf'
  19750. \- Arguments: (Len=2)
  19751. |0- LiteralExpr: type=cstr, value=%s
  19752. \1- CallExpr:
  19753. |- Method: AccessorExpr (Mode=':')
  19754. |- Object: AccessorExpr (Mode='.')
  19755. |- Object: NameExpr: 't'
  19756. \- Field: fields
  19757. \- Field: get
  19758. \- Arguments: (Len=1)
  19759. \0- NameExpr: 'i'
  19760. |1- IfExpr:
  19761. |- Condition: BinOpExpr (Operator='!=')
  19762. |- LHS: NameExpr: 'i'
  19763. \- RHS: BinOpExpr (Operator='-')
  19764. |- LHS: AccessorExpr (Mode='.')
  19765. |- Object: AccessorExpr (Mode='.')
  19766. |- Object: NameExpr: 't'
  19767. \- Field: fields
  19768. \- Field: len
  19769. \- RHS: LiteralExpr: type=int, value=1
  19770. |- Body: BlockBody: (N_Statements=1)
  19771. |0- CallExpr:
  19772. |- Method: NameExpr: 'printf'
  19773. \- Arguments: (Len=1)
  19774. \0- LiteralExpr: type=cstr, value=,
  19775. |2- AssignmentExpr (Operator='+=')
  19776. |- LHS: NameExpr: 'i'
  19777. \- RHS: LiteralExpr: type=int, value=1
  19778. |3- CallExpr:
  19779. |- Method: NameExpr: 'printf'
  19780. \- Arguments: (Len=1)
  19781. \0- LiteralExpr: type=cstr, value=}\n
  19782. \4- ReturnExpr: <void>
  19783. |24- SepExpr (Consumed=2)
  19784. |25- FunctionDecl:
  19785. |- Head: FunctionDeclHead: Name='shoc::datamodel::init_base' Type='void' Nargs=1
  19786. \0- Project p
  19787. |0- AssignmentExpr (Operator='=')
  19788. |- LHS: NameExpr: 'VOID'
  19789. \- RHS: LiteralExpr: type=int, value=0
  19790. |1- AssignmentExpr (Operator='=')
  19791. |- LHS: NameExpr: 'S_INT'
  19792. \- RHS: LiteralExpr: type=int, value=1
  19793. |2- AssignmentExpr (Operator='=')
  19794. |- LHS: NameExpr: 'U_INT'
  19795. \- RHS: LiteralExpr: type=int, value=2
  19796. |3- AssignmentExpr (Operator='=')
  19797. |- LHS: NameExpr: 'FLOAT'
  19798. \- RHS: LiteralExpr: type=int, value=3
  19799. |4- AssignmentExpr (Operator='=')
  19800. |- LHS: NameExpr: 'POINTER'
  19801. \- RHS: LiteralExpr: type=int, value=4
  19802. |5- AssignmentExpr (Operator='=')
  19803. |- LHS: NameExpr: 'F_PTR'
  19804. \- RHS: LiteralExpr: type=int, value=5
  19805. |6- AssignmentExpr (Operator='=')
  19806. |- LHS: NameExpr: 'STRUCT'
  19807. \- RHS: LiteralExpr: type=int, value=6
  19808. |7- CallExpr:
  19809. |- Method: AccessorExpr (Mode=':')
  19810. |- Object: NameExpr: 'p'
  19811. \- Field: add_Type
  19812. \- Arguments: (Len=1)
  19813. \0- CallExpr:
  19814. |- Method: NameExpr: 'PrimitiveOType$$new'
  19815. \- Arguments: (Len=3)
  19816. |0- LiteralExpr: type=cstr, value=int
  19817. |1- NameExpr: 'S_INT'
  19818. \2- LiteralExpr: type=int, value=4
  19819. |8- CallExpr:
  19820. |- Method: AccessorExpr (Mode=':')
  19821. |- Object: NameExpr: 'p'
  19822. \- Field: add_Type
  19823. \- Arguments: (Len=1)
  19824. \0- CallExpr:
  19825. |- Method: NameExpr: 'PrimitiveOType$$new'
  19826. \- Arguments: (Len=3)
  19827. |0- LiteralExpr: type=cstr, value=short
  19828. |1- NameExpr: 'S_INT'
  19829. \2- LiteralExpr: type=int, value=2
  19830. |9- CallExpr:
  19831. |- Method: AccessorExpr (Mode=':')
  19832. |- Object: NameExpr: 'p'
  19833. \- Field: add_Type
  19834. \- Arguments: (Len=1)
  19835. \0- CallExpr:
  19836. |- Method: NameExpr: 'PrimitiveOType$$new'
  19837. \- Arguments: (Len=3)
  19838. |0- LiteralExpr: type=cstr, value=byte
  19839. |1- NameExpr: 'S_INT'
  19840. \2- LiteralExpr: type=int, value=1
  19841. |10- CallExpr:
  19842. |- Method: AccessorExpr (Mode=':')
  19843. |- Object: NameExpr: 'p'
  19844. \- Field: add_Type
  19845. \- Arguments: (Len=1)
  19846. \0- CallExpr:
  19847. |- Method: NameExpr: 'PrimitiveOType$$new'
  19848. \- Arguments: (Len=3)
  19849. |0- LiteralExpr: type=cstr, value=long
  19850. |1- NameExpr: 'S_INT'
  19851. \2- LiteralExpr: type=int, value=8
  19852. |11- CallExpr:
  19853. |- Method: AccessorExpr (Mode=':')
  19854. |- Object: NameExpr: 'p'
  19855. \- Field: add_Type
  19856. \- Arguments: (Len=1)
  19857. \0- CallExpr:
  19858. |- Method: NameExpr: 'PrimitiveOType$$new'
  19859. \- Arguments: (Len=3)
  19860. |0- LiteralExpr: type=cstr, value=xlong
  19861. |1- NameExpr: 'S_INT'
  19862. \2- LiteralExpr: type=int, value=16
  19863. |12- CallExpr:
  19864. |- Method: AccessorExpr (Mode=':')
  19865. |- Object: NameExpr: 'p'
  19866. \- Field: add_Type
  19867. \- Arguments: (Len=1)
  19868. \0- CallExpr:
  19869. |- Method: NameExpr: 'PrimitiveOType$$new'
  19870. \- Arguments: (Len=3)
  19871. |0- LiteralExpr: type=cstr, value=uint
  19872. |1- NameExpr: 'U_INT'
  19873. \2- LiteralExpr: type=int, value=4
  19874. |13- CallExpr:
  19875. |- Method: AccessorExpr (Mode=':')
  19876. |- Object: NameExpr: 'p'
  19877. \- Field: add_Type
  19878. \- Arguments: (Len=1)
  19879. \0- CallExpr:
  19880. |- Method: NameExpr: 'PrimitiveOType$$new'
  19881. \- Arguments: (Len=3)
  19882. |0- LiteralExpr: type=cstr, value=ushort
  19883. |1- NameExpr: 'U_INT'
  19884. \2- LiteralExpr: type=int, value=2
  19885. |14- CallExpr:
  19886. |- Method: AccessorExpr (Mode=':')
  19887. |- Object: NameExpr: 'p'
  19888. \- Field: add_Type
  19889. \- Arguments: (Len=1)
  19890. \0- CallExpr:
  19891. |- Method: NameExpr: 'PrimitiveOType$$new'
  19892. \- Arguments: (Len=3)
  19893. |0- LiteralExpr: type=cstr, value=ubyte
  19894. |1- NameExpr: 'U_INT'
  19895. \2- LiteralExpr: type=int, value=1
  19896. |15- CallExpr:
  19897. |- Method: AccessorExpr (Mode=':')
  19898. |- Object: NameExpr: 'p'
  19899. \- Field: add_Type
  19900. \- Arguments: (Len=1)
  19901. \0- CallExpr:
  19902. |- Method: NameExpr: 'PrimitiveOType$$new'
  19903. \- Arguments: (Len=3)
  19904. |0- LiteralExpr: type=cstr, value=ulong
  19905. |1- NameExpr: 'U_INT'
  19906. \2- LiteralExpr: type=int, value=8
  19907. |16- CallExpr:
  19908. |- Method: AccessorExpr (Mode=':')
  19909. |- Object: NameExpr: 'p'
  19910. \- Field: add_Type
  19911. \- Arguments: (Len=1)
  19912. \0- CallExpr:
  19913. |- Method: NameExpr: 'PrimitiveOType$$new'
  19914. \- Arguments: (Len=3)
  19915. |0- LiteralExpr: type=cstr, value=uxlong
  19916. |1- NameExpr: 'U_INT'
  19917. \2- LiteralExpr: type=int, value=16
  19918. |17- CallExpr:
  19919. |- Method: AccessorExpr (Mode=':')
  19920. |- Object: NameExpr: 'p'
  19921. \- Field: add_Type
  19922. \- Arguments: (Len=1)
  19923. \0- CallExpr:
  19924. |- Method: NameExpr: 'PrimitiveOType$$new'
  19925. \- Arguments: (Len=3)
  19926. |0- LiteralExpr: type=cstr, value=float
  19927. |1- NameExpr: 'FLOAT'
  19928. \2- LiteralExpr: type=int, value=8
  19929. |18- CallExpr:
  19930. |- Method: AccessorExpr (Mode=':')
  19931. |- Object: NameExpr: 'p'
  19932. \- Field: add_Type
  19933. \- Arguments: (Len=1)
  19934. \0- CallExpr:
  19935. |- Method: NameExpr: 'PrimitiveOType$$new'
  19936. \- Arguments: (Len=3)
  19937. |0- LiteralExpr: type=cstr, value=bool
  19938. |1- NameExpr: 'U_INT'
  19939. \2- LiteralExpr: type=int, value=1
  19940. |19- CallExpr:
  19941. |- Method: AccessorExpr (Mode=':')
  19942. |- Object: NameExpr: 'p'
  19943. \- Field: add_Type
  19944. \- Arguments: (Len=1)
  19945. \0- CallExpr:
  19946. |- Method: NameExpr: 'PrimitiveOType$$new'
  19947. \- Arguments: (Len=3)
  19948. |0- LiteralExpr: type=cstr, value=ptr
  19949. |1- NameExpr: 'POINTER'
  19950. \2- AccessorExpr (Mode='.')
  19951. |- Object: NameExpr: 'p'
  19952. \- Field: pointer_size
  19953. |20- CallExpr:
  19954. |- Method: AccessorExpr (Mode=':')
  19955. |- Object: NameExpr: 'p'
  19956. \- Field: add_Type
  19957. \- Arguments: (Len=1)
  19958. \0- CallExpr:
  19959. |- Method: NameExpr: 'PrimitiveOType$$new'
  19960. \- Arguments: (Len=3)
  19961. |0- LiteralExpr: type=cstr, value=cstr
  19962. |1- NameExpr: 'POINTER'
  19963. \2- AccessorExpr (Mode='.')
  19964. |- Object: NameExpr: 'p'
  19965. \- Field: pointer_size
  19966. |21- CallExpr:
  19967. |- Method: AccessorExpr (Mode=':')
  19968. |- Object: NameExpr: 'p'
  19969. \- Field: add_Type
  19970. \- Arguments: (Len=1)
  19971. \0- CallExpr:
  19972. |- Method: NameExpr: 'PrimitiveOType$$new'
  19973. \- Arguments: (Len=3)
  19974. |0- LiteralExpr: type=cstr, value=void
  19975. |1- NameExpr: 'VOID'
  19976. \2- LiteralExpr: type=int, value=0
  19977. \22- ReturnExpr: <void>
  19978. |26- SepExpr (Consumed=2)
  19979. |27- FunctionDecl:
  19980. |- Head: FunctionDeclHead: Name='Project:get_type' Type='OType' Nargs=2
  19981. |0- Project p
  19982. \1- cstr name
  19983. \0- ReturnExpr: CastExpr (Target='OType')
  19984. \- Value: CallExpr:
  19985. |- Method: AccessorExpr (Mode=':')
  19986. |- Object: AccessorExpr (Mode='.')
  19987. |- Object: NameExpr: 'p'
  19988. \- Field: types
  19989. \- Field: get
  19990. \- Arguments: (Len=1)
  19991. \0- NameExpr: 'name'
  19992. |28- SepExpr (Consumed=1)
  19993. |10- SepExpr (Consumed=4)
  19994. |11- FunctionDecl:
  19995. |- Head: FunctionDeclHead: Name='shoc::bail_out' Type='void' Nargs=1
  19996. \0- cstr err
  19997. |0- CallExpr:
  19998. |- Method: NameExpr: 'printf'
  19999. \- Arguments: (Len=1)
  20000. \0- LiteralExpr: type=cstr, value=\n\nshoc::bail_out called, orth::fail traceback follows...\n
  20001. |1- CallExpr:
  20002. |- Method: NameExpr: 'orth$$fail'
  20003. \- Arguments: (Len=1)
  20004. \0- NameExpr: 'err'
  20005. \2- ReturnExpr: <void>
  20006. |12- SepExpr (Consumed=4)
  20007. |13- TypeDecl:
  20008. |- Head: TypeDeclHead: `Project` (Is_Func_Alias=0, Is_Type_Alias:0, Is_Packed=0)
  20009. \- Body: TypeDeclBody: (N_Statements=8)
  20010. |0- DeclExpr: 'List token_types'
  20011. |1- DeclExpr: 'List node_types'
  20012. |2- DeclExpr: 'List transformer_passes'
  20013. |3- DeclExpr: 'StrMap options'
  20014. |4- DeclExpr: 'int pointer_size'
  20015. |5- DeclExpr: 'StrMap types'
  20016. |6- DeclExpr: 'List search_path'
  20017. \7- DeclExpr: 'List included_files'
  20018. |14- SepExpr (Consumed=4)
  20019. |15- FunctionDecl:
  20020. |- Head: FunctionDeclHead: Name='shoc::get_empty_project' Type='Project' Nargs=0
  20021. |0- AssignmentExpr (Operator='=')
  20022. |- LHS: DeclExpr: 'Project p'
  20023. \- RHS: CastExpr (Target='Project')
  20024. \- Value: CallExpr:
  20025. |- Method: NameExpr: 'malloc'
  20026. \- Arguments: (Len=1)
  20027. \0- IntrinsicExpr: '@sizeof(Project)@'
  20028. |1- AssignmentExpr (Operator='=')
  20029. |- LHS: AccessorExpr (Mode='.')
  20030. |- Object: NameExpr: 'p'
  20031. \- Field: token_types
  20032. \- RHS: CallExpr:
  20033. |- Method: NameExpr: 'List$$new'
  20034. \- Arguments: (Len=0)
  20035. |2- AssignmentExpr (Operator='=')
  20036. |- LHS: AccessorExpr (Mode='.')
  20037. |- Object: NameExpr: 'p'
  20038. \- Field: node_types
  20039. \- RHS: CallExpr:
  20040. |- Method: NameExpr: 'List$$new'
  20041. \- Arguments: (Len=0)
  20042. |3- AssignmentExpr (Operator='=')
  20043. |- LHS: AccessorExpr (Mode='.')
  20044. |- Object: NameExpr: 'p'
  20045. \- Field: transformer_passes
  20046. \- RHS: CallExpr:
  20047. |- Method: NameExpr: 'List$$new'
  20048. \- Arguments: (Len=0)
  20049. |4- AssignmentExpr (Operator='=')
  20050. |- LHS: AccessorExpr (Mode='.')
  20051. |- Object: NameExpr: 'p'
  20052. \- Field: options
  20053. \- RHS: CallExpr:
  20054. |- Method: NameExpr: 'StrMap$$new'
  20055. \- Arguments: (Len=0)
  20056. |5- AssignmentExpr (Operator='=')
  20057. |- LHS: AccessorExpr (Mode='.')
  20058. |- Object: NameExpr: 'p'
  20059. \- Field: types
  20060. \- RHS: CallExpr:
  20061. |- Method: NameExpr: 'StrMap$$new'
  20062. \- Arguments: (Len=0)
  20063. |6- AssignmentExpr (Operator='=')
  20064. |- LHS: AccessorExpr (Mode='.')
  20065. |- Object: NameExpr: 'p'
  20066. \- Field: included_files
  20067. \- RHS: CallExpr:
  20068. |- Method: NameExpr: 'List$$new'
  20069. \- Arguments: (Len=0)
  20070. |7- AssignmentExpr (Operator='=')
  20071. |- LHS: AccessorExpr (Mode='.')
  20072. |- Object: NameExpr: 'p'
  20073. \- Field: search_path
  20074. \- RHS: CallExpr:
  20075. |- Method: NameExpr: 'List$$new'
  20076. \- Arguments: (Len=0)
  20077. \8- ReturnExpr: NameExpr: 'p'
  20078. |16- SepExpr (Consumed=4)
  20079. |17- FunctionDecl:
  20080. |- Head: FunctionDeclHead: Name='Project:with_base_tokens' Type='Project' Nargs=1
  20081. \0- Project p
  20082. |0- CallExpr:
  20083. |- Method: NameExpr: 'lex$$init_default'
  20084. \- Arguments: (Len=1)
  20085. \0- AccessorExpr (Mode='.')
  20086. |- Object: NameExpr: 'p'
  20087. \- Field: token_types
  20088. \1- ReturnExpr: NameExpr: 'p'
  20089. |18- SepExpr (Consumed=4)
  20090. |19- FunctionDecl:
  20091. |- Head: FunctionDeclHead: Name='Project:with_base_grammar' Type='Project' Nargs=1
  20092. \0- Project p
  20093. |0- CallExpr:
  20094. |- Method: NameExpr: 'parse$$init_default'
  20095. \- Arguments: (Len=1)
  20096. \0- AccessorExpr (Mode='.')
  20097. |- Object: NameExpr: 'p'
  20098. \- Field: node_types
  20099. \1- ReturnExpr: NameExpr: 'p'
  20100. |20- SepExpr (Consumed=4)
  20101. |21- FunctionDecl:
  20102. |- Head: FunctionDeclHead: Name='Project:with_base_passes' Type='Project' Nargs=1
  20103. \0- Project p
  20104. |0- CallExpr:
  20105. |- Method: NameExpr: 'shoc$$transformers$$init'
  20106. \- Arguments: (Len=1)
  20107. \0- NameExpr: 'p'
  20108. \1- ReturnExpr: NameExpr: 'p'
  20109. |22- SepExpr (Consumed=4)
  20110. |23- FunctionDecl:
  20111. |- Head: FunctionDeclHead: Name='Project:with_base_types' Type='Project' Nargs=1
  20112. \0- Project p
  20113. |0- CallExpr:
  20114. |- Method: NameExpr: 'shoc$$datamodel$$init_base'
  20115. \- Arguments: (Len=1)
  20116. \0- NameExpr: 'p'
  20117. \1- ReturnExpr: NameExpr: 'p'
  20118. |24- SepExpr (Consumed=4)
  20119. |25- FunctionDecl:
  20120. |- Head: FunctionDeclHead: Name='Project:with_search_path' Type='Project' Nargs=2
  20121. |0- Project p
  20122. \1- List l
  20123. |0- AssignmentExpr (Operator='=')
  20124. |- LHS: AccessorExpr (Mode='.')
  20125. |- Object: NameExpr: 'p'
  20126. \- Field: search_path
  20127. \- RHS: NameExpr: 'l'
  20128. \1- ReturnExpr: NameExpr: 'p'
  20129. |26- SepExpr (Consumed=4)
  20130. |27- FunctionDecl:
  20131. |- Head: FunctionDeclHead: Name='Project:with_options' Type='Project' Nargs=2
  20132. |0- Project p
  20133. \1- StrMap l
  20134. |0- AssignmentExpr (Operator='=')
  20135. |- LHS: AccessorExpr (Mode='.')
  20136. |- Object: NameExpr: 'p'
  20137. \- Field: options
  20138. \- RHS: NameExpr: 'l'
  20139. \1- ReturnExpr: NameExpr: 'p'
  20140. |28- SepExpr (Consumed=4)
  20141. |29- FunctionDecl:
  20142. |- Head: FunctionDeclHead: Name='Project:with_arch_bits' Type='Project' Nargs=2
  20143. |0- Project p
  20144. \1- int bits
  20145. |0- AssignmentExpr (Operator='=')
  20146. |- LHS: AccessorExpr (Mode='.')
  20147. |- Object: NameExpr: 'p'
  20148. \- Field: pointer_size
  20149. \- RHS: BinOpExpr (Operator='/')
  20150. |- LHS: NameExpr: 'bits'
  20151. \- RHS: LiteralExpr: type=int, value=8
  20152. \1- ReturnExpr: NameExpr: 'p'
  20153. |30- SepExpr (Consumed=4)
  20154. |31- FunctionDecl:
  20155. |- Head: FunctionDeclHead: Name='Project:add_Transformer' Type='void' Nargs=2
  20156. |0- Project p
  20157. \1- TransformerPass t
  20158. |0- CallExpr:
  20159. |- Method: AccessorExpr (Mode=':')
  20160. |- Object: AccessorExpr (Mode='.')
  20161. |- Object: NameExpr: 'p'
  20162. \- Field: transformer_passes
  20163. \- Field: append
  20164. \- Arguments: (Len=1)
  20165. \0- CastExpr (Target='ptr')
  20166. \- Value: NameExpr: 't'
  20167. |1- CallExpr:
  20168. |- Method: AccessorExpr (Mode=':')
  20169. |- Object: NameExpr: 't'
  20170. \- Field: set_project
  20171. \- Arguments: (Len=1)
  20172. \0- NameExpr: 'p'
  20173. \2- ReturnExpr: <void>
  20174. |32- SepExpr (Consumed=4)
  20175. |33- FunctionDecl:
  20176. |- Head: FunctionDeclHead: Name='Project:add_Type' Type='void' Nargs=2
  20177. |0- Project p
  20178. \1- OType t
  20179. |0- CallExpr:
  20180. |- Method: AccessorExpr (Mode=':')
  20181. |- Object: AccessorExpr (Mode='.')
  20182. |- Object: NameExpr: 'p'
  20183. \- Field: types
  20184. \- Field: set
  20185. \- Arguments: (Len=2)
  20186. |0- AccessorExpr (Mode='.')
  20187. |- Object: NameExpr: 't'
  20188. \- Field: name
  20189. \1- CastExpr (Target='ptr')
  20190. \- Value: NameExpr: 't'
  20191. |1- CallExpr:
  20192. |- Method: AccessorExpr (Mode=':')
  20193. |- Object: NameExpr: 't'
  20194. \- Field: set_project
  20195. \- Arguments: (Len=1)
  20196. \0- NameExpr: 'p'
  20197. \2- ReturnExpr: <void>
  20198. |34- SepExpr (Consumed=4)
  20199. |35- FunctionDecl:
  20200. |- Head: FunctionDeclHead: Name='Project:run_only_import' Type='Node' Nargs=2
  20201. |0- Project p
  20202. \1- Node n
  20203. \0- ReturnExpr: CallExpr:
  20204. |- Method: AccessorExpr (Mode=':')
  20205. |- Object: CastExpr (Target='TransformerPass')
  20206. \- Value: CallExpr:
  20207. |- Method: AccessorExpr (Mode=':')
  20208. |- Object: AccessorExpr (Mode='.')
  20209. |- Object: NameExpr: 'p'
  20210. \- Field: transformer_passes
  20211. \- Field: get
  20212. \- Arguments: (Len=1)
  20213. \0- LiteralExpr: type=int, value=0
  20214. \- Field: visit
  20215. \- Arguments: (Len=1)
  20216. \0- NameExpr: 'n'
  20217. |36- SepExpr (Consumed=4)
  20218. |37- FunctionDecl:
  20219. |- Head: FunctionDeclHead: Name='Project:process_text' Type='Node' Nargs=2
  20220. |0- Project p
  20221. \1- cstr text
  20222. |0- AssignmentExpr (Operator='+=')
  20223. |- LHS: NameExpr: 'text'
  20224. \- RHS: LiteralExpr: type=cstr, value=\n
  20225. \1- ReturnExpr: CallExpr:
  20226. |- Method: AccessorExpr (Mode=':')
  20227. |- Object: NameExpr: 'p'
  20228. \- Field: run_only_import
  20229. \- Arguments: (Len=1)
  20230. \0- CallExpr:
  20231. |- Method: AccessorExpr (Mode=':')
  20232. |- Object: NameExpr: 'p'
  20233. \- Field: parse
  20234. \- Arguments: (Len=2)
  20235. |0- CallExpr:
  20236. |- Method: AccessorExpr (Mode=':')
  20237. |- Object: NameExpr: 'p'
  20238. \- Field: tokenize
  20239. \- Arguments: (Len=1)
  20240. \0- NameExpr: 'text'
  20241. \1- NameExpr: 'text'
  20242. |38- SepExpr (Consumed=4)
  20243. |39- FunctionDecl:
  20244. |- Head: FunctionDeclHead: Name='Project:process_project' Type='Node' Nargs=2
  20245. |0- Project p
  20246. \1- cstr text
  20247. |0- AssignmentExpr (Operator='+=')
  20248. |- LHS: NameExpr: 'text'
  20249. \- RHS: LiteralExpr: type=cstr, value=\n
  20250. \1- ReturnExpr: CallExpr:
  20251. |- Method: AccessorExpr (Mode=':')
  20252. |- Object: NameExpr: 'p'
  20253. \- Field: run_transformers
  20254. \- Arguments: (Len=1)
  20255. \0- CallExpr:
  20256. |- Method: AccessorExpr (Mode=':')
  20257. |- Object: NameExpr: 'p'
  20258. \- Field: parse
  20259. \- Arguments: (Len=2)
  20260. |0- CallExpr:
  20261. |- Method: AccessorExpr (Mode=':')
  20262. |- Object: NameExpr: 'p'
  20263. \- Field: tokenize
  20264. \- Arguments: (Len=1)
  20265. \0- NameExpr: 'text'
  20266. \1- NameExpr: 'text'
  20267. |40- SepExpr (Consumed=1)
  20268. |9- FunctionDeclHead: Name='main' Type='int' Nargs=2
  20269. |0- int nargs
  20270. \1- ArgList args
  20271. |10- CallExpr:
  20272. |- Method: NameExpr: 'mem$$init_arena_allocator'
  20273. \- Arguments: (Len=1)
  20274. \0- LiteralExpr: type=int, value=1048576
  20275. |11- CallExpr:
  20276. |- Method: NameExpr: 'orth$$install_sigsev_handler'
  20277. \- Arguments: (Len=0)
  20278. |12- CallExpr:
  20279. |- Method: NameExpr: 'stdio$$init'
  20280. \- Arguments: (Len=0)
  20281. |13- IfExpr:
  20282. |- Condition: BinOpExpr (Operator='<')
  20283. |- LHS: NameExpr: 'nargs'
  20284. \- RHS: LiteralExpr: type=int, value=2
  20285. |- Body: BlockBody: (N_Statements=1)
  20286. |0- CallExpr:
  20287. |- Method: NameExpr: 'orth$$fail'
  20288. \- Arguments: (Len=1)
  20289. \0- LiteralExpr: type=cstr, value=E: Bad args\n
  20290. |14- AssignmentExpr (Operator='=')
  20291. |- LHS: DeclExpr: 'List search_path'
  20292. \- RHS: CallExpr:
  20293. |- Method: NameExpr: 'List$$new'
  20294. \- Arguments: (Len=0)
  20295. |15- CallExpr:
  20296. |- Method: AccessorExpr (Mode=':')
  20297. |- Object: NameExpr: 'search_path'
  20298. \- Field: append
  20299. \- Arguments: (Len=1)
  20300. \0- LiteralExpr: type=cstr, value=.
  20301. |16- AssignmentExpr (Operator='=')
  20302. |- LHS: DeclExpr: 'StrMap options'
  20303. \- RHS: CallExpr:
  20304. |- Method: NameExpr: 'StrMap$$new'
  20305. \- Arguments: (Len=0)
  20306. |17- AssignmentExpr (Operator='=')
  20307. |- LHS: DeclExpr: 'int i'
  20308. \- RHS: LiteralExpr: type=int, value=1
  20309. |18- DeclExpr: 'cstr arg'
  20310. |19- WhileExpr:
  20311. |- Condition: BinOpExpr (Operator='<')
  20312. |- LHS: NameExpr: 'i'
  20313. \- RHS: NameExpr: 'nargs'
  20314. |- Body: BlockBody: (N_Statements=4)
  20315. |0- AssignmentExpr (Operator='=')
  20316. |- LHS: NameExpr: 'arg'
  20317. \- RHS: CallExpr:
  20318. |- Method: AccessorExpr (Mode=':')
  20319. |- Object: NameExpr: 'args'
  20320. \- Field: get
  20321. \- Arguments: (Len=1)
  20322. \0- NameExpr: 'i'
  20323. |1- IfExpr:
  20324. |- Condition: CallExpr:
  20325. |- Method: AccessorExpr (Mode=':')
  20326. |- Object: NameExpr: 'arg'
  20327. \- Field: startswith
  20328. \- Arguments: (Len=1)
  20329. \0- LiteralExpr: type=cstr, value=-s
  20330. |- Body: BlockBody: (N_Statements=1)
  20331. |0- CallExpr:
  20332. |- Method: AccessorExpr (Mode=':')
  20333. |- Object: NameExpr: 'search_path'
  20334. \- Field: append
  20335. \- Arguments: (Len=1)
  20336. \0- CallExpr:
  20337. |- Method: AccessorExpr (Mode=':')
  20338. |- Object: NameExpr: 'arg'
  20339. \- Field: offset
  20340. \- Arguments: (Len=1)
  20341. \0- LiteralExpr: type=int, value=2
  20342. |2- IfExpr:
  20343. |- Condition: CallExpr:
  20344. |- Method: AccessorExpr (Mode=':')
  20345. |- Object: NameExpr: 'arg'
  20346. \- Field: startswith
  20347. \- Arguments: (Len=1)
  20348. \0- LiteralExpr: type=cstr, value=-f
  20349. |- Body: BlockBody: (N_Statements=1)
  20350. |0- CallExpr:
  20351. |- Method: AccessorExpr (Mode=':')
  20352. |- Object: NameExpr: 'options'
  20353. \- Field: set
  20354. \- Arguments: (Len=2)
  20355. |0- CallExpr:
  20356. |- Method: AccessorExpr (Mode=':')
  20357. |- Object: NameExpr: 'arg'
  20358. \- Field: offset
  20359. \- Arguments: (Len=1)
  20360. \0- LiteralExpr: type=int, value=2
  20361. \1- LiteralExpr: type=cstr, value=1
  20362. |3- AssignmentExpr (Operator='+=')
  20363. |- LHS: NameExpr: 'i'
  20364. \- RHS: LiteralExpr: type=int, value=1
  20365. |20- IfExpr:
  20366. |- Condition: CallExpr:
  20367. |- Method: AccessorExpr (Mode=':')
  20368. |- Object: CallExpr:
  20369. |- Method: AccessorExpr (Mode=':')
  20370. |- Object: NameExpr: 'options'
  20371. \- Field: contains
  20372. \- Arguments: (Len=1)
  20373. \0- LiteralExpr: type=cstr, value=profile
  20374. \- Field: or
  20375. \- Arguments: (Len=1)
  20376. \0- CallExpr:
  20377. |- Method: AccessorExpr (Mode=':')
  20378. |- Object: NameExpr: 'options'
  20379. \- Field: contains
  20380. \- Arguments: (Len=1)
  20381. \0- LiteralExpr: type=cstr, value=profile_dump_csv
  20382. |- Body: BlockBody: (N_Statements=1)
  20383. |0- CallExpr:
  20384. |- Method: NameExpr: 'orth$$internal$$profile$$install_profiler'
  20385. \- Arguments: (Len=0)
  20386. |21- AssignmentExpr (Operator='=')
  20387. |- LHS: DeclExpr: 'File fd'
  20388. \- RHS: CallExpr:
  20389. |- Method: NameExpr: 'File$$open'
  20390. \- Arguments: (Len=2)
  20391. |0- CallExpr:
  20392. |- Method: AccessorExpr (Mode=':')
  20393. |- Object: NameExpr: 'args'
  20394. \- Field: get
  20395. \- Arguments: (Len=1)
  20396. \0- LiteralExpr: type=int, value=1
  20397. \1- LiteralExpr: type=cstr, value=r
  20398. |22- AssignmentExpr (Operator='=')
  20399. |- LHS: DeclExpr: 'cstr contents'
  20400. \- RHS: CallExpr:
  20401. |- Method: AccessorExpr (Mode=':')
  20402. |- Object: NameExpr: 'fd'
  20403. \- Field: readall
  20404. \- Arguments: (Len=0)
  20405. |23- CallExpr:
  20406. |- Method: AccessorExpr (Mode=':')
  20407. |- Object: NameExpr: 'fd'
  20408. \- Field: close
  20409. \- Arguments: (Len=0)
  20410. |24- AssignmentExpr (Operator='=')
  20411. |- LHS: DeclExpr: 'Project proj'
  20412. \- RHS: CallExpr:
  20413. |- Method: AccessorExpr (Mode=':')
  20414. |- Object: CallExpr:
  20415. |- Method: AccessorExpr (Mode=':')
  20416. |- Object: CallExpr:
  20417. |- Method: AccessorExpr (Mode=':')
  20418. |- Object: CallExpr:
  20419. |- Method: AccessorExpr (Mode=':')
  20420. |- Object: CallExpr:
  20421. |- Method: AccessorExpr (Mode=':')
  20422. |- Object: CallExpr:
  20423. |- Method: AccessorExpr (Mode=':')
  20424. |- Object: CallExpr:
  20425. |- Method: AccessorExpr (Mode=':')
  20426. |- Object: CallExpr:
  20427. |- Method: NameExpr: 'shoc$$get_empty_project'
  20428. \- Arguments: (Len=0)
  20429. \- Field: with_base_tokens
  20430. \- Arguments: (Len=0)
  20431. \- Field: with_base_grammar
  20432. \- Arguments: (Len=0)
  20433. \- Field: with_base_passes
  20434. \- Arguments: (Len=0)
  20435. \- Field: with_arch_bits
  20436. \- Arguments: (Len=1)
  20437. \0- LiteralExpr: type=int, value=64
  20438. \- Field: with_base_types
  20439. \- Arguments: (Len=0)
  20440. \- Field: with_search_path
  20441. \- Arguments: (Len=1)
  20442. \0- NameExpr: 'search_path'
  20443. \- Field: with_options
  20444. \- Arguments: (Len=1)
  20445. \0- NameExpr: 'options'
  20446. |25- NameExpr: 'Node'
  20447. |26- AssignmentExpr (Operator='=')
  20448. |- LHS: NameExpr: 'node'
  20449. \- RHS: CallExpr:
  20450. |- Method: AccessorExpr (Mode=':')
  20451. |- Object: NameExpr: 'proj'
  20452. \- Field: process_project
  20453. \- Arguments: (Len=1)
  20454. \0- NameExpr: 'contents'
  20455. |27- FunctionBody: (N_Statements=8)
  20456. |0- CallExpr:
  20457. |- Method: AccessorExpr (Mode=':')
  20458. |- Object: NameExpr: 'node'
  20459. \- Field: print_root
  20460. \- Arguments: (Len=0)
  20461. |1- CallExpr:
  20462. |- Method: NameExpr: 'printf'
  20463. \- Arguments: (Len=1)
  20464. \0- LiteralExpr: type=cstr, value=\n\n
  20465. |2- AssignmentExpr (Operator='=')
  20466. |- LHS: DeclExpr: 'int i'
  20467. \- RHS: LiteralExpr: type=int, value=0
  20468. |3- WhileExpr:
  20469. |- Condition: BinOpExpr (Operator='<')
  20470. |- LHS: NameExpr: 'i'
  20471. \- RHS: CallExpr:
  20472. |- Method: AccessorExpr (Mode=':')
  20473. |- Object: AccessorExpr (Mode='.')
  20474. |- Object: NameExpr: 'proj'
  20475. \- Field: types
  20476. \- Field: num_keys
  20477. \- Arguments: (Len=0)
  20478. |- Body: BlockBody: (N_Statements=2)
  20479. |0- CallExpr:
  20480. |- Method: AccessorExpr (Mode=':')
  20481. |- Object: GroupingExpr: CastExpr (Target='OType')
  20482. \- Value: CallExpr:
  20483. |- Method: AccessorExpr (Mode=':')
  20484. |- Object: AccessorExpr (Mode='.')
  20485. |- Object: NameExpr: 'proj'
  20486. \- Field: types
  20487. \- Field: get_by_num
  20488. \- Arguments: (Len=1)
  20489. \0- NameExpr: 'i'
  20490. \- Field: print
  20491. \- Arguments: (Len=0)
  20492. |1- AssignmentExpr (Operator='+=')
  20493. |- LHS: NameExpr: 'i'
  20494. \- RHS: LiteralExpr: type=int, value=1
  20495. |4- IfExpr:
  20496. |- Condition: CallExpr:
  20497. |- Method: AccessorExpr (Mode=':')
  20498. |- Object: NameExpr: 'options'
  20499. \- Field: contains
  20500. \- Arguments: (Len=1)
  20501. \0- LiteralExpr: type=cstr, value=dump_node_types
  20502. |- Body: BlockBody: (N_Statements=2)
  20503. |0- CallExpr:
  20504. |- Method: NameExpr: 'printf'
  20505. \- Arguments: (Len=1)
  20506. \0- LiteralExpr: type=cstr, value=\n\n\n
  20507. |1- CallExpr:
  20508. |- Method: AccessorExpr (Mode=':')
  20509. |- Object: NameExpr: 'proj'
  20510. \- Field: show_types
  20511. \- Arguments: (Len=0)
  20512. |5- IfExpr:
  20513. |- Condition: CallExpr:
  20514. |- Method: AccessorExpr (Mode=':')
  20515. |- Object: NameExpr: 'options'
  20516. \- Field: contains
  20517. \- Arguments: (Len=1)
  20518. \0- LiteralExpr: type=cstr, value=profile_dump_csv
  20519. |- Body: BlockBody: (N_Statements=1)
  20520. |0- CallExpr:
  20521. |- Method: AccessorExpr (Mode='::')
  20522. |- Object: AccessorExpr (Mode='::')
  20523. |- Object: AccessorExpr (Mode='::')
  20524. |- Object: NameExpr: 'orth'
  20525. \- Field: internal
  20526. \- Field: profile
  20527. \- Field: dump_profiling_data_csv
  20528. \- Arguments: (Len=1)
  20529. \0- LiteralExpr: type=cstr, value=profile.csv
  20530. |6- CallExpr:
  20531. |- Method: AccessorExpr (Mode='::')
  20532. |- Object: NameExpr: 'mem'
  20533. \- Field: clean_up
  20534. \- Arguments: (Len=0)
  20535. \7- ReturnExpr: LiteralExpr: type=int, value=0
  20536.  
  20537.  
  20538. 1 P S_INT int 4 bytes
  20539. 1 P S_INT short 2 bytes
  20540. 1 P S_INT byte 1 bytes
  20541. 1 P S_INT long 8 bytes
  20542. 1 P S_INT xlong 16 bytes
  20543. 2 P U_INT uint 4 bytes
  20544. 2 P U_INT ushort 2 bytes
  20545. 2 P U_INT ubyte 1 bytes
  20546. 2 P U_INT ulong 8 bytes
  20547. 2 P U_INT uxlong 16 bytes
  20548. 3 P FLOAT float 8 bytes
  20549. 2 P U_INT bool 1 bytes
  20550. 4 P POINTER ptr 8 bytes
  20551. 4 P POINTER cstr 8 bytes
  20552. 0 P VOID void 0 bytes
  20553. 6 S STRUCT _STDReadIntBox 4 bytes {int i}
  20554. 6 S STRUCT MemArena 40 bytes {ptr allocation, int position, ptr last_alloc, int last_alloc_amount, int arena_size, int layer_id, MemArena _next}
  20555. 6 S STRUCT _StackNode 24 bytes {_StackNode _next, _StackNode _prev, cstr name}
  20556. 6 S STRUCT File 27 bytes {cstr path, cstr mode, bool writable, bool reached_eof, bool closed, ptr _file}
  20557. 6 S STRUCT Box_cstr 8 bytes {cstr val}
  20558. 6 S STRUCT Box_int 4 bytes {int val}
  20559. 6 S STRUCT Box_short 2 bytes {short val}
  20560. 6 S STRUCT Box_bool 1 bytes {bool val}
  20561. 6 S STRUCT Box_long 8 bytes {long val}
  20562. 6 S STRUCT Box_ptr 8 bytes {ptr val}
  20563. 6 S STRUCT _ArgList_CStrBox 8 bytes {cstr str}
  20564. 6 S STRUCT ArgList 0 bytes {}
  20565. 6 S STRUCT _ProfileEntry 56 bytes {_ProfileEntry _next, cstr fname, long total_time, long exclusive_time, long exc_entry_time, long tot_entry_time, int stack_count, int entrance_count}
  20566. 6 S STRUCT LinkedListNode 16 bytes {ptr value, LinkedListNode next}
  20567. 6 S STRUCT ListCacheBox 8 bytes {LinkedListNode node}
  20568. 6 S STRUCT List 22 bytes {int len, LinkedListNode head, ptr cache, bool cache_ready, bool cache_alloced}
  20569. 6 S STRUCT TokenType 37 bytes {cstr name, int simple_type, cstr simple_text, TokenMatcher func, List preceeded_opts, bool produce_token}
  20570. 6 S STRUCT Token 28 bytes {cstr text, TokenType type_, cstr origin_file, int origin_line}
  20571. 6 S STRUCT ProgressBar 26 bytes {int last_update, int steps, int out_of, int step, cstr text, bool reverse, bool finished}
  20572. 6 S STRUCT MapEntry 16 bytes {cstr key, ptr value}
  20573. 6 S STRUCT StrMap 0 bytes {}
  20574. 6 S STRUCT TransformerPass 3 2 bytes {cstr name, StrMap visitor_map, ptr extra_info, Project proj}
  20575. 6 S STRUCT Node 8 bytes {NodeType type_}
  20576. 6 S STRUCT Element 9 bytes {bool is_token, ptr thing}
  20577. 6 S STRUCT EleList 12 bytes {int position, List list}
  20578. 6 S STRUCT NodeType 64 bytes {cstr name, List things_i_am, NodePrinter printer, NodeDeleter deleter, NodeCreator creator, NodeVisitor child_visitor, int matcher_flags, int matcher_count, NodeMatcher matcher}
  20579. 6 S STRUCT AccessorExpr 32 bytes {NodeType type_, cstr mode, Node object, cstr field}
  20580. 6 S STRUCT AssignmentExpr 32 bytes {NodeType type_, cstr op, Node lhs, Node rhs}
  20581. 6 S STRUCT BinOpExpr 32 bytes {NodeType type_, cstr op, Node lhs, Node rhs}
  20582. 6 S STRUCT BlockBody 25 bytes {NodeType type_, List statements, bool has_runoff_clause, Node runoff_clause}
  20583. 6 S STRUCT CallExpr 24 bytes {NodeType type_, Node meth, List args}
  20584. 6 S STRUCT CastExpr 24 bytes {NodeType type_, Node value, cstr target}
  20585. 6 S STRUCT FunctionDeclHead 32 bytes {NodeType type_, List args, cstr name, cstr ret_type}
  20586. 6 S STRUCT FunctionBody 16 bytes {NodeType type_, List statements}
  20587. 6 S STRUCT FunctionDecl 24 bytes {NodeType type_, FunctionDeclHead head, List body}
  20588. 6 S STRUCT ZeroArgList 8 bytes {NodeType type_}
  20589. 6 S STRUCT OneArgList 16 bytes {NodeType type_, cstr text}
  20590. 6 S STRUCT MultiArgListStart 16 bytes {NodeType type_, cstr text}
  20591. 6 S STRUCT MultiArgListExt 16 bytes {NodeType type_, List args}
  20592. 6 S STRUCT MultiArgList 16 bytes {NodeType type_, List args}
  20593. 6 S STRUCT GroupingExpr 16 bytes {NodeType type_, Node contents}
  20594. 6 S STRUCT IfExprHead 17 bytes {NodeType type_, Node condition, bool is_elif}
  20595. 6 S STRUCT IfExpr 25 bytes {NodeType type_, Node condition, bool is_elif, BlockBody body}
  20596. 6 S STRUCT ImportStmt 16 bytes {NodeType type_, cstr name}
  20597. 6 S STRUCT IndexExpr 24 bytes {NodeType type_, Node value, Node array}
  20598. 6 S STRUCT IntrinsicExpr 16 bytes {NodeType type_, cstr name}
  20599. 6 S STRUCT LiteralExpr 24 bytes {NodeType type_, cstr value, cstr value_type}
  20600. 6 S STRUCT NameExpr 16 bytes {NodeType type_, cstr name}
  20601. 6 S STRUCT DeclExpr 16 bytes {NodeType type_, cstr name}
  20602. 6 S STRUCT ReturnExpr 17 bytes {NodeType type_, bool is_void, Node value}
  20603. 6 S STRUCT SepExpr 12 bytes {NodeType type_, int consumed}
  20604. 6 S STRUCT TupleEndFragment 16 bytes {NodeType type_, Node element}
  20605. 6 S STRUCT TupleMidFragment 16 bytes {NodeType type_, List elements}
  20606. 6 S STRUCT Tuple 16 bytes {NodeType type_, List elements}
  20607. 6 S STRUCT ZeroTuple 8 bytes {NodeType type_}
  20608. 6 S STRUCT OneTuple 16 bytes {NodeType type_, Node element}
  20609. 6 S STRUCT TypeDeclHead 27 bytes {NodeType type_, cstr name, bool is_type_alias, bool is_func_alias, bool packed, cstr alias_type}
  20610. 6 S STRUCT TypeDeclBody 16 bytes {NodeType type_, List statements}
  20611. 6 S STRUCT TypeDecl 24 bytes {NodeType type_, TypeDeclHead head, TypeDeclBody body}
  20612. 6 S STRUCT UnOpExpr 24 bytes {NodeType type_, cstr op, Node value}
  20613. 6 S STRUCT WhileExpr 24 bytes {NodeType type_, Node condition, BlockBody body}
  20614. 6 S STRUCT FileNode 16 bytes {NodeType type_, List statements}
  20615. 6 S STRUCT OType 20 bytes {int variety, cstr name, Project proj}
  20616. 6 S STRUCT PrimitiveOType 24 bytes {int variety, cstr name, Project proj, int size}
  20617. 6 S STRUCT FPtrOType 28 bytes {int variety, cstr name, Project proj, OType return_value}
  20618. 6 S STRUCT StructOType 29 bytes {int variety, cstr name, Project proj, bool packed, List fields}
  20619. 6 S STRUCT Project 60 bytes {List token_types, List node_types, List transformer_passes, StrMap options, int pointer_size, StrMap types, List search_path, List included_files}
  20620. 5 F F_PTR MemAllocator 8 bytes -> ptr
  20621. 5 F F_PTR MemDeallocator 8 bytes -> void
  20622. 5 F F_PTR MemCleaner 8 bytes -> void
  20623. 5 F F_PTR AddtlEnterExitCallback 8 bytes -> void
  20624. 5 F F_PTR SignalHandler 8 bytes -> void
  20625. 5 F F_PTR TokenMatcher 8 bytes -> int
  20626. 5 F F_PTR NodeTransformer 8 bytes -> Node
  20627. 5 F F_PTR NodeDeleter 8 bytes -> void
  20628. 5 F F_PTR NodePrinter 8 bytes -> void
  20629. 5 F F_PTR NodeVisitor 8 bytes -> void
  20630. 5 F F_PTR NodeCreator 8 bytes -> Node
  20631. 5 F F_PTR NodeMatcher 8 bytes -> int
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement