I'd use (region-beginning) and (region-end). Good grief.
btw, I have written a fuller account on this syntax-tree-walking
in particular, emacs's forward-sexp et al has a simplistic
implementation in that it sometimes doesn't do what it is supposed to
do. (see the example there)