· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
hre

1.1. ¼Ò°³

ÇÑ±Û Á¤±ÔÇ¥Çö½Ä ¶óÀ̺귯¸®´Â C ÄÚµå·Î ÀÛ¼ºµÇ¾úÀ¸¸ç, ±âÁ¸ ASCII ±â¹ÝÀÇ Á¤±Ô Ç¥Çö½ÄÀÌ °¡Áö´Â "¸ÖƼ¹ÙÀÌÆ® charset" ¿¡ ´ëÇÑ À߸øµÈ 󸮿¡ ´ëÇØ, 100% ¿Ïº®ÇÏ°Ô Ã³¸®ÇÕ´Ï´Ù. ÇöÀç ÀÌ ÇÁ·ÎÁ§Æ®ÀÇ ¸ñÇ¥´Â POSIX Á¤±Ô Ç¥Çö½ÄÀ» ÁؼöÇÏ´Â ¶óÀ̺귯¸®¸¦ ¸¸µå´Â °ÍÀÌ ¸ñÇ¥ÀÌ´Ù. ÇöÀç v0.9.8 ¿¡ µé¾î¿Í¼­ Character class ¸¦ Á¦¿ÜÇÑ POSIX "extended regular expressions" ¸¦ ¸ðµÎ ó¸®ÇÒ ¼ö ÀÖÀ¸¸ç, Á¡Â÷ÀûÀ¸·Î POSIX "basic regular expressions" ¶ÇÇÑ Áö¿øÇÒ °èȹ¿¡ ÀÖ´Ù.

ÇÑ±Û Á¤±ÔÇ¥Çö½Ä ¶óÀ̺귯¸®´Â v0.9 ¹öÀü´ë¿¡ µé¾î¿Í¼­ ÇѱÛÀÇ Æ¯Â¡´ë·Î Ãʼº, Áß¼º, Á¾¼ºÀ» °¢ÀÚ Ã³¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÔÀ¸·Î½á, ÇѱÛÀ» Á» ´õ À¯¿¬ÇÏ°Ô Ç¥ÇöÇÒ ¼ö ÀÖµµ·Ï ±¸ÇöÇÏ¿´À¸¸ç, ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¾Æ·¡ÀÇ "ÇÑ±Û Á¤±Ô Ç¥Çö½Ä" ¿¡¼­ ¼³¸íµÇ¾î ÀÖÀ¸´Ï, ÂüÁ¶Çϱ⠹ٶõ´Ù. ÇÁ·ÎÁ§Æ® ȨÆäÀÌÁö´Â http://kldp.net/projects/hre¿¡ ÀÚ¸®Àâ°í ÀÖ´Ù.
  • ÇÁ·Î±×·¥ »óÀÇ ¹ö±×°¡ ÀÖÀ» °æ¿ì, [http]¹®Á¦Á¡ ÃßÀûÀÇ Bugs ¿¡ ±ÛÀ» ³²°Ü ÁÖ¼¼¿ä.
  • °³¹ßÀÚÀÇ Áö¿øÀÌ ÇÊ¿äÇÒ °æ¿ì, [http]¹®Á¦Á¡ ÃßÀûÀÇ Support Requests ¿¡ ±ÛÀ» ³²°Ü ÁÖ¼¼¿ä.
  • HRE¿¡ ´ëÇÑ ÆÐÄ¡¸¦ ¸¸µå½Å ºÐÀÌ °è½Ã´Ù¸é [http]¹®Á¦Á¡ ÃßÀû ÀÇ Patchs ¿¡ ±ÛÀ» ³²°Ü ÁÖ¼¼¿ä.
  • HRE¿¡ Ãß°¡µÇ¾úÀ½ ÇÏ´Â ±â´ÉÀÌ ÀÖÀ¸½Ã´Ù¸é ¹®Á¦Á¡ ÃßÀû]ÀÇ Feature Requests ¿¡ ±ÛÀ» ³²°Ü ÁÖ¼¼¿ä.

1.1.1. Ư¡

  • <Ãʼº,Áß¼º,Á¾¼º> ÇüÅÂÀÇ ÇÑ±Û Á¤±Ô Ç¥Çö½Ä Áö¿ø (HRE »ç¿ëÀÚ ¹®¼­ÀÇ ÇÑ±Û Á¤±Ô Ç¥Çö½ÄÀ» Âü°í)
  • ¸ÖƼ ¹ÙÀÌÆ® ÄÚµå (ÇѱÛ, ÀϺ»¾î, Unicode µîµî) ¿¡ ´ëÇÑ Á¤È®ÇÑ DFA Äڵ带 ÀÛ¼º
  • ¿Ï¼ºÇü, Á¶ÇÕÇü, Unicode (ÇöÀç UTF-8 ¸¸ Å×½ºÆ®µÊ) Á¤±Ô Ç¥Çö½Ä Áö¿ø (´Ü, ÀÎÄÚµùÀ» È¥ÇÕÇؼ­ »ç¿ëÇÑ ¹®¼­ÀÇ °æ¿ì, ã´Â °úÁ¤¿¡¼­ À߸øµÈ °á°ú¸¦ µµÃâÇÒ ¼ö Àֱ⠶§¹®¿¡, ÃßõÇÏÁö ¾ÊÀ½. ÇÏÁö¸¸ °¡´ÉÇÔ.)
  • v0.9.6 ¿¡ µé¾î¿À¸é¼­ ¸ðµç Ç¥Çö½Ä¿¡¼­ À¯´ÏÄÚµå »ç¿ë °¡´É.
  • v0.9.8 ¿¡ µé¾î¿À¸é¼­ POSIX "extended regular expressions" ¸¦ Áö¿øÇÏ°Ô µÇ¾ú´Ù. ÇÏÁö¸¸ ¾ÆÁ÷ ¾Æ·¡¿Í °°Àº Character classes ´Â Áö¿øÇÏÁö ¾Ê´Â´Ù.
[:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:]
[:graph:] [:lower:] [:print:] [:space:] [:upper:]

1.1.1.1. Áö¿øÇÏ´Â platform µé

ÇöÀç ÇÑ±Û Á¤±ÔÇ¥Çö½Ä ¶óÀ̺귯¸®¿¡¼­ ¼º°øÀûÀ¸·Î Å×½ºÆ®µÈ platform Á¤º¸´Â ¾Æ·¡¿Í °°´Ù. (´Ù¸¥ Arch ȤÀº OS, Lang ¿¡¼­ ¼º°øÀûÀ¸·Î Å×½ºÆ® ¿Ï·á¸¦ ÇϽŠºÐÀº ¾Æ·¡¿¡ Ãß°¡ÇØ ÁÖ½Ã¸é ´ë´ÜÈ÷ °¨»çÇÏ°Ú½À´Ï´Ù. ÄÚµå ¼öÁ¤ÀÌ ÀÖ¾úÀ» °æ¿ì, °³¹ßÀڵ鿡°Ô ¸ÞÀÏ·Î ÆÐÄ¡¸¦ º¸³»ÁÖ¼¼¿ä.)
  • Architecture
    • ix86
  • Operating System
  • Language
    • C
    • Python

1.1.1.2. ±âÁ¸ (¿µ¾î?) Á¤±Ô Ç¥Çö½ÄÀÇ ¹®Á¦Á¡

