ra_ap_syntax 0.0.4

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
      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
            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
            L_CURLY@39..40 "{"
            R_CURLY@40..41 "}"
          WHITESPACE@41..42 " "
          ELSE_KW@42..46 "else"
          WHITESPACE@46..47 " "
          BLOCK_EXPR@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
            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
              L_CURLY@80..81 "{"
              R_CURLY@81..82 "}"
            WHITESPACE@82..83 " "
            ELSE_KW@83..87 "else"
            WHITESPACE@87..88 " "
            BLOCK_EXPR@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
            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
              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
            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
            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"