Previous: Example-Pascal Lexical Scanner, Up: More Examples   [Contents][Index]


7.3 ÀìÌçÍѸì¤ÎÊÑ´¹

¤³¤³¤Ç¤Ï¡¢ ¥¹¥¿¡¼¥È¾õÂÖ¤ò»È¤Ã¤Æ¡¢ Flex¤Ë¤è¤êÀ¸À®¤µ¤ì¤ë¥¹¥­¥ã¥Ê¤ÎÆâÉô¤Ë¾®µ¬ÌϤΥѡ¼¥µ¤òºî¤ëÊýË¡¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£ ¤³¤Î¥³¡¼¥É¤ÏThe New Hackers Dictionary ¡Êprep.ai.mit.edu¡¢ ¤ª¤è¤Ó¤½¤Î¾¤Î¿¤¯¤Î¥¤¥ó¥¿¡¼¥Í¥Ã¥ÈFTP¥µ¥¤¥È¤«¤éÆþ¼ê²Äǽ¤Ê¥Æ¥­¥¹¥È·Á¼°¤Î¤â¤Î¡Ë ¤òÆþÎϤȤ·¤Æ¼õ¤±¼è¤ê¡¢ ¤¹¤°¤ËÀ½ÈǤª¤è¤Ó°õºþ¤Ç¤­¤ë¾õÂÖ¤ÎTexinfo¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥É¥­¥å¥á¥ó¥È¤ËÊÑ´¹¤¹¤ë¤â¤Î¤Ç¤¹¡£ ¤³¤Î¥³¡¼¥É¤Ïjargon2910.ascii¤ò»È¤Ã¤Æ¥Æ¥¹¥ÈºÑ¤ß¤Ç¤¹¡£

ŵ·¿Åª¤Ê»È¤¤Êý¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

j2t < jargon > jargon.texi 
tex jargon.texi
lpr -d jargon.dvi

¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢ »ÈÍѤËÂѤ¨¤ëinfo¥Õ¥¡¥¤¥ë¤ËÊÑ´¹²Äǽ¤Ê¥Õ¥¡¥¤¥ë¤ÏºîÀ®¤·¤Þ¤»¤ó¤¬¡¢ ¤³¤¦¤·¤¿µ¡Ç½¤ÏÂ礷¤¿º¤Æñ¤â¤Ê¤¯Äɲ乤뤳¤È¤¬²Äǽ¤Ç¤¹¡£ ¤³¤ÎÎã¤ÏÈó¾ï¤ËŤ¤¤â¤Î¤Ç¤¹¤¬¡¢ Â礷¤ÆÊ£»¨¤Ç¤â¤Ê¤¤¤Î¤Ç¡¢ ¿¬¹þ¤ß¤·¤Ê¤¤¤Ç¸¦µæ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£

/*
 * j2t.lex : ¥¹¥¿¡¼¥È¾õÂÖ¤òÍøÍѡʤҤç¤Ã¤È¤·¤Æ°­ÍÑ¡ª¡Ë¤¹¤ëÎã
 */

