Brainf*ckish directions
Python 2.7 - 154 147 134 128 bytes

l=r=p=0
exec"exec raw_input('%s-&gt;','p+=r+1;r=0%s&lt;-','p-=l+1;l=0%s&gt;','r+=1;p+=1%s&lt;','l+=1;p-=1;')"%((";').replace('",)*4)
print p


Serious changes have been made to the way this program works. I've removed the old explanation, which can still be found in this answer's edit history.

This one's gross.

It works pretty much the same way as other answers for this question, replacing the characters in the input with valid statements in that language and executing them. There's one major difference, though: replace is a long word. Screw that.

@ProgrammerDan in chat came up with the idea of using a tuple with the string ;').replace(' in it 4 times, to use the pre-str.format() method of formatting text. Four instances of %s are in the string on the second line, each one taking its value from the associated element of the tuple at the end. Since they're all the same, each %s is replaced with ;').replace('. When you perform the operations, you get this string:

exec raw_input(';').replace('-&gt;','p+=r+1;r=0;').replace('&lt;-','p-=l+1;l=0;').replace('&gt;','r+=1;p+=1;').replace('&lt;','l+=1;p-=1;')


This is now valid python code that can be executed with exec. That's right, baby: Nested execs let me use string operations on code that needs to perform string operations on code. Someone please kill me.

The rest of it is pretty straightforward: Each command is replaced with code that keeps track of three variables: The current position, the number of rights since the last -&gt;, and the same for lefts and &lt;-. The whole thing is run and the position is printed.

You'll notice that I do raw_input(';'), using ';' as a prompt, rather than raw_input() which has no prompt. This saves characters in an unintuitive way: If I did raw_input(), I'd have to have the tuple filled with ).replace(', and every instance of %s would have ';\'' before it except the first one. Having a prompt creates more redundancy so I can save more characters overall.