Eagle Legacy Modernization, LLC

Java Grammar

Main program: Java_Program

Java syntax:

 Count  Terminals:
4 Java_BinaryNumber: A binary number
5,152 Java_Character_Literal: quotes:' escape:\ doubled:no multiline:no
9,692 Java_Class_Definition: An identifier
73,673 Java_Comment: /* comment */ or // comment to end of line
5,501 Java_Current_Class_Reference: An identifier
10 Java_HexFloatingNumber: A hex floating number
3,239 Java_HexNumber: A hex number
203,962 Java_Identifier: An identifier
644,251 Java_Identifier_Reference: An identifier
75 Java_Label_Definition: An identifier
44,315 Java_Literal: quotes:" escape:\ doubled:no multiline:no
35,558 Java_Method_Definition: An identifier
56,044 Java_Number: exponent_chars:Ee suffix_chars:LlFfDd trailing_period:yes ignore_char:_
123,170 Java_Variable_Definition: An identifier
 Count  Statistics(*) Tokens:
25,875 all all all Java_AdditiveExpression: Java_Expression ("+"|"-") Java_Expression
    Java_AnnotationInvocation: '@' Java_Variable [Java_AnnotationDotName]* '(' [Java_ArgumentList] ')'
    |   Java_AnnotationDotName: '.' Java_Variable
38,996 all all all Java_AssignmentExpression: Java_Expression ("="|"*="|"/="|"%="|"+="|"-="|"<<="|">>="|">>>="|"&="|"^="|"|=") Java_Expression
3,720 all all all Java_BitwiseExpression: Java_Expression ("&"|"|"|"^") Java_Expression
197 all all Java_BitwiseNotExpression: '~' Java_Expression
44,307 all Java_BuiltIn: ("false"|"true"|"null"|"this"|"super")
7,065 all 1.00 all all Java_CastExpression: '(' Java_Type* ')' Java_Expression
23,686 all all all none 75% all 2% Java_ClassCreationExpression: "new" Java_Type '(' [Java_Comment]* [Java_ArgumentList] ')' [Java_ClassOverride]
466 all 1.76(all) all |   Java_ClassOverride: '{' [Java_ClassElement]* '}'
561 all all all 96% all Java_ClassCreationWithInitializers: "new" Java_Type '{' [Java_ArgumentList] '}'
1,566 all all 1.01 Java_ClassCreationWithSubscript: "new" Java_Type Java_Subscript*
    Java_ColonColon: Java_Expression "::" Java_Expression
38 all all all Java_ColonColonNew: Java_Expression "::" "new"
76 all all all Java_ColonColonType: Java_Type "::" Java_Expression
    Java_CommentExpression: Java_Comment Java_Expression
