SyntaxTable (@NotNull Element root) { SyntaxTable table = new SyntaxTable(); for (Element element : root.getChildren()) { if (ELEMENT_OPTIONS.equals(element.getName())) { for (final Element e : element.getChildren(ELEMENT_OPTION)) { String name = e.getAttributeValue(ATTRIBUTE_NAME); String value = e.getAttributeValue(ATTRIBUTE_VALUE); if (VALUE_LINE_COMMENT.equals(name)) { table.setLineComment(value); } else if (VALUE_COMMENT_START.equals(name)) { table.setStartComment(value); } else if (VALUE_COMMENT_END.equals(name)) { table.setEndComment(value); } else if (VALUE_HEX_PREFIX.equals(name)) { table.setHexPrefix(value); } else if (VALUE_NUM_POSTFIXES.equals(name)) { table.setNumPostfixChars(value); } else if (VALUE_LINE_COMMENT_AT_START.equals(name)) { table.lineCommentOnlyAtStart = Boolean.parseBoolean(value); } else if (VALUE_HAS_BRACES.equals(name)) { table.setHasBraces(Boolean.parseBoolean(value)); } else if (VALUE_HAS_BRACKETS.equals(name)) { table.setHasBrackets(Boolean.parseBoolean(value)); } else if (VALUE_HAS_PARENS.equals(name)) { table.setHasParens(Boolean.parseBoolean(value)); } else if (VALUE_HAS_STRING_ESCAPES.equals(name)) { table.setHasStringEscapes(Boolean.parseBoolean(value)); } } } else if (ELEMENT_KEYWORDS.equals(element.getName())) { boolean ignoreCase = Boolean.parseBoolean(element.getAttributeValue(ATTRIBUTE_IGNORE_CASE)); table.setIgnoreCase(ignoreCase); loadKeywords(element, table.getKeywords1()); } else if (ELEMENT_KEYWORDS2.equals(element.getName())) { loadKeywords(element, table.getKeywords2()); } else if (ELEMENT_KEYWORDS3.equals(element.getName())) { loadKeywords(element, table.getKeywords3()); } else if (ELEMENT_KEYWORDS4.equals(element.getName())) { loadKeywords(element, table.getKeywords4()); } } return table; }