]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/parser/generator/compression/CompressedParseTable.java
Moved SCL parser generator to platform repository.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / parser / generator / compression / CompressedParseTable.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/parser/generator/compression/CompressedParseTable.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/parser/generator/compression/CompressedParseTable.java
new file mode 100644 (file)
index 0000000..039f253
--- /dev/null
@@ -0,0 +1,40 @@
+package org.simantics.scl.compiler.parser.generator.compression;
+
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class CompressedParseTable {
+    public final CompressedTable actionTable;
+    public final int[] errorTable;
+    public final CompressedTable gotoTable;
+    public final int[] productionInfo;
+    public final int[] initialStates;
+    public final String[] stateDescriptions;
+    
+    public CompressedParseTable(CompressedTable actionTable,
+            int[] errorTable,
+            CompressedTable gotoTable, int[] productionInfo,
+            int[] initialStates,
+            String[] stateDescriptions) {
+        this.actionTable = actionTable;
+        this.errorTable = errorTable;
+        this.gotoTable = gotoTable;
+        this.productionInfo = productionInfo;
+        this.initialStates = initialStates;
+        this.stateDescriptions = stateDescriptions;
+    }
+    
+    public void writeTo(File file) throws IOException {
+        FileOutputStream stream = new FileOutputStream(file);
+        DataOutputStream output = new DataOutputStream(stream);
+        actionTable.writeTo(output);
+        for(int val : errorTable)
+            output.writeInt(val);
+        gotoTable.writeTo(output);
+        for(int val : productionInfo)
+            output.writeInt(val);
+        output.close();
+    }
+}