sprache 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/bin/sprache +6 -17
  2. data/sprache.rb +157 -41
  3. metadata +2 -2
@@ -1,20 +1,11 @@
1
1
  #!/usr/bin/ruby
2
2
  puts '
3
3
 
4
-
5
- Verwendung:
6
- Sprache started im interaktiven Modus wenn kein Argument gegeben ist.
7
- Ist eine Datei als Argument gegeben wird diese interpretiert bevor der
8
- interaktive Modus gestartet wird.
9
-
10
-
11
- sprache tutorial
12
- ----------------
13
-
14
- Konventionen:
15
- Es koennen Substantive, Adjektive und Verben verwendet werden
16
- um Logik zu beschreiben.
17
- Diese werden ab jetzt mit S, A und V abgekuerzt.
4
+ Grundlagen:
5
+ Substantiven koennen Adjektive und Verben zugewiesen werden,
6
+ dazu werden die woerter "ist", "hat" und "kann"
7
+ verwendet. Gibt man nur den namen eines Substantives ein
8
+ wird eine Beschreibung ausgegeben.
18
9
 
19
10
  Zuweisungen:
20
11
  Adjektive und Verben koennen mit "ist", "hat" und "kann"
@@ -45,7 +36,7 @@ Zuweisungen:
45
36
  usw
46
37
 
47
38
  Fragen:
48
- Zuweisungen koennen abgefragt werden durch.
39
+ Zuweisungen koennen mit "ist", "kann" und "hat" auch abgefragt werden.
49
40
  > ist S A
50
41
  > kann S V
51
42
  > hat S S
@@ -59,8 +50,6 @@ Fragen:
59
50
 
60
51
  > ist Sprache toll
61
52
  ja
62
- > kann Schwein fliegen?
63
- nein
64
53
 
65
54
  Definitionen:
66
55
  Definitionen sind gruppen von Zeilen die mit einem Verb assoziert sind
data/sprache.rb CHANGED
@@ -1,6 +1,132 @@
1
1
  #!/usr/bin/ruby
2
+ puts '
3
+
4
+ Grundlagen:
5
+ Substantiven koennen Adjektive und Verben zugewiesen werden,
6
+ dazu werden die woerter "ist", "hat" und "kann"
7
+ verwendet. Gibt man nur den namen eines Substantives ein
8
+ wird eine Beschreibung ausgegeben.
9
+
10
+ Zuweisungen:
11
+ Adjektive und Verben koennen mit "ist", "hat" und "kann"
12
+ Substantiven zugewiesen werden. Die worte "der", "die", "das",
13
+ "ein", "eine" und "einen" koennen fuer Lesbarkeit verwentet werden,
14
+ werden jedoch vom Interpreter ignoriert.
15
+
16
+ > S ist A
17
+ > S kann V
18
+ > S hat S
19
+ > der S hat S
20
+ > S hat ein S
21
+ usw
22
+
23
+ zum Beispiel:
24
+
25
+ > Sprache ist toll
26
+ > der Schueler kann schreiben
27
+ > das Handy hat ein Tastenfeld
28
+
29
+ Zum Entfernen von Zuweisungen koennen die woerter "nicht", "kein",
30
+ "keine", "keinen" verwendet werden:
31
+
32
+ > S ist nicht A
33
+ > S kann nicht V
34
+ > S kann keinen V
35
+ > S hat kein S
36
+ usw
37
+
38
+ Fragen:
39
+ Zuweisungen koennen mit "ist", "kann" und "hat" auch abgefragt werden.
40
+ > ist S A
41
+ > kann S V
42
+ > hat S S
43
+
44
+ Fragezeichen koennen zur Lesbarkeit angefuegt werden:
45
+ > ist S A?
46
+
47
+ Die antwort ist ja oder nein.
48
+
49
+ zum Beispiel:
50
+
51
+ > ist Sprache toll
52
+ ja
53
+
54
+ Definitionen:
55
+ Definitionen sind gruppen von Zeilen die mit einem Verb assoziert sind
56
+ (siehe Aktionen).
57
+ In Definitionen kann "*", "er" uns "sie" mit dem ausfuehrenden
58
+ Substantiv ersetzt und "es" mit dem Verb selbst
59
+ (siehe Aktionen).
60
+ Definitionen werden mit "vom" eingeleitet und enden mit einer Leerzeile
61
+ (auch in einer Datei). Im interaktiven Modus wechselt bei Definitionen
62
+ die Prompt von ">" nach " -"
63
+
64
+ > vom V
65
+ - ZEILE1
66
+ - ZEILE2
67
+ ...
68
+ - ZEILEN
69
+ -
70
+ >
71
+
72
+ zum Beispiel:
73
+
74
+ > vom schlafen
75
+ - sub ist ausgeruht
76
+ - bett ist zerknittert
77
+ -
78
+ >
79
+
80
+
81
+ Aktionen:
82
+ Durch Aktionen koennen Definitionen ausgefuehrt werden:
83
+
84
+ > S tut V
85
+
86
+ zum Beispiel:
87
+
88
+ > Die Sonne tut scheinen
89
+
90
+ Dies bewirkt auch, dass S V kann.
91
+
92
+ Bedingungen:
93
+ Mit "wenn" koennen Bedingungen angefuegt werden.
94
+
95
+ > S ist A wenn S2 A2 ist
96
+ > S ist A wenn S2 V kann
97
+
98
+ Bedingungen koennen mit "und" oder "oder" erweitert werden.
99
+ Kommas koennen fuer lesbarkeit verwendet werden.
100
+
101
+ > S ist A wenn S2 A2, A3 und A4 ist
102
+ > S ist A wenn S2 V, V2, oder V3 kann
103
+
104
+ Durch "nicht", "kein", "keine" und "keinen" koennen bedingungen
105
+ negiert werden.
106
+
107
+ Globale Bedingungen:
108
+ Sind alle Bedingungen, die nicht in Definitionen vorkommen.
109
+ Sie werden gespeichert und pro zeile ausgewertet.
110
+ Wenn eine globale Bedingung nicht erfuellt wird, hat
111
+ die Zeile den umgekehrten effekt.
112
+ "er", "sie", "es" und "*" werden durch das Subjektiv am
113
+ Anfang der Zeile ersetzt
114
+
115
+ Lokale Bedingungen:
116
+ Sind bedingungen in definitionen.
117
+ Sie werden nur beim ausfuehren der Aktion ausgewertet.
118
+ Wenn eine lokale Bedingung nicht erfuellt ist, wird die
119
+ Zeile ignoriert.
120
+ "er", "sie" und "*" werden durch das Subjektiv am
121
+ Anfang der Zeile ersetzt. "es" wird durch den Namen der Aktion
122
+ ersetzt.
123
+
124
+
125
+ Beschreiben:
126
+ Wenn nur der Name eines Substantives oder Verbes eingebeben wird, wird
127
+ es beschrieben.
128
+ '
2
129
 
