rbelly 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|