¿©±â¿¡¼­´Â °³¹ßÀÚ°¡ ¿Ö ÇÑ±Û Á¤±Ô Ç¥Çö½ÄÀ» ¸¸µé°Ô µÇ¾ú´ÂÁö¿¡ ´ëÇؼ­ ª°Ô À̾߱âÇÏ·Á°í ÇÑ´Ù. ±âÁ¸ grep À̳ª, egrep µî ´Ù¸¥ ¿©Å¸ Á¤±Ô Ç¥Çö½ÄÀ» »ç¿ëÇÒ °æ¿ì, ´ëºÎºÐÀÇ °÷¿¡¼­ ÇѱÛÀ» Á¦´ë·Î ó¸®ÇÏÁö ¸øÇÑ´Ù´Â »ç½ÇÀ» È®ÀÎÇÒ ¼ö Àִµ¥, ¿¹¸¦ µé¾î,
$ grep "[°¡³ª´Ù]"
¿Í °°Àº ¹®¹ýÀÌ ÀÖ´Ù°í °¡Á¤À» ÇßÀ» ¶§, ¹®¹ýÀûÀÎ Àǹ̴ ºñ·Ï "°¡", "³ª", "´Ù" Áß ¸ÅÄ¡µÇ´Â °ÍÀ» ¼±ÅÃÇÏ°íÀÚ ÇÏ´Â ÀǵµÀÌÁö¸¸, ½ÇÁ¦ Çغ¼ °æ¿ì, "¶ó" µµ ÀνÄÀÌ µÈ´Ù. ¿Ö³ÄÇϸé, grep ¿¡¼­´Â ÇѱÛÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡, "°¡", "³ª", "´Ù" ÀÇ Ã¹¹ÙÀÌÆ®, µÎ¹ø° ¹ÙÀÌÆ®¿¡ ´ëÇÑ °¢°¢ÀÇ Ç¥ÇöÀ» ÀνÄÇϱ⠶§¹®ÀÌ´Ù. Áï ¹­¾î¼­ ÇÑ±Û ÇÑ character ·Î ÀνÄÇÏÁö ¸øÇϴµ¥, ÀÌ°ÍÀº 1 ¹ÙÀÌÆ® ÀÌ»óÀ» »ç¿ëÇÏ´Â ¸ðµç ±¹°¡¿¡¼­ ±âÁ¸ Á¤±Ô½ÄÀ» ±×´ë·Î »ç¿ëÇÒ ¼ö ¾ø´Â ÀÌÀ¯Áß ÇϳªÀÌ´Ù. (ÀϺ»¾îµµ 2 ¹ÙÀÌÆ®ÀÌÁö¸¸ ÀڽŵéÀÇ ³ë·ÂÀ¸·Î ÀÌ ¹®Á¦¸¦ ÇØ°áÇÑ µí ÇÏ´Ù.) ÀÌ·¯ÇÑ ¹®Á¦Á¡Àº ¿©·¯ Á¤±Ô½Ä ´ëºÎºÐ¿¡¼­ ¹ß»ýÇϴµ¥, "°¡*", "°¡+", "°¡?", "°¡{3,5}" µîµî ´ëºÎºÐÀÇ Á¤±Ô½Ä Ç¥ÇöÀÌ ¸ÖƼ ¹ÙÀÌÆ® Äڵ带 °¡Áö´Â ±ÛÀÚ¿¡ ´ëÇؼ­´Â ó¸®ÇÏÁö ¸øÇÏ´Â°Ô Çö½ÇÀÌ´Ù. ÀÌ·¯ÇÑ ¹®Á¦Á¡À» ÇØ°áÇϱâ À§Çؼ­ ÀÌ Á¤±Ô Ç¥Çö½Ä ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇÏ°Ô µÇ¾ú´Ù. ÇöÀç CVS ¹öÀü¿¡¼­´Â POSIX ÀÇ "Basic regular expression" ÀÌ ¿øÇÏ´Â ±â´É¿¡ ´ëÇؼ­ ¸ðµÎ ±¸ÇöµÇ¾î ÀÖÀ¸¸ç, ÀÌÁ¦ °¢ BRE, ERE ¸¦ Á¶°Ç¿¡ ¸Â°Ô ¹è¿­ÇÏ´Â °Í¸¸ ó¸®Çϸé, °ð v1.0 ÀÌ µÉ °ÍÀÌ´Ù.

1.1.2. ´ÜÁ¡

  • <¤¡-¤¾,¤¿-¤Ó,¤¡-¤¾> °ú °°Àº ÇüÅÂÀÇ ¹üÀ§¸¦ Á¤ÇÒ °æ¿ì, ÇѱÛÀÇ ¸ðµç ±ÛÀÚ 11742 ÀÚ¸¦ ó¸®ÇØ¾ß Çϱ⠶§¹®¿¡, CPU ÀÇ ¼Óµµ¿¡ µû¶ó, ÇÑ±Û ÀÎÄÚµù¿¡ µû¶ó Â÷ÀÌ°¡ ³¯ ¼ö Àִµ¥, È®Àå ¿Ï¼ºÇüÀÇ °æ¿ì, PIII 600Mhz ¿¡¼­
Testing in15...
ÀԷ ǥÇö½Ä : [&lt;¤¡-¤¾,¤¿-¤Ó,¤¡-¤¾>]
ÀÔ·Â ¹®ÀÚ¿­ : aaaaa°­aa
Execution times (seconds)
Process Syntax        :   0.23 (1150%) usr   0.02 ( 0%) sys   0.25 (1253%) wall
Apply form            :   0.01 (50%) usr   0.00 ( 0%) sys   0.01 (50%) wall
Form State            :   0.13 (650%) usr   0.00 ( 0%) sys   0.13 (651%) wall
TOTAL                 :   0.02             0.00             0.02
0~1 ÃÊ°¡ ¼ÒÀ¯µÇ¸ç, À¯´ÏÄÚµåÀÇ °æ¿ì,
Testing in16...
ÀԷ ǥÇö½Ä : [&lt;????????????]
ÀÔ·Â ¹®ÀÚ¿­ : aaaaaaaaê°&#48626;aaaaaaaa
Execution times (seconds)
Process Syntax        :   1.75 (8750%) usr   0.02 ( 0%) sys   1.77 (8868%) wall
Apply form            :   0.02 (100%) usr   0.00 ( 0%) sys   0.02 (100%) wall
Form State            :   0.74 (3700%) usr   0.00 ( 0%) sys   0.90 (4509%) wall
TOTAL                 :   0.02             0.00             0.02
1~3 ÃÊ°¡ ¼ÒÈ¿µÈ´Ù. (ÃÖÀûÈ­°¡ Àý½ÇÈ÷ ÇÊ¿ä, HRE »ç¿ëÀÚ ¹®¼­ÀÇ ÇÑ±Û Á¤±Ô Ç¥Çö½ÄÀ» Âü°í)

1.1.3. ERE ¿Í HRE ÀÇ Â÷ÀÌÁ¡

POSIX "extended regular expressions" (ÀÌÇÏ ERE) ¿Í HRE (ÇÑ±Û Á¤±ÔÇ¥Çö½Ä ¶óÀ̺귯¸®) ¿¡´Â ¾à°£ Â÷ÀÌ°¡ Á¸ÀçÇÑ´Ù. ERE ¿¡ ´ëÇؼ­´Â [http]Regexp Syntax Summary¿¡¼­ °³·«ÀûÀ¸·Î È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç, ¾Æ·¡¿¡¼­´Â ERE ¿Í HREÀÇ Â÷ÀÌÁ¡¸¸ ¾ð±ÞÇϵµ·Ï ÇÏ°Ú´Ù.
  • ¸ÞŸ¹®ÀÚ . ÀÇ Àǹ̰¡ Á¶±Ý ´Ù¸¨´Ï´Ù.
    ERE ¿¡¼­´Â ¸ÞŸ¹®ÀÚ . ÀÇ¹Ì¿Í HRE ¿¡¼­ÀÇ ¸ÞŸ¹®ÀÚ . Àǹ̴ »ç½Ç °°Àº Àǹ̸¦ °¡ÁöÁö¸¸, hre_search () ÇÔ¼öÀÇ ·çƾÀ¸·Î ÀÎÇØ, ½ÇÁ¦ »ç¿ëÀÚ°¡ ã°íÀÚ ÇÏ´Â ¹®ÀÚ¿­À» ãÀ» ¶§ ´Ù¸¥ Àǹ̸¦ °¡Áö°Ô µÈ´Ù. Áï, HRE¿¡¼­ÀÇ ¸ÞŸ¹®ÀÚ . ´Â ¿ÀÁ÷ 1 ¹ÙÀÌÆ® ¹®ÀÚ¸¦ À§ÇÑ °ÍÀÌ´Ù. ¿¹Á¦·Î½á ¼³¸íÇÏ´Â °ÍÀÌ Á» ´õ ÀÌÇØÇϱâ ÆíÇÑ °Í °°´Ù.
  • Á¤±Ô½Ä °¡.³ª °¡ ÀÖ´Ù°í °¡Á¤À» ÇßÀ» ¶§, °¡a³ª´Â valid ÇÏÁö¸¸, °¡³ª³ª´Â À¯È¿ÇÏÁö ¾Ê´Ù.
  • ERE ¿¡ Á¸ÀçÇÏÁö ¾Ê´Â "ÇÑ±Û ¹üÀ§ Ç¥Çö½Ä"ÀÌ Á¸ÀçÇÑ´Ù. ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ¾Æ·¡ÀÇ "ÇÑ±Û Á¤±Ô Ç¥Çö½Ä"¿¡ ÀÚ¼¼È÷ ¼³¸íµÇ¾î ÀÖ´Ù.
  • °¡{0,2}¿Í °°Àº ¹Ýº¹ Ç¥Çö½ÄÀ» ³ªÅ¸³¾ °æ¿ì, { ¿Í } »çÀÌ¿¡ ¿À°ÔµÇ´Â ¼ýÀÚ´Â ERE ¿Í´Â ´Þ¸®, 0 ~ 9 »çÀ̸¸ ¹üÀ§¸¦ Á¤ÇÒ ¼ö ÀÖ´Ù.
