Typescript syntax diagram generated from grammar at https://github.com/antlr/grammars-v4/tree/master/javascript/typescript

program sourceElements <End of File>
sourceElements sourceElement

sourceElements is referenced by:

functionBody program
sourceElement export statement

sourceElement is referenced by:

sourceElements
statement block importStatement exportStatement emptyStatement_ abstractDeclaration decoratorList classDeclaration interfaceDeclaration namespaceDeclaration ifStatement iterationStatement continueStatement breakStatement returnStatement yieldStatement withStatement labelledStatement switchStatement throwStatement tryStatement debuggerStatement functionDeclaration arrowFunctionDeclaration generatorFunctionDeclaration variableStatement typeAliasDeclaration enumDeclaration expressionStatement export statement

statement is referenced by:

classElement exportStatement ifStatement iterationStatement labelledStatement sourceElement statement statementList withStatement
expressionStatement expressionSequence ;

expressionStatement is referenced by:

statement
expressionSequence singleExpression , singleExpression

expressionSequence is referenced by:

caseClause expressionStatement ifStatement iterationStatement returnStatement singleExpression switchStatement throwStatement withStatement yieldStatement
singleExpression functionExpressionDeclaration arrowFunctionDeclaration class Identifier classTail singleExpression [ expressionSequence ] singleExpression . identifierName nestedTypeGeneric new singleExpression typeArguments arguments new singleExpression typeArguments singleExpression arguments singleExpression ++ singleExpression -- delete singleExpression void singleExpression typeof singleExpression ++ singleExpression -- singleExpression + singleExpression - singleExpression ~ singleExpression ! singleExpression singleExpression * / % singleExpression singleExpression + - singleExpression singleExpression << >> >>> singleExpression singleExpression < > <= >= singleExpression singleExpression instanceof singleExpression singleExpression in singleExpression singleExpression == != === !== singleExpression singleExpression & singleExpression singleExpression ^ singleExpression singleExpression | singleExpression singleExpression && singleExpression singleExpression || singleExpression singleExpression ? singleExpression : singleExpression singleExpression = singleExpression singleExpression assignmentOperator singleExpression singleExpression templateStringLiteral iteratorBlock generatorBlock generatorFunctionDeclaration yieldStatement this identifierName singleExpression super literal arrayLiteral objectLiteral ( expressionSequence ) typeArguments expressionSequence singleExpression as asExpression

singleExpression is referenced by:

argument arrayElement arrowFunctionBody asExpression decoratorMemberExpression enumMember expressionSequence formalParameterArg initializer iterationStatement iteratorDefinition propertyAssignment restParameter singleExpression templateStringAtom variableDeclaration
asExpression predefinedType [ ] singleExpression

asExpression is referenced by:

singleExpression
predefinedType any number boolean string symbol void

predefinedType is referenced by:

asExpression primaryType
objectLiteral { propertyAssignment , propertyAssignment , }

objectLiteral is referenced by:

bindingPattern formalParameterList singleExpression variableDeclaration
propertyAssignment propertyName : = singleExpression [ singleExpression ] : singleExpression getAccessor setAccessor generatorMethod identifierOrKeyWord restParameter

propertyAssignment is referenced by:

objectLiteral
restParameter ... singleExpression typeAnnotation

restParameter is referenced by:

parameterList propertyAssignment
typeAnnotation : type_

typeAnnotation is referenced by:

arrowFunctionDeclaration callSignature constructSignature formalParameterArg functionExpressionDeclaration getAccessor indexSignature optionalParameter propertyMemberDeclaration propertySignatur requiredParameter restParameter setAccessor variableDeclaration variableStatement
type_ unionOrIntersectionOrPrimaryType functionType constructorType typeGeneric " DoubleStringCharacter " \' SingleStringCharacter \'

type_ is referenced by:

