tree grammar XOptimizer; options { language = Java; output = AST; tokenVocab = XTypeCheck; ASTLabelType = XTree; filter=true; } @header { package de.dhbw.compiler.antlrxcompiler; } @members { private String addString(String first, String last) { return first.substring(0, first.length()-1)+last.substring(1); } private String opInt(String first, String last, char op) { int firstValue = 0; int lastValue = 0; try { firstValue = Integer.parseInt(first); lastValue = Integer.parseInt(last); } catch (Exception e) { e.printStackTrace(); } switch (op) { case '+': return Integer.toString(firstValue+lastValue); case '-': return Integer.toString(firstValue-lastValue); case '*': return Integer.toString(firstValue*lastValue); case '/': return Integer.toString(firstValue/lastValue); default: return ""; } } private String opFloat(String first, String last, char op) { double firstValue = 0.0; double lastValue = 0.0; try { firstValue = Double.parseDouble(first); lastValue = Double.parseDouble(last); } catch (Exception e) { e.printStackTrace(); } switch (op) { case '+': return Double.toString(firstValue+lastValue); case '-': return Double.toString(firstValue-lastValue); case '*': return Double.toString(firstValue*lastValue); case '/': return Double.toString(firstValue/lastValue); default: return ""; } } } bottomup: ;