ÀÌ ¿ÜÀÇ ºÎºÐÀº ¸ðµÎ ERE ¿Í °°´Ù. ÇöÀç HRE¿¡¼­, ERE ¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¾Æ·¡¿Í °°Àº Äڵ带 hre_compile () ÇÔ¼ö¸¦ ½ÇÇàÇϱâ Àü¿¡ Ãß°¡Çؼ­ ¼³Á¤ÇØ Áà¾ß ÇÑ´Ù.
HRE_OPTIONS_MODE (&option) = HRE_MODE_ERE;

1.2. ¹®¼­µé

1.2.1. HRE »ç¿ëÀÚ ¹®¼­

(hre¸¦ ÀÚ½ÅÀÇ application ¿¡ È°¿ëÇÏ½Ç ºÐÀº ÀÌ ¹®¼­¸¦ ÂüÁ¶Çϼ¼¿ä.)

1.2.1.1. ¼³Ä¡ ¹æ¹ý ¹× Á¦°Å

1.2.1.1.1. C
  • ¼³Ä¡ (v0.9.6d ÀÌ»ó)
    $ tar xvvzf hre-version.tar.gz
    $ cd hre-version
    $ ./configure
    $ make
    $ make check
    # make install
    
(Cygwin ¿¡¼­µµ À§¿Í °°Àº ¹æ¹ýÀ¸·Î ¼³Ä¡ °¡´ÉÇÏ´Ù.) make install ½Ã configure °úÁ¤¿¡¼­ --prefix ¸¦ ÁöÁ¤ÇØ ÁÖÁö ¾ÊÀ» °æ¿ì, libhre.a ´Â /usr/local/lib ¿¡, hre.h ÆÄÀÏÀº /usr/local/include/hre/hre.h ¿¡ ¼³Ä¡µÈ´Ù.
  • ¼³Ä¡ (v0.9.6d ÀÌÇÏ ¹öÀü)
    $ tar xvzf hre-version.tar.gz
    $ cd hre-version
    $ make
    $ make check
    
v0.9.6d ÀÌÇÏ ¹öÀüÀ» »ç¿ëÇÒ °æ¿ì ÀÚ½ÅÀÇ application ¿¡ Ãß°¡ÇÏ´Â ¹æ¹ý Áß ÆÄÀÏ Ãß°¡ ¹æ¹ý (make install ¸¦ ÅëÇؼ­ /usr/local/ ¿¡ ¼³Ä¡ÇÏÁö ¾ÊÀ» °æ¿ì) ´ë·Î »ç¿ëÇؾßÇÑ´Ù.
  • Á¦°Å
    $ make clean
    $ make uninstall
    
1.2.1.1.2. Python
  • ¼³Ä¡ (v0.1 - Unix)
    1. ¿ì¼± À§ÀÇ "C" ¾ð¾î ÆÐÅ°ÁöÀÎ HRE¸¦ ¸ÕÀú À§ÀÇ ¹æ¹ý´ë·Î ¼³Ä¡ÇØ¾ß ÇÑ´Ù. (¿Ö³ÄÇϸé, Python È®Àå ¸ðµâÀº
libhre.a ¿Í hre.h ¿¡ ÀÇÁ¸Çϱ⠶§¹®ÀÌ´Ù.) ¼³Ä¡¸¦ Çß´Ù¸é, ¾Æ·¡¿Í °°Àº ¹æ¹ýÀ¸·Î python È®Àå ¸ðµâÀ» ¼³Ä¡ÇÑ´Ù.
$ tar xvvzf pyhre-version.tar.gz
$ cd pyhre-version
$ python setup.py build
$ python test.py
$ python test_suite.py
# python setup.py install
  • ¼³Ä¡ (v0.1 - Windows)
    dist µð·ºÅ丮ÀÇ ÇØ´ç ÆÄÀ̽㠹öÀüÀÇ exe¸¦ ½ÇÇàÇÏ¸é µÈ´Ù.
¸¸¾à MinGW¸¦ ÀÌ¿ëÇؼ­ Á÷Á¢ ÄÄÆÄÀÏ ÇÏ°íÀÚ ÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. python setup.py build --compiler=mingw32 bdist_wininst

1.2.1.2. ÀÚ½ÅÀÇ application ¿¡ Ãß°¡ÇÏ´Â ¹æ¹ý

* ÆÄÀÏ Ãß°¡ ¹æ¹ý (make install ¸¦ ÅëÇؼ­ /usr/local/ ¿¡ ¼³Ä¡ÇÏÁö ¾ÊÀ» °æ¿ì)
  • make install À» ÅëÇؼ­ »ý¼ºµÈ libhre.a ÆÄÀÏ°ú hre.h ÆÄÀÏÀ» ÀÚ½ÅÀÇ application ¿¡ º¹»çÇÑ´Ù.
  • hre_compile () ¿Í hre_search (), hre_free () ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©, app ³»¿¡ ±¸ÇöÇÑ´Ù. (ÆÐÅ°Áö³»¿¡ µé¾î ÀÖ´Â sample.c ÆÄÀÏÀ» ÂüÁ¶.)
     #include "hre</B>.h"
    
¿Í °°Àº hre.h ÆÄÀÏÀ» ÀÚ½ÅÀÇ application ¿¡ Ãß°¡ÇÏ¿©¾ß ÇÑ´Ù.
  • ÆÄÀÏ Ãß°¡ ¹æ¹ý (/usr/local/ ȤÀº make install À» ÅëÇؼ­ ½Ã½ºÅÛ µð·ºÅ丮¿¡ ¼³Ä¡ÇÑ °æ¿ì)
  • make install À» ÅëÇؼ­ ½Ã½ºÅÛ µð·ºÅ丮¿¡ º¹»çÇÑ´Ù.
  • hre_compile () ¿Í hre_search (), hre_free () ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©, app ³»¿¡ ±¸ÇöÇÑ´Ù. (ÆÐÅ°Áö³»¿¡ µé¾î ÀÖ´Â sample.c ÆÄÀÏÀ» ÂüÁ¶.) ´Ü, ¿©±â¼­ À§¿Í ´Ù¸¥ Á¡Àº hre.h ÀÇ include °æ·Î Â÷ÀÌÀÌ´Ù.
