grammars/stil.rb in origen_stil-0.2.1 vs grammars/stil.rb in origen_stil-0.3.0
- old
+ new
@@ -252,11 +252,11 @@
module SigrefExpr1
def s1
elements[1]
end
- def sigref_expression
+ def expression_subset
elements[2]
end
def s2
elements[3]
@@ -309,11 +309,11 @@
s3 << r4
if r4
r5 = _nt_s
s3 << r5
if r5
- r6 = _nt_sigref_expression
+ r6 = _nt_expression_subset
s3 << r6
if r6
r7 = _nt_s
s3 << r7
if r7
@@ -350,178 +350,118 @@
node_cache[:sigref_expr][start_index] = r0
r0
end
- def _nt_expression
+ def _nt_expression_subset
start_index = index
- if node_cache[:expression].has_key?(index)
- cached = node_cache[:expression][index]
+ if node_cache[:expression_subset].has_key?(index)
+ cached = node_cache[:expression_subset][index]
if cached
- node_cache[:expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
+ node_cache[:expression_subset][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
@index = cached.interval.end
end
return cached
end
i0 = index
- r1 = _nt_sigref_expression
+ r1 = _nt_add
if r1
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
r0 = r1
else
- r2 = _nt_time_expression
+ r2 = _nt_subtract
if r2
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
r0 = r2
else
- @index = i0
- r0 = nil
- end
- end
-
- node_cache[:expression][start_index] = r0
-
- r0
- end
-
- def _nt_sigref_expression
- start_index = index
- if node_cache[:sigref_expression].has_key?(index)
- cached = node_cache[:sigref_expression][index]
- if cached
- node_cache[:sigref_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
- @index = cached.interval.end
- end
- return cached
- end
-
- s0, i0 = [], index
- loop do
- i1 = index
- r2 = _nt_add
- if r2
- r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
- r1 = r2
- else
- r3 = _nt_subtract
+ r3 = _nt_name
if r3
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
- r1 = r3
+ r0 = r3
else
- r4 = _nt_name
+ r4 = _nt_paren_expression
if r4
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
- r1 = r4
+ r0 = r4
else
- r5 = _nt_paren_expression
- if r5
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
- r1 = r5
- else
- @index = i1
- r1 = nil
- end
+ @index = i0
+ r0 = nil
end
end
end
- if r1
- s0 << r1
- else
- break
- end
end
- if s0.empty?
- @index = i0
- r0 = nil
- else
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
- end
- node_cache[:sigref_expression][start_index] = r0
+ node_cache[:expression_subset][start_index] = r0
r0
end
- def _nt_time_expression
+ def _nt_expression
start_index = index
- if node_cache[:time_expression].has_key?(index)
- cached = node_cache[:time_expression][index]
+ if node_cache[:expression].has_key?(index)
+ cached = node_cache[:expression][index]
if cached
- node_cache[:time_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
+ node_cache[:expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
@index = cached.interval.end
end
return cached
end
- s0, i0 = [], index
- loop do
- i1 = index
- r2 = _nt_add
+ i0 = index
+ r1 = _nt_add
+ if r1
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
+ r0 = r1
+ else
+ r2 = _nt_subtract
if r2
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
- r1 = r2
+ r0 = r2
else
- r3 = _nt_subtract
+ r3 = _nt_multiply
if r3
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
- r1 = r3
+ r0 = r3
else
- r4 = _nt_multiply
+ r4 = _nt_divide
if r4
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
- r1 = r4
+ r0 = r4
else
- r5 = _nt_divide
+ r5 = _nt_number_with_unit
if r5
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
- r1 = r5
+ r0 = r5
else
- r6 = _nt_number_with_unit
+ r6 = _nt_number
if r6
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
- r1 = r6
+ r0 = r6
else
- r7 = _nt_number
+ r7 = _nt_name
if r7
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
- r1 = r7
+ r0 = r7
else
- r8 = _nt_name
+ r8 = _nt_paren_expression
if r8
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
- r1 = r8
+ r0 = r8
else
- r9 = _nt_paren_expression
- if r9
- r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
- r1 = r9
- else
- @index = i1
- r1 = nil
- end
+ @index = i0
+ r0 = nil
end
end
end
end
end
end
end
- if r1
- s0 << r1
- else
- break
- end
end
- if s0.empty?
- @index = i0
- r0 = nil
- else
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
- end
- node_cache[:time_expression][start_index] = r0
+ node_cache[:expression][start_index] = r0
r0
end
def _nt_terminal
@@ -944,11 +884,11 @@
module TimeExpr0
def s1
elements[1]
end
- def time_expression
+ def expression
elements[2]
end
def s2
elements[3]
@@ -984,11 +924,11 @@
s0 << r1
if r1
r2 = _nt_s
s0 << r2
if r2
- r3 = _nt_time_expression
+ r3 = _nt_expression
s0 << r3
if r3
r4 = _nt_s
s0 << r4
if r4
@@ -7952,11 +7892,11 @@
end
end
module Name2
def to_ast
- text_value
+ n :name, text_value
end
end
def _nt_name
start_index = index
@@ -9030,10 +8970,20 @@
def signed_integer2
elements[4]
end
end
+ module Number3
+ def to_ast
+ if text_value.to_f == text_value.to_i
+ text_value.to_i
+ else
+ text_value.to_f
+ end
+ end
+ end
+
def _nt_number
start_index = index
if node_cache[:number].has_key?(index)
cached = node_cache[:number][index]
if cached
@@ -9046,10 +8996,12 @@
i0 = index
r1 = _nt_signed_integer
if r1
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
r0 = r1
+ r0.extend(Number3)
+ r0.extend(Number3)
else
i2, s2 = index, []
r3 = _nt_signed_integer
s2 << r3
if r3
@@ -9074,10 +9026,12 @@
r2 = nil
end
if r2
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
r0 = r2
+ r0.extend(Number3)
+ r0.extend(Number3)
else
i6, s6 = index, []
r7 = _nt_signed_integer
s6 << r7
if r7
@@ -9102,10 +9056,12 @@
r6 = nil
end
if r6
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
r0 = r6
+ r0.extend(Number3)
+ r0.extend(Number3)
else
i10, s10 = index, []
r11 = _nt_signed_integer
s10 << r11
if r11
@@ -9144,9 +9100,11 @@
r10 = nil
end
if r10
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
r0 = r10
+ r0.extend(Number3)
+ r0.extend(Number3)
else
@index = i0
r0 = nil
end
end