-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuil_to_js.bnft
81 lines (58 loc) · 1.35 KB
/
uil_to_js.bnft
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
ANY_CHAR:
"\0x0000".."\0xFFFF"
ALPHA:
"a".."z"
"A".."Z"
DIGIT:
"0".."9"
WHITESPACE:
" " { WHITESPACE }
"\t" { WHITESPACE }
OPTWHITESPACE:
{ WHITESPACE }
NEWLINE:
"\r" [ OPTWHITESPACE NEWLINE ]
"\n" [ OPTWHITESPACE NEWLINE ]
OPTNEWLINE:
[ NEWLINE ]
OPTLINEEND:
OPTWHITESPACE OPTNEWLINE
SEPARATOR:
NEWLINE
WHITESPACE
OPTSEPARATOR:
{ SEPARATOR }
SAFE:
"$" | "-" | "_" | "@" | "." | "&" | ":"
EXTRA:
"!" | "*" | "'" | "|" | "," | "(" | ")" | "/"
ESCAPE:
"%" HEX HEX
ESCAPEDECODE:
ESCAPE { ESCAPE } -> #decodeuri ESCAPE
HEX:
DIGIT
"a".."f"
"A".."F"
XALPHA:
ALPHA | DIGIT | SAFE | EXTRA | ESCAPE
XALPHADECODE:
ALPHA | DIGIT | SAFE | EXTRA | ESCAPEDECODE
URI:
XALPHA { XALPHA }
TEXT_CHAR:
" "
XALPHA
NEWLINE -> ""
BLOCK_INSIDE:
BLOCK
{ TEXT_CHAR } -> "target._in_text(\"" TEXT_CHAR "\");\n"
VALUE:
URI
PARAMETERS:
URI OPTWHITESPACE "=" VALUE -> "\"" URI "\":\"" VALUE "\","
BLOCK:
"{" URI { WHITESPACE PARAMETERS } OPTWHITESPACE "}" OPTLINEEND -> "target._in_class_begin(\"" URI "\",{" PARAMETERS "});\ntarget._in_class_end();\n"
"{" URI { WHITESPACE PARAMETERS } OPTLINEEND { OPTWHITESPACE BLOCK_INSIDE } "}" OPTLINEEND -> "target._in_class_begin(\"" URI "\",{" PARAMETERS "});\n" BLOCK_INSIDE "target._in_class_end();\n"
PROGRAM:
BLOCK -> "target._in_begin();\n" BLOCK "target._in_end();\n"