#include <hre/hre.h>;
make installÀ» ÅëÇؼ­ ½Ã½ºÅÛ µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ¿´À¸¹Ç·Î À§¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
  • Routine Ãß°¡ ¹æ¹ý
    Á¤±Ô Ç¥Çö½ÄÀÇ type Àº hre_t À̸ç, ºÎ°úÀûÀ¸·Î µé¾î°¥ ¼ö ÀÖ´Â ¿É¼Ç¿¡ ´ëÇÑ type Àº hre_option_t ÀÌ´Ù. (ÇöÀç hre_option_t ³»ºÎ¿¡´Â Á¤ÀÇµÈ °ÍÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.) ÇÑ±Û Á¤±Ô Ç¥Çö½Ä ¶óÀ̺귯¸®ÀÇ »ç¿ëÀº ´ÙÀ½°ú °°Àº ´Ü°è·Î ó¸®ÇÑ´Ù.
  • Á¤±Ô½Ä ÄÄÆÄÀÏ ´Ü°è
    »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ Á¤±Ô½ÄÀ» ¹ÙÅÁÀ¸·Î »óŵµ¸¦ ±¸¼ºÇÏ¿© °á°úÀûÀ¸·Î hre_t ¿¡ DFA Å×À̺í Á¤º¸¸¦ ³Ö´Â °ÍÀ» ÀǹÌÇÑ´Ù.
  • ã±â ´Ü°è
ã±â¸¦ ¿øÇÏ´Â ¹®ÀÚ¿­°ú ¾Õ¿¡¼­ ±¸¼ºÇÑ DFA Å×À̺íÀ» ¹ÙÅÁÀ¸·Î pattern °ú ¸Â´Â ¹®ÀÚ¿­À» ã´Â´Ù.
  • Release ´Ü°è
    DFA Å×À̺íÀ» ±¸¼ºÇÏ°Ô µÇ¸é ±âº»ÀûÀ¸·Î ¸Þ¸ð¸® ÇÒ´çÀ» ÇÏ°Ô µÇ´Âµ¥, »ç¿ëµÈ ¸Þ¸ð¸®¸¦ ¸ðµÎ release ÇÑ´Ù.
ÀÚ¼¼ÇÑ ¿¹Á¦ÀÇ °æ¿ì, ÆÐÅ°Áö³»¿¡ µé¾î°¡ ÀÖ´Â sample.c ÆÄÀÏÀ» »ìÆ캸±â ¹Ù¶õ´Ù.

1.2.1.3. ÇÑ±Û Á¤±Ô Ç¥Çö½Ä

KLDP ¿¡¼­ ÇÑ±Û Á¤±Ô Ç¥Çö½ÄÀÇ ³íÀÇ°¡ ÀÖ¾ú´Âµ¥, ±× ±ÛÀº [http]°Å±â :) ¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç, ÇÑ±Û Á¤±Ô Ç¥Çö½Ä ¶óÀ̺귯¸®¿¡¼­ Ç¥ÇöÇÏ´Â ¹æ½ÄÀº "À͸í"ÀÇ »ç¿ëÀÚ°¡ ¾Ë·Á ÁֽŠ¹æ¹ýÀ» ¸ðÅ·ΠÇÑ´Ù. ¹°·Ð ±× ¶§ ¿Ã¸®½Å ¹æ¹ý°ú ¾à°£ Â÷ÀÌ°¡ ÀÖ´Ù. ÀÌÀü ±× ±ÛÀº ¾Æ·¡¿Í °°Àº ³»¿ëÀÌ´Ù. ÀÏ´Ü ¿µ¾î Á¤±Ô½Ä ¾²µíÀÌ ÇÑ±Û Á¤±Ô½ÄÀ» ¸¸µå´Â °ÍÀº º°·Î È¿°ú°¡ ¾ø´Ù°í º¾´Ï´Ù. ¿µ¾î³ª ÀϺ»¾î ¸ðµÎ, ±ÛÀÚ ÇϳªÇϳª°¡ ÃÖ¼Ò ´ÜÀ§ÁÒ. (¹°·Ð ÀϺ»¾î´Â 2¹ÙÀÌÆ®ÀÔ´Ï´Ù¸¸, À½Àý ÃßÃ⠺κи¸ ÀÖ´Ù¸é °á°úÀûÀ¸·Î Å« Â÷ÀÌ´Â ¾ø½À´Ï´Ù.) ÇÏÁö¸¸, ÇѱÛÀº ÇÑ ±ÛÀÚ°¡ ±âº»ÀûÀ¸·Î À½¼Ò°¡ Á¶ÇÕµÇ¾î »ý±â±â ¶§¹®¿¡, ±×°ÍÀ» µû·Î ó¸®Çϱâ Èûµì´Ï´Ù. ¼³·É ºÐ¸®´Â ÇÒ ¼ö ÀÖÁö¸¸, ±×°ÍÀ» ¸¶À½´ë·Î Á¶ÇÕÇÏ´Â °ÍÀº ¶Ç ´Ù¸¥ ¹®Á¦ÁÒ. ƯÁ¤ Ãʼº, Á¾¼º ¸î°¡Áö¿¡ ƯÁ¤ Áß¼ºÀ» Á¶ÇÕÇÑ´Ù°í ÇÒ ¶§, ±ÛÀÚ¸¸ Ä¡´Â °ÍÀ¸·Î´Â ¹®Á¦°¡ ÀÖ½À´Ï´Ù. (ÃʼºÀÌ ¤¡, ¤¤, ¤§, ¤©, ¤±, Áß¼ºÀÌ ¤¿, ¤Á, ¤À, ¤Ã, ¤Å, ¤Ä, Á¾¼ºÀÌ ¤¡, ¤¤, ¤©ÀÎ Á¶°ÇÀ» »ý°¢ÇØ º¸¼¼¿ä. À½Àý·Î´Â °ÅÀÇ ºÒ°¡´ÉÇÏÁÒ.) °³ÀÎÀûÀ¸·Î´Â Á¤±Ô½Ä ¾È¿¡ ±¸ºÐ ±âÈ£¸¦ ÀÌ¿ëÇؼ­ ÃÊ, Áß, Á¾¼ºÀ» µû·Î ºÐ¸®ÇÏ´Â °ÍÀÌ ÁÁÀ» °Í °°±º¿ä. ±×·¸´Ù¸é
  1. À§ÀÇ °æ¿ì - [¤¡-¤±,¤¿¤Á¤À¤Ã¤Å¤Ä,¤¡¤¤¤©]
  2. ÀÚÀ½ ¸ðµÎ - [¤¡-¤¾]
  3. ¸ðÀ½ ¸ðµÎ - [,¤¿-¤Ó]
  4. Ãʼº,Áß¼ºÀ¸·Î ÀÌ·ç¾îÁø ±Û ¸ðµÎ - [¤¡-¤¾,¤¿-¤Ó]
  5. °¡±î³ª´Ùµû¶ó¸¶¹Ùºü»ç½Î¾ÆÀÚÂ¥Â÷īŸÆÄÇÏ - [¤¡-¤¾,¤¿]
  6. Ãʼº,Áß¼º,Á¾¼º Áß Áß¼ºÀÌ ¤Ñ°¡ µé¾î°¡´Â ¸ðµç ±Û - [¤¡-¤¾,-,¤¡-¤¾]
    ±×¸®°í °ýÈ£ ¾È¿¡¼­µµ °°Àº ¹æ¹ýÀ¸·Î ±¸ºÐ ±âÈ£¸¦ ÀÌ¿ëÇؼ­ ÃÊ, Áß, Á¾¼ºÀ» Ç¥½ÃÇÕ´Ï´Ù.
±×·¯´Ï±î °ýÈ£ µîÀÇ ¾È¿¡¼­ ±¸ºÐ ±âÈ£¸¦ ¾²¸é ±×°ÍÀÌ ÃÊ, Áß, Á¾¼ºÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.
  1. ¤¡À¸·Î ½ÃÀÛÇÏ´Â ±ÛÀÚ´Â ¤¿~¤Ã, ¤¤À¸·Î ½ÃÀÛÇÏ´Â ±ÛÀÚ´Â ¤Ç~¤Ì - (¤¡,¤¿-¤Ã)(¤¤,¤Ç-¤Ì)