%{
#define MAX_STATES 1024
#define TRUE  1
#define FALSE 0

#define CHAPTER   "@chapter"
#define SECTION   "@section"
#define SSECTION  "@subsection"
#define SSSECTION "@subsubsection"

int  states[MAX_STATES];
int  statep = 0;

int  need_closing = FALSE;

char buffer[YY_BUF_SIZE];

extern char *yytext;

/*
 * ¤³¤Î¥×¥í¥°¥é¥à¤¬À¸À®¤¹¤ë*.texinfo¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬Éôʬ¤òºî¤ë¡£
 * ¤³¤ì¤Ïɸ½àŪ¤ÊTexinfo¥Ø¥Ã¥À¤Ç¤¢¤ë
 */

void print_header(void)
{
   printf("\\input texinfo @c -*-texinfo-*-\n");
   printf("@c           %c**start of header\n",'%');
   printf("@setfilename       jargon.info\n");
   printf("@settitle          The New Hackers Dictionary\n");
   printf("@synindex          fn cp\n");
   printf("@synindex          vr cp\n");
   printf("@c           %c**end of header\n",'%');
   printf("@setchapternewpage odd\n");
   printf("@finalout\n");
   printf("@c @smallbook\n");
   printf("\n");
   printf("@c ====================================================\n\n");
   printf("@c This file was produced by j2t.  Any mistakes are *not*\n");
   printf("@c the fault of the jargon file editors.\n");
   printf("@c ====================================================\n\n");
   printf("@titlepage\n");
   printf("@title    The New Hackers Dictionary\n");
   printf("@subtitle Version 2.9.10\n");
   printf("@subtitle Generated by j2t\n");
   printf("@author Eric S. Raymond, Guy L. Steel, and Mark Crispin\n"); 
   printf("@end titlepage\n");
   printf("@page\n");
   printf("@c ====================================================\n");
   printf("\n\n");
   printf("@unnumbered Preface\n");
   printf("@c          *******\n");
}

/*
 * À¸À®¤µ¤ì¤ëTexinfo¥Õ¥¡¥¤¥ë¤ÎËöÈø¤ÎÉôʬ¤òºîÀ®¤¹¤ë
 */

void print_trailer(void)
{
   printf("\n");
   printf("@c ====================================================\n");
   printf("@contents\n");   /* Ìܼ¡¤òɽ¼¨¤¹¤ë */ 
   printf("@bye\n\n");     
}

/*
 * ¸å¤Ç¤½¤ì¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¡¢Àá¤Þ¤¿¤Ï¾Ï¤Ë²¼Àþ¤ò°ú¤¯
 */

void write_underline(int len, int space, char ch)
{
  int loop;

  printf("@c ");

  for(loop=3; loop<space; loop++){
    printf(" ");
  }

  while(len--){
    printf("%c",ch);
  }
  printf("\n\n");
}

/*
 * Texinfo¤Ë¤ª¤¤¤ÆÆÃ¼ì¤Ê°ÕÌ£¤ò»ý¤Äʸ»ú¤ò¥Á¥§¥Ã¥¯¤·¡¢¥¨¥¹¥±¡¼¥×¤¹¤ë
 */

char *check_and_convert(char *string)
{
  int  buffpos = 0;
  int  len,loop;

  len = strlen(string);  
  for(loop=0; loop<len; loop++){
    if(string[loop] == '@' || 
       string[loop] == '{' || 
       string[loop] == '}')
    {
      buffer[buffpos++] = '@';
      buffer[buffpos++] = string[loop];
    } else {
      buffer[buffpos++] = string[loop];
    }
  }
  buffer[buffpos] = '\0';
  return(buffer);
}

/*
 * ¾Ï¡¢Àá¡¢¹à¤Î¥Ø¥Ã¥À¤ò½ñ¤­½Ð¤¹
 */

void write_block_header(char *type)
{
  int loop;
  int len;

  (void)check_and_convert(yytext);
  len = strlen(buffer);
  for(loop=0; buffer[loop] != '\n';loop++)

  buffer[loop] = '\0';
  printf("%s %s\n",type,buffer);
  write_underline(strlen(buffer),strlen(type)+1,'*');
}

%}

/*
 * Flex¤Îµ­½Ò¾ðÊ󤬤³¤³¤«¤é»Ï¤Þ¤ë
 */

%x HEADING EXAMPLE ENUM EXAMPLE2
%x BITEM BITEM_ITEM 
%s LITEM LITEM2 

%%

^#[^#]*"#"  /* ¥Ø¥Ã¥À¤È¥Õ¥Ã¥¿¤ò¥¹¥­¥Ã¥×¤¹¤ë */
                     /*
                      * ¾Ï¤Ï¡¢¤½¤Î²¼¤Ë¥¢¥¹¥¿¥ê¥¹¥¯¤ò»ý¤Á¡¢¥³¥í¥ó¤Ç½ª¤ï¤ë
                      */
^[^\n:]+\n[*]+\n      write_block_header(CHAPTER); 

^"= "[A-Z]" ="\n"="*  { /* ¸Ä¡¹¤Î¥«¥Æ¥´¥ê¤´¤È¤ËÀá¤òºîÀ®¤¹¤ë */
                        if(need_closing == TRUE){
                          printf("@end table\n\n\n");
                        }
                        need_closing = TRUE;
                        write_block_header(SECTION);
                        printf("\n\n@table @b\n");
                      }

"Examples:"[^\.]+     ECHO;

