Is there anyway to search PL/SQL reserved words with contains function?
You can't use contains because there is no Oracle Text index on the database source.  You could, I suppose, write a query that copied the data from dba_source to a custom table, create an Oracle Text index on that table, and search that table using the contains function.

It would generally make more sense, though, to just query dba_source with a like query

SELECT *
  FROM dba_source
 WHERE lower( text ) like '%for %';