Skip to content

Commit dbf71bf

Browse files
committed
feat: support grammar more
1 parent d2bab06 commit dbf71bf

File tree

4 files changed

+32
-10
lines changed

4 files changed

+32
-10
lines changed

src/main/kotlin/com/github/xepozz/toon/language/ToonAnnotator.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ class ToonAnnotator : Annotator {
2020
}
2121

2222
is ToonValue -> {
23-
holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
24-
.range(element.textRange)
25-
.textAttributes(VALUE_HIGHLIGHT)
26-
.create()
23+
// holder.newSilentAnnotation(HighlightSeverity.INFORMATION)
24+
// .range(element.textRange)
25+
// .textAttributes(VALUE_HIGHLIGHT)
26+
// .create()
2727
}
2828
}
2929
}

src/main/kotlin/com/github/xepozz/toon/language/ToonSyntaxHighlighter.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ToonSyntaxHighlighter : SyntaxHighlighterBase() {
1313
override fun getHighlightingLexer() = ToonLexerAdapter()
1414

1515
override fun getTokenHighlights(tokenType: IElementType) = when (tokenType) {
16+
ToonTypes.TEXT -> STRING_KEYS
1617
ToonTypes.NUMBER -> NUMBER_KEYS
1718
ToonTypes.TRUE -> CONSTANT_KEYS
1819
ToonTypes.FALSE -> CONSTANT_KEYS
@@ -36,6 +37,9 @@ class ToonSyntaxHighlighter : SyntaxHighlighterBase() {
3637
private val NUMBER_KEYS = arrayOf(
3738
DefaultLanguageHighlighterColors.NUMBER
3839
)
40+
private val STRING_KEYS = arrayOf(
41+
DefaultLanguageHighlighterColors.STRING
42+
)
3943
private val EMPTY_KEYS = emptyArray<TextAttributesKey>()
4044
}
4145
}

src/main/kotlin/com/github/xepozz/toon/language/parser/Toon.bnf

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,37 @@
2121

2222
file ::= entry*
2323

24-
private entry ::= table | keyValueList | COMMENT | EOL
24+
private entry ::= table | keyValueMap | COMMENT | EOL
2525

26-
table ::= tableDefinition DELIMITER iterable?
26+
table ::= tableDefinition DELIMITER (iterable | EOL array)
27+
{
28+
pin=2
29+
}
30+
31+
tableDefinition ::= key LBRACKET '#'? NUMBER RBRACKET (LBRACE iterable RBRACE)?
32+
{
33+
pin=2
34+
}
2735

28-
tableDefinition ::= key LBRACKET NUMBER RBRACKET (LBRACE iterable RBRACE)?
36+
array ::= keyValueArray+ | keyValueMap+ | valuesList
2937

30-
keyValueList ::= key DELIMITER iterable?
38+
valuesList ::= iterable (EOL iterable)*
39+
40+
keyValueArray ::= keyValueArrayItem (EOL keyValueArrayItem)*
41+
42+
keyValueArrayItem ::= DASH (keyValueMap | iterable)
3143
{
3244
pin=1
3345
}
3446

47+
keyValueMap ::= key DELIMITER (iterable | EOL array)
48+
{
49+
pin=2
50+
}
51+
3552
key ::= TEXT
3653

37-
iterable ::= value (COMMA value)+
54+
iterable ::= value (COMMA value)*
3855

3956
value ::= TEXT | NULL | FALSE | TRUE | NUMBER
4057
{

src/main/kotlin/com/github/xepozz/toon/language/parser/Toon.flex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ NUMBER=[\d]+(.[\d]+)?
2525

2626
<YYINITIAL> {
2727
#[^\n]* { return ToonTypes.COMMENT; }
28-
([\w-]+) { return ToonTypes.TEXT; }
28+
([\w]+) { return ToonTypes.TEXT; }
2929
":" { yybegin(VALUE); return ToonTypes.DELIMITER; }
3030
"[" { yybegin(TABLE_SIZE); return ToonTypes.LBRACKET; }
3131
}
@@ -54,5 +54,6 @@ NUMBER=[\d]+(.[\d]+)?
5454
")" { return ToonTypes.RPAREN; }
5555
"[" { return ToonTypes.LBRACKET; }
5656
"]" { return ToonTypes.RBRACKET; }
57+
"-" { return ToonTypes.DASH; }
5758
{WHITESPACE} { return TokenType.WHITE_SPACE; }
5859
{NEWLINE} { yybegin(YYINITIAL); return ToonTypes.EOL; }

0 commit comments

Comments
 (0)