{"id":13830005,"url":"https://github.com/opencompl/C-parsing-for-Lean4","last_synced_at":"2025-07-09T10:32:15.236Z","repository":{"id":41198080,"uuid":"497623449","full_name":"opencompl/C-parsing-for-Lean4","owner":"opencompl","description":"A parser for ANSI C, in Lean4.","archived":false,"fork":false,"pushed_at":"2023-11-16T21:57:08.000Z","size":1638,"stargazers_count":17,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-08-05T10:09:51.654Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opencompl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-05-29T15:02:39.000Z","updated_at":"2024-08-02T09:51:52.000Z","dependencies_parsed_at":"2024-01-13T15:44:52.675Z","dependency_job_id":"375e145a-f45a-45a6-a4b7-bb959ed79b3d","html_url":"https://github.com/opencompl/C-parsing-for-Lean4","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencompl%2FC-parsing-for-Lean4","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencompl%2FC-parsing-for-Lean4/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencompl%2FC-parsing-for-Lean4/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencompl%2FC-parsing-for-Lean4/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opencompl","download_url":"https://codeload.github.com/opencompl/C-parsing-for-Lean4/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225533036,"owners_count":17484185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T10:00:52.877Z","updated_at":"2024-11-20T10:31:39.834Z","avatar_url":"https://github.com/opencompl.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# C-parsing-for-Lean4\nA parser for ANSI C, in Lean4.\n\n## Description\n\nThe system uses macros to parse C code into an AST represented by a user-defined Lean type `translation_unit`.  \nThis has been implemented by defining syntax categories according to the ANSI C Grammar (see below), and mapping non-terminal expansions to different constructors of the corresponding datatype.\n\n## Testing\n\nIn order to run the tests, first run `lake build`. Then run `./build/bin/cParser`.  \nThis will run the parser on the files in the `Tests` directory.  \nAlternatively, simply run `lake exe cParser`.\n\nFailed tests can be filtered by piping the output of the command through `grep` in the following manner:  \n```./build/bin/cParser | grep error```\n\n## Limitations\nThe file `Tests/SQLite/shell_clanged.c` is the output of `clang -E sqlite-amalgamation-3420000/shell.c`.  \nThe file `Tests/SQLite/sqlite3_clanged.c` is the output of `clang -E sqlite-amalgamation-3420000/sqlite3.c`.\n\nBefore preprocessing, add the following directives to eliminate these macros from the code and include certain type definitions:\n```c\n#define __attribute__(x)\n#define __extension__\n#define __restrict\n#define restrict\n#define __inline\n#define  __asm__(x)\n#define __asm(x)\n#define _Nonnull\n#define _Nullable\n#define _Null_unspecified\n#include \u003cbyteswap.h\u003e // for non-Mac OS; else\n#  include \u003clibkern/OSByteOrder.h\u003e\n\n /* We assume little endian. */\n#  define htobe64(x) OSSwapHostToBigInt64(x)\n#  define htobe32(x) OSSwapHostToBigInt32(x)\n#  define htobe16(x) OSSwapHostToBigInt16(x)\n\n#  define be64toh(x) OSSwapBigToHostInt64(x)\n#  define be32toh(x) OSSwapBigToHostInt32(x)\n#  define be16toh(x) OSSwapBigToHostInt16(x)\n\n// The following are for sqlite3.c\ntypedef unsigned long long __uint128_t;\ntypedef void(*LOGFUNC_t)(void*,int,const char*);\ntypedef int(*sqlite3FaultFuncType)(int);\ntypedef void (*void_function)(void);\ntypedef int(*sqlite3LocaltimeType)(const void*,void*);\n```\n\n## The `typedef` Issue\nIn C, a `typedef` statement creates a new type name, which cannot be parsed as an identifier within the scope of that `typedef` statement (global or function).  \n\nConsider the statement\n```c\ntypedef struct Foo Foo;\n```\nIf this statement in the outermost scope, then after it, `Foo` is a type name in that scope, but may be used to declare identifiers (thus hiding the type name) in local scopes.\n\nHowever, if the statement is in a local scope, `Foo` is a type name only within that scope, and ceases to be one when we return from it.\n\nThis property makes C's grammar more context-sensitive than Lean's itself, which makes a straightforward solution infeasible. However, a solution for a limited (and, to our knowledge, fairly common) case of this has been implemented.  \nGlobal `typedef`s create new type names, which cannot be reused as identifiers in any scope after the `typedef`. Local `typedef`s cause no errors, but have no effect on the environment (create no new type names).\n\nThus, this snippet\n```c\ntypedef struct Foo Foo;\n\nstruct Foo { int y ; };\n\nFoo return_Foo(int x)\n{\n    Foo bar;\n    bar.y = x;\n    return bar;\n}\n```\nparses, but this one\n```c\ntypedef struct Foo;\n\nstruct Foo { int y ; };\n\nFoo return_Foo(int x)\n{\n    int Foo = x;\n    struct Foo bar;\n    bar.y = Foo;\n    return bar;\n}\n```\nand this one\n```c\nstruct Foo { int y ; };    \nstruct Foo add_and_wrap(int a, int b)\n{\n    typedef struct Foo Foo;\n    Foo bar;\n    bar.y = a + b;\n    return bar;\n}\n```\ndo not.\n\n## Control Flow\nWhen `main` is run, it calls `runTestHarness`, which runs `checkFileParse` on each file in each directory of `Tests/`. All these functions are defined in `Main.lean`.  \n`runTestHarness` removes lines starting with `#` (preprocessing directives) and passes the file to the corresponding `parseNonTerminal` function (defined in `CParser/Parser/ParseFuncs.lean`). These functions are responsible for *both parsing and elaboration*.\n\n`mkParseFun` creates the function responsible for this (which is called by `mkNonTerminalParser`), defined in `CParser/Util.lean`. The parsing is done by `runParserCategory`, and the elaboration by the argument `ntparser` (one of the `mk\u003cNonTerminal\u003e` functions defined in `CParser/Parser/MakeFuncs.lean`).\n\nNote that we use a custom version of `runParserCategory` for the `translation_unit` nonterminal. This is in order to allow for global typedef statements.  \n`runParserCategoryTranslationUnit` works exactly the same as its built-in counterpart, except that if the statement being parsed is a typedef, then we use the `stringToCommand` function to define a new `type_name_token` for each identifier given. For example, the statement\n```c\ntypedef struct Foo Foo;\n```\ncauses the command\n```lean\nsyntax \"Foo\" : type_name_token\n```\nto be elaborated.\n\n`addTokenTableOfCategory` finds all the keywords used in the syntax definitions of a category, and these are the only keywords recognised during parsing. This is done so that Lean keywords do not block C identifiers.\n\nWe use custom tokenisation functions defined in `Token.lean` to account for differences between C tokens and Lean tokens. The major divergences are\n\n* C identifiers cannot include `!` or `?`.\n* Quotable characters are `\\\"'rntabefv?0`\n* C comments are delimited by `//` (single line) and `/* ... */` (multiline).\n\nNumbers with arithmetic type specifiers (`u`, `U`, `l` and `L`) following them are accounted for by the nonterminal `extended_num`, which allows for any number of these specifiers to follow any number.\n\n## Error Reporting\n### Parsing Errors\nIf the *parsing* fails, an error of the form `expected ...` will be thrown. For example, in a statement like\n```c\nstatic inline func(void);\n```\nif `inline` is not defined as a `declaration_specifier`, then it will be parsed as an `ident`, and the parser will then throw an error at `func`: `expected '(' or ';'`.\n\n## Elaboration Errors\nIf the *elaboration* fails, an error of the form `unexpected syntax for \u003cnonterminal\u003e` will be thrown, followed by the syntax tree which was passed to the failing function. Usually, this will be because the parser has identified two possible parses and so the syntax node has kind `choice` instead of the required nonterminal. In such cases, a preference for one of the choices can be hardcoded by filtering them based on the kind. This has been done for\n\n* `mkUnaryExpression`: a preference to include the brackets in the `unary_expression` instead of a `primary_expression`\n* `mkCastExpression`: a preference to avoid reading the `type_name_token` as an `ident` and the expression as a `postfix_expression`\n* `mkCompStmt`: a preference to have at least one `declaration`\n\nFor `unary_expression`s, an example of the ambiguity is\n```\n(choice\n («unary_expressionSizeof(_)»\n  \"sizeof\"\n  \"(\"\n  (type_name__ (specifier_qualifier_list_ (specifier_qualifier_ (type_specifierChar \"char\"))) [])\n  \")\")\n (unary_expressionSizeof_\n  \"sizeof\"\n  (unary_expression_\n   (postfix_expression_\n    («primary_expression(_)»\n     \"(\"\n     («expression_,,»\n      [(assignment_expression_\n        (conditional_expression_\n         (logical_or_expression_\n          (logical_and_expression_\n           (inclusive_or_expression_\n            (exclusive_or_expression_\n             (and_expression_\n              (equality_expression_\n               (relational_expression_\n                (shift_expression_\n                 (additive_expression_\n                  (multiplicative_expression_\n                   (cast_expression_\n                    (unary_expression_ (postfix_expression_ (primary_expression__4 \"char\"))))))))))))))))])\n     \")\")))))\n```\nfor the expression `sizeof(char)`.\n\nFor `cast_expression`s, an example is\n```\n(choice\n (cast_expression_\n  (unary_expression_\n   («postfix_expression_(_)»\n    (postfix_expression_\n     («primary_expression(_)»\n      \"(\"\n      («expression_,,»\n       [(assignment_expression_\n         (conditional_expression_\n          (logical_or_expression_\n           (logical_and_expression_\n            (inclusive_or_expression_\n             (exclusive_or_expression_\n              (and_expression_\n               (equality_expression_\n                (relational_expression_\n                 (shift_expression_\n                  (additive_expression_\n                   (multiplicative_expression_\n                    (cast_expression_\n                     (unary_expression_\n                      (postfix_expression_\n                       (primary_expression__1 (type_name_token__uint16_t \"__uint16_t\")))))))))))))))))])\n      \")\"))\n    \"(\"\n    («argument_expression_list_,,»\n     [(assignment_expression_\n       (conditional_expression_\n        (logical_or_expression_\n         (logical_and_expression_\n          («inclusive_or_expression_|_»\n           (inclusive_or_expression_\n            (exclusive_or_expression_\n             (and_expression_\n              (equality_expression_\n               (relational_expression_\n                (shift_expression_\n                 (additive_expression_\n                  (multiplicative_expression_\n                   (cast_expression_\n                    (unary_expression_\n                     (postfix_expression_\n                      («primary_expression(_)»\n                       \"(\"\n                       («expression_,,»\n                        [(assignment_expression_\n                          (conditional_expression_\n                           (logical_or_expression_\n                            (logical_and_expression_\n                             (inclusive_or_expression_\n                              (exclusive_or_expression_\n                               («and_expression_\u0026_»\n                                (and_expression_\n                                 (equality_expression_\n                                  (relational_expression_\n                                   (shift_expression_\n                                    (additive_expression_\n                                     (multiplicative_expression_\n                                      (cast_expression_\n                                       (unary_expression_\n                                        (postfix_expression_\n                                         («primary_expression(_)»\n                                          \"(\"\n                                          («expression_,,»\n                                           [(assignment_expression_\n                                             (conditional_expression_\n                                              (logical_or_expression_\n                                               (logical_and_expression_\n                                                (inclusive_or_expression_\n                                                 (exclusive_or_expression_\n                                                  (and_expression_\n                                                   (equality_expression_\n                                                    (relational_expression_\n                                                     («shift_expression_\u003e\u003e_»\n                                                      (shift_expression_\n                                                       (additive_expression_\n                                                        (multiplicative_expression_\n                                                         (cast_expression_\n                                                          (unary_expression_\n                                                           (postfix_expression_\n                                                            («primary_expression(_)»\n                                                             \"(\"\n                                                             («expression_,,»\n                                                              [(assignment_expression_\n                                                                (conditional_expression_\n                                                                 (logical_or_expression_\n                                                                  (logical_and_expression_\n                                                                   (inclusive_or_expression_\n                                                                    (exclusive_or_expression_\n                                                                     (and_expression_\n                                                                      (equality_expression_\n                                                                       (relational_expression_\n                                                                        (shift_expression_\n                                                                         (additive_expression_\n                                                                          (multiplicative_expression_\n                                                                           (cast_expression_\n                                                                            (unary_expression_\n                                                                             (postfix_expression_\n                                                                              (primary_expression_\n                                                                               `__bsx))))))))))))))))])\n                                                             \")\")))))))\n                                                      \"\u003e\u003e\"\n                                                      (additive_expression_\n                                                       (multiplicative_expression_\n                                                        (cast_expression_\n                                                         (unary_expression_\n                                                          (postfix_expression_\n                                                           (primary_expression__2\n                                                            (extended_num___\n                                                             (num \"8\")\n                                                             [(arith_type_specs \"\")])))))))))))))))))])\n                                          \")\"))))))))))\n                                \"\u0026\"\n                                (equality_expression_\n                                 (relational_expression_\n                                  (shift_expression_\n                                   (additive_expression_\n                                    (multiplicative_expression_\n                                     (cast_expression_\n                                      (unary_expression_\n                                       (postfix_expression_\n                                        (primary_expression__2\n                                         (extended_num___ (num \"0xff\") [(arith_type_specs \"\")])))))))))))))))))])\n                       \")\"))))))))))))\n           \"|\"\n           (exclusive_or_expression_\n            (and_expression_\n             (equality_expression_\n              (relational_expression_\n               (shift_expression_\n                (additive_expression_\n                 (multiplicative_expression_\n                  (cast_expression_\n                   (unary_expression_\n                    (postfix_expression_\n                     («primary_expression(_)»\n                      \"(\"\n                      («expression_,,»\n                       [(assignment_expression_\n                         (conditional_expression_\n                          (logical_or_expression_\n                           (logical_and_expression_\n                            (inclusive_or_expression_\n                             (exclusive_or_expression_\n                              (and_expression_\n                               (equality_expression_\n                                (relational_expression_\n                                 («shift_expression_\u003c\u003c_»\n                                  (shift_expression_\n                                   (additive_expression_\n                                    (multiplicative_expression_\n                                     (cast_expression_\n                                      (unary_expression_\n                                       (postfix_expression_\n                                        («primary_expression(_)»\n                                         \"(\"\n                                         («expression_,,»\n                                          [(assignment_expression_\n                                            (conditional_expression_\n                                             (logical_or_expression_\n                                              (logical_and_expression_\n                                               (inclusive_or_expression_\n                                                (exclusive_or_expression_\n                                                 («and_expression_\u0026_»\n                                                  (and_expression_\n                                                   (equality_expression_\n                                                    (relational_expression_\n                                                     (shift_expression_\n                                                      (additive_expression_\n                                                       (multiplicative_expression_\n                                                        (cast_expression_\n                                                         (unary_expression_\n                                                          (postfix_expression_\n                                                           («primary_expression(_)»\n                                                            \"(\"\n                                                            («expression_,,»\n                                                             [(assignment_expression_\n                                                               (conditional_expression_\n                                                                (logical_or_expression_\n                                                                 (logical_and_expression_\n                                                                  (inclusive_or_expression_\n                                                                   (exclusive_or_expression_\n                                                                    (and_expression_\n                                                                     (equality_expression_\n                                                                      (relational_expression_\n                                                                       (shift_expression_\n                                                                        (additive_expression_\n                                                                         (multiplicative_expression_\n                                                                          (cast_expression_\n                                                                           (unary_expression_\n                                                                            (postfix_expression_\n                                                                             (primary_expression_\n                                                                              `__bsx))))))))))))))))])\n                                                            \")\"))))))))))\n                                                  \"\u0026\"\n                                                  (equality_expression_\n                                                   (relational_expression_\n                                                    (shift_expression_\n                                                     (additive_expression_\n                                                      (multiplicative_expression_\n                                                       (cast_expression_\n                                                        (unary_expression_\n                                                         (postfix_expression_\n                                                          (primary_expression__2\n                                                           (extended_num___\n                                                            (num \"0xff\")\n                                                            [(arith_type_specs \"\")])))))))))))))))))])\n                                         \")\")))))))\n                                  \"\u003c\u003c\"\n                                  (additive_expression_\n                                   (multiplicative_expression_\n                                    (cast_expression_\n                                     (unary_expression_\n                                      (postfix_expression_\n                                       (primary_expression__2\n                                        (extended_num___ (num \"8\") [(arith_type_specs \"\")])))))))))))))))))])\n                      \")\"))))))))))))))))])\n    \")\")))\n («cast_expression(_)_»\n  \"(\"\n  (type_name__\n   (specifier_qualifier_list_ (specifier_qualifier_ (type_specifier__2 (type_name_token__uint16_t \"__uint16_t\"))))\n   [])\n  \")\"\n  (cast_expression_\n   (unary_expression_\n    (postfix_expression_\n     («primary_expression(_)»\n      \"(\"\n      («expression_,,»\n       [(assignment_expression_\n         (conditional_expression_\n          (logical_or_expression_\n           (logical_and_expression_\n            («inclusive_or_expression_|_»\n             (inclusive_or_expression_\n              (exclusive_or_expression_\n               (and_expression_\n                (equality_expression_\n                 (relational_expression_\n                  (shift_expression_\n                   (additive_expression_\n                    (multiplicative_expression_\n                     (cast_expression_\n                      (unary_expression_\n                       (postfix_expression_\n                        («primary_expression(_)»\n                         \"(\"\n                         («expression_,,»\n                          [(assignment_expression_\n                            (conditional_expression_\n                             (logical_or_expression_\n                              (logical_and_expression_\n                               (inclusive_or_expression_\n                                (exclusive_or_expression_\n                                 («and_expression_\u0026_»\n                                  (and_expression_\n                                   (equality_expression_\n                                    (relational_expression_\n                                     (shift_expression_\n                                      (additive_expression_\n                                       (multiplicative_expression_\n                                        (cast_expression_\n                                         (unary_expression_\n                                          (postfix_expression_\n                                           («primary_expression(_)»\n                                            \"(\"\n                                            («expression_,,»\n                                             [(assignment_expression_\n                                               (conditional_expression_\n                                                (logical_or_expression_\n                                                 (logical_and_expression_\n                                                  (inclusive_or_expression_\n                                                   (exclusive_or_expression_\n                                                    (and_expression_\n                                                     (equality_expression_\n                                                      (relational_expression_\n                                                       («shift_expression_\u003e\u003e_»\n                                                        (shift_expression_\n                                                         (additive_expression_\n                                                          (multiplicative_expression_\n                                                           (cast_expression_\n                                                            (unary_expression_\n                                                             (postfix_expression_\n                                                              («primary_expression(_)»\n                                                               \"(\"\n                                                               («expression_,,»\n                                                                [(assignment_expression_\n                                                                  (conditional_expression_\n                                                                   (logical_or_expression_\n                                                                    (logical_and_expression_\n                                                                     (inclusive_or_expression_\n                                                                      (exclusive_or_expression_\n                                                                       (and_expression_\n                                                                        (equality_expression_\n                                                                         (relational_expression_\n                                                                          (shift_expression_\n                                                                           (additive_expression_\n                                                                            (multiplicative_expression_\n                                                                             (cast_expression_\n                                                                              (unary_expression_\n                                                                               (postfix_expression_\n                                                                                (primary_expression_\n                                                                                 `__bsx))))))))))))))))])\n                                                               \")\")))))))\n                                                        \"\u003e\u003e\"\n                                                        (additive_expression_\n                                                         (multiplicative_expression_\n                                                          (cast_expression_\n                                                           (unary_expression_\n                                                            (postfix_expression_\n                                                             (primary_expression__2\n                                                              (extended_num___\n                                                               (num \"8\")\n                                                               [(arith_type_specs \"\")])))))))))))))))))])\n                                            \")\"))))))))))\n                                  \"\u0026\"\n                                  (equality_expression_\n                                   (relational_expression_\n                                    (shift_expression_\n                                     (additive_expression_\n                                      (multiplicative_expression_\n                                       (cast_expression_\n                                        (unary_expression_\n                                         (postfix_expression_\n                                          (primary_expression__2\n                                           (extended_num___ (num \"0xff\") [(arith_type_specs \"\")])))))))))))))))))])\n                         \")\"))))))))))))\n             \"|\"\n             (exclusive_or_expression_\n              (and_expression_\n               (equality_expression_\n                (relational_expression_\n                 (shift_expression_\n                  (additive_expression_\n                   (multiplicative_expression_\n                    (cast_expression_\n                     (unary_expression_\n                      (postfix_expression_\n                       («primary_expression(_)»\n                        \"(\"\n                        («expression_,,»\n                         [(assignment_expression_\n                           (conditional_expression_\n                            (logical_or_expression_\n                             (logical_and_expression_\n                              (inclusive_or_expression_\n                               (exclusive_or_expression_\n                                (and_expression_\n                                 (equality_expression_\n                                  (relational_expression_\n                                   («shift_expression_\u003c\u003c_»\n                                    (shift_expression_\n                                     (additive_expression_\n                                      (multiplicative_expression_\n                                       (cast_expression_\n                                        (unary_expression_\n                                         (postfix_expression_\n                                          («primary_expression(_)»\n                                           \"(\"\n                                           («expression_,,»\n                                            [(assignment_expression_\n                                              (conditional_expression_\n                                               (logical_or_expression_\n                                                (logical_and_expression_\n                                                 (inclusive_or_expression_\n                                                  (exclusive_or_expression_\n                                                   («and_expression_\u0026_»\n                                                    (and_expression_\n                                                     (equality_expression_\n                                                      (relational_expression_\n                                                       (shift_expression_\n                                                        (additive_expression_\n                                                         (multiplicative_expression_\n                                                          (cast_expression_\n                                                           (unary_expression_\n                                                            (postfix_expression_\n                                                             («primary_expression(_)»\n                                                              \"(\"\n                                                              («expression_,,»\n                                                               [(assignment_expression_\n                                                                 (conditional_expression_\n                                                                  (logical_or_expression_\n                                                                   (logical_and_expression_\n                                                                    (inclusive_or_expression_\n                                                                     (exclusive_or_expression_\n                                                                      (and_expression_\n                                                                       (equality_expression_\n                                                                        (relational_expression_\n                                                                         (shift_expression_\n                                                                          (additive_expression_\n                                                                           (multiplicative_expression_\n                                                                            (cast_expression_\n                                                                             (unary_expression_\n                                                                              (postfix_expression_\n                                                                               (primary_expression_\n                                                                                `__bsx))))))))))))))))])\n                                                              \")\"))))))))))\n                                                    \"\u0026\"\n                                                    (equality_expression_\n                                                     (relational_expression_\n                                                      (shift_expression_\n                                                       (additive_expression_\n                                                        (multiplicative_expression_\n                                                         (cast_expression_\n                                                          (unary_expression_\n                                                           (postfix_expression_\n                                                            (primary_expression__2\n                                                             (extended_num___\n                                                              (num \"0xff\")\n                                                              [(arith_type_specs \"\")])))))))))))))))))])\n                                           \")\")))))))\n                                    \"\u003c\u003c\"\n                                    (additive_expression_\n                                     (multiplicative_expression_\n                                      (cast_expression_\n                                       (unary_expression_\n                                        (postfix_expression_\n                                         (primary_expression__2\n                                          (extended_num___ (num \"8\") [(arith_type_specs \"\")])))))))))))))))))])\n                        \")\"))))))))))))))))])\n      \")\"))))))\n```\nfor the expression `((__uint16_t) ((((__bsx) \u003e\u003e 8) \u0026 0xff) | (((__bsx) \u0026 0xff) \u003c\u003c 8)))`.\n\nFor `compound_statement`s, an example is\n```\n(choice\n («compound_statement{__}»\n  \"{\"\n  (declaration_list_\n   («declaration__;»\n    (declaration_specifiers__1 (type_specifier__2 (type_name_tokenSqlite3_mutex \"sqlite3_mutex\")))\n    [(«init_declarator_list_,,»\n      [(«init_declarator_=_» (declarator__ [(«pointer*__» \"*\" [] [])] (direct_declarator_ `pMutex)) [])])]\n    \";\"))\n  (statement_list__\n   (statement__2 («expression_statement_;» [(«expression_,,» [])] \";\"))\n   (statement_list__\n    (statement__3\n     («selection_statementIf(_)_Else_»\n      \"if\"\n      \"(\"\n      («expression_,,»\n       [(assignment_expression_\n         (conditional_expression_\n          («logical_or_expression_||_»\n           (logical_or_expression_\n            (logical_and_expression_\n             (inclusive_or_expression_\n              (exclusive_or_expression_\n               (and_expression_\n                (equality_expression_\n                 («relational_expression_\u003c_»\n                  (relational_expression_\n                   (shift_expression_\n                    (additive_expression_\n                     (multiplicative_expression_\n                      (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `op))))))))\n                  \"\u003c\"\n                  (shift_expression_\n                   (additive_expression_\n                    (multiplicative_expression_\n                     (cast_expression_\n                      (unary_expression_\n                       (postfix_expression_ (primary_expression__2 (extended_num___ (num \"0\") [])))))))))))))))\n           \"||\"\n           (logical_and_expression_\n            (inclusive_or_expression_\n             (exclusive_or_expression_\n              (and_expression_\n               (equality_expression_\n                («relational_expression_\u003e=_»\n                 (relational_expression_\n                  (shift_expression_\n                   (additive_expression_\n                    (multiplicative_expression_\n                     (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `op))))))))\n                 \"\u003e=\"\n                 (shift_expression_\n                  (additive_expression_\n                   (multiplicative_expression_\n                    (cast_expression_\n                     (unary_expression_\n                      (postfix_expression_\n                       («primary_expression(_)»\n                        \"(\"\n                        («expression_,,»\n                         [(assignment_expression_\n                           (conditional_expression_\n                            (logical_or_expression_\n                             (logical_and_expression_\n                              (inclusive_or_expression_\n                               (exclusive_or_expression_\n                                (and_expression_\n                                 (equality_expression_\n                                  (relational_expression_\n                                   (shift_expression_\n                                    (additive_expression_\n                                     (multiplicative_expression_\n                                      («cast_expression(_)_»\n                                       \"(\"\n                                       (type_name__\n                                        (specifier_qualifier_list_ (specifier_qualifier_ (type_specifierInt \"int\")))\n                                        [])\n                                       \")\"\n                                       (cast_expression_\n                                        (unary_expression_\n                                         (postfix_expression_\n                                          («primary_expression(_)»\n                                           \"(\"\n                                           («expression_,,»\n                                            [(assignment_expression_\n                                              (conditional_expression_\n                                               (logical_or_expression_\n                                                (logical_and_expression_\n                                                 (inclusive_or_expression_\n                                                  (exclusive_or_expression_\n                                                   (and_expression_\n                                                    (equality_expression_\n                                                     (relational_expression_\n                                                      (shift_expression_\n                                                       (additive_expression_\n                                                        («multiplicative_expression_/_»\n                                                         (multiplicative_expression_\n                                                          (cast_expression_\n                                                           (unary_expressionSizeof_\n                                                            \"sizeof\"\n                                                            (unary_expression_\n                                                             (postfix_expression_\n                                                              («primary_expression(_)»\n                                                               \"(\"\n                                                               («expression_,,»\n                                                                [(assignment_expression_\n                                                                  (conditional_expression_\n                                                                   (logical_or_expression_\n                                                                    (logical_and_expression_\n                                                                     (inclusive_or_expression_\n                                                                      (exclusive_or_expression_\n                                                                       (and_expression_\n                                                                        (equality_expression_\n                                                                         (relational_expression_\n                                                                          (shift_expression_\n                                                                           (additive_expression_\n                                                                            (multiplicative_expression_\n                                                                             (cast_expression_\n                                                                              (unary_expression_\n                                                                               (postfix_expression_\n                                                                                (primary_expression_\n                                                                                 `sqlite3Stat.nowValue))))))))))))))))])\n                                                               \")\"))))))\n                                                         \"/\"\n                                                         (cast_expression_\n                                                          (unary_expressionSizeof_\n                                                           \"sizeof\"\n                                                           (unary_expression_\n                                                            (postfix_expression_\n                                                             («primary_expression(_)»\n                                                              \"(\"\n                                                              («expression_,,»\n                                                               [(assignment_expression_\n                                                                 (conditional_expression_\n                                                                  (logical_or_expression_\n                                                                   (logical_and_expression_\n                                                                    (inclusive_or_expression_\n                                                                     (exclusive_or_expression_\n                                                                      (and_expression_\n                                                                       (equality_expression_\n                                                                        (relational_expression_\n                                                                         (shift_expression_\n                                                                          (additive_expression_\n                                                                           (multiplicative_expression_\n                                                                            (cast_expression_\n                                                                             (unary_expression_\n                                                                              («postfix_expression_[_]»\n                                                                               (postfix_expression_\n                                                                                (primary_expression_\n                                                                                 `sqlite3Stat.nowValue))\n                                                                               \"[\"\n                                                                               («expression_,,»\n                                                                                [(assignment_expression_\n                                                                                  (conditional_expression_\n                                                                                   (logical_or_expression_\n                                                                                    (logical_and_expression_\n                                                                                     (inclusive_or_expression_\n                                                                                      (exclusive_or_expression_\n                                                                                       (and_expression_\n                                                                                        (equality_expression_\n                                                                                         (relational_expression_\n                                                                                          (shift_expression_\n                                                                                           (additive_expression_\n                                                                                            (multiplicative_expression_\n                                                                                             (cast_expression_\n                                                                                              (unary_expression_\n                                                                                               (postfix_expression_\n                                                                                                (primary_expression__2\n                                                                                                 (extended_num___\n                                                                                                  (num \"0\")\n                                                                                                  [(arith_type_specs\n                                                                                                    \"\")])))))))))))))))))])\n                                                                               \"]\")))))))))))))))])\n                                                              \")\")))))))))))))))))])\n                                           \")\")))))))))))))))))])\n                        \")\"))))))))))))))))])\n      \")\"\n      (statement__1\n       («compound_statement{_}»\n        \"{\"\n        (statement_list_\n         (statement__5\n          («jump_statementReturn_;»\n           \"return\"\n           («expression_,,»\n            [(assignment_expression_\n              (conditional_expression_\n               (logical_or_expression_\n                (logical_and_expression_\n                 (inclusive_or_expression_\n                  (exclusive_or_expression_\n                   (and_expression_\n                    (equality_expression_\n                     (relational_expression_\n                      (shift_expression_\n                       (additive_expression_\n                        (multiplicative_expression_\n                         (cast_expression_\n                          (unary_expression_\n                           («postfix_expression_(_)»\n                            (postfix_expression_ (primary_expression_ `sqlite3MisuseError))\n                            \"(\"\n                            («argument_expression_list_,,»\n                             [(assignment_expression_\n                               (conditional_expression_\n                                (logical_or_expression_\n                                 (logical_and_expression_\n                                  (inclusive_or_expression_\n                                   (exclusive_or_expression_\n                                    (and_expression_\n                                     (equality_expression_\n                                      (relational_expression_\n                                       (shift_expression_\n                                        (additive_expression_\n                                         (multiplicative_expression_\n                                          (cast_expression_\n                                           (unary_expression_\n                                            (postfix_expression_\n                                             (primary_expression__2\n                                              (extended_num___ (num \"23373\") [(arith_type_specs \"\")])))))))))))))))))])\n                            \")\")))))))))))))))])\n           \";\")))\n        \"}\"))\n      []))\n    (statement_list__\n     (statement__2\n      («expression_statement_;»\n       [(«expression_,,»\n         [(assignment_expression___\n           (unary_expression_ (postfix_expression_ (primary_expression_ `pMutex)))\n           («assignment_operator=» \"=\")\n           (assignment_expression_\n            («conditional_expression_?_:_»\n             (logical_or_expression_\n              (logical_and_expression_\n               (inclusive_or_expression_\n                (exclusive_or_expression_\n                 (and_expression_\n                  (equality_expression_\n                   (relational_expression_\n                    (shift_expression_\n                     (additive_expression_\n                      (multiplicative_expression_\n                       (cast_expression_\n                        (unary_expression_\n                         («postfix_expression_[_]»\n                          (postfix_expression_ (primary_expression_ `statMutex))\n                          \"[\"\n                          («expression_,,»\n                           [(assignment_expression_\n                             (conditional_expression_\n                              (logical_or_expression_\n                               (logical_and_expression_\n                                (inclusive_or_expression_\n                                 (exclusive_or_expression_\n                                  (and_expression_\n                                   (equality_expression_\n                                    (relational_expression_\n                                     (shift_expression_\n                                      (additive_expression_\n                                       (multiplicative_expression_\n                                        (cast_expression_\n                                         (unary_expression_\n                                          (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                          \"]\")))))))))))))\n             \"?\"\n             («expression_,,»\n              [(assignment_expression_\n                (conditional_expression_\n                 (logical_or_expression_\n                  (logical_and_expression_\n                   (inclusive_or_expression_\n                    (exclusive_or_expression_\n                     (and_expression_\n                      (equality_expression_\n                       (relational_expression_\n                        (shift_expression_\n                         (additive_expression_\n                          (multiplicative_expression_\n                           (cast_expression_\n                            (unary_expression_\n                             (choice\n                              («postfix_expression_(_)»\n                               (postfix_expression_ (primary_expression_ `sqlite3Pcache1Mutex))\n                               \"(\"\n                               («argument_expression_list_,,» [])\n                               \")\")\n                              («postfix_expression_()»\n                               (postfix_expression_ (primary_expression_ `sqlite3Pcache1Mutex))\n                               \"(\"\n                               \")\"))))))))))))))))])\n             \":\"\n             (conditional_expression_\n              (logical_or_expression_\n               (logical_and_expression_\n                (inclusive_or_expression_\n                 (exclusive_or_expression_\n                  (and_expression_\n                   (equality_expression_\n                    (relational_expression_\n                     (shift_expression_\n                      (additive_expression_\n                       (multiplicative_expression_\n                        (cast_expression_\n                         (unary_expression_\n                          (choice\n                           («postfix_expression_(_)»\n                            (postfix_expression_ (primary_expression_ `sqlite3MallocMutex))\n                            \"(\"\n                            («argument_expression_list_,,» [])\n                            \")\")\n                           («postfix_expression_()»\n                            (postfix_expression_ (primary_expression_ `sqlite3MallocMutex))\n                            \"(\"\n                            \")\"))))))))))))))))))])]\n       \";\"))\n     (statement_list__\n      (statement__2\n       («expression_statement_;»\n        [(«expression_,,»\n          [(assignment_expression_\n            (conditional_expression_\n             (logical_or_expression_\n              (logical_and_expression_\n               (inclusive_or_expression_\n                (exclusive_or_expression_\n                 (and_expression_\n                  (equality_expression_\n                   (relational_expression_\n                    (shift_expression_\n                     (additive_expression_\n                      (multiplicative_expression_\n                       (cast_expression_\n                        (unary_expression_\n                         («postfix_expression_(_)»\n                          (postfix_expression_ (primary_expression_ `sqlite3_mutex_enter))\n                          \"(\"\n                          («argument_expression_list_,,»\n                           [(assignment_expression_\n                             (conditional_expression_\n                              (logical_or_expression_\n                               (logical_and_expression_\n                                (inclusive_or_expression_\n                                 (exclusive_or_expression_\n                                  (and_expression_\n                                   (equality_expression_\n                                    (relational_expression_\n                                     (shift_expression_\n                                      (additive_expression_\n                                       (multiplicative_expression_\n                                        (cast_expression_\n                                         (unary_expression_\n                                          (postfix_expression_ (primary_expression_ `pMutex))))))))))))))))])\n                          \")\")))))))))))))))])]\n        \";\"))\n      (statement_list__\n       (statement__2\n        («expression_statement_;»\n         [(«expression_,,»\n           [(assignment_expression___\n             (unary_expression___1\n              («unary_operator*» \"*\")\n              (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `pCurrent)))))\n             («assignment_operator=» \"=\")\n             (assignment_expression_\n              (conditional_expression_\n               (logical_or_expression_\n                (logical_and_expression_\n                 (inclusive_or_expression_\n                  (exclusive_or_expression_\n                   (and_expression_\n                    (equality_expression_\n                     (relational_expression_\n                      (shift_expression_\n                       (additive_expression_\n                        (multiplicative_expression_\n                         (cast_expression_\n                          (unary_expression_\n                           («postfix_expression_[_]»\n                            (postfix_expression_ (primary_expression_ `sqlite3Stat.nowValue))\n                            \"[\"\n                            («expression_,,»\n                             [(assignment_expression_\n                               (conditional_expression_\n                                (logical_or_expression_\n                                 (logical_and_expression_\n                                  (inclusive_or_expression_\n                                   (exclusive_or_expression_\n                                    (and_expression_\n                                     (equality_expression_\n                                      (relational_expression_\n                                       (shift_expression_\n                                        (additive_expression_\n                                         (multiplicative_expression_\n                                          (cast_expression_\n                                           (unary_expression_\n                                            (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                            \"]\"))))))))))))))))])]\n         \";\"))\n       (statement_list__\n        (statement__2\n         («expression_statement_;»\n          [(«expression_,,»\n            [(assignment_expression___\n              (unary_expression___1\n               («unary_operator*» \"*\")\n               (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `pHighwater)))))\n              («assignment_operator=» \"=\")\n              (assignment_expression_\n               (conditional_expression_\n                (logical_or_expression_\n                 (logical_and_expression_\n                  (inclusive_or_expression_\n                   (exclusive_or_expression_\n                    (and_expression_\n                     (equality_expression_\n                      (relational_expression_\n                       (shift_expression_\n                        (additive_expression_\n                         (multiplicative_expression_\n                          (cast_expression_\n                           (unary_expression_\n                            («postfix_expression_[_]»\n                             (postfix_expression_ (primary_expression_ `sqlite3Stat.mxValue))\n                             \"[\"\n                             («expression_,,»\n                              [(assignment_expression_\n                                (conditional_expression_\n                                 (logical_or_expression_\n                                  (logical_and_expression_\n                                   (inclusive_or_expression_\n                                    (exclusive_or_expression_\n                                     (and_expression_\n                                      (equality_expression_\n                                       (relational_expression_\n                                        (shift_expression_\n                                         (additive_expression_\n                                          (multiplicative_expression_\n                                           (cast_expression_\n                                            (unary_expression_\n                                             (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                             \"]\"))))))))))))))))])]\n          \";\"))\n        (statement_list__\n         (statement__3\n          («selection_statementIf(_)_Else_»\n           \"if\"\n           \"(\"\n           («expression_,,»\n            [(assignment_expression_\n              (conditional_expression_\n               (logical_or_expression_\n                (logical_and_expression_\n                 (inclusive_or_expression_\n                  (exclusive_or_expression_\n                   (and_expression_\n                    (equality_expression_\n                     (relational_expression_\n                      (shift_expression_\n                       (additive_expression_\n                        (multiplicative_expression_\n                         (cast_expression_\n                          (unary_expression_ (postfix_expression_ (primary_expression_ `resetFlag))))))))))))))))])\n           \")\"\n           (statement__1\n            («compound_statement{_}»\n             \"{\"\n             (statement_list_\n              (statement__2\n               («expression_statement_;»\n                [(«expression_,,»\n                  [(assignment_expression___\n                    (unary_expression_\n                     («postfix_expression_[_]»\n                      (postfix_expression_ (primary_expression_ `sqlite3Stat.mxValue))\n                      \"[\"\n                      («expression_,,»\n                       [(assignment_expression_\n                         (conditional_expression_\n                          (logical_or_expression_\n                           (logical_and_expression_\n                            (inclusive_or_expression_\n                             (exclusive_or_expression_\n                              (and_expression_\n                               (equality_expression_\n                                (relational_expression_\n                                 (shift_expression_\n                                  (additive_expression_\n                                   (multiplicative_expression_\n                                    (cast_expression_\n                                     (unary_expression_ (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                      \"]\"))\n                    («assignment_operator=» \"=\")\n                    (assignment_expression_\n                     (conditional_expression_\n                      (logical_or_expression_\n                       (logical_and_expression_\n                        (inclusive_or_expression_\n                         (exclusive_or_expression_\n                          (and_expression_\n                           (equality_expression_\n                            (relational_expression_\n                             (shift_expression_\n                              (additive_expression_\n                               (multiplicative_expression_\n                                (cast_expression_\n                                 (unary_expression_\n                                  («postfix_expression_[_]»\n                                   (postfix_expression_ (primary_expression_ `sqlite3Stat.nowValue))\n                                   \"[\"\n                                   («expression_,,»\n                                    [(assignment_expression_\n                                      (conditional_expression_\n                                       (logical_or_expression_\n                                        (logical_and_expression_\n                                         (inclusive_or_expression_\n                                          (exclusive_or_expression_\n                                           (and_expression_\n                                            (equality_expression_\n                                             (relational_expression_\n                                              (shift_expression_\n                                               (additive_expression_\n                                                (multiplicative_expression_\n                                                 (cast_expression_\n                                                  (unary_expression_\n                                                   (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                                   \"]\"))))))))))))))))])]\n                \";\")))\n             \"}\"))\n           []))\n         (statement_list__\n          (statement__2\n           («expression_statement_;»\n            [(«expression_,,»\n              [(assignment_expression_\n                (conditional_expression_\n                 (logical_or_expression_\n                  (logical_and_expression_\n                   (inclusive_or_expression_\n                    (exclusive_or_expression_\n                     (and_expression_\n                      (equality_expression_\n                       (relational_expression_\n                        (shift_expression_\n                         (additive_expression_\n                          (multiplicative_expression_\n                           (cast_expression_\n                            (unary_expression_\n                             («postfix_expression_(_)»\n                              (postfix_expression_ (primary_expression_ `sqlite3_mutex_leave))\n                              \"(\"\n                              («argument_expression_list_,,»\n                               [(assignment_expression_\n                                 (conditional_expression_\n                                  (logical_or_expression_\n                                   (logical_and_expression_\n                                    (inclusive_or_expression_\n                                     (exclusive_or_expression_\n                                      (and_expression_\n                                       (equality_expression_\n                                        (relational_expression_\n                                         (shift_expression_\n                                          (additive_expression_\n                                           (multiplicative_expression_\n                                            (cast_expression_\n                                             (unary_expression_\n                                              (postfix_expression_ (primary_expression_ `pMutex))))))))))))))))])\n                              \")\")))))))))))))))])]\n            \";\"))\n          (statement_list__\n           (statement__2\n            («expression_statement_;»\n             [(«expression_,,»\n               [(assignment_expression_\n                 (conditional_expression_\n                  (logical_or_expression_\n                   (logical_and_expression_\n                    (inclusive_or_expression_\n                     (exclusive_or_expression_\n                      (and_expression_\n                       (equality_expression_\n                        (relational_expression_\n                         (shift_expression_\n                          (additive_expression_\n                           (multiplicative_expression_\n                            («cast_expression(_)_»\n                             \"(\"\n                             (type_name__\n                              (specifier_qualifier_list_ (specifier_qualifier_ (type_specifierVoid \"void\")))\n                              [])\n                             \")\"\n                             (cast_expression_\n                              (unary_expression_ (postfix_expression_ (primary_expression_ `pMutex)))))))))))))))))])]\n             \";\"))\n           (statement_list_\n            (statement__5\n             («jump_statementReturn_;»\n              \"return\"\n              («expression_,,»\n               [(assignment_expression_\n                 (conditional_expression_\n                  (logical_or_expression_\n                   (logical_and_expression_\n                    (inclusive_or_expression_\n                     (exclusive_or_expression_\n                      (and_expression_\n                       (equality_expression_\n                        (relational_expression_\n                         (shift_expression_\n                          (additive_expression_\n                           (multiplicative_expression_\n                            (cast_expression_\n                             (unary_expression_\n                              (postfix_expression_\n                               (primary_expression__2\n                                (extended_num___ (num \"0\") [(arith_type_specs \"\")])))))))))))))))))])\n              \";\"))))))))))))\n  \"}\")\n («compound_statement{_}»\n  \"{\"\n  (statement_list__\n   (statement__2\n    («expression_statement_;»\n     [(«expression_,,»\n       [(assignment_expression_\n         (conditional_expression_\n          (logical_or_expression_\n           (logical_and_expression_\n            (inclusive_or_expression_\n             (exclusive_or_expression_\n              (and_expression_\n               (equality_expression_\n                (relational_expression_\n                 (shift_expression_\n                  (additive_expression_\n                   («multiplicative_expression_*_»\n                    (multiplicative_expression_\n                     (cast_expression_\n                      (unary_expression_\n                       (postfix_expression_ (primary_expression__1 (type_name_tokenSqlite3_mutex \"sqlite3_mutex\"))))))\n                    \"*\"\n                    (cast_expression_\n                     (unary_expression_ (postfix_expression_ (primary_expression_ `pMutex))))))))))))))))])]\n     \";\"))\n   (statement_list__\n    (statement__2 («expression_statement_;» [(«expression_,,» [])] \";\"))\n    (statement_list__\n     (statement__3\n      («selection_statementIf(_)_Else_»\n       \"if\"\n       \"(\"\n       («expression_,,»\n        [(assignment_expression_\n          (conditional_expression_\n           («logical_or_expression_||_»\n            (logical_or_expression_\n             (logical_and_expression_\n              (inclusive_or_expression_\n               (exclusive_or_expression_\n                (and_expression_\n                 (equality_expression_\n                  («relational_expression_\u003c_»\n                   (relational_expression_\n                    (shift_expression_\n                     (additive_expression_\n                      (multiplicative_expression_\n                       (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `op))))))))\n                   \"\u003c\"\n                   (shift_expression_\n                    (additive_expression_\n                     (multiplicative_expression_\n                      (cast_expression_\n                       (unary_expression_\n                        (postfix_expression_ (primary_expression__2 (extended_num___ (num \"0\") [])))))))))))))))\n            \"||\"\n            (logical_and_expression_\n             (inclusive_or_expression_\n              (exclusive_or_expression_\n               (and_expression_\n                (equality_expression_\n                 («relational_expression_\u003e=_»\n                  (relational_expression_\n                   (shift_expression_\n                    (additive_expression_\n                     (multiplicative_expression_\n                      (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `op))))))))\n                  \"\u003e=\"\n                  (shift_expression_\n                   (additive_expression_\n                    (multiplicative_expression_\n                     (cast_expression_\n                      (unary_expression_\n                       (postfix_expression_\n                        («primary_expression(_)»\n                         \"(\"\n                         («expression_,,»\n                          [(assignment_expression_\n                            (conditional_expression_\n                             (logical_or_expression_\n                              (logical_and_expression_\n                               (inclusive_or_expression_\n                                (exclusive_or_expression_\n                                 (and_expression_\n                                  (equality_expression_\n                                   (relational_expression_\n                                    (shift_expression_\n                                     (additive_expression_\n                                      (multiplicative_expression_\n                                       («cast_expression(_)_»\n                                        \"(\"\n                                        (type_name__\n                                         (specifier_qualifier_list_ (specifier_qualifier_ (type_specifierInt \"int\")))\n                                         [])\n                                        \")\"\n                                        (cast_expression_\n                                         (unary_expression_\n                                          (postfix_expression_\n                                           («primary_expression(_)»\n                                            \"(\"\n                                            («expression_,,»\n                                             [(assignment_expression_\n                                               (conditional_expression_\n                                                (logical_or_expression_\n                                                 (logical_and_expression_\n                                                  (inclusive_or_expression_\n                                                   (exclusive_or_expression_\n                                                    (and_expression_\n                                                     (equality_expression_\n                                                      (relational_expression_\n                                                       (shift_expression_\n                                                        (additive_expression_\n                                                         («multiplicative_expression_/_»\n                                                          (multiplicative_expression_\n                                                           (cast_expression_\n                                                            (unary_expressionSizeof_\n                                                             \"sizeof\"\n                                                             (unary_expression_\n                                                              (postfix_expression_\n                                                               («primary_expression(_)»\n                                                                \"(\"\n                                                                («expression_,,»\n                                                                 [(assignment_expression_\n                                                                   (conditional_expression_\n                                                                    (logical_or_expression_\n                                                                     (logical_and_expression_\n                                                                      (inclusive_or_expression_\n                                                                       (exclusive_or_expression_\n                                                                        (and_expression_\n                                                                         (equality_expression_\n                                                                          (relational_expression_\n                                                                           (shift_expression_\n                                                                            (additive_expression_\n                                                                             (multiplicative_expression_\n                                                                              (cast_expression_\n                                                                               (unary_expression_\n                                                                                (postfix_expression_\n                                                                                 (primary_expression_\n                                                                                  `sqlite3Stat.nowValue))))))))))))))))])\n                                                                \")\"))))))\n                                                          \"/\"\n                                                          (cast_expression_\n                                                           (unary_expressionSizeof_\n                                                            \"sizeof\"\n                                                            (unary_expression_\n                                                             (postfix_expression_\n                                                              («primary_expression(_)»\n                                                               \"(\"\n                                                               («expression_,,»\n                                                                [(assignment_expression_\n                                                                  (conditional_expression_\n                                                                   (logical_or_expression_\n                                                                    (logical_and_expression_\n                                                                     (inclusive_or_expression_\n                                                                      (exclusive_or_expression_\n                                                                       (and_expression_\n                                                                        (equality_expression_\n                                                                         (relational_expression_\n                                                                          (shift_expression_\n                                                                           (additive_expression_\n                                                                            (multiplicative_expression_\n                                                                             (cast_expression_\n                                                                              (unary_expression_\n                                                                               («postfix_expression_[_]»\n                                                                                (postfix_expression_\n                                                                                 (primary_expression_\n                                                                                  `sqlite3Stat.nowValue))\n                                                                                \"[\"\n                                                                                («expression_,,»\n                                                                                 [(assignment_expression_\n                                                                                   (conditional_expression_\n                                                                                    (logical_or_expression_\n                                                                                     (logical_and_expression_\n                                                                                      (inclusive_or_expression_\n                                                                                       (exclusive_or_expression_\n                                                                                        (and_expression_\n                                                                                         (equality_expression_\n                                                                                          (relational_expression_\n                                                                                           (shift_expression_\n                                                                                            (additive_expression_\n                                                                                             (multiplicative_expression_\n                                                                                              (cast_expression_\n                                                                                               (unary_expression_\n                                                                                                (postfix_expression_\n                                                                                                 (primary_expression__2\n                                                                                                  (extended_num___\n                                                                                                   (num \"0\")\n                                                                                                   [(arith_type_specs\n                                                                                                     \"\")])))))))))))))))))])\n                                                                                \"]\")))))))))))))))])\n                                                               \")\")))))))))))))))))])\n                                            \")\")))))))))))))))))])\n                         \")\"))))))))))))))))])\n       \")\"\n       (statement__1\n        («compound_statement{_}»\n         \"{\"\n         (statement_list_\n          (statement__5\n           («jump_statementReturn_;»\n            \"return\"\n            («expression_,,»\n             [(assignment_expression_\n               (conditional_expression_\n                (logical_or_expression_\n                 (logical_and_expression_\n                  (inclusive_or_expression_\n                   (exclusive_or_expression_\n                    (and_expression_\n                     (equality_expression_\n                      (relational_expression_\n                       (shift_expression_\n                        (additive_expression_\n                         (multiplicative_expression_\n                          (cast_expression_\n                           (unary_expression_\n                            («postfix_expression_(_)»\n                             (postfix_expression_ (primary_expression_ `sqlite3MisuseError))\n                             \"(\"\n                             («argument_expression_list_,,»\n                              [(assignment_expression_\n                                (conditional_expression_\n                                 (logical_or_expression_\n                                  (logical_and_expression_\n                                   (inclusive_or_expression_\n                                    (exclusive_or_expression_\n                                     (and_expression_\n                                      (equality_expression_\n                                       (relational_expression_\n                                        (shift_expression_\n                                         (additive_expression_\n                                          (multiplicative_expression_\n                                           (cast_expression_\n                                            (unary_expression_\n                                             (postfix_expression_\n                                              (primary_expression__2\n                                               (extended_num___ (num \"23373\") [(arith_type_specs \"\")])))))))))))))))))])\n                             \")\")))))))))))))))])\n            \";\")))\n         \"}\"))\n       []))\n     (statement_list__\n      (statement__2\n       («expression_statement_;»\n        [(«expression_,,»\n          [(assignment_expression___\n            (unary_expression_ (postfix_expression_ (primary_expression_ `pMutex)))\n            («assignment_operator=» \"=\")\n            (assignment_expression_\n             («conditional_expression_?_:_»\n              (logical_or_expression_\n               (logical_and_expression_\n                (inclusive_or_expression_\n                 (exclusive_or_expression_\n                  (and_expression_\n                   (equality_expression_\n                    (relational_expression_\n                     (shift_expression_\n                      (additive_expression_\n                       (multiplicative_expression_\n                        (cast_expression_\n                         (unary_expression_\n                          («postfix_expression_[_]»\n                           (postfix_expression_ (primary_expression_ `statMutex))\n                           \"[\"\n                           («expression_,,»\n                            [(assignment_expression_\n                              (conditional_expression_\n                               (logical_or_expression_\n                                (logical_and_expression_\n                                 (inclusive_or_expression_\n                                  (exclusive_or_expression_\n                                   (and_expression_\n                                    (equality_expression_\n                                     (relational_expression_\n                                      (shift_expression_\n                                       (additive_expression_\n                                        (multiplicative_expression_\n                                         (cast_expression_\n                                          (unary_expression_\n                                           (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                           \"]\")))))))))))))\n              \"?\"\n              («expression_,,»\n               [(assignment_expression_\n                 (conditional_expression_\n                  (logical_or_expression_\n                   (logical_and_expression_\n                    (inclusive_or_expression_\n                     (exclusive_or_expression_\n                      (and_expression_\n                       (equality_expression_\n                        (relational_expression_\n                         (shift_expression_\n                          (additive_expression_\n                           (multiplicative_expression_\n                            (cast_expression_\n                             (unary_expression_\n                              (choice\n                               («postfix_expression_(_)»\n                                (postfix_expression_ (primary_expression_ `sqlite3Pcache1Mutex))\n                                \"(\"\n                                («argument_expression_list_,,» [])\n                                \")\")\n                               («postfix_expression_()»\n                                (postfix_expression_ (primary_expression_ `sqlite3Pcache1Mutex))\n                                \"(\"\n                                \")\"))))))))))))))))])\n              \":\"\n              (conditional_expression_\n               (logical_or_expression_\n                (logical_and_expression_\n                 (inclusive_or_expression_\n                  (exclusive_or_expression_\n                   (and_expression_\n                    (equality_expression_\n                     (relational_expression_\n                      (shift_expression_\n                       (additive_expression_\n                        (multiplicative_expression_\n                         (cast_expression_\n                          (unary_expression_\n                           (choice\n                            («postfix_expression_(_)»\n                             (postfix_expression_ (primary_expression_ `sqlite3MallocMutex))\n                             \"(\"\n                             («argument_expression_list_,,» [])\n                             \")\")\n                            («postfix_expression_()»\n                             (postfix_expression_ (primary_expression_ `sqlite3MallocMutex))\n                             \"(\"\n                             \")\"))))))))))))))))))])]\n        \";\"))\n      (statement_list__\n       (statement__2\n        («expression_statement_;»\n         [(«expression_,,»\n           [(assignment_expression_\n             (conditional_expression_\n              (logical_or_expression_\n               (logical_and_expression_\n                (inclusive_or_expression_\n                 (exclusive_or_expression_\n                  (and_expression_\n                   (equality_expression_\n                    (relational_expression_\n                     (shift_expression_\n                      (additive_expression_\n                       (multiplicative_expression_\n                        (cast_expression_\n                         (unary_expression_\n                          («postfix_expression_(_)»\n                           (postfix_expression_ (primary_expression_ `sqlite3_mutex_enter))\n                           \"(\"\n                           («argument_expression_list_,,»\n                            [(assignment_expression_\n                              (conditional_expression_\n                               (logical_or_expression_\n                                (logical_and_expression_\n                                 (inclusive_or_expression_\n                                  (exclusive_or_expression_\n                                   (and_expression_\n                                    (equality_expression_\n                                     (relational_expression_\n                                      (shift_expression_\n                                       (additive_expression_\n                                        (multiplicative_expression_\n                                         (cast_expression_\n                                          (unary_expression_\n                                           (postfix_expression_ (primary_expression_ `pMutex))))))))))))))))])\n                           \")\")))))))))))))))])]\n         \";\"))\n       (statement_list__\n        (statement__2\n         («expression_statement_;»\n          [(«expression_,,»\n            [(assignment_expression___\n              (unary_expression___1\n               («unary_operator*» \"*\")\n               (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `pCurrent)))))\n              («assignment_operator=» \"=\")\n              (assignment_expression_\n               (conditional_expression_\n                (logical_or_expression_\n                 (logical_and_expression_\n                  (inclusive_or_expression_\n                   (exclusive_or_expression_\n                    (and_expression_\n                     (equality_expression_\n                      (relational_expression_\n                       (shift_expression_\n                        (additive_expression_\n                         (multiplicative_expression_\n                          (cast_expression_\n                           (unary_expression_\n                            («postfix_expression_[_]»\n                             (postfix_expression_ (primary_expression_ `sqlite3Stat.nowValue))\n                             \"[\"\n                             («expression_,,»\n                              [(assignment_expression_\n                                (conditional_expression_\n                                 (logical_or_expression_\n                                  (logical_and_expression_\n                                   (inclusive_or_expression_\n                                    (exclusive_or_expression_\n                                     (and_expression_\n                                      (equality_expression_\n                                       (relational_expression_\n                                        (shift_expression_\n                                         (additive_expression_\n                                          (multiplicative_expression_\n                                           (cast_expression_\n                                            (unary_expression_\n                                             (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                             \"]\"))))))))))))))))])]\n          \";\"))\n        (statement_list__\n         (statement__2\n          («expression_statement_;»\n           [(«expression_,,»\n             [(assignment_expression___\n               (unary_expression___1\n                («unary_operator*» \"*\")\n                (cast_expression_ (unary_expression_ (postfix_expression_ (primary_expression_ `pHighwater)))))\n               («assignment_operator=» \"=\")\n               (assignment_expression_\n                (conditional_expression_\n                 (logical_or_expression_\n                  (logical_and_expression_\n                   (inclusive_or_expression_\n                    (exclusive_or_expression_\n                     (and_expression_\n                      (equality_expression_\n                       (relational_expression_\n                        (shift_expression_\n                         (additive_expression_\n                          (multiplicative_expression_\n                           (cast_expression_\n                            (unary_expression_\n                             («postfix_expression_[_]»\n                              (postfix_expression_ (primary_expression_ `sqlite3Stat.mxValue))\n                              \"[\"\n                              («expression_,,»\n                               [(assignment_expression_\n                                 (conditional_expression_\n                                  (logical_or_expression_\n                                   (logical_and_expression_\n                                    (inclusive_or_expression_\n                                     (exclusive_or_expression_\n                                      (and_expression_\n                                       (equality_expression_\n                                        (relational_expression_\n                                         (shift_expression_\n                                          (additive_expression_\n                                           (multiplicative_expression_\n                                            (cast_expression_\n                                             (unary_expression_\n                                              (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                              \"]\"))))))))))))))))])]\n           \";\"))\n         (statement_list__\n          (statement__3\n           («selection_statementIf(_)_Else_»\n            \"if\"\n            \"(\"\n            («expression_,,»\n             [(assignment_expression_\n               (conditional_expression_\n                (logical_or_expression_\n                 (logical_and_expression_\n                  (inclusive_or_expression_\n                   (exclusive_or_expression_\n                    (and_expression_\n                     (equality_expression_\n                      (relational_expression_\n                       (shift_expression_\n                        (additive_expression_\n                         (multiplicative_expression_\n                          (cast_expression_\n                           (unary_expression_ (postfix_expression_ (primary_expression_ `resetFlag))))))))))))))))])\n            \")\"\n            (statement__1\n             («compound_statement{_}»\n              \"{\"\n              (statement_list_\n               (statement__2\n                («expression_statement_;»\n                 [(«expression_,,»\n                   [(assignment_expression___\n                     (unary_expression_\n                      («postfix_expression_[_]»\n                       (postfix_expression_ (primary_expression_ `sqlite3Stat.mxValue))\n                       \"[\"\n                       («expression_,,»\n                        [(assignment_expression_\n                          (conditional_expression_\n                           (logical_or_expression_\n                            (logical_and_expression_\n                             (inclusive_or_expression_\n                              (exclusive_or_expression_\n                               (and_expression_\n                                (equality_expression_\n                                 (relational_expression_\n                                  (shift_expression_\n                                   (additive_expression_\n                                    (multiplicative_expression_\n                                     (cast_expression_\n                                      (unary_expression_ (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                       \"]\"))\n                     («assignment_operator=» \"=\")\n                     (assignment_expression_\n                      (conditional_expression_\n                       (logical_or_expression_\n                        (logical_and_expression_\n                         (inclusive_or_expression_\n                          (exclusive_or_expression_\n                           (and_expression_\n                            (equality_expression_\n                             (relational_expression_\n                              (shift_expression_\n                               (additive_expression_\n                                (multiplicative_expression_\n                                 (cast_expression_\n                                  (unary_expression_\n                                   («postfix_expression_[_]»\n                                    (postfix_expression_ (primary_expression_ `sqlite3Stat.nowValue))\n                                    \"[\"\n                                    («expression_,,»\n                                     [(assignment_expression_\n                                       (conditional_expression_\n                                        (logical_or_expression_\n                                         (logical_and_expression_\n                                          (inclusive_or_expression_\n                                           (exclusive_or_expression_\n                                            (and_expression_\n                                             (equality_expression_\n                                              (relational_expression_\n                                               (shift_expression_\n                                                (additive_expression_\n                                                 (multiplicative_expression_\n                                                  (cast_expression_\n                                                   (unary_expression_\n                                                    (postfix_expression_ (primary_expression_ `op))))))))))))))))])\n                                    \"]\"))))))))))))))))])]\n                 \";\")))\n              \"}\"))\n            []))\n          (statement_list__\n           (statement__2\n            («expression_statement_;»\n             [(«expression_,,»\n               [(assignment_expression_\n                 (conditional_expression_\n                  (logical_or_expression_\n                   (logical_and_expression_\n                    (inclusive_or_expression_\n                     (exclusive_or_expression_\n                      (and_expression_\n                       (equality_expression_\n                        (relational_expression_\n                         (shift_expression_\n                          (additive_expression_\n                           (multiplicative_expression_\n                            (cast_expression_\n                             (unary_expression_\n                              («postfix_expression_(_)»\n                               (postfix_expression_ (primary_expression_ `sqlite3_mutex_leave))\n                               \"(\"\n                               («argument_expre","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencompl%2FC-parsing-for-Lean4","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopencompl%2FC-parsing-for-Lean4","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencompl%2FC-parsing-for-Lean4/lists"}