Syntax Fehler ?!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tany3
User
Beiträge: 20
Registriert: Mittwoch 7. März 2012, 10:32

Hallo zusammen,

Ich räume grade mein Skript etwas auf und hab angefangen mehr Funktionen zu definieren weil ich vorher nur runter geschrieben habe.
Jetzt komme ich aber andauernd diesen verdammten Fehler

Code: Alles auswählen

invalid syntax (Z:/Fingerprint2.0.py, line 54)
Traceback (most recent call last):
  File "C:\Program Files\IDA\python\idaapi.py", line 375, in IDAPython_ExecScript
    execfile(script, g)
  File "Z:/Fingerprint2.0.py", line 54
    def identify_op(op):
      ^
SyntaxError: invalid syntax
Das ist die Funktion bei der er schon einen Fehler wirft :

Code: Alles auswählen

import re 

def identify_op(op):
    if op in reg_strings:
    	return "reg"
    if op in reg_strings2:
    	return "reg"
    elif re.match(r"\[[\w\+\-]+\]", op):
    	return "ptr"
    elif re.match(r"[0-9a-fA-F]+", op):
    	return "const"
    else:
    	return
Ich hab die Funktion mal spaßeshalber gelöscht und bei der nächsten Funktion die direkt darunter ist wirft er auch schon in der "def" Zeile direkt einen Fehler ? Was soll da syntaktisch Falsch sein oder bin ich blind ? :K
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Der Fehler tritt vermutlich eine Zeile über der `def`-Zeile auf. Ist einfach ein Erfahrungswert.
tany3
User
Beiträge: 20
Registriert: Mittwoch 7. März 2012, 10:32

snafu hat geschrieben:Der Fehler tritt vermutlich eine Zeile über der `def`-Zeile auf. Ist einfach ein Erfahrungswert.

Problem gelöst :oops: Klammer über der gefehlt :lol:
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

tany3 hat geschrieben:Klammer über der gefehlt :lol:
Jupp, sowas ist tückisch, lässt sich aber vom Compiler bzw Parser nicht wirklich erkennen. Denn sowas hier ist ja gültiger Code:

Code: Alles auswählen

>>> print ("foo"
... 
... 
... 
... 
...                "bar")
foobar
Aber stattdessen:

Code: Alles auswählen

>>> print ("foo"
... 
... 
... 
... 
...    def test():
  File "<stdin>", line 7
    def test():
      ^
SyntaxError: invalid syntax
Rein theoretisch ließe sich vielleicht anhand der Parser-Zustandes an dieser Stelle eine etwas weniger verwirrende Meldung ausgeben ("Unexpected `def` after `(`"), aber das ist vermutlich nicht ganz trivial und erstmal muss sich ja ein Entwickler finden, der Lust dazu hätte...
Antworten