Skip to content

Commit b975a44

Browse files
bachishgsvgit
authored andcommitted
Split RSM into package
1 parent 204f45f commit b975a44

30 files changed

+93
-166
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ package org.srcgll
22

33
import org.srcgll.grammar.combinator.Grammar
44
import org.srcgll.grammar.combinator.regexp.*
5-
import org.srcgll.grammar.symbol.Terminal
6-
import org.srcgll.grammar.writeRSMToDOT
5+
import org.srcgll.rsm.symbol.Terminal
76
import org.srcgll.input.Edge
87
import org.srcgll.input.ILabel
98
import org.srcgll.input.IGraph

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

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

3-
import org.srcgll.grammar.RSMState
4-
import org.srcgll.grammar.RSMTerminalEdge
5-
import org.srcgll.grammar.symbol.Nonterminal
3+
import org.srcgll.rsm.RSMState
4+
import org.srcgll.rsm.RSMTerminalEdge
5+
import org.srcgll.rsm.symbol.Nonterminal
66
import org.srcgll.descriptors.*
7-
import org.srcgll.grammar.RSMNonterminalEdge
8-
import org.srcgll.grammar.symbol.Terminal
7+
import org.srcgll.rsm.RSMNonterminalEdge
8+
import org.srcgll.rsm.symbol.Terminal
99
import org.srcgll.gss.*
1010
import org.srcgll.input.ILabel
1111
import org.srcgll.input.IGraph

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

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

3-
import kotlinx.cli.ArgParser
4-
import kotlinx.cli.ArgType
5-
import kotlinx.cli.default
6-
import kotlinx.cli.required
7-
import org.srcgll.grammar.readRSMFromTXT
8-
import org.srcgll.grammar.symbol.Terminal
9-
import org.srcgll.grammar.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
19-
20-
enum class RecoveryMode
21-
{
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
8+
import org.srcgll.rsm.writeRSMToDOT
9+
10+
enum class RecoveryMode {
2211
ON,
2312
OFF,
2413
}
2514

26-
enum class Mode
27-
{
15+
enum class Mode {
2816
Reachability,
2917
AllPairs,
3018
}
3119

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

92-
File(pathToOutputString).printWriter().use {
93-
out -> out.println(buildStringFromSPPF(result.first!!))
24+
init {
25+
setStart(S)
26+
S = Term("a") or Term("a") * S or S * S
27+
}
9428
}
29+
writeRSMToDOT(SGrammar().getRsm(), "./rsm.dot")
9530
}

src/main/kotlin/org/srcgll/benchmarks/Benchmarks.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@ import kotlinx.cli.default
66
import kotlinx.cli.required
77
import org.srcgll.GLL
88
import org.srcgll.RecoveryMode
9-
import org.srcgll.grammar.readRSMFromTXT
10-
import org.srcgll.grammar.symbol.Terminal
9+
import org.srcgll.rsm.readRSMFromTXT
10+
import org.srcgll.rsm.symbol.Terminal
1111
import org.srcgll.input.LinearInput
1212
import org.srcgll.input.LinearInputLabel
1313
import org.srcgll.lexer.GeneratedLexer
1414
import org.srcgll.lexer.SymbolCode
1515
import org.srcgll.lexer.Token
16-
import org.srcgll.sppf.node.ISPPFNode
1716
import org.srcgll.sppf.node.SPPFNode
1817
import org.srcgll.sppf.writeSPPFToDOT
1918
import java.io.File

src/main/kotlin/org/srcgll/descriptors/DescriptorsStack.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.srcgll.descriptors
22

3-
import org.srcgll.grammar.RSMState
3+
import org.srcgll.rsm.RSMState
44
import org.srcgll.gss.GSSNode
55
import org.srcgll.sppf.node.SPPFNode
66

src/main/kotlin/org/srcgll/grammar/combinator/Grammar.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package org.srcgll.grammar.combinator
22

33
import org.srcgll.grammar.combinator.regexp.NT
44
import org.srcgll.grammar.combinator.regexp.Regexp
5-
import org.srcgll.grammar.RSMState
5+
import org.srcgll.rsm.RSMState
66

77
object GlobalState
88
{

src/main/kotlin/org/srcgll/grammar/combinator/regexp/NT.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package org.srcgll.grammar.combinator.regexp
22

33
import org.srcgll.grammar.combinator.GlobalState
44
import org.srcgll.grammar.combinator.Grammar
5-
import org.srcgll.grammar.RSMNonterminalEdge
6-
import org.srcgll.grammar.RSMState
7-
import org.srcgll.grammar.RSMTerminalEdge
8-
import org.srcgll.grammar.symbol.Nonterminal
9-
import org.srcgll.grammar.symbol.Terminal
5+
import org.srcgll.rsm.RSMNonterminalEdge
6+
import org.srcgll.rsm.RSMState
7+
import org.srcgll.rsm.RSMTerminalEdge
8+
import org.srcgll.rsm.symbol.Nonterminal
9+
import org.srcgll.rsm.symbol.Terminal
1010
import java.util.*
1111
import kotlin.reflect.KProperty
1212

src/main/kotlin/org/srcgll/grammar/combinator/regexp/Regexp.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.srcgll.grammar.combinator.regexp
22

3-
import org.srcgll.grammar.symbol.Nonterminal
3+
import org.srcgll.rsm.symbol.Nonterminal
44

55

66
sealed interface Regexp

src/main/kotlin/org/srcgll/grammar/combinator/regexp/Term.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.srcgll.grammar.combinator.regexp
22

3-
import org.srcgll.grammar.symbol.Terminal
3+
import org.srcgll.rsm.symbol.Terminal
44

55
open class Term <TerminalType>
66
(

src/main/kotlin/org/srcgll/grammar/symbol/Nonterminal.kt

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)