247 all all all Java_DotClass: Java_Type '.' "class"
402 all 1.15(3%) 97% all Java_ExpressionList: '{' [Java_Comment]* [Java_ArgumentList] '}'
2,940 all all all Java_InstanceOfExpression: Java_Expression "instanceof" Java_Type
21 all all all all all all all Java_InterfaceCreationWithMethod: "new" ("Runnable"|"ActionListener"|"WindowAdapter") '(' ')' '{' Java_Method '}'
211 all all all Java_LambdaExpression: Java_LambdaVariables "->" Java_LambdaValue
211 (42% | 58%) |   Java_LambdaValue: (Java_LambdaBlock | Java_Expression)
89 all 2.28(90%) all |   |   Java_LambdaBlock: '{' [Java_StatementOrComment]* '}'
211 (20% | 50% | 30%) |   Java_LambdaVariables: (Java_LambdaTypedVariableList | Java_LambdaVariableList | Java_Identifier)
42 all 1.50(38%) all |   |   Java_LambdaTypedVariableList: '(' [Java_TypedIdentifier]* ')'
20 none all all |   |   |   Java_TypedIdentifier: [Java_Annotation] Java_Type Java_Identifier
106 all 2.36(all) all |   |   Java_LambdaVariableList: '(' [Java_Identifier]* ')'
6,669 all all all Java_LogicalAndExpression: Java_Expression "&&" Java_Expression
3,875 all all Java_LogicalNotExpression: '!' Java_Expression
4,120 all all all Java_LogicalOrExpression: Java_Expression ("||"|"^") Java_Expression
99,292 all all 64% all Java_MethodInvocation: Java_Variable '(' [Java_ArgumentList] ')'
3,959 all all all Java_MultiplicativeExpression: Java_Expression ("*"|"/"|"%") Java_Expression
551 all all Java_NegativeExpression: ("-"|"+") Java_Expression
14,136 all all all Java_ParenthesizedExpression: '(' Java_Expression ')'
5,420 all all Java_PostIncrementExpression: Java_Variable ("++"|"--")
981 all all Java_PreIncrementExpression: ("++"|"--") Java_Variable
40,052 all all all Java_RelationalExpression: Java_Expression ("=="|"!="|"<"|">"|"<="|">=") Java_Expression
2,111 all all all Java_ShiftExpression: Java_Expression (">>>"|"<<"|">>") Java_Expression
117,915 all all 0% all Java_SubfieldExpression: Java_Expression '.' [Java_GenericType] Java_Expression
112 all all 54% all Java_SubscriptExpression: Java_Expression '[' [Java_Expression] ']'
2,689 all all all all all Java_TrueFalseExpression: Java_Expression '?' Java_Expression ':' Java_Expression
374,748 all Java_VariableExpression: Java_Variable
96 all all all all Java_MathAbsFunc: "abs" '(' Java_Expression ')'
638 all all all Java_MathFunction: "Math" '.' Java_MathChoice
638 (4% | 3% | 3% | 15% | 74%) |   Java_MathChoice: (Java_MathPowFunc | Java_MathLogFunc | Java_MathRoundFunc | Java_MathAbsFunc | Java_MathMinMaxFunc)
18 all all all all Java_MathLogFunc: ("log"|"log10") '(' Java_Expression ')'
475 all all 3.00 all Java_MathMinMaxFunc: ("min"|"max") '(' Java_Expression* ')'
27 all all all all all all Java_MathPowFunc: "pow" '(' Java_Expression ',' Java_Expression ')'
22 all all all all Java_MathRoundFunc: "round" '(' Java_Expression ')'
1,191 all all all all all all 92% all Java_PrintFunction: "System" '.' ("err"|"out") '.' ("print"|"println") '(' [Java_Expression] ')'
35 all all all all all all Java_StringFormatFunc: "format" '(' Java_Expression ',' Java_Expression ')'
35 all all all Java_StringFunction: "String" '.' Java_StringChoice
35 (all) |   Java_StringChoice: (Java_StringFormatFunc)
27,967 (46% | 54% | none | none) Java_Annotation: (Java_AnnotationCallList | Java_AnnotationCallParens | Java_AnnotationList | Java_AnnotationSimple)
12,808 all 1.00 1.00(1%) |   Java_AnnotationCallList: '@' Java_Identifier* [Java_Comment]*
15,159 all all 1.27(0%) all 1.00(all) all |   Java_AnnotationCallParens: '@' Java_Variable [Java_DotVar]* '(' [Java_Expression]* ')'
33 all all |   |   Java_DotVar: '.' Java_VariableIdentifier
    |   Java_AnnotationList: '@' ("AccessoryAction"|"Nullable"|"PageTransition")
    |   Java_AnnotationSimple: '@' Java_Variable
