github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/logql/log/pattern/expr.y (about)

     1  %{
     2  
     3  package pattern
     4  
     5  %}
     6  
     7  %union{
     8    Expr                 []node
     9    Node                 node
    10  
    11    literal              rune
    12    Literals             []rune
    13    str                  string
    14    token                int
    15  }
    16  
    17  %start root
    18  
    19  %type <Expr>             expr
    20  %type <Node>             node
    21  %type <Literals>         literals
    22  
    23  %token <str>              IDENTIFIER
    24  %token <literal>          LITERAL
    25  %token <token>            LESS_THAN MORE_THAN UNDERSCORE
    26  
    27  %%
    28  
    29  root:
    30      expr { exprlex.(*lexer).expr = $1 };
    31  
    32  expr:
    33      node { $$ = []node{$1} }
    34      | expr node { $$ = append($1, $2) }
    35      ;
    36  
    37  node:
    38       IDENTIFIER  { $$ = capture($1) }
    39      | literals  { $$ = runesToLiterals($1) }
    40      ;
    41  
    42  literals:
    43      LITERAL { $$ = []rune{$1} }
    44      | literals LITERAL { $$ = append($1, $2) }
    45  %%