¾ÆÁ÷ ºÎÁ·ÇÑ Á¡ÀÌ ¸¹Àº °Í °°Àºµ¥ ¿©·¯ºÐÀº ¾î¶»°Ô »ý°¢ÇϽôÂÁö ±Ã±ÝÇϱº¿ä. ¾ÆÁ÷ ÇÑ±Û Á¤±Ô Ç¥Çö½Ä ½Ä¿¡ ´ëÇÑ Ç¥ÁؾÈ? ÀÌ ÀüÇô Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡, °³¹ßÀÚ°¡ ¿©·¯ ÀÇ°ßÀ» ÀÐÀ½À¸·Î½á Ç¥ÁؾÈ? À» ¸¸µé ¼ö ¹Û¿¡ ¾ø¾úÀ¸¸ç, ÇöÀç HRE ¿¡¼­ »ç¿ëµÇ´Â ¹æ¹ýÀº ¾Æ·¡¿Í °°´Ù. (±âº»ÀûÀΠƲ¿¡¼­´Â "À͸í" ´ÔÀÇ ÀÇ°ßÀ» µû¶ú´Ù.)

[<Ãʼº,Áß¼º,Á¾¼º>]
[ ~ ] ¸ÞŸ¹®ÀÚ³» ÇÑ±Û Ç¥ÇöÀº ¹Ýµå½Ã '<' ¿Í '>' »çÀÌ¿¡ ¿Í¾ß Çϸç, 'Ãʼº' ¹× 'Áß¼º', 'Á¾¼º'Àº °¢°¢ ´ÙÀ½°ú °°Àº ¹üÀ§ Ç¥ÇöÀ» ÇÒ ¼ö ÀÖ´Ù.
¿¹1) ¤¡-¤¾
¿¹2) ¤¿-¤Á
¿¹3) ¤¡¤¤¤§¤±-¤¾
¿¹4) ¤¡-¤§¤¾¤§
¶ÇÇÑ Ãʼº, Áß¼º, Á¾¼º Áß ¹üÀ§ Ç¥ÇöÀ» »ý·«ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¹Ýµå½Ã ',' ´Â Ç×»ó ºÙ¿©ÁÖ¾î¾ß ÇÑ´Ù. Áï ÇÑ±Û Ç¥Çö½Ä¿¡ ´ëÇÑ ÃÖ¼ÒÀÇ Ç¥Çö½ÄÀº <,,> °¡ µÇ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Á¶ÇÕÀ» ÅëÇؼ­ Ç¥ÇöÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°Àº ¹æ¹ýÀÌ ÀÖÀ» ¼ö ÀÖ°Ú´Ù.
  • [<¤¡-¤§,,>]
    ¿ÀÁ÷ ÃʼºÀÌ ¤¡ ~ ¤§ ÀÎ °Í. ¿¹) ¤¡, ¤¤, ¤§
  • [<¤¡¤¤¤±,¤¿-¤Æ,>]
    ÃʼºÀÌ ¤¡ ȤÀº ¤¤, ¤± ÀÌ°í, Áß¼ºÀÌ ¤¿ ~ ¤Æ ÀÏ ¼ö ÀÖ´Â °Í. ¿¹) °¡, °è, ¸ï, °¼, µîµî
  • [<¤¡,¤¿,¤¡-¤§>] ÃʼºÀÌ ¤¡ ÀÌ°í, Áß¼ºÀÌ ¤¿, Á¾¼ºÀÌ ¤¡ ~ ¤§ ÀÎ ¹®ÀÚµé. ¿¹) °¢, °¤ µîµî
  • [<,¤¿-¤Ó,>]
    ¿ÀÁ÷ Áß¼ºÀÌ ¤¿ ~ ¤Ó »çÀÌÀÎ °Í. ¿¹) ¤¿, ¤Á, ¤Æ, ¤Å, ¤Ó µîµî
  • [<¤¡,¤¿-¤Ó,¤¡-¤¾>]
    ÃʼºÀÌ '¤¡' ÀÎ ¸ðµç ¹®ÀÚ. ¿¹) °¢, °¾, °ß µîµî
  • [<¤¡-¤¾,¤Á,¤¡-¤¾>]
    Áß¼ºÀÌ '¤Á' ÀÎ ¸ðµç ¹®ÀÚ. ¿¹) °½, °¾, ¾à µîµî
  • [<¤¡-¤¾,¤¿-¤Á,¤¡>]
    Á¾¼ºÀÌ '¤¡' ÀÎ ¸ðµç ¹®ÀÚ
  • [<¤¡,¤¿,><¤¤,¤Á,>]
~ ¸ÞŸ ¹®ÀÚ³»¿¡ µÎ ÇÑ±Û Á¤±Ô Ç¥Çö½ÄÀ» »ç¿ëÇÑ °æ¿ì. ¹°·Ð ¿µ¾î¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
  • [ab-cd<¤¡,¤¿,>g-h<¤¤,¤Á,>xy-z]
    ¿µ¹®°ú ÇѱÛÀ» °°ÀÌ È¥ÇÕÇؼ­ »ç¿ëÇÑ ¿¹Á¦.
  • [<,,¤¡-¤§>] !!! ÀÌ·± Ç¥Çö½ÄÀº Á¸ÀçÇÒ ¼ö ¾ø´Ù. ÇÑ±Û Äڵ忡´Â Á¾¼ºÀ¸·Î ±¸¼ºµÈ ÇÑ±Û ÄÚµå ÀÚü°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. !!!
  • [<,¤¿¤Á,¤¤¤§>]
    !!! ÀÌ·± Ç¥Çö½Ä ¶ÇÇÑ Á¸ÀçÇÒ ¼ö ¾ø´Ù. ÇÑ±Û Äڵ忡´Â ÃʼºÀÌ ¾ø´Â ÇÑ±Û ÄÚµå´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù. !!!
  • [<¤¡,,¤§>]
    !!! ÀÌ·± Ç¥Çö½Ä ¶ÇÇÑ Á¸ÀçÇÒ ¼ö ¾ø´Ù. ÇÑ±Û Äڵ忡´Â Áß¼ºÀÌ ¾ø´Â ÇÑ±Û ÄÚµå´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù. !!!
À§ÀÇ ¿¹Á¦µé¿¡¼­µµ ¾Ë¼ö ÀÖµíÀÌ, ¾î¶°ÇÑ °æ¿ì¶óµµ <,,> ÇüÅ´ À¯ÁöÇÏ°í ÀÖ´Ù´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ±âº»ÀûÀ¸·Î 'Ãʼº' ¹× 'Áß¼º', 'Á¾¼º' ºÎºÐÀÌ ºñ¾îÀÖÀ» °æ¿ì, ÇØ´ç ¹®ÀÚ°¡ ¾ø´Â ÇѱÛÀ» °Ë»öÇÏ°íÀÚ ÇÑ´Ù.

!!!ÁÖÀÇ!!! ÇÑ±Û Á¤±Ô Ç¥Çö½ÄÀ» »ç¿ëÇÒ °æ¿ì, °¡Àå ¹®Á¦½Ã µÉ ¼ö ÀÖ´Â ºÎºÐÀÌ ÇÑ±Û Á¤±Ô½ÄÀÇ compile ½Ã°£Àε¥, <¤¡-¤¾,¤¿-¤Ó,¤¡-¤¾> ¿Í °°Àº ¸ðµç ÇѱÛÀ» ó¸®Çϵµ·Ï ¼³Á¤ÇÑ´Ù¸é, È®Àå ¿Ï¼ºÇüÀÇ ¸ðµç ±ÛÀÚÀÎ 11742 ±ÛÀÚ¸¦ ¸ðµÎ ó¸®ÇØ¾ß Çϱ⠶§¹®¿¡, ¿µ¹®ÀÚ¸¦ ó¸®ÇÏ´Â Á¤±Ô Ç¥Çö½Ä ¶óÀ̺귯¸®¿Í ÁúÀûÀ¸·Î ½Ã°£Â÷ÀÌ°¡ ³¯ ¼ö ¹Û¿¡ ¾ø´Ù. ±×·¡¼­ »ç¿ëÀÚ´Â ÇÑ±Û Á¤±Ô Ç¥Çö½ÄÀ» »ç¿ëÇÒ ¶§ ÃÖ¼ÒÇÑÀÇ ÇÑ±Û (Áï, ÀÚ½ÅÀÌ Ã£°íÇÏ ÇÏ´Â ÇÑ±Û ¹üÀ§ÀÇ °¡Àå ÀÛÀº °Í) À» ¼±ÅÃÇÏ¿© performance ¿¡ ½Å°æÀ» ¾µ ÇÊ¿ä°¡ ÀÖ´Ù. ¸ô·Ð ÃßÈÄ ¹öÀü¿¡¼­´Â ÀÌ¿¡ ´ëÇÑ ÃÖÀûÈ­¸¦ ¼öÇàÇϵµ·Ï ÄÚµå °³¼±À» ÇÒ °ÍÀÌ´Ù.

