Eagle Legacy Modernization, LLC

AWK Grammar

Main program: AWK_Program

AWK syntax:

 Count  Terminals:
5 AWK_Comment: # comment
499 AWK_EndOfLine: End of line
  AWK_Function_Definition: An identifier
408 AWK_Identifier_Reference: An identifier
296 AWK_Literal: quotes:'" escape:\ doubled:no multiline:no
128 AWK_Number: exponent_chars:none suffix_chars:none trailing_period:yes ignore_char:none
  AWK_Parameter_Definition: An identifier
119 AWK_Pattern: quotes:/ escape:\ doubled:no multiline:no
 Count  Statistics(*) Tokens:
91 all all 3.63(98%) all all AWK_Action: '{' [AWK_EndOfLine] [AWK_StatementOrComment]* '}' [AWK_EndOfLine]
323 (all | none | none) |   AWK_StatementOrComment: (AWK_Statements | AWK_Comment | AWK_Action)
201 all 1.65(40%) AWK_ArgumentList: AWK_Expression [AWK_MoreArguments]*
132 94% none all |   AWK_MoreArguments: [','] [AWK_EndOfLine] AWK_Expression
84 1.00(93%) all AWK_Command: [AWK_Condition]* AWK_Action
78 (41% | 59%) AWK_Condition: (("BEGIN"|"END") | AWK_Expression)
884 (14% | none | 2% | 13% | none | 1% | none | 0% | 4% | 24% | 22% | none | 2% | none | 4% | none | 0% | none | none | 1% | 5% | 2% | none | none | 1% | 5% | none | none) AWK_Expression: (AWK_Number | AWK_GetLine | AWK_CallFunction | AWK_PatternExpression | AWK_PreIncrementExpression | AWK_PostIncrementExpression | AWK_NegativeExpression | AWK_LogicalNotExpression | AWK_ConcatenationExpression | AWK_VariableExpression | AWK_String | AWK_IntFunction | AWK_LengthFunction | AWK_SprintfFunction | AWK_SubstrFunction | AWK_BuiltinFunction | AWK_ParenthesizedExpression | AWK_DollarParensExpression | AWK_SubscriptExpression | AWK_MultiplicativeExpression | AWK_AdditiveExpression | AWK_RelationalExpression | AWK_RegularExpression | AWK_InExpression | AWK_LogicalAndExpression | AWK_LogicalOrExpression | AWK_TrueFalseExpression | AWK_AssignmentExpression)
    AWK_Function: "function" AWK_Function_Definition AWK_Function_ParameterDefs [AWK_Comment]* AWK_FunctionBody
    |   AWK_FunctionBody: '{' [AWK_EndOfLine] [AWK_StatementOrComment]* '}' [AWK_EndOfLine]
    |   AWK_Function_ParameterDefs: '(' [AWK_Comment] [AWK_Parameter_Definition]* ')'
25 3.36 AWK_Program: AWK_Element*
    |   AWK_CommentLine: AWK_Comment AWK_EndOfLine
84 (all | none | none) |   AWK_Element: (AWK_Command | AWK_CommentLine | AWK_Function)
328 1.01 93% none 97% AWK_Statements: AWK_Statement* [';'] [AWK_Comment]* [AWK_EndOfLine]
330 (none | 2% | 29% | none | none | 0% | none | none | 3% | 5% | 47% | none | 0% | 11% | none | none | 3%) |   AWK_Statement: (';' | AWK_Comment | AWK_Assignment | AWK_BreakStatement | AWK_ContinueStatement | AWK_ExitStatement | AWK_ForStatement | AWK_ForEachStatement | AWK_IfStatement | AWK_NextStatement | AWK_PrintStatement | AWK_ReturnStatement | AWK_SplitStatement | AWK_SubStatement | AWK_SwitchStatement | AWK_WhileStatement | AWK_ExpressionStatement)
394 all 1.00(9%) AWK_Variable: AWK_Identifier_Reference [AWK_VarSubscript]*
37 all all all |   AWK_VarSubscript: '[' AWK_Expression ']'
40 all all all AWK_AdditiveExpression: AWK_Expression ("+"|"-") AWK_Expression
    AWK_AssignmentExpression: AWK_Expression ("="|"+="|"-="|"*="|"/=") AWK_Expression
14 all all all all AWK_CallFunction: AWK_Identifier_Reference '(' [AWK_ArgumentList] ')'
35 all all 3.45(89%) AWK_ConcatenationExpression: AWK_ConcatPiece AWK_ConcatPiece [AWK_ConcatPiece]*
177 (59% | 41%) |   AWK_ConcatPiece: (AWK_String | AWK_VariableExpression)
    AWK_DollarParensExpression: '$' '(' AWK_Expression ')'
    AWK_GetLine: "GETLINE" AWK_Variable '<' AWK_Variable
    AWK_InExpression: AWK_Expression "in" AWK_Expression
5 all all none all AWK_LogicalAndExpression: AWK_Expression "&&" [AWK_EndOfLine] AWK_Expression
4 all all AWK_LogicalNotExpression: '!' AWK_Expression
43 all all none all AWK_LogicalOrExpression: AWK_Expression "||" [AWK_EndOfLine] AWK_Expression
10 all all all AWK_MultiplicativeExpression: AWK_Expression ("*"|"/"|"%") AWK_Expression
    AWK_NegativeExpression: ("-") AWK_Expression
1 all all all AWK_ParenthesizedExpression: '(' AWK_Expression ')'
119 all AWK_PatternExpression: AWK_Pattern
9 all all AWK_PostIncrementExpression: AWK_Variable ("++"|"--")
    AWK_PreIncrementExpression: ("++"|"--") AWK_Expression
    AWK_RegularExpression: AWK_Expression ("~"|"!~") AWK_Expression
17 all all all AWK_RelationalExpression: AWK_Expression ("=="|"!="|"<"|">"|"<="|">=") AWK_Expression
296 all AWK_String: AWK_Literal
    AWK_SubscriptExpression: AWK_Expression '[' AWK_Expression ']'
    AWK_TrueFalseExpression: AWK_Expression '?' AWK_Expression ':' AWK_Expression
288 all AWK_VariableExpression: AWK_Variable
    AWK_BuiltinFunction: ("index"|"match"|"strftime") '(' [AWK_ArgumentList] ')'
    AWK_IntFunction: "int" '(' AWK_Expression ')'
19 all all all all AWK_LengthFunction: "length" '(' AWK_Expression ')'
    AWK_SprintfFunction: "sprintf" '(' AWK_ArgumentList ')'
33 all all all all all 94% 94% all AWK_SubstrFunction: "substr" '(' AWK_Expression ',' AWK_Expression [','] [AWK_Expression] ')'
97 all all all AWK_Assignment: AWK_Variable ("="|"+="|"-="|"*="|"/=") AWK_Expression
    AWK_BreakStatement: "break"
    AWK_ContinueStatement: "continue"
1 all AWK_ExitStatement: "exit"
9 all AWK_ExpressionStatement: AWK_Expression
    AWK_ForEachStatement: "for" '(' AWK_Variable "in" AWK_Expression ')' [AWK_EndOfLine] AWK_ForEachBlock
    |   AWK_ForEachBlock: (AWK_Statement | AWK_Action)
    AWK_ForStatement: "for" '(' AWK_Variable '=' AWK_Expression ';' AWK_Expression ';' AWK_Expression ')' [AWK_EndOfLine] AWK_ForBlock
    |   AWK_ForBlock: (AWK_Statement | AWK_Action)
11 all all all all none all 9% AWK_IfStatement: "if" '(' AWK_Expression ')' [AWK_EndOfLine] AWK_IfBlock [AWK_IfElse]
12 (42% | 58%) |   AWK_IfBlock: (AWK_Statements | AWK_Action)
1 all none all |   AWK_IfElse: "else" [AWK_EndOfLine] AWK_IfBlock
15 all AWK_NextStatement: "next"
156 all all AWK_PrintStatement: ("print"|"printf") AWK_PrintParameters
156 (21% | 79%) |   AWK_PrintParameters: (AWK_Print_WithParens | AWK_Print_NoParens)
124 96% |   AWK_Print_NoParens: [AWK_ArgumentList]
32 all all all |   AWK_Print_WithParens: '(' [AWK_ArgumentList] ')'
    AWK_ReturnStatement: "RETURN" [AWK_Expression]
1 all all all all AWK_SplitStatement: ("split") '(' AWK_ArgumentList ')'
35 all all all all AWK_SubStatement: ("gsub"|"sub") '(' AWK_ArgumentList ')'
    AWK_SwitchStatement: "switch" '(' AWK_Expression ')' [AWK_Comment] '{' [AWK_EndOfLine] [AWK_SwitchClause]* '}' [AWK_EndOfLine]
    |   AWK_CaseClause: "case" AWK_Expression ':' [AWK_EndOfLine] [AWK_StatementOrComment]*
    |   AWK_DefaultClause: "default" ':' [AWK_StatementOrComment]*
    |   AWK_SwitchClause: (AWK_Comment | AWK_CaseClause | AWK_DefaultClause)
    AWK_WhileStatement: "while" '(' AWK_Expression ')' AWK_WhileBlock
    |   AWK_WhileBlock: (AWK_Statement | AWK_Action)

Terminals = 8 (instances=1,455)
Tokens = 71 (instances=4,751)

(*) 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.