"*"[^*\n]+"*"         { /* @emph{}¡Ê¶¯Ä´¤µ¤ì¤¿¡Ë¥Æ¥­¥¹¥È */
                        yytext[yyleng-1] = '\0';
                        (void)check_and_convert(&yytext[1]);
                        printf("@i{%s}",buffer);
                      }

"{{"[^}]+"}}"         { /* ÆÃÊ̤ʶ¯Ä´ */
                        yytext[yyleng-2] = '\0';
                        (void)check_and_convert(&yytext[2]);
                        printf("@strong{%s}",buffer);
                      }

"{"[^}]+"}"           { /* ÆÃÊ̤ʶ¯Ä´ */
                        yytext[yyleng-1] = '\0';
                        (void)check_and_convert(&yytext[1]);
                        printf("@b{%s}",buffer);
                      }

 /* ÆÃ¼ì¤ÊTexinfoʸ»ú¤ò¥¨¥¹¥±¡¼¥×¤¹¤ë */
<INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"@"  printf("@@");
<INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"{"  printf("@{");
<INITIAL,LITEM,LITEM2,BITEM,ENUM,EXAMPLE,EXAMPLE2>"}"  printf("@}");

 /*
  * @example¥³¡¼¥É¤òºÆÀ¸À®¤¹¤ë
  */

":"\n+[^\n0-9*]+\n"     "[^ ]   {
                        int loop;
                        int len;
                        int cnt;

                        printf(":\n\n@example \n");
                        strcpy(buffer,yytext);
                        len = strlen(buffer);
                        cnt = 0;
                        for(loop=len; loop > 0;loop--){
                          if(buffer[loop] == '\n')
                             cnt++;
                          if(cnt == 2)
                              break;
                        }
                        yyless(loop+1);
                        statep++;
                        states[statep] = EXAMPLE2;
                        BEGIN(EXAMPLE2);
                      }
<EXAMPLE,EXAMPLE2>^\n  {
                      printf("@end example\n\n");
                      statep--; 
                      BEGIN(states[statep]);
                    }

 /*
  * @enumerate¥ê¥¹¥È¤òºÆÀ¸À®¤¹¤ë
  */

":"\n+[ \t]*[0-9]+"."   {
                      int loop;
                      int len;

                      printf(":\n\n@enumerate \n");
                      strcpy(buffer,yytext);
                      len = strlen(buffer);
                      for(loop=len; loop > 0;loop--){
                        if(buffer[loop] == '\n')
                           break;
                      }
                      yyless(loop);
                      statep++;
                      states[statep] = ENUM;
                      BEGIN(ENUM);
                    }

<ENUM>"@"           printf("@@");
<ENUM>":"\n+"     "[^0-9]    {
                    printf(":\n\n@example\n");
                    statep++;
                    states[statep] = EXAMPLE;
                    BEGIN(EXAMPLE); 
                  }
<ENUM>\n[ \t]+[0-9]+"." {
                    printf("\n\n@item ");
                   }
<ENUM>^[^ ] | 
<ENUM>\n\n\n[ \t]+[^0-9] {
                    printf("\n\n@end enumerate\n\n");
                    statep--;
                    BEGIN(states[statep]);
                  }

 /*
  * £±¼ïÎà¤Î@itemize¥ê¥¹¥È¤òºÆÀ¸À®¤¹¤ë
  */

":"\n+":"         {
                    int loop;
                    int len;

                    printf(":\n\n@itemize @bullet \n");
                    yyless(2);
                    statep++;
                    states[statep] = LITEM2;
                    BEGIN(LITEM2);
                  }
<LITEM2>^":".+":" {
                    (void)check_and_convert(&yytext[1]);
                    buffer[strlen(buffer)-1]='\0';
                    printf("@item @b{%s:}\n",buffer);
                  }

<LITEM2>\n\n\n+[^:\n] {
                    printf("\n\n@end itemize\n\n");
                    ECHO;
                    statep--;
                    BEGIN(states[statep]);
                  }

 /*
  * ¥ê¥Ó¥¸¥ç¥ó¡¦¥Ò¥¹¥È¥êÉô¤«¤é¥ê¥¹¥È¤òºîÀ®¤¹¤ë¡£
  * ¤³¤³¤Ç"Version"¤¬É¬ÍפʤΤϡ¢¤½¤¦¤·¤Ê¤¤¤È¾¤Î¥ë¡¼¥ë
  * ¤È¾×ÆÍ¤¹¤ë¤«¤é¤Ç¤¢¤ë
  */

