diff --git a/VMXTemplate.pm b/VMXTemplate.pm
index a638c4e..d29bff2 100644
--- a/VMXTemplate.pm
+++ b/VMXTemplate.pm
@@ -32,8 +32,9 @@ use strict;
use Digest::MD5 qw(md5_hex);
use POSIX;
+use VMXTemplate::Utils;
use VMXTemplate::Options;
-use VMXTemplate::Compiler;
+use VMXTemplate::Parser;
# Version of code classes, saved into compiled files
use constant CODE_VERSION => 4;
@@ -97,7 +98,7 @@ sub vars
sub parse
{
my ($self, $fn, $vars) = @_;
- return $self->parse_real($fn, undef, '_main', $vars);
+ return $self->parse_real($fn, undef, undef, $vars);
}
# Call named block/function from a template
@@ -112,7 +113,7 @@ sub exec_from
sub parse_inline
{
my ($self, $code, $vars) = @_;
- return $self->parse_real(undef, $_[1], '_main', $vars);
+ return $self->parse_real(undef, $_[1], undef, $vars);
}
# Call function from a string parsed as a template
@@ -141,7 +142,7 @@ sub parse_real
# Load code
if ($filename)
{
- $filename = $self->{root}.$filename if $filename !~ m!^/!so;
+ $filename = $self->{options}->{root}.$filename if $filename !~ m!^/!so;
unless ($text = $self->loadfile($filename))
{
$self->{options}->error("couldn't load template file '$filename'");
@@ -178,14 +179,19 @@ sub _run
my ($code, $is_outer, $function, $filename, $vars) = @_;
$function ||= ':main';
my $str = $code->{$function};
+ if (!defined $str)
+ {
+ $self->{options}->error("template function '$function' not found in '".($filename || 'inline template')."'");
+ return $is_outer ? $self->{options}->get_errors : '';
+ }
# a template function is just a constant if not a coderef
- if (ref $str eq 'CODE')
+ elsif (ref $str eq 'CODE')
{
local $self->{tpldata} = $vars if $vars;
$str = eval { &$str($self) };
if ($@)
{
- $self->{options}->error("error running '".($filename || 'inline template').'::'."$function': $@");
+ $self->{options}->error("error running function '$function' from '".($filename || 'inline template')."': $@");
return $is_outer ? $self->{options}->get_errors : '';
}
}
@@ -296,7 +302,7 @@ sub compile
# call Compiler
$self->{options}->{input_filename} = $fn;
- $self->{compiler} ||= VMXTemplate::Compiler->new($self->{options});
+ $self->{compiler} ||= VMXTemplate::Parser->new($self->{options});
$code = $self->{compiler}->compile($code);
# write compiled code to file
@@ -319,7 +325,7 @@ sub compile
$self->{compiled_code}->{$key} = eval $code;
if ($@)
{
- $self->error("error compiling '$fn': [$@] in CODE:\n$code");
+ $self->{options}->error("error compiling '$fn': [$@] in CODE:\n$code");
return ();
}
diff --git a/VMXTemplate/Compiler.pm b/VMXTemplate/Compiler.pm
index 4e693c9..cf8ac6e 100644
--- a/VMXTemplate/Compiler.pm
+++ b/VMXTemplate/Compiler.pm
@@ -233,6 +233,7 @@ sub compile_function
sub fmop
{
my $op = shift;
+ my $self = shift;
return "((" . join(") $op (", @_) . "))";
}
diff --git a/VMXTemplate/Lexer.pm b/VMXTemplate/Lexer.pm
index 70cd035..dab7bad 100644
--- a/VMXTemplate/Lexer.pm
+++ b/VMXTemplate/Lexer.pm
@@ -106,7 +106,7 @@ sub read_token
{
my $r;
my $code_pos = index($self->{code}, $self->{options}->{begin_code});
- my $subst_pos = index($self->{code}, $self->{options}->{begin_subst});
+ my $subst_pos = $self->{options}->{begin_subst} ne '' ? index($self->{code}, $self->{options}->{begin_subst}) : -1;
if ($code_pos == -1 && $subst_pos == -1)
{
# No more directives
diff --git a/VMXTemplate/Options.pm b/VMXTemplate/Options.pm
index fced8e1..93d7e39 100644
--- a/VMXTemplate/Options.pm
+++ b/VMXTemplate/Options.pm
@@ -77,7 +77,7 @@ sub get_errors
{
return '
'.
'VMXTemplate errors:
- '.
- join('
- ', map \&html_pbr, @{$self->{errors}}).
+ join('
- ', map { html_pbr($_) } @{$self->{errors}}).
'
';
}
return '';
diff --git a/VMXTemplate/Parser.pm b/VMXTemplate/Parser.pm
index 95b71d1..79c6f97 100644
--- a/VMXTemplate/Parser.pm
+++ b/VMXTemplate/Parser.pm
@@ -27,1471 +27,1500 @@ sub new
{#State 0
DEFAULT => -2,
GOTOS => {
- 'chunks' => 2,
- 'template' => 1
+ 'chunks' => 1,
+ 'template' => 2
}
},
{#State 1
ACTIONS => {
- '' => 3
+ '' => -1,
+ 'literal' => 3,
+ "{{" => 5,
+ 'error' => 4,
+ "" => 69
+ }
},
{#State 24
DEFAULT => -9
},
{#State 25
- DEFAULT => -10
+ DEFAULT => -8
},
{#State 26
- DEFAULT => -29
+ ACTIONS => {
+ "-->" => 70,
+ "=" => 71
+ }
},
{#State 27
- DEFAULT => -25
+ DEFAULT => -29
},
{#State 28
ACTIONS => {
- 'name' => 71
- },
- GOTOS => {
- 'varref' => 70
+ 'name' => 72
}
},
{#State 29
ACTIONS => {
- "-->" => 73,
- "=" => 72
- }
- },
- {#State 30
- ACTIONS => {
- "!" => 20,
- 'name' => 19,
- 'literal' => 18,
- "-" => 12,
- "NOT" => 11,
- "{" => 10,
- "(" => 16
- },
- GOTOS => {
- 'p11' => 14,
- 'p10' => 13,
- 'nonbrace' => 9,
- 'exp' => 74,
- 'varref' => 15
- }
- },
- {#State 31
- DEFAULT => -26
- },
- {#State 32
- ACTIONS => {
- "-->" => 75
- }
- },
- {#State 33
- DEFAULT => -27
- },
- {#State 34
- ACTIONS => {
- ">=" => 60,
- "&&" => 62,
- ".." => 61,
- "OR" => 63,
- "%" => 58,
- "&" => 59,
- "AND" => 65,
- "!=" => 64,
- "||" => 53,
- "+" => 49,
- "<" => 48,
- "/" => 47,
- "XOR" => 51,
- "-" => 50,
- ">" => 52,
- "*" => 55,
- "<=" => 57,
- "==" => 54
+ ".." => 39,
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "||" => 51,
+ "&" => 52,
+ "/" => 53,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
},
DEFAULT => -12
},
- {#State 35
+ {#State 30
ACTIONS => {
- 'name' => 71
+ 'name' => 74
},
GOTOS => {
- 'varref' => 76
+ 'varref' => 73
}
},
+ {#State 31
+ ACTIONS => {
+ 'name' => 74
+ },
+ GOTOS => {
+ 'varref' => 75
+ }
+ },
+ {#State 32
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 76,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
+ },
+ {#State 33
+ DEFAULT => -28
+ },
+ {#State 34
+ DEFAULT => -11
+ },
+ {#State 35
+ DEFAULT => -10
+ },
{#State 36
- DEFAULT => -8
+ DEFAULT => -25
},
{#State 37
- ACTIONS => {
- "}" => 77
- }
+ DEFAULT => -53
},
{#State 38
ACTIONS => {
- "AND" => 65,
- "!=" => 64,
- "OR" => 63,
- ".." => 61,
- "&&" => 62,
- ">=" => 60,
- "&" => 59,
- "%" => 58,
- "<=" => 57,
- "*" => 55,
- "==" => 54,
- "," => 79,
- "||" => 53,
- "-" => 50,
- ">" => 52,
- "XOR" => 51,
- "=>" => 78,
- "<" => 48,
- "+" => 49,
- "/" => 47
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 77,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 39
- DEFAULT => -76
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 78,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
},
{#State 40
ACTIONS => {
- "," => 80
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
- DEFAULT => -70
+ GOTOS => {
+ 'exp' => 79,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
},
{#State 41
- DEFAULT => -57
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 80,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
},
{#State 42
- DEFAULT => -53
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 81,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
},
{#State 43
ACTIONS => {
- "!" => 20,
- 'name' => 19,
- 'literal' => 18,
- "-" => 12,
- "(" => 16,
- "{" => 10,
- "NOT" => 11
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p10' => 13,
- 'p11' => 14,
- 'varref' => 15,
- 'exp' => 81,
- 'nonbrace' => 9
+ 'exp' => 82,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 44
ACTIONS => {
- 'name' => 82
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 83,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 45
- DEFAULT => -79
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 84,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
},
{#State 46
- ACTIONS => {
- "!=" => 64,
- "AND" => 65,
- "%" => 58,
- "&" => 59,
- "&&" => 62,
- ">=" => 60,
- ".." => 61,
- "OR" => 63,
- "==" => 54,
- ")" => 83,
- "*" => 55,
- "<=" => 57,
- "/" => 47,
- "<" => 48,
- "+" => 49,
- ">" => 52,
- "XOR" => 51,
- "-" => 50,
- "||" => 53
- }
+ DEFAULT => -6
},
{#State 47
ACTIONS => {
- "(" => 16,
- "NOT" => 11,
- "{" => 10,
- "-" => 12,
- 'literal' => 18,
- 'name' => 19,
- "!" => 20
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p11' => 14,
- 'p10' => 13,
- 'varref' => 15,
- 'exp' => 84,
- 'nonbrace' => 9
+ 'exp' => 85,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 48
ACTIONS => {
- "-" => 12,
- "(" => 16,
- "NOT" => 11,
- "{" => 10,
- "!" => 20,
- 'name' => 19,
- 'literal' => 18
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p11' => 14,
- 'p10' => 13,
- 'nonbrace' => 9,
- 'exp' => 85,
- 'varref' => 15
+ 'exp' => 86,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 49
ACTIONS => {
- "!" => 20,
- 'literal' => 18,
- 'name' => 19,
- "-" => 12,
- "NOT" => 11,
- "{" => 10,
- "(" => 16
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'nonbrace' => 9,
- 'exp' => 86,
- 'varref' => 15,
- 'p11' => 14,
- 'p10' => 13
+ 'exp' => 87,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 50
ACTIONS => {
- 'name' => 19,
- 'literal' => 18,
- "!" => 20,
- "(" => 16,
- "NOT" => 11,
- "{" => 10,
- "-" => 12
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p11' => 14,
- 'p10' => 13,
- 'exp' => 87,
- 'nonbrace' => 9,
- 'varref' => 15
+ 'exp' => 88,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 51
ACTIONS => {
- "-" => 12,
- "{" => 10,
- "NOT" => 11,
- "(" => 16,
- "!" => 20,
- 'literal' => 18,
- 'name' => 19
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'varref' => 15,
- 'exp' => 88,
- 'nonbrace' => 9,
- 'p11' => 14,
- 'p10' => 13
+ 'exp' => 89,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 52
ACTIONS => {
- "(" => 16,
- "{" => 10,
- "NOT" => 11,
- "-" => 12,
- 'name' => 19,
- 'literal' => 18,
- "!" => 20
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p11' => 14,
- 'p10' => 13,
- 'exp' => 89,
- 'nonbrace' => 9,
- 'varref' => 15
+ 'exp' => 90,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 53
ACTIONS => {
- "{" => 10,
- "NOT" => 11,
- "(" => 16,
- "-" => 12,
- 'name' => 19,
- 'literal' => 18,
- "!" => 20
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p10' => 13,
- 'p11' => 14,
- 'nonbrace' => 9,
- 'exp' => 90,
- 'varref' => 15
+ 'exp' => 91,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 54
ACTIONS => {
- "(" => 16,
- "{" => 10,
- "NOT" => 11,
- "-" => 12,
- 'literal' => 18,
- 'name' => 19,
- "!" => 20
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'exp' => 91,
- 'nonbrace' => 9,
- 'varref' => 15,
- 'p10' => 13,
- 'p11' => 14
+ 'exp' => 92,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 55
ACTIONS => {
- "!" => 20,
- 'name' => 19,
- 'literal' => 18,
- "-" => 12,
- "NOT" => 11,
- "{" => 10,
- "(" => 16
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p11' => 14,
- 'p10' => 13,
- 'nonbrace' => 9,
- 'exp' => 92,
- 'varref' => 15
+ 'exp' => 93,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 56
- DEFAULT => -6
- },
- {#State 57
ACTIONS => {
- 'literal' => 18,
- 'name' => 19,
- "!" => 20,
- "{" => 10,
- "NOT" => 11,
- "(" => 16,
- "-" => 12
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p10' => 13,
- 'p11' => 14,
- 'exp' => 93,
- 'nonbrace' => 9,
- 'varref' => 15
+ 'exp' => 94,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
+ {#State 57
+ DEFAULT => -64
+ },
{#State 58
ACTIONS => {
- 'name' => 19,
- 'literal' => 18,
- "!" => 20,
- "{" => 10,
- "NOT" => 11,
- "(" => 16,
- "-" => 12
+ "-" => 9,
+ "{" => 13,
+ 'name' => 12,
+ 'literal' => 15,
+ "!" => 18,
+ "(" => 17,
+ "NOT" => 20,
+ ")" => 95
},
GOTOS => {
- 'nonbrace' => 9,
- 'exp' => 94,
- 'varref' => 15,
- 'p10' => 13,
- 'p11' => 14
+ 'exp' => 97,
+ 'nonbrace' => 11,
+ 'gtpair' => 98,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'p10' => 19,
+ 'gthash' => 99,
+ 'list' => 96
}
},
{#State 59
ACTIONS => {
- "-" => 12,
- "(" => 16,
- "{" => 10,
- "NOT" => 11,
- "!" => 20,
- 'name' => 19,
- 'literal' => 18
+ "," => 100
},
- GOTOS => {
- 'p10' => 13,
- 'p11' => 14,
- 'exp' => 95,
- 'nonbrace' => 9,
- 'varref' => 15
- }
+ DEFAULT => -70
},
{#State 60
ACTIONS => {
- "NOT" => 11,
- "{" => 10,
- "(" => 16,
- "-" => 12,
- 'name' => 19,
- 'literal' => 18,
- "!" => 20
- },
- GOTOS => {
- 'p10' => 13,
- 'p11' => 14,
- 'varref' => 15,
- 'exp' => 96,
- 'nonbrace' => 9
+ ".." => 39,
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "," => 101,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "||" => 51,
+ "&" => 52,
+ "/" => 53,
+ "XOR" => 54,
+ "=>" => 102,
+ "<=" => 55,
+ ">" => 56
}
},
{#State 61
- ACTIONS => {
- "-" => 12,
- "NOT" => 11,
- "{" => 10,
- "(" => 16,
- "!" => 20,
- 'name' => 19,
- 'literal' => 18
- },
- GOTOS => {
- 'nonbrace' => 9,
- 'exp' => 97,
- 'varref' => 15,
- 'p10' => 13,
- 'p11' => 14
- }
+ DEFAULT => -76
},
{#State 62
ACTIONS => {
- "-" => 12,
- "(" => 16,
- "NOT" => 11,
- "{" => 10,
- "!" => 20,
- 'literal' => 18,
- 'name' => 19
- },
- GOTOS => {
- 'varref' => 15,
- 'nonbrace' => 9,
- 'exp' => 98,
- 'p10' => 13,
- 'p11' => 14
+ "}" => 103
}
},
{#State 63
ACTIONS => {
- "-" => 12,
- "NOT" => 11,
- "{" => 10,
- "(" => 16,
- "!" => 20,
- 'name' => 19,
- 'literal' => 18
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'varref' => 15,
- 'nonbrace' => 9,
- 'exp' => 99,
- 'p10' => 13,
- 'p11' => 14
+ 'exp' => 104,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 64
ACTIONS => {
- "-" => 12,
- "NOT" => 11,
- "{" => 10,
- "(" => 16,
- "!" => 20,
- 'name' => 19,
- 'literal' => 18
- },
- GOTOS => {
- 'varref' => 15,
- 'exp' => 100,
- 'nonbrace' => 9,
- 'p10' => 13,
- 'p11' => 14
+ 'name' => 105
}
},
{#State 65
- ACTIONS => {
- "(" => 16,
- "NOT" => 11,
- "{" => 10,
- "-" => 12,
- 'literal' => 18,
- 'name' => 19,
- "!" => 20
- },
- GOTOS => {
- 'p11' => 14,
- 'p10' => 13,
- 'varref' => 15,
- 'exp' => 101,
- 'nonbrace' => 9
- }
+ DEFAULT => -79
},
{#State 66
- DEFAULT => -64
+ ACTIONS => {
+ ".." => 39,
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ ")" => 106,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "||" => 51,
+ "&" => 52,
+ "/" => 53,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
+ }
},
{#State 67
- ACTIONS => {
- "{" => 10,
- "NOT" => 11,
- "-" => 12,
- "(" => 16,
- ")" => 105,
- 'name' => 19,
- 'literal' => 18,
- "!" => 20
- },
- GOTOS => {
- 'gtpair' => 102,
- 'list' => 103,
- 'p10' => 13,
- 'p11' => 14,
- 'nonbrace' => 9,
- 'gthash' => 104,
- 'exp' => 106,
- 'varref' => 15
- }
- },
- {#State 68
DEFAULT => -56
},
+ {#State 68
+ DEFAULT => -57
+ },
{#State 69
- ACTIONS => {
- "(" => 107
- }
+ DEFAULT => -5
},
{#State 70
- ACTIONS => {
- "[" => 43,
- "=" => 108,
- "." => 44
- },
+ DEFAULT => -2,
GOTOS => {
- 'varpart' => 45
+ 'chunks' => 107
}
},
{#State 71
- DEFAULT => -78
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 108,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
},
{#State 72
ACTIONS => {
- "!" => 20,
- 'name' => 19,
- 'literal' => 18,
- "-" => 12,
- "(" => 16,
- "{" => 10,
- "NOT" => 11
- },
- GOTOS => {
- 'varref' => 15,
- 'exp' => 109,
- 'nonbrace' => 9,
- 'p10' => 13,
- 'p11' => 14
+ "(" => 109
}
},
{#State 73
- DEFAULT => -2,
+ ACTIONS => {
+ "-->" => 110,
+ "[" => 63,
+ "." => 64,
+ "=" => 111
+ },
GOTOS => {
- 'chunks' => 110
+ 'varpart' => 65
}
},
{#State 74
- ACTIONS => {
- "||" => 53,
- "XOR" => 51,
- "-" => 50,
- ">" => 52,
- "-->" => 111,
- "/" => 47,
- "<" => 48,
- "+" => 49,
- "<=" => 57,
- "*" => 55,
- "==" => 54,
- "OR" => 63,
- ".." => 61,
- "&&" => 62,
- ">=" => 60,
- "&" => 59,
- "%" => 58,
- "AND" => 65,
- "!=" => 64
- }
+ DEFAULT => -78
},
{#State 75
- DEFAULT => -5
+ ACTIONS => {
+ "[" => 63,
+ "." => 64,
+ "=" => 112
+ },
+ GOTOS => {
+ 'varpart' => 65
+ }
},
{#State 76
ACTIONS => {
- "." => 44,
- "-->" => 112,
- "=" => 113,
- "[" => 43
- },
- GOTOS => {
- 'varpart' => 45
+ ".." => 39,
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "||" => 51,
+ "&" => 52,
+ "/" => 53,
+ "-->" => 113,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
}
},
{#State 77
- DEFAULT => -58
- },
- {#State 78
ACTIONS => {
- "-" => 12,
- "{" => 10,
- "NOT" => 11,
- "(" => 16,
- "!" => 20,
- 'literal' => 18,
- 'name' => 19
- },
- GOTOS => {
- 'p10' => 13,
- 'p11' => 14,
- 'exp' => 114,
- 'nonbrace' => 9,
- 'varref' => 15
- }
- },
- {#State 79
- ACTIONS => {
- 'name' => 19,
- 'literal' => 18,
- "!" => 20,
- "NOT" => 11,
- "{" => 10,
- "(" => 16,
- "-" => 12
- },
- GOTOS => {
- 'varref' => 15,
- 'exp' => 115,
- 'nonbrace' => 9,
- 'p10' => 13,
- 'p11' => 14
- }
- },
- {#State 80
- ACTIONS => {
- "(" => 16,
- "!" => 20,
- 'name' => 19,
- 'literal' => 18,
- "-" => 12,
- "{" => 10,
- "NOT" => 11
- },
- DEFAULT => -72,
- GOTOS => {
- 'gtpair' => 39,
- 'p11' => 14,
- 'p10' => 13,
- 'nonbrace' => 9,
- 'pair' => 40,
- 'hash' => 116,
- 'exp' => 38,
- 'varref' => 15
- }
- },
- {#State 81
- ACTIONS => {
- "%" => 58,
- "&" => 59,
- "&&" => 62,
- ">=" => 60,
- ".." => 61,
- "OR" => 63,
- "!=" => 64,
- "AND" => 65,
- "<" => 48,
- "+" => 49,
- "]" => 117,
- "/" => 47,
- "XOR" => 51,
- ">" => 52,
- "-" => 50,
- "||" => 53,
- "==" => 54,
- "*" => 55,
- "<=" => 57
- }
- },
- {#State 82
- ACTIONS => {
- "(" => 118
- },
- DEFAULT => -80
- },
- {#State 83
- DEFAULT => -84,
- GOTOS => {
- 'varpath' => 119
- }
- },
- {#State 84
- DEFAULT => -49
- },
- {#State 85
- ACTIONS => {
- "==" => undef,
- "*" => 55,
- "<=" => undef,
- "+" => 49,
- "<" => undef,
- "/" => 47,
- "-" => 50,
- ">" => undef,
- "!=" => undef,
- "%" => 58,
- "&" => 59,
- ">=" => undef
- },
- DEFAULT => -41
- },
- {#State 86
- ACTIONS => {
- "%" => 58,
- "&" => 59,
- "*" => 55,
- "/" => 47
- },
- DEFAULT => -45
- },
- {#State 87
- ACTIONS => {
- "/" => 47,
- "*" => 55,
- "&" => 59,
- "%" => 58
+ "%" => 43,
+ "*" => 47,
+ "&" => 52,
+ "/" => 53
},
DEFAULT => -46
},
- {#State 88
+ {#State 78
ACTIONS => {
- "==" => 54,
- "*" => 55,
- "<=" => 57,
- "+" => 49,
- "<" => 48,
- "/" => 47,
- ">" => 52,
- "-" => 50,
- "!=" => 64,
- "AND" => 65,
- "%" => 58,
- "&" => 59,
- ">=" => 60,
- "&&" => 62
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "||" => 51,
+ "&" => 52,
+ "/" => 53,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
},
- DEFAULT => -36
+ DEFAULT => -33
},
- {#State 89
+ {#State 79
ACTIONS => {
- "<=" => undef,
- "*" => 55,
- "==" => undef,
- "-" => 50,
- ">" => undef,
- "/" => 47,
- "+" => 49,
+ "-" => 38,
"<" => undef,
- "!=" => undef,
- ">=" => undef,
- "&" => 59,
- "%" => 58
- },
- DEFAULT => -42
- },
- {#State 90
- ACTIONS => {
- "&" => 59,
- "%" => 58,
- "&&" => 62,
- ">=" => 60,
- "!=" => 64,
- "AND" => 65,
- ">" => 52,
- "-" => 50,
- "/" => 47,
- "+" => 49,
- "<" => 48,
- "==" => 54,
- "<=" => 57,
- "*" => 55
- },
- DEFAULT => -34
- },
- {#State 91
- ACTIONS => {
- "*" => 55,
- "<=" => undef,
+ "+" => 42,
+ "%" => 43,
"==" => undef,
- "/" => 47,
- "+" => 49,
- "<" => undef,
- ">" => undef,
- "-" => 50,
- "!=" => undef,
">=" => undef,
- "%" => 58,
- "&" => 59
+ "*" => 47,
+ "!=" => undef,
+ "&" => 52,
+ "/" => 53,
+ "<=" => undef,
+ ">" => undef
+ },
+ DEFAULT => -41
+ },
+ {#State 80
+ ACTIONS => {
+ "-" => 38,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "&" => 52,
+ "/" => 53,
+ "<=" => 55,
+ ">" => 56
+ },
+ DEFAULT => -35
+ },
+ {#State 81
+ ACTIONS => {
+ "%" => 43,
+ "*" => 47,
+ "&" => 52,
+ "/" => 53
+ },
+ DEFAULT => -45
+ },
+ {#State 82
+ DEFAULT => -50
+ },
+ {#State 83
+ ACTIONS => {
+ "-" => 38,
+ "<" => undef,
+ "+" => 42,
+ "%" => 43,
+ "==" => undef,
+ ">=" => undef,
+ "*" => 47,
+ "!=" => undef,
+ "&" => 52,
+ "/" => 53,
+ "<=" => undef,
+ ">" => undef
},
DEFAULT => -39
},
- {#State 92
+ {#State 84
+ ACTIONS => {
+ "-" => 38,
+ "<" => undef,
+ "+" => 42,
+ "%" => 43,
+ "==" => undef,
+ ">=" => undef,
+ "*" => 47,
+ "!=" => undef,
+ "&" => 52,
+ "/" => 53,
+ "<=" => undef,
+ ">" => undef
+ },
+ DEFAULT => -44
+ },
+ {#State 85
DEFAULT => -48
},
+ {#State 86
+ ACTIONS => {
+ "-" => 38,
+ "<" => undef,
+ "+" => 42,
+ "%" => 43,
+ "==" => undef,
+ ">=" => undef,
+ "*" => 47,
+ "!=" => undef,
+ "&" => 52,
+ "/" => 53,
+ "<=" => undef,
+ ">" => undef
+ },
+ DEFAULT => -40
+ },
+ {#State 87
+ ACTIONS => {
+ "-" => 38,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "&" => 52,
+ "/" => 53,
+ "<=" => 55,
+ ">" => 56
+ },
+ DEFAULT => -38
+ },
+ {#State 88
+ ACTIONS => {
+ "-" => 38,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "&" => 52,
+ "/" => 53,
+ "<=" => 55,
+ ">" => 56
+ },
+ DEFAULT => -37
+ },
+ {#State 89
+ ACTIONS => {
+ "-" => 38,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "&" => 52,
+ "/" => 53,
+ "<=" => 55,
+ ">" => 56
+ },
+ DEFAULT => -34
+ },
+ {#State 90
+ ACTIONS => {
+ "%" => 43,
+ "*" => 47,
+ "/" => 53
+ },
+ DEFAULT => -47
+ },
+ {#State 91
+ DEFAULT => -49
+ },
+ {#State 92
+ ACTIONS => {
+ "-" => 38,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "&" => 52,
+ "/" => 53,
+ "<=" => 55,
+ ">" => 56
+ },
+ DEFAULT => -36
+ },
{#State 93
ACTIONS => {
- "&" => 59,
- "%" => 58,
- ">=" => undef,
- "!=" => undef,
- ">" => undef,
- "-" => 50,
- "/" => 47,
- "+" => 49,
+ "-" => 38,
"<" => undef,
+ "+" => 42,
+ "%" => 43,
"==" => undef,
+ ">=" => undef,
+ "*" => 47,
+ "!=" => undef,
+ "&" => 52,
+ "/" => 53,
"<=" => undef,
- "*" => 55
+ ">" => undef
},
DEFAULT => -43
},
{#State 94
- DEFAULT => -50
+ ACTIONS => {
+ "-" => 38,
+ "<" => undef,
+ "+" => 42,
+ "%" => 43,
+ "==" => undef,
+ ">=" => undef,
+ "*" => 47,
+ "!=" => undef,
+ "&" => 52,
+ "/" => 53,
+ "<=" => undef,
+ ">" => undef
+ },
+ DEFAULT => -42
},
{#State 95
- ACTIONS => {
- "*" => 55,
- "/" => 47,
- "%" => 58
- },
- DEFAULT => -47
+ DEFAULT => -61
},
{#State 96
ACTIONS => {
- "<=" => undef,
- "*" => 55,
- "==" => undef,
- ">" => undef,
- "-" => 50,
- "/" => 47,
- "<" => undef,
- "+" => 49,
- "!=" => undef,
- ">=" => undef,
- "&" => 59,
- "%" => 58
- },
- DEFAULT => -44
+ ")" => 114
+ }
},
{#State 97
ACTIONS => {
- "<=" => 57,
- "*" => 55,
- "==" => 54,
- "||" => 53,
- "XOR" => 51,
- "-" => 50,
- ">" => 52,
- "+" => 49,
- "<" => 48,
- "/" => 47,
- "AND" => 65,
- "!=" => 64,
- "OR" => 63,
- "&&" => 62,
- ">=" => 60,
- "&" => 59,
- "%" => 58
- },
- DEFAULT => -33
- },
- {#State 98
- ACTIONS => {
- "==" => 54,
- "*" => 55,
- "<=" => 57,
- "+" => 49,
- "<" => 48,
- "/" => 47,
- ">" => 52,
- "-" => 50,
- "!=" => 64,
- "%" => 58,
- "&" => 59,
- ">=" => 60
- },
- DEFAULT => -37
- },
- {#State 99
- ACTIONS => {
- "AND" => 65,
- "!=" => 64,
- "&&" => 62,
- ">=" => 60,
- "%" => 58,
- "&" => 59,
- "*" => 55,
- "<=" => 57,
- "==" => 54,
- "<" => 48,
- "+" => 49,
- "/" => 47,
- "-" => 50,
- ">" => 52
- },
- DEFAULT => -35
- },
- {#State 100
- ACTIONS => {
- "!=" => undef,
- ">=" => undef,
- "&" => 59,
- "%" => 58,
- "<=" => undef,
- "*" => 55,
- "==" => undef,
- ">" => undef,
- "-" => 50,
- "/" => 47,
- "<" => undef,
- "+" => 49
- },
- DEFAULT => -40
- },
- {#State 101
- ACTIONS => {
- "*" => 55,
- "<=" => 57,
- "==" => 54,
- "<" => 48,
- "+" => 49,
- "/" => 47,
- ">" => 52,
- "-" => 50,
- "!=" => 64,
- ">=" => 60,
- "%" => 58,
- "&" => 59
- },
- DEFAULT => -38
- },
- {#State 102
- ACTIONS => {
- "," => 120
- },
- DEFAULT => -73
- },
- {#State 103
- ACTIONS => {
- ")" => 121
- }
- },
- {#State 104
- ACTIONS => {
- ")" => 122
- }
- },
- {#State 105
- DEFAULT => -61
- },
- {#State 106
- ACTIONS => {
- "==" => 54,
- "*" => 55,
- "<=" => 57,
- "/" => 47,
- "<" => 48,
- "+" => 49,
- "=>" => 78,
- "XOR" => 51,
- "-" => 50,
- ">" => 52,
- "||" => 53,
- "," => 123,
- "!=" => 64,
- "AND" => 65,
- "%" => 58,
- "&" => 59,
- ">=" => 60,
- ".." => 61,
- "&&" => 62,
- "OR" => 63
+ ".." => 39,
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "," => 115,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "||" => 51,
+ "&" => 52,
+ "/" => 53,
+ "XOR" => 54,
+ "=>" => 102,
+ "<=" => 55,
+ ">" => 56
},
DEFAULT => -65
},
+ {#State 98
+ ACTIONS => {
+ "," => 116
+ },
+ DEFAULT => -73
+ },
+ {#State 99
+ ACTIONS => {
+ ")" => 117
+ }
+ },
+ {#State 100
+ ACTIONS => {
+ "-" => 9,
+ "{" => 13,
+ 'name' => 12,
+ 'literal' => 15,
+ "!" => 18,
+ "(" => 17,
+ "NOT" => 20
+ },
+ DEFAULT => -72,
+ GOTOS => {
+ 'exp' => 60,
+ 'nonbrace' => 11,
+ 'gtpair' => 61,
+ 'varref' => 14,
+ 'hash' => 118,
+ 'p11' => 16,
+ 'pair' => 59,
+ 'p10' => 19
+ }
+ },
+ {#State 101
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 119,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
+ },
+ {#State 102
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'exp' => 120,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
+ },
+ {#State 103
+ DEFAULT => -58
+ },
+ {#State 104
+ ACTIONS => {
+ ".." => 39,
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "]" => 121,
+ "!=" => 48,
+ "AND" => 49,
+ "&&" => 50,
+ "||" => 51,
+ "&" => 52,
+ "/" => 53,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
+ }
+ },
+ {#State 105
+ ACTIONS => {
+ "(" => 122
+ },
+ DEFAULT => -80
+ },
+ {#State 106
+ DEFAULT => -84,
+ GOTOS => {
+ 'varpath' => 123
+ }
+ },
{#State 107
+ ACTIONS => {
+ 'literal' => 3,
+ "{{" => 5,
+ 'error' => 4,
+ "" => 140,
- ">" => 52,
- "-" => 50,
- "*" => 55,
- "<=" => 57,
- "==" => 54
+ ")" => 140
}
},
{#State 127
ACTIONS => {
- "SET" => 35,
- "(" => 16,
- "FUNCTION" => 27,
- "FOREACH" => 26,
- 'literal' => 18,
- 'name' => 19,
- "MACRO" => 33,
- "!" => 20,
- "FOR" => 23,
- "{" => 10,
- "NOT" => 11,
- "BLOCK" => 31,
- "-" => 12,
- "END" => 141,
- "IF" => 30
+ 'literal' => 3,
+ "{{" => 5,
+ 'error' => 4,
+ "" => 142,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
}
},
{#State 130
ACTIONS => {
- "<=" => 57,
- "*" => 55,
- "==" => 54,
- "||" => 53,
- ">" => 52,
- "-" => 50,
- "XOR" => 51,
- "/" => 47,
- "+" => 49,
- "<" => 48,
- "AND" => 65,
- "!=" => 64,
- "OR" => 63,
- ">=" => 60,
- ".." => 61,
- "&&" => 62,
- "&" => 59,
- "%" => 58
+ 'literal' => 3,
+ "{{" => 5,
+ 'error' => 4,
+ "" => 158,
- "IF" => 157
- }
+ DEFAULT => -31
},
{#State 151
DEFAULT => -13
@@ -1818,73 +1808,98 @@ sub new
},
{#State 153
ACTIONS => {
- 'literal' => 8,
- "" => 158
}
},
{#State 154
- DEFAULT => -20
+ ACTIONS => {
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
+ },
+ GOTOS => {
+ 'varref' => 14,
+ 'exp' => 159,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
+ }
},
{#State 155
ACTIONS => {
- "(" => 16,
- "SET" => 35,
- "FUNCTION" => 27,
- "FOREACH" => 26,
- 'name' => 19,
- 'literal' => 18,
- "MACRO" => 33,
- "!" => 20,
- "FOR" => 23,
- "{" => 10,
- "BLOCK" => 31,
- "NOT" => 11,
- "-" => 12,
+ "SET" => 30,
"END" => 160,
- "IF" => 30
+ "-" => 9,
+ "MACRO" => 21,
+ "{" => 13,
+ 'name' => 12,
+ "BLOCK" => 22,
+ 'literal' => 15,
+ "IF" => 32,
+ "(" => 17,
+ "!" => 18,
+ "FOR" => 33,
+ "NOT" => 20,
+ "FOREACH" => 27,
+ "FUNCTION" => 36
},
GOTOS => {
- 'c_if' => 36,
- 'varref' => 15,
- 'c_fn' => 25,
- 'exp' => 34,
+ 'exp' => 29,
+ 'nonbrace' => 11,
+ 'for' => 31,
+ 'code_chunk' => 23,
+ 'varref' => 14,
+ 'p11' => 16,
'c_set' => 24,
- 'p10' => 13,
- 'p11' => 14,
- 'code_chunk' => 32,
- 'c_for' => 22,
- 'nonbrace' => 9,
- 'fn' => 21,
- 'fn_def' => 29,
- 'for' => 28
+ 'p10' => 19,
+ 'c_if' => 25,
+ 'fn_def' => 26,
+ 'c_for' => 34,
+ 'c_fn' => 35,
+ 'fn' => 28
}
},
{#State 156
ACTIONS => {
- "<=" => 57,
- "*" => 55,
- "==" => 54,
- "||" => 53,
- "XOR" => 51,
- "-->" => 161,
- ">" => 52,
- "-" => 50,
- "/" => 47,
- "+" => 49,
- "<" => 48,
- "AND" => 65,
- "!=" => 64,
- "OR" => 63,
- ".." => 61,
- "&&" => 62,
- ">=" => 60,
- "&" => 59,
- "%" => 58
+ "-" => 9,
+ "MACRO" => 21,
+ "BLOCK" => 22,
+ "ELSIF" => 150,
+ 'literal' => 15,
+ "!" => 18,
+ "ELSE" => 162,
+ "FOREACH" => 27,
+ "END" => 161,
+ "SET" => 30,
+ "{" => 13,
+ 'name' => 12,
+ "ELSEIF" => 152,
+ "IF" => 32,
+ "(" => 17,
+ "FOR" => 33,
+ "NOT" => 20,
+ "FUNCTION" => 36
+ },
+ GOTOS => {
+ 'exp' => 29,
+ 'nonbrace' => 11,
+ 'for' => 31,
+ 'code_chunk' => 23,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'c_set' => 24,
+ 'p10' => 19,
+ 'c_if' => 25,
+ 'fn_def' => 26,
+ 'c_for' => 34,
+ 'elseif' => 163,
+ 'c_fn' => 35,
+ 'fn' => 28
}
},
{#State 157
@@ -1893,203 +1908,188 @@ sub new
{#State 158
DEFAULT => -2,
GOTOS => {
- 'chunks' => 162
+ 'chunks' => 164
}
},
{#State 159
ACTIONS => {
- "MACRO" => 33,
- 'literal' => 18,
- "ELSIF" => 149,
- "(" => 16,
- "SET" => 35,
- "IF" => 30,
- "BLOCK" => 31,
- "!" => 20,
- "ELSEIF" => 152,
- 'name' => 19,
- "FOREACH" => 26,
- "FUNCTION" => 27,
- "END" => 164,
- "ELSE" => 165,
- "-" => 12,
- "{" => 10,
- "NOT" => 11,
- "FOR" => 23
- },
- GOTOS => {
- 'c_if' => 36,
- 'varref' => 15,
- 'c_fn' => 25,
- 'exp' => 34,
- 'elseif' => 163,
- 'c_set' => 24,
- 'code_chunk' => 32,
- 'nonbrace' => 9,
- 'c_for' => 22,
- 'p10' => 13,
- 'p11' => 14,
- 'for' => 28,
- 'fn_def' => 29,
- 'fn' => 21
+ ".." => 39,
+ "-" => 38,
+ "OR" => 41,
+ "<" => 40,
+ "+" => 42,
+ "%" => 43,
+ "==" => 44,
+ ">=" => 45,
+ "*" => 47,
+ "!=" => 48,
+ "AND" => 49,
+ "||" => 51,
+ "&&" => 50,
+ "&" => 52,
+ "-->" => 165,
+ "/" => 53,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
}
},
{#State 160
DEFAULT => -24
},
{#State 161
- DEFAULT => -17
+ DEFAULT => -15
},
{#State 162
ACTIONS => {
- 'literal' => 8,
- 'error' => 7,
- "" => 166
}
},
{#State 163
ACTIONS => {
- "-" => 12,
- "NOT" => 11,
- "{" => 10,
- "(" => 16,
- "!" => 20,
- 'literal' => 18,
- 'name' => 19
+ 'literal' => 15,
+ "-" => 9,
+ "(" => 17,
+ "!" => 18,
+ "NOT" => 20,
+ "{" => 13,
+ 'name' => 12
},
GOTOS => {
- 'p10' => 13,
- 'p11' => 14,
- 'varref' => 15,
- 'nonbrace' => 9,
- 'exp' => 167
+ 'varref' => 14,
+ 'exp' => 167,
+ 'p11' => 16,
+ 'nonbrace' => 11,
+ 'p10' => 19
}
},
{#State 164
- DEFAULT => -15
- },
- {#State 165
ACTIONS => {
- "IF" => 157,
- "-->" => 168
- }
- },
- {#State 166
- ACTIONS => {
- "FOREACH" => 26,
- "FUNCTION" => 27,
- "SET" => 35,
- "(" => 16,
- "!" => 20,
- "MACRO" => 33,
- 'literal' => 18,
- 'name' => 19,
- "-" => 12,
- "BLOCK" => 31,
- "NOT" => 11,
- "{" => 10,
- "FOR" => 23,
- "IF" => 30,
- "END" => 169
+ 'literal' => 3,
+ 'error' => 4,
+ "{{" => 5,
+ "" => 170,
- "XOR" => 51,
- ">" => 52,
- "-" => 50,
- "||" => 53,
- "==" => 54,
- "*" => 55,
- "<=" => 57
+ "/" => 53,
+ "XOR" => 54,
+ "<=" => 55,
+ ">" => 56
}
},
{#State 168
- DEFAULT => -2,
+ ACTIONS => {
+ "SET" => 30,
+ "END" => 171,
+ "-" => 9,
+ "MACRO" => 21,
+ "{" => 13,
+ 'name' => 12,
+ "BLOCK" => 22,
+ 'literal' => 15,
+ "IF" => 32,
+ "(" => 17,
+ "!" => 18,
+ "FOR" => 33,
+ "NOT" => 20,
+ "FOREACH" => 27,
+ "FUNCTION" => 36
+ },
GOTOS => {
- 'chunks' => 171
+ 'exp' => 29,
+ 'nonbrace' => 11,
+ 'for' => 31,
+ 'code_chunk' => 23,
+ 'varref' => 14,
+ 'p11' => 16,
+ 'c_set' => 24,
+ 'p10' => 19,
+ 'c_if' => 25,
+ 'fn_def' => 26,
+ 'c_for' => 34,
+ 'c_fn' => 35,
+ 'fn' => 28
}
},
{#State 169
- DEFAULT => -14
+ ACTIONS => {
+ 'literal' => 3,
+ 'error' => 4,
+ "{{" => 5,
+ "' chunks '