Thanks for the help. Here is a simple parser for MooTools. I’ll expand it as I become more familiar with PCRE.
<association id= "mootools_syntax" langID="19" /> <parser displayName="MooTools" id ="mootools_syntax" commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)" > <classRange mainExpr ="(^var[\t\x20]+[A-Za-z_]\w*\s*\=\s*\{|(\bvar)?[\t\x20]+[A-Za-z_]\w*\s*\=\s*new\s+[A-Za-z_]\w*\s*\(\s*\{)" openSymbole ="\{" closeSymbole="\}" > <className> <nameExpr expr="[\t\x20]+[A-Za-z_]\w*" /> <nameExpr expr="[A-Za-z_]\w*" /> </className> <function mainExpr="^[\t\x20]+\w+[\t\x20]*\:[\t\x20]*function" > <functionName> <funcNameExpr expr="[\t\x20]+\w+" /> <funcNameExpr expr="\w+" /> </functionName> </function> </classRange> <function mainExpr="((^|\s+|[;\}\.])([A-Za-z_]\w*\.)*[A-Za-z_]\w*\s*[=:]|^|[\s;\}]+)\s*function(\s+[A-Za-z_]?\w*\s*\([^\)\(]*\)|\([^\)\(]*\))[\n\s]*\{" > <functionName> <nameExpr expr="[A-Za-z_]\w*\s*[=:]|[A-Za-z_]?\w*\s*\(" /> <nameExpr expr="[A-Za-z_]?\w*" /> </functionName> <className> <nameExpr expr="([A-Za-z_]\w*\.)*[A-Za-z_]\w*\." /> <nameExpr expr="([A-Za-z_]\w*\.)*[A-Za-z_]\w*" /> </className> </function> </parser>