:[\n]+"Version"[^:\n*]+":" {
                    int loop;
                    int len;

                    printf(":\n\n@itemize @bullet \n");
                    strcpy(buffer,yytext);
                    len = strlen(buffer);
                    for(loop=len; loop > 0;loop--){
                      if(buffer[loop] == '\n')
                         break;
                    }
                    yyless(loop);
                    statep++;
                    states[statep] = LITEM;
                    BEGIN(LITEM);
                  }
<LITEM>^.+":"     {
                    (void)check_and_convert(yytext);
                    buffer[strlen(buffer)-1]='\0';
                    printf("@item @b{%s}\n\n",buffer);
                  }

<LITEM>^[^:\n]+\n\n[^:\n]+\n  {
                    int loop;

                    strcpy(buffer,yytext);
                    for(loop=0; buffer[loop] != '\n'; loop++);
                    buffer[loop] = '\0';
                    printf("%s\n",buffer);
                    printf("@end itemize\n\n");
                    printf("%s",&buffer[loop+1]);
                    statep--;
                    BEGIN(states[statep]);
                  }

 /*
  * @itemize @bullet¥ê¥¹¥È¤òºÆÀ¸À®¤¹¤ë
  */

":"\n[ ]*"*"      {
                    int loop;
                    int len;

                    printf(":\n\n@itemize @bullet \n");
                    len = strlen(buffer);
                    for(loop=0; loop < len;loop++){
                      if(buffer[loop] == '\n')
                         break;
                    }
                    yyless((len-loop)+2);
                    statep++;
                    states[statep] = BITEM;
                    BEGIN(BITEM);
                  }

<BITEM>^" "*"*"   {
                    printf("@item");
                    statep++;
                    states[statep] = BITEM_ITEM;
                    BEGIN(BITEM_ITEM);
                  }
<BITEM>"@"          printf("@@");
<BITEM>^\n        { 
                    printf("@end itemize\n\n");
                    statep--;
                    BEGIN(states[statep]);
                  } 
<BITEM_ITEM>[^\:]* {
                     printf(" @b{%s}\n\n",check_and_convert(yytext));
                   }
<BITEM_ITEM>":"   { 
                    statep--; 
                    BEGIN(states[statep]);
                  }

 /*
  * @chapter¡¢@sectionÅù¤òºÆºîÀ®¤¹¤ë
  */

^:[^:]*           { 
                    (void)check_and_convert(&yytext[1]); 
                    statep++;
                    states[statep] = HEADING;
                    BEGIN(HEADING); 
                  }
<HEADING>:[^\n]   {
                    printf("@item @b{%s}\n",buffer); 
                    write_underline(strlen(buffer),6,'~');
                    statep--; 
                    BEGIN(states[statep]);
                  }
<HEADING>:\n"*"*  { 
                    if(need_closing == TRUE){
                      printf("@end table\n\n\n");
                      need_closing = FALSE;
                    }
                    printf("@chapter %s\n",buffer); 
                    write_underline(strlen(buffer),9,'*');
                    statep--; 
                    BEGIN(states[statep]);
                  }
<HEADING>:\n"="*  { 
                    if(need_closing == TRUE){
                     printf("@end table\n\n\n");
                      need_closing = FALSE;
                    }
                    printf("@section %s\n",buffer); 
                    write_underline(strlen(buffer),9,'=');
                    statep--; 
                    BEGIN(states[statep]);
                  }
<HEADING>"@"        printf("@@");
<HEADING>:\n"-"*  { 
                    if(need_closing == TRUE){
                      printf("@end table\n\n\n");
                      need_closing = FALSE;
                    }
                    printf("@subsection %s\n",buffer); 
                    write_underline(strlen(buffer),12,'-');
                    statep--; 
                    BEGIN(states[statep]);
                  }

 /*
  * @example¥Æ¥­¥¹¥È¤òºÆºîÀ®¤¹¤ë
  */

^"     "          {
                    printf("@example\n");
                    statep++;
                    states[statep] = EXAMPLE;
                    BEGIN(EXAMPLE); 
                  }
<EXAMPLE>^"     "
.                 ECHO;

%%

 /*
  * ½é´ü²½¤·¤Æ¼Â¹Ô¤¹¤ë
  */