3
- require "dbg"
4
130
  $zeilen = ARGF.readlines if ARGV[0]
5
131
  $zeilen = [] unless $zeilen
6
132
  $zeile = -1
@@ -220,66 +346,56 @@ class Sprache
220
346
  end
221
347
  @stimmt = stimmt
222
348
  stimmt = stimmt.! if nicht
223
- woerter.insert(2, "nicht") unless stimmt
349
+ if (woerter.index("kein") or
350
+ woerter.index("keine") or
351
+ woerter.index("keinen") or
352
+ woerter.index("nicht")) and not stimmt
353
+ woerter.delete("nicht")
354
+ woerter.delete("kein")
355
+ woerter.delete("keine")
356
+ woerter.delete("keinen")
357
+ elsif not stimmt
358
+ woerter.insert(2, "nicht")
359
+ end
224
360
  end
225
361
 
362
+ p = " "
363
+
226
364
  if woerter.length == 1
227
365
  if substantiv = hole(zeile[0..-2])
228
- puts "#"
366
+ puts "#{p}"
229
367
  if substantiv.adjektive != []
230
- puts "# ist:"
231
- puts substantiv.adjektive.collect{|a| "# - " + a}
232
- puts "#"
368
+ puts "#{p} ist:"
369
+ puts substantiv.adjektive.collect{|a| "#{p} - " + a}
370
+ puts "#{p}"
233
371
  end
234
372
 
235
373
  if substantiv.besitz != []
236
- puts "# hat:"
237
- puts substantiv.besitz.collect{|a| "# - " + a}
238
- puts "#"
374
+ puts "#{p} hat:"
375
+ puts substantiv.besitz.collect{|a| "#{p} - " + a}
376
+ puts "#{p}"
239
377
  end
240
378
 
241
379
  if substantiv.verben != []
242
- puts "# kann:"
243
- puts substantiv.verben.collect{|a| "# - " + a}
244
- puts "#"
380
+ puts "#{p} kann:"
381
+ puts substantiv.verben.collect{|a| "#{p} - " + a}
382
+ puts "#{p}"
245
383
  end
246
384
  if (bedingungen = @bedingungen.collect{ |b|
247
- "# - " + b if b[substantiv.bezeichner]
385
+ "#{p} - " + b if b[substantiv.bezeichner]
248
386
  }) != []
249
- puts "# bedingungen:"
387
+ puts "#{p} bedingungen:"
250
388
  puts bedingungen
251
- puts "#"
389
+ puts "#{p}"
252
390
  end
253
391
  end
254
392
  if @definitionen.keys.index(zeile[0..-2])
255
- puts @definitionen[zeile[0..-2]].split("\n").collect{|a| "# - " + a}
256
- puts
393
+ puts @definitionen[zeile[0..-2]].split("\n").collect{|a| "#{p} - " + a}
394
+ puts "#{p}"
257
395
  end
258
396
  end
259
397
 
260
- if woerter.delete("und") or woerter.delete("aber")
261
- zeilen = []
262
- woerter[2..-1].each do |wort|
263
- zeilen << (woerter[0..1]+ [wort]).join(" ")
264
- end
265
-
266
- zeilen.each_with_index do |zeile, i|
267
- zeile = zeile.dup.split()
268
- if ["nicht", "kein", "keine", "keinen"].index(zeile[-1])
269
- nicht_einfuegen = true
270
- zeilen.delete_at(i)
271
- end
272
- if nicht_einfuegen
273
- zeilen[i] = zeilen[i].split.insert(2, "nicht").join(" ")
274
- nicht_einfuegen = false
275
- end
276
- end
277
- zeilen.each do |zeile|
278
- zeile = zeile.split.insert(2, "nicht").join(" ") unless @stimmt
279
- zeile_interpretieren(zeile)
280
- end
281
- @stimmt = true
282
- end
398
+
283
399
 
284
400
  if woerter.length > 1
285
401
  nicht = woerter.delete "nicht"
@@ -329,9 +445,9 @@ class Sprache
329
445
  end
330
446
 
331
447
  if woerter[1] == "tut" and not nicht
332
- hole(woerter[0]).kann! woerter[2]
333
448
  subjektiv = woerter[0]
334
449
  verb = woerter[2]
450
+ kann subjektiv, verb
335
451
  if (funktion = @definitionen[woerter[2]])
336
452
  funktion.split("\n").each do |zeile|
337
453
  zeile.gsub!(/\*/, subjektiv)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-06 00:00:00.000000000 Z
12
+ date: 2012-11-07 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: