Eagle Legacy Modernization, LLC

Ada Grammar

Main program: Ada_Program

Ada syntax:

 Count  Terminals:
  Ada_Comment: -- comment
  Ada_Function_Definition: An identifier
  Ada_Identifier_Reference: An identifier
  Ada_Label_Definition: An identifier
  Ada_Label_Reference: An identifier
  Ada_Literal: Literal quotes:" escape:\ doubled:no multiline:no
  Ada_Number: Number exponent_chars:Ee suffix_chars:LlFfDd trailing_period:yes ignore_char:none
  Ada_Package_Definition: An identifier
  Ada_Variable_Definition: An identifier
 Count  Statistics(*) Tokens:
    Ada_Expression: (Ada_Number | Ada_Literal | Ada_SliceFunction | Ada_LengthFunction | Ada_UnboundFunction | Ada_PreIncrementExpression | Ada_PostIncrementExpression | Ada_NegativeExpression | Ada_LogicalNotExpression | Ada_BuiltIn | Ada_FunctionCall | Ada_VariableExpression | Ada_BracketsExpression | Ada_ParenthesizedExpression | Ada_Subfield | Ada_MultiplicativeExpression | Ada_AdditiveExpression | Ada_RelationalExpression | Ada_EqualityExpression | Ada_LogicalAndExpression | Ada_LogicalOrExpression | Ada_AssignmentExpression | Ada_RangeExpression)
    Ada_Label: Ada_Label_Definition ':'
    Ada_Program: Ada_Element*
    |   Ada_Element: (Ada_Comment | Ada_Statement)
    Ada_Statement: (Ada_AppendStatement | Ada_Assignment | Ada_ExitStatement | Ada_Comment | Ada_Data | Ada_ForStatement | Ada_Function | Ada_IfStatement | Ada_PutStatement | Ada_PutIntegerStatement | Ada_Procedure | Ada_ReturnStatement | Ada_WithUseStatement | Ada_WhileStatement | Ada_ExpressionStatement)
    Ada_Type: ["constant"] Ada_WhichType
    |   Ada_ArrayType: "array" '(' Ada_Expression ')' "of" Ada_Type
    |   Ada_WhichType: (("Boolean"|"Integer"|"Float"|"String"|"Unbounded_String") | Ada_ArrayType)
    Ada_Variable: ['$'] Ada_Identifier_Reference*
    Ada_AdditiveExpression: Ada_Expression ("+"|"-") Ada_Expression
    Ada_AssignmentExpression: Ada_Expression (":="|"*="|"+="|"-=") Ada_Expression
    Ada_BracketsExpression: '[' Ada_Expression* ']'
    Ada_BuiltIn: ("false"|"true")
    Ada_EqualityExpression: Ada_Expression ("="|"/="|"!=") Ada_Expression
    Ada_FunctionCall: Ada_Variable ['?'] Ada_FunctionArguments
    |   Ada_FunctionArg: (Ada_FunctionSetArg | Ada_Expression)
    |   |   Ada_FunctionSetArg: Ada_Identifier_Reference "=>" Ada_Expression
    |   Ada_FunctionArguments: '(' Ada_FunctionArg* ')'
    Ada_LogicalAndExpression: Ada_Expression "and" Ada_Expression
    Ada_LogicalNotExpression: Ada_NotOperator Ada_Expression
    |   Ada_NotOperator: ('~' | "not")
    Ada_LogicalOrExpression: Ada_Expression ("or"|"xor") Ada_Expression
    Ada_MultiplicativeExpression: Ada_Expression Ada_MultOper Ada_Expression
    |   Ada_MultOper: (("*"|"/") | ("mod"|"rem"))
    Ada_NegativeExpression: ("-") Ada_Expression
    Ada_ParenthesizedExpression: '(' Ada_Expression* ')'
    Ada_PostIncrementExpression: Ada_Variable ("++"|"--")
    Ada_PreIncrementExpression: ("++"|"--") Ada_Variable
    Ada_RangeExpression: Ada_Expression ".." Ada_Expression
    Ada_RelationalExpression: Ada_Expression ("<"|">"|"<="|">=") Ada_Expression
    Ada_Subfield: Ada_Expression '.' Ada_Expression
    Ada_VariableExpression: Ada_Variable
    Ada_LengthFunction: "Length" '(' Ada_Expression ')'
    Ada_SliceFunction: "Slice" '(' Ada_Expression ',' Ada_Expression ',' Ada_Expression ')'
    Ada_UnboundFunction: "To_Unbounded_String" '(' Ada_Expression ')'
    Ada_AppendStatement: "Append" '(' Ada_VariableExpression ',' Ada_Expression ')' ';'
    Ada_Assignment: Ada_Variable ("="|"+="|"-="|"*="|"/="|":=") Ada_Expression ';'
    Ada_Data: Ada_Variable_Definition* ':' Ada_Type [Ada_DataInitialValue] ';'
    |   Ada_DataInitialValue: ":=" Ada_Expression
    Ada_ExitStatement: "exit" ';'
    Ada_ExpressionStatement: Ada_Expression ';'
    Ada_ForStatement: [Ada_Label] "for" Ada_Variable "in" ["Integer"] ["range"] ["reverse"] Ada_Expression "loop" Ada_Statement* "end" "loop" [Ada_Label_Reference] ';'
    Ada_Function: "function" Ada_Function_Definition [Ada_FunctionParams] [Ada_FunctionReturns] "is" Ada_Statement* "begin" Ada_Statement* "end" [Ada_Identifier_Reference] ';'
    |   Ada_FunctionParams: '(' [Ada_Parameter]* ')'
    |   Ada_FunctionReturns: "return" Ada_Type
    |   Ada_Parameter: Ada_Variable_Definition ':' Ada_Type
    Ada_IfStatement: "if" Ada_Expression "then" Ada_Statement* [Ada_ElseIfClause]* [Ada_IfElseClause] "end" "if" ';'
    |   Ada_ElseIfClause: "elsif" Ada_Expression "then" Ada_Statement*
    |   Ada_IfElseClause: "else" Ada_Statement*
    Ada_Package: "package" Ada_Package_Definition "is" "new" Ada_Identifier_Reference* '(' Ada_Identifier_Reference* ')' ';'
    Ada_Procedure: "procedure" Ada_Function_Definition [Ada_FunctionParams] "is" [Ada_Package] Ada_Statement* "begin" Ada_Statement* "end" [Ada_Identifier_Reference] ';'
    Ada_PutIntegerStatement: "Integer_IO" '.' ("put") '(' Ada_Expression ',' "Width" "=>" Ada_Expression ')' ';'
    Ada_PutStatement: [Ada_Put_Unbounded_IO] ("put"|"put_line") '(' [Ada_Expression] ')' ';'
    |   Ada_Put_Unbounded_IO: "Unbounded_IO" '.'
    Ada_ReturnStatement: "return" Ada_Expression ';'
    Ada_WhileStatement: "while" Ada_Expression "loop" Ada_Statement* "end" "loop" ';'
    Ada_WithUseStatement: "with" Ada_Identifier_Reference* ';' "use" Ada_Identifier_Reference* ';'

Terminals = 9 (instances=0)
Tokens = 57 (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.