Method: Parser::Parser#parse

Defined in:
lib/parser/parser.rb

#parseArray<Parser::Comment>

Recursivly parses the given input and thereby ignores strings and regular- expressions.

Returns:



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/parser/parser.rb', line 112

def parse()
  @scanner.skip /\s/
  @scanner.skip_until /#{M_START}|#{S_START}|#{NON_COMMENT_PATTERNS.keys.join('|')}|$/
  
  found = @scanner.matched
  
  if found.match M_START
    parse_comment_until(M_END)
    
  elsif found.match S_START
    parse_comment_until(S_END)
    
  else
    matched_pattern = NON_COMMENT_PATTERNS.detect do |start_pattern, end_pattern|    
      found.match start_pattern
    end       
    @scanner.skip_escaping_until matched_pattern.last unless matched_pattern.nil?    
  end
  
  if @scanner.eos?
    return @comments
  else
    parse
  end
end