Skip to content

Commit f4aa746

Browse files
committed
初始提交
1 parent e66f5fb commit f4aa746

23 files changed

+776
-0
lines changed

.gitignore

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
target/
2+
!.mvn/wrapper/maven-wrapper.jar
3+
!**/src/main/**/target/
4+
!**/src/test/**/target/
5+
6+
### IntelliJ IDEA ###
7+
.idea/modules.xml
8+
.idea/jarRepositories.xml
9+
.idea/compiler.xml
10+
.idea/libraries/
11+
*.iws
12+
*.iml
13+
*.ipr
14+
15+
### Eclipse ###
16+
.apt_generated
17+
.classpath
18+
.factorypath
19+
.project
20+
.settings
21+
.springBeans
22+
.sts4-cache
23+
24+
### NetBeans ###
25+
/nbproject/private/
26+
/nbbuild/
27+
/dist/
28+
/nbdist/
29+
/.nb-gradle/
30+
build/
31+
!**/src/main/**/build/
32+
!**/src/test/**/build/
33+
34+
### VS Code ###
35+
.vscode/
36+
37+
### Mac OS ###
38+
.DS_Store

pom.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>edu.carole</groupId>
8+
<artifactId>PythonJava</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<properties>
12+
<maven.compiler.source>17</maven.compiler.source>
13+
<maven.compiler.target>17</maven.compiler.target>
14+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15+
</properties>
16+
17+
</project>

src/main/java/env/StaticVars.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package env;
2+
3+
import var_type.*;
4+
import var_type.var_roots.ClassObject;
5+
import var_type.var_roots.permission_control.InstancePermission;
6+
7+
public class StaticVars {
8+
public static ClassObject OBJECT = new ClassObject();
9+
public static ClassInt INT = new ClassInt();
10+
public static ClassNullType NULL_TYPE = new ClassNullType();
11+
public static ClassFloat FLOAT = new ClassFloat();
12+
public static ClassBoolean BOOLEAN = new ClassBoolean();
13+
public static InstancePermission DEFAULT_PERMISSION = new InstancePermission(OBJECT);
14+
public static InstanceBoolean BOOL_FALSE = new InstanceBoolean(DEFAULT_PERMISSION, false);
15+
public static InstanceBoolean BOOL_TRUE = new InstanceBoolean(DEFAULT_PERMISSION, true);
16+
public static InstanceNullType NULL = new InstanceNullType(DEFAULT_PERMISSION);
17+
18+
}

