LoginSignup
1
0

大川知、鈴木大郎 著「コンパイラ 言語処理系の基礎からyacc/lexまで」近代科学社(2008)のソースをMacintoshで実行(java版)

Last updated at Posted at 2017-12-18

大川知、鈴木大郎 著 「コンパイラ 言語処理系の基礎からyacc/lexまで」近代科学社(2008)のソースをMacintoshで実行する(Java版)

ソースコード

近代科学社のsuppportにある。学内での利用を前提としている。「学外での配布を禁止」している。
[リンク]https://www.kindaikagaku.co.jp/support/compiler_kindaikagaku.zip

ダウンロード

解凍する。さらに、フォルダの中のtglc-java.zipも解凍し、実行してみる。

cd compiler_kindaikagaku
tar -xzf tglc-c++.zip
cd tglc-java
./tglc ../sample/koch.tgl

道具類

揃っておらず、コンパイルエラーなどが出たら。

準備1。Java導入。

$ brew cask install java

準備2.Jflex導入。

$ brew install jflex

準備3. X11のライブラリ

使用している。X11を導入。名前はxquartz。

$ brew cask install xquartz

画像

うまく画像が出てこない場合は、tglcファイルで指定したJFlexの名前と場所がjflex=/usr/local/jflex-1.4.2/lib/JFlex.jar ではない。例えば、2017/12/18日現在brewで導入した場合は

tglc.
#!/bin/sh
...
jflex=/usr/local/Cellar/jflex/1.6.1/libexec/jflex-1.6.1.jar
...

Java 版

sampleが、C++版のsampleよりも一つ少ない。

C++

解凍してあれば

$ cd sample
$ cp ../../../compiler_kindaikagaku/tglc/sample/sin2.tgl .

#スクリプト
すべての例を順次実行するシェルスクリプト。例えば名前をtgl.shにする。tglc-javaのフォルダに作るとすれば、下記。

tgl.sh
./tglc ./sample/asteroid.tgl	
./tglc ./sample/epicycl.tgl	
./tglc ./sample/key.tgl		
./tglc ./sample/rect.tgl	
./tglc ./sample/sin2.tgl  #これがJava版のsampleフォルダにない。
./tglc ./sample/c.tgl		
./tglc ./sample/hilbert.tgl	
./tglc ./sample/koch.tgl	
./tglc ./sample/sin.tgl		
./tglc ./sample/spiral.tgl

実行権限

$ chmod +x tgl.sh

一枚画像表示。

その画像を閉じると次の処理をする。

文字コードエラー

文字コードエラーなどが出たら、文字コード変換のcvfilesで文字コードを指定する。src, sampleの両方のコードを一括変換してくれる。README-Javaファイルに記載あり。文字コード(utf8, sjis, jis , euc),改行コード(unix, win, mac)

$ cvfiles 文字コード 改行コード

nkf

このスクリプトはnkfを使っている。nkfがなければ導入。nkfなしでcvfilesを実行すると、すべてのファイルを0バイトにするかも。

$ brew install nkf

参考文献

参考1。 brewの導入方法
[リンク]https://qiita.com/megu_ma/items/820695ac525030285682

参考2。Xcodeの導入。下記からダウンロード。
[リンク]https://developer.apple.com/jp/xcode/

言語を作る!bisonとflexを使ってみた
https://qiita.com/toru0408/items/483c77cb76198d4c6ceb

構文解析ツール『Lex&Yacc』の簡易版をアプリに埋め込む
https://qiita.com/tohmas/items/d0a2a6a7b560c9fa8ffb

goyaccを使う
https://qiita.com/draftcode/items/c9f2422fca14133c7f6a

C++でbison(パーサジェネレーター)を使う
https://qiita.com/tosyama/items/6766321025c6a2875109

goyaccで構文解析を行う
https://qiita.com/k0kubun/items/1b641dfd186fe46feb65

CGoでYacc & Bison
https://qiita.com/chobie@github/items/8bc8d1c7104f0a3ad3fe

Markdown記法の一部を理解してHTMLに変換する処理をyacc,lexで実装してみる
https://qiita.com/toshiya/items/7fa39bd9c06fc1c0a44c

FlexとBisonをVisualStudio2017で使う
https://qiita.com/alphya/items/ca668c1315e23dac6e15

文書履歴

ver. 1.00 初稿 2017/12/28
ver. 1.01 shell指定 2018/03/28
ver. 1.02 ありがとう追記 20230508

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0