Eagle Legacy Modernization, LLC

TCL Grammar

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.