Main program: TCL_Program
TCL syntax:
-- && || <= >= <> != ==
| Count | Terminals: | |
| TCL_Comment: # comment to end of line | ||
| TCL_EndOfLine: End of line | ||
| TCL_Function_Definition: An identifier | ||
| TCL_Function_Reference: An identifier | ||
| TCL_Identifier_Reference: An identifier | ||
| TCL_Literal: Literal quotes:" escape:\ doubled:no multiline:no | ||
| TCL_Namespace_Definition: An identifier | ||
| TCL_Number: Number exponent_chars:Ee suffix_chars:Ll trailing_period:yes ignore_char:none | ||
| TCL_Variable_Definition: An identifier | ||
| Count | Statistics(*) | Tokens: |
| TCL_AdditiveExpression: TCL_Expression ("+"|"-") TCL_Expression | ||
| TCL_ArrayExpression: '{' TCL_Expression* '}' | ||
| TCL_BuiltIns: ("false"|"true"|"$false"|"$true") | ||
| TCL_LogicalAndExpression: TCL_Expression TCL_AndOperator TCL_Expression | ||
| | TCL_AndOperator: ("and" | "&&") | ||
| TCL_LogicalNotExpression: '!' TCL_Expression | ||
| TCL_LogicalOrExpression: TCL_Expression TCL_OrOperator TCL_Expression | ||
| | TCL_OrOperator: ("or" | "||") | ||
| TCL_MultiplicativeExpression: TCL_Expression ("*"|"/"|"%") TCL_Expression | ||
| TCL_ParenthesizedExpression: '(' TCL_Expression ')' | ||
| TCL_RelationalExpression: TCL_Expression TCL_RelOperator TCL_Expression | ||
| | TCL_RelOperator: (("lt"|"le"|"eq"|"ne"|"gt"|"ge") | ("<"|">"|"<="|">="|"=="|"<>"|"!=")) | ||
| TCL_SignedExpression: ("+"|"-") TCL_Expression | ||
| TCL_VariableExpression: TCL_Variable | ||
| TCL_BracketExpr: '[' "expr" TCL_Expression ']' | ||
| TCL_BracketFunction: '[' TCL_Function_Reference TCL_Expression* ']' | ||
| TCL_BracketLindex: '[' "lindex" TCL_Variable TCL_Expression ']' | ||
| TCL_BracketStringCat: '[' "string" "cat" TCL_Expression* ']' | ||
| TCL_BracketStringFirst: '[' "string" "first" TCL_Expression TCL_Variable [TCL_Expression] ']' | ||
| TCL_BracketStringLength: '[' "string" "length" TCL_Expression ']' | ||
| TCL_BlockStatement: '{' [TCL_EndOfLine] [TCL_GlobalVariables] [TCL_Element]* '}' | ||
| | TCL_GlobalVariables: "global" TCL_Variable* TCL_EndOfLine | ||
| TCL_BreakStatement: "break" | ||
| TCL_ExpressionStatement: TCL_Expression [TCL_Comment] | ||
| TCL_ForStatement: "for" '{' TCL_SetStatement '}' '{' TCL_Expression '}' '{' TCL_IncrStatement '}' TCL_Statement | ||
| TCL_FunctionCall: TCL_Function_Reference TCL_Expression* | ||
| TCL_IfStatement: "if" ("{"|"(") TCL_Expression ("}"|")") TCL_Statement [TCL_ElseClause] | ||
| | TCL_ElseClause: "else" TCL_Statement | ||
| TCL_IncrStatement: "incr" TCL_Variable [TCL_Expression] | ||
| TCL_NamespaceStatement: "namespace" "eval" TCL_Namespace_Definition '{' TCL_EndOfLine TCL_Element* '}' | ||
| TCL_PutsStatement: "puts" TCL_Expression | ||
| TCL_ReturnStatement: "return" TCL_Expression | ||
| TCL_SetStatement: "set" TCL_Variable TCL_Expression | ||
| TCL_VariableStatement: "variable" TCL_Variable_Definition | ||
| TCL_WhileStatement: "while" '{' TCL_Expression '}' TCL_Statement | ||
| TCL_Element: TCL_Statement* [TCL_Comment] [TCL_EndOfLine] | ||
| | TCL_Statement: (TCL_Comment | TCL_BlockStatement | TCL_Procedure | TCL_BreakStatement | TCL_ForStatement | TCL_IfStatement | TCL_IncrStatement | TCL_NamespaceStatement | TCL_PutsStatement | TCL_ReturnStatement | TCL_SetStatement | TCL_VariableStatement | TCL_WhileStatement | TCL_FunctionCall | TCL_ExpressionStatement) | ||
| TCL_Expression: (TCL_Number | TCL_Literal | TCL_SignedExpression | TCL_LogicalNotExpression | TCL_BuiltIns | TCL_VariableExpression | TCL_ParenthesizedExpression | TCL_ArrayExpression | TCL_BracketExpr | TCL_BracketLindex | TCL_BracketStringFirst | TCL_BracketStringLength | TCL_BracketStringCat | TCL_BracketFunction | TCL_MultiplicativeExpression | TCL_AdditiveExpression | TCL_RelationalExpression | TCL_LogicalAndExpression | TCL_LogicalOrExpression) | ||
| TCL_Procedure: "proc" TCL_Function_Definition '{' [TCL_Variable_Definition]* '}' TCL_BlockStatement | ||
| TCL_Program: TCL_Element* | ||
| TCL_Variable: ['$'] TCL_Identifier_Reference | ||
Terminals = 9 (instances=0)
Tokens = 41 (instances=0)
(*) 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.