just start with defining parameter as IdentifierTerminal with only '@' as start symbol - you can specify it in constructor. Everything else should be the same, just add the parameter in appropriate place in expressions, (somewhere along with column references
and constants/literals)

well, this is wrong way to go, with @ as punctuation symbol.
Sorry I misled you in my advice. Specifying '@' in constructor adds the symbol to default list of characters, not replaces it. That's why this behavior. Here's an easy solution - do not define extra terminal for parameter, just modify the regular identifier
by using AddPrefix method and specifying '@' as a valid prefix to the name. After parsing, the token has Details property which is an instance of CompoundTokenDetails class, which has Prefix property - that's how you can determine if it is parameter or not.
Alternatively, following the same road as before, you define parameter as IdentifierTerminal, but instead of specifying '@' in constructor you set the property AllFirstChars to this single symbol - then it will work, and you will have a separate terminal for
parameters, might be easier to analyze the tree nodes.
roman