master > master: codego - generics

This commit is contained in:
RD 2021-05-15 10:58:17 +02:00
parent b315e666b8
commit 0856bfc0b0
3 changed files with 21 additions and 21 deletions

View File

@ -11,6 +11,7 @@ import (
type Formula struct { type Formula struct {
kind string kind string
name string
expr string expr string
valence int valence int
subformulae [](*Formula) subformulae [](*Formula)
@ -28,6 +29,8 @@ func (fml *Formula) SetExpr(expr string) { fml.expr = expr }
func (fml Formula) GetExpr() string { return fml.expr } func (fml Formula) GetExpr() string { return fml.expr }
func (fml Formula) GetName() string { return fml.name }
func (fml *Formula) SetSubformulae(subfmls [](*Formula)) { func (fml *Formula) SetSubformulae(subfmls [](*Formula)) {
fml.subformulae = subfmls fml.subformulae = subfmls
fml.valence = len(subfmls) fml.valence = len(subfmls)

View File

@ -22,23 +22,25 @@ var Contradiction = Formula{
* METHODS: Constructions * METHODS: Constructions
* ---------------------------------------------------------------- */ * ---------------------------------------------------------------- */
func Atom(expr string) Formula { func Atom(name string) Formula {
return Formula{ return Formula{
kind: "atom", kind: "atom",
expr: expr, name: name,
expr: name,
valence: 0, valence: 0,
subformulae: [](*Formula){}, subformulae: [](*Formula){},
} }
} }
func NegatedAtom(expr string) Formula { func NegatedAtom(name string) Formula {
return Negation(Atom(expr)) return Negation(Atom(name))
} }
func Generic(expr string) Formula { func Generic(name string) Formula {
return Formula{ return Formula{
kind: "generic", kind: "generic",
expr: expr, name: name,
expr: "{" + name + "}",
valence: 0, valence: 0,
subformulae: [](*Formula){}, subformulae: [](*Formula){},
} }

View File

@ -3,6 +3,7 @@ package schema
import ( import (
"logik/aussagenlogik/formulae" "logik/aussagenlogik/formulae"
parser "logik/grammars/aussagenlogik" parser "logik/grammars/aussagenlogik"
"regexp"
"github.com/antlr/antlr4/runtime/Go/antlr" "github.com/antlr/antlr4/runtime/Go/antlr"
) )
@ -65,22 +66,13 @@ func (ant antlrTree) getLabel() string {
} }
func (ant antlrTree) getTextContent() string { func (ant antlrTree) getTextContent() string {
var expr string = ant.getLabel()
for _, subant := range ant.getChildren() {
expr += subant.getTextContent()
}
return expr
}
func (ant antlrTree) getTextContentLeaves() string {
var expr string = "" var expr string = ""
var subants = ant.getChildren() var subants = ant.getChildren()
if len(subants) == 0 { if len(subants) == 0 {
expr = ant.getLabel() return ant.getLabel()
} else { }
for _, subant := range subants { for _, subant := range subants {
expr += subant.getTextContent() expr += subant.getTextContent()
}
} }
return expr return expr
} }
@ -116,9 +108,12 @@ func (ant antlrTree) toFormula() formulae.Formula {
case "contradiction": case "contradiction":
return formulae.Contradiction return formulae.Contradiction
case "atom": case "atom":
return formulae.Atom(ant.getTextContentLeaves()) name := ant.getTextContent()
return formulae.Atom(name)
case "generic": case "generic":
return formulae.Generic(ant.getTextContentLeaves()) re := regexp.MustCompile(`^{|}$`)
name := string(re.ReplaceAll([]byte(ant.getTextContent()), []byte("")))
return formulae.Generic(name)
case "not": case "not":
// NOTE: expr = ! expr // NOTE: expr = ! expr
if nChildren == 2 { if nChildren == 2 {