CUP
付録の Scanner の例を bison マニュアルの中間記法電卓で確認CUP ファイルは、 import java_cup.runtime.*; terminal SEMI, PLUS, MINUS, TIMES, DIVIDE, MOD, EXPON, EOL, LPAREN, RPAREN; terminal UMINUS; terminal Integer NUMBER; non terminal Object…
「error EOL」があると発生しないようなので、はずしてCUP ファイルは、 import java_cup.runtime.*; parser code {: public void unrecovered_syntax_error(Symbol cur_token) { System.out.println("unrecovered_syntax_error: " + cur_token); } :}; term…
CUP ファイルは、 import java_cup.runtime.*; parser code {: public void syntax_error(Symbol cur_token) { System.out.println("syntax_error: " + cur_token); } :}; terminal A, EOL; non terminal Object input, line; input ::= | input line ; line…
「error EOL」があると発生しないようなので、はずしてCUP ファイルは、 import java_cup.runtime.*; parser code {: public void report_error(String message, Object info) { System.out.println("report_error: " + message); System.out.println("repor…
CUP ファイルは、 import java_cup.runtime.*; parser code {: public void report_error(String message, Object info) { System.out.println("report_error: " + message); System.out.println("report_error: " + info); } :}; terminal A, EOL; non term…
Summary 以外も詳しく出力される Opening files... Parsing specification from standard input... Checking specification... Building parse tables... Computing non-terminal nullability... Computing first sets... Building state machine... Filling…
「-parser」で parser.java に出力されていたのを、 「-symbols」で sym.java に出力されていたのを変更できるようだ。
import java_cup.runtime.*; terminal A, EOL; non terminal Object input, line; start with input; line ::= EOL | A EOL {: System.out.println("*a*"); :} ; input ::= | input line ; 宣言の最後でなく、宣言の最初の方に書いたらエラーになった
import java_cup.runtime.*; init with {: // Init 1 // Init 2 // Init 3 :}; scan with {: // Scan 1 // Scan 2 // Scan 3 :}; terminal A, EOL; non terminal Object input, line; input ::= | input line ; line ::= EOL | A EOL {: System.out.println(…
import java_cup.runtime.*; action code {: // Action Code 1 // Action Code 2 // Action Code 3 :}; parser code {: // Parser Code 1 // Parser Code 2 // Parser Code 3 :}; terminal A, EOL; non terminal Object input, line; input ::= | input line…
想定外の文字は null を返せば良かったのか? (今までは適当なトークンを割り当ていていた)CUP ファイルは、 import java_cup.runtime.*; terminal CHAR, EOL; non terminal Object input, line; input ::= | input line ; line ::= EOL | CHAR:c EOL {: Sys…
「ラベル名」left, 「ラベル名」right という変数が宣言されるらしい。 ユーザは入力ストリーム中のそれぞれの終端記号と 非終端記号の左辺と右辺の位置を見つけ出すことができる とあるが、どういうときに使いたいのかも正確な意味も良く分からない。CUP フ…
bison マニュアルの多機能電卓 練習問題2を JFlex の examples に入っていたコードなどを参考に記述定数 PI, E を追加 CUP ファイルは、 import java_cup.runtime.*; parser code {: public static double func(String sym_name, double v) { if (sym_name =…
bison マニュアルの多機能電卓を JFlex の examples に入っていたコードなどを参考に記述CUP ファイルは、 import java_cup.runtime.*; parser code {: public static double func(String sym_name, double v) { if (sym_name == "sin") { return Math.sin(v…
bison マニュアルの中間記法電卓を JFlex の examples に入っていたコードなどを参考に記述CUP ファイルは、 import java_cup.runtime.*; terminal OTHERS, PLUS, MINUS, MULT, DIV, EXPON, EOL, LB, RB; terminal UMINUS; terminal Double NUMBER; non term…
bison マニュアルの逆ポーランド記法電卓を JFlex の examples に入っていたコードなどを参考に記述CUP ファイルは、 import java_cup.runtime.*; terminal OTHERS, PLUS, MINUS, MULT, DIV, EXPON, N, EOL; terminal Double NUMBER; non terminal Object in…
CUP ファイルは、 import java_cup.runtime.*; terminal OTHER, CHAR, EOL; non terminal Object input, line; input ::= | input line ; line ::= EOL | CHAR:c EOL {: System.out.println(c); :} | error EOL ; Java ファイルは、 import java.io.*; impor…
そもそも JFlex の examples に入っていたコードを参考に書いていたんだけどCUP ファイルは、 import java_cup.runtime.*; terminal CHAR, A, EOL; non terminal Object input, line; input ::= | input line ; line ::= EOL | A EOL {: System.out.println(…
昨日との違い CHAR というトークンを作り、Lexer 内でエラーを発生させないように error リカバリを入れた Lexer 内の symbol() を削除 yyline, yycolumn を追加 CUP ファイルは、 import java_cup.runtime.*; terminal CHAR, A, EOL; non terminal Object i…
JFlex の examples に入っていたコードを参考にCUP ファイルは、 import java_cup.runtime.*; terminal A, EOL; non terminal Object input, line; input ::= | input line ; line ::= EOL | A EOL {: System.out.println("*a*"); :} ; Java ファイルは、 im…