master > master: codego - generics
This commit is contained in:
parent
b315e666b8
commit
0856bfc0b0
@ -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)
|
||||||
|
@ -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){},
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user