-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcase_sensitive
95 lines (89 loc) · 7.36 KB
/
case_sensitive
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
{
parserClass="com.exopacket.aloft.language.AloftParser"
extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
psiClassPrefix="Aloft"
psiImplClassSuffix="Impl"
psiPackage="com.exopacket.aloft.psi"
psiImplPackage="com.exopacket.aloft.psi.impl"
elementTypeHolderClass="com.exopacket.aloft.psi.AloftTypes"
elementTypeClass="com.exopacket.aloft.psi.AloftElementType"
tokenTypeClass="com.exopacket.aloft.psi.AloftTokenType"
}
root_unit ::= syntax*
syntax ::= OPT_WHITESPACE? BUILTIN_KEYWORDS OPT_WHITESPACE?
BUILTIN_KEYWORDS ::= SWITCH_BLOCK | IF_DECLARATION | LOOP_DECLARATION | FUNCTIONS | QUERY_DECLARATION | CLASS_DECLARATION | CONSTRUCTOR_DECLARATION | SOURCE_DECLARATION | COMPONENT_DECLARATION | ELEMENT_DECLARATION | MODEL_DECLARATION | THEME_DECLARATION | CALLABLE_DECLARATION | PAGE_DECLARATION | ANIMATION_DECLARATION | MODULE_DECLARATION | VARIABLE_DECLARATION | CONDITIONAL | COMMENT_BLOCK_DECLARATION
CLASS_DECLARATION ::= CLASS_KEYWORD NAMED OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
CLASS_KEYWORD ::= "regexp:(class)"
COMPONENT_DECLARATION ::= COMPONENT_KEYWORD NAMED OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
COMPONENT_KEYWORD ::= "regexp:(component)"
ELEMENT_DECLARATION ::= ELEMENT_KEYWORD NAMED OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
ELEMENT_KEYWORD ::= "regexp:(element)"
THEME_DECLARATION ::= THEME_KEYWORD NAMED OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
THEME_KEYWORD ::= "regexp:(theme)"
MODEL_DECLARATION ::= MODEL_KEYWORD NAMED OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
MODEL_KEYWORD ::= "regexp:(model)"
PAGE_DECLARATION ::= PAGE_KEYWORD PATH_STRING OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
PAGE_KEYWORD ::= "regexp:(page)"
ANIMATION_DECLARATION ::= ANIMATION_KEYWORD NAMED OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
ANIMATION_KEYWORD ::= "regexp:(animation)"
MODULE_DECLARATION ::= MODULE_KEYWORD NAMED OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
MODULE_KEYWORD ::= "regexp:(module)"
QUERY_DECLARATION ::= QUERY_KEYWORD NAMED? (NAMED_WITH_PARAMS_SPECIAL | EMPTY_PARENTHESIS) CURLY_BLOCK STATEMENT_END
QUERY_KEYWORD ::= "regexp:(query)"
SOURCE_DECLARATION ::= SOURCE_KEYWORD PATH_STRING OPT_WHITESPACE? STATEMENT_END
SOURCE_KEYWORD ::= "regexp:(source)"
CALLABLE_DECLARATION ::= CALLABLE_KEYWORD PATH_STRING OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
CALLABLE_KEYWORD ::= "regexp:(callable)"
CONSTRUCTOR_DECLARATION ::= CONSTRUCTOR_KEYWORD OPT_WHITESPACE? CURLY_BLOCK STATEMENT_END
CONSTRUCTOR_KEYWORD ::= "regexp:(create)"
ISSET_KEYWORD ::= "regexp:(!)?(isset)"
IF_DECLARATION ::= "regexp:(if)" "("? EXPRESSION+ ")"? CURLY_BLOCK (((("regexp:(elseif)" | "regexp:(else if)")) "("? EXPRESSION+ ")"? CURLY_BLOCK) | ("regexp:(else)" CURLY_BLOCK))*
LOOP_DECLARATION ::= "regexp:(repeat)" ((("regexp:(through)" NAMED "regexp:(as)" NAMED) | ("regexp:(until)" "("? EXPRESSION+ ")"? ("regexp:(from)" NUMBERS)?) | ("regexp:(while)" "("? EXPRESSION+ ")"?))) CURLY_BLOCK
SWITCH_BLOCK ::= "regexp:(switch)" NAMED_PARENTHESIS_SWITCH SWITCH_CURLY_BLOCK
SWITCH_CURLY_BLOCK ::= ("regexp:\{(\s+)?") ((("regexp:(case)(\s+)((\d+)|([\"'])([^\"'])*([\"'])|null):") | ("regexp:(default):" ) | "regexp:(break);")* | ((syntax | (((GOTO_DECLARATION | PATH_STRING | IF_DECLARATION | LOOP_DECLARATION | NUMBERS | PROPERTY | NAMED_VAR | NULL_VALUE | CURLY_OBJECT_BLOCK | BRACES_ARRAY_BLOCK) (","))*)? (PATH_STRING | NUMBERS | PROPERTY | NAMED_VAR | NULL_VALUE | BRACES_ARRAY_BLOCK)))* ("regexp:(\s+)?\}"))
VARIABLE_DECLARATION ::= VARIABLE VARIABLE_OPTIONS? (SEPARATOR EXPRESSION+)? STATEMENT_END
VARIABLE ::= ("*")? ("::"? ((NAMED_PARENTHESIS | NAMED_VAR) ","?))
VARIABLE_OPTIONS ::= VAR_TYPES | VAR_OPTIONS | VAR_TYPES VAR_OPTIONS
VAR_OPTIONS ::= "get" | "set" | "none"
FUNCTIONS ::= (FUNCTION_TYPES "[]"? | NAMED_CLASS_ARRAY)? FUNCTION NAMED_WITH_PARAMS CURLY_BLOCK STATEMENT_END
FUNCTION ::= ("::"? (NAMED_PARENTHESIS_FUNCTIONS | NAMED))
FUNCTION_TYPES::= TYPES | "regexp:(update)" | "regexp:(void)"
VAR_TYPES ::= TYPES | "regexp:(function)" | "regexp:((time)(\([\"'])([^\"'])*([\"']\))?)" | NAMED
TYPES ::= "regexp:(string)" | "regexp:(integer)" | "regexp:(int)" | "regexp:(decimal)" | "regexp:(bool)" | "regexp:(boolean)" | "regexp:(dynamic)"
CURLY_BLOCK ::= ("regexp:\{(\s+)?") ("regexp:(continue);" | "regexp:(break);" | syntax | ((((GOTO_DECLARATION | IF_DECLARATION | LOOP_DECLARATION | NUMBERS | PROPERTY | PATH_STRING | NAMED_VAR | NULL_VALUE | CURLY_OBJECT_BLOCK | BRACES_ARRAY_BLOCK) (","))*)? (NUMBERS | PROPERTY | PATH_STRING | NAMED_VAR | NULL_VALUE | BRACES_ARRAY_BLOCK)))* ("regexp:(\s+)?\}")
NAMED_WITH_PARAMS ::= NAMED_WITH_PARAMS_SPECIAL | EMPTY_PARENTHESIS
NAMED_WITH_PARAMS_SPECIAL ::= "(" ((NAMED (("," "...args")?)) | ((("," NAMED)+) (("," "...args")?))) ")"
NAMED_WITH_PARAMS_VAR ::= ("(" (NAMED_VAR ","?)+ ("..." NAMED) ")")
CONDITIONAL ::= EXPRESSION+ "?" EXPRESSION* ":" EXPRESSION* STATEMENT_END
EXPRESSION ::= ISSET_KEYWORD | SEPARATOR | NULL_VALUE | BRACES_ARRAY_BLOCK | (("!")? NAMED_VAR) | PATH_STRING | NUMBERS | "." | "&&" | "||" | "==" | "*" | "+" | "-" | "/" | "%" | "<" | ">" | "<=" | ">=" | "===" | "+=" | "-=" | "/=" | "*=" | "%=" | "(" | ")" | " "
BRACES_ARRAY_BLOCK ::= ("regexp:\[(\s+)?") (((NUMBERS | PATH_STRING | NAMED_VAR | NULL_VALUE | CURLY_OBJECT_BLOCK | BRACES_ARRAY_BLOCK) (","))*)? (NUMBERS | PATH_STRING | NAMED_VAR | NULL_VALUE | BRACES_ARRAY_BLOCK)? ("regexp:(\s+)?\]")
CURLY_OBJECT_BLOCK ::= ("regexp:\{(\s+)?") (((NUMBERS | PROPERTY | PATH_STRING | NAMED_VAR | NULL_VALUE | CURLY_OBJECT_BLOCK | BRACES_ARRAY_BLOCK) (","))*)? (NUMBERS | PROPERTY | PATH_STRING | NAMED_VAR | NULL_VALUE | BRACES_ARRAY_BLOCK)? ("regexp:(\s+)?\}")
PROPERTY ::= NAMED_PROPERTY PROPERTY_VALUES STATEMENT_END
NAMED_PROPERTY ::= ("regexp:(([a-zA-Z_](([a-zA-Z0-9_-]+))+)?[a-zA-Z_0-9]?):")
NAMED_PROPERTY_OBJECT ::= NAMED "(" (((PROPERTY) (PROPERTY_VALUES)?) ","?)+ ")"
PROPERTY_VALUES ::= NAMED_PROPERTY_OBJECT | NAMED_PROPERTY | HTML_ELEMENT | NAMED | NAMED_DOT | NAMED_VAR | NUMBERS | PATH_STRING | NULL_VALUE | BRACES_ARRAY_BLOCK
NUMBERS ::= "regexp:\d+"
HTML_ELEMENT ::= "regexp:#([a-zA-Z0-9_-]+)"
NULL_VALUE ::= "regexp:(null)"
EMPTY_PARENTHESIS ::= "(" ")"
NAMED_PARENTHESIS ::= NAMED_PARENTHESIS_SPECIAL | NAMED_PARENTHESIS_VAR
NAMED_PARENTHESIS_SPECIAL ::= "(" (NAMED ","?)+ ")"
NAMED_PARENTHESIS_FUNCTIONS ::= "(" NAMED ")"
NAMED_PARENTHESIS_SWITCH ::= "(" NAMED_VAR ")"
NAMED_PARENTHESIS_VAR ::= "(" (NAMED_VAR ","?)+ ")"
NAMED_VAR ::= NAMED | NAMED_OBJECT_ARRAY | NAMED_ARRAY | NAMED_OBJECT
NAMED ::= ("regexp:(((\+\+)|(--))?)([a-zA-Z_])((([a-zA-Z0-9_-])*([a-zA-Z_0-9]))?)(((\+\+)|(--))?)")
NAMED_DOT ::= ("regexp:(((\+\+)|(--))?)([a-zA-Z_])((([a-zA-Z0-9_-]*)([a-zA-Z_0-9]))?)\.(((\+\+)|(--))?)([a-zA-Z_])((([a-zA-Z0-9_-]+)([a-zA-Z_0-9]))?)")+
NAMED_CLASS_ARRAY ::= ("regexp:([a-zA-Z_])((([a-zA-Z0-9_-]*)([a-zA-Z_0-9]))?)(\[\])?")
NAMED_OBJECT ::= ("regexp:([a-zA-Z_])((([a-zA-Z0-9_-]*)([a-zA-Z_0-9]))?)(\-\>)")
NAMED_OBJECT_ARRAY ::= ("regexp:(((\+\+)|(--))?)([a-zA-Z_])((([a-zA-Z0-9_-]*)([a-zA-Z_0-9]))?)(((\+\+)|(--))?)(\[(\d+)\]\-\>)")
NAMED_ARRAY ::= ("regexp:(((\+\+)|(--))?)([a-zA-Z_])((([a-zA-Z0-9_-]*)([a-zA-Z_0-9]))?)(\[(\d+)\])(((\+\+)|(--))?)")
GOTO_DECLARATION ::= GOTO_KEYWORD PATH_STRING STATEMENT_END
GOTO_KEYWORD ::= "regexp:(goto)"
PATH_STRING ::= QUOTED_STRING | (("^")? "regexp:[a-zA-Z\\/._0-9-]+")
QUOTED_STRING ::= "regexp:([\"'])([^\"'])*([\"'])"
STATEMENT_END ::= ";" | CRLF
SEPARATOR ::= "regexp:((\\ )+)?\=((\\ )+)?"
OPT_WHITESPACE ::= "regexp:[\\ \n\t\r\f]+"
COMMENT_BLOCK_DECLARATION ::= "/*" "regexp:[^/\*]*(\*/)"
CRLF ::= ('\r\n'*)?