add bnf
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
{
|
||||
parserClass="ru.crabs.sjson.parser.SJsonParser"
|
||||
|
||||
extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
|
||||
|
||||
psiClassPrefix="SJson"
|
||||
psiImplClassSuffix="Impl"
|
||||
psiPackage="ru.crabs.sjson"
|
||||
psiImplPackage="ru.crabs.sjson.impl"
|
||||
|
||||
elementTypeHolderClass="ru.crabs.sjson.SJsonTypes"
|
||||
elementTypeClass="ru.crabs.sjson.SJsonElementType"
|
||||
tokenTypeClass="ru.crabs.sjson.SJsonTokenType"
|
||||
|
||||
tokens = [
|
||||
space='regexp:\s+'
|
||||
string = "regexp:\"[^$][^\"]*\""
|
||||
number = "regexp:\d*"
|
||||
]
|
||||
}
|
||||
|
||||
root ::= object
|
||||
|
||||
object ::= "{" (prop ",")* prop "}"
|
||||
array ::= "[" (item ",")* item "]"
|
||||
|
||||
prop ::= pair | mixin
|
||||
pair ::= string ":" item
|
||||
mixin ::= var ":" item
|
||||
|
||||
item ::= (object | array | var | string | number)
|
||||
var ::= "regexp:\"\$[^\"]*\""
|
||||
@@ -0,0 +1,13 @@
|
||||
package ru.crabs.sjson
|
||||
|
||||
import com.intellij.psi.tree.IElementType
|
||||
|
||||
|
||||
class SJsonTokenType(debugName: String) : IElementType(debugName, SJsonLanguage.INSTANCE) {
|
||||
|
||||
override fun toString(): String {
|
||||
return "SimpleTokenType." + super.toString();
|
||||
}
|
||||
}
|
||||
|
||||
class SJsonElementType(debugName: String) : IElementType(debugName, SJsonLanguage.INSTANCE)
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"@vars": {
|
||||
"varName": "value"
|
||||
},
|
||||
"@mixins": {
|
||||
"mixinNameObj": {
|
||||
"name": "title"
|
||||
},
|
||||
"mixinNameArr": [
|
||||
"title"
|
||||
]
|
||||
},
|
||||
"@template": {
|
||||
"test": [
|
||||
{
|
||||
"$mixin": "$mixinName"
|
||||
},
|
||||
"$varName",
|
||||
"$mixinNameArr"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user