I would like to reference other parts of my document (e.g. equations, figures) inside of some source code. Is there an escape sequence such that \ref will be parsed instead of printed as a literal \ref?

My minimal example is as follows:

\documentclass{article}
\usepackage{amsmath}
\usepackage{listings}
\begin{document}
This is the pythagorean theorem:
\begin{equation}\label{eq:pyth}
a^2+b^2=c^2
\end{equation}
I can reference it normally: Equation \ref{eq:pyth}.
I can write a code example that won't work:
\begin{verbatim}
# An R function to solve for c.
# See Equation \ref{eq:pyth} for details.
solve.for.c <- function(a,b){
return( sqrt(a^2 + b^2))
}
\end{verbatim}
And one that works, but is very ugly and hard to maintain: \\
\verb@# An R function to solve for c.@ \\
\verb@# See Equation@ \ref{eq:pyth} \verb@for details.@ \\
\verb@solve.for.c <- function(a,b){@ \\
\verb@solve return( sqrt(a^2 + b^2))@ \\
\verb@}@ \\
How can I do this better?
\end{document}

Any thoughts on how to do this better? Is there a simple feature I'm missing?

For commandchars in Verbatim you have to specify three characters (escaped with the backslash) that aren't otherwise used in the environment's text. The same for escapechar with lstlisting. These characters may be chosen "locally".