test_class.file: watertemplate-engine/src/test/java/org/watertemplate/interpreter/parser/LexerTest.java
test_class.identifier: LexerTest
test_case.body: @Test
      public void validTexts() {
          assertEquals(1, lex("a").size());
          assertEquals(1, lex("ab").size());
          assertEquals(3, lex("a b").size());
          assertEquals(3, lex("a\nb").size());
          assertEquals(3, lex("a\tb").size());
          assertEquals(3, lex("a\t\nb").size());
      }
test_case.class_method_signature: LexerTest.validTexts()
test_case.full_signature: @Test public void validTexts()
test_case.identifier: validTexts
test_case.invocations: assertEquals size lex assertEquals size lex assertEquals size lex assertEquals size lex assertEquals size lex assertEquals size lex
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void validTexts()
focal_class.declarator: BUFFER_SIZE = 8192
focal_class.modifier: private static final
focal_class.original_string: private static final int BUFFER_SIZE = 8192;
focal_class.type: int
focal_class.var_name: BUFFER_SIZE
focal_class.declarator: buffer = new char[BUFFER_SIZE]
focal_class.modifier: private final
focal_class.original_string: private final char[] buffer = new char[BUFFER_SIZE];
focal_class.type: char[]
focal_class.var_name: buffer
focal_class.declarator: previousCandidates = new ArrayList<>()
focal_class.modifier: private
focal_class.original_string: private List<Terminal> previousCandidates = new ArrayList<>();
focal_class.type: List<Terminal>
focal_class.var_name: previousCandidates
focal_class.file: watertemplate-engine/src/main/java/org/watertemplate/interpreter/parser/Lexer.java
focal_class.identifier: Lexer
focal_class.class_method_signature: Lexer.lex(final InputStream stream)
focal_class.full_signature: public List<Token> lex(final InputStream stream)
focal_class.identifier: lex
focal_class.modifiers: public
focal_class.parameters: (final InputStream stream)
focal_class.return: List<Token>
focal_class.signature: List<Token> lex(final InputStream stream)
focal_class.class_method_signature: Lexer.tokenize(final BufferedReader bufferedReader)
focal_class.full_signature: private List<Token> tokenize(final BufferedReader bufferedReader)
focal_class.identifier: tokenize
focal_class.modifiers: private
focal_class.parameters: (final BufferedReader bufferedReader)
focal_class.return: List<Token>
focal_class.signature: List<Token> tokenize(final BufferedReader bufferedReader)
focal_class.class_method_signature: Lexer.process(final StringBuilder accumulator, final List<Token> tokens, int i, char c)
focal_class.full_signature: private int process(final StringBuilder accumulator, final List<Token> tokens, int i, char c)
focal_class.identifier: process
focal_class.modifiers: private
focal_class.parameters: (final StringBuilder accumulator, final List<Token> tokens, int i, char c)
focal_class.return: int
focal_class.signature: int process(final StringBuilder accumulator, final List<Token> tokens, int i, char c)
focal_class.class_method_signature: Lexer.tryToAcceptFrom(final String previous, final String current)
focal_class.full_signature: private Token tryToAcceptFrom(final String previous, final String current)
focal_class.identifier: tryToAcceptFrom
focal_class.modifiers: private
focal_class.parameters: (final String previous, final String current)
focal_class.return: Token
focal_class.signature: Token tryToAcceptFrom(final String previous, final String current)
focal_class.class_method_signature: Lexer.acceptFrom(final String string)
focal_class.full_signature: private Token acceptFrom(final String string)
focal_class.identifier: acceptFrom
focal_class.modifiers: private
focal_class.parameters: (final String string)
focal_class.return: Token
focal_class.signature: Token acceptFrom(final String string)
focal_class.class_method_signature: Lexer.containsOnly(final Terminal terminal, final List<Terminal> list)
focal_class.full_signature: private Boolean containsOnly(final Terminal terminal, final List<Terminal> list)
focal_class.identifier: containsOnly
focal_class.modifiers: private
focal_class.parameters: (final Terminal terminal, final List<Terminal> list)
focal_class.return: Boolean
focal_class.signature: Boolean containsOnly(final Terminal terminal, final List<Terminal> list)
focal_class.class_method_signature: Lexer.tokenize(String input)
focal_class.full_signature:  List<Token> tokenize(String input)
focal_class.identifier: tokenize
focal_class.parameters: (String input)
focal_class.return: List<Token>
focal_class.signature: List<Token> tokenize(String input)
focal_method.body: public List<Token> lex(final InputStream stream) {
  
          try (final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream))) {
  
              List<Token> tokens = tokenize(bufferedReader);
              tokens.add(Token.END_OF_INPUT);
              return tokens;
  
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }
focal_method.class_method_signature: Lexer.lex(final InputStream stream)
focal_method.full_signature: public List<Token> lex(final InputStream stream)
focal_method.identifier: lex
focal_method.invocations: tokenize add
focal_method.modifiers: public
focal_method.parameters: (final InputStream stream)
focal_method.return: List<Token>
focal_method.signature: List<Token> lex(final InputStream stream)