Autotool - FAQ


Merksätze zur Syntax:

Inhalt


Syntax error ... possibly due to bad layout

Fehler:

ERROR "Student6618.hs" (line 19): 
  Syntax error in expression (unexpected `;', 
  possibly due to bad layout)
oder
ERROR "Student6419.hs" (line 4): 
   Syntax error in input (unexpected keyword "deriving")

Ursache: Ihre Einfgabe enthält

data Foo = Bar
deriving Baz
oder
t = listToFM [ 
        ( ( Just 'a' , Z1, 'a'), mkSet [ ( Z2, "b") ] )
]
oder
student = NPDA { eingabealphabet = mkSet "ab"
, kelleralphabet = mkSet "Sab"
, zustandsmenge = mkSet [ Z0 ]
, tafel = t
, startzustand = Z0
oder
                ,    ( ( Nothing , z1 , 'S' ), mkSet [( z1 , "SSb"),(z1
, "a")])
                ,     ( ( Nothing , z1 , 'Z' ), mkSet [( z1 , " " )]) 
Der Fehler ist jedesmal ein unerwartetes Zeichen in der ersten Spalte.

Hingegen hier:

import NPDA
                 data Z = Z0 | Z1 | Z2 | Z3 
muß das data in der ersten Spalte stehen.

Abhilfe:

data Foo = Bar
    deriving Baz
oder
t = listToFM [ -- Spalte 1 (Z0, x = 0)
        ( ( Just 'a' , Z1, 'a'), mkSet [ ( Z2, "b") ] )
    ]
oder
student = NPDA { eingabealphabet = mkSet "ab"
     , kelleralphabet = mkSet "Sab"
     , zustandsmenge = mkSet [ Z0 ]
     , tafel = t
     , startzustand = Z0
oder
                ,    ( ( Nothing , z1 , 'S' ), mkSet [( z1 , "SSb"),(z1
     , "a")])
                ,     ( ( Nothing , z1 , 'Z' ), mkSet [( z1 , " " )]) 
oder
import NPDA
data Z = Z0 | Z1 | Z2 | Z3 
Schalten Sie, falls erforderlich, in Ihrem Mailer/Editor den automatischen Zeilenumbruch ab.

Begründung: Die Indentation spielt in Haskell eine wichtige Rolle, weil vor jedes Wort, das in der allerersten Spalte beginnt, automatisch ein Semikolon eingesetzt wird. Die sind nämlich die Trennzeichen (ähnlich wie in C), aber man kann sie (und die dazugehörenden Klammern { }) aufgrund dieser sogenannten Layout-Regel meist weglassen. Siehe auch diese Erläuterung.


autotool antwortet gar nicht

Fehler:Autotool antwortet gar nicht.

Ursache:Das Tool hat die Ihre Mail gar nicht registriert, weil das Subject-Feld nicht dem Muster entspricht.

Abhilfe: Das Subject muß die Form

autotool Aufgabe42a
haben. Alles andere, wie
autotool 42a
WG: autotool Aufgabe42a
...
funktionert nicht. Es landet nicht beim Autotool, sondern bei mir, und dort wird es gelöscht.

Syntax error in import declaration

Fehler:

ERROR "Main24618.hs" (line 3): Syntax error in import declaration
(unexpected symbol "aufgabe43")

Ursache: Das Subject der Mail war autotool aufgabe43 Es wird direkt abgeschrieben in eine Import-Deklaration, nämlich import aufgabe43, aber das Modul "aufgabe43" gibt es nicht, denn Modul-Namen in Haskell beginnen mit Großbuchstaben.

Abhilfe: Das Subject muß autotool Aufgabe43 sein.


unexpected symbol "message"

Fehler:
runhugs: Error occurred
Reading file "Main9940.hs":
Parsin^H^H^H^H^H^HReading file "Student9940.hs":
Parsing
ERROR "Student9940.hs" (line 2): Syntax error in declaration 
   (unexpected symbol "message")
Ursache: Ihr Mailer schickt sowas:
> This is a multi-part message in MIME format.
> 
> ------=_NextPart_000_001B_01C06408.F1694D60
> Content-Type: text/plain;
>         charset="iso-8859-1"
> Content-Transfer-Encoding: quoted-printable
> 
> import Grammatik
> 
> student =3D Grammatik
>        { terminale =3D "01"
Abhilfe: Stellen Sie Ihre Mailer so ein, daß er nur Plain-Text (ASCII) verschickt, und keine multi-part-messages mit HTML-Anhängen.

Syntax error in declaration (unexpected `.')

Fehler:

...
Parsing
ERROR "Student3499.hs" (line 14): Syntax error in declaration (unexpected `.')

Ursache Ihre Mail enthält eine Unterschrift

...
_______________________________________________
Sent through irgendeinen kostenlosen provider
welche kein kein gültiger Haskell-Code ist.

Abhilfe: (Neu, 31. 1.) Das autotool liest die Mail nur bis zur ersten Zeile, auf die der reguläre Ausdruck

^---* *$
paßt. D. h., wenn sich Ihr Provider an den Standard hält, die Unterschrift durch eine Zeile "--" vom Text zu trennen, dann klappt es. Wenn nicht, dann schimpfen sie mit ihm und fügen die Zeile "--" eben selbst ein.

Garbage collection fails...

Fehler:

...
ich erzeuge jetzt alle Wörter aus L(G), in deren Ableitung
nur Wortformen der Länge <= 12 vorkommen
das sind runhugs: Error occurred

ERROR: Garbage collection fails to reclaim sufficient space

Ursache: In Ihrer Grammatik gibt es sehr viele Ableitungen, und Autotool hat dafür nicht genug Speicherplatz.

Abhilfe: Ändern Sie die Grammatik. Die Aufgaben sind alle auch mit Grammatiken lösbar, die nicht zu stark verzweigen.


Undefined variable "a"

Fehler:

...
ERROR "Student26935.hs" (line 8): Undefined variable "a"

Ursache: Ihre Eingabe enthält

t = listToFM [
               ( ( Just a , Z0, 'b'), mkSet [ ( Z1, "ba")] )
             , ( ( Just b , Z0, 'b'), mkSet [ ( Z1, "ba")] )
	     ...
Nach Just steht die Variable a, die aber nirgendwo deklariert ist.

Abhilfe: Sie meinen tatsächlich dort nicht die Variable a, sondern das Zeichen 'a', müssen also schreiben

t = listToFM [
               ( ( Just 'a' , Z0, 'b'), mkSet [ ( Z1, "ba")] )
             , ( ( Just 'b' , Z0, 'b'), mkSet [ ( Z1, "ba")] )
	     ...

Syntax error in data definition

Fehler:

ERROR "Student23738.hs" (line 4): 
  Syntax error in data definition (unexpected `=')
ERROR "Student19480.hs" (line 4): 
  Syntax error in data type definition (unexpected `|')

Ursache: Ihre Eingabe enthält

data z= z0
     deriving (Eq, Ord, Show)
-- oder
data Z = z0 | z1 | z2 | z3 | z4     deriving (Eq, Ord, Show)

Abhilfe: Sowohl der Typname (Z) als auch die Konstruktoren (Z0, Z1, ..) müssen mit Großbuchstaben beginnen.

data Z = Z0 | Z1 | Z2 | Z3 | Z4     deriving (Eq, Ord, Show)