int main(int argc, char *argv[])
{
  states[0] = INITIAL;
  statep    = 0;
  print_header();
  yylex();
  print_trailer();
  return(0);
}

¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢ ASCII¤ÎÀìÌçÍѸì¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤ó¤Ç¡¢ ¤¤¤¯¤Ä¤«¤Î¤è¤¯¸«¤é¤ì¤ë¥Ñ¥¿¡¼¥ó¤ò¸¡º÷¤·¤Þ¤¹¡£ ¤³¤Î¥Ñ¥¿¡¼¥ó¤Ï¡¢ ¥ª¥ê¥¸¥Ê¥ë¤ÎTexinfo·Á¼°¤ÎÀìÌçÍѸì¥Õ¥¡¥¤¥ë¤òñ¤Ê¤ëASCII¥Æ¥­¥¹¥È¤ËÊÑ´¹¤·¤¿ºÝ¤ËºîÀ®¤µ¤ì¤¿¤â¤Î¤Ç¤¹¡£ ¤³¤ÎÊÑ´¹¤Î²áÄø¤Ç¡¢ ¿¤¯¤Î¥Þ¡¼¥¯¥¢¥Ã¥×¾ðÊ󤬼º¤ï¤ì¤Æ¤¤¤ë¤¿¤á¤Ë¡¢ ¤¢¤ë½ÐÎÏ·ë²Ì¤Î¸µ¤Ë¤Ê¤Ã¤¿¥ª¥ê¥¸¥Ê¥ë¤Î¾ðÊ󤬲¿¤Ç¤¢¤Ã¤¿¤«¡¢ ¤¢¤ë¤¤¤Ï¡¢ ¤½¤Î¥ª¥ê¥¸¥Ê¥ë¤Î¸õÊ䤬£²¤Ä£³¤Ä¤¢¤Ã¤¿¤È¤·¤Æ¤â¡¢ ¤½¤Î¤¦¤Á¤Î¤É¤ì¤¬¤½¤Î½ÐÎÏ·ë²Ì¤ò¤â¤¿¤é¤·¤¿¤«¤òÀµ³Î¤Ë·èÄꤹ¤ë¤³¤È¤¬º¤Æñ¤Ç¤¢¤ë¤È¤¤¤¦»ö¾ð¤Î¤¿¤á¡¢ ¤³¤Î¸¡º÷ºî¶È¤Ï¤¤¤¯¤é¤«Ê£»¨¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤è¤¯¸«¤é¤ì¤ë¥Ñ¥¿¡¼¥ó¤ò¤¤¤¯¤Ä¤«µó¤²¤ë¤È¡¢ °Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¾Ï¡¢Àá¡¢¹à

¤³¤ì¤é¤ÎÀèÆ¬¤Ë¤Ï¤¤¤º¤ì¤âƱ¤¸¥Ñ¥¿¡¼¥ó¤¬Íè¤Þ¤¹¡£

:some text:\n

¤³¤Î¸å¤í¤Ë¡¢ ¡Ê¾Ï¤Î¾ì¹ç¤Ï¡Ë¥¢¥¹¥¿¥ê¥¹¥¯¤Ë¤è¤ë²¼Àþ¡¢ ¡ÊÀá¤Î¾ì¹ç¤Ï¡ËÅù¹æ¤Ë¤è¤ë²¼Àþ¡¢ ¡Ê¹à¤Î¾ì¹ç¤Ï¡Ë¥Þ¥¤¥Ê¥¹µ­¹æ¤Ë¤è¤ë²¼Àþ¤¬Â³¤­¤Þ¤¹¡£

¶¯Ä´

¤³¤ì¤Ï¾¯¤·Æñ¤·¤¤¤Î¤Ç¤¹¤¬¡¢ °ìÈÌŪ¤Ë¤Ï¶¯Ä´¤Ï¡Ê¥¤¥¿¥ê¥Ã¥¯¤Î¾ì¹ç¤Ï¡Ë**¡¢ ¡Ê¶¯Ä´Ê¸»ú¡Êstrong¡Ë¤Î¾ì¹ç¤Ï¡Ë{{}}¡¢ ¡ÊÂÀ»ú¡Êbold¡Ë¤Î¾ì¹ç¤Ï¡Ë{}¤ÎÂФˤè¤Ã¤Æ¼¨¤µ¤ì¤Þ¤¹¡£ ¤³¤³¤Ç¤Ï¡¢ ¤³¤Î£³¼ïÎà¤ò¸¡º÷¤·¤Æ¡¢ ¥³¥Þ¥ó¥É¤ò½ÐÎϤ·¤Þ¤¹¡£

