1. Top » 
  2. スポンサー広告 » 
  3. コンパイラについてのメモ #4
  4. 大学関係 » 
  5. 計算機科学実験及実習 » 
  6. コンパイラについてのメモ #4

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

コンパイラについてのメモ #4

C言語のとても小さいやつ、 Tiny Cというのが今回の実験の対象。
字句解析はflex、構文解析はbisonに任せる。
というわけで実際にC言語で使うような字句を区切るためには
こんな感じのlexファイルにしたらいいんじゃないかな。

%option noyywrap
%option yylineno

%{
#include "second.tab.h"
%}

ALPHA [A-Za-z]
ALPHAP [A-Za-z_]
DIGIT [0-9]

%%
else {return (ELSE);}
if {return (IF);}
int {return (INT);}
return {return (RETURN);}
while {return (WHILE);}

{ALPHA}{ALPHAP}* {return (IDENTIFIER);}

{DIGIT}* {return (CONSTANT); }

"," {return COMMA;}
";" {return SCOLON;}
"(" {return LK;}
")" {return RK;}
"{" {return LTK;}
"}" {return RTK;}
"=" {return IN;}
"||" {return OR;}
"&&" {return AND;}
"==" {return EQ;}
"!=" {return NEQ;}
"<" {return LT;}
">" {return MT;}
"<=" {return LTE;}
">=" {return MTE;}
"+" {return ADD;}
"-" {return SUB;}
"*" {return MUL;}
"/" {return DIV;}

[ \t\n] ;
. {yyerror("Error: invalid character");}

%%




実験が少しずつ進んでいきます・・・。
これを利用して文法に正しいかどうか合致するかどうかを検査するのがbisonの仕事。
次はそれを考えます。
(とはいっても文法は指定されてるのだけどね)
関連記事
スポンサーサイト

Comment

コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します
(任意) 非公開コメントにする

Page Top

Trackback

Trackback URI
http://parabola0.blog86.fc2.com/tb.php/366-db558701 この記事にトラックバックする(FC2ブログユーザーのみ)

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。