コンパイラの作成演習において,プログラムをラボのssh.cis.k.hosei.ac.jp上へ提出してもらいます.提出するプログラムは,以下の指針に沿った形でプログラミングを行なって下さい.
利用しているツール毎に,指針が書かれていますので
を参照して下さい.提出先に関しては,こちらを参照して下さい.
int main(void){
yyparse();
return(0);
}
int yyerror(char * err_str){
fprintf(stderr,err_str);
}
chmod 644 どこかのディレクトリ/Src/cs05k0099inc/*などとして下さい.
bison -y -d cs05k0099.y flex cs05k0099.l cc y.tab.c -o cs05k0099.bin各自で用意したインクルードファイルは,#include "cs05k0099inc/ファイル名"でインクルードして下さい.
nkf -Lu あなたのソースファイル > 提出用ソースファイル (あなたのソースファイルは,yacc/lex(bison/flex)のソースファイルです.)この提出用ソースファイルを用いてコンパイルし,動作確認後,提出をして下さい.また,Cygwinの場合,インストール時の設定により,この変換の要,不要が異なります.改行コード関連('\r'など)のエラーが出た時は,必ず変換して下さい.
./cs05k0099.bin < src > obj
hsm -f obj
chmod 644 どこかのディレクトリ/Src/dm07k1199pkg/*などとして下さい.各自で用意したパッケージファイルは,import dm07k1199pkg.*;でインポートして下さい.
PARSER_BEGIN(dm07k1199)
import java.io.*;
import dm07k1199pkg.*; ←必要ならば書く
public class dm07k1199{
<必要な宣言などの始まり>
:
:
<必要な宣言などの終り>
public static void main(String args[]){
<必要な宣言などの始まり>
:
:
<必要な宣言などの終り>
try{
dm07k1199 parser = new dm07k1199( new FileReader(args[0]));
<必要なプログラムなどの始まり>
:
:
<必要なプログラムなどの終り>
}
catch(Exception ex){
System.err.println("Failed to parse:"+ex.getMessage());
}
}
}
PARSER_END(dm07k1199)
<必要なプログラムなどの始まり>
:
:
<必要なプログラムなどの終り>
javacc dm07k1199.jj
javac dm07k1199.java
各自で用意したパッケージファイルは,import dm07k1199pkg.*;でインポートして下さい.
nkf -Lu あなたのソースファイル > 提出用ソースファイル (あなたのソースファイルは,JavaCCのソースファイルです.)この提出用ソースファイルを用いてコンパイルし,動作確認後,提出をして下さい.また,Cygwinの場合,インストール時の設定により,この変換の要,不要が異なります.改行コード関連('\r'など)のエラーが出た時は,必ず変換して下さい.
java dm07k1199 src > obj
hsm -f obj
chmod 644 どこかのディレクトリ/Src/dm09k1009pkg/*などとして下さい.各自で用意したパッケージファイルは,import dm09k1009pkg.*;でインポートして下さい.
Jayのソース
%{
import java.io.*;
import dm09k1009pkg.*; ←必要ならば書く
public class dm09k1009Parser {
%}
<必要な宣言などの始まり>
:
:
<必要な宣言などの終り>
%%
<必要な宣言などの始まり>
:
:
<必要な宣言などの終り>
%%
public static void main(String[] args) throws IOException {
FileReader source = new FileReader(args[0] );
dm09k1009Scanner scanner = new dm09k1009Scanner(source);
dm09k1009Parser yyparser = new dm09k1009Parser();
try {
yyparser.yyparse(scanner);
} catch (dm09k1009Parser.yyException ye) { System.out.println(ye); }
}
<必要なプログラムなどの始まり>
:
:
<必要なプログラムなどの終り>
}
JFlexのソース
import java.io.*;
%%
%public
%class dm09k1009Scanner
%implements dm09k1009Parser.yyInput
%type int
%eofval{
return YYEOF;
%eofval}
%{
private int token;
public boolean advance () throws java.io.IOException {
token=yylex();
return token != YYEOF;
}
public int token () {
return token;
}
public Object value () {
return value;
}
Object value; //字句規則部でここに値を代入する
%}
digit = [0-9]
other = .
%%
<必要な宣言などの始まり>
:
たとえば...
"+" { return(dm09k1009Parser.ADDOP); }
{digit}+ { value=new Integer(yytext()); return(dm09k1009Parser.NUMBER); }
[ \t] { }
"\n" { return(dm09k1009Parser.NL); }
:
<必要な宣言などの終り>
下記サイトにアクセスし、jar ファイルをダウンロード。 jay ファイルと同じ場所に置きます。http://www.cs.rit.edu/~ats/projects/lp/doc/jay/package-summary.html
Downloads
・ archive with executable and skeletons for MacOS X, 52 kb
これ -> ・ archive with class files and skeletons for any Java VM, 520 kb, thanks to Alliet and Megacz' nestedvm
・ source files, 224 kb
コマンドプロンプトやターミナルを開き、jay ファイルを作った場所まで移動し、以下のコマンドを実行。 java -jar jay.jar dm09k1009.jay > dm09k1009Parser.java
jflex dm09k1009.flex
javac dm09k1009Parser.java
javac dm09k1009Scanner.java
各自で用意したパッケージファイルは,import dm09k1009pkg.*;でインポートして下さい.
nkf -Lu あなたのソースファイル > 提出用ソースファイル (あなたのソースファイルは,Jay/JFlexのソースファイルです.)この提出用ソースファイルを用いてコンパイルし,動作確認後,提出をして下さい.また,Cygwinの場合,インストール時の設定により,この変換の要,不要が異なります.改行コード関連('\r'など)のエラーが出た時は,必ず変換して下さい.
java dm09k1009Parser src > obj
hsm -f obj
(Linuxでのパス:ssh.cis.k.hosei.ac.jpは,こちら) /mnt/shared/SubmitShared/hiraki/submit/ProblemN/Src/ (Windowsでのパス) P:\hiraki\submit\ProblemN\Src\
hiraki@cis.k.hosei.ac.jpLast modified: 2010/06/16 17:53