jay

bison マニュアルの多機能電卓 練習問題2

自前 Scanner で %{ import java.io.*; import java.util.*; class Obj { public String name; public int type; public double val; Obj(String s, int t, double v) { name = s; type = t; val = v; } } public class Test { %} %token NUM %type <Double> exp NUM</double>…

bison マニュアルの多機能電卓 練習問題2

JFlex を使って %% %class Scanner %implements Test.yyInput %type int %eofval{ return YYEOF; %eofval} %{ private int token; protected Object value; public boolean advance() throws java.io.IOException { token = yylex(); return token != YYEOF;…

bison マニュアルの多機能電卓

自前 Scanner で %{ import java.io.*; import java.util.*; class Obj { public String name; public int type; public double val; Obj(String s, int t, double v) { name = s; type = t; val = v; } } public class Test { %} %token NUM %type <Double> exp NUM</double>…

bison マニュアルの多機能電卓

JFlex を使って %% %class Scanner %implements Test.yyInput %type int %eofval{ return YYEOF; %eofval} %{ private int token; protected Object value; public boolean advance() throws java.io.IOException { token = yylex(); return token != YYEOF;…

bison マニュアルの中間記法電卓

自前 Scanner で %{ import java.io.*; public class Test { %} %token NUM %type <Double> exp NUM %left '-' '+' %left '*' '/' %left NEG /* negation--単項マイナス */ %right '^' /* べき乗関数 */ %% input: /* 空 */ | input line ; line: '\n' | exp '\n' { </double>…

bison マニュアルの中間記法電卓

JFlex を使って %% %class Scanner %implements Test.yyInput %type int %eofval{ return YYEOF; %eofval} %{ private int token; protected Double value; public boolean advance() throws java.io.IOException { token = yylex(); return token != YYEOF;…

bison マニュアルの逆ポーランド記法電卓

自前 Scanner で %{ import java.io.*; public class Test { %} %token NUM %type <Double> exp NUM %% input: /* 空 */ | input line ; line: '\n' | exp '\n' { System.out.println("\t" + $1); } ; exp: NUM { $$ = new Double($1.doubleValue()); } | exp exp '+</double>…

bison マニュアルの逆ポーランド記法電卓

JFlex を使って %% %class Scanner %implements Test.yyInput %type int %eofval{ return YYEOF; %eofval} %{ private int token; protected Double value; public boolean advance() throws java.io.IOException { token = yylex(); return token != YYEOF;…

簡単な例、Scanner の部分で JFlex を使って

トークンでなく、直接文字を記述 %% %class Scanner %implements Test.yyInput %type int %eofval{ return YYEOF; %eofval} %{ private int token; protected Object value; public boolean advance() throws java.io.IOException { token = yylex(); return…

簡単な例、Scanner の部分で JFlex を使って

トークンを記述 %% %class Scanner %implements Test.yyInput %type int %eofval{ return YYEOF; %eofval} %{ private int token; protected Object value; public boolean advance() throws java.io.IOException { token = yylex(); return token != YYEOF;…

簡単な例、Scanner の部分を StreamTokenizer を使わずに

トークンを記述 %{ import java.io.*; public class Test { %} %token <char> A %% start : A '\n' { System.out.println("*a*"); } %% public static void main (String args []) { Scanner scanner = new Scanner(); try { new Test().yyparse(scanner); } catch</char>…

簡単な例、Scanner の部分を StreamTokenizer を使わずに

トークンでなく、直接文字を記述 %{ import java.io.*; public class Test { %} %% start : 'a' '\n' { System.out.println("*a*"); } %% public static void main (String args []) { Scanner scanner = new Scanner(); try { new Test().yyparse(scanner);…

簡単な例、Scanner の部分を試行錯誤

トークンでなく、直接文字を記述 %{ import java.io.*; public class Test { %} %% start : 'a' '\n' { System.out.println("*a*"); } %% public static void main (String args []) { Scanner scanner = new Scanner(new InputStreamReader(System.in)); tr…

簡単な例、Scanner の部分を試行錯誤

arith_simple/Arith.jay を参考に %{ import java.io.*; public class Test { %} %token <char> A %% start : A '\n' { System.out.println("*a*"); } %% public static void main (String args []) { Scanner scanner = new Scanner(new InputStreamReader(System</char>…