I’m using tag syntax if that makes a difference.
{
"start": {
"line": 1,
"column": 0,
"offset": 0
},
"end": {
"line": 4,
"column": 14,
"offset": 228
},
"type": "Program",
"body": [
{
"start": {
"line": 1,
"column": 0,
"offset": 0
},
"end": {
"line": 4,
"column": 14,
"offset": 228
},
"type": "CFMLTag",
"isBuiltIn": true,
"name": "function",
"nameSpace": "cf",
"nameSpaceSeparator": "",
"fullname": "cffunction",
"attributes": [],
"body": {
"type": "BlockStatement",
"body": [
{
"start": {
"line": 1,
"column": 83,
"offset": 83
},
"end": {
"line": 2,
"column": 5,
"offset": 89
},
"type": "ExpressionStatement",
"expression": {
"start": {
"line": 1,
"column": 83,
"offset": 83
},
"end": {
"line": 2,
"column": 5,
"offset": 89
},
"type": "StringLiteral",
"value": "\r\n ",
"raw": "\"\r\n \""
}
},
{
"start": {
"line": 2,
"column": 5,
"offset": 89
},
"end": {
"line": 2,
"column": 63,
"offset": 147
},
"type": "CFMLTag",
"isBuiltIn": true,
"name": "argument",
"nameSpace": "cf",
"nameSpaceSeparator": "",
"fullname": "cfargument",
"attributes": []
},
{
"start": {
"line": 2,
"column": 63,
"offset": 147
},
"end": {
"line": 3,
"column": 5,
"offset": 153
},
"type": "ExpressionStatement",
"expression": {
"start": {
"line": 2,
"column": 63,
"offset": 147
},
"end": {
"line": 3,
"column": 5,
"offset": 153
},
"type": "StringLiteral",
"value": "\r\n ",
"raw": "\"\r\n \""
}
},
{
"start": {
"line": 3,
"column": 5,
"offset": 153
},
"end": {
"line": 3,
"column": 65,
"offset": 213
},
"type": "CFMLTag",
"isBuiltIn": true,
"name": "return",
"nameSpace": "cf",
"nameSpaceSeparator": "",
"fullname": "cfreturn",
"attributes": [
{
"name": "expr",
"type": "Attribute",
"value": {
"start": {
"line": 3,
"column": 15,
"offset": 163
},
"end": {
"line": 3,
"column": 62,
"offset": 210
},
"type": "BinaryExpression",
"operator": "CONCAT",
"left": {
"start": {
"line": 3,
"column": 15,
"offset": 163
},
"end": {
"line": 3,
"column": 62,
"offset": 210
},
"type": "BinaryExpression",
"operator": "CONCAT",
"left": {
"start": {
"line": 3,
"column": 15,
"offset": 163
},
"end": {
"line": 3,
"column": 30,
"offset": 178
},
"type": "BinaryExpression",
"operator": "CONCAT",
"left": {
"start": {
"line": 3,
"column": 15,
"offset": 163
},
"end": {
"line": 3,
"column": 30,
"offset": 178
},
"type": "StringLiteral",
"value": "User ",
"raw": "\"User \""
},
"right": {
"start": {
"line": 3,
"column": 22,
"offset": 170
},
"end": {
"line": 3,
"column": 30,
"offset": 178
},
"type": "CastExpression",
"typeAnnotation": "string",
"argument": {
"start": {
"line": 3,
"column": 22,
"offset": 170
},
"end": {
"line": 3,
"column": 30,
"offset": 178
},
"type": "Identifier",
"name": "userName"
}
}
},
"right": {
"start": {
"line": 3,
"column": 15,
"offset": 163
},
"end": {
"line": 3,
"column": 62,
"offset": 210
},
"type": "StringLiteral",
"value": " has access level: ",
"raw": "\" has access level: \""
}
},
"right": {
"start": {
"line": 3,
"column": 51,
"offset": 199
},
"end": {
"line": 3,
"column": 62,
"offset": 210
},
"type": "CastExpression",
"typeAnnotation": "string",
"argument": {
"start": {
"line": 3,
"column": 51,
"offset": 199
},
"end": {
"line": 3,
"column": 62,
"offset": 210
},
"type": "Identifier",
"name": "accessLevel"
}
}
}
}
]
},
{
"start": {
"line": 3,
"column": 65,
"offset": 213
},
"end": {
"line": 4,
"column": 1,
"offset": 215
},
"type": "ExpressionStatement",
"expression": {
"start": {
"line": 3,
"column": 65,
"offset": 213
},
"end": {
"line": 4,
"column": 1,
"offset": 215
},
"type": "StringLiteral",
"value": "\r\n",
"raw": "\"\r\n\""
}
}
]
}
}
]
}
<cffunction name="testFunction" access="public" returntype="string" output="false">
<cfargument name="userName" type="string" required="true">
<cfreturn "User #userName# has access level: #accessLevel#">
</cffunction>