Skip to content

Commit c520b75

Browse files
bachishgsvgit
authored andcommitted
Rollback main
1 parent b975a44 commit c520b75

File tree

2 files changed

+80
-16
lines changed

2 files changed

+80
-16
lines changed

src/main/kotlin/org/srcgll/Main.kt

Lines changed: 80 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,95 @@
11
package org.srcgll
22

3-
import org.srcgll.grammar.combinator.Grammar
4-
import org.srcgll.grammar.combinator.regexp.NT
5-
import org.srcgll.grammar.combinator.regexp.Term
6-
import org.srcgll.grammar.combinator.regexp.or
7-
import org.srcgll.grammar.combinator.regexp.times
3+
import kotlinx.cli.ArgParser
4+
import kotlinx.cli.ArgType
5+
import kotlinx.cli.default
6+
import kotlinx.cli.required
7+
import org.srcgll.rsm.readRSMFromTXT
8+
import org.srcgll.rsm.symbol.Terminal
89
import org.srcgll.rsm.writeRSMToDOT
10+
import org.srcgll.input.IGraph
11+
import org.srcgll.input.LinearInput
12+
import org.srcgll.input.LinearInputLabel
13+
import java.io.*
14+
import org.srcgll.lexer.GeneratedLexer
15+
import org.srcgll.lexer.SymbolCode
16+
import org.srcgll.lexer.Token
17+
import org.srcgll.sppf.writeSPPFToDOT
18+
import org.srcgll.sppf.buildStringFromSPPF
919

10-
enum class RecoveryMode {
20+
enum class RecoveryMode
21+
{
1122
ON,
1223
OFF,
1324
}
1425

15-
enum class Mode {
26+
enum class Mode
27+
{
1628
Reachability,
1729
AllPairs,
1830
}
1931

20-
fun main(args: Array<String>) {
21-
class SGrammar : Grammar() {
22-
var S by NT()
32+
fun main(args : Array<String>)
33+
{
34+
val parser = ArgParser("srcgll")
2335

24-
init {
25-
setStart(S)
26-
S = Term("a") or Term("a") * S or S * S
27-
}
36+
val recoveryMode by
37+
parser
38+
.option(ArgType.Choice<RecoveryMode>(), fullName = "recovery", description = "Recovery mode")
39+
.default(RecoveryMode.ON)
40+
41+
val pathToInput by
42+
parser
43+
.option(ArgType.String, fullName = "inputPath", description = "Path to input txt file")
44+
.required()
45+
46+
val pathToGrammar by
47+
parser
48+
.option(ArgType.String, fullName = "grammarPath", description = "Path to grammar txt file")
49+
.required()
50+
51+
val pathToOutputString by
52+
parser
53+
.option(ArgType.String, fullName = "outputStringPath", description = "Path to output txt file")
54+
.required()
55+
56+
val pathToOutputSPPF by
57+
parser
58+
.option(ArgType.String, fullName = "outputSPPFPath", description = "Path to output dot file")
59+
.required()
60+
61+
parser.parse(args)
62+
63+
64+
val input = File(pathToInput).readText().replace("\n","").trim()
65+
val grammar = readRSMFromTXT(pathToGrammar)
66+
var lexer = GeneratedLexer(StringReader(input))
67+
var token : Token<SymbolCode>
68+
var vertexId = 0
69+
70+
val inputGraph = LinearInput<Int, LinearInputLabel>()
71+
72+
inputGraph.addVertex(vertexId)
73+
inputGraph.addStartVertex(vertexId)
74+
75+
// while (!lexer.yyatEOF()) {
76+
// token = lexer.yylex() as Token<SymbolCode>
77+
// println("(" + token.value + ")" + token.type.toString())
78+
// inputGraph.addEdge(vertexId, LinearInputLabel(Terminal(token)), ++vertexId)
79+
// inputGraph.addVertex(vertexId)
80+
// }
81+
82+
for (x in input) {
83+
inputGraph.addEdge(vertexId, LinearInputLabel(Terminal(x.toString())), ++vertexId)
84+
inputGraph.addVertex(vertexId)
85+
}
86+
87+
val result = GLL(grammar, inputGraph, recoveryMode).parse()
88+
89+
writeSPPFToDOT(result.first!!, "./result_sppf.dot")
90+
writeRSMToDOT(grammar, "./rsm.dot")
91+
92+
File(pathToOutputString).printWriter().use {
93+
out -> out.println(buildStringFromSPPF(result.first!!))
2894
}
29-
writeRSMToDOT(SGrammar().getRsm(), "./rsm.dot")
3095
}

src/test/kotlin/TestRSMStringInputWIthSPPFRecovery.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import org.srcgll.GLL
55
import org.srcgll.RecoveryMode
66
import org.srcgll.sppf.buildStringFromSPPF
77
import org.srcgll.rsm.readRSMFromTXT
8-
import org.srcgll.grammar.symbol.*
98
import org.srcgll.input.LinearInput
109
import org.srcgll.input.LinearInputLabel
1110
import org.srcgll.rsm.symbol.Terminal

0 commit comments

Comments
 (0)