List<TokenParser> (SyntaxTable table, boolean forHighlighting) { final NumberParser numberParser = new NumberParser(table.getNumPostfixChars(), table.isIgnoreCase()); final HexNumberParser hexNumberParser = HexNumberParser.create(table.getHexPrefix()); final KeywordParser parser = table.getKeywordParser(); final TokenParser keywordParser = new TokenParser() { @Override public boolean hasToken(int position) { return parser.hasToken(position, myBuffer, myTokenInfo); } }; final IdentifierParser identifierParser = new IdentifierParser(parser); final QuotedStringParser quotedStringParser = new QuotedStringParser("\"", CustomHighlighterTokenType.STRING, table.isHasStringEscapes()); final QuotedStringParser quotedStringParser2 = new QuotedStringParser( "'", forHighlighting ? CustomHighlighterTokenType.SINGLE_QUOTED_STRING:CustomHighlighterTokenType.STRING, table.isHasStringEscapes() ); ArrayList<TokenParser> tokenParsers = new ArrayList<>(); tokenParsers.add(new WhitespaceParser()); tokenParsers.add(new CommentParser(table)); tokenParsers.add(keywordParser); tokenParsers.add(quotedStringParser); tokenParsers.add(quotedStringParser2); tokenParsers.add(new PunctuationParser()); if (hexNumberParser != null) { tokenParsers.add(hexNumberParser); } tokenParsers.add(numberParser); tokenParsers.add(identifierParser); if (table.isHasBraces()) { tokenParsers.addAll(BraceTokenParser.getBraces()); } if (table.isHasParens()) { tokenParsers.addAll(BraceTokenParser.getParens()); } if (table.isHasBrackets()) { tokenParsers.addAll(BraceTokenParser.getBrackets()); } return tokenParsers; }