2016-03-30 14 views
0

Ich versuche, ein MCVE für eine Frage zu erstellen, die ich später stellen werde, aber ich bin auf ein Problem mit der Online-IDE gestoßen, die ich versuche zu verwenden, ideone.Kann PLY lexer nicht mit ideone bauen

Der Code in dem unten stehenden Link perfekt funktioniert gut, wenn ich es in meinen lokalen Python 2.7 Interpreter ausführen:

http://ideone.com/DpALEU

jedoch auf ideone, die Fehler, die wir bekommen sind:

ERROR: prog.py:282: No regular expression defined for rule 't_DIRECTIVE' 
ERROR: prog.py:286: No regular expression defined for rule 't_REFERENCE' 
ERROR: prog.py:291: No regular expression defined for rule 't_UNAME' 
ERROR: prog.py:296: No regular expression defined for rule 't_USTRING' 
ERROR: prog.py:301: No regular expression defined for rule 't_UFLOAT' 
ERROR: prog.py:307: No regular expression defined for rule 't_HEX' 
ERROR: prog.py:314: No regular expression defined for rule 't_INTEGER' 
ERROR: prog.py:320: No regular expression defined for rule 't_COMMENT' 
ERROR: prog.py:324: No regular expression defined for rule 't_ID' 
ERROR: prog.py:330: No regular expression defined for rule 't_newline' 
Traceback (most recent call last): 
    File "prog.py", line 338, in <module> 
    File "/usr/lib/python2.7/dist-packages/ply/lex.py", line 901, in lex 
    raise SyntaxError("Can't build lexer") 
SyntaxError: Can't build lexer 

Allerdings definiere ich meine Regeln gültig. Zum Beispiel:

def t_REFERENCE(t): 
    r'([a-zA-Z0-9_\-]+)\s*\'([a-zA-Z0-9_\-\.]+)\'' 
    return t 

Was würde diesen Fehler verursachen?

Vielen Dank im Voraus.

+0

Ich würde die verschachtelten einfachen Anführungszeichen vermuten. –

+0

Ich glaube nicht, dass das der Fall ist, da 'r '\ # (\ w +) \ s + (. +)'' ('T_DIRECTIVE') keine' '' Zeichen enthält. –

Antwort

1

Vermutlich verwendet Ideone die Optimierungseinstellung -OO, die alle Docstrings entfernt. Folglich kann das Modul lex die Docstrings nicht finden, wenn es den Scanner erstellen möchte. Ein ähnliches Problem würde in dem Parser auftreten. Hier

ist eine hässliche Abhilfe: http://ideone.com/H5rxXK

Es ist eine saubere Abhilfe durch die PLY manual empfohlen (siehe den nächsten Abschnitt - 8. Mit Python Optimierungsmodus - nach dem Link, die „richtigen“ Link funktioniert derzeit nicht wegen eines HTML-Fehlers im PLY-Handbuch). Leider produziert es a different error, vermutlich das Ergebnis der Dateisystemvirtualisierung von Ideone.

+0

Vielen Dank. –