言語理論とコンパイラ

第四回: 中間テスト、flex の演習

2005年 5月 20日

AGU

© 2005 Martin J. Dürst 青山学院大学

今日の内容

flex の使い方 (1)

flex の使い方 (2)

flex の勉強の仕方

flex の入力の形式

flex 専用の指示と C プログラムの一部が両方ある

主に三つの %% で区切られている部分からなる:

flex の入力の形式の一例

            int num_lines = 0, num_chars = 0;
    %%
    \n      ++num_lines; ++num_chars;
    .       ++num_chars;
    %%
    main()
            {
            yylex();
            printf( "# of lines = %d, # of chars = %d\n",
                    num_lines, num_chars );
            }

    int yywrap () { return 1; }

flex の演習・宿題

  1. 一般のテキストを XML の要素の内容に入れたい場合には次の変換を行う必要がある。flex でその変換と逆変換を行うプログラムを書け。
    テキスト XML
    ' '
    " "
    & &
    < &lt;
    > &gt;
  2. C 言語 (もしくは他に好きなプログラム言語) 用の字句解析 (C の場合にプレプロセッサ指示無し) を行って、字句ごと一行で出力するプログラムを flex で作れ。(ある規則に認識された文字列は変数 yytext にある。)