Skip to content

Commit

Permalink
Improve syntax highlighting with new USDHighlighterLexer
Browse files Browse the repository at this point in the history
  • Loading branch information
justint committed May 24, 2019
1 parent 8f136e1 commit 63b504e
Show file tree
Hide file tree
Showing 19 changed files with 2,790 additions and 633 deletions.
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
.idea/
out/
#gen/
build/
.gradle/
jflex/
.DS_Store
Thumbs.db
src/test/
testData/
1,887 changes: 1,887 additions & 0 deletions src/main/gen/com/justint/usdidea/lang/lexer/USDHighlighterLexer.java

Large diffs are not rendered by default.

1,111 changes: 555 additions & 556 deletions src/main/gen/com/justint/usdidea/lang/lexer/USDLexer.java

Large diffs are not rendered by default.

21 changes: 16 additions & 5 deletions src/main/gen/com/justint/usdidea/lang/parser/USDParser.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/main/gen/com/justint/usdidea/lang/psi/USDTypes.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions src/main/gen/com/justint/usdidea/lang/psi/usdMetadataKey.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions src/main/gen/com/justint/usdidea/lang/psi/usdPrimSpec.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/main/gen/com/justint/usdidea/lang/psi/usdVisitor.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.containers.ContainerUtil;
import com.justint.usdidea.lang.lexer.USDHighlighterLexerAdapter;
import com.justint.usdidea.lang.lexer.USDLexerAdapter;
import com.justint.usdidea.lang.parser.USDParserDefinition;
import org.jetbrains.annotations.NotNull;
Expand All @@ -27,61 +28,28 @@ public class USDSyntaxHighlighter extends SyntaxHighlighterBase {
public static final TextAttributesKey COMMENT =
createTextAttributesKey("COMMENT", DefaultLanguageHighlighterColors.LINE_COMMENT);

//
// // TextAttributesKey arrays
// private static final TextAttributesKey[] CONSTANTS = new TextAttributesKey[] {USD_DECLARATION};
// private static final TextAttributesKey[] IDENTIFIERS = new TextAttributesKey[]{
// createTextAttributesKey("ALPHA", DefaultLanguageHighlighterColors.IDENTIFIER)
// };
// private static final TextAttributesKey[] INSTANCE_FIELDS = new TextAttributesKey[]{
// createTextAttributesKey("ATTRIBUTE_NAME", DefaultLanguageHighlighterColors.INSTANCE_FIELD),
// createTextAttributesKey("PRIM_NAME", DefaultLanguageHighlighterColors.INSTANCE_FIELD)
// };
// private static final TextAttributesKey[] KEYWORDS = new TextAttributesKey[]{
// createTextAttributesKey("ADD", DefaultLanguageHighlighterColors.KEYWORD),
// createTextAttributesKey("ALPHA", DefaultLanguageHighlighterColors.KEYWORD),
// createTextAttributesKey("APPEND", DefaultLanguageHighlighterColors.KEYWORD),
// createTextAttributesKey("CLASS", DefaultLanguageHighlighterColors.KEYWORD),
// createTextAttributesKey("DEF", DefaultLanguageHighlighterColors.KEYWORD),
// createTextAttributesKey("DELETE", DefaultLanguageHighlighterColors.KEYWORD),
// createTextAttributesKey("OVER", DefaultLanguageHighlighterColors.KEYWORD),
// createTextAttributesKey("PREPEND", DefaultLanguageHighlighterColors.KEYWORD),
//
// };
// private static final TextAttributesKey[] BAD_CHAR_KEYS = new TextAttributesKey[]{BAD_CHARACTER};
// private static final TextAttributesKey[] COMMENT_KEYS = new TextAttributesKey[]{COMMENT};
// private static final TextAttributesKey[] EMPTY_KEYS = new TextAttributesKey[0];
//
// private static final IElementType[] USD_KEYWORDS = {
// USDTypes.ADD,
// USDTypes.ALPHA,
// USDTypes.APPEND,
// USDTypes.CLASS,
// USDTypes.DEF,
// USDTypes.DELETE,
// USDTypes.OVER,
// USDTypes.PREPEND
// };

private static final Map<IElementType, TextAttributesKey> ATTRIBUTES = ContainerUtil.newHashMap();

static {
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.USDDECLARATION, DefaultLanguageHighlighterColors.CONSTANT);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.BRACKETS, DefaultLanguageHighlighterColors.BRACKETS);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.KEYWORDS, DefaultLanguageHighlighterColors.KEYWORD);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.SPECIAL_KEYWORDS, DefaultLanguageHighlighterColors.STATIC_FIELD);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.STRINGS, DefaultLanguageHighlighterColors.STRING);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.NUMBERS, DefaultLanguageHighlighterColors.NUMBER);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.LINE_COMMENTS, DefaultLanguageHighlighterColors.LINE_COMMENT);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.BLOCK_COMMENTS, DefaultLanguageHighlighterColors.BLOCK_COMMENT);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.IDENTIFIERS, DefaultLanguageHighlighterColors.IDENTIFIER);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.PRIM_NAMES, DefaultLanguageHighlighterColors.FUNCTION_DECLARATION);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.ASSETREFERENCES, USDHighlighterColors.ASSETREFERENCE_KEY);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.PATHREFERENCES, USDHighlighterColors.PATHREFERENCE_KEY);
SyntaxHighlighterBase.fillMap(ATTRIBUTES, USDParserDefinition.METADATA_KEYS, DefaultLanguageHighlighterColors.INSTANCE_FIELD);
}

@NotNull
@Override
public Lexer getHighlightingLexer() {
return new USDLexerAdapter();
return new USDHighlighterLexerAdapter();
}

@NotNull
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/com/justint/usdidea/lang/USD.bnf
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
psiImplClassSuffix="Impl"
psiPackage="com.justint.usdidea.lang.psi"
psiImplPackage="com.justint.usdidea.lang.psi.impl"
psiImplUtilClass="com.justint.usdidea.lang.psi.impl.USDPsiImplUtil"

elementTypeHolderClass="com.justint.usdidea.lang.psi.USDTypes"
elementTypeClass="com.justint.usdidea.lang.psi.USDElementType"
Expand Down Expand Up @@ -173,7 +174,7 @@ Identifier ::= alpha (alpha | number)*
NamespacedIdentifier ::= Identifier (colon Identifier)+


PrimSpec ::= Specifier Metadata? Body
PrimSpec ::= Specifier Metadata? Body {methods=[getPrimName getPrimType getName getPresentation]}

Specifier ::= def [Typename] PrimName | over PrimName | class [Typename] PrimName

Expand Down Expand Up @@ -218,7 +219,9 @@ Metadata ::= leftparens (!rightparens ( MetadataComment | [ListEditAction? Metad
ListEditAction ::= add | append | prepend | delete


MetadataKey ::= Identifier | CompositionArc | doc | variantSet | kind | variants
MetadataKey ::= Identifier | CompositionArc | SpecialMetadataKey

SpecialMetadataKey ::= doc | variantSet | kind | variants

MetadataValue ::= Item

Expand Down

0 comments on commit 63b504e

Please sign in to comment.