1.2.1.4. »ç¿ëÀÚ ÇÔ¼ö ¼³¸í

ÇÑ±Û Á¤±Ô Ç¥Çö½Ä ¶óÀ̺귯¸®¿¡¼­ »ç¿ëÀÚ°¡ ÀÌ ¶óÀ̺귯¸®¸¦ »ç¿ëÇϱâ À§Çؼ­ ¾Ë¾Æ¾ß ÇÏ´Â ÇÔ¼ö´Â ¸ðµÎ 3 °³°¡ Á¸ÀçÇϴµ¥, °¢ ÇÔ¼öÀÇ ¼³¸íÀ» ÇÏ¸é ¾Æ·¡¿Í °°´Ù.
  • Á¤±Ô½Ä ÄÄÆÄÀÏ ´Ü°è (hre_compile () ÇÔ¼ö)
    hre_t hre_compile (const char *re, hre_option_t option) À§¿Í °°Àº ¿øÇüÀ» °¡Áö¸ç, »ç¿ëÀÚ°¡ RE ¿¡ ÀÚ½ÅÀÌ Ã£°íÀÚ ÇÏ´Â Regular Expression À» ³Ö°í, OPTION ¿¡´Â ¿øÇÏ´Â ¿É¼ÇÀ» ³Ö´Â´Ù. ¸¸¾à hre_compile () ÀÌ ½ÇÆÐÇÒ °æ¿ì, NULL À» ¹ÝȯÇÏ°Ô µÈ´Ù. ÇöÀç Á¤ÀǵǾî ÀÖ´Â OPTION ¿¡´Â ´ÙÀ½°ú °°Àº ºÎºÐÀÌ ÀÖ´Ù. (ÇöÀç v0.9.8 ¿¡¼­´Â ERE ¸¸ Áö¿øÇÏ°í ÀÖ´Ù.)
  • ERE ¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¾Æ·¡¿Í °°Àº OPTION À» ¼³Á¤ÇØ¾ß ÇÑ´Ù.
HRE_OPTIONS_MODE (&option) = HRE_MODE_ERE;
  • ã±â ´Ü°è (hre_search () ÇÔ¼ö)
    int hre_search (hre_t dfa, const char *str) hre_compile () ÇÔ¼ö¸¦ ÅëÇؼ­ »ý¼ºµÈ DFA Å×À̺íÀº hre_t ¿¡ µé¾î°¡ ÀÖ°Ô µÇ¸ç, DFA ´Â hre_compile () ÇÔ¼ö°¡ ¹ÝȯÇÑ °ªÀ», STR ¿¡´Â DFA ÆÐÅÏ°ú ¸ÅÄ¡µÇ´Â ¹®ÀÚ¿­À» ã°íÀÚ ÇÏ´Â ¹®ÀÚ¿­À» ³Ö´Â´Ù. hre_search () ÇÔ¼ö°¡ DFA ÆÐÅÏ°ú ¸ÅÄ¡µÇ´Â °ÍÀ» ãÀ» °æ¿ì, ¸ÅÄ¡µÈ ¹®ÀÚ¿­ÀÇ ³¡ µÞºÎºÐÀ» °¡¸£Å°°Ô µÈ´Ù. ¿¹¸¦ µé¸é,
DFA : abc
STR : babcd
À§¿Í °°ÀÌ DFA °¡, "abc" ÀÌ°í, ¹®ÀÚ¿­ÀÌ "babcd" ÀÏ °æ¿ì, hre_search () ÇÔ¼ö´Â 4 ¸¦ ¹ÝȯÇÑ´Ù. Áï 4 ´Â STR ÀÇ 'c' ¸¦ °¡¸£Å²´Ù. ¸¸¾à match µÇ´Â ¹®ÀÚ¿­À» ãÀ» ¼ö ¾øÀ» °æ¿ì, -1 À» ¹ÝȯÇÑ´Ù.
  • Release ´Ü°è (hre_free () ÇÔ¼ö)
    void hre_free (hre_t dfa) hre_compile () ÇÔ¼ö¸¦ ½ÇÇàÇÏ¿© hre_t ¸¦ µ¹·Á¹ÞÀ» °æ¿ì, hre_t ¸¦ À§ÇØ ÇÒ´çµÈ ¸Þ¸ð¸®µéÀÌ Á¸ÀçÇϴµ¥, ÀÌ DFA Å×À̺íÀ» ½Ã½ºÅÛ¿¡ release ÇÑ´Ù. (free ÇÑ´Ù.)
½ÇÁ¦ À§ »ç¿ëÇÑ ¿¹Á¦¸¦ ¾ð±ÞÇÑ´Ù¸é, ¾Æ·¡¿Í °°ÀÌ ±¸¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. (Á» ´õ ÀÚ¼¼ÇÏ°í ½ÇÁúÀûÀÎ ¿¹Á¦´Â src/sample.c ¿Í test_suite/main.c ¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖ´Ù.)
#include &lt;hre/hre.h&gt;
#define SUCCESS_EXIT_CODE 1
#define FATAL_EXIT_CODE (44 | 0x10000000)
/* Á¤±Ô Ç¥Çö½Ä ¶óÀ̺귯¸®ÀÇ phony main ÇÔ¼ö.  */
int
main (argc, argv)
int argc;
char *argv[];
{
int i;
char *re = &quot;[&lt;¤¡,¤¿,&gt;&lt;¤§,¤¿,&gt;]&quot;;
char *str = &quot;´Ù&quot;;
hre_t test;
hre_option_t option;
HRE_OPTIONS_MODE (&amp;option) = HRE_MODE_ERE;
/* »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ Á¤±Ô½ÄÀ» ÄÄÆÄÀÏÇÑ´Ù.  */
if (!(test = hre_compile (re, option)))
{
printf (&quot;Á¤±Ô Ç¥Çö½Ä¿¡ ¿À·ù°¡ Á¸ÀçÇÕ´Ï´Ù.\n&quot;);
return (FATAL_EXIT_CODE);
}
if (HDFA_ERRNO (test))
{
fprintf (stderr, &quot;ERROR NUMBER = %d\n&quot;, HDFA_ERRNO (test));
hre_free (test);
}
/* Ã£±â.  ¹Ýȯ°ªÀÌ -1 ÀÌ ¾Æ´Ò °æ¿ì ÆÐÅÏÀ» ãÀº °ÍÀ̸ç, ¹Ýȯ°ªÀº ãÀº ÆÐÅÏÀÇ
³¡À» °¡¸£Å°°í ÀÖ´Ù.  */
i = hre_search (test, str);
if (i == -1)
{
printf (&quot;ÆÐÅÏ°ú ¸Â´Â ¹®ÀÚ¿­À» ãÁö ¸øÇÏ¿´½À´Ï´Ù.\n&quot;);
return (FATAL_EXIT_CODE);
}
/* ¸Þ¸ð¸® ¸±¸®Áî */
hre_free (test);
printf (&quot;ÀÔ·ÂÇÑ Á¤±Ô Ç¥Çö½Ä : %s\n&quot;, re);
printf (&quot;ºñ±³ÇÑ ¹®ÀÚ¿­      : %s\n&quot;, str);
printf (&quot;ãÀº À§Ä¡          : %d\n&quot;, i);
return (SUCCESS_EXIT_CODE);
}

