iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
自我挑戰組

C again系列 第 6

尋找 parse ruby code 的地方

  • 分享至 

  • xImage
  •  
  1. parser 實作在 codegen 產生的 parse.c,呼叫裡面的 function。function 太多命名看不出進入點是哪個,先找一個大概知道是做什麼的,例如 parse_string() 應該就是處理 string 的
  2. parse_string()parser_yylex() 內被呼叫,看 parser_yylex() 內一堆 switch case 的確是讀 char 來 match grammar rules 的 function
  3. parser_yylex()yylex() 內被呼叫
  4. yylexyyparse 內被呼叫
  5. yyparseyycompile0 內被呼叫
  6. yycompile0yycompile 內被呼叫
  7. yycompileparser_compile_string, rb_parser_compile_file_path, rb_parser_compile_generic 呼叫。到此出現多個選項,先用 parser_compile_string 看看
  8. parser_compile_string 一路經過 rb_parser_compile_string_path, rb_parser_compile_string, process_options, ruby_process_options, ruby_options
  9. ruby_options 是在 rb_main() 中,所以先前的疑惑是錯的,main() 的確是 entry,裡面才會 parse ruby code 成 AST

上一篇
rb_iseq_struct 與問題
下一篇
ruby_options()
系列文
C again30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言