These are the scriptPubKey's that your program should understand:

1. P2PKH

        OP_DUP OP_HASH160 <20 bytes of public key has> OP_EQUALVERIFY OP_CHECKSIG

2. P2SH

        OP_HASH160 <20 bytes of script hash> OP_EQUAL

3. P2PK

 This is now mostly unused, but there are still unspent outputs in the form:

        <33 or 65 bytes of public key> OP_CHECKSIG

>Should I implement more sophisticated script parser which can detect "non-standard" scripts as well?

No. It's a waste of development time, when nobody uses transactions like that. On top of that, if there's a difference between your parser and Bitcoin's script engine, then you'll think you have coins when you really don't.

For example, the transaction 

    OP_DUP OP_HASH160 <20 bytes of public key has> OP_2DROP OP_CHECKSIG

...is spendable by *anybody*. But does your script parser know that?