1.2.2. HRE °³¹ßÀÚ ¹®¼­

(hre¸¦ ´Ù¸¥ °÷¿¡ ÀÀ¿ë ¹× Æ÷ÆÃÀ» ÇÏ½Ç ºÐµéÀº ÀÌ ¹®¼­¸¦ ÂüÁ¶Çϼ¼¿ä.)

1.2.2.1. HRE CVS build ¹æ¹ý

CVS ¿¡ Á¸ÀçÇÏ´Â ÃÖ½ÅÀÇ ÆÐÅ°Áö¸¦ ´Ù¿î·Îµå ¹Þ¾Æ ¼³Ä¡ÇÏ´Â ºÎºÐ±îÁö ¼³¸íÀ» ÇÏ¿´´Ù.
$ mkdir temporary
$ cd temporary
¿ì¼± ÀÓÀÇÀÇ ºó µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù.
$ CVSROOT=:ext:username@cvs.kldp.net:/cvsroot/hgre
°³¹ßÀÚÀÏ °æ¿ì, À§¿Í °°ÀÌ ¼³Á¤ÇÏ°í, Anonymous ÀÏ °æ¿ì ¾Æ·¡¿Í °°ÀÌ ¼³Á¤ÇÑ´Ù.
$ CVSROOT=:pserver:anonymous@cvs.kldp.net:/cvsroot/hre
$ cvq -q login
Anonymous ÀÏ °æ¿ì, ·Î±×ÀÎ ÇÒ ¶§ ¾ÏÈ£¸¦ ¹¯´Âµ¥, ±×³É ¿£ÅÍÄ¡¸é µÈ´Ù. ÀÌÈĺÎÅÍ´Â ±×´ë·Î ÀÔ·ÂÇصµ ¹«¹æÇÒ °ÍÀÌ´Ù.
$ cvs -q checkout -P hre
$ cd hre
$ aclocal
$ autoheader
$ automake -a
À§ÀÇ automake ¸¦ ½ÇÇàÇÏ´Â °úÁ¤¿¡¼­ ¿À·ù°¡ ¹ß»ýÇÒ ¼ö Àִµ¥, ¿À·ù°¡ ¹ß»ýÇÒ °æ¿ì, ´Ù½Ã Çѹø ´õ ½ÇÇàÇØ ÁÖ¸é µÈ´Ù. ¿À·ù°¡ ¹ß»ýÇÏÁö ¾ÊÀ» ¶§ ±îÁö ½ÇÇàÇÑ´Ù.
$ autoconf
$ ./configure
$ make
$ make check

1.2.2.2. HRE ó¸® ÀýÂ÷

hre ¿¡¼­ »ç¿ëÀÚ ÀÔ·ÂÀ» ¹Þ¾Æµé¿© DFA Å×À̺íÀ» ¸¸µå´Â °úÁ¤Àº ´ÙÀ½°ú °°´Ù.
  • »ç¿ëÀÚ ÀÔ·Â Çؼ® ´Ü°è (parser)
    ÀÌ ´Ü°è¿¡¼­´Â »ç¿ëÀÚ (Á¤±Ô Ç¥Çö½Ä ¶óÀ̺귯¸®¸¦ ÀÚ½ÅÀÇ app ¿¡ »ç¿ëÇÏ´Â »ç¶÷) °¡ ÀÔ·ÂÇÑ Á¤±Ô Ç¥Çö½ÄÀ» Çؼ®ÇÏ¿©, "Ç¥Çö½Ä" À» ¸¸µé¾î ³»´Âµ¥, ÀÌ·¯ÇÑ Ç¥Çö½ÄÀº debug_equation () ÇÔ¼ö¸¦ ÅëÇؼ­ Ãâ·ÂÇØ º¼ ¼ö ÀÖ´Ù.
  • ¸ÖƼ ¹ÙÀÌÆ® ÄÚµå ºÐ¸® ´Ü°è
    ÀÌ ´Ü°è¿¡¼­´Â ¾Õ¿¡¼­ ¸¸µç "Ç¥Çö½Ä" À» ¹ÙÅÁÀ¸·Î Àç±Í È£ÃâÀ» Çϸç IDENTIFIER °¡ 1 ¹ÙÀÌÆ® ÀÌ»óÀÎÁö, Áï, ÇÑ±Û ÄÚµå (Á¶ÇÕÇü, (È®Àå) ¿Ï¼ºÇü, À¯´ÏÄÚµå) ÀÎÁö¸¦ È®ÀÎÇÑ ÈÄ, ÀÌ°ÍÀº ¹ÙÀÌÆ® ¼ø¼­´ë·Î "Ç¥Çö½Ä" À» ¼öÁ¤ÇÏ°Ô µÈ´Ù. Áï ÇѱÛÀÇ DFA »ý¼º¹æ¹ý°ú ¿µ¾îÀÇ DFA »ý¼º¹æ¹ý¿¡´Â ¾à°£ÀÇ Â÷ÀÌ°¡ Á¸ÀçÇÑ´Ù.
  • »óŵµ (automata) »ý¼º ´Ü°è
    ¾Õ¿¡¼­ »ý¼ºÇÑ "Ç¥Çö½Ä"À» ¹ÙÅÁÀ¸·Î "»óŵµ"¸¦ ¸¸µå´Â ´Ü°è·Î debug_state () ÇÔ¼ö¸¦ ÅëÇؼ­ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
  • ÇÕº´ (merging) ´Ü°è
    »óŵµ¿¡ ´ëÇÑ ÇÕº´À» ÇÏ¿©, Å×À̺í Å©±â¸¦ ÃÖ´ëÇÑ ÁÙÀδÙ.
  • DFA »ý¼º ´Ü°è
    À§¿¡¼­ »ý¼ºÇÑ "»óŵµ" ¸¦ ¹ÙÅÁÀ¸·Î hre_t ¿¡ ½ÇÁúÀûÀÎ DFA Å×À̺íÀ» ³Ö´Â´Ù.

1.2.2.3. Debugging

ÀÔ·ÂµÈ Á¤±Ô Ç¥Çö½ÄÀº b°¡*a ÀÌ´Ù.
  • »ç¿ëÀÚ ÀÔ·Â Çؼ® ´Ü°è (parser)
    [aso@debian /My_All/dev/hre]
    $ gdb hre
    GNU gdb 6.0
    Copyright 2003 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This GDB was configured as "i686-pc-linux-gnu"...
    (gdb) b hre_apply_multi_form
    Breakpoint 1 at 0x80498ad: file hre.c, line 616.
    (gdb) r
    Starting program: /My_All/dev/hre/hre
    Breakpoint 1, hre_apply_multi_form (p=0x80cc8d8, last_rhs=5) at hre.c:616
    616       if (EQU_VALUE (TREE_EQU_TAB_N (p, last_rhs)))
    (gdb) p debug_equation (p, p.last_rhs, 0)
    E5   -> E0 & E4
    E0   -> b
    E4   -> E2 & E3
    E2   -> E1 *
    E1   -> °¡
    E3   -> a
    $1 = void
    (gdb)
    
  • ¸ÖƼ ¹ÙÀÌÆ® ÄÚµå ºÐ¸® ´Ü°è
    [aso@debian /My_All/dev/hre]
    $ gdb hre
    GNU gdb 6.0
    Copyright 2003 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This GDB was configured as "i686-pc-linux-gnu"...
    (gdb) b hre_form_state
    Breakpoint 1 at 0x804a0a0: file hre.c, line 807.
    (gdb) r
    Starting program: /My_All/dev/hre/hre
    Breakpoint 1, hre_form_state (p=0x80cc8d8) at hre.c:807
    807       TREE_ITEM_BUF (p) = 0;
    (gdb) p debug_equation (p, p.last_rhs, 0)
    E5   -> E0 & E4
    E0   -> b
    E4   -> E2 & E3
    E2   -> E1 *
    E1   -> E8 | E9
    E8   -> E6 & E7
    E6   -> 0xb0
    E7   -> 0xa1
    E9   -> [zero]
    E3   -> a
    $1 = void
    (gdb)
    
  • »óŵµ (automata) »ý¼º ´Ü°è (hre_form_state () ÇÔ¼ö ³¡ºÎºÐ¿¡¼­ È£ÃâµÉ °æ¿ì, Àüü ¸®½ºÆ®¸¦ Ãâ·ÂÇÑ´Ù.)