84,806 all 1.00(0%) 2.12(39%) 0% Java_ArgumentList: Java_Expression [Java_Comment]* [Java_MoreArguments]* [',']
70,765 all 1.02(2%) all 1.00(0%) |   Java_MoreArguments: ',' [Java_Comment]* Java_Expression [Java_Comment]*
9,692 98% all all all 5% 80% 25% 1.35(0%) all 9.03(98%) all 1.33(10%) 0% Java_Class: [Java_ClassModifierList] ['@'] ("class"|"interface") Java_Class_Definition [Java_GenericType] [Java_ClassExtends] [Java_ClassImplements] [Java_Comment]* '{' [Java_ClassElement]* '}' [Java_Comment]* [';']
87,087 (10% | 41% | 6% | 0% | 43%) |   Java_ClassElement: (Java_Comment | Java_Method | Java_Constructor | ';' | Java_Statement)
7,762 all 1.04 6% 1.14(0%) |   Java_ClassExtends: "extends" Java_Identifier_Reference* [Java_GenericType] [Java_MoreExtends]*
40 all 1.50 28% |   |   Java_MoreExtends: ',' Java_Identifier_Reference* [Java_GenericType]
2,473 all 1.25 11% 1.31(45%) |   Java_ClassImplements: "implements" Java_Identifier_Reference* [Java_GenericType] [Java_MoreImplements]*
1,451 all 0% 1.19 2% |   |   Java_MoreImplements: ',' [Java_Comment] Java_Identifier_Reference* [Java_GenericType]
14,273 (0% | 6% | 94%) |   Java_ClassModifier: (Java_Comment | Java_Annotation | ("abstract"|"default"|"final"|"native"|"private"|"protected"|"public"|"static"|"strictfp"|"synchronized"|"transient"|"volatile"))
9,500 1.50 |   Java_ClassModifierList: Java_ClassModifier*
70,829 1.00(1%) 1.46(46%) 1.24(22%) all all 1.02(1%) 71% 1.64(1%) all 1.27(13%) Java_Data: [Java_Annotation]* [Java_DataModifier]* [Java_Annotation]* Java_Type Java_Variable_Definition [Java_DataSubscript]* [Java_DataInitialValue] [Java_MoreIdentifiers]* ';' [Java_Comment]*
51,116 all all |   Java_DataInitialValue: '=' Java_Expression
47,427 all |   Java_DataModifier: ("abstract"|"default"|"final"|"native"|"private"|"protected"|"public"|"static"|"strictfp"|"synchronized"|"transient"|"volatile")
751 all all |   Java_DataSubscript: '[' ']'
1,432 all all 0% 0% 36% |   Java_MoreIdentifiers: ',' Java_Variable_Definition ['['] [']'] [Java_DataInitialValue]
112 none 1.24(91%) all all 18% all 60% all 1% none 28% none 13% all 1.11(17%) 12% Java_Enum: [Java_Annotation]* [Java_DataModifier]* "enum" Java_Variable_Definition [Java_ClassImplements] '{' [Java_Comment] [Java_EnumConstants] [','] [Java_Comment]* [Java_EnumDeclarations] [Java_Comment]* [';'] '}' [Java_Comment]* [';']
440 (all) |   Java_EnumClassBodyDeclaration: (Java_ClassElement)
738 none all 30% 4% |   Java_EnumConstant: [Java_Annotation]* Java_Variable_Definition [Java_EnumInitializer] [Java_EnumClassBody]
31 all 4.61(all) all |   |   Java_EnumClassBody: '{' [Java_EnumClassBodyDeclaration]* '}'
112 all 5.80(96%) none |   Java_EnumConstants: Java_EnumConstant [Java_MoreEnumConstants]* [Java_Comment]*
626 all 1.06(72%) all |   |   Java_MoreEnumConstants: ',' [Java_Comment]* Java_EnumConstant
31 all 9.58 |   Java_EnumDeclarations: ';' Java_EnumClassBodyDeclaration*
218 all 3.68(all) all |   Java_EnumInitializer: '(' [Java_Expression]* ')'
944,274 (0% | 0% | 0% | 6% | 5% | 1% | 0% | 0% | 0% | 0% | 0% | 0% | 1% | 0% | 0% | 3% | 0% | 0% | 11% | none | 0% | 1% | 0% | 0% | 0% | 5% | 40% | 1% | none | none | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 12% | none | 0% | 0% | 3% | 0% | 0% | 4% | 0% | 1% | 0% | 4% | 0%) Java_Expression: (Java_HexFloatingNumber | Java_HexNumber | Java_BinaryNumber | Java_Number | Java_Literal | Java_Character_Literal | Java_ColonColonType | Java_MathFunction | Java_StringFunction | Java_PrintFunction | Java_DotClass | Java_LambdaExpression | Java_CastExpression | Java_ExpressionList | Java_InterfaceCreationWithMethod | Java_ClassCreationExpression | Java_ClassCreationWithInitializers | Java_ClassCreationWithSubscript | Java_MethodInvocation | Java_AnnotationInvocation | Java_PreIncrementExpression | Java_PostIncrementExpression | Java_NegativeExpression | Java_BitwiseNotExpression | Java_LogicalNotExpression | Java_BuiltIn | Java_VariableExpression | Java_ParenthesizedExpression | Java_CommentExpression | Java_IndexOfMethod | Java_SubscriptExpression | Java_EqualsMethod | Java_ToUpperCaseMethod | Java_LengthMethod | Java_TrimMethod | Java_StartsWithMethod | Java_EndsWithMethod | Java_SubstringMethod | Java_ToStringMethod | Java_SubfieldExpression | Java_ColonColon | Java_ColonColonNew | Java_MultiplicativeExpression | Java_AdditiveExpression | Java_ShiftExpression | Java_InstanceOfExpression | Java_RelationalExpression | Java_BitwiseExpression | Java_LogicalAndExpression | Java_LogicalOrExpression | Java_AssignmentExpression | Java_TrueFalseExpression)
37,675 all all all 3.44(all) all Java_Import: "import" ["static"] Java_Identifier [Java_DotIdentifierStar]* ';'
129,781 all all |   Java_DotIdentifierStar: '.' Java_IdentifierOrStar
129,781 (100% | 0%) |   |   Java_IdentifierOrStar: (Java_Identifier | '*')
75 all all Java_Label: Java_Label_Definition ':'
35,558 none 19% 1.25(89%) all 1.00(0%) 0% 14% none all Java_Method: [Java_Comment]* [Java_Annotation] [Java_MethodModifier]* Java_MethodTypeAndName [Java_EmptyBrackets]* [Java_MethodDefault] [Java_MethodThrows] [Java_Comment] Java_MethodBody
5,501 1.00(1%) 1.00(83%) all all 5% none all |   Java_Constructor: [Java_Annotation]* [Java_MethodModifier]* Java_Current_Class_Reference Java_ParameterList [Java_MethodThrows] [Java_Comment] Java_MethodBody
2 all all |   Java_EmptyBrackets: '[' ']'
41,059 (11% | 89%) |   Java_MethodBody: (';' | Java_MethodImplementation)
1 all all |   Java_MethodDefault: "default" [Java_Expression]
    |   Java_MethodGeneric: Java_GenericType Java_Method_Definition Java_ParameterList
