Skip to content
Snippets Groups Projects
Commit 105444dc authored by Dominic Daniel Krämer's avatar Dominic Daniel Krämer
Browse files

implemented a first version of the functionplotter with swing

parent 91226ef2
No related branches found
No related tags found
1 merge request!11Dominicsbranch
5 1+(x^2)-(3*x)
x 2*x+0.5*(x^2)-1
4+2 \ No newline at end of file
3+(2^3)
2*2*2+3
(23+2*(2*3))-5
1 + x*y^2 - (31 * x)-y
1 + x^2 - (3 * x)
2-x + 0.5*x^2 - 1
(5*2-(5^2)+3*(201.01-15))
\ No newline at end of file
File added
...@@ -5,9 +5,19 @@ public class ASTPrinter implements Visitor<String>{ ...@@ -5,9 +5,19 @@ public class ASTPrinter implements Visitor<String>{
if(binaryOP.capsuled) { if(binaryOP.capsuled) {
sb.append("("); sb.append("(");
} }
sb.append(binaryOP.leftExpression.accept(this)); if(binaryOP.operator.contains("^")) {
sb.append(binaryOP.operator); sb.append("Pow(");
sb.append(binaryOP.rightExpression.accept(this)); sb.append(binaryOP.leftExpression.accept(this));
sb.append(",");
sb.append(binaryOP.rightExpression.accept(this));
sb.append(")");
}
else {
sb.append(binaryOP.leftExpression.accept(this));
sb.append(binaryOP.operator);
sb.append(binaryOP.rightExpression.accept(this));
}
if(binaryOP.capsuled) { if(binaryOP.capsuled) {
sb.append(")"); sb.append(")");
} }
......
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
public class Application { public class Application {
public static void main(String[] args) { public static void main(String[] args) {
//LinkedList<String> expressions = new LinkedList<>()
//LinkedList<String> expressions = new List<>();
List<String> expressions = new LinkedList<>(); List<String> expressions = new LinkedList<>();
//Reads the file "expressions.txt" and adds its values to a list //Reads the file "expressions.txt" and adds its values to a list
BufferedReader reader; BufferedReader reader;
...@@ -43,7 +40,9 @@ public class Application { ...@@ -43,7 +40,9 @@ public class Application {
ASTPrinter printer = new ASTPrinter(); ASTPrinter printer = new ASTPrinter();
Evaluator evaluator = new Evaluator(); Evaluator evaluator = new Evaluator();
System.out.println("Printing: '" + printer.visit(exp) + "'"); System.out.println("Printing: '" + printer.visit(exp) + "'");
String s = printer.visit(exp);
System.out.println("Evaluating: '" + evaluator.visit(exp) + "'"); System.out.println("Evaluating: '" + evaluator.visit(exp) + "'");
SwingFunctionPlotter.plotFunction(s);
} }
catch (ParserException e) { catch (ParserException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
......
...@@ -3,7 +3,11 @@ public class Evaluator implements Visitor<Double>{ ...@@ -3,7 +3,11 @@ public class Evaluator implements Visitor<Double>{
@Override @Override
public Double visit(final Parser.BinaryOperation binaryOP) { public Double visit(final Parser.BinaryOperation binaryOP) {
double result = binaryOP.leftExpression.accept(this); double result = binaryOP.leftExpression.accept(this);
double rOperand = binaryOP.rightExpression.accept(this); Double rOperand = binaryOP.rightExpression.accept(this);
if(rOperand==null) {
}
switch (binaryOP.operator.charAt(0)) { switch (binaryOP.operator.charAt(0)) {
case '+': case '+':
result += rOperand; result += rOperand;
......
import com.mindfusion.charting.FunctionSeries;
import com.mindfusion.charting.swing.LineChart;
import javax.swing.*;
import java.awt.*;
public class SwingFunctionPlotter extends JFrame {
private static final long serialVersionUID = 1L;
public static void plotFunction(String function) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
new SwingFunctionPlotter(function).setVisible(true);
}
catch(Exception e) {
e.printStackTrace();
}
}
});
}
protected SwingFunctionPlotter(String function) {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(650, 400);
setTitle("Java Swing Library for Charts and Gauges: FunctionSeries");
getContentPane().add(initializeChart(function), BorderLayout.CENTER);
}
private LineChart initializeChart(String function) {
LineChart lineChart = new LineChart();
FunctionSeries series1;
try {
series1 = new FunctionSeries(function,1000, -20, 20);
series1.setTitle("Current function");
lineChart.getSeries().add(series1);
}
catch(Exception e) {
e.printStackTrace();
}
return lineChart;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment