ra_ap_syntax 0.0.80

Comment and whitespace preserving parser for the Rust language
Documentation
SOURCE_FILE@0..137
  FN@0..136
    FN_KW@0..2 "fn"
    WHITESPACE@2..3 " "
    NAME@3..6
      IDENT@3..6 "foo"
    PARAM_LIST@6..8
      L_PAREN@6..7 "("
      R_PAREN@7..8 ")"
    WHITESPACE@8..9 " "
    BLOCK_EXPR@9..136
      STMT_LIST@9..136
        L_CURLY@9..10 "{"
        WHITESPACE@10..15 "\n    "
        EXPR_STMT@15..26
          IF_EXPR@15..25
            IF_KW@15..17 "if"
            WHITESPACE@17..18 " "
            CONDITION@18..22
              LITERAL@18..22
                TRUE_KW@18..22 "true"
            WHITESPACE@22..23 " "
            BLOCK_EXPR@23..25
              STMT_LIST@23..25
                L_CURLY@23..24 "{"
                R_CURLY@24..25 "}"
          SEMICOLON@25..26 ";"
        WHITESPACE@26..31 "\n    "
        EXPR_STMT@31..50
          IF_EXPR@31..49
            IF_KW@31..33 "if"
            WHITESPACE@33..34 " "
            CONDITION@34..38
              LITERAL@34..38
                TRUE_KW@34..38 "true"
            WHITESPACE@38..39 " "
            BLOCK_EXPR@39..41
              STMT_LIST@39..41
                L_CURLY@39..40 "{"
                R_CURLY@40..41 "}"
            WHITESPACE@41..42 " "
            ELSE_KW@42..46 "else"
            WHITESPACE@46..47 " "
            BLOCK_EXPR@47..49
              STMT_LIST@47..49
                L_CURLY@47..48 "{"
                R_CURLY@48..49 "}"
          SEMICOLON@49..50 ";"
        WHITESPACE@50..55 "\n    "
        EXPR_STMT@55..91
          IF_EXPR@55..90
            IF_KW@55..57 "if"
            WHITESPACE@57..58 " "
            CONDITION@58..62
              LITERAL@58..62
                TRUE_KW@58..62 "true"
            WHITESPACE@62..63 " "
            BLOCK_EXPR@63..65
              STMT_LIST@63..65
                L_CURLY@63..64 "{"
                R_CURLY@64..65 "}"
            WHITESPACE@65..66 " "
            ELSE_KW@66..70 "else"
            WHITESPACE@70..71 " "
            IF_EXPR@71..90
              IF_KW@71..73 "if"
              WHITESPACE@73..74 " "
              CONDITION@74..79
                LITERAL@74..79
                  FALSE_KW@74..79 "false"
              WHITESPACE@79..80 " "
              BLOCK_EXPR@80..82
                STMT_LIST@80..82
                  L_CURLY@80..81 "{"
                  R_CURLY@81..82 "}"
              WHITESPACE@82..83 " "
              ELSE_KW@83..87 "else"
              WHITESPACE@87..88 " "
              BLOCK_EXPR@88..90
                STMT_LIST@88..90
                  L_CURLY@88..89 "{"
                  R_CURLY@89..90 "}"
          SEMICOLON@90..91 ";"
        WHITESPACE@91..96 "\n    "
        EXPR_STMT@96..104
          IF_EXPR@96..103
            IF_KW@96..98 "if"
            WHITESPACE@98..99 " "
            CONDITION@99..100
              PATH_EXPR@99..100
                PATH@99..100
                  PATH_SEGMENT@99..100
                    NAME_REF@99..100
                      IDENT@99..100 "S"
            WHITESPACE@100..101 " "
            BLOCK_EXPR@101..103
              STMT_LIST@101..103
                L_CURLY@101..102 "{"
                R_CURLY@102..103 "}"
          SEMICOLON@103..104 ";"
        WHITESPACE@104..109 "\n    "
        EXPR_STMT@109..134
          IF_EXPR@109..133
            IF_KW@109..111 "if"
            WHITESPACE@111..112 " "
            CONDITION@112..120
              BLOCK_EXPR@112..120
                STMT_LIST@112..120
                  L_CURLY@112..113 "{"
                  WHITESPACE@113..114 " "
                  LITERAL@114..118
                    TRUE_KW@114..118 "true"
                  WHITESPACE@118..119 " "
                  R_CURLY@119..120 "}"
            WHITESPACE@120..121 " "
            BLOCK_EXPR@121..124
              STMT_LIST@121..124
                L_CURLY@121..122 "{"
                WHITESPACE@122..123 " "
                R_CURLY@123..124 "}"
            WHITESPACE@124..125 " "
            ELSE_KW@125..129 "else"
            WHITESPACE@129..130 " "
            BLOCK_EXPR@130..133
              STMT_LIST@130..133
                L_CURLY@130..131 "{"
                WHITESPACE@131..132 " "
                R_CURLY@132..133 "}"
          SEMICOLON@133..134 ";"
        WHITESPACE@134..135 "\n"
        R_CURLY@135..136 "}"
  WHITESPACE@136..137 "\n"