src/main/java/test.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import env.StaticVars;
2+
import var_type.InstanceFloat;
3+
import var_type.InstanceInt;
4+
5+
public class test {
6+
7+
public static void main(String[] args) {
8+
InstanceFloat num1 = new InstanceFloat(StaticVars.DEFAULT_PERMISSION, 2);
9+
System.out.println(num1.and(StaticVars.BOOL_TRUE).or(StaticVars.NULL));
10+
}
11+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package var_type;
2+
3+
import env.StaticVars;
4+
import var_type.var_interface.IInstance;
5+
import var_type.var_roots.ClassObject;
6+
import var_type.var_roots.permission_control.InstancePermission;
7+
8+
public class ClassBoolean extends ClassObject {
9+
10+
@Override
11+
public ClassObject[] parent() {
12+
return new ClassObject[]{StaticVars.OBJECT};
13+
}
14+
15+
@Override
16+
public String getKeyWord() {
17+
return "bool";
18+
}
19+
20+
@Override
21+
public IInstance getInstance(InstancePermission permission) {
22+
return super.getInstance(permission);
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package var_type;
2+
3+
import env.StaticVars;
4+
import var_type.var_interface.IInstance;
5+
import var_type.var_roots.ClassObject;
6+
import var_type.var_roots.InstanceObject;
7+
import var_type.var_roots.permission_control.InstancePermission;
8+
9+
public class ClassFloat extends ClassObject {
10+
11+
@Override
12+
public String getKeyWord() {
13+
return "float";
14+
}
15+
16+
@Override
17+
public ClassObject[] parent() {
18+
return new ClassObject[]{StaticVars.OBJECT};
19+
}
20+
21+
public IInstance getInstance(InstancePermission permission){
22+
return new InstanceFloat(permission);
23+
}
24+
}

src/main/java/var_type/ClassInt.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package var_type;
2+
3+
import env.StaticVars;
4+
import var_type.var_interface.IInstance;
5+
import var_type.var_roots.ClassObject;
6+
import var_type.var_roots.InstanceObject;
7+
import var_type.var_roots.permission_control.InstancePermission;
8+
9+
public class ClassInt extends ClassObject {
10+
11+
public ClassInt() {
12+
super();
13+
this.type = this;
14+
}
15+
16+
public String getKeyWord() {
17+
return "int";
18+
}
19+
20+
@Override
21+
public ClassObject[] parent() {
22+
return new ClassObject[]{StaticVars.OBJECT};
23+
}
24+
25+
public IInstance getInstance(InstancePermission permission) {
26+
return new InstanceInt(permission);
27+
}
28+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package var_type;
2+
3+
import env.StaticVars;
4+
import var_type.var_roots.ClassObject;
5+
6+
public class ClassNullType extends ClassObject {
7+
@Override
8+
public String getKeyWord() {
9+
return "null";
10+
}
11+
12+
@Override
13+
public ClassObject[] getAllParents() {
14+
return new ClassObject[]{StaticVars.OBJECT};
15+
}
16+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package var_type;
2+
3+
import env.StaticVars;
4+
import var_type.var_interface.ILogicable;
5+
import var_type.var_roots.InstanceObject;
6+
import var_type.var_roots.permission_control.InstancePermission;
7+
8+
public class InstanceBoolean extends InstanceObject implements ILogicable {
9+
10+
boolean data;
11+
public InstanceBoolean(InstancePermission permission) {
12+
super(StaticVars.BOOLEAN, permission);
13+
}
14+
15+
public InstanceBoolean(InstancePermission permission, boolean data) {
16+
this(permission);
17+
this.data = data;
18+
}
19+
20+
@Override
21+
public boolean isPositive() {
22+
return data;
23+
}
24+
25+
@Override
26+
public String toString() {
27+
return data ? "True" : "False";
28+
}
29+
30+
@Override
31+
public boolean equals(Object obj) {
32+
if(!(obj instanceof ILogicable)) return false;
33+
return ((ILogicable) obj).isPositive() == isPositive();
34+
}
35+
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package var_type;
2+
3+
import env.StaticVars;
4+
import var_type.var_interface.IInstance;
5+
import var_type.var_interface.IInstanceNumber;
6+
import var_type.var_interface.ILogicable;
7+
import var_type.var_roots.ClassObject;
8+
import var_type.var_roots.InstanceObject;
9+
import var_type.var_roots.permission_control.InstancePermission;
10+
import var_type.var_roots.permission_control.PermissionTypes;
11+
12+
public class InstanceFloat extends InstanceObject implements IInstanceNumber {
13+
double data = 0;
14+
15+
public InstanceFloat(InstancePermission permission){
16+
super(StaticVars.FLOAT, permission);
17+
}
18+
19+
public InstanceFloat(InstancePermission permission, double data){
20+
super(StaticVars.FLOAT, permission);
21+
this.data = data;
22+
}
23+
24+
InstanceFloat(ClassObject myClass, InstancePermission permission) {
25+
super(myClass, permission);
26+
}
27+
28+
InstanceFloat(ClassObject myClass) {
29+
super(myClass, InstancePermission.getDefault(myClass));
30+
}
31+
32+
InstanceFloat(ClassObject myClass, double data) {
33+
this(myClass);
34+
this.data = data;
35+
}
36+
37+
public InstanceFloat(ClassObject myClass, double data, InstancePermission permission) {
38+
this(myClass, permission);
39+
this.data = data;
40+
}
41+
42+
@Override
43+
public IInstanceNumber addWith(IInstanceNumber number) {
44+
if(number.is(this))
45+
return new InstanceFloat(this.myClass, this.data + number.getNumber(), this.myPermission);
46+
return number.addWith(this);
47+
}
48+
49+
@Override
50+
public IInstanceNumber minusWith(IInstanceNumber number) {
51+
if(number.is(this))
52+
return new InstanceFloat(this.myClass, this.data - number.getNumber(), this.myPermission);
53+
return number.minusWith(this);
54+
}
55+
56+
@Override
57+
public IInstanceNumber multiplyWith(IInstanceNumber number) {
58+
if(number.is(this))
59+
return new InstanceFloat(this.myClass, this.data * number.getNumber(), this.myPermission);
60+
return number.multiplyWith(this);
61+
}
62+
63+
@Override
64+
public IInstanceNumber divideWith(IInstanceNumber number) {
65+
if(number.is(this))
66+
return new InstanceFloat(this.myClass, this.data / number.getNumber(), this.myPermission);
67+
return number.divideWith(this);
68+
}
69+
70+
@Override
71+
public double getNumber() {
72+
return data;
73+
}
74+
75+
@Override
76+
public IInstance convertTo(ClassObject classType) {
77+
if(classType.equals(StaticVars.OBJECT) || classType.equals(StaticVars.FLOAT)) return this;
78+
if(classType.equals(StaticVars.INT)) {
79+
InstanceInt intObj = (InstanceInt) StaticVars.INT.getInstance(myPermission);
80+
intObj.data = (int) data;
81+
return intObj;
82+
}
83+
if(classType.equals(StaticVars.BOOLEAN)) {
84+
return isPositive() ? StaticVars.BOOL_TRUE : StaticVars.BOOL_FALSE;
85+
}
86+
return null;
87+
}
88+
89+
@Override
90+
public boolean isPositive() {
91+
return data > 0;
92+
}
93+
94+
@Override
95+
public String toString() {
96+
return data + "";
97+
}
98+
99+
@Override
100+
public boolean equals(Object obj) {
101+
if(!(obj instanceof InstanceFloat)) return false;
102+
return ((InstanceFloat) obj).data == data;
103+
}
104+
}

0 commit comments

Comments
 (0)