Seite 1 von 1

Syntax Fehler ?!

Verfasst: Donnerstag 29. März 2012, 16:57
von tany3
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

Re: Syntax Fehler ?!

Verfasst: Donnerstag 29. März 2012, 17:00
von snafu
Der Fehler tritt vermutlich eine Zeile über der `def`-Zeile auf. Ist einfach ein Erfahrungswert.

Re: Syntax Fehler ?!

Verfasst: Donnerstag 29. März 2012, 17:16
von tany3
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:

Re: Syntax Fehler ?!

Verfasst: Donnerstag 29. März 2012, 17:41
von snafu
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...