mirror of
https://github.com/jorenchik/mdemory.git
synced 2026-03-22 00:26:21 +00:00
Refactoring and custom deck file extension
This commit is contained in:
@@ -16,15 +16,17 @@ func main() {
|
|||||||
}
|
}
|
||||||
fileContents := string(file)
|
fileContents := string(file)
|
||||||
|
|
||||||
tokens, err := tokenize([]rune(fileContents))
|
tokens, err := tokenizeMdem([]rune(fileContents))
|
||||||
if (err != nil) {
|
if (err != nil) {
|
||||||
fmt.Printf("%s\n", err.Error())
|
fmt.Printf("%s\n", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (true) {
|
||||||
log.Println("Lexer output:")
|
log.Println("Lexer output:")
|
||||||
for _, el := range tokens {
|
for _, el := range tokens {
|
||||||
fmt.Print(el.ToString())
|
fmt.Print(el.ToString())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
automata = parserAutomata()
|
automata = parserAutomata()
|
||||||
err = validateGrammar()
|
err = validateGrammar()
|
||||||
@@ -36,10 +38,12 @@ func main() {
|
|||||||
if (err != nil) {
|
if (err != nil) {
|
||||||
log.Fatal(err.Error())
|
log.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
if (true) {
|
||||||
log.Println("Parser output:")
|
log.Println("Parser output:")
|
||||||
for _, element := range questions {
|
for _, element := range questions {
|
||||||
fmt.Printf("%s", element.ToString())
|
fmt.Printf("%s", element.ToString())
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.Println("Compilation completed")
|
log.Println("Compilation completed")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
[MathTest]
|
[MathTest]
|
||||||
items = {graph_theory.networks, linear_algebra.*}
|
items = {graph_theory.networks, linear_algebra.*}
|
||||||
base_interval = 2
|
base_interval = 2
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
module github.com/jorenchik/mdemory/src/compiler
|
module github.com/jorenchik/mdemory/src/compiler
|
||||||
|
|
||||||
go 1.22.5
|
go 1.22.5
|
||||||
|
|
||||||
require golang.org/x/text v0.16.0
|
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
|
|
||||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var tokens []Token
|
|
||||||
var buffer []rune
|
var buffer []rune
|
||||||
var row int32 = 1
|
var row int32 = 1
|
||||||
var column int32 = 1
|
var column int32 = 1
|
||||||
@@ -37,7 +36,6 @@ type Token struct {
|
|||||||
column int32;
|
column int32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (token Token)ToString() string {
|
func (token Token)ToString() string {
|
||||||
content := token.content
|
content := token.content
|
||||||
if (token.tokenType == TextFragment) {
|
if (token.tokenType == TextFragment) {
|
||||||
@@ -57,6 +55,7 @@ func (token Token)ToString() string {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var tokens []Token
|
||||||
|
|
||||||
func makePostTextToken(ttype TokenType, tokenLen int32, textType TokenType) {
|
func makePostTextToken(ttype TokenType, tokenLen int32, textType TokenType) {
|
||||||
if (len(strings.Trim(string(buffer), " \n\t")) - 1 > 0) {
|
if (len(strings.Trim(string(buffer), " \n\t")) - 1 > 0) {
|
||||||
@@ -89,7 +88,7 @@ func makePostTextToken(ttype TokenType, tokenLen int32, textType TokenType) {
|
|||||||
buffer = []rune{}
|
buffer = []rune{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func tokenize(fileRunes []rune) ( []Token, error ) {
|
func tokenizeMdem(fileRunes []rune) ( []Token, error ) {
|
||||||
tokens = []Token{}
|
tokens = []Token{}
|
||||||
buffer = []rune{}
|
buffer = []rune{}
|
||||||
|
|
||||||
@@ -187,29 +186,17 @@ func tokenize(fileRunes []rune) ( []Token, error ) {
|
|||||||
|
|
||||||
func ToString (ttype *TokenType) string {
|
func ToString (ttype *TokenType) string {
|
||||||
switch *ttype {
|
switch *ttype {
|
||||||
case TextFragment:
|
case TextFragment: return "TextFragment"
|
||||||
return "TextFragment"
|
case QuestionEnd: return "QuestionEnd"
|
||||||
case QuestionEnd:
|
case ElementDashStart: return "ElementDashStart"
|
||||||
return "QuestionEnd"
|
case ElementPlusStart: return "ElementPlusStart"
|
||||||
case ElementDashStart:
|
case Identifier: return "Identifier"
|
||||||
return "ElementDashStart"
|
case IdentifierStart: return "IdentifierStart"
|
||||||
case ElementPlusStart:
|
case IdentifierEnd: return "IdentifierEnd"
|
||||||
return "ElementPlusStart"
|
case SectionIdentifierStart: return "SectionIdentifierStart"
|
||||||
case Identifier:
|
case SectionStart: return "SectionStart"
|
||||||
return "Identifier"
|
case SectionEnd: return "SectionEnd"
|
||||||
case IdentifierStart:
|
case EOF: return "EndOfFile"
|
||||||
return "IdentifierStart"
|
default: return "NOT_DEFINED"
|
||||||
case IdentifierEnd:
|
|
||||||
return "IdentifierEnd"
|
|
||||||
case SectionIdentifierStart:
|
|
||||||
return "SectionIdentifierStart"
|
|
||||||
case SectionStart:
|
|
||||||
return "SectionStart"
|
|
||||||
case SectionEnd:
|
|
||||||
return "SectionEnd"
|
|
||||||
case EOF:
|
|
||||||
return "EndOfFile"
|
|
||||||
default:
|
|
||||||
return "NOT_DEFINED"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user