Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
D
DHParser
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Analytics
Analytics
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
badw-it
DHParser
Commits
2467ebca
Commit
2467ebca
authored
Oct 24, 2017
by
di68kap
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- MLW ergänzt
parent
4441a5ef
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
71 additions
and
14 deletions
+71
-14
DHParser/syntaxtree.py
DHParser/syntaxtree.py
+2
-4
examples/MLW/Beispiele/fascitergula.mlw
examples/MLW/Beispiele/fascitergula.mlw
+6
-6
examples/MLW/MLW.ebnf
examples/MLW/MLW.ebnf
+3
-1
examples/MLW/algorithmen_MLW.py
examples/MLW/algorithmen_MLW.py
+56
-0
examples/MLW/verarbeite_Beispiele.py
examples/MLW/verarbeite_Beispiele.py
+4
-3
No files found.
DHParser/syntaxtree.py
View file @
2467ebca
...
...
@@ -212,12 +212,10 @@ class Node(collections.abc.Sized):
"""Initializes the ``Node``-object with the ``Parser``-Instance
that generated the node and the parser's result.
"""
# self._result = '' # type: StrictResultType
# self.children = () # type: ChildrenType
# self._len = -1 # type: int
self
.
error_flag
=
0
# type: int
self
.
_errors
=
[]
# type: List[Error]
# self.result = result would suffice; if clause is merely an optimization for speed
# Assignment to self.result initializes the attributes _result, children and _len
# The following if-clause is merely an optimization, i.e. a fast-path for leaf-Nodes
if
leafhint
:
self
.
_result
=
result
# type: StrictResultType
self
.
children
=
NoChildren
# type: ChildrenType
...
...
examples/MLW/Beispiele/fascitergula.mlw
View file @
2467ebca
LEMMA facitergul
|
a
LEMMA facitergula
fasc
-
itergula
fac
-iet-
ergula
fac
-ist-
ergula
fa
scite-rcu-
la
fascitergula
fac
iet
ergula
fac
ist
ergula
fa
citercu
la
ZUSATZ sim.
...
...
@@ -19,7 +19,7 @@ SCHREIBWEISE
script.:
vizreg-: v. ibi
festregel(a): v. ibi
fezdregl(a): v. i
n
i
fezdregl(a): v. i
b
i
BEDEUTUNG
...
...
examples/MLW/MLW.ebnf
View file @
2467ebca
...
...
@@ -13,6 +13,8 @@ Artikel = [LZ]
§LemmaPosition
[ArtikelKopf]
BedeutungsPosition
[VerweisPosition]
{ SubArtikel }+
ArtikelVerfasser
[LZ] DATEI_ENDE
...
...
@@ -22,7 +24,7 @@ Artikel = [LZ]
LemmaPosition = "LEMMA" [LZ] §Lemma TR [LemmaVarianten]
GrammatikPosition [EtymologiePosition]
Lemma =
{ klassisch | gesichert }
LemmaWort
Lemma =
[< klassisch | gesichert >]
LemmaWort
klassisch = "*"
gesichert = "$"
...
...
examples/MLW/algorithmen_MLW.py
0 → 100644
View file @
2467ebca
"""algorithmen.py - diverse Algorithmen für das MLW"""
import
re
# fasc - itergula
# fac - iet - ergula
# fac - ist - ergula
# facite - rcu - la
testfall_facitergula
=
"""
facitergula
fascitergula
facietergula
facistergula
facitercula
"""
def
teile_lemma
(
lemma_txt
):
return
[
s
for
s
in
re
.
split
(
r'\s+|(?:\s*;\s*)|(?:\s*,\s*)'
,
lemma_txt
)
if
s
]
def
differenz
(
lemma
,
variante
):
# finde den ersten Unterschied von links
l
=
0
while
l
<
min
(
len
(
lemma
),
len
(
variante
))
and
lemma
[
l
]
==
variante
[
l
]:
l
+=
1
# finde den ersten Unterschied von rechts
r
=
1
while
r
<=
min
(
len
(
lemma
),
len
(
variante
))
and
lemma
[
-
r
]
==
variante
[
-
r
]:
r
+=
1
r
-=
1
l
-=
1
# beginne 1 Zeichen vor dem ersten Unterschied
if
l
<=
1
:
l
=
0
# einzelne Buchstaben nicht abtrennen
r
-=
1
# beginne 1 Zeichen nach dem letzten Unterschied
if
r
<=
1
:
r
=
0
# eingelne Buchstaben nicht abtrennen
# gib Zeichenkette der Unterschide ab dem letzten gemeinsamen (von links) bzw.
# ab dem ersten gemeinsamen (von rechts) Buchstaben mit Trennstrichen zurück
return
((
'-'
if
l
>
0
else
''
)
+
variante
[
l
:(
-
r
)
or
None
]
+
(
'-'
if
r
>
0
else
''
))
def
verdichtung_lemmavarianten
(
lemma_txt
):
geteilt
=
teile_lemma
(
lemma_txt
)
lemma
=
geteilt
[
0
]
varianten
=
geteilt
[
1
:]
for
v
in
varianten
:
print
(
differenz
(
lemma
,
v
))
if
__name__
==
"__main__"
:
verdichtung_lemmavarianten
(
testfall_facitergula
)
examples/MLW/verarbeite_Beispiele.py
View file @
2467ebca
...
...
@@ -19,6 +19,7 @@ save_path = os.getcwd()
os
.
chdir
(
"Beispiele"
)
for
entry
in
os
.
listdir
():
if
entry
.
lower
().
endswith
(
'.mlw'
):
print
(
'
\n
Parse: '
+
entry
)
raw_name
=
os
.
path
.
splitext
(
entry
)[
0
]
with
logging
(
True
):
result
,
messages
,
AST
=
compile_source
(
entry
,
...
...
@@ -26,9 +27,9 @@ for entry in os.listdir():
get_grammar
(),
get_transformer
(),
get_compiler
())
#
if AST:
#
with open(raw_name + '.ast', 'w', encoding='utf-8') as f:
#
f.write(AST.as_sxpr(compact=False))
if
AST
:
with
open
(
raw_name
+
'.ast'
,
'w'
,
encoding
=
'utf-8'
)
as
f
:
f
.
write
(
AST
.
as_sxpr
(
compact
=
False
))
if
messages
:
print
(
"Errors in: "
+
entry
)
with
open
(
raw_name
+
'.messages'
,
'w'
,
encoding
=
'utf-8'
)
as
f
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment