| ¾Þ¹«»õ :: PMC2C. ¾Þ¹«»õ :: PMC2C´Â C ÄÚµå »ý¼º¿¡ PMCÀÔ´Ï´Ù. |
Áö±Ý ´Ù¿î·Îµå |
¾Þ¹«»õ :: PMC2C. ¼øÀ§ ¹× ¿ä¾à
- ƯÇã:
- Perl Artistic License
- °Ô½ÃÀÚ À̸§:
- The Parrot Project Team
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://search.cpan.org/~ltoetsch/parrot-0.4.5/lib/Parrot/OpTrans.pm
¾Þ¹«»õ :: PMC2C. ű×
¾Þ¹«»õ :: PMC2C. ¼³¸í
PARROT :: PMC2C´Â C ÄÚµå »ý¼º¿¡ PMCÀÔ´Ï´Ù. PARROT :: PMC2C´Â C ÄÚµå »ý¼º¿¡ ´ëÇÑ PMCÀÔ´Ï´Ù. Synopsis »ç¿ë ¾Þ¹«»õ :: PMC2C; ¾Þ¹«»õ :: PMC2C (ÀÌ ÆÄÀÏ¿¡ Á¤ÀÇ µÈ ÇÏÀ§ Ŭ·¡½º)´Â Tools / Build / PMC2C.PL¿¡¼ PMC ÆÄÀÏ¿¡¼ C Äڵ带 »ý¼ºÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. functionsod_write ($ ¸Þ¼Òµå, $ ¼½¼Ç) ¸Þ¼Òµå writes.count_newlines ($ string)°¡ $ string.dont_edit ($ pMCFILE)ÀÇ newlines (n) ¼ö¸¦ ¹ÝȯÇÏ´ÂÁö ¿©ºÎ¸¦ ¸®ÅÏÇÕ´Ï´Ù. $ string.dont_edit ($ PMCFILE) "ÀÌ ÆÄÀÏÀ» ÆíÁýÇÏÁö ¸¶½Ê½Ã¿À"°æ°í ÅؽºÆ®¸¦ ¹ÝȯÇÕ´Ï´Ù. $ PMCFILEÀº ¿ø·¡ ¼Ò½ºÀÇ À̸§ÀÔ´Ï´Ù. * .pmc ÆÄÀÏÀÔ´Ï´Ù. Gen_ret ($ ¸Þ¼Òµå, $ body) º»¹®ÀÌ ºñ¾îÀÖ´Â °æ¿ì return ¹®¿¡ ´ëÇÑ C Äڵ带 »ý¼º ÇÑ ´ÙÀ½ ÇÊ¿äÇÒ °æ¿ì ij½ºÆ®¸¦ ¸¸µì´Ï´Ù.ÀÌ ¹æ¹ýÀº ÇÏÀ§ Ŭ·¡½º·Î °¡Á®¿É´Ï´Ù. class_name ($ self, $ class) PMC ($ self-> {class})¿¡ ´ëÇÑ ÀûÀýÇÑ ¾Þ¹«»õ :: PMC2C ¼ºê Ŭ·¡½º¸¦ ¸®ÅÏÇÕ´Ï´Ù. $ self´Â »õ () ¹× $ class´Â j $ library_nameÀÔ´Ï´Ù. $ library_nameÀº »ý¼º ÇÒ µ¿Àû ¶óÀ̺귯¸®ÀÇ À̸§ÀÔ´Ï´Ù. % Ŭ·¡½º´Â PMCÀÇÁöµµÀÔ´Ï´Ù. ´ýÇÁ Á¤º¸ (PMC ¸ÞŸ µ¥ÀÌÅÍ)¸¦ ´ýÇÁÇÏ´Â ÄÚµåÀÇ À̸§.ÀÌ ±â´ÉÀº exported.class ¸Þ¼Òµå new ($ self, $ opt)¸¦ »õ ÀνºÅϽº·Î $ self·Î µÇµ¹¸³´Ï´Ù. $ self´Â Çؽà ÂüÁ¶ evedÀÔ´Ï´Ù. *. * .pmc ÆÄÀÏ¿¡¼ Tools / Build / PMC2C.PL¿¡¼ »ý¼º µÈ .dump ÆÄÀÏ. PARROT :: PMC2C ::::: Ç¥ÁØ ¶Ç´Â ´Ù¸¥ Ư¼ö PMCS Áß Çϳª ÀÎ Blass-Ed (±âº», Delegate, Null, Ref ¶Ç´Â SharedRef). $ opt´Â Çؽà ÂüÁ¶ÀÔ´Ï´Ù. methodline_directive ($ self, $ Çà, $ file) #line Áö½Ã¾î¿¡ ´ëÇÑ C »çÀü ÇÁ·Î¼¼¼ ¹®ÀÚ¿À» »ý¼ºÇϰųª $ self-{opt} {nolines}>ÀÌ true ÀÎ °æ¿ì ºó ¹®ÀÚ¿ÀÔ´Ï´Ù. line_diractive_here ($ self, $ Ãâ·Â, $ file)Àº C ¹Ì¸®¸¦ »ý¼ºÇÕ´Ï´Ù. #line Áö½Ã¾îÀÇ ÇÁ·Î¼¼¼ ¹®ÀÚ¿Àº output.get_vtable_section ()ÀÇ ´ÙÀ½ ¹°¸®Àû ÇàÀ¸·Î ÄÄÆÄÀÏ·¯ÀÇ Çà ¹øÈ£¸¦ Àç¼³Á¤ÇÏ¿© VTable ¼½¼ÇÀ» Æ÷ÇÔÇÏ´Â ¸ðµç ¸Þ¼Òµå À̸§ÀÇ Çؽø¦ ÀÛ¼ºÇÕ´Ï´Ù. init ()¿¡¼ È£ÃâµË´Ï´Ù. make_const ($ class) PMC°¡ const_too Ç÷¡±× ¼¼Æ®°¡ÀÖ´Â °æ¿ìÀÌ ¸Þ¼Òµå°¡ init ()¿¡¼ Àбâ Àü¿ë Set ¸Þ¼µå¸¦ ¸¸µå´Â µ¥ È£ÃâµË´Ï´Ù .init ($ class) ÀνºÅϽº¸¦ ÃʱâÈÇÕ´Ï´Ù. $ class´Â class.decl ($ classname, $ method, $ for_header)ÀÔ´Ï´Ù. PMC ¸Þ¼Òµå ¼±¾ð¿¡ ´ëÇÑ C Äڵ带 ¸®ÅÏÇÕ´Ï´Ù. $ for_header´Â Äڵ尡 Çì´õ ¶Ç´Â ±¸Çö file.includes ()¿¡ ´ëÇÑ Äڵ尡 PMCÀÇ superclasses.full_arguments ($ args)ÀÇ Çì´õ ÆÄÀÏ¿¡ ´ëÇØ c #Include¸¦ ¹ÝȯÇÕ´Ï´Ù. interp, self to args.proto ($ type , $ ÆĶó¹ÌÅÍ) ¸Þ¼Òµå º»¹®¿¡ ´ëÇÑ ÇÁ·ÎÅä ŸÀÔ (Àμö ¼¸í)À» °áÁ¤ÇÕ´Ï´Ù (src / call_list ÂüÁ¶) .rewrite_nci_method ($ class, $ method, $ super, $ super_table) nci ¸Þ¼Òµå ¹Ùµð¿¡ ´ëÇÑ ´Ù¾çÇÑ ¸ÅÅ©·Î ´ëü¸¦ ¼öÇàÇÏ´Â ¹æ¹ý º»¹®À» ´Ù½Ã ÀÛ¼ºÇÕ´Ï´Ù ( µµ±¸ / ºôµå / pmc2c.pl ÂüÁ¶) .rewrite_vtable_method ($ class, $ method, $ super, $ super_table) VTable ¸Þ¼Òµå ¹Ùµð¿¡ ´ëÇÑ ´Ù¾çÇÑ ¸ÅÅ©·Î ´ëü¸¦ ¼öÇàÇÏ´Â ¹æ¹ý º»¹®À» ´Ù½Ã ÀÛ¼ºÇÕ´Ï´Ù (µµ±¸ / ºôµå / pmc2c.pl) .body ( $ ¸Þ¼Òµå, $ line, $ out_name) ¸Þ¼Òµå º»¹®ÀÇ C Äڵ带 µ¹·ÁÁÝ´Ï´Ù. $ out_nameÀº »ý¼ºµÇ´Â Ãâ·Â ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. vtable ¸Þ¼ÒµåÀÇ C Äڵ带 ¹ÝȯÇÕ´Ï´Ù. $ out_nameÀÌ »ý¼ºµÇ´Â Ãâ·Â ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. ÁÖ¾îÁø PMC À¯ÇüÀÌ µ¿ÀûÀ¸·Î·ÎµåµÇ°Å³ª NOT.INIT_FUNC ( PMCÀÇ ÃʱâÈ ¹æ¹ý¿¡ ´ëÇÑ C ÄÚµå ¶Ç´Â PMC°¡ NO_INIT FLAG.GEN_C ($ out_name)°¡ÀÖ´Â °æ¿ì ºó ¹®ÀÚ¿À» ¹ÝȯÇÕ´Ï´Ù. PMCÀÇ C ±¸Çö ÆÄÀÏ Äڵ带 »ý¼ºÇÕ´Ï´Ù. $ out_nameÀº »ý¼ºµÇ´Â Ãâ·Â ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù .hdecls ()´Â PMCÀÇ C Çì´õ ÆÄÀÏ¿¡ Æ÷ÇÔÇÏ´Â ¸ðµç ¸Þ¼Òµå¿¡ ´ëÇÑ ¸ðµç ¸Þ¼Òµå¿¡ ´ëÇÑ C ÄÚµå ±â´É ¼±¾ðÀ» ¸®ÅÏÇÕ´Ï´Ù. MMD Variants.gen_h ($ out_name)´Â C Çì´õ ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù. PMCÀÇ ÄÚµå. $ out_nameÀº »ý¼ºµÇ´Â Ãâ·Â ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù.ÀÌ Å¬·¡½º´Â $ method.implements_vtable ($ method) ¸Þ¼ÒµåÀÇ Äڵ带 »ý¼ºÇÏ´Â °æ¿ì trueÀÌ Å¬·¡½º°¡ Vtable ¸Þ¼Òµå ¿ë Äڵ带 »ý¼ºÇÏ´Â °æ¿ì trueÀÔ´Ï´Ù. ¿ä±¸ »çÇ× : ¡¤ Perl.
¾Þ¹«»õ :: PMC2C. °ü·Ã ¼ÒÇÁÆ®¿þ¾î