constraint constructorType functionType primaryType propertySignatur tupleElementTypes typeAliasDeclaration typeAnnotation typeArgument typeMember
SingleStringCharacter Any Char except: ['\\\r\n] \\ EscapeSequence LineContinuation

SingleStringCharacter is referenced by:

StringLiteral
LineContinuation \\ [\r\n\u2028\u2029]

LineContinuation is referenced by:

DoubleStringCharacter SingleStringCharacter
EscapeSequence CharacterEscapeSequence 0 HexEscapeSequence UnicodeEscapeSequence ExtendedUnicodeEscapeSequence

EscapeSequence is referenced by:

DoubleStringCharacter SingleStringCharacter
ExtendedUnicodeEscapeSequence u { [0-9a-fA-F] }

ExtendedUnicodeEscapeSequence is referenced by:

EscapeSequence
UnicodeEscapeSequence u [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]

UnicodeEscapeSequence is referenced by:

EscapeSequence IdentifierStart
HexEscapeSequence x [0-9a-fA-F] [0-9a-fA-F]

HexEscapeSequence is referenced by:

EscapeSequence
CharacterEscapeSequence ['"\\bfnrtv] Any Char except: ['"\\bfnrtv0-9xu\r\n]

CharacterEscapeSequence is referenced by:

EscapeSequence
DoubleStringCharacter Any Char except: ["\\\r\n] \\ EscapeSequence LineContinuation

DoubleStringCharacter is referenced by:

StringLiteral
typeGeneric < typeArgumentList >

typeGeneric is referenced by:

nestedTypeGeneric type_
typeArgumentList typeArgument , typeArgument

typeArgumentList is referenced by:

typeArguments typeGeneric typeIncludeGeneric
typeArgument type_

typeArgument is referenced by:

typeArgumentList
constructorType new typeParameters ( parameterList ) => type_

constructorType is referenced by:

type_
parameterList restParameter parameter , parameter , restParameter

parameterList is referenced by:

callSignature constructSignature constructorType functionType
parameter requiredParameter optionalParameter

parameter is referenced by:

parameterList
optionalParameter decoratorList accessibilityModifier identifierOrPattern ? typeAnnotation typeAnnotation initializer

optionalParameter is referenced by:

parameter
initializer = singleExpression

initializer is referenced by:

optionalParameter propertyMemberDeclaration variableStatement
identifierOrPattern identifierName bindingPattern

identifierOrPattern is referenced by:

optionalParameter requiredParameter
bindingPattern arrayLiteral objectLiteral

bindingPattern is referenced by:

identifierOrPattern setAccessor typeIncludeGeneric variableStatement
accessibilityModifier public private protected

accessibilityModifier is referenced by:

constructorDeclaration formalParameterArg optionalParameter propertyMemberBase requiredParameter variableStatement
requiredParameter decoratorList accessibilityModifier identifierOrPattern typeAnnotation

requiredParameter is referenced by:

parameter requiredParameterList
typeParameters < typeParameterList >

typeParameters is referenced by:

callSignature classDeclaration constructSignature constructorType functionType interfaceDeclaration typeAliasDeclaration typeParameter variableDeclaration
typeParameterList typeParameter , typeParameter

typeParameterList is referenced by:

typeParameters
typeParameter Identifier constraint typeParameters

typeParameter is referenced by:

typeParameterList
constraint extends type_

constraint is referenced by:

typeParameter
functionType typeParameters ( parameterList ) => type_

functionType is referenced by:

type_
unionOrIntersectionOrPrimaryType unionOrIntersectionOrPrimaryType | unionOrIntersectionOrPrimaryType unionOrIntersectionOrPrimaryType & unionOrIntersectionOrPrimaryType primaryType

unionOrIntersectionOrPrimaryType is referenced by:

type_ unionOrIntersectionOrPrimaryType
primaryType ( type_ ) predefinedType typeReference objectType primaryType [ ] [ tupleElementTypes ] typeQuery this typeReference is primaryType

primaryType is referenced by:

arrayType primaryType unionOrIntersectionOrPrimaryType
typeQuery typeof typeQueryExpression

typeQuery is referenced by:

primaryType
typeQueryExpression Identifier identifierName . identifierName

typeQueryExpression is referenced by:

typeQuery
tupleElementTypes type_ , type_

tupleElementTypes is referenced by:

primaryType tupleType
objectType { typeBody }

objectType is referenced by:

interfaceDeclaration primaryType
typeBody typeMemberList ; ,

typeBody is referenced by:

objectType
typeMemberList typeMember ; , typeMember

typeMemberList is referenced by:

typeBody
typeMember propertySignatur callSignature constructSignature indexSignature methodSignature => type_

typeMember is referenced by:

typeMemberList
methodSignature propertyName ? callSignature

methodSignature is referenced by:

typeMember
indexSignature [ Identifier : number string ] typeAnnotation

indexSignature is referenced by:

indexMemberDeclaration typeMember
constructSignature new typeParameters ( parameterList ) typeAnnotation

constructSignature is referenced by:

typeMember
callSignature typeParameters ( parameterList ) typeAnnotation

callSignature is referenced by:

abstractDeclaration functionDeclaration methodSignature propertyMemberDeclaration typeMember
propertySignatur readonly propertyName ? typeAnnotation => type_

propertySignatur is referenced by:

typeMember
typeReference typeName nestedTypeGeneric

typeReference is referenced by:

classExtendsClause classOrInterfaceTypeList primaryType
typeName Identifier namespaceName

typeName is referenced by:

typeReference
namespaceName Identifier . Identifier

namespaceName is referenced by:

importAliasDeclaration namespaceDeclaration typeName
identifierOrKeyWord Identifier type require

identifierOrKeyWord is referenced by:

formalParameterArg propertyAssignment variableDeclaration
generatorMethod * Identifier ( formalParameterList ) { functionBody }

generatorMethod is referenced by:

propertyAssignment
functionBody sourceElements

functionBody is referenced by:

arrowFunctionBody constructorDeclaration functionDeclaration functionExpressionDeclaration generatorFunctionDeclaration generatorMethod getAccessor iteratorDefinition propertyMemberDeclaration setAccessor
formalParameterList formalParameterArg , formalParameterArg , lastFormalParameterArg lastFormalParameterArg arrayLiteral objectLiteral : formalParameterList

formalParameterList is referenced by:

arrowFunctionParameters constructorDeclaration formalParameterList functionExpressionDeclaration generatorFunctionDeclaration generatorMethod iteratorDefinition
lastFormalParameterArg ... Identifier

lastFormalParameterArg is referenced by:

formalParameterList
formalParameterArg decorator accessibilityModifier identifierOrKeyWord ? typeAnnotation = singleExpression

formalParameterArg is referenced by:

formalParameterList
decorator @ decoratorMemberExpression decoratorCallExpression

decorator is referenced by:

decoratorList formalParameterArg
decoratorCallExpression decoratorMemberExpression arguments

decoratorCallExpression is referenced by:

decorator
decoratorMemberExpression Identifier decoratorMemberExpression . identifierName ( singleExpression )

decoratorMemberExpression is referenced by:

decorator decoratorCallExpression decoratorMemberExpression
setAccessor setter ( Identifier bindingPattern typeAnnotation ) { functionBody }

setAccessor is referenced by:

propertyAssignment propertyMemberDeclaration
setter set propertyName

setter is referenced by:

setAccessor
getAccessor getter ( ) typeAnnotation { functionBody }

getAccessor is referenced by:

propertyAssignment propertyMemberDeclaration
getter get propertyName

getter is referenced by:

getAccessor
propertyName identifierName " DoubleStringCharacter " \' SingleStringCharacter \' numericLiteral

propertyName is referenced by:

enumMember getter methodSignature propertyAssignment propertyMemberDeclaration propertySignatur setter
numericLiteral DecimalLiteral HexIntegerLiteral OctalIntegerLiteral OctalIntegerLiteral2 BinaryIntegerLiteral

numericLiteral is referenced by:

literal propertyName
BinaryIntegerLiteral 0 [bB] [01]

BinaryIntegerLiteral is referenced by:

numericLiteral
OctalIntegerLiteral2 0 [oO] [0-7]

OctalIntegerLiteral2 is referenced by:

numericLiteral
OctalIntegerLiteral 0 [0-7]

OctalIntegerLiteral is referenced by:

numericLiteral
HexIntegerLiteral 0 [xX] [0-9a-fA-F]

HexIntegerLiteral is referenced by:

numericLiteral
DecimalLiteral DecimalIntegerLiteral . [0-9] ExponentPart . [0-9] ExponentPart DecimalIntegerLiteral ExponentPart

DecimalLiteral is referenced by:

numericLiteral
ExponentPart [eE] [+-] [0-9]

ExponentPart is referenced by:

DecimalLiteral
DecimalIntegerLiteral 0 [1-9] [0-9]

DecimalIntegerLiteral is referenced by:

DecimalLiteral
arrayLiteral [ elementList ]

arrayLiteral is referenced by:

bindingPattern formalParameterList singleExpression variableDeclaration
elementList arrayElement , arrayElement

elementList is referenced by:

arrayLiteral
arrayElement ... singleExpression Identifier ,

arrayElement is referenced by:

elementList
literal null BooleanLiteral " DoubleStringCharacter " \' SingleStringCharacter \' templateStringLiteral RegularExpressionLiteral numericLiteral

literal is referenced by:

singleExpression
RegularExpressionLiteral / RegularExpressionFirstChar RegularExpressionChar / IdentifierPart

RegularExpressionLiteral is referenced by:

literal
IdentifierPart IdentifierStart [\p{Mn}] [\p{Nd}] [\p{Pc}] \u200C \u200D

IdentifierPart is referenced by:

Identifier RegularExpressionLiteral
IdentifierStart [\p{L}] [$_] \\ UnicodeEscapeSequence

IdentifierStart is referenced by:

Identifier IdentifierPart
RegularExpressionChar Any Char except: [\r\n\u2028\u2029\\/[] RegularExpressionBackslashSequence [ RegularExpressionClassChar ]

RegularExpressionChar is referenced by:

RegularExpressionLiteral
RegularExpressionClassChar Any Char except: [\r\n\u2028\u2029\]\\] RegularExpressionBackslashSequence

RegularExpressionClassChar is referenced by:

RegularExpressionChar RegularExpressionFirstChar
RegularExpressionBackslashSequence \\ Any Char except: [\r\n\u2028\u2029]

RegularExpressionBackslashSequence is referenced by:

RegularExpressionChar RegularExpressionClassChar RegularExpressionFirstChar
RegularExpressionFirstChar Any Char except: [*\r\n\u2028\u2029\\/[] RegularExpressionBackslashSequence [ RegularExpressionClassChar ]

RegularExpressionFirstChar is referenced by:

RegularExpressionLiteral
BooleanLiteral true false

BooleanLiteral is referenced by:

literal reservedWord
generatorBlock { generatorDefinition , generatorDefinition , }

generatorBlock is referenced by:

singleExpression
generatorDefinition * iteratorDefinition

generatorDefinition is referenced by:

generatorBlock
iteratorDefinition [ singleExpression ] ( formalParameterList ) { functionBody }

iteratorDefinition is referenced by:

generatorDefinition iteratorBlock
iteratorBlock { iteratorDefinition , iteratorDefinition , }

iteratorBlock is referenced by:

singleExpression
templateStringLiteral ` templateStringAtom `

templateStringLiteral is referenced by:

literal singleExpression
templateStringAtom Any Char except: [`] ${ singleExpression }

templateStringAtom is referenced by:

templateStringLiteral
assignmentOperator *= /= %= += -= <<= >>= >>>= &= ^= |=

assignmentOperator is referenced by:

singleExpression
arguments ( argumentList , )

arguments is referenced by:

decoratorCallExpression singleExpression
argumentList argument , argument

argumentList is referenced by:

arguments
argument ... singleExpression Identifier

argument is referenced by:

argumentList
typeArguments < typeArgumentList >

typeArguments is referenced by:

singleExpression
nestedTypeGeneric typeIncludeGeneric typeGeneric

nestedTypeGeneric is referenced by:

singleExpression typeReference
typeIncludeGeneric < typeArgumentList < typeArgumentList > bindingPattern > >>

typeIncludeGeneric is referenced by:

nestedTypeGeneric
identifierName Identifier reservedWord

identifierName is referenced by:

decoratorMemberExpression fromBlock identifierOrPattern multipleImportStatement propertyName singleExpression typeQueryExpression
reservedWord keyword null BooleanLiteral

reservedWord is referenced by:

identifierName
keyword break do instanceof typeof case else new var catch finally return void continue for switch while debugger function this with default if throw delete in try readonly async from class enum extends super const export import implements let private public interface package protected static yield get set require type string

keyword is referenced by:

reservedWord
classTail { classElement }

classTail is referenced by:

classDeclaration singleExpression
classElement constructorDeclaration decoratorList propertyMemberDeclaration indexMemberDeclaration statement

classElement is referenced by:

classTail
indexMemberDeclaration indexSignature ;

indexMemberDeclaration is referenced by:

classElement
propertyMemberDeclaration propertyMemberBase propertyName ? typeAnnotation initializer ; propertyMemberBase propertyName callSignature { functionBody } ; propertyMemberBase getAccessor setAccessor abstractDeclaration

propertyMemberDeclaration is referenced by:

classElement
propertyMemberBase async accessibilityModifier static readonly

propertyMemberBase is referenced by:

propertyMemberDeclaration
constructorDeclaration accessibilityModifier constructor ( formalParameterList ) { functionBody } ;

constructorDeclaration is referenced by:

classElement
Identifier IdentifierStart IdentifierPart

Identifier is referenced by:

abstractDeclaration argument arrayElement arrowFunctionParameters breakStatement catchProduction classDeclaration continueStatement decoratorMemberExpression enumDeclaration functionDeclaration functionExpressionDeclaration generatorFunctionDeclaration generatorMethod identifierName identifierOrKeyWord importAliasDeclaration indexSignature interfaceDeclaration iterationStatement labelledStatement lastFormalParameterArg namespaceName setAccessor singleExpression typeAliasDeclaration typeName typeParameter typeQueryExpression
functionExpressionDeclaration function Identifier ( formalParameterList ) typeAnnotation { functionBody }

functionExpressionDeclaration is referenced by:

singleExpression
enumDeclaration const enum Identifier { enumBody }

enumDeclaration is referenced by:

statement
enumBody enumMemberList ,

enumBody is referenced by:

enumDeclaration
enumMemberList enumMember , enumMember

enumMemberList is referenced by:

enumBody
enumMember propertyName = singleExpression

enumMember is referenced by:

enumMemberList
typeAliasDeclaration type Identifier typeParameters = type_ ;

typeAliasDeclaration is referenced by:

statement
variableStatement bindingPattern typeAnnotation initializer ; accessibilityModifier varModifier readonly variableDeclarationList ; declare varModifier variableDeclarationList ;

variableStatement is referenced by:

abstractDeclaration statement
variableDeclarationList variableDeclaration , variableDeclaration

variableDeclarationList is referenced by:

iterationStatement variableStatement
variableDeclaration identifierOrKeyWord arrayLiteral objectLiteral typeAnnotation singleExpression = typeParameters singleExpression

variableDeclaration is referenced by:

iterationStatement variableDeclarationList
varModifier var let const

varModifier is referenced by:

iterationStatement variableStatement
generatorFunctionDeclaration function * Identifier ( formalParameterList ) { functionBody }

generatorFunctionDeclaration is referenced by:

singleExpression statement
arrowFunctionDeclaration async arrowFunctionParameters typeAnnotation => arrowFunctionBody

arrowFunctionDeclaration is referenced by:

singleExpression statement
arrowFunctionBody singleExpression { functionBody }

arrowFunctionBody is referenced by:

arrowFunctionDeclaration
arrowFunctionParameters Identifier ( formalParameterList )

arrowFunctionParameters is referenced by:

arrowFunctionDeclaration
functionDeclaration function Identifier callSignature { functionBody } ;

functionDeclaration is referenced by:

statement
debuggerStatement debugger eos

debuggerStatement is referenced by:

statement
eos ; <End of File>

eos is referenced by:

abstractDeclaration breakStatement continueStatement debuggerStatement fromBlock iterationStatement returnStatement throwStatement yieldStatement
tryStatement try block catchProduction finallyProduction finallyProduction

tryStatement is referenced by:

statement
finallyProduction finally block

finallyProduction is referenced by:

tryStatement
catchProduction catch ( Identifier ) block

catchProduction is referenced by:

tryStatement
throwStatement throw expressionSequence eos

throwStatement is referenced by:

statement
switchStatement switch ( expressionSequence ) caseBlock

switchStatement is referenced by:

statement
caseBlock { caseClauses defaultClause caseClauses }

caseBlock is referenced by:

switchStatement
defaultClause default : statementList

defaultClause is referenced by:

caseBlock
statementList statement

statementList is referenced by:

block caseClause defaultClause namespaceDeclaration
caseClauses caseClause

caseClauses is referenced by:

caseBlock
caseClause case expressionSequence : statementList

caseClause is referenced by:

caseClauses
labelledStatement Identifier : statement

labelledStatement is referenced by:

statement
withStatement with ( expressionSequence ) statement

withStatement is referenced by:

statement
yieldStatement yield expressionSequence eos

yieldStatement is referenced by:

singleExpression statement
returnStatement return expressionSequence eos

returnStatement is referenced by:

statement
breakStatement break Identifier eos

breakStatement is referenced by:

statement
continueStatement continue Identifier eos

continueStatement is referenced by:

statement
iterationStatement do statement while ( expressionSequence ) eos while ( expressionSequence ) statement for ( expressionSequence ; expressionSequence ; expressionSequence ) statement for ( varModifier variableDeclarationList ; expressionSequence ; expressionSequence ) statement for ( singleExpression in Identifier expressionSequence ) statement for ( varModifier variableDeclaration in Identifier expressionSequence ) statement

iterationStatement is referenced by:

statement
ifStatement if ( expressionSequence ) statement else statement

ifStatement is referenced by:

statement
namespaceDeclaration namespace namespaceName { statementList }

namespaceDeclaration is referenced by:

statement
interfaceDeclaration export declare interface Identifier typeParameters interfaceExtendsClause objectType ;

interfaceDeclaration is referenced by:

statement
interfaceExtendsClause extends classOrInterfaceTypeList

interfaceExtendsClause is referenced by:

interfaceDeclaration
classOrInterfaceTypeList typeReference , typeReference

classOrInterfaceTypeList is referenced by:

implementsClause interfaceExtendsClause
classDeclaration abstract class Identifier typeParameters classHeritage classTail

classDeclaration is referenced by:

statement
classHeritage classExtendsClause implementsClause

classHeritage is referenced by:

classDeclaration
implementsClause implements classOrInterfaceTypeList

implementsClause is referenced by:

classHeritage
classExtendsClause extends typeReference

classExtendsClause is referenced by:

classHeritage
decoratorList decorator

decoratorList is referenced by:

classElement optionalParameter requiredParameter statement
abstractDeclaration abstract Identifier callSignature variableStatement eos

abstractDeclaration is referenced by:

propertyMemberDeclaration statement
emptyStatement_ ;

emptyStatement_ is referenced by:

statement
exportStatement export default fromBlock statement

exportStatement is referenced by:

statement
fromBlock * multipleImportStatement as identifierName from " DoubleStringCharacter " \' SingleStringCharacter \' eos

fromBlock is referenced by:

exportStatement importStatement
multipleImportStatement identifierName , { identifierName , identifierName }

multipleImportStatement is referenced by:

fromBlock
importStatement import fromBlock importAliasDeclaration

importStatement is referenced by:

statement
importAliasDeclaration Identifier = namespaceName ;

importAliasDeclaration is referenced by:

importStatement
block { statementList }

block is referenced by:

catchProduction finallyProduction statement tryStatement
requiredParameterList requiredParameter , requiredParameter
tupleType [ tupleElementTypes ]
arrayType primaryType [ ]
EscapeCharacter ['"\\bfnrtv] [0-9] [xu]
BackTickInside `
UnexpectedCharacter <ANY CHAR>
CDataComment <![CDATA[ <ANY CHAR> ]]>
HtmlComment <!-- <ANY CHAR> -->
LineTerminator [\r\n\u2028\u2029]
WhiteSpaces [\t\u000B\u000C\u0020\u00A0]
At @
Module module
ARROW =>
BitOrAssign |=
BitXorAssign ^=
BitAndAssign &=
RightShiftLogicalAssign >>>=
RightShiftArithmeticAssign >>=
LeftShiftArithmeticAssign <<=
MinusAssign -=
PlusAssign +=
ModulusAssign %=
DivideAssign /=
MultiplyAssign *=
Or ||
And &&
BitOr |
BitXOr ^
BitAnd &
IdentityNotEquals !==
IdentityEquals ===
NotEquals !=
Equals_ ==
GreaterThanEquals >=
LessThanEquals <=
MoreThan >
LessThan <
RightShiftLogical >>>
LeftShiftArithmetic <<
RightShiftArithmetic >>
Modulus %
Divide /
Not !
BitNot ~
Minus -
Plus +
MinusMinus --
PlusPlus ++
Dot .
Colon :
QuestionMark ?
Assign =
Comma ,
CloseBrace }
OpenBrace {
CloseParen )
OpenParen (
CloseBracket ]
OpenBracket [
SingleLineComment // Any Char except: [\r\n\u2028\u2029]
MultiLineComment /* <ANY CHAR> */