मेरे पास कोड का यह टुकड़ा है जिसमें एक camlp4 उद्धरण शामिल है।प्रिंटिंग ओकैमल एएसटी ओकैमल कोड
let f_name = "my_func"
<:str_item< value $lid:f_name$ a = a * 2 >>
camlp4of
के माध्यम से इस चलाने के बाद, यह इस का उत्पादन:
Ast.StExp (_loc,
(Ast.ExApp (_loc,
(Ast.ExApp (_loc, (Ast.ExId (_loc, (Ast.IdLid (_loc, "=")))),
(Ast.ExApp (_loc,
(Ast.ExApp (_loc,
(Ast.ExId (_loc, (Ast.IdLid (_loc, "value")))),
(Ast.ExId (_loc, (Ast.IdLid (_loc, f_name)))))),
(Ast.ExId (_loc, (Ast.IdLid (_loc, "a")))))))),
(Ast.ExApp (_loc,
(Ast.ExApp (_loc, (Ast.ExId (_loc, (Ast.IdLid (_loc, "*")))),
(Ast.ExId (_loc, (Ast.IdLid (_loc, "a")))))),
(Ast.ExInt (_loc, "2")))))))
मेरा प्रश्न यह है, वहाँ वैसे भी उत्पन्न ocaml कोड मुद्रित करने के लिए है? कोड दिखाने के लिए camlp4of
कमांड या विकल्प का उपयोग करना चाहिए? मैं उपरोक्त उदाहरण से क्या देखने की उम्मीद करता हूं:
value my_func a = a * 2
क्या यह संभव है? इसका कारण यह है कि मैं यह देखने के लिए कुछ डिबगिंग करना चाहता हूं कि उत्पन्न ओकंपल कोड कैसा दिखता है।
फ़ंक्शन 'Camlp4.PreCast.Printers.OCaml.print_implem' केवल' str_item' पर काम करता है। क्या कोई अन्य प्रिंटर है जो 'एक्सप्र' प्रिंट कर सकता है? –
हुक के तहत, निश्चित रूप से, लेकिन वे 'प्रिंटर' इंटरफ़ेस के माध्यम से प्रकट नहीं हुए हैं। बस अपनी अभिव्यक्ति को 'let _ =' str_item के रूप में लपेटने के बारे में क्या? प्रकारों के लिए आप 'foo = ' इत्यादि भी कर सकते हैं। –
gasche