36,626 none all 1.15(48%) 0% |   Java_MethodImplementation: [Java_Comment]* Java_StatementBlock [Java_Comment]* [';']
44,180 (0% | 100% | 0%) |   Java_MethodModifier: (Java_Comment | ("abstract"|"default"|"final"|"native"|"private"|"protected"|"public"|"static"|"strictfp"|"synchronized"|"transient"|"volatile") | Java_Annotation)
5,264 all 1.21 |   Java_MethodThrows: "throws" Java_Expression*
690 all all all all |   Java_MethodTwoTypes: Java_GenericType Java_Type Java_Method_Definition Java_ParameterList
34,868 all all all |   Java_MethodType: Java_Type Java_Method_Definition Java_ParameterList
35,558 (98% | none | 2%) |   Java_MethodTypeAndName: (Java_MethodType | Java_MethodGeneric | Java_MethodTwoTypes)
5,592 all all 2.95(100%) all Java_Package: "package" Java_Identifier [Java_MorePackageIds]* ';'
16,468 all all |   Java_MorePackageIds: '.' Java_Identifier
41,059 all 2.51(64%) all Java_ParameterList: '(' [Java_MethodParameter]* ')'
46,389 1.00(0%) all all all 1.03(1%) |   Java_MethodParameter: [Java_MethodParameterPrefix]* Java_Type ["..."] Java_Variable_Definition [Java_EmptySubscript]*
478 all |   |   Java_EmptySubscript: "[]"
183 (all | none) |   |   Java_MethodParameterPrefix: (("final"|"static") | Java_Annotation)
5,623 1.73(97%) none none 99% 7.40(95%) 1.01(100%) Java_Program: [Java_Comment]* [Java_Annotation] [Java_Comment]* [Java_Package] [Java_ImportOrComment]* [Java_ClassOrEnum]*
5,628 (99% | 1%) |   Java_ClassOrEnum: (Java_Class | Java_Enum)
39,616 (5% | 95% | none) |   Java_ImportOrComment: (Java_Comment | Java_Import | ';')
280,091 (25% | 1% | 0% | 0% | none | 0% | 1% | 0% | 0% | 0% | 1% | 1% | 13% | 11% | 14% | 1% | 0% | 0% | 2% | 1% | 1% | 26%) Java_Statement: (Java_Data | Java_Class | Java_Enum | ';' | Java_AnnotationDefinition | Java_AssertStatement | Java_BreakStatement | Java_ContinueStatement | Java_DoWhileStatement | Java_ExitStatement | Java_ForStatement | Java_ForEachStatement | Java_IfStatement | Java_ReturnStatement | Java_StatementBlock | Java_SuperStatement | Java_SwitchStatement | Java_SynchronizedStatement | Java_ThrowStatement | Java_TryStatement | Java_WhileStatement | Java_ExpressionStatement)
203,962 (7% | 93%) Java_StatementOrComment: (Java_Comment | Java_Statement)
12,007 all all all Java_Subscript: '[' Java_Expression ']'
219,023 0% all 7% 1.02(3%) Java_Type: [Java_Comment] Java_TypeName [Java_GenericType] [Java_ArrayType]*
6,816 all all |   Java_ArrayType: '[' ']'
2,362 all 1.04 |   Java_ExtendsType: ("extends"|"super") Java_Identifier_Reference*
17,546 all 95% all 1.26(26%) all |   Java_GenericType: '<' [Java_Type] ["[]"] [Java_MoreTypes]* '>'
134,611 all 0% 1.00(3%) 0% |   Java_IdList: Java_Identifier_Reference [Java_ExtendsType] [Java_MoreIds]* [Java_ExtendsMultiple]
25 all all none none |   |   Java_ExtendsMultiple: '&' Java_Identifier_Reference [Java_ExtendsType] [Java_MoreIds]*
4,024 all all |   |   Java_MoreIds: '.' Java_TypeName
5,721 all all |   Java_MoreTypes: ',' Java_Type
223,047 (2% | 38% | 60%) |   Java_TypeName: (Java_GenericTypeQuestion | ("void"|"boolean"|"byte"|"short"|"int"|"long"|"char"|"float"|"double"|"String"|"class") | Java_IdList)
4,753 all 42% |   |   Java_GenericTypeQuestion: '?' [Java_ExtendsType]
497,098 all 1.02(2%) Java_Variable: Java_VariableIdentifier [Java_Subscript]*
497,131 (0% | 0% | 99%) |   Java_VariableIdentifier: (Java_CastedVariable | ("this"|"class"|"super") | Java_Identifier_Reference)
914 all all all all all all |   |   Java_CastedVariable: '(' '(' Java_Type ')' Java_Identifier_Reference ')'
215 all all all all all all Java_EndsWithMethod: Java_Expression '.' "endsWith" '(' Java_Expression ')'
1,855 all all all all all all Java_EqualsMethod: Java_Expression '.' "equals" '(' Java_Expression ')'
    Java_IndexOfMethod: Java_Variable '.' "indexOf" '(' Java_Expression [Java_Index_SC] ')'
    |   Java_Index_SC: ',' Java_Expression