¼ÂÎã¡¢¤ª¤è¤ÓÎóµó¤µ¤ì¤¿¥ê¥¹¥È

¤È¤â¤Ë¥³¥í¥ó¤Ç»Ï¤Þ¤ê¡¢ ¤½¤Î¸å¤í¤Ë¡¢ £±¤Ä°Ê¾å¤Î²þ¹Ô¡¢ ¾¯¤Ê¤¯¤È¤â£µ¤Ä¤Î¶õÇò¡¢ ¤½¤·¤ÆºÇ¸å¤Ë¿ô»ú¤â¤·¤¯¤Ï²¿¤é¤«¤Î¥Æ¥­¥¹¥È¤¬Â³¤­¤Þ¤¹¡£ Î㤨¤Ð¡¢ Îóµó¤µ¤ì¤¿¥ê¥¹¥È¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

…enumerated:

      0.some text
      1.some more text

¤Þ¤¿¡¢ ¼ÂÎã¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£12

…example:

      some text
¹àÌܲ½¤µ¤ì¥Þ¡¼¥¯¤òÉÕ¤±¤é¤ì¤¿¥ê¥¹¥È

¼ÂÎã¡¢¤ª¤è¤ÓÎóµó¤µ¤ì¤¿¥ê¥¹¥È¤Ë¤è¤¯»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ °ã¤¤¤Ï¡¢ ¹àÌܤÎÀèÆ¬¤Ë¥³¥í¥ó¡¢ ¤Þ¤¿¤Ï¥¢¥¹¥¿¥ê¥¹¥¯¤¬¤¢¤ê¡¢ ËöÈø¤Ë¥³¥í¥ó¤¬¤¢¤ë¤È¤¤¤¦ÅÀ¤Ç¤¹¡£

¤³¤³¤Ç¤ÎÎã¤Ï¡¢ ¥Ñ¡¼¥¹¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤¬²¿¤Ç¤¢¤ë¤«¤ò¼¨¤¹¥Ò¥ó¥È¤È¤·¤Æ¤³¤Î¤è¤¦¤Ê¥Ñ¥¿¡¼¥ó¤ò»È¤¤¡¢ ¤½¤ÎÆÃÄê¤Î¥»¥¯¥·¥ç¥óÍѤÎÉôʬŪ¤Ê¥Ñ¡¼¥µ¤ò ¡Ê¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢ÇÓ¾Ū¡Ë¥¹¥¿¡¼¥È¾õÂÖ¤ò»È¤Ã¤Æºî¤ê¤Þ¤¹¡£ ASCIIÈǤÎÀìÌçÍѸì¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢ ¥¹¥­¥ã¥Ê¤Î¤É¤ÎÉôʬ¤¬¤½¤Î¥Õ¥¡¥¤¥ëÃæ¤Î²¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¤«¤ò¸¡¾Ú¤·¤Æ¤ß¤ëÃÍÂǤÁ¤¬¤¢¤ê¤Þ¤¹¡£ Î㤨¤Ð¡¢ HEADING¾õÂ֤ˤª¤¤¤Æ@item¤òÀ¸À®¤¹¤ë¥ë¡¼¥ë¤¬¡¢ ¤¹¤Ù¤Æ¤ÎÀìÌçÍѸì¤Î¥¨¥ó¥È¥ê¤ò½èÍý¤¹¤ë¥ë¡¼¥ë¤Ç¤â¤¢¤ë¤È¤¤¤¦¤³¤È¤Ï¡¢ ¤ª¤½¤é¤¯°ì¸«¤·¤¿¤À¤±¤Ç¤ÏÌÀ¤é¤«¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£


Footnotes

(12)

ÌõÃí¡§some text¤ÎÉôʬ¤Ë¡¢¥¤¥ó¥Ç¥ó¥È¤µ¤ì¤¿¥Æ¥­¥¹¥È¤¬µ­¤µ¤ì¤Þ¤¹¡£


Previous: Example-Pascal Lexical Scanner, Up: More Examples   [Contents][Index]