rbelly 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +4 -0
- data/lib/parser.y +8 -0
- data/lib/rbelly/generated_parser.rb +1595 -1573
- data/lib/rbelly/nodes.rb +3 -0
- data/lib/rbelly/tokenizer.rb +8 -1
- data/lib/rbelly/visitors/dot_visitor.rb +1 -1
- data/lib/rbelly/visitors/ecma_visitor.rb +4 -0
- data/lib/rbelly/visitors/evaluation_visitor.rb +4 -0
- data/lib/rbelly/visitors/function_visitor.rb +1 -1
- data/lib/rbelly/visitors/sexp_visitor.rb +4 -0
- data/lib/rbelly/visitors/visitor.rb +1 -1
- metadata +1 -1
data/lib/rbelly/nodes.rb
CHANGED
data/lib/rbelly/tokenizer.rb
CHANGED
@@ -10,6 +10,10 @@ module RBelly
|
|
10
10
|
const true false null debugger
|
11
11
|
}
|
12
12
|
|
13
|
+
BELLEJS_KEYWORDS = %w{
|
14
|
+
import
|
15
|
+
}
|
16
|
+
|
13
17
|
RESERVED = %w{
|
14
18
|
abstract boolean byte char class double enum export extends
|
15
19
|
final float goto implements import int interface long native package
|
@@ -61,6 +65,9 @@ module RBelly
|
|
61
65
|
token(:COMMENT, /\A\/(?:\*(?:.)*?\*\/|\/[^\n]*)/m)
|
62
66
|
token(:STRING, /\A"(?:[^"\\]*(?:\\.[^"\\]*)*)"|\A'(?:[^'\\]*(?:\\.[^'\\]*)*)'/m)
|
63
67
|
|
68
|
+
# Combine Bellejs and regular javascript keywords
|
69
|
+
all_keywords = KEYWORDS + BELLEJS_KEYWORDS
|
70
|
+
|
64
71
|
# A regexp to match floating point literals (but not integer literals).
|
65
72
|
token(:NUMBER, /\A\d+\.\d*(?:[eE][-+]?\d+)?|\A\d+(?:\.\d*)?[eE][-+]?\d+|\A\.\d+(?:[eE][-+]?\d+)?/m) do |type, value|
|
66
73
|
value.gsub!(/\.(\D)/, '.0\1') if value =~ /\.\w/
|
@@ -81,7 +88,7 @@ module RBelly
|
|
81
88
|
end
|
82
89
|
|
83
90
|
token(:RAW_IDENT, /\A([_\$A-Za-z][_\$0-9A-Za-z]*)/) do |type,value|
|
84
|
-
if
|
91
|
+
if all_keywords.include?(value)
|
85
92
|
[value.upcase.to_sym, value]
|
86
93
|
elsif RESERVED.include?(value)
|
87
94
|
[:RESERVED, value]
|
@@ -46,7 +46,7 @@ module RBelly
|
|
46
46
|
%w{
|
47
47
|
AssignExprNode BitwiseNotNode BlockNode DeleteNode ElementNode
|
48
48
|
ExpressionStatementNode FunctionBodyNode LogicalNotNode ReturnNode
|
49
|
-
ThrowNode TypeOfNode UnaryMinusNode UnaryPlusNode VoidNode
|
49
|
+
ThrowNode TypeOfNode UnaryMinusNode UnaryPlusNode VoidNode ImportNode
|
50
50
|
}.each do |type|
|
51
51
|
define_method(:"visit_#{type}") do |o|
|
52
52
|
node = Node.new(@node_index += 1, [type])
|
@@ -36,7 +36,7 @@ module RBelly
|
|
36
36
|
SetterPropertyNode StrictEqualNode StringNode
|
37
37
|
SubtractNode SwitchNode ThisNode ThrowNode TrueNode TryNode TypeOfNode
|
38
38
|
UnaryMinusNode UnaryPlusNode UnsignedRightShiftNode VarDeclNode
|
39
|
-
VarStatementNode VoidNode WhileNode WithNode
|
39
|
+
VarStatementNode VoidNode WhileNode WithNode ImportNode
|
40
40
|
}.each do |type|
|
41
41
|
define_method(:"visit_#{type}") do |o|
|
42
42
|
end
|
@@ -7,7 +7,7 @@ module RBelly
|
|
7
7
|
}
|
8
8
|
SINGLE_VALUE_NODES = %w{
|
9
9
|
Parenthetical AssignExpr BitwiseNot Block Delete Element ExpressionStatement
|
10
|
-
FunctionBody LogicalNot Return Throw TypeOf UnaryMinus UnaryPlus Void
|
10
|
+
FunctionBody LogicalNot Return Throw TypeOf UnaryMinus UnaryPlus Void Import
|
11
11
|
}
|
12
12
|
BINARY_NODES = %w{
|
13
13
|
Add BitAnd BitOr BitXOr CaseClause Comma Divide DoWhile Equal Greater
|