aboutsummaryrefslogtreecommitdiff
path: root/lldb/docs/dil-expr-lang.ebnf
blob: 783432dabd6db811ca51b41c5f105922b356b819 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
(* Data Inspection Language (DIL) definition - LLDB Debug Expressions *)

(* This is currently a subset of the final DIL Language, matching the current
   DIL implementation. *)

expression = unary_expression ;

unary_expression = postfix_expression
                 | unary_operator expression ;

unary_operator = "*" | "&" ;

postfix_expression = primary_expression
                   | postfix_expression "[" integer_literal "]"
                   | postfix_expression "." id_expression
                   | postfix_expression "->" id_expression ;

primary_expression = id_expression
                   | "(" expression ")" ;

id_expression = unqualified_id
              | qualified_id
              | register ;

unqualified_id = identifier ;

qualified_id = ["::"] [nested_name_specifier] unqualified_id
             | ["::"] identifier ;

identifier = ? C99 Identifier ? ;

integer_literal = ? Integer constant: hexademical, decimal, octal, binary ? ;

register = "$" ? Register name ? ;

nested_name_specifier = type_name "::"
                      | namespace_name '::'
                      | nested_name_specifier identifier "::" ;

type_name = class_name
          | enum_name
          | typedef_name;

class_name = identifier ;

enum_name = identifier ;

typedef_name = identifier ;

namespace_name = identifier ;