autotool - FAQ

Kontakt: autotool-admin@theopc.informatik.uni-leipzig.de
Download: Postscript-Version



Merksätze zur Syntax




Inhalt




1 Adressen, Subjects




2 Mein Fehler oder autotool-Fehler

Es gibt, wie so oft, viele Möglichkeiten, daß etwas nicht funktioniert:




3 autotool antwortet garnicht

Fehler: autotool antwortet garnicht.

Ursache: Das Tool hat die Ihre Mail gar nicht registriert, weil

Auf Mails mit unbekanntem Subject oder Absender erfolgt keine Antwort (noch nicht mal eine Fehlermeldung).

Abhilfe: Das Subject muß ein Wort aus der Liste der bekannten Aufgaben sein. (siehe 1)

Ihre Mail muß den Absender haben, den Sie zu Semesterbeginn bei der Einschreibung angegeben hatten. (Diese können Sie auch jetzt noch über das Web-Formular ändern, aber diese Änderungen werden aus Sicherheitsgründen nicht sofort automatisch für autotool übernommen.)



4 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 Eingabe 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.


5 Unresolved top-level overloading

Fehler:

Type checking      
ERROR "Student****.hs" (line **): Unresolved top-level overloading
*** Binding             : student
*** Outstanding context : (Num Fun, Enum Fun)

Ursache:

student = 
    Ind 1 [ Sub 0 [ Builtin 2 "paar"
                  , Sub 0 [ succ 1, Zero 0 ] , ...

Der Bezeicher "succ" bezeichnet gar nicht das, was Sie meinen.

Abhilfe: Es muß Succ (mit großem Anfangsbuchstaben) heißen.


6 *** Outstanding context : Num Bewegung

Fehler: Outstanding context: Num Bewegung.

Ursache: In einer Turing-Maschinen-Tabelle steht das:

t = listToFM
      [  ( ('A', Z0), mkSet [ ( 'A', Z0, R ) ] )
        ,( ('#', Z0), mkSet [ ( '#', F, 0 ) ] )
      ]

Die ''0'' (Null) ist keine erlaubte Bewegung.

Abhilfe: Es muß ein ''O'' (Oh) sein.


7 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 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ß Aufgabe43 sein.


8 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.


9 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: 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 "--" (nur zwei Zeichen, keine Leerzeichen) eben selbst ein.



10 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.


11 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")] )
             ...



12 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)


13 Wie geht das mit den rekursiven Funktionen

Die Lösungen zu den Aufgaben FUN111, FUN112, FUN113 sehen so aus:

import Fun
student = ... Builtin 2 "mal" ...

Die Funktion, die Sie definieren sollen, heißt in jedem Fall student. Die bereits definierten Funktionen, die Sie benutzen wollen, heißen Builtin 1 "prim" usw. (auch die, die Sie in einer anderen Teilaufgabe als 'student' definiert haben).


14 Program error: das Builtin `***' gibt es nicht

Frage: Welche Builtins gibt es denn?

Das ist je nach Aufgabe verschieden. Meist sind jedoch die arithmetischen Funktionen vorhanden, die in dieser Liste stehen: Arithmetik.hs

Frage: Kann ich selbst Funktionen einbauen?

Ja, aber nicht als Builtins, sondern so, wie in diesen Beispielen: Examples.hs



Kontakt: autotool-admin@theopc.informatik.uni-leipzig.de