Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions cfml.parsing/src/main/antlr4/cfml/CFSCRIPTParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -684,6 +684,8 @@ identifier
| TO
| DEFAULT // default is a cfscript keyword that's always allowed as a var name
| INSTANCEOF // ColdBox's Matcher and TestBox's Assertion both declare function instanceOf()
| FINAL // modifiers, and ordinary names -- `final = 3;` is a variable called final
| ABSTRACT
| CT // two-letter operator abbreviations; far too likely as ordinary names
| NCT
| INCLUDE
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// final and abstract are modifiers, and also ordinary names.
final = 3;
abstract = 4;
combined = final + abstract;
var final = 1;
// The declaration forms have to stay distinguishable from the assignments above.
final limit = 10;
final var total = 0;
// The other modifier keywords, which already worked.
public = 1;
private = 2;
package = 5;
remote = 6;
static = 7;
Original file line number Diff line number Diff line change
@@ -0,0 +1,247 @@
/*===TOKENS===*/
Hidden:LINE_COMMENT <// final and abstract are modifiers, and also ordinary names.>
FINAL <final>
'=' <=>
INTEGER_LITERAL <3>
';' <;>
Hidden:NEWLINE <>
ABSTRACT <abstract>
'=' <=>
INTEGER_LITERAL <4>
';' <;>
Hidden:NEWLINE <>
IDENTIFIER <combined>
'=' <=>
FINAL <final>
'+' <+>
ABSTRACT <abstract>
';' <;>
Hidden:NEWLINE <>
VAR <var>
FINAL <final>
'=' <=>
INTEGER_LITERAL <1>
';' <;>
Hidden:NEWLINE <>
Hidden:LINE_COMMENT <// The declaration forms have to stay distinguishable from the assignments above.>
FINAL <final>
IDENTIFIER <limit>
'=' <=>
INTEGER_LITERAL <10>
';' <;>
Hidden:NEWLINE <>
FINAL <final>
VAR <var>
IDENTIFIER <total>
'=' <=>
INTEGER_LITERAL <0>
';' <;>
Hidden:NEWLINE <>
Hidden:LINE_COMMENT <// The other modifier keywords, which already worked.>
PUBLIC <public>
'=' <=>
INTEGER_LITERAL <1>
';' <;>
Hidden:NEWLINE <>
PRIVATE <private>
'=' <=>
INTEGER_LITERAL <2>
';' <;>
Hidden:NEWLINE <>
PACKAGE <package>
'=' <=>
INTEGER_LITERAL <5>
';' <;>
Hidden:NEWLINE <>
REMOTE <remote>
'=' <=>
INTEGER_LITERAL <6>
';' <;>
Hidden:NEWLINE <>
STATIC <static>
'=' <=>
INTEGER_LITERAL <7>
';' <;>
Hidden:NEWLINE <>
/*===TREE===*/
(scriptBlock
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier final))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 3))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier abstract))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 4))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier combined))))
)
=
(startExpression
(baseExpression
(baseExpression (unaryExpression (memberExpression (identifier final))))
+
(baseExpression (unaryExpression (memberExpression (identifier abstract))))
)
)
)
(endOfStatement ;)
)
)
(element
(statement
(localAssignmentExpression
var
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier final))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 1))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(localAssignmentExpression
final
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier limit))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 10))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(localAssignmentExpression
final
var
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier total))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 0))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier public))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 1))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier private))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 2))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier package))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 5))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier remote))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 6))))
)
)
(endOfStatement ;)
)
)
(element
(statement
(assignmentExpression
(startExpression
(baseExpression (unaryExpression (memberExpression (identifier static))))
)
=
(startExpression
(baseExpression (unaryExpression (primaryExpression (literalExpression 7))))
)
)
(endOfStatement ;)
)
)
)
/*======*/
/*===DECOMPILE===*/
{
final = 3;
abstract = 4;
combined = final + abstract;
var final = 1;
final limit = 10;
final total = 0;
public = 1;
private = 2;
package = 5;
remote = 6;
static = 7;

}
/*======*/
Loading