[back]
start -> simple-decl-seq-opt [SimNode]
  simple-decl-seq-opt -> simple-decl-seq [SimNode]
    simple-decl-seq -> simple-decl-seq simple-decl [SimNode]
      simple-decl-seq -> simple-decl-seq simple-decl [SimNode]
        simple-decl-seq -> simple-decl [SimNode]
          simple-decl -> nested-decl SEMI [SimNode]
            nested-decl * -> nested-func-decl [SimNode]
              nested-func-decl -> func-decl > [SimNode]
                func-decl -> xBxx-decl-spec-seq pure-func-dcl [SimNode]
                  xBxx-decl-spec-seq -> bltn-type [SimNode]
                    bltn-type -> bltn-type-token [SimNode]
                      bltn-type-token -> INT [SimNode]
                        INT
                  pure-func-dcl -> func-dcl pure-opt [SimNode]
                    func-dcl -> func-b-direct-dcl [SimNode]
                      func-b-direct-dcl -> func-a-direct-dcl LPAREN param-decl-clause RPAREN cv-spec-seq-opt [SimNode]
                        func-a-direct-dcl -> obj-dcl-id [SimNode]
                          obj-dcl-id -> obj-id [SimNode]
                            obj-id -> name [SimNode]
                              name -> nested-name-opt IDENT [SimNode]
                                nested-name-opt -> [SimNode]
                                IDENT
                        LPAREN
                        param-decl-clause -> param-decl-list-opt ellipse-opt [SimNode]
                          param-decl-list-opt -> param-decl-list [SimNode]
                            param-decl-list -> param-init-decl [SimNode]
                              param-init-decl -> param-decl [SimNode]
                                param-decl -> xBxx-decl-spec-seq param-dcl [SimNode]
                                  xBxx-decl-spec-seq -> bltn-type [SimNode]
                                    bltn-type -> bltn-type-token [SimNode]
                                      bltn-type-token -> INT [SimNode]
                                        INT
                                  param-dcl -> param-a-dcl [SimNode]
                                    param-a-dcl -> param-a-direct-dcl [SimNode]
                                      param-a-direct-dcl -> obj-dcl-id [SimNode]
                                        obj-dcl-id -> obj-id [SimNode]
                                          obj-id -> name [SimNode]
                                            name -> nested-name-opt IDENT [SimNode]
                                              nested-name-opt -> [SimNode]
                                              IDENT
                          ellipse-opt -> [SimNode]
                        RPAREN
                        cv-spec-seq-opt -> [SimNode]
                    pure-opt -> pure [SimNode]
                      pure -> ASSIGN ZERO [SimNode]
                        ASSIGN
                        ZERO
            SEMI
        simple-decl -> nested-decl SEMI [SimNode]
          nested-decl * -> nested-func-decl [SimNode]
            nested-func-decl -> func-decl > [SimNode]
              func-decl -> pure-ctor-dcl > [SimNode]
                pure-ctor-dcl -> ctor-dcl pure-opt [SimNode]
                  ctor-dcl -> ctor-direct-dcl [SimNode]
                    ctor-direct-dcl -> ctor-dcl-id LPAREN param-decl-clause RPAREN cv-spec-seq-opt [SimNode]
                      ctor-dcl-id -> ctor-id [SimNode]
                        ctor-id -> ctor-name [SimNode]
                          ctor-name -> nested-name-opt IDENT [SimNode]
                            nested-name-opt -> nested-name [SimNode]
                              nested-name -> name DCOLON >! [SimNode]
                                name -> nested-name-opt IDENT [SimNode]
                                  nested-name-opt -> [SimNode]
                                  IDENT
                                DCOLON
                            IDENT
                      LPAREN
                      param-decl-clause -> param-decl-list-opt ellipse-opt [SimNode]
                        param-decl-list-opt -> [SimNode]
                        ellipse-opt -> [SimNode]
                      RPAREN
                      cv-spec-seq-opt -> [SimNode]
                  pure-opt -> [SimNode]
          SEMI
      simple-decl -> nested-decl SEMI [SimNode]
        nested-decl * -> nested-obj-init-decl [SimNode]
          nested-obj-init-decl -> nested-obj-decl obj-init-opt [SimNode]
            nested-obj-decl -> obj-decl > [SimNode]
              obj-decl -> xBxx-decl-spec-seq obj-dcl [SimNode]
                xBxx-decl-spec-seq -> bltn-type [SimNode]
                  bltn-type -> bltn-type-token [SimNode]
                    bltn-type-token -> INT [SimNode]
                      INT
                obj-dcl -> obj-a-dcl [SimNode]
                  obj-a-dcl -> obj-a-direct-dcl [SimNode]
                    obj-a-direct-dcl -> obj-dcl-id [SimNode]
                      obj-dcl-id -> obj-id [SimNode]
                        obj-id -> name [SimNode]
                          name -> nested-name-opt IDENT [SimNode]
                            nested-name-opt -> [SimNode]
                            IDENT
            obj-init-opt -> obj-init [SimNode]
              obj-init -> LPAREN expr-list RPAREN [SimNode]
                LPAREN
                expr-list -> expr [SimNode]
                  expr -> name [SimNode]
                    name -> nested-name-opt IDENT [SimNode]
                      nested-name-opt -> [SimNode]
                      IDENT
                RPAREN
        SEMI
[back]