1,549 all all all all all Java_LengthMethod: Java_Expression '.' "length" '(' ')'
457 all all all all all 6% 6% all Java_StartsWithMethod: Java_Expression '.' "startsWith" '(' Java_Expression [','] [Java_Expression] ')'
1,043 all all all all all 68% 68% all Java_SubstringMethod: Java_Expression '.' "substring" '(' Java_Expression [','] [Java_Expression] ')'
1,649 all all all all 14% all Java_ToStringMethod: Java_Expression '.' "toString" '(' [Java_Expression] ')'
198 all all all all all Java_ToUpperCaseMethod: Java_Expression '.' ("toLowerCase"|"toUpperCase") '(' ')'
142 all all all all all Java_TrimMethod: Java_Expression '.' "trim" '(' ')'
    Java_AnnotationDefinition: [Java_Annotation] Java_MethodModifier* '@' "interface" Java_Identifier '{' [Java_Comment]* [Java_AnnotationParameter] '}'
    |   Java_AnnotationParameter: Java_Type Java_Identifier '(' ')' ';'
567 all all 18% all Java_AssertStatement: "assert" Java_Expression [Java_AssertMessage] ';'
102 all all |   Java_AssertMessage: ':' Java_Expression
3,597 all 4% all Java_BreakStatement: "break" [Java_Identifier_Reference] ';'
769 all 6% all Java_ContinueStatement: "continue" [Java_Identifier_Reference] ';'
277 1% all none all all all all all all Java_DoWhileStatement: [Java_Label] "do" [Java_Comment] Java_Statement "while" '(' Java_Expression ')' ';'
167 all all all all all all all Java_ExitStatement: "System" '.' "exit" '(' Java_Expression ')' ';'
71,882 all all 5% Java_ExpressionStatement: Java_Expression ';' [Java_Comment]
1,498 none all all none all all all all all all none all Java_ForEachStatement: [Java_Label] "for" '(' [Java_Annotation] ["final"] Java_Type Java_Variable ':' Java_Expression ')' [Java_Comment] Java_Statement
3,684 1% all all 0% 93% all 92% all 1.09(86%) all 0% all Java_ForStatement: [Java_Label] "for" '(' [Java_Annotation] [Java_ForInit] ';' [Java_Expression] ';' [Java_Expression]* ')' [Java_Comment] Java_Statement
3,443 all 1.18 |   Java_ForInit: ["final"] Java_ForWhat*
3,539 all all |   Java_ForTypeInit: '=' Java_Expression
3,754 (87% | 10% | 3%) |   Java_ForWhat: (Java_ForWithType | Java_ForWithoutType | Java_Expression)
3,274 all all 97% |   Java_ForWithType: Java_Type Java_Variable_Definition [Java_ForTypeInit]
369 all all |   Java_ForWithoutType: Java_Variable_Definition Java_ForTypeInit
35,074 0% all all all 1.00(0%) all 1.08(1%) all 22% Java_IfStatement: [Java_Label] "if" '(' Java_Expression [Java_Comment]* ')' [Java_Comment]* Java_Statement [Java_IfElseClause]
7,654 1.09(0%) all 1% all |   Java_IfElseClause: [Java_Comment]* "else" [Java_Comment] Java_Statement
31,897 all 94% all Java_ReturnStatement: "return" [Java_Expression] ';'
76,359 0% all all 2.49(99%) none all Java_StatementBlock: [Java_Label] ["static"] '{' [Java_StatementOrComment]* [';'] '}'
2,772 all all 90% all all Java_SuperStatement: "super" '(' [Java_ArgumentList] ')' ';'
1,184 all all all all all 4.84 all Java_SwitchStatement: "switch" '(' Java_Expression ')' '{' Java_SwitchClause* '}'
5,725 (86% | 14% | none) |   Java_SwitchClause: (Java_CaseClause | Java_DefaultClause | Java_Comment)
4,934 all 1.04 all 2.01(86%) |   |   Java_CaseClause: "case" Java_Expression* ':' [Java_StatementOrComment]*
791 all all 1.21(99%) |   |   Java_DefaultClause: "default" ':' [Java_StatementOrComment]*
1,045 all all all all all Java_SynchronizedStatement: "synchronized" '(' Java_Expression ')' Java_Statement
6,882 all all all Java_ThrowStatement: "throw" Java_Expression ';'
2,089 0% all 1% all 2.93(all) all 2.00(0%) 1.09(83%) 17% Java_TryStatement: [Java_Label] "try" [Java_TryResources] '{' [Java_StatementOrComment]* '}' [Java_Comment]* [Java_CatchBlock]* [Java_FinallyBlock]
1,886 all all all all 1.18(2%) all all all |   Java_CatchBlock: "catch" '(' ["final"] Java_Type [Java_MoreExceptions]* Java_Identifier ')' Java_Statement
40 all all |   |   Java_MoreExceptions: '|' Java_Type
355 all all |   Java_FinallyBlock: "finally" Java_Statement
25 all all 1.00(8%) all |   Java_TryResources: '(' Java_TryResource [Java_TryMoreResources]* ')'
2 all all |   |   Java_TryMoreResources: ';' [Java_TryResource]
27 all all all all |   |   Java_TryResource: ["final"] Java_Type Java_Variable_Definition Java_DataInitialValue
1,867 1% all all all all 0% all Java_WhileStatement: [Java_Label] "while" '(' Java_Expression ')' [Java_Comment] Java_Statement

Terminals = 14 (instances=1,204,646)
Tokens = 169 (instances=5,384,270)

(*) Statistics are shown in the same order as the Tokens.
Percentages are rounded; 'all' and 'none' mean 100% and 0% before rounding.
For lists, it shows the average number of occurrences, excluding empty lists.