(gdb) b hre_form_state
....
....
(gdb) p debug_state (p, sp)
-------+-------+-------+-------+-------+-------+-------+------
Ŭ·¡½º |±æÀÌ   |*SList | SMRL  |Empty  |Shift  |Sh.lhs |Sh.rhs
-------+-------+-------+-------+-------+-------+-------+------
3 |     1 | 14  0 | 0000  |     0 |     1 | 0xa1    |  1
2 |     1 | 11  0 | 0000  |     1 |     0 |       |
1 |     1 |  4  0 | 0000  |     0 |     2 |  a 0xb0 |  2  3
0 |     1 |  5  0 | 0000  |     0 |     1 |  b    |  1
-------+-------+-------+-------+-------+-------+-------+------
(gdb)

1.3. ´Ù¿î·Îµå ¹× CVS

* [http]http://kldp.net/project/showfiles.php?group_id=497 ¿¡¼­ ´Ù¿î·Îµå °¡´É * [http]http://kldp.net/scm/?group_id=497 ¿¡¼­ CVS È®ÀÎ °¡´É

1.3.1. ¸±¸®Áî Á¤º¸

1.3.2. v0.9.8a

* ¼Ö¸®¸®½º¿¡¼­ ¹ß»ýÇÏ´Â ¹ö±× Á¦°Å.

1.3.3. v0.9.8

  • ERE Áؼö.
  • ERE Ç¥ÁØ Áؼö Å×½ºÆ® ·ê¼Â
  • ±âÁ¸ test suite ±³Ã¼.

1.3.4. v0.9.7

  • $ ¸ÞŸ¹®ÀÚ Ã³¸® Ãß°¡.
  • . ¸ÞŸ¹®ÀÚ Ã³¸® Ãß°¡.
  • ^ ¸ÞŸ¹®ÀÚ Ã³¸® Ãß°¡.
  • [^ ~ ] ¸ÞŸ¹®ÀÚ Ã³¸® Ãß°¡.
  • hre_search () ³» ¹ö±× ¼öÁ¤.

1.3.5. v0.9.6f

* ÇÑ±Û ¹üÀ§ Ç¥Çö½Ä ¼Óµµ °³¼± (<¤¡-¤¾,¤¿-¤Ó,¤¡-¤¾> ÀÇ ¿Ï¼ºÇüÀº 1 ÃÊ, À¯´ÏÄÚµå´Â 3~4ÃÊ°¡ ¼ÒÀ¯.) * À¯´ÏÄÚµå ¹× ¿Ï¼ºÇü Å×À̺í Á¤º¸ ¼öÁ¤.

1.3.6. v0.9.6e

* libhre.a »Ó¸¸ ¾Æ´Ï¶ó, libhre.so ÆÄÀÏ »ý¼º.

1.3.7. v0.9.6d

* autoconf È­µÈ HRE ¹öÀüÀÌ´Ù. (make install ½Ã /usr/local/include/, /usr/local/lib/ ÇÏÀ§ µð·ºÅ丮¿¡ hre.h ÆÄÀÏ°ú libhre.a ÆÄÀÏÀÌ °¢°¢ º¹»çµÈ´Ù.)

1.3.8. v0.9.6a

* ÇÑ±Û ¹üÀ§ Ç¥Çö½Ä ¼Óµµ °³¼±.

1.3.9. v0.9.6

* ÇÑ±Û ¹üÀ§ Ç¥Çö½Ä¿¡¼­ Áö¿øÇÏÁö ¾Ê´ø À¯´ÏÄÚµå Áö¿ø. (ÀÌÁ¦ Áö¿øÇÏ´Â ¸ðµç Ç¥Çö½Ä¿¡¼­ È®Àå ¿Ï¼ºÇü°ú, À¯´ÏÄڵ带 »ç¿ëÇÒ ¼ö ÀÖÀ½.)

1.3.10. v0.9.5a

* Cygwin ¿¡¼­ ÀÛ¾÷ÇÏ´Ù »ý±ä CRLF Á¦°Å. (¹ö±× ¸®Æ÷ÆÃÀ» ÇØÁֽŠÀÌÀçÈ«´Ô¿¡°Ô °¨»çµå¸³´Ï´Ù.)

1.3.11. v0.9.5

* ¹ö±×°¡ ¾ø´Â ÇÑ ¸¶Áö¸· ¸±¸®Áî°¡ µÉ °ÍÀÔ´Ï´Ù. (Á¦°¡ »ý°¢ÇÑ Á¤±Ô½Ä ¸ð¾çÀº ¸ðµÎ °®Ãß¾îÁ³±â ¶§¹®¿¡ ¸¶Áö¸·À¸·Î »ý°¢ÇÑ °ÍÀÔ´Ï´Ù.) * Å×½ºÆ® ·ê¼ÂÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Â ±â¹Ý ¸¶·Ã * ¿¹¿Ü »óȲ¿¡ ´ëÇÑ ¿À·ù º¹±¸ ±â´É Ãß°¡ * Á¤±Ô Ç¥Çö½Ä Á¶ÇÕ¿¡¼­ ¿À·ù ¼öÁ¤

1.3.12. v0.9

* ÇÑ±Û Á¤±Ô Ç¥Çö½Ä (<¤¡,¤¿,¤±> ÇüÅÂ) Áö¿ø (°æÃà) * ¸ÞŸ¹®ÀÚ Áö¿ø * ( ) ¸ÞŸ¹®ÀÚ Áö¿ø * ¸î¸î ¸Þ¸ð¸® °ü·Ã ¹ö±× Á¦°Å

1.3.13. v0.8.1

* À̹Îö´ÔÀÌ ¾Ë·ÁÁֽŠbug ¼öÁ¤ ¹× ´Ù¸¥ ±âŸ ¸Þ¸ð¸® leak Á¦°Å.

1.3.14. v0.8

* ÀνÄÇÒ ¼ö ÀÖ´Â token ÀÇ Á¦ÇÑÀÌ ÀÖÀ½. ÀÚ¼¼ÇÑ »çÇ×Àº HRE »ç¿ëÀÚ ¹®¼­ ¸¦ ÂüÁ¶ ¹Ù¶÷. * Á¤±Ô½ÄÀÌ ¿Ï¼ºÇü, Á¶ÇÕÇü, À¯´ÏÄÚµå·Î ÀÌ·ç¾îÁö´õ¶óµµ Á¤È®ÇÑ DFA Å×ÀÌºí »ý¼º. * Á¤Àû ¶óÀ̺귯¸® ±¸¼º. (Á¤±Ô Ç¥Çö½Ä ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ sample ÆÄÀÏ Á¸Àç.)

2. ¶óÀ̼¾½º ¹× °³¹ßÀÚ Á¤º¸

Hangeul Regular Expression
Copyright (C) 2001 Weongyo Jeong & Hyejin Soang
This program is  free software; you can  redistribute it and/or modify
it under the terms  of the GNU General Public  License as published by
the  Free Software Foundation; either version  2,  or (at your option)
any later version.
This program is distributed  in the hope that  it will be  useful, but
WITHOUT    ANY  WARRANTY;  without   even   the  implied  warranty  of
MERCHANTABILITY  or  FITNESS FOR  A PARTICULAR   PURPOSE.  See the GNU
General Public License for more details.
You should  have received a  copy of  the GNU  General Public  License
along with   this  program; if   not,  write  to   the Free   Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Contact : Weongyo Jeong  - weongyo@hotmail.com
Hyejin Soang   - redcloak@empal.com



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-10-04 12:06:12
Processing time 0.0172 sec