--- /dev/null
+c_src -diff
+parser.nit -diff
+parser_prod.nit -diff
+lexer.nit -diff
+tables_nit.c -diff
*.orig
bin/nit*
doc/stdlib
+doc/nitc
+doc/newmodel
*.aux
*.log
all: tools doc/stdlib/index.html
-docs: doc/stdlib/index.html doc/nitc/index.html
- cd doc; make
+docs: doc/stdlib/index.html doc/nitc/index.html doc/newmodel/index.html
+ #cd doc; make
tools:
cd src; make
-doc/stdlib/index.html: tools
+bin/nitdoc:
+ cd src; make ../bin/nitdoc
+
+doc/stdlib/index.html: bin/nitdoc
@echo '***************************************************************'
@echo '* Generate doc for NIT standard library *'
@echo '***************************************************************'
- bin/nitdoc lib/*.nit -d doc/stdlib --public --custom-overview-text '<p>Documentation for the standard library of Nit</p>' --custom-footer-text 'Nit standard library. Version '`git describe`'.'
+ bin/nitdoc lib/*.nit $$(find lib/* -maxdepth 0 -type d ) -d doc/stdlib --public \
+ --custom-title "Nit Standard Library" \
+ --custom-menu-items "<li><a href=\"http://nitlanguage.org/\">Nitlanguage.org</a></li>" \
+ --custom-overview-text "<p>Documentation for the standard library of Nit<br/>Version $$(git describe)<br/>Date: $$(git show --format="%cd" | head -1)</p>" \
+ --custom-footer-text "Nit standard library. Version $$(git describe)." \
+ --github nit \
+ --source "https://github.com/privat/nit/blob/$$(git show --format="%H" | head -1)/%f#L%l-%L"
+
+doc/nitc/index.html: bin/nitdoc
+ bin/nitdoc src/nitc.nit src/nitdoc.nit src/nits.nit -d doc/nitc \
+ --custom-title "Nit Compiler and Tools" \
+ --custom-menu-items "<li><a href=\"http://nitlanguage.org/\">Nitlanguage.org</a></li>" \
+ --custom-overview-text "<p>Documentation for the Nit compiler and tools<br/>Version $$(git describe)<br/>Date: $$(git show --format="%cd" | head -1)</p>" \
+ --custom-footer-text "Nit compiler. Version $$(git describe)." \
+ --github nit \
+ --source "https://github.com/privat/nit/blob/$$(git show --format="%H" | head -1)/%f#L%l-%L"
-doc/nitc/index.html: tools
- bin/nitdoc src/nitc.nit src/nitdoc.nit -d doc/nitc --custom-overview-text '<p>Documentation for the nit compiler</p>' --custom-footer-text 'Nit compiler. Version '`git describe`'.'
+doc/newmodel/index.html: bin/nitdoc
+ bin/nitdoc src/nit.nit src/nitmetrics.nit src/nitg.nit -d doc/newmodel \
+ --custom-title "Nit New Model" \
+ --custom-menu-items "<li><a href=\"http://nitlanguage.org/\">Nitlanguage.org</a></li>" \
+ --custom-overview-text "<p>Documentation for the Nit tools based on the new metamodel<br/>Version $$(git describe)<br/>Date: $$(git show --format="%cd" | head -1)</p>" \
+ --custom-footer-text "Nit new metamodel. Version $$(git describe)." \
+ --github nit \
+ --source "https://github.com/privat/nit/blob/$$(git show --format="%H" | head -1)/%f#L%l-%L"
clean:
rm -rf -- .nit_compile 2> /dev/null || true
# TODO: cleanup and libify the helper-parts
+source ./bench_plot.sh
+
## CONFIGURATION OPTIONS ##
# Default number of times a command must be run with bench_command
# Can be overrided with 'the option -n'
count=2
+pep8analysis=../../pep8analysis
+
### HELPER FUNCTIONS ##
function die()
"$@" || die "$@: failed"
}
-# perl function to compute min/max/avg.
-# used by bench_command
-#
-# $1: file
-# return: first min max avg label
-function compute_stats()
-{
- file="$1"
- # Compute statistics
- perl - "$file" <<'END'
- @lines = ();
- $first = undef;
- chomp($label = <>);
- while(<>) {
- chomp;
- if (/^\d/) {
- if (defined $first) {
- push @lines, $_;
- } else {
- $first = $_;
- }
- }
- }
- $len = scalar @lines;
- if ($len) {
- @lines = sort {$a <=> $b} @lines;
- $min = $lines[0];
- $max = $lines[$#lines];
- $avg = 0;
- for $i (@lines) { $avg += $i; }
- $avg = $avg / $len;
- print "${first} ${min} ${max} ${avg} \"${label}\"\n";
- } else {
- print "${first} ${first} ${first} ${first} \"${label}\"\n";
- }
-END
-}
-
-# Create a new $res to be used in the next plot
-#
-# $1 = resfile
-# $2 = title
-# $3 = description
-function prepare_res()
-{
- echo
- echo "# [$2] $3 #"
- res=$1
- if [ "$plots" = "" ]; then
- plots="plot '$1' using 4:2:3:xticlabels(5) ti '$2';"
- else
- plots="$plots replot '$1' using 4:2:3 ti '$2';"
- fi
- if [ "$dry_run" = "true" ]; then return; fi
- echo "# [$2] $3 ; count=$count" > "$res"
- echo "# first min max avg title" >> "$res"
-}
-
-# Plot the last $res as an histogram
-# $1: plot file (eg toto.gnu)
-function plot()
-{
- cat >"$1" <<END
-set auto x;
-set yrange [0:];
-set style data histogram;
-set style histogram cluster gap 2;
-set style histogram errorbars linewidth 1;
-set style fill solid 0.3 border -1;
-set bars front;
-set boxwidth 0.9;
-set xtic nomirror rotate by -45 scale 0 font ',8';
-set title "$1 ; avg. on $count-1 runs"
-set ylabel "time (s)"
-$plots
-END
- echo "# gnuplot -p $1"
- gnuplot -p "$1"
- plots=
-}
-
# Check if the test should be skiped according to its name
# $1: name of the test
# $2: description of the test
else
return 0
fi
+ if test -n "$html"; then
+ echo >>"$html" "<h2>$1</h2>"
+ fi
echo "*"
echo "* $1 *****"
echo "*"
return 1
}
-## GLOBAL VARIABLES ##
-
-# The current $res (set by prepare_res, used by bench_command)
-res=
-
-# The current stuff to plot (set by prepare_res, used by plot)
-plots=
-
# HELPER FOR NIT #
# Run standards benchs on a compiler command
local title=$1
shift
if test -n "$fast"; then
- run_command "$@" nitg.nit -o "nitg.$title.bin"
- bench_command "nitg" "nitg test_parser.nit" "./nitg.$title.bin" -v --no-cc test_parser.nit
- run_command "$@" nit.nit -o "nit.$title.bin"
- bench_command "nit" "nit test_parser.nit location.nit" "./nit.$title.bin" -v test_parser.nit -- -n location.nit
+ run_command "$@" ../src/nitg.nit -o "nitg.$title.bin"
+ bench_command "nitg-g" "nitg --global ../src/test_parser.nit" "./nitg.$title.bin" -v --global --no-cc ../src/test_parser.nit
+ run_command "$@" ../src/nit.nit -o "nit.$title.bin"
+ bench_command "nit" "nit ../src/test_parser.nit ../src/location.nit" "./nit.$title.bin" -v ../src/test_parser.nit -- -n ../src/location.nit
run_command "$@" ../examples/shoot/shoot_logic.nit -o "shoot.$title.bin"
bench_command "shoot" "shoot_logic" "./shoot.$title.bin"
run_command "$@" ../tests/bench_bintree_gen.nit -o "bintrees.$title.bin"
bench_command "bintrees" "bench_bintree_gen 16" "./bintrees.$title.bin" 16
else
- run_command "$@" nitg.nit -o "nitg.$title.bin"
- bench_command "nitg" "nitg --no-cc nitstats.nit" "./nitg.$title.bin" -v --no-cc nitstats.nit
- bench_command "nitg-s" "nitg --separate nitg.nit" "./nitg.$title.bin" -v --no-cc --separate nitg.nit
- run_command "$@" nit.nit -o "nit.$title.bin"
- bench_command "nit" "nit test_parser.nit rapid_type_analysis.nit" "./nit.$title.bin" -v test_parser.nit -- -n rapid_type_analysis.nit
+ run_command "$@" ../src/nitg.nit -o "nitg.$title.bin"
+ bench_command "nitg-g" "nitg --global --no-cc ../src/nitmetrics.nit" "./nitg.$title.bin" -v --global --no-cc ../src/nitmetrics.nit
+ bench_command "nitg-s" "nitg --separate ../src/nitg.nit" "./nitg.$title.bin" -v --no-cc --separate ../src/nitg.nit
+ run_command "$@" ../src/nit.nit -o "nit.$title.bin"
+ bench_command "nit" "nit ../src/test_parser.nit ../src/rapid_type_analysis.nit" "./nit.$title.bin" -v ../src/test_parser.nit -- -n ../src/rapid_type_analysis.nit
run_command "$@" ../examples/shoot/shoot_logic.nit -o "shoot.$title.bin"
bench_command "shoot" "shoot_logic 30" "./shoot.$title.bin" 30
run_command "$@" ../tests/bench_bintree_gen.nit -o "bintrees.$title.bin"
bench_command "bintrees" "bench_bintree_gen 18" "./bintrees.$title.bin" 18
+ if test -f "$pep8analysis/src/pep8analysis.nit"; then
+ run_command "$@" "$pep8analysis/src/pep8analysis.nit" -I "$pep8analysis/lib" -o "pep8a.$title.bin"
+ bench_command "pep8analisis" "bench_bintree_gen 18" "./pep8a.$title.bin" "$pep8analysis/tests/privat/"*.pep
+ fi
fi
}
echo " -n count: number of execution for each bar (default: $count)"
echo " --dry: Do not run the commands, just reuse the data and generate the graph"
echo " --fast: Run less and faster tests"
+ echo " --html: Generate and HTML output"
echo " -h: this help"
}
-n) count="$2"; shift; shift;;
--dry) dry_run=true; shift;;
--fast) fast=true; shift;;
+ --html) html="index.html"; echo >"$html" "<html><head></head><body>"; shift;;
*) stop=true
esac
done
## COMPILE ENGINES
-test -f ./nitc_3 || ./ncall.sh -O
-test -f ./nitg || ./nitc_3 nitg.nit -O -v
+test -f ../src/nitc_3 || ../src/ncall.sh -O
+test -f ./nitg || ../src/nitc_3 ../src/nitg.nit -O -v
## EFFECTIVE BENCHS ##
skip_test "$name" && return
prepare_res "$name.dat" "" "Steps of the bootstrap of nitg by nitc"
rm nit?_nit*
- cp ./nitc_3 ./nitc_nitc.bin
- bench_command "c/c c" "nitc_nitc nitc.nit -> nitc_nitc (stability)" ./nitc_nitc.bin -O nitc.nit -o nitc_nitc.bin
- bench_command "c/c g" "nitc_nitc nitg.nit -> nitg_nitc" ./nitc_nitc.bin -O nitg.nit -o nitg_nitc.bin
- bench_command "g/c g" "nitg_nitc nitg.nit -> nitg_nitg" ./nitg_nitc.bin nitg.nit -o nitg_nitg.bin
- bench_command "g/g g" "nitg_nitg nitg.nit -> nitg_nitg (stability)" ./nitg_nitg.bin nitg.nit -o nitg_nitg.bin
+ cp ../src/nitc_3 ./nitc_nitc.bin
+ bench_command "c/c c" "nitc_nitc ../src/nitc.nit -> nitc_nitc (stability)" ./nitc_nitc.bin -O ../src/nitc.nit -o nitc_nitc.bin
+ bench_command "c/c g" "nitc_nitc ../src/nitg.nit -> nitg_nitc" ./nitc_nitc.bin -O ../src/nitg.nit -o nitg_nitc.bin
+ bench_command "g/c g" "nitg_nitc ../src/nitg.nit -> nitg_nitg" ./nitg_nitc.bin ../src/nitg.nit -o nitg_nitg.bin
+ bench_command "g/g g" "nitg_nitg ../src/nitg.nit -> nitg_nitg (stability)" ./nitg_nitg.bin ../src/nitg.nit -o nitg_nitg.bin
plot "$name.gnu"
}
name="$FUNCNAME"
skip_test "$name" && return
prepare_res "$name-nitc.dat" "nitc" "Various steps of nitc"
- bench_command "parse" "" ./nitc_3 --only-parse nitg.nit
- bench_command "metamodel" "" ./nitc_3 --only-metamodel nitg.nit
- bench_command "generate c" "" ./nitc_3 --no-cc nitg.nit
- bench_command "full" "" ./nitc_3 -O nitg.nit -o "nitg_nitg.bin"
+ bench_command "parse" "" ../src/nitc_3 --only-parse ../src/nitg.nit
+ bench_command "metamodel" "" ../src/nitc_3 --only-metamodel ../src/nitg.nit
+ bench_command "generate c" "" ../src/nitc_3 --no-cc ../src/nitg.nit
+ bench_command "full" "" ../src/nitc_3 -O ../src/nitg.nit -o "nitg_nitg.bin"
prepare_res "$name-nitc-g.dat" "nitc-g" "Various steps of nitc --global"
- bench_command "parse" "" ./nitc_3 --global --only-parse nitg.nit
- bench_command "metamodel" "" ./nitc_3 --global --only-metamodel nitg.nit
- bench_command "generate c" "" ./nitc_3 --global --no-cc nitg.nit
- bench_command "full" "" ./nitc_3 -O --global nitg.nit -o "nitg_nitc-g.bin"
-
- prepare_res "$name-nitg.dat" "nitg" "Various steps of nitg"
- bench_command "parse" "" ./nitg --only-parse nitg.nit
- bench_command "metamodel" "" ./nitg --only-metamodel nitg.nit
- bench_command "generate c" "" ./nitg --no-cc nitg.nit
- bench_command "full" "" ./nitg nitg.nit -o "nitg_nitg.bin"
+ bench_command "parse" "" ../src/nitc_3 --global --only-parse ../src/nitg.nit
+ bench_command "metamodel" "" ../src/nitc_3 --global --only-metamodel ../src/nitg.nit
+ bench_command "generate c" "" ../src/nitc_3 --global --no-cc ../src/nitg.nit
+ bench_command "full" "" ../src/nitc_3 -O --global ../src/nitg.nit -o "nitg_nitc-g.bin"
+
+ prepare_res "$name-nitg.dat" "nitg-g" "Various steps of nitg --global"
+ bench_command "parse" "" ./nitg --global --only-parse ../src/nitg.nit
+ bench_command "metamodel" "" ./nitg --global --only-metamodel ../src/nitg.nit
+ bench_command "generate c" "" ./nitg --global --no-cc ../src/nitg.nit
+ bench_command "full" "" ./nitg --global ../src/nitg.nit -o "nitg_nitg.bin"
+
+ prepare_res "$name-nitg-s.dat" "nitg-s" "Various steps of nitg --separate"
+ bench_command "parse" "" ./nitg --separate --only-parse ../src/nitg.nit
+ bench_command "metamodel" "" ./nitg --separate --only-metamodel ../src/nitg.nit
+ bench_command "generate c" "" ./nitg --separate --no-cc ../src/nitg.nit
+ bench_command "full" "" ./nitg --separate ../src/nitg.nit -o "nitg_nitg-e.bin"
prepare_res "$name-nitg-e.dat" "nitg-e" "Various steps of nitg --erasure"
- bench_command "parse" "" ./nitg --erasure --only-parse nitg.nit
- bench_command "metamodel" "" ./nitg --erasure --only-metamodel nitg.nit
- bench_command "generate c" "" ./nitg --erasure --no-cc nitg.nit
- bench_command "full" "" ./nitg --erasure nitg.nit -o "nitg_nitg-e.bin"
+ bench_command "parse" "" ./nitg --erasure --only-parse ../src/nitg.nit
+ bench_command "metamodel" "" ./nitg --erasure --only-metamodel ../src/nitg.nit
+ bench_command "generate c" "" ./nitg --erasure --no-cc ../src/nitg.nit
+ bench_command "full" "" ./nitg --erasure ../src/nitg.nit -o "nitg_nitg-e.bin"
plot "$name.gnu"
}
bench_steps
# $#: options to compare
-function bench_nitg_options()
+function bench_nitg-g_options()
{
tag=$1
shift
name="$FUNCNAME-$tag"
skip_test "$name" && return
- prepare_res "$name.dat" "no options" "nitg without options"
- run_compiler "nitg" ./nitg
-
- if test -n "$2"; then
- prepare_res "$name-all.dat" "all" "nitg with all options $@"
- run_compiler "nitg-$tag" ./nitg $@
+ prepare_res "$name.dat" "no options" "nitg-g without options"
+ run_compiler "nitg-g" ./nitg --global
+
+ if test "$1" = NOALL; then
+ shift
+ elif test -n "$2"; then
+ prepare_res "$name-all.dat" "all" "nitg-g with all options $@"
+ run_compiler "nitg-g-$tag" ./nitg --global $@
fi
for opt in "$@"; do
- prepare_res "$name$opt.dat" "$opt" "nitg with option $opt"
- run_compiler "nitg$opt" ./nitg $opt
+ prepare_res "$name$opt.dat" "$opt" "nitg-g with option $opt"
+ run_compiler "nitg-g$opt" ./nitg --global $opt
done
plot "$name.gnu"
}
-bench_nitg_options "hardening" --hardening
-bench_nitg_options "nocheck" --no-check-covariance --no-check-initialization --no-check-assert --no-check-autocast --no-check-other
+bench_nitg-g_options "hardening" --hardening
+bench_nitg-g_options "nocheck" --no-check-covariance --no-check-initialization --no-check-assert --no-check-autocast --no-check-other
function bench_nitg-s_options()
{
prepare_res "$name.dat" "no options" "nitg-s without options"
run_compiler "nitg-s" ./nitg --separate
- if test -n "$2"; then
+ if test "$1" = NOALL; then
+ shift
+ elif test -n "$2"; then
prepare_res "$name-all.dat" "all" "nitg-s with all options $@"
run_compiler "nitg-s-$tag" ./nitg --separate $@
fi
plot "$name.gnu"
}
-bench_nitg-s_options "slower" --hardening --no-inline-intern --generic-resolution-tree --no-union-attribute --no-shortcut-equal --no-shortcut-range
+bench_nitg-s_options "slower" --hardening --no-inline-intern --no-union-attribute --no-shortcut-equal --no-shortcut-range
bench_nitg-s_options "nocheck" --no-check-covariance --no-check-initialization --no-check-assert --no-check-autocast --no-check-other
bench_nitg-s_options "faster" --inline-coloring-numbers
-bench_nitg-s_options "typing" --bm-typing --phand-typing --phmod-typing
+bench_nitg-s_options "typing" NOALL --bm-typing --phand-typing
function bench_nitg-e_options()
{
prepare_res "$name.dat" "no options" "nitg-e without options"
run_compiler "nitg-e" ./nitg --erasure
- if test -n "$2"; then
+ if test "$1" = NOALL; then
+ shift
+ elif test -n "$2"; then
prepare_res "$name-all.dat" "all" "nitg-e with all options $@"
run_compiler "nitg-e-$tag" ./nitg --erasure $@
fi
bench_nitg-e_options "slower" --hardening --no-inline-intern --no-union-attribute --no-shortcut-equal --no-shortcut-range
bench_nitg-e_options "nocheck" --no-check-covariance --no-check-initialization --no-check-assert --no-check-autocast --no-check-other --no-check-erasure-cast
bench_nitg-e_options "faster" --inline-coloring-numbers
-bench_nitg-e_options "typing" --bm-typing --phand-typing --phmod-typing
+bench_nitg-e_options "typing" NOALL --bm-typing # --phand-typing
function bench_nitc_gc()
{
for gc in nitgc boehm malloc large; do
prepare_res "$name-$gc.dat" "$gc" "nitc with gc=$gc"
export NIT_GC_OPTION="$gc"
- run_compiler "nitc" ./nitc_3 -O
+ run_compiler "nitc" ../src/nitc_3 -O
done
plot "$name.gnu"
name="$FUNCNAME"
skip_test "$name" && return
prepare_res "$name-slow.dat" "no -O" "nitc without -O"
- run_compiler "nitc_slow" ./nitc_3
+ run_compiler "nitc_slow" ../src/nitc_3
prepare_res "$name-fast.dat" "-O" "nitc with -O"
- run_compiler "nitc" ./nitc_3 -O
+ run_compiler "nitc" ../src/nitc_3 -O
plot "$name.gnu"
}
name="$FUNCNAME"
skip_test "$name" && return
prepare_res "$name-nitc.dat" "nitc" "nitc"
- run_compiler "nitc" ./nitc_3 -O
+ run_compiler "nitc" ../src/nitc_3 -O
prepare_res "$name-nitc-g.dat" "nitc-g" "nitc with --global"
- run_compiler "nitc-g" ./nitc_3 -O --global
- prepare_res "$name-nitg.dat" "nitg" "nitg"
- run_compiler "nitg" ./nitg
+ run_compiler "nitc-g" ../src/nitc_3 -O --global
+ prepare_res "$name-nitg-g.dat" "nitg-g" "nitg with --global"
+ run_compiler "nitg-g" ./nitg --global
prepare_res "$name-nitg-s.dat" "nitg-s" "nitg with --separate"
run_compiler "nitg-s" ./nitg --separate
prepare_res "$name-nitg-e.dat" "nitg-e" "nitg with --erasure"
name="$FUNCNAME"
skip_test "$name" && return
prepare_res "$name-nitc.dat" "nitc" "nitc"
- run_compiler "nitc" ./nitc_3 -O
+ run_compiler "nitc" ../src/nitc_3 -O
prepare_res "$name-nitc-malloc.dat" "nitc-malloc" "nitc with malloc"
- NIT_GC_OPTION="malloc" run_compiler "nitc" ./nitc_3 -O
+ NIT_GC_OPTION="malloc" run_compiler "nitc" ../src/nitc_3 -O
prepare_res "$name-nitc-bohem.dat" "nitc-boehm" "nitc with boehm"
- NIT_GC_OPTION="boehm" run_compiler "nitc" ./nitc_3 -O
+ NIT_GC_OPTION="boehm" run_compiler "nitc" ../src/nitc_3 -O
prepare_res "$name-nitg-e-nockeck-malloc.dat" "nitg-e-nc-malloc" "nitg with --erasure --no-check-autocast --no-check-erasure-cast and malloc"
- run_compiler "nitg-e-nc-malloc" ./nitg --erasure --no-check-autocast --no-check-erasure-cast --make-flags "CFLAGS=\"-O2 -DNOBOEHM\""
+ NIT_GC_OPTION="malloc" run_compiler "nitg-e-nc-malloc" ./nitg --erasure --no-check-autocast --no-check-erasure-cast
prepare_res "$name-nitg-e-nockeck.dat" "nitg-e-nc" "nitg with --erasure --no-check-autocast --no-check-erasure-cast"
run_compiler "nitg-e-nc" ./nitg --erasure --no-check-autocast --no-check-erasure-cast
prepare_res "$name-nitg-e.dat" "nitg-e" "nitg with --erasure"
name="$FUNCNAME"
skip_test "$name" && return
prepare_res "$name-nitg-e-malloc.dat" "nitg-e-malloc" "nitg with --erasure and malloc"
- run_compiler "nitg-e-malloc" ./nitg --erasure --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
- prepare_res "$name-nitg-e-noatomic.dat" "nitg-e-noatomic" "nitg with --erasure and no atomic"
- run_compiler "nitg-e-noatomic" ./nitg --erasure --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM_ATOMIC\""
+ NIT_GC_OPTION="malloc" run_compiler "nitg-e-malloc" ./nitg --erasure
prepare_res "$name-nitg-e.dat" "nitg-e" "nitg with --erasure"
run_compiler "nitg-e" ./nitg --erasure
plot "$name.gnu"
name="$FUNCNAME"
skip_test "$name" && return
prepare_res "$name-nitc.dat" "nitc" "nitc"
- for i in ../examples/hello_world.nit test_parser.nit nitg.nit; do
- bench_command `basename "$i" .nit` "" ./nitc_3 -O "$i" --no-cc
+ for i in ../examples/hello_world.nit ../src/test_parser.nit ../src/nitg.nit; do
+ bench_command `basename "$i" .nit` "" ../src/nitc_3 -O "$i" --no-cc
done
- prepare_res "$name-nitg.dat" "nitg" "nitg"
- for i in ../examples/hello_world.nit test_parser.nit nitg.nit; do
- bench_command `basename "$i" .nit` "" ./nitg "$i" --no-cc
+ prepare_res "$name-nitg.dat" "nitg-g" "nitg --global"
+ for i in ../examples/hello_world.nit ../src/test_parser.nit ../src/nitg.nit; do
+ bench_command `basename "$i" .nit` "" ./nitg --global "$i" --no-cc
+ done
+ prepare_res "$name-nitg-e.dat" "nitg-e" "nitg --separate"
+ for i in ../examples/hello_world.nit ../src/test_parser.nit ../src/nitg.nit; do
+ bench_command `basename "$i" .nit` "" ./nitg --separate "$i" --no-cc
done
prepare_res "$name-nitg-e.dat" "nitg-e" "nitg --erasure"
- for i in ../examples/hello_world.nit test_parser.nit nitg.nit; do
+ for i in ../examples/hello_world.nit ../src/test_parser.nit ../src/nitg.nit; do
bench_command `basename "$i" .nit` "" ./nitg --erasure "$i" --no-cc
done
plot "$name.gnu"
}
bench_compilation_time
-function bench_typetest_languages()
-{
- name="$FUNCNAME"
- skip_test "$name" && return
-
- t=t
- s=20
- seq="w2_h2 w50_h2 w2_h25 w50_h25"
- for b in $seq; do
- run_command ./nitg benchs/gen.nit
- run_command ./gen.bin "${t}_$b" "$b"
- done
-
- prepare_res "$name-g++.dat" "g++" "g++"
- for b in $seq; do
- run_command g++ "${t}_$b.cpp" -O2 -o "${t}_$b.g++.bin"
- bench_command "$b" "" "./${t}_$b.g++.bin" $s
- done
-
- prepare_res "$name-clang++.dat" "clang++" "clang++"
- for b in $seq; do
- run_command clang++ "${t}_$b.cpp" -O2 -o "${t}_$b.clang++.bin"
- bench_command "$b" "" "./${t}_$b.clang++.bin" $s
- done
-
- prepare_res "$name-java.dat" "java" "java"
- for b in $seq; do
- run_command javac ${t}_$b.java
- bench_command "$b" "" java "${t}_$b" $s
- done
-
- prepare_res "$name-scala.dat" "scala" "scala"
- for b in $seq; do
- run_command scalac ${t}_$b.scala
- bench_command "$b" "" scala "${t}_$b" $s
- done
-
- prepare_res "$name-cs.dat" "c#" "c#"
- for b in $seq; do
- run_command gmcs ${t}_$b.cs
- bench_command "$b" "" mono "${t}_$b.exe" $s
- done
-
- prepare_res "$name-es.dat" "es" "es"
- for b in $seq; do
- run_command ec -clean -finalize ${t}_$b/app${t}_$b.e
- chmod +x app${t}_$b
- mv app${t}_$b ${t}_$b.es.bin
- bench_command "$b" "" "./${t}_$b.es.bin" $s
- done
-
- prepare_res "$name-se.dat" "se" "se"
- for b in $seq; do
- run_command se compile -no_check app${t}_${b}_se.e -loadpath ${t}_${b}_se -o ${t}_$b.se.bin
- bench_command "$b" "" "./${t}_$b.se.bin" $s
- done
-
- #too slow
- #prepare_res "$name-nitg.dat" "nitg" "nitg"
- #for b in $seq; do
- # run_command ./nitg "${t}_$b.nit" -o "${t}_$b.nitg.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
- # bench_command "$b" "" "./${t}_$b.nitg.bin" $s
- #done
-
- prepare_res "$name-nitg-s.dat" "nitg-s" "nitg-s"
- for b in $seq; do
- run_command ./nitg ${t}_$b.nit --separate -o "${t}_$b.nitg-s.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
- bench_command "$b" "" "./${t}_$b.nitg-s.bin" $s
- done
-
- prepare_res "$name-nitg-su.dat" "nitg-su" "nitg-su"
- for b in $seq; do
- run_command ./nitg ${t}_$b.nit --separate --no-check-covariance -o "${t}_$b.nitg-su.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
- bench_command "$b" "" "./${t}_$b.nitg-su.bin" $s
- done
-
-
- prepare_res "$name-nitg-e.dat" "nitg-e" "nitg-e"
- for b in $seq; do
- run_command ./nitg ${t}_$b.nit --erasure -o "${t}_$b.nitg-e.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
- bench_command "$b" "" "./${t}_$b.nitg-e.bin" $s
- done
-
- prepare_res "$name-nitg-eu.dat" "nitg-eu" "nitg-eu"
- for b in $seq; do
- run_command ./nitg ${t}_$b.nit --erasure --no-check-covariance --no-check-erasure-cast -o "${t}_$b.nitg-eu.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
- bench_command "$b" "" "./${t}_$b.nitg-eu.bin" $s
- done
-
- plot "$name.gnu"
-}
-bench_typetest_languages
+if test -n "$html"; then
+ echo >>"$html" "</body></html>"
+fi
if test -n "$died"; then
echo "Some commands failed"
--- /dev/null
+#!/bin/bash
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This shell script helps running benchmarks
+
+# TODO: cleanup and libify the helper-parts
+
+source ./bench_plot.sh
+
+## CONFIGURATION OPTIONS ##
+
+# Default number of times a command must be run with bench_command
+# Can be overrided with 'the option -n'
+count=2
+
+### HELPER FUNCTIONS ##
+
+function die()
+{
+ echo >&2 "error: $*"
+ died=1
+}
+
+# Run a single command multiple time and store the execution times
+# in the current $res file.
+#
+# $1: title of the command
+# $2: long desription of the command
+# rest: the command to execute
+function bench_command()
+{
+ if [ "$dry_run" = "true" ]; then return; fi
+ local title="$1"
+ local desc="$2"
+ shift
+ shift
+ if test "$verbose" = true; then outputopts="/dev/stdout"; else outputopts="/dev/null"; fi
+ timeout="time.out"
+ echo "$title" > "$timeout"
+ echo "# $desc" >> "$timeout"
+ echo "\$ $@" >> "$timeout"
+ echo
+ echo "** [$title] $desc **"
+ echo " $ $@"
+
+ # Execute the commands $count times
+ for i in `seq 1 "$count"`; do
+ (ulimit -t 300; /usr/bin/time -f "%U" -o "$timeout" -a "$@") > $outputopts 2>&1 || die "$1: failed"
+ echo -n "$i. "
+ tail -n 1 "$timeout"
+ done
+
+ line=`compute_stats "$timeout"`
+ echo "$line ($res)"
+ echo $line >> "$res"
+ rm $timeout
+}
+
+# Run a simple command witout storing the execution time
+# Used to display command on verbose and skip long executions when dry_run is given
+# $@ command to execute
+function run_command()
+{
+ if [ "$dry_run" = "true" ]; then return; fi
+ echo " $ $@"
+ (ulimit -t 180; "$@") || die "$@: failed"
+}
+
+# Check if the test should be skiped according to its name
+# $1: name of the test
+# $2: description of the test
+# $NOTSKIPED: arguments
+function skip_test()
+{
+ if test -z "$NOTSKIPED"; then
+ echo "* $1"
+ return 0
+ fi
+ if test "$NOTSKIPED" = "all"; then
+ : # Execute anyway
+ elif echo "$1" | egrep "$NOTSKIPED" >/dev/null 2>&1; then
+ : # Found one to execute
+ else
+ return 0
+ fi
+ echo "*"
+ echo "* $1 *****"
+ echo "*"
+ return 1
+}
+
+## HANDLE OPTIONS ##
+
+function usage()
+{
+ echo "run_bench: [options]* benchname"
+ echo " -v: verbose mode"
+ echo " -n count: number of execution for each bar (default: $count)"
+ echo " --dry: Do not run the commands, just reuse the data and generate the graph"
+ echo " --fast: Run less and faster tests"
+ echo " -h: this help"
+}
+
+stop=false
+while [ "$stop" = false ]; do
+ case "$1" in
+ -v) verbose=true; shift;;
+ -h) usage; exit;;
+ -n) count="$2"; shift; shift;;
+ --dry) dry_run=true; shift;;
+ --fast) fast=true; shift;;
+ *) stop=true
+ esac
+done
+
+NOTSKIPED="$*"
+
+if test -z "$NOTSKIPED"; then
+ usage
+ echo "List of available benches:"
+ echo "* all: run all the benches"
+fi
+
+## COMPILE ENGINES
+cd ../src
+test -f ./nitc_3 || ./ncall.sh -O
+cd ../benchmarks
+test -f ./nitg || ../src/nitc_3 ../src/nitg.nit -O -v
+
+## EFFECTIVE BENCHS ##
+
+function bench_language()
+{
+ name="$1"
+ skip_test "$name" && return
+ rootdir=`pwd`
+ basedir="./${name}.out"
+
+ mkdir $basedir
+
+ t=t
+ s=20
+ seq="2 4 8"
+ for b in $seq; do
+ run_command ./nitg languages/$name.nit -o $basedir/$name.bin
+ run_command $basedir/$name.bin $basedir "${t}_$b" "$b"
+ done
+
+ prepare_res $basedir/$name-g++.dat "g++" "g++"
+ cppdir="${basedir}/cpp"
+ for b in $seq; do
+ run_command g++ "${cppdir}/${t}_$b.cpp" -O2 -o "${cppdir}/${t}_$b.g++.bin"
+ bench_command "$b" "" "${cppdir}/${t}_$b.g++.bin" $s
+ done
+
+ prepare_res $basedir/$name-clang++.dat "clang++" "clang++"
+ for b in $seq; do
+ run_command clang++ "${cppdir}/${t}_$b.cpp" -O2 -o "${cppdir}/${t}_$b.clang++.bin"
+ bench_command "$b" "" "${cppdir}/${t}_$b.clang++.bin" $s
+ done
+
+ prepare_res $basedir/$name-java.dat "java" "java"
+ javadir="${basedir}/java"
+ for b in $seq; do
+ run_command javac "${javadir}/${t}_$b.java"
+ bench_command "$b" "" java -cp "${javadir}/" "${t}_$b" $s
+ done
+
+ prepare_res $basedir/$name-gcj.dat "gcj" "gcj"
+ for b in $seq; do
+ run_command gcj --main=${t}_$b -O2 "${javadir}/${t}_$b.java" -o "${javadir}/${t}_$b.gcj.bin"
+ bench_command "$b" "" "${javadir}/${t}_$b.gcj.bin" $s
+ done
+
+ prepare_res $basedir/$name-scala.dat "scala" "scala"
+ scaladir="${basedir}/scala"
+ for b in $seq; do
+ run_command scalac "${scaladir}/${t}_$b.scala" -d "${scaladir}"
+ bench_command "$b" "" scala -cp "${scaladir}/" "${t}_$b" $s
+ done
+
+ prepare_res $basedir/$name-cs.dat "c#" "c#"
+ csdir="${basedir}/cs"
+ for b in $seq; do
+ run_command gmcs "$csdir/${t}_$b.cs"
+ bench_command "$b" "" mono "$csdir/${t}_$b.exe" $s
+ done
+
+ prepare_res $basedir/$name-es.dat "es" "es"
+ esdir="${basedir}/es"
+ for b in $seq; do
+ cd $esdir
+ run_command ec -clean -finalize ${t}_$b/app${t}_$b.e
+ chmod +x app${t}_$b
+ mv app${t}_$b ${t}_$b.es.bin
+ cd $rootdir
+ bench_command "$b" "" "$esdir/${t}_$b.es.bin" $s
+ done
+
+ prepare_res $basedir/$name-se.dat "se" "se"
+ sedir="${basedir}/se"
+ for b in $seq; do
+ cd $sedir
+ run_command se compile -no_check app${t}_${b}_se.e -loadpath ${t}_${b}_se -o ${t}_$b.se.bin
+ cd $rootdir
+ bench_command "$b" "" "$sedir/${t}_$b.se.bin" $s
+ done
+
+ nitdir="${basedir}/nit"
+ prepare_res $nitdir/$name-nitg.dat "nitg" "nitg"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --global -o "$nitdir/${t}_$b.nitg.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.nitg.bin" $s
+ done
+
+ prepare_res $nitdir/$name-nitg-s.dat "nitg-s" "nitg-s"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --separate -o "$nitdir/${t}_$b.nitg-s.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.nitg-s.bin" $s
+ done
+
+<<XXX
+ tg="nitg-s-bm"
+ prepare_res $nitdir/$name-$tg.dat "$tg" "$tg"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --separate --bm-typing -o "$nitdir/${t}_$b.$tg.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.$tg.bin" $s
+ done
+
+ tg="nitg-s-pha"
+ prepare_res $nitdir/$name-$tg.dat "$tg" "$tg"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --separate --phand-typing -o "$nitdir/${t}_$b.$tg.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.$tg.bin" $s
+ done
+
+ tg="nitg-s-phm"
+ prepare_res $nitdir/$name-$tg.dat "$tg" "$tg"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --separate --phmod-typing -o "$nitdir/${t}_$b.$tg.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.$tg.bin" $s
+ done
+
+ prepare_res $nitdir/$name-nitg-su.dat "nitg-su" "nitg-su"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --separate --no-check-covariance -o "$nitdir/${t}_$b.nitg-su.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.nitg-su.bin" $s
+ done
+
+ prepare_res $nitdir/$name-nitg-e.dat "nitg-e" "nitg-e"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --erasure -o "$nitdir/${t}_$b.nitg-e.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.nitg-e.bin" $s
+ done
+
+ prepare_res $nitdir/$name-nitg-eu.dat "nitg-eu" "nitg-eu"
+ for b in $seq; do
+ run_command ./nitg $nitdir/${t}_$b.nit --erasure --no-check-covariance --no-check-erasure-cast -o "$nitdir/${t}_$b.nitg-eu.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+ bench_command "$b" "" "$nitdir/${t}_$b.nitg-eu.bin" $s
+ done
+XXX
+
+ plot $basedir/$name.gnu
+}
+
+for name in languages/*.nit; do
+ n=`basename $name .nit`
+ bench_language $n
+done
+
+if test -n "$died"; then
+ echo "Some commands failed"
+ exit 1
+fi
+exit 0
--- /dev/null
+#!/bin/bash
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This shell script generate gnuplot results
+
+# perl function to compute min/max/avg.
+# used by bench_command
+#
+# $1: file
+# return: first min max avg label
+function compute_stats()
+{
+ file="$1"
+ # Compute statistics
+ perl - "$file" <<'END'
+ @lines = ();
+ $first = undef;
+ chomp($label = <>);
+ while(<>) {
+ chomp;
+ if (/^\d/) {
+ if (defined $first) {
+ push @lines, $_;
+ } else {
+ $first = $_;
+ }
+ }
+ }
+ $len = scalar @lines;
+ if ($len) {
+ @lines = sort {$a <=> $b} @lines;
+ $min = $lines[0];
+ $max = $lines[$#lines];
+ $avg = 0;
+ for $i (@lines) { $avg += $i; }
+ $avg = $avg / $len;
+ print "${first} ${min} ${max} ${avg} \"${label}\"\n";
+ } else {
+ print "${first} ${first} ${first} ${first} \"${label}\"\n";
+ }
+END
+}
+
+# Create a new $res to be used in the next plot
+#
+# $1 = resfile
+# $2 = title
+# $3 = description
+function prepare_res()
+{
+ echo
+ echo "# [$2] $3 #"
+ if test -n "$html"; then
+ echo >>"$html" "<p>[$2] $3 <a href=\"$1\">data</a></p>"
+ fi
+ res=$1
+ if [ "$plots" = "" ]; then
+ plots="plot '$1' using 4:2:3:xticlabels(5) ti '$2'"
+ else
+ plots="$plots, '$1' using 4:2:3 ti '$2'"
+ fi
+ if [ "$dry_run" = "true" ]; then return; fi
+ echo "# [$2] $3 ; count=$count" > "$res"
+ echo "# first min max avg title" >> "$res"
+}
+
+# Plot the last $res as an histogram
+# $1: plot file (eg toto.gnu)
+function plot()
+{
+ cat >"$1" <<END
+set auto x;
+set yrange [0:];
+set style data histogram;
+set style histogram cluster gap 2;
+set style histogram errorbars linewidth 1;
+set style fill solid 0.3 border -1;
+set bars front;
+set boxwidth 0.9;
+set xtic nomirror rotate by -45 scale 0 font ',8';
+set title "$1 ; avg. on $count-1 runs"
+set ylabel "time (s)"
+$plots
+END
+plots=
+
+if test -n "$html"; then
+ echo "# gnuplot $1"
+ bn=`basename "$1" .gnu`
+ gnuplot -e "set term png; set output \"$bn.png\"" "$1"
+ echo gnuplot -e "set term png; set output \"$bn.png\"" "$1"
+
+ echo >>"$html" "<img src=\"$bn.png\"/>"
+else
+ echo "# gnuplot -p $1"
+ gnuplot -p "$1"
+fi
+}
+
+## GLOBAL VARIABLES ##
+
+# The current $res (set by prepare_res, used by bench_command)
+res=
+
+# The current stuff to plot (set by prepare_res, used by plot)
+plots=
+
+# The name of the html file if output is set to html
+html=
--- /dev/null
+#!/usr/bin/env nit
+
+# Microbenchmak generation for multiple language
+# Just a quick an dirty Nit script file :)
+
+# This benchmark focuses on effects of the hierarchy dept
+# on the typetest performances
+
+# class Root
+# class Klass[E] super Root
+# class C1...CX super Root
+# Klass[CX] isa Klass[C1]
+
+class Klass
+ var id: Int
+ var supers = new Array[Klass]
+ var all_supers = new HashSet[Klass]
+ redef fun to_s
+ do
+ return "C{id}"
+ end
+end
+
+class Generator
+
+ var classes = new Array[Klass]
+
+ var dept writable = 5
+ var loops writable = 50000
+ var middle writable = 0
+ var dry writable = false
+ var check writable = false
+
+ fun genhier
+ do
+ var s: nullable Klass = null
+ for d in [1..dept] do
+ var c = new Klass(d)
+
+ classes.add(c)
+ c.all_supers.add(c)
+ if s != null then
+ c.supers.add(s)
+ c.all_supers.add_all(s.all_supers)
+ end
+ s = c
+ end
+ middle = (dept + 1) / 2
+ end
+
+ var file: nullable OFStream = null
+ fun write(str: String)
+ do
+ file.write(str)
+ file.write("\n")
+ end
+
+ fun initnit(res: Array[String]) is abstract
+ fun testnit: String do return "true"
+
+ fun writenit(dir: String, name: String)
+ do
+ dir = "{dir}/nit"
+ dir.mkdir
+ file = new OFStream.open("{dir}/{name}.nit")
+
+ write "class Root\n\tfun id: Int do return 0\nend"
+ for c in classes do
+ write "class {c}[E]"
+ if c.supers.is_empty then
+ write "\tsuper Root"
+ else for s in c.supers do
+ write "\tsuper {s}[E]"
+ end
+ write "\tredef fun id do return {c.id}"
+ write "end"
+ end
+
+ write "fun test(a,b: Root, loops, start: Int)"
+ write "do"
+ write "var x = start"
+ write "var i = 0"
+ write "while i < loops do"
+ write "\tvar j = 0"
+ write "\twhile j < loops do"
+ var test = "true"
+ if not dry then test = testnit
+ write "\t\tif {test} and x >= 0 then"
+ if check then write "\t\tx += 1"
+ write "\telse"
+ write "\t\t\tx = x - 1 + i - j"
+ write "\t\t\ta = b"
+ write "\t\tend"
+ write "\t\tj += 1"
+ write "\tend"
+ write "\ti += 1"
+ write "end"
+ write "print x"
+ write "end"
+
+ var ia = new Array[String]
+ initnit(ia)
+ write "var a: Root = {ia.first}"
+ write "var b: Root = a"
+ for i in ia do
+ write "\t\t\tif a.id > 0 then a = {i}"
+ end
+ write "test(b, b, 10, -100)"
+ write "test(a, a, {loops}, 0)"
+
+ file.close
+ end
+
+ fun initjava(res: Array[String], interfaces: Bool) is abstract
+ fun testjava(interfaces: Bool): String do return "true"
+ fun writejava(dir: String, name: String, interfaces: Bool)
+ do
+ dir = "{dir}/java"
+ dir.mkdir
+ file = new OFStream.open("{dir}/{name}.java")
+
+ var cl = ""
+ if interfaces then cl = "X"
+ write "class {name} \{"
+ if interfaces then
+ write "static interface Root\n\t\{ int id(); \}"
+ else
+ write "static class Root\n\t\{ int id() \{ return 0;\} \}"
+ end
+ for c in classes do
+ if interfaces then
+ write "static interface {c}<E> "
+ else
+ write "static class {c}<E> "
+ end
+ if c.supers.is_empty then
+ write "\textends Root"
+ else for s in [c.supers.first] do
+ write "\textends {s}<E>"
+ end
+ if interfaces then
+ write "\{\}"
+ write "static class X{c}<E> implements {c}<E>"
+ end
+ write "\{"
+ write "\tpublic int id() \{ return {c.id}; \}"
+ write "\}"
+ end
+
+ write "static public void main(String args[]) \{"
+ var ia = new Array[String]
+ initjava(ia, interfaces)
+ write "Root a = {ia.first};"
+ write "Root b = a;"
+ for i in ia do
+ write "\t\t\tif (a.id() > 0) a = {i};"
+ end
+ write "\ttest(b, b, 10, -100);"
+ write "\ttest(a, a, {loops}, 0);"
+ write "\}"
+
+ write "static public void test(Root a, Root b, int loops, int start) \{"
+ write "\tint x = start;"
+ write "\tfor(int i = 0; i < loops; i++) \{"
+ write "\t\tfor(int j = 0; j < loops; j++) \{"
+ var test = "true"
+ if not dry then test = testjava(interfaces)
+ write "\t\t\tif({test} && x>=0) \{"
+ if check then write "\t\t\t\tx = x + 1;"
+ write "\t\t\t\} else \{ x = x - 1 + i - j; a = b;\}"
+ #write "\t\t\t\} else \{ x = x - 1; a = b;\}"
+ write "\t\t}"
+ write "\t\}"
+ write "\tSystem.out.println(x);"
+ write "\}"
+ write "\}"
+ file.close
+ end
+
+ fun initcsharp(res: Array[String], interfaces: Bool) is abstract
+ fun testcsharp(interfaces: Bool): String do return "true"
+ fun writecsharp(dir: String, name: String, interfaces: Bool)
+ do
+ dir = "{dir}/cs"
+ dir.mkdir
+ file = new OFStream.open("{dir}/{name}.cs")
+
+ var cl = ""
+ if interfaces then cl = "X"
+ write "class {name} \{"
+ if interfaces then
+ write "interface Root\n\t\{ int Id(); \}"
+ else
+ write "class Root\n\t\{ public int Id() \{ return 0;\} \}"
+ end
+ for c in classes do
+ if interfaces then
+ write "interface {c}<out E> "
+ else
+ write "class {c}<E> "
+ end
+ if c.supers.is_empty then
+ write "\t: Root"
+ else for s in [c.supers.first] do
+ write "\t: {s}<E>"
+ end
+ if interfaces then
+ write "\{\}"
+ write "class X{c}<E> : {c}<E>"
+ end
+ write "\{"
+ write "\tpublic int Id() \{ return {c.id}; \}"
+ write "\}"
+ end
+
+ write "static void Main(string[] args) \{"
+ var ia = new Array[String]
+ initcsharp(ia, interfaces)
+ write "Root a = {ia.first};"
+ write "Root b = a;"
+ for i in ia do
+ write "\t\t\tif (a.Id() > 0) a = {i};"
+ end
+ write "\tTest(b, b, 10, -100);"
+ write "\tTest(a, a, {loops}, 0);"
+ write "\}"
+
+ write "static void Test(Root a, Root b, int loops, int start) \{"
+ write "\tint x = start;"
+ write "\tfor(int i = 0; i < loops; i++) \{"
+ write "\t\tfor(int j = 0; j < loops; j++) \{"
+ var test = "true"
+ if not dry then test = testcsharp(interfaces)
+ write "\t\t\tif({test} && x>=0) \{"
+ if check then write "\t\t\t\tx++;"
+ write "\} else \{ x = x - 1 + i - j; a = b; \};"
+ write "\t\t}"
+ write "\t\}"
+ write "\tSystem.Console.WriteLine(x);"
+ write "\}"
+ write "\}"
+ file.close
+ end
+
+ fun initscala(res: Array[String], interfaces: Bool) is abstract
+ fun testscala(interfaces: Bool): String do return "true"
+ fun writescala(dir: String, name: String, interfaces: Bool)
+ do
+ dir = "{dir}/scala"
+ dir.mkdir
+ file = new OFStream.open("{dir}/{name}.scala")
+
+ var cl = ""
+ write "object {name} \{"
+ write "class Root\n\t\{ def id: Int = 0 \}"
+ for c in classes do
+ if interfaces then
+ write "trait {c}[+E] "
+ else
+ write "class {c}[+E] "
+ end
+ if c.supers.is_empty then
+ write "\textends Root"
+ else for s in [c.supers.first] do
+ write "\textends {s}[E]"
+ end
+ if interfaces then
+ write "\{\}"
+ write "class X{c}[E] extends {c}[E]"
+ end
+ write "\{"
+ write "\toverride def id: Int = {c.id}"
+ write "\}"
+ end
+
+ write "def main(args: Array[String]) = \{"
+ var ia = new Array[String]
+ initscala(ia, interfaces)
+ write "var a: Root = {ia.first};"
+ write "var b: Root = a;"
+ for i in ia do
+ write "\t\t\tif (a.id > 0) a = {i};"
+ end
+ write "\ttest(b, b, 10, -100)"
+ write "\ttest(a, a, {loops}, 0)"
+ write "\}"
+
+ write "def test(aa:Root, b:Root, l: Int, start: Int) = \{"
+ write "\tvar a = aa"
+ write "\tvar x = start"
+ write "\tvar loops = l"
+ write "\tvar i = 0"
+ write "\twhile (i < loops) \{"
+ write "\t\tvar j = 0"
+ write "\t\twhile (j < loops) \{"
+ var test = "true"
+ if not dry then test = testscala(interfaces)
+ write "\t\tif ({test} && x>=0) \{"
+ if check then write "\t\t\tx += 1;"
+ #write "\} else \{ x = x - 1 + i - j; a = b; \}"
+ write "\} else \{ x = x - 1; a = b; \}"
+ write "\t\tj += 1"
+ write "\t\t\}"
+ write "\ti += 1"
+ write "\t\}"
+ write "\t\t\tprintln(x)"
+ write "\}"
+ write "\}"
+
+ file.close
+ end
+
+ fun initcpp(res: Array[String]) is abstract
+ fun testcpp: String do return "true"
+ fun writecpp(dir: String, name: String)
+ do
+ dir = "{dir}/cpp"
+ dir.mkdir
+ file = new OFStream.open("{dir}/{name}.cpp")
+
+ write "#include <iostream>"
+ write "#include <stdlib.h>"
+ write "class Root\n\t\{ public: virtual int id() \{ return 0;\} \};"
+ for c in classes do
+ write "template<class E>"
+ write "class {c} "
+ if c.supers.is_empty then
+ write "\t: public virtual Root"
+ else for s in [c.supers.first] do
+ write "\t: public virtual {s}<E>"
+ end
+ write "\{"
+ write "\tpublic: virtual int id() \{ return {c.id}; \}"
+ write "\};"
+ end
+
+ write "void test(Root *a, Root *b, int loops, int start) \{"
+ write "\tint x = start;"
+ write "\tfor(int i = 0; i < loops; i++) \{"
+ write "\t\tfor(int j = 0; j < loops; j++) \{"
+ var test = "true"
+ if not dry then test = testcpp
+ write "\t\tif({test} && x>=0) \{"
+ if check then write "\t\t\tx += 1;"
+ write "\} else \{ x = x - 1 + i - j; a = b;\}"
+ write "\t\t}"
+ write "\t\}"
+ write "\tstd::cout << x << std::endl;"
+ write "\}"
+
+ write "int main(int argc, char **argv) \{"
+ var ia = new Array[String]
+ initcpp(ia)
+ write "Root *a = {ia.first};"
+ write "Root *b = a;"
+ for i in ia do
+ write "\t\t\tif (a->id() > 0) a = {i};"
+ end
+ write "\ttest(b, b, 10, -100);"
+ write "\ttest(a, a, {loops}, 0);"
+ write "\}"
+
+ file.close
+ end
+
+ fun inite(res: Array[String], se: Bool) is abstract
+ fun teste(se: Bool): String do return "true"
+ fun locale(se: Bool) do end
+ fun writee(dir: String, name: String, se: Bool)
+ do
+ if se then
+ dir = "{dir}/se/{name}"
+ else
+ dir = "{dir}/es/{name}"
+ end
+ dir.mkdir
+ file = new OFStream.open("{dir}/root.e")
+
+ var istk = ""
+ if se then istk = " is"
+ write "class ROOT"
+ write "feature id: INTEGER {istk} do Result := 0 end"
+ write "end"
+ file.close
+
+ for c in classes do
+ file = new OFStream.open("{dir}/{c}.e")
+ write "class {c}[E] "
+ if c.supers.is_empty then
+ write "\tinherit ROOT"
+ else for s in [c.supers.first] do
+ write "\tinherit {s}[E]"
+ end
+ write "\t\tredefine id end"
+ write "feature"
+ write "\tid: INTEGER {istk} do Result := {c.id} end"
+ write "end"
+ file.close
+ end
+
+ file = new OFStream.open("{dir}/app{name}.e")
+ write "class APP{name.to_upper}"
+ if se then
+ write "insert ARGUMENTS"
+ end
+ write "create make"
+ write "feature"
+
+ if se then
+ write "\tmake{istk}"
+ else
+ write "\tmake(args: ARRAY[STRING]){istk}"
+ end
+ write "\t\tlocal"
+ write "\t\t\ta: ROOT"
+ write "\t\t\tb: ROOT"
+ write "\t\tdo"
+ var ia = new Array[String]
+ inite(ia,se)
+ write "{ia.first}"
+ write "b := a"
+ for i in ia do
+ write "\t\t\tif a.id > 0 then {i} end"
+ end
+ write "\t\t\ttest(b, b, 10, -100)"
+ write "\t\t\ttest(a, a, {loops}, 0)"
+ write "\t\tend"
+
+ write "\ttest(aa: ROOT; b: ROOT; l: INTEGER; start: INTEGER){istk}"
+ write "\t\tlocal"
+ write "\t\t\ta: ROOT"
+ write "\t\t\ti: INTEGER"
+ write "\t\t\tj: INTEGER"
+ write "\t\t\tx: INTEGER"
+ locale(se)
+ write "\t\t\tloops: INTEGER"
+ write "\t\tdo"
+ write "\t\t\ta := aa"
+ write "\t\t\tx := start"
+ write "\t\t\tloops := l"
+ write "\t\t\tfrom i := 0 until i>=loops loop"
+ write "\t\t\t\tfrom j := 0 until j>=loops loop"
+ var test = "True"
+ if not dry then test = teste(se)
+ write "\t\t\t\t\tif {test} and then x >= 0 then"
+ if check then write "\t\t\t\t\tx := x + 1"
+ write "\t\t\t\t\telse x := x - 1 + i - j; a := b end"
+ write "\t\t\t\t\tj := j + 1"
+ write "\t\t\t\tend"
+ write "\t\t\t\ti := i + 1"
+ write "\t\t\tend"
+ write "\t\t\tprint(x.out)"
+ write "\t\t\tprint(\"%N\")"
+ write "\t\tend"
+ write "end"
+ file.close
+ end
+
+ var count = false
+
+ fun genall
+ do
+ var g = self
+ var outdir = args.first
+ var name = args[1]
+ var use_interfaces = true
+ if args.length > 2 then g.dept = args[2].to_i
+ if args.length > 3 then use_interfaces = false
+
+ g.genhier
+
+ g.writenit(outdir, name)
+ g.writejava(outdir, name, use_interfaces)
+ g.writecsharp(outdir, name, use_interfaces)
+ g.writescala(outdir, name, use_interfaces)
+ g.writecpp(outdir, name)
+ g.writee(outdir, "{name}_se", true)
+ g.writee(outdir, name, false)
+ end
+end
+
+var g = new Generator
+g.genall
--- /dev/null
+#!/usr/bin/env nit
+
+import bench_base
+
+class TypeTestCovarGenerator
+ super Generator
+
+ redef fun initnit(res)
+ do
+ for c in classes do
+ res.add "new {classes.first}[{c}[Root]]"
+ end
+
+ end
+
+ redef fun testnit
+ do
+ return "a isa {classes.first}[{classes[middle]}[Root]]"
+ end
+
+ redef fun initjava(res, interfaces)
+ do
+
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{classes.first}<{c}<Root>>()"
+ end
+ end
+
+ redef fun testjava(interfaces)
+ do
+ return "a instanceof {classes.first}"
+ end
+
+ redef fun initcsharp(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{classes.first}<{c}<Root>>()"
+ end
+ end
+
+ redef fun testcsharp(interfaces)
+ do
+ return "a is {classes.first}<{classes[middle]}<Root>>"
+ end
+
+ redef fun initscala(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{classes.first}[{c}[Root]]()"
+ end
+ end
+
+ redef fun testscala(interfaces)
+ do
+ return "a.isInstanceOf[{classes.first}[{classes[middle]}[Root]]]"
+ end
+
+ redef fun initcpp(res)
+ do
+ for c in classes do
+ res.add "new {classes.first}<{c}<Root>*>()"
+ end
+ end
+
+ redef fun testcpp
+ do
+ write "\t\t\t{classes.first}<{classes[middle]}<Root>*> *to = dynamic_cast<{classes.first}<{classes[middle]}<Root>*>*>(a);"
+ return "to != 0"
+ end
+
+ redef fun inite(res, se)
+ do
+ for c in classes do
+ res.add "create \{{classes.first}[{c}[ROOT]]\} a"
+ end
+ end
+
+ redef fun teste(se)
+ do
+ write "\t\t\t\t\tto ?= a"
+ return "to /= Void"
+ end
+
+ redef fun locale(se)
+ do
+ write "\t\t\tto: {classes.first}[{classes[middle]}[ROOT]]"
+ end
+end
+
+var g = new TypeTestCovarGenerator
+g.genall
--- /dev/null
+#!/usr/bin/env nit
+
+import bench_base
+
+class TypeTestDepthGenerator
+ super Generator
+
+ redef fun initnit(res)
+ do
+ for c in classes do
+ res.add "new {c}[Root]"
+ end
+
+ end
+
+ redef fun testnit
+ do
+ return "a isa {classes[middle]}[Root]"
+ end
+
+ redef fun initjava(res, interfaces)
+ do
+
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{c}<Root>()"
+ end
+ end
+
+ redef fun testjava(interfaces)
+ do
+ return "a instanceof {classes[middle]}"
+ end
+
+ redef fun initcsharp(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{c}<Root>()"
+ end
+ end
+
+ redef fun testcsharp(interfaces)
+ do
+ return "a is {classes[middle]}<Root>"
+ end
+
+ redef fun initscala(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{c}[Root]()"
+ end
+ end
+
+ redef fun testscala(interfaces)
+ do
+ return "a.isInstanceOf[{classes[middle]}[Root]]"
+ end
+
+ redef fun initcpp(res)
+ do
+ for c in classes do
+ res.add "new {c}<Root>()"
+ end
+ end
+
+ redef fun testcpp
+ do
+ write "\t\t\t{classes[middle]}<Root> *to = dynamic_cast<{classes[middle]}<Root>*>(a);"
+ return "to != 0"
+ end
+
+ redef fun inite(res, se)
+ do
+ for c in classes do
+ res.add "create \{{c}[ROOT]\} a"
+ end
+ end
+
+ redef fun teste(se)
+ do
+ write "\t\t\t\t\tto ?= a"
+ return "to /= Void"
+ end
+
+ redef fun locale(se)
+ do
+ write "\t\t\tto: {classes[middle]}[ROOT]"
+ end
+end
+
+var g = new TypeTestDepthGenerator
+g.genall
--- /dev/null
+#!/usr/bin/env nit
+
+import bench_base
+import pipeline
+
+class TypeTestDepthNotGenerator
+ super Generator
+
+ redef fun initnit(res)
+ do
+ res.add "new {classes.last}[Root]"
+ for c in classes.skip_tail(1) do
+ res.add "new {c}[Root]"
+ end
+ end
+
+ redef fun testnit
+ do
+ return "not a isa {classes.last}[Root]"
+ end
+
+ redef fun initjava(res, interfaces)
+ do
+
+ var tagc = ""
+ if interfaces then tagc = "X"
+ res.add "new {tagc}{classes.last}<Root>()"
+ for c in classes.skip_tail(1) do
+ res.add "new {tagc}{c}<Root>()"
+ end
+ end
+
+ redef fun testjava(interfaces)
+ do
+ return "!(a instanceof {classes.last})"
+ end
+
+ redef fun initcsharp(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ res.add "new {tagc}{classes.last}<Root>()"
+ for c in classes.skip_tail(1) do
+ res.add "new {tagc}{c}<Root>()"
+ end
+ end
+
+ redef fun testcsharp(interfaces)
+ do
+ return "!(a is {classes.last}<Root>)"
+ end
+
+ redef fun initscala(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ res.add "new {tagc}{classes.last}[Root]()"
+ for c in classes.skip_tail(1) do
+ res.add "new {tagc}{c}[Root]()"
+ end
+ end
+
+ redef fun testscala(interfaces)
+ do
+ return "!a.isInstanceOf[{classes.last}[Root]]"
+ end
+
+ redef fun initcpp(res)
+ do
+ res.add "new {classes.last}<Root>()"
+ for c in classes.skip_tail(1) do
+ res.add "new {c}<Root>()"
+ end
+ end
+
+ redef fun testcpp
+ do
+ write "\t\t\t{classes.last}<Root> *to = dynamic_cast<{classes.last}<Root>*>(a);"
+ return "to == 0"
+ end
+
+ redef fun inite(res, se)
+ do
+ res.add "create \{{classes.last}[ROOT]\} a"
+ for c in classes.skip_tail(1) do
+ res.add "create \{{c}[ROOT]\} a"
+ end
+ end
+
+ redef fun teste(se)
+ do
+ write "\t\t\t\t\tto ?= a"
+ return "to = Void"
+ end
+
+ redef fun locale(se)
+ do
+ write "\t\t\tto: {classes.last}[ROOT]"
+ end
+end
+
+var g = new TypeTestDepthNotGenerator
+g.genall
--- /dev/null
+#!/usr/bin/env nit
+
+import bench_base
+
+class TypeTestFtsNestingGenerator
+ super Generator
+
+ fun clanit(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}[" * i)
+ s.append("Root")
+ s.append("]" * i)
+ return s.to_s
+ end
+
+ redef fun initnit(res)
+ do
+ for i in [1..dept] do
+ res.add "new {clanit(i)}"
+ end
+
+ end
+
+ redef fun testnit
+ do
+ return "a isa {clanit(middle)}"
+ end
+
+ fun clajava(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}<" * i)
+ s.append("Root")
+ s.append(">" * i)
+ return s.to_s
+ end
+
+ redef fun initjava(res, interfaces)
+ do
+
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for i in [1..dept] do
+ res.add "new {tagc}{clajava(i)}()"
+ end
+ end
+
+ redef fun testjava(interfaces)
+ do
+ return "a instanceof {classes.first}<?>"
+ end
+
+ redef fun initcsharp(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for i in [1..dept] do
+ res.add "new {tagc}{clajava(i)}()"
+ end
+ end
+
+ redef fun testcsharp(interfaces)
+ do
+ return "a is {clajava(middle)}"
+ end
+
+ redef fun initscala(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for i in [1..dept] do
+ res.add "new {tagc}{clanit(i)}()"
+ end
+ end
+
+ redef fun testscala(interfaces)
+ do
+ return "a.isInstanceOf[{clanit(middle)}]"
+ end
+
+ fun clacpp(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}<" * i)
+ s.append("Root")
+ s.append("*>" * i)
+ return s.to_s
+ end
+
+ redef fun initcpp(res)
+ do
+ for i in [1..dept] do
+ res.add "new {clacpp(i)}()"
+ end
+ end
+
+ redef fun testcpp
+ do
+ write "\t\t\t{clacpp(middle)} *to = dynamic_cast<{clacpp(middle)}*>(a);"
+ return "to != 0"
+ end
+
+ fun clae(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}[" * i)
+ s.append("ROOT")
+ s.append("]" * i)
+ return s.to_s
+ end
+
+ redef fun inite(res, se)
+ do
+ for i in [1..dept] do
+ res.add "create \{{clae(i)}\} a"
+ end
+ end
+
+ redef fun teste(se)
+ do
+ write "\t\t\t\t\tto ?= a"
+ return "to /= Void"
+ end
+
+ redef fun locale(se)
+ do
+ write "\t\t\tto: {clae(middle)}"
+ end
+end
+
+var g = new TypeTestFtsNestingGenerator
+g.genall
--- /dev/null
+/* This file is part of NIT ( http://www.nitlanguage.org ).
+ *
+ * Copyright 2006-2009 Jean Privat <jean@pryen.org>
+ *
+ * This file is free software, which comes along with NIT. This software is
+ * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. You can modify it is you want, provided this header
+ * is kept unaltered, and a notification of the changes is added.
+ * You are allowed to redistribute it and sell it, alone or is a part of
+ * another product.
+ */
+
+#include "gc_chooser.h"
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef ANDROID
+ #include <android/log.h>
+ #define PRINT_ERROR(...) ((void)__android_log_print(ANDROID_LOG_WARN, "nit", __VA_ARGS__))
+#else
+ #define PRINT_ERROR(...) ((void)fprintf(stderr, __VA_ARGS__))
+#endif
+
+enum gc_option { gc_opt_large, gc_opt_malloc, gc_opt_boehm } gc_option;
+
+#ifdef WITH_LIBGC
+#define GC_DEBUG
+#include <gc/gc.h>
+#endif
+
+void *nit_raw_alloc(size_t s0)
+{
+ switch (gc_option) {
+ case gc_opt_malloc: return malloc(s0);
+#ifdef WITH_LIBGC
+ case gc_opt_boehm: return GC_MALLOC_ATOMIC(s0);
+#endif
+
+ default: return nit_alloc(s0);
+ }
+}
+
+static void *large_alloc(size_t s0)
+{
+ static char * alloc_pos = NULL;
+ static size_t alloc_size = 0;
+ void * res;
+ size_t s = ((s0+3)/4)*4;
+ if(alloc_size < s) {
+ alloc_size = s + 1024*1024;
+ alloc_pos = (char *)calloc(alloc_size, 1);
+ }
+ res = alloc_pos;
+ alloc_size -= s;
+ alloc_pos += s;
+ return res;
+}
+
+void nit_gcollect(void) {
+ switch (gc_option) {
+#ifdef WITH_LIBGC
+ case gc_opt_boehm: GC_gcollect(); break;
+#endif
+ }
+}
+
+void *nit_alloc(size_t s0)
+{
+ switch (gc_option) {
+#ifdef WITH_LIBGC
+ case gc_opt_boehm: return GC_MALLOC(s0);
+#endif
+ case gc_opt_malloc: return calloc(1, s0);
+ case gc_opt_large:
+ default: return large_alloc(s0);
+ }
+}
+
+void initialize_gc_option(void) {
+ /* GC default */
+ char *def;
+#ifdef WITH_LIBGC
+ gc_option = gc_opt_boehm;
+ def = "boehm";
+#else
+ gc_option = gc_opt_malloc;
+ def = "malloc";
+#endif
+
+ /* Process GC runtime selection */
+ if (getenv("NIT_GC_OPTION") != NULL) {
+ char *opt=getenv("NIT_GC_OPTION");
+ if (strcmp(opt, "boehm")==0) {
+#ifdef WITH_LIBGC
+ gc_option = gc_opt_boehm;
+#else
+ PRINT_ERROR( "Compiled without Boehm GC support. Using default '%s'.\n", def);
+#endif
+ } else if (strcmp(opt, "malloc")==0) {
+ gc_option = gc_opt_malloc;
+ } else if (strcmp(opt, "large")==0) {
+ gc_option = gc_opt_large;
+ } else if (strcmp(opt, "help")==0) {
+ PRINT_ERROR( "NIT_GC_OPTION accepts 'malloc', 'large'"
+#ifdef WITH_LIBGC
+ ", 'boehm'"
+#endif
+ ". Default is '%s'.\n", def);
+ exit(1);
+ } else {
+ PRINT_ERROR( "Invalid GC option in NIT_GC_OPTION environment variable. Using default '%s'.\n", def);
+ }
+ }
+
+ /* Initialize GC (if needed) */
+ switch(gc_option) {
+#ifdef WITH_LIBGC
+ case gc_opt_boehm: GC_INIT(); break;
+#endif
+ default: break; /* Nothing */
+ }
+}
--- /dev/null
+#ifndef NIT_GC_CHOOSER_H
+#define NIT_GC_CHOOSER_H
+
+/* This file is part of NIT ( http://www.nitlanguage.org ).
+ *
+ * This file is free software, which comes along with NIT. This software is
+ * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. You can modify it is you want, provided this header
+ * is kept unaltered, and a notification of the changes is added.
+ * You are allowed to redistribute it and sell it, alone or is a part of
+ * another product.
+ */
+
+#include <stdio.h>
+
+/* GC and memory management */
+void *nit_alloc(size_t); /* allocate memory to store an object with an object header */
+void *nit_raw_alloc(size_t); /* allocate raw memory to store a raw stram of byte */
+void nit_gcollect(void); /* force a garbage collection */
+void initialize_gc_option(void); /* Select the wanted GC using envvar `NIT_GC_OPTION` */
+
+#endif
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Draws an arithmetic operation to the terminal
+module draw_operation
+
+redef enum Int
+ fun n_chars: Int `{
+ int c;
+ if ( abs(recv) >= 10 )
+ c = 1+(int)log10f( (float)abs(recv) );
+ else
+ c = 1;
+ if ( recv < 0 ) c ++;
+ return c;
+ `}
+end
+
+redef enum Char
+ fun as_operator(a, b: Int): Int
+ do
+ if self == '+' then return a + b
+ if self == '-' then return a - b
+ if self == '*' then return a * b
+ if self == '/' then return a / b
+ if self == '%' then return a % b
+ abort
+ end
+
+ fun override_dispc: Bool
+ do
+ return self == '+' or self == '-' or self == '*' or self == '/' or self == '%'
+ end
+
+ fun lines(s: Int): Array[Line]
+ do
+ if self == '+' then
+ return [new Line(new P(0,s/2),1,0,s), new Line(new P(s/2,1),0,1,s-2)]
+ else if self == '-' then
+ return [new Line(new P(0,s/2),1,0,s)]
+ else if self == '*' then
+ var lines = new Array[Line]
+ for y in [1..s-1[ do
+ lines.add( new Line(new P(1,y), 1,0,s-2) )
+ end
+ return lines
+ else if self == '/' then
+ return [new Line(new P(s-1,0), -1,1, s )]
+ else if self == '%' then
+ var q4 = s/4
+ var lines = [new Line(new P(s-1,0),-1,1,s)]
+ for l in [0..q4[ do
+ lines.append([ new Line( new P(0,l), 1,0,q4), new Line( new P(s-1,s-1-l), -1,0,q4) ])
+ end
+ return lines
+ else if self == '1' then
+ return [new Line(new P(s/2,0), 0,1,s),new Line(new P(0,s-1),1,0,s),
+ new Line( new P(s/2,0),-1,1,s/2)]
+ else if self == '2' then
+ return [new Line(new P(0,0), 1,0,s),new Line(new P(s-1,0),0,1,s/2),
+ new Line( new P(0,s-1),1,0,s), new Line( new P(0,s/2), 0,1,s/2),
+ new Line( new P(0,s/2), 1,0,s)]
+ else if self == '3' then
+ return [new Line(new P(0,0), 1,0,s),new Line(new P(s-1,0),0,1,s),
+ new Line( new P(0,s-1),1,0,s), new Line( new P(0,s/2), 1,0,s)]
+ else if self == '4' then
+ return [new Line(new P(s-1,0),0,1,s), new Line( new P(0,0), 0,1,s/2),
+ new Line( new P(0,s/2), 1,0,s)]
+ else if self == '5' then
+ return [new Line(new P(0,0), 1,0,s),new Line(new P(s-1,s/2),0,1,s/2),
+ new Line( new P(0,s-1),1,0,s), new Line( new P(0,0), 0,1,s/2),
+ new Line( new P(0,s/2), 1,0,s)]
+ else if self == '6' then
+ return [new Line(new P(0,0), 1,0,s),new Line(new P(s-1,s/2),0,1,s/2),
+ new Line( new P(0,s-1),1,0,s), new Line( new P(0,0), 0,1,s),
+ new Line( new P(0,s/2), 1,0,s)]
+ else if self == '7' then
+ var tl = new P(0,0)
+ var tr = new P(s-1,0)
+ return [new Line(tl, 1,0,s), new Line(tr,-1,1,s)]
+ else if self == '8' then
+ return [new Line(new P(0,0), 1,0,s),new Line(new P(s-1,0),0,1,s),
+ new Line( new P(0,s-1),1,0,s), new Line( new P(0,0), 0,1,s),
+ new Line( new P(0,s/2), 1,0,s)]
+ else if self == '9' then
+ return [new Line(new P(0,0), 1,0,s),new Line(new P(s-1,0),0,1,s),
+ new Line( new P(0,s-1),1,0,s), new Line( new P(0,0), 0,1,s/2),
+ new Line( new P(0,s/2), 1,0,s)]
+ else if self == '0' then
+ return [new Line(new P(0,0), 1,0,s),new Line(new P(s-1,0),0,1,s),
+ new Line( new P(0,s-1),1,0,s), new Line( new P(0,0), 0,1,s)]
+ end
+ return new Array[Line]
+ end
+end
+
+class P
+ var x : Int
+ var y : Int
+end
+
+redef class String
+ # hack is to support a bug in the evaluation software
+ fun draw(dispc: Char, size, gap: Int, hack: Bool)
+ do
+ var w = size * length +(length-1)*gap
+ var h = size
+ var map = new Array[Array[Char]]
+ for x in [0..w[ do
+ map[x] = new Array[Char].filled_with( ' ', h )
+ end
+
+ var ci = 0
+ for c in self do
+ var local_dispc
+ if c.override_dispc then
+ local_dispc = c
+ else
+ local_dispc = dispc
+ end
+
+ var lines = c.lines( size )
+ for line in lines do
+ var x = line.o.x+ci*size
+ x += ci*gap
+ var y = line.o.y
+ for s in [0..line.len[ do
+ assert map.length > x and map[x].length > y else print "setting {x},{y} as {local_dispc}"
+ map[x][y] = local_dispc
+ x += line.step_x
+ y += line.step_y
+ end
+ end
+
+ ci += 1
+ end
+
+ if hack then
+ for c in [0..size[ do
+ map[c][0] = map[map.length-size+c][0]
+ map[map.length-size+c][0] = ' '
+ end
+ end
+
+ for y in [0..h[ do
+ for x in [0..w[ do
+ printn map[x][y]
+ end
+ print ""
+ end
+ end
+end
+
+class Line
+ var o : P
+ var step_x : Int
+ var step_y : Int
+ var len : Int
+end
+
+var a
+var b
+var op_char
+var disp_char
+var disp_size
+var disp_gap
+
+if "NIT_TESTING".environ == "true" then
+ a = 567
+ b = 13
+ op_char = '*'
+ disp_char = 'O'
+ disp_size = 8
+ disp_gap = 1
+else
+ printn "Left operand: "
+ a = gets.to_i
+
+ printn "Right operand: "
+ b = gets.to_i
+
+ printn "Operator (+, -, *, /, %): "
+ op_char = gets[0]
+
+ printn "Char to display: "
+ disp_char = gets[0]
+
+ printn "Size of text: "
+ disp_size = gets.to_i
+
+ printn "Space between digits: "
+ disp_gap = gets.to_i
+end
+
+var result = op_char.as_operator( a, b )
+
+var len_a = a.n_chars
+var len_b = b.n_chars
+var len_res = result.n_chars
+var max_len = len_a.max( len_b.max( len_res ) ) + 1
+
+# draw first line
+var d = max_len - len_a
+var line_a = ""
+for i in [0..d[ do line_a += " "
+line_a += a.to_s
+line_a.draw( disp_char, disp_size, disp_gap, false )
+
+print ""
+# draw second line
+d = max_len - len_b-1
+var line_b = op_char.to_s
+for i in [0..d[ do line_b += " "
+line_b += b.to_s
+line_b.draw( disp_char, disp_size, disp_gap, false )
+
+# draw -----
+print ""
+for i in [0..disp_size*max_len+(max_len-1)*disp_gap] do
+ printn "_"
+end
+print ""
+print ""
+
+# draw result
+d = max_len - len_res
+var line_res = ""
+for i in [0..d[ do line_res += " "
+line_res += result.to_s
+line_res.draw( disp_char, disp_size, disp_gap, false )
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import html
+
+class NitHomepage
+ super HTMLPage
+
+ redef fun head do
+ add("meta").attr("charset", "utf-8")
+ add("title").text("Nit")
+ add("link").attr("rel", "icon").attr("href", "http://nitlanguage.org/favicon.ico").attr("type", "image/x-icon")
+ add("link").attr("rel", "stylesheet").attr("href", "http://nitlanguage.org/style.css").attr("type", "text/css")
+ add("link").attr("rel", "stylesheet").attr("href", "http://nitlanguage.org/local.css").attr("type", "text/css")
+ end
+
+ redef fun body do
+ open("article").add_class("page")
+ open("section").add_class("pageheader")
+ add_html("<a id='toptitle_first' class='toptitle'>the</a><a id='toptitle_second' class='toptitle' href=''>Nit</a><a id='toptitle_third' class='toptitle' href=''>Programming Language</a>")
+ open("header").add_class("header")
+ open("div").add_class("topsubtitle")
+ add("p").text("A Fun Language for Serious Programming")
+ close("div")
+ close("header")
+ close("section")
+
+ open("div").attr("id", "pagebody")
+ open("section").attr("id", "content")
+ add("h1").text("# What is Nit?")
+ add("p").text("Nit is an object-oriented programming language. The goal of Nit is to propose a robust statically typed programming language where structure is not a pain.")
+ add("p").text("So, what does the famous hello world program look like, in Nit?")
+ add_html("<pre><tt><span class='normal'>print </span><span class='string'>'Hello, World!'</span></tt></pre>")
+
+ add("h1").text("# Feature Highlights")
+ add("h2").text("Usability")
+ add("p").text("Nit's goal is to be usable by real programmers for real projects")
+
+ open("ul")
+ open("li")
+ add("a").attr("href", "http://en.wikipedia.org/wiki/KISS_principle").text("KISS principle")
+ close("li")
+ add("li").text("Script-like language without verbosity nor cryptic statements")
+ add("li").text("Painless static types: static typing should help programmers")
+ add("li").text("Efficient development, efficient execution, efficient evolution.")
+ close("ul")
+
+ add("h2").text("Robustness")
+ add("p").text("Nit will help you to write bug-free programs")
+
+ open("ul")
+ add("li").text("Strong static typing")
+ add("li").text("No more NullPointerException")
+ close("ul")
+
+ add("h2").text("Object-Oriented")
+ add("p").text("Nit's guideline is to follow the most powerful OO principles")
+
+ open("ul")
+ open("li")
+ add("a").attr("href", "./everything_is_an_object/").text("Everything is an object")
+ close("li")
+ open("li")
+ add("a").attr("href", "./multiple_inheritance/").text("Multiple inheritance")
+ close("li")
+ open("li")
+ add("a").attr("href", "./refinement/").text("Open classes")
+ close("li")
+ open("li")
+ add("a").attr("href", "./virtual_types/").text("Virtual types")
+ close("li")
+ close("ul")
+
+
+ add("h1").text("# Getting Started")
+ add("p").text("Get Nit from its Git repository:")
+
+ add_html("<pre><code>$ git clone http://nitlanguage.org/nit.git</code></pre>")
+ add("p").text("Build the compiler (may be long):")
+ add_html("<pre><code>$ cd nit\n")
+ add_html("$ make</code></pre>")
+ add("p").text("Compile a program:")
+ add_html("<pre><code>$ bin/nitc examples/hello_world.nit</code></pre>")
+ add("p").text("Execute the program:")
+ add_html("<pre><code>$ ./hello_world</code></pre>")
+ close("section")
+ close("div")
+ close("article")
+ end
+end
+
+var page = new NitHomepage
+print page.render
+page.save("nit.html")
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# This file is free software, which comes along with NIT. This software is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. You can modify it is you want, provided this header
+# is kept unaltered, and a notification of the changes is added.
+# You are allowed to redistribute it and sell it, alone or is a part of
+# another product.
+
+# Service management trough the `for` control structure.
+#
+# The module is a proof-of-concept to investigate the abuse of
+# the `for` structure to implement various services.
+#
+# The idea is that, with a `for`, the service-provider can:
+# * control the end of the service (thus can finalize things
+# like releasing ressources)
+# * communicate data with the user on each iteration; the used can
+# also communicate results to the provider.
+module for_abuse
+
+# Encapsulation of service in a `for`-compatible interface.
+#
+# The service is not effectively started until the iterate method
+# is called. Then, each step of the iteration is a step in the service.
+#
+# While, for a typing point of view, abusers are just collections,
+# the point of this class is to tag services that return a ForAbuser
+# object.
+# Note that using abuser as genuine collection should work but is not
+# recommended since it may cause mental health issues.
+interface ForAbuser[E]
+ super Collection[E]
+end
+
+# Abuser to read a file, see `file_open`
+private class ReadFileForAbuser
+ super ForAbuser[IFStream]
+ var path: String
+ redef fun iterator do return new ReadFileForAbuserIterator(path)
+end
+
+# Abuser iterator to read a file, see `file_open`
+private class ReadFileForAbuserIterator
+ super Iterator[IFStream]
+ redef var item: IFStream
+ redef var is_ok = true
+ init(path: String)
+ do
+ # start of service is to open the file, and return in
+ item = new IFStream.open(path)
+ end
+ redef fun next
+ do
+ # end of service is to close the file
+ # there is only one iteration
+ is_ok = false
+ item.close
+ end
+end
+
+####
+
+# A comparison query.
+# The user is asked to compare `a` with `b` then set `res` accordingly.
+#
+# * if `a < b` then the user sets `res` to -1
+# * if `a > b` then the user sets `res` to 1
+# * if `a == b` then the user sets `res` to 0
+#
+# It is the responsibility of the user to implement a total order.
+# ie. the implemented comparison must be asymmetric, transitive and total.
+class CompareQuery[E]
+ # The first element to compare
+ var a: E
+ # The second element to compare
+ var b: E
+ # The result of the comparison (according to the user)
+ var res writable = 0
+end
+
+# Abuser for sorting array, see `sort_fa`
+private class SortAbuser[E]
+ super ForAbuser[CompareQuery[E]]
+ var array: Array[E]
+ redef fun iterator do return new SortAbuserIterator[E](array)
+end
+
+# Abuser iterator for sorting array, see `sort_fa`
+# Implements a sort by permutation
+private class SortAbuserIterator[E]
+ super Iterator[CompareQuery[E]]
+ # The index of the big loop
+ var i: Int
+ # The index of the small loop
+ var j: Int
+ # The array to sort
+ var array: Array[E]
+ # The query used to communicate with the user.
+ # For ecological concerns, a unique CompareQuery is instatiated.
+ var query: nullable CompareQuery[E]
+ redef fun item do return query.as(not null)
+ init(array: Array[E])
+ do
+ self.array = array
+ # Initialize the algorithm, see `next` for the rest
+ i = 0
+ j = 0
+ if not is_ok then return
+ query = new CompareQuery[E](array[i], array[j])
+ end
+ redef fun is_ok do return i < array.length - 1
+ redef fun next
+ do
+ # Process the last query
+ if item.res > 0 then
+ var tmp = array[i]
+ array[i] = array[j]
+ array[j] = tmp
+ end
+ # Get the next iteration
+ j += 1
+ if j >= array.length then
+ # End of small loop
+ i += 1
+ j = i + 1
+ end
+ if not is_ok then return
+ # Prepare the next query
+ item.a = array[i]
+ item.b = array[j]
+ item.res = 0
+ end
+end
+
+redef class Array[E]
+ # Sort an array trough a `for` abuse.
+ # The user uses the provided query (item) to implements its own comparison
+ #
+ # var a = [1, 3, 2]
+ # for q in a do q.res = q.a <=> q.b
+ # print a # => 123
+ #
+ # Implements a sort by permutation.
+ fun sort_fa: ForAbuser[CompareQuery[E]]
+ do
+ return new SortAbuser[E](self)
+ end
+end
+
+####
+
+# Open and read a file trough a `for` abuse.
+# The abuse just ensures that the file is closed after the reading.
+#
+# for f in file_open(path) do
+# print path.read_line
+# end # f is automatically closed here
+fun file_open(path: String): ForAbuser[IFStream]
+do
+ return new ReadFileForAbuser(path)
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# HTML output facilities
+module html
+
+# A html page
+#
+# You can define subclass and override methods head and body
+#
+# class MyPage
+# super HTMLPage
+# redef body do add("p").text("Hello World!")
+# end
+#
+# HTMLPage use fluent interface so you can chain calls as:
+# add("div").attr("id", "mydiv").text("My Div")
+class HTMLPage
+
+ # Define head content
+ fun head do end
+ # Define body content
+ fun body do end
+
+ private var root = new HTMLTag("html")
+ private var current: HTMLTag = root
+ private var stack = new List[HTMLTag]
+
+ # Render the page as a html string
+ fun render: String do
+ root.children.clear
+ open("head")
+ head
+ close("head")
+ open("body")
+ body
+ close("body")
+ return "<!DOCTYPE html>{root.html}"
+ end
+
+ # Add a html tag to the current element
+ # add("div").attr("id", "mydiv").text("My Div")
+ fun add(tag: String): HTMLTag do
+ var node = new HTMLTag(tag)
+ current.add(node)
+ return node
+ end
+
+ # Add a raw html string
+ # add_html("<a href='#top'>top</a>")
+ fun add_html(html: String) do current.add(new HTMLRaw(html))
+
+ # Open a html tag
+ # open("ul")
+ # add("li").text("item1")
+ # add("li").text("item2")
+ # close("ul")
+ fun open(tag: String): HTMLTag do
+ stack.push(current)
+ current = add(tag)
+ return current
+ end
+
+ # Close previously opened tag
+ # Ensure: tag = previous.tag
+ fun close(tag: String) do
+ if not tag == current.tag then
+ print "Error: Trying to close '{tag}', last opened tag was '{current.tag}'."
+ abort
+ end
+ current = stack.pop
+ end
+
+ # Save html page in the specified file
+ fun save(file: String) do
+ var out = new OFStream.open(file)
+ out.write(self.render)
+ out.close
+ end
+end
+
+class HTMLTag
+ # HTML tagname: 'div' for <div></div>
+ var tag: String
+ init(tag: String) do self.tag = tag
+
+ init with_attrs(tag: String, attrs: Map[String, String]) do
+ self.tag = tag
+ self.attrs = attrs
+ end
+
+ # Tag attributes map
+ var attrs: Map[String, String] = new HashMap[String, String]
+
+ # Get the attributed value of 'prop' or null if 'prop' is undifened
+ fun get_attr(key: String): nullable String do
+ if not attrs.has_key(key) then return null
+ return attrs[key]
+ end
+
+ # Set a 'value' for 'key'
+ # var img = new HTMLTag("img")
+ # img.attr("src", "./image.png").attr("alt", "image")
+ fun attr(key: String, value: String): HTMLTag do
+ attrs[key] = value
+ return self
+ end
+
+ # Add a CSS class to the HTML tag
+ # var img = new HTMLTag("img")
+ # img.add_class("logo").add_class("fullpage")
+ fun add_class(klass: String): HTMLTag do
+ classes.add(klass)
+ return self
+ end
+ private var classes: Set[String] = new HashSet[String]
+
+ # Set a CSS 'value' for 'prop'
+ # var img = new HTMLTag("img")
+ # img.css("border", "2px solid black").css("position", "absolute")
+ fun css(prop: String, value: String): HTMLTag do
+ css_props[prop] = value
+ return self
+ end
+ private var css_props: Map[String, String] = new HashMap[String, String]
+
+ # Get CSS value for 'prop'
+ fun get_css(prop: String): nullable String do
+ if not css_props.has_key(prop) then return null
+ return css_props[prop]
+ end
+
+ # Add a HTML 'child' to self
+ # var ul = new HTMLTag("ul")
+ # ul.add(new HTMLTag("li"))
+ fun add(child: HTMLTag) do children.add(child)
+
+ # List of children HTML elements
+ var children: Set[HTMLTag] = new HashSet[HTMLTag]
+
+ # Set text of element
+ # var p = new HTMLTag("p")
+ # p.text("Hello World!")
+ # Text is escaped see: standard::String::html_escape
+ fun text(txt: String): HTMLTag do
+ content = txt
+ return self
+ end
+ private var content: String = ""
+
+ # Append text to element
+ # var p = new HTMLTag("p")
+ # p.append("Hello").append("<br/>").append("World!")
+ # Text is escaped see: standard::String::html_escape
+ fun append(txt: String): HTMLTag do
+ text("{content}{txt}")
+ return self
+ end
+
+ # Render the element as HTML string
+ fun html: String do
+ var content = render_content
+ if tag != "script" and content.is_empty then return "<{tag}{render_attrs}/>"
+ return "<{tag}{render_attrs}>{content}</{tag}>"
+ end
+
+ private fun render_attrs: String do
+ var str = "{render_classes}{render_css}"
+ for key, value in attrs do
+ if key == "class" or key == "style" then continue
+ str = "{str} {key}='{value}'"
+ end
+ return str
+ end
+
+ private fun render_css: String do
+ var css = ""
+ if attrs.has_key("style") then css = attrs["style"]
+ for key, value in self.css_props do
+ css = "{css}; {key}: {value}"
+ end
+ if css.is_empty then return ""
+ return " style='{css}'"
+ end
+
+ private fun render_classes: String do
+ var cls = ""
+ if attrs.has_key("class") then cls = attrs["class"]
+ if not classes.is_empty then cls = " class='{cls} {classes.join(" ")}'"
+ if cls.is_empty then return ""
+ return cls
+ end
+
+ private fun render_content: String do
+ var str = content.html_escape
+ for child in children do
+ str += child.html
+ end
+ return str
+ end
+end
+
+private class HTMLRaw
+ super HTMLTag
+
+ init(content: String) do self.content = content
+ redef fun html do return content
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Writing to and reading from the Json format.
+# Based on the json0 C library
+module json
+
+import jsonable
+import json_reader
+import json_writer
+
+redef class String
+ fun json_load_from_file : nullable Map[ String, nullable Jsonable ]
+ do
+ var f = new IFStream.open( self )
+ var data = f.read_all.json_to_object
+ f.close
+
+ return data.as(not null) # ( Map[ String, nullable Jsonable ] )
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# This file is free software, which comes along with NIT. This software is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. You can modify it is you want, provided this header
+# is kept unaltered, and a notification of the changes is added.
+# You are allowed to redistribute it and sell it, alone or is a part of
+# another product.
+
+# Deserialisation from the Json format to Nit objects
+module json_reader
+
+intrude import jsonable
+
+redef class String
+ # Deserializes this String and return its value as a Map[String, nullable Jsonable]
+ # On error, null is returned.
+ fun json_to_object : nullable Map[String, nullable Jsonable] import String::from_cstring, JsonObject::json_to_map `{
+ char *native_recv;
+ json_object *jobj;
+ nullable_Map map;
+
+ native_recv = String_to_cstring( recv );
+ jobj = json_tokener_parse( native_recv );
+ map = JsonObject_json_to_map( jobj );
+
+ /*json_object_put( jobj );*/
+ return map;
+ `}
+end
+
+redef extern JsonObject
+ # Get this json object as a Map
+ private fun json_to_map : nullable Map[String, nullable Jsonable] import String::from_cstring, String::to_cstring, HashMap, HashMap::[]=, json_cross, HashMap[String,nullable Jsonable] as( nullable Map[String,nullable Jsonable] ), String as ( Object ), nullable Jsonable as (nullable Object) `{
+ HashMap map;
+ String nit_key;
+ nullable_Jsonable nit_val;
+ enum json_type type;
+
+ map = new_HashMap();
+
+ { /* prevents "mixed declaration and code" warning for C90 */
+ json_object_object_foreach( recv, key, val ) {
+ nit_key = new_String_from_cstring( key );
+
+ if ( val == NULL ) type = json_type_null;
+ else type = json_object_get_type( val );
+
+ nit_val = JsonObject_json_cross( val, type );
+
+ HashMap__index_assign( map, String_as_Object( nit_key ), nullable_Jsonable_as_nullable_Object( nit_val ) );
+ }
+ }
+
+ return HashMap_as_nullable_Map( map );
+ `}
+
+ # Get this json object as a Bool
+ private fun json_to_bool : Bool `{
+ return json_object_get_boolean( recv );
+ `}
+
+ # Get this json object as a Float
+ private fun json_to_float : Float `{
+ return json_object_get_double( recv );
+ `}
+
+ # Get this json object as an Int
+ private fun json_to_int : Int `{
+ return json_object_get_int( recv );
+ `}
+
+ # Get this json object as a Sequence
+ private fun json_to_sequence : Sequence[Jsonable] import Array, Array::push, Array[nullable Jsonable] as ( Sequence[nullable Jsonable] ), json_cross `{
+ array_list* jlist;
+ json_object* jobj;
+ nullable_Jsonable obj;
+ Array dest;
+ int i;
+ int len;
+ enum json_type type;
+
+ jlist = json_object_get_array( recv );
+ len = json_object_array_length( recv );
+ dest = new_Array();
+ for ( i = 0; i < len; i ++ ) {
+ jobj = json_object_array_get_idx( recv, i );
+ if ( jobj == NULL ) type = json_type_null;
+ else type = json_object_get_type( jobj );
+ obj = JsonObject_json_cross( jobj, type );
+ Array_push( dest, nullable_Jsonable_as_nullable_Object( obj ) );
+ }
+
+ return Array_as_Sequence( dest );
+ `}
+
+ # Get this json object as a String
+ private fun json_to_string : String import String::from_cstring `{
+ const char *cstring;
+ cstring = json_object_get_string( recv );
+ return new_String_from_cstring( (char*)cstring );
+ `}
+
+ # Intermediate function to convert to gt this Json object as a given type.
+ # Imlemented in Nit because Nit should manage all possible typing-related work.
+ private fun json_cross( json_type : Int ) : nullable Jsonable
+ do
+ if json_type == 0 then # null
+ return null
+ else if json_type == 1 then # Bool
+ return json_to_bool
+ else if json_type == 2 then # Float
+ return json_to_float
+ else if json_type == 3 then # Int
+ return json_to_int
+ else if json_type == 4 then # Map
+ return json_to_map
+ else if json_type == 5 then # Sequence
+ return json_to_sequence
+ else if json_type == 6 then # String
+ return json_to_string
+ else
+ print "WARNING: Unrecongnized json object type id: {json_type}"
+ return null
+ end
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# This file is free software, which comes along with NIT. This software is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. You can modify it is you want, provided this header
+# is kept unaltered, and a notification of the changes is added.
+# You are allowed to redistribute it and sell it, alone or is a part of
+# another product.
+
+# Serialisation from Nit objects to the Json format
+module json_writer
+
+intrude import jsonable
+
+redef interface Jsonable
+ # Get a JsonObject representing this instance, specific to the C library
+ private fun to_json_object : JsonObject is abstract
+end
+
+# Will ignore non-jsonable
+redef class Map[ K, V ]
+ # Get a json-formatted string of this map
+ fun to_pretty_json: String do return native_to_json(true)
+ fun to_json: String do return native_to_json(false)
+
+ fun native_to_json( pretty: Bool ): String import to_json_object `{
+ json_object *jobj;
+ const char *json_native_string;
+ String json_string;
+
+ jobj = Map_to_json_object( recv );
+#ifdef JSON_C_TO_STRING_PRETTY
+ if ( pretty )
+ json_native_string = json_object_to_json_string_ext( jobj, JSON_C_TO_STRING_PRETTY );
+ else
+ json_native_string = json_object_to_json_string_ext( jobj, JSON_C_TO_STRING_PLAIN );
+#else
+ json_native_string = json_object_to_json_string( jobj );
+#endif
+ json_string = new_String_from_cstring( (char*)json_native_string );
+ return json_string;
+ `}
+
+ redef fun to_json_object
+ do
+ var jobj = new JsonObject
+
+ var iter = iterator
+ while iter.is_ok do
+ var key = iter.key
+ if key isa String then
+ var val = iter.item
+ if val isa Jsonable then
+ var jsubobj = val.to_json_object
+ jobj.add( key, jsubobj )
+ else if val == null then
+ jobj.add( key, null )
+ else
+ print "WARNING: value \"{val}\" not jsonable, cannot be converted to json."
+ end
+ else
+ print "WARNING: key \"{key}\" not a string, cannot be converted to json."
+ end
+
+ iter.next
+ end
+ return jobj
+ end
+end
+
+redef class Sequence[ E ]
+ redef fun to_json_object
+ do
+ var jarray = new JsonArray
+ for e in self do
+ if e isa nullable Jsonable then
+ if e == null then
+ jarray.push( null )
+ else
+ var obj = e.to_json_object
+ jarray.push( obj )
+ end
+ else
+ print "WARNING: element \"{e}\" not a Jsonable, cannot be converted to json."
+ end
+ end
+
+ return jarray
+ end
+end
+
+redef class String
+ redef fun to_json_object import String::from_cstring `{
+ char *native_recv = String_to_cstring( recv );
+ return json_object_new_string( native_recv );
+ `}
+end
+
+redef class Int
+ redef fun to_json_object `{
+ return json_object_new_int( recv );
+ `}
+end
+
+redef class Bool
+ redef fun to_json_object `{
+ return json_object_new_boolean( recv );
+ `}
+end
+
+redef class Float
+ redef fun to_json_object `{
+ return json_object_new_double( recv );
+ `}
+end
+
+redef class JsonObject
+ new `{ return json_object_new_object(); `}
+
+ # Add a key and value to the object
+ fun add( key : String, val : nullable JsonObject ) import String::to_cstring, nullable JsonObject as not nullable `{
+ char* native_key;
+
+ native_key = String_to_cstring( key );
+
+ if ( JsonObject_is_null(val) ) {
+ json_object_object_add( recv, native_key, NULL );
+ } else {
+ json_object *jobj;
+ jobj = JsonObject_as_not_null( val );
+ json_object_object_add( recv, native_key, jobj );
+ }
+ `}
+end
+
+private extern JsonArray
+ super JsonObject
+
+ new `{ return json_object_new_array(); `}
+
+ fun push( val : nullable JsonObject ) `{
+ if ( JsonObject_is_null(val) )
+ json_object_array_add( recv, NULL );
+ else
+ json_object_array_add( recv, JsonObject_as_not_null(val) );
+ `}
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Basic json related functionalities
+module jsonable
+
+in "C Header" `{
+ #define __STRICT_ANSI__
+ #include <json/json.h>
+`}
+
+# Type supported by the Json format
+interface Jsonable
+end
+
+# Main object type used by C library
+private extern JsonObject `{ json_object* `}
+ # Give up ownership of this object and decrease the reference count.
+ fun put `{ json_object_put( recv ); `}
+
+ # Aquire ownership of this object and increase the reference count.
+ fun get `{ json_object_get( recv ); `}
+end
+
+redef class Sequence[ V ]
+ super Jsonable
+end
+
+# Can b converted to a Json object
+redef class Map[ K, V ]
+ super Jsonable
+end
+
+redef class String
+ super Jsonable
+end
+
+redef class Int
+ super Jsonable
+end
+
+redef class Bool
+ super Jsonable
+end
+
+redef class Float
+ super Jsonable
+end
--- /dev/null
+--cc-lib-name json
# Filter: sort with a given `sorter`.
# Important: require O(n) memory.
- #
- # REQUIRE: self isa Iterator[Object]
- # FIXME: AbstractSorter[E] is refused
- fun sort_with(sorter: AbstractSorter[Object]): Collection[E]
+ fun sort_with(sorter: AbstractSorter[E]): Collection[E]
do
- assert self isa Collection[Object]
var a = self.to_a
sorter.sort(a)
return a
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# This file is free software, which comes along with NIT. This software is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. You can modify it is you want, provided this header
+# is kept unaltered, and a notification of the changes is added.
+# You are allowed to redistribute it and sell it, alone or is a part of
+# another product.
+
+# Provides the Clock utility class to keep time of real time flow
+module realtime
+
+in "C header" `{
+#ifdef _POSIX_C_SOURCE
+ #undef _POSIX_C_SOURCE
+#endif
+#define _POSIX_C_SOURCE 199309L
+#include <time.h>
+`}
+
+extern Timespec `{struct timespec*`}
+ new ( s, ns : Int ) `{
+ struct timespec* tv = malloc( sizeof(struct timespec) );
+ tv->tv_sec = s; tv->tv_nsec = ns;
+ return tv;
+ `}
+ new monotonic_now `{
+ struct timespec* tv = malloc( sizeof(struct timespec) );
+ clock_gettime( CLOCK_MONOTONIC, tv );
+ return tv;
+ `}
+ new copy_of( other : Timespec ) `{
+ struct timespec* tv = malloc( sizeof(struct timespec) );
+ tv->tv_sec = other->tv_sec;
+ tv->tv_nsec = other->tv_nsec;
+ return tv;
+ `}
+
+ fun update `{
+ clock_gettime( CLOCK_MONOTONIC, recv );
+ `}
+ fun - ( o : Timespec ) : Timespec
+ do
+ var s = sec - o.sec
+ var ns = nanosec - o.nanosec
+ if ns > nanosec then s += 1
+ return new Timespec( s, ns )
+ end
+
+ fun sec : Int `{
+ return recv->tv_sec;
+ `}
+ fun nanosec : Int `{
+ return recv->tv_nsec;
+ `}
+
+ fun destroy `{
+ free( recv );
+ `}
+end
+
+# Keeps track of real time
+class Clock
+ # Time at instanciation
+ protected var time_at_beginning : Timespec
+
+ # Time at last time a lapse method was called
+ protected var time_at_last_lapse : Timespec
+
+ init
+ do
+ time_at_beginning = new Timespec.monotonic_now
+ time_at_last_lapse = new Timespec.monotonic_now
+ end
+
+ # Smallest time frame reported by clock
+ fun resolution : Timespec `{
+ struct timespec* tv = malloc( sizeof(struct timespec) );
+ clock_getres( CLOCK_MONOTONIC, tv );
+ return tv;
+ `}
+
+ # Return timelapse since instanciation of this instance
+ fun total : Timespec
+ do
+ return new Timespec.monotonic_now - time_at_beginning
+ end
+
+ # Return timelapse since last call to lapse
+ fun lapse : Timespec
+ do
+ var nt = new Timespec.monotonic_now
+ var dt = nt - time_at_last_lapse
+ time_at_last_lapse = nt
+ return dt
+ end
+end
--- /dev/null
+--cc-lib-name rt
_length = 0
end
+ # Create an array from a collection.
+ init from(items: Collection[E]) do
+ with_capacity(items.length)
+ self.add_all(items)
+ end
+
# Create an array with some `items'.
init with_items(objects: E...)
do
_length = 0
enlarge(0)
end
+
+ # Build a list filled with the items of `coll'.
+ init from(coll: Collection[E]) do
+ init
+ add_all(coll)
+ end
end
private class HashSetNode[E: Object]
return nb
end
+ # Return a list of elements between 'from' and 'to'.
+ fun slice(from: Int, to: Int): List[E] do
+ assert from >= 0 and from < length
+ assert to >= 0 and to < length and from <= to
+ var list = new List[E]
+ while from <= to do
+ list.add(self[from])
+ from += 1
+ end
+ return list
+ end
+
# Add elements
# O(1)
# This abstract class generalizes ways to sort an array
# TODO: rename *Sorter to *Comparator
-interface AbstractSorter[E: Object]
+interface AbstractSorter[E]
# Compare `a' and `b'.
# Returns:
# -1 if a < b
var myitems = _items
var itsitems = str._items
if myindex > length or itsindex > myindex then return false
- var its_index_from = str._indexFrom
+ var its_index_from = str._index_from
itsindex += its_index_from
while itsindex >= its_index_from do
if myitems[myindex] != itsitems[itsindex] then return false
return s.to_s
end
+ # Trims trailing and preceding white spaces
+ # A whitespace is defined as any character which ascii value is less than or equal to 32
+ fun trim: String
+ do
+ if self._length == 0 then return self.to_s
+ # find position of the first non white space char (ascii < 32) from the start of the string
+ var start_pos = 0
+ while self[start_pos].ascii <= 32 do
+ start_pos += 1
+ if start_pos == _length then return ""
+ end
+ # find position of the first non white space char from the end of the string
+ var end_pos = length - 1
+ while self[end_pos].ascii <= 32 do
+ end_pos -= 1
+ if end_pos == start_pos then return self[start_pos].to_s
+ end
+ return self.substring(start_pos, end_pos - start_pos + 1)
+ end
redef fun output
do
redef type OTHER: String
- readable var _indexFrom: Int
- readable var _indexTo: Int
+ # Index in _items of the start of the string
+ readable var _index_from: Int
+
+ # Indes in _items of the last item of the string
+ readable var _index_to: Int
################################################
# AbstractString specific methods #
#
redef fun [](index) do
assert index >= 0
- assert (index + _indexFrom) < (_indexFrom + _length)
- return items[index + _indexFrom]
+ # Check that the index (+ index_from) is not larger than indexTo
+ # In other terms, if the index is valid
+ assert (index + _index_from) <= _index_to
+ return _items[index + _index_from]
end
# Create a substring.
#
# "abcd".substring(1, 2) # --> "bc"
# "abcd".substring(-1, 2) # --> "a"
- # "abcd".substring(1, 0) # --> ""
- # "abcd".substring(2, 5) # --> "cd"
+ # "abcd".substring(1, 0) # --> ""
+ # "abcd".substring(2, 5) # --> "cd"
+ #
+ # A "from" index < 0 will be replaced by 0
+ # Unless a count value is > 0 at the same time
+ # In this case, from += count and count -= from
+ #
redef fun substring(from: Int, count: Int): String
do
assert count >= 0
from = 0
end
- var realFrom = _indexFrom + from
+ var realFrom = _index_from + from
- if (realFrom + count) > _indexTo then return new String.from_substring(realFrom, _indexTo, _items)
+ if (realFrom + count) > _index_to then return new String.from_substring(realFrom, _index_to, _items)
if count == 0 then return ""
# Create a substring from `self' beginning at the 'from' position
#
- # "abcd".substring(1) # --> "bcd"
- # "abcd".substring(-1) # --> "abcd"
- # "abcd".substring(2) # --> "cd"
+ # "abcd".substring_from(1) # --> "bcd"
+ # "abcd".substring_from(-1) # --> "abcd"
+ # "abcd".substring_from(2) # --> "cd"
+ #
+ # As with substring, a "from" index < 0 will be replaced by 0
+ #
redef fun substring_from(from: Int): String
do
if from > _length then return ""
if myindex > _length or itsindex > myindex then return false
- var itsindexfrom = str.indexFrom
+ var itsindexfrom = str.index_from
itsindex += itsindexfrom
- myindex += indexFrom
+ myindex += index_from
while itsindex >= itsindexfrom do
if myitems[myindex] != itsitems[itsindex] then return false
redef fun to_upper: String
do
var outstr = calloc_string(self._length + 1)
- var index = 0
+ var out_index = 0
var myitems = self._items
- var index_from = self._indexFrom
- var max = self._indexTo
+ var index_from = self._index_from
+ var max = self._index_to
while index_from <= max do
- outstr[index] = myitems[index_from].to_upper
- index += 1
+ outstr[out_index] = myitems[index_from].to_upper
+ out_index += 1
index_from += 1
end
redef fun to_lower : String
do
var outstr = calloc_string(self._length + 1)
- var index = 0
+ var out_index = 0
var myitems = self._items
- var index_from = self._indexFrom
- var max = self._indexTo
+ var index_from = self._index_from
+ var max = self._index_to
while index_from <= max do
- outstr[index] = myitems[index_from].to_lower
- index += 1
+ outstr[out_index] = myitems[index_from].to_lower
+ out_index += 1
index_from += 1
end
return new String.with_native(outstr, self._length)
end
+ redef fun trim: String
+ do
+ if self._length == 0 then return self
+ # find position of the first non white space char (ascii < 32) from the start of the string
+ var start_pos = self._index_from
+ while _items[start_pos].ascii <= 32 do
+ start_pos += 1
+ if start_pos == _index_to + 1 then return ""
+ end
+ # find position of the first non white space char from the end of the string
+ var end_pos = _index_to
+ while _items[end_pos].ascii <= 32 do
+ end_pos -= 1
+ if end_pos == start_pos then return _items[start_pos].to_s
+ end
+ start_pos -= index_from
+ end_pos -= index_from
+ return self.substring(start_pos, end_pos - start_pos + 1)
+ end
+
redef fun output
do
- var i = self._indexFrom
- while i < length do
+ var i = self._index_from
+ var imax = self._index_to
+ while i <= imax do
_items[i].output
i += 1
end
##################################################
# Creates a String object as a substring of another String
+ #
+ # From : index to start at
+ #
+ # To : Index to stop at (from + count -1)
+ #
private init from_substring(from: Int, to: Int, internalString: NativeString)
do
_items = internalString
- _indexFrom = from
- _indexTo = to
+ _index_from = from
+ _index_to = to
_length = to - from + 1
end
assert size >= 0
_items = nat
_length = size
- _indexFrom = 0
- _indexTo = size - 1
+ _index_from = 0
+ _index_to = _length - 1
end
# Create a new string from a null terminated char *.
with_native(str,str.cstring_length)
end
+ # Creates a new Nit String from an existing CString
+ # Pretty much equals to from_cstring but copies instead
+ # of passing a reference
+ # Avoids manual/automatic dealloc problems when dealing with native C code
+ init copy_from_native(str: NativeString)
+ do
+ var temp_length = str.cstring_length
+ var new_str = calloc_string(temp_length + 1)
+ str.copy_to(new_str, temp_length, 0, 0)
+ new_str[temp_length] = '\0'
+ with_native(new_str, temp_length)
+ end
+
# Return a null terminated char *
fun to_cstring: NativeString
do
#return items
- if _indexFrom > 0 or _indexTo != items.cstring_length-1 then
- var newItems = calloc_string(length+1)
- self.items.copy_to(newItems, _length, _indexFrom, 0)
+ if _index_from > 0 or _index_to != items.cstring_length - 1 then
+ var newItems = calloc_string(_length + 1)
+ self.items.copy_to(newItems, _length, _index_from, 0)
newItems[length] = '\0'
return newItems
end
return _items
end
- redef fun ==(o)
+ redef fun ==(other)
do
- if not o isa String or o is null then return false
+ if not other isa String or other is null then return false
+
+ if self.object_id == other.object_id then return true
- if self.object_id == o.object_id then return true
+ var my_length = _length
- var l = _length
+ if other._length != my_length then return false
- if o._length != l then return false
+ var my_index = _index_from
+ var its_index = other._index_from
- var i = _indexFrom
- var j = o._indexFrom
- var max = l + _indexFrom
- var itsitems = o._items
+ var last_iteration = my_index + my_length
+
+ var itsitems = other._items
var myitems = self._items
- while i < max do
- if myitems[i] != itsitems[j] then return false
- i += 1
- j += 1
+ while my_index < last_iteration do
+ if myitems[my_index] != itsitems[its_index] then return false
+ my_index += 1
+ its_index += 1
end
return true
end
- redef fun <(s)
+ # The comparison between two strings is done on a lexicographical basis
+ # Eg : "aa" < "b" => true
+ redef fun <(other)
do
- if self.object_id == s.object_id then return false
+ if self.object_id == other.object_id then return false
+
+ var my_curr_char : Char
+ var its_curr_char : Char
+
+ var curr_id_self = self._index_from
+ var curr_id_other = other._index_from
- var c1 : Int
- var c2 : Int
- var currIdSelf = self._indexFrom
- var currIdOther = s._indexFrom
var my_items = self._items
- var its_items = s._items
+ var its_items = other._items
- if self._length < s._length then
- return true
- else if self.length > s._length then
- return false
- end
+ var my_length = self._length
+ var its_length = other._length
- var self_upper_bound = self._length + currIdSelf
- var other_upper_bound = s._length + currIdOther
+ var max_iterations = curr_id_self + my_length
- while currIdSelf < self_upper_bound and currIdOther < other_upper_bound do
- c1 = my_items[currIdSelf].ascii
- c2 = its_items[currIdOther].ascii
+ while curr_id_self < max_iterations do
+ my_curr_char = my_items[curr_id_self]
+ its_curr_char = its_items[curr_id_other]
- if c1 < c2 then
- return true
- else if c2 < c1 then
+ if my_curr_char != its_curr_char then
+ if my_curr_char < its_curr_char then return true
return false
end
- currIdSelf += 1
- currIdOther += 1
+ curr_id_self += 1
+ curr_id_other += 1
end
- return false
+ return my_length < its_length
end
# The concatenation of `self' with `r'
fun +(s: String): String
do
- var newString = calloc_string(_length + s._length + 1)
+ var my_length = self._length
+ var its_length = s._length
+
+ var target_string = calloc_string(my_length + its_length + 1)
- self._items.copy_to(newString, _length, _indexFrom, 0)
- s._items.copy_to(newString, s._length, s._indexFrom, _length)
+ self._items.copy_to(target_string, my_length, _index_from, 0)
+ s._items.copy_to(target_string, its_length, s._index_from, my_length)
- newString[self._length + s._length] = '\0'
+ target_string[my_length + its_length] = '\0'
- return new String.with_native(newString, _length + s._length)
+ return new String.with_native(target_string, my_length + its_length)
end
# i repetitions of self
fun *(i: Int): String
do
assert i >= 0
- var r = calloc_string((_length * i) + 1)
- r[_length * i] = '\0'
+ var my_length = self._length
- var lastStr = new String.with_native(r, (_length * i))
+ var final_length = my_length * i
- while i > 0 do
- self._items.copy_to(r, _length, _indexFrom, _length*(i-1))
- i -= 1
+ var my_items = self._items
+
+ var target_string = calloc_string((final_length) + 1)
+
+ target_string[final_length] = '\0'
+
+ var current_last = 0
+
+ for iteration in [1 .. i] do
+ my_items.copy_to(target_string, my_length, 0, current_last)
+ current_last += my_length
end
- return lastStr
+ return new String.with_native(target_string, final_length)
end
redef fun to_s do return self
var h = 5381
var i = _length - 1
- var myitems = self.items
- var index_from = self._indexFrom
+ var myitems = _items
+ var strStart = _index_from
- i += index_from
+ i += strStart
- while i >= index_from do
+ while i >= strStart do
h = (h * 32) + h + self._items[i].ascii
i -= 1
end
if s isa String then
var sl = s.length
if _capacity < _length + sl then enlarge(_length + sl)
- s.items.copy_to(_items, sl, s._indexFrom, _length)
+ s.items.copy_to(_items, sl, s._index_from, _length)
_length += sl
else
super
_capacity = s.length + 1
_length = s.length
_items = calloc_string(_capacity)
- s.items.copy_to(_items, _length, s._indexFrom, 0)
+ s.items.copy_to(_items, _length, s._index_from, 0)
end
# Create a new empty string with a given capacity.
redef class Float
# Pretty print self, print needed decimals up to a max of 6.
redef fun to_s do
- var str = to_precision( 6 )
+ var str = to_precision( 3 )
var len = str.length
for i in [0..len-1] do
var j = len-1-i
end
# `self' representation with `nb' digits after the '.'.
- fun to_precision(nb: Int): String import String::from_cstring `{
+ fun to_precision(nb: Int): String
+ do
+ if nb == 0 then return self.to_i.to_s
+ var f = self
+ for i in [0..nb[ do f = f * 10.0
+ if self > 0.0 then
+ f = f + 0.5
+ else
+ f = f - 0.5
+ end
+ var i = f.to_i
+ if i == 0 then return "0.0"
+ var s = i.to_s
+ var sl = s.length
+ if sl > nb then
+ var p1 = s.substring(0, s.length-nb)
+ var p2 = s.substring(s.length-nb, nb)
+ return p1 + "." + p2
+ else
+ return "0." + ("0"*(nb-sl)) + s
+ end
+ end
+
+ fun to_precision_native(nb: Int): String import String::from_cstring `{
int size;
char *str;
# a # -> [4, 7]
fun search_all(p: Pattern): Array[Match] do return p.search_all_in(self)
- # Split self using p is separator.
+ # Split `self` using `p` as separator.
# "hello world".split('o') # -> ["hell", " w", "rld"]
- fun split_with(p: Pattern): Array[String]
+ fun split(p: Pattern): Array[String]
do
var matches = p.split_in(self)
var res = new Array[String].with_capacity(matches.length)
return res
end
- # Split self using '\n' is separator.
- # "hello\nworld".split # -> ["hello","world"]
- fun split: Array[String] do return split_with('\n')
+ # @deprecated alias for `split`
+ fun split_with(p: Pattern): Array[String] do return self.split(p)
# Replace all occurences of a pattern with a string
#
--- /dev/null
+Description="Nit"
+
+Identifiers=[[ [a-zA-Z_][\w\-]* ]]
+
+Digits=[[ (?:0x|0X|0b)[0-9a-fA-F]+|\d*[\.\_]?\d+(?:[eE][\-\+]\d+)? ]]
+
+Keywords={
+ { Id=1,
+ List={"abort", "abstract", "as", "assert", "break", "continue", "do", "else", "end", "enum", "extern", "for", "if", "import", "in", "interface", "intern", "intrude", "is", "isa", "isset", "new", "label", "loop", "private", "protected", "readable", "return", "super", "then", "while", "false", "null", "nullable", "redef", "self", "true", "and", "not", "or", "fun", "var", "type", "init", "class", "package", "module", "special", "universal", "writable"},
+ },
+ { Id=2,
+ Regex=[[[A-Z][\/\w]+]],
+ },
+}
+
+Strings={
+ Delimiter=[["""|'''|"|'|`]],
+ Escape = [[ \{[^}]*\} ]],
+}
+
+IgnoreCase=false
+
+Comments={
+ { Block=false,
+ Delimiter= { [[#]] },
+ }
+}
+
+Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\.|\&|\<|\>|\!|\-|\+|\/|\*|\=|\?|\%|\|]]
/*! jQuery v1.7.1 jquery.com | jquery.org/license */
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test("Â ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
-{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
\ No newline at end of file
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
+!function(t,e,i){var o=["webkit","Moz","ms","O"],r={},n;function a(t,i){var o=e.createElement(t||"div"),r;for(r in i)o[r]=i[r];return o}function s(t){for(var e=1,i=arguments.length;e<i;e++)t.appendChild(arguments[e]);return t}var f=function(){var t=a("style",{type:"text/css"});s(e.getElementsByTagName("head")[0],t);return t.sheet||t.styleSheet}();function l(t,e,i,o){var a=["opacity",e,~~(t*100),i,o].join("-"),s=.01+i/o*100,l=Math.max(1-(1-t)/e*(100-s),t),p=n.substring(0,n.indexOf("Animation")).toLowerCase(),u=p&&"-"+p+"-"||"";if(!r[a]){f.insertRule("@"+u+"keyframes "+a+"{"+"0%{opacity:"+l+"}"+s+"%{opacity:"+t+"}"+(s+.01)+"%{opacity:1}"+(s+e)%100+"%{opacity:"+t+"}"+"100%{opacity:"+l+"}"+"}",f.cssRules.length);r[a]=1}return a}function p(t,e){var r=t.style,n,a;if(r[e]!==i)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(a=0;a<o.length;a++){n=o[a]+e;if(r[n]!==i)return n}}function u(t,e){for(var i in e)t.style[p(t,i)||i]=e[i];return t}function c(t){for(var e=1;e<arguments.length;e++){var o=arguments[e];for(var r in o)if(t[r]===i)t[r]=o[r]}return t}function d(t){var e={x:t.offsetLeft,y:t.offsetTop};while(t=t.offsetParent)e.x+=t.offsetLeft,e.y+=t.offsetTop;return e}var h={lines:12,length:7,width:5,radius:10,rotate:0,corners:1,color:"#000",speed:1,trail:100,opacity:1/4,fps:20,zIndex:2e9,className:"spinner",top:"auto",left:"auto",position:"relative"};function m(t){if(!this.spin)return new m(t);this.opts=c(t||{},m.defaults,h)}m.defaults={};c(m.prototype,{spin:function(t){this.stop();var e=this,i=e.opts,o=e.el=u(a(0,{className:i.className}),{position:i.position,width:0,zIndex:i.zIndex}),r=i.radius+i.length+i.width,s,f;if(t){t.insertBefore(o,t.firstChild||null);f=d(t);s=d(o);u(o,{left:(i.left=="auto"?f.x-s.x+(t.offsetWidth>>1):parseInt(i.left,10)+r)+"px",top:(i.top=="auto"?f.y-s.y+(t.offsetHeight>>1):parseInt(i.top,10)+r)+"px"})}o.setAttribute("aria-role","progressbar");e.lines(o,e.opts);if(!n){var l=0,p=i.fps,c=p/i.speed,h=(1-i.opacity)/(c*i.trail/100),m=c/i.lines;(function y(){l++;for(var t=i.lines;t;t--){var r=Math.max(1-(l+t*m)%c*h,i.opacity);e.opacity(o,i.lines-t,r,i)}e.timeout=e.el&&setTimeout(y,~~(1e3/p))})()}return e},stop:function(){var t=this.el;if(t){clearTimeout(this.timeout);if(t.parentNode)t.parentNode.removeChild(t);this.el=i}return this},lines:function(t,e){var i=0,o;function r(t,o){return u(a(),{position:"absolute",width:e.length+e.width+"px",height:e.width+"px",background:t,boxShadow:o,transformOrigin:"left",transform:"rotate("+~~(360/e.lines*i+e.rotate)+"deg) translate("+e.radius+"px"+",0)",borderRadius:(e.corners*e.width>>1)+"px"})}for(;i<e.lines;i++){o=u(a(),{position:"absolute",top:1+~(e.width/2)+"px",transform:e.hwaccel?"translate3d(0,0,0)":"",opacity:e.opacity,animation:n&&l(e.opacity,e.trail,i,e.lines)+" "+1/e.speed+"s linear infinite"});if(e.shadow)s(o,u(r("#000","0 0 4px "+"#000"),{top:2+"px"}));s(t,s(o,r(e.color,"0 0 1px rgba(0,0,0,.1)")))}return t},opacity:function(t,e,i){if(e<t.childNodes.length)t.childNodes[e].style.opacity=i}});(function(){function t(t,e){return a("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',e)}var e=u(a("group"),{behavior:"url(#default#VML)"});if(!p(e,"transform")&&e.adj){f.addRule(".spin-vml","behavior:url(#default#VML)");m.prototype.lines=function(e,i){var o=i.length+i.width,r=2*o;function n(){return u(t("group",{coordsize:r+" "+r,coordorigin:-o+" "+-o}),{width:r,height:r})}var a=-(i.width+i.length)*2+"px",f=u(n(),{position:"absolute",top:a,left:a}),l;function p(e,r,a){s(f,s(u(n(),{rotation:360/i.lines*e+"deg",left:~~r}),s(u(t("roundrect",{arcsize:i.corners}),{width:o,height:i.width,left:i.radius,top:-i.width>>1,filter:a}),t("fill",{color:i.color,opacity:i.opacity}),t("stroke",{opacity:0}))))}if(i.shadow)for(l=1;l<=i.lines;l++)p(l,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(l=1;l<=i.lines;l++)p(l);return s(e,f)};m.prototype.opacity=function(t,e,i,o){var r=t.firstChild;o=o.shadow&&o.lines||0;if(r&&e+o<r.childNodes.length){r=r.childNodes[e+o];r=r&&r.firstChild;r=r&&r.firstChild;if(r)r.opacity=i}}}else n=p(e,"animation")})();if(typeof define=="function"&&define.amd)define(function(){return m});else t.Spinner=m}(window,document);
\ No newline at end of file
+// User\r
+var userB64 = null;\r
+var userName = "";\r
+var password = "";\r
+var sessionStarted = false;\r
+var editComment = 0;\r
+var currentfileContent = '';\r
+var originalFileContent = '';\r
+var addNewComment = false;\r
+var commentLineStart;\r
+var commentLineEnd;\r
+\r
+// SHA GitHub\r
+var shaLastCommit = "";\r
+var shaBaseTree;\r
+var shaNewTree;\r
+var shaNewCommit;\r
+var shaBlob;\r
+var shaMaster;\r
+var repoExist = false;\r
+var branchExist = false;\r
+var githubRepo;\r
+var loginProcess = false; \r
+var signedOff = '';\r
+var userEmail = '';\r
+var commitMessage = '';\r
+var numComment = '';\r
+var showcomment = false;\r
+\r
+// Spinner vars\r
+var opts = {\r
+ lines: 11, // The number of lines to draw\r
+ length: 7, // The length of each line\r
+ width: 4, // The line thickness\r
+ radius: 10, // The radius of the inner circle\r
+ corners: 1, // Corner roundness (0..1)\r
+ rotate: 0, // The rotation offset\r
+ color: '#FFF', // #rgb or #rrggbb\r
+ speed: 1, // Rounds per second\r
+ trail: 60, // Afterglow percentage\r
+ shadow: false, // Whether to render a shadow\r
+ hwaccel: false, // Whether to use hardware acceleration\r
+ className: 'spinner', // The CSS class to assign to the spinner\r
+ zIndex: 99999, // The z-index (defaults to 2000000000)\r
+ top: '300', // Top position relative to parent in px\r
+ left: 'auto' // Left position relative to parent in px\r
+ };\r
+var targetSpinner = document.getElementById('waitCommit');\r
+var spinner = new Spinner(opts).spin(targetSpinner);\r
+\r
/*\r
* JQuery Case Insensitive :icontains selector\r
*/\r
//Hightlighted index in search result preview table\r
var currentIndex = -1;\r
\r
+// Check if a comment is editing\r
+window.onbeforeunload = function() {\r
+ if(editComment > 0){\r
+ return 'Are you sure you want to leave this page?';\r
+ }\r
+};\r
\r
/*\r
* Add folding and filtering facilities to class description page.\r
*/\r
$(document).ready(function() {\r
- \r
+\r
+ // Hide edit tags\r
+ $('textarea').hide();\r
+ $('a[id=commitBtn]').hide();\r
+ $('a[id=cancelBtn]').hide();\r
+ // Hide Authenfication form\r
+ $(".popover").hide();\r
+ // Update display\r
+ updateDisplaying();\r
/*\r
* Highlight the spoted element\r
*/\r
$(this).find("a.fold").html("+");\r
}\r
$(this).nextAll().toggle();\r
- })
-
+ })\r
+ \r
// Insert search field\r
$("nav.main ul")\r
.append(\r
})\r
)\r
);\r
-
+ \r
// Filter toggle between H I R in nav porperties list\r
$("nav.properties.filterable .filter")\r
.append(\r
\r
$(this).toggleClass("hidden");\r
})\r
- );
-
- // Filter toggle between I R in
+ );\r
+ \r
+ // Filter toggle between I R in \r
$("article.properties.filterable .filter, article.classes.filterable .filter")\r
.append(\r
$(document.createElement("a"))\r
$("a[href*='#']").click( function() {\r
highlightBlock($(this).attr("href").split(/#/)[1]);\r
});\r
- \r
+\r
//Preload filter fields with query string\r
preloadFilters();\r
+ // Hide Authenfication form\r
+ $(".popover").hide();\r
+ // Display Login modal\r
+ $("#logGitHub").click(function(){ displayLogginModal(); }); \r
+ // Update display\r
+ updateDisplaying();\r
+ // If cookie existing the session is opened\r
+ if(sessionStarted){ userB64 = "Basic " + getUserPass("logginNitdoc"); }\r
+\r
+ // Sign In an github user or Log out him\r
+ $("#signIn").click(function(){\r
+ if(!sessionStarted){\r
+ if($('#loginGit').val() == "" || $('#passwordGit').val() == ""){ displayMessage('Please informed login/password field!', 40, 45); }\r
+ else\r
+ {\r
+ userName = $('#loginGit').val();\r
+ password = $('#passwordGit').val();\r
+ githubRepo = $('#repositoryGit').val();\r
+ branchName = $('#branchGit').val();\r
+ userB64 = "Basic " + base64.encode(userName+':'+password);\r
+ if(checkSignIn()){\r
+ // Check if repo exist\r
+ isRepoExisting();\r
+ if(repoExist){\r
+ $.when(isBranchExisting()).done(function(){\r
+ loginProcess = true;\r
+ if(branchExist){\r
+ setCookie("logginNitdoc", base64.encode(userName+':'+password+':'+githubRepo+':'+branchName), 1);\r
+ $('#loginGit').val("");\r
+ $('#passwordGit').val("");\r
+ reloadComment();\r
+ }\r
+ });\r
+ }\r
+ }\r
+ }\r
+ } \r
+ else\r
+ {\r
+ // Delete cookie and reset settings\r
+ del_cookie("logginNitdoc");\r
+ closeAllCommentInEdtiting();\r
+ } \r
+ displayLogginModal();\r
+ });\r
+\r
+ // Activate edit mode\r
+ $('pre[class=text_label]').click(function(){\r
+ // the customer is loggued ?\r
+ if(!sessionStarted || userName == ""){\r
+ // No => nothing happen\r
+ return;\r
+ }\r
+ else{\r
+ numComment = $(this).attr('title');\r
+ var arrayNew = $(this).text().split('\n');\r
+ var lNew = arrayNew.length - 1;\r
+ var adapt = "";\r
+\r
+ for (var i = 0; i < lNew; i++) {\r
+ adapt += arrayNew[i];\r
+ if(i < lNew-1){ adapt += "\n"; }\r
+ }\r
+ editComment += 1;\r
+ getCommentOfFunction($(this));\r
+ // hide comment\r
+ $(this).hide();\r
+ // Show edit box \r
+ $(this).next().show();\r
+ // Show cancel button\r
+ $(this).next().next().show();\r
+ // Show commit button\r
+ $(this).next().next().next().show();\r
+ // Add text in edit box\r
+ if($(this).next().val() == "" || $(this).next().val() != adapt){ $(this).next().val(adapt); }\r
+ // Resize edit box \r
+ $(this).next().height($(this).next().prop("scrollHeight"));\r
+ resizeTextarea($(this).next());\r
+ // Select it\r
+ $(this).next().select();\r
+ preElement = $(this);\r
+ }\r
+ });\r
+\r
+ // Disable the edit mode\r
+ $('a[id=cancelBtn]').click(function(){\r
+ $(this).parent().prev().children('#lblDiffCommit').text("");\r
+ showcomment = false;\r
+ closeEditing($(this));\r
+ });\r
+\r
+ // Display commit form\r
+ $('a[id=commitBtn]').click(function(){\r
+ updateComment = $(this).prev().prev().val();\r
+ commentType = $(this).prev().prev().prev().attr('type');\r
+\r
+ if(updateComment == ""){ displayMessage('The comment field is empty!', 40, 45); }\r
+ else{\r
+ if(!sessionStarted){\r
+ displayMessage("You need to be loggued before commit something", 45, 40);\r
+ displayLogginModal();\r
+ return;\r
+ }\r
+ \r
+ // Create the commit message\r
+ commitMessage = 'Wikidoc: modified comment in ' + $(this).parent().prev().prev().html().split(' ')[1];\r
+ $('#commitMessage').text(commitMessage);\r
+ $('#commitMessage').css({'display': 'block'});\r
+ pathFile = $(this).prev().prev().prev().attr('tag');\r
+ $('#modal').show().prepend('<a class="close"><img src="resources/icons/close.png" class="btn_close" title="Close" alt="Close" /></a>');\r
+ $('body').append('<div id="fade"></div>');\r
+ $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();\r
+ }\r
+ });\r
+\r
+ // Close commit form\r
+ $('.btn_close').click(function(){\r
+ $(this).hide(); \r
+ $(this).next().hide(); \r
+ if(editComment > 0){ editComment -= 1; }\r
+ $('#chkSignedOff').attr('checked', false);\r
+ removeSignedOff();\r
+ });\r
+\r
+ //Close Popups and Fade Layer\r
+ $('body').on('click', 'a.close, #fade', function() {\r
+ if(editComment > 0){ editComment -= 1; }\r
+ $('#fade , #modal').fadeOut(function() {\r
+ $('#fade, a.close').remove(); \r
+ }); \r
+ $('#modalQuestion').hide();\r
+ $('#chkSignedOff').attr('checked', false);\r
+ removeSignedOff();\r
+ });\r
+\r
+ $('#loginAction').click(function(){\r
+ var text;\r
+ var url;\r
+ var line;\r
+ // Look if the customer is logged\r
+ if(!sessionStarted){\r
+ displayMessage("You need to be loggued before commit something", 100, 40);\r
+ $('.popover').show();\r
+ return;\r
+ }\r
+ else{ userB64 = "Basic " + getUserPass("logginNitdoc"); }\r
+ // Check if repo exist\r
+ isRepoExisting();\r
+ if(repoExist){\r
+ isBranchExisting();\r
+ if(branchExist){\r
+ editComment -= 1;\r
+ commitMessage = $('#commitMessage').val().replace(/\r?\n/g, '\\n').replace(/\t/g, '\\t').replace(/\"/g,'\\"');\r
+ if(commitMessage == ""){ commitMessage = "New commit";}\r
+ if(sessionStarted){\r
+ if ($.trim(updateComment) == ''){ this.value = (this.defaultValue ? this.defaultValue : ''); }\r
+ else{ \r
+ displaySpinner();\r
+ startCommitProcess();\r
+ }\r
+ }\r
+ $('#modal, #modalQuestion').fadeOut(function() {\r
+ $('#login').val("");\r
+ $('#password').val("");\r
+ $('textarea').hide();\r
+ $('textarea').prev().show();\r
+ });\r
+ $('a[id=cancelBtn]').hide();\r
+ $('a[id=commitBtn]').hide();\r
+ $('a[id=lblDiffCommit]').text("");\r
+ showcomment = false;\r
+ // Re-load all comment\r
+ reloadComment();\r
+ }\r
+ }\r
+ else{ editComment -= 1; }\r
+ $('#chkSignedOff').attr('checked', false);\r
+ });\r
+ \r
+ // Cancel creating branch\r
+ $('#btnCancelBranch').click(function(){\r
+ editComment -= 1;\r
+ $('#modalQuestion').hide();\r
+ $('#fade , #modal').fadeOut(function() { $('#fade, a.close').remove(); });\r
+ return;\r
+ });\r
+\r
+ // Create new branch and continu\r
+ $('#btnCreateBranch').click(function(){\r
+ $('#modalQuestion').hide();\r
+ if($('#btnCreateBranch').text() != 'Ok'){\r
+ // Create the branch\r
+ createBranch();\r
+ commitMessage = $('#commitMessage').val().replace(/\r?\n/g, '\\n').replace(/\t/g, '\\t').replace(/\"/g,'\\"');\r
+ if(commitMessage == ""){ commitMessage = "New commit"; }\r
+ if(userB64 != ""){ \r
+ if(loginProcess){\r
+ setCookie("logginNitdoc", base64.encode(userName+':'+password+':'+githubRepo+':'+branchName), 1); \r
+ $('#loginGit').val("");\r
+ $('#passwordGit').val("");\r
+ loginProcess = false; \r
+ displayLogginModal();\r
+ }\r
+ else{\r
+ if ($.trim(updateComment) == ''){ this.value = (this.defaultValue ? this.defaultValue : ''); }\r
+ else{ startCommitProcess(); }\r
+ } \r
+ }\r
+ }\r
+ else\r
+ {\r
+ $('#fade , #modalQuestion, #modal').fadeOut(function() { $('#fade, a.close').remove(); });\r
+ }\r
+ });\r
+\r
+ $('a[class=newComment]').click(function(){\r
+ addNewComment = true; \r
+ editComment += 1;\r
+ // hide comment\r
+ $(this).hide();\r
+ // Show edit box \r
+ $(this).next().show();\r
+ // Show cancel button\r
+ $(this).next().next().show();\r
+ // Show commit button\r
+ $(this).next().next().next().show();\r
+ // Resize edit box \r
+ $(this).next().height($(this).next().prop("scrollHeight"));\r
+ resizeTextarea($(this).next());\r
+ // Select it\r
+ $(this).next().select();\r
+ preElement = $(this); \r
+ });\r
+\r
+ $("#dropBranches").change(function () { \r
+ $("#dropBranches option:selected").each(function () {\r
+ if(branchName != $(this).text()){\r
+ branchName = $(this).text();\r
+ }\r
+ });\r
+ $.when(updateCookie(userName, password, githubRepo, branchName)).done(function(){\r
+ closeAllCommentInEdtiting();\r
+ reloadComment();\r
+ });\r
+ });\r
+\r
+ $("pre").hover(\r
+ function () {\r
+ if(sessionStarted == true){\r
+ $(this).css({'cursor' : 'hand'});\r
+ }\r
+ else{\r
+ $(this).css({'cursor' : ''});\r
+ }\r
+ },\r
+ function () {\r
+ if(sessionStarted == true){\r
+ $(this).css({'cursor' : 'pointer'});\r
+ }\r
+ else{\r
+ $(this).css({'cursor' : ''}); \r
+ }\r
+ }\r
+ );\r
+\r
+ $('#chkSignedOff').click(function(){\r
+ if($(this).is(':checked')){ addSignedOff(); }\r
+ else{ removeSignedOff(); }\r
+ })\r
+\r
+ $('a[id=lblDiffCommit]').click(function(){\r
+ showComment($(this));\r
+ });\r
});\r
\r
/* Parse current URL and return anchor name */\r
return null;\r
}\r
\r
-/* Prealod filters field using search query */
-function preloadFilters() {
- // Parse URL and get query string
- var search = currentAnchor();
-
- if(search == null || search.indexOf("q=") == -1)
- return;
-
+/* Prealod filters field using search query */\r
+function preloadFilters() {\r
+ // Parse URL and get query string\r
+ var search = currentAnchor();\r
+ \r
+ if(search == null || search.indexOf("q=") == -1)\r
+ return;\r
+ \r
search = search.substring(2, search.length); \r
-
- if(search == "" || search == "undefined")
- return;
\r
- $(":text").val(search);
- $(".filter :text")
- .removeClass("notUsed")
- .trigger("keyup");
-
+ if(search == "" || search == "undefined")\r
+ return;\r
+ \r
+ $(":text").val(search);\r
+ $(".filter :text")\r
+ .removeClass("notUsed")\r
+ .trigger("keyup");\r
+\r
}\r
\r
/* Hightlight the spoted block */\r
\r
target.addClass("highlighted");\r
target.show();\r
-}
\ No newline at end of file
+}\r
+\r
+// Init process to commit the new comment\r
+function startCommitProcess()\r
+{ \r
+ if($('#chkSignedOff').is(':checked')){\r
+ var numL = preElement.attr("title");\r
+ commentLineStart = numL.split('-')[0] - 1; \r
+ if(addNewComment) { commentLineStart++; }\r
+ commentLineEnd = (commentLineStart + preElement.text().split('\n').length) - 1;\r
+ state = true; \r
+ replaceComment(updateComment, currentfileContent);\r
+ getLastCommit(); \r
+ getBaseTree(); \r
+ editComment = false;\r
+ }\r
+ else{\r
+ displayMessage('Please sign this commit', 40, 40); \r
+ }\r
+}\r
+\r
+function displayLogginModal(){\r
+ if ($('.popover').is(':hidden')) { \r
+ if(sessionStarted){ getListBranches(); }\r
+ $('.popover').show(); \r
+ }\r
+ else { $('.popover').hide(); } \r
+ updateDisplaying();\r
+}\r
+\r
+function updateDisplaying(){\r
+ if (checkCookie())\r
+ {\r
+ userB64 = "Basic " + getUserPass("logginNitdoc"); \r
+ $('#loginGit').hide();\r
+ $('#passwordGit').hide();\r
+ $('#lbpasswordGit').hide(); \r
+ $('#lbloginGit').hide(); \r
+ $('#repositoryGit').hide();\r
+ $('#lbrepositoryGit').hide();\r
+ $('#lbbranchGit').hide(); \r
+ $('#branchGit').hide();\r
+ $('#listBranches').show();\r
+ $('#divGitHubRepoDisplay').show();\r
+ $("#liGitHub").attr("class", "current");\r
+ $("#imgGitHub").attr("src", "resources/icons/github-icon-w.png");\r
+ $('#nickName').text(userName);\r
+ $('#githubAccount').attr("href", "https://github.com/"+userName);\r
+ $('#logginMessage').css({'display' : 'block'});\r
+ $('#logginMessage').css({'text-align' : 'center'});\r
+ $('.popover').css({'height' : '190px'});\r
+ $('#signIn').text("Sign out");\r
+ $('#githubRepoDisplay').text(githubRepo);\r
+ sessionStarted = true;\r
+ reloadComment();\r
+ }\r
+ else\r
+ {\r
+ sessionStarted = false;\r
+ $('#logginMessage').css({'display' : 'none'});\r
+ $("#liGitHub").attr("class", "");\r
+ $("#imgGitHub").attr("src", "resources/icons/github-icon.png");\r
+ $('#loginGit').val("");\r
+ $('#passwordGit').val("");\r
+ $('#nickName').text("");\r
+ $('.popover').css({'height' : '325px'});\r
+ $('#logginMessage').css({'display' : 'none'});\r
+ $('#repositoryGit').val($('#repoName').attr('name'));\r
+ $('#branchGit').val('wikidoc'); \r
+ $('#signIn').text("Sign In");\r
+ $('#loginGit').show();\r
+ $('#passwordGit').show();\r
+ $('#lbpasswordGit').show();\r
+ $('#lbloginGit').show(); \r
+ $('#repositoryGit').show();\r
+ $('#lbrepositoryGit').show();\r
+ $('#lbbranchGit').show(); \r
+ $('#branchGit').show(); \r
+ $('#listBranches').hide();\r
+ $('#divGitHubRepoDisplay').hide();\r
+ }\r
+}\r
+\r
+function setCookie(c_name, value, exdays)\r
+{\r
+ var exdate=new Date();\r
+ exdate.setDate(exdate.getDate() + exdays);\r
+ var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());\r
+ document.cookie=c_name + "=" + c_value;\r
+}\r
+\r
+function del_cookie(c_name)\r
+{\r
+ document.cookie = c_name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';\r
+}\r
+\r
+function updateCookie(user, pwd, repo, branch){\r
+ if(checkCookie()){\r
+ branchName = branch;\r
+ setCookie("logginNitdoc", base64.encode(user+':'+pwd+':'+repo+':'+branch), 1);\r
+ }\r
+}\r
+\r
+function getCookie(c_name)\r
+{\r
+ var c_value = document.cookie;\r
+ var c_start = c_value.indexOf(" " + c_name + "=");\r
+ if (c_start == -1) { c_start = c_value.indexOf(c_name + "="); }\r
+ if (c_start == -1) { c_value = null; }\r
+ else\r
+ {\r
+ c_start = c_value.indexOf("=", c_start) + 1;\r
+ var c_end = c_value.indexOf(";", c_start);\r
+ if (c_end == -1) { c_end = c_value.length; }\r
+ c_value = unescape(c_value.substring(c_start,c_end));\r
+ }\r
+ return c_value;\r
+}\r
+\r
+function getUserPass(c_name){\r
+ var cookie = base64.decode(getCookie(c_name));\r
+ return base64.encode(cookie.split(':')[0] + ':' + cookie.split(':')[1]);\r
+}\r
+\r
+function checkCookie()\r
+{\r
+ var cookie=getCookie("logginNitdoc");\r
+ if (cookie!=null && cookie!="")\r
+ {\r
+ cookie = base64.decode(cookie);\r
+ userName = cookie.split(':')[0];\r
+ password = cookie.split(':')[1];\r
+ githubRepo = cookie.split(':')[2]; \r
+ branchName = cookie.split(':')[3];\r
+ return true;\r
+ }\r
+ else { return false; }\r
+}\r
+\r
+\r
+/*\r
+* Base64\r
+*/\r
+base64 = {};\r
+base64.PADCHAR = '=';\r
+base64.ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r
+base64.getbyte64 = function(s,i) {\r
+ // This is oddly fast, except on Chrome/V8.\r
+ // Minimal or no improvement in performance by using a\r
+ // object with properties mapping chars to value (eg. 'A': 0)\r
+ var idx = base64.ALPHA.indexOf(s.charAt(i));\r
+ if (idx == -1) {\r
+ throw "Cannot decode base64";\r
+ }\r
+ return idx;\r
+}\r
+\r
+base64.decode = function(s) {\r
+ // convert to string\r
+ s = "" + s;\r
+ var getbyte64 = base64.getbyte64;\r
+ var pads, i, b10;\r
+ var imax = s.length\r
+ if (imax == 0) {\r
+ return s;\r
+ }\r
+\r
+ if (imax % 4 != 0) {\r
+ throw "Cannot decode base64";\r
+ }\r
+\r
+ pads = 0\r
+ if (s.charAt(imax -1) == base64.PADCHAR) {\r
+ pads = 1;\r
+ if (s.charAt(imax -2) == base64.PADCHAR) {\r
+ pads = 2;\r
+ }\r
+ // either way, we want to ignore this last block\r
+ imax -= 4;\r
+ }\r
+\r
+ var x = [];\r
+ for (i = 0; i < imax; i += 4) {\r
+ b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) |\r
+ (getbyte64(s,i+2) << 6) | getbyte64(s,i+3);\r
+ x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff));\r
+ }\r
+\r
+ switch (pads) {\r
+ case 1:\r
+ b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | (getbyte64(s,i+2) << 6)\r
+ x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff));\r
+ break;\r
+ case 2:\r
+ b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12);\r
+ x.push(String.fromCharCode(b10 >> 16));\r
+ break;\r
+ }\r
+ return x.join('');\r
+}\r
+\r
+base64.getbyte = function(s,i) {\r
+ var x = s.charCodeAt(i);\r
+ if (x > 255) {\r
+ throw "INVALID_CHARACTER_ERR: DOM Exception 5";\r
+ }\r
+ return x;\r
+}\r
+\r
+\r
+base64.encode = function(s) {\r
+ if (arguments.length != 1) {\r
+ throw "SyntaxError: Not enough arguments";\r
+ }\r
+ var padchar = base64.PADCHAR;\r
+ var alpha = base64.ALPHA;\r
+ var getbyte = base64.getbyte;\r
+\r
+ var i, b10;\r
+ var x = [];\r
+\r
+ // convert to string\r
+ s = "" + s;\r
+\r
+ var imax = s.length - s.length % 3;\r
+\r
+ if (s.length == 0) {\r
+ return s;\r
+ }\r
+ for (i = 0; i < imax; i += 3) {\r
+ b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8) | getbyte(s,i+2);\r
+ x.push(alpha.charAt(b10 >> 18));\r
+ x.push(alpha.charAt((b10 >> 12) & 0x3F));\r
+ x.push(alpha.charAt((b10 >> 6) & 0x3f));\r
+ x.push(alpha.charAt(b10 & 0x3f));\r
+ }\r
+ switch (s.length - imax) {\r
+ case 1:\r
+ b10 = getbyte(s,i) << 16;\r
+ x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +\r
+ padchar + padchar);\r
+ break;\r
+ case 2:\r
+ b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8);\r
+ x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +\r
+ alpha.charAt((b10 >> 6) & 0x3f) + padchar);\r
+ break;\r
+ }\r
+ return x.join('');\r
+}\r
+\r
+\r
+\r
+function getLastCommit() \r
+{ \r
+ var urlHead = '';\r
+ if(sessionStarted){ urlHead = "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/refs/heads/"+branchName;}\r
+ else{ \r
+ // TODO: get url of the original repo.\r
+ return;\r
+ }\r
+\r
+ $.ajax({\r
+ beforeSend: function (xhr) { \r
+ if (userB64 != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET",\r
+ url: urlHead,\r
+ dataType:"json",\r
+ async: false,\r
+ success: function(success)\r
+ { \r
+ shaLastCommit = success.object.sha; \r
+ }\r
+ });\r
+}\r
+\r
+function getBaseTree()\r
+{ \r
+ $.ajax({ \r
+ beforeSend: function (xhr) { \r
+ if (userB64 != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/commits/" + shaLastCommit,\r
+ dataType:"json",\r
+ async: false,\r
+ success: function(success)\r
+ { \r
+ shaBaseTree = success.tree.sha;\r
+ if (state){ setBlob(); }\r
+ else{ return; } \r
+ },\r
+ error: function(){\r
+ return;\r
+ }\r
+ }); \r
+}\r
+\r
+function setNewTree()\r
+{\r
+ $.ajax({ \r
+ beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", userB64); },\r
+ type: "POST",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/trees", \r
+ async: false,\r
+ dataType:'json',\r
+ data:'{ "base_tree" : "'+shaBaseTree+'", '+\r
+ '"tree":[{ '+\r
+ '"path":"'+ pathFile +'",'+\r
+ '"mode":"100644",'+\r
+ '"type":"blob",'+\r
+ '"sha": "'+ shaBlob +'"'+\r
+ '}] '+\r
+ '}', \r
+ success: function(success)\r
+ { // si l'appel a bien fonctionné\r
+ shaNewTree = success.sha;\r
+ setNewCommit(); \r
+ },\r
+ error: function(){\r
+ return;\r
+ }\r
+ });\r
+}\r
+\r
+function setNewCommit()\r
+{\r
+ addSignedOff();\r
+ $.ajax({ \r
+ beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", userB64); },\r
+ type: "POST",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/commits", \r
+ async: false,\r
+ dataType:'json',\r
+ data:'{ "message" : "'+ commitMessage +'", '+\r
+ '"parents" :"'+shaLastCommit+'",'+ \r
+ '"tree": "'+shaNewTree+'"'+\r
+ '}', \r
+ success: function(success)\r
+ {\r
+ shaNewCommit = success.sha;\r
+ commit(); \r
+ },\r
+ error: function(){\r
+ return;\r
+ }\r
+ });\r
+}\r
+\r
+//Create a commit\r
+function commit()\r
+{\r
+ $.ajax({ \r
+ beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", userB64); },\r
+ type: "POST",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/refs/heads/"+branchName, \r
+ dataType:'json',\r
+ data:'{ "sha" : "'+shaNewCommit+'", '+\r
+ '"force" :"true"'+\r
+ '}',\r
+ success: function(success) { displayMessage('Commit created successfully', 40, 40); },\r
+ error:function(error){ displayMessage('Error ' + error.object.message, 40, 40); }\r
+ });\r
+}\r
+\r
+// Create a blob\r
+function setBlob()\r
+{\r
+ $.ajax({\r
+ beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", userB64); },\r
+ type: "POST", \r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/blobs", \r
+ async: false,\r
+ dataType:'json',\r
+ data:'{ "content" : "'+text.replace(/\r?\n/g, '\\n').replace(/\t/g, '\\t').replace(/\"/g,'\\"')+'", '+\r
+ '"encoding" :"utf-8"'+\r
+ '}',\r
+ success: function(success)\r
+ { \r
+ shaBlob = success.sha;\r
+ setNewTree(); \r
+ },\r
+ error:function(error){ \r
+ displayMessage('Error : Problem parsing JSON', 40, 40); \r
+ return;\r
+ }\r
+ });\r
+}\r
+\r
+// Display file content\r
+function getFileContent(urlFile, newComment)\r
+{\r
+ $.ajax({\r
+ beforeSend: function (xhr) { \r
+ xhr.setRequestHeader ("Accept", "application/vnd.github-blob.raw");\r
+ if (userB64 != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET", \r
+ url: urlFile, \r
+ async:false,\r
+ success: function(success)\r
+ {\r
+ state = true;\r
+ replaceComment(newComment, success); \r
+ }\r
+ });\r
+}\r
+\r
+function replaceComment(newComment, fileContent){\r
+ var arrayNew = newComment.split('\n'); \r
+ var lNew = arrayNew.length;\r
+ text = "";\r
+ var lines = fileContent.split("\n");\r
+ for (var i = 0; i < lines.length; i++) {\r
+ if(i == commentLineStart){\r
+ if(addNewComment){\r
+ for(var indexLine=0; indexLine < lines[i+1].length; indexxLine++){\r
+ if(lines[i+1].substr(indexLine,1) == "\t" || lines[i+1].substr(indexLine,1) == "#"){ text += lines[i+1].substr(indexLine,1); }\r
+ else{ break;}\r
+ }\r
+ text += lines[i] + "\n"; \r
+ }\r
+ // We change the comment\r
+ for(var j = 0; j < lNew; j++){\r
+ if(commentType == 1){ text += "\t# " + arrayNew[j] + "\n"; }\r
+ else{\r
+ if(arrayNew[j] == ""){ text += "#"+"\n"; }\r
+ else{ text += "# " + arrayNew[j] + "\n"; }\r
+ }\r
+ }\r
+ }\r
+ else if(i < commentLineStart || i >= commentLineEnd){\r
+ if(i == lines.length-1){ text += lines[i]; }\r
+ else{ text += lines[i] + "\n"; }\r
+ }\r
+ }\r
+ if(addNewComment){\r
+ addNewComment = false;\r
+ }\r
+}\r
+\r
+function getCommentLastCommit(path, origin){\r
+ var urlRaw;\r
+ var bkBranch = '';\r
+ if(origin){// We want to get the original file\r
+ bkBranch = branchName;\r
+ branchName = "master";\r
+ }\r
+ getLastCommit();\r
+ if(shaLastCommit != ""){\r
+ if (checkCookie()) {\r
+ urlRaw="https://rawgithub.com/"+ userName +"/"+ githubRepo +"/" + shaLastCommit + "/" + path;\r
+ $.ajax({ \r
+ type: "GET",\r
+ url: urlRaw,\r
+ async: false,\r
+ success: function(success)\r
+ {\r
+ if(origin){ originalFileContent = success; }\r
+ else{ currentfileContent = success; }\r
+ }\r
+ });\r
+ }\r
+ }\r
+ if(origin){ branchName = bkBranch; }\r
+}\r
+\r
+function displayMessage(msg, widthDiv, margModal){\r
+ spinner.stop();\r
+ $('#modal').hide();\r
+ $('#btnCancelBranch').hide(); \r
+ $('#modalQuestion').show().prepend('<a class="close"><img src="resources/icons/close.png" class="btnCloseQuestion" title="Close" alt="Close" /></a>');\r
+ $('#txtQuestion').text(msg);\r
+ $('#btnCreateBranch').text("Ok");\r
+ var xModal = $('#modalQuestion').css('width').split('px')[0];\r
+ var yModal = $('#modalQuestion').css('height').split('px')[0];\r
+ var x = $(document).width/2 - xModal/2;\r
+ var y = $(document).height/2 - yModal/2;\r
+ var xBtnBranch = $('#btnCreateBranch').css('width').split('px')[0];\r
+ $('#modalQuestion').css({'left' : x, 'top' : y});\r
+ $('#modalQuestion').show();\r
+ $('#btnCreateBranch').css('margin-left', xModal/2 - xBtnBranch);\r
+ $('body').append('<div id="fade"></div>');\r
+ $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();\r
+}\r
+\r
+function displaySpinner(){\r
+ spinner.spin(targetSpinner);\r
+ $("#waitCommit").show();\r
+}\r
+\r
+// Check if the repo already exist\r
+function isRepoExisting(){\r
+ $.ajax({\r
+ beforeSend: function (xhr) { \r
+ if (userB64 != "") { xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET", \r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo, \r
+ async:false,\r
+ dataType:'json',\r
+ success: function(){ repoExist = true; },\r
+ error: function()\r
+ {\r
+ displayMessage('Repo not found !', 35, 45);\r
+ repoExist = false;\r
+ }\r
+ });\r
+}\r
+\r
+// Check if the branch already exist\r
+function isBranchExisting(){\r
+ $.ajax({\r
+ beforeSend: function (xhr) {\r
+ if (userB64 != "") { xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/refs/heads/"+branchName,\r
+ async:false,\r
+ dataType:'json',\r
+ success: function(){ branchExist = true; },\r
+ error: function()\r
+ {\r
+ branchExist = false;\r
+ editComment -= 1;\r
+ $('#modal').hide();\r
+ $('#txtQuestion').text("Are you sure you want to create that branch ?");\r
+ $('#btnCancelBranch').show();\r
+ $('#btnCreateBranch').text("Yes");\r
+ $('#modalQuestion').show();\r
+ $('#modalQuestion').show().prepend('<a class="close"><img src="resources/icons/close.png" class="btnCloseQuestion" title="Close" alt="Close" /></a>');\r
+ $('body').append('<div id="fade"></div>');\r
+ $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();\r
+ }\r
+ });\r
+}\r
+\r
+function getMasterSha() \r
+{\r
+ $.ajax({\r
+ beforeSend: function (xhr) { \r
+ if (userB64 != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/refs/heads/master",\r
+ dataType:"json",\r
+ async: false,\r
+ success: function(success) { shaMaster = success.object.sha; }\r
+ });\r
+}\r
+\r
+function createBranch(){\r
+\r
+ getMasterSha();\r
+\r
+ $.ajax({ \r
+ beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", userB64); },\r
+ type: "POST",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/git/refs", \r
+ data:'{ "ref" : "refs/heads/'+branchName+'",'+\r
+ '"sha" : "'+shaMaster+'"'+\r
+ '}',\r
+ success: function(){ return; },\r
+ error: function(){\r
+ editComment -= 1;\r
+ displayMessage('Impossible to create the new branch : ' + branchName, 40, 40);\r
+ }\r
+ });\r
+}\r
+\r
+$.fn.spin = function(opts) {\r
+ this.each(function() {\r
+ var $this = $(this),\r
+ data = $this.data();\r
+\r
+ if (data.spinner) {\r
+ data.spinner.stop();\r
+ delete data.spinner;\r
+ }\r
+ if (opts !== false) {\r
+ data.spinner = new Spinner($.extend({color: $this.css('color')}, opts)).spin(this);\r
+ }\r
+ });\r
+ return this;\r
+};\r
+\r
+function reloadComment(){\r
+ var path = $('pre[class=text_label]').attr('tag');\r
+ $.when(getCommentLastCommit(path, false)).done(function(){\r
+ if(sessionStarted){ getCommentLastCommit(path, true); }\r
+ $('pre[class=text_label]').each(function(){ getCommentOfFunction($(this)); });\r
+ });\r
+}\r
+\r
+function getCommentOfFunction(element){\r
+ var textC = ""; \r
+ var numL = element.attr("title");\r
+ if(numL != null){ \r
+ commentLineStart = numL-1; \r
+ commentLineEnd = element.attr('name').split(numL)[1].split('-')[1]-1; \r
+ var lines = currentfileContent.split("\n");\r
+ for (var i = 0; i < lines.length; i++) {\r
+ if(i >= commentLineStart-1 && i <= commentLineEnd+1){\r
+ if (lines[i].substr(1,1) == "#"){ textC += lines[i].substr(3,lines[i].length) + "\n";}\r
+ else if(lines[i].substr(0,1) == '#'){ textC += lines[i].substr(2,lines[i].length) + "\n"; }\r
+ }\r
+ }\r
+ if(textC != element.text){element.text(textC);}\r
+ if (textC != "" && editComment > 0){\r
+ var originContent = originalFileContent.split("\n");\r
+ var origin = '';\r
+ var lblDiff = element.parent().prev().children('#lblDiffCommit');\r
+ var preSave = element.parent().children('#preSave');\r
+ for (var i = 0; i < originContent.length; i++) {\r
+ if(i >= commentLineStart-1 && i <= commentLineEnd+1){\r
+ if (originContent[i].substr(1,1) == "#"){ origin += originContent[i].substr(3,originContent[i].length) + "\n";}\r
+ else if(originContent[i].substr(0,1) == '#'){ origin += originContent[i].substr(2,originContent[i].length) + "\n"; }\r
+ }\r
+ }\r
+ if(textC != origin && numL == numComment){\r
+ // The comment is different compare to the original\r
+ if(showcomment == false){ lblDiff.text("Show original comment"); }\r
+ preSave.text(origin);\r
+ }\r
+ else if (numL == numComment){ lblDiff.text(""); }\r
+ }\r
+ }\r
+}\r
+\r
+// Get list of branches\r
+function getListBranches()\r
+{\r
+ cleanListBranches();\r
+ $.ajax({\r
+ beforeSend: function (xhr) { \r
+ if ($("#login").val() != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET", \r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo+"/branches", \r
+ async:false,\r
+ dataType:'json',\r
+ success: function(success)\r
+ { \r
+ for(var branch in success) { \r
+ var selected = '';\r
+ if(branchName == success[branch].name){\r
+ selected = 'selected';\r
+ }\r
+ $('#dropBranches').append('<option value="" '+ selected +'>' + success[branch].name + '</option>');\r
+ }\r
+ }\r
+ });\r
+}\r
+\r
+// Delete all option in the list\r
+function cleanListBranches(){\r
+ $('#dropBranches').children("option").remove();\r
+}\r
+\r
+function closeAllCommentInEdtiting(){\r
+ $('a[id=cancelBtn]').each(function(){\r
+ closeEditing($(this));\r
+ });\r
+}\r
+\r
+function closeEditing(tag){\r
+ if(editComment > 0){ editComment -= 1; }\r
+ // Hide itself\r
+ tag.hide();\r
+ // Hide commitBtn\r
+ tag.next().hide();\r
+ // Hide Textarea\r
+ tag.prev().hide();\r
+ // Show comment\r
+ tag.prev().prev().show();\r
+}\r
+\r
+function checkSignIn(){\r
+ var response = false;\r
+ $.ajax({\r
+ beforeSend: function (xhr) {\r
+ if ($("#login").val() != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET",\r
+ url: "https://api.github.com/repos/"+userName+"/"+githubRepo,\r
+ async:false,\r
+ dataType:'json',\r
+ success: function(success)\r
+ {\r
+ getUserInfo();\r
+ response = true;\r
+ displayMessage('You are now logged in');\r
+ },\r
+ error: function()\r
+ {\r
+ displayMessage('Error : Wrong username or password');\r
+ response = false;\r
+ }\r
+ });\r
+ return response;\r
+}\r
+\r
+function getUserInfo(){\r
+ $.ajax({\r
+ beforeSend: function (xhr) {\r
+ if ($("#login").val() != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET",\r
+ url: "https://api.github.com/user/emails",\r
+ async:false,\r
+ dataType:'json',\r
+ success: function(success)\r
+ { \r
+ userEmail = success;\r
+ }\r
+ });\r
+}\r
+\r
+function getSignedOff(){\r
+ $.ajax({\r
+ beforeSend: function (xhr) {\r
+ if ($("#login").val() != ""){ xhr.setRequestHeader ("Authorization", userB64); }\r
+ },\r
+ type: "GET",\r
+ url: "https://api.github.com/users/"+userName,\r
+ async:false,\r
+ dataType:'json',\r
+ success: function(success)\r
+ {\r
+ signedOff = success.name;\r
+ }\r
+ });\r
+}\r
+\r
+function addSignedOff(){\r
+ $.when(getUserInfo()).done(function(){\r
+ $.when(getSignedOff()).done(function(){\r
+ $('#commitMessage').val($('#commitMessage').val() + "\n\nSigned-off-by: "+signedOff+" <"+userEmail+">");\r
+ });\r
+ });\r
+ resizeTextarea($('#commitMessage'));\r
+}\r
+\r
+function removeSignedOff(){\r
+ $('#commitMessage').val(commitMessage); \r
+ resizeTextarea($('#commitMessage'));\r
+}\r
+\r
+function resizeTextarea(element){\r
+ var nLines = element.val().split('\n').length + 1;\r
+ element.attr('rows', nLines);\r
+}\r
+\r
+function showComment(element){\r
+ // Display the original comment\r
+ if (showcomment == true){ \r
+ showcomment = false;\r
+ element.text("Show original comment");\r
+ }\r
+ else{\r
+ // Show the comment updated in user's repo\r
+ showcomment = true;\r
+ element.text("Comment changed in "+githubRepo+" / "+branchName);\r
+ }\r
+ var parent = element.parent().next(".description"); \r
+ var textarea = parent.children('#fileContent');\r
+ var text = textarea.val(); \r
+ var preSave = parent.children('#preSave'); \r
+ textarea.val(preSave.text());\r
+ preSave.text(text);\r
+ // Resize edit box\r
+ textarea.height(textarea.prop("scrollHeight"));\r
+ resizeTextarea(textarea);\r
+}\r
margin: 0;\r
}\r
\r
-/* JS facilities */
-
+/* JS facilities */\r
+\r
input[type=text] {\r
width: 150px;\r
border: 1px solid #CCC;\r
- margin-right: 5px;
+ margin-right: 5px;\r
padding: 1px 2px;\r
-}
-
+}\r
+\r
input[type=text].notUsed {\r
color: #999;\r
font-style: italic;\r
}\r
-
+\r
nav .filter {\r
text-align: center;\r
padding: 5px;\r
-}
-
-nav.main input[type=text] {
- margin: -2px 10px;
- color: black;
- font-style: normal;
-}
-
-nav.main form {
- float: right;
+}\r
+\r
+nav.main input[type=text] {\r
+ margin: -2px 10px;\r
+ color: black;\r
+ font-style: normal;\r
+}\r
+\r
+nav.main form {\r
+ float: right; \r
}\r
\r
.filter a {\r
color: #0D8921;\r
cursor: pointer;\r
font-family: monospace;\r
- margin-right: 5px;
+ margin-right: 5px;\r
font-weight: bold;\r
}\r
\r
.filter a.hidden {\r
- color: #999;
+ color: #999;\r
font-weight: normal;\r
-}
-
+}\r
+\r
.filter a:hover {\r
text-decoration: underline;\r
}\r
background-color: #FFFFFF;\r
border: 1px solid #E0E0E0;\r
border-spacing: 0px;\r
- z-index: 10; /* the menu must be over the rest of the page. */
+ z-index: 10; /* the menu must be over the rest of the page. */\r
}\r
\r
#searchTable .activeSearchResult {\r
font-size: small;\r
width: 75%;\r
text-align: right;\r
-}
\ No newline at end of file
+}\r
+\r
+textarea {\r
+ margin: 10px;\r
+ font-family: monospace;\r
+ font-size: 1em;\r
+ width: 100%;\r
+}\r
+#commitBtn, #cancelBtn{\r
+ float: right;\r
+ margin-right: 10px;\r
+}\r
+#commitBtn:hover, #cancelBtn:hover, #lblDiffCommit:hover{\r
+ cursor: hand; cursor: pointer;\r
+}\r
+\r
+#waitCommit { /*--Masque opaque noir de fond--*/\r
+ display: none;\r
+ top: 40%; left: 40%;\r
+ z-index: 99999;\r
+}\r
+#fade { /*--Masque opaque noir de fond--*/\r
+ display: none; /*--masqué par défaut--*/\r
+ background: #000;\r
+ position: fixed; left: 0; top: 0;\r
+ width: 100%; height: 100%;\r
+ opacity: .80;\r
+ z-index: 9999;\r
+}\r
+#modal{\r
+ display: none; /*--masqué par défaut--*/\r
+ background: #fff;\r
+ padding: 20px;\r
+ border: 3px solid #ddd;\r
+ float: left;\r
+ font-size: 1.2em;\r
+ position: fixed;\r
+ top: 20%; left: 40%;\r
+ z-index: 99999;\r
+ /*--Les différentes définitions de Box Shadow en CSS3--*/\r
+ -webkit-box-shadow: 0px 0px 20px #000;\r
+ -moz-box-shadow: 0px 0px 20px #000;\r
+ box-shadow: 0px 0px 20px #000;\r
+ /*--Coins arrondis en CSS3--*/\r
+ -webkit-border-radius: 10px;\r
+ -moz-border-radius: 10px;\r
+ border-radius: 10px;\r
+}\r
+\r
+#modal #logginName{\r
+ display: none; /*--masqué par défaut--*/\r
+ background: #fff;\r
+ padding: 20px;\r
+ margin-bottom: 400px; \r
+ font-size: 1.2em; \r
+}\r
+\r
+#modalQuestion{\r
+ display: none; /*--masqué par défaut--*/\r
+ background: #fff;\r
+ padding: 20px;\r
+ border: 3px solid #ddd;\r
+ float: left;\r
+ font-size: 1.2em;\r
+ position: fixed;\r
+ top: 20%; left: 40%;\r
+ z-index: 99999;\r
+ /*--Les différentes définitions de Box Shadow en CSS3--*/\r
+ -webkit-box-shadow: 0px 0px 20px #000;\r
+ -moz-box-shadow: 0px 0px 20px #000;\r
+ box-shadow: 0px 0px 20px #000;\r
+ /*--Coins arrondis en CSS3--*/\r
+ -webkit-border-radius: 10px;\r
+ -moz-border-radius: 10px;\r
+ border-radius: 10px;\r
+}\r
+\r
+#btnCreateBranch, #btnCancelBranch{\r
+ padding: 6px 7px;\r
+ -moz-border-bottom-colors: none;\r
+ -moz-border-left-colors: none;\r
+ -moz-border-right-colors: none;\r
+ -moz-border-top-colors: none;\r
+ background-color: #F5F5F5;\r
+ background-image: linear-gradient(to bottom, #FFFFFF, #E6E6E6);\r
+ background-repeat: repeat-x;\r
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) #B3B3B3;\r
+ border-image: none;\r
+ border-radius: 4px 4px 4px 4px;\r
+ border-style: solid;\r
+ border-width: 1px;\r
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);\r
+ color: #333333;\r
+ cursor: pointer;\r
+ display: inline-block;\r
+ font-size: 14px;\r
+ line-height: 20px;\r
+ margin-bottom: 0;\r
+ padding: 4px 12px;\r
+ text-align: center;\r
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);\r
+ vertical-align: middle;\r
+ margin-top: 5%;\r
+ margin-left: 10px;\r
+\r
+}\r
+\r
+#btnCreateBranch{\r
+ margin-left: 35%;\r
+}\r
+\r
+img.btn_close, img.btnCloseQuestion {\r
+ float: right;\r
+ margin: -35px -35px 0 0;\r
+}\r
+fieldset { \r
+ margin-bottom: 20px; \r
+}\r
+\r
+#login, #password, #commitMessage, #repoCommit, #branchName{\r
+ border: 1px solid #ccc;\r
+ padding: 6px 7px;\r
+ outline: none;\r
+ -moz-border-radius: 2px;\r
+ -webkit-border-radius: 2px;\r
+ border-radius: 2px;\r
+ font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;\r
+ color: #777;\r
+ margin: 0;\r
+ width: 210px;\r
+ max-width: 100%;\r
+ display: block;\r
+ margin-bottom: 20px;\r
+ background: #fff; \r
+}\r
+\r
+.connect-button a{\r
+ display: block;\r
+ cursor: pointer;\r
+ margin: 0 0 20px 0;\r
+ background-color: #92C929;\r
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#92C929), to(#1d7900)); /* Saf4+, Chrome */\r
+ background-image: -webkit-linear-gradient(top, #92C929, #1d7900); /* Chrome 10+, Saf5.1+ */\r
+ background-image: -moz-linear-gradient(top, #92C929, #1d7900); /* FF3.6 */\r
+ background-image: -ms-linear-gradient(top, #92C929, #1d7900); /* IE10 */\r
+ background-image: -o-linear-gradient(top, #92C929, #1d7900); /* Opera 11.10+ */\r
+ background-image: linear-gradient(top, #92C929, #1d7900);\r
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#92C929', EndColorStr='#1d7900'); /* IE6–IE9 */ \r
+ border-radius: 4px;\r
+ -moz-border-radius: 4px; \r
+ -webkit-border-radius: 4px; \r
+ -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; \r
+ box-shadow: 0px 2px 4px rgba(0,0,0, .2);\r
+ -moz-box-shadow: 0px 2px 4px rgba(0,0,0, .2);\r
+ -webkit-box-shadow: 0px 2px 4px rgba(0,0,0, .2); \r
+ text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);\r
+ -moz-text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);\r
+ -webkit-text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2); \r
+ border: 1px solid #1d7900; \r
+ color: #fff;\r
+ font-weight: 300;\r
+ font-size: 14px;\r
+ padding: 5px 7px 5px 7px;\r
+ text-align: center;\r
+ margin-top: 0px;\r
+}\r
+\r
+.connect-button a:hover{\r
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#9AD42C), to(#1d7900)); /* Saf4+, Chrome */\r
+ background-image: -webkit-linear-gradient(top, #9AD42C, #1d7900); /* Chrome 10+, Saf5.1+ */\r
+ background-image: -moz-linear-gradient(top, #9AD42C, #1d7900); /* FF3.6 */\r
+ background-image: -ms-linear-gradient(top, #9AD42C, #1d7900); /* IE10 */\r
+ background-image: -o-linear-gradient(top, #9AD42C, #1d7900); /* Opera 11.10+ */\r
+ background-image: linear-gradient(top, #92C929, #1d7900);\r
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#9AD42C', EndColorStr='#1d7900'); /* IE6–IE9 */\r
+}\r
+\r
+.connect-button a:active{\r
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#73BD39), to(#1d7900)); /* Saf4+, Chrome */\r
+ background-image: -webkit-linear-gradient(top, #73BD39, #1d7900); /* Chrome 10+, Saf5.1+ */\r
+ background-image: -moz-linear-gradient(top, #73BD39, #1d7900); /* FF3.6 */\r
+ background-image: -ms-linear-gradient(top, #73BD39, #1d7900); /* IE10 */\r
+ background-image: -o-linear-gradient(top, #73BD39, #1d7900); /* Opera 11.10+ */\r
+ background-image: linear-gradient(top, #73BD39, #1d7900);\r
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#73BD39', EndColorStr='#1d7900'); /* IE6–IE9 */\r
+}\r
+\r
+.connect-button a strong{\r
+ color: #fff;\r
+ font-weight: 600;\r
+}\r
+\r
+.connect-button a:hover{\r
+ text-decoration: none;\r
+}\r
+\r
+.connect-button a img{\r
+ margin-right: 7px;\r
+ margin-bottom: -3px;\r
+ height: 16px;\r
+ width: 16px;\r
+}\r
+\r
+.popover a:hover {\r
+ color: #333;\r
+ cursor: hand; cursor: pointer;\r
+}\r
+\r
+.popover a {\r
+ color: #0D8921;\r
+ margin-bottom: 10px;\r
+}\r
+\r
+.popover {\r
+ position: absolute;\r
+ width : 220px;\r
+ height:280px;\r
+ margin-left: -102px;\r
+ z-index: 1010;\r
+ display: block;\r
+ max-width: 276px;\r
+ padding: 1px;\r
+ text-align: left;\r
+ white-space: normal;\r
+ background-color: #ffffff;\r
+ border: 1px solid #ccc;\r
+ border: 1px solid rgba(0, 0, 0, 0.2);\r
+ -webkit-border-radius: 6px;\r
+ -moz-border-radius: 6px;\r
+ border-radius: 6px;\r
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\r
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\r
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\r
+ -webkit-background-clip: padding-box;\r
+ -moz-background-clip: padding;\r
+ background-clip: padding-box;\r
+}\r
+\r
+.popover.bottom {\r
+ margin-top: 10px;\r
+}\r
+\r
+.popover-title {\r
+ padding: 8px 14px;\r
+ margin: 0;\r
+ font-size: 14px;\r
+ font-weight: normal;\r
+ line-height: 18px;\r
+ background-color: #f7f7f7;\r
+ border-bottom: 1px solid #ebebeb;\r
+ -webkit-border-radius: 5px 5px 0 0;\r
+ -moz-border-radius: 5px 5px 0 0;\r
+ border-radius: 5px 5px 0 0;\r
+}\r
+\r
+.popover-title:empty {\r
+ display: none;\r
+}\r
+\r
+.popover-content {\r
+ padding: 9px 14px;\r
+}\r
+\r
+.popover .arrow,\r
+.popover .arrow:after {\r
+ position: absolute;\r
+ display: block;\r
+ width: 0;\r
+ height: 0;\r
+ border-color: transparent;\r
+ border-style: solid;\r
+}\r
+\r
+.popover .arrow {\r
+ border-width: 11px;\r
+}\r
+\r
+.popover .arrow:after {\r
+ border-width: 10px;\r
+ content: "";\r
+}\r
+\r
+.popover.bottom .arrow {\r
+ top: -11px;\r
+ left: 50%;\r
+ margin-left: -11px;\r
+ border-bottom-color: #999;\r
+ border-bottom-color: rgba(0, 0, 0, 0.25);\r
+ border-top-width: 0;\r
+}\r
+\r
+.popover.bottom .arrow:after {\r
+ top: 1px;\r
+ margin-left: -10px;\r
+ border-bottom-color: #ffffff;\r
+ border-top-width: 0;\r
+}\r
+\r
+#logGitHub{\r
+ cursor: hand; cursor: pointer;\r
+ height: 17px;\r
+ width: 17px;\r
+}\r
+\r
+#liGitHub{\r
+ float:right;\r
+ margin-top:-4px;\r
+ height: 20px;\r
+}\r
+\r
+#liGitHub input {\r
+ margin: 4px 10px 5px 10px;\r
+ color: black;\r
+ font-style: normal;\r
+ font-size: 12px;\r
+ border: 1px solid #CCC;\r
+}\r
+\r
+#lbloginGit, #lbpasswordGit, #lbrepositoryGit, #lbbranchGit, #lblSignedOff{\r
+ color: black;\r
+ font-style: normal;\r
+ margin-left: 10px;\r
+ margin-top: 10px; \r
+}\r
+#logginMessage , #lbBranches{\r
+ color: black;\r
+ font-style: normal;\r
+ text-align: center;\r
+ margin-top: 10px; \r
+}\r
+\r
+#divlogIn{\r
+ text-align: center;\r
+}\r
+\r
+#signIn{\r
+ display: block;\r
+ cursor: pointer;\r
+ margin: 10px 10px 5px 10px; \r
+ background-color: #92C929;\r
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#92C929), to(#1d7900)); /* Saf4+, Chrome */\r
+ background-image: -webkit-linear-gradient(top, #92C929, #1d7900); /* Chrome 10+, Saf5.1+ */\r
+ background-image: -moz-linear-gradient(top, #92C929, #1d7900); /* FF3.6 */\r
+ background-image: -ms-linear-gradient(top, #92C929, #1d7900); /* IE10 */\r
+ background-image: -o-linear-gradient(top, #92C929, #1d7900); /* Opera 11.10+ */\r
+ background-image: linear-gradient(top, #92C929, #1d7900);\r
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#92C929', EndColorStr='#1d7900'); /* IE6–IE9 */ \r
+ border-radius: 4px;\r
+ -moz-border-radius: 4px; \r
+ -webkit-border-radius: 4px; \r
+ -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; \r
+ box-shadow: 0px 2px 4px rgba(0,0,0, .2);\r
+ -moz-box-shadow: 0px 2px 4px rgba(0,0,0, .2);\r
+ -webkit-box-shadow: 0px 2px 4px rgba(0,0,0, .2); \r
+ text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);\r
+ -moz-text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);\r
+ -webkit-text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2); \r
+ border: 1px solid #1d7900; \r
+ color: #fff;\r
+ font-weight: 300;\r
+ font-size: 14px;\r
+ padding: 5px 7px 5px 7px;\r
+ text-align: center;\r
+}\r
+\r
+#passwordGit, #loginGit, #repositoryGit, #branchGit, #signedOff{\r
+ height:30px; \r
+ width: 200px;\r
+}\r
+\r
+#imgGitHub{\r
+ width:20px;\r
+}\r
+\r
+#dropBranches{\r
+ font-size: 12px;\r
+ height:20px; \r
+}\r
+\r
+#listBranches, #divGitHubRepoDisplay{\r
+ color: #000000;\r
+ display:block;\r
+ text-align:center;\r
+ margin-top: 15px;\r
+ margin-bottom: 15px; \r
+}\r
+\r
+.githubTitle{\r
+ text-align:center;\r
+}\r
+\r
+#preSave{\r
+ display: none;\r
+}\r
./git-gen-version.sh
../c_src/nitc ${NITCOPT} --clibdir ../c_src/clib -o ../bin/nitc -O -v nitc.nit
-../bin/nitdoc: ../bin/nitc
+../bin/nitdoc: ../bin/nitg
@echo '***************************************************************'
@echo '* Compile nitdoc from NIT source files *'
@echo '***************************************************************'
./git-gen-version.sh
- ../bin/nitc ${NITCOPT} -o ../bin/nitdoc -O -v nitdoc.nit
+ ../bin/nitg ${NITCOPT} -o ../bin/nitdoc -v nitdoc.nit
-../bin/nits: ../bin/nitc
+../bin/nits: ../bin/nitg
@echo '***************************************************************'
@echo '* Compile nits from NIT source files *'
@echo '***************************************************************'
./git-gen-version.sh
- ../bin/nitc ${NITCOPT} -o ../bin/nits -O -v nits.nit
+ ../bin/nitg ${NITCOPT} -o ../bin/nits -v nits.nit
-../bin/nitmetrics: ../bin/nitc
+../bin/nitmetrics: ../bin/nitg
@echo '***************************************************************'
@echo '* Compile nitmetrics from NIT source files *'
@echo '***************************************************************'
./git-gen-version.sh
- ../bin/nitc ${NITCOPT} -o ../bin/nitmetrics -O -v nitmetrics.nit
+ ../bin/nitg ${NITCOPT} -o ../bin/nitmetrics -v nitmetrics.nit
../bin/nitg: ../bin/nitc
@echo '***************************************************************'
@echo '* Compile nitg from NIT source files *'
@echo '***************************************************************'
./git-gen-version.sh
- ../bin/nitc ${NITCOPT} -o ../bin/nitg -O -v nitg.nit
+ ../bin/nitc ${NITCOPT} -o ../bin/nitg -v nitg.nit
-../bin/nit: ../bin/nitc
+../bin/nit: ../bin/nitg
@echo '***************************************************************'
@echo '* Compile nit from NIT source files *'
@echo '***************************************************************'
./git-gen-version.sh
- ../bin/nitc ${NITCOPT} -o ../bin/nit -O -v nit.nit
+ ../bin/nitg ${NITCOPT} -o ../bin/nit -v nit.nit
../c_src/nitc: ../c_src/*.c ../c_src/*.h ../c_src/nitc._build.sh ../c_src/Makefile
@echo '***************************************************************'
var opt_output: OptionString = new OptionString("Output file", "-o", "--output")
# --no-cc
var opt_no_cc: OptionBool = new OptionBool("Do not invoke C compiler", "--no-cc")
+ # --cc-paths
+ var opt_cc_path: OptionArray = new OptionArray("Set include path for C header files (may be used more than once)", "--cc-path")
# --make-flags
var opt_make_flags: OptionString = new OptionString("Additional options to make", "--make-flags")
# --hardening
end
redef class ModelBuilder
+ # The list of directories to search for included C headers (-I for C compilers)
+ # The list is initially set with :
+ # * the toolcontext --cc-path option
+ # * the NIT_CC_PATH environment variable
+ # * some heuristics including the NIT_DIR environment variable and the progname of the process
+ # Path can be added (or removed) by the client
+ var cc_paths = new Array[String]
+
+ redef init(model, toolcontext)
+ do
+ super
+
+ # Look for the the Nit clib path
+ var path_env = "NIT_DIR".environ
+ if not path_env.is_empty then
+ var libname = "{path_env}/clib"
+ if libname.file_exists then cc_paths.add(libname)
+ end
+
+ var libname = "{sys.program_name.dirname}/../clib"
+ if libname.file_exists then cc_paths.add(libname.simplify_path)
+
+ if cc_paths.is_empty then
+ toolcontext.error(null, "Cannot determine the nit clib path. define envvar NIT_DIR.")
+ end
+
+ # Add user defined cc_paths
+ cc_paths.append(toolcontext.opt_cc_path.value)
+
+ path_env = "NIT_CC_PATH".environ
+ if not path_env.is_empty then
+ cc_paths.append(path_env.split_with(':'))
+ end
+
+ end
+
protected fun write_and_make(compiler: AbstractCompiler)
do
var mainmodule = compiler.mainmodule
# A single C file regroups many compiled rumtime functions
# Note that we do not try to be clever an a small change in a Nit source file may change the content of all the generated .c files
var time0 = get_time
+ self.toolcontext.info("*** WRITING C ***", 1)
+
+ ".nit_compile".mkdir
var outname = self.toolcontext.opt_output.value
if outname == null then
- outname = "{mainmodule.name}.bin"
+ outname = "{mainmodule.name}"
end
- var hfilename = ".nit_compile/{mainmodule.name}.1.h"
- var h = new OFStream.open(hfilename)
+ var hfilename = compiler.header.file.name + ".h"
+ var hfilepath = ".nit_compile/{hfilename}"
+ var h = new OFStream.open(hfilepath)
for l in compiler.header.decl_lines do
h.write l
h.write "\n"
end
+ for l in compiler.header.lines do
+ h.write l
+ h.write "\n"
+ end
h.close
var cfiles = new Array[String]
- var file: nullable OFStream = null
- var count = 0
-
- ".nit_compile".mkdir
- var i = 0
- for vis in compiler.visitors do
- count += vis.lines.length
- if file == null or count > 10000 or vis.file_break then
- i += 1
- if file != null then file.close
- var cfilename = ".nit_compile/{mainmodule.name}.{i}.c"
- cfiles.add(cfilename)
- file = new OFStream.open(cfilename)
- file.write "#include \"{mainmodule.name}.1.h\"\n"
- count = vis.lines.length
+ for f in compiler.files do
+ var i = 0
+ var hfile: nullable OFStream = null
+ var count = 0
+ var cfilename = ".nit_compile/{f.name}.0.h"
+ hfile = new OFStream.open(cfilename)
+ hfile.write "#include \"{hfilename}\"\n"
+ for key in f.required_declarations do
+ if not compiler.provided_declarations.has_key(key) then
+ print "No provided declaration for {key}"
+ abort
+ end
+ hfile.write compiler.provided_declarations[key]
+ hfile.write "\n"
end
- if vis != compiler.header then
+ hfile.close
+ var file: nullable OFStream = null
+ for vis in f.writers do
+ if vis == compiler.header then continue
+ var total_lines = vis.lines.length + vis.decl_lines.length
+ if total_lines == 0 then continue
+ count += total_lines
+ if file == null or count > 10000 then
+ i += 1
+ if file != null then file.close
+ cfilename = ".nit_compile/{f.name}.{i}.c"
+ self.toolcontext.info("new C source files to compile: {cfilename}", 3)
+ cfiles.add(cfilename)
+ file = new OFStream.open(cfilename)
+ file.write "#include \"{f.name}.0.h\"\n"
+ count = total_lines
+ end
for l in vis.decl_lines do
file.write l
file.write "\n"
end
+ for l in vis.lines do
+ file.write l
+ file.write "\n"
+ end
end
- for l in vis.lines do
- file.write l
- file.write "\n"
- end
+ if file != null then file.close
end
- if file != null then file.close
self.toolcontext.info("Total C source files to compile: {cfiles.length}", 2)
var makename = ".nit_compile/{mainmodule.name}.mk"
var makefile = new OFStream.open(makename)
- makefile.write("CC = ccache cc\nCFLAGS = -g -O2\nLDFLAGS ?= \nLDLIBS ?= -lm -lgc\n\n")
+ var cc_includes = ""
+ for p in cc_paths do
+ #p = "..".join_path(p)
+ cc_includes += " -I \"" + p + "\""
+ end
+ makefile.write("CC = ccache cc\nCFLAGS = -g -O2\nCINCL = {cc_includes}\nLDFLAGS ?= \nLDLIBS ?= -lm -lgc\n\n")
makefile.write("all: {outname}\n\n")
var ofiles = new Array[String]
# Compile each generated file
for f in cfiles do
var o = f.strip_extension(".c") + ".o"
- makefile.write("{o}: {f}\n\t$(CC) $(CFLAGS) -D NONITCNI -c -o {o} {f}\n\n")
+ makefile.write("{o}: {f}\n\t$(CC) $(CFLAGS) $(CINCL) -D NONITCNI -c -o {o} {f}\n\n")
ofiles.add(o)
end
+
+ # Add gc_choser.h to aditionnal bodies
+ var gc_chooser = new ExternCFile("{cc_paths.first}/gc_chooser.c", "-DWITH_LIBGC")
+ compiler.extern_bodies.add(gc_chooser)
+
# Compile each required extern body into a specific .o
for f in compiler.extern_bodies do
- i += 1
- var o = ".nit_compile/{mainmodule.name}.{i}.o"
- makefile.write("{o}: {f}\n\t$(CC) $(CFLAGS) -D NONITCNI -c -o {o} {f}\n\n")
+ var basename = f.filename.basename(".c")
+ var o = ".nit_compile/{basename}.extern.o"
+ makefile.write("{o}: {f.filename}\n\t$(CC) $(CFLAGS) -D NONITCNI {f.cflags} -c -o {o} {f.filename}\n\n")
ofiles.add(o)
end
+
# Link edition
makefile.write("{outname}: {ofiles.join(" ")}\n\t$(CC) $(LDFLAGS) -o {outname} {ofiles.join(" ")} $(LDLIBS)\n\n")
# Clean
self.toolcontext.info("Generated makefile: {makename}", 2)
var time1 = get_time
- self.toolcontext.info("*** END COMPILING TO C: {time1-time0} ***", 2)
+ self.toolcontext.info("*** END WRITING C: {time1-time0} ***", 2)
# Execute the Makefile
abstract class AbstractCompiler
type VISITOR: AbstractCompilerVisitor
- # The main module of the program
- var mainmodule: MModule protected writable
+ # The main module of the program currently compiled
+ # Is assigned during the separate compilation
+ var mainmodule: MModule writable
+
+ # The real main module of the program
+ var realmainmodule: MModule
# The modeulbuilder used to know the model and the AST
var modelbuilder: ModelBuilder protected writable
init(mainmodule: MModule, modelbuilder: ModelBuilder)
do
self.mainmodule = mainmodule
+ self.realmainmodule = mainmodule
self.modelbuilder = modelbuilder
end
# Force the creation of a new file
# The point is to avoid contamination between must-be-compiled-separately files
- fun new_file
+ fun new_file(name: String): CodeFile
do
- var v = self.new_visitor
- v.file_break = true
+ var f = new CodeFile(name)
+ self.files.add(f)
+ return f
end
- # The list of all associated visitors
+ # The list of all associated files
# Used to generate .c files
- # FIXME: should not be vistors but just somewhere to store lines
- var visitors: List[VISITOR] = new List[VISITOR]
+ var files: List[CodeFile] = new List[CodeFile]
# Initialize a visitor specific for a compiler engine
fun new_visitor: VISITOR is abstract
# Where global declaration are stored (the main .h)
- #
- # FIXME: should not be a visitor but just somewhere to store lines
- # FIXME: should not have a global .h since it does not help recompilations
- var header: VISITOR writable
+ var header: CodeWriter writable
+
+ # Provide a declaration that can be requested (before or latter) by a visitor
+ fun provide_declaration(key: String, s: String)
+ do
+ if self.provided_declarations.has_key(key) then
+ assert self.provided_declarations[key] == s
+ end
+ self.provided_declarations[key] = s
+ end
+
+ private var provided_declarations = new HashMap[String, String]
# Compile C headers
# This method call compile_header_strucs method that has to be refined
self.header.add_decl("#include <stdlib.h>")
self.header.add_decl("#include <stdio.h>")
self.header.add_decl("#include <string.h>")
- self.header.add_decl("#ifndef NOBOEHM")
- self.header.add_decl("#include <gc/gc.h>")
- self.header.add_decl("#ifdef NOBOEHM_ATOMIC")
- self.header.add_decl("#undef GC_MALLOC_ATOMIC")
- self.header.add_decl("#define GC_MALLOC_ATOMIC(x) GC_MALLOC(x)")
- self.header.add_decl("#endif /*NOBOEHM_ATOMIC*/")
- self.header.add_decl("#else /*NOBOEHM*/")
- self.header.add_decl("#define GC_MALLOC(x) calloc(1, (x))")
- self.header.add_decl("#define GC_MALLOC_ATOMIC(x) calloc(1, (x))")
- self.header.add_decl("#endif /*NOBOEHM*/")
+ self.header.add_decl("#include <gc_chooser.h>")
compile_header_structs
end
v.add_decl("int main(int argc, char** argv) \{")
v.add("glob_argc = argc; glob_argv = argv;")
+ v.add("initialize_gc_option();")
var main_type = mainmodule.sys_type
if main_type != null then
var mainmodule = v.compiler.mainmodule
v.add("\}")
end
- # look for a needed .h and .c file for a given .nit source-file
- # FIXME: bad API, parameter should be a MModule, not its source-file
- fun add_extern(file: String)
- do
- file = file.strip_extension(".nit")
- var tryfile = file + ".nit.h"
- if tryfile.file_exists then
- self.header.add_decl("#include \"{"..".join_path(tryfile)}\"")
- end
- tryfile = file + "_nit.h"
- if tryfile.file_exists then
- self.header.add_decl("#include \"{"..".join_path(tryfile)}\"")
- end
- tryfile = file + ".nit.c"
- if tryfile.file_exists then
- self.extern_bodies.add(tryfile)
- end
- tryfile = file + "_nit.c"
- if tryfile.file_exists then
- self.extern_bodies.add(tryfile)
- end
- end
-
# List of additional .c files required to compile (native interface)
- var extern_bodies = new ArraySet[String]
+ var extern_bodies = new Array[ExternCFile]
+
+ # This is used to avoid adding an extern file more than once
+ private var seen_extern = new ArraySet[String]
# Generate code that check if an instance is correctly initialized
fun generate_check_init_instance(mtype: MClassType) is abstract
end
end
+# A file unit (may be more than one file if
+# A file unit aim to be autonomous and is made or one or more `CodeWriter`s
+class CodeFile
+ var name: String
+ var writers = new Array[CodeWriter]
+ var required_declarations = new HashSet[String]
+end
+
+# Where to store generated lines
+class CodeWriter
+ var file: CodeFile
+ var lines: List[String] = new List[String]
+ var decl_lines: List[String] = new List[String]
+
+ # Add a line in the main part of the generated C
+ fun add(s: String) do self.lines.add(s)
+
+ # Add a line in the
+ # (used for local or global declaration)
+ fun add_decl(s: String) do self.decl_lines.add(s)
+
+ init(file: CodeFile)
+ do
+ self.file = file
+ file.writers.add(self)
+ end
+end
+
# A visitor on the AST of property definition that generate the C code.
abstract class AbstractCompilerVisitor
# Alias for self.compiler.mainmodule.bool_type
fun bool_type: MClassType do return self.compiler.mainmodule.bool_type
- var file_break: Bool = false
+ var writer: CodeWriter
init(compiler: COMPILER)
do
self.compiler = compiler
- compiler.visitors.add(self)
+ self.writer = new CodeWriter(compiler.files.last)
end
# Force to get the primitive class named `name' or abort
# Code generation
- private var lines: List[String] = new List[String]
- private var decl_lines: List[String] = new List[String]
-
# Add a line in the main part of the generated C
- fun add(s: String) do self.lines.add(s)
+ fun add(s: String) do self.writer.lines.add(s)
# Add a line in the
# (used for local or global declaration)
- fun add_decl(s: String) do self.decl_lines.add(s)
+ fun add_decl(s: String) do self.writer.decl_lines.add(s)
+
+ # Request the presence of a global declaration
+ fun require_declaration(key: String)
+ do
+ self.writer.file.required_declarations.add(key)
+ end
+
+ # Add a declaration in the local-header
+ # The declaration is ensured to be present once
+ fun declare_once(s: String)
+ do
+ self.compiler.provide_declaration(s, s)
+ self.require_declaration(s)
+ end
+
+ # look for a needed .h and .c file for a given .nit source-file
+ # FIXME: bad API, parameter should be a MModule, not its source-file
+ fun add_extern(file: String)
+ do
+ file = file.strip_extension(".nit")
+ var tryfile = file + ".nit.h"
+ if tryfile.file_exists then
+ self.declare_once("#include \"{"..".join_path(tryfile)}\"")
+ end
+ tryfile = file + "_nit.h"
+ if tryfile.file_exists then
+ self.declare_once("#include \"{"..".join_path(tryfile)}\"")
+ end
+
+ if self.compiler.seen_extern.has(file) then return
+ self.compiler.seen_extern.add(file)
+ tryfile = file + ".nit.c"
+ if not tryfile.file_exists then
+ tryfile = file + "_nit.c"
+ if not tryfile.file_exists then return
+ end
+ var f = new ExternCFile(tryfile, "")
+ self.compiler.extern_bodies.add(f)
+ end
# Return a new local runtime_variable initialized with the C expression `cexpr'.
fun new_expr(cexpr: String, mtype: MType): RuntimeVariable
var returnlabel: nullable String writable = null
end
+# An extern C file to compile
+class ExternCFile
+ # The filename of the file
+ var filename: String
+ # Additionnal specific CC compiler -c flags
+ var cflags: String
+end
+
redef class String
# Mangle a string to be a unique valid C identifier
fun to_cmangle: String
v.ret(v.new_expr("glob_sys", ret.as(not null)))
return
else if pname == "calloc_string" then
- v.ret(v.new_expr("(char*)GC_MALLOC_ATOMIC({arguments[1]})", ret.as(not null)))
+ v.ret(v.new_expr("(char*)nit_alloc({arguments[1]})", ret.as(not null)))
return
else if pname == "calloc_array" then
v.calloc_array(ret.as(not null), arguments)
v.ret(v.new_expr("(char*){nat}", ret.as(not null)))
return
else if pname == "force_garbage_collection" then
- v.add("GC_gcollect();")
+ v.add("nit_gcollect();")
return
end
v.add("printf(\"NOT YET IMPLEMENTED {class_name}:{mpropdef} at {location.to_s}\\n\");")
externname = nextern.text.substring(1, nextern.text.length-2)
if location.file != null then
var file = location.file.filename
- v.compiler.add_extern(file)
+ v.add_extern(file)
end
var res: nullable RuntimeVariable = null
var ret = mpropdef.msignature.return_mtype
externname = nextern.text.substring(1, nextern.text.length-2)
if location.file != null then
var file = location.file.filename
- v.compiler.add_extern(file)
+ v.add_extern(file)
end
v.adapt_signature(mpropdef, arguments)
var ret = arguments.first.mtype
# Utils
-redef class HashSet[E]
- init from(elements: Collection[E]) do
- init
- self.add_all(elements)
- end
-end
-
redef class Array[E]
- init from(elements: Collection[E]) do
- init
- self.add_all(elements)
- end
-
# Return a new Array with the elements only contened in 'self' and not in 'o'
fun -(o: Array[E]): Array[E] do
var res = new Array[E]
file.write("end # {self}\n")
end
end
+
+redef class AAnnotations
+ # Shortcut annotations and skip them completely
+ redef fun visit_all(v)
+ do
+ # Do notning
+ end
+end
import typing
import modelbuilder
+import phase
+
+redef class ToolContext
+ var auto_super_init_phase: Phase = new AutoSuperInitPhase(self, [typing_phase])
+end
+
+private class AutoSuperInitPhase
+ super Phase
+ redef fun process_npropdef(npropdef) do if npropdef isa AConcreteMethPropdef then npropdef.do_auto_super_init(toolcontext.modelbuilder)
+end
private class AutoSuperInitVisitor
super Visitor
+++ /dev/null
-#!/usr/bin/env nit
-
-# Microbenchmak generation for multiple language
-# Just a quick an dirty Nit script file :)
-
-class Klass
- var id: Int
- var supers = new Array[Klass]
- var all_supers = new HashSet[Klass]
- redef fun to_s
- do
- return "C{id}"
- end
-end
-
-
-class Generator
- var classes = new Array[Klass]
-
- var width = 5
- var height = 5
- var superprobs: Array[Int] = [40, 20, 5]
-
- fun genhier
- do
- var i = 0
- for w in [0..width[ do
- var s: nullable Klass = null
- for h in [0..height[ do
- i += 1
- var c = new Klass(i)
-
- classes.add(c)
- c.all_supers.add(c)
- if s != null then
- c.supers.add(s)
- c.all_supers.add_all(s.all_supers)
- end
- s = c
- end
- end
-
- for j in [0..listlen[ do
- var c = classes[classes.length - 1 - (j % classes.length)]
- list.unshift(c)
- unlist.push(c)
- end
- end
-
- # List of instantited class in the order to read
- var list = new List[Klass]
-
- # List of instantited class in the order to push
- var unlist = new List[Klass]
-
- var arraylen = 2000
- var loops = 10000
-
- var listlen = 50
-
- var file: nullable OFStream = null
- fun write(str: String)
- do
- file.write(str)
- file.write("\n")
- end
-
- fun writenit(name: String)
- do
- file = new OFStream.open("{name}.nit")
- write "class Root\n\tfun id: Int do return 0\nend"
- for c in classes do
- write "class {c}"
- if c.supers.is_empty then
- write "\tsuper Root"
- else for s in c.supers do
- write "\tsuper {s}"
- end
- write "\tredef fun id do return {c.id}"
- write "end"
- end
- write "class L[E]\n\tsuper Root\n\tvar item:E \n\tvar next: nullable L[E]\ninit(item:E,next: nullable L[E])do\n\tself.item = item\n\tself.next=next\nend\nend"
-
- write "fun fill: nullable L[Root]\ndo"
- write "\tvar head: nullable L[Root] = null"
- write "\tvar l: L[Root]"
- for c in classes do
- write "\tvar l{c} = new L[{c}](new {c}, null)"
- write "\thead = new L[Root](l{c}, head)"
- end
- write "\thead = null"
- write "for x in [0..{arraylen}[ do"
- for i in [0..listlen[ do
- var c = unlist[i]
- write "\tvar l{i} = new L[{c}](new {c}, null)"
- write "\thead = new L[Root](l{i}, head)"
- end
- write "end"
- write "return head"
- write "end"
-
- write "fun run(head1: nullable L[Root], head2: nullable L[Root]): Int\ndo"
- write "\tvar cpt = 0"
- write "\tvar y = {loops/list.length}"
- write "\twhile y > 0 do"
- write "\tvar n1 = head1"
- write "\tvar n2 = head2"
- write "\twhile not n1 is null do"
- for i in [0..listlen[ do
- var c = list[i]
- write "\t\tvar l{i} = n1.item"
- write "\t\tvar lc{i} = l{i}.as(L[{c}])"
- write "\t\tvar c{i} = lc{i}.item"
- write "\t\tn1 = n1.next"
- if count then
- write "\t\tif c{i}.id == {c.id} then cpt += 1"
- end
- write "\t\tvar l2_{i} = n2.item"
- write "\t\tvar lc2_{i} = l2_{i}.as(L[{c}])"
- write "\t\tlc2_{i}.item = c{i}"
- write "\t\tn2 = n2.next"
- end
- write "\tend"
- write "y -= 1"
- write "end"
- write "return cpt"
- write "end"
-
- write "var head = fill"
- write "var loops = 25"
- write "if not args.is_empty then loops = args.first.to_i "
- write "for x in [0..loops[ do"
- write "\tvar cpt = run(head, head)"
- write "\tprint \"\{x\}:\tcpt:\{cpt\}\""
- write "end"
- file.close
- end
-
- fun writejava(name: String, interfaces: Bool)
- do
- var cl = ""
- if interfaces then cl = "X"
- file = new OFStream.open("{name}.java")
- write "class {name} \{"
- if interfaces then
- write "static interface Root\n\t\{ int id(); \}"
- else
- write "static class Root\n\t\{ int id() \{ return 0;\} \}"
- end
- for c in classes do
- if interfaces then
- write "static interface {c} "
- else
- write "static class {c} "
- end
- if c.supers.is_empty then
- write "\textends Root"
- else for s in [c.supers.first] do
- write "\textends {s}"
- end
- if interfaces then
- write "\{\}"
- write "static class X{c} implements {c}"
- end
- write "\{"
- write "\tpublic int id() \{ return {c.id}; \}"
- write "\}"
- end
- write "static class L<E>"
- if interfaces then
- write "implements Root \{"
- else
- write "extends Root \{"
- end
- write "\tE _item; E item() \{ return _item; \} void set_item(E i) \{ _item = i; \}"
- write "\tL<E> _next; L<E> next() \{ return _next; \} void set_next(L<E> n) \{ _next = n; \}"
- write "\tL(E i, L<E> n) \{ set_item(i); set_next(n); \}"
- write "\tpublic int id() \{ return -1; \}"
- write "\}"
-
- write "static L<Root> fill() \{"
- write "\tL<Root> head = null;"
- for c in classes do
- write "\tL<{c}> l{c} = new L<{c}>(new {cl}{c}(), null);"
- write "\thead = new L<Root>(l{c}, head);"
- end
- write "\thead = null;"
- write "for (int x=0; x<{arraylen}; x++) \{"
- for i in [0..listlen[ do
- var c = unlist[i]
- write "\tL<{c}> l{i} = new L<{c}>(new {cl}{c}(), null);"
- write "\thead = new L<Root>(l{i}, head);"
- end
- write "\}"
- write "return head;"
- write "\}"
-
- write "static int run(L<Root> head1, L<Root> head2) \{"
- write "\tint cpt = 0;"
- write "\tint y = {loops/list.length};"
- write "\twhile (y > 0) \{;"
- write "\tL<Root> n1 = head1;"
- write "\tL<Root> n2 = head2;"
- write "\twhile (n1 != null) \{"
- for i in [0..listlen[ do
- var c = list[i]
- write "\t\tRoot l{i} = n1.item();"
- write "\t\tL<{c}> lc{i} = (L<{c}>)l{i};"
- write "\t\t{c} c{i} = lc{i}.item();"
- write "\t\tn1 = n1.next();"
- if count then
- write "\t\tif (c{i}.id() == {c.id}) cpt += 1;"
- end
- write "\t\tRoot l2_{i} = n2.item();"
- write "\t\tL<{c}> lc2_{i} = (L<{c}>)l2_{i};"
- write "\t\tlc2_{i}.set_item(c{i});"
- write "\t\tn2 = n2.next();"
- end
- write "\t\}"
- write "y -= 1;"
- write "\}"
- write "return cpt;"
- write "\}"
-
- write "static public void main(String args[]) \{"
- write "L<Root> head = fill();"
- write "int loops = 25;"
- write "if (args.length > 0) loops = Integer.parseInt(args[0]);"
- write "for (int x=0; x<loops; x++) \{"
- write "\tint cpt = run(head, head);"
- write "\tSystem.out.println(\"\" + x + \":\\t\" + cpt);"
- write "\}"
- write "\}"
- write "\}"
- file.close
- end
-
- fun writecsharp(name: String, interfaces: Bool)
- do
- var cl = ""
- if interfaces then cl = "X"
- file = new OFStream.open("{name}.cs")
- write "class {name} \{"
- if interfaces then
- write "interface Root\n\t\{ int Id(); \}"
- else
- write "class Root\n\t\{ public int Id() \{ return 0;\} \}"
- end
- for c in classes do
- if interfaces then
- write "interface {c} "
- else
- write "class {c} "
- end
- if c.supers.is_empty then
- write "\t: Root"
- else for s in [c.supers.first] do
- write "\t: {s}"
- end
- if interfaces then
- write "\{\}"
- write "class X{c} : {c}"
- end
- write "\{"
- write "\tpublic int Id() \{ return {c.id}; \}"
- write "\}"
- end
- write "class L<E>"
- if interfaces then
- write ": Root \{"
- else
- write ": Root \{"
- end
- write "\tE _item;"
- write "\tpublic E Item() \{ return _item; \}"
- write "\tpublic void SetItem(E i) \{ _item = i; \}"
- write "\tL<E> _next;"
- write "\tpublic L<E> Next() \{ return _next; \}"
- write "\tpublic void SetNext(L<E> n) \{ _next = n; \}"
- write "\tpublic L(E i, L<E> n) \{ SetItem(i); SetNext(n); \}"
- write "\tpublic int Id() \{ return -1; \}"
- write "\}"
-
- write "static L<Root> Fill() \{"
- write "\tL<Root> head = null;"
- for c in classes do
- write "\tL<{c}> l{c} = new L<{c}>(new {cl}{c}(), null);"
- write "\thead = new L<Root>(l{c}, head);"
- end
- write "\thead = null;"
- write "for (int x=0; x<{arraylen}; x++) \{"
- for i in [0..listlen[ do
- var c = unlist[i]
- write "\tL<{c}> l{i} = new L<{c}>(new {cl}{c}(), null);"
- write "\thead = new L<Root>(l{i}, head);"
- end
- write "\}"
- write "return head;"
- write "\}"
-
- write "static int Run(L<Root> head1, L<Root> head2) \{"
- write "\tint cpt = 0;"
- write "\tint y = {loops/list.length};"
- write "\twhile (y > 0) \{;"
- write "\tL<Root> n1 = head1;"
- write "\tL<Root> n2 = head2;"
- write "\twhile (n1 != null) \{"
- for i in [0..listlen[ do
- var c = list[i]
- write "\t\tRoot l{i} = n1.Item();"
- write "\t\tL<{c}> lc{i} = (L<{c}>)l{i};"
- write "\t\t{c} c{i} = lc{i}.Item();"
- write "\t\tn1 = n1.Next();"
- if count then
- write "\t\tif (c{i}.Id() == {c.id}) cpt += 1;"
- end
- write "\t\tRoot l2_{i} = n2.Item();"
- write "\t\tL<{c}> lc2_{i} = (L<{c}>)l2_{i};"
- write "\t\tlc2_{i}.SetItem(c{i});"
- write "\t\tn2 = n2.Next();"
- end
- write "\t\}"
- write "y -= 1;"
- write "\}"
- write "return cpt;"
- write "\}"
-
- write "static void Main(string[] args) \{"
- write "L<Root> head = Fill();"
- write "int loops = 25;"
- write "if (args.Length > 0) loops = int.Parse(args[0]);"
- write "for (int x=0; x<loops; x++) \{"
- write "\tint cpt = Run(head, head);"
- write "\tSystem.Console.WriteLine(\"\" + x + \":\\t\" + cpt);"
- write "\}"
- write "\}"
- write "\}"
- file.close
- end
-
- fun writescala(name: String)
- do
- var cl = ""
- file = new OFStream.open("{name}.scala")
- write "object {name} \{"
- write "class Root\n\t\{ def id: Int = 0 \}"
- for c in classes do
- write "class {c} "
- if c.supers.is_empty then
- write "\textends Root"
- else for s in [c.supers.first] do
- write "\textends {s}"
- end
- write "\{"
- write "\toverride def id: Int = {c.id}"
- write "\}"
- end
- write "class L[E](var _item: E, var _next: L[E]) extends Root \{"
- write "\tdef item: E = _item"
- write "\tdef set_item(i: E) = this._item = i"
- write "\tdef next: L[E] = _next"
- write "\tdef set_next(n: L[E]) = this._next = n"
- write "\toverride def id: Int = -1"
- write "\}"
-
- write "def fill: L[Root] = \{"
- write "\tvar head: L[Root] = null"
- for c in classes do
- write "\tvar l{c}: L[{c}] = new L[{c}](new {cl}{c}(), null)"
- write "\thead = new L[Root](l{c}, head)"
- end
- write "\thead = null"
- write "\tfor (x <- 0 to {arraylen}) \{"
- for i in [0..listlen[ do
- var c = unlist[i]
- write "\t\tvar l{i}: L[{c}] = new L[{c}](new {cl}{c}(), null)"
- write "\t\thead = new L[Root](l{i}, head)"
- end
- write "\t\}"
- write "\treturn head"
- write "\}"
-
- write "def run(head1: L[Root], head2: L[Root]): Int = \{"
- write "\tvar cpt: Int = 0"
- write "\tvar y: Int = {loops/list.length}"
- write "\twhile (y > 0) \{"
- write "\tvar n1: L[Root] = head1"
- write "\tvar n2: L[Root] = head2"
- write "\twhile (n1 != null) \{"
- for i in [0..listlen[ do
- var c = list[i]
- write "\t\tvar l{i}: Root = n1.item"
- write "\t\tvar lc{i}: L[{c}] = l{i}.asInstanceOf[L[{c}]]"
- write "\t\tvar c{i}: {c} = lc{i}.item"
- write "\t\tn1 = n1.next"
- if count then
- write "\t\tif (c{i}.id == {c.id}) cpt += 1"
- end
- write "\t\tvar l2_{i}: Root = n2.item"
- write "\t\tvar lc2_{i}: L[{c}] = l2_{i}.asInstanceOf[L[{c}]]"
- write "\t\tlc2_{i}.set_item(c{i})"
- write "\t\tn2 = n2.next"
- end
- write "\t\}"
- write "y -= 1"
- write "\}"
- write "return cpt"
- write "\}"
-
- write "def main(args: Array[String]) = \{"
- write "\tvar head: L[Root] = fill"
- write "\tvar loops: Int = 25"
- write "\tif (args.length > 0) \{"
- write "\t\tloops = Integer.parseInt(args(0))"
- write "\t\}"
- write "\tfor (x <- 0 to loops) \{"
- write "\t\tvar cpt: Int = run(head, head)"
- write "\t\tprintln(\"\" + x + \":\\t\" + cpt)"
- write "\t\}"
- write "\}"
- write "\}"
- file.close
- end
-
- fun writecpp(name: String)
- do
- file = new OFStream.open("{name}.cpp")
- write "#include <iostream>"
- write "#include <stdlib.h>"
- write "class Root\n\t\{ public: virtual int id() \{ return 0;\} \};"
- for c in classes do
- write "class {c} "
- if c.supers.is_empty then
- write "\t: public virtual Root"
- else for s in [c.supers.first] do
- write "\t: public virtual {s}"
- end
- write "\{"
- write "\tpublic: virtual int id() \{ return {c.id}; \}"
- write "\};"
- end
- write "template<class E>"
- write "class L: public virtual Root \{ public:"
- write "\tE _item; virtual E item() \{ return _item; \} virtual void set_item(E i) \{ _item = i; \}"
- write "\tL<E> *_next; virtual L<E> *next() \{ return _next; \} virtual void set_next(L<E> *n) \{ _next = n; \}"
- write "\tL(E i, L<E> *n) \{ set_item(i); set_next(n); \}"
- write "\};"
-
- write "L<Root*> *fill() \{"
- write "\tL<Root*> *head = 0;"
- for c in classes do
- write "\tL<{c}*> *l{c} = new L<{c}*>(new {c}(), 0);"
- write "\thead = new L<Root*>(l{c}, head);"
- end
- write "\thead = 0;"
- write "for (int x=0; x<{arraylen}; x++) \{"
- for i in [0..listlen[ do
- var c = unlist[i]
- write "\tL<{c}*> *l{i} = new L<{c}*>(new {c}(), 0);"
- write "\thead = new L<Root*>(l{i}, head);"
- end
- write "\}"
- write "return head;"
- write "\}"
-
- write "int run(L<Root*> *head1, L<Root*> *head2) \{"
- write "\tint cpt = 0;"
- write "\tint y = {loops/list.length};"
- write "\twhile (y > 0) \{;"
- write "\tL<Root*> *n1 = head1;"
- write "\tL<Root*> *n2 = head2;"
- write "\twhile (n1 != 0) \{"
- for i in [0..listlen[ do
- var c = list[i]
- write "\t\tRoot *l{i} = n1->item();"
- write "\t\tL<{c}*> *lc{i} = dynamic_cast<L<{c}*>*>(l{i});"
- write "\t\t{c} *c{i} = lc{i}->item();"
- write "\t\tn1 = n1->next();"
- if count then
- write "\t\tif (c{i}->id() == {c.id}) cpt += 1;"
- end
- write "\t\tRoot *l2_{i} = n2->item();"
- write "\t\tL<{c}*> *lc2_{i} = dynamic_cast<L<{c}*>*>(l2_{i});"
- write "\t\tlc2_{i}->set_item(c{i});"
- write "\t\tn2 = n2->next();"
- end
- write "\t\}"
- write "y -= 1;"
- write "\}"
- write "return cpt;"
- write "\}"
-
- write "int main(int argc, char **argv) \{"
- write "L<Root*> *head = fill();"
- write "int loops = 25;"
- write "if (argc > 1) loops = atoi(argv[1]);"
- write "for (int x=0; x<loops; x++) \{"
- write "\tint cpt = run(head, head);"
- write "\tstd::cout << x << \":\\t\" << cpt << std::endl;"
- write "\}"
- write "\treturn 0;"
- write "\}"
- file.close
- end
- fun writee(name: String, se: Bool)
- do
- var istk = ""
- if se then istk = " is"
-
- name.mkdir
- file = new OFStream.open("{name}/root.e")
- write "class ROOT"
- write "feature id: INTEGER {istk} do Result := 0 end"
- write "end"
- file.close
-
- for c in classes do
- file = new OFStream.open("{name}/{c}.e")
- write "class {c} "
- if c.supers.is_empty then
- write "\tinherit ROOT"
- else for s in [c.supers.first] do
- write "\tinherit {s}"
- end
- write "\t\tredefine id end"
- write "feature"
- write "\tid: INTEGER {istk} do Result := {c.id} end"
- write "end"
- file.close
- end
-
- file = new OFStream.open("{name}/l.e")
- write "class L[E]"
- write "inherit ROOT"
- write "create make"
- write "feature"
- write "\titem: E"
- write "\tset_item(i: E) {istk} do item := i end"
- write "\tnext: L[E]"
- write "\tset_next(n: L[E]) {istk} do next := n end"
- write "\tmake(i: E; n: L[E]) {istk} do set_item(i); set_next(n); end"
- write "end"
- file.close
-
- file = new OFStream.open("{name}/app{name}.e")
- write "class APP{name.to_upper}"
- if se then
- write "insert ARGUMENTS"
- end
- write "create make"
- write "feature"
- write "fill: L[ROOT] {istk}"
- write "local"
- write "\ti: INTEGER"
- write "do"
- for c in classes do
- write "\tcreate Result.make(create \{L[{c}]\}.make(create \{{c}\}, Void), Result)"
- end
- write "\tResult := Void;"
- write "from i := 0 until i >= {arraylen} loop"
- for i in [0..listlen[ do
- var c = unlist[i]
- write "\tcreate Result.make(create \{L[{c}]\}.make(create \{{c}\}, Void), Result)"
- end
- write "i := i + 1"
- write "end"
- write "end"
-
- write "run(head1: L[ROOT]; head2: L[ROOT]): INTEGER{istk}"
- write "local"
- write "\ty: INTEGER"
- write "\tn1, n2: L[ROOT]"
- for i in [0..listlen[ do
- var c = list[i]
- write "\t\tl{i}: ROOT"
- write "\t\tlc{i}: L[{c}]"
- write "\t\tc{i}: {c}"
- write "\t\tl2_{i}: ROOT"
- write "\t\tlc2_{i}: L[{c}]"
- end
- write "do"
- write "\tfrom y := {loops/list.length}"
- write "\tuntil y <= 0"
- write "\tloop"
- write "\tfrom"
- write "\tn1 := head1"
- write "\tn2 := head2"
- write "\tuntil n1 = Void loop"
- for i in [0..listlen[ do
- var c = list[i]
- write "\t\tl{i} := n1.item"
- write "\t\tlc{i} ?= l{i}"
- write "\t\tc{i} := lc{i}.item"
- if count then
- write "\t\tif c{i}.id = {c.id} then Result := Result + 1 end"
- end
- write "\t\tl2_{i} := n2.item"
- write "\t\tlc2_{i} ?= l2_{i}"
- write "\t\tlc2_{i}.set_item(c{i})"
- write "\t\tn1 := n1.next"
- write "\t\tn2 := n2.next"
- end
- write "end"
- write "y := y - 1"
- write "end"
- write "end"
-
- if se then
- write "make{istk}"
- else
- write "make(args: ARRAY[STRING]){istk}"
- end
- write "local"
- write "head: L[ROOT]"
- write "loops: INTEGER"
- write "cpt: INTEGER"
- write "x: INTEGER"
- write "do"
- write "head := fill"
- write "loops := 25"
- if se then
- write "if argument_count > 0 then loops := argument(1).to_integer"
- else
- write "if args.count > 1 then loops := args.item(1).to_integer"
- end
- write "from x := 0 until x>=loops loop"
- write "\tcpt := run(head, head)"
- write "\tprint(x.out+\":%T\"+cpt.out+\"%N\")"
- write "\t x := x + 1"
- write "end"
- write "end"
- write "end"
- write "end"
- file.close
- end
-
- var count = false
-end
-
-var g = new Generator
-var name = args.first
-if args.length > 1 then
- var opts = args[1].split_with("_")
- for opt in opts do
- var oname = opt.substring(0,1)
- var val = opt.substring_from(1).to_i
- if oname == "l" then
- g.listlen = val
- else if oname == "w" then
- g.width = val
- else if oname == "h" then
- g.height = val
- else
- print "Option inconnue '{oname}'"
- exit(1)
- end
- end
-end
-g.genhier
-g.writenit(name)
-g.writejava(name, true)
-g.writecsharp(name, true)
-g.writescala(name)
-g.writecpp(name)
-g.writee("{name}_se", true)
-g.writee(name, false)
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Implementation of the method-related annotation `cached`
+#
+# Note this module can be used as a reference on how to implements
+# complex annotation that modify both the model and the AST of a Nit program
+module cached
+
+import modelize_property
+import parser_util
+import simple_misc_analysis
+
+redef class ToolContext
+ var cached_phase: Phase = new CachedPhase(self, [modelize_property_phase])
+end
+
+private class CachedPhase
+ super Phase
+
+ init(toolcontext, depends)
+ do
+ # FIXME The phase has to be executed just after `modelize_property_phase`
+ # But there is no simple way to express this
+ # So, for the moment, I just looked at the linearization and see what phase is after `modelize_property_phase`
+ # And inserted before it
+ toolcontext.phases.add_edge(toolcontext.simple_misc_analysis_phase, self)
+ end
+
+ redef fun process_annotated_node(npropdef, nat)
+ do
+ # Skip if we are not interested
+ if nat.n_atid.n_id.text != "cached" then return
+
+ # Do some validity checks and print errors if the annotation is used incorrectly
+ var modelbuilder = toolcontext.modelbuilder
+
+ if not npropdef isa AConcreteMethPropdef then
+ modelbuilder.error(npropdef, "Syntax error: only a function can be cached.")
+ return
+ end
+
+ var mpropdef = npropdef.mpropdef.as(not null)
+
+ var mtype = mpropdef.msignature.return_mtype
+ if mtype == null then
+ modelbuilder.error(npropdef, "Syntax error: only a function can be cached.")
+ return
+ end
+
+ if not npropdef.n_signature.n_params.is_empty then
+ modelbuilder.error(npropdef, "Syntax error: only a function without arguments can be cached.")
+ return
+ end
+
+ # OK, let we do some meta-programming...
+
+ var location = npropdef.location
+ var name = mpropdef.mproperty.name
+ var nclassdef = npropdef.parent.as(AStdClassdef)
+ var mclassdef = nclassdef.mclassdef.as(not null)
+
+ # Create a new private attribute to store the cache
+ var cache_mpropdef = new MAttributeDef(mclassdef, new MAttribute(mclassdef, "@{name}<cache>", private_visibility), location)
+ cache_mpropdef.static_mtype = mtype.as_nullable
+
+ # Create another new private attribute to store the boolean «is the function cached?»
+ # The point is to manage the case where `null' is a genuine return value of the method
+ var is_cached_mpropdef = new MAttributeDef(mclassdef, new MAttribute(mclassdef, "@{name}<is_cached>", private_visibility), location)
+ is_cached_mpropdef.static_mtype = mclassdef.mmodule.get_primitive_class("Bool").mclass_type
+ # FIXME? Because there is a default value ("false") a real propdef is required
+ var is_cached_npropdef = toolcontext.parse_propdef("var is_cached = false").as(AAttrPropdef)
+ associate_propdef(is_cached_mpropdef, is_cached_npropdef)
+
+ # Create a new private method to do the real work
+ var real_mpropdef = new MMethodDef(mclassdef, new MMethod(mclassdef, "{name}<real>", private_visibility), location)
+ real_mpropdef.msignature = mpropdef.msignature
+ # FIXME: Again, if the engine require a real propdef even if it is empty
+ var real_npropdef = toolcontext.parse_propdef("fun real do end").as(AConcreteMethPropdef)
+ associate_propdef(real_mpropdef, real_npropdef)
+ # Note: the body is set at the last line of this function
+
+ # Save the original body
+ var real_body = npropdef.n_block.as(not null)
+
+ # Replace the original body with a new body that do the proxy'n'cache work
+ var proxy_body = toolcontext.parse_stmts("if self._is_cached then return self._cache.as(not null)\nvar res = call_real\nself._cache_write = res\nself._is_cached_write = true\nreturn res")
+ real_body.replace_with(proxy_body)
+
+ # Do some transformation on the identifiers used on the proxy body so that correct entities are designated
+ # FIXME: we just trick the following phases into associating by name some tokens with some model-entities
+ # But this is bad at at least two levels
+ # - we already know the real model-entities, so why doing latter the association and not now?
+ # - associating by names may cause a useless fragility (name-conflicts, etc.)
+ proxy_body.collect_tokens_by_text("_is_cached").first.text = is_cached_mpropdef.mproperty.name
+ proxy_body.collect_tokens_by_text("_is_cached_write").first.text = is_cached_mpropdef.mproperty.name
+ proxy_body.collect_tokens_by_text("_cache").first.text = cache_mpropdef.mproperty.name
+ proxy_body.collect_tokens_by_text("_cache_write").first.text = cache_mpropdef.mproperty.name
+ proxy_body.collect_tokens_by_text("call_real").first.text = real_mpropdef.mproperty.name
+
+ # FIXME a last transformation cannot be done yet. So, the call to `super` (ASuperExpr) is broken in cached methods.
+
+ # Give the original body to the private real methoddef
+ real_npropdef.n_block.replace_with(real_body)
+ end
+
+ # Detach `n` from its original AST and attach it to `m` (and its related AST)
+ # `n' must not be already attached to an existing model entity
+ # `m' must not be already attached to an existing AST node
+ fun associate_propdef(m: MPropDef, n: APropdef)
+ do
+ # FIXME: the model-AST relations **must** be rationalized:
+ # * 1- fragility: the risk of inconsistencies is too hight
+ # * 2- complexity: there is too much paths to access the same things
+
+ # Easy attach
+ assert n.mpropdef == null
+ n.mpropdef = m
+
+ # Required to so that look-for implementation works
+ assert not toolcontext.modelbuilder.mpropdef2npropdef.has_key(m)
+ toolcontext.modelbuilder.mpropdef2npropdef[m] = n
+
+ var mclassdef = m.mclassdef
+ var nclassdef = toolcontext.modelbuilder.mclassdef2nclassdef[mclassdef]
+ # Sanity checks
+ assert nclassdef.mclassdef == mclassdef
+
+ # Required so that some visit can use nclassdef as a context # FIXME it is ugly
+ n.parent = nclassdef
+
+ # Required so that propdef are visited in visitors
+ if not nclassdef.n_propdefs.has(n) then nclassdef.n_propdefs.add(n)
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Simple numerical statistical analysis and presentation
+module counter
+
+import poset
+
+# A counter counts occurrences of things
+# Use this instead of a HashMap[E, Int]
+class Counter[E: Object]
+ super Map[E, Int]
+
+ # Total number of counted occurrences
+ var total: Int = 0
+
+ private var map = new HashMap[E, Int]
+
+ # The number of counted occurrences of `e'
+ redef fun [](e: E): Int
+ do
+ var map = self.map
+ if map.has_key(e) then return map[e]
+ return 0
+ end
+
+ redef fun []=(e: E, value: Int)
+ do
+ total -= self[e]
+ self.map[e] = value
+ total += value
+ end
+
+ redef fun keys do return map.keys
+
+ redef fun values do return map.values
+
+ # Count one more occurrence of `e'
+ fun inc(e: E)
+ do
+ self.map[e] = self[e] + 1
+ total += 1
+ end
+
+ # Return an array of elements sorted by occurrences
+ fun sort: Array[E]
+ do
+ var res = map.keys.to_a
+ var sorter = new CounterSorter[E](self)
+ sorter.sort(res)
+ #res.sort !cmp a, b = map[a] <=> map[b]
+ return res
+ end
+
+ # Display statistical information
+ fun print_summary
+ do
+ var list = self.sort
+ print " population: {list.length}"
+ if list.is_empty then return
+ print " minimum value: {self[list.first]}"
+ print " maximum value: {self[list.last]}"
+ print " total value: {self.total}"
+ print " average value: {div(self.total,list.length)}"
+ print " distribution:"
+ var count = 0
+ var sum = 0
+ var limit = self[list.first]
+ for t in list do
+ if self[t] > limit then
+ print " <={limit}: sub-population={count} ({div(count*100,list.length)}%); cumulated value={sum} ({div(sum*100,self.total)}%)"
+ count = 0
+ sum = 0
+ while self[t] > limit do
+ limit = limit * 2
+ if limit == 0 then limit = 1
+ end
+ end
+ count += 1
+ sum += self[t]
+ end
+ print " <={limit}: sub-population={count} ({div(count*100,list.length)}%); cumulated value={sum} ({div(sum*100,self.total)}%)"
+ end
+end
+
+private class CounterSorter[E: Object]
+ super AbstractSorter[E]
+ var counter: Counter[E]
+ redef fun compare(a,b) do return self.counter.map[a] <=> self.counter.map[b]
+end
+
+redef class POSet[E]
+ private fun show_counter(c: Counter[Int])
+ do
+ var list = c.sort
+ (new ComparableSorter[Int]).sort(list)
+ for e in list do
+ print " {e} -> {c[e]} times ({div(c[e]*100, c.total)}%)"
+ end
+ end
+
+ # Display exhaustive metrics about the poset
+ fun print_metrics
+ do
+ var nb_greaters = new Counter[E]
+ var nb_direct_greaters = new Counter[E]
+ var nb_smallers = new Counter[E]
+ var nb_direct_smallers = new Counter[E]
+ var nb_direct_edges = 0
+ var nb_edges = 0
+ for n in self do
+ var ne = self[n]
+ nb_edges += ne.greaters.length
+ nb_direct_edges += ne.direct_greaters.length
+ nb_greaters[n] = ne.greaters.length
+ nb_direct_greaters[n] = ne.direct_greaters.length
+ nb_smallers[n] = ne.smallers.length
+ nb_direct_smallers[n] = ne.direct_smallers.length
+ end
+ print "Number of nodes: {self.length}"
+ print "Number of edges: {nb_edges} ({div(nb_edges,self.length)} per node)"
+ print "Number of direct edges: {nb_direct_edges} ({div(nb_direct_edges,self.length)} per node)"
+ print "Distribution of greaters"
+ nb_greaters.print_summary
+ print "Distribution of direct greaters"
+ nb_direct_greaters.print_summary
+ print "Distribution of smallers"
+ nb_smallers.print_summary
+ print "Distribution of direct smallers"
+ nb_direct_smallers.print_summary
+ end
+end
+
+# Helper function to display n/d and handle division by 0
+fun div(n: Int, d: Int): String
+do
+ if d == 0 then return "na"
+ return ((100*n/d).to_f/100.0).to_precision(2)
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Detection of divisions by zero in obvious cases
+# This module is only an example of how to implements a simple phase in the nit tools
+module div_by_zero
+
+import phase
+import literal # Because we need the real value of literal in the AST
+import typing # Because we need the static type of receivers
+
+# Note, `ToolContext` is the main overlord class
+# Among its jobs, it orchestrates and executes the various phases
+redef class ToolContext
+ # Instantiate a new specific phase `div_by_zero_phase`
+ # It must be executed after the two phases `literal_phase` and `typing_phase`
+ # Those two phases are statically known since they are introduced by the modules `literal` and `typing`
+ # Note that the constructor automatically register the phase to the ToolContext; this explains why there is `self`
+ var div_by_zero_phase: Phase = new DivByZeroPhase(self, [literal_phase, typing_phase])
+end
+
+# OK, let we create a specific phase
+private class DivByZeroPhase
+ super Phase
+
+ # Specific phases just have to implement the `process_nmodule` method.
+ redef fun process_nmodule(nmodule)
+ do
+ # The AST node is not enough, we need also the associated model element
+ var mmodule = nmodule.mmodule.as(not null)
+ # For the specific job we have, the simpler it to launch a visitor on
+ # all elements of the AST.
+ var visitor = new DivByZeroVisitor(toolcontext, mmodule)
+ visitor.enter_visit(nmodule)
+ end
+end
+
+# The real visitor that does the real job
+private class DivByZeroVisitor
+ super Visitor
+
+ # The toolcontext is our entree point to most services
+ var toolcontext: ToolContext
+
+ # The mmodule is the current module
+ var mmodule: MModule
+
+ init(toolcontext: ToolContext, mmodule: MModule)
+ do
+ self.toolcontext = toolcontext
+ self.mmodule = mmodule
+ end
+
+ redef fun visit(node)
+ do
+ # Recursively visit all sub-nodes
+ node.visit_all(self)
+
+ # Now just filter out until we get what we want...
+
+ # 1. We need a `/` operation
+ if not node isa ASlashExpr then return
+
+ # 2. The second operand must be a integer literal
+ var op2 = node.n_expr2
+ if not op2 isa AIntExpr then return
+
+ # 3. Its value must be 0
+ # Note: because of `literal_phase` the `value` method exists
+ if op2.value != 0 then return
+
+ # 4. The receiver (first operand) must be an Int
+ var op1 = node.n_expr
+ var int_type = mmodule.get_primitive_class("Int").mclass_type
+ if not op1.mtype.is_subtype(mmodule, null, int_type) then return
+
+ # Error detected
+ toolcontext.error(node.location, "Error: Definitely division by zero")
+ end
+end
+++ /dev/null
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012 Jean Privat <jean@pryen.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Semantic analysis of the body of property definitions.
-#
-# This module is an entry point for various analysis.
-#
-# FIXME: find a better name for the module
-module exprbuilder
-
-import simple_misc_analysis
-import literal
-import scope
-import flow
-import local_var_init
-import typing
-import auto_super_init
-
-redef class ModelBuilder
- # Run the full_semantic_analysis on all propdefs of all modules
- fun full_propdef_semantic_analysis
- do
- var time0 = get_time
- self.toolcontext.info("*** SEMANTIC ANALYSIS ***", 1)
- for nmodule in self.nmodules do
- nmodule.do_simple_misc_analysis(self.toolcontext)
- nmodule.do_literal(self.toolcontext)
- for nclassdef in nmodule.n_classdefs do
- for npropdef in nclassdef.n_propdefs do
- npropdef.full_semantic_analysis(self)
- end
- end
- self.toolcontext.check_errors
- end
- var time1 = get_time
- self.toolcontext.info("*** END SEMANTIC ANALYSIS: {time1-time0} ***", 2)
- end
-end
-
-redef class APropdef
- # Run do_scope, do_flow, do_local_var_init and do_typing
- fun full_semantic_analysis(modelbuilder: ModelBuilder)
- do
- modelbuilder.toolcontext.info("* SEMANTIC ANALYSIS: {self.location}", 3)
- var errcount = modelbuilder.toolcontext.error_count
- do_scope(modelbuilder.toolcontext)
- if errcount != modelbuilder.toolcontext.error_count then return
- do_flow(modelbuilder.toolcontext)
- if errcount != modelbuilder.toolcontext.error_count then return
- do_local_var_init(modelbuilder.toolcontext)
- if errcount != modelbuilder.toolcontext.error_count then return
- do_typing(modelbuilder)
- if errcount != modelbuilder.toolcontext.error_count then return
- if self isa AConcreteMethPropdef then self.do_auto_super_init(modelbuilder)
- end
-end
import parser
import toolcontext
import scope
+import phase
+
+redef class ToolContext
+ var flow_phase: Phase = new FlowPhase(self, [scope_phase])
+end
+
+private class FlowPhase
+ super Phase
+
+ redef fun process_npropdef(npropdef) do npropdef.do_flow(toolcontext)
+end
# The visitor that derermine flowcontext for nodes
private class FlowVisitor
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Collect and orchestration of main frontend phases
+module frontend
+
+import phase
+import simple_misc_analysis
+import literal
+import scope
+import flow
+import local_var_init
+import typing
+import auto_super_init
+import div_by_zero
+import cached
+
+redef class ToolContext
+ # FIXME: there is conflict in linex in nitc, so use this trick to force invocation
+ private var dummy: Bool = do_dummy
+ fun do_dummy: Bool
+ do
+ # Force easy warnings aftrm modelbuilder
+ phases.add_edge(simple_misc_analysis_phase, modelize_property_phase)
+ # Force easy warnings before intraproc-errors
+ phases.add_edge(scope_phase, simple_misc_analysis_phase)
+ return true
+ end
+
+ fun run_global_phases(mainmodule: MModule)
+ do
+ for phase in phases_list do
+ phase.process_mainmodule(mainmodule)
+ end
+ end
+end
+
+redef class Phase
+ # Specific action to execute on the whole program
+ # Called by the `ToolContext::run_global_phases`
+ # @toimplement
+ fun process_mainmodule(mainmodule: MModule) do end
+end
+
fun run_global_compiler(mainmodule: MModule, runtime_type_analysis: RapidTypeAnalysis)
do
var time0 = get_time
- self.toolcontext.info("*** COMPILING TO C ***", 1)
+ self.toolcontext.info("*** GENERATING C ***", 1)
var compiler = new GlobalCompiler(mainmodule, self, runtime_type_analysis)
compiler.compile_header
- var v = compiler.header
for t in runtime_type_analysis.live_types do
- compiler.declare_runtimeclass(v, t)
+ compiler.declare_runtimeclass(t)
end
compiler.compile_class_names
self.toolcontext.info("Compile {m} ({compiler.seen.length-compiler.todos.length}/{compiler.seen.length})", 3)
m.compile_to_c(compiler)
end
- self.toolcontext.info("Total methods to compile to C: {compiler.visitors.length}", 2)
+ self.toolcontext.info("Total methods to compile to C: {compiler.seen.length}", 2)
compiler.display_stats
var time1 = get_time
- self.toolcontext.info("*** END VISITING: {time1-time0} ***", 2)
+ self.toolcontext.info("*** END GENERATING C: {time1-time0} ***", 2)
write_and_make(compiler)
end
end
init(mainmodule: MModule, modelbuilder: ModelBuilder, runtime_type_analysis: RapidTypeAnalysis)
do
super(mainmodule, modelbuilder)
- self.header = new_visitor
+ var file = new_file(mainmodule.name)
+ self.header = new CodeWriter(file)
self.runtime_type_analysis = runtime_type_analysis
self.live_primitive_types = new Array[MClassType]
for t in runtime_type_analysis.live_types do
# Compile class names (for the class_name and output_class_name methods)
protected fun compile_class_names do
+ var v = new_visitor
self.header.add_decl("extern const char const * class_names[];")
- self.header.add("const char const * class_names[] = \{")
+ v.add("const char const * class_names[] = \{")
for t in self.runtime_type_analysis.live_types do
- self.header.add("\"{t}\", /* {self.classid(t)} */")
+ v.add("\"{t}\", /* {self.classid(t)} */")
end
- self.header.add("\};")
+ v.add("\};")
end
# Return the C symbol associated to a live type runtime
private var seen: HashSet[AbstractRuntimeFunction] = new HashSet[AbstractRuntimeFunction]
# Declare C structures and identifiers for a runtime class
- fun declare_runtimeclass(v: VISITOR, mtype: MClassType)
+ fun declare_runtimeclass(mtype: MClassType)
do
+ var v = self.header
assert self.runtime_type_analysis.live_types.has(mtype)
v.add_decl("/* runtime class {mtype} */")
var idnum = classids.length
res.is_exact = true
if is_native_array then
var mtype_elt = mtype.arguments.first
- v.add("{res} = GC_MALLOC(sizeof(struct {mtype.c_name}) + length*sizeof({mtype_elt.ctype}));")
+ v.add("{res} = nit_alloc(sizeof(struct {mtype.c_name}) + length*sizeof({mtype_elt.ctype}));")
else
- v.add("{res} = GC_MALLOC(sizeof(struct {mtype.c_name}));")
+ v.add("{res} = nit_alloc(sizeof(struct {mtype.c_name}));")
end
v.add("{res}->classid = {self.classid(mtype)};")
self.header.add_decl("val* BOX_{mtype.c_name}({mtype.ctype});")
v.add_decl("/* allocate {mtype} */")
v.add_decl("val* BOX_{mtype.c_name}({mtype.ctype} value) \{")
- v.add("struct {mtype.c_name}*res = GC_MALLOC(sizeof(struct {mtype.c_name}));")
+ v.add("struct {mtype.c_name}*res = nit_alloc(sizeof(struct {mtype.c_name}));")
v.add("res->classid = {self.classid(mtype)};")
v.add("res->value = value;")
v.add("return (val*)res;")
# limitations under the License.
# Table layout builders
+# Tables are used to implement objects mecanisms like:
+# * message sending
+# * attribute accessing
+# * typing
+# * resolution (for generic types)
+# This module provides various layout for object tables:
+# * coloring
+# * binary matrix
+# * perfect hashing (and & mod operators)
module layout_builders
import abstract_compiler
# Layouts
+# A layout is the result of computation by builders
+# it contains necessary informations for basic table creation
class Layout[E: Object]
# Ids or each element
var ids: Map[E, Int] = new HashMap[E, Int]
var pos: Map[E, Int] = new HashMap[E, Int]
end
+# A PHLayout is used everywere the builder used perfect hashing
+# it adds masks and hashes informations to std layout
class PHLayout[HOLDER: Object, E: Object]
super Layout[E]
# Masks used by hash function
var hashes: Map[HOLDER, Map[E, Int]] = new HashMap[HOLDER, Map[E, Int]]
end
-class PropertyLayout[E: Object]
- # Fixed positions of each element in all tables
- var pos: Map[E, Int] = new HashMap[E, Int]
-end
-
# Builders
+# TypingLayoutBuilder is used to build a layout for typing tables (by type or by class)
interface TypingLayoutBuilder[E: Object]
# Build typing table layout
+ # elements: the set of elements (classes or types) used in typing tables
fun build_layout(elements: Set[E]): Layout[E] is abstract
end
+# Layout builder dedicated to vft, attribute & VT tables
interface PropertyLayoutBuilder[E: MProperty]
# Build table layout for attributes, methods and virtual types
+ # elements: the set of classes containing the properties to use in table layout
fun build_layout(elements: Set[MClass]): Layout[E] is abstract
end
+# For resolution tables (generics)
interface ResolutionLayoutBuilder
# Build resolution table layout
+ # elements: association between classes and resolved types
fun build_layout(elements: Map[MClassType, Set[MType]]): Layout[MType] is abstract
end
# Matrice computers
+# Abstract layout builder for resolution tables using Binary Matrix (BM)
abstract class TypingBMizer[E: Object]
super TypingLayoutBuilder[E]
private fun reverse_linearize(elements: Set[E]): Array[E] is abstract
end
+# Layout builder for typing tables based on classes using Binary Matrix (BM)
class MTypeBMizer
super TypingBMizer[MType]
end
end
+# Layout builder for typing tables based on types using Binary Matrix (BM)
class MClassBMizer
super TypingBMizer[MClass]
end
end
-# Abstract BMizing for MProperties
+# Abstract Layout builder for mproperties using Binary Matrix (BM)
abstract class MPropertyBMizer[E: MProperty]
super PropertyLayoutBuilder[E]
return result
end
+ # extract properties of a mclass
private fun properties(mclass: MClass): Set[E] do
var properties = new HashSet[E]
for mprop in self.mmodule.properties(mclass) do
private fun linearize_mclasses(mclasses: Set[MClass]): Array[MClass] is abstract
end
-# BMizing for MMethods
+# Layout builder for vft using Binary Matrix (BM)
class MMethodBMizer
super MPropertyBMizer[MMethod]
redef fun linearize_mclasses(mclasses) do return self.mmodule.reverse_linearize_mclasses(mclasses)
end
-# BMizing for MMAttributes
+# Layout builder for attribute tables using Binary Matrix (BM)
class MAttributeBMizer
super MPropertyBMizer[MAttribute]
# Colorers
+# Abstract Layout builder for typing table using coloration (CL)
abstract class TypingColorer[E: Object]
super TypingLayoutBuilder[E]
private fun reverse_linearize(elements: Set[E]): Array[E] is abstract
end
-# MType coloring
+# Layout builder for typing tables based on types using coloration (CL)
class MTypeColorer
super TypingColorer[MType]
redef fun reverse_linearize(elements) do return self.mmodule.reverse_linearize_mtypes(elements)
end
-# MClass coloring
+# Layout builder for typing tables based on classes using coloration (CL)
class MClassColorer
super TypingColorer[MClass]
redef fun reverse_linearize(elements) do return self.mmodule.reverse_linearize_mclasses(elements)
end
-# MProperty coloring
+# Abstract Layout builder for properties tables using coloration (CL)
abstract class MPropertyColorer[E: MProperty]
super PropertyLayoutBuilder[E]
end
end
-# Coloring for MMethods
+# Layout builder for vft using coloration (CL)
class MMethodColorer
super MPropertyColorer[MMethod]
init(mmodule: MModule) do super
end
-# Coloring for MMAttributes
+# Layout builder for attributes using coloration (CL)
class MAttributeColorer
super MPropertyColorer[MAttribute]
init(mmodule: MModule) do super
end
-# Coloring for MVirtualTypeProps
+# Layout builder for virtual types using coloration (CL)
class MVirtualTypePropColorer
super MPropertyColorer[MVirtualTypeProp]
init(mmodule: MModule) do super
end
-# Colorer for type resolution table
+# Layout builder for resolution tables using coloration (CL)
class ResolutionColorer
super ResolutionLayoutBuilder
init(operator: PHOperator) do self.operator = operator
+ # Compute mask for each holders
fun compute_masks(conflicts: Map[T, Set[U]], ids: Map[U, Int]): Map[T, Int] do
var masks = new HashMap[T, Int]
for mclasstype, mtypes in conflicts do
return mask
end
+ # Compute hash for each element in each holder
fun compute_hashes(elements: Map[T, Set[U]], ids: Map[U, Int], masks: Map[T, Int]): Map[T, Map[U, Int]] do
var hashes = new HashMap[T, Map[U, Int]]
for mclasstype, mtypes in elements do
# Abstract operator used for perfect hashing
abstract class PHOperator
+ # hash `id` using `mask`
fun op(mask: Int, id:Int): Int is abstract
end
redef fun op(mask, id) do return mask.bin_and(id)
end
+# Layout builder for typing tables using perfect hashing (PH)
class TypingHasher[E: Object]
super PerfectHasher[E, E]
super TypingLayoutBuilder[E]
private fun reverse_linearize(elements: Set[E]): Array[E] is abstract
end
+# Layout builder for typing tables with types using perfect hashing (PH)
class MTypeHasher
super TypingHasher[MType]
end
end
+# Layout builder for typing tables with classes using perfect hashing (PH)
class MClassHasher
super TypingHasher[MClass]
end
end
-# Layout builder for MProperty using Perfect Hashing (PH)
-# TODO implement this class without sublcassing CL builder
+# Abstract layout builder for properties tables using perfect hashing (PH)
class MPropertyHasher[E: MProperty]
- super MPropertyColorer[E]
+ super PerfectHasher[MClass, E]
+ super PropertyLayoutBuilder[E]
+
+ type MPROP: MProperty
+
+ var mmodule: MModule
+
+ init(operator: PHOperator, mmodule: MModule) do
+ super(operator)
+ self.mmodule = mmodule
+ end
+
+ redef fun build_layout(mclasses) do
+ var result = new PHLayout[MClass, E]
+ var ids = new HashMap[E, Int]
+ var elements = new HashMap[MClass, Set[E]]
+ var lin = linearize_mclasses(mclasses)
+ for mclass in lin do
+ var mproperties = properties(mclass)
+ for mproperty in mproperties do
+ if ids.has_key(mproperty) then continue
+ ids[mproperty] = ids.length + 1
+ end
+ elements[mclass] = mproperties
+ end
+ result.ids = ids
+ result.pos = ids
+ result.masks = self.compute_masks(elements, ids)
+ result.hashes = self.compute_hashes(elements, ids, result.masks)
+ return result
+ end
+
+ # extract set of properties from mclass
+ private fun properties(mclass: MClass): Set[E] do
+ var properties = new HashSet[E]
+ for mprop in self.mmodule.properties(mclass) do
+ if mprop isa MPROP then properties.add(mprop)
+ end
+ return properties
+ end
+
+ private fun linearize_mclasses(mclasses: Set[MClass]): Array[MClass] is abstract
+end
+
+# Layout builder for vft using perfect hashing (PH)
+class MMethodHasher
+ super MPropertyHasher[MMethod]
+
+ redef type MPROP: MMethod
+ init(operator: PHOperator, mmodule: MModule) do super(operator, mmodule)
+ redef fun linearize_mclasses(mclasses) do return self.mmodule.reverse_linearize_mclasses(mclasses)
+end
+
+# Layout builder for attributes tables using perfect hashing (PH)
+class MAttributeHasher
+ super MPropertyHasher[MAttribute]
+
+ redef type MPROP: MAttribute
+ init(operator: PHOperator, mmodule: MModule) do super(operator, mmodule)
+ redef fun linearize_mclasses(mclasses) do return self.mmodule.linearize_mclasses_2(mclasses)
+end
+
+# Layout builder for virtual types tables using perfect hashing (PH)
+class MVirtualTypePropHasher
+ super MPropertyHasher[MVirtualTypeProp]
+
+ redef type MPROP: MVirtualTypeProp
+ init(operator: PHOperator, mmodule: MModule) do super(operator, mmodule)
+ redef fun linearize_mclasses(mclasses) do return self.mmodule.reverse_linearize_mclasses(mclasses)
end
+# Layout builder for resolution tables using perfect hashing (PH)
class ResolutionHasher
super PerfectHasher[MClassType, MType]
super ResolutionLayoutBuilder
import parser
import toolcontext
+import phase
+
+import modelbuilder #FIXME useless
+
+redef class ToolContext
+ var literal_phase: Phase = new LiteralPhase(self, null)
+end
+
+private class LiteralPhase
+ super Phase
+
+ redef fun process_nmodule(nmodule) do nmodule.do_literal(toolcontext)
+end
redef class AModule
# Visit the module to compute the real value of the literal-related node of the AST.
var value: nullable String
redef fun accept_literal(v)
do
- var txt
- if self isa AStringExpr then
- txt = self.n_string.text
- else if self isa AStartStringExpr then
- txt = self.n_string.text
- else if self isa AMidStringExpr then
- txt = self.n_string.text
- else if self isa AEndStringExpr then
- txt = self.n_string.text
- else abort
- self.value = txt.substring(1, txt.length-2).unescape_nit
+ var txt = self.n_string.text
+ var skip = 1
+ if txt[0] == txt[1] and txt.length >= 6 then skip = 3
+ self.value = txt.substring(skip, txt.length-(2*skip)).unescape_nit
end
end
import scope
import flow
+import phase
+
+redef class ToolContext
+ var local_var_init_phase: Phase = new LocalVarInitPhase(self, [flow_phase])
+end
+
+private class LocalVarInitPhase
+ super Phase
+
+ redef fun process_npropdef(npropdef) do npropdef.do_local_var_init(toolcontext)
+end
redef class APropdef
# Entry point of the whole local variable initialization verifier
line_starts[0] = 0
end
+ # Create a new sourcefile using a dummy filename and a given content
+ init from_string(filename: String, string: String)
+ do
+ self.filename = filename
+ self.string = string
+ line_starts[0] = 0
+ end
+
# Position of each line start
var line_starts: Array[Int] = new Array[Int]
end
module generate_hierarchies
import model
-
private import metrics_base
+import frontend
+
+redef class ToolContext
+ var generate_hierarchies_phase: Phase = new GenerateHierarchyPhase(self, null)
+end
+
+private class GenerateHierarchyPhase
+ super Phase
+
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return
+ var model = toolcontext.modelbuilder.model
+ generate_module_hierarchy(toolcontext, model)
+ generate_classdef_hierarchy(toolcontext, model)
+ generate_class_hierarchy(toolcontext, mainmodule)
+ end
+end
# Create a dot file representing the module hierarchy of a model.
# Importation relation is represented with arrow
import model
private import metrics_base
+import phase
+import frontend
+
+redef class ToolContext
+ var inheritance_metrics_phase = new InheritanceMetricsPhase(self, null)
+end
+
+private class InheritanceMetricsPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_inheritance.value and not toolcontext.opt_all.value then return
+ compute_inheritance_metrics(toolcontext, toolcontext.modelbuilder.model)
+ end
+end
redef class Model
# Extract the subset of classes from a set of mclass
import rta_metrics
import model_hyperdoc
import tables_metrics
+import poset_metrics
import modelbuilder
import csv
+import counter
redef class ToolContext
var opt_generate_csv = new OptionBool("Generate CVS format metrics", "--generate-csv")
# --generate_hyperdoc
var opt_generate_hyperdoc = new OptionBool("Generate Hyperdoc", "--generate_hyperdoc")
+ # --poset
+ var opt_poset = new OptionBool("Complete metrics on posets", "--poset")
var opt_dir = new OptionString("Directory where some statistics files are generated", "-d", "--dir")
var output_dir: String = "."
self.option_context.add_option(opt_rta)
self.option_context.add_option(opt_generate_csv)
self.option_context.add_option(opt_generate_hyperdoc)
+ self.option_context.add_option(opt_poset)
self.option_context.add_option(opt_dir)
end
return not self.model.std_modules.has(self.name)
end
end
-
-# A counter counts occurence of things
-# Use this instead of a HashMap[E, Int]
-class Counter[E: Object]
- # Total number of counted occurences
- var total: Int = 0
-
- private var map = new HashMap[E, Int]
-
- # The number of counted occurences of `e'
- fun [](e: E): Int
- do
- var map = self.map
- if map.has_key(e) then return map[e]
- return 0
- end
-
- # Count one more occurence of `e'
- fun inc(e: E)
- do
- self.map[e] = self[e] + 1
- total += 1
- end
-
- # Return an array of elements sorted by occurences
- fun sort: Array[E]
- do
- var res = map.keys.to_a
- var sorter = new CounterSorter[E](self)
- sorter.sort(res)
- #res.sort !cmp a, b = map[a] <=> map[b]
- return res
- end
-end
-
-private class CounterSorter[E: Object]
- super AbstractSorter[E]
- var counter: Counter[E]
- redef fun compare(a,b) do return self.counter.map[a] <=> self.counter.map[b]
-end
-
-# Helper function to display n/d and handle division by 0
-fun div(n: Int, d: Int): String
-do
- if d == 0 then return "na"
- return ((100*n/d).to_f/100.0).to_precision(2)
-end
import model
import metrics_base
+import phase
+import frontend
+
+redef class ToolContext
+ var model_hyperdoc_phase = new ModelHyperdocPhase(self, null)
+end
+
+private class ModelHyperdocPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return
+ generate_model_hyperdoc(toolcontext, toolcontext.modelbuilder.model)
+ end
+end
# Genetate a HTML file for the model.
# The generated file contains the description of each entity of the model
import modelbuilder
private import typing
private import metrics_base
+import frontend
+
+redef class ToolContext
+ var nullables_metrics_phase = new NullablesMetricsPhase(self, null)
+end
+
+private class NullablesMetricsPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_nullables.value and not toolcontext.opt_all.value then return
+ compute_nullables_metrics(toolcontext.modelbuilder)
+ end
+end
private class NullableSends
super Visitor
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Metrics about the various posets of the model of a Nit program
+module poset_metrics
+
+import poset
+import metrics_base
+import frontend
+
+redef class ToolContext
+ var poset_metrics_phase: Phase = new PosetMetricsPhase(self, null)
+end
+
+private class PosetMetricsPhase
+ super Phase
+
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_poset.value and not toolcontext.opt_all.value then return
+
+ var model = mainmodule.model
+ print "--- Poset metrics ---"
+ print "## Module importation hierarchy"
+ model.mmodule_importation_hierarchy.print_metrics
+ print "## Module nesting hierarchy"
+ model.mmodule_nesting_hierarchy.print_metrics
+ print "## Classdef hierarchy"
+ model.mclassdef_hierarchy.print_metrics
+ print "## Class hierarchy"
+ mainmodule.flatten_mclass_hierarchy.print_metrics
+ end
+end
import model
private import metrics_base
+import frontend
+
+redef class ToolContext
+ var refinement_metrics_phase = new RefinementMetricsPhase(self, null)
+end
+
+private class RefinementMetricsPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_refinement.value and not toolcontext.opt_all.value then return
+ compute_refinement_metrics(toolcontext.modelbuilder.model)
+ end
+end
# Print refinement usage metrics
fun compute_refinement_metrics(model: Model)
import modelbuilder
private import rapid_type_analysis
private import metrics_base
+import frontend
+
+redef class ToolContext
+ var rta_metrics_phase = new RTAMetricsPhase(self, null)
+end
+
+private class RTAMetricsPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_rta.value and not toolcontext.opt_all.value then return
+ compute_rta_metrics(toolcontext.modelbuilder, mainmodule)
+ end
+end
redef class RapidTypeAnalysis
redef fun add_type(mtype)
# Metrics about the usage of explicit and implicit self
module self_metrics
-
import modelbuilder
private import metrics_base
+import frontend
+
+redef class ToolContext
+ var self_metrics_phase = new SelfMetricsPhase(self, null)
+end
+
+private class SelfMetricsPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_self.value and not toolcontext.opt_all.value then return
+ compute_self_metrics(toolcontext.modelbuilder)
+ end
+end
private class ASelfVisitor
super Visitor
private import metrics_base
import modelbuilder
+import modelize_class
+import frontend
+
+redef class ToolContext
+ var static_types_metrics_phase = new StaticTypesMetricsPhase(self, null)
+end
+
+private class StaticTypesMetricsPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_static_types.value and not toolcontext.opt_all.value then return
+ compute_static_types_metrics(toolcontext.modelbuilder)
+ end
+end
# The job of this visitor is to resolve all types found
private class ATypeCounterVisitor
print " {t}: {typecount[t]}"
end
- # Compute the distribution of type usage
- print "Distribution of type usage:"
- var count = 0
- var sum = 0
- var limit = 1
- for t in types do
- if typecount[t] > limit then
- print " <={limit}: {count} ({div(count*100,types.length)}% of types; {div(sum*100,typecount.total)}% of usage)"
- count = 0
- sum = 0
- while typecount[t] > limit do limit = limit * 2
- end
- count += 1
- sum += typecount[t]
- end
- print " <={limit}: {count} ({div(count*100,types.length)}% of types; {div(sum*100,typecount.total)}% of usage)"
+ # Some statistics
+ print "Statistics of type usage:"
+ typecount.print_summary
end
import model
private import metrics_base
+import frontend
+
+redef class ToolContext
+ var tables_metrics_phase = new TablesMetricsPhase(self, null)
+end
+
+private class TablesMetricsPhase
+ super Phase
+ redef fun process_mainmodule(mainmodule)
+ do
+ if not toolcontext.opt_tables.value and not toolcontext.opt_all.value then return
+ compute_tables_metrics(mainmodule)
+ end
+end
# Print class tables metrics for the classes of the program main
fun compute_tables_metrics(main: MModule)
import poset
import location
import model_base
+private import more_collections
redef class Model
# All known classes
# Return the nullable version of the type
# If the type is already nullable then self is returned
- #
- # FIXME: DO NOT WORK YET
fun as_nullable: MType
do
var res = self.as_nullable_cache
end
# A type prefixed with "nullable"
-# FIXME Stub implementation
class MNullableType
super MType
#
# This method is used to determine what method is called by a super.
#
- # FIXME: IMPLEMENTED AS A static designation, it is ugly
- #
# REQUIRE: not mtype.need_anchor
fun lookup_next_definition(mmodule: MModule, mtype: MType): MPROPDEF
do
import poset
import location
-
-# Simple way to store an HashMap[K, Array[V]]
-# FIXME: this should move to its own module
-class MultiHashMap[K: Object, V]
- super HashMap[K, Array[V]]
-
- # Add `v' to the array associated with `k'.
- # If there is no array associated, then create it.
- fun add_one(k: K, v: V)
- do
- if self.has_key(k) then
- self[k].add(v)
- else
- self[k] = [v]
- end
- end
-
- init do end
-end
-
-# Simple way to store an HashMap[K1, HashMap[K2, V]]
-# FIXME: this should move to its own module
-class HashMap2[K1: Object, K2: Object, V]
- private var level1: HashMap[K1, HashMap[K2, V]] = new HashMap[K1, HashMap[K2, V]]
- fun [](k1: K1, k2: K2): nullable V
- do
- var level1 = self.level1
- if not level1.has_key(k1) then return null
- var level2 = level1[k1]
- if not level2.has_key(k2) then return null
- return level2[k2]
- end
- fun []=(k1: K1, k2: K2, v: V)
- do
- var level1 = self.level1
- var level2: HashMap[K2, V]
- if not level1.has_key(k1) then
- level2 = new HashMap[K2, V]
- level1[k1] = level2
- else
- level2 = level1[k1]
- end
- level2[k2] = v
- end
-end
-
-# Simple way to store an HashMap[K1, HashMap[K2, HashMap[K3, V]]]
-# FIXME: this should move to its own module
-class HashMap3[K1: Object, K2: Object, K3: Object, V]
- private var level1: HashMap[K1, HashMap2[K2, K3, V]] = new HashMap[K1, HashMap2[K2, K3, V]]
- fun [](k1: K1, k2: K2, k3: K3): nullable V
- do
- var level1 = self.level1
- if not level1.has_key(k1) then return null
- var level2 = level1[k1]
- return level2[k2, k3]
- end
- fun []=(k1: K1, k2: K2, k3: K3, v: V)
- do
- var level1 = self.level1
- var level2: HashMap2[K2, K3, V]
- if not level1.has_key(k1) then
- level2 = new HashMap2[K2, K3, V]
- level1[k1] = level2
- else
- level2 = level1[k1]
- end
- level2[k2, k3] = v
- end
-end
+private import more_collections
# The container class of a Nit object-oriented model.
# A model knows modules, classes and properties and can retrieve them.
import poset
import opts
import toolcontext
+import phase
+
+private import more_collections
###
super
option_context.add_option(opt_path, opt_only_parse, opt_only_metamodel)
end
+
+ fun modelbuilder: ModelBuilder do return modelbuilder_real.as(not null)
+ private var modelbuilder_real: nullable ModelBuilder = null
+
end
# A model builder knows how to load nit source files and build the associated model
-# The important function is `parse_and_build' that does all the job.
-# The others function can be used for specific tasks
class ModelBuilder
# The model where new modules, classes and properties are added
var model: Model
# The toolcontext used to control the interaction with the user (getting options and displaying messages)
var toolcontext: ToolContext
+ # Run phases on all loaded modules
+ fun run_phases
+ do
+ var mmodules = model.mmodules.to_a
+ model.mmodule_importation_hierarchy.sort(mmodules)
+ var nmodules = new Array[AModule]
+ for mm in mmodules do
+ nmodules.add(mmodule2nmodule[mm])
+ end
+ toolcontext.run_phases(nmodules)
+
+ if toolcontext.opt_only_metamodel.value then
+ self.toolcontext.info("*** ONLY METAMODEL", 1)
+ exit(0)
+ end
+ end
+
# Instantiate a modelbuilder for a model and a toolcontext
# Important, the options of the toolcontext must be correctly set (parse_option already called)
init(model: Model, toolcontext: ToolContext)
do
self.model = model
self.toolcontext = toolcontext
+ assert toolcontext.modelbuilder_real == null
+ toolcontext.modelbuilder_real = self
# Setup the paths value
paths.append(toolcontext.opt_path.value)
if libname.file_exists then paths.add(libname.simplify_path)
end
- # Load and analyze a bunch of modules.
+ # Load a bunch of modules.
# `modules' can contains filenames or module names.
- # Imported modules are automatically loaded, builds and analysed.
- # The result is the corresponding built modules.
+ # Imported modules are automatically loaded and modelized.
+ # The result is the corresponding model elements.
# Errors and warnings are printed with the toolcontext.
#
- # FIXME: Maybe just let the client do the loop (instead of playing with Sequences)
- fun parse_and_build(modules: Sequence[String]): Array[MModule]
+ # Note: class and property model element are not analysed.
+ fun parse(modules: Sequence[String]): Array[MModule]
do
var time0 = get_time
# Parse and recursively load
self.toolcontext.check_errors
- if self.toolcontext.opt_only_parse.value then
- self.toolcontext.info("--only-parse: stop processing", 2)
- return new Array[MModule]
+ if toolcontext.opt_only_parse.value then
+ self.toolcontext.info("*** ONLY PARSE...", 1)
+ exit(0)
end
- # Build the model
- self.toolcontext.info("*** BUILD MODEL ***", 1)
- self.build_all_classes
- var time2 = get_time
- self.toolcontext.info("*** END BUILD MODEL: {time2-time1} ***", 2)
-
- self.toolcontext.check_errors
-
return mmodules
end
# All the loaded modules
var nmodules: Array[AModule] = new Array[AModule]
- # Build the classes of all modules `nmodules'.
- private fun build_all_classes
- do
- for nmodule in self.nmodules do
- build_classes(nmodule)
- end
- end
-
- # Visit the AST and create the MClass objects
- private fun build_a_mclass(nmodule: AModule, nclassdef: AClassdef)
- do
- var mmodule = nmodule.mmodule.as(not null)
-
- var name: String
- var nkind: nullable AClasskind
- var mkind: MClassKind
- var nvisibility: nullable AVisibility
- var mvisibility: nullable MVisibility
- var arity = 0
- if nclassdef isa AStdClassdef then
- name = nclassdef.n_id.text
- nkind = nclassdef.n_classkind
- mkind = nkind.mkind
- nvisibility = nclassdef.n_visibility
- mvisibility = nvisibility.mvisibility
- arity = nclassdef.n_formaldefs.length
- else if nclassdef isa ATopClassdef then
- name = "Object"
- nkind = null
- mkind = interface_kind
- nvisibility = null
- mvisibility = public_visibility
- else if nclassdef isa AMainClassdef then
- name = "Sys"
- nkind = null
- mkind = concrete_kind
- nvisibility = null
- mvisibility = public_visibility
- else
- abort
- end
-
- var mclass = try_get_mclass_by_name(nclassdef, mmodule, name)
- if mclass == null then
- mclass = new MClass(mmodule, name, arity, mkind, mvisibility)
- #print "new class {mclass}"
- else if nclassdef isa AStdClassdef and nmodule.mclass2nclassdef.has_key(mclass) then
- error(nclassdef, "Error: A class {name} is already defined at line {nmodule.mclass2nclassdef[mclass].location.line_start}.")
- return
- else if nclassdef isa AStdClassdef and nclassdef.n_kwredef == null then
- error(nclassdef, "Redef error: {name} is an imported class. Add the redef keyword to refine it.")
- return
- else if mclass.arity != arity then
- error(nclassdef, "Redef error: Formal parameter arity missmatch; got {arity}, expected {mclass.arity}.")
- return
- else if nkind != null and mkind != concrete_kind and mclass.kind != mkind then
- error(nkind, "Error: refinement changed the kind from a {mclass.kind} to a {mkind}")
- else if nvisibility != null and mvisibility != public_visibility and mclass.visibility != mvisibility then
- error(nvisibility, "Error: refinement changed the visibility from a {mclass.visibility} to a {mvisibility}")
- end
- nclassdef.mclass = mclass
- nmodule.mclass2nclassdef[mclass] = nclassdef
- end
-
- # Visit the AST and create the MClassDef objects
- private fun build_a_mclassdef(nmodule: AModule, nclassdef: AClassdef)
- do
- var mmodule = nmodule.mmodule.as(not null)
- var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
- var mclass = nclassdef.mclass
- if mclass == null then return # Skip error
- #var mclassdef = nclassdef.mclassdef.as(not null)
-
- var names = new Array[String]
- var bounds = new Array[MType]
- if nclassdef isa AStdClassdef and mclass.arity > 0 then
- # Collect formal parameter names
- for i in [0..mclass.arity[ do
- var nfd = nclassdef.n_formaldefs[i]
- var ptname = nfd.n_id.text
- if names.has(ptname) then
- error(nfd, "Error: A formal parameter type `{ptname}' already exists")
- return
- end
- names.add(ptname)
- end
-
- # Revolve bound for formal parameter names
- for i in [0..mclass.arity[ do
- var nfd = nclassdef.n_formaldefs[i]
- var nfdt = nfd.n_type
- if nfdt != null then
- var bound = resolve_mtype_unchecked(nclassdef, nfdt)
- if bound == null then return # Forward error
- if bound.need_anchor then
- # No F-bounds!
- error(nfd, "Error: Formal parameter type `{names[i]}' bounded with a formal parameter type")
- else
- bounds.add(bound)
- end
- else if mclass.mclassdefs.is_empty then
- # No bound, then implicitely bound by nullable Object
- bounds.add(objectclass.mclass_type.as_nullable)
- else
- # Inherit the bound
- bounds.add(mclass.intro.bound_mtype.arguments[i])
- end
- end
- end
-
- var bound_mtype = mclass.get_mtype(bounds)
- var mclassdef = new MClassDef(mmodule, bound_mtype, nclassdef.location, names)
- nclassdef.mclassdef = mclassdef
- self.mclassdef2nclassdef[mclassdef] = nclassdef
-
- if mclassdef.is_intro then
- self.toolcontext.info("{mclassdef} introduces new {mclass.kind} {mclass.full_name}", 3)
- else
- self.toolcontext.info("{mclassdef} refine {mclass.kind} {mclass.full_name}", 3)
- end
- end
-
- # Visit the AST and set the super-types of the MClassdef objects
- private fun collect_a_mclassdef_inheritance(nmodule: AModule, nclassdef: AClassdef)
- do
- var mmodule = nmodule.mmodule.as(not null)
- var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
- var mclass = nclassdef.mclass.as(not null)
- var mclassdef = nclassdef.mclassdef.as(not null)
-
- var specobject = true
- var supertypes = new Array[MClassType]
- if nclassdef isa AStdClassdef then
- for nsc in nclassdef.n_superclasses do
- specobject = false
- var ntype = nsc.n_type
- var mtype = resolve_mtype_unchecked(nclassdef, ntype)
- if mtype == null then continue # Skip because of error
- if not mtype isa MClassType then
- error(ntype, "Error: supertypes cannot be a formal type")
- return
- end
- supertypes.add mtype
- #print "new super : {mclass} < {mtype}"
- end
- end
- if specobject and mclass.name != "Object" and objectclass != null and mclassdef.is_intro then
- supertypes.add objectclass.mclass_type
- end
-
- mclassdef.set_supertypes(supertypes)
- if not supertypes.is_empty then self.toolcontext.info("{mclassdef} new super-types: {supertypes.join(", ")}", 3)
- end
-
- # Check the validity of the specialization heirarchy
- private fun check_supertypes(nmodule: AModule, nclassdef: AClassdef)
- do
- var mmodule = nmodule.mmodule.as(not null)
- var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
- var mclass = nclassdef.mclass.as(not null)
- var mclassdef = nclassdef.mclassdef.as(not null)
-
- for s in mclassdef.supertypes do
- if s.is_subtype(mmodule, mclassdef.bound_mtype, mclassdef.bound_mtype) then
- error(nclassdef, "Error: Inheritance loop for class {mclass} with type {s}")
- end
- end
- end
-
- # Build the classes of the module `nmodule'.
- # REQUIRE: classes of imported modules are already build. (let `build_all_classes' do the job)
- private fun build_classes(nmodule: AModule)
- do
- # Force building recursively
- if nmodule.build_classes_is_done then return
- nmodule.build_classes_is_done = true
- var mmodule = nmodule.mmodule.as(not null)
- for imp in mmodule.in_importation.direct_greaters do
-
- build_classes(mmodule2nmodule[imp])
- end
-
- # Create all classes
- for nclassdef in nmodule.n_classdefs do
- self.build_a_mclass(nmodule, nclassdef)
- end
-
- # Create all classdefs
- for nclassdef in nmodule.n_classdefs do
- self.build_a_mclassdef(nmodule, nclassdef)
- end
-
- for nclassdef in nmodule.n_classdefs do
- if nclassdef.mclassdef == null then return # forward error
- end
-
- # Create inheritance on all classdefs
- for nclassdef in nmodule.n_classdefs do
- self.collect_a_mclassdef_inheritance(nmodule, nclassdef)
- end
-
- # Create the mclassdef hierarchy
- for nclassdef in nmodule.n_classdefs do
- var mclassdef = nclassdef.mclassdef.as(not null)
- mclassdef.add_in_hierarchy
- end
-
- # Check inheritance
- for nclassdef in nmodule.n_classdefs do
- self.check_supertypes(nmodule, nclassdef)
- end
-
- # Check unchecked ntypes
- for nclassdef in nmodule.n_classdefs do
- if nclassdef isa AStdClassdef then
- # check bound of formal parameter
- for nfd in nclassdef.n_formaldefs do
- var nfdt = nfd.n_type
- if nfdt != null and nfdt.mtype != null then
- var bound = resolve_mtype(nclassdef, nfdt)
- if bound == null then return # Forward error
- end
- end
- # check declared super types
- for nsc in nclassdef.n_superclasses do
- var ntype = nsc.n_type
- if ntype.mtype != null then
- var mtype = resolve_mtype(nclassdef, ntype)
- if mtype == null then return # Forward error
- end
- end
- end
-
- end
-
- # TODO: Check that the super-class is not intrusive
-
- # TODO: Check that the super-class is not already known (by transitivity)
-
- for nclassdef in nmodule.n_classdefs do
- self.build_properties(nclassdef)
- end
- end
-
# Register the nmodule associated to each mmodule
# FIXME: why not refine the MModule class with a nullable attribute?
var mmodule2nmodule: HashMap[MModule, AModule] = new HashMap[MModule, AModule]
- # Register the nclassdef associated to each mclassdef
- # FIXME: why not refine the MClassDef class with a nullable attribute?
- var mclassdef2nclassdef: HashMap[MClassDef, AClassdef] = new HashMap[MClassDef, AClassdef]
- # Register the npropdef associated to each mpropdef
- # FIXME: why not refine the MPropDef class with a nullable attribute?
- var mpropdef2npropdef: HashMap[MPropDef, APropdef] = new HashMap[MPropDef, APropdef]
-
- # Build the properties of `nclassdef'.
- # REQUIRE: all superclasses are built.
- private fun build_properties(nclassdef: AClassdef)
- do
- # Force building recursively
- if nclassdef.build_properties_is_done then return
- nclassdef.build_properties_is_done = true
- var mclassdef = nclassdef.mclassdef.as(not null)
- if mclassdef.in_hierarchy == null then return # Skip error
- for superclassdef in mclassdef.in_hierarchy.direct_greaters do
- build_properties(mclassdef2nclassdef[superclassdef])
- end
-
- for npropdef in nclassdef.n_propdefs do
- npropdef.build_property(self, nclassdef)
- end
- for npropdef in nclassdef.n_propdefs do
- npropdef.build_signature(self, nclassdef)
- end
- for npropdef in nclassdef.n_propdefs do
- npropdef.check_signature(self, nclassdef)
- end
- process_default_constructors(nclassdef)
- end
-
- # Introduce or inherit default constructor
- # This is the last part of `build_properties'.
- private fun process_default_constructors(nclassdef: AClassdef)
- do
- var mclassdef = nclassdef.mclassdef.as(not null)
-
- # Are we a refinement
- if not mclassdef.is_intro then return
-
- # Is the class forbid constructors?
- if not mclassdef.mclass.kind.need_init then return
-
- # Is there already a constructor defined?
- for mpropdef in mclassdef.mpropdefs do
- if not mpropdef isa MMethodDef then continue
- if mpropdef.mproperty.is_init then return
- end
-
- if not nclassdef isa AStdClassdef then return
-
- var mmodule = nclassdef.mclassdef.mmodule
- # Do we inherit for a constructor?
- var combine = new Array[MMethod]
- var inhc: nullable MClass = null
- for st in mclassdef.supertypes do
- var c = st.mclass
- if not c.kind.need_init then continue
- st = st.anchor_to(mmodule, nclassdef.mclassdef.bound_mtype)
- var candidate = self.try_get_mproperty_by_name2(nclassdef, mmodule, st, "init").as(nullable MMethod)
- if candidate != null and candidate.intro.msignature.arity == 0 then
- combine.add(candidate)
- continue
- end
- var inhc2 = c.inherit_init_from
- if inhc2 == null then inhc2 = c
- if inhc2 == inhc then continue
- if inhc != null then
- self.error(nclassdef, "Error: Cannot provide a defaut constructor: conflict for {inhc} and {c}")
- else
- inhc = inhc2
- end
- end
- if combine.is_empty and inhc != null then
- # TODO: actively inherit the consturctor
- self.toolcontext.info("{mclassdef} inherits all constructors from {inhc}", 3)
- mclassdef.mclass.inherit_init_from = inhc
- return
- end
- if not combine.is_empty and inhc != null then
- self.error(nclassdef, "Error: Cannot provide a defaut constructor: conflict for {combine.join(", ")} and {inhc}")
- return
- end
-
- if not combine.is_empty then
- nclassdef.super_inits = combine
- var mprop = new MMethod(mclassdef, "init", mclassdef.mclass.visibility)
- var mpropdef = new MMethodDef(mclassdef, mprop, nclassdef.location)
- var mparameters = new Array[MParameter]
- var msignature = new MSignature(mparameters, null)
- mpropdef.msignature = msignature
- mprop.is_init = true
- nclassdef.mfree_init = mpropdef
- self.toolcontext.info("{mclassdef} gets a free empty constructor {mpropdef}{msignature}", 3)
- return
- end
-
- # Collect undefined attributes
- var mparameters = new Array[MParameter]
- for npropdef in nclassdef.n_propdefs do
- if npropdef isa AAttrPropdef and npropdef.n_expr == null then
- if npropdef.mpropdef == null then return # Skip broken attribute
- var paramname = npropdef.mpropdef.mproperty.name.substring_from(1)
- var ret_type = npropdef.mpropdef.static_mtype
- if ret_type == null then return
- var mparameter = new MParameter(paramname, ret_type, false)
- mparameters.add(mparameter)
- end
- end
-
- var mprop = new MMethod(mclassdef, "init", mclassdef.mclass.visibility)
- var mpropdef = new MMethodDef(mclassdef, mprop, nclassdef.location)
- var msignature = new MSignature(mparameters, null)
- mpropdef.msignature = msignature
- mprop.is_init = true
- nclassdef.mfree_init = mpropdef
- self.toolcontext.info("{mclassdef} gets a free constructor for attributes {mpropdef}{msignature}", 3)
- end
-
- # Return the static type associated to the node `ntype'.
- # `classdef' is the context where the call is made (used to understand formal types)
- # The mmodule used as context is `nclassdef.mmodule'
- # In case of problem, an error is displayed on `ntype' and null is returned.
- # FIXME: the name "resolve_mtype" is awful
- fun resolve_mtype_unchecked(nclassdef: AClassdef, ntype: AType): nullable MType
- do
- var name = ntype.n_id.text
- var mclassdef = nclassdef.mclassdef
- var mmodule = nclassdef.parent.as(AModule).mmodule.as(not null)
- var res: MType
-
- # Check virtual type
- if mclassdef != null then
- var prop = try_get_mproperty_by_name(ntype, mclassdef, name).as(nullable MVirtualTypeProp)
- if prop != null then
- if not ntype.n_types.is_empty then
- error(ntype, "Type error: formal type {name} cannot have formal parameters.")
- end
- res = prop.mvirtualtype
- if ntype.n_kwnullable != null then res = res.as_nullable
- ntype.mtype = res
- return res
- end
- end
-
- # Check parameter type
- if mclassdef != null and mclassdef.parameter_names.has(name) then
- if not ntype.n_types.is_empty then
- error(ntype, "Type error: formal type {name} cannot have formal parameters.")
- end
- for i in [0..mclassdef.parameter_names.length[ do
- if mclassdef.parameter_names[i] == name then
- res = mclassdef.mclass.mclass_type.arguments[i]
- if ntype.n_kwnullable != null then res = res.as_nullable
- ntype.mtype = res
- return res
- end
- end
- abort
- end
-
- # Check class
- var mclass = try_get_mclass_by_name(ntype, mmodule, name)
- if mclass != null then
- var arity = ntype.n_types.length
- if arity != mclass.arity then
- if arity == 0 then
- error(ntype, "Type error: '{name}' is a generic class.")
- else if mclass.arity == 0 then
- error(ntype, "Type error: '{name}' is not a generic class.")
- else
- error(ntype, "Type error: '{name}' has {mclass.arity} parameters ({arity} are provided).")
- end
- return null
- end
- if arity == 0 then
- res = mclass.mclass_type
- if ntype.n_kwnullable != null then res = res.as_nullable
- ntype.mtype = res
- return res
- else
- var mtypes = new Array[MType]
- for nt in ntype.n_types do
- var mt = resolve_mtype_unchecked(nclassdef, nt)
- if mt == null then return null # Forward error
- mtypes.add(mt)
- end
- res = mclass.get_mtype(mtypes)
- if ntype.n_kwnullable != null then res = res.as_nullable
- ntype.mtype = res
- return res
- end
- end
-
- # If everything fail, then give up :(
- error(ntype, "Type error: class {name} not found in module {mmodule}.")
- return null
- end
-
- # Return the static type associated to the node `ntype'.
- # `classdef' is the context where the call is made (used to understand formal types)
- # The mmodule used as context is `nclassdef.mmodule'
- # In case of problem, an error is displayed on `ntype' and null is returned.
- # FIXME: the name "resolve_mtype" is awful
- fun resolve_mtype(nclassdef: AClassdef, ntype: AType): nullable MType
- do
- var mtype = ntype.mtype
- if mtype == null then mtype = resolve_mtype_unchecked(nclassdef, ntype)
- if mtype == null then return null # Forward error
-
- if ntype.checked_mtype then return mtype
- if mtype isa MGenericType then
- var mmodule = nclassdef.parent.as(AModule).mmodule.as(not null)
- var mclassdef = nclassdef.mclassdef
- var mclass = mtype.mclass
- for i in [0..mclass.arity[ do
- var bound = mclass.intro.bound_mtype.arguments[i]
- var nt = ntype.n_types[i]
- var mt = resolve_mtype(nclassdef, nt)
- if mt == null then return null # forward error
- if not mt.is_subtype(mmodule, mclassdef.bound_mtype, bound) then
- error(nt, "Type error: expected {bound}, got {mt}")
- return null
- end
- end
- end
- ntype.checked_mtype = true
- return mtype
- end
# Helper function to display an error on a node.
# Alias for `self.toolcontext.error(n.hot_location, text)'
var mmodule: nullable MModule
# Flag that indicate if the importation is already completed
var is_importation_done: Bool = false
- # Flag that indicate if the class and prop building is already completed
- var build_classes_is_done: Bool = false
- # What is the AClassdef associated to a MClass?
- # Used to check multiple definition of a class.
- var mclass2nclassdef: Map[MClass, AClassdef] = new HashMap[MClass, AClassdef]
-
-end
-
-redef class MClass
- # The class whose self inherit all the constructors.
- # FIXME: this is needed to implement the crazy constructor mixin thing of the of old compiler. We need to think what to do with since this cannot stay in the modelbuilder
- var inherit_init_from: nullable MClass = null
-end
-
-redef class AClassdef
- # The associated MClass once build by a `ModelBuilder'
- var mclass: nullable MClass
- # The associated MClassDef once build by a `ModelBuilder'
- var mclassdef: nullable MClassDef
- var build_properties_is_done: Bool = false
- # The list of super-constructor to call at the start of the free constructor
- # FIXME: this is needed to implement the crazy constructor thing of the of old compiler. We need to think what to do with since this cannot stay in the modelbuilder
- var super_inits: nullable Collection[MMethod] = null
-
- # The free init (implicitely constructed by the class if required)
- var mfree_init: nullable MMethodDef = null
-
- # What is the APropdef associated to a MProperty?
- # Used to check multiple definition of a property.
- var mprop2npropdef: Map[MProperty, APropdef] = new HashMap[MProperty, APropdef]
-end
-
-redef class AClasskind
- # The class kind associated with the AST node class
- private fun mkind: MClassKind is abstract
-end
-redef class AConcreteClasskind
- redef fun mkind do return concrete_kind
-end
-redef class AAbstractClasskind
- redef fun mkind do return abstract_kind
-end
-redef class AInterfaceClasskind
- redef fun mkind do return interface_kind
-end
-redef class AEnumClasskind
- redef fun mkind do return enum_kind
-end
-redef class AExternClasskind
- redef fun mkind do return extern_kind
end
redef class AVisibility
# The visibility level associated with the AST node class
- private fun mvisibility: MVisibility is abstract
+ fun mvisibility: MVisibility is abstract
end
redef class AIntrudeVisibility
redef fun mvisibility do return intrude_visibility
redef class APrivateVisibility
redef fun mvisibility do return private_visibility
end
-
-redef class AType
- # The mtype associated to the node
- var mtype: nullable MType = null
-
- # Is the mtype a valid one?
- var checked_mtype: Bool = false
-end
-
-#
-
-redef class Prod
- # Join the text of all tokens
- # Used to get the 'real name' of method definitions.
- fun collect_text: String
- do
- var v = new TextCollectorVisitor
- v.enter_visit(self)
- assert v.text != ""
- return v.text
- end
-end
-
-private class TextCollectorVisitor
- super Visitor
- var text: String = ""
- redef fun visit(n)
- do
- if n isa Token then text += n.text
- n.visit_all(self)
- end
-end
-
-redef class APropdef
- private fun build_property(modelbuilder: ModelBuilder, nclassdef: AClassdef)
- do
- end
- private fun build_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef)
- do
- end
- private fun check_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef)
- do
- end
- private fun new_property_visibility(modelbuilder: ModelBuilder, nclassdef: AClassdef, nvisibility: nullable AVisibility): MVisibility
- do
- var mvisibility = public_visibility
- if nvisibility != null then mvisibility = nvisibility.mvisibility
- if nclassdef.mclassdef.mclass.visibility == private_visibility then
- if mvisibility == protected_visibility then
- assert nvisibility != null
- modelbuilder.error(nvisibility, "Error: The only legal visibility for properties in a private class is private.")
- else if mvisibility == private_visibility then
- assert nvisibility != null
- # Not yet
- # modelbuilder.warning(nvisibility, "Warning: private is unrequired since the only legal visibility for properties in a private class is private.")
- end
- mvisibility = private_visibility
- end
- return mvisibility
- end
-
- private fun check_redef_property_visibility(modelbuilder: ModelBuilder, nclassdef: AClassdef, nvisibility: nullable AVisibility, mprop: MProperty)
- do
- if nvisibility == null then return
- var mvisibility = nvisibility.mvisibility
- if mvisibility != mprop.visibility and mvisibility != public_visibility then
- modelbuilder.error(nvisibility, "Error: redefinition changed the visibility from a {mprop.visibility} to a {mvisibility}")
- end
- end
-
- private fun check_redef_keyword(modelbuilder: ModelBuilder, nclassdef: AClassdef, kwredef: nullable Token, need_redef: Bool, mprop: MProperty): Bool
- do
- if nclassdef.mprop2npropdef.has_key(mprop) then
- modelbuilder.error(self, "Error: A property {mprop} is already defined in class {nclassdef.mclassdef.mclass}.")
- return false
- end
- if kwredef == null then
- if need_redef then
- modelbuilder.error(self, "Redef error: {nclassdef.mclassdef.mclass}::{mprop.name} is an inherited property. To redefine it, add the redef keyword.")
- return false
- end
- else
- if not need_redef then
- modelbuilder.error(self, "Error: No property {nclassdef.mclassdef.mclass}::{mprop.name} is inherited. Remove the redef keyword to define a new property.")
- return false
- end
- end
- return true
- end
-
-end
-
-redef class ASignature
- # Is the model builder has correctly visited the signature
- var is_visited = false
- # Names of parameters from the AST
- # REQUIRE: is_visited
- var param_names = new Array[String]
- # Types of parameters from the AST
- # REQUIRE: is_visited
- var param_types = new Array[MType]
- # Rank of the vararg (of -1 if none)
- # REQUIRE: is_visited
- var vararg_rank: Int = -1
- # Return type
- var ret_type: nullable MType = null
-
- # Visit and fill information about a signature
- private fun visit_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef): Bool
- do
- var param_names = self.param_names
- var param_types = self.param_types
- for np in self.n_params do
- param_names.add(np.n_id.text)
- var ntype = np.n_type
- if ntype != null then
- var mtype = modelbuilder.resolve_mtype(nclassdef, ntype)
- if mtype == null then return false # Skip error
- for i in [0..param_names.length-param_types.length[ do
- param_types.add(mtype)
- end
- if np.n_dotdotdot != null then
- if self.vararg_rank != -1 then
- modelbuilder.error(np, "Error: {param_names[self.vararg_rank]} is already a vararg")
- return false
- else
- self.vararg_rank = param_names.length - 1
- end
- end
- end
- end
- var ntype = self.n_type
- if ntype != null then
- self.ret_type = modelbuilder.resolve_mtype(nclassdef, ntype)
- if self.ret_type == null then return false # Skip errir
- end
-
- for nclosure in self.n_closure_decls do
- if not nclosure.n_signature.visit_signature(modelbuilder, nclassdef) then return false
- end
-
- self.is_visited = true
- return true
- end
-
- # Build a visited signature
- fun build_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef): nullable MSignature
- do
- if param_names.length != param_types.length then
- # Some parameters are typed, other parameters are not typed.
- modelbuilder.error(self.n_params[param_types.length], "Error: Untyped parameter `{param_names[param_types.length]}'.")
- return null
- end
-
- var mparameters = new Array[MParameter]
- for i in [0..param_names.length[ do
- var mparameter = new MParameter(param_names[i], param_types[i], i == vararg_rank)
- mparameters.add(mparameter)
- end
-
- var msignature = new MSignature(mparameters, ret_type)
- return msignature
- end
-end
-
-redef class AMethPropdef
- # The associated MMethodDef once build by a `ModelBuilder'
- var mpropdef: nullable MMethodDef
-
- # The associated super init if any
- var super_init: nullable MMethod
- redef fun build_property(modelbuilder, nclassdef)
- do
- var is_init = self isa AInitPropdef
- var mclassdef = nclassdef.mclassdef.as(not null)
- var name: String
- var amethodid = self.n_methid
- var name_node: ANode
- if amethodid == null then
- if self isa AMainMethPropdef then
- name = "main"
- name_node = self
- else if self isa AConcreteInitPropdef then
- name = "init"
- name_node = self.n_kwinit
- else if self isa AExternInitPropdef then
- name = "init"
- name_node = self.n_kwnew
- else
- abort
- end
- else if amethodid isa AIdMethid then
- name = amethodid.n_id.text
- name_node = amethodid
- else
- # operator, bracket or assign
- name = amethodid.collect_text
- name_node = amethodid
-
- if name == "-" and self.n_signature.n_params.length == 0 then
- name = "unary -"
- end
- end
-
- var mprop: nullable MMethod = null
- if not is_init or n_kwredef != null then mprop = modelbuilder.try_get_mproperty_by_name(name_node, mclassdef, name).as(nullable MMethod)
- if mprop == null then
- var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
- mprop = new MMethod(mclassdef, name, mvisibility)
- mprop.is_init = is_init
- mprop.is_new = self isa AExternInitPropdef
- if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, false, mprop) then return
- else
- if n_kwredef == null then
- if self isa AMainMethPropdef then
- # no warning
- else
- if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, true, mprop) then return
- end
- end
- check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mprop)
- end
- nclassdef.mprop2npropdef[mprop] = self
-
- var mpropdef = new MMethodDef(mclassdef, mprop, self.location)
-
- self.mpropdef = mpropdef
- modelbuilder.mpropdef2npropdef[mpropdef] = self
- if mpropdef.is_intro then
- modelbuilder.toolcontext.info("{mpropdef} introduces new method {mprop.full_name}", 3)
- else
- modelbuilder.toolcontext.info("{mpropdef} redefines method {mprop.full_name}", 3)
- end
- end
-
- redef fun build_signature(modelbuilder, nclassdef)
- do
- var mpropdef = self.mpropdef
- if mpropdef == null then return # Error thus skiped
- var mmodule = mpropdef.mclassdef.mmodule
- var nsig = self.n_signature
-
- # Retrieve info from the signature AST
- var param_names = new Array[String] # Names of parameters from the AST
- var param_types = new Array[MType] # Types of parameters from the AST
- var vararg_rank = -1
- var ret_type: nullable MType = null # Return type from the AST
- if nsig != null then
- if not nsig.visit_signature(modelbuilder, nclassdef) then return
- param_names = nsig.param_names
- param_types = nsig.param_types
- vararg_rank = nsig.vararg_rank
- ret_type = nsig.ret_type
- end
-
- # Look for some signature to inherit
- # FIXME: do not inherit from the intro, but from the most specific
- var msignature: nullable MSignature = null
- if not mpropdef.is_intro then
- msignature = mpropdef.mproperty.intro.msignature
- if msignature == null then return # Skip error
-
- # Check inherited signature arity
- if param_names.length != msignature.arity then
- var node: ANode
- if nsig != null then node = nsig else node = self
- modelbuilder.error(node, "Redef error: {mpropdef} redefines {mpropdef.mproperty.intro} with {param_names.length} parameter(s), {msignature.arity} expected. Signature is {mpropdef}{msignature}")
- return
- end
- else if mpropdef.mproperty.is_init then
- # FIXME UGLY: inherit signature from a super-constructor
- for msupertype in nclassdef.mclassdef.supertypes do
- msupertype = msupertype.anchor_to(mmodule, nclassdef.mclassdef.bound_mtype)
- var candidate = modelbuilder.try_get_mproperty_by_name2(self, mmodule, msupertype, mpropdef.mproperty.name)
- if candidate != null then
- if msignature == null then
- msignature = candidate.intro.as(MMethodDef).msignature
- end
- end
- end
- end
-
-
- # Inherit the signature
- if msignature != null and param_names.length != param_types.length and param_names.length == msignature.arity and param_types.length == 0 then
- # Parameters are untyped, thus inherit them
- param_types = new Array[MType]
- for mparameter in msignature.mparameters do
- param_types.add(mparameter.mtype)
- end
- vararg_rank = msignature.vararg_rank
- end
- if msignature != null and ret_type == null then
- ret_type = msignature.return_mtype
- end
-
- if param_names.length != param_types.length then
- # Some parameters are typed, other parameters are not typed.
- modelbuilder.error(nsig.n_params[param_types.length], "Error: Untyped parameter `{param_names[param_types.length]}'.")
- return
- end
-
- var mparameters = new Array[MParameter]
- for i in [0..param_names.length[ do
- var mparameter = new MParameter(param_names[i], param_types[i], i == vararg_rank)
- mparameters.add(mparameter)
- end
-
- msignature = new MSignature(mparameters, ret_type)
- mpropdef.msignature = msignature
-
- if nsig != null then
- for nclosure in nsig.n_closure_decls do
- var clos_signature = nclosure.n_signature.build_signature(modelbuilder, nclassdef)
- if clos_signature == null then return
- var mparameter = new MParameter(nclosure.n_id.text, clos_signature, false)
- msignature.mclosures.add(mparameter)
- end
- end
-
- end
-
- redef fun check_signature(modelbuilder, nclassdef)
- do
- var mpropdef = self.mpropdef
- if mpropdef == null then return # Error thus skiped
- var mmodule = mpropdef.mclassdef.mmodule
- var nsig = self.n_signature
- var mysignature = self.mpropdef.msignature
- if mysignature == null then return # Error thus skiped
-
- # Lookup for signature in the precursor
- # FIXME all precursors should be considered
- if not mpropdef.is_intro then
- var msignature = mpropdef.mproperty.intro.msignature
- if msignature == null then return
-
- var precursor_ret_type = msignature.return_mtype
- var ret_type = mysignature.return_mtype
- if ret_type != null and precursor_ret_type == null then
- modelbuilder.error(nsig.n_type.as(not null), "Redef Error: {mpropdef.mproperty} is a procedure, not a function.")
- return
- end
-
- if mysignature.arity > 0 then
- # Check parameters types
- for i in [0..mysignature.arity[ do
- var myt = mysignature.mparameters[i].mtype
- var prt = msignature.mparameters[i].mtype
- if not myt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, prt) and
- not prt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, myt) then
- modelbuilder.error(nsig.n_params[i], "Redef Error: Wrong type for parameter `{mysignature.mparameters[i].name}'. found {myt}, expected {prt}.")
- end
- end
- end
- if precursor_ret_type != null then
- if ret_type == null then
- # Inherit the return type
- ret_type = precursor_ret_type
- else if not ret_type.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, precursor_ret_type) then
- modelbuilder.error(nsig.n_type.as(not null), "Redef Error: Wrong return type. found {ret_type}, expected {precursor_ret_type}.")
- end
- end
- end
- end
-end
-
-redef class AAttrPropdef
- # The associated MAttributeDef once build by a `ModelBuilder'
- var mpropdef: nullable MAttributeDef
- # The associated getter (read accessor) if any
- var mreadpropdef: nullable MMethodDef
- # The associated setter (write accessor) if any
- var mwritepropdef: nullable MMethodDef
- redef fun build_property(modelbuilder, nclassdef)
- do
- var mclassdef = nclassdef.mclassdef.as(not null)
- var mclass = mclassdef.mclass
-
- var name: String
- if self.n_id != null then
- name = self.n_id.text
- else
- name = self.n_id2.text
- end
-
- if mclass.kind == interface_kind or mclassdef.mclass.kind == enum_kind then
- modelbuilder.error(self, "Error: Attempt to define attribute {name} in the interface {mclass}.")
- else if mclass.kind == enum_kind then
- modelbuilder.error(self, "Error: Attempt to define attribute {name} in the enum class {mclass}.")
- else if mclass.kind == extern_kind then
- modelbuilder.error(self, "Error: Attempt to define attribute {name} in the extern class {mclass}.")
- end
-
- var nid = self.n_id
- if nid != null then
- # Old attribute style
- var mprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, name)
- if mprop == null then
- var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
- mprop = new MAttribute(mclassdef, name, mvisibility)
- if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, false, mprop) then return
- else
- assert mprop isa MAttribute
- check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mprop)
- if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, true, mprop) then return
- end
- nclassdef.mprop2npropdef[mprop] = self
-
- var mpropdef = new MAttributeDef(mclassdef, mprop, self.location)
- self.mpropdef = mpropdef
- modelbuilder.mpropdef2npropdef[mpropdef] = self
-
- var nreadable = self.n_readable
- if nreadable != null then
- var readname = name.substring_from(1)
- var mreadprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, readname).as(nullable MMethod)
- if mreadprop == null then
- var mvisibility = new_property_visibility(modelbuilder, nclassdef, nreadable.n_visibility)
- mreadprop = new MMethod(mclassdef, readname, mvisibility)
- if not self.check_redef_keyword(modelbuilder, nclassdef, nreadable.n_kwredef, false, mreadprop) then return
- else
- if not self.check_redef_keyword(modelbuilder, nclassdef, nreadable.n_kwredef, true, mreadprop) then return
- check_redef_property_visibility(modelbuilder, nclassdef, nreadable.n_visibility, mreadprop)
- end
- nclassdef.mprop2npropdef[mreadprop] = self
-
- var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
- self.mreadpropdef = mreadpropdef
- modelbuilder.mpropdef2npropdef[mreadpropdef] = self
- end
-
- var nwritable = self.n_writable
- if nwritable != null then
- var writename = name.substring_from(1) + "="
- var mwriteprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, writename).as(nullable MMethod)
- if mwriteprop == null then
- var mvisibility = new_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility)
- mwriteprop = new MMethod(mclassdef, writename, mvisibility)
- if not self.check_redef_keyword(modelbuilder, nclassdef, nwritable.n_kwredef, false, mwriteprop) then return
- else
- if not self.check_redef_keyword(modelbuilder, nclassdef, nwritable.n_kwredef, true, mwriteprop) then return
- check_redef_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility, mwriteprop)
- end
- nclassdef.mprop2npropdef[mwriteprop] = self
-
- var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
- self.mwritepropdef = mwritepropdef
- modelbuilder.mpropdef2npropdef[mwritepropdef] = self
- end
- else
- # New attribute style
- var nid2 = self.n_id2.as(not null)
- var mprop = new MAttribute(mclassdef, "@" + name, none_visibility)
- var mpropdef = new MAttributeDef(mclassdef, mprop, self.location)
- self.mpropdef = mpropdef
- modelbuilder.mpropdef2npropdef[mpropdef] = self
-
- var readname = name
- var mreadprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, readname).as(nullable MMethod)
- if mreadprop == null then
- var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
- mreadprop = new MMethod(mclassdef, readname, mvisibility)
- if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, false, mreadprop) then return
- else
- if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, true, mreadprop) then return
- check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mreadprop)
- end
- nclassdef.mprop2npropdef[mreadprop] = self
-
- var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
- self.mreadpropdef = mreadpropdef
- modelbuilder.mpropdef2npropdef[mreadpropdef] = self
-
- var writename = name + "="
- var nwritable = self.n_writable
- var mwriteprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, writename).as(nullable MMethod)
- var nwkwredef: nullable Token = null
- if nwritable != null then nwkwredef = nwritable.n_kwredef
- if mwriteprop == null then
- var mvisibility
- if nwritable != null then
- mvisibility = new_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility)
- else
- mvisibility = private_visibility
- end
- mwriteprop = new MMethod(mclassdef, writename, mvisibility)
- if not self.check_redef_keyword(modelbuilder, nclassdef, nwkwredef, false, mwriteprop) then return
- else
- if not self.check_redef_keyword(modelbuilder, nclassdef, nwkwredef, true, mwriteprop) then return
- if nwritable != null then
- check_redef_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility, mwriteprop)
- end
- end
- nclassdef.mprop2npropdef[mwriteprop] = self
-
- var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
- self.mwritepropdef = mwritepropdef
- modelbuilder.mpropdef2npropdef[mwritepropdef] = self
- end
- end
-
- redef fun build_signature(modelbuilder, nclassdef)
- do
- var mpropdef = self.mpropdef
- if mpropdef == null then return # Error thus skiped
- var mmodule = mpropdef.mclassdef.mmodule
- var mtype: nullable MType = null
-
- var ntype = self.n_type
- if ntype != null then
- mtype = modelbuilder.resolve_mtype(nclassdef, ntype)
- if mtype == null then return
- end
-
- if mtype == null then
- var nexpr = self.n_expr
- if nexpr != null then
- if nexpr isa ANewExpr then
- mtype = modelbuilder.resolve_mtype(nclassdef, nexpr.n_type)
- else if nexpr isa AIntExpr then
- var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Int")
- if cla != null then mtype = cla.mclass_type
- else if nexpr isa AFloatExpr then
- var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Float")
- if cla != null then mtype = cla.mclass_type
- else if nexpr isa ACharExpr then
- var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Char")
- if cla != null then mtype = cla.mclass_type
- else if nexpr isa ABoolExpr then
- var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Bool")
- if cla != null then mtype = cla.mclass_type
- else if nexpr isa ASuperstringExpr then
- var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "String")
- if cla != null then mtype = cla.mclass_type
- else if nexpr isa AStringFormExpr then
- var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "String")
- if cla != null then mtype = cla.mclass_type
- else
- modelbuilder.error(self, "Error: Untyped attribute {mpropdef}. Implicit typing allowed only for literals and new.")
- end
-
- else
- modelbuilder.error(self, "Error: Untyped attribute {mpropdef}")
- end
- end
-
- if mtype == null then return
-
- mpropdef.static_mtype = mtype
-
- var mreadpropdef = self.mreadpropdef
- if mreadpropdef != null then
- var msignature = new MSignature(new Array[MParameter], mtype)
- mreadpropdef.msignature = msignature
- end
-
- var msritepropdef = self.mwritepropdef
- if mwritepropdef != null then
- var name: String
- if n_id != null then
- name = n_id.text.substring_from(1)
- else
- name = n_id2.text
- end
- var mparameter = new MParameter(name, mtype, false)
- var msignature = new MSignature([mparameter], null)
- mwritepropdef.msignature = msignature
- end
- end
-
- redef fun check_signature(modelbuilder, nclassdef)
- do
- var mpropdef = self.mpropdef
- if mpropdef == null then return # Error thus skiped
- var mmodule = mpropdef.mclassdef.mmodule
- var ntype = self.n_type
- var mtype = self.mpropdef.static_mtype
- if mtype == null then return # Error thus skiped
-
- # Lookup for signature in the precursor
- # FIXME all precursors should be considered
- if not mpropdef.is_intro then
- var precursor_type = mpropdef.mproperty.intro.static_mtype
- if precursor_type == null then return
-
- if mtype != precursor_type then
- modelbuilder.error(ntype.as(not null), "Redef Error: Wrong static type. found {mtype}, expected {precursor_type}.")
- return
- end
- end
-
- # Check getter and setter
- var meth = self.mreadpropdef
- if meth != null then self.check_method_signature(modelbuilder, nclassdef, meth)
- meth = self.mwritepropdef
- if meth != null then self.check_method_signature(modelbuilder, nclassdef, meth)
- end
-
- private fun check_method_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef, mpropdef: MMethodDef)
- do
- var mmodule = mpropdef.mclassdef.mmodule
- var nsig = self.n_type
- var mysignature = mpropdef.msignature
- if mysignature == null then return # Error thus skiped
-
- # Lookup for signature in the precursor
- # FIXME all precursors should be considered
- if not mpropdef.is_intro then
- var msignature = mpropdef.mproperty.intro.msignature
- if msignature == null then return
-
- if mysignature.arity != msignature.arity then
- var node: ANode
- if nsig != null then node = nsig else node = self
- modelbuilder.error(node, "Redef Error: {mysignature.arity} parameters found, {msignature.arity} expected. Signature is {mpropdef}{msignature}")
- return
- end
- var precursor_ret_type = msignature.return_mtype
- var ret_type = mysignature.return_mtype
- if ret_type != null and precursor_ret_type == null then
- var node: ANode
- if nsig != null then node = nsig else node = self
- modelbuilder.error(node, "Redef Error: {mpropdef.mproperty} is a procedure, not a function.")
- return
- end
-
- if mysignature.arity > 0 then
- # Check parameters types
- for i in [0..mysignature.arity[ do
- var myt = mysignature.mparameters[i].mtype
- var prt = msignature.mparameters[i].mtype
- if not myt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, prt) and
- not prt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, myt) then
- var node: ANode
- if nsig != null then node = nsig else node = self
- modelbuilder.error(node, "Redef Error: Wrong type for parameter `{mysignature.mparameters[i].name}'. found {myt}, expected {prt}.")
- end
- end
- end
- if precursor_ret_type != null then
- if ret_type == null then
- # Inherit the return type
- ret_type = precursor_ret_type
- else if not ret_type.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, precursor_ret_type) then
- var node: ANode
- if nsig != null then node = nsig else node = self
- modelbuilder.error(node, "Redef Error: Wrong return type. found {ret_type}, expected {precursor_ret_type}.")
- end
- end
- end
- end
-end
-
-redef class ATypePropdef
- # The associated MVirtualTypeDef once build by a `ModelBuilder'
- var mpropdef: nullable MVirtualTypeDef
- redef fun build_property(modelbuilder, nclassdef)
- do
- var mclassdef = nclassdef.mclassdef.as(not null)
- var name = self.n_id.text
- var mprop = modelbuilder.try_get_mproperty_by_name(self.n_id, mclassdef, name)
- if mprop == null then
- var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
- mprop = new MVirtualTypeProp(mclassdef, name, mvisibility)
- if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, false, mprop) then return
- else
- if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, true, mprop) then return
- assert mprop isa MVirtualTypeProp
- check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mprop)
- end
- nclassdef.mprop2npropdef[mprop] = self
-
- var mpropdef = new MVirtualTypeDef(mclassdef, mprop, self.location)
- self.mpropdef = mpropdef
- end
-
- redef fun build_signature(modelbuilder, nclassdef)
- do
- var mpropdef = self.mpropdef
- if mpropdef == null then return # Error thus skiped
- var mmodule = mpropdef.mclassdef.mmodule
- var mtype: nullable MType = null
-
- var ntype = self.n_type
- mtype = modelbuilder.resolve_mtype(nclassdef, ntype)
- if mtype == null then return
-
- mpropdef.bound = mtype
- # print "{mpropdef}: {mtype}"
- end
-
- redef fun check_signature(modelbuilder, nclassdef)
- do
- var bound = self.mpropdef.bound
-
- # Fast case: the bound is not a formal type
- if not bound isa MVirtualType then return
-
- var mmodule = nclassdef.mclassdef.mmodule
- var anchor = nclassdef.mclassdef.bound_mtype
-
- # Slow case: progress on each resolution until: (i) we loop, or (ii) we found a non formal type
- var seen = [self.mpropdef.mproperty.mvirtualtype]
- loop
- if seen.has(bound) then
- seen.add(bound)
- modelbuilder.error(self, "Error: circularity of virtual type definition: {seen.join(" -> ")}")
- return
- end
- seen.add(bound)
- var next = bound.lookup_bound(mmodule, anchor)
- if not next isa MVirtualType then return
- bound = next
- end
- end
-end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Analysis and verification of class definitions to instantiate model element
+module modelize_class
+
+import modelbuilder
+
+redef class ToolContext
+ var modelize_class_phase: Phase = new ModelizeClassPhase(self, null)
+end
+
+private class ModelizeClassPhase
+ super Phase
+
+ redef fun process_nmodule(nmodule)
+ do
+ toolcontext.modelbuilder.build_classes(nmodule)
+ end
+end
+
+redef class ModelBuilder
+ # Visit the AST and create the MClass objects
+ private fun build_a_mclass(nmodule: AModule, nclassdef: AClassdef)
+ do
+ var mmodule = nmodule.mmodule.as(not null)
+
+ var name: String
+ var nkind: nullable AClasskind
+ var mkind: MClassKind
+ var nvisibility: nullable AVisibility
+ var mvisibility: nullable MVisibility
+ var arity = 0
+ if nclassdef isa AStdClassdef then
+ name = nclassdef.n_id.text
+ nkind = nclassdef.n_classkind
+ mkind = nkind.mkind
+ nvisibility = nclassdef.n_visibility
+ mvisibility = nvisibility.mvisibility
+ arity = nclassdef.n_formaldefs.length
+ else if nclassdef isa ATopClassdef then
+ name = "Object"
+ nkind = null
+ mkind = interface_kind
+ nvisibility = null
+ mvisibility = public_visibility
+ else if nclassdef isa AMainClassdef then
+ name = "Sys"
+ nkind = null
+ mkind = concrete_kind
+ nvisibility = null
+ mvisibility = public_visibility
+ else
+ abort
+ end
+
+ var mclass = try_get_mclass_by_name(nclassdef, mmodule, name)
+ if mclass == null then
+ mclass = new MClass(mmodule, name, arity, mkind, mvisibility)
+ #print "new class {mclass}"
+ else if nclassdef isa AStdClassdef and nmodule.mclass2nclassdef.has_key(mclass) then
+ error(nclassdef, "Error: A class {name} is already defined at line {nmodule.mclass2nclassdef[mclass].location.line_start}.")
+ return
+ else if nclassdef isa AStdClassdef and nclassdef.n_kwredef == null then
+ error(nclassdef, "Redef error: {name} is an imported class. Add the redef keyword to refine it.")
+ return
+ else if mclass.arity != arity then
+ error(nclassdef, "Redef error: Formal parameter arity missmatch; got {arity}, expected {mclass.arity}.")
+ return
+ else if nkind != null and mkind != concrete_kind and mclass.kind != mkind then
+ error(nkind, "Error: refinement changed the kind from a {mclass.kind} to a {mkind}")
+ else if nvisibility != null and mvisibility != public_visibility and mclass.visibility != mvisibility then
+ error(nvisibility, "Error: refinement changed the visibility from a {mclass.visibility} to a {mvisibility}")
+ end
+ nclassdef.mclass = mclass
+ nmodule.mclass2nclassdef[mclass] = nclassdef
+ end
+
+ # Visit the AST and create the MClassDef objects
+ private fun build_a_mclassdef(nmodule: AModule, nclassdef: AClassdef)
+ do
+ var mmodule = nmodule.mmodule.as(not null)
+ var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
+ var mclass = nclassdef.mclass
+ if mclass == null then return # Skip error
+ #var mclassdef = nclassdef.mclassdef.as(not null)
+
+ var names = new Array[String]
+ var bounds = new Array[MType]
+ if nclassdef isa AStdClassdef and mclass.arity > 0 then
+ # Collect formal parameter names
+ for i in [0..mclass.arity[ do
+ var nfd = nclassdef.n_formaldefs[i]
+ var ptname = nfd.n_id.text
+ if names.has(ptname) then
+ error(nfd, "Error: A formal parameter type `{ptname}' already exists")
+ return
+ end
+ names.add(ptname)
+ end
+
+ # Revolve bound for formal parameter names
+ for i in [0..mclass.arity[ do
+ var nfd = nclassdef.n_formaldefs[i]
+ var nfdt = nfd.n_type
+ if nfdt != null then
+ var bound = resolve_mtype_unchecked(nclassdef, nfdt, false)
+ if bound == null then return # Forward error
+ if bound.need_anchor then
+ # No F-bounds!
+ error(nfd, "Error: Formal parameter type `{names[i]}' bounded with a formal parameter type")
+ else
+ bounds.add(bound)
+ end
+ else if mclass.mclassdefs.is_empty then
+ # No bound, then implicitely bound by nullable Object
+ bounds.add(objectclass.mclass_type.as_nullable)
+ else
+ # Inherit the bound
+ bounds.add(mclass.intro.bound_mtype.arguments[i])
+ end
+ end
+ end
+
+ var bound_mtype = mclass.get_mtype(bounds)
+ var mclassdef = new MClassDef(mmodule, bound_mtype, nclassdef.location, names)
+ nclassdef.mclassdef = mclassdef
+ self.mclassdef2nclassdef[mclassdef] = nclassdef
+
+ if mclassdef.is_intro then
+ self.toolcontext.info("{mclassdef} introduces new {mclass.kind} {mclass.full_name}", 3)
+ else
+ self.toolcontext.info("{mclassdef} refine {mclass.kind} {mclass.full_name}", 3)
+ end
+ end
+
+ # Visit the AST and set the super-types of the MClassdef objects
+ private fun collect_a_mclassdef_inheritance(nmodule: AModule, nclassdef: AClassdef)
+ do
+ var mmodule = nmodule.mmodule.as(not null)
+ var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
+ var mclass = nclassdef.mclass.as(not null)
+ var mclassdef = nclassdef.mclassdef.as(not null)
+
+ var specobject = true
+ var supertypes = new Array[MClassType]
+ if nclassdef isa AStdClassdef then
+ for nsc in nclassdef.n_superclasses do
+ specobject = false
+ var ntype = nsc.n_type
+ var mtype = resolve_mtype_unchecked(nclassdef, ntype, false)
+ if mtype == null then continue # Skip because of error
+ if not mtype isa MClassType then
+ error(ntype, "Error: supertypes cannot be a formal type")
+ return
+ end
+ supertypes.add mtype
+ #print "new super : {mclass} < {mtype}"
+ end
+ end
+ if specobject and mclass.name != "Object" and objectclass != null and mclassdef.is_intro then
+ supertypes.add objectclass.mclass_type
+ end
+
+ mclassdef.set_supertypes(supertypes)
+ if not supertypes.is_empty then self.toolcontext.info("{mclassdef} new super-types: {supertypes.join(", ")}", 3)
+ end
+
+ # Check the validity of the specialization heirarchy
+ private fun check_supertypes(nmodule: AModule, nclassdef: AClassdef)
+ do
+ var mmodule = nmodule.mmodule.as(not null)
+ var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
+ var mclass = nclassdef.mclass.as(not null)
+ var mclassdef = nclassdef.mclassdef.as(not null)
+
+ for s in mclassdef.supertypes do
+ if s.is_subtype(mmodule, mclassdef.bound_mtype, mclassdef.bound_mtype) then
+ error(nclassdef, "Error: Inheritance loop for class {mclass} with type {s}")
+ end
+ end
+ end
+
+ # Build the classes of the module `nmodule'.
+ # REQUIRE: classes of imported modules are already build. (let `phase' do the job)
+ private fun build_classes(nmodule: AModule)
+ do
+ # Force building recursively
+ if nmodule.build_classes_is_done then return
+ nmodule.build_classes_is_done = true
+ var mmodule = nmodule.mmodule.as(not null)
+ for imp in mmodule.in_importation.direct_greaters do
+
+ build_classes(mmodule2nmodule[imp])
+ end
+
+ # Create all classes
+ for nclassdef in nmodule.n_classdefs do
+ self.build_a_mclass(nmodule, nclassdef)
+ end
+
+ # Create all classdefs
+ for nclassdef in nmodule.n_classdefs do
+ self.build_a_mclassdef(nmodule, nclassdef)
+ end
+
+ for nclassdef in nmodule.n_classdefs do
+ if nclassdef.mclassdef == null then return # forward error
+ end
+
+ # Create inheritance on all classdefs
+ for nclassdef in nmodule.n_classdefs do
+ self.collect_a_mclassdef_inheritance(nmodule, nclassdef)
+ end
+
+ # Create the mclassdef hierarchy
+ for nclassdef in nmodule.n_classdefs do
+ var mclassdef = nclassdef.mclassdef.as(not null)
+ mclassdef.add_in_hierarchy
+ end
+
+ # Check inheritance
+ for nclassdef in nmodule.n_classdefs do
+ self.check_supertypes(nmodule, nclassdef)
+ end
+
+ # Check unchecked ntypes
+ for nclassdef in nmodule.n_classdefs do
+ if nclassdef isa AStdClassdef then
+ # check bound of formal parameter
+ for nfd in nclassdef.n_formaldefs do
+ var nfdt = nfd.n_type
+ if nfdt != null and nfdt.mtype != null then
+ var bound = resolve_mtype(nclassdef, nfdt)
+ if bound == null then return # Forward error
+ end
+ end
+ # check declared super types
+ for nsc in nclassdef.n_superclasses do
+ var ntype = nsc.n_type
+ if ntype.mtype != null then
+ var mtype = resolve_mtype(nclassdef, ntype)
+ if mtype == null then return # Forward error
+ end
+ end
+ end
+
+ end
+
+ # TODO: Check that the super-class is not intrusive
+
+ # TODO: Check that the super-class is not already known (by transitivity)
+ end
+
+ # Register the nclassdef associated to each mclassdef
+ # FIXME: why not refine the MClassDef class with a nullable attribute?
+ var mclassdef2nclassdef: HashMap[MClassDef, AClassdef] = new HashMap[MClassDef, AClassdef]
+
+ # Return the static type associated to the node `ntype'.
+ # `classdef' is the context where the call is made (used to understand formal types)
+ # The mmodule used as context is `nclassdef.mmodule'
+ # In case of problem, an error is displayed on `ntype' and null is returned.
+ # FIXME: the name "resolve_mtype" is awful
+ fun resolve_mtype_unchecked(nclassdef: AClassdef, ntype: AType, with_virtual: Bool): nullable MType
+ do
+ var name = ntype.n_id.text
+ var mclassdef = nclassdef.mclassdef
+ var mmodule = nclassdef.parent.as(AModule).mmodule.as(not null)
+ var res: MType
+
+ # Check virtual type
+ if mclassdef != null and with_virtual then
+ var prop = try_get_mproperty_by_name(ntype, mclassdef, name).as(nullable MVirtualTypeProp)
+ if prop != null then
+ if not ntype.n_types.is_empty then
+ error(ntype, "Type error: formal type {name} cannot have formal parameters.")
+ end
+ res = prop.mvirtualtype
+ if ntype.n_kwnullable != null then res = res.as_nullable
+ ntype.mtype = res
+ return res
+ end
+ end
+
+ # Check parameter type
+ if mclassdef != null and mclassdef.parameter_names.has(name) then
+ if not ntype.n_types.is_empty then
+ error(ntype, "Type error: formal type {name} cannot have formal parameters.")
+ end
+ for i in [0..mclassdef.parameter_names.length[ do
+ if mclassdef.parameter_names[i] == name then
+ res = mclassdef.mclass.mclass_type.arguments[i]
+ if ntype.n_kwnullable != null then res = res.as_nullable
+ ntype.mtype = res
+ return res
+ end
+ end
+ abort
+ end
+
+ # Check class
+ var mclass = try_get_mclass_by_name(ntype, mmodule, name)
+ if mclass != null then
+ var arity = ntype.n_types.length
+ if arity != mclass.arity then
+ if arity == 0 then
+ error(ntype, "Type error: '{name}' is a generic class.")
+ else if mclass.arity == 0 then
+ error(ntype, "Type error: '{name}' is not a generic class.")
+ else
+ error(ntype, "Type error: '{name}' has {mclass.arity} parameters ({arity} are provided).")
+ end
+ return null
+ end
+ if arity == 0 then
+ res = mclass.mclass_type
+ if ntype.n_kwnullable != null then res = res.as_nullable
+ ntype.mtype = res
+ return res
+ else
+ var mtypes = new Array[MType]
+ for nt in ntype.n_types do
+ var mt = resolve_mtype_unchecked(nclassdef, nt, with_virtual)
+ if mt == null then return null # Forward error
+ mtypes.add(mt)
+ end
+ res = mclass.get_mtype(mtypes)
+ if ntype.n_kwnullable != null then res = res.as_nullable
+ ntype.mtype = res
+ return res
+ end
+ end
+
+ # If everything fail, then give up :(
+ error(ntype, "Type error: class {name} not found in module {mmodule}.")
+ return null
+ end
+
+ # Return the static type associated to the node `ntype'.
+ # `classdef' is the context where the call is made (used to understand formal types)
+ # The mmodule used as context is `nclassdef.mmodule'
+ # In case of problem, an error is displayed on `ntype' and null is returned.
+ # FIXME: the name "resolve_mtype" is awful
+ fun resolve_mtype(nclassdef: AClassdef, ntype: AType): nullable MType
+ do
+ var mtype = ntype.mtype
+ if mtype == null then mtype = resolve_mtype_unchecked(nclassdef, ntype, true)
+ if mtype == null then return null # Forward error
+
+ if ntype.checked_mtype then return mtype
+ if mtype isa MGenericType then
+ var mmodule = nclassdef.parent.as(AModule).mmodule.as(not null)
+ var mclassdef = nclassdef.mclassdef
+ var mclass = mtype.mclass
+ for i in [0..mclass.arity[ do
+ var bound = mclass.intro.bound_mtype.arguments[i]
+ var nt = ntype.n_types[i]
+ var mt = resolve_mtype(nclassdef, nt)
+ if mt == null then return null # forward error
+ if not mt.is_subtype(mmodule, mclassdef.bound_mtype, bound) then
+ error(nt, "Type error: expected {bound}, got {mt}")
+ return null
+ end
+ end
+ end
+ ntype.checked_mtype = true
+ return mtype
+ end
+
+end
+
+redef class AModule
+ # Flag that indicate if the class building is already completed
+ var build_classes_is_done: Bool = false
+ # What is the AClassdef associated to a MClass?
+ # Used to check multiple definition of a class.
+ var mclass2nclassdef: Map[MClass, AClassdef] = new HashMap[MClass, AClassdef]
+end
+
+redef class AClassdef
+ # The associated MClass once build by a `ModelBuilder'
+ var mclass: nullable MClass
+ # The associated MClassDef once build by a `ModelBuilder'
+ var mclassdef: nullable MClassDef
+end
+
+redef class AClasskind
+ # The class kind associated with the AST node class
+ private fun mkind: MClassKind is abstract
+end
+redef class AConcreteClasskind
+ redef fun mkind do return concrete_kind
+end
+redef class AAbstractClasskind
+ redef fun mkind do return abstract_kind
+end
+redef class AInterfaceClasskind
+ redef fun mkind do return interface_kind
+end
+redef class AEnumClasskind
+ redef fun mkind do return enum_kind
+end
+redef class AExternClasskind
+ redef fun mkind do return extern_kind
+end
+
+redef class AType
+ # The mtype associated to the node
+ var mtype: nullable MType = null
+
+ # Is the mtype a valid one?
+ var checked_mtype: Bool = false
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Analysis and verification of property definitions to instantiate model element
+module modelize_property
+
+import modelize_class
+
+redef class ToolContext
+ var modelize_property_phase: Phase = new ModelizePropertyPhase(self, [modelize_class_phase])
+end
+
+private class ModelizePropertyPhase
+ super Phase
+ redef fun process_nmodule(nmodule)
+ do
+ for nclassdef in nmodule.n_classdefs do
+ toolcontext.modelbuilder.build_properties(nclassdef)
+ end
+ end
+end
+
+redef class ModelBuilder
+ # Register the npropdef associated to each mpropdef
+ # FIXME: why not refine the MPropDef class with a nullable attribute?
+ var mpropdef2npropdef: HashMap[MPropDef, APropdef] = new HashMap[MPropDef, APropdef]
+
+ # Build the properties of `nclassdef'.
+ # REQUIRE: all superclasses are built.
+ private fun build_properties(nclassdef: AClassdef)
+ do
+ # Force building recursively
+ if nclassdef.build_properties_is_done then return
+ nclassdef.build_properties_is_done = true
+ var mclassdef = nclassdef.mclassdef.as(not null)
+ if mclassdef.in_hierarchy == null then return # Skip error
+ for superclassdef in mclassdef.in_hierarchy.direct_greaters do
+ build_properties(mclassdef2nclassdef[superclassdef])
+ end
+
+ for npropdef in nclassdef.n_propdefs do
+ npropdef.build_property(self, nclassdef)
+ end
+ for npropdef in nclassdef.n_propdefs do
+ npropdef.build_signature(self, nclassdef)
+ end
+ for npropdef in nclassdef.n_propdefs do
+ npropdef.check_signature(self, nclassdef)
+ end
+ process_default_constructors(nclassdef)
+ end
+
+ # Introduce or inherit default constructor
+ # This is the last part of `build_properties'.
+ private fun process_default_constructors(nclassdef: AClassdef)
+ do
+ var mclassdef = nclassdef.mclassdef.as(not null)
+
+ # Are we a refinement
+ if not mclassdef.is_intro then return
+
+ # Is the class forbid constructors?
+ if not mclassdef.mclass.kind.need_init then return
+
+ # Is there already a constructor defined?
+ for mpropdef in mclassdef.mpropdefs do
+ if not mpropdef isa MMethodDef then continue
+ if mpropdef.mproperty.is_init then return
+ end
+
+ if not nclassdef isa AStdClassdef then return
+
+ var mmodule = nclassdef.mclassdef.mmodule
+ # Do we inherit for a constructor?
+ var combine = new Array[MMethod]
+ var inhc: nullable MClass = null
+ for st in mclassdef.supertypes do
+ var c = st.mclass
+ if not c.kind.need_init then continue
+ st = st.anchor_to(mmodule, nclassdef.mclassdef.bound_mtype)
+ var candidate = self.try_get_mproperty_by_name2(nclassdef, mmodule, st, "init").as(nullable MMethod)
+ if candidate != null and candidate.intro.msignature.arity == 0 then
+ combine.add(candidate)
+ continue
+ end
+ var inhc2 = c.inherit_init_from
+ if inhc2 == null then inhc2 = c
+ if inhc2 == inhc then continue
+ if inhc != null then
+ self.error(nclassdef, "Error: Cannot provide a defaut constructor: conflict for {inhc} and {c}")
+ else
+ inhc = inhc2
+ end
+ end
+ if combine.is_empty and inhc != null then
+ # TODO: actively inherit the consturctor
+ self.toolcontext.info("{mclassdef} inherits all constructors from {inhc}", 3)
+ mclassdef.mclass.inherit_init_from = inhc
+ return
+ end
+ if not combine.is_empty and inhc != null then
+ self.error(nclassdef, "Error: Cannot provide a defaut constructor: conflict for {combine.join(", ")} and {inhc}")
+ return
+ end
+
+ if not combine.is_empty then
+ nclassdef.super_inits = combine
+ var mprop = new MMethod(mclassdef, "init", mclassdef.mclass.visibility)
+ var mpropdef = new MMethodDef(mclassdef, mprop, nclassdef.location)
+ var mparameters = new Array[MParameter]
+ var msignature = new MSignature(mparameters, null)
+ mpropdef.msignature = msignature
+ mprop.is_init = true
+ nclassdef.mfree_init = mpropdef
+ self.toolcontext.info("{mclassdef} gets a free empty constructor {mpropdef}{msignature}", 3)
+ return
+ end
+
+ # Collect undefined attributes
+ var mparameters = new Array[MParameter]
+ for npropdef in nclassdef.n_propdefs do
+ if npropdef isa AAttrPropdef and npropdef.n_expr == null then
+ if npropdef.mpropdef == null then return # Skip broken attribute
+ var paramname = npropdef.mpropdef.mproperty.name.substring_from(1)
+ var ret_type = npropdef.mpropdef.static_mtype
+ if ret_type == null then return
+ var mparameter = new MParameter(paramname, ret_type, false)
+ mparameters.add(mparameter)
+ end
+ end
+
+ var mprop = new MMethod(mclassdef, "init", mclassdef.mclass.visibility)
+ var mpropdef = new MMethodDef(mclassdef, mprop, nclassdef.location)
+ var msignature = new MSignature(mparameters, null)
+ mpropdef.msignature = msignature
+ mprop.is_init = true
+ nclassdef.mfree_init = mpropdef
+ self.toolcontext.info("{mclassdef} gets a free constructor for attributes {mpropdef}{msignature}", 3)
+ end
+end
+
+redef class MClass
+ # The class whose self inherit all the constructors.
+ # FIXME: this is needed to implement the crazy constructor mixin thing of the of old compiler. We need to think what to do with since this cannot stay in the modelbuilder
+ var inherit_init_from: nullable MClass = null
+end
+
+redef class AClassdef
+ var build_properties_is_done: Bool = false
+ # The list of super-constructor to call at the start of the free constructor
+ # FIXME: this is needed to implement the crazy constructor thing of the of old compiler. We need to think what to do with since this cannot stay in the modelbuilder
+ var super_inits: nullable Collection[MMethod] = null
+
+ # The free init (implicitely constructed by the class if required)
+ var mfree_init: nullable MMethodDef = null
+
+ # What is the APropdef associated to a MProperty?
+ # Used to check multiple definition of a property.
+ var mprop2npropdef: Map[MProperty, APropdef] = new HashMap[MProperty, APropdef]
+end
+
+redef class Prod
+ # Join the text of all tokens
+ # Used to get the 'real name' of method definitions.
+ fun collect_text: String
+ do
+ var v = new TextCollectorVisitor
+ v.enter_visit(self)
+ assert v.text != ""
+ return v.text
+ end
+end
+
+private class TextCollectorVisitor
+ super Visitor
+ var text: String = ""
+ redef fun visit(n)
+ do
+ if n isa Token then text += n.text
+ n.visit_all(self)
+ end
+end
+
+redef class APropdef
+ # The associated main model entity
+ type MPROPDEF: MPropDef
+
+ # The associated propdef once build by a `ModelBuilder'
+ var mpropdef: nullable MPROPDEF writable
+
+ private fun build_property(modelbuilder: ModelBuilder, nclassdef: AClassdef)
+ do
+ end
+ private fun build_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef)
+ do
+ end
+ private fun check_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef)
+ do
+ end
+ private fun new_property_visibility(modelbuilder: ModelBuilder, nclassdef: AClassdef, nvisibility: nullable AVisibility): MVisibility
+ do
+ var mvisibility = public_visibility
+ if nvisibility != null then mvisibility = nvisibility.mvisibility
+ if nclassdef.mclassdef.mclass.visibility == private_visibility then
+ if mvisibility == protected_visibility then
+ assert nvisibility != null
+ modelbuilder.error(nvisibility, "Error: The only legal visibility for properties in a private class is private.")
+ else if mvisibility == private_visibility then
+ assert nvisibility != null
+ # Not yet
+ # modelbuilder.warning(nvisibility, "Warning: private is unrequired since the only legal visibility for properties in a private class is private.")
+ end
+ mvisibility = private_visibility
+ end
+ return mvisibility
+ end
+
+ private fun check_redef_property_visibility(modelbuilder: ModelBuilder, nclassdef: AClassdef, nvisibility: nullable AVisibility, mprop: MProperty)
+ do
+ if nvisibility == null then return
+ var mvisibility = nvisibility.mvisibility
+ if mvisibility != mprop.visibility and mvisibility != public_visibility then
+ modelbuilder.error(nvisibility, "Error: redefinition changed the visibility from a {mprop.visibility} to a {mvisibility}")
+ end
+ end
+
+ private fun check_redef_keyword(modelbuilder: ModelBuilder, nclassdef: AClassdef, kwredef: nullable Token, need_redef: Bool, mprop: MProperty): Bool
+ do
+ if nclassdef.mprop2npropdef.has_key(mprop) then
+ modelbuilder.error(self, "Error: A property {mprop} is already defined in class {nclassdef.mclassdef.mclass}.")
+ return false
+ end
+ if kwredef == null then
+ if need_redef then
+ modelbuilder.error(self, "Redef error: {nclassdef.mclassdef.mclass}::{mprop.name} is an inherited property. To redefine it, add the redef keyword.")
+ return false
+ end
+ else
+ if not need_redef then
+ modelbuilder.error(self, "Error: No property {nclassdef.mclassdef.mclass}::{mprop.name} is inherited. Remove the redef keyword to define a new property.")
+ return false
+ end
+ end
+ return true
+ end
+
+end
+
+redef class ASignature
+ # Is the model builder has correctly visited the signature
+ var is_visited = false
+ # Names of parameters from the AST
+ # REQUIRE: is_visited
+ var param_names = new Array[String]
+ # Types of parameters from the AST
+ # REQUIRE: is_visited
+ var param_types = new Array[MType]
+ # Rank of the vararg (of -1 if none)
+ # REQUIRE: is_visited
+ var vararg_rank: Int = -1
+ # Return type
+ var ret_type: nullable MType = null
+
+ # Visit and fill information about a signature
+ private fun visit_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef): Bool
+ do
+ var param_names = self.param_names
+ var param_types = self.param_types
+ for np in self.n_params do
+ param_names.add(np.n_id.text)
+ var ntype = np.n_type
+ if ntype != null then
+ var mtype = modelbuilder.resolve_mtype(nclassdef, ntype)
+ if mtype == null then return false # Skip error
+ for i in [0..param_names.length-param_types.length[ do
+ param_types.add(mtype)
+ end
+ if np.n_dotdotdot != null then
+ if self.vararg_rank != -1 then
+ modelbuilder.error(np, "Error: {param_names[self.vararg_rank]} is already a vararg")
+ return false
+ else
+ self.vararg_rank = param_names.length - 1
+ end
+ end
+ end
+ end
+ var ntype = self.n_type
+ if ntype != null then
+ self.ret_type = modelbuilder.resolve_mtype(nclassdef, ntype)
+ if self.ret_type == null then return false # Skip errir
+ end
+
+ for nclosure in self.n_closure_decls do
+ if not nclosure.n_signature.visit_signature(modelbuilder, nclassdef) then return false
+ end
+
+ self.is_visited = true
+ return true
+ end
+
+ # Build a visited signature
+ fun build_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef): nullable MSignature
+ do
+ if param_names.length != param_types.length then
+ # Some parameters are typed, other parameters are not typed.
+ modelbuilder.error(self.n_params[param_types.length], "Error: Untyped parameter `{param_names[param_types.length]}'.")
+ return null
+ end
+
+ var mparameters = new Array[MParameter]
+ for i in [0..param_names.length[ do
+ var mparameter = new MParameter(param_names[i], param_types[i], i == vararg_rank)
+ mparameters.add(mparameter)
+ end
+
+ var msignature = new MSignature(mparameters, ret_type)
+ return msignature
+ end
+end
+
+redef class AMethPropdef
+ redef type MPROPDEF: MMethodDef
+
+ # The associated super init if any
+ var super_init: nullable MMethod
+ redef fun build_property(modelbuilder, nclassdef)
+ do
+ var is_init = self isa AInitPropdef
+ var mclassdef = nclassdef.mclassdef.as(not null)
+ var name: String
+ var amethodid = self.n_methid
+ var name_node: ANode
+ if amethodid == null then
+ if self isa AMainMethPropdef then
+ name = "main"
+ name_node = self
+ else if self isa AConcreteInitPropdef then
+ name = "init"
+ name_node = self.n_kwinit
+ else if self isa AExternInitPropdef then
+ name = "init"
+ name_node = self.n_kwnew
+ else
+ abort
+ end
+ else if amethodid isa AIdMethid then
+ name = amethodid.n_id.text
+ name_node = amethodid
+ else
+ # operator, bracket or assign
+ name = amethodid.collect_text
+ name_node = amethodid
+
+ if name == "-" and self.n_signature.n_params.length == 0 then
+ name = "unary -"
+ end
+ end
+
+ var mprop: nullable MMethod = null
+ if not is_init or n_kwredef != null then mprop = modelbuilder.try_get_mproperty_by_name(name_node, mclassdef, name).as(nullable MMethod)
+ if mprop == null then
+ var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
+ mprop = new MMethod(mclassdef, name, mvisibility)
+ mprop.is_init = is_init
+ mprop.is_new = self isa AExternInitPropdef
+ if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, false, mprop) then return
+ else
+ if n_kwredef == null then
+ if self isa AMainMethPropdef then
+ # no warning
+ else
+ if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, true, mprop) then return
+ end
+ end
+ check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mprop)
+ end
+ nclassdef.mprop2npropdef[mprop] = self
+
+ var mpropdef = new MMethodDef(mclassdef, mprop, self.location)
+
+ self.mpropdef = mpropdef
+ modelbuilder.mpropdef2npropdef[mpropdef] = self
+ if mpropdef.is_intro then
+ modelbuilder.toolcontext.info("{mpropdef} introduces new method {mprop.full_name}", 3)
+ else
+ modelbuilder.toolcontext.info("{mpropdef} redefines method {mprop.full_name}", 3)
+ end
+ end
+
+ redef fun build_signature(modelbuilder, nclassdef)
+ do
+ var mpropdef = self.mpropdef
+ if mpropdef == null then return # Error thus skiped
+ var mmodule = mpropdef.mclassdef.mmodule
+ var nsig = self.n_signature
+
+ # Retrieve info from the signature AST
+ var param_names = new Array[String] # Names of parameters from the AST
+ var param_types = new Array[MType] # Types of parameters from the AST
+ var vararg_rank = -1
+ var ret_type: nullable MType = null # Return type from the AST
+ if nsig != null then
+ if not nsig.visit_signature(modelbuilder, nclassdef) then return
+ param_names = nsig.param_names
+ param_types = nsig.param_types
+ vararg_rank = nsig.vararg_rank
+ ret_type = nsig.ret_type
+ end
+
+ # Look for some signature to inherit
+ # FIXME: do not inherit from the intro, but from the most specific
+ var msignature: nullable MSignature = null
+ if not mpropdef.is_intro then
+ msignature = mpropdef.mproperty.intro.msignature
+ if msignature == null then return # Skip error
+
+ # Check inherited signature arity
+ if param_names.length != msignature.arity then
+ var node: ANode
+ if nsig != null then node = nsig else node = self
+ modelbuilder.error(node, "Redef error: {mpropdef} redefines {mpropdef.mproperty.intro} with {param_names.length} parameter(s), {msignature.arity} expected. Signature is {mpropdef}{msignature}")
+ return
+ end
+ else if mpropdef.mproperty.is_init then
+ # FIXME UGLY: inherit signature from a super-constructor
+ for msupertype in nclassdef.mclassdef.supertypes do
+ msupertype = msupertype.anchor_to(mmodule, nclassdef.mclassdef.bound_mtype)
+ var candidate = modelbuilder.try_get_mproperty_by_name2(self, mmodule, msupertype, mpropdef.mproperty.name)
+ if candidate != null then
+ if msignature == null then
+ msignature = candidate.intro.as(MMethodDef).msignature
+ end
+ end
+ end
+ end
+
+
+ # Inherit the signature
+ if msignature != null and param_names.length != param_types.length and param_names.length == msignature.arity and param_types.length == 0 then
+ # Parameters are untyped, thus inherit them
+ param_types = new Array[MType]
+ for mparameter in msignature.mparameters do
+ param_types.add(mparameter.mtype)
+ end
+ vararg_rank = msignature.vararg_rank
+ end
+ if msignature != null and ret_type == null then
+ ret_type = msignature.return_mtype
+ end
+
+ if param_names.length != param_types.length then
+ # Some parameters are typed, other parameters are not typed.
+ modelbuilder.error(nsig.n_params[param_types.length], "Error: Untyped parameter `{param_names[param_types.length]}'.")
+ return
+ end
+
+ var mparameters = new Array[MParameter]
+ for i in [0..param_names.length[ do
+ var mparameter = new MParameter(param_names[i], param_types[i], i == vararg_rank)
+ mparameters.add(mparameter)
+ end
+
+ msignature = new MSignature(mparameters, ret_type)
+ mpropdef.msignature = msignature
+
+ if nsig != null then
+ for nclosure in nsig.n_closure_decls do
+ var clos_signature = nclosure.n_signature.build_signature(modelbuilder, nclassdef)
+ if clos_signature == null then return
+ var mparameter = new MParameter(nclosure.n_id.text, clos_signature, false)
+ msignature.mclosures.add(mparameter)
+ end
+ end
+
+ end
+
+ redef fun check_signature(modelbuilder, nclassdef)
+ do
+ var mpropdef = self.mpropdef
+ if mpropdef == null then return # Error thus skiped
+ var mmodule = mpropdef.mclassdef.mmodule
+ var nsig = self.n_signature
+ var mysignature = self.mpropdef.msignature
+ if mysignature == null then return # Error thus skiped
+
+ # Lookup for signature in the precursor
+ # FIXME all precursors should be considered
+ if not mpropdef.is_intro then
+ var msignature = mpropdef.mproperty.intro.msignature
+ if msignature == null then return
+
+ var precursor_ret_type = msignature.return_mtype
+ var ret_type = mysignature.return_mtype
+ if ret_type != null and precursor_ret_type == null then
+ modelbuilder.error(nsig.n_type.as(not null), "Redef Error: {mpropdef.mproperty} is a procedure, not a function.")
+ return
+ end
+
+ if mysignature.arity > 0 then
+ # Check parameters types
+ for i in [0..mysignature.arity[ do
+ var myt = mysignature.mparameters[i].mtype
+ var prt = msignature.mparameters[i].mtype
+ if not myt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, prt) and
+ not prt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, myt) then
+ modelbuilder.error(nsig.n_params[i], "Redef Error: Wrong type for parameter `{mysignature.mparameters[i].name}'. found {myt}, expected {prt}.")
+ end
+ end
+ end
+ if precursor_ret_type != null then
+ if ret_type == null then
+ # Inherit the return type
+ ret_type = precursor_ret_type
+ else if not ret_type.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, precursor_ret_type) then
+ modelbuilder.error(nsig.n_type.as(not null), "Redef Error: Wrong return type. found {ret_type}, expected {precursor_ret_type}.")
+ end
+ end
+ end
+ end
+end
+
+redef class AAttrPropdef
+ redef type MPROPDEF: MAttributeDef
+
+ # The associated getter (read accessor) if any
+ var mreadpropdef: nullable MMethodDef writable
+ # The associated setter (write accessor) if any
+ var mwritepropdef: nullable MMethodDef writable
+ redef fun build_property(modelbuilder, nclassdef)
+ do
+ var mclassdef = nclassdef.mclassdef.as(not null)
+ var mclass = mclassdef.mclass
+
+ var name: String
+ if self.n_id != null then
+ name = self.n_id.text
+ else
+ name = self.n_id2.text
+ end
+
+ if mclass.kind == interface_kind or mclassdef.mclass.kind == enum_kind then
+ modelbuilder.error(self, "Error: Attempt to define attribute {name} in the interface {mclass}.")
+ else if mclass.kind == enum_kind then
+ modelbuilder.error(self, "Error: Attempt to define attribute {name} in the enum class {mclass}.")
+ else if mclass.kind == extern_kind then
+ modelbuilder.error(self, "Error: Attempt to define attribute {name} in the extern class {mclass}.")
+ end
+
+ var nid = self.n_id
+ if nid != null then
+ # Old attribute style
+ var mprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, name)
+ if mprop == null then
+ var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
+ mprop = new MAttribute(mclassdef, name, mvisibility)
+ if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, false, mprop) then return
+ else
+ assert mprop isa MAttribute
+ check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mprop)
+ if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, true, mprop) then return
+ end
+ nclassdef.mprop2npropdef[mprop] = self
+
+ var mpropdef = new MAttributeDef(mclassdef, mprop, self.location)
+ self.mpropdef = mpropdef
+ modelbuilder.mpropdef2npropdef[mpropdef] = self
+
+ var nreadable = self.n_readable
+ if nreadable != null then
+ var readname = name.substring_from(1)
+ var mreadprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, readname).as(nullable MMethod)
+ if mreadprop == null then
+ var mvisibility = new_property_visibility(modelbuilder, nclassdef, nreadable.n_visibility)
+ mreadprop = new MMethod(mclassdef, readname, mvisibility)
+ if not self.check_redef_keyword(modelbuilder, nclassdef, nreadable.n_kwredef, false, mreadprop) then return
+ else
+ if not self.check_redef_keyword(modelbuilder, nclassdef, nreadable.n_kwredef, true, mreadprop) then return
+ check_redef_property_visibility(modelbuilder, nclassdef, nreadable.n_visibility, mreadprop)
+ end
+ nclassdef.mprop2npropdef[mreadprop] = self
+
+ var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
+ self.mreadpropdef = mreadpropdef
+ modelbuilder.mpropdef2npropdef[mreadpropdef] = self
+ end
+
+ var nwritable = self.n_writable
+ if nwritable != null then
+ var writename = name.substring_from(1) + "="
+ var mwriteprop = modelbuilder.try_get_mproperty_by_name(nid, mclassdef, writename).as(nullable MMethod)
+ if mwriteprop == null then
+ var mvisibility = new_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility)
+ mwriteprop = new MMethod(mclassdef, writename, mvisibility)
+ if not self.check_redef_keyword(modelbuilder, nclassdef, nwritable.n_kwredef, false, mwriteprop) then return
+ else
+ if not self.check_redef_keyword(modelbuilder, nclassdef, nwritable.n_kwredef, true, mwriteprop) then return
+ check_redef_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility, mwriteprop)
+ end
+ nclassdef.mprop2npropdef[mwriteprop] = self
+
+ var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
+ self.mwritepropdef = mwritepropdef
+ modelbuilder.mpropdef2npropdef[mwritepropdef] = self
+ end
+ else
+ # New attribute style
+ var nid2 = self.n_id2.as(not null)
+ var mprop = new MAttribute(mclassdef, "@" + name, none_visibility)
+ var mpropdef = new MAttributeDef(mclassdef, mprop, self.location)
+ self.mpropdef = mpropdef
+ modelbuilder.mpropdef2npropdef[mpropdef] = self
+
+ var readname = name
+ var mreadprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, readname).as(nullable MMethod)
+ if mreadprop == null then
+ var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
+ mreadprop = new MMethod(mclassdef, readname, mvisibility)
+ if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, false, mreadprop) then return
+ else
+ if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, true, mreadprop) then return
+ check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mreadprop)
+ end
+ nclassdef.mprop2npropdef[mreadprop] = self
+
+ var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
+ self.mreadpropdef = mreadpropdef
+ modelbuilder.mpropdef2npropdef[mreadpropdef] = self
+
+ var writename = name + "="
+ var nwritable = self.n_writable
+ var mwriteprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, writename).as(nullable MMethod)
+ var nwkwredef: nullable Token = null
+ if nwritable != null then nwkwredef = nwritable.n_kwredef
+ if mwriteprop == null then
+ var mvisibility
+ if nwritable != null then
+ mvisibility = new_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility)
+ else
+ mvisibility = private_visibility
+ end
+ mwriteprop = new MMethod(mclassdef, writename, mvisibility)
+ if not self.check_redef_keyword(modelbuilder, nclassdef, nwkwredef, false, mwriteprop) then return
+ else
+ if not self.check_redef_keyword(modelbuilder, nclassdef, nwkwredef, true, mwriteprop) then return
+ if nwritable != null then
+ check_redef_property_visibility(modelbuilder, nclassdef, nwritable.n_visibility, mwriteprop)
+ end
+ end
+ nclassdef.mprop2npropdef[mwriteprop] = self
+
+ var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
+ self.mwritepropdef = mwritepropdef
+ modelbuilder.mpropdef2npropdef[mwritepropdef] = self
+ end
+ end
+
+ redef fun build_signature(modelbuilder, nclassdef)
+ do
+ var mpropdef = self.mpropdef
+ if mpropdef == null then return # Error thus skiped
+ var mmodule = mpropdef.mclassdef.mmodule
+ var mtype: nullable MType = null
+
+ var ntype = self.n_type
+ if ntype != null then
+ mtype = modelbuilder.resolve_mtype(nclassdef, ntype)
+ if mtype == null then return
+ end
+
+ if mtype == null then
+ var nexpr = self.n_expr
+ if nexpr != null then
+ if nexpr isa ANewExpr then
+ mtype = modelbuilder.resolve_mtype(nclassdef, nexpr.n_type)
+ else if nexpr isa AIntExpr then
+ var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Int")
+ if cla != null then mtype = cla.mclass_type
+ else if nexpr isa AFloatExpr then
+ var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Float")
+ if cla != null then mtype = cla.mclass_type
+ else if nexpr isa ACharExpr then
+ var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Char")
+ if cla != null then mtype = cla.mclass_type
+ else if nexpr isa ABoolExpr then
+ var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Bool")
+ if cla != null then mtype = cla.mclass_type
+ else if nexpr isa ASuperstringExpr then
+ var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "String")
+ if cla != null then mtype = cla.mclass_type
+ else if nexpr isa AStringFormExpr then
+ var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "String")
+ if cla != null then mtype = cla.mclass_type
+ else
+ modelbuilder.error(self, "Error: Untyped attribute {mpropdef}. Implicit typing allowed only for literals and new.")
+ end
+
+ else
+ modelbuilder.error(self, "Error: Untyped attribute {mpropdef}")
+ end
+ end
+
+ if mtype == null then return
+
+ mpropdef.static_mtype = mtype
+
+ var mreadpropdef = self.mreadpropdef
+ if mreadpropdef != null then
+ var msignature = new MSignature(new Array[MParameter], mtype)
+ mreadpropdef.msignature = msignature
+ end
+
+ var msritepropdef = self.mwritepropdef
+ if mwritepropdef != null then
+ var name: String
+ if n_id != null then
+ name = n_id.text.substring_from(1)
+ else
+ name = n_id2.text
+ end
+ var mparameter = new MParameter(name, mtype, false)
+ var msignature = new MSignature([mparameter], null)
+ mwritepropdef.msignature = msignature
+ end
+ end
+
+ redef fun check_signature(modelbuilder, nclassdef)
+ do
+ var mpropdef = self.mpropdef
+ if mpropdef == null then return # Error thus skiped
+ var mmodule = mpropdef.mclassdef.mmodule
+ var ntype = self.n_type
+ var mtype = self.mpropdef.static_mtype
+ if mtype == null then return # Error thus skiped
+
+ # Lookup for signature in the precursor
+ # FIXME all precursors should be considered
+ if not mpropdef.is_intro then
+ var precursor_type = mpropdef.mproperty.intro.static_mtype
+ if precursor_type == null then return
+
+ if mtype != precursor_type then
+ modelbuilder.error(ntype.as(not null), "Redef Error: Wrong static type. found {mtype}, expected {precursor_type}.")
+ return
+ end
+ end
+
+ # Check getter and setter
+ var meth = self.mreadpropdef
+ if meth != null then self.check_method_signature(modelbuilder, nclassdef, meth)
+ meth = self.mwritepropdef
+ if meth != null then self.check_method_signature(modelbuilder, nclassdef, meth)
+ end
+
+ private fun check_method_signature(modelbuilder: ModelBuilder, nclassdef: AClassdef, mpropdef: MMethodDef)
+ do
+ var mmodule = mpropdef.mclassdef.mmodule
+ var nsig = self.n_type
+ var mysignature = mpropdef.msignature
+ if mysignature == null then return # Error thus skiped
+
+ # Lookup for signature in the precursor
+ # FIXME all precursors should be considered
+ if not mpropdef.is_intro then
+ var msignature = mpropdef.mproperty.intro.msignature
+ if msignature == null then return
+
+ if mysignature.arity != msignature.arity then
+ var node: ANode
+ if nsig != null then node = nsig else node = self
+ modelbuilder.error(node, "Redef Error: {mysignature.arity} parameters found, {msignature.arity} expected. Signature is {mpropdef}{msignature}")
+ return
+ end
+ var precursor_ret_type = msignature.return_mtype
+ var ret_type = mysignature.return_mtype
+ if ret_type != null and precursor_ret_type == null then
+ var node: ANode
+ if nsig != null then node = nsig else node = self
+ modelbuilder.error(node, "Redef Error: {mpropdef.mproperty} is a procedure, not a function.")
+ return
+ end
+
+ if mysignature.arity > 0 then
+ # Check parameters types
+ for i in [0..mysignature.arity[ do
+ var myt = mysignature.mparameters[i].mtype
+ var prt = msignature.mparameters[i].mtype
+ if not myt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, prt) and
+ not prt.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, myt) then
+ var node: ANode
+ if nsig != null then node = nsig else node = self
+ modelbuilder.error(node, "Redef Error: Wrong type for parameter `{mysignature.mparameters[i].name}'. found {myt}, expected {prt}.")
+ end
+ end
+ end
+ if precursor_ret_type != null then
+ if ret_type == null then
+ # Inherit the return type
+ ret_type = precursor_ret_type
+ else if not ret_type.is_subtype(mmodule, nclassdef.mclassdef.bound_mtype, precursor_ret_type) then
+ var node: ANode
+ if nsig != null then node = nsig else node = self
+ modelbuilder.error(node, "Redef Error: Wrong return type. found {ret_type}, expected {precursor_ret_type}.")
+ end
+ end
+ end
+ end
+end
+
+redef class ATypePropdef
+ redef type MPROPDEF: MVirtualTypeDef
+
+ redef fun build_property(modelbuilder, nclassdef)
+ do
+ var mclassdef = nclassdef.mclassdef.as(not null)
+ var name = self.n_id.text
+ var mprop = modelbuilder.try_get_mproperty_by_name(self.n_id, mclassdef, name)
+ if mprop == null then
+ var mvisibility = new_property_visibility(modelbuilder, nclassdef, self.n_visibility)
+ mprop = new MVirtualTypeProp(mclassdef, name, mvisibility)
+ if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, false, mprop) then return
+ else
+ if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, true, mprop) then return
+ assert mprop isa MVirtualTypeProp
+ check_redef_property_visibility(modelbuilder, nclassdef, self.n_visibility, mprop)
+ end
+ nclassdef.mprop2npropdef[mprop] = self
+
+ var mpropdef = new MVirtualTypeDef(mclassdef, mprop, self.location)
+ self.mpropdef = mpropdef
+ end
+
+ redef fun build_signature(modelbuilder, nclassdef)
+ do
+ var mpropdef = self.mpropdef
+ if mpropdef == null then return # Error thus skiped
+ var mmodule = mpropdef.mclassdef.mmodule
+ var mtype: nullable MType = null
+
+ var ntype = self.n_type
+ mtype = modelbuilder.resolve_mtype(nclassdef, ntype)
+ if mtype == null then return
+
+ mpropdef.bound = mtype
+ # print "{mpropdef}: {mtype}"
+ end
+
+ redef fun check_signature(modelbuilder, nclassdef)
+ do
+ var bound = self.mpropdef.bound
+
+ # Fast case: the bound is not a formal type
+ if not bound isa MVirtualType then return
+
+ var mmodule = nclassdef.mclassdef.mmodule
+ var anchor = nclassdef.mclassdef.bound_mtype
+
+ # Slow case: progress on each resolution until: (i) we loop, or (ii) we found a non formal type
+ var seen = [self.mpropdef.mproperty.mvirtualtype]
+ loop
+ if seen.has(bound) then
+ seen.add(bound)
+ modelbuilder.error(self, "Error: circularity of virtual type definition: {seen.join(" -> ")}")
+ return
+ end
+ seen.add(bound)
+ var next = bound.lookup_bound(mmodule, anchor)
+ if not next isa MVirtualType then return
+ bound = next
+ end
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Highly specific, but useful, collections-related classes.
+module more_collections
+
+# Simple way to store an HashMap[K, Array[V]]
+class MultiHashMap[K: Object, V]
+ super HashMap[K, Array[V]]
+
+ # Add `v' to the array associated with `k'.
+ # If there is no array associated, then create it.
+ fun add_one(k: K, v: V)
+ do
+ if self.has_key(k) then
+ self[k].add(v)
+ else
+ self[k] = [v]
+ end
+ end
+
+ init do end
+end
+
+# Simple way to store an HashMap[K1, HashMap[K2, V]]
+class HashMap2[K1: Object, K2: Object, V]
+ private var level1: HashMap[K1, HashMap[K2, V]] = new HashMap[K1, HashMap[K2, V]]
+
+ # Return the value associated to the keys `k1` and `k2`.
+ # Return `null` if no such a value.
+ fun [](k1: K1, k2: K2): nullable V
+ do
+ var level1 = self.level1
+ if not level1.has_key(k1) then return null
+ var level2 = level1[k1]
+ if not level2.has_key(k2) then return null
+ return level2[k2]
+ end
+
+ # Set `v` the value associated to the keys `k1` and `k2`.
+ fun []=(k1: K1, k2: K2, v: V)
+ do
+ var level1 = self.level1
+ var level2: HashMap[K2, V]
+ if not level1.has_key(k1) then
+ level2 = new HashMap[K2, V]
+ level1[k1] = level2
+ else
+ level2 = level1[k1]
+ end
+ level2[k2] = v
+ end
+end
+
+# Simple way to store an HashMap[K1, HashMap[K2, HashMap[K3, V]]]
+class HashMap3[K1: Object, K2: Object, K3: Object, V]
+ private var level1: HashMap[K1, HashMap2[K2, K3, V]] = new HashMap[K1, HashMap2[K2, K3, V]]
+
+ # Return the value associated to the keys `k1`, `k2`, and `k3`.
+ # Return `null` if no such a value.
+ fun [](k1: K1, k2: K2, k3: K3): nullable V
+ do
+ var level1 = self.level1
+ if not level1.has_key(k1) then return null
+ var level2 = level1[k1]
+ return level2[k2, k3]
+ end
+
+ # Set `v` the value associated to the keys `k1`, `k2`, and `k3`.
+ fun []=(k1: K1, k2: K2, k3: K3, v: V)
+ do
+ var level1 = self.level1
+ var level2: HashMap2[K2, K3, V]
+ if not level1.has_key(k1) then
+ level2 = new HashMap2[K2, K3, V]
+ level1[k1] = level2
+ else
+ level2 = level1[k1]
+ end
+ level2[k2, k3] = v
+ end
+end
# Check that non nullable attributes of `recv' are correctly initialized.
# This function is used as the last instruction of a new
- # FIXME: this will work better once there is nullable types
fun check_init_instance(recv: Instance)
do
if not recv isa MutableInstance then return
return v.int_instance(recv <=> args[1].val.as(Char))
end
else if cname == "Float" then
+ var recv = args[0].to_f
if pname == "unary -" then
- return v.float_instance(-args[0].to_f)
+ return v.float_instance(-recv)
else if pname == "+" then
- return v.float_instance(args[0].to_f + args[1].to_f)
+ return v.float_instance(recv + args[1].to_f)
else if pname == "-" then
- return v.float_instance(args[0].to_f - args[1].to_f)
+ return v.float_instance(recv - args[1].to_f)
else if pname == "*" then
- return v.float_instance(args[0].to_f * args[1].to_f)
+ return v.float_instance(recv * args[1].to_f)
else if pname == "/" then
- return v.float_instance(args[0].to_f / args[1].to_f)
+ return v.float_instance(recv / args[1].to_f)
+ else if pname == "<" then
+ return v.bool_instance(recv < args[1].to_f)
+ else if pname == ">" then
+ return v.bool_instance(recv > args[1].to_f)
+ else if pname == "<=" then
+ return v.bool_instance(recv <= args[1].to_f)
+ else if pname == ">=" then
+ return v.bool_instance(recv >= args[1].to_f)
else if pname == "to_i" then
- return v.int_instance(args[0].to_f.to_i)
+ return v.int_instance(recv.to_i)
end
else if cname == "NativeString" then
var recvval = args.first.val.as(Buffer)
return v.float_instance(args[0].to_f.cos)
else if pname == "sin" then
return v.float_instance(args[0].to_f.sin)
+ else if pname == "tan" then
+ return v.float_instance(args[0].to_f.tan)
+ else if pname == "acos" then
+ return v.float_instance(args[0].to_f.acos)
+ else if pname == "asin" then
+ return v.float_instance(args[0].to_f.asin)
+ else if pname == "atan" then
+ return v.float_instance(args[0].to_f.atan)
+ else if pname == "sqrt" then
+ return v.float_instance(args[0].to_f.sqrt)
+ else if pname == "exp" then
+ return v.float_instance(args[0].to_f.exp)
+ else if pname == "log" then
+ return v.float_instance(args[0].to_f.log)
+ else if pname == "pow" then
+ return v.float_instance(args[0].to_f.pow(args[1].to_f))
+ else if pname == "rand" then
+ return v.float_instance(args[0].to_f.rand)
end
else if pname == "native_argc" then
return v.int_instance(v.arguments.length)
return v.native_string_instance(txt)
else if pname == "get_time" then
return v.int_instance(get_time)
+ else if pname == "srand_from" then
+ srand_from(args[1].to_i)
+ return null
else if pname == "atan2" then
return v.float_instance(atan2(args[1].to_f, args[2].to_f))
else if pname == "pi" then
# stantard call-next-method
var mpropdef = v.frame.mpropdef
- # FIXME: we do not want an ugly static call!
mpropdef = mpropdef.lookup_next_definition(v.mainmodule, recv.mtype)
assert mpropdef isa MMethodDef
var res = v.call(mpropdef, args)
--- /dev/null
+#!/bin/bash
+rm nitg nitg.bin hello_world.bin 2>/dev/null
+#test -f nitc_3 || { ./nitc_3 ; exit }
+set -x
+set -e
+time ../bin/nitc -O nitg.nit -v -o nitg
+time ./nitg nitg.nit -v "$@" -o nitg_2
+time ./nitg_2 nitg.nit -v "$@" -o nitg_3
+time ./nitg_3 nitg.nit -v "$@" -o nitg_4
+./nitg_4 ../examples/hello_world.nit "$@" -o hello_world
+./hello_world
+
module nit
import modelbuilder
-import exprbuilder
+import frontend
import naive_interpreter
import debugger
#import interpretor_type_test
var progname = arguments.first
# Here we load an process all modules passed on the command line
-var mmodules = modelbuilder.parse_and_build([progname])
-modelbuilder.full_propdef_semantic_analysis
-
-if toolcontext.opt_only_metamodel.value then exit(0)
+var mmodules = modelbuilder.parse([progname])
+modelbuilder.run_phases
# Here we launch the interpreter on the main module
assert mmodules.length == 1
super AbstractCompiler
# Destination directory
readable writable var _dir: String = "doc"
-
+ # GitHub Repo name
+ var github_repo: nullable String = null
# Content of a generated file
var _stage_context: StageContext = new StageContext(null)
readable var _opt_custom_title: OptionString = new OptionString("Title displayed in the top of the Overview page and as suffix of all page names", "--custom-title")
readable var _opt_custom_overview_text: OptionString = new OptionString("Text displayed as introduction of Overview page before the modules list", "--custom-overview-text")
readable var _opt_custom_footer_text: OptionString = new OptionString("Text displayed as footer of all pages", "--custom-footer-text")
+ readable var _opt_github_repo_name: OptionString = new OptionString("GitHub repo name, example: --github MyRepoName", "--github")
var sharedir: nullable String
fun public_only: Bool
var custom_items = ""
if self._opt_custom_menu_items.value != null then custom_items = self._opt_custom_menu_items.value.as(not null)
- var action_bar = "<header><nav class='main'><ul>{custom_items}<li class=\"current\">Overview</li><li><a href='full-index.html'>Full Index</a></li><li><a href=\"help.html\">Help</a></li></ul></nav></header>\n"
-
+ var action_bar = "<header><nav class='main'><ul>{custom_items}<li class=\"current\">Overview</li><li><a href='full-index.html'>Full Index</a></li><li><a href=\"help.html\">Help</a></li><li id=\"liGitHub\" class=\"\"><a id=\"logGitHub\" class=\"btn\" ><img id=\"imgGitHub\" src=\"resources/icons/github-icon.png\" /></a><div class=\"popover bottom\"><div class=\"arrow\"></div><div class=\"githubTitle\"><h3>Github Sign In</h3></div><div><label id=\"lbloginGit\" for=\"login\">Username</label><input id=\"loginGit\" type=\"text\" name=\"login\"><label id=\"logginMessage\" >Hello <a id=\"githubAccount\" ><strong id=\"nickName\"></strong></a></label></div><div><label id=\"lbpasswordGit\" for=\"password\">Password</label><input id=\"passwordGit\" type=\"password\" name=\"password\"><div id=\"divGitHubRepoDisplay\"><label id=\"lbRepoDisplay\">Repository: </label><strong><label id=\"githubRepoDisplay\"></label></strong></div></div><div><label id=\"lbrepositoryGit\" for=\"repository\">Repository</label><input id=\"repositoryGit\" type=\"text\" name=\"repository\"><div id=\"listBranches\"><label id=\"lbBranches\">Branch </label><select id=\"dropBranches\" name=\"dropBranches\" tabindex=\"1\" class=\"dropdown\"></select></div></div><div><label id=\"lbbranchGit\" for=\"branch\">Branch</label><input id=\"branchGit\" type=\"text\" name=\"branch\"></div><div id=\"divlogIn\"><a id=\"signIn\" >Sign In</a></div></div></li></ul></nav></header>\n"
var custom_title = "Nitdoc"
if self._opt_custom_title.value != null then custom_title = self._opt_custom_title.value.as(not null)
# generate the index
self.filename = "index.html"
clear
+ addGithubInformation
+ addCommitForm
add("<!DOCTYPE html>")
add("<html><head>{head}<title>Overview | {custom_title}</title></head><body>\n")
add(action_bar)
assert mod isa MMSrcModule
if not mod.require_doc(self) then continue
self.filename = mod.html_name
- action_bar = "<header><nav class='main'><ul>{custom_items}<li><a href='./index.html'>Overview</a></li><li class=\"current\">{mod.name}</li><li><a href='full-index.html'>Full Index</a></li><li><a href=\"help.html\">Help</a></li></ul></nav></header>\n"
+ action_bar = "<header><nav class='main'><ul>{custom_items}<li><a href='./index.html'>Overview</a></li><li class=\"current\">{mod.name}</li><li><a href='full-index.html'>Full Index</a></li><li><a href=\"help.html\">Help</a></li><li id=\"liGitHub\" class=\"\"><a id=\"logGitHub\" class=\"btn\" ><img id=\"imgGitHub\" src=\"resources/icons/github-icon.png\" /></a><div class=\"popover bottom\"><div class=\"arrow\"></div><div class=\"githubTitle\"><h3>Github Sign In</h3></div><div><label id=\"lbloginGit\" for=\"login\">Username</label><input id=\"loginGit\" type=\"text\" name=\"login\"><label id=\"logginMessage\" >Hello <a id=\"githubAccount\" ><strong id=\"nickName\"></strong></a></label></div><div><label id=\"lbpasswordGit\" for=\"password\">Password</label><input id=\"passwordGit\" type=\"password\" name=\"password\"><div id=\"divGitHubRepoDisplay\"><label id=\"lbRepoDisplay\">Repository: </label><strong><label id=\"githubRepoDisplay\"></label></strong></div></div><div><label id=\"lbrepositoryGit\" for=\"repository\">Repository</label><input id=\"repositoryGit\" type=\"text\" name=\"repository\"><div id=\"listBranches\"><label id=\"lbBranches\">Branch </label><select id=\"dropBranches\" name=\"dropBranches\" tabindex=\"1\" class=\"dropdown\"></select></div></div><div><label id=\"lbbranchGit\" for=\"branch\">Branch</label><input id=\"branchGit\" type=\"text\" name=\"branch\"></div><div id=\"divlogIn\"><a id=\"signIn\" >Sign In</a></div></div></li></ul></nav></header>\n"
clear
+ addGithubInformation
+ addCommitForm
add("<!DOCTYPE html>")
add("<html><head>{head}<title>{mod.name} module | {custom_title}</title></head><body>\n")
add(action_bar)
for c in mainmod.local_classes do
if not c.require_doc(self) then continue
self.filename = c.html_name
- action_bar = "<header><nav class='main'><ul>{custom_items}<li><a href='./index.html'>Overview</a></li><li>{c.global.intro.mmmodule.toplevel_owner.html_link(self)}</li><li class=\"current\">{c.name}</li><li><a href='full-index.html'>Full Index</a></li><li><a href=\"help.html\">Help</a></li></ul></nav></header>\n"
+ action_bar = "<header><nav class='main'><ul>{custom_items}<li><a href='./index.html'>Overview</a></li><li>{c.global.intro.mmmodule.toplevel_owner.html_link(self)}</li><li class=\"current\">{c.name}</li><li><a href='full-index.html'>Full Index</a></li><li><a href=\"help.html\">Help</a></li><li id=\"liGitHub\" class=\"\"><a id=\"logGitHub\" class=\"btn\" ><img id=\"imgGitHub\" src=\"resources/icons/github-icon.png\" /></a><div class=\"popover bottom\"><div class=\"arrow\"></div><div class=\"githubTitle\"><h3>Github Sign In</h3></div><div><label id=\"lbloginGit\" for=\"login\">Username</label><input id=\"loginGit\" type=\"text\" name=\"login\"><label id=\"logginMessage\" >Hello <a id=\"githubAccount\" ><strong id=\"nickName\"></strong></a></label></div><div><label id=\"lbpasswordGit\" for=\"password\">Password</label><input id=\"passwordGit\" type=\"password\" name=\"password\"><div id=\"divGitHubRepoDisplay\"><label id=\"lbRepoDisplay\">Repository: </label><strong><label id=\"githubRepoDisplay\"></label></strong></div></div><div><label id=\"lbrepositoryGit\" for=\"repository\">Repository</label><input id=\"repositoryGit\" type=\"text\" name=\"repository\"><div id=\"listBranches\"><label id=\"lbBranches\">Branch </label><select id=\"dropBranches\" name=\"dropBranches\" tabindex=\"1\" class=\"dropdown\"></select></div></div><div><label id=\"lbbranchGit\" for=\"branch\">Branch</label><input id=\"branchGit\" type=\"text\" name=\"branch\"></div><div id=\"divlogIn\"><a id=\"signIn\" >Sign In</a></div></div></li></ul></nav></header>\n"
clear
+ addGithubInformation
+ addCommitForm
add("<!DOCTYPE html>")
add("<html><head>{head}<title>{c.name} class | {custom_title}</title></head><body>\n")
add(action_bar)
end
self.filename = "fullindex"
- action_bar = "<header><nav class='main'><ul>{custom_items}<li><a href='./index.html'>Overview</a></li><li class=\"current\">Full Index</li><li><a href=\"help.html\">Help</a></li></ul></nav></header>\n"
+ action_bar = "<header><nav class='main'><ul>{custom_items}<li><a href='./index.html'>Overview</a></li><li class=\"current\">Full Index</li><li><a href=\"help.html\">Help</a></li><li id=\"liGitHub\" class=\"\"><a id=\"logGitHub\" class=\"btn\" ><img id=\"imgGitHub\" src=\"resources/icons/github-icon.png\" /></a><div class=\"popover bottom\"><div class=\"arrow\"></div><div class=\"githubTitle\"><h3>Github Sign In</h3></div><div><label id=\"lbloginGit\" for=\"login\">Username</label><input id=\"loginGit\" type=\"text\" name=\"login\"><label id=\"logginMessage\" >Hello <a id=\"githubAccount\" ><strong id=\"nickName\"></strong></a></label></div><div><label id=\"lbpasswordGit\" for=\"password\">Password</label><input id=\"passwordGit\" type=\"password\" name=\"password\"><div id=\"divGitHubRepoDisplay\"><label id=\"lbRepoDisplay\">Repository: </label><strong><label id=\"githubRepoDisplay\"></label></strong></div></div><div><label id=\"lbrepositoryGit\" for=\"repository\">Repository</label><input id=\"repositoryGit\" type=\"text\" name=\"repository\"><div id=\"listBranches\"><label id=\"lbBranches\">Branch </label><select id=\"dropBranches\" name=\"dropBranches\" tabindex=\"1\" class=\"dropdown\"></select></div></div><div><label id=\"lbbranchGit\" for=\"branch\">Branch</label><input id=\"branchGit\" type=\"text\" name=\"branch\"></div></div> <div id=\"divlogIn\"><a id=\"signIn\" >Sign In</a></div></div></li></ul></nav></header>\n"
clear
+ addGithubInformation
+ addCommitForm
add("<!DOCTYPE html>")
add("<html><head>{head}<title>Full Index | {custom_title}</title></head><body>\n")
add(action_bar)
mainmod.file_quicksearch_list_doc(self)
write_to("{dir}/quicksearch-list.js")
end
+
+ # Add or not a tag for the github repository
+ fun addGithubInformation do
+ if not github_repo == null then add("<div id=\"repoName\" name=\"{github_repo.to_s}\"></div>")
+ end
+ # Add all tags for the commit form
+ fun addCommitForm do
+ add("<div id=\"modal\"><form class=\"clearfix\"><div><label for=\"commitMessage\">Commit message</label><textarea id=\"commitMessage\" rows=\"1\" cols=\"76\" name=\"commitMessage\" ></textarea><input id=\"chkSignedOff\" type=\"checkbox\" name=\"chkSignedOff\">Signed-Off </div><div class=\"social-signup login\"><form ></form></div><form id=\"github-connect-form\" class=\"connect-button\" name=\"login\"><a id=\"loginAction\" title=\"Commit on GitHub\"><img src=\"resources/icons/github-icon.png\"><span id=\"btnGitHub\"><strong>Commit</strong></span></a></form></form></div><div id=\"modalQuestion\"><label id=\"txtQuestion\"></label><br><a id=\"btnCreateBranch\">Yes</a><a id=\"btnCancelBranch\">No</a></div><div id=\"waitCommit\"></div>\n\n")
+ end
# Add a (source) link fo a given location
fun show_source(l: Location)
end
end
+ # Return source link for a given location
+ fun get_source(l: Location): String
+ do
+ var s = opt_source.value
+ if s == null then
+ return l.file.filename.simplify_path
+ else
+ # THIS IS JUST UGLY ! (but there is no replace yet)
+ var x = s.split_with("%f")
+ s = x.join(l.file.filename.simplify_path)
+ x = s.split_with("%l")
+ s = x.join(l.line_start.to_s)
+ x = s.split_with("%L")
+ s = x.join(l.line_end.to_s)
+ return s
+ end
+ end
+
# Generate a clicable graphiz image using a dot content.
# `name' refer to the filename (without extension) and the id name of the map.
# `name' must also match the name of the graph in the dot content (eg. digraph NAME {...)
option_context.add_option(opt_custom_menu_items)
option_context.add_option(opt_custom_overview_text)
option_context.add_option(opt_custom_footer_text)
+ option_context.add_option(opt_github_repo_name)
end
redef fun process_options
end
end
+ var git = opt_github_repo_name.value
+ if not git == null then github_repo = git
end
redef fun handle_property_conflict(lc, impls)
dctx.add("{m.html_link(dctx)}::")
end
dctx.add("{self.name}</div>\n")
-
+ dctx.add("<div style=\"float: right;\"><a id=\"lblDiffCommit\"></a></div>")
dctx.add("<section class='description'>\n")
var doc = doc
if doc != null then
dctx.add("<div id=\"description\">\n")
- dctx.add("<pre>{doc.to_html}</pre>\n")
+ dctx.add("<pre class=\"text_label\">{doc.to_html}</pre>\n")
+ dctx.add("<textarea rows=\"1\" cols=\"76\" id=\"fileContent\" class=\"edit\"></textarea>\n")
+ dctx.add("<a id=\"cancelBtn\">Cancel</a><a id=\"commitBtn\">Commit</a>")
+ dctx.add("<pre id=\"preSave\" type=\"2\" class=\"text_label\" ></pre>")
dctx.add("</div>\n")
end
var lpi = self[gp.intro.local_class.global][gp]
lps.remove(lpi)
- dctx.add("<li class='intro'><span title='introduction'>I</span> {lpi.html_open_link(dctx)}{lpi.html_name} ({lpi.local_class})</a></li>\n")
+ dctx.add("<li class='intro'><span title='introduction'>I</span> {lpi.html_open_link(dctx)}{lpi.html_name} ({lpi.local_class})</a></li>\n")
if lps.length >= 1 then
dctx.sort(lps)
for lp in lps do
dctx.add("<article id=\"{html_anchor}\" class=\"{kind} {visibility} {if is_redef then "redef" else ""}\">\n")
dctx.add("<h3 class=\"signature\">{html_name}{signature.to_html(dctx, true)}</h3>\n")
dctx.add("<div class=\"info\">\n")
- #dctx.add("<p>LP: {self.mmmodule.html_link(dctx)}::{self.local_class.html_link(dctx)}::{self.html_link(dctx)}</p>")
if is_redef then
dctx.add("redef ")
dctx.add("::{html_name}")
end
dctx.add("</div>")
-
+ dctx.add("<div style=\"float: right;\"><a id=\"lblDiffCommit\"></a></div>")
dctx.add("<div class=\"description\">")
# Collect all refinement of the global property in the same global property
end
end
if introdoc then
- dctx.add("<pre>{global.intro.doc.to_html}</pre>")
+ dctx.add("<pre class=\"text_label\" name=\"{html_name}\" >{global.intro.doc.to_html}</pre>")
+ dctx.add("<textarea rows=\"1\" cols=\"76\" id=\"fileContent\" class=\"edit\"></textarea>")
+ dctx.add("<a id=\"cancelBtn\">Cancel</a><a id=\"commitBtn\">Commit</a>")
+ dctx.add("<pre id=\"preSave\" type=\"2\" class=\"text_label\" ></pre>")
end
var tlmods = new Array[MMModule]
dctx.add("<h4>In module {tm.html_link(dctx)} :</h4>")
end
- #dctx.add("<p>TLP: {tm} x {lc} : {tlp.full_name}</p>")
-
var doc = tlp.doc
+ var n = tlp.node
if doc != null and (not introdoc or global.intro.doc != doc) then
- dctx.add("<pre>{doc.to_html}</pre>")
+ if n != null then
+ var l = n.location
+ dctx.add("<pre type=\"1\" class=\"text_label\" tag=\"{l.file.filename}\" name=\"{dctx.get_source(l)}\" title=\"{l.line_start.to_s}\" >{doc.to_html}</pre>")
+ end
+ else if not is_redef then
+ if n != null then
+ var l = n.location
+ dctx.add("<a class=\"newComment\" tag=\"{l.file.filename}\" title=\"{l.line_start.to_s}\">New comment</a>\n")
+ end
end
+ dctx.add("<textarea rows=\"1\" cols=\"76\" id=\"fileContent\" class=\"edit\"></textarea>")
+ dctx.add("<a id=\"cancelBtn\">Cancel</a><a id=\"commitBtn\">Commit</a>")
+ dctx.add("<pre id=\"preSave\" type=\"2\" class=\"text_label\" ></pre>")
dctx.add("<p>")
if tlp.local_class.global != lc.global then
dctx.add("inherited from {tlp.local_class.html_link(dctx)} ")
if tm != tlp.mmmodule then
dctx.add("defined by the module {tlp.mmmodule.html_link(dctx)} ")
end
- var n = tlp.node
if n != null then
var l = n.location
dctx.show_source(l)
var l = n.location
dctx.show_source(l)
end
-
- #var doc = lp.doc
- #if doc != null and (not introdoc or global.intro.doc != doc) then
- # dctx.add("<pre>{doc.to_html}</pre>")
- #end
end
dctx.close_stage
dctx.add("</p>")
dctx.add("(unexported) ")
end
dctx.add("{kind} {global.intro.mmmodule.toplevel_owner.html_link(dctx)}::{name}</div>")
-
+ dctx.add("<div style=\"float: right;\"><a id=\"lblDiffCommit\"></a></div>")
dctx.add("<section class=\"description\">\n")
var doc = doc
if doc != null then
- dctx.add("<pre>{doc.to_html}</pre>\n")
+ var l = doc.location
+ dctx.add("<pre type=\"2\" class=\"text_label\" tag=\"{l.file.filename}\" name=\"{dctx.get_source(l)}\" title=\"{l.line_start.to_s}\">{doc.to_html}</pre>\n")
+ dctx.add("<textarea rows=\"1\" cols=\"76\" id=\"fileContent\" class=\"edit\"></textarea>")
+ dctx.add("<a id=\"cancelBtn\">Cancel</a><a id=\"commitBtn\">Commit</a>")
+ dctx.add("<pre id=\"preSave\" type=\"2\" class=\"text_label\" ></pre>")
end
var cla = new HashSet[MMLocalClass]
module nitg
import modelbuilder
-import exprbuilder
+import frontend
import rapid_type_analysis
import global_compiler
import separate_erasure_compiler
# Create a tool context to handle options and paths
var toolcontext = new ToolContext
+
+# Create a new option for --global
+var opt_global = new OptionBool("Use global compilation", "--global")
+toolcontext.option_context.add_option(opt_global)
+
# We do not add other options, so process them now!
toolcontext.process_options
var progname = arguments.first
# Here we load an process all modules passed on the command line
-var mmodules = modelbuilder.parse_and_build([progname])
-if mmodules.is_empty then return
-modelbuilder.full_propdef_semantic_analysis
+var mmodules = modelbuilder.parse([progname])
-if toolcontext.opt_only_metamodel.value then exit(0)
+if mmodules.is_empty then return
+modelbuilder.run_phases
# Here we launch the interpreter on the main module
assert mmodules.length == 1
if toolcontext.opt_erasure.value then
modelbuilder.run_separate_erasure_compiler(mainmodule, analysis)
-else if toolcontext.opt_separate.value then
- modelbuilder.run_separate_compiler(mainmodule, analysis)
-else
+else if opt_global.value then
modelbuilder.run_global_compiler(mainmodule, analysis)
+else
+ modelbuilder.run_separate_compiler(mainmodule, analysis)
end
module nitmetrics
import modelbuilder
-import exprbuilder
+import frontend
import metrics
# Create a tool context to handle options and paths
var modelbuilder = new ModelBuilder(model, toolcontext)
# Here we load an process all modules passed on the command line
-var mmodules = modelbuilder.parse_and_build(arguments)
-modelbuilder.full_propdef_semantic_analysis
+var mmodules = modelbuilder.parse(arguments)
+modelbuilder.run_phases
if mmodules.length == 0 then return
print "*** METRICS ***"
-# All metrics computation ?
-var all = toolcontext.opt_all.value
-
-# Inheritance usage metrics
-if all or toolcontext.opt_inheritance.value then
- print ""
- compute_inheritance_metrics(toolcontext, model)
-end
-
-# Refinement usage metrics
-if all or toolcontext.opt_refinement.value then
- print ""
- compute_refinement_metrics(model)
-end
-
-# Self usage metrics
-if all or toolcontext.opt_self.value then
- print ""
- compute_self_metrics(modelbuilder)
-end
-
-# Nullables metrics
-if all or toolcontext.opt_nullables.value then
- print ""
- compute_nullables_metrics(modelbuilder)
-end
-
-# Static types metrics
-if all or toolcontext.opt_static_types.value then
- print ""
- compute_static_types_metrics(modelbuilder)
-end
-
-# Tables metrics
-if all or toolcontext.opt_tables.value then
- print ""
- compute_tables_metrics(mainmodule)
-end
-
-# RTA metrics
-if all or toolcontext.opt_rta.value then
- print ""
- compute_rta_metrics(modelbuilder, mainmodule)
-end
-
-# Generate Hyperdoc
-if toolcontext.opt_generate_hyperdoc.value then
- generate_module_hierarchy(toolcontext, model)
- generate_classdef_hierarchy(toolcontext, model)
- generate_class_hierarchy(toolcontext, mainmodule)
- generate_model_hyperdoc(toolcontext, model)
-end
+toolcontext.run_global_phases(mainmodule)
return res
end
+ redef fun text=(text)
+ do
+ _text = text
+ end
+
fun parser_index: Int is abstract
end
end
end
-redef class TClassid
+redef class TAt
redef fun parser_index: Int
do
return 79
end
end
-redef class TId
+redef class TClassid
redef fun parser_index: Int
do
return 80
end
end
-redef class TAttrid
+redef class TId
redef fun parser_index: Int
do
return 81
end
end
-redef class TNumber
+redef class TAttrid
redef fun parser_index: Int
do
return 82
end
end
-redef class TFloat
+redef class TNumber
redef fun parser_index: Int
do
return 83
end
end
-redef class TChar
+redef class TFloat
redef fun parser_index: Int
do
return 84
end
end
-redef class TBadChar
+redef class TChar
redef fun parser_index: Int
do
return 89
end
end
-redef class TExternCodeSegment
+redef class TBadChar
redef fun parser_index: Int
do
return 91
end
end
+redef class TExternCodeSegment
+ redef fun parser_index: Int
+ do
+ return 92
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
redef class EOF
redef fun parser_index: Int
do
- return 92
+ return 93
end
- init(loc: Location)
+ init init_tk(loc: Location)
do
_text = ""
_location = loc
init init_error(message: String, loc: Location)
do
- init(loc)
+ init_tk(loc)
_message = message
end
end
+redef class ALexerError
+ readable var _string: String
+
+ init init_lexer_error(message: String, loc: Location, string: String)
+ do
+ init_error(message, loc)
+ _string = string
+ end
+end
+
+redef class AParserError
+ readable var _token: Token
+
+ init init_parser_error(message: String, loc: Location, token: Token)
+ do
+ init_error(message, loc)
+ _token = token
+ end
+end
# The lexer extract NIT tokens from an input stream.
# It is better user with the Parser
return new TBang.init_tk(location)
end
if accept_token == 80 then
- return new TClassid.init_tk(location)
+ return new TAt.init_tk(location)
end
if accept_token == 81 then
- return new TId.init_tk(location)
+ return new TClassid.init_tk(location)
end
if accept_token == 82 then
- return new TAttrid.init_tk(location)
+ return new TId.init_tk(location)
end
if accept_token == 83 then
- return new TNumber.init_tk(location)
+ return new TAttrid.init_tk(location)
end
if accept_token == 84 then
- return new TFloat.init_tk(location)
+ return new TNumber.init_tk(location)
end
if accept_token == 85 then
- return new TChar.init_tk(location)
+ return new TFloat.init_tk(location)
end
if accept_token == 86 then
return new TString.init_tk(location)
return new TEndString.init_tk(location)
end
if accept_token == 90 then
- return new TBadChar.init_tk(location)
+ return new TChar.init_tk(location)
end
if accept_token == 91 then
return new TBadString.init_tk(location)
end
if accept_token == 92 then
+ return new TBadChar.init_tk(location)
+ end
+ if accept_token == 93 then
return new TExternCodeSegment.init_tk(location)
end
else
var location = new Location(_file, start_line + 1, start_line + 1, start_pos + 1, start_pos + 1)
if sp > start_stream_pos then
var text = string.substring(start_stream_pos, sp-start_stream_pos)
- var token = new AError.init_error("Syntax error: unknown token {text}.", location)
+ var token = new ALexerError.init_lexer_error("Syntax error: unknown token {text}.", location, text)
return token
else
- var token = new EOF(location)
+ var token = new EOF.init_tk(location)
return token
end
end
*/
/* This grammar defines the NIT language. */
+Package org.nitlanguage.gen;
/*****************************************************************************/
Helpers
cr = 13;
lf = 10;
any = [all - [cr + lf]];
+eol_helper = cr lf | cr | lf; // This takes care of different platforms
// characers inside strings and super-strings (atomaton powaa)
str_char
;
str_body = str_char*;
+sstr_char
+ = [any - [''' + '\']]
+ | '\' any
+ ;
+
+sstr_body = sstr_char*;
+
+long_str_char = str_char | cr | lf;
+
+long_str_part
+ = long_str_char
+ | '"' long_str_char
+ | '"' '"' long_str_char
+ | '{' long_str_char
+ | '{' '{' long_str_char
+ ;
+
+long_str_body = long_str_part*;
+
+long_sstr_char = sstr_char | cr | lf;
+long_sstr_part
+ = long_sstr_char
+ | ''' long_sstr_char
+ | ''' ''' long_sstr_char
+ ;
+
+long_sstr_body = long_sstr_part*;
+
+
extern_code_char
= [all - ['`' + '\']]
| '\' all
;
extern_code_body = extern_code_char*;
-eol_helper = cr lf | cr | lf; // This takes care of different platforms
-
/*****************************************************************************/
States
/*****************************************************************************/
gg = '>>';
starship = '<=>';
bang='!';
+at='@';
classid = uppercase letter*;
id = lowercase letter*;
number = digit+;
float = digit* '.' digit+;
+string = '"' str_body '"' | '"' '"' '"' long_str_body '"' '"' '"' | ''' ''' ''' long_sstr_body ''' ''' ''';
+start_string = '"' str_body '{' | '"' '"' '"' long_str_body '{' '{' '{';
+mid_string = '}' str_body '{' | '}' '}' '}' long_str_body '{' '{' '{';
+end_string = '}' str_body '"' | '}' '}' '}' long_str_body '"' '"' '"';
char = (''' [[any - '''] - '\'] ''') | (''' '\' any ''');
-string = '"' str_body '"';
-start_string = '"' str_body '{';
-mid_string = '}' str_body '{';
-end_string = '}' str_body '"';
+bad_string = ('"'|'}') str_body | '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
bad_char = ''' '\'? any;
-bad_string = ('"'|'}') str_body;
extern_code_segment = '`' '{' extern_code_body '`' '}';
= moduledecl? [imports]:import* [extern_bodies]:extern_code_body* [classdefs]:classdef* implicit_top_class? implicit_main_class? {-> New module(moduledecl, [imports.import], [extern_bodies.extern_code_block], [classdefs.classdef,implicit_top_class.classdef,implicit_main_class.classdef])};
moduledecl
- = [doc]:no kwmodule no module_name [n2]:n1 {-> New moduledecl(doc.doc, kwmodule, module_name)};
+ = [doc]:no kwmodule no module_name annotation_withend? [n2]:n1 {-> New moduledecl(doc.doc, kwmodule, module_name, annotation_withend.annotations)};
import
- = {std} [doc]:no visibility kwimport no module_name [n2]:n1 {-> New import.std(visibility, kwimport, module_name)}
+ = {std} [doc]:no visibility kwimport no module_name annotation_withend? [n2]:n1 {-> New import.std(visibility, kwimport, module_name, annotation_withend.annotations)}
| {no} [doc]:no visibility kwimport no kwend [n2]:n1 {-> New import.no(visibility, kwimport, kwend)}
;
/* CLASSES *******************************************************************/
classdef
- = [doc]:no redef visibility classkind no classid formaldefs? extern_code_block? [superclasses]:superclass* propdefs* [n2]:no kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, classid, [formaldefs.formaldef], extern_code_block, [superclasses.superclass], [propdefs.propdef], kwend)};
+ = [doc]:no redef visibility classkind no classid formaldefs? line_annotations_forclass? extern_code_block? [superclasses]:superclass* propdefs* [n2]:no kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, classid, [formaldefs.formaldef], line_annotations_forclass.annotations, extern_code_block, [superclasses.superclass], [propdefs.propdef], kwend)};
redef {-> kwredef?}
= kwredef? {-> kwredef};
classkind
formaldefs_tail {-> formaldef}
= comma no formaldef {-> formaldef};
formaldef
- = classid typing? {-> New formaldef(classid, typing.type)};
+ = classid annotations? typing? {-> New formaldef(classid, typing.type, annotations)};
superclass {-> superclass}
- = {super} no kwsuper [n2]:no type {-> New superclass(kwsuper, type)}
+ = {super} no kwsuper [n2]:no type annotation_withend? {-> New superclass(kwsuper, type, annotation_withend.annotations)}
;
propdefs~toplevel {-> propdef}
= propdef~toplevel n1 {-> propdef~toplevel.propdef}
;
propdef~toplevel {-> propdef}
- = {meth} [doc]:no redef visibility kwmeth methid signature kwdo stmtso kwend? {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature, stmtso.expr)}
- | {assign_return} [doc]:no redef visibility kwmeth methid signature_withret assign no assign_return {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature_withret.signature, assign_return.expr)}
-!toplevel| {deferred} [doc]:no redef visibility kwmeth methid signature kwis kwabstract {-> New propdef.deferred_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature)}
+ = {meth} [doc]:no redef visibility kwmeth methid signature annotation_noend? kwdo stmtso kwend? {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature, annotation_noend.annotations, stmtso.expr)}
+ | {assign_return} [doc]:no redef visibility kwmeth methid signature_withret assign no assign_return {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature_withret.signature, Null, assign_return.expr)}
+ | {nobody} [doc]:no redef visibility kwmeth methid signature annotation_withend {-> New propdef.deferred_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, annotation_withend.annotations)}
+!toplevel| {deferred} [doc]:no redef visibility kwmeth methid signature kwis kwabstract {-> New propdef.deferred_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, Null)}
!toplevel| {intern} [doc]:no redef visibility kwmeth methid signature kwis kwintern {-> New propdef.intern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature)}
| {extern} [doc]:no redef visibility kwmeth methid signature kwis kwextern string? extern_calls? extern_code_block? {-> New propdef.extern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, string, extern_calls, extern_code_block)}
| {extern_implicit} [doc]:no redef visibility kwmeth methid signature extern_calls? extern_code_block {-> New propdef.extern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, Null, extern_calls, extern_code_block)}
-!toplevel| {var} [doc]:no readable? writable? redef visibility kwvar attrid typing? {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, Null)}
-!toplevel| {var2} [doc]:no readable? writable? redef visibility kwvar attrid typing? assign [n2]:no expr {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, expr)}
-!toplevel| {var3} [doc]:no redef visibility kwvar id typing? writable2? {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, Null)}
-!toplevel| {var4} [doc]:no redef visibility kwvar id typing? writable2? assign [n2]:no expr {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, expr)}
-!toplevel| {init} [doc]:no redef visibility kwinit methid? signature kwdo stmtso kwend? {-> New propdef.concrete_init(doc.doc, redef.kwredef, visibility, kwinit, methid, signature, stmtso.expr)}
-!toplevel| {type} [doc]:no redef visibility kwtype classid typing {-> New propdef.type(doc.doc, redef.kwredef, visibility, kwtype, classid, typing.type)}
+!toplevel| {var} [doc]:no readable? writable? redef visibility kwvar attrid typing? {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, Null, Null)}
+!toplevel| {var2} [doc]:no readable? writable? redef visibility kwvar attrid typing? assign [n2]:no expr {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, Null, expr)}
+!toplevel| {var3} [doc]:no redef visibility kwvar id typing? writable2? annotation_withend? {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, annotation_withend.annotations, Null)}
+!toplevel| {var4} [doc]:no redef visibility kwvar id typing? writable2? assign [n2]:no expr_nois annotation_withend? {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, annotation_withend.annotations, expr_nois.expr)}
+!toplevel| {init} [doc]:no redef visibility kwinit methid? signature annotation_noend? kwdo stmtso kwend? {-> New propdef.concrete_init(doc.doc, redef.kwredef, visibility, kwinit, methid, signature, annotation_noend.annotations, stmtso.expr)}
+!toplevel| {type} [doc]:no redef visibility kwtype classid typing annotation_withend? {-> New propdef.type(doc.doc, redef.kwredef, visibility, kwtype, classid, typing.type, annotation_withend.annotations)}
!toplevel| {extern_init} [doc]:no redef visibility kwnew methid? signature kwis kwextern string? extern_calls? extern_code_block? {-> New propdef.extern_init(doc.doc, redef.kwredef, visibility, kwnew, methid, signature, string, extern_calls, extern_code_block)}
!toplevel| {extern_init_implicit} [doc]:no redef visibility kwnew methid? signature string? extern_calls? extern_code_block {-> New propdef.extern_init(doc.doc, redef.kwredef, visibility, kwnew, methid, signature, string, extern_calls, extern_code_block)}
;
+annotation_withend {-> annotations}
+ = {oneliner} kwis many_annotations {-> many_annotations.annotations}
+ | {more} kwis n1 line_annotations kwend {-> line_annotations.annotations}
+ ;
+annotation_noend {-> annotations}
+ = {oneliner} kwis many_annotations {-> many_annotations.annotations}
+ | {more} kwis n1 line_annotations {-> line_annotations.annotations}
+ ;
readable {-> able}
= redef kwreadable {-> New able.read(redef.kwredef, kwreadable)}
;
params_tail {-> param}
= comma no param {-> param};
param
- = {untyped} id {-> New param(id, Null, Null)}
- | id typing dotdotdot? {-> New param(id, typing.type, dotdotdot)}
+ = {untyped} id annotations? {-> New param(id, Null, Null, annotations)}
+ | id annotations? typing dotdotdot? {-> New param(id, typing.type, dotdotdot, annotations)}
;
closure_decls {->closure_decl*}
extern_code_body {-> extern_code_block} = no extern_code_block {-> extern_code_block};
/* TYPES *********************************************************************/
-type~nobra {-> type}
- = {simple} kwnullable? classid {-> New type(kwnullable, classid, [])}
-!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra {-> New type(kwnullable, classid, [types.type])}
+type~nobra~nopar {-> type}
+ = {simple} kwnullable? classid annotations~nopar? {-> New type(kwnullable, classid, [], annotations~nopar.annotations)}
+!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra annotations~nopar? {-> New type(kwnullable, classid, [types.type], annotations~nopar.annotations)}
;
types {-> type*}
= type types_tail* {-> [type, types_tail.type]};
= stmt stmts_tail* n kwend {-> New expr.block([stmt.expr, stmts_tail.expr], kwend)};
stmts_tail {-> expr}
= n stmt {-> stmt.expr};
-stmt~withelse {-> expr}
+stmt~withelse~noexpr~nopar {-> expr}
= {vardecl} vardecl~withelse {-> vardecl~withelse.expr}
- | {assign} assignment~withelse {-> assignment~withelse.expr}
+ | {assign} assignment~withelse~nopar {-> assignment~withelse~nopar.expr}
| {return} kwreturn expr_final~withelse? {-> New expr.return(kwreturn, expr_final~withelse.expr)}
| {break} kwbreak label? expr_final~withelse? {-> New expr.break(kwbreak, label, expr_final~withelse.expr)}
| {abort} kwabort {-> New expr.abort(kwabort)}
| {continue} kwcontinue label? expr_final~withelse? {-> New expr.continue(kwcontinue, label, expr_final~withelse.expr)}
| {do} do~withelse {-> do~withelse.expr}
- | {if} if~withelse {-> if~withelse.expr}
+!noexpr | {if} if~withelse {-> if~withelse.expr}
| {while} while~withelse {-> while~withelse.expr}
| {loop} loop~withelse {-> loop~withelse.expr}
| {for} for~withelse {-> for~withelse.expr}
| {assert} assert~withelse {-> assert~withelse.expr}
- | {call} recv id args_nopar closure_defs~withelse? {-> New expr.call(recv.expr, id, args_nopar.exprs, [closure_defs~withelse.closure_def])}
- | {super} qualified? kwsuper args_nopar {-> New expr.super(qualified, kwsuper, args_nopar.exprs)}
- | {init} recv kwinit args_nopar {-> New expr.init(recv.expr, kwinit, args_nopar.exprs)}
+!noexpr | {call} recv id args_nopar closure_defs~withelse? {-> New expr.call(recv.expr, id, args_nopar.exprs, [closure_defs~withelse.closure_def])}
+!noexpr | {super} qualified? kwsuper args_nopar {-> New expr.super(qualified, kwsuper, args_nopar.exprs)}
+!noexpr | {init} recv kwinit args_nopar {-> New expr.init(recv.expr, kwinit, args_nopar.exprs)}
| {debug_type_is} kwdebug kwtype type column expr_final~withelse {-> New expr.debug_type(kwdebug, kwtype, expr_final~withelse.expr, type) }
;
;
vardecl~withelse{-> expr}
- = kwvar id typing? {-> New expr.vardecl(kwvar, id, typing.type, Null, Null)}
- | {assign} kwvar id typing? assign no expr_final~withelse {-> New expr.vardecl(kwvar, id, typing.type, assign, expr_final~withelse.expr)}
+ = kwvar id annotations? typing? {-> New expr.vardecl(kwvar, id, typing.type, Null, Null, annotations)}
+ | {assign} kwvar id annotations? typing? assign no expr_final~withelse {-> New expr.vardecl(kwvar, id, typing.type, assign, expr_final~withelse.expr, annotations)}
;
-assignment~withelse {-> expr}
- = {attr} recv attrid assign expr_final~withelse {-> New expr.attr_assign(recv.expr, attrid, assign, expr_final~withelse.expr)}
- | {call} recv id args assign expr_final~withelse {-> New expr.call_assign(recv.expr, id, args.exprs, assign, expr_final~withelse.expr)}
- | {bra} expr_atom braargs assign expr_final~withelse {-> New expr.bra_assign(expr_atom.expr, braargs.exprs, assign, expr_final~withelse.expr)}
- | {attr_re} recv attrid assign_op expr_final~withelse {-> New expr.attr_reassign(recv.expr, attrid, assign_op, expr_final~withelse.expr)}
- | {call_re} recv id args assign_op expr_final~withelse {-> New expr.call_reassign(recv.expr, id, args.exprs, assign_op, expr_final~withelse.expr)}
- | {bra_re} expr_atom braargs assign_op expr_final~withelse {-> New expr.bra_reassign(expr_atom.expr, braargs.exprs, assign_op, expr_final~withelse.expr)}
+assignment~withelse~nopar {-> expr}
+ = {attr} recv~nopar attrid assign expr_final~withelse {-> New expr.attr_assign(recv~nopar.expr, attrid, assign, expr_final~withelse.expr)}
+ | {call} recv~nopar id args assign expr_final~withelse {-> New expr.call_assign(recv~nopar.expr, id, args.exprs, assign, expr_final~withelse.expr)}
+ | {bra} expr_atom~nopar braargs assign expr_final~withelse {-> New expr.bra_assign(expr_atom~nopar.expr, braargs.exprs, assign, expr_final~withelse.expr)}
+ | {attr_re} recv~nopar attrid assign_op expr_final~withelse {-> New expr.attr_reassign(recv~nopar.expr, attrid, assign_op, expr_final~withelse.expr)}
+ | {call_re} recv~nopar id args assign_op expr_final~withelse {-> New expr.call_reassign(recv~nopar.expr, id, args.exprs, assign_op, expr_final~withelse.expr)}
+ | {bra_re} expr_atom~nopar braargs assign_op expr_final~withelse {-> New expr.bra_reassign(expr_atom~nopar.expr, braargs.exprs, assign_op, expr_final~withelse.expr)}
;
assign_op
= {plus} pluseq
!nobra!nopar | {closure_bra} expr_atom braargs closure_defs~withelse {-> New expr.bra(expr_atom.expr, braargs.exprs, [closure_defs~withelse.closure_def])}
;
-expr~nopar~nobra {-> expr}
- = expr_and~nopar~nobra {-> expr_and~nopar~nobra.expr}
- | {ifexpr} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:expr [n4]:no kwelse [n5]:no [else]:expr~nopar~nobra {-> New expr.ifexpr(kwif, expr, kwthen, then, kwelse, else.expr)}
+expr~nopar~nobra~nois {-> expr}
+ = expr_and~nopar~nobra~nois {-> expr_and~nopar~nobra~nois.expr}
+ | {ifexpr} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:expr [n4]:no kwelse [n5]:no [else]:expr~nopar~nobra~nois {-> New expr.ifexpr(kwif, expr, kwthen, then, kwelse, else.expr)}
;
-expr_and~nopar~nobra {-> expr}
- = expr_not~nopar~nobra {-> expr_not~nopar~nobra.expr}
- | {:or} expr_and~nopar~nobra :kwor :no expr_not~nopar~nobra
- | {:and} expr_and~nopar~nobra :kwand :no expr_not~nopar~nobra
- | {:or_else} expr_and~nopar~nobra :kwor :kwelse :no expr_not~nopar~nobra
+expr_and~nopar~nobra~nois {-> expr}
+ = expr_not~nopar~nobra~nois {-> expr_not~nopar~nobra~nois.expr}
+ | {:or} expr_and~nopar~nobra~nois :kwor :no expr_not~nopar~nobra~nois
+ | {:and} expr_and~nopar~nobra~nois :kwand :no expr_not~nopar~nobra~nois
+ | {:or_else} expr_and~nopar~nobra~nois :kwor :kwelse :no expr_not~nopar~nobra~nois
;
-expr_not~nopar~nobra {-> expr}
- = expr_eq~nopar~nobra {-> expr_eq~nopar~nobra.expr}
- | {not} kwnot no expr_not~nopar~nobra {-> New expr.not(kwnot, expr_not~nopar~nobra.expr)}
+expr_not~nopar~nobra~nois {-> expr}
+ = expr_eq~nopar~nobra~nois {-> expr_eq~nopar~nobra~nois.expr}
+ | {not} kwnot no expr_not~nopar~nobra~nois {-> New expr.not(kwnot, expr_not~nopar~nobra~nois.expr)}
;
-expr_eq~nopar~nobra {-> expr}
+expr_eq~nopar~nobra~nois {-> expr}
= expr_add~nopar~nobra {-> expr_add~nopar~nobra.expr}
| {:eq} expr_add~nopar~nobra :eq :no [expr2]:expr_add~nopar~nobra
- | {:ee} expr_add~nopar~nobra :kwis :no [expr2]:expr_add~nopar~nobra
+!nois | {ee} [expr]:expr_add~nopar~nobra kwis no [expr2]:expr_add~nopar~nobra {-> New expr.ee(expr.expr, expr2.expr)}
| {:ne} expr_add~nopar~nobra :ne :no [expr2]:expr_add~nopar~nobra
| {:lt} expr_add~nopar~nobra :lt :no [expr2]:expr_add~nopar~nobra
| {:le} expr_add~nopar~nobra :le :no [expr2]:expr_add~nopar~nobra
- | {:ll} expr_eq~nopar~nobra :ll :no [expr2]:expr_add~nopar~nobra
+ | {:ll} expr_eq~nopar~nobra~nois :ll :no [expr2]:expr_add~nopar~nobra
| {:gt} expr_add~nopar~nobra :gt :no [expr2]:expr_add~nopar~nobra
| {:ge} expr_add~nopar~nobra :ge :no [expr2]:expr_add~nopar~nobra
- | {:gg} expr_eq~nopar~nobra :gg :no [expr2]:expr_add~nopar~nobra
+ | {:gg} expr_eq~nopar~nobra~nois :gg :no [expr2]:expr_add~nopar~nobra
| {:starship} expr_add~nopar~nobra :starship :no [expr2]:expr_add~nopar~nobra
| {:isa} expr_add~nopar~nobra :kwisa :no type~nobra
;
expr_new~nopar~nobra {-> expr}
= expr_atom~nopar~nobra {-> expr_atom~nopar~nobra.expr}
- | {new} kwnew no type~nobra args {-> New expr.new(kwnew, type~nobra.type, Null, args.exprs)}
+ | {new} kwnew no type~nobra_nopar args {-> New expr.new(kwnew, type~nobra_nopar.type, Null, args.exprs)}
| {isset_attr} kwisset recv~nopar~nobra attrid {-> New expr.isset_attr(kwisset, recv~nopar~nobra.expr, attrid)}
;
| {super} qualified? kwsuper args {-> New expr.super(qualified, kwsuper, args.exprs)}
| {init} recv~nopar~nobra kwinit args {-> New expr.init(recv~nopar~nobra.expr, kwinit, args.exprs)}
!nobra | {bra} expr_atom~nopar braargs {-> New expr.bra(expr_atom~nopar.expr, braargs.exprs, [])}
- | {new} kwnew no type~nobra dot [n2]:no id args {-> New expr.new(kwnew, type~nobra.type, id, args.exprs)}
+ | {new} kwnew no type~nobra_nopar dot [n2]:no id args {-> New expr.new(kwnew, type~nobra_nopar.type, id, args.exprs)}
// !nopar to unambiguise 'foo[5].bar' between '(foo[5]).bar' and 'foo([5].bar),
-!nobra!nopar | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra {-> New expr.crange(obra, expr, expr2.expr, cbra)}
-!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra {-> New expr.orange(obra, expr, expr2.expr, cbra)}
-!nobra!nopar | {array} braargs {-> New expr.array(braargs.exprs)}
- | {:self} kwself
- | {:true} kwtrue
- | {:false} kwfalse
- | {:null} kwnull
- | {:int} number
- | {:float} float
- | {:char} char
- | {:string} string
+!nobra!nopar | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra annotations? {-> New expr.crange(obra, expr, expr2.expr, cbra, annotations)}
+!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra annotations? {-> New expr.orange(obra, expr, expr2.expr, cbra, annotations)}
+!nobra!nopar | {array} braargs annotations? {-> New expr.array(braargs.exprs, annotations)}
+ | {self} kwself annotations? {-> New expr.self(kwself, annotations)}
+ | {true} kwtrue annotations? {-> New expr.true(kwtrue, annotations)}
+ | {false} kwfalse annotations? {-> New expr.false(kwfalse, annotations)}
+ | {null} kwnull annotations? {-> New expr.null(kwnull, annotations)}
+ | {int} number annotations? {-> New expr.int(number, annotations)}
+ | {float} float annotations? {-> New expr.float(float, annotations)}
+ | {char} char annotations? {-> New expr.char(char, annotations)}
+ | {string} string annotations? {-> New expr.string(string, annotations)}
| {superstring} superstring {-> superstring.expr}
-!nopar | {par} opar expr cpar {-> New expr.par(opar, expr, cpar)}
+!nopar | {par} opar expr cpar annotations? {-> New expr.par(opar, expr, cpar, annotations)}
| {as_cast} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no type [n4]:no cpar {-> New expr.as_cast(expr_atom~nopar~nobra.expr, kwas, opar, type, cpar)}
| {as_notnull} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no kwnot [n4]:no kwnull [n5]:no cpar {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, opar, kwnot, kwnull, cpar)}
;
superstring {-> expr}
- = superstring_start superstring_middle* superstring_end {-> New expr.superstring([superstring_start.expr, superstring_middle.expr, superstring_end.expr])};
+ = superstring_start superstring_middle* superstring_end annotations? {-> New expr.superstring([superstring_start.expr, superstring_middle.expr, superstring_end.expr], annotations)};
superstring_start {-> expr*}
= start_string_p no expr [n2]:no {-> [start_string_p.expr, expr]};
start_string_p {-> expr}
superstring_end {-> expr}
= end_string {-> New expr.end_string(end_string)};
+/* ANNOTATIONS *******************************************************************/
+
+annotations~nopar {-> annotations}
+ = {one} at one_annotation~nopar {-> New annotations(at, Null, [one_annotation~nopar.annotation], Null)}
+ | {many} at opar annotation_list cpar {-> New annotations(at, opar, [annotation_list.annotation], cpar)}
+ ;
+
+one_annotation~nopar {-> annotation}
+ = {alone} atid annotations~nopar? {-> New annotation(atid, Null, [], Null, annotations~nopar.annotations)}
+// !nopar to unambiguise 'new T@foo(bar)' between 'new T@(foo(bar))' and 'new (T@foo)(bar)'
+!nopar | {args} atid opar at_args cpar annotations~nopar? {-> New annotation(atid, opar, [at_args.at_arg], cpar, annotations~nopar.annotations)}
+ ;
+
+many_annotations {-> annotations}
+ = {many} annotation_list {-> New annotations(Null, Null, [annotation_list.annotation], Null)}
+ ;
+
+annotation_list {-> annotation*}
+ = {many} one_annotation annotations_tail* {-> [one_annotation.annotation, annotations_tail.annotation] }
+ ;
+
+line_annotations~forclass {-> annotations}
+ = line_annotation~forclass+ {-> New annotations(Null, Null, [line_annotation~forclass.annotation], Null) }
+ ;
+line_annotation~forclass {-> annotation}
+ = [doc]:no atid~forclass annotations? n1 {-> New annotation(atid~forclass.atid, Null, [], Null, annotations)}
+ | {args} [doc]:no atid~forclass opar at_args cpar annotations? n1 {-> New annotation(atid~forclass.atid, opar, [at_args.at_arg], cpar, annotations)}
+ | {nopar} [doc]:no atid~forclass at_args_nopar n1 {-> New annotation(atid~forclass.atid, Null, [at_args_nopar.at_arg], Null, Null)}
+ ;
+
+annotations_tail {-> annotation}
+ = comma no one_annotation {-> one_annotation.annotation}
+ ;
+
+at_args~nopar {-> at_arg* }
+ = {many} at_arg~nopar at_args_tail* {-> [at_arg~nopar.at_arg, at_args_tail.at_arg]}
+ ;
+
+at_args_tail {-> at_arg}
+ = comma no at_arg {-> at_arg}
+ ;
+
+at_arg~nopar {-> at_arg}
+ = {type} type {-> New at_arg.type(type)}
+ | {expr} expr~nopar {-> New at_arg.expr(expr~nopar.expr)}
+ | {stmt} stmt_noexpr~nopar {-> New at_arg.expr(stmt_noexpr~nopar.expr)}
+!nopar | {at} annotations {-> New at_arg.at(annotations.annotations)}
+ ;
+
+atid~forclass {-> atid}
+ = {id} id {-> New atid.id(id)}
+//!forclass | {kwextern} kwextern {-> New atid.kwextern(kwextern)}
+//!forclass | {kwintern} kwintern {-> New atid.kwintern(kwintern)}
+!forclass | {kwreadable} kwreadable {-> New atid.kwreadable(kwreadable)}
+!forclass | {kwwritable} kwwritable {-> New atid.kwwritable(kwwritable)}
+ | {kwimport} kwimport {-> New atid.kwimport(kwimport)}
+ ;
+
/* MISC **********************************************************************/
recv~nopar~nobra {-> expr}
module = moduledecl? [imports]:import* [extern_code_blocks]:extern_code_block* [classdefs]:classdef*;
moduledecl
- = doc? kwmodule [name]:module_name;
+ = doc? kwmodule [name]:module_name annotations?;
-import = {std} visibility kwimport [name]:module_name
+import = {std} visibility kwimport [name]:module_name annotations?
| {no} visibility kwimport kwend
;
| {intrude} kwintrude
;
-classdef= {std} doc? kwredef? visibility classkind [id]:classid? [formaldefs]:formaldef* extern_code_block? [superclasses]:superclass* [propdefs]:propdef* kwend
+classdef= {std} doc? kwredef? visibility classkind [id]:classid? [formaldefs]:formaldef* annotations? extern_code_block? [superclasses]:superclass* [propdefs]:propdef* kwend
| {top} [propdefs]:propdef*
| {main} [propdefs]:propdef*
;
| {enum} kwenum
| {extern} kwextern kwclass?
;
-formaldef = [id]:classid type?;
-superclass = kwsuper type;
+formaldef = [id]:classid type? annotations?;
+superclass = kwsuper type annotations?;
-propdef = {attr} doc? [readable]:able? [writable]:able? kwredef? visibility kwvar [id]:attrid? [id2]:id? type? expr?
+propdef = {attr} doc? [readable]:able? [writable]:able? kwredef? visibility kwvar [id]:attrid? [id2]:id? type? annotations? expr?
| {meth} doc? kwredef? visibility methid signature
- | {deferred_meth} doc? kwredef? visibility kwmeth methid signature
+ | {deferred_meth} doc? kwredef? visibility kwmeth methid signature annotations?
| {intern_meth} doc? kwredef? visibility kwmeth methid signature
| {extern_meth} doc? kwredef? visibility kwmeth methid signature [extern]:string? extern_calls? extern_code_block?
- | {concrete_meth} doc? kwredef? visibility kwmeth methid signature [block]:expr?
- | {concrete_init} doc? kwredef? visibility kwinit methid? signature [block]:expr?
+ | {concrete_meth} doc? kwredef? visibility kwmeth methid signature annotations? [block]:expr?
+ | {concrete_init} doc? kwredef? visibility kwinit methid? signature annotations? [block]:expr?
+ //| {concrete_new} doc? kwredef? visibility kwnew methid? signature [block]:expr?
| {extern_init} doc? kwredef? visibility kwnew methid? signature [extern]:string? extern_calls? extern_code_block?
| {main_meth} kwredef? [block]:expr?
- | {type} doc? kwredef? visibility kwtype [id]:classid type
+ | {type} doc? kwredef? visibility kwtype [id]:classid type annotations?
;
able = {read} kwredef? kwreadable
signature = opar? [params]:param* cpar? type? [closure_decls]:closure_decl*;
-param = id type? dotdotdot?
+param = id type? dotdotdot? annotations?
;
closure_decl = kwbreak? bang id signature expr?
;
-type = kwnullable? [id]:classid [types]:type*;
+type = kwnullable? [id]:classid [types]:type* annotations?;
label = kwlabel id;
expr = {block} expr* kwend?
- | {vardecl} kwvar id type? assign? expr?
+ | {vardecl} kwvar id type? assign? expr? annotations?
| {return} kwreturn? expr?
| {break} kwbreak label? expr?
| {abort} kwabort
| {var} id
| {var_assign} id assign [value]:expr
| {var_reassign} id assign_op [value]:expr
- | {range} expr [expr2]:expr
- | {crange} obra expr [expr2]:expr cbra
- | {orange} obra expr [expr2]:expr [cbra]:obra
- | {array} [exprs]:exprs
- | {self} kwself
+ | {range} expr [expr2]:expr annotations?
+ | {crange} obra expr [expr2]:expr cbra annotations?
+ | {orange} obra expr [expr2]:expr [cbra]:obra annotations?
+ | {array} [exprs]:exprs annotations?
+ | {self} kwself annotations?
| {implicit_self}
- | {true} kwtrue
- | {false} kwfalse
- | {null} kwnull
- | {int} number
- | {float} float
- | {char} char
- | {string} string
+ | {true} kwtrue annotations?
+ | {false} kwfalse annotations?
+ | {null} kwnull annotations?
+ | {int} number annotations?
+ | {float} float annotations?
+ | {char} char annotations?
+ | {string} string annotations?
| {start_string} [string]:start_string
| {mid_string} [string]:mid_string
| {end_string} [string]:end_string
- | {superstring} [exprs]:expr*
- | {par} opar expr cpar
+ | {superstring} [exprs]:expr* annotations?
+ | {par} opar expr cpar annotations?
| {as_cast} expr kwas opar type cpar
| {as_notnull} expr kwas opar kwnot kwnull cpar
| {isset_attr} kwisset expr [id]:attrid
doc = comment+;
+annotations = at? opar? [items]:annotation* cpar?;
+
+annotation = atid opar? [args]:at_arg* cpar? annotations?;
+
+at_arg
+ = {type} type
+ | {expr} expr
+ | {at} annotations
+ ;
+atid = {id} id | {kwextern} [id]:kwextern | {kwintern} [id]:kwintern | {kwreadable} [id]:kwreadable | {kwwritable} [id]:kwwritable | {kwimport} [id]:kwimport;
+
/*****************************************************************************/
(new ComputeProdLocationVisitor).enter_visit(node)
return node
else if action_type == 3 then # ERROR
- var node2 = new AError.init_error("Syntax error: unexpected {token}.", token.location)
+ var node2 = new AParserError.init_parser_error("Syntax error: unexpected {token}.", token.location, token)
var node = new Start(null, node2)
return node
end
new ReduceAction62(0),
new ReduceAction63(0),
new ReduceAction64(1),
- new ReduceAction65(2),
+ new ReduceAction65(1),
new ReduceAction66(2),
- new ReduceAction67(3),
- new ReduceAction68(3),
- new ReduceAction69(4),
- new ReduceAction69(4),
- new ReduceAction71(5),
- new ReduceAction72(5),
+ new ReduceAction67(2),
+ new ReduceAction68(2),
+ new ReduceAction69(3),
+ new ReduceAction70(3),
+ new ReduceAction71(4),
+ new ReduceAction71(4),
new ReduceAction73(5),
new ReduceAction74(5),
new ReduceAction75(5),
new ReduceAction100(5),
new ReduceAction101(5),
new ReduceAction102(5),
- new ReduceAction103(6),
- new ReduceAction104(6),
- new ReduceAction105(6),
- new ReduceAction106(6),
- new ReduceAction107(6),
- new ReduceAction108(6),
- new ReduceAction109(7),
- new ReduceAction110(7),
- new ReduceAction111(8),
- new ReduceAction112(9),
- new ReduceAction113(9),
- new ReduceAction114(10),
- new ReduceAction115(11),
- new ReduceAction116(12),
- new ReduceAction117(12),
- new ReduceAction118(12),
- new ReduceAction119(12),
- new ReduceAction120(12),
- new ReduceAction121(12),
- new ReduceAction122(12),
- new ReduceAction123(12),
- new ReduceAction124(12),
- new ReduceAction125(12),
- new ReduceAction126(12),
- new ReduceAction127(12),
- new ReduceAction128(12),
- new ReduceAction129(12),
- new ReduceAction130(12),
- new ReduceAction131(12),
- new ReduceAction132(12),
- new ReduceAction133(12),
- new ReduceAction134(12),
- new ReduceAction135(12),
- new ReduceAction136(12),
- new ReduceAction137(12),
- new ReduceAction138(12),
- new ReduceAction139(12),
- new ReduceAction140(12),
- new ReduceAction141(12),
- new ReduceAction142(12),
- new ReduceAction143(12),
- new ReduceAction144(12),
- new ReduceAction145(12),
- new ReduceAction146(12),
- new ReduceAction147(12),
- new ReduceAction148(12),
- new ReduceAction149(12),
- new ReduceAction150(12),
- new ReduceAction151(12),
- new ReduceAction152(12),
+ new ReduceAction103(5),
+ new ReduceAction104(5),
+ new ReduceAction105(5),
+ new ReduceAction106(5),
+ new ReduceAction107(5),
+ new ReduceAction108(5),
+ new ReduceAction109(5),
+ new ReduceAction110(5),
+ new ReduceAction111(5),
+ new ReduceAction112(5),
+ new ReduceAction113(5),
+ new ReduceAction114(5),
+ new ReduceAction115(5),
+ new ReduceAction116(5),
+ new ReduceAction117(5),
+ new ReduceAction118(5),
+ new ReduceAction119(5),
+ new ReduceAction120(5),
+ new ReduceAction121(5),
+ new ReduceAction122(5),
+ new ReduceAction123(5),
+ new ReduceAction124(5),
+ new ReduceAction125(5),
+ new ReduceAction126(5),
+ new ReduceAction127(5),
+ new ReduceAction128(5),
+ new ReduceAction129(5),
+ new ReduceAction130(5),
+ new ReduceAction131(5),
+ new ReduceAction132(5),
+ new ReduceAction133(5),
+ new ReduceAction134(5),
+ new ReduceAction135(5),
+ new ReduceAction136(5),
+ new ReduceAction137(6),
+ new ReduceAction138(6),
+ new ReduceAction139(6),
+ new ReduceAction140(6),
+ new ReduceAction141(6),
+ new ReduceAction142(6),
+ new ReduceAction143(7),
+ new ReduceAction144(7),
+ new ReduceAction145(8),
+ new ReduceAction146(9),
+ new ReduceAction147(9),
+ new ReduceAction148(9),
+ new ReduceAction149(9),
+ new ReduceAction150(10),
+ new ReduceAction151(10),
+ new ReduceAction152(11),
new ReduceAction153(12),
new ReduceAction154(12),
new ReduceAction155(12),
new ReduceAction249(12),
new ReduceAction250(12),
new ReduceAction251(12),
- new ReduceAction252(13),
- new ReduceAction253(13),
- new ReduceAction254(14),
- new ReduceAction255(14),
- new ReduceAction256(15),
- new ReduceAction257(15),
- new ReduceAction258(16),
- new ReduceAction259(16),
- new ReduceAction260(16),
- new ReduceAction261(16),
- new ReduceAction262(17),
- new ReduceAction263(17),
- new ReduceAction264(17),
- new ReduceAction265(17),
- new ReduceAction266(17),
- new ReduceAction267(17),
- new ReduceAction268(17),
- new ReduceAction269(17),
- new ReduceAction270(17),
- new ReduceAction271(17),
- new ReduceAction272(17),
- new ReduceAction273(17),
- new ReduceAction274(17),
- new ReduceAction275(17),
- new ReduceAction276(17),
- new ReduceAction277(17),
- new ReduceAction278(17),
- new ReduceAction279(17),
- new ReduceAction280(18),
- new ReduceAction281(18),
- new ReduceAction282(18),
- new ReduceAction283(18),
- new ReduceAction284(18),
- new ReduceAction285(18),
- new ReduceAction286(18),
- new ReduceAction287(18),
- new ReduceAction288(18),
- new ReduceAction289(18),
- new ReduceAction290(18),
- new ReduceAction291(18),
- new ReduceAction292(19),
- new ReduceAction293(19),
- new ReduceAction294(19),
- new ReduceAction295(19),
- new ReduceAction296(19),
- new ReduceAction297(19),
- new ReduceAction298(20),
- new ReduceAction299(20),
- new ReduceAction300(21),
- new ReduceAction301(22),
- new ReduceAction302(22),
- new ReduceAction303(22),
- new ReduceAction304(23),
- new ReduceAction305(24),
- new ReduceAction306(24),
- new ReduceAction307(24),
- new ReduceAction308(24),
- new ReduceAction309(24),
- new ReduceAction310(24),
- new ReduceAction311(25),
- new ReduceAction312(26),
- new ReduceAction313(26),
- new ReduceAction314(27),
- new ReduceAction315(28),
- new ReduceAction315(28),
- new ReduceAction317(28),
- new ReduceAction318(29),
- new ReduceAction319(29),
- new ReduceAction320(29),
- new ReduceAction321(30),
- new ReduceAction322(30),
- new ReduceAction323(30),
- new ReduceAction324(31),
- new ReduceAction325(32),
- new ReduceAction326(32),
- new ReduceAction327(33),
- new ReduceAction328(34),
- new ReduceAction329(34),
- new ReduceAction330(34),
- new ReduceAction331(34),
- new ReduceAction332(35),
- new ReduceAction333(35),
- new ReduceAction334(36),
- new ReduceAction334(37),
- new ReduceAction336(38),
- new ReduceAction337(38),
- new ReduceAction338(38),
- new ReduceAction339(38),
- new ReduceAction340(39),
- new ReduceAction341(39),
- new ReduceAction342(40),
- new ReduceAction343(40),
- new ReduceAction344(41),
- new ReduceAction345(41),
- new ReduceAction336(42),
- new ReduceAction339(43),
- new ReduceAction339(43),
- new ReduceAction349(43),
- new ReduceAction350(43),
- new ReduceAction351(43),
- new ReduceAction352(43),
- new ReduceAction353(43),
- new ReduceAction354(43),
- new ReduceAction355(43),
- new ReduceAction356(43),
- new ReduceAction357(43),
- new ReduceAction358(43),
- new ReduceAction359(43),
- new ReduceAction339(43),
- new ReduceAction339(43),
- new ReduceAction339(43),
- new ReduceAction339(43),
- new ReduceAction339(43),
- new ReduceAction339(43),
- new ReduceAction366(43),
- new ReduceAction367(43),
- new ReduceAction368(43),
- new ReduceAction369(43),
- new ReduceAction370(43),
- new ReduceAction371(43),
- new ReduceAction372(43),
- new ReduceAction373(43),
- new ReduceAction374(43),
- new ReduceAction375(44),
- new ReduceAction376(45),
- new ReduceAction377(45),
- new ReduceAction378(46),
- new ReduceAction379(46),
- new ReduceAction380(46),
- new ReduceAction381(46),
- new ReduceAction382(46),
- new ReduceAction383(46),
- new ReduceAction384(46),
- new ReduceAction385(46),
- new ReduceAction386(46),
- new ReduceAction387(47),
- new ReduceAction388(47),
- new ReduceAction389(47),
- new ReduceAction390(47),
- new ReduceAction391(47),
- new ReduceAction392(47),
- new ReduceAction393(48),
- new ReduceAction394(48),
- new ReduceAction395(49),
- new ReduceAction396(50),
- new ReduceAction397(50),
- new ReduceAction398(50),
- new ReduceAction399(50),
- new ReduceAction400(51),
- new ReduceAction401(51),
- new ReduceAction402(51),
- new ReduceAction403(51),
- new ReduceAction404(51),
- new ReduceAction405(51),
- new ReduceAction406(51),
- new ReduceAction407(51),
- new ReduceAction408(51),
- new ReduceAction409(51),
- new ReduceAction410(52),
- new ReduceAction411(52),
- new ReduceAction412(53),
- new ReduceAction413(53),
- new ReduceAction414(54),
- new ReduceAction415(54),
- new ReduceAction416(54),
- new ReduceAction417(54),
- new ReduceAction418(54),
- new ReduceAction336(55),
- new ReduceAction338(55),
- new ReduceAction421(56),
- new ReduceAction422(56),
- new ReduceAction423(57),
- new ReduceAction424(57),
- new ReduceAction425(58),
- new ReduceAction426(58),
- new ReduceAction427(58),
- new ReduceAction428(58),
- new ReduceAction429(59),
- new ReduceAction430(59),
- new ReduceAction431(59),
- new ReduceAction432(59),
- new ReduceAction433(60),
- new ReduceAction339(61),
- new ReduceAction368(61),
- new ReduceAction369(61),
- new ReduceAction437(61),
- new ReduceAction339(62),
- new ReduceAction439(62),
- new ReduceAction339(63),
- new ReduceAction441(63),
- new ReduceAction442(63),
- new ReduceAction443(63),
- new ReduceAction339(64),
- new ReduceAction445(64),
- new ReduceAction339(65),
- new ReduceAction447(65),
- new ReduceAction448(65),
- new ReduceAction449(65),
- new ReduceAction450(65),
- new ReduceAction451(65),
- new ReduceAction452(65),
- new ReduceAction453(65),
- new ReduceAction454(65),
- new ReduceAction455(65),
- new ReduceAction456(65),
- new ReduceAction457(65),
- new ReduceAction339(66),
- new ReduceAction459(66),
- new ReduceAction460(66),
- new ReduceAction339(67),
- new ReduceAction462(67),
- new ReduceAction463(67),
- new ReduceAction464(67),
- new ReduceAction339(68),
- new ReduceAction466(68),
- new ReduceAction467(68),
- new ReduceAction339(69),
- new ReduceAction469(69),
- new ReduceAction470(69),
- new ReduceAction471(69),
- new ReduceAction472(70),
- new ReduceAction473(70),
- new ReduceAction366(70),
- new ReduceAction367(70),
- new ReduceAction370(70),
- new ReduceAction371(70),
- new ReduceAction372(70),
- new ReduceAction373(70),
- new ReduceAction480(70),
- new ReduceAction481(70),
- new ReduceAction482(70),
- new ReduceAction483(70),
- new ReduceAction484(70),
- new ReduceAction485(70),
- new ReduceAction486(70),
- new ReduceAction487(70),
- new ReduceAction488(70),
- new ReduceAction489(70),
- new ReduceAction490(70),
- new ReduceAction491(70),
- new ReduceAction492(70),
- new ReduceAction339(70),
- new ReduceAction494(70),
- new ReduceAction495(70),
- new ReduceAction496(70),
- new ReduceAction497(71),
- new ReduceAction498(71),
- new ReduceAction499(72),
- new ReduceAction500(73),
- new ReduceAction499(74),
- new ReduceAction502(75),
- new ReduceAction503(76),
- new ReduceAction504(77),
- new ReduceAction505(77),
- new ReduceAction506(77),
- new ReduceAction504(78),
- new ReduceAction508(78),
- new ReduceAction505(78),
- new ReduceAction506(78),
- new ReduceAction511(79),
- new ReduceAction512(80),
- new ReduceAction513(80),
- new ReduceAction514(81),
- new ReduceAction515(82),
- new ReduceAction516(82),
- new ReduceAction517(83),
- new ReduceAction518(83),
- new ReduceAction519(83),
- new ReduceAction520(83),
- new ReduceAction521(84),
- new ReduceAction522(84),
- new ReduceAction523(84),
- new ReduceAction524(85),
- new ReduceAction525(86),
- new ReduceAction526(87),
- new ReduceAction526(87),
- new ReduceAction528(88),
- new ReduceAction529(88),
- new ReduceAction68(88),
- new ReduceAction531(89),
- new ReduceAction532(89),
- new ReduceAction533(90),
- new ReduceAction534(90),
- new ReduceAction526(90),
- new ReduceAction115(91),
- new ReduceAction116(92),
- new ReduceAction117(92),
- new ReduceAction118(92),
- new ReduceAction119(92),
- new ReduceAction120(92),
- new ReduceAction121(92),
- new ReduceAction126(92),
- new ReduceAction127(92),
- new ReduceAction128(92),
- new ReduceAction129(92),
- new ReduceAction130(92),
- new ReduceAction131(92),
- new ReduceAction132(92),
- new ReduceAction133(92),
- new ReduceAction134(92),
- new ReduceAction135(92),
- new ReduceAction136(92),
- new ReduceAction137(92),
- new ReduceAction138(92),
- new ReduceAction139(92),
- new ReduceAction140(92),
- new ReduceAction141(92),
- new ReduceAction142(92),
- new ReduceAction143(92),
- new ReduceAction144(92),
- new ReduceAction145(92),
- new ReduceAction280(93),
- new ReduceAction281(93),
- new ReduceAction282(93),
- new ReduceAction283(93),
- new ReduceAction288(93),
- new ReduceAction289(93),
- new ReduceAction328(94),
- new ReduceAction329(94),
- new ReduceAction339(95),
- new ReduceAction368(95),
- new ReduceAction369(95),
- new ReduceAction339(96),
- new ReduceAction439(96),
- new ReduceAction339(97),
- new ReduceAction441(97),
- new ReduceAction442(97),
- new ReduceAction443(97),
- new ReduceAction339(98),
- new ReduceAction445(98),
- new ReduceAction339(99),
- new ReduceAction447(99),
- new ReduceAction448(99),
- new ReduceAction449(99),
- new ReduceAction450(99),
- new ReduceAction451(99),
- new ReduceAction452(99),
- new ReduceAction453(99),
- new ReduceAction454(99),
- new ReduceAction455(99),
- new ReduceAction456(99),
- new ReduceAction457(99),
- new ReduceAction339(100),
- new ReduceAction459(100),
- new ReduceAction460(100),
- new ReduceAction339(101),
- new ReduceAction462(101),
- new ReduceAction463(101),
- new ReduceAction464(101),
- new ReduceAction339(102),
- new ReduceAction466(102),
- new ReduceAction467(102),
- new ReduceAction339(103),
- new ReduceAction469(103),
- new ReduceAction470(103),
- new ReduceAction471(103),
- new ReduceAction472(104),
- new ReduceAction473(104),
- new ReduceAction366(104),
- new ReduceAction367(104),
- new ReduceAction370(104),
- new ReduceAction371(104),
- new ReduceAction372(104),
- new ReduceAction373(104),
- new ReduceAction481(104),
- new ReduceAction485(104),
- new ReduceAction486(104),
- new ReduceAction487(104),
- new ReduceAction488(104),
- new ReduceAction489(104),
- new ReduceAction490(104),
- new ReduceAction491(104),
- new ReduceAction492(104),
- new ReduceAction339(104),
- new ReduceAction494(104),
- new ReduceAction495(104),
- new ReduceAction496(104),
- new ReduceAction336(105),
- new ReduceAction337(105),
- new ReduceAction338(105),
- new ReduceAction339(105),
- new ReduceAction339(106),
- new ReduceAction339(106),
- new ReduceAction349(106),
- new ReduceAction350(106),
- new ReduceAction351(106),
- new ReduceAction352(106),
+ new ReduceAction252(12),
+ new ReduceAction253(12),
+ new ReduceAction254(12),
+ new ReduceAction255(12),
+ new ReduceAction256(12),
+ new ReduceAction257(12),
+ new ReduceAction258(12),
+ new ReduceAction259(12),
+ new ReduceAction260(12),
+ new ReduceAction261(12),
+ new ReduceAction262(12),
+ new ReduceAction263(12),
+ new ReduceAction264(12),
+ new ReduceAction265(12),
+ new ReduceAction266(12),
+ new ReduceAction267(12),
+ new ReduceAction268(12),
+ new ReduceAction269(12),
+ new ReduceAction270(12),
+ new ReduceAction271(12),
+ new ReduceAction272(12),
+ new ReduceAction273(12),
+ new ReduceAction274(12),
+ new ReduceAction275(12),
+ new ReduceAction276(12),
+ new ReduceAction277(12),
+ new ReduceAction278(12),
+ new ReduceAction279(12),
+ new ReduceAction280(12),
+ new ReduceAction281(12),
+ new ReduceAction282(12),
+ new ReduceAction283(12),
+ new ReduceAction284(12),
+ new ReduceAction285(12),
+ new ReduceAction286(12),
+ new ReduceAction287(12),
+ new ReduceAction288(12),
+ new ReduceAction289(12),
+ new ReduceAction290(12),
+ new ReduceAction291(12),
+ new ReduceAction292(12),
+ new ReduceAction293(12),
+ new ReduceAction294(12),
+ new ReduceAction295(12),
+ new ReduceAction296(12),
+ new ReduceAction297(12),
+ new ReduceAction298(12),
+ new ReduceAction299(12),
+ new ReduceAction300(12),
+ new ReduceAction301(12),
+ new ReduceAction302(12),
+ new ReduceAction303(12),
+ new ReduceAction304(12),
+ new ReduceAction305(12),
+ new ReduceAction306(12),
+ new ReduceAction307(12),
+ new ReduceAction308(12),
+ new ReduceAction309(12),
+ new ReduceAction310(12),
+ new ReduceAction311(12),
+ new ReduceAction312(12),
+ new ReduceAction313(12),
+ new ReduceAction314(12),
+ new ReduceAction315(12),
+ new ReduceAction316(12),
+ new ReduceAction317(12),
+ new ReduceAction318(12),
+ new ReduceAction319(12),
+ new ReduceAction320(12),
+ new ReduceAction321(13),
+ new ReduceAction322(13),
+ new ReduceAction321(14),
+ new ReduceAction324(14),
+ new ReduceAction325(15),
+ new ReduceAction326(15),
+ new ReduceAction327(16),
+ new ReduceAction328(16),
+ new ReduceAction329(17),
+ new ReduceAction330(17),
+ new ReduceAction331(18),
+ new ReduceAction332(18),
+ new ReduceAction333(18),
+ new ReduceAction334(18),
+ new ReduceAction335(19),
+ new ReduceAction336(19),
+ new ReduceAction337(19),
+ new ReduceAction338(19),
+ new ReduceAction339(19),
+ new ReduceAction340(19),
+ new ReduceAction341(19),
+ new ReduceAction342(19),
+ new ReduceAction343(19),
+ new ReduceAction344(19),
+ new ReduceAction345(19),
+ new ReduceAction346(19),
+ new ReduceAction347(19),
+ new ReduceAction348(19),
+ new ReduceAction349(19),
+ new ReduceAction350(19),
+ new ReduceAction351(19),
+ new ReduceAction352(19),
+ new ReduceAction353(20),
+ new ReduceAction354(20),
+ new ReduceAction355(20),
+ new ReduceAction356(20),
+ new ReduceAction357(20),
+ new ReduceAction358(20),
+ new ReduceAction359(20),
+ new ReduceAction360(20),
+ new ReduceAction361(20),
+ new ReduceAction362(20),
+ new ReduceAction363(20),
+ new ReduceAction364(20),
+ new ReduceAction365(21),
+ new ReduceAction366(21),
+ new ReduceAction367(21),
+ new ReduceAction368(21),
+ new ReduceAction369(21),
+ new ReduceAction370(21),
+ new ReduceAction371(22),
+ new ReduceAction372(22),
+ new ReduceAction373(23),
+ new ReduceAction374(24),
+ new ReduceAction375(24),
+ new ReduceAction376(24),
+ new ReduceAction377(24),
+ new ReduceAction378(24),
+ new ReduceAction379(24),
+ new ReduceAction380(25),
+ new ReduceAction381(26),
+ new ReduceAction382(26),
+ new ReduceAction383(26),
+ new ReduceAction384(26),
+ new ReduceAction385(26),
+ new ReduceAction386(26),
+ new ReduceAction387(27),
+ new ReduceAction388(28),
+ new ReduceAction389(28),
+ new ReduceAction390(29),
+ new ReduceAction391(30),
+ new ReduceAction391(30),
+ new ReduceAction393(30),
+ new ReduceAction394(31),
+ new ReduceAction395(31),
+ new ReduceAction396(31),
+ new ReduceAction397(32),
+ new ReduceAction398(32),
+ new ReduceAction399(32),
+ new ReduceAction400(33),
+ new ReduceAction401(34),
+ new ReduceAction402(34),
+ new ReduceAction403(35),
+ new ReduceAction404(36),
+ new ReduceAction405(36),
+ new ReduceAction406(36),
+ new ReduceAction407(36),
+ new ReduceAction408(36),
+ new ReduceAction409(36),
+ new ReduceAction410(36),
+ new ReduceAction411(36),
+ new ReduceAction412(37),
+ new ReduceAction413(37),
+ new ReduceAction414(38),
+ new ReduceAction414(39),
+ new ReduceAction416(40),
+ new ReduceAction417(40),
+ new ReduceAction418(40),
+ new ReduceAction419(40),
+ new ReduceAction420(41),
+ new ReduceAction421(41),
+ new ReduceAction422(42),
+ new ReduceAction423(42),
+ new ReduceAction424(43),
+ new ReduceAction425(43),
+ new ReduceAction416(44),
+ new ReduceAction419(45),
+ new ReduceAction419(45),
+ new ReduceAction429(45),
+ new ReduceAction430(45),
+ new ReduceAction431(45),
+ new ReduceAction432(45),
+ new ReduceAction433(45),
+ new ReduceAction434(45),
+ new ReduceAction435(45),
+ new ReduceAction436(45),
+ new ReduceAction437(45),
+ new ReduceAction438(45),
+ new ReduceAction439(45),
+ new ReduceAction419(45),
+ new ReduceAction419(45),
+ new ReduceAction419(45),
+ new ReduceAction419(45),
+ new ReduceAction419(45),
+ new ReduceAction419(45),
+ new ReduceAction446(45),
+ new ReduceAction447(45),
+ new ReduceAction448(45),
+ new ReduceAction449(45),
+ new ReduceAction450(45),
+ new ReduceAction451(45),
+ new ReduceAction452(45),
+ new ReduceAction453(45),
+ new ReduceAction454(45),
+ new ReduceAction455(46),
+ new ReduceAction456(47),
+ new ReduceAction457(47),
+ new ReduceAction458(48),
+ new ReduceAction459(48),
+ new ReduceAction460(48),
+ new ReduceAction461(48),
+ new ReduceAction462(48),
+ new ReduceAction463(48),
+ new ReduceAction464(48),
+ new ReduceAction465(48),
+ new ReduceAction466(48),
+ new ReduceAction467(49),
+ new ReduceAction468(49),
+ new ReduceAction469(49),
+ new ReduceAction470(49),
+ new ReduceAction471(49),
+ new ReduceAction472(49),
+ new ReduceAction473(50),
+ new ReduceAction474(50),
+ new ReduceAction475(51),
+ new ReduceAction476(52),
+ new ReduceAction477(52),
+ new ReduceAction478(52),
+ new ReduceAction479(52),
+ new ReduceAction480(52),
+ new ReduceAction481(52),
+ new ReduceAction482(52),
+ new ReduceAction483(52),
+ new ReduceAction484(53),
+ new ReduceAction485(53),
+ new ReduceAction486(53),
+ new ReduceAction487(53),
+ new ReduceAction488(53),
+ new ReduceAction489(53),
+ new ReduceAction490(53),
+ new ReduceAction491(53),
+ new ReduceAction492(53),
+ new ReduceAction493(53),
+ new ReduceAction494(54),
+ new ReduceAction495(54),
+ new ReduceAction496(55),
+ new ReduceAction497(55),
+ new ReduceAction498(56),
+ new ReduceAction499(56),
+ new ReduceAction500(56),
+ new ReduceAction501(56),
+ new ReduceAction502(56),
+ new ReduceAction416(57),
+ new ReduceAction418(57),
+ new ReduceAction505(58),
+ new ReduceAction506(58),
+ new ReduceAction507(59),
+ new ReduceAction508(59),
+ new ReduceAction509(60),
+ new ReduceAction510(60),
+ new ReduceAction511(60),
+ new ReduceAction512(60),
+ new ReduceAction513(61),
+ new ReduceAction514(61),
+ new ReduceAction515(61),
+ new ReduceAction516(61),
+ new ReduceAction517(62),
+ new ReduceAction419(63),
+ new ReduceAction448(63),
+ new ReduceAction449(63),
+ new ReduceAction521(63),
+ new ReduceAction419(64),
+ new ReduceAction523(64),
+ new ReduceAction419(65),
+ new ReduceAction525(65),
+ new ReduceAction526(65),
+ new ReduceAction527(65),
+ new ReduceAction419(66),
+ new ReduceAction529(66),
+ new ReduceAction419(67),
+ new ReduceAction531(67),
+ new ReduceAction532(67),
+ new ReduceAction533(67),
+ new ReduceAction534(67),
+ new ReduceAction535(67),
+ new ReduceAction536(67),
+ new ReduceAction537(67),
+ new ReduceAction538(67),
+ new ReduceAction539(67),
+ new ReduceAction540(67),
+ new ReduceAction541(67),
+ new ReduceAction419(68),
+ new ReduceAction543(68),
+ new ReduceAction544(68),
+ new ReduceAction419(69),
+ new ReduceAction546(69),
+ new ReduceAction547(69),
+ new ReduceAction548(69),
+ new ReduceAction419(70),
+ new ReduceAction550(70),
+ new ReduceAction551(70),
+ new ReduceAction419(71),
+ new ReduceAction553(71),
+ new ReduceAction554(71),
+ new ReduceAction555(71),
+ new ReduceAction556(72),
+ new ReduceAction557(72),
+ new ReduceAction446(72),
+ new ReduceAction447(72),
+ new ReduceAction450(72),
+ new ReduceAction451(72),
+ new ReduceAction452(72),
+ new ReduceAction453(72),
+ new ReduceAction564(72),
+ new ReduceAction565(72),
+ new ReduceAction566(72),
+ new ReduceAction567(72),
+ new ReduceAction568(72),
+ new ReduceAction569(72),
+ new ReduceAction570(72),
+ new ReduceAction571(72),
+ new ReduceAction572(72),
+ new ReduceAction573(72),
+ new ReduceAction574(72),
+ new ReduceAction575(72),
+ new ReduceAction576(72),
+ new ReduceAction577(72),
+ new ReduceAction578(72),
+ new ReduceAction579(72),
+ new ReduceAction580(72),
+ new ReduceAction581(72),
+ new ReduceAction582(72),
+ new ReduceAction583(72),
+ new ReduceAction584(72),
+ new ReduceAction585(72),
+ new ReduceAction586(72),
+ new ReduceAction587(72),
+ new ReduceAction419(72),
+ new ReduceAction589(72),
+ new ReduceAction590(72),
+ new ReduceAction591(72),
+ new ReduceAction592(72),
+ new ReduceAction593(73),
+ new ReduceAction594(73),
+ new ReduceAction595(73),
+ new ReduceAction596(73),
+ new ReduceAction597(74),
+ new ReduceAction598(75),
+ new ReduceAction597(76),
+ new ReduceAction600(77),
+ new ReduceAction601(78),
+ new ReduceAction602(79),
+ new ReduceAction603(79),
+ new ReduceAction604(80),
+ new ReduceAction605(80),
+ new ReduceAction606(80),
+ new ReduceAction607(80),
+ new ReduceAction608(81),
+ new ReduceAction609(82),
+ new ReduceAction610(82),
+ new ReduceAction608(83),
+ new ReduceAction612(84),
+ new ReduceAction613(84),
+ new ReduceAction614(84),
+ new ReduceAction615(84),
+ new ReduceAction616(84),
+ new ReduceAction617(85),
+ new ReduceAction618(86),
+ new ReduceAction619(86),
+ new ReduceAction620(87),
+ new ReduceAction621(88),
+ new ReduceAction622(88),
+ new ReduceAction622(88),
+ new ReduceAction624(88),
+ new ReduceAction625(89),
+ new ReduceAction626(89),
+ new ReduceAction627(89),
+ new ReduceAction628(89),
+ new ReduceAction629(90),
+ new ReduceAction630(90),
+ new ReduceAction631(90),
+ new ReduceAction629(91),
+ new ReduceAction633(91),
+ new ReduceAction630(91),
+ new ReduceAction631(91),
+ new ReduceAction636(92),
+ new ReduceAction637(93),
+ new ReduceAction638(93),
+ new ReduceAction639(94),
+ new ReduceAction640(95),
+ new ReduceAction641(95),
+ new ReduceAction642(96),
+ new ReduceAction643(96),
+ new ReduceAction644(96),
+ new ReduceAction645(96),
+ new ReduceAction646(97),
+ new ReduceAction647(97),
+ new ReduceAction648(97),
+ new ReduceAction649(98),
+ new ReduceAction650(99),
+ new ReduceAction651(100),
+ new ReduceAction651(100),
+ new ReduceAction653(101),
+ new ReduceAction654(101),
+ new ReduceAction70(101),
+ new ReduceAction656(102),
+ new ReduceAction657(102),
+ new ReduceAction658(103),
+ new ReduceAction659(103),
+ new ReduceAction651(103),
+ new ReduceAction152(104),
+ new ReduceAction153(105),
+ new ReduceAction154(105),
+ new ReduceAction155(105),
+ new ReduceAction156(105),
+ new ReduceAction157(105),
+ new ReduceAction158(105),
+ new ReduceAction159(105),
+ new ReduceAction160(105),
+ new ReduceAction161(105),
+ new ReduceAction162(105),
+ new ReduceAction163(105),
+ new ReduceAction164(105),
+ new ReduceAction169(105),
+ new ReduceAction170(105),
+ new ReduceAction171(105),
+ new ReduceAction172(105),
+ new ReduceAction173(105),
+ new ReduceAction174(105),
+ new ReduceAction175(105),
+ new ReduceAction176(105),
+ new ReduceAction177(105),
+ new ReduceAction178(105),
+ new ReduceAction179(105),
+ new ReduceAction180(105),
+ new ReduceAction181(105),
+ new ReduceAction182(105),
+ new ReduceAction183(105),
+ new ReduceAction184(105),
+ new ReduceAction185(105),
+ new ReduceAction186(105),
+ new ReduceAction187(105),
+ new ReduceAction188(105),
new ReduceAction353(106),
new ReduceAction354(106),
new ReduceAction355(106),
new ReduceAction356(106),
- new ReduceAction357(106),
- new ReduceAction358(106),
- new ReduceAction359(106),
- new ReduceAction339(106),
- new ReduceAction339(106),
- new ReduceAction339(106),
- new ReduceAction339(106),
- new ReduceAction339(106),
- new ReduceAction339(106),
- new ReduceAction366(106),
- new ReduceAction367(106),
- new ReduceAction368(106),
- new ReduceAction369(106),
- new ReduceAction370(106),
- new ReduceAction371(106),
- new ReduceAction372(106),
- new ReduceAction373(106),
- new ReduceAction374(106),
- new ReduceAction376(107),
- new ReduceAction377(107),
- new ReduceAction378(108),
- new ReduceAction379(108),
- new ReduceAction380(108),
- new ReduceAction381(108),
- new ReduceAction382(108),
- new ReduceAction383(108),
- new ReduceAction384(108),
- new ReduceAction385(108),
- new ReduceAction386(108),
- new ReduceAction395(109),
- new ReduceAction396(110),
- new ReduceAction397(110),
- new ReduceAction398(110),
- new ReduceAction399(110),
- new ReduceAction400(111),
- new ReduceAction401(111),
- new ReduceAction402(111),
- new ReduceAction403(111),
- new ReduceAction404(111),
- new ReduceAction405(111),
- new ReduceAction406(111),
- new ReduceAction407(111),
- new ReduceAction408(111),
- new ReduceAction409(111),
- new ReduceAction412(112),
- new ReduceAction413(112),
- new ReduceAction414(113),
- new ReduceAction421(114),
- new ReduceAction422(114),
- new ReduceAction423(115),
- new ReduceAction424(115),
- new ReduceAction425(116),
- new ReduceAction426(116),
- new ReduceAction427(116),
- new ReduceAction428(116),
- new ReduceAction429(117),
- new ReduceAction430(117),
- new ReduceAction339(118),
- new ReduceAction368(118),
- new ReduceAction369(118),
- new ReduceAction437(118),
- new ReduceAction339(119),
- new ReduceAction368(119),
- new ReduceAction369(119),
- new ReduceAction336(120),
- new ReduceAction337(120),
- new ReduceAction338(120),
- new ReduceAction336(121),
- new ReduceAction337(121),
- new ReduceAction338(121),
- new ReduceAction339(122),
- new ReduceAction368(122),
- new ReduceAction369(122),
- new ReduceAction339(123),
- new ReduceAction439(123),
- new ReduceAction339(124),
- new ReduceAction441(124),
- new ReduceAction442(124),
- new ReduceAction443(124),
- new ReduceAction339(125),
- new ReduceAction445(125),
- new ReduceAction339(126),
- new ReduceAction447(126),
- new ReduceAction448(126),
- new ReduceAction449(126),
- new ReduceAction450(126),
- new ReduceAction451(126),
- new ReduceAction452(126),
- new ReduceAction453(126),
- new ReduceAction454(126),
- new ReduceAction455(126),
- new ReduceAction456(126),
- new ReduceAction457(126),
- new ReduceAction339(127),
- new ReduceAction459(127),
- new ReduceAction460(127),
- new ReduceAction339(128),
- new ReduceAction462(128),
- new ReduceAction463(128),
- new ReduceAction464(128),
- new ReduceAction339(129),
- new ReduceAction466(129),
- new ReduceAction467(129),
- new ReduceAction339(130),
- new ReduceAction469(130),
- new ReduceAction470(130),
- new ReduceAction471(130),
- new ReduceAction472(131),
- new ReduceAction473(131),
- new ReduceAction366(131),
- new ReduceAction367(131),
- new ReduceAction370(131),
- new ReduceAction371(131),
- new ReduceAction372(131),
- new ReduceAction373(131),
- new ReduceAction480(131),
- new ReduceAction481(131),
- new ReduceAction485(131),
- new ReduceAction486(131),
- new ReduceAction487(131),
- new ReduceAction488(131),
- new ReduceAction489(131),
- new ReduceAction490(131),
- new ReduceAction491(131),
- new ReduceAction492(131),
- new ReduceAction339(131),
- new ReduceAction495(131),
- new ReduceAction496(131),
- new ReduceAction339(132),
- new ReduceAction368(132),
- new ReduceAction369(132),
- new ReduceAction339(133),
- new ReduceAction439(133),
- new ReduceAction339(134),
- new ReduceAction441(134),
- new ReduceAction442(134),
- new ReduceAction443(134),
- new ReduceAction339(135),
- new ReduceAction445(135),
- new ReduceAction339(136),
- new ReduceAction447(136),
+ new ReduceAction361(106),
+ new ReduceAction362(106),
+ new ReduceAction404(107),
+ new ReduceAction405(107),
+ new ReduceAction406(107),
+ new ReduceAction407(107),
+ new ReduceAction419(108),
+ new ReduceAction448(108),
+ new ReduceAction449(108),
+ new ReduceAction419(109),
+ new ReduceAction523(109),
+ new ReduceAction419(110),
+ new ReduceAction525(110),
+ new ReduceAction526(110),
+ new ReduceAction527(110),
+ new ReduceAction419(111),
+ new ReduceAction529(111),
+ new ReduceAction419(112),
+ new ReduceAction531(112),
+ new ReduceAction532(112),
+ new ReduceAction533(112),
+ new ReduceAction534(112),
+ new ReduceAction535(112),
+ new ReduceAction536(112),
+ new ReduceAction537(112),
+ new ReduceAction538(112),
+ new ReduceAction539(112),
+ new ReduceAction540(112),
+ new ReduceAction541(112),
+ new ReduceAction419(113),
+ new ReduceAction543(113),
+ new ReduceAction544(113),
+ new ReduceAction419(114),
+ new ReduceAction546(114),
+ new ReduceAction547(114),
+ new ReduceAction548(114),
+ new ReduceAction419(115),
+ new ReduceAction550(115),
+ new ReduceAction551(115),
+ new ReduceAction419(116),
+ new ReduceAction553(116),
+ new ReduceAction554(116),
+ new ReduceAction555(116),
+ new ReduceAction556(117),
+ new ReduceAction557(117),
+ new ReduceAction446(117),
+ new ReduceAction447(117),
+ new ReduceAction450(117),
+ new ReduceAction451(117),
+ new ReduceAction452(117),
+ new ReduceAction453(117),
+ new ReduceAction565(117),
+ new ReduceAction572(117),
+ new ReduceAction573(117),
+ new ReduceAction574(117),
+ new ReduceAction575(117),
+ new ReduceAction576(117),
+ new ReduceAction577(117),
+ new ReduceAction578(117),
+ new ReduceAction579(117),
+ new ReduceAction580(117),
+ new ReduceAction581(117),
+ new ReduceAction582(117),
+ new ReduceAction583(117),
+ new ReduceAction584(117),
+ new ReduceAction585(117),
+ new ReduceAction586(117),
+ new ReduceAction587(117),
+ new ReduceAction419(117),
+ new ReduceAction589(117),
+ new ReduceAction590(117),
+ new ReduceAction591(117),
+ new ReduceAction592(117),
+ new ReduceAction404(118),
+ new ReduceAction405(118),
+ new ReduceAction406(118),
+ new ReduceAction407(118),
+ new ReduceAction408(118),
+ new ReduceAction409(118),
+ new ReduceAction410(118),
+ new ReduceAction411(118),
+ new ReduceAction419(119),
+ new ReduceAction419(119),
+ new ReduceAction429(119),
+ new ReduceAction430(119),
+ new ReduceAction431(119),
+ new ReduceAction432(119),
+ new ReduceAction433(119),
+ new ReduceAction434(119),
+ new ReduceAction435(119),
+ new ReduceAction436(119),
+ new ReduceAction437(119),
+ new ReduceAction438(119),
+ new ReduceAction439(119),
+ new ReduceAction419(119),
+ new ReduceAction419(119),
+ new ReduceAction419(119),
+ new ReduceAction419(119),
+ new ReduceAction419(119),
+ new ReduceAction419(119),
+ new ReduceAction446(119),
+ new ReduceAction447(119),
+ new ReduceAction448(119),
+ new ReduceAction449(119),
+ new ReduceAction450(119),
+ new ReduceAction451(119),
+ new ReduceAction452(119),
+ new ReduceAction453(119),
+ new ReduceAction454(119),
+ new ReduceAction484(120),
+ new ReduceAction485(120),
+ new ReduceAction486(120),
+ new ReduceAction487(120),
+ new ReduceAction488(120),
+ new ReduceAction489(120),
+ new ReduceAction490(120),
+ new ReduceAction491(120),
+ new ReduceAction492(120),
+ new ReduceAction493(120),
+ new ReduceAction419(121),
+ new ReduceAction448(121),
+ new ReduceAction449(121),
+ new ReduceAction419(122),
+ new ReduceAction523(122),
+ new ReduceAction419(123),
+ new ReduceAction525(123),
+ new ReduceAction526(123),
+ new ReduceAction527(123),
+ new ReduceAction419(124),
+ new ReduceAction529(124),
+ new ReduceAction419(125),
+ new ReduceAction531(125),
+ new ReduceAction532(125),
+ new ReduceAction533(125),
+ new ReduceAction534(125),
+ new ReduceAction535(125),
+ new ReduceAction536(125),
+ new ReduceAction537(125),
+ new ReduceAction538(125),
+ new ReduceAction539(125),
+ new ReduceAction540(125),
+ new ReduceAction541(125),
+ new ReduceAction419(126),
+ new ReduceAction543(126),
+ new ReduceAction544(126),
+ new ReduceAction419(127),
+ new ReduceAction546(127),
+ new ReduceAction547(127),
+ new ReduceAction548(127),
+ new ReduceAction419(128),
+ new ReduceAction550(128),
+ new ReduceAction551(128),
+ new ReduceAction419(129),
+ new ReduceAction553(129),
+ new ReduceAction554(129),
+ new ReduceAction555(129),
+ new ReduceAction556(130),
+ new ReduceAction557(130),
+ new ReduceAction446(130),
+ new ReduceAction447(130),
+ new ReduceAction450(130),
+ new ReduceAction451(130),
+ new ReduceAction452(130),
+ new ReduceAction453(130),
+ new ReduceAction564(130),
+ new ReduceAction565(130),
+ new ReduceAction572(130),
+ new ReduceAction573(130),
+ new ReduceAction574(130),
+ new ReduceAction575(130),
+ new ReduceAction576(130),
+ new ReduceAction577(130),
+ new ReduceAction578(130),
+ new ReduceAction579(130),
+ new ReduceAction580(130),
+ new ReduceAction581(130),
+ new ReduceAction582(130),
+ new ReduceAction583(130),
+ new ReduceAction584(130),
+ new ReduceAction585(130),
+ new ReduceAction586(130),
+ new ReduceAction587(130),
+ new ReduceAction419(130),
+ new ReduceAction591(130),
+ new ReduceAction592(130),
+ new ReduceAction602(131),
+ new ReduceAction603(131),
+ new ReduceAction604(132),
+ new ReduceAction605(132),
+ new ReduceAction618(133),
+ new ReduceAction619(133),
+ new ReduceAction621(134),
+ new ReduceAction622(134),
+ new ReduceAction622(134),
+ new ReduceAction404(135),
+ new ReduceAction405(135),
+ new ReduceAction406(135),
+ new ReduceAction407(135),
+ new ReduceAction419(136),
new ReduceAction448(136),
new ReduceAction449(136),
- new ReduceAction450(136),
- new ReduceAction451(136),
- new ReduceAction452(136),
- new ReduceAction453(136),
- new ReduceAction454(136),
- new ReduceAction455(136),
- new ReduceAction456(136),
- new ReduceAction457(136),
- new ReduceAction339(137),
- new ReduceAction459(137),
- new ReduceAction460(137),
- new ReduceAction339(138),
- new ReduceAction462(138),
- new ReduceAction463(138),
- new ReduceAction464(138),
- new ReduceAction339(139),
- new ReduceAction466(139),
- new ReduceAction467(139),
- new ReduceAction339(140),
- new ReduceAction469(140),
- new ReduceAction806(140),
- new ReduceAction807(141),
- new ReduceAction808(141),
- new ReduceAction370(141),
- new ReduceAction371(141),
- new ReduceAction811(141),
- new ReduceAction481(141),
- new ReduceAction485(141),
- new ReduceAction486(141),
- new ReduceAction487(141),
- new ReduceAction488(141),
- new ReduceAction489(141),
- new ReduceAction490(141),
- new ReduceAction491(141),
- new ReduceAction492(141),
- new ReduceAction339(141),
- new ReduceAction495(141),
- new ReduceAction496(141),
- new ReduceAction824(142),
- new ReduceAction825(142),
- new ReduceAction339(143),
- new ReduceAction368(143),
- new ReduceAction369(143),
- new ReduceAction339(144),
- new ReduceAction368(144),
- new ReduceAction369(144),
- new ReduceAction832(145),
- new ReduceAction833(145),
- new ReduceAction834(146),
- new ReduceAction835(146),
- new ReduceAction836(147),
- new ReduceAction837(147),
- new ReduceAction838(148),
- new ReduceAction839(148),
- new ReduceAction840(149),
- new ReduceAction841(149),
- new ReduceAction838(150),
- new ReduceAction839(150),
- new ReduceAction844(151),
- new ReduceAction845(151),
- new ReduceAction846(152),
- new ReduceAction847(152),
- new ReduceAction848(153),
- new ReduceAction849(153),
- new ReduceAction850(154),
- new ReduceAction851(154),
- new ReduceAction332(155),
- new ReduceAction853(155),
- new ReduceAction854(156),
- new ReduceAction855(156),
- new ReduceAction304(157),
- new ReduceAction857(157),
- new ReduceAction854(158),
- new ReduceAction855(158),
- new ReduceAction515(159),
- new ReduceAction861(159),
- new ReduceAction862(160),
- new ReduceAction863(160),
- new ReduceAction864(161),
- new ReduceAction865(161)
+ new ReduceAction419(137),
+ new ReduceAction523(137),
+ new ReduceAction419(138),
+ new ReduceAction525(138),
+ new ReduceAction526(138),
+ new ReduceAction527(138),
+ new ReduceAction419(139),
+ new ReduceAction529(139),
+ new ReduceAction419(140),
+ new ReduceAction531(140),
+ new ReduceAction532(140),
+ new ReduceAction533(140),
+ new ReduceAction534(140),
+ new ReduceAction535(140),
+ new ReduceAction536(140),
+ new ReduceAction537(140),
+ new ReduceAction538(140),
+ new ReduceAction539(140),
+ new ReduceAction540(140),
+ new ReduceAction541(140),
+ new ReduceAction419(141),
+ new ReduceAction543(141),
+ new ReduceAction544(141),
+ new ReduceAction419(142),
+ new ReduceAction546(142),
+ new ReduceAction547(142),
+ new ReduceAction548(142),
+ new ReduceAction419(143),
+ new ReduceAction550(143),
+ new ReduceAction551(143),
+ new ReduceAction419(144),
+ new ReduceAction553(144),
+ new ReduceAction931(144),
+ new ReduceAction932(145),
+ new ReduceAction933(145),
+ new ReduceAction450(145),
+ new ReduceAction451(145),
+ new ReduceAction936(145),
+ new ReduceAction565(145),
+ new ReduceAction572(145),
+ new ReduceAction573(145),
+ new ReduceAction574(145),
+ new ReduceAction575(145),
+ new ReduceAction576(145),
+ new ReduceAction577(145),
+ new ReduceAction578(145),
+ new ReduceAction579(145),
+ new ReduceAction580(145),
+ new ReduceAction581(145),
+ new ReduceAction582(145),
+ new ReduceAction583(145),
+ new ReduceAction584(145),
+ new ReduceAction585(145),
+ new ReduceAction586(145),
+ new ReduceAction587(145),
+ new ReduceAction419(145),
+ new ReduceAction591(145),
+ new ReduceAction592(145),
+ new ReduceAction957(146),
+ new ReduceAction958(146),
+ new ReduceAction416(147),
+ new ReduceAction417(147),
+ new ReduceAction418(147),
+ new ReduceAction419(147),
+ new ReduceAction419(148),
+ new ReduceAction419(148),
+ new ReduceAction429(148),
+ new ReduceAction430(148),
+ new ReduceAction431(148),
+ new ReduceAction432(148),
+ new ReduceAction433(148),
+ new ReduceAction434(148),
+ new ReduceAction435(148),
+ new ReduceAction436(148),
+ new ReduceAction437(148),
+ new ReduceAction438(148),
+ new ReduceAction439(148),
+ new ReduceAction419(148),
+ new ReduceAction419(148),
+ new ReduceAction419(148),
+ new ReduceAction419(148),
+ new ReduceAction419(148),
+ new ReduceAction419(148),
+ new ReduceAction446(148),
+ new ReduceAction447(148),
+ new ReduceAction448(148),
+ new ReduceAction449(148),
+ new ReduceAction450(148),
+ new ReduceAction451(148),
+ new ReduceAction452(148),
+ new ReduceAction453(148),
+ new ReduceAction454(148),
+ new ReduceAction456(149),
+ new ReduceAction457(149),
+ new ReduceAction458(150),
+ new ReduceAction459(150),
+ new ReduceAction460(150),
+ new ReduceAction461(150),
+ new ReduceAction462(150),
+ new ReduceAction463(150),
+ new ReduceAction464(150),
+ new ReduceAction465(150),
+ new ReduceAction466(150),
+ new ReduceAction475(151),
+ new ReduceAction476(152),
+ new ReduceAction477(152),
+ new ReduceAction478(152),
+ new ReduceAction479(152),
+ new ReduceAction480(152),
+ new ReduceAction481(152),
+ new ReduceAction482(152),
+ new ReduceAction483(152),
+ new ReduceAction484(153),
+ new ReduceAction485(153),
+ new ReduceAction486(153),
+ new ReduceAction487(153),
+ new ReduceAction488(153),
+ new ReduceAction489(153),
+ new ReduceAction490(153),
+ new ReduceAction491(153),
+ new ReduceAction492(153),
+ new ReduceAction493(153),
+ new ReduceAction496(154),
+ new ReduceAction497(154),
+ new ReduceAction498(155),
+ new ReduceAction505(156),
+ new ReduceAction506(156),
+ new ReduceAction507(157),
+ new ReduceAction508(157),
+ new ReduceAction509(158),
+ new ReduceAction510(158),
+ new ReduceAction511(158),
+ new ReduceAction512(158),
+ new ReduceAction513(159),
+ new ReduceAction514(159),
+ new ReduceAction419(160),
+ new ReduceAction448(160),
+ new ReduceAction449(160),
+ new ReduceAction521(160),
+ new ReduceAction419(161),
+ new ReduceAction448(161),
+ new ReduceAction449(161),
+ new ReduceAction419(162),
+ new ReduceAction419(162),
+ new ReduceAction429(162),
+ new ReduceAction430(162),
+ new ReduceAction431(162),
+ new ReduceAction432(162),
+ new ReduceAction433(162),
+ new ReduceAction434(162),
+ new ReduceAction435(162),
+ new ReduceAction436(162),
+ new ReduceAction437(162),
+ new ReduceAction438(162),
+ new ReduceAction439(162),
+ new ReduceAction419(162),
+ new ReduceAction419(162),
+ new ReduceAction419(162),
+ new ReduceAction419(162),
+ new ReduceAction419(162),
+ new ReduceAction419(162),
+ new ReduceAction446(162),
+ new ReduceAction447(162),
+ new ReduceAction448(162),
+ new ReduceAction449(162),
+ new ReduceAction450(162),
+ new ReduceAction451(162),
+ new ReduceAction452(162),
+ new ReduceAction453(162),
+ new ReduceAction454(162),
+ new ReduceAction484(163),
+ new ReduceAction485(163),
+ new ReduceAction486(163),
+ new ReduceAction487(163),
+ new ReduceAction488(163),
+ new ReduceAction489(163),
+ new ReduceAction490(163),
+ new ReduceAction491(163),
+ new ReduceAction492(163),
+ new ReduceAction493(163),
+ new ReduceAction419(164),
+ new ReduceAction448(164),
+ new ReduceAction449(164),
+ new ReduceAction419(165),
+ new ReduceAction448(165),
+ new ReduceAction449(165),
+ new ReduceAction416(166),
+ new ReduceAction417(166),
+ new ReduceAction418(166),
+ new ReduceAction416(167),
+ new ReduceAction417(167),
+ new ReduceAction418(167),
+ new ReduceAction419(168),
+ new ReduceAction419(168),
+ new ReduceAction429(168),
+ new ReduceAction430(168),
+ new ReduceAction431(168),
+ new ReduceAction432(168),
+ new ReduceAction433(168),
+ new ReduceAction434(168),
+ new ReduceAction435(168),
+ new ReduceAction436(168),
+ new ReduceAction437(168),
+ new ReduceAction438(168),
+ new ReduceAction439(168),
+ new ReduceAction419(168),
+ new ReduceAction419(168),
+ new ReduceAction419(168),
+ new ReduceAction419(168),
+ new ReduceAction419(168),
+ new ReduceAction454(168),
+ new ReduceAction419(169),
+ new ReduceAction419(169),
+ new ReduceAction429(169),
+ new ReduceAction430(169),
+ new ReduceAction431(169),
+ new ReduceAction432(169),
+ new ReduceAction433(169),
+ new ReduceAction434(169),
+ new ReduceAction435(169),
+ new ReduceAction436(169),
+ new ReduceAction437(169),
+ new ReduceAction438(169),
+ new ReduceAction439(169),
+ new ReduceAction419(169),
+ new ReduceAction419(169),
+ new ReduceAction419(169),
+ new ReduceAction419(169),
+ new ReduceAction419(169),
+ new ReduceAction454(169),
+ new ReduceAction419(170),
+ new ReduceAction419(170),
+ new ReduceAction429(170),
+ new ReduceAction430(170),
+ new ReduceAction431(170),
+ new ReduceAction432(170),
+ new ReduceAction433(170),
+ new ReduceAction434(170),
+ new ReduceAction435(170),
+ new ReduceAction436(170),
+ new ReduceAction437(170),
+ new ReduceAction438(170),
+ new ReduceAction439(170),
+ new ReduceAction419(170),
+ new ReduceAction419(170),
+ new ReduceAction419(170),
+ new ReduceAction419(170),
+ new ReduceAction419(170),
+ new ReduceAction454(170),
+ new ReduceAction419(171),
+ new ReduceAction419(171),
+ new ReduceAction429(171),
+ new ReduceAction430(171),
+ new ReduceAction431(171),
+ new ReduceAction432(171),
+ new ReduceAction433(171),
+ new ReduceAction434(171),
+ new ReduceAction435(171),
+ new ReduceAction436(171),
+ new ReduceAction437(171),
+ new ReduceAction438(171),
+ new ReduceAction439(171),
+ new ReduceAction419(171),
+ new ReduceAction419(171),
+ new ReduceAction419(171),
+ new ReduceAction419(171),
+ new ReduceAction419(171),
+ new ReduceAction454(171),
+ new ReduceAction419(172),
+ new ReduceAction523(172),
+ new ReduceAction419(173),
+ new ReduceAction525(173),
+ new ReduceAction526(173),
+ new ReduceAction527(173),
+ new ReduceAction419(174),
+ new ReduceAction529(174),
+ new ReduceAction419(175),
+ new ReduceAction531(175),
+ new ReduceAction533(175),
+ new ReduceAction534(175),
+ new ReduceAction535(175),
+ new ReduceAction536(175),
+ new ReduceAction537(175),
+ new ReduceAction538(175),
+ new ReduceAction539(175),
+ new ReduceAction540(175),
+ new ReduceAction541(175),
+ new ReduceAction419(176),
+ new ReduceAction523(176),
+ new ReduceAction419(177),
+ new ReduceAction525(177),
+ new ReduceAction526(177),
+ new ReduceAction527(177),
+ new ReduceAction419(178),
+ new ReduceAction529(178),
+ new ReduceAction419(179),
+ new ReduceAction531(179),
+ new ReduceAction533(179),
+ new ReduceAction534(179),
+ new ReduceAction535(179),
+ new ReduceAction536(179),
+ new ReduceAction537(179),
+ new ReduceAction538(179),
+ new ReduceAction539(179),
+ new ReduceAction540(179),
+ new ReduceAction541(179),
+ new ReduceAction419(180),
+ new ReduceAction523(180),
+ new ReduceAction419(181),
+ new ReduceAction525(181),
+ new ReduceAction526(181),
+ new ReduceAction527(181),
+ new ReduceAction419(182),
+ new ReduceAction529(182),
+ new ReduceAction419(183),
+ new ReduceAction531(183),
+ new ReduceAction533(183),
+ new ReduceAction534(183),
+ new ReduceAction535(183),
+ new ReduceAction536(183),
+ new ReduceAction537(183),
+ new ReduceAction538(183),
+ new ReduceAction539(183),
+ new ReduceAction540(183),
+ new ReduceAction541(183),
+ new ReduceAction419(184),
+ new ReduceAction523(184),
+ new ReduceAction419(185),
+ new ReduceAction525(185),
+ new ReduceAction526(185),
+ new ReduceAction527(185),
+ new ReduceAction419(186),
+ new ReduceAction529(186),
+ new ReduceAction419(187),
+ new ReduceAction531(187),
+ new ReduceAction533(187),
+ new ReduceAction534(187),
+ new ReduceAction535(187),
+ new ReduceAction536(187),
+ new ReduceAction537(187),
+ new ReduceAction538(187),
+ new ReduceAction539(187),
+ new ReduceAction540(187),
+ new ReduceAction541(187),
+ new ReduceAction612(188),
+ new ReduceAction613(188),
+ new ReduceAction614(188),
+ new ReduceAction615(188),
+ new ReduceAction616(188),
+ new ReduceAction625(189),
+ new ReduceAction628(189),
+ new ReduceAction1250(190),
+ new ReduceAction1251(190),
+ new ReduceAction1252(191),
+ new ReduceAction1253(191),
+ new ReduceAction1254(192),
+ new ReduceAction1255(192),
+ new ReduceAction1256(193),
+ new ReduceAction1257(193),
+ new ReduceAction1258(194),
+ new ReduceAction1259(194),
+ new ReduceAction1256(195),
+ new ReduceAction1257(195),
+ new ReduceAction1262(196),
+ new ReduceAction1263(196),
+ new ReduceAction1264(197),
+ new ReduceAction1265(197),
+ new ReduceAction1266(198),
+ new ReduceAction1267(198),
+ new ReduceAction1268(199),
+ new ReduceAction1269(199),
+ new ReduceAction412(200),
+ new ReduceAction1271(200),
+ new ReduceAction1272(201),
+ new ReduceAction1273(201),
+ new ReduceAction380(202),
+ new ReduceAction1275(202),
+ new ReduceAction609(203),
+ new ReduceAction1277(203),
+ new ReduceAction609(204),
+ new ReduceAction1277(204),
+ new ReduceAction618(205),
+ new ReduceAction1281(205),
+ new ReduceAction1272(206),
+ new ReduceAction1273(206),
+ new ReduceAction640(207),
+ new ReduceAction1285(207),
+ new ReduceAction1286(208),
+ new ReduceAction1287(208),
+ new ReduceAction1288(209),
+ new ReduceAction1289(209),
+ new ReduceAction609(210),
+ new ReduceAction1277(210)
)
end
end
var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
pdocnode2,
tkwmodulenode3,
- pmodulenamenode4
+ pmodulenamenode4,
+ null
)
node_list = pmoduledeclnode1
p.push(p.go_to(_goto), node_list)
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwmodulenode3 = nodearraylist2
+ assert tkwmodulenode3 isa nullable TKwmodule
+ var pmodulenamenode4 = nodearraylist4
+ assert pmodulenamenode4 isa nullable AModuleName
+ var pannotationsnode5 = nodearraylist5
+ assert pannotationsnode5 isa nullable AAnnotations
+ var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+ pdocnode2,
+ tkwmodulenode3,
+ pmodulenamenode4,
+ pannotationsnode5
+ )
+ node_list = pmoduledeclnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction66
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
var pvisibilitynode2 = nodearraylist2
assert pvisibilitynode2 isa nullable AVisibility
var tkwimportnode3 = nodearraylist3
var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
pvisibilitynode2,
tkwimportnode3,
- pmodulenamenode4
+ pmodulenamenode4,
+ null
)
node_list = pimportnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction66
+private class ReduceAction67
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pvisibilitynode2 = nodearraylist2
+ assert pvisibilitynode2 isa nullable AVisibility
+ var tkwimportnode3 = nodearraylist3
+ assert tkwimportnode3 isa nullable TKwimport
+ var pmodulenamenode4 = nodearraylist5
+ assert pmodulenamenode4 isa nullable AModuleName
+ var pannotationsnode5 = nodearraylist6
+ assert pannotationsnode5 isa nullable AAnnotations
+ var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+ pvisibilitynode2,
+ tkwimportnode3,
+ pmodulenamenode4,
+ pannotationsnode5
+ )
+ node_list = pimportnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction68
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction67
+private class ReduceAction69
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction68
+private class ReduceAction70
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction69
+private class ReduceAction71
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction71
+private class ReduceAction73
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
var listnode10 = new Array[Object]
+ var listnode11 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist5
assert tclassidnode6 isa nullable TClassid
- var tkwendnode11 = nodearraylist7
- assert tkwendnode11 isa nullable TKwend
+ var tkwendnode12 = nodearraylist7
+ assert tkwendnode12 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
tclassidnode6,
listnode7,
null,
- listnode9,
+ null,
listnode10,
- tkwendnode11
+ listnode11,
+ tkwendnode12
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction72
+private class ReduceAction74
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
var listnode10 = new Array[Object]
+ var listnode11 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var tkwendnode11 = nodearraylist8
- assert tkwendnode11 isa nullable TKwend
+ var tkwendnode12 = nodearraylist8
+ assert tkwendnode12 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
tclassidnode6,
listnode7,
null,
- listnode9,
+ null,
listnode10,
- tkwendnode11
+ listnode11,
+ tkwendnode12
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction73
+private class ReduceAction75
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
var listnode7 = nodearraylist6
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var tkwendnode12 = nodearraylist8
- assert tkwendnode12 isa nullable TKwend
+ var tkwendnode13 = nodearraylist8
+ assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
tclassidnode6,
listnode8,
null,
- listnode10,
+ null,
listnode11,
- tkwendnode12
+ listnode12,
+ tkwendnode13
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction74
+private class ReduceAction76
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
var listnode7 = nodearraylist7
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var tkwendnode12 = nodearraylist9
- assert tkwendnode12 isa nullable TKwend
+ var tkwendnode13 = nodearraylist9
+ assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
tclassidnode6,
listnode8,
null,
- listnode10,
+ null,
listnode11,
- tkwendnode12
+ listnode12,
+ tkwendnode13
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction75
+private class ReduceAction77
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
- var listnode10 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode16 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist5
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist6
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var tkwendnode11 = nodearraylist8
- assert tkwendnode11 isa nullable TKwend
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var tkwendnode17 = nodearraylist8
+ assert tkwendnode17 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode9,
- listnode10,
- tkwendnode11
+ pannotationsnode8,
+ null,
+ listnode15,
+ listnode16,
+ tkwendnode17
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction76
+private class ReduceAction78
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
- var listnode10 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode16 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist7
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var tkwendnode11 = nodearraylist9
- assert tkwendnode11 isa nullable TKwend
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var tkwendnode17 = nodearraylist9
+ assert tkwendnode17 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode9,
- listnode10,
- tkwendnode11
+ pannotationsnode8,
+ null,
+ listnode15,
+ listnode16,
+ tkwendnode17
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction77
+private class ReduceAction79
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
var listnode7 = nodearraylist6
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist7
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var tkwendnode12 = nodearraylist9
- assert tkwendnode12 isa nullable TKwend
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var tkwendnode18 = nodearraylist9
+ assert tkwendnode18 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode10,
- listnode11,
- tkwendnode12
+ pannotationsnode9,
+ null,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction78
+private class ReduceAction80
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
var listnode7 = nodearraylist7
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist8
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var tkwendnode12 = nodearraylist10
- assert tkwendnode12 isa nullable TKwend
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var tkwendnode18 = nodearraylist10
+ assert tkwendnode18 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode10,
- listnode11,
- tkwendnode12
+ pannotationsnode9,
+ null,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction79
+private class ReduceAction81
super ReduceAction
redef fun action(p: Parser)
do
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist5
assert tclassidnode6 isa nullable TClassid
- var listnode9 = nodearraylist6
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
+ var pexterncodeblocknode9 = nodearraylist6
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
var tkwendnode12 = nodearraylist8
assert tkwendnode12 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode7,
null,
+ pexterncodeblocknode9,
listnode10,
listnode11,
tkwendnode12
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction80
+private class ReduceAction82
super ReduceAction
redef fun action(p: Parser)
do
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var listnode9 = nodearraylist7
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
+ var pexterncodeblocknode9 = nodearraylist7
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
var tkwendnode12 = nodearraylist9
assert tkwendnode12 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode7,
null,
+ pexterncodeblocknode9,
listnode10,
listnode11,
tkwendnode12
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction81
+private class ReduceAction83
super ReduceAction
redef fun action(p: Parser)
do
var listnode7 = nodearraylist6
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var listnode10 = nodearraylist7
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
var tkwendnode13 = nodearraylist9
assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode8,
null,
+ pexterncodeblocknode10,
listnode11,
listnode12,
tkwendnode13
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction82
+private class ReduceAction84
super ReduceAction
redef fun action(p: Parser)
do
var listnode7 = nodearraylist7
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var listnode10 = nodearraylist8
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
var tkwendnode13 = nodearraylist10
assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode8,
null,
+ pexterncodeblocknode10,
listnode11,
listnode12,
tkwendnode13
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction83
+private class ReduceAction85
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode16 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist5
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist6
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var listnode9 = nodearraylist7
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
- var tkwendnode12 = nodearraylist9
- assert tkwendnode12 isa nullable TKwend
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist7
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var tkwendnode17 = nodearraylist9
+ assert tkwendnode17 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode10,
- listnode11,
- tkwendnode12
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode15,
+ listnode16,
+ tkwendnode17
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction84
+private class ReduceAction86
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode16 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist7
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var listnode9 = nodearraylist8
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
- var tkwendnode12 = nodearraylist10
- assert tkwendnode12 isa nullable TKwend
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist8
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var tkwendnode17 = nodearraylist10
+ assert tkwendnode17 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode10,
- listnode11,
- tkwendnode12
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode15,
+ listnode16,
+ tkwendnode17
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction85
+private class ReduceAction87
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
- var listnode12 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
var listnode7 = nodearraylist6
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist7
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var listnode10 = nodearraylist8
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var tkwendnode13 = nodearraylist10
- assert tkwendnode13 isa nullable TKwend
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var pexterncodeblocknode15 = nodearraylist8
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var tkwendnode18 = nodearraylist10
+ assert tkwendnode18 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode11,
- listnode12,
- tkwendnode13
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction86
+private class ReduceAction88
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
- var listnode12 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
var listnode7 = nodearraylist7
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist8
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var listnode10 = nodearraylist9
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var tkwendnode13 = nodearraylist11
- assert tkwendnode13 isa nullable TKwend
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var pexterncodeblocknode15 = nodearraylist9
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var tkwendnode18 = nodearraylist11
+ assert tkwendnode18 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode11,
- listnode12,
- tkwendnode13
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction87
+private class ReduceAction89
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
var listnode10 = nodearraylist6
assert listnode10 isa Array[Object]
listnode11 = concat(listnode11, listnode10)
- var tkwendnode12 = nodearraylist8
- assert tkwendnode12 isa nullable TKwend
+ var tkwendnode13 = nodearraylist8
+ assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
tclassidnode6,
listnode7,
null,
- listnode9,
+ null,
listnode11,
- tkwendnode12
+ listnode12,
+ tkwendnode13
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction88
+private class ReduceAction90
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
var listnode10 = nodearraylist7
assert listnode10 isa Array[Object]
listnode11 = concat(listnode11, listnode10)
- var tkwendnode12 = nodearraylist9
- assert tkwendnode12 isa nullable TKwend
+ var tkwendnode13 = nodearraylist9
+ assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
tclassidnode6,
listnode7,
null,
- listnode9,
+ null,
listnode11,
- tkwendnode12
+ listnode12,
+ tkwendnode13
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction89
+private class ReduceAction91
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
var listnode12 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
var listnode11 = nodearraylist7
assert listnode11 isa Array[Object]
listnode12 = concat(listnode12, listnode11)
- var tkwendnode13 = nodearraylist9
- assert tkwendnode13 isa nullable TKwend
+ var tkwendnode14 = nodearraylist9
+ assert tkwendnode14 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
tclassidnode6,
listnode8,
null,
- listnode10,
+ null,
listnode12,
- tkwendnode13
+ listnode13,
+ tkwendnode14
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction90
+private class ReduceAction92
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
var listnode12 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
var listnode11 = nodearraylist8
assert listnode11 isa Array[Object]
listnode12 = concat(listnode12, listnode11)
- var tkwendnode13 = nodearraylist10
- assert tkwendnode13 isa nullable TKwend
+ var tkwendnode14 = nodearraylist10
+ assert tkwendnode14 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
tclassidnode6,
listnode8,
null,
- listnode10,
+ null,
listnode12,
- tkwendnode13
+ listnode13,
+ tkwendnode14
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction91
+private class ReduceAction93
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist5
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist6
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var listnode10 = nodearraylist7
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var tkwendnode12 = nodearraylist9
- assert tkwendnode12 isa nullable TKwend
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var listnode15 = nodearraylist7
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var tkwendnode18 = nodearraylist9
+ assert tkwendnode18 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode9,
- listnode11,
- tkwendnode12
+ pannotationsnode8,
+ null,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction92
+private class ReduceAction94
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode9 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist7
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var listnode10 = nodearraylist8
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var tkwendnode12 = nodearraylist10
- assert tkwendnode12 isa nullable TKwend
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var listnode15 = nodearraylist8
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var tkwendnode18 = nodearraylist10
+ assert tkwendnode18 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode9,
- listnode11,
- tkwendnode12
+ pannotationsnode8,
+ null,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction93
+private class ReduceAction95
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode12 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
var listnode7 = nodearraylist6
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist7
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var listnode11 = nodearraylist8
- assert listnode11 isa Array[Object]
- listnode12 = concat(listnode12, listnode11)
- var tkwendnode13 = nodearraylist10
- assert tkwendnode13 isa nullable TKwend
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var listnode16 = nodearraylist8
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode19 = nodearraylist10
+ assert tkwendnode19 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode10,
- listnode12,
- tkwendnode13
+ pannotationsnode9,
+ null,
+ listnode17,
+ listnode18,
+ tkwendnode19
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction94
+private class ReduceAction96
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode12 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
var listnode7 = nodearraylist7
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist8
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var listnode11 = nodearraylist9
- assert listnode11 isa Array[Object]
- listnode12 = concat(listnode12, listnode11)
- var tkwendnode13 = nodearraylist11
- assert tkwendnode13 isa nullable TKwend
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var listnode16 = nodearraylist9
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode19 = nodearraylist11
+ assert tkwendnode19 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode10,
- listnode12,
- tkwendnode13
+ pannotationsnode9,
+ null,
+ listnode17,
+ listnode18,
+ tkwendnode19
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction95
+private class ReduceAction97
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode10 = new Array[Object]
+ var listnode11 = new Array[Object]
var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist5
assert tclassidnode6 isa nullable TClassid
- var listnode9 = nodearraylist6
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
- var listnode11 = nodearraylist7
- assert listnode11 isa Array[Object]
- listnode12 = concat(listnode12, listnode11)
+ var pexterncodeblocknode9 = nodearraylist6
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+ var listnode10 = nodearraylist7
+ assert listnode10 isa Array[Object]
+ listnode11 = concat(listnode11, listnode10)
var tkwendnode13 = nodearraylist9
assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode7,
null,
- listnode10,
+ pexterncodeblocknode9,
+ listnode11,
listnode12,
tkwendnode13
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction96
+private class ReduceAction98
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode10 = new Array[Object]
+ var listnode11 = new Array[Object]
var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var listnode9 = nodearraylist7
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
- var listnode11 = nodearraylist8
- assert listnode11 isa Array[Object]
- listnode12 = concat(listnode12, listnode11)
+ var pexterncodeblocknode9 = nodearraylist7
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+ var listnode10 = nodearraylist8
+ assert listnode10 isa Array[Object]
+ listnode11 = concat(listnode11, listnode10)
var tkwendnode13 = nodearraylist10
assert tkwendnode13 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode7,
null,
- listnode10,
+ pexterncodeblocknode9,
+ listnode11,
listnode12,
tkwendnode13
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction97
+private class ReduceAction99
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var listnode7 = nodearraylist6
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var listnode10 = nodearraylist7
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var listnode12 = nodearraylist8
- assert listnode12 isa Array[Object]
- listnode13 = concat(listnode13, listnode12)
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var listnode11 = nodearraylist8
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
var tkwendnode14 = nodearraylist10
assert tkwendnode14 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode8,
null,
- listnode11,
+ pexterncodeblocknode10,
+ listnode12,
listnode13,
tkwendnode14
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction98
+private class ReduceAction100
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var listnode7 = nodearraylist7
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var listnode10 = nodearraylist8
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var listnode12 = nodearraylist9
- assert listnode12 isa Array[Object]
- listnode13 = concat(listnode13, listnode12)
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var listnode11 = nodearraylist9
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
var tkwendnode14 = nodearraylist11
assert tkwendnode14 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
tclassidnode6,
listnode8,
null,
- listnode11,
+ pexterncodeblocknode10,
+ listnode12,
listnode13,
tkwendnode14
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction99
+private class ReduceAction101
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode12 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist5
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist6
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var listnode9 = nodearraylist7
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
- var listnode11 = nodearraylist8
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
assert listnode11 isa Array[Object]
listnode12 = concat(listnode12, listnode11)
- var tkwendnode13 = nodearraylist10
- assert tkwendnode13 isa nullable TKwend
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist7
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var listnode15 = nodearraylist8
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var tkwendnode18 = nodearraylist10
+ assert tkwendnode18 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode10,
- listnode12,
- tkwendnode13
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction100
+private class ReduceAction102
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode7 = new Array[Object]
- var listnode10 = new Array[Object]
- var listnode12 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var pexterncodeblocknode8 = nodearraylist7
- assert pexterncodeblocknode8 isa nullable AExternCodeBlock
- var listnode9 = nodearraylist8
- assert listnode9 isa Array[Object]
- listnode10 = concat(listnode10, listnode9)
- var listnode11 = nodearraylist9
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
assert listnode11 isa Array[Object]
listnode12 = concat(listnode12, listnode11)
- var tkwendnode13 = nodearraylist11
- assert tkwendnode13 isa nullable TKwend
- var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
- pdocnode2,
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist8
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var listnode15 = nodearraylist9
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var tkwendnode18 = nodearraylist11
+ assert tkwendnode18 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
tkwredefnode3,
pvisibilitynode4,
pclasskindnode5,
tclassidnode6,
listnode7,
- pexterncodeblocknode8,
- listnode10,
- listnode12,
- tkwendnode13
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode16,
+ listnode17,
+ tkwendnode18
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction101
+private class ReduceAction103
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
- var listnode13 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
var listnode7 = nodearraylist6
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist7
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var listnode10 = nodearraylist8
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var listnode12 = nodearraylist9
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
assert listnode12 isa Array[Object]
listnode13 = concat(listnode13, listnode12)
- var tkwendnode14 = nodearraylist11
- assert tkwendnode14 isa nullable TKwend
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var pexterncodeblocknode15 = nodearraylist8
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var listnode16 = nodearraylist9
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode19 = nodearraylist11
+ assert tkwendnode19 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode11,
- listnode13,
- tkwendnode14
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode17,
+ listnode18,
+ tkwendnode19
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction102
+private class ReduceAction104
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
- var listnode13 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
var listnode7 = nodearraylist7
assert listnode7 isa Array[Object]
listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist8
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var listnode10 = nodearraylist9
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var listnode12 = nodearraylist10
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
assert listnode12 isa Array[Object]
listnode13 = concat(listnode13, listnode12)
- var tkwendnode14 = nodearraylist12
- assert tkwendnode14 isa nullable TKwend
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var pexterncodeblocknode15 = nodearraylist9
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var listnode16 = nodearraylist10
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode19 = nodearraylist12
+ assert tkwendnode19 isa nullable TKwend
var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pclasskindnode5,
tclassidnode6,
listnode8,
- pexterncodeblocknode9,
- listnode11,
- listnode13,
- tkwendnode14
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode17,
+ listnode18,
+ tkwendnode19
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction103
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var tkwclassnode2 = nodearraylist1
- assert tkwclassnode2 isa nullable TKwclass
- var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
- tkwclassnode2
- )
- node_list = pclasskindnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction104
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var tkwabstractnode2 = nodearraylist1
- assert tkwabstractnode2 isa nullable TKwabstract
- var tkwclassnode3 = nodearraylist2
- assert tkwclassnode3 isa nullable TKwclass
- var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
- tkwabstractnode2,
- tkwclassnode3
- )
- node_list = pclasskindnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
private class ReduceAction105
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwinterfacenode2 = nodearraylist1
- assert tkwinterfacenode2 isa nullable TKwinterface
- var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
- tkwinterfacenode2
+ var listnode7 = new Array[Object]
+ var listnode10 = new Array[Object]
+ var listnode12 = new Array[Object]
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var tkwendnode13 = nodearraylist8
+ assert tkwendnode13 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ null,
+ null,
+ listnode10,
+ listnode12,
+ tkwendnode13
)
- node_list = pclasskindnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var tkwenumnode2 = nodearraylist1
- assert tkwenumnode2 isa nullable TKwenum
- var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
- tkwenumnode2
- )
- node_list = pclasskindnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction107
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var tkwexternnode2 = nodearraylist1
- assert tkwexternnode2 isa nullable TKwextern
- var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
- tkwexternnode2,
- null
- )
- node_list = pclasskindnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction108
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwexternnode2 = nodearraylist1
- assert tkwexternnode2 isa nullable TKwextern
- var tkwclassnode3 = nodearraylist2
- assert tkwclassnode3 isa nullable TKwclass
- var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
- tkwexternnode2,
- tkwclassnode3
+ var listnode7 = new Array[Object]
+ var listnode10 = new Array[Object]
+ var listnode12 = new Array[Object]
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var tkwendnode13 = nodearraylist9
+ assert tkwendnode13 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ null,
+ null,
+ listnode10,
+ listnode12,
+ tkwendnode13
)
- node_list = pclasskindnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction109
+private class ReduceAction107
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var pformaldefnode1 = nodearraylist3
- if pformaldefnode1 != null then
- listnode2.add(pformaldefnode1)
- end
- node_list = listnode2
+ var listnode8 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist9
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ null,
+ null,
+ listnode11,
+ listnode13,
+ tkwendnode14
+ )
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction110
+private class ReduceAction108
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var pformaldefnode1 = nodearraylist3
- var listnode2 = nodearraylist4
- assert listnode2 isa Array[Object]
- if pformaldefnode1 != null then
- listnode3.add(pformaldefnode1)
- end
- listnode3 = concat(listnode3, listnode2)
- node_list = listnode3
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction111
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var pformaldefnode1 = nodearraylist3
- node_list = pformaldefnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction112
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var tclassidnode2 = nodearraylist1
- assert tclassidnode2 isa nullable TClassid
- var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
- tclassidnode2,
- null
- )
- node_list = pformaldefnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction113
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var tclassidnode2 = nodearraylist1
- assert tclassidnode2 isa nullable TClassid
- var ptypenode3 = nodearraylist2
- assert ptypenode3 isa nullable AType
- var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
- tclassidnode2,
- ptypenode3
- )
- node_list = pformaldefnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction114
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var tkwsupernode2 = nodearraylist2
- assert tkwsupernode2 isa nullable TKwsuper
- var ptypenode3 = nodearraylist4
- assert ptypenode3 isa nullable AType
- var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
- tkwsupernode2,
- ptypenode3
+ var listnode8 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist10
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ null,
+ null,
+ listnode11,
+ listnode13,
+ tkwendnode14
)
- node_list = psuperclassnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction115
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var ppropdefnode1 = nodearraylist1
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction116
+private class ReduceAction109
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist7
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var listnode16 = nodearraylist7
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode18 = nodearraylist9
+ assert tkwendnode18 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ null,
+ listnode15,
+ listnode17,
+ tkwendnode18
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction117
+private class ReduceAction110
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist8
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var listnode16 = nodearraylist8
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode18 = nodearraylist10
+ assert tkwendnode18 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ null,
+ listnode15,
+ listnode17,
+ tkwendnode18
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction118
+private class ReduceAction111
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist7
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var listnode17 = nodearraylist8
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist10
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
+ null,
+ listnode16,
+ listnode18,
+ tkwendnode19
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction119
+private class ReduceAction112
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist8
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var listnode17 = nodearraylist9
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist11
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
- )
- node_list = ppropdefnode1
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
+ null,
+ listnode16,
+ listnode18,
+ tkwendnode19
+ )
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction120
+private class ReduceAction113
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode10 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist8
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var pexterncodeblocknode9 = nodearraylist6
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var tkwendnode13 = nodearraylist9
+ assert tkwendnode13 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ null,
+ pexterncodeblocknode9,
+ listnode10,
+ listnode12,
+ tkwendnode13
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction121
+private class ReduceAction114
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode10 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist9
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var pexterncodeblocknode9 = nodearraylist7
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+ var listnode11 = nodearraylist8
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var tkwendnode13 = nodearraylist10
+ assert tkwendnode13 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ null,
+ pexterncodeblocknode9,
+ listnode10,
+ listnode12,
+ tkwendnode13
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction122
+private class ReduceAction115
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist10
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ null,
+ pexterncodeblocknode10,
+ listnode11,
+ listnode13,
+ tkwendnode14
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction123
+private class ReduceAction116
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var listnode12 = nodearraylist9
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist11
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ null,
+ pexterncodeblocknode10,
+ listnode11,
+ listnode13,
+ tkwendnode14
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction124
+private class ReduceAction117
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist7
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var listnode16 = nodearraylist8
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode18 = nodearraylist10
+ assert tkwendnode18 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode15,
+ listnode17,
+ tkwendnode18
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction125
+private class ReduceAction118
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode15 = new Array[Object]
+ var listnode17 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist8
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var listnode16 = nodearraylist9
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var tkwendnode18 = nodearraylist11
+ assert tkwendnode18 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode15,
+ listnode17,
+ tkwendnode18
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction126
+private class ReduceAction119
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
- pdocnode2,
- null,
- pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- null,
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
null,
+ null,
+ listnode13,
null
)
- node_list = ppropdefnode1
+ var pexterncodeblocknode15 = nodearraylist8
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var listnode17 = nodearraylist9
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist11
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode16,
+ listnode18,
+ tkwendnode19
+ )
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction127
+private class ReduceAction120
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
- pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
null,
null,
+ listnode13,
null
)
- node_list = ppropdefnode1
+ var pexterncodeblocknode15 = nodearraylist9
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var listnode17 = nodearraylist10
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist12
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode16,
+ listnode18,
+ tkwendnode19
+ )
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction128
+private class ReduceAction121
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode10 = nodearraylist6
+ assert listnode10 isa Array[Object]
+ listnode11 = concat(listnode11, listnode10)
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist9
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
null,
- null
+ null,
+ listnode11,
+ listnode13,
+ tkwendnode14
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction129
+private class ReduceAction122
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode10 = nodearraylist7
+ assert listnode10 isa Array[Object]
+ listnode11 = concat(listnode11, listnode10)
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist10
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
null,
- null
+ null,
+ listnode11,
+ listnode13,
+ tkwendnode14
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction130
+private class ReduceAction123
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode12 = new Array[Object]
+ var listnode14 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var listnode13 = nodearraylist8
+ assert listnode13 isa Array[Object]
+ listnode14 = concat(listnode14, listnode13)
+ var tkwendnode15 = nodearraylist10
+ assert tkwendnode15 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
null,
- pexterncallsnode9,
- null
+ null,
+ listnode12,
+ listnode14,
+ tkwendnode15
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction131
+private class ReduceAction124
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode12 = new Array[Object]
+ var listnode14 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode11 = nodearraylist8
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var listnode13 = nodearraylist9
+ assert listnode13 isa Array[Object]
+ listnode14 = concat(listnode14, listnode13)
+ var tkwendnode15 = nodearraylist11
+ assert tkwendnode15 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
null,
- pexterncallsnode9,
- null
+ null,
+ listnode12,
+ listnode14,
+ tkwendnode15
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction132
+private class ReduceAction125
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
- pdocnode2,
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
null,
- pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
+ null,
+ listnode12,
null
)
- node_list = ppropdefnode1
- p.push(p.go_to(_goto), node_list)
- end
+ var listnode15 = nodearraylist7
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var listnode17 = nodearraylist8
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist10
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ null,
+ listnode16,
+ listnode18,
+ tkwendnode19
+ )
+ node_list = pclassdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
end
-private class ReduceAction133
+private class ReduceAction126
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist10
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var listnode15 = nodearraylist8
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var listnode17 = nodearraylist9
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist11
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- null
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ null,
+ listnode16,
+ listnode18,
+ tkwendnode19
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction134
+private class ReduceAction127
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode19 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var listnode16 = nodearraylist8
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var listnode18 = nodearraylist9
+ assert listnode18 isa Array[Object]
+ listnode19 = concat(listnode19, listnode18)
+ var tkwendnode20 = nodearraylist11
+ assert tkwendnode20 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- null,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
null,
- pexterncodeblocknode10
+ listnode17,
+ listnode19,
+ tkwendnode20
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction135
+private class ReduceAction128
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode19 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var listnode16 = nodearraylist9
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var listnode18 = nodearraylist10
+ assert listnode18 isa Array[Object]
+ listnode19 = concat(listnode19, listnode18)
+ var tkwendnode20 = nodearraylist12
+ assert tkwendnode20 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- null,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
null,
- pexterncodeblocknode10
+ listnode17,
+ listnode19,
+ tkwendnode20
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction136
+private class ReduceAction129
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var pexterncodeblocknode9 = nodearraylist6
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+ var listnode10 = nodearraylist7
+ assert listnode10 isa Array[Object]
+ listnode11 = concat(listnode11, listnode10)
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist10
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
null,
- pexterncodeblocknode10
+ pexterncodeblocknode9,
+ listnode11,
+ listnode13,
+ tkwendnode14
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction137
+private class ReduceAction130
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode11 = new Array[Object]
+ var listnode13 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist10
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var pexterncodeblocknode9 = nodearraylist7
+ assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+ var listnode10 = nodearraylist8
+ assert listnode10 isa Array[Object]
+ listnode11 = concat(listnode11, listnode10)
+ var listnode12 = nodearraylist9
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist11
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
null,
- pexterncodeblocknode10
+ pexterncodeblocknode9,
+ listnode11,
+ listnode13,
+ tkwendnode14
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction138
+private class ReduceAction131
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode12 = new Array[Object]
+ var listnode14 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist9
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var pexterncodeblocknode10 = nodearraylist7
assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var listnode11 = nodearraylist8
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var listnode13 = nodearraylist9
+ assert listnode13 isa Array[Object]
+ listnode14 = concat(listnode14, listnode13)
+ var tkwendnode15 = nodearraylist11
+ assert tkwendnode15 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pexterncodeblocknode10,
+ listnode12,
+ listnode14,
+ tkwendnode15
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction139
+private class ReduceAction132
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode12 = new Array[Object]
+ var listnode14 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist10
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var pexterncodeblocknode10 = nodearraylist8
assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var listnode11 = nodearraylist9
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var listnode13 = nodearraylist10
+ assert listnode13 isa Array[Object]
+ listnode14 = concat(listnode14, listnode13)
+ var tkwendnode15 = nodearraylist12
+ assert tkwendnode15 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pexterncodeblocknode10,
+ listnode12,
+ listnode14,
+ tkwendnode15
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction140
+private class ReduceAction133
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist10
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist6
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist7
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var listnode15 = nodearraylist8
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var listnode17 = nodearraylist9
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist11
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
null,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode16,
+ listnode18,
+ tkwendnode19
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction141
+private class ReduceAction134
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist12 = p.pop
var nodearraylist11 = p.pop
var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode7 = new Array[Object]
+ var listnode16 = new Array[Object]
+ var listnode18 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist10
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist11
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode12 = new Array[Object]
+ var listnode11 = nodearraylist7
+ assert listnode11 isa Array[Object]
+ listnode12 = concat(listnode12, listnode11)
+ var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode12,
+ null
+ )
+ var pexterncodeblocknode14 = nodearraylist8
+ assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+ var listnode15 = nodearraylist9
+ assert listnode15 isa Array[Object]
+ listnode16 = concat(listnode16, listnode15)
+ var listnode17 = nodearraylist10
+ assert listnode17 isa Array[Object]
+ listnode18 = concat(listnode18, listnode17)
+ var tkwendnode19 = nodearraylist12
+ assert tkwendnode19 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pclasskindnode5,
+ tclassidnode6,
+ listnode7,
+ pannotationsnode8,
+ pexterncodeblocknode14,
+ listnode16,
+ listnode18,
+ tkwendnode19
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction142
+private class ReduceAction135
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode19 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var pvisibilitynode4 = nodearraylist2
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist6
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
- pdocnode2,
+ var pclasskindnode5 = nodearraylist3
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist7
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
null,
- pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
null,
+ listnode13,
+ null
+ )
+ var pexterncodeblocknode15 = nodearraylist8
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var listnode16 = nodearraylist9
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var listnode18 = nodearraylist10
+ assert listnode18 isa Array[Object]
+ listnode19 = concat(listnode19, listnode18)
+ var tkwendnode20 = nodearraylist12
+ assert tkwendnode20 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
null,
- pexterncodeblocknode10
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode17,
+ listnode19,
+ tkwendnode20
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction143
+private class ReduceAction136
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist13 = p.pop
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
+ var listnode8 = new Array[Object]
+ var listnode17 = new Array[Object]
+ var listnode19 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert tkwredefnode3 isa nullable TKwredef
var pvisibilitynode4 = nodearraylist3
assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ var pclasskindnode5 = nodearraylist4
+ assert pclasskindnode5 isa nullable AClasskind
+ var tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var listnode13 = new Array[Object]
+ var listnode12 = nodearraylist8
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode13,
+ null
+ )
+ var pexterncodeblocknode15 = nodearraylist9
+ assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+ var listnode16 = nodearraylist10
+ assert listnode16 isa Array[Object]
+ listnode17 = concat(listnode17, listnode16)
+ var listnode18 = nodearraylist11
+ assert listnode18 isa Array[Object]
+ listnode19 = concat(listnode19, listnode18)
+ var tkwendnode20 = nodearraylist13
+ assert tkwendnode20 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- null,
- null,
- pexterncodeblocknode10
+ pclasskindnode5,
+ tclassidnode6,
+ listnode8,
+ pannotationsnode9,
+ pexterncodeblocknode15,
+ listnode17,
+ listnode19,
+ tkwendnode20
)
- node_list = ppropdefnode1
+ node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction144
+private class ReduceAction137
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tkwclassnode2 = nodearraylist1
+ assert tkwclassnode2 isa nullable TKwclass
+ var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
+ tkwclassnode2
+ )
+ node_list = pclasskindnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction138
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist3
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist6
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
- pdocnode2,
- null,
- pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ var tkwabstractnode2 = nodearraylist1
+ assert tkwabstractnode2 isa nullable TKwabstract
+ var tkwclassnode3 = nodearraylist2
+ assert tkwclassnode3 isa nullable TKwclass
+ var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
+ tkwabstractnode2,
+ tkwclassnode3
)
- node_list = ppropdefnode1
+ node_list = pclasskindnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction145
+private class ReduceAction139
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwmethnode5 = nodearraylist4
- assert tkwmethnode5 isa nullable TKwmeth
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist7
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
- pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwmethnode5,
- pmethidnode6,
- psignaturenode7,
- null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ var tkwinterfacenode2 = nodearraylist1
+ assert tkwinterfacenode2 isa nullable TKwinterface
+ var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
+ tkwinterfacenode2
)
- node_list = ppropdefnode1
+ node_list = pclasskindnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction146
+private class ReduceAction140
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist4
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
+ var tkwenumnode2 = nodearraylist1
+ assert tkwenumnode2 isa nullable TKwenum
+ var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
+ tkwenumnode2
+ )
+ node_list = pclasskindnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction141
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tkwexternnode2 = nodearraylist1
+ assert tkwexternnode2 isa nullable TKwextern
+ var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
+ tkwexternnode2,
null
)
- node_list = ppropdefnode1
+ node_list = pclasskindnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction147
+private class ReduceAction142
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- null,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- null
+ var tkwexternnode2 = nodearraylist1
+ assert tkwexternnode2 isa nullable TKwextern
+ var tkwclassnode3 = nodearraylist2
+ assert tkwclassnode3 isa nullable TKwclass
+ var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
+ tkwexternnode2,
+ tkwclassnode3
)
- node_list = ppropdefnode1
+ node_list = pclasskindnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction148
+private class ReduceAction143
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- pablenode3,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- null
- )
- node_list = ppropdefnode1
+ var listnode2 = new Array[Object]
+ var pformaldefnode1 = nodearraylist3
+ if pformaldefnode1 != null then
+ listnode2.add(pformaldefnode1)
+ end
+ node_list = listnode2
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction149
+private class ReduceAction144
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- pablenode3,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- null
- )
- node_list = ppropdefnode1
+ var listnode3 = new Array[Object]
+ var pformaldefnode1 = nodearraylist3
+ var listnode2 = nodearraylist4
+ assert listnode2 isa Array[Object]
+ if pformaldefnode1 != null then
+ listnode3.add(pformaldefnode1)
+ end
+ listnode3 = concat(listnode3, listnode2)
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction150
+private class ReduceAction145
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- null,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
+ var pformaldefnode1 = nodearraylist3
+ node_list = pformaldefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction146
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tclassidnode2 = nodearraylist1
+ assert tclassidnode2 isa nullable TClassid
+ var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+ tclassidnode2,
null,
null
)
- node_list = ppropdefnode1
+ node_list = pformaldefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction151
+private class ReduceAction147
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- null,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
+ var tclassidnode2 = nodearraylist1
+ assert tclassidnode2 isa nullable TClassid
+ var pannotationsnode4 = nodearraylist2
+ assert pannotationsnode4 isa nullable AAnnotations
+ var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+ tclassidnode2,
null,
- null
+ pannotationsnode4
)
- node_list = ppropdefnode1
+ node_list = pformaldefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction152
+private class ReduceAction148
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- pablenode3,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
+ var tclassidnode2 = nodearraylist1
+ assert tclassidnode2 isa nullable TClassid
+ var ptypenode3 = nodearraylist2
+ assert ptypenode3 isa nullable AType
+ var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+ tclassidnode2,
+ ptypenode3,
null
)
- node_list = ppropdefnode1
+ node_list = pformaldefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction153
+private class ReduceAction149
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist4
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist5
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist6
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist7
- assert tattridnode8 isa nullable TAttrid
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- pablenode3,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- null
+ var tclassidnode2 = nodearraylist1
+ assert tclassidnode2 isa nullable TClassid
+ var ptypenode3 = nodearraylist3
+ assert ptypenode3 isa nullable AType
+ var pannotationsnode4 = nodearraylist2
+ assert pannotationsnode4 isa nullable AAnnotations
+ var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+ tclassidnode2,
+ ptypenode3,
+ pannotationsnode4
)
- node_list = ppropdefnode1
+ node_list = pformaldefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction154
+private class ReduceAction150
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist4
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist5
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
+ var tkwsupernode2 = nodearraylist2
+ assert tkwsupernode2 isa nullable TKwsuper
+ var ptypenode3 = nodearraylist4
+ assert ptypenode3 isa nullable AType
+ var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
+ tkwsupernode2,
+ ptypenode3,
null
)
- node_list = ppropdefnode1
+ node_list = psuperclassnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction155
+private class ReduceAction151
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- null,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
- null
+ var tkwsupernode2 = nodearraylist2
+ assert tkwsupernode2 isa nullable TKwsuper
+ var ptypenode3 = nodearraylist4
+ assert ptypenode3 isa nullable AType
+ var pannotationsnode4 = nodearraylist5
+ assert pannotationsnode4 isa nullable AAnnotations
+ var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
+ tkwsupernode2,
+ ptypenode3,
+ pannotationsnode4
)
- node_list = ppropdefnode1
+ node_list = psuperclassnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction156
+private class ReduceAction152
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- pablenode3,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
- null
- )
+ var ppropdefnode1 = nodearraylist1
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction157
+private class ReduceAction153
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist7
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
- pablenode3,
null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- ptypenode10,
- null
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction158
+private class ReduceAction154
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- null,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- ptypenode10,
- null
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction159
+private class ReduceAction155
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist7
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
null,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
- null
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction160
+private class ReduceAction156
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist7
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist7
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist9
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
- pablenode3,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
- null
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction161
+private class ReduceAction157
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist4
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist5
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist6
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist7
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist8
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
- pablenode3,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
null,
- ptypenode10,
- null
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction162
+private class ReduceAction158
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist4
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist7
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- pexprnode11
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction163
+private class ReduceAction159
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist8
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
null,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- pexprnode11
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction164
+private class ReduceAction160
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist8
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist7
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist9
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
- pablenode3,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- pexprnode11
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction165
+private class ReduceAction161
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
- pablenode3,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
null,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- pexprnode11
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction166
+private class ReduceAction162
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist8
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist9
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- pexprnode11
+ pexprnode9
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction167
+private class ReduceAction163
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
pdocnode2,
null,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- pexprnode11
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction168
+private class ReduceAction164
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist7
+ assert pannotationsnode8 isa nullable AAnnotations
+ var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
pdocnode2,
- pablenode3,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- null,
- pexprnode11
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction169
+private class ReduceAction165
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist4
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist5
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist6
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist7
- assert tattridnode8 isa nullable TAttrid
- var pexprnode11 = nodearraylist10
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
pdocnode2,
- pablenode3,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
null,
- pexprnode11
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction170
+private class ReduceAction166
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist4
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist5
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist8
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
pdocnode2,
- null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
- pexprnode11
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction171
+private class ReduceAction167
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
pdocnode2,
null,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
- pexprnode11
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction172
+private class ReduceAction168
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
- pdocnode2,
- pablenode3,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
- null,
- ptypenode10,
- pexprnode11
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction173
+private class ReduceAction169
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist7
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist10
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
- pablenode3,
null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- ptypenode10,
- pexprnode11
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction174
+private class ReduceAction170
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist5
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
null,
- ptypenode10,
- pexprnode11
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction175
+private class ReduceAction171
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist2
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist3
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist7
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist10
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
null,
- ptypenode10,
- pexprnode11
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction176
+private class ReduceAction172
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist4
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist5
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist6
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist7
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist10
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
- pablenode3,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
null,
- ptypenode10,
- pexprnode11
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction177
+private class ReduceAction173
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist11 = p.pop
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode3 = nodearraylist2
- assert pablenode3 isa nullable AAble
- var pablenode4 = nodearraylist3
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist4
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist5
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist6
- assert tkwvarnode7 isa nullable TKwvar
- var tattridnode8 = nodearraylist7
- assert tattridnode8 isa nullable TAttrid
- var ptypenode10 = nodearraylist8
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist11
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
- pablenode3,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- tattridnode8,
null,
- ptypenode10,
- pexprnode11
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction178
+private class ReduceAction174
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
- null,
+ pexterncallsnode9,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction179
+private class ReduceAction175
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
- null,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction180
+private class ReduceAction176
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist5
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist10
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
- null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
- ptypenode10,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction181
+private class ReduceAction177
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
null,
- tidnode9,
- ptypenode10,
- null
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction182
+private class ReduceAction178
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist5
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
null,
- null
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction183
+private class ReduceAction179
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist6
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
null,
- null
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction184
+private class ReduceAction180
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist6
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist5
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist10
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
null,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
- ptypenode10,
- null
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction185
+private class ReduceAction181
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist7
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- tidnode9,
- ptypenode10,
- null
+ pexterncallsnode9,
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction186
+private class ReduceAction182
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var pexprnode11 = nodearraylist7
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist10
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
- null,
- pexprnode11
+ pexterncallsnode9,
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction187
+private class ReduceAction183
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var pexprnode11 = nodearraylist8
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist10
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
- null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
- null,
- pexprnode11
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction188
+private class ReduceAction184
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist5
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist8
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist10
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist11
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
- null,
- null,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
- ptypenode10,
- pexprnode11
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction189
+private class ReduceAction185
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist6
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
null,
- tidnode9,
- ptypenode10,
- pexprnode11
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction190
+private class ReduceAction186
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist5
- assert pablenode4 isa nullable AAble
- var pvisibilitynode6 = nodearraylist2
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist3
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var pexprnode11 = nodearraylist8
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- pablenode4,
- null,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
null,
- pexprnode11
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction191
+private class ReduceAction187
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist6
- assert pablenode4 isa nullable AAble
- var tkwredefnode5 = nodearraylist2
- assert tkwredefnode5 isa nullable TKwredef
- var pvisibilitynode6 = nodearraylist3
- assert pvisibilitynode6 isa nullable AVisibility
- var tkwvarnode7 = nodearraylist4
- assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
- var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist3
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist6
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
pdocnode2,
null,
- pablenode4,
- tkwredefnode5,
- pvisibilitynode6,
- tkwvarnode7,
- null,
- tidnode9,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
null,
- pexprnode11
+ pexterncallsnode9,
+ pexterncodeblocknode10
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction192
+private class ReduceAction188
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist6
- assert pablenode4 isa nullable AAble
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwmethnode5 = nodearraylist4
+ assert tkwmethnode5 isa nullable TKwmeth
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist7
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwmethnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction189
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
var pvisibilitynode6 = nodearraylist2
assert pvisibilitynode6 isa nullable AVisibility
var tkwvarnode7 = nodearraylist3
assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist4
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist5
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist9
- assert pexprnode11 isa nullable AExpr
+ var tattridnode8 = nodearraylist4
+ assert tattridnode8 isa nullable TAttrid
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pablenode4,
+ null,
null,
pvisibilitynode6,
tkwvarnode7,
+ tattridnode8,
null,
- tidnode9,
- ptypenode10,
- pexprnode11
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction193
+private class ReduceAction190
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pablenode4 = nodearraylist7
- assert pablenode4 isa nullable AAble
var tkwredefnode5 = nodearraylist2
assert tkwredefnode5 isa nullable TKwredef
var pvisibilitynode6 = nodearraylist3
assert pvisibilitynode6 isa nullable AVisibility
var tkwvarnode7 = nodearraylist4
assert tkwvarnode7 isa nullable TKwvar
- var tidnode9 = nodearraylist5
- assert tidnode9 isa nullable TId
- var ptypenode10 = nodearraylist6
- assert ptypenode10 isa nullable AType
- var pexprnode11 = nodearraylist10
- assert pexprnode11 isa nullable AExpr
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pablenode4,
+ null,
tkwredefnode5,
pvisibilitynode6,
tkwvarnode7,
+ tattridnode8,
null,
- tidnode9,
- ptypenode10,
- pexprnode11
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction194
+private class ReduceAction191
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist3
- assert tkwinitnode5 isa nullable TKwinit
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist6
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
null,
- pvisibilitynode4,
- tkwinitnode5,
null,
- psignaturenode7,
- pexprnode8
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction195
+private class ReduceAction192
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist4
- assert tkwinitnode5 isa nullable TKwinit
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist7
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwinitnode5,
+ pablenode3,
null,
- psignaturenode7,
- pexprnode8
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction196
+private class ReduceAction193
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist3
- assert tkwinitnode5 isa nullable TKwinit
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist7
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwinitnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ pablenode4,
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction197
+private class ReduceAction194
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist4
- assert tkwinitnode5 isa nullable TKwinit
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist8
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwinitnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
- )
+ null,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ null
+ )
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction198
+private class ReduceAction195
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist3
- assert tkwinitnode5 isa nullable TKwinit
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist6
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
+ pablenode4,
null,
- pvisibilitynode4,
- tkwinitnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
- psignaturenode7,
- pexprnode8
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction199
+private class ReduceAction196
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist4
- assert tkwinitnode5 isa nullable TKwinit
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist7
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist4
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist5
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist6
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist7
+ assert tattridnode8 isa nullable TAttrid
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwinitnode5,
+ pablenode3,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
- psignaturenode7,
- pexprnode8
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction200
+private class ReduceAction197
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist3
- assert tkwinitnode5 isa nullable TKwinit
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist7
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist4
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwinitnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ null,
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction201
+private class ReduceAction198
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwinitnode5 = nodearraylist4
- assert tkwinitnode5 isa nullable TKwinit
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexprnode8 = nodearraylist8
- assert pexprnode8 isa nullable AExpr
- var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwinitnode5,
- pmethidnode6,
- psignaturenode7,
- pexprnode8
+ null,
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction202
+private class ReduceAction199
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwtypenode5 = nodearraylist3
- assert tkwtypenode5 isa nullable TKwtype
- var tclassidnode6 = nodearraylist4
- assert tclassidnode6 isa nullable TClassid
- var ptypenode7 = nodearraylist5
- assert ptypenode7 isa nullable AType
- var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
null,
- pvisibilitynode4,
- tkwtypenode5,
- tclassidnode6,
- ptypenode7
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction203
+private class ReduceAction200
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwtypenode5 = nodearraylist4
- assert tkwtypenode5 isa nullable TKwtype
- var tclassidnode6 = nodearraylist5
- assert tclassidnode6 isa nullable TClassid
- var ptypenode7 = nodearraylist6
- assert ptypenode7 isa nullable AType
- var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist7
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwtypenode5,
- tclassidnode6,
- ptypenode7
+ pablenode3,
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction204
+private class ReduceAction201
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
+ pablenode4,
null,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
null
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction205
+private class ReduceAction202
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist7
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
null
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction206
+private class ReduceAction203
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist7
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
+ pablenode4,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
null
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction207
+private class ReduceAction204
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist4
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist5
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist6
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist7
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist8
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pablenode3,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
null
)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction208
+private class ReduceAction205
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist7
- assert tstringnode8 isa nullable TString
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist4
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist7
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
null,
- null
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction209
+private class ReduceAction206
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
null,
- null
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction210
+private class ReduceAction207
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
null,
- null
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction211
+private class ReduceAction208
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
+ pablenode3,
null,
- null
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction212
+private class ReduceAction209
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist7
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
+ pablenode4,
null,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
- pexterncallsnode9,
- null
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction213
+private class ReduceAction210
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
- pexterncallsnode9,
- null
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction214
+private class ReduceAction211
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
+ pablenode4,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
- pexterncallsnode9,
- null
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction215
+private class ReduceAction212
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist4
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist5
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist6
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist7
+ assert tattridnode8 isa nullable TAttrid
+ var pexprnode12 = nodearraylist10
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pablenode3,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
- pexterncallsnode9,
- null
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction216
+private class ReduceAction213
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist7
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist4
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- null
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction217
+private class ReduceAction214
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- null
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction218
+private class ReduceAction215
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- null
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction219
+private class ReduceAction216
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist10
- assert pexterncallsnode9 isa nullable AExternCalls
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist7
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist10
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- null
+ pablenode3,
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
+ null,
+ ptypenode10,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction220
+private class ReduceAction217
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist5
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
+ pablenode4,
null,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
- pexterncodeblocknode10
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction221
+private class ReduceAction218
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist2
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist3
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist7
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist10
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
- pexterncodeblocknode10
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction222
+private class ReduceAction219
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist4
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist5
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist6
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist7
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist10
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
+ pablenode3,
+ pablenode4,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
- pexterncodeblocknode10
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction223
+private class ReduceAction220
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode3 = nodearraylist2
+ assert pablenode3 isa nullable AAble
+ var pablenode4 = nodearraylist3
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist4
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist5
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist6
+ assert tkwvarnode7 isa nullable TKwvar
+ var tattridnode8 = nodearraylist7
+ assert tattridnode8 isa nullable TAttrid
+ var ptypenode10 = nodearraylist8
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist11
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pablenode3,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ tattridnode8,
null,
+ ptypenode10,
null,
- pexterncodeblocknode10
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction224
+private class ReduceAction221
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist7
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction225
+private class ReduceAction222
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction226
+private class ReduceAction223
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction227
+private class ReduceAction224
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist10
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction228
+private class ReduceAction225
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist7
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist5
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
+ pablenode4,
null,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ tidnode9,
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction229
+private class ReduceAction226
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ tidnode9,
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction230
+private class ReduceAction227
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pablenode4,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction231
+private class ReduceAction228
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist10
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist7
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction232
+private class ReduceAction229
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist7
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist5
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction233
+private class ReduceAction230
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist10
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist6
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction234
+private class ReduceAction231
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist8
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist9
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist10
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist6
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ null,
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction235
+private class ReduceAction232
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist11 = p.pop
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist9
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist10
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist11
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist7
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ null,
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction236
+private class ReduceAction233
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist5
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist5
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist6
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
+ pablenode4,
null,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
+ tidnode9,
null,
- pexterncodeblocknode10
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction237
+private class ReduceAction234
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist6
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist7
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
+ tidnode9,
null,
- pexterncodeblocknode10
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction238
+private class ReduceAction235
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist6
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist7
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pablenode4,
null,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
- pexterncodeblocknode10
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction239
+private class ReduceAction236
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist7
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist8
+ assert pannotationsnode11 isa nullable AAnnotations
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
null,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
- pexterncodeblocknode10
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction240
+private class ReduceAction237
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist5
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist6
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var pexprnode12 = nodearraylist7
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction241
+private class ReduceAction238
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist6
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction242
+private class ReduceAction239
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist6
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction243
+private class ReduceAction240
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist7
- assert tstringnode8 isa nullable TString
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
null,
- pexterncodeblocknode10
- )
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ pexprnode12
+ )
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction244
+private class ReduceAction241
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist5
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist6
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist5
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
+ pablenode4,
null,
- psignaturenode7,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ tidnode9,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction245
+private class ReduceAction242
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist6
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ tidnode9,
+ null,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction246
+private class ReduceAction243
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist6
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
+ pablenode4,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction247
+private class ReduceAction244
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var pexterncallsnode9 = nodearraylist7
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pablenode4 = nodearraylist7
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pexprnode12 = nodearraylist10
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
null,
- pexterncallsnode9,
- pexterncodeblocknode10
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ null,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction248
+private class ReduceAction245
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist4
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist5
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist6
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist7
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist8
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist7
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
null,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ pannotationsnode11,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction249
+private class ReduceAction246
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist1 = p.pop
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist6
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist7
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist9
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
null,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ pannotationsnode11,
+ pexprnode12
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction250
+private class ReduceAction247
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist9
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ pdocnode2,
+ null,
+ null,
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ pexprnode12
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction248
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist10
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ pdocnode2,
+ null,
+ null,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ pexprnode12
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction249
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pablenode4 = nodearraylist5
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist9
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ pdocnode2,
+ null,
+ pablenode4,
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ pannotationsnode11,
+ pexprnode12
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction250
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var pannotationsnode11 = nodearraylist10
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ pdocnode2,
+ null,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ null,
+ pannotationsnode11,
+ pexprnode12
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction251
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pablenode4 = nodearraylist6
+ assert pablenode4 isa nullable AAble
+ var pvisibilitynode6 = nodearraylist2
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist3
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist4
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist5
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist10
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ pdocnode2,
+ null,
+ pablenode4,
+ null,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ pexprnode12
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction252
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pablenode4 = nodearraylist7
+ assert pablenode4 isa nullable AAble
+ var tkwredefnode5 = nodearraylist2
+ assert tkwredefnode5 isa nullable TKwredef
+ var pvisibilitynode6 = nodearraylist3
+ assert pvisibilitynode6 isa nullable AVisibility
+ var tkwvarnode7 = nodearraylist4
+ assert tkwvarnode7 isa nullable TKwvar
+ var tidnode9 = nodearraylist5
+ assert tidnode9 isa nullable TId
+ var ptypenode10 = nodearraylist6
+ assert ptypenode10 isa nullable AType
+ var pannotationsnode11 = nodearraylist11
+ assert pannotationsnode11 isa nullable AAnnotations
+ var pexprnode12 = nodearraylist10
+ assert pexprnode12 isa nullable AExpr
+ var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+ pdocnode2,
+ null,
+ pablenode4,
+ tkwredefnode5,
+ pvisibilitynode6,
+ tkwvarnode7,
+ null,
+ tidnode9,
+ ptypenode10,
+ pannotationsnode11,
+ pexprnode12
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction253
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist6
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction254
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction255
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction256
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction257
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist5
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction258
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction259
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction260
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist7
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist9
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction261
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist6
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction262
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction263
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction264
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction265
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist5
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist7
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction266
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ null,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction267
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist3
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist8
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction268
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwinitnode5 = nodearraylist4
+ assert tkwinitnode5 isa nullable TKwinit
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pannotationsnode8 = nodearraylist7
+ assert pannotationsnode8 isa nullable AAnnotations
+ var pexprnode9 = nodearraylist9
+ assert pexprnode9 isa nullable AExpr
+ var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwinitnode5,
+ pmethidnode6,
+ psignaturenode7,
+ pannotationsnode8,
+ pexprnode9
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction269
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwtypenode5 = nodearraylist3
+ assert tkwtypenode5 isa nullable TKwtype
+ var tclassidnode6 = nodearraylist4
+ assert tclassidnode6 isa nullable TClassid
+ var ptypenode7 = nodearraylist5
+ assert ptypenode7 isa nullable AType
+ var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwtypenode5,
+ tclassidnode6,
+ ptypenode7,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction270
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwtypenode5 = nodearraylist4
+ assert tkwtypenode5 isa nullable TKwtype
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var ptypenode7 = nodearraylist6
+ assert ptypenode7 isa nullable AType
+ var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwtypenode5,
+ tclassidnode6,
+ ptypenode7,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction271
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwtypenode5 = nodearraylist3
+ assert tkwtypenode5 isa nullable TKwtype
+ var tclassidnode6 = nodearraylist4
+ assert tclassidnode6 isa nullable TClassid
+ var ptypenode7 = nodearraylist5
+ assert ptypenode7 isa nullable AType
+ var pannotationsnode8 = nodearraylist6
+ assert pannotationsnode8 isa nullable AAnnotations
+ var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwtypenode5,
+ tclassidnode6,
+ ptypenode7,
+ pannotationsnode8
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction272
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwtypenode5 = nodearraylist4
+ assert tkwtypenode5 isa nullable TKwtype
+ var tclassidnode6 = nodearraylist5
+ assert tclassidnode6 isa nullable TClassid
+ var ptypenode7 = nodearraylist6
+ assert ptypenode7 isa nullable AType
+ var pannotationsnode8 = nodearraylist7
+ assert pannotationsnode8 isa nullable AAnnotations
+ var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwtypenode5,
+ tclassidnode6,
+ ptypenode7,
+ pannotationsnode8
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction273
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction274
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction275
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction276
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction277
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist7
+ assert tstringnode8 isa nullable TString
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction278
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction279
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction280
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction281
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist7
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction282
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction283
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction284
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction285
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist7
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction286
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction287
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction288
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist10
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ null
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction289
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction290
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction291
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction292
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction293
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist7
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction294
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction295
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction296
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist10
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction297
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist7
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction298
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction299
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction300
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist10
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction301
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist7
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction302
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist10
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction303
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist8
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist9
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist10
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction304
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist9
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist10
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist11
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction305
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist5
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction306
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist6
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction307
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist6
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction308
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction309
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist5
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist6
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction310
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist6
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction311
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist6
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction312
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist7
+ assert tstringnode8 isa nullable TString
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ null,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction313
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist5
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist6
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction314
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist6
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction315
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist6
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction316
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var pexterncallsnode9 = nodearraylist7
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ null,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction317
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist4
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist5
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist6
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction318
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist6
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist7
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ null,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction319
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var pvisibilitynode4 = nodearraylist2
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist3
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist4
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist5
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist6
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist7
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist8
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ null,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction320
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pdocnode2 = nodearraylist1
+ assert pdocnode2 isa nullable ADoc
+ var tkwredefnode3 = nodearraylist2
+ assert tkwredefnode3 isa nullable TKwredef
+ var pvisibilitynode4 = nodearraylist3
+ assert pvisibilitynode4 isa nullable AVisibility
+ var tkwnewnode5 = nodearraylist4
+ assert tkwnewnode5 isa nullable TKwnew
+ var pmethidnode6 = nodearraylist5
+ assert pmethidnode6 isa nullable AMethid
+ var psignaturenode7 = nodearraylist6
+ assert psignaturenode7 isa nullable ASignature
+ var tstringnode8 = nodearraylist7
+ assert tstringnode8 isa nullable TString
+ var pexterncallsnode9 = nodearraylist8
+ assert pexterncallsnode9 isa nullable AExternCalls
+ var pexterncodeblocknode10 = nodearraylist9
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ tkwnewnode5,
+ pmethidnode6,
+ psignaturenode7,
+ tstringnode8,
+ pexterncallsnode9,
+ pexterncodeblocknode10
+ )
+ node_list = ppropdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction321
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pannotationsnode1 = nodearraylist2
+ node_list = pannotationsnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction322
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pannotationsnode1 = nodearraylist3
+ node_list = pannotationsnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction324
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pannotationsnode1 = nodearraylist3
+ node_list = pannotationsnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction325
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tkwreadablenode3 = nodearraylist1
+ assert tkwreadablenode3 isa nullable TKwreadable
+ var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
+ null,
+ tkwreadablenode3
+ )
+ node_list = pablenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction326
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwredefnode2 = nodearraylist1
+ assert tkwredefnode2 isa nullable TKwredef
+ var tkwreadablenode3 = nodearraylist2
+ assert tkwreadablenode3 isa nullable TKwreadable
+ var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
+ tkwredefnode2,
+ tkwreadablenode3
+ )
+ node_list = pablenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction327
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tkwwritablenode4 = nodearraylist1
+ assert tkwwritablenode4 isa nullable TKwwritable
+ var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+ null,
+ null,
+ tkwwritablenode4
+ )
+ node_list = pablenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction328
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwredefnode2 = nodearraylist1
+ assert tkwredefnode2 isa nullable TKwredef
+ var tkwwritablenode4 = nodearraylist2
+ assert tkwwritablenode4 isa nullable TKwwritable
+ var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+ tkwredefnode2,
+ null,
+ tkwwritablenode4
+ )
+ node_list = pablenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction329
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pvisibilitynode3 = nodearraylist1
+ assert pvisibilitynode3 isa nullable AVisibility
+ var tkwwritablenode4 = nodearraylist2
+ assert tkwwritablenode4 isa nullable TKwwritable
+ var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+ null,
+ pvisibilitynode3,
+ tkwwritablenode4
+ )
+ node_list = pablenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction330
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwredefnode2 = nodearraylist1
+ assert tkwredefnode2 isa nullable TKwredef
+ var pvisibilitynode3 = nodearraylist2
+ assert pvisibilitynode3 isa nullable AVisibility
+ var tkwwritablenode4 = nodearraylist3
+ assert tkwwritablenode4 isa nullable TKwwritable
+ var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+ tkwredefnode2,
+ pvisibilitynode3,
+ tkwwritablenode4
+ )
+ node_list = pablenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction331
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility
+ node_list = pvisibilitynode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction332
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwprivatenode2 = nodearraylist1
+ assert tkwprivatenode2 isa nullable TKwprivate
+ var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+ tkwprivatenode2
+ )
+ node_list = pvisibilitynode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction333
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwprotectednode2 = nodearraylist1
+ assert tkwprotectednode2 isa nullable TKwprotected
+ var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+ tkwprotectednode2
+ )
+ node_list = pvisibilitynode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction334
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwintrudenode2 = nodearraylist1
+ assert tkwintrudenode2 isa nullable TKwintrude
+ var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+ tkwintrudenode2
+ )
+ node_list = pvisibilitynode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction335
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
+ tidnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction336
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tplusnode2 = nodearraylist1
+ assert tplusnode2 isa nullable TPlus
+ var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
+ tplusnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction337
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tminusnode2 = nodearraylist1
+ assert tminusnode2 isa nullable TMinus
+ var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
+ tminusnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction338
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tstarnode2 = nodearraylist1
+ assert tstarnode2 isa nullable TStar
+ var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
+ tstarnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction339
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tslashnode2 = nodearraylist1
+ assert tslashnode2 isa nullable TSlash
+ var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
+ tslashnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction340
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tpercentnode2 = nodearraylist1
+ assert tpercentnode2 isa nullable TPercent
+ var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
+ tpercentnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction341
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var teqnode2 = nodearraylist1
+ assert teqnode2 isa nullable TEq
+ var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
+ teqnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction342
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tnenode2 = nodearraylist1
+ assert tnenode2 isa nullable TNe
+ var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
+ tnenode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction343
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tlenode2 = nodearraylist1
+ assert tlenode2 isa nullable TLe
+ var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
+ tlenode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction344
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tgenode2 = nodearraylist1
+ assert tgenode2 isa nullable TGe
+ var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
+ tgenode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction345
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tltnode2 = nodearraylist1
+ assert tltnode2 isa nullable TLt
+ var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
+ tltnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction346
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tgtnode2 = nodearraylist1
+ assert tgtnode2 isa nullable TGt
+ var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
+ tgtnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction347
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tllnode2 = nodearraylist1
+ assert tllnode2 isa nullable TLl
+ var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
+ tllnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction348
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tggnode2 = nodearraylist1
+ assert tggnode2 isa nullable TGg
+ var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
+ tggnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction349
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var tcbranode3 = nodearraylist2
+ assert tcbranode3 isa nullable TCbra
+ var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
+ tobranode2,
+ tcbranode3
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction350
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tstarshipnode2 = nodearraylist1
+ assert tstarshipnode2 isa nullable TStarship
+ var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
+ tstarshipnode2
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction351
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var tassignnode3 = nodearraylist2
+ assert tassignnode3 isa nullable TAssign
+ var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
+ tidnode2,
+ tassignnode3
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction352
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var tcbranode3 = nodearraylist2
+ assert tcbranode3 isa nullable TCbra
+ var tassignnode4 = nodearraylist3
+ assert tassignnode4 isa nullable TAssign
+ var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
+ tobranode2,
+ tcbranode3,
+ tassignnode4
+ )
+ node_list = pmethidnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction353
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var ptypenode5 = nodearraylist4
+ assert ptypenode5 isa nullable AType
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode3,
+ tcparnode4,
+ ptypenode5,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction354
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode4 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var tcparnode5 = nodearraylist4
+ assert tcparnode5 isa nullable TCpar
+ var ptypenode6 = nodearraylist5
+ assert ptypenode6 isa nullable AType
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode4,
+ tcparnode5,
+ ptypenode6,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction355
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var ptypenode5 = nodearraylist4
+ assert ptypenode5 isa nullable AType
+ var listnode6 = nodearraylist6
+ assert listnode6 isa Array[Object]
+ listnode7 = concat(listnode7, listnode6)
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode3,
+ tcparnode4,
+ ptypenode5,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction356
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode4 = new Array[Object]
+ var listnode8 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var tcparnode5 = nodearraylist4
+ assert tcparnode5 isa nullable TCpar
+ var ptypenode6 = nodearraylist5
+ assert ptypenode6 isa nullable AType
+ var listnode7 = nodearraylist7
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode4,
+ tcparnode5,
+ ptypenode6,
+ listnode8
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction357
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode3,
+ tcparnode4,
+ null,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction358
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode4 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var tcparnode5 = nodearraylist4
+ assert tcparnode5 isa nullable TCpar
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode4,
+ tcparnode5,
+ null,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction359
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var listnode6 = nodearraylist5
+ assert listnode6 isa Array[Object]
+ listnode7 = concat(listnode7, listnode6)
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode3,
+ tcparnode4,
+ null,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction360
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode4 = new Array[Object]
+ var listnode8 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var tcparnode5 = nodearraylist4
+ assert tcparnode5 isa nullable TCpar
+ var listnode7 = nodearraylist6
+ assert listnode7 isa Array[Object]
+ listnode8 = concat(listnode8, listnode7)
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode4,
+ tcparnode5,
+ null,
+ listnode8
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction361
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var ptypenode5 = nodearraylist1
+ assert ptypenode5 isa nullable AType
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ null,
+ listnode3,
+ null,
+ ptypenode5,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction362
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var ptypenode5 = nodearraylist1
+ assert ptypenode5 isa nullable AType
+ var listnode6 = nodearraylist3
+ assert listnode6 isa Array[Object]
+ listnode7 = concat(listnode7, listnode6)
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ null,
+ listnode3,
+ null,
+ ptypenode5,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction363
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ null,
+ listnode3,
+ null,
+ null,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction364
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var listnode6 = nodearraylist2
+ assert listnode6 isa Array[Object]
+ listnode7 = concat(listnode7, listnode6)
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ null,
+ listnode3,
+ null,
+ null,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction365
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode3,
+ tcparnode4,
+ null,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction366
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode4 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var tcparnode5 = nodearraylist4
+ assert tcparnode5 isa nullable TCpar
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode4,
+ tcparnode5,
+ null,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction367
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var ptypenode5 = nodearraylist4
+ assert ptypenode5 isa nullable AType
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode3,
+ tcparnode4,
+ ptypenode5,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction368
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode4 = new Array[Object]
+ var listnode7 = new Array[Object]
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var tcparnode5 = nodearraylist4
+ assert tcparnode5 isa nullable TCpar
+ var ptypenode6 = nodearraylist5
+ assert ptypenode6 isa nullable AType
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ toparnode2,
+ listnode4,
+ tcparnode5,
+ ptypenode6,
+ listnode7
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction369
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ null,
+ listnode3,
+ null,
+ null,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction370
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode6 = new Array[Object]
+ var ptypenode5 = nodearraylist1
+ assert ptypenode5 isa nullable AType
+ var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+ null,
+ listnode3,
+ null,
+ ptypenode5,
+ listnode6
+ )
+ node_list = psignaturenode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction371
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode2 = new Array[Object]
+ var pparamnode1 = nodearraylist1
+ if pparamnode1 != null then
+ listnode2.add(pparamnode1)
+ end
+ node_list = listnode2
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction372
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var pparamnode1 = nodearraylist1
+ var listnode2 = nodearraylist2
+ assert listnode2 isa Array[Object]
+ if pparamnode1 != null then
+ listnode3.add(pparamnode1)
+ end
+ listnode3 = concat(listnode3, listnode2)
+ node_list = listnode3
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction373
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pparamnode1 = nodearraylist3
+ node_list = pparamnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction374
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var pparamnode1: nullable AParam = new AParam.init_aparam(
+ tidnode2,
+ null,
+ null,
+ null
+ )
+ node_list = pparamnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction375
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var pannotationsnode5 = nodearraylist2
+ assert pannotationsnode5 isa nullable AAnnotations
+ var pparamnode1: nullable AParam = new AParam.init_aparam(
+ tidnode2,
+ null,
+ null,
+ pannotationsnode5
+ )
+ node_list = pparamnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction376
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var pvisibilitynode4 = nodearraylist2
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist3
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist4
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist5
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist6
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist7
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist8
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
- pdocnode2,
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var ptypenode3 = nodearraylist2
+ assert ptypenode3 isa nullable AType
+ var pparamnode1: nullable AParam = new AParam.init_aparam(
+ tidnode2,
+ ptypenode3,
null,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ null
)
- node_list = ppropdefnode1
+ node_list = pparamnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction251
+private class ReduceAction377
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode2 = nodearraylist1
- assert pdocnode2 isa nullable ADoc
- var tkwredefnode3 = nodearraylist2
- assert tkwredefnode3 isa nullable TKwredef
- var pvisibilitynode4 = nodearraylist3
- assert pvisibilitynode4 isa nullable AVisibility
- var tkwnewnode5 = nodearraylist4
- assert tkwnewnode5 isa nullable TKwnew
- var pmethidnode6 = nodearraylist5
- assert pmethidnode6 isa nullable AMethid
- var psignaturenode7 = nodearraylist6
- assert psignaturenode7 isa nullable ASignature
- var tstringnode8 = nodearraylist7
- assert tstringnode8 isa nullable TString
- var pexterncallsnode9 = nodearraylist8
- assert pexterncallsnode9 isa nullable AExternCalls
- var pexterncodeblocknode10 = nodearraylist9
- assert pexterncodeblocknode10 isa nullable AExternCodeBlock
- var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
- pdocnode2,
- tkwredefnode3,
- pvisibilitynode4,
- tkwnewnode5,
- pmethidnode6,
- psignaturenode7,
- tstringnode8,
- pexterncallsnode9,
- pexterncodeblocknode10
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var ptypenode3 = nodearraylist3
+ assert ptypenode3 isa nullable AType
+ var pannotationsnode5 = nodearraylist2
+ assert pannotationsnode5 isa nullable AAnnotations
+ var pparamnode1: nullable AParam = new AParam.init_aparam(
+ tidnode2,
+ ptypenode3,
+ null,
+ pannotationsnode5
)
- node_list = ppropdefnode1
+ node_list = pparamnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction252
+private class ReduceAction378
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwreadablenode3 = nodearraylist1
- assert tkwreadablenode3 isa nullable TKwreadable
- var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
- null,
- tkwreadablenode3
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var ptypenode3 = nodearraylist2
+ assert ptypenode3 isa nullable AType
+ var tdotdotdotnode4 = nodearraylist3
+ assert tdotdotdotnode4 isa nullable TDotdotdot
+ var pparamnode1: nullable AParam = new AParam.init_aparam(
+ tidnode2,
+ ptypenode3,
+ tdotdotdotnode4,
+ null
)
- node_list = pablenode1
+ node_list = pparamnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction253
+private class ReduceAction379
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwredefnode2 = nodearraylist1
- assert tkwredefnode2 isa nullable TKwredef
- var tkwreadablenode3 = nodearraylist2
- assert tkwreadablenode3 isa nullable TKwreadable
- var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
- tkwredefnode2,
- tkwreadablenode3
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var ptypenode3 = nodearraylist3
+ assert ptypenode3 isa nullable AType
+ var tdotdotdotnode4 = nodearraylist4
+ assert tdotdotdotnode4 isa nullable TDotdotdot
+ var pannotationsnode5 = nodearraylist2
+ assert pannotationsnode5 isa nullable AAnnotations
+ var pparamnode1: nullable AParam = new AParam.init_aparam(
+ tidnode2,
+ ptypenode3,
+ tdotdotdotnode4,
+ pannotationsnode5
)
- node_list = pablenode1
+ node_list = pparamnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction254
+private class ReduceAction380
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tkwwritablenode4 = nodearraylist1
- assert tkwwritablenode4 isa nullable TKwwritable
- var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
- null,
- null,
- tkwwritablenode4
- )
- node_list = pablenode1
+ var listnode2 = new Array[Object]
+ var listnode1 = nodearraylist1
+ assert listnode1 isa Array[Object]
+ listnode2 = concat(listnode2, listnode1)
+ node_list = listnode2
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction255
+private class ReduceAction381
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwredefnode2 = nodearraylist1
- assert tkwredefnode2 isa nullable TKwredef
- var tkwwritablenode4 = nodearraylist2
- assert tkwwritablenode4 isa nullable TKwwritable
- var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
- tkwredefnode2,
+ var tbangnode3 = nodearraylist1
+ assert tbangnode3 isa nullable TBang
+ var tidnode4 = nodearraylist2
+ assert tidnode4 isa nullable TId
+ var psignaturenode5 = nodearraylist3
+ assert psignaturenode5 isa nullable ASignature
+ var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
null,
- tkwwritablenode4
+ tbangnode3,
+ tidnode4,
+ psignaturenode5,
+ null
)
- node_list = pablenode1
+ node_list = pclosuredeclnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction256
+private class ReduceAction382
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pvisibilitynode3 = nodearraylist1
- assert pvisibilitynode3 isa nullable AVisibility
- var tkwwritablenode4 = nodearraylist2
- assert tkwwritablenode4 isa nullable TKwwritable
- var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
- null,
- pvisibilitynode3,
- tkwwritablenode4
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var tbangnode3 = nodearraylist2
+ assert tbangnode3 isa nullable TBang
+ var tidnode4 = nodearraylist3
+ assert tidnode4 isa nullable TId
+ var psignaturenode5 = nodearraylist4
+ assert psignaturenode5 isa nullable ASignature
+ var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+ tkwbreaknode2,
+ tbangnode3,
+ tidnode4,
+ psignaturenode5,
+ null
)
- node_list = pablenode1
+ node_list = pclosuredeclnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction257
+private class ReduceAction383
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwredefnode2 = nodearraylist1
- assert tkwredefnode2 isa nullable TKwredef
- var pvisibilitynode3 = nodearraylist2
- assert pvisibilitynode3 isa nullable AVisibility
- var tkwwritablenode4 = nodearraylist3
- assert tkwwritablenode4 isa nullable TKwwritable
- var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
- tkwredefnode2,
- pvisibilitynode3,
- tkwwritablenode4
+ var tbangnode3 = nodearraylist1
+ assert tbangnode3 isa nullable TBang
+ var tidnode4 = nodearraylist2
+ assert tidnode4 isa nullable TId
+ var psignaturenode5 = nodearraylist3
+ assert psignaturenode5 isa nullable ASignature
+ var pexprnode6 = nodearraylist5
+ assert pexprnode6 isa nullable AExpr
+ var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+ null,
+ tbangnode3,
+ tidnode4,
+ psignaturenode5,
+ pexprnode6
)
- node_list = pablenode1
+ node_list = pclosuredeclnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction258
+private class ReduceAction384
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility
- node_list = pvisibilitynode1
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var tbangnode3 = nodearraylist2
+ assert tbangnode3 isa nullable TBang
+ var tidnode4 = nodearraylist3
+ assert tidnode4 isa nullable TId
+ var psignaturenode5 = nodearraylist4
+ assert psignaturenode5 isa nullable ASignature
+ var pexprnode6 = nodearraylist6
+ assert pexprnode6 isa nullable AExpr
+ var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+ tkwbreaknode2,
+ tbangnode3,
+ tidnode4,
+ psignaturenode5,
+ pexprnode6
+ )
+ node_list = pclosuredeclnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction259
+private class ReduceAction385
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwprivatenode2 = nodearraylist1
- assert tkwprivatenode2 isa nullable TKwprivate
- var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
- tkwprivatenode2
+ var tbangnode3 = nodearraylist1
+ assert tbangnode3 isa nullable TBang
+ var tidnode4 = nodearraylist2
+ assert tidnode4 isa nullable TId
+ var psignaturenode5 = nodearraylist3
+ assert psignaturenode5 isa nullable ASignature
+ var pexprnode6 = nodearraylist6
+ assert pexprnode6 isa nullable AExpr
+ var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+ null,
+ tbangnode3,
+ tidnode4,
+ psignaturenode5,
+ pexprnode6
)
- node_list = pvisibilitynode1
+ node_list = pclosuredeclnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction260
+private class ReduceAction386
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwprotectednode2 = nodearraylist1
- assert tkwprotectednode2 isa nullable TKwprotected
- var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
- tkwprotectednode2
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var tbangnode3 = nodearraylist2
+ assert tbangnode3 isa nullable TBang
+ var tidnode4 = nodearraylist3
+ assert tidnode4 isa nullable TId
+ var psignaturenode5 = nodearraylist4
+ assert psignaturenode5 isa nullable ASignature
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+ tkwbreaknode2,
+ tbangnode3,
+ tidnode4,
+ psignaturenode5,
+ pexprnode6
)
- node_list = pvisibilitynode1
+ node_list = pclosuredeclnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction261
+private class ReduceAction387
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwintrudenode2 = nodearraylist1
- assert tkwintrudenode2 isa nullable TKwintrude
- var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
- tkwintrudenode2
+ var pexprnode3 = nodearraylist1
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+ null,
+ pexprnode3
)
- node_list = pvisibilitynode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction262
+private class ReduceAction388
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tidnode2 = nodearraylist1
- assert tidnode2 isa nullable TId
- var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
- tidnode2
+ var listnode4 = new Array[Object]
+ var tkwimportnode2 = nodearraylist1
+ assert tkwimportnode2 isa nullable TKwimport
+ var pexterncallnode3 = nodearraylist3
+ assert pexterncallnode3 isa nullable AExternCall
+ if pexterncallnode3 != null then
+ listnode4.add(pexterncallnode3)
+ end
+ var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+ tkwimportnode2,
+ listnode4
)
- node_list = pmethidnode1
+ node_list = pexterncallsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction263
+private class ReduceAction389
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tplusnode2 = nodearraylist1
- assert tplusnode2 isa nullable TPlus
- var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
- tplusnode2
+ var listnode5 = new Array[Object]
+ var tkwimportnode2 = nodearraylist1
+ assert tkwimportnode2 isa nullable TKwimport
+ var pexterncallnode3 = nodearraylist3
+ assert pexterncallnode3 isa nullable AExternCall
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ if pexterncallnode3 != null then
+ listnode5.add(pexterncallnode3)
+ end
+ listnode5 = concat(listnode5, listnode4)
+ var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+ tkwimportnode2,
+ listnode5
)
- node_list = pmethidnode1
+ node_list = pexterncallsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction264
+private class ReduceAction390
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tminusnode2 = nodearraylist1
- assert tminusnode2 isa nullable TMinus
- var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
- tminusnode2
- )
- node_list = pmethidnode1
+ var pexterncallnode1 = nodearraylist3
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction265
+private class ReduceAction391
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tstarnode2 = nodearraylist1
- assert tstarnode2 isa nullable TStar
- var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
- tstarnode2
- )
- node_list = pmethidnode1
+ var pexterncallnode1 = nodearraylist1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction266
+private class ReduceAction393
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tslashnode2 = nodearraylist1
- assert tslashnode2 isa nullable TSlash
- var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
- tslashnode2
+ var tkwsupernode2 = nodearraylist1
+ assert tkwsupernode2 isa nullable TKwsuper
+ var pexterncallnode1: nullable ASuperExternCall = new ASuperExternCall.init_asuperexterncall(
+ tkwsupernode2
)
- node_list = pmethidnode1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction267
+private class ReduceAction394
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tpercentnode2 = nodearraylist1
- assert tpercentnode2 isa nullable TPercent
- var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
- tpercentnode2
+ var pmethidnode2 = nodearraylist1
+ assert pmethidnode2 isa nullable AMethid
+ var pexterncallnode1: nullable ALocalPropExternCall = new ALocalPropExternCall.init_alocalpropexterncall(
+ pmethidnode2
)
- node_list = pmethidnode1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction268
+private class ReduceAction395
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var teqnode2 = nodearraylist1
- assert teqnode2 isa nullable TEq
- var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
- teqnode2
+ var tclassidnode2 = nodearraylist1
+ assert tclassidnode2 isa nullable TClassid
+ var tquadnode3 = nodearraylist2
+ assert tquadnode3 isa nullable TQuad
+ var pmethidnode4 = nodearraylist3
+ assert pmethidnode4 isa nullable AMethid
+ var pexterncallnode1: nullable AFullPropExternCall = new AFullPropExternCall.init_afullpropexterncall(
+ tclassidnode2,
+ tquadnode3,
+ pmethidnode4
)
- node_list = pmethidnode1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction269
+private class ReduceAction396
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tnenode2 = nodearraylist1
- assert tnenode2 isa nullable TNe
- var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
- tnenode2
+ var tclassidnode2 = nodearraylist1
+ assert tclassidnode2 isa nullable TClassid
+ var pexterncallnode1: nullable AInitPropExternCall = new AInitPropExternCall.init_ainitpropexterncall(
+ tclassidnode2
)
- node_list = pmethidnode1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction270
+private class ReduceAction397
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tlenode2 = nodearraylist1
- assert tlenode2 isa nullable TLe
- var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
- tlenode2
+ var ptypenode2 = nodearraylist1
+ assert ptypenode2 isa nullable AType
+ var tkwasnode3 = nodearraylist2
+ assert tkwasnode3 isa nullable TKwas
+ var ptypenode4 = nodearraylist6
+ assert ptypenode4 isa nullable AType
+ var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
+ ptypenode2,
+ tkwasnode3,
+ ptypenode4
)
- node_list = pmethidnode1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction271
+private class ReduceAction398
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tgenode2 = nodearraylist1
- assert tgenode2 isa nullable TGe
- var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
- tgenode2
+ var ptypenode2 = nodearraylist1
+ assert ptypenode2 isa nullable AType
+ var tkwasnode3 = nodearraylist2
+ assert tkwasnode3 isa nullable TKwas
+ var tkwnullablenode4 = nodearraylist4
+ assert tkwnullablenode4 isa nullable TKwnullable
+ var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
+ ptypenode2,
+ tkwasnode3,
+ tkwnullablenode4
)
- node_list = pmethidnode1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction272
+private class ReduceAction399
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tltnode2 = nodearraylist1
- assert tltnode2 isa nullable TLt
- var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
- tltnode2
+ var ptypenode2 = nodearraylist1
+ assert ptypenode2 isa nullable AType
+ var tkwasnode3 = nodearraylist2
+ assert tkwasnode3 isa nullable TKwas
+ var tkwnotnode4 = nodearraylist4
+ assert tkwnotnode4 isa nullable TKwnot
+ var tkwnullablenode5 = nodearraylist6
+ assert tkwnullablenode5 isa nullable TKwnullable
+ var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
+ ptypenode2,
+ tkwasnode3,
+ tkwnotnode4,
+ tkwnullablenode5
)
- node_list = pmethidnode1
+ node_list = pexterncallnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction273
+private class ReduceAction400
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tgtnode2 = nodearraylist1
- assert tgtnode2 isa nullable TGt
- var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
- tgtnode2
+ var tkwinnode2 = nodearraylist1
+ assert tkwinnode2 isa nullable TKwin
+ var tstringnode3 = nodearraylist2
+ assert tstringnode3 isa nullable TString
+ var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage(
+ tkwinnode2,
+ tstringnode3
)
- node_list = pmethidnode1
+ node_list = pinlanguagenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction274
+private class ReduceAction401
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tllnode2 = nodearraylist1
- assert tllnode2 isa nullable TLl
- var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
- tllnode2
+ var texterncodesegmentnode3 = nodearraylist1
+ assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+ var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+ null,
+ texterncodesegmentnode3
)
- node_list = pmethidnode1
+ node_list = pexterncodeblocknode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction275
+private class ReduceAction402
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tggnode2 = nodearraylist1
- assert tggnode2 isa nullable TGg
- var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
- tggnode2
+ var pinlanguagenode2 = nodearraylist1
+ assert pinlanguagenode2 isa nullable AInLanguage
+ var texterncodesegmentnode3 = nodearraylist2
+ assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+ var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+ pinlanguagenode2,
+ texterncodesegmentnode3
)
- node_list = pmethidnode1
+ node_list = pexterncodeblocknode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction276
+private class ReduceAction403
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tobranode2 = nodearraylist1
- assert tobranode2 isa nullable TObra
- var tcbranode3 = nodearraylist2
- assert tcbranode3 isa nullable TCbra
- var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
- tobranode2,
- tcbranode3
- )
- node_list = pmethidnode1
+ var pexterncodeblocknode1 = nodearraylist2
+ node_list = pexterncodeblocknode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction277
+private class ReduceAction404
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tstarshipnode2 = nodearraylist1
- assert tstarshipnode2 isa nullable TStarship
- var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
- tstarshipnode2
+ var listnode4 = new Array[Object]
+ var tclassidnode3 = nodearraylist1
+ assert tclassidnode3 isa nullable TClassid
+ var ptypenode1: nullable AType = new AType.init_atype(
+ null,
+ tclassidnode3,
+ listnode4,
+ null
)
- node_list = pmethidnode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction278
+private class ReduceAction405
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tidnode2 = nodearraylist1
- assert tidnode2 isa nullable TId
- var tassignnode3 = nodearraylist2
- assert tassignnode3 isa nullable TAssign
- var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
- tidnode2,
- tassignnode3
+ var listnode4 = new Array[Object]
+ var tkwnullablenode2 = nodearraylist1
+ assert tkwnullablenode2 isa nullable TKwnullable
+ var tclassidnode3 = nodearraylist2
+ assert tclassidnode3 isa nullable TClassid
+ var ptypenode1: nullable AType = new AType.init_atype(
+ tkwnullablenode2,
+ tclassidnode3,
+ listnode4,
+ null
)
- node_list = pmethidnode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction279
+private class ReduceAction406
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tobranode2 = nodearraylist1
- assert tobranode2 isa nullable TObra
- var tcbranode3 = nodearraylist2
- assert tcbranode3 isa nullable TCbra
- var tassignnode4 = nodearraylist3
- assert tassignnode4 isa nullable TAssign
- var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
- tobranode2,
- tcbranode3,
- tassignnode4
+ var listnode4 = new Array[Object]
+ var tclassidnode3 = nodearraylist1
+ assert tclassidnode3 isa nullable TClassid
+ var pannotationsnode5 = nodearraylist2
+ assert pannotationsnode5 isa nullable AAnnotations
+ var ptypenode1: nullable AType = new AType.init_atype(
+ null,
+ tclassidnode3,
+ listnode4,
+ pannotationsnode5
)
- node_list = pmethidnode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction280
+private class ReduceAction407
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var tcparnode4 = nodearraylist3
- assert tcparnode4 isa nullable TCpar
- var ptypenode5 = nodearraylist4
- assert ptypenode5 isa nullable AType
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode3,
- tcparnode4,
- ptypenode5,
- listnode6
+ var listnode4 = new Array[Object]
+ var tkwnullablenode2 = nodearraylist1
+ assert tkwnullablenode2 isa nullable TKwnullable
+ var tclassidnode3 = nodearraylist2
+ assert tclassidnode3 isa nullable TClassid
+ var pannotationsnode5 = nodearraylist3
+ assert pannotationsnode5 isa nullable AAnnotations
+ var ptypenode1: nullable AType = new AType.init_atype(
+ tkwnullablenode2,
+ tclassidnode3,
+ listnode4,
+ pannotationsnode5
)
- node_list = psignaturenode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction281
+private class ReduceAction408
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var listnode7 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var listnode3 = nodearraylist3
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var tcparnode5 = nodearraylist4
- assert tcparnode5 isa nullable TCpar
- var ptypenode6 = nodearraylist5
- assert ptypenode6 isa nullable AType
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode4,
- tcparnode5,
- ptypenode6,
- listnode7
+ var listnode5 = new Array[Object]
+ var tclassidnode3 = nodearraylist1
+ assert tclassidnode3 isa nullable TClassid
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var ptypenode1: nullable AType = new AType.init_atype(
+ null,
+ tclassidnode3,
+ listnode5,
+ null
)
- node_list = psignaturenode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction282
+private class ReduceAction409
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode7 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var tcparnode4 = nodearraylist3
- assert tcparnode4 isa nullable TCpar
- var ptypenode5 = nodearraylist4
- assert ptypenode5 isa nullable AType
- var listnode6 = nodearraylist6
- assert listnode6 isa Array[Object]
- listnode7 = concat(listnode7, listnode6)
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode3,
- tcparnode4,
- ptypenode5,
- listnode7
+ var listnode5 = new Array[Object]
+ var tkwnullablenode2 = nodearraylist1
+ assert tkwnullablenode2 isa nullable TKwnullable
+ var tclassidnode3 = nodearraylist2
+ assert tclassidnode3 isa nullable TClassid
+ var listnode4 = nodearraylist5
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var ptypenode1: nullable AType = new AType.init_atype(
+ tkwnullablenode2,
+ tclassidnode3,
+ listnode5,
+ null
)
- node_list = psignaturenode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction283
+private class ReduceAction410
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var listnode8 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var listnode3 = nodearraylist3
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var tcparnode5 = nodearraylist4
- assert tcparnode5 isa nullable TCpar
- var ptypenode6 = nodearraylist5
- assert ptypenode6 isa nullable AType
- var listnode7 = nodearraylist7
- assert listnode7 isa Array[Object]
- listnode8 = concat(listnode8, listnode7)
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode4,
- tcparnode5,
- ptypenode6,
- listnode8
+ var listnode5 = new Array[Object]
+ var tclassidnode3 = nodearraylist1
+ assert tclassidnode3 isa nullable TClassid
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var pannotationsnode6 = nodearraylist7
+ assert pannotationsnode6 isa nullable AAnnotations
+ var ptypenode1: nullable AType = new AType.init_atype(
+ null,
+ tclassidnode3,
+ listnode5,
+ pannotationsnode6
)
- node_list = psignaturenode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction284
+private class ReduceAction411
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var tcparnode4 = nodearraylist3
- assert tcparnode4 isa nullable TCpar
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode3,
- tcparnode4,
- null,
- listnode6
+ var listnode5 = new Array[Object]
+ var tkwnullablenode2 = nodearraylist1
+ assert tkwnullablenode2 isa nullable TKwnullable
+ var tclassidnode3 = nodearraylist2
+ assert tclassidnode3 isa nullable TClassid
+ var listnode4 = nodearraylist5
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var pannotationsnode6 = nodearraylist8
+ assert pannotationsnode6 isa nullable AAnnotations
+ var ptypenode1: nullable AType = new AType.init_atype(
+ tkwnullablenode2,
+ tclassidnode3,
+ listnode5,
+ pannotationsnode6
)
- node_list = psignaturenode1
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction285
+private class ReduceAction412
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var listnode7 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var listnode3 = nodearraylist3
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var tcparnode5 = nodearraylist4
- assert tcparnode5 isa nullable TCpar
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode4,
- tcparnode5,
- null,
- listnode7
- )
- node_list = psignaturenode1
+ var listnode2 = new Array[Object]
+ var ptypenode1 = nodearraylist1
+ if ptypenode1 != null then
+ listnode2.add(ptypenode1)
+ end
+ node_list = listnode2
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction286
+private class ReduceAction413
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode3 = new Array[Object]
- var listnode7 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var tcparnode4 = nodearraylist3
- assert tcparnode4 isa nullable TCpar
- var listnode6 = nodearraylist5
- assert listnode6 isa Array[Object]
- listnode7 = concat(listnode7, listnode6)
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode3,
- tcparnode4,
- null,
- listnode7
- )
- node_list = psignaturenode1
+ var ptypenode1 = nodearraylist1
+ var listnode2 = nodearraylist2
+ assert listnode2 isa Array[Object]
+ if ptypenode1 != null then
+ listnode3.add(ptypenode1)
+ end
+ listnode3 = concat(listnode3, listnode2)
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction287
+private class ReduceAction414
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var listnode8 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var listnode3 = nodearraylist3
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var tcparnode5 = nodearraylist4
- assert tcparnode5 isa nullable TCpar
- var listnode7 = nodearraylist6
- assert listnode7 isa Array[Object]
- listnode8 = concat(listnode8, listnode7)
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
- listnode4,
- tcparnode5,
- null,
- listnode8
- )
- node_list = psignaturenode1
+ var ptypenode1 = nodearraylist3
+ node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction288
+private class ReduceAction416
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var ptypenode5 = nodearraylist1
- assert ptypenode5 isa nullable AType
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- null,
- listnode3,
- null,
- ptypenode5,
- listnode6
- )
- node_list = psignaturenode1
+ var pexprnode1 = nodearraylist2
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction289
+private class ReduceAction417
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode7 = new Array[Object]
- var ptypenode5 = nodearraylist1
- assert ptypenode5 isa nullable AType
- var listnode6 = nodearraylist3
- assert listnode6 isa Array[Object]
- listnode7 = concat(listnode7, listnode6)
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- null,
- listnode3,
- null,
- ptypenode5,
- listnode7
+ var listnode2 = new Array[Object]
+ var tkwendnode3 = nodearraylist2
+ assert tkwendnode3 isa nullable TKwend
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+ listnode2,
+ tkwendnode3
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction290
+private class ReduceAction418
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- null,
- listnode3,
- null,
- null,
- listnode6
+ var listnode2 = new Array[Object]
+ var tkwendnode3 = nodearraylist1
+ assert tkwendnode3 isa nullable TKwend
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+ listnode2,
+ tkwendnode3
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction291
+private class ReduceAction419
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode7 = new Array[Object]
- var listnode6 = nodearraylist2
- assert listnode6 isa Array[Object]
- listnode7 = concat(listnode7, listnode6)
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- null,
- listnode3,
- null,
- null,
- listnode7
- )
- node_list = psignaturenode1
+ var pexprnode1 = nodearraylist1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction292
+private class ReduceAction420
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var tcparnode4 = nodearraylist3
- assert tcparnode4 isa nullable TCpar
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ if pexprnode2 != null then
+ listnode3.add(pexprnode2)
+ end
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
listnode3,
- tcparnode4,
- null,
- listnode6
+ null
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction293
+private class ReduceAction421
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode4 = new Array[Object]
- var listnode7 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var listnode3 = nodearraylist3
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var listnode3 = nodearraylist2
assert listnode3 isa Array[Object]
+ if pexprnode2 != null then
+ listnode4.add(pexprnode2)
+ end
listnode4 = concat(listnode4, listnode3)
- var tcparnode5 = nodearraylist4
- assert tcparnode5 isa nullable TCpar
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
listnode4,
- tcparnode5,
- null,
- listnode7
+ null
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction294
+private class ReduceAction422
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var tcparnode4 = nodearraylist3
- assert tcparnode4 isa nullable TCpar
- var ptypenode5 = nodearraylist4
- assert ptypenode5 isa nullable AType
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ if pexprnode2 != null then
+ listnode3.add(pexprnode2)
+ end
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
listnode3,
- tcparnode4,
- ptypenode5,
- listnode6
+ null
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction295
+private class ReduceAction423
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode4 = new Array[Object]
- var listnode7 = new Array[Object]
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var listnode3 = nodearraylist3
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var listnode3 = nodearraylist2
assert listnode3 isa Array[Object]
+ if pexprnode2 != null then
+ listnode4.add(pexprnode2)
+ end
listnode4 = concat(listnode4, listnode3)
- var tcparnode5 = nodearraylist4
- assert tcparnode5 isa nullable TCpar
- var ptypenode6 = nodearraylist5
- assert ptypenode6 isa nullable AType
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- toparnode2,
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
listnode4,
- tcparnode5,
- ptypenode6,
- listnode7
+ null
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction296
+private class ReduceAction424
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- null,
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ if pexprnode2 != null then
+ listnode3.add(pexprnode2)
+ end
+ var tkwendnode4 = nodearraylist3
+ assert tkwendnode4 isa nullable TKwend
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
listnode3,
- null,
- null,
- listnode6
+ tkwendnode4
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction297
+private class ReduceAction425
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var listnode6 = new Array[Object]
- var ptypenode5 = nodearraylist1
- assert ptypenode5 isa nullable AType
- var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
- null,
- listnode3,
- null,
- ptypenode5,
- listnode6
+ var listnode4 = new Array[Object]
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var listnode3 = nodearraylist2
+ assert listnode3 isa Array[Object]
+ if pexprnode2 != null then
+ listnode4.add(pexprnode2)
+ end
+ listnode4 = concat(listnode4, listnode3)
+ var tkwendnode5 = nodearraylist4
+ assert tkwendnode5 isa nullable TKwend
+ var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+ listnode4,
+ tkwendnode5
)
- node_list = psignaturenode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction298
+private class ReduceAction429
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var pparamnode1 = nodearraylist1
- if pparamnode1 != null then
- listnode2.add(pparamnode1)
- end
- node_list = listnode2
+ var tkwreturnnode2 = nodearraylist1
+ assert tkwreturnnode2 isa nullable TKwreturn
+ var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+ tkwreturnnode2,
+ null
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction299
+private class ReduceAction430
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var pparamnode1 = nodearraylist1
- var listnode2 = nodearraylist2
- assert listnode2 isa Array[Object]
- if pparamnode1 != null then
- listnode3.add(pparamnode1)
- end
- listnode3 = concat(listnode3, listnode2)
- node_list = listnode3
+ var tkwreturnnode2 = nodearraylist1
+ assert tkwreturnnode2 isa nullable TKwreturn
+ var pexprnode3 = nodearraylist2
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+ tkwreturnnode2,
+ pexprnode3
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction300
+private class ReduceAction431
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pparamnode1 = nodearraylist3
- node_list = pparamnode1
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+ tkwbreaknode2,
+ null,
+ null
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction301
+private class ReduceAction432
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tidnode2 = nodearraylist1
- assert tidnode2 isa nullable TId
- var pparamnode1: nullable AParam = new AParam.init_aparam(
- tidnode2,
- null,
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var plabelnode3 = nodearraylist2
+ assert plabelnode3 isa nullable ALabel
+ var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+ tkwbreaknode2,
+ plabelnode3,
null
)
- node_list = pparamnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction302
+private class ReduceAction433
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tidnode2 = nodearraylist1
- assert tidnode2 isa nullable TId
- var ptypenode3 = nodearraylist2
- assert ptypenode3 isa nullable AType
- var pparamnode1: nullable AParam = new AParam.init_aparam(
- tidnode2,
- ptypenode3,
- null
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var pexprnode4 = nodearraylist2
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+ tkwbreaknode2,
+ null,
+ pexprnode4
)
- node_list = pparamnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction303
+private class ReduceAction434
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tidnode2 = nodearraylist1
- assert tidnode2 isa nullable TId
- var ptypenode3 = nodearraylist2
- assert ptypenode3 isa nullable AType
- var tdotdotdotnode4 = nodearraylist3
- assert tdotdotdotnode4 isa nullable TDotdotdot
- var pparamnode1: nullable AParam = new AParam.init_aparam(
- tidnode2,
- ptypenode3,
- tdotdotdotnode4
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var plabelnode3 = nodearraylist2
+ assert plabelnode3 isa nullable ALabel
+ var pexprnode4 = nodearraylist3
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+ tkwbreaknode2,
+ plabelnode3,
+ pexprnode4
)
- node_list = pparamnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction304
+private class ReduceAction435
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var listnode1 = nodearraylist1
- assert listnode1 isa Array[Object]
- listnode2 = concat(listnode2, listnode1)
- node_list = listnode2
+ var tkwabortnode2 = nodearraylist1
+ assert tkwabortnode2 isa nullable TKwabort
+ var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
+ tkwabortnode2
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction305
+private class ReduceAction436
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tbangnode3 = nodearraylist1
- assert tbangnode3 isa nullable TBang
- var tidnode4 = nodearraylist2
- assert tidnode4 isa nullable TId
- var psignaturenode5 = nodearraylist3
- assert psignaturenode5 isa nullable ASignature
- var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+ var tkwcontinuenode2 = nodearraylist1
+ assert tkwcontinuenode2 isa nullable TKwcontinue
+ var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+ tkwcontinuenode2,
null,
- tbangnode3,
- tidnode4,
- psignaturenode5,
null
)
- node_list = pclosuredeclnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction306
+private class ReduceAction437
super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var tbangnode3 = nodearraylist2
- assert tbangnode3 isa nullable TBang
- var tidnode4 = nodearraylist3
- assert tidnode4 isa nullable TId
- var psignaturenode5 = nodearraylist4
- assert psignaturenode5 isa nullable ASignature
- var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
- tkwbreaknode2,
- tbangnode3,
- tidnode4,
- psignaturenode5,
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwcontinuenode2 = nodearraylist1
+ assert tkwcontinuenode2 isa nullable TKwcontinue
+ var plabelnode3 = nodearraylist2
+ assert plabelnode3 isa nullable ALabel
+ var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+ tkwcontinuenode2,
+ plabelnode3,
null
)
- node_list = pclosuredeclnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction307
+private class ReduceAction438
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tbangnode3 = nodearraylist1
- assert tbangnode3 isa nullable TBang
- var tidnode4 = nodearraylist2
- assert tidnode4 isa nullable TId
- var psignaturenode5 = nodearraylist3
- assert psignaturenode5 isa nullable ASignature
- var pexprnode6 = nodearraylist5
- assert pexprnode6 isa nullable AExpr
- var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+ var tkwcontinuenode2 = nodearraylist1
+ assert tkwcontinuenode2 isa nullable TKwcontinue
+ var pexprnode4 = nodearraylist2
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+ tkwcontinuenode2,
null,
- tbangnode3,
- tidnode4,
- psignaturenode5,
- pexprnode6
+ pexprnode4
)
- node_list = pclosuredeclnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction308
+private class ReduceAction439
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var tbangnode3 = nodearraylist2
- assert tbangnode3 isa nullable TBang
- var tidnode4 = nodearraylist3
- assert tidnode4 isa nullable TId
- var psignaturenode5 = nodearraylist4
- assert psignaturenode5 isa nullable ASignature
- var pexprnode6 = nodearraylist6
- assert pexprnode6 isa nullable AExpr
- var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
- tkwbreaknode2,
- tbangnode3,
- tidnode4,
- psignaturenode5,
- pexprnode6
+ var tkwcontinuenode2 = nodearraylist1
+ assert tkwcontinuenode2 isa nullable TKwcontinue
+ var plabelnode3 = nodearraylist2
+ assert plabelnode3 isa nullable ALabel
+ var pexprnode4 = nodearraylist3
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+ tkwcontinuenode2,
+ plabelnode3,
+ pexprnode4
)
- node_list = pclosuredeclnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction309
+private class ReduceAction446
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tbangnode3 = nodearraylist1
- assert tbangnode3 isa nullable TBang
- var tidnode4 = nodearraylist2
- assert tidnode4 isa nullable TId
- var psignaturenode5 = nodearraylist3
- assert psignaturenode5 isa nullable ASignature
- var pexprnode6 = nodearraylist6
- assert pexprnode6 isa nullable AExpr
- var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
- null,
- tbangnode3,
- tidnode4,
- psignaturenode5,
- pexprnode6
+ var listnode5 = new Array[Object]
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var tidnode3 = nodearraylist4
+ assert tidnode3 isa nullable TId
+ var pexprsnode4 = nodearraylist5
+ assert pexprsnode4 isa nullable AExprs
+ var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ pexprnode2,
+ tidnode3,
+ pexprsnode4,
+ listnode5
)
- node_list = pclosuredeclnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction310
+private class ReduceAction447
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var tbangnode3 = nodearraylist2
- assert tbangnode3 isa nullable TBang
- var tidnode4 = nodearraylist3
- assert tidnode4 isa nullable TId
- var psignaturenode5 = nodearraylist4
- assert psignaturenode5 isa nullable ASignature
- var pexprnode6 = nodearraylist7
- assert pexprnode6 isa nullable AExpr
- var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
- tkwbreaknode2,
- tbangnode3,
- tidnode4,
- psignaturenode5,
- pexprnode6
+ var listnode5 = new Array[Object]
+ var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+ var tidnode3 = nodearraylist1
+ assert tidnode3 isa nullable TId
+ var pexprsnode4 = nodearraylist2
+ assert pexprsnode4 isa nullable AExprs
+ var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ pexprnode2,
+ tidnode3,
+ pexprsnode4,
+ listnode5
)
- node_list = pclosuredeclnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction311
+private class ReduceAction448
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode3 = nodearraylist1
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
- null,
- pexprnode3
+ var listnode6 = new Array[Object]
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var tidnode3 = nodearraylist4
+ assert tidnode3 isa nullable TId
+ var pexprsnode4 = nodearraylist5
+ assert pexprsnode4 isa nullable AExprs
+ var listnode5 = nodearraylist6
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ pexprnode2,
+ tidnode3,
+ pexprsnode4,
+ listnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction312
+private class ReduceAction449
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tkwimportnode2 = nodearraylist1
- assert tkwimportnode2 isa nullable TKwimport
- var pexterncallnode3 = nodearraylist3
- assert pexterncallnode3 isa nullable AExternCall
- if pexterncallnode3 != null then
- listnode4.add(pexterncallnode3)
- end
- var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
- tkwimportnode2,
- listnode4
+ var listnode6 = new Array[Object]
+ var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+ var tidnode3 = nodearraylist1
+ assert tidnode3 isa nullable TId
+ var pexprsnode4 = nodearraylist2
+ assert pexprsnode4 isa nullable AExprs
+ var listnode5 = nodearraylist3
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ pexprnode2,
+ tidnode3,
+ pexprsnode4,
+ listnode6
)
- node_list = pexterncallsnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction313
+private class ReduceAction450
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tkwimportnode2 = nodearraylist1
- assert tkwimportnode2 isa nullable TKwimport
- var pexterncallnode3 = nodearraylist3
- assert pexterncallnode3 isa nullable AExternCall
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- if pexterncallnode3 != null then
- listnode5.add(pexterncallnode3)
- end
- listnode5 = concat(listnode5, listnode4)
- var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
- tkwimportnode2,
- listnode5
+ var tkwsupernode3 = nodearraylist1
+ assert tkwsupernode3 isa nullable TKwsuper
+ var pexprsnode4 = nodearraylist2
+ assert pexprsnode4 isa nullable AExprs
+ var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+ null,
+ tkwsupernode3,
+ pexprsnode4
)
- node_list = pexterncallsnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction314
+private class ReduceAction451
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexterncallnode1 = nodearraylist3
- node_list = pexterncallnode1
+ var pqualifiednode2 = nodearraylist1
+ assert pqualifiednode2 isa nullable AQualified
+ var tkwsupernode3 = nodearraylist2
+ assert tkwsupernode3 isa nullable TKwsuper
+ var pexprsnode4 = nodearraylist3
+ assert pexprsnode4 isa nullable AExprs
+ var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+ pqualifiednode2,
+ tkwsupernode3,
+ pexprsnode4
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction315
+private class ReduceAction452
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexterncallnode1 = nodearraylist1
- node_list = pexterncallnode1
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var tkwinitnode3 = nodearraylist4
+ assert tkwinitnode3 isa nullable TKwinit
+ var pexprsnode4 = nodearraylist5
+ assert pexprsnode4 isa nullable AExprs
+ var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+ pexprnode2,
+ tkwinitnode3,
+ pexprsnode4
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction317
+private class ReduceAction453
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwsupernode2 = nodearraylist1
- assert tkwsupernode2 isa nullable TKwsuper
- var pexterncallnode1: nullable ASuperExternCall = new ASuperExternCall.init_asuperexterncall(
- tkwsupernode2
+ var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+ var tkwinitnode3 = nodearraylist1
+ assert tkwinitnode3 isa nullable TKwinit
+ var pexprsnode4 = nodearraylist2
+ assert pexprsnode4 isa nullable AExprs
+ var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+ pexprnode2,
+ tkwinitnode3,
+ pexprsnode4
)
- node_list = pexterncallnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction318
+private class ReduceAction454
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pmethidnode2 = nodearraylist1
- assert pmethidnode2 isa nullable AMethid
- var pexterncallnode1: nullable ALocalPropExternCall = new ALocalPropExternCall.init_alocalpropexterncall(
- pmethidnode2
+ var tkwdebugnode2 = nodearraylist1
+ assert tkwdebugnode2 isa nullable TKwdebug
+ var tkwtypenode3 = nodearraylist2
+ assert tkwtypenode3 isa nullable TKwtype
+ var pexprnode4 = nodearraylist5
+ assert pexprnode4 isa nullable AExpr
+ var ptypenode5 = nodearraylist3
+ assert ptypenode5 isa nullable AType
+ var pexprnode1: nullable ADebugTypeExpr = new ADebugTypeExpr.init_adebugtypeexpr(
+ tkwdebugnode2,
+ tkwtypenode3,
+ pexprnode4,
+ ptypenode5
)
- node_list = pexterncallnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction319
+private class ReduceAction455
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tclassidnode2 = nodearraylist1
- assert tclassidnode2 isa nullable TClassid
- var tquadnode3 = nodearraylist2
- assert tquadnode3 isa nullable TQuad
- var pmethidnode4 = nodearraylist3
- assert pmethidnode4 isa nullable AMethid
- var pexterncallnode1: nullable AFullPropExternCall = new AFullPropExternCall.init_afullpropexterncall(
- tclassidnode2,
- tquadnode3,
- pmethidnode4
+ var tkwlabelnode2 = nodearraylist1
+ assert tkwlabelnode2 isa nullable TKwlabel
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var plabelnode1: nullable ALabel = new ALabel.init_alabel(
+ tkwlabelnode2,
+ tidnode3
)
- node_list = pexterncallnode1
+ node_list = plabelnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction320
+private class ReduceAction456
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tclassidnode2 = nodearraylist1
- assert tclassidnode2 isa nullable TClassid
- var pexterncallnode1: nullable AInitPropExternCall = new AInitPropExternCall.init_ainitpropexterncall(
- tclassidnode2
- )
- node_list = pexterncallnode1
+ var listnode2 = new Array[Object]
+ var pclosuredefnode1 = nodearraylist1
+ if pclosuredefnode1 != null then
+ listnode2.add(pclosuredefnode1)
+ end
+ node_list = listnode2
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction321
+private class ReduceAction457
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var ptypenode2 = nodearraylist1
- assert ptypenode2 isa nullable AType
- var tkwasnode3 = nodearraylist2
- assert tkwasnode3 isa nullable TKwas
- var ptypenode4 = nodearraylist6
- assert ptypenode4 isa nullable AType
- var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
- ptypenode2,
- tkwasnode3,
- ptypenode4
- )
- node_list = pexterncallnode1
+ var listnode3 = new Array[Object]
+ var pclosuredefnode1 = nodearraylist1
+ var listnode2 = nodearraylist2
+ assert listnode2 isa Array[Object]
+ if pclosuredefnode1 != null then
+ listnode3.add(pclosuredefnode1)
+ end
+ listnode3 = concat(listnode3, listnode2)
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction322
+private class ReduceAction458
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var ptypenode2 = nodearraylist1
- assert ptypenode2 isa nullable AType
- var tkwasnode3 = nodearraylist2
- assert tkwasnode3 isa nullable TKwas
- var tkwnullablenode4 = nodearraylist4
- assert tkwnullablenode4 isa nullable TKwnullable
- var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
- ptypenode2,
- tkwasnode3,
- tkwnullablenode4
+ var listnode4 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var tkwdonode5 = nodearraylist3
+ assert tkwdonode5 isa nullable TKwdo
+ var pexprnode6 = nodearraylist4
+ assert pexprnode6 isa nullable AExpr
+ var plabelnode7 = nodearraylist5
+ assert plabelnode7 isa nullable ALabel
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode4,
+ tkwdonode5,
+ pexprnode6,
+ plabelnode7
)
- node_list = pexterncallnode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction323
+private class ReduceAction459
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var ptypenode2 = nodearraylist1
- assert ptypenode2 isa nullable AType
- var tkwasnode3 = nodearraylist2
- assert tkwasnode3 isa nullable TKwas
- var tkwnotnode4 = nodearraylist4
- assert tkwnotnode4 isa nullable TKwnot
- var tkwnullablenode5 = nodearraylist6
- assert tkwnullablenode5 isa nullable TKwnullable
- var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
- ptypenode2,
- tkwasnode3,
- tkwnotnode4,
- tkwnullablenode5
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist6
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist7
+ assert pexprnode7 isa nullable AExpr
+ var plabelnode8 = nodearraylist8
+ assert plabelnode8 isa nullable ALabel
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ pexprnode7,
+ plabelnode8
)
- node_list = pexterncallnode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction324
+private class ReduceAction460
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwinnode2 = nodearraylist1
- assert tkwinnode2 isa nullable TKwin
- var tstringnode3 = nodearraylist2
- assert tstringnode3 isa nullable TString
- var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage(
- tkwinnode2,
- tstringnode3
- )
- node_list = pinlanguagenode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction325
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var texterncodesegmentnode3 = nodearraylist1
- assert texterncodesegmentnode3 isa nullable TExternCodeSegment
- var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
- null,
- texterncodesegmentnode3
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist4
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist5
+ assert pexprnode7 isa nullable AExpr
+ var plabelnode8 = nodearraylist6
+ assert plabelnode8 isa nullable ALabel
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ pexprnode7,
+ plabelnode8
)
- node_list = pexterncodeblocknode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction326
+private class ReduceAction461
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pinlanguagenode2 = nodearraylist1
- assert pinlanguagenode2 isa nullable AInLanguage
- var texterncodesegmentnode3 = nodearraylist2
- assert texterncodesegmentnode3 isa nullable TExternCodeSegment
- var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
- pinlanguagenode2,
- texterncodesegmentnode3
+ var listnode4 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var tkwdonode5 = nodearraylist3
+ assert tkwdonode5 isa nullable TKwdo
+ var pexprnode6 = nodearraylist4
+ assert pexprnode6 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode4,
+ tkwdonode5,
+ pexprnode6,
+ null
)
- node_list = pexterncodeblocknode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction327
+private class ReduceAction462
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexterncodeblocknode1 = nodearraylist2
- node_list = pexterncodeblocknode1
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist6
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist7
+ assert pexprnode7 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ pexprnode7,
+ null
+ )
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction328
+private class ReduceAction463
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tclassidnode3 = nodearraylist1
- assert tclassidnode3 isa nullable TClassid
- var ptypenode1: nullable AType = new AType.init_atype(
- null,
- tclassidnode3,
- listnode4
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist4
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist5
+ assert pexprnode7 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ pexprnode7,
+ null
)
- node_list = ptypenode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction329
+private class ReduceAction464
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode4 = new Array[Object]
- var tkwnullablenode2 = nodearraylist1
- assert tkwnullablenode2 isa nullable TKwnullable
- var tclassidnode3 = nodearraylist2
- assert tclassidnode3 isa nullable TClassid
- var ptypenode1: nullable AType = new AType.init_atype(
- tkwnullablenode2,
- tclassidnode3,
- listnode4
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var pexprnode6 = nodearraylist5
+ assert pexprnode6 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode4,
+ null,
+ pexprnode6,
+ null
)
- node_list = ptypenode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction330
+private class ReduceAction465
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode5 = new Array[Object]
- var tclassidnode3 = nodearraylist1
- assert tclassidnode3 isa nullable TClassid
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
var listnode4 = nodearraylist4
assert listnode4 isa Array[Object]
listnode5 = concat(listnode5, listnode4)
- var ptypenode1: nullable AType = new AType.init_atype(
+ var pexprnode7 = nodearraylist8
+ assert pexprnode7 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
null,
- tclassidnode3,
- listnode5
+ pexprnode7,
+ null
)
- node_list = ptypenode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction331
+private class ReduceAction466
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode5 = new Array[Object]
- var tkwnullablenode2 = nodearraylist1
- assert tkwnullablenode2 isa nullable TKwnullable
- var tclassidnode3 = nodearraylist2
- assert tclassidnode3 isa nullable TClassid
- var listnode4 = nodearraylist5
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist3
assert listnode4 isa Array[Object]
listnode5 = concat(listnode5, listnode4)
- var ptypenode1: nullable AType = new AType.init_atype(
- tkwnullablenode2,
- tclassidnode3,
- listnode5
+ var pexprnode7 = nodearraylist6
+ assert pexprnode7 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ null,
+ pexprnode7,
+ null
)
- node_list = ptypenode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction332
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var ptypenode1 = nodearraylist1
- if ptypenode1 != null then
- listnode2.add(ptypenode1)
- end
- node_list = listnode2
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction333
+private class ReduceAction467
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var ptypenode1 = nodearraylist1
- var listnode2 = nodearraylist2
- assert listnode2 isa Array[Object]
- if ptypenode1 != null then
- listnode3.add(ptypenode1)
- end
- listnode3 = concat(listnode3, listnode2)
- node_list = listnode3
+ var listnode4 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var tkwdonode5 = nodearraylist3
+ assert tkwdonode5 isa nullable TKwdo
+ var pexprnode6 = nodearraylist5
+ assert pexprnode6 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode4,
+ tkwdonode5,
+ pexprnode6,
+ null
+ )
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction334
+private class ReduceAction468
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var ptypenode1 = nodearraylist3
- node_list = ptypenode1
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist6
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist8
+ assert pexprnode7 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ pexprnode7,
+ null
+ )
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction336
+private class ReduceAction469
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode1 = nodearraylist2
- node_list = pexprnode1
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist4
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist6
+ assert pexprnode7 isa nullable AExpr
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ pexprnode7,
+ null
+ )
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction337
+private class ReduceAction470
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var tkwendnode3 = nodearraylist2
- assert tkwendnode3 isa nullable TKwend
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode2,
- tkwendnode3
+ var listnode4 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var tkwdonode5 = nodearraylist3
+ assert tkwdonode5 isa nullable TKwdo
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode4,
+ tkwdonode5,
+ null,
+ null
)
- node_list = pexprnode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction338
+private class ReduceAction471
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var tkwendnode3 = nodearraylist1
- assert tkwendnode3 isa nullable TKwend
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode2,
- tkwendnode3
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist6
+ assert tkwdonode6 isa nullable TKwdo
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ null,
+ null
)
- node_list = pexprnode1
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction339
+private class ReduceAction472
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode1 = nodearraylist1
- node_list = pexprnode1
+ var listnode5 = new Array[Object]
+ var tbangnode2 = nodearraylist1
+ assert tbangnode2 isa nullable TBang
+ var pclosureidnode3 = nodearraylist2
+ assert pclosureidnode3 isa nullable AClosureId
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tkwdonode6 = nodearraylist4
+ assert tkwdonode6 isa nullable TKwdo
+ var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+ tbangnode2,
+ pclosureidnode3,
+ listnode5,
+ tkwdonode6,
+ null,
+ null
+ )
+ node_list = pclosuredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction340
+private class ReduceAction473
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- if pexprnode2 != null then
- listnode3.add(pexprnode2)
- end
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode3,
- null
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var pclosureidnode1: nullable ASimpleClosureId = new ASimpleClosureId.init_asimpleclosureid(
+ tidnode2
)
- node_list = pexprnode1
+ node_list = pclosureidnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction341
+private class ReduceAction474
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var listnode3 = nodearraylist2
- assert listnode3 isa Array[Object]
- if pexprnode2 != null then
- listnode4.add(pexprnode2)
- end
- listnode4 = concat(listnode4, listnode3)
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode4,
- null
+ var tkwbreaknode2 = nodearraylist1
+ assert tkwbreaknode2 isa nullable TKwbreak
+ var pclosureidnode1: nullable ABreakClosureId = new ABreakClosureId.init_abreakclosureid(
+ tkwbreaknode2
)
- node_list = pexprnode1
+ node_list = pclosureidnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction342
+private class ReduceAction475
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- if pexprnode2 != null then
- listnode3.add(pexprnode2)
- end
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode3,
- null
+ var pexprnode4 = nodearraylist1
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+ null,
+ null,
+ pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction343
+private class ReduceAction476
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var listnode3 = nodearraylist2
- assert listnode3 isa Array[Object]
- if pexprnode2 != null then
- listnode4.add(pexprnode2)
- end
- listnode4 = concat(listnode4, listnode3)
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode4,
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
+ null,
+ null,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction344
+private class ReduceAction477
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- if pexprnode2 != null then
- listnode3.add(pexprnode2)
- end
- var tkwendnode4 = nodearraylist3
- assert tkwendnode4 isa nullable TKwend
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode3,
- tkwendnode4
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var pannotationsnode7 = nodearraylist3
+ assert pannotationsnode7 isa nullable AAnnotations
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
+ null,
+ null,
+ null,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction345
+private class ReduceAction478
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var listnode3 = nodearraylist2
- assert listnode3 isa Array[Object]
- if pexprnode2 != null then
- listnode4.add(pexprnode2)
- end
- listnode4 = concat(listnode4, listnode3)
- var tkwendnode5 = nodearraylist4
- assert tkwendnode5 isa nullable TKwend
- var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
- listnode4,
- tkwendnode5
- )
- node_list = pexprnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction349
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var tkwreturnnode2 = nodearraylist1
- assert tkwreturnnode2 isa nullable TKwreturn
- var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
- tkwreturnnode2,
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var ptypenode4 = nodearraylist3
+ assert ptypenode4 isa nullable AType
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
+ ptypenode4,
+ null,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction350
+private class ReduceAction479
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwreturnnode2 = nodearraylist1
- assert tkwreturnnode2 isa nullable TKwreturn
- var pexprnode3 = nodearraylist2
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
- tkwreturnnode2,
- pexprnode3
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var ptypenode4 = nodearraylist4
+ assert ptypenode4 isa nullable AType
+ var pannotationsnode7 = nodearraylist3
+ assert pannotationsnode7 isa nullable AAnnotations
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
+ ptypenode4,
+ null,
+ null,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction351
+private class ReduceAction480
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
- tkwbreaknode2,
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var tassignnode5 = nodearraylist3
+ assert tassignnode5 isa nullable TAssign
+ var pexprnode6 = nodearraylist5
+ assert pexprnode6 isa nullable AExpr
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
null,
+ tassignnode5,
+ pexprnode6,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction352
+private class ReduceAction481
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var plabelnode3 = nodearraylist2
- assert plabelnode3 isa nullable ALabel
- var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
- tkwbreaknode2,
- plabelnode3,
- null
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var tassignnode5 = nodearraylist4
+ assert tassignnode5 isa nullable TAssign
+ var pexprnode6 = nodearraylist6
+ assert pexprnode6 isa nullable AExpr
+ var pannotationsnode7 = nodearraylist3
+ assert pannotationsnode7 isa nullable AAnnotations
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
+ null,
+ tassignnode5,
+ pexprnode6,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction353
+private class ReduceAction482
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var pexprnode4 = nodearraylist2
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
- tkwbreaknode2,
- null,
- pexprnode4
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var ptypenode4 = nodearraylist3
+ assert ptypenode4 isa nullable AType
+ var tassignnode5 = nodearraylist4
+ assert tassignnode5 isa nullable TAssign
+ var pexprnode6 = nodearraylist6
+ assert pexprnode6 isa nullable AExpr
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
+ ptypenode4,
+ tassignnode5,
+ pexprnode6,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction354
+private class ReduceAction483
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var plabelnode3 = nodearraylist2
- assert plabelnode3 isa nullable ALabel
- var pexprnode4 = nodearraylist3
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
- tkwbreaknode2,
- plabelnode3,
- pexprnode4
+ var tkwvarnode2 = nodearraylist1
+ assert tkwvarnode2 isa nullable TKwvar
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var ptypenode4 = nodearraylist4
+ assert ptypenode4 isa nullable AType
+ var tassignnode5 = nodearraylist5
+ assert tassignnode5 isa nullable TAssign
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var pannotationsnode7 = nodearraylist3
+ assert pannotationsnode7 isa nullable AAnnotations
+ var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+ tkwvarnode2,
+ tidnode3,
+ ptypenode4,
+ tassignnode5,
+ pexprnode6,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction355
+private class ReduceAction484
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwabortnode2 = nodearraylist1
- assert tkwabortnode2 isa nullable TKwabort
- var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
- tkwabortnode2
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var tattridnode3 = nodearraylist4
+ assert tattridnode3 isa nullable TAttrid
+ var tassignnode4 = nodearraylist5
+ assert tassignnode4 isa nullable TAssign
+ var pexprnode5 = nodearraylist6
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+ pexprnode2,
+ tattridnode3,
+ tassignnode4,
+ pexprnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction356
+private class ReduceAction485
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwcontinuenode2 = nodearraylist1
- assert tkwcontinuenode2 isa nullable TKwcontinue
- var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
- tkwcontinuenode2,
- null,
- null
+ var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+ var tattridnode3 = nodearraylist1
+ assert tattridnode3 isa nullable TAttrid
+ var tassignnode4 = nodearraylist2
+ assert tassignnode4 isa nullable TAssign
+ var pexprnode5 = nodearraylist3
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+ pexprnode2,
+ tattridnode3,
+ tassignnode4,
+ pexprnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction357
+private class ReduceAction486
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwcontinuenode2 = nodearraylist1
- assert tkwcontinuenode2 isa nullable TKwcontinue
- var plabelnode3 = nodearraylist2
- assert plabelnode3 isa nullable ALabel
- var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
- tkwcontinuenode2,
- plabelnode3,
- null
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var tidnode3 = nodearraylist4
+ assert tidnode3 isa nullable TId
+ var pexprsnode4 = nodearraylist5
+ assert pexprsnode4 isa nullable AExprs
+ var tassignnode5 = nodearraylist6
+ assert tassignnode5 isa nullable TAssign
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+ pexprnode2,
+ tidnode3,
+ pexprsnode4,
+ tassignnode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction358
+private class ReduceAction487
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwcontinuenode2 = nodearraylist1
- assert tkwcontinuenode2 isa nullable TKwcontinue
- var pexprnode4 = nodearraylist2
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
- tkwcontinuenode2,
- null,
- pexprnode4
+ var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+ var tidnode3 = nodearraylist1
+ assert tidnode3 isa nullable TId
+ var pexprsnode4 = nodearraylist2
+ assert pexprsnode4 isa nullable AExprs
+ var tassignnode5 = nodearraylist3
+ assert tassignnode5 isa nullable TAssign
+ var pexprnode6 = nodearraylist4
+ assert pexprnode6 isa nullable AExpr
+ var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+ pexprnode2,
+ tidnode3,
+ pexprsnode4,
+ tassignnode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction359
+private class ReduceAction488
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwcontinuenode2 = nodearraylist1
- assert tkwcontinuenode2 isa nullable TKwcontinue
- var plabelnode3 = nodearraylist2
- assert plabelnode3 isa nullable ALabel
- var pexprnode4 = nodearraylist3
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
- tkwcontinuenode2,
- plabelnode3,
- pexprnode4
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprsnode3 = nodearraylist2
+ assert pexprsnode3 isa nullable AExprs
+ var tassignnode4 = nodearraylist3
+ assert tassignnode4 isa nullable TAssign
+ var pexprnode5 = nodearraylist4
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+ pexprnode2,
+ pexprsnode3,
+ tassignnode4,
+ pexprnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction366
+private class ReduceAction489
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tidnode3 = nodearraylist4
- assert tidnode3 isa nullable TId
- var pexprsnode4 = nodearraylist5
- assert pexprsnode4 isa nullable AExprs
- var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ var tattridnode3 = nodearraylist4
+ assert tattridnode3 isa nullable TAttrid
+ var passignopnode4 = nodearraylist5
+ assert passignopnode4 isa nullable AAssignOp
+ var pexprnode5 = nodearraylist6
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
pexprnode2,
- tidnode3,
- pexprsnode4,
- listnode5
+ tattridnode3,
+ passignopnode4,
+ pexprnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction367
+private class ReduceAction490
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tidnode3 = nodearraylist1
- assert tidnode3 isa nullable TId
- var pexprsnode4 = nodearraylist2
- assert pexprsnode4 isa nullable AExprs
- var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ var tattridnode3 = nodearraylist1
+ assert tattridnode3 isa nullable TAttrid
+ var passignopnode4 = nodearraylist2
+ assert passignopnode4 isa nullable AAssignOp
+ var pexprnode5 = nodearraylist3
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
pexprnode2,
- tidnode3,
- pexprsnode4,
- listnode5
+ tattridnode3,
+ passignopnode4,
+ pexprnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction368
+private class ReduceAction491
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode6 = new Array[Object]
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
var tidnode3 = nodearraylist4
assert tidnode3 isa nullable TId
var pexprsnode4 = nodearraylist5
assert pexprsnode4 isa nullable AExprs
- var listnode5 = nodearraylist6
- assert listnode5 isa Array[Object]
- listnode6 = concat(listnode6, listnode5)
- var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ var passignopnode5 = nodearraylist6
+ assert passignopnode5 isa nullable AAssignOp
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
pexprnode2,
tidnode3,
pexprsnode4,
- listnode6
+ passignopnode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction369
+private class ReduceAction492
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode6 = new Array[Object]
var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
var tidnode3 = nodearraylist1
assert tidnode3 isa nullable TId
var pexprsnode4 = nodearraylist2
assert pexprsnode4 isa nullable AExprs
- var listnode5 = nodearraylist3
- assert listnode5 isa Array[Object]
- listnode6 = concat(listnode6, listnode5)
- var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+ var passignopnode5 = nodearraylist3
+ assert passignopnode5 isa nullable AAssignOp
+ var pexprnode6 = nodearraylist4
+ assert pexprnode6 isa nullable AExpr
+ var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
pexprnode2,
tidnode3,
pexprsnode4,
- listnode6
- )
- node_list = pexprnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction370
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var tkwsupernode3 = nodearraylist1
- assert tkwsupernode3 isa nullable TKwsuper
- var pexprsnode4 = nodearraylist2
- assert pexprsnode4 isa nullable AExprs
- var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
- null,
- tkwsupernode3,
- pexprsnode4
- )
- node_list = pexprnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction371
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var pqualifiednode2 = nodearraylist1
- assert pqualifiednode2 isa nullable AQualified
- var tkwsupernode3 = nodearraylist2
- assert tkwsupernode3 isa nullable TKwsuper
- var pexprsnode4 = nodearraylist3
- assert pexprsnode4 isa nullable AExprs
- var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
- pqualifiednode2,
- tkwsupernode3,
- pexprsnode4
+ passignopnode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction372
+private class ReduceAction493
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tkwinitnode3 = nodearraylist4
- assert tkwinitnode3 isa nullable TKwinit
- var pexprsnode4 = nodearraylist5
- assert pexprsnode4 isa nullable AExprs
- var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+ var pexprsnode3 = nodearraylist2
+ assert pexprsnode3 isa nullable AExprs
+ var passignopnode4 = nodearraylist3
+ assert passignopnode4 isa nullable AAssignOp
+ var pexprnode5 = nodearraylist4
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
pexprnode2,
- tkwinitnode3,
- pexprsnode4
+ pexprsnode3,
+ passignopnode4,
+ pexprnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction373
+private class ReduceAction494
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tkwinitnode3 = nodearraylist1
- assert tkwinitnode3 isa nullable TKwinit
- var pexprsnode4 = nodearraylist2
- assert pexprsnode4 isa nullable AExprs
- var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
- pexprnode2,
- tkwinitnode3,
- pexprsnode4
+ var tpluseqnode2 = nodearraylist1
+ assert tpluseqnode2 isa nullable TPluseq
+ var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
+ tpluseqnode2
)
- node_list = pexprnode1
+ node_list = passignopnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction374
+private class ReduceAction495
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwdebugnode2 = nodearraylist1
- assert tkwdebugnode2 isa nullable TKwdebug
- var tkwtypenode3 = nodearraylist2
- assert tkwtypenode3 isa nullable TKwtype
- var pexprnode4 = nodearraylist5
- assert pexprnode4 isa nullable AExpr
- var ptypenode5 = nodearraylist3
- assert ptypenode5 isa nullable AType
- var pexprnode1: nullable ADebugTypeExpr = new ADebugTypeExpr.init_adebugtypeexpr(
- tkwdebugnode2,
- tkwtypenode3,
- pexprnode4,
- ptypenode5
+ var tminuseqnode2 = nodearraylist1
+ assert tminuseqnode2 isa nullable TMinuseq
+ var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
+ tminuseqnode2
)
- node_list = pexprnode1
+ node_list = passignopnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction375
+private class ReduceAction496
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwlabelnode2 = nodearraylist1
- assert tkwlabelnode2 isa nullable TKwlabel
- var tidnode3 = nodearraylist2
- assert tidnode3 isa nullable TId
- var plabelnode1: nullable ALabel = new ALabel.init_alabel(
- tkwlabelnode2,
- tidnode3
+ var tkwdonode2 = nodearraylist1
+ assert tkwdonode2 isa nullable TKwdo
+ var pexprnode3 = nodearraylist2
+ assert pexprnode3 isa nullable AExpr
+ var plabelnode4 = nodearraylist3
+ assert plabelnode4 isa nullable ALabel
+ var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+ tkwdonode2,
+ pexprnode3,
+ plabelnode4
)
- node_list = plabelnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction376
+private class ReduceAction497
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var pclosuredefnode1 = nodearraylist1
- if pclosuredefnode1 != null then
- listnode2.add(pclosuredefnode1)
- end
- node_list = listnode2
+ var tkwdonode2 = nodearraylist1
+ assert tkwdonode2 isa nullable TKwdo
+ var pexprnode3 = nodearraylist2
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+ tkwdonode2,
+ pexprnode3,
+ null
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction377
+private class ReduceAction498
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var pclosuredefnode1 = nodearraylist1
- var listnode2 = nodearraylist2
- assert listnode2 isa Array[Object]
- if pclosuredefnode1 != null then
- listnode3.add(pclosuredefnode1)
- end
- listnode3 = concat(listnode3, listnode2)
- node_list = listnode3
+ var tkwifnode2 = nodearraylist1
+ assert tkwifnode2 isa nullable TKwif
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist6
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode5 = nodearraylist8
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
+ pexprnode3,
+ pexprnode4,
+ pexprnode5
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction378
+private class ReduceAction499
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var tkwdonode5 = nodearraylist3
- assert tkwdonode5 isa nullable TKwdo
- var pexprnode6 = nodearraylist4
- assert pexprnode6 isa nullable AExpr
- var plabelnode7 = nodearraylist5
- assert plabelnode7 isa nullable ALabel
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode4,
- tkwdonode5,
- pexprnode6,
- plabelnode7
+ var tkwifnode2 = nodearraylist1
+ assert tkwifnode2 isa nullable TKwif
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist6
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
+ pexprnode3,
+ pexprnode4,
+ null
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction379
+private class ReduceAction500
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist6
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist7
- assert pexprnode7 isa nullable AExpr
- var plabelnode8 = nodearraylist8
- assert plabelnode8 isa nullable ALabel
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- tkwdonode6,
- pexprnode7,
- plabelnode8
+ var tkwifnode2 = nodearraylist1
+ assert tkwifnode2 isa nullable TKwif
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist7
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode5 = nodearraylist8
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
+ pexprnode3,
+ pexprnode4,
+ pexprnode5
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction380
+private class ReduceAction501
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist3
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist4
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist5
- assert pexprnode7 isa nullable AExpr
- var plabelnode8 = nodearraylist6
- assert plabelnode8 isa nullable ALabel
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- tkwdonode6,
- pexprnode7,
- plabelnode8
+ var tkwifnode2 = nodearraylist1
+ assert tkwifnode2 isa nullable TKwif
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode5 = nodearraylist6
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
+ pexprnode3,
+ null,
+ pexprnode5
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction381
+private class ReduceAction502
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var tkwdonode5 = nodearraylist3
- assert tkwdonode5 isa nullable TKwdo
- var pexprnode6 = nodearraylist4
- assert pexprnode6 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode4,
- tkwdonode5,
- pexprnode6,
- null
+ var tkwifnode2 = nodearraylist1
+ assert tkwifnode2 isa nullable TKwif
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
+ pexprnode3,
+ null,
+ pexprnode5
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction382
+private class ReduceAction505
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist6
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist7
- assert pexprnode7 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- tkwdonode6,
- pexprnode7,
- null
+ var tkwloopnode2 = nodearraylist1
+ assert tkwloopnode2 isa nullable TKwloop
+ var pexprnode3 = nodearraylist2
+ assert pexprnode3 isa nullable AExpr
+ var plabelnode4 = nodearraylist3
+ assert plabelnode4 isa nullable ALabel
+ var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+ tkwloopnode2,
+ pexprnode3,
+ plabelnode4
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction383
+private class ReduceAction506
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist3
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist4
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist5
- assert pexprnode7 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- tkwdonode6,
- pexprnode7,
+ var tkwloopnode2 = nodearraylist1
+ assert tkwloopnode2 isa nullable TKwloop
+ var pexprnode3 = nodearraylist2
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+ tkwloopnode2,
+ pexprnode3,
null
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction384
+private class ReduceAction507
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var pexprnode6 = nodearraylist5
- assert pexprnode6 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode4,
- null,
- pexprnode6,
- null
+ var tkwwhilenode2 = nodearraylist1
+ assert tkwwhilenode2 isa nullable TKwwhile
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var tkwdonode4 = nodearraylist5
+ assert tkwdonode4 isa nullable TKwdo
+ var pexprnode5 = nodearraylist6
+ assert pexprnode5 isa nullable AExpr
+ var plabelnode6 = nodearraylist7
+ assert plabelnode6 isa nullable ALabel
+ var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+ tkwwhilenode2,
+ pexprnode3,
+ tkwdonode4,
+ pexprnode5,
+ plabelnode6
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction385
+private class ReduceAction508
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var pexprnode7 = nodearraylist8
- assert pexprnode7 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- null,
- pexprnode7,
+ var tkwwhilenode2 = nodearraylist1
+ assert tkwwhilenode2 isa nullable TKwwhile
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var tkwdonode4 = nodearraylist5
+ assert tkwdonode4 isa nullable TKwdo
+ var pexprnode5 = nodearraylist6
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+ tkwwhilenode2,
+ pexprnode3,
+ tkwdonode4,
+ pexprnode5,
null
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction386
+private class ReduceAction509
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist13 = p.pop
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist3
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var pexprnode7 = nodearraylist6
+ var listnode4 = new Array[Object]
+ var tkwfornode2 = nodearraylist1
+ assert tkwfornode2 isa nullable TKwfor
+ var listnode3 = nodearraylist4
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var pexprnode5 = nodearraylist9
+ assert pexprnode5 isa nullable AExpr
+ var tkwdonode6 = nodearraylist11
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist12
assert pexprnode7 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- null,
+ var plabelnode8 = nodearraylist13
+ assert plabelnode8 isa nullable ALabel
+ var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+ tkwfornode2,
+ listnode4,
+ pexprnode5,
+ tkwdonode6,
pexprnode7,
- null
+ plabelnode8
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction387
+private class ReduceAction510
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode4 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var tkwdonode5 = nodearraylist3
- assert tkwdonode5 isa nullable TKwdo
- var pexprnode6 = nodearraylist5
- assert pexprnode6 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
+ var tkwfornode2 = nodearraylist1
+ assert tkwfornode2 isa nullable TKwfor
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
+ var tkwdonode6 = nodearraylist9
+ assert tkwdonode6 isa nullable TKwdo
+ var pexprnode7 = nodearraylist10
+ assert pexprnode7 isa nullable AExpr
+ var plabelnode8 = nodearraylist11
+ assert plabelnode8 isa nullable ALabel
+ var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+ tkwfornode2,
listnode4,
- tkwdonode5,
- pexprnode6,
- null
+ pexprnode5,
+ tkwdonode6,
+ pexprnode7,
+ plabelnode8
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction388
+private class ReduceAction511
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist6
+ var listnode4 = new Array[Object]
+ var tkwfornode2 = nodearraylist1
+ assert tkwfornode2 isa nullable TKwfor
+ var listnode3 = nodearraylist4
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var pexprnode5 = nodearraylist9
+ assert pexprnode5 isa nullable AExpr
+ var tkwdonode6 = nodearraylist11
assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist8
+ var pexprnode7 = nodearraylist12
assert pexprnode7 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
+ var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+ tkwfornode2,
+ listnode4,
+ pexprnode5,
tkwdonode6,
pexprnode7,
null
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction389
+private class ReduceAction512
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist3
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist4
+ var listnode4 = new Array[Object]
+ var tkwfornode2 = nodearraylist1
+ assert tkwfornode2 isa nullable TKwfor
+ var listnode3 = nodearraylist3
+ assert listnode3 isa Array[Object]
+ listnode4 = concat(listnode4, listnode3)
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
+ var tkwdonode6 = nodearraylist9
assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist6
+ var pexprnode7 = nodearraylist10
assert pexprnode7 isa nullable AExpr
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
+ var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+ tkwfornode2,
+ listnode4,
+ pexprnode5,
tkwdonode6,
pexprnode7,
null
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction390
+private class ReduceAction513
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var tkwdonode5 = nodearraylist3
- assert tkwdonode5 isa nullable TKwdo
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode4,
- tkwdonode5,
+ var tkwassertnode2 = nodearraylist1
+ assert tkwassertnode2 isa nullable TKwassert
+ var pexprnode4 = nodearraylist2
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode5 = nodearraylist4
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+ tkwassertnode2,
null,
- null
+ pexprnode4,
+ pexprnode5
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction391
+private class ReduceAction514
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist6
- assert tkwdonode6 isa nullable TKwdo
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- tkwdonode6,
- null,
- null
+ var tkwassertnode2 = nodearraylist1
+ assert tkwassertnode2 isa nullable TKwassert
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var pexprnode4 = nodearraylist3
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode5 = nodearraylist5
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+ tkwassertnode2,
+ tidnode3,
+ pexprnode4,
+ pexprnode5
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction392
+private class ReduceAction515
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var tbangnode2 = nodearraylist1
- assert tbangnode2 isa nullable TBang
- var pclosureidnode3 = nodearraylist2
- assert pclosureidnode3 isa nullable AClosureId
- var listnode4 = nodearraylist3
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tkwdonode6 = nodearraylist4
- assert tkwdonode6 isa nullable TKwdo
- var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
- tbangnode2,
- pclosureidnode3,
- listnode5,
- tkwdonode6,
+ var tkwassertnode2 = nodearraylist1
+ assert tkwassertnode2 isa nullable TKwassert
+ var pexprnode4 = nodearraylist2
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+ tkwassertnode2,
null,
+ pexprnode4,
+ null
+ )
+ node_list = pexprnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction516
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var tkwassertnode2 = nodearraylist1
+ assert tkwassertnode2 isa nullable TKwassert
+ var tidnode3 = nodearraylist2
+ assert tidnode3 isa nullable TId
+ var pexprnode4 = nodearraylist3
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+ tkwassertnode2,
+ tidnode3,
+ pexprnode4,
null
)
- node_list = pclosuredefnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction393
+private class ReduceAction517
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tidnode2 = nodearraylist1
- assert tidnode2 isa nullable TId
- var pclosureidnode1: nullable ASimpleClosureId = new ASimpleClosureId.init_asimpleclosureid(
- tidnode2
- )
- node_list = pclosureidnode1
+ var tidnode1 = nodearraylist1
+ node_list = tidnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction394
+private class ReduceAction521
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwbreaknode2 = nodearraylist1
- assert tkwbreaknode2 isa nullable TKwbreak
- var pclosureidnode1: nullable ABreakClosureId = new ABreakClosureId.init_abreakclosureid(
- tkwbreaknode2
+ var listnode5 = new Array[Object]
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprsnode3 = nodearraylist2
+ assert pexprsnode3 isa nullable AExprs
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+ pexprnode2,
+ pexprsnode3,
+ listnode5
)
- node_list = pclosureidnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction395
+private class ReduceAction523
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode4 = nodearraylist1
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
- null,
- null,
- pexprnode4
+ var tkwifnode2 = nodearraylist1
+ assert tkwifnode2 isa nullable TKwif
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
+ var tkwelsenode6 = nodearraylist9
+ assert tkwelsenode6 isa nullable TKwelse
+ var pexprnode7 = nodearraylist11
+ assert pexprnode7 isa nullable AExpr
+ var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
+ tkwifnode2,
+ pexprnode3,
+ tkwthennode4,
+ pexprnode5,
+ tkwelsenode6,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction396
+private class ReduceAction525
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwvarnode2 = nodearraylist1
- assert tkwvarnode2 isa nullable TKwvar
- var tidnode3 = nodearraylist2
- assert tidnode3 isa nullable TId
- var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
- tkwvarnode2,
- tidnode3,
- null,
- null,
- null
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
+ pexprnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction397
+private class ReduceAction526
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwvarnode2 = nodearraylist1
- assert tkwvarnode2 isa nullable TKwvar
- var tidnode3 = nodearraylist2
- assert tidnode3 isa nullable TId
- var ptypenode4 = nodearraylist3
- assert ptypenode4 isa nullable AType
- var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
- tkwvarnode2,
- tidnode3,
- ptypenode4,
- null,
- null
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
+ pexprnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction398
+private class ReduceAction527
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwvarnode2 = nodearraylist1
- assert tkwvarnode2 isa nullable TKwvar
- var tidnode3 = nodearraylist2
- assert tidnode3 isa nullable TId
- var tassignnode5 = nodearraylist3
- assert tassignnode5 isa nullable TAssign
- var pexprnode6 = nodearraylist5
- assert pexprnode6 isa nullable AExpr
- var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
- tkwvarnode2,
- tidnode3,
- null,
- tassignnode5,
- pexprnode6
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist5
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
+ pexprnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction399
+private class ReduceAction529
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwvarnode2 = nodearraylist1
- assert tkwvarnode2 isa nullable TKwvar
- var tidnode3 = nodearraylist2
- assert tidnode3 isa nullable TId
- var ptypenode4 = nodearraylist3
- assert ptypenode4 isa nullable AType
- var tassignnode5 = nodearraylist4
- assert tassignnode5 isa nullable TAssign
- var pexprnode6 = nodearraylist6
- assert pexprnode6 isa nullable AExpr
- var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
- tkwvarnode2,
- tidnode3,
- ptypenode4,
- tassignnode5,
- pexprnode6
+ var tkwnotnode2 = nodearraylist1
+ assert tkwnotnode2 isa nullable TKwnot
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
+ tkwnotnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction400
+private class ReduceAction531
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tattridnode3 = nodearraylist4
- assert tattridnode3 isa nullable TAttrid
- var tassignnode4 = nodearraylist5
- assert tassignnode4 isa nullable TAssign
- var pexprnode5 = nodearraylist6
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
pexprnode2,
- tattridnode3,
- tassignnode4,
- pexprnode5
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction401
+private class ReduceAction532
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tattridnode3 = nodearraylist1
- assert tattridnode3 isa nullable TAttrid
- var tassignnode4 = nodearraylist2
- assert tassignnode4 isa nullable TAssign
- var pexprnode5 = nodearraylist3
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
pexprnode2,
- tattridnode3,
- tassignnode4,
- pexprnode5
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction402
+private class ReduceAction533
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tidnode3 = nodearraylist4
- assert tidnode3 isa nullable TId
- var pexprsnode4 = nodearraylist5
- assert pexprsnode4 isa nullable AExprs
- var tassignnode5 = nodearraylist6
- assert tassignnode5 isa nullable TAssign
- var pexprnode6 = nodearraylist7
- assert pexprnode6 isa nullable AExpr
- var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
pexprnode2,
- tidnode3,
- pexprsnode4,
- tassignnode5,
- pexprnode6
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction403
+private class ReduceAction534
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
- var nodearraylist1 = p.pop
- var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tidnode3 = nodearraylist1
- assert tidnode3 isa nullable TId
- var pexprsnode4 = nodearraylist2
- assert pexprsnode4 isa nullable AExprs
- var tassignnode5 = nodearraylist3
- assert tassignnode5 isa nullable TAssign
- var pexprnode6 = nodearraylist4
- assert pexprnode6 isa nullable AExpr
- var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
pexprnode2,
- tidnode3,
- pexprsnode4,
- tassignnode5,
- pexprnode6
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction404
+private class ReduceAction535
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var pexprsnode3 = nodearraylist2
- assert pexprsnode3 isa nullable AExprs
- var tassignnode4 = nodearraylist3
- assert tassignnode4 isa nullable TAssign
- var pexprnode5 = nodearraylist4
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
pexprnode2,
- pexprsnode3,
- tassignnode4,
- pexprnode5
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction405
+private class ReduceAction536
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tattridnode3 = nodearraylist4
- assert tattridnode3 isa nullable TAttrid
- var passignopnode4 = nodearraylist5
- assert passignopnode4 isa nullable AAssignOp
- var pexprnode5 = nodearraylist6
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
pexprnode2,
- tattridnode3,
- passignopnode4,
- pexprnode5
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction406
+private class ReduceAction537
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tattridnode3 = nodearraylist1
- assert tattridnode3 isa nullable TAttrid
- var passignopnode4 = nodearraylist2
- assert passignopnode4 isa nullable AAssignOp
- var pexprnode5 = nodearraylist3
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
pexprnode2,
- tattridnode3,
- passignopnode4,
- pexprnode5
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction407
+private class ReduceAction538
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tidnode3 = nodearraylist4
- assert tidnode3 isa nullable TId
- var pexprsnode4 = nodearraylist5
- assert pexprsnode4 isa nullable AExprs
- var passignopnode5 = nodearraylist6
- assert passignopnode5 isa nullable AAssignOp
- var pexprnode6 = nodearraylist7
- assert pexprnode6 isa nullable AExpr
- var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
pexprnode2,
- tidnode3,
- pexprsnode4,
- passignopnode5,
- pexprnode6
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction408
+private class ReduceAction539
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tidnode3 = nodearraylist1
- assert tidnode3 isa nullable TId
- var pexprsnode4 = nodearraylist2
- assert pexprsnode4 isa nullable AExprs
- var passignopnode5 = nodearraylist3
- assert passignopnode5 isa nullable AAssignOp
- var pexprnode6 = nodearraylist4
- assert pexprnode6 isa nullable AExpr
- var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
pexprnode2,
- tidnode3,
- pexprsnode4,
- passignopnode5,
- pexprnode6
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction409
+private class ReduceAction540
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var pexprsnode3 = nodearraylist2
- assert pexprsnode3 isa nullable AExprs
- var passignopnode4 = nodearraylist3
- assert passignopnode4 isa nullable AAssignOp
- var pexprnode5 = nodearraylist4
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
pexprnode2,
- pexprsnode3,
- passignopnode4,
- pexprnode5
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction410
+private class ReduceAction541
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tpluseqnode2 = nodearraylist1
- assert tpluseqnode2 isa nullable TPluseq
- var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
- tpluseqnode2
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var ptypenode3 = nodearraylist4
+ assert ptypenode3 isa nullable AType
+ var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
+ pexprnode2,
+ ptypenode3
)
- node_list = passignopnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction411
+private class ReduceAction543
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tminuseqnode2 = nodearraylist1
- assert tminuseqnode2 isa nullable TMinuseq
- var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
- tminuseqnode2
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
+ pexprnode2,
+ pexprnode3
)
- node_list = passignopnode1
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction412
+private class ReduceAction544
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwdonode2 = nodearraylist1
- assert tkwdonode2 isa nullable TKwdo
- var pexprnode3 = nodearraylist2
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
assert pexprnode3 isa nullable AExpr
- var plabelnode4 = nodearraylist3
- assert plabelnode4 isa nullable ALabel
- var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
- tkwdonode2,
- pexprnode3,
- plabelnode4
+ var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
+ pexprnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction413
+private class ReduceAction546
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwdonode2 = nodearraylist1
- assert tkwdonode2 isa nullable TKwdo
- var pexprnode3 = nodearraylist2
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
- tkwdonode2,
- pexprnode3,
- null
+ var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
+ pexprnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction414
+private class ReduceAction547
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwifnode2 = nodearraylist1
- assert tkwifnode2 isa nullable TKwif
- var pexprnode3 = nodearraylist3
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist6
- assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist8
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
- tkwifnode2,
- pexprnode3,
- pexprnode4,
- pexprnode5
+ var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
+ pexprnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction415
+private class ReduceAction548
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwifnode2 = nodearraylist1
- assert tkwifnode2 isa nullable TKwif
- var pexprnode3 = nodearraylist3
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprnode3 = nodearraylist4
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist6
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
- tkwifnode2,
- pexprnode3,
- pexprnode4,
- null
+ var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
+ pexprnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction416
+private class ReduceAction550
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwifnode2 = nodearraylist1
- assert tkwifnode2 isa nullable TKwif
+ var tminusnode2 = nodearraylist1
+ assert tminusnode2 isa nullable TMinus
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist8
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
- tkwifnode2,
- pexprnode3,
- pexprnode4,
- pexprnode5
+ var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
+ tminusnode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction417
+private class ReduceAction551
super ReduceAction
redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
+ do
+ var node_list: nullable Object = null
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwifnode2 = nodearraylist1
- assert tkwifnode2 isa nullable TKwif
+ var tkwoncenode2 = nodearraylist1
+ assert tkwoncenode2 isa nullable TKwonce
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode5 = nodearraylist6
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
- tkwifnode2,
- pexprnode3,
- null,
- pexprnode5
+ var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
+ tkwoncenode2,
+ pexprnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction418
+private class ReduceAction553
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwifnode2 = nodearraylist1
- assert tkwifnode2 isa nullable TKwif
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var pexprnode5 = nodearraylist7
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
- tkwifnode2,
- pexprnode3,
+ var tkwnewnode2 = nodearraylist1
+ assert tkwnewnode2 isa nullable TKwnew
+ var ptypenode3 = nodearraylist3
+ assert ptypenode3 isa nullable AType
+ var pexprsnode5 = nodearraylist4
+ assert pexprsnode5 isa nullable AExprs
+ var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+ tkwnewnode2,
+ ptypenode3,
null,
- pexprnode5
+ pexprsnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction421
+private class ReduceAction554
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwloopnode2 = nodearraylist1
- assert tkwloopnode2 isa nullable TKwloop
+ var tkwissetnode2 = nodearraylist1
+ assert tkwissetnode2 isa nullable TKwisset
var pexprnode3 = nodearraylist2
assert pexprnode3 isa nullable AExpr
- var plabelnode4 = nodearraylist3
- assert plabelnode4 isa nullable ALabel
- var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
- tkwloopnode2,
+ var tattridnode4 = nodearraylist5
+ assert tattridnode4 isa nullable TAttrid
+ var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+ tkwissetnode2,
pexprnode3,
- plabelnode4
+ tattridnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction422
+private class ReduceAction555
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwloopnode2 = nodearraylist1
- assert tkwloopnode2 isa nullable TKwloop
- var pexprnode3 = nodearraylist2
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
- tkwloopnode2,
+ var tkwissetnode2 = nodearraylist1
+ assert tkwissetnode2 isa nullable TKwisset
+ var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+ var tattridnode4 = nodearraylist2
+ assert tattridnode4 isa nullable TAttrid
+ var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+ tkwissetnode2,
pexprnode3,
- null
+ tattridnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction423
+private class ReduceAction556
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwwhilenode2 = nodearraylist1
- assert tkwwhilenode2 isa nullable TKwwhile
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var tkwdonode4 = nodearraylist5
- assert tkwdonode4 isa nullable TKwdo
- var pexprnode5 = nodearraylist6
- assert pexprnode5 isa nullable AExpr
- var plabelnode6 = nodearraylist7
- assert plabelnode6 isa nullable ALabel
- var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
- tkwwhilenode2,
- pexprnode3,
- tkwdonode4,
- pexprnode5,
- plabelnode6
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var tattridnode3 = nodearraylist4
+ assert tattridnode3 isa nullable TAttrid
+ var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
+ pexprnode2,
+ tattridnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction424
+private class ReduceAction557
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwwhilenode2 = nodearraylist1
- assert tkwwhilenode2 isa nullable TKwwhile
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var tkwdonode4 = nodearraylist5
- assert tkwdonode4 isa nullable TKwdo
- var pexprnode5 = nodearraylist6
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
- tkwwhilenode2,
- pexprnode3,
- tkwdonode4,
- pexprnode5,
- null
+ var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+ var tattridnode3 = nodearraylist1
+ assert tattridnode3 isa nullable TAttrid
+ var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
+ pexprnode2,
+ tattridnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction425
+private class ReduceAction564
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist13 = p.pop
- var nodearraylist12 = p.pop
- var nodearraylist11 = p.pop
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode4 = new Array[Object]
- var tkwfornode2 = nodearraylist1
- assert tkwfornode2 isa nullable TKwfor
- var listnode3 = nodearraylist4
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var pexprnode5 = nodearraylist9
- assert pexprnode5 isa nullable AExpr
- var tkwdonode6 = nodearraylist11
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist12
- assert pexprnode7 isa nullable AExpr
- var plabelnode8 = nodearraylist13
- assert plabelnode8 isa nullable ALabel
- var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
- tkwfornode2,
- listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
- plabelnode8
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var pexprsnode3 = nodearraylist2
+ assert pexprsnode3 isa nullable AExprs
+ var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+ pexprnode2,
+ pexprsnode3,
+ listnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction426
+private class ReduceAction565
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist11 = p.pop
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tkwfornode2 = nodearraylist1
- assert tkwfornode2 isa nullable TKwfor
- var listnode3 = nodearraylist3
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var pexprnode5 = nodearraylist7
- assert pexprnode5 isa nullable AExpr
- var tkwdonode6 = nodearraylist9
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist10
- assert pexprnode7 isa nullable AExpr
- var plabelnode8 = nodearraylist11
- assert plabelnode8 isa nullable ALabel
- var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
- tkwfornode2,
- listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
- plabelnode8
+ var tkwnewnode2 = nodearraylist1
+ assert tkwnewnode2 isa nullable TKwnew
+ var ptypenode3 = nodearraylist3
+ assert ptypenode3 isa nullable AType
+ var tidnode4 = nodearraylist6
+ assert tidnode4 isa nullable TId
+ var pexprsnode5 = nodearraylist7
+ assert pexprsnode5 isa nullable AExprs
+ var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+ tkwnewnode2,
+ ptypenode3,
+ tidnode4,
+ pexprsnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction427
+private class ReduceAction566
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist12 = p.pop
- var nodearraylist11 = p.pop
- var nodearraylist10 = p.pop
var nodearraylist9 = p.pop
var nodearraylist8 = p.pop
var nodearraylist7 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tkwfornode2 = nodearraylist1
- assert tkwfornode2 isa nullable TKwfor
- var listnode3 = nodearraylist4
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var pexprnode5 = nodearraylist9
- assert pexprnode5 isa nullable AExpr
- var tkwdonode6 = nodearraylist11
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist12
- assert pexprnode7 isa nullable AExpr
- var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
- tkwfornode2,
- listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist7
+ assert pexprnode4 isa nullable AExpr
+ var tcbranode5 = nodearraylist9
+ assert tcbranode5 isa nullable TCbra
+ var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
+ tobranode2,
+ pexprnode3,
+ pexprnode4,
+ tcbranode5,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction428
+private class ReduceAction567
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var tkwfornode2 = nodearraylist1
- assert tkwfornode2 isa nullable TKwfor
- var listnode3 = nodearraylist3
- assert listnode3 isa Array[Object]
- listnode4 = concat(listnode4, listnode3)
- var pexprnode5 = nodearraylist7
- assert pexprnode5 isa nullable AExpr
- var tkwdonode6 = nodearraylist9
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist10
- assert pexprnode7 isa nullable AExpr
- var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
- tkwfornode2,
- listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
- null
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist7
+ assert pexprnode4 isa nullable AExpr
+ var tcbranode5 = nodearraylist9
+ assert tcbranode5 isa nullable TCbra
+ var pannotationsnode6 = nodearraylist10
+ assert pannotationsnode6 isa nullable AAnnotations
+ var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
+ tobranode2,
+ pexprnode3,
+ pexprnode4,
+ tcbranode5,
+ pannotationsnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction429
+private class ReduceAction568
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwassertnode2 = nodearraylist1
- assert tkwassertnode2 isa nullable TKwassert
- var pexprnode4 = nodearraylist2
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist7
assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist4
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
- tkwassertnode2,
- null,
+ var tobranode5 = nodearraylist9
+ assert tobranode5 isa nullable TObra
+ var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
+ tobranode2,
+ pexprnode3,
pexprnode4,
- pexprnode5
+ tobranode5,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction430
+private class ReduceAction569
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwassertnode2 = nodearraylist1
- assert tkwassertnode2 isa nullable TKwassert
- var tidnode3 = nodearraylist2
- assert tidnode3 isa nullable TId
- var pexprnode4 = nodearraylist3
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var pexprnode3 = nodearraylist3
+ assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist7
assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist5
- assert pexprnode5 isa nullable AExpr
- var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
- tkwassertnode2,
- tidnode3,
+ var tobranode5 = nodearraylist9
+ assert tobranode5 isa nullable TObra
+ var pannotationsnode6 = nodearraylist10
+ assert pannotationsnode6 isa nullable AAnnotations
+ var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
+ tobranode2,
+ pexprnode3,
pexprnode4,
- pexprnode5
+ tobranode5,
+ pannotationsnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction431
+private class ReduceAction570
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwassertnode2 = nodearraylist1
- assert tkwassertnode2 isa nullable TKwassert
- var pexprnode4 = nodearraylist2
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
- tkwassertnode2,
- null,
- pexprnode4,
+ var pexprsnode2 = nodearraylist1
+ assert pexprsnode2 isa nullable AExprs
+ var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+ pexprsnode2,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction432
+private class ReduceAction571
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwassertnode2 = nodearraylist1
- assert tkwassertnode2 isa nullable TKwassert
- var tidnode3 = nodearraylist2
- assert tidnode3 isa nullable TId
- var pexprnode4 = nodearraylist3
- assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
- tkwassertnode2,
- tidnode3,
- pexprnode4,
+ var pexprsnode2 = nodearraylist1
+ assert pexprsnode2 isa nullable AExprs
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+ pexprsnode2,
+ pannotationsnode3
+ )
+ node_list = pexprnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction572
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist1 = p.pop
+ var tkwselfnode2 = nodearraylist1
+ assert tkwselfnode2 isa nullable TKwself
+ var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+ tkwselfnode2,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction433
+private class ReduceAction573
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tidnode1 = nodearraylist1
- node_list = tidnode1
+ var tkwselfnode2 = nodearraylist1
+ assert tkwselfnode2 isa nullable TKwself
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+ tkwselfnode2,
+ pannotationsnode3
+ )
+ node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction437
+private class ReduceAction574
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprsnode3 = nodearraylist2
- assert pexprsnode3 isa nullable AExprs
- var listnode4 = nodearraylist3
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
- pexprnode2,
- pexprsnode3,
- listnode5
+ var tkwtruenode2 = nodearraylist1
+ assert tkwtruenode2 isa nullable TKwtrue
+ var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+ tkwtruenode2,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction439
+private class ReduceAction575
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist11 = p.pop
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwifnode2 = nodearraylist1
- assert tkwifnode2 isa nullable TKwif
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var tkwthennode4 = nodearraylist5
- assert tkwthennode4 isa nullable TKwthen
- var pexprnode5 = nodearraylist7
- assert pexprnode5 isa nullable AExpr
- var tkwelsenode6 = nodearraylist9
- assert tkwelsenode6 isa nullable TKwelse
- var pexprnode7 = nodearraylist11
- assert pexprnode7 isa nullable AExpr
- var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
- tkwifnode2,
- pexprnode3,
- tkwthennode4,
- pexprnode5,
- tkwelsenode6,
- pexprnode7
+ var tkwtruenode2 = nodearraylist1
+ assert tkwtruenode2 isa nullable TKwtrue
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+ tkwtruenode2,
+ pannotationsnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction441
+private class ReduceAction576
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
- pexprnode2,
- pexprnode3
+ var tkwfalsenode2 = nodearraylist1
+ assert tkwfalsenode2 isa nullable TKwfalse
+ var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+ tkwfalsenode2,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction442
+private class ReduceAction577
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
- pexprnode2,
- pexprnode3
+ var tkwfalsenode2 = nodearraylist1
+ assert tkwfalsenode2 isa nullable TKwfalse
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+ tkwfalsenode2,
+ pannotationsnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction443
+private class ReduceAction578
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist5
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
- pexprnode2,
- pexprnode3
+ var tkwnullnode2 = nodearraylist1
+ assert tkwnullnode2 isa nullable TKwnull
+ var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+ tkwnullnode2,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction445
+private class ReduceAction579
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwnotnode2 = nodearraylist1
- assert tkwnotnode2 isa nullable TKwnot
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
- tkwnotnode2,
- pexprnode3
+ var tkwnullnode2 = nodearraylist1
+ assert tkwnullnode2 isa nullable TKwnull
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+ tkwnullnode2,
+ pannotationsnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction447
+private class ReduceAction580
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
- pexprnode2,
- pexprnode3
+ var tnumbernode2 = nodearraylist1
+ assert tnumbernode2 isa nullable TNumber
+ var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
+ tnumbernode2,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction448
+private class ReduceAction581
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
- pexprnode2,
- pexprnode3
+ var tnumbernode2 = nodearraylist1
+ assert tnumbernode2 isa nullable TNumber
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
+ tnumbernode2,
+ pannotationsnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction449
+private class ReduceAction582
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
- pexprnode2,
- pexprnode3
+ var tfloatnode2 = nodearraylist1
+ assert tfloatnode2 isa nullable TFloat
+ var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+ tfloatnode2,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction450
+private class ReduceAction583
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
- pexprnode2,
- pexprnode3
+ var tfloatnode2 = nodearraylist1
+ assert tfloatnode2 isa nullable TFloat
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+ tfloatnode2,
+ pannotationsnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction451
+private class ReduceAction584
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
- pexprnode2,
- pexprnode3
+ var tcharnode2 = nodearraylist1
+ assert tcharnode2 isa nullable TChar
+ var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+ tcharnode2,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction452
+private class ReduceAction585
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
- pexprnode2,
- pexprnode3
+ var tcharnode2 = nodearraylist1
+ assert tcharnode2 isa nullable TChar
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+ tcharnode2,
+ pannotationsnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction453
+private class ReduceAction586
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
- pexprnode2,
- pexprnode3
+ var tstringnode2 = nodearraylist1
+ assert tstringnode2 isa nullable TString
+ var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
+ tstringnode2,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction454
+private class ReduceAction587
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
- pexprnode2,
- pexprnode3
+ var tstringnode2 = nodearraylist1
+ assert tstringnode2 isa nullable TString
+ var pannotationsnode3 = nodearraylist2
+ assert pannotationsnode3 isa nullable AAnnotations
+ var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
+ tstringnode2,
+ pannotationsnode3
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction455
+private class ReduceAction589
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var pexprnode3 = nodearraylist2
assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
- pexprnode2,
- pexprnode3
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
+ toparnode2,
+ pexprnode3,
+ tcparnode4,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction456
+private class ReduceAction590
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
+ var toparnode2 = nodearraylist1
+ assert toparnode2 isa nullable TOpar
+ var pexprnode3 = nodearraylist2
assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
- pexprnode2,
- pexprnode3
+ var tcparnode4 = nodearraylist3
+ assert tcparnode4 isa nullable TCpar
+ var pannotationsnode5 = nodearraylist4
+ assert pannotationsnode5 isa nullable AAnnotations
+ var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
+ toparnode2,
+ pexprnode3,
+ tcparnode4,
+ pannotationsnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction457
+private class ReduceAction591
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var ptypenode3 = nodearraylist4
- assert ptypenode3 isa nullable AType
- var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
+ var tkwasnode3 = nodearraylist4
+ assert tkwasnode3 isa nullable TKwas
+ var toparnode4 = nodearraylist6
+ assert toparnode4 isa nullable TOpar
+ var ptypenode5 = nodearraylist8
+ assert ptypenode5 isa nullable AType
+ var tcparnode6 = nodearraylist10
+ assert tcparnode6 isa nullable TCpar
+ var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
pexprnode2,
- ptypenode3
+ tkwasnode3,
+ toparnode4,
+ ptypenode5,
+ tcparnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction459
+private class ReduceAction592
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist12 = p.pop
+ var nodearraylist11 = p.pop
+ var nodearraylist10 = p.pop
+ var nodearraylist9 = p.pop
+ var nodearraylist8 = p.pop
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
+ var tkwasnode3 = nodearraylist4
+ assert tkwasnode3 isa nullable TKwas
+ var toparnode4 = nodearraylist6
+ assert toparnode4 isa nullable TOpar
+ var tkwnotnode5 = nodearraylist8
+ assert tkwnotnode5 isa nullable TKwnot
+ var tkwnullnode6 = nodearraylist10
+ assert tkwnullnode6 isa nullable TKwnull
+ var tcparnode7 = nodearraylist12
+ assert tcparnode7 isa nullable TCpar
+ var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
pexprnode2,
- pexprnode3
+ tkwasnode3,
+ toparnode4,
+ tkwnotnode5,
+ tkwnullnode6,
+ tcparnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction460
+private class ReduceAction593
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
+ var listnode4 = new Array[Object]
+ var listnode2 = nodearraylist1
+ assert listnode2 isa Array[Object]
+ var pexprnode3 = nodearraylist2
assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
- pexprnode2,
- pexprnode3
+ listnode4 = concat(listnode4, listnode2)
+ if pexprnode3 != null then
+ listnode4.add(pexprnode3)
+ end
+ var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+ listnode4,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction462
+private class ReduceAction594
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
- pexprnode2,
- pexprnode3
+ var listnode5 = new Array[Object]
+ var listnode2 = nodearraylist1
+ assert listnode2 isa Array[Object]
+ var listnode3 = nodearraylist2
+ assert listnode3 isa Array[Object]
+ var pexprnode4 = nodearraylist3
+ assert pexprnode4 isa nullable AExpr
+ listnode5 = concat(listnode5, listnode2)
+ listnode5 = concat(listnode5, listnode3)
+ if pexprnode4 != null then
+ listnode5.add(pexprnode4)
+ end
+ var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+ listnode5,
+ null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction463
+private class ReduceAction595
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
+ var listnode4 = new Array[Object]
+ var listnode2 = nodearraylist1
+ assert listnode2 isa Array[Object]
+ var pexprnode3 = nodearraylist2
assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
- pexprnode2,
- pexprnode3
+ listnode4 = concat(listnode4, listnode2)
+ if pexprnode3 != null then
+ listnode4.add(pexprnode3)
+ end
+ var pannotationsnode5 = nodearraylist3
+ assert pannotationsnode5 isa nullable AAnnotations
+ var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+ listnode4,
+ pannotationsnode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction464
+private class ReduceAction596
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist4
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
- pexprnode2,
- pexprnode3
+ var listnode5 = new Array[Object]
+ var listnode2 = nodearraylist1
+ assert listnode2 isa Array[Object]
+ var listnode3 = nodearraylist2
+ assert listnode3 isa Array[Object]
+ var pexprnode4 = nodearraylist3
+ assert pexprnode4 isa nullable AExpr
+ listnode5 = concat(listnode5, listnode2)
+ listnode5 = concat(listnode5, listnode3)
+ if pexprnode4 != null then
+ listnode5.add(pexprnode4)
+ end
+ var pannotationsnode6 = nodearraylist4
+ assert pannotationsnode6 isa nullable AAnnotations
+ var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+ listnode5,
+ pannotationsnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction466
+private class ReduceAction597
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tminusnode2 = nodearraylist1
- assert tminusnode2 isa nullable TMinus
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
- tminusnode2,
- pexprnode3
- )
- node_list = pexprnode1
+ var listnode3 = new Array[Object]
+ var pexprnode1 = nodearraylist1
+ var pexprnode2 = nodearraylist3
+ if pexprnode1 != null then
+ listnode3.add(pexprnode1)
+ end
+ if pexprnode2 != null then
+ listnode3.add(pexprnode2)
+ end
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction467
+private class ReduceAction598
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwoncenode2 = nodearraylist1
- assert tkwoncenode2 isa nullable TKwonce
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
- tkwoncenode2,
- pexprnode3
+ var tstartstringnode2 = nodearraylist1
+ assert tstartstringnode2 isa nullable TStartString
+ var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
+ tstartstringnode2
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction469
+private class ReduceAction600
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwnewnode2 = nodearraylist1
- assert tkwnewnode2 isa nullable TKwnew
- var ptypenode3 = nodearraylist3
- assert ptypenode3 isa nullable AType
- var pexprsnode5 = nodearraylist4
- assert pexprsnode5 isa nullable AExprs
- var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
- tkwnewnode2,
- ptypenode3,
- null,
- pexprsnode5
+ var tmidstringnode2 = nodearraylist1
+ assert tmidstringnode2 isa nullable TMidString
+ var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
+ tmidstringnode2
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction470
+private class ReduceAction601
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwissetnode2 = nodearraylist1
- assert tkwissetnode2 isa nullable TKwisset
- var pexprnode3 = nodearraylist2
- assert pexprnode3 isa nullable AExpr
- var tattridnode4 = nodearraylist5
- assert tattridnode4 isa nullable TAttrid
- var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
- tkwissetnode2,
- pexprnode3,
- tattridnode4
+ var tendstringnode2 = nodearraylist1
+ assert tendstringnode2 isa nullable TEndString
+ var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
+ tendstringnode2
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction471
+private class ReduceAction602
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwissetnode2 = nodearraylist1
- assert tkwissetnode2 isa nullable TKwisset
- var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tattridnode4 = nodearraylist2
- assert tattridnode4 isa nullable TAttrid
- var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
- tkwissetnode2,
- pexprnode3,
- tattridnode4
+ var listnode5 = new Array[Object]
+ var tatnode2 = nodearraylist1
+ assert tatnode2 isa nullable TAt
+ var pannotationnode4 = nodearraylist2
+ assert pannotationnode4 isa nullable AAnnotation
+ if pannotationnode4 != null then
+ listnode5.add(pannotationnode4)
+ end
+ var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+ tatnode2,
+ null,
+ listnode5,
+ null
)
- node_list = pexprnode1
+ node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction472
+private class ReduceAction603
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var tattridnode3 = nodearraylist4
- assert tattridnode3 isa nullable TAttrid
- var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
- pexprnode2,
- tattridnode3
+ var listnode5 = new Array[Object]
+ var tatnode2 = nodearraylist1
+ assert tatnode2 isa nullable TAt
+ var toparnode3 = nodearraylist2
+ assert toparnode3 isa nullable TOpar
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tcparnode6 = nodearraylist4
+ assert tcparnode6 isa nullable TCpar
+ var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+ tatnode2,
+ toparnode3,
+ listnode5,
+ tcparnode6
)
- node_list = pexprnode1
+ node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction473
+private class ReduceAction604
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
- var tattridnode3 = nodearraylist1
- assert tattridnode3 isa nullable TAttrid
- var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
- pexprnode2,
- tattridnode3
+ var listnode4 = new Array[Object]
+ var patidnode2 = nodearraylist1
+ assert patidnode2 isa nullable AAtid
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ null,
+ listnode4,
+ null,
+ null
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction480
+private class ReduceAction605
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode4 = new Array[Object]
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var pexprsnode3 = nodearraylist2
- assert pexprsnode3 isa nullable AExprs
- var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
- pexprnode2,
- pexprsnode3,
- listnode4
+ var patidnode2 = nodearraylist1
+ assert patidnode2 isa nullable AAtid
+ var pannotationsnode6 = nodearraylist2
+ assert pannotationsnode6 isa nullable AAnnotations
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ null,
+ listnode4,
+ null,
+ pannotationsnode6
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction481
+private class ReduceAction606
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwnewnode2 = nodearraylist1
- assert tkwnewnode2 isa nullable TKwnew
- var ptypenode3 = nodearraylist3
- assert ptypenode3 isa nullable AType
- var tidnode4 = nodearraylist6
- assert tidnode4 isa nullable TId
- var pexprsnode5 = nodearraylist7
- assert pexprsnode5 isa nullable AExprs
- var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
- tkwnewnode2,
- ptypenode3,
- tidnode4,
- pexprsnode5
+ var listnode5 = new Array[Object]
+ var patidnode2 = nodearraylist1
+ assert patidnode2 isa nullable AAtid
+ var toparnode3 = nodearraylist2
+ assert toparnode3 isa nullable TOpar
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tcparnode6 = nodearraylist4
+ assert tcparnode6 isa nullable TCpar
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ toparnode3,
+ listnode5,
+ tcparnode6,
+ null
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction482
+private class ReduceAction607
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
var nodearraylist5 = p.pop
var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tobranode2 = nodearraylist1
- assert tobranode2 isa nullable TObra
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
- var tcbranode5 = nodearraylist9
- assert tcbranode5 isa nullable TCbra
- var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
- tobranode2,
- pexprnode3,
- pexprnode4,
- tcbranode5
+ var listnode5 = new Array[Object]
+ var patidnode2 = nodearraylist1
+ assert patidnode2 isa nullable AAtid
+ var toparnode3 = nodearraylist2
+ assert toparnode3 isa nullable TOpar
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tcparnode6 = nodearraylist4
+ assert tcparnode6 isa nullable TCpar
+ var pannotationsnode7 = nodearraylist5
+ assert pannotationsnode7 isa nullable AAnnotations
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ toparnode3,
+ listnode5,
+ tcparnode6,
+ pannotationsnode7
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction483
+private class ReduceAction608
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tobranode2 = nodearraylist1
- assert tobranode2 isa nullable TObra
- var pexprnode3 = nodearraylist3
- assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
- var tobranode5 = nodearraylist9
- assert tobranode5 isa nullable TObra
- var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
- tobranode2,
- pexprnode3,
- pexprnode4,
- tobranode5
+ var listnode5 = new Array[Object]
+ var listnode4 = nodearraylist1
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+ null,
+ null,
+ listnode5,
+ null
)
- node_list = pexprnode1
+ node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction484
+private class ReduceAction609
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var pexprsnode2 = nodearraylist1
- assert pexprsnode2 isa nullable AExprs
- var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
- pexprsnode2
- )
- node_list = pexprnode1
+ var listnode2 = new Array[Object]
+ var pannotationnode1 = nodearraylist1
+ if pannotationnode1 != null then
+ listnode2.add(pannotationnode1)
+ end
+ node_list = listnode2
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction485
+private class ReduceAction610
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwselfnode2 = nodearraylist1
- assert tkwselfnode2 isa nullable TKwself
- var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
- tkwselfnode2
- )
- node_list = pexprnode1
+ var listnode3 = new Array[Object]
+ var pannotationnode1 = nodearraylist1
+ var listnode2 = nodearraylist2
+ assert listnode2 isa Array[Object]
+ if pannotationnode1 != null then
+ listnode3.add(pannotationnode1)
+ end
+ listnode3 = concat(listnode3, listnode2)
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction486
+private class ReduceAction612
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwtruenode2 = nodearraylist1
- assert tkwtruenode2 isa nullable TKwtrue
- var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
- tkwtruenode2
+ var listnode4 = new Array[Object]
+ var patidnode2 = nodearraylist2
+ assert patidnode2 isa nullable AAtid
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ null,
+ listnode4,
+ null,
+ null
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction487
+private class ReduceAction613
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwfalsenode2 = nodearraylist1
- assert tkwfalsenode2 isa nullable TKwfalse
- var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
- tkwfalsenode2
+ var listnode4 = new Array[Object]
+ var patidnode2 = nodearraylist2
+ assert patidnode2 isa nullable AAtid
+ var pannotationsnode6 = nodearraylist3
+ assert pannotationsnode6 isa nullable AAnnotations
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ null,
+ listnode4,
+ null,
+ pannotationsnode6
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction488
+private class ReduceAction614
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tkwnullnode2 = nodearraylist1
- assert tkwnullnode2 isa nullable TKwnull
- var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
- tkwnullnode2
+ var listnode5 = new Array[Object]
+ var patidnode2 = nodearraylist2
+ assert patidnode2 isa nullable AAtid
+ var toparnode3 = nodearraylist3
+ assert toparnode3 isa nullable TOpar
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tcparnode6 = nodearraylist5
+ assert tcparnode6 isa nullable TCpar
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ toparnode3,
+ listnode5,
+ tcparnode6,
+ null
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction489
+private class ReduceAction615
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist7 = p.pop
+ var nodearraylist6 = p.pop
+ var nodearraylist5 = p.pop
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tnumbernode2 = nodearraylist1
- assert tnumbernode2 isa nullable TNumber
- var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
- tnumbernode2
+ var listnode5 = new Array[Object]
+ var patidnode2 = nodearraylist2
+ assert patidnode2 isa nullable AAtid
+ var toparnode3 = nodearraylist3
+ assert toparnode3 isa nullable TOpar
+ var listnode4 = nodearraylist4
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var tcparnode6 = nodearraylist5
+ assert tcparnode6 isa nullable TCpar
+ var pannotationsnode7 = nodearraylist6
+ assert pannotationsnode7 isa nullable AAnnotations
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ toparnode3,
+ listnode5,
+ tcparnode6,
+ pannotationsnode7
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction490
+private class ReduceAction616
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist4 = p.pop
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tfloatnode2 = nodearraylist1
- assert tfloatnode2 isa nullable TFloat
- var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
- tfloatnode2
+ var listnode5 = new Array[Object]
+ var patidnode2 = nodearraylist2
+ assert patidnode2 isa nullable AAtid
+ var listnode4 = nodearraylist3
+ assert listnode4 isa Array[Object]
+ listnode5 = concat(listnode5, listnode4)
+ var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+ patidnode2,
+ null,
+ listnode5,
+ null,
+ null
)
- node_list = pexprnode1
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction491
+private class ReduceAction617
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist3 = p.pop
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var tcharnode2 = nodearraylist1
- assert tcharnode2 isa nullable TChar
- var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
- tcharnode2
- )
- node_list = pexprnode1
+ var pannotationnode1 = nodearraylist3
+ node_list = pannotationnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction492
+private class ReduceAction618
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tstringnode2 = nodearraylist1
- assert tstringnode2 isa nullable TString
- var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
- tstringnode2
- )
- node_list = pexprnode1
+ var listnode2 = new Array[Object]
+ var patargnode1 = nodearraylist1
+ if patargnode1 != null then
+ listnode2.add(patargnode1)
+ end
+ node_list = listnode2
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction494
+private class ReduceAction619
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var toparnode2 = nodearraylist1
- assert toparnode2 isa nullable TOpar
- var pexprnode3 = nodearraylist2
- assert pexprnode3 isa nullable AExpr
- var tcparnode4 = nodearraylist3
- assert tcparnode4 isa nullable TCpar
- var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
- toparnode2,
- pexprnode3,
- tcparnode4
- )
- node_list = pexprnode1
+ var listnode3 = new Array[Object]
+ var patargnode1 = nodearraylist1
+ var listnode2 = nodearraylist2
+ assert listnode2 isa Array[Object]
+ if patargnode1 != null then
+ listnode3.add(patargnode1)
+ end
+ listnode3 = concat(listnode3, listnode2)
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction495
+private class ReduceAction620
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var tkwasnode3 = nodearraylist4
- assert tkwasnode3 isa nullable TKwas
- var toparnode4 = nodearraylist6
- assert toparnode4 isa nullable TOpar
- var ptypenode5 = nodearraylist8
- assert ptypenode5 isa nullable AType
- var tcparnode6 = nodearraylist10
- assert tcparnode6 isa nullable TCpar
- var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
- pexprnode2,
- tkwasnode3,
- toparnode4,
- ptypenode5,
- tcparnode6
- )
- node_list = pexprnode1
+ var patargnode1 = nodearraylist3
+ node_list = patargnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction496
+private class ReduceAction621
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist12 = p.pop
- var nodearraylist11 = p.pop
- var nodearraylist10 = p.pop
- var nodearraylist9 = p.pop
- var nodearraylist8 = p.pop
- var nodearraylist7 = p.pop
- var nodearraylist6 = p.pop
- var nodearraylist5 = p.pop
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist1
- assert pexprnode2 isa nullable AExpr
- var tkwasnode3 = nodearraylist4
- assert tkwasnode3 isa nullable TKwas
- var toparnode4 = nodearraylist6
- assert toparnode4 isa nullable TOpar
- var tkwnotnode5 = nodearraylist8
- assert tkwnotnode5 isa nullable TKwnot
- var tkwnullnode6 = nodearraylist10
- assert tkwnullnode6 isa nullable TKwnull
- var tcparnode7 = nodearraylist12
- assert tcparnode7 isa nullable TCpar
- var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
- pexprnode2,
- tkwasnode3,
- toparnode4,
- tkwnotnode5,
- tkwnullnode6,
- tcparnode7
+ var ptypenode2 = nodearraylist1
+ assert ptypenode2 isa nullable AType
+ var patargnode1: nullable ATypeAtArg = new ATypeAtArg.init_atypeatarg(
+ ptypenode2
)
- node_list = pexprnode1
+ node_list = patargnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction497
+private class ReduceAction622
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
- var listnode2 = nodearraylist1
- assert listnode2 isa Array[Object]
- var pexprnode3 = nodearraylist2
- assert pexprnode3 isa nullable AExpr
- listnode4 = concat(listnode4, listnode2)
- if pexprnode3 != null then
- listnode4.add(pexprnode3)
- end
- var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
- listnode4
+ var pexprnode2 = nodearraylist1
+ assert pexprnode2 isa nullable AExpr
+ var patargnode1: nullable AExprAtArg = new AExprAtArg.init_aexpratarg(
+ pexprnode2
)
- node_list = pexprnode1
+ node_list = patargnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction498
+private class ReduceAction624
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var listnode2 = nodearraylist1
- assert listnode2 isa Array[Object]
- var listnode3 = nodearraylist2
- assert listnode3 isa Array[Object]
- var pexprnode4 = nodearraylist3
- assert pexprnode4 isa nullable AExpr
- listnode5 = concat(listnode5, listnode2)
- listnode5 = concat(listnode5, listnode3)
- if pexprnode4 != null then
- listnode5.add(pexprnode4)
- end
- var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
- listnode5
+ var pannotationsnode2 = nodearraylist1
+ assert pannotationsnode2 isa nullable AAnnotations
+ var patargnode1: nullable AAtAtArg = new AAtAtArg.init_aatatarg(
+ pannotationsnode2
)
- node_list = pexprnode1
+ node_list = patargnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction499
+private class ReduceAction625
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
- var nodearraylist4 = p.pop
- var nodearraylist3 = p.pop
- var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode3 = new Array[Object]
- var pexprnode1 = nodearraylist1
- var pexprnode2 = nodearraylist3
- if pexprnode1 != null then
- listnode3.add(pexprnode1)
- end
- if pexprnode2 != null then
- listnode3.add(pexprnode2)
- end
- node_list = listnode3
+ var tidnode2 = nodearraylist1
+ assert tidnode2 isa nullable TId
+ var patidnode1: nullable AIdAtid = new AIdAtid.init_aidatid(
+ tidnode2
+ )
+ node_list = patidnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction500
+private class ReduceAction626
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tstartstringnode2 = nodearraylist1
- assert tstartstringnode2 isa nullable TStartString
- var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
- tstartstringnode2
+ var tkwreadablenode2 = nodearraylist1
+ assert tkwreadablenode2 isa nullable TKwreadable
+ var patidnode1: nullable AKwreadableAtid = new AKwreadableAtid.init_akwreadableatid(
+ tkwreadablenode2
)
- node_list = pexprnode1
+ node_list = patidnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction502
+private class ReduceAction627
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tmidstringnode2 = nodearraylist1
- assert tmidstringnode2 isa nullable TMidString
- var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
- tmidstringnode2
+ var tkwwritablenode2 = nodearraylist1
+ assert tkwwritablenode2 isa nullable TKwwritable
+ var patidnode1: nullable AKwwritableAtid = new AKwwritableAtid.init_akwwritableatid(
+ tkwwritablenode2
)
- node_list = pexprnode1
+ node_list = patidnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction503
+private class ReduceAction628
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist1 = p.pop
- var tendstringnode2 = nodearraylist1
- assert tendstringnode2 isa nullable TEndString
- var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
- tendstringnode2
+ var tkwimportnode2 = nodearraylist1
+ assert tkwimportnode2 isa nullable TKwimport
+ var patidnode1: nullable AKwimportAtid = new AKwimportAtid.init_akwimportatid(
+ tkwimportnode2
)
- node_list = pexprnode1
+ node_list = patidnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction504
+private class ReduceAction629
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction505
+private class ReduceAction630
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction506
+private class ReduceAction631
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction508
+private class ReduceAction633
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction511
+private class ReduceAction636
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction512
+private class ReduceAction637
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction513
+private class ReduceAction638
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction514
+private class ReduceAction639
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction515
+private class ReduceAction640
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction516
+private class ReduceAction641
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction517
+private class ReduceAction642
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction518
+private class ReduceAction643
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction519
+private class ReduceAction644
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction520
+private class ReduceAction645
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction521
+private class ReduceAction646
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction522
+private class ReduceAction647
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction523
+private class ReduceAction648
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction524
+private class ReduceAction649
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction525
+private class ReduceAction650
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction526
+private class ReduceAction651
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction528
+private class ReduceAction653
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction529
+private class ReduceAction654
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction531
+private class ReduceAction656
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction532
+private class ReduceAction657
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction533
+private class ReduceAction658
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction534
+private class ReduceAction659
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction806
+private class ReduceAction931
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction807
+private class ReduceAction932
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction808
+private class ReduceAction933
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction811
+private class ReduceAction936
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction824
+private class ReduceAction957
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction825
+private class ReduceAction958
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction832
+private class ReduceAction1250
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction833
+private class ReduceAction1251
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction834
+private class ReduceAction1252
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction835
+private class ReduceAction1253
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction836
+private class ReduceAction1254
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction837
+private class ReduceAction1255
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction838
+private class ReduceAction1256
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction839
+private class ReduceAction1257
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction840
+private class ReduceAction1258
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction841
+private class ReduceAction1259
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction844
+private class ReduceAction1262
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction845
+private class ReduceAction1263
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction846
+private class ReduceAction1264
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction847
+private class ReduceAction1265
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction848
+private class ReduceAction1266
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction849
+private class ReduceAction1267
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction850
+private class ReduceAction1268
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction851
+private class ReduceAction1269
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction853
+private class ReduceAction1271
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction854
+private class ReduceAction1272
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction855
+private class ReduceAction1273
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction857
+private class ReduceAction1275
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction861
+private class ReduceAction1277
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode1 = nodearraylist1
+ assert listnode1 isa Array[Object]
+ var pannotationnode2 = nodearraylist2
+ listnode3 = concat(listnode3, listnode1)
+ if pannotationnode2 != null then
+ listnode3.add(pannotationnode2)
+ end
+ node_list = listnode3
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction1281
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ var listnode3 = new Array[Object]
+ var listnode1 = nodearraylist1
+ assert listnode1 isa Array[Object]
+ var patargnode2 = nodearraylist2
+ listnode3 = concat(listnode3, listnode1)
+ if patargnode2 != null then
+ listnode3.add(patargnode2)
+ end
+ node_list = listnode3
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction1285
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction862
+private class ReduceAction1286
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction863
+private class ReduceAction1287
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction864
+private class ReduceAction1288
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction865
+private class ReduceAction1289
super ReduceAction
redef fun action(p: Parser)
do
class TBang
super Token
end
+class TAt
+ super Token
+end
class TClassid
super Token
end
class TFloat
super Token
end
-class TChar
- super Token
-end
class TString
super Token
end
class TEndString
super Token
end
-class TBadChar
+class TChar
super Token
end
class TBadString
super Token
end
+class TBadChar
+ super Token
+end
class TExternCodeSegment
super Token
end
class EOF
super Token
-private init noinit do end
end
class AError
super EOF
-private init noinit do end
+end
+class ALexerError
+ super AError
+end
+class AParserError
+ super AError
end
class AModule super Prod end
class AExternCodeBlock super Prod end
class AQualified super Prod end
class ADoc super Prod end
+class AAnnotations super Prod end
+class AAnnotation super Prod end
+class AAtArg super Prod end
+class AAtid super Prod end
class AModule
super AModule
readable var _n_doc: nullable ADoc = null
readable var _n_kwmodule: TKwmodule
readable var _n_name: AModuleName
+ readable var _n_annotations: nullable AAnnotations = null
end
class AStdImport
super AImport
readable var _n_visibility: AVisibility
readable var _n_kwimport: TKwimport
readable var _n_name: AModuleName
+ readable var _n_annotations: nullable AAnnotations = null
end
class ANoImport
super AImport
readable var _n_classkind: AClasskind
readable var _n_id: nullable TClassid = null
readable var _n_formaldefs: List[AFormaldef] = new List[AFormaldef]
+ readable var _n_annotations: nullable AAnnotations = null
readable var _n_extern_code_block: nullable AExternCodeBlock = null
readable var _n_superclasses: List[ASuperclass] = new List[ASuperclass]
readable var _n_propdefs: List[APropdef] = new List[APropdef]
super AFormaldef
readable var _n_id: TClassid
readable var _n_type: nullable AType = null
+ readable var _n_annotations: nullable AAnnotations = null
end
class ASuperclass
super ASuperclass
readable var _n_kwsuper: TKwsuper
readable var _n_type: AType
+ readable var _n_annotations: nullable AAnnotations = null
end
class AAttrPropdef
super APropdef
readable var _n_id: nullable TAttrid = null
readable var _n_id2: nullable TId = null
readable var _n_type: nullable AType = null
+ readable var _n_annotations: nullable AAnnotations = null
readable var _n_expr: nullable AExpr = null
end
class AMethPropdef
readable var _n_kwmeth: TKwmeth
readable var _n_methid: AMethid
readable var _n_signature: ASignature
+ readable var _n_annotations: nullable AAnnotations = null
end
class AInternMethPropdef
super APropdef
readable var _n_kwmeth: TKwmeth
readable var _n_methid: AMethid
readable var _n_signature: ASignature
+ readable var _n_annotations: nullable AAnnotations = null
readable var _n_block: nullable AExpr = null
end
class AConcreteInitPropdef
readable var _n_kwinit: TKwinit
readable var _n_methid: nullable AMethid = null
readable var _n_signature: ASignature
+ readable var _n_annotations: nullable AAnnotations = null
readable var _n_block: nullable AExpr = null
end
class AExternInitPropdef
readable var _n_kwtype: TKwtype
readable var _n_id: TClassid
readable var _n_type: AType
+ readable var _n_annotations: nullable AAnnotations = null
end
class AReadAble
super AAble
readable var _n_id: TId
readable var _n_type: nullable AType = null
readable var _n_dotdotdot: nullable TDotdotdot = null
+ readable var _n_annotations: nullable AAnnotations = null
end
class AClosureDecl
super AClosureDecl
readable var _n_kwnullable: nullable TKwnullable = null
readable var _n_id: TClassid
readable var _n_types: List[AType] = new List[AType]
+ readable var _n_annotations: nullable AAnnotations = null
end
class ALabel
super ALabel
readable var _n_type: nullable AType = null
readable var _n_assign: nullable TAssign = null
readable var _n_expr: nullable AExpr = null
+ readable var _n_annotations: nullable AAnnotations = null
end
class AReturnExpr
super AExpr
super AExpr
readable var _n_expr: AExpr
readable var _n_expr2: AExpr
+ readable var _n_annotations: nullable AAnnotations = null
end
class ACrangeExpr
super AExpr
readable var _n_expr: AExpr
readable var _n_expr2: AExpr
readable var _n_cbra: TCbra
+ readable var _n_annotations: nullable AAnnotations = null
end
class AOrangeExpr
super AExpr
readable var _n_expr: AExpr
readable var _n_expr2: AExpr
readable var _n_cbra: TObra
+ readable var _n_annotations: nullable AAnnotations = null
end
class AArrayExpr
super AExpr
readable var _n_exprs: AExprs
+ readable var _n_annotations: nullable AAnnotations = null
end
class ASelfExpr
super AExpr
readable var _n_kwself: TKwself
+ readable var _n_annotations: nullable AAnnotations = null
end
class AImplicitSelfExpr
super AExpr
class ATrueExpr
super AExpr
readable var _n_kwtrue: TKwtrue
+ readable var _n_annotations: nullable AAnnotations = null
end
class AFalseExpr
super AExpr
readable var _n_kwfalse: TKwfalse
+ readable var _n_annotations: nullable AAnnotations = null
end
class ANullExpr
super AExpr
readable var _n_kwnull: TKwnull
+ readable var _n_annotations: nullable AAnnotations = null
end
class AIntExpr
super AExpr
readable var _n_number: TNumber
+ readable var _n_annotations: nullable AAnnotations = null
end
class AFloatExpr
super AExpr
readable var _n_float: TFloat
+ readable var _n_annotations: nullable AAnnotations = null
end
class ACharExpr
super AExpr
readable var _n_char: TChar
+ readable var _n_annotations: nullable AAnnotations = null
end
class AStringExpr
super AExpr
readable var _n_string: TString
+ readable var _n_annotations: nullable AAnnotations = null
end
class AStartStringExpr
super AExpr
class ASuperstringExpr
super AExpr
readable var _n_exprs: List[AExpr] = new List[AExpr]
+ readable var _n_annotations: nullable AAnnotations = null
end
class AParExpr
super AExpr
readable var _n_opar: TOpar
readable var _n_expr: AExpr
readable var _n_cpar: TCpar
+ readable var _n_annotations: nullable AAnnotations = null
end
class AAsCastExpr
super AExpr
super ADoc
readable var _n_comment: List[TComment] = new List[TComment]
end
+class AAnnotations
+ super AAnnotations
+ readable var _n_at: nullable TAt = null
+ readable var _n_opar: nullable TOpar = null
+ readable var _n_items: List[AAnnotation] = new List[AAnnotation]
+ readable var _n_cpar: nullable TCpar = null
+end
+class AAnnotation
+ super AAnnotation
+ readable var _n_atid: AAtid
+ readable var _n_opar: nullable TOpar = null
+ readable var _n_args: List[AAtArg] = new List[AAtArg]
+ readable var _n_cpar: nullable TCpar = null
+ readable var _n_annotations: nullable AAnnotations = null
+end
+class ATypeAtArg
+ super AAtArg
+ readable var _n_type: AType
+end
+class AExprAtArg
+ super AAtArg
+ readable var _n_expr: AExpr
+end
+class AAtAtArg
+ super AAtArg
+ readable var _n_annotations: AAnnotations
+end
+class AIdAtid
+ super AAtid
+ readable var _n_id: TId
+end
+class AKwexternAtid
+ super AAtid
+ readable var _n_id: TKwextern
+end
+class AKwinternAtid
+ super AAtid
+ readable var _n_id: TKwintern
+end
+class AKwreadableAtid
+ super AAtid
+ readable var _n_id: TKwreadable
+end
+class AKwwritableAtid
+ super AAtid
+ readable var _n_id: TKwwritable
+end
+class AKwimportAtid
+ super AAtid
+ readable var _n_id: TKwimport
+end
class Start
super Prod
abstract class Token
super ANode
fun text: String is abstract
+ fun text=(text: String) is abstract
redef fun to_s: String do
return "'{text}'"
abstract class Prod
super ANode
fun location=(l: Location) do _location = l
+ readable var _n_annotations: nullable AAnnotations = null
end
class TEol
super Token
class TBang
super TokenOperator
end
+class TAt
+ super Token
+end
class TClassid
super Token
redef fun to_s
end
class EOF
super Token
-private init noinit do end
redef fun to_s
do
return "end of file"
end
class AError
super EOF
-private init noinit do end
+end
+class ALexerError
+ super AError
+end
+class AParserError
+ super AError
end
class AModule
end
abstract class AStringFormExpr
super AExpr
+ readable var _n_string: Token
end
class AStringExpr
super AStringFormExpr
- readable var _n_string: TString
end
class AStartStringExpr
super AStringFormExpr
- readable var _n_string: TStartString
end
class AMidStringExpr
super AStringFormExpr
- readable var _n_string: TMidString
end
class AEndStringExpr
super AStringFormExpr
- readable var _n_string: TEndString
end
class ASuperstringExpr
super AExpr
readable var _n_comment: List[TComment] = new List[TComment]
end
+class AAnnotations
+ super Prod
+ readable var _n_at: nullable TAt = null
+ readable var _n_opar: nullable TOpar = null
+ readable var _n_items: List[AAnnotation] = new List[AAnnotation]
+ readable var _n_cpar: nullable TCpar = null
+end
+class AAnnotation
+ super Prod
+ readable var _n_atid: AAtid
+ readable var _n_opar: nullable TOpar = null
+ readable var _n_args: List[AAtArg] = new List[AAtArg]
+ readable var _n_cpar: nullable TCpar = null
+end
+abstract class AAtArg
+ super Prod
+end
+class ATypeAtArg
+ super AAtArg
+ readable var _n_type: AType
+end
+class AExprAtArg
+ super AAtArg
+ readable var _n_expr: AExpr
+end
+class AAtAtArg
+ super AAtArg
+end
+abstract class AAtid
+ super Prod
+ readable var _n_id: Token
+end
+class AIdAtid
+ super AAtid
+end
+class AKwexternAtid
+ super AAtid
+end
+class AKwinternAtid
+ super AAtid
+end
+class AKwreadableAtid
+ super AAtid
+end
+class AKwwritableAtid
+ super AAtid
+end
+class AKwimportAtid
+ super AAtid
+end
+
class Start
super Prod
readable var _n_base: nullable AModule
init init_amoduledecl (
n_doc: nullable ADoc,
n_kwmodule: nullable TKwmodule,
- n_name: nullable AModuleName
+ n_name: nullable AModuleName,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_kwmodule.parent = self
_n_name = n_name.as(not null)
n_name.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
end
v.enter_visit(_n_kwmodule)
v.enter_visit(_n_name)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AStdImport
init init_astdimport (
n_visibility: nullable AVisibility,
n_kwimport: nullable TKwimport,
- n_name: nullable AModuleName
+ n_name: nullable AModuleName,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_kwimport.parent = self
_n_name = n_name.as(not null)
n_name.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_visibility)
v.enter_visit(_n_kwimport)
v.enter_visit(_n_name)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class ANoImport
n_classkind: nullable AClasskind,
n_id: nullable TClassid,
n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
+ n_annotations: nullable AAnnotations,
n_extern_code_block: nullable AExternCodeBlock,
n_superclasses: Collection[Object], # Should be Collection[ASuperclass]
n_propdefs: Collection[Object], # Should be Collection[APropdef]
_n_formaldefs.add(n)
n.parent = self
end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
_n_extern_code_block = n_extern_code_block
if n_extern_code_block != null then
n_extern_code_block.parent = self
return
end
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
if _n_extern_code_block == old_child then
if new_child != null then
new_child.parent = self
for n in _n_formaldefs do
v.enter_visit(n)
end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
if _n_extern_code_block != null then
v.enter_visit(_n_extern_code_block.as(not null))
end
init init_aformaldef (
n_id: nullable TClassid,
- n_type: nullable AType
+ n_type: nullable AType,
+ n_annotations: nullable AAnnotations
)
do
empty_init
if n_type != null then
n_type.parent = self
end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
if _n_type != null then
v.enter_visit(_n_type.as(not null))
end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class ASuperclass
init init_asuperclass (
n_kwsuper: nullable TKwsuper,
- n_type: nullable AType
+ n_type: nullable AType,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_kwsuper.parent = self
_n_type = n_type.as(not null)
n_type.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_kwsuper)
v.enter_visit(_n_type)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AAttrPropdef
n_id: nullable TAttrid,
n_id2: nullable TId,
n_type: nullable AType,
+ n_annotations: nullable AAnnotations,
n_expr: nullable AExpr
)
do
if n_type != null then
n_type.parent = self
end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
_n_expr = n_expr
if n_expr != null then
n_expr.parent = self
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
if _n_expr == old_child then
if new_child != null then
new_child.parent = self
if _n_type != null then
v.enter_visit(_n_type.as(not null))
end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
if _n_expr != null then
v.enter_visit(_n_expr.as(not null))
end
n_visibility: nullable AVisibility,
n_kwmeth: nullable TKwmeth,
n_methid: nullable AMethid,
- n_signature: nullable ASignature
+ n_signature: nullable ASignature,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_methid.parent = self
_n_signature = n_signature.as(not null)
n_signature.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_kwmeth)
v.enter_visit(_n_methid)
v.enter_visit(_n_signature)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AInternMethPropdef
n_kwmeth: nullable TKwmeth,
n_methid: nullable AMethid,
n_signature: nullable ASignature,
+ n_annotations: nullable AAnnotations,
n_block: nullable AExpr
)
do
n_methid.parent = self
_n_signature = n_signature.as(not null)
n_signature.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
_n_block = n_block
if n_block != null then
n_block.parent = self
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
if _n_block == old_child then
if new_child != null then
new_child.parent = self
v.enter_visit(_n_kwmeth)
v.enter_visit(_n_methid)
v.enter_visit(_n_signature)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
if _n_block != null then
v.enter_visit(_n_block.as(not null))
end
n_kwinit: nullable TKwinit,
n_methid: nullable AMethid,
n_signature: nullable ASignature,
+ n_annotations: nullable AAnnotations,
n_block: nullable AExpr
)
do
end
_n_signature = n_signature.as(not null)
n_signature.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
_n_block = n_block
if n_block != null then
n_block.parent = self
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
if _n_block == old_child then
if new_child != null then
new_child.parent = self
v.enter_visit(_n_methid.as(not null))
end
v.enter_visit(_n_signature)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
if _n_block != null then
v.enter_visit(_n_block.as(not null))
end
n_visibility: nullable AVisibility,
n_kwtype: nullable TKwtype,
n_id: nullable TClassid,
- n_type: nullable AType
+ n_type: nullable AType,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_id.parent = self
_n_type = n_type.as(not null)
n_type.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_kwtype)
v.enter_visit(_n_id)
v.enter_visit(_n_type)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AReadAble
init init_aparam (
n_id: nullable TId,
n_type: nullable AType,
- n_dotdotdot: nullable TDotdotdot
+ n_dotdotdot: nullable TDotdotdot,
+ n_annotations: nullable AAnnotations
)
do
empty_init
if n_dotdotdot != null then
n_dotdotdot.parent = self
end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
if _n_dotdotdot != null then
v.enter_visit(_n_dotdotdot.as(not null))
end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AClosureDecl
init init_atype (
n_kwnullable: nullable TKwnullable,
n_id: nullable TClassid,
- n_types: Collection[Object] # Should be Collection[AType]
+ n_types: Collection[Object], # Should be Collection[AType]
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_types.add(n)
n.parent = self
end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
return
end
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
for n in _n_types do
v.enter_visit(n)
end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class ALabel
n_id: nullable TId,
n_type: nullable AType,
n_assign: nullable TAssign,
- n_expr: nullable AExpr
+ n_expr: nullable AExpr,
+ n_annotations: nullable AAnnotations
)
do
empty_init
if n_expr != null then
n_expr.parent = self
end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
if _n_expr != null then
v.enter_visit(_n_expr.as(not null))
end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AReturnExpr
init init_arangeexpr (
n_expr: nullable AExpr,
- n_expr2: nullable AExpr
+ n_expr2: nullable AExpr,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_expr.parent = self
_n_expr2 = n_expr2.as(not null)
n_expr2.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_expr)
v.enter_visit(_n_expr2)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class ACrangeExpr
n_obra: nullable TObra,
n_expr: nullable AExpr,
n_expr2: nullable AExpr,
- n_cbra: nullable TCbra
+ n_cbra: nullable TCbra,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_expr2.parent = self
_n_cbra = n_cbra.as(not null)
n_cbra.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_expr)
v.enter_visit(_n_expr2)
v.enter_visit(_n_cbra)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AOrangeExpr
n_obra: nullable TObra,
n_expr: nullable AExpr,
n_expr2: nullable AExpr,
- n_cbra: nullable TObra
+ n_cbra: nullable TObra,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_expr2.parent = self
_n_cbra = n_cbra.as(not null)
n_cbra.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_expr)
v.enter_visit(_n_expr2)
v.enter_visit(_n_cbra)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AArrayExpr
private init empty_init do end
init init_aarrayexpr (
- n_exprs: nullable AExprs
+ n_exprs: nullable AExprs,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_exprs = n_exprs.as(not null)
n_exprs.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_exprs)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class ASelfExpr
private init empty_init do end
init init_aselfexpr (
- n_kwself: nullable TKwself
+ n_kwself: nullable TKwself,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_kwself = n_kwself.as(not null)
n_kwself.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_kwself)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AImplicitSelfExpr
private init empty_init do end
init init_atrueexpr (
- n_kwtrue: nullable TKwtrue
+ n_kwtrue: nullable TKwtrue,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_kwtrue = n_kwtrue.as(not null)
n_kwtrue.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_kwtrue)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AFalseExpr
private init empty_init do end
init init_afalseexpr (
- n_kwfalse: nullable TKwfalse
+ n_kwfalse: nullable TKwfalse,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_kwfalse = n_kwfalse.as(not null)
n_kwfalse.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_kwfalse)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class ANullExpr
private init empty_init do end
init init_anullexpr (
- n_kwnull: nullable TKwnull
+ n_kwnull: nullable TKwnull,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_kwnull = n_kwnull.as(not null)
n_kwnull.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_kwnull)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AIntExpr
private init empty_init do end
init init_aintexpr (
- n_number: nullable TNumber
+ n_number: nullable TNumber,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_number = n_number.as(not null)
n_number.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_number)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AFloatExpr
private init empty_init do end
init init_afloatexpr (
- n_float: nullable TFloat
+ n_float: nullable TFloat,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_float = n_float.as(not null)
n_float.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_float)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class ACharExpr
private init empty_init do end
init init_acharexpr (
- n_char: nullable TChar
+ n_char: nullable TChar,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_char = n_char.as(not null)
n_char.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_char)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AStringExpr
private init empty_init do end
init init_astringexpr (
- n_string: nullable TString
+ n_string: nullable TString,
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_string = n_string.as(not null)
n_string.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_string)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AStartStringExpr
private init empty_init do end
init init_asuperstringexpr (
- n_exprs: Collection[Object] # Should be Collection[AExpr]
+ n_exprs: Collection[Object], # Should be Collection[AExpr]
+ n_annotations: nullable AAnnotations
)
do
empty_init
_n_exprs.add(n)
n.parent = self
end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
return
end
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
for n in _n_exprs do
v.enter_visit(n)
end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AParExpr
init init_aparexpr (
n_opar: nullable TOpar,
n_expr: nullable AExpr,
- n_cpar: nullable TCpar
+ n_cpar: nullable TCpar,
+ n_annotations: nullable AAnnotations
)
do
empty_init
n_expr.parent = self
_n_cpar = n_cpar.as(not null)
n_cpar.parent = self
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_opar)
v.enter_visit(_n_expr)
v.enter_visit(_n_cpar)
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
end
end
redef class AAsCastExpr
end
end
end
+redef class AAnnotations
+ private init empty_init do end
+
+ init init_aannotations (
+ n_at: nullable TAt,
+ n_opar: nullable TOpar,
+ n_items: Collection[Object], # Should be Collection[AAnnotation]
+ n_cpar: nullable TCpar
+ )
+ do
+ empty_init
+ _n_at = n_at
+ if n_at != null then
+ n_at.parent = self
+ end
+ _n_opar = n_opar
+ if n_opar != null then
+ n_opar.parent = self
+ end
+ for n in n_items do
+ assert n isa AAnnotation
+ _n_items.add(n)
+ n.parent = self
+ end
+ _n_cpar = n_cpar
+ if n_cpar != null then
+ n_cpar.parent = self
+ end
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_at == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TAt
+ _n_at = new_child
+ else
+ _n_at = null
+ end
+ return
+ end
+ if _n_opar == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TOpar
+ _n_opar = new_child
+ else
+ _n_opar = null
+ end
+ return
+ end
+ for i in [0.._n_items.length[ do
+ if _n_items[i] == old_child then
+ if new_child != null then
+ assert new_child isa AAnnotation
+ _n_items[i] = new_child
+ new_child.parent = self
+ else
+ _n_items.remove_at(i)
+ end
+ return
+ end
+ end
+ if _n_cpar == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TCpar
+ _n_cpar = new_child
+ else
+ _n_cpar = null
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ if _n_at != null then
+ v.enter_visit(_n_at.as(not null))
+ end
+ if _n_opar != null then
+ v.enter_visit(_n_opar.as(not null))
+ end
+ for n in _n_items do
+ v.enter_visit(n)
+ end
+ if _n_cpar != null then
+ v.enter_visit(_n_cpar.as(not null))
+ end
+ end
+end
+redef class AAnnotation
+ private init empty_init do end
+
+ init init_aannotation (
+ n_atid: nullable AAtid,
+ n_opar: nullable TOpar,
+ n_args: Collection[Object], # Should be Collection[AAtArg]
+ n_cpar: nullable TCpar,
+ n_annotations: nullable AAnnotations
+ )
+ do
+ empty_init
+ _n_atid = n_atid.as(not null)
+ n_atid.parent = self
+ _n_opar = n_opar
+ if n_opar != null then
+ n_opar.parent = self
+ end
+ for n in n_args do
+ assert n isa AAtArg
+ _n_args.add(n)
+ n.parent = self
+ end
+ _n_cpar = n_cpar
+ if n_cpar != null then
+ n_cpar.parent = self
+ end
+ _n_annotations = n_annotations
+ if n_annotations != null then
+ n_annotations.parent = self
+ end
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_atid == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAtid
+ _n_atid = new_child
+ else
+ abort
+ end
+ return
+ end
+ if _n_opar == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TOpar
+ _n_opar = new_child
+ else
+ _n_opar = null
+ end
+ return
+ end
+ for i in [0.._n_args.length[ do
+ if _n_args[i] == old_child then
+ if new_child != null then
+ assert new_child isa AAtArg
+ _n_args[i] = new_child
+ new_child.parent = self
+ else
+ _n_args.remove_at(i)
+ end
+ return
+ end
+ end
+ if _n_cpar == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TCpar
+ _n_cpar = new_child
+ else
+ _n_cpar = null
+ end
+ return
+ end
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ _n_annotations = null
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_atid)
+ if _n_opar != null then
+ v.enter_visit(_n_opar.as(not null))
+ end
+ for n in _n_args do
+ v.enter_visit(n)
+ end
+ if _n_cpar != null then
+ v.enter_visit(_n_cpar.as(not null))
+ end
+ if _n_annotations != null then
+ v.enter_visit(_n_annotations.as(not null))
+ end
+ end
+end
+redef class ATypeAtArg
+ private init empty_init do end
+
+ init init_atypeatarg (
+ n_type: nullable AType
+ )
+ do
+ empty_init
+ _n_type = n_type.as(not null)
+ n_type.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_type == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AType
+ _n_type = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_type)
+ end
+end
+redef class AExprAtArg
+ private init empty_init do end
+
+ init init_aexpratarg (
+ n_expr: nullable AExpr
+ )
+ do
+ empty_init
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_expr == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AExpr
+ _n_expr = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_expr)
+ end
+end
+redef class AAtAtArg
+ private init empty_init do end
+
+ init init_aatatarg (
+ n_annotations: nullable AAnnotations
+ )
+ do
+ empty_init
+ _n_annotations = n_annotations.as(not null)
+ n_annotations.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_annotations == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa AAnnotations
+ _n_annotations = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_annotations)
+ end
+end
+redef class AIdAtid
+ private init empty_init do end
+
+ init init_aidatid (
+ n_id: nullable TId
+ )
+ do
+ empty_init
+ _n_id = n_id.as(not null)
+ n_id.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TId
+ _n_id = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_id)
+ end
+end
+redef class AKwexternAtid
+ private init empty_init do end
+
+ init init_akwexternatid (
+ n_id: nullable TKwextern
+ )
+ do
+ empty_init
+ _n_id = n_id.as(not null)
+ n_id.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwextern
+ _n_id = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_id)
+ end
+end
+redef class AKwinternAtid
+ private init empty_init do end
+
+ init init_akwinternatid (
+ n_id: nullable TKwintern
+ )
+ do
+ empty_init
+ _n_id = n_id.as(not null)
+ n_id.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwintern
+ _n_id = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_id)
+ end
+end
+redef class AKwreadableAtid
+ private init empty_init do end
+
+ init init_akwreadableatid (
+ n_id: nullable TKwreadable
+ )
+ do
+ empty_init
+ _n_id = n_id.as(not null)
+ n_id.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwreadable
+ _n_id = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_id)
+ end
+end
+redef class AKwwritableAtid
+ private init empty_init do end
+
+ init init_akwwritableatid (
+ n_id: nullable TKwwritable
+ )
+ do
+ empty_init
+ _n_id = n_id.as(not null)
+ n_id.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwwritable
+ _n_id = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_id)
+ end
+end
+redef class AKwimportAtid
+ private init empty_init do end
+
+ init init_akwimportatid (
+ n_id: nullable TKwimport
+ )
+ do
+ empty_init
+ _n_id = n_id.as(not null)
+ n_id.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwimport
+ _n_id = new_child
+ else
+ abort
+ end
+ return
+ end
+ end
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_id)
+ end
+end
redef class Start
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
#include "tables_nit.h"
static const int lexer_goto_row1[] = {
- 50,
+ 51,
9, 9, 1,
10, 10, 2,
13, 13, 3,
60, 60, 20,
61, 61, 21,
62, 62, 22,
- 65, 90, 23,
- 91, 91, 24,
- 93, 93, 25,
- 95, 95, 26,
- 96, 96, 27,
- 97, 97, 28,
- 98, 98, 29,
- 99, 99, 30,
- 100, 100, 31,
- 101, 101, 32,
- 102, 102, 33,
- 103, 104, 34,
- 105, 105, 35,
- 106, 107, 34,
- 108, 108, 36,
- 109, 109, 37,
- 110, 110, 38,
- 111, 111, 39,
- 112, 112, 40,
- 113, 113, 34,
- 114, 114, 41,
- 115, 115, 42,
- 116, 116, 43,
- 117, 117, 44,
- 118, 118, 45,
- 119, 119, 46,
- 120, 122, 34,
- 125, 125, 47
+ 64, 64, 23,
+ 65, 90, 24,
+ 91, 91, 25,
+ 93, 93, 26,
+ 95, 95, 27,
+ 96, 96, 28,
+ 97, 97, 29,
+ 98, 98, 30,
+ 99, 99, 31,
+ 100, 100, 32,
+ 101, 101, 33,
+ 102, 102, 34,
+ 103, 104, 35,
+ 105, 105, 36,
+ 106, 107, 35,
+ 108, 108, 37,
+ 109, 109, 38,
+ 110, 110, 39,
+ 111, 111, 40,
+ 112, 112, 41,
+ 113, 113, 35,
+ 114, 114, 42,
+ 115, 115, 43,
+ 116, 116, 44,
+ 117, 117, 45,
+ 118, 118, 46,
+ 119, 119, 47,
+ 120, 122, 35,
+ 125, 125, 48
};
static const int lexer_goto_row2[] = {
2,
};
static const int lexer_goto_row4[] = {
1,
- 10, 10, 48
+ 10, 10, 49
};
static const int lexer_goto_row5[] = {
1,
};
static const int lexer_goto_row6[] = {
1,
- 61, 61, 49
+ 61, 61, 50
};
static const int lexer_goto_row7[] = {
9,
- 0, 9, 50,
- 11, 12, 50,
- 14, 33, 50,
- 34, 34, 51,
- 35, 91, 50,
- 92, 92, 52,
- 93, 122, 50,
- 123, 123, 53,
- 124, 255, 50
+ 0, 9, 51,
+ 11, 12, 51,
+ 14, 33, 51,
+ 34, 34, 52,
+ 35, 91, 51,
+ 92, 92, 53,
+ 93, 122, 51,
+ 123, 123, 54,
+ 124, 255, 51
};
static const int lexer_goto_row8[] = {
5,
- 0, 9, 54,
- 10, 10, 55,
- 11, 12, 54,
- 13, 13, 56,
- 14, 255, 54
+ 0, 9, 55,
+ 10, 10, 56,
+ 11, 12, 55,
+ 13, 13, 57,
+ 14, 255, 55
};
static const int lexer_goto_row10[] = {
7,
- 0, 9, 57,
- 11, 12, 57,
- 14, 38, 57,
- 39, 39, 58,
- 40, 91, 57,
- 92, 92, 59,
- 93, 255, 57
+ 0, 9, 58,
+ 11, 12, 58,
+ 14, 38, 58,
+ 39, 39, 59,
+ 40, 91, 58,
+ 92, 92, 60,
+ 93, 255, 58
};
static const int lexer_goto_row14[] = {
1,
- 61, 61, 60
+ 61, 61, 61
};
static const int lexer_goto_row16[] = {
1,
- 61, 61, 61
+ 61, 61, 62
};
static const int lexer_goto_row17[] = {
2,
- 46, 46, 62,
- 48, 57, 63
+ 46, 46, 63,
+ 48, 57, 64
};
static const int lexer_goto_row19[] = {
2,
- 46, 46, 64,
+ 46, 46, 65,
48, 57, 18
};
static const int lexer_goto_row20[] = {
1,
- 58, 58, 65
+ 58, 58, 66
};
static const int lexer_goto_row21[] = {
2,
- 60, 60, 66,
- 61, 61, 67
+ 60, 60, 67,
+ 61, 61, 68
};
static const int lexer_goto_row22[] = {
1,
- 61, 61, 68
+ 61, 61, 69
};
static const int lexer_goto_row23[] = {
2,
- 61, 61, 69,
- 62, 62, 70
+ 61, 61, 70,
+ 62, 62, 71
};
-static const int lexer_goto_row24[] = {
+static const int lexer_goto_row25[] = {
4,
- 48, 57, 71,
- 65, 90, 72,
- 95, 95, 73,
- 97, 122, 74
-};
-static const int lexer_goto_row27[] = {
- 2,
- 95, 95, 75,
- 97, 122, 76
+ 48, 57, 72,
+ 65, 90, 73,
+ 95, 95, 74,
+ 97, 122, 75
};
static const int lexer_goto_row28[] = {
- 1,
- 123, 123, 77
+ 2,
+ 95, 95, 76,
+ 97, 122, 77
};
static const int lexer_goto_row29[] = {
- 10,
- 48, 57, 78,
- 65, 90, 79,
- 95, 95, 80,
- 97, 97, 81,
- 98, 98, 82,
- 99, 109, 81,
- 110, 110, 83,
- 111, 114, 81,
- 115, 115, 84,
- 116, 122, 81
+ 1,
+ 123, 123, 78
};
static const int lexer_goto_row30[] = {
- 4,
- 48, 95, -30,
- 97, 113, 81,
- 114, 114, 85,
- 115, 122, 81
+ 10,
+ 48, 57, 79,
+ 65, 90, 80,
+ 95, 95, 81,
+ 97, 97, 82,
+ 98, 98, 83,
+ 99, 109, 82,
+ 110, 110, 84,
+ 111, 114, 82,
+ 115, 115, 85,
+ 116, 122, 82
};
static const int lexer_goto_row31[] = {
- 6,
- 48, 95, -30,
- 97, 107, 81,
- 108, 108, 86,
- 109, 110, 81,
- 111, 111, 87,
- 112, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 113, 82,
+ 114, 114, 86,
+ 115, 122, 82
};
static const int lexer_goto_row32[] = {
- 4,
- 48, 95, -30,
- 97, 110, 81,
+ 6,
+ 48, 95, -31,
+ 97, 107, 82,
+ 108, 108, 87,
+ 109, 110, 82,
111, 111, 88,
- 112, 122, 81
+ 112, 122, 82
};
static const int lexer_goto_row33[] = {
- 7,
- 48, 107, -32,
- 108, 108, 89,
- 109, 109, 81,
- 110, 110, 90,
- 111, 119, 81,
- 120, 120, 91,
- 121, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 110, 82,
+ 111, 111, 89,
+ 112, 122, 82
};
static const int lexer_goto_row34[] = {
7,
- 48, 95, -30,
- 97, 97, 92,
- 98, 110, 81,
- 111, 111, 93,
- 112, 116, 81,
- 117, 117, 94,
- 118, 122, 81
+ 48, 107, -33,
+ 108, 108, 90,
+ 109, 109, 82,
+ 110, 110, 91,
+ 111, 119, 82,
+ 120, 120, 92,
+ 121, 122, 82
};
static const int lexer_goto_row35[] = {
- 2,
- 48, 95, -30,
- 97, 122, 81
+ 7,
+ 48, 95, -31,
+ 97, 97, 93,
+ 98, 110, 82,
+ 111, 111, 94,
+ 112, 116, 82,
+ 117, 117, 95,
+ 118, 122, 82
};
static const int lexer_goto_row36[] = {
- 9,
- 48, 95, -30,
- 97, 101, 81,
- 102, 102, 95,
- 103, 108, 81,
- 109, 109, 96,
- 110, 110, 97,
- 111, 114, 81,
- 115, 115, 98,
- 116, 122, 81
+ 2,
+ 48, 95, -31,
+ 97, 122, 82
};
static const int lexer_goto_row37[] = {
- 5,
- 48, 95, -30,
- 97, 97, 99,
- 98, 110, 81,
- 111, 111, 100,
- 112, 122, 81
+ 9,
+ 48, 95, -31,
+ 97, 101, 82,
+ 102, 102, 96,
+ 103, 108, 82,
+ 109, 109, 97,
+ 110, 110, 98,
+ 111, 114, 82,
+ 115, 115, 99,
+ 116, 122, 82
};
static const int lexer_goto_row38[] = {
- 3,
- 48, 110, -33,
+ 5,
+ 48, 95, -31,
+ 97, 97, 100,
+ 98, 110, 82,
111, 111, 101,
- 112, 122, 81
+ 112, 122, 82
};
static const int lexer_goto_row39[] = {
- 8,
- 48, 95, -30,
- 97, 100, 81,
- 101, 101, 102,
- 102, 110, 81,
- 111, 111, 103,
- 112, 116, 81,
- 117, 117, 104,
- 118, 122, 81
+ 3,
+ 48, 110, -34,
+ 111, 111, 102,
+ 112, 122, 82
};
static const int lexer_goto_row40[] = {
- 6,
- 48, 95, -30,
- 97, 109, 81,
- 110, 110, 105,
- 111, 113, 81,
- 114, 114, 106,
- 115, 122, 81
+ 8,
+ 48, 95, -31,
+ 97, 100, 82,
+ 101, 101, 103,
+ 102, 110, 82,
+ 111, 111, 104,
+ 112, 116, 82,
+ 117, 117, 105,
+ 118, 122, 82
};
static const int lexer_goto_row41[] = {
- 5,
- 48, 95, -30,
- 97, 97, 107,
- 98, 113, 81,
- 114, 114, 108,
- 115, 122, 81
+ 6,
+ 48, 95, -31,
+ 97, 109, 82,
+ 110, 110, 106,
+ 111, 113, 82,
+ 114, 114, 107,
+ 115, 122, 82
};
static const int lexer_goto_row42[] = {
- 3,
- 48, 100, -40,
- 101, 101, 109,
- 102, 122, 81
+ 5,
+ 48, 95, -31,
+ 97, 97, 108,
+ 98, 113, 82,
+ 114, 114, 109,
+ 115, 122, 82
};
static const int lexer_goto_row43[] = {
- 5,
- 48, 100, -40,
+ 3,
+ 48, 100, -41,
101, 101, 110,
- 102, 116, 81,
- 117, 117, 111,
- 118, 122, 81
+ 102, 122, 82
};
static const int lexer_goto_row44[] = {
- 8,
- 48, 95, -30,
- 97, 103, 81,
- 104, 104, 112,
- 105, 113, 81,
- 114, 114, 113,
- 115, 120, 81,
- 121, 121, 114,
- 122, 122, 81
+ 5,
+ 48, 100, -41,
+ 101, 101, 111,
+ 102, 116, 82,
+ 117, 117, 112,
+ 118, 122, 82
};
static const int lexer_goto_row45[] = {
- 3,
- 48, 109, -41,
- 110, 110, 115,
- 111, 122, 81
+ 8,
+ 48, 95, -31,
+ 97, 103, 82,
+ 104, 104, 113,
+ 105, 113, 82,
+ 114, 114, 114,
+ 115, 120, 82,
+ 121, 121, 115,
+ 122, 122, 82
};
static const int lexer_goto_row46[] = {
3,
- 48, 95, -30,
- 97, 97, 116,
- 98, 122, 81
+ 48, 109, -42,
+ 110, 110, 116,
+ 111, 122, 82
};
static const int lexer_goto_row47[] = {
- 5,
- 48, 103, -45,
- 104, 104, 117,
- 105, 113, 81,
- 114, 114, 118,
- 115, 122, 81
+ 3,
+ 48, 95, -31,
+ 97, 97, 117,
+ 98, 122, 82
};
static const int lexer_goto_row48[] = {
- 9,
- 0, 9, 119,
- 11, 12, 119,
- 14, 33, 119,
- 34, 34, 120,
- 35, 91, 119,
- 92, 92, 121,
- 93, 122, 119,
- 123, 123, 122,
- 124, 255, 119
+ 5,
+ 48, 103, -46,
+ 104, 104, 118,
+ 105, 113, 82,
+ 114, 114, 119,
+ 115, 122, 82
};
-static const int lexer_goto_row51[] = {
- 1,
- 0, 255, -8
+static const int lexer_goto_row49[] = {
+ 11,
+ 0, 9, 120,
+ 11, 12, 120,
+ 14, 33, 120,
+ 34, 34, 121,
+ 35, 91, 120,
+ 92, 92, 122,
+ 93, 122, 120,
+ 123, 123, 123,
+ 124, 124, 120,
+ 125, 125, 124,
+ 126, 255, 120
+};
+static const int lexer_goto_row52[] = {
+ 3,
+ 0, 33, -8,
+ 34, 34, 125,
+ 35, 255, -8
};
static const int lexer_goto_row53[] = {
+ 1,
+ 34, 34, 126
+};
+static const int lexer_goto_row54[] = {
3,
- 0, 9, 123,
- 11, 12, 123,
- 14, 255, 123
+ 0, 9, 127,
+ 11, 12, 127,
+ 14, 255, 127
};
-static const int lexer_goto_row55[] = {
+static const int lexer_goto_row56[] = {
1,
0, 255, -9
};
-static const int lexer_goto_row57[] = {
+static const int lexer_goto_row58[] = {
1,
- 10, 10, 124
+ 10, 10, 128
};
-static const int lexer_goto_row58[] = {
+static const int lexer_goto_row59[] = {
1,
- 39, 39, 125
+ 39, 39, 129
};
static const int lexer_goto_row60[] = {
- 3,
- 0, 9, 126,
- 11, 12, 126,
- 14, 255, 126
-};
-static const int lexer_goto_row63[] = {
1,
- 46, 46, 127
+ 39, 39, 130
+};
+static const int lexer_goto_row61[] = {
+ 3,
+ 0, 9, 131,
+ 11, 12, 131,
+ 14, 255, 131
};
static const int lexer_goto_row64[] = {
1,
- 48, 57, 63
+ 46, 46, 132
};
static const int lexer_goto_row65[] = {
1,
- 48, 57, 63
+ 48, 57, 64
};
-static const int lexer_goto_row68[] = {
+static const int lexer_goto_row66[] = {
1,
- 62, 62, 128
+ 48, 57, 64
};
-static const int lexer_goto_row72[] = {
+static const int lexer_goto_row69[] = {
1,
- 48, 122, -25
+ 62, 62, 133
};
static const int lexer_goto_row73[] = {
1,
- 48, 122, -25
+ 48, 122, -26
};
static const int lexer_goto_row74[] = {
1,
- 48, 122, -25
+ 48, 122, -26
};
static const int lexer_goto_row75[] = {
1,
- 48, 122, -25
+ 48, 122, -26
};
static const int lexer_goto_row76[] = {
1,
- 100, 100, 129
+ 48, 122, -26
};
static const int lexer_goto_row77[] = {
- 4,
- 48, 57, 130,
- 65, 90, 131,
- 95, 95, 132,
- 97, 122, 133
+ 1,
+ 100, 100, 134
};
static const int lexer_goto_row78[] = {
- 5,
- 0, 91, 134,
- 92, 92, 135,
- 93, 95, 134,
- 96, 96, 136,
- 97, 255, 134
+ 4,
+ 48, 57, 135,
+ 65, 90, 136,
+ 95, 95, 137,
+ 97, 122, 138
};
static const int lexer_goto_row79[] = {
- 1,
- 48, 122, -36
+ 5,
+ 0, 91, 139,
+ 92, 92, 140,
+ 93, 95, 139,
+ 96, 96, 141,
+ 97, 255, 139
};
static const int lexer_goto_row80[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row81[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row82[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row83[] = {
- 5,
- 48, 110, -33,
- 111, 111, 137,
- 112, 114, 81,
- 115, 115, 138,
- 116, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row84[] = {
- 4,
- 48, 95, -30,
- 97, 99, 81,
- 100, 100, 139,
- 101, 122, 81
+ 5,
+ 48, 110, -34,
+ 111, 111, 142,
+ 112, 114, 82,
+ 115, 115, 143,
+ 116, 122, 82
};
static const int lexer_goto_row85[] = {
4,
- 48, 95, -30,
- 97, 114, 81,
- 115, 115, 140,
- 116, 122, 81
+ 48, 95, -31,
+ 97, 99, 82,
+ 100, 100, 144,
+ 101, 122, 82
};
static const int lexer_goto_row86[] = {
- 3,
- 48, 100, -40,
- 101, 101, 141,
- 102, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 114, 82,
+ 115, 115, 145,
+ 116, 122, 82
};
static const int lexer_goto_row87[] = {
3,
- 48, 95, -30,
- 97, 97, 142,
- 98, 122, 81
+ 48, 100, -41,
+ 101, 101, 146,
+ 102, 122, 82
};
static const int lexer_goto_row88[] = {
3,
- 48, 109, -41,
- 110, 110, 143,
- 111, 122, 81
+ 48, 95, -31,
+ 97, 97, 147,
+ 98, 122, 82
};
static const int lexer_goto_row89[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 109, -42,
+ 110, 110, 148,
+ 111, 122, 82
};
static const int lexer_goto_row90[] = {
- 3,
- 48, 114, -86,
- 115, 115, 144,
- 116, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row91[] = {
- 5,
- 48, 99, -85,
- 100, 100, 145,
- 101, 116, 81,
- 117, 117, 146,
- 118, 122, 81
+ 3,
+ 48, 114, -87,
+ 115, 115, 149,
+ 116, 122, 82
};
static const int lexer_goto_row92[] = {
- 4,
- 48, 95, -30,
- 97, 115, 81,
- 116, 116, 147,
- 117, 122, 81
+ 5,
+ 48, 99, -86,
+ 100, 100, 150,
+ 101, 116, 82,
+ 117, 117, 151,
+ 118, 122, 82
};
static const int lexer_goto_row93[] = {
- 3,
- 48, 107, -32,
- 108, 108, 148,
- 109, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 115, 82,
+ 116, 116, 152,
+ 117, 122, 82
};
static const int lexer_goto_row94[] = {
3,
- 48, 113, -31,
- 114, 114, 149,
- 115, 122, 81
+ 48, 107, -33,
+ 108, 108, 153,
+ 109, 122, 82
};
static const int lexer_goto_row95[] = {
3,
- 48, 109, -41,
- 110, 110, 150,
- 111, 122, 81
+ 48, 113, -32,
+ 114, 114, 154,
+ 115, 122, 82
};
static const int lexer_goto_row96[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 109, -42,
+ 110, 110, 155,
+ 111, 122, 82
};
static const int lexer_goto_row97[] = {
- 4,
- 48, 95, -30,
- 97, 111, 81,
- 112, 112, 151,
- 113, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row98[] = {
- 6,
- 48, 95, -30,
- 97, 104, 81,
- 105, 105, 152,
- 106, 115, 81,
- 116, 116, 153,
- 117, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 111, 82,
+ 112, 112, 156,
+ 113, 122, 82
};
static const int lexer_goto_row99[] = {
- 5,
- 48, 95, -30,
- 97, 97, 154,
- 98, 114, 81,
- 115, 115, 155,
- 116, 122, 81
+ 6,
+ 48, 95, -31,
+ 97, 104, 82,
+ 105, 105, 157,
+ 106, 115, 82,
+ 116, 116, 158,
+ 117, 122, 82
};
static const int lexer_goto_row100[] = {
- 3,
- 48, 97, -30,
- 98, 98, 156,
- 99, 122, 81
+ 5,
+ 48, 95, -31,
+ 97, 97, 159,
+ 98, 114, 82,
+ 115, 115, 160,
+ 116, 122, 82
};
static const int lexer_goto_row101[] = {
3,
- 48, 110, -33,
- 111, 111, 157,
- 112, 122, 81
+ 48, 97, -31,
+ 98, 98, 161,
+ 99, 122, 82
};
static const int lexer_goto_row102[] = {
3,
- 48, 99, -85,
- 100, 100, 158,
- 101, 122, 81
+ 48, 110, -34,
+ 111, 111, 162,
+ 112, 122, 82
};
static const int lexer_goto_row103[] = {
- 4,
- 48, 95, -30,
- 97, 118, 81,
- 119, 119, 159,
- 120, 122, 81
+ 3,
+ 48, 99, -86,
+ 100, 100, 163,
+ 101, 122, 82
};
static const int lexer_goto_row104[] = {
- 3,
- 48, 115, -93,
- 116, 116, 160,
- 117, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 118, 82,
+ 119, 119, 164,
+ 120, 122, 82
};
static const int lexer_goto_row105[] = {
3,
- 48, 107, -32,
- 108, 108, 161,
- 109, 122, 81
+ 48, 115, -94,
+ 116, 116, 165,
+ 117, 122, 82
};
static const int lexer_goto_row106[] = {
- 4,
- 48, 95, -30,
- 97, 98, 81,
- 99, 99, 162,
- 100, 122, 81
+ 3,
+ 48, 107, -33,
+ 108, 108, 166,
+ 109, 122, 82
};
static const int lexer_goto_row107[] = {
- 1,
- 48, 122, -36
+ 4,
+ 48, 95, -31,
+ 97, 98, 82,
+ 99, 99, 167,
+ 100, 122, 82
};
static const int lexer_goto_row108[] = {
- 3,
- 48, 98, -107,
- 99, 99, 163,
- 100, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row109[] = {
- 5,
- 48, 104, -99,
- 105, 105, 164,
- 106, 110, 81,
- 111, 111, 165,
- 112, 122, 81
+ 3,
+ 48, 98, -108,
+ 99, 99, 168,
+ 100, 122, 82
};
static const int lexer_goto_row110[] = {
- 7,
- 48, 95, -30,
- 97, 97, 166,
- 98, 99, 81,
- 100, 100, 167,
- 101, 115, 81,
- 116, 116, 168,
- 117, 122, 81
+ 5,
+ 48, 104, -100,
+ 105, 105, 169,
+ 106, 110, 82,
+ 111, 111, 170,
+ 112, 122, 82
};
static const int lexer_goto_row111[] = {
- 3,
- 48, 107, -32,
- 108, 108, 169,
- 109, 122, 81
+ 7,
+ 48, 95, -31,
+ 97, 97, 171,
+ 98, 99, 82,
+ 100, 100, 172,
+ 101, 115, 82,
+ 116, 116, 173,
+ 117, 122, 82
};
static const int lexer_goto_row112[] = {
3,
- 48, 111, -98,
- 112, 112, 170,
- 113, 122, 81
+ 48, 107, -33,
+ 108, 108, 174,
+ 109, 122, 82
};
static const int lexer_goto_row113[] = {
3,
- 48, 100, -40,
- 101, 101, 171,
- 102, 122, 81
+ 48, 111, -99,
+ 112, 112, 175,
+ 113, 122, 82
};
static const int lexer_goto_row114[] = {
- 4,
- 48, 95, -30,
- 97, 116, 81,
- 117, 117, 172,
- 118, 122, 81
+ 3,
+ 48, 100, -41,
+ 101, 101, 176,
+ 102, 122, 82
};
static const int lexer_goto_row115[] = {
- 3,
- 48, 111, -98,
- 112, 112, 173,
- 113, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 116, 82,
+ 117, 117, 177,
+ 118, 122, 82
};
static const int lexer_goto_row116[] = {
3,
- 48, 104, -99,
- 105, 105, 174,
- 106, 122, 81
+ 48, 111, -99,
+ 112, 112, 178,
+ 113, 122, 82
};
static const int lexer_goto_row117[] = {
3,
- 48, 113, -31,
- 114, 114, 175,
- 115, 122, 81
+ 48, 104, -100,
+ 105, 105, 179,
+ 106, 122, 82
};
static const int lexer_goto_row118[] = {
3,
- 48, 104, -99,
- 105, 105, 176,
- 106, 122, 81
+ 48, 113, -32,
+ 114, 114, 180,
+ 115, 122, 82
};
static const int lexer_goto_row119[] = {
3,
- 48, 104, -99,
- 105, 105, 177,
- 106, 122, 81
+ 48, 104, -100,
+ 105, 105, 181,
+ 106, 122, 82
};
static const int lexer_goto_row120[] = {
- 1,
- 0, 255, -49
+ 3,
+ 48, 104, -100,
+ 105, 105, 182,
+ 106, 122, 82
+};
+static const int lexer_goto_row121[] = {
+ 2,
+ 0, 123, -50,
+ 124, 255, 120
};
-static const int lexer_goto_row122[] = {
+static const int lexer_goto_row123[] = {
3,
- 0, 9, 178,
- 11, 12, 178,
- 14, 255, 178
+ 0, 9, 183,
+ 11, 12, 183,
+ 14, 255, 183
};
-static const int lexer_goto_row124[] = {
- 1,
- 0, 255, -8
+static const int lexer_goto_row125[] = {
+ 3,
+ 0, 124, -50,
+ 125, 125, 184,
+ 126, 255, 120
};
static const int lexer_goto_row127[] = {
- 1,
- 39, 39, 179
-};
-static const int lexer_goto_row130[] = {
- 1,
- 101, 101, 180
+ 11,
+ 0, 9, 185,
+ 10, 10, 186,
+ 11, 12, 185,
+ 13, 13, 187,
+ 14, 33, 185,
+ 34, 34, 188,
+ 35, 91, 185,
+ 92, 92, 189,
+ 93, 122, 185,
+ 123, 123, 190,
+ 124, 255, 185
+};
+static const int lexer_goto_row128[] = {
+ 1,
+ 0, 255, -53
};
static const int lexer_goto_row131[] = {
- 1,
- 48, 122, -78
+ 9,
+ 0, 9, 191,
+ 10, 10, 192,
+ 11, 12, 191,
+ 13, 13, 193,
+ 14, 38, 191,
+ 39, 39, 194,
+ 40, 91, 191,
+ 92, 92, 195,
+ 93, 255, 191
};
static const int lexer_goto_row132[] = {
1,
- 48, 122, -78
-};
-static const int lexer_goto_row133[] = {
- 1,
- 48, 122, -78
-};
-static const int lexer_goto_row134[] = {
- 1,
- 48, 122, -78
+ 39, 39, 196
};
static const int lexer_goto_row135[] = {
1,
- 0, 255, -79
+ 101, 101, 197
};
static const int lexer_goto_row136[] = {
1,
- 0, 255, 181
+ 48, 122, -79
};
static const int lexer_goto_row137[] = {
1,
- 125, 125, 182
+ 48, 122, -79
};
static const int lexer_goto_row138[] = {
- 3,
- 48, 113, -31,
- 114, 114, 183,
- 115, 122, 81
+ 1,
+ 48, 122, -79
};
static const int lexer_goto_row139[] = {
- 3,
- 48, 115, -93,
- 116, 116, 184,
- 117, 122, 81
+ 1,
+ 48, 122, -79
};
static const int lexer_goto_row140[] = {
1,
- 48, 122, -36
+ 0, 255, -80
};
static const int lexer_goto_row141[] = {
- 3,
- 48, 100, -40,
- 101, 101, 185,
- 102, 122, 81
+ 1,
+ 0, 255, 198
};
static const int lexer_goto_row142[] = {
- 3,
- 48, 95, -30,
- 97, 97, 186,
- 98, 122, 81
+ 1,
+ 125, 125, 199
};
static const int lexer_goto_row143[] = {
3,
- 48, 114, -86,
- 115, 115, 187,
- 116, 122, 81
+ 48, 113, -32,
+ 114, 114, 200,
+ 115, 122, 82
};
static const int lexer_goto_row144[] = {
3,
- 48, 115, -93,
- 116, 116, 188,
- 117, 122, 81
+ 48, 115, -94,
+ 116, 116, 201,
+ 117, 122, 82
};
static const int lexer_goto_row145[] = {
- 3,
- 48, 100, -40,
- 101, 101, 189,
- 102, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row146[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 100, -41,
+ 101, 101, 202,
+ 102, 122, 82
};
static const int lexer_goto_row147[] = {
- 4,
- 48, 95, -30,
- 97, 108, 81,
- 109, 109, 190,
- 110, 122, 81
+ 3,
+ 48, 95, -31,
+ 97, 97, 203,
+ 98, 122, 82
};
static const int lexer_goto_row148[] = {
3,
- 48, 100, -40,
- 101, 101, 191,
- 102, 122, 81
+ 48, 114, -87,
+ 115, 115, 204,
+ 116, 122, 82
};
static const int lexer_goto_row149[] = {
3,
- 48, 114, -86,
- 115, 115, 192,
- 116, 122, 81
+ 48, 115, -94,
+ 116, 116, 205,
+ 117, 122, 82
};
static const int lexer_goto_row150[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 100, -41,
+ 101, 101, 206,
+ 102, 122, 82
};
static const int lexer_goto_row151[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row152[] = {
- 3,
- 48, 110, -33,
- 111, 111, 193,
- 112, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 108, 82,
+ 109, 109, 207,
+ 110, 122, 82
};
static const int lexer_goto_row153[] = {
3,
- 48, 115, -93,
- 116, 116, 194,
- 117, 122, 81
+ 48, 100, -41,
+ 101, 101, 208,
+ 102, 122, 82
};
static const int lexer_goto_row154[] = {
- 5,
- 48, 100, -40,
- 101, 101, 195,
- 102, 113, 81,
- 114, 114, 196,
- 115, 122, 81
+ 3,
+ 48, 114, -87,
+ 115, 115, 209,
+ 116, 122, 82
};
static const int lexer_goto_row155[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row156[] = {
- 3,
- 48, 100, -40,
- 101, 101, 197,
- 102, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row157[] = {
3,
- 48, 100, -40,
- 101, 101, 198,
- 102, 122, 81
+ 48, 110, -34,
+ 111, 111, 210,
+ 112, 122, 82
};
static const int lexer_goto_row158[] = {
3,
- 48, 111, -98,
- 112, 112, 199,
- 113, 122, 81
+ 48, 115, -94,
+ 116, 116, 211,
+ 117, 122, 82
};
static const int lexer_goto_row159[] = {
- 3,
- 48, 116, -115,
- 117, 117, 200,
- 118, 122, 81
+ 5,
+ 48, 100, -41,
+ 101, 101, 212,
+ 102, 113, 82,
+ 114, 114, 213,
+ 115, 122, 82
};
static const int lexer_goto_row160[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row161[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 100, -41,
+ 101, 101, 214,
+ 102, 122, 82
};
static const int lexer_goto_row162[] = {
3,
- 48, 107, -32,
- 108, 108, 201,
- 109, 122, 81
+ 48, 100, -41,
+ 101, 101, 215,
+ 102, 122, 82
};
static const int lexer_goto_row163[] = {
3,
- 48, 100, -40,
- 101, 101, 202,
- 102, 122, 81
+ 48, 111, -99,
+ 112, 112, 216,
+ 113, 122, 82
};
static const int lexer_goto_row164[] = {
- 4,
- 48, 95, -30,
- 97, 106, 81,
- 107, 107, 203,
- 108, 122, 81
+ 3,
+ 48, 116, -116,
+ 117, 117, 217,
+ 118, 122, 82
};
static const int lexer_goto_row165[] = {
- 4,
- 48, 95, -30,
- 97, 117, 81,
- 118, 118, 204,
- 119, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row166[] = {
- 3,
- 48, 115, -93,
- 116, 116, 205,
- 117, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row167[] = {
3,
- 48, 99, -85,
- 100, 100, 206,
- 101, 122, 81
+ 48, 107, -33,
+ 108, 108, 218,
+ 109, 122, 82
};
static const int lexer_goto_row168[] = {
3,
- 48, 100, -40,
- 101, 101, 207,
- 102, 122, 81
+ 48, 100, -41,
+ 101, 101, 219,
+ 102, 122, 82
};
static const int lexer_goto_row169[] = {
- 3,
- 48, 116, -115,
- 117, 117, 208,
- 118, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 106, 82,
+ 107, 107, 220,
+ 108, 122, 82
};
static const int lexer_goto_row170[] = {
- 3,
- 48, 101, -37,
- 102, 102, 209,
- 103, 122, 81
+ 4,
+ 48, 95, -31,
+ 97, 117, 82,
+ 118, 118, 221,
+ 119, 122, 82
};
static const int lexer_goto_row171[] = {
3,
- 48, 100, -40,
- 101, 101, 210,
- 102, 122, 81
+ 48, 115, -94,
+ 116, 116, 222,
+ 117, 122, 82
};
static const int lexer_goto_row172[] = {
3,
- 48, 109, -41,
- 110, 110, 211,
- 111, 122, 81
+ 48, 99, -86,
+ 100, 100, 223,
+ 101, 122, 82
};
static const int lexer_goto_row173[] = {
3,
- 48, 100, -40,
- 101, 101, 212,
- 102, 122, 81
+ 48, 100, -41,
+ 101, 101, 224,
+ 102, 122, 82
};
static const int lexer_goto_row174[] = {
3,
- 48, 100, -40,
- 101, 101, 213,
- 102, 122, 81
+ 48, 116, -116,
+ 117, 117, 225,
+ 118, 122, 82
};
static const int lexer_goto_row175[] = {
3,
- 48, 117, -166,
- 118, 118, 214,
- 119, 122, 81
+ 48, 101, -38,
+ 102, 102, 226,
+ 103, 122, 82
};
static const int lexer_goto_row176[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 100, -41,
+ 101, 101, 227,
+ 102, 122, 82
};
static const int lexer_goto_row177[] = {
3,
- 48, 107, -32,
- 108, 108, 215,
- 109, 122, 81
+ 48, 109, -42,
+ 110, 110, 228,
+ 111, 122, 82
};
static const int lexer_goto_row178[] = {
3,
- 48, 115, -93,
- 116, 116, 216,
- 117, 122, 81
+ 48, 100, -41,
+ 101, 101, 229,
+ 102, 122, 82
};
static const int lexer_goto_row179[] = {
- 1,
- 0, 255, -49
+ 3,
+ 48, 100, -41,
+ 101, 101, 230,
+ 102, 122, 82
+};
+static const int lexer_goto_row180[] = {
+ 3,
+ 48, 117, -171,
+ 118, 118, 231,
+ 119, 122, 82
};
static const int lexer_goto_row181[] = {
1,
- 98, 98, 217
+ 48, 122, -37
};
static const int lexer_goto_row182[] = {
- 1,
- 0, 255, -79
+ 3,
+ 48, 107, -33,
+ 108, 108, 232,
+ 109, 122, 82
};
-static const int lexer_goto_row184[] = {
+static const int lexer_goto_row183[] = {
3,
- 48, 115, -93,
- 116, 116, 218,
- 117, 122, 81
+ 48, 115, -94,
+ 116, 116, 233,
+ 117, 122, 82
+};
+static const int lexer_goto_row184[] = {
+ 1,
+ 0, 255, -122
};
static const int lexer_goto_row185[] = {
- 3,
- 48, 113, -31,
- 114, 114, 219,
- 115, 122, 81
+ 11,
+ 0, 9, 234,
+ 10, 10, 235,
+ 11, 12, 234,
+ 13, 13, 236,
+ 14, 33, 234,
+ 34, 34, 237,
+ 35, 91, 234,
+ 92, 92, 238,
+ 93, 122, 234,
+ 123, 123, 239,
+ 124, 255, 234
};
static const int lexer_goto_row186[] = {
- 3,
- 48, 113, -31,
- 114, 114, 220,
- 115, 122, 81
+ 1,
+ 0, 255, -128
};
static const int lexer_goto_row187[] = {
- 3,
- 48, 106, -165,
- 107, 107, 221,
- 108, 122, 81
+ 1,
+ 0, 255, -128
};
static const int lexer_goto_row188[] = {
- 3,
- 48, 114, -86,
- 115, 115, 222,
- 116, 122, 81
+ 1,
+ 0, 255, -128
};
static const int lexer_goto_row189[] = {
- 3,
- 48, 104, -99,
- 105, 105, 223,
- 106, 122, 81
+ 10,
+ 0, 9, 240,
+ 10, 10, 241,
+ 11, 12, 240,
+ 13, 13, 242,
+ 14, 33, 240,
+ 34, 34, 243,
+ 35, 91, 240,
+ 92, 92, 244,
+ 93, 122, 240,
+ 124, 255, 240
};
static const int lexer_goto_row190[] = {
- 1,
- 48, 122, -36
+ 3,
+ 0, 9, 245,
+ 11, 12, 245,
+ 14, 255, 245
};
static const int lexer_goto_row191[] = {
- 1,
- 48, 122, -36
+ 10,
+ 0, 9, 246,
+ 10, 10, 247,
+ 11, 12, 246,
+ 13, 13, 248,
+ 14, 33, 246,
+ 35, 91, 246,
+ 92, 92, 249,
+ 93, 122, 246,
+ 123, 123, 250,
+ 124, 255, 246
};
static const int lexer_goto_row192[] = {
- 3,
- 48, 113, -31,
- 114, 114, 224,
- 115, 122, 81
+ 1,
+ 0, 255, -132
};
static const int lexer_goto_row193[] = {
- 3,
- 48, 100, -40,
- 101, 101, 225,
- 102, 122, 81
+ 1,
+ 0, 255, -132
};
static const int lexer_goto_row194[] = {
- 3,
- 48, 113, -31,
- 114, 114, 226,
- 115, 122, 81
+ 1,
+ 0, 255, -132
};
static const int lexer_goto_row195[] = {
- 1,
- 48, 122, -36
+ 9,
+ 0, 9, 251,
+ 10, 10, 252,
+ 11, 12, 251,
+ 13, 13, 253,
+ 14, 38, 251,
+ 39, 39, 254,
+ 40, 91, 251,
+ 92, 92, 255,
+ 93, 255, 251
};
static const int lexer_goto_row196[] = {
3,
- 48, 113, -31,
- 114, 114, 227,
- 115, 122, 81
-};
-static const int lexer_goto_row197[] = {
- 3,
- 48, 116, -115,
- 117, 117, 228,
- 118, 122, 81
+ 0, 9, 256,
+ 11, 12, 256,
+ 14, 255, 256
};
static const int lexer_goto_row198[] = {
- 3,
- 48, 115, -93,
- 116, 116, 229,
- 117, 122, 81
+ 1,
+ 98, 98, 257
};
static const int lexer_goto_row199[] = {
- 3,
- 48, 107, -32,
- 108, 108, 230,
- 109, 122, 81
-};
-static const int lexer_goto_row200[] = {
1,
- 48, 122, -36
+ 0, 255, -80
};
static const int lexer_goto_row201[] = {
3,
- 48, 107, -32,
- 108, 108, 231,
- 109, 122, 81
+ 48, 115, -94,
+ 116, 116, 258,
+ 117, 122, 82
};
static const int lexer_goto_row202[] = {
3,
- 48, 95, -30,
- 97, 97, 232,
- 98, 122, 81
+ 48, 113, -32,
+ 114, 114, 259,
+ 115, 122, 82
};
static const int lexer_goto_row203[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 113, -32,
+ 114, 114, 260,
+ 115, 122, 82
};
static const int lexer_goto_row204[] = {
3,
- 48, 95, -30,
- 97, 97, 233,
- 98, 122, 81
+ 48, 106, -170,
+ 107, 107, 261,
+ 108, 122, 82
};
static const int lexer_goto_row205[] = {
3,
- 48, 95, -30,
- 97, 97, 234,
- 98, 122, 81
+ 48, 114, -87,
+ 115, 115, 262,
+ 116, 122, 82
};
static const int lexer_goto_row206[] = {
3,
- 48, 100, -40,
- 101, 101, 235,
- 102, 122, 81
+ 48, 104, -100,
+ 105, 105, 263,
+ 106, 122, 82
};
static const int lexer_goto_row207[] = {
- 3,
- 48, 95, -30,
- 97, 97, 236,
- 98, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row208[] = {
- 3,
- 48, 101, -37,
- 102, 102, 237,
- 103, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row209[] = {
3,
- 48, 113, -31,
- 114, 114, 238,
- 115, 122, 81
+ 48, 113, -32,
+ 114, 114, 264,
+ 115, 122, 82
};
static const int lexer_goto_row210[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 100, -41,
+ 101, 101, 265,
+ 102, 122, 82
};
static const int lexer_goto_row211[] = {
3,
- 48, 113, -31,
- 114, 114, 239,
- 115, 122, 81
+ 48, 113, -32,
+ 114, 114, 266,
+ 115, 122, 82
};
static const int lexer_goto_row212[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row213[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 113, -32,
+ 114, 114, 267,
+ 115, 122, 82
};
static const int lexer_goto_row214[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 116, -116,
+ 117, 117, 268,
+ 118, 122, 82
};
static const int lexer_goto_row215[] = {
3,
- 48, 100, -40,
- 101, 101, 240,
- 102, 122, 81
+ 48, 115, -94,
+ 116, 116, 269,
+ 117, 122, 82
};
static const int lexer_goto_row216[] = {
3,
- 48, 100, -40,
- 101, 101, 241,
- 102, 122, 81
+ 48, 107, -33,
+ 108, 108, 270,
+ 109, 122, 82
};
static const int lexer_goto_row217[] = {
- 3,
- 48, 95, -30,
- 97, 97, 242,
- 98, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row218[] = {
- 1,
- 117, 117, 243
+ 3,
+ 48, 107, -33,
+ 108, 108, 271,
+ 109, 122, 82
};
static const int lexer_goto_row219[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 95, -31,
+ 97, 97, 272,
+ 98, 122, 82
};
static const int lexer_goto_row220[] = {
- 3,
- 48, 95, -30,
- 97, 97, 244,
- 98, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row221[] = {
3,
- 48, 115, -93,
- 116, 116, 245,
- 117, 122, 81
+ 48, 95, -31,
+ 97, 97, 273,
+ 98, 122, 82
};
static const int lexer_goto_row222[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 95, -31,
+ 97, 97, 274,
+ 98, 122, 82
};
static const int lexer_goto_row223[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 100, -41,
+ 101, 101, 275,
+ 102, 122, 82
};
static const int lexer_goto_row224[] = {
3,
- 48, 109, -41,
- 110, 110, 246,
- 111, 122, 81
+ 48, 95, -31,
+ 97, 97, 276,
+ 98, 122, 82
};
static const int lexer_goto_row225[] = {
3,
- 48, 109, -41,
- 110, 110, 247,
- 111, 122, 81
+ 48, 101, -38,
+ 102, 102, 277,
+ 103, 122, 82
};
static const int lexer_goto_row226[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 113, -32,
+ 114, 114, 278,
+ 115, 122, 82
};
static const int lexer_goto_row227[] = {
- 3,
- 48, 115, -93,
- 116, 116, 248,
- 117, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row228[] = {
- 5,
- 48, 101, -37,
- 102, 102, 249,
- 103, 109, 81,
- 110, 110, 250,
- 111, 122, 81
+ 3,
+ 48, 113, -32,
+ 114, 114, 279,
+ 115, 122, 82
};
static const int lexer_goto_row229[] = {
- 3,
- 48, 99, -85,
- 100, 100, 251,
- 101, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row230[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row231[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row232[] = {
3,
- 48, 100, -40,
- 101, 101, 252,
- 102, 122, 81
+ 48, 100, -41,
+ 101, 101, 280,
+ 102, 122, 82
};
static const int lexer_goto_row233[] = {
3,
- 48, 97, -30,
- 98, 98, 253,
- 99, 122, 81
+ 48, 100, -41,
+ 101, 101, 281,
+ 102, 122, 82
};
static const int lexer_goto_row234[] = {
- 4,
- 48, 95, -30,
- 97, 102, 81,
- 103, 103, 254,
- 104, 122, 81
+ 3,
+ 48, 95, -31,
+ 97, 97, 282,
+ 98, 122, 82
};
static const int lexer_goto_row235[] = {
- 3,
- 48, 115, -93,
- 116, 116, 255,
- 117, 122, 81
+ 1,
+ 0, 255, -186
};
static const int lexer_goto_row236[] = {
- 3,
- 48, 98, -107,
- 99, 99, 256,
- 100, 122, 81
+ 11,
+ 0, 9, 283,
+ 10, 10, 235,
+ 11, 12, 283,
+ 13, 13, 236,
+ 14, 33, 283,
+ 34, 34, 284,
+ 35, 91, 283,
+ 92, 92, 285,
+ 93, 122, 283,
+ 123, 123, 286,
+ 124, 255, 283
};
static const int lexer_goto_row237[] = {
- 3,
- 48, 97, -30,
- 98, 98, 257,
- 99, 122, 81
+ 1,
+ 0, 255, -237
};
static const int lexer_goto_row238[] = {
- 1,
- 48, 122, -36
+ 10,
+ 0, 9, 287,
+ 10, 10, 288,
+ 11, 12, 287,
+ 13, 13, 289,
+ 14, 33, 287,
+ 34, 34, 290,
+ 35, 91, 287,
+ 92, 92, 291,
+ 93, 122, 287,
+ 124, 255, 287
};
static const int lexer_goto_row239[] = {
3,
- 48, 109, -41,
- 110, 110, 258,
- 111, 122, 81
+ 0, 9, 292,
+ 11, 12, 292,
+ 14, 255, 292
};
static const int lexer_goto_row240[] = {
- 1,
- 48, 122, -36
+ 10,
+ 0, 9, 293,
+ 10, 10, 294,
+ 11, 12, 293,
+ 13, 13, 295,
+ 14, 33, 293,
+ 35, 91, 293,
+ 92, 92, 296,
+ 93, 122, 293,
+ 123, 123, 297,
+ 124, 255, 293
};
static const int lexer_goto_row241[] = {
- 3,
- 48, 113, -31,
- 114, 114, 259,
- 115, 122, 81
+ 1,
+ 0, 255, -128
};
static const int lexer_goto_row242[] = {
1,
- 48, 122, -36
+ 0, 255, -128
};
static const int lexer_goto_row243[] = {
- 3,
- 48, 97, -30,
- 98, 98, 260,
- 99, 122, 81
+ 1,
+ 0, 255, -128
};
static const int lexer_goto_row244[] = {
- 1,
- 103, 103, 261
+ 10,
+ 0, 9, 298,
+ 10, 10, 299,
+ 11, 12, 298,
+ 13, 13, 300,
+ 14, 33, 298,
+ 34, 34, 301,
+ 35, 91, 298,
+ 92, 92, 302,
+ 93, 122, 298,
+ 124, 255, 298
};
static const int lexer_goto_row245[] = {
3,
- 48, 98, -107,
- 99, 99, 262,
- 100, 122, 81
+ 0, 9, 303,
+ 11, 12, 303,
+ 14, 255, 303
};
static const int lexer_goto_row246[] = {
1,
- 48, 122, -36
+ 0, 255, -128
};
static const int lexer_goto_row247[] = {
- 3,
- 48, 116, -115,
- 117, 117, 263,
- 118, 122, 81
+ 1,
+ 0, 255, -128
};
static const int lexer_goto_row248[] = {
1,
- 48, 122, -36
+ 0, 255, -128
};
static const int lexer_goto_row249[] = {
1,
- 48, 122, -36
+ 0, 255, -128
};
static const int lexer_goto_row250[] = {
3,
- 48, 95, -30,
- 97, 97, 264,
- 98, 122, 81
+ 0, 9, 304,
+ 11, 12, 304,
+ 14, 255, 304
};
static const int lexer_goto_row251[] = {
- 1,
- 48, 122, -36
+ 10,
+ 0, 9, 305,
+ 10, 10, 306,
+ 11, 12, 305,
+ 13, 13, 307,
+ 14, 33, 305,
+ 35, 91, 305,
+ 92, 92, 308,
+ 93, 122, 305,
+ 123, 123, 309,
+ 124, 255, 305
};
static const int lexer_goto_row252[] = {
- 3,
- 48, 100, -40,
- 101, 101, 265,
- 102, 122, 81
+ 1,
+ 0, 255, -132
};
static const int lexer_goto_row253[] = {
1,
- 48, 122, -36
+ 0, 255, -132
};
static const int lexer_goto_row254[] = {
- 3,
- 48, 107, -32,
- 108, 108, 266,
- 109, 122, 81
+ 1,
+ 0, 255, -132
};
static const int lexer_goto_row255[] = {
- 3,
- 48, 100, -40,
- 101, 101, 267,
- 102, 122, 81
+ 9,
+ 0, 9, 310,
+ 10, 10, 311,
+ 11, 12, 310,
+ 13, 13, 312,
+ 14, 38, 310,
+ 39, 39, 313,
+ 40, 91, 310,
+ 92, 92, 314,
+ 93, 255, 310
};
static const int lexer_goto_row256[] = {
3,
- 48, 100, -40,
- 101, 101, 268,
- 102, 122, 81
+ 0, 9, 315,
+ 11, 12, 315,
+ 14, 255, 315
};
static const int lexer_goto_row257[] = {
- 3,
- 48, 115, -93,
- 116, 116, 269,
- 117, 122, 81
+ 1,
+ 0, 255, -132
};
static const int lexer_goto_row258[] = {
- 3,
- 48, 107, -32,
- 108, 108, 270,
- 109, 122, 81
+ 1,
+ 117, 117, 316
};
static const int lexer_goto_row259[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row260[] = {
3,
- 48, 114, -86,
- 115, 115, 271,
- 116, 122, 81
+ 48, 95, -31,
+ 97, 97, 317,
+ 98, 122, 82
};
static const int lexer_goto_row261[] = {
3,
- 48, 107, -32,
- 108, 108, 272,
- 109, 122, 81
+ 48, 115, -94,
+ 116, 116, 318,
+ 117, 122, 82
};
static const int lexer_goto_row262[] = {
1,
- 95, 95, 273
+ 48, 122, -37
};
static const int lexer_goto_row263[] = {
- 3,
- 48, 115, -93,
- 116, 116, 274,
- 117, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row264[] = {
3,
- 48, 100, -40,
- 101, 101, 275,
- 102, 122, 81
+ 48, 109, -42,
+ 110, 110, 319,
+ 111, 122, 82
};
static const int lexer_goto_row265[] = {
3,
- 48, 98, -107,
- 99, 99, 276,
- 100, 122, 81
+ 48, 109, -42,
+ 110, 110, 320,
+ 111, 122, 82
};
static const int lexer_goto_row266[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row267[] = {
3,
- 48, 100, -40,
- 101, 101, 277,
- 102, 122, 81
+ 48, 115, -94,
+ 116, 116, 321,
+ 117, 122, 82
};
static const int lexer_goto_row268[] = {
- 1,
- 48, 122, -36
+ 5,
+ 48, 101, -38,
+ 102, 102, 322,
+ 103, 109, 82,
+ 110, 110, 323,
+ 111, 122, 82
};
static const int lexer_goto_row269[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 99, -86,
+ 100, 100, 324,
+ 101, 122, 82
};
static const int lexer_goto_row270[] = {
- 3,
- 48, 100, -40,
- 101, 101, 278,
- 102, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row271[] = {
- 3,
- 48, 100, -40,
- 101, 101, 279,
- 102, 122, 81
+ 1,
+ 48, 122, -37
};
static const int lexer_goto_row272[] = {
3,
- 48, 95, -30,
- 97, 97, 280,
- 98, 122, 81
+ 48, 100, -41,
+ 101, 101, 325,
+ 102, 122, 82
};
static const int lexer_goto_row273[] = {
3,
- 48, 100, -40,
- 101, 101, 281,
- 102, 122, 81
+ 48, 97, -31,
+ 98, 98, 326,
+ 99, 122, 82
};
static const int lexer_goto_row274[] = {
- 1,
- 95, 95, 282
+ 4,
+ 48, 95, -31,
+ 97, 102, 82,
+ 103, 103, 327,
+ 104, 122, 82
};
static const int lexer_goto_row275[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 115, -94,
+ 116, 116, 328,
+ 117, 122, 82
};
static const int lexer_goto_row276[] = {
- 1,
- 48, 122, -36
+ 3,
+ 48, 98, -108,
+ 99, 99, 329,
+ 100, 122, 82
};
static const int lexer_goto_row277[] = {
3,
- 48, 100, -40,
- 101, 101, 283,
- 102, 122, 81
+ 48, 97, -31,
+ 98, 98, 330,
+ 99, 122, 82
};
static const int lexer_goto_row278[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row279[] = {
3,
- 48, 99, -85,
- 100, 100, 284,
- 101, 122, 81
+ 48, 109, -42,
+ 110, 110, 331,
+ 111, 122, 82
};
static const int lexer_goto_row280[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row281[] = {
3,
- 48, 107, -32,
- 108, 108, 285,
- 109, 122, 81
+ 48, 113, -32,
+ 114, 114, 332,
+ 115, 122, 82
};
static const int lexer_goto_row282[] = {
1,
- 48, 122, -36
+ 48, 122, -37
+};
+static const int lexer_goto_row283[] = {
+ 3,
+ 48, 97, -31,
+ 98, 98, 333,
+ 99, 122, 82
};
static const int lexer_goto_row284[] = {
1,
- 48, 122, -36
+ 0, 255, -237
};
static const int lexer_goto_row285[] = {
1,
- 48, 122, -36
+ 0, 255, -239
};
static const int lexer_goto_row286[] = {
+ 3,
+ 0, 9, 334,
+ 11, 12, 334,
+ 14, 255, 334
+};
+static const int lexer_goto_row287[] = {
+ 1,
+ 0, 255, -241
+};
+static const int lexer_goto_row288[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row289[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row290[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row291[] = {
+ 10,
+ 0, 9, 335,
+ 10, 10, 336,
+ 11, 12, 335,
+ 13, 13, 337,
+ 14, 33, 335,
+ 34, 34, 338,
+ 35, 91, 335,
+ 92, 92, 339,
+ 93, 122, 335,
+ 124, 255, 335
+};
+static const int lexer_goto_row292[] = {
+ 3,
+ 0, 9, 340,
+ 11, 12, 340,
+ 14, 255, 340
+};
+static const int lexer_goto_row293[] = {
+ 1,
+ 0, 255, -186
+};
+static const int lexer_goto_row294[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row295[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row296[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row297[] = {
+ 3,
+ 0, 9, 341,
+ 11, 12, 341,
+ 14, 255, 341
+};
+static const int lexer_goto_row298[] = {
+ 10,
+ 0, 9, 342,
+ 10, 10, 343,
+ 11, 12, 342,
+ 13, 13, 344,
+ 14, 33, 342,
+ 35, 91, 342,
+ 92, 92, 345,
+ 93, 122, 342,
+ 123, 123, 346,
+ 124, 255, 342
+};
+static const int lexer_goto_row299[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row300[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row301[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row303[] = {
+ 3,
+ 0, 9, 347,
+ 11, 12, 347,
+ 14, 255, 347
+};
+static const int lexer_goto_row304[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row305[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row306[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row307[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row308[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row309[] = {
+ 3,
+ 0, 9, 348,
+ 11, 12, 348,
+ 14, 255, 348
+};
+static const int lexer_goto_row311[] = {
+ 1,
+ 0, 255, -132
+};
+static const int lexer_goto_row312[] = {
+ 1,
+ 0, 255, -132
+};
+static const int lexer_goto_row313[] = {
+ 1,
+ 0, 255, -132
+};
+static const int lexer_goto_row315[] = {
+ 3,
+ 0, 9, 349,
+ 11, 12, 349,
+ 14, 255, 349
+};
+static const int lexer_goto_row316[] = {
+ 1,
+ 0, 255, -132
+};
+static const int lexer_goto_row317[] = {
+ 1,
+ 103, 103, 350
+};
+static const int lexer_goto_row318[] = {
+ 3,
+ 48, 98, -108,
+ 99, 99, 351,
+ 100, 122, 82
+};
+static const int lexer_goto_row319[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row320[] = {
+ 3,
+ 48, 116, -116,
+ 117, 117, 352,
+ 118, 122, 82
+};
+static const int lexer_goto_row321[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row322[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row323[] = {
+ 3,
+ 48, 95, -31,
+ 97, 97, 353,
+ 98, 122, 82
+};
+static const int lexer_goto_row324[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row325[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 354,
+ 102, 122, 82
+};
+static const int lexer_goto_row326[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row327[] = {
+ 3,
+ 48, 107, -33,
+ 108, 108, 355,
+ 109, 122, 82
+};
+static const int lexer_goto_row328[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 356,
+ 102, 122, 82
+};
+static const int lexer_goto_row329[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 357,
+ 102, 122, 82
+};
+static const int lexer_goto_row330[] = {
+ 3,
+ 48, 115, -94,
+ 116, 116, 358,
+ 117, 122, 82
+};
+static const int lexer_goto_row331[] = {
+ 3,
+ 48, 107, -33,
+ 108, 108, 359,
+ 109, 122, 82
+};
+static const int lexer_goto_row332[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row333[] = {
+ 3,
+ 48, 114, -87,
+ 115, 115, 360,
+ 116, 122, 82
+};
+static const int lexer_goto_row334[] = {
+ 3,
+ 48, 107, -33,
+ 108, 108, 361,
+ 109, 122, 82
+};
+static const int lexer_goto_row335[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row336[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row337[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row338[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row340[] = {
+ 3,
+ 0, 9, 362,
+ 11, 12, 362,
+ 14, 255, 362
+};
+static const int lexer_goto_row341[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row342[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row343[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row344[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row345[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row346[] = {
+ 3,
+ 0, 9, 363,
+ 11, 12, 363,
+ 14, 255, 363
+};
+static const int lexer_goto_row348[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row349[] = {
+ 1,
+ 0, 255, -128
+};
+static const int lexer_goto_row350[] = {
+ 1,
+ 0, 255, -132
+};
+static const int lexer_goto_row351[] = {
+ 1,
+ 95, 95, 364
+};
+static const int lexer_goto_row352[] = {
+ 3,
+ 48, 115, -94,
+ 116, 116, 365,
+ 117, 122, 82
+};
+static const int lexer_goto_row353[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 366,
+ 102, 122, 82
+};
+static const int lexer_goto_row354[] = {
+ 3,
+ 48, 98, -108,
+ 99, 99, 367,
+ 100, 122, 82
+};
+static const int lexer_goto_row355[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row356[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 368,
+ 102, 122, 82
+};
+static const int lexer_goto_row357[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row358[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row359[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 369,
+ 102, 122, 82
+};
+static const int lexer_goto_row360[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 370,
+ 102, 122, 82
+};
+static const int lexer_goto_row361[] = {
+ 3,
+ 48, 95, -31,
+ 97, 97, 371,
+ 98, 122, 82
+};
+static const int lexer_goto_row362[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 372,
+ 102, 122, 82
+};
+static const int lexer_goto_row363[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row364[] = {
+ 1,
+ 0, 255, -237
+};
+static const int lexer_goto_row365[] = {
+ 1,
+ 95, 95, 373
+};
+static const int lexer_goto_row366[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row367[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row368[] = {
+ 3,
+ 48, 100, -41,
+ 101, 101, 374,
+ 102, 122, 82
+};
+static const int lexer_goto_row369[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row370[] = {
+ 3,
+ 48, 99, -86,
+ 100, 100, 375,
+ 101, 122, 82
+};
+static const int lexer_goto_row371[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row372[] = {
+ 3,
+ 48, 107, -33,
+ 108, 108, 376,
+ 109, 122, 82
+};
+static const int lexer_goto_row373[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row375[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row376[] = {
+ 1,
+ 48, 122, -37
+};
+static const int lexer_goto_row377[] = {
1,
- 48, 122, -36
+ 48, 122, -37
};
static const int lexer_goto_row_null[] = {0};
const int* const lexer_goto_table[] = {
lexer_goto_row21,
lexer_goto_row22,
lexer_goto_row23,
- lexer_goto_row24,
+ lexer_goto_row_null,
+ lexer_goto_row25,
lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row27,
lexer_goto_row28,
lexer_goto_row29,
lexer_goto_row30,
lexer_goto_row46,
lexer_goto_row47,
lexer_goto_row48,
+ lexer_goto_row49,
lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row51,
- lexer_goto_row_null,
+ lexer_goto_row52,
lexer_goto_row53,
+ lexer_goto_row54,
lexer_goto_row_null,
- lexer_goto_row55,
+ lexer_goto_row56,
lexer_goto_row_null,
- lexer_goto_row57,
lexer_goto_row58,
- lexer_goto_row_null,
+ lexer_goto_row59,
lexer_goto_row60,
+ lexer_goto_row61,
lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row63,
lexer_goto_row64,
lexer_goto_row65,
+ lexer_goto_row66,
lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row68,
+ lexer_goto_row69,
lexer_goto_row_null,
lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row72,
lexer_goto_row73,
lexer_goto_row74,
lexer_goto_row75,
lexer_goto_row118,
lexer_goto_row119,
lexer_goto_row120,
+ lexer_goto_row121,
lexer_goto_row_null,
- lexer_goto_row122,
- lexer_goto_row_null,
- lexer_goto_row124,
+ lexer_goto_row123,
lexer_goto_row_null,
+ lexer_goto_row125,
lexer_goto_row_null,
lexer_goto_row127,
+ lexer_goto_row128,
lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row130,
lexer_goto_row131,
lexer_goto_row132,
- lexer_goto_row133,
- lexer_goto_row134,
+ lexer_goto_row_null,
+ lexer_goto_row_null,
lexer_goto_row135,
lexer_goto_row136,
lexer_goto_row137,
lexer_goto_row177,
lexer_goto_row178,
lexer_goto_row179,
- lexer_goto_row_null,
+ lexer_goto_row180,
lexer_goto_row181,
lexer_goto_row182,
- lexer_goto_row_null,
+ lexer_goto_row183,
lexer_goto_row184,
lexer_goto_row185,
lexer_goto_row186,
lexer_goto_row194,
lexer_goto_row195,
lexer_goto_row196,
- lexer_goto_row197,
+ lexer_goto_row_null,
lexer_goto_row198,
lexer_goto_row199,
- lexer_goto_row200,
+ lexer_goto_row_null,
lexer_goto_row201,
lexer_goto_row202,
lexer_goto_row203,
lexer_goto_row280,
lexer_goto_row281,
lexer_goto_row282,
- lexer_goto_row_null,
+ lexer_goto_row283,
lexer_goto_row284,
lexer_goto_row285,
- lexer_goto_row286
+ lexer_goto_row286,
+ lexer_goto_row287,
+ lexer_goto_row288,
+ lexer_goto_row289,
+ lexer_goto_row290,
+ lexer_goto_row291,
+ lexer_goto_row292,
+ lexer_goto_row293,
+ lexer_goto_row294,
+ lexer_goto_row295,
+ lexer_goto_row296,
+ lexer_goto_row297,
+ lexer_goto_row298,
+ lexer_goto_row299,
+ lexer_goto_row300,
+ lexer_goto_row301,
+ lexer_goto_row_null,
+ lexer_goto_row303,
+ lexer_goto_row304,
+ lexer_goto_row305,
+ lexer_goto_row306,
+ lexer_goto_row307,
+ lexer_goto_row308,
+ lexer_goto_row309,
+ lexer_goto_row_null,
+ lexer_goto_row311,
+ lexer_goto_row312,
+ lexer_goto_row313,
+ lexer_goto_row_null,
+ lexer_goto_row315,
+ lexer_goto_row316,
+ lexer_goto_row317,
+ lexer_goto_row318,
+ lexer_goto_row319,
+ lexer_goto_row320,
+ lexer_goto_row321,
+ lexer_goto_row322,
+ lexer_goto_row323,
+ lexer_goto_row324,
+ lexer_goto_row325,
+ lexer_goto_row326,
+ lexer_goto_row327,
+ lexer_goto_row328,
+ lexer_goto_row329,
+ lexer_goto_row330,
+ lexer_goto_row331,
+ lexer_goto_row332,
+ lexer_goto_row333,
+ lexer_goto_row334,
+ lexer_goto_row335,
+ lexer_goto_row336,
+ lexer_goto_row337,
+ lexer_goto_row338,
+ lexer_goto_row_null,
+ lexer_goto_row340,
+ lexer_goto_row341,
+ lexer_goto_row342,
+ lexer_goto_row343,
+ lexer_goto_row344,
+ lexer_goto_row345,
+ lexer_goto_row346,
+ lexer_goto_row_null,
+ lexer_goto_row348,
+ lexer_goto_row349,
+ lexer_goto_row350,
+ lexer_goto_row351,
+ lexer_goto_row352,
+ lexer_goto_row353,
+ lexer_goto_row354,
+ lexer_goto_row355,
+ lexer_goto_row356,
+ lexer_goto_row357,
+ lexer_goto_row358,
+ lexer_goto_row359,
+ lexer_goto_row360,
+ lexer_goto_row361,
+ lexer_goto_row362,
+ lexer_goto_row363,
+ lexer_goto_row364,
+ lexer_goto_row365,
+ lexer_goto_row366,
+ lexer_goto_row367,
+ lexer_goto_row368,
+ lexer_goto_row369,
+ lexer_goto_row370,
+ lexer_goto_row371,
+ lexer_goto_row372,
+ lexer_goto_row373,
+ lexer_goto_row_null,
+ lexer_goto_row375,
+ lexer_goto_row376,
+ lexer_goto_row377
};
const int lexer_accept_table[] = {
- -1,0,1,1,0,79,91,2,69,-1,52,53,67,65,56,66,64,68,83,57,72,59,75,80,54,55,-1,-1,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,91,1,71,91,86,-1,87,2,2,2,90,90,90,60,61,63,84,-1,58,74,73,70,76,77,80,80,80,80,-1,82,-1,81,81,81,81,81,81,47,81,81,81,15,81,81,81,81,81,81,24,81,30,14,81,81,81,81,81,81,81,32,81,81,81,81,81,81,81,81,81,81,81,81,91,89,-1,88,91,2,85,90,62,78,-1,82,82,82,82,-1,-1,-1,81,81,31,81,81,81,81,81,9,81,81,81,29,10,81,81,81,40,81,81,81,81,39,33,81,81,81,81,81,81,81,81,81,81,81,81,81,81,18,81,81,91,85,-1,-1,92,81,81,81,81,81,81,26,8,81,81,81,12,81,81,81,81,28,81,46,41,81,81,81,81,81,81,43,81,25,44,11,81,81,81,-1,37,81,81,36,5,81,81,45,81,81,81,49,50,81,81,81,81,81,81,13,81,42,81,27,81,-1,81,38,81,20,4,81,19,81,3,81,81,81,81,81,34,81,81,-1,81,81,81,23,81,3,22,81,81,81,81,-1,6,35,81,48,81,16,81,17,51,7,21,8
+ -1,0,1,1,0,79,91,2,69,-1,52,53,67,65,56,66,64,68,84,57,72,59,75,80,81,54,55,-1,-1,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,91,1,71,91,86,-1,87,2,2,2,92,92,92,60,61,63,85,-1,58,74,73,70,76,77,81,81,81,81,-1,83,-1,82,82,82,82,82,82,47,82,82,82,15,82,82,82,82,82,82,24,82,30,14,82,82,82,82,82,82,82,32,82,82,82,82,82,82,82,82,82,82,82,82,91,89,-1,88,91,86,91,91,2,90,91,92,62,78,-1,83,83,83,83,-1,-1,-1,82,82,31,82,82,82,82,82,9,82,82,82,29,10,82,82,82,40,82,82,82,82,39,33,82,82,82,82,82,82,82,82,82,82,82,82,82,82,18,82,82,91,91,91,91,91,-1,-1,-1,91,91,91,-1,-1,90,-1,-1,93,82,82,82,82,82,82,26,8,82,82,82,12,82,82,82,82,28,82,46,41,82,82,82,82,82,82,43,82,25,44,11,82,82,82,91,-1,-1,89,-1,88,91,91,91,-1,-1,91,91,91,91,-1,-1,91,91,91,-1,-1,91,-1,37,82,82,36,5,82,82,45,82,82,82,49,50,82,82,82,82,82,82,13,82,42,82,27,82,-1,-1,-1,-1,-1,-1,-1,-1,-1,91,-1,-1,-1,-1,-1,91,91,91,86,-1,91,91,91,91,91,-1,87,91,91,91,86,-1,91,-1,82,38,82,20,4,82,19,82,3,82,82,82,82,82,34,82,82,-1,-1,-1,-1,89,-1,-1,-1,-1,-1,-1,-1,88,91,91,91,-1,82,82,82,23,82,3,22,82,82,82,82,-1,-1,-1,6,35,82,48,82,16,82,17,51,7,21,8
};
static int parser_action_row1[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 0
+ 93, 1, 0
};
static int parser_action_row2[] = {
1,
- -1, 1, 864
+ -1, 1, 1288
};
static int parser_action_row3[] = {
1,
- -1, 1, 862
+ -1, 1, 1286
};
static int parser_action_row4[] = {
2,
-1, 3, 3,
- 92, 2, -1
+ 93, 2, -1
};
static int parser_action_row5[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 1
+ 93, 1, 1
};
static int parser_action_row6[] = {
1,
- -1, 1, 832
+ -1, 1, 1250
};
static int parser_action_row7[] = {
1,
};
static int parser_action_row8[] = {
1,
- -1, 1, 67
+ -1, 1, 69
};
static int parser_action_row9[] = {
1,
- -1, 1, 836
+ -1, 1, 1254
};
static int parser_action_row10[] = {
1,
- -1, 1, 834
+ -1, 1, 1252
};
static int parser_action_row11[] = {
2,
- -1, 1, 532,
- 92, 1, 68
+ -1, 1, 657,
+ 93, 1, 70
};
static int parser_action_row12[] = {
37,
- -1, 1, 258,
+ -1, 1, 331,
2, 0, 27,
11, 0, 28,
12, 0, 29,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61,
- 91, 0, 62
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61,
+ 92, 0, 62
};
static int parser_action_row13[] = {
2,
- -1, 1, 530,
+ -1, 1, 655,
1, 0, 2
};
static int parser_action_row14[] = {
1,
- -1, 1, 838
+ -1, 1, 1256
};
static int parser_action_row15[] = {
3,
};
static int parser_action_row16[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 2
+ 93, 1, 2
};
static int parser_action_row17[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 4
+ 93, 1, 4
};
static int parser_action_row18[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 8
+ 93, 1, 8
};
static int parser_action_row19[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 16
+ 93, 1, 16
};
static int parser_action_row20[] = {
3,
- -1, 1, 528,
+ -1, 1, 653,
0, 0, 1,
1, 0, 107
};
static int parser_action_row21[] = {
2,
- -1, 1, 535,
+ -1, 1, 660,
0, 0, 109
};
static int parser_action_row22[] = {
};
static int parser_action_row23[] = {
36,
- -1, 1, 258,
+ -1, 1, 331,
11, 0, 28,
12, 0, 29,
14, 0, 30,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61,
- 91, 0, 62
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61,
+ 92, 0, 62
};
static int parser_action_row24[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 3
+ 93, 1, 3
};
static int parser_action_row25[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 5
+ 93, 1, 5
};
static int parser_action_row26[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 9
+ 93, 1, 9
};
static int parser_action_row27[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 17
+ 93, 1, 17
};
static int parser_action_row28[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row29[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
static int parser_action_row30[] = {
4,
- -1, 1, 258,
+ -1, 1, 331,
20, 0, 32,
21, 0, 33,
22, 0, 34
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row32[] = {
2,
-1, 3, 31,
- 80, 0, 160
+ 81, 0, 160
};
static int parser_action_row33[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row34[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row35[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row36[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row37[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row39[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row41[] = {
23,
- -1, 1, 349,
+ -1, 1, 429,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row42[] = {
24,
- -1, 1, 356,
+ -1, 1, 436,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row43[] = {
24,
- -1, 1, 351,
+ -1, 1, 431,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row44[] = {
1,
- -1, 1, 355
+ -1, 1, 435
};
static int parser_action_row45[] = {
23,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 196,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 196,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row46[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row47[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
static int parser_action_row48[] = {
- 1,
- -1, 1, 485
+ 2,
+ -1, 1, 572,
+ 79, 0, 205
};
static int parser_action_row49[] = {
- 1,
- -1, 1, 486
+ 2,
+ -1, 1, 574,
+ 79, 0, 205
};
static int parser_action_row50[] = {
- 1,
- -1, 1, 487
+ 2,
+ -1, 1, 576,
+ 79, 0, 205
};
static int parser_action_row51[] = {
- 1,
- -1, 1, 488
+ 2,
+ -1, 1, 578,
+ 79, 0, 205
};
static int parser_action_row52[] = {
2,
-1, 3, 51,
- 10, 0, 205
+ 10, 0, 210
};
static int parser_action_row53[] = {
23,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row54[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row55[] = {
2,
-1, 3, 54,
- 57, 0, 210
+ 57, 0, 215
};
static int parser_action_row56[] = {
28,
- -1, 1, 506,
- 0, 1, 510,
- 1, 1, 510,
- 8, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 57, 0, 211,
+ 53, 1, 631,
+ 57, 0, 216,
+ 58, 1, 631,
+ 59, 1, 631,
+ 60, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 78, 1, 510,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61,
- 92, 1, 510
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
static int parser_action_row57[] = {
4,
- -1, 1, 473,
- 58, 0, 214,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 557,
+ 58, 0, 219,
+ 59, 0, 220,
+ 60, 0, 221
};
static int parser_action_row58[] = {
- 1,
- -1, 1, 489
+ 2,
+ -1, 1, 580,
+ 79, 0, 205
};
static int parser_action_row59[] = {
- 1,
- -1, 1, 490
+ 2,
+ -1, 1, 582,
+ 79, 0, 205
};
static int parser_action_row60[] = {
- 1,
- -1, 1, 491
+ 2,
+ -1, 1, 586,
+ 79, 0, 205
};
static int parser_action_row61[] = {
1,
- -1, 1, 492
+ -1, 1, 598
};
static int parser_action_row62[] = {
- 1,
- -1, 1, 500
+ 2,
+ -1, 1, 584,
+ 79, 0, 205
};
static int parser_action_row63[] = {
1,
- -1, 1, 325
+ -1, 1, 401
};
static int parser_action_row64[] = {
8,
-1, 3, 63,
- 3, 0, 218,
- 4, 0, 219,
- 5, 0, 220,
- 6, 0, 221,
- 7, 0, 222,
- 9, 0, 223,
- 19, 0, 224
+ 3, 0, 227,
+ 4, 0, 228,
+ 5, 0, 229,
+ 6, 0, 230,
+ 7, 0, 231,
+ 9, 0, 232,
+ 19, 0, 233
};
static int parser_action_row65[] = {
2,
-1, 3, 64,
- 91, 0, 226
+ 92, 0, 235
};
static int parser_action_row66[] = {
1,
- -1, 1, 327
+ -1, 1, 403
};
static int parser_action_row67[] = {
1,
- -1, 1, 69
+ -1, 1, 71
};
static int parser_action_row68[] = {
1,
- -1, 1, 70
+ -1, 1, 72
};
static int parser_action_row69[] = {
3,
- -1, 1, 340,
+ -1, 1, 420,
0, 0, 1,
1, 0, 2
};
static int parser_action_row70[] = {
1,
- -1, 1, 347
+ -1, 1, 427
};
static int parser_action_row71[] = {
1,
- -1, 1, 348
+ -1, 1, 428
};
static int parser_action_row72[] = {
1,
- -1, 1, 360
+ -1, 1, 440
};
static int parser_action_row73[] = {
1,
- -1, 1, 361
+ -1, 1, 441
};
static int parser_action_row74[] = {
1,
- -1, 1, 363
+ -1, 1, 443
};
static int parser_action_row75[] = {
1,
- -1, 1, 362
+ -1, 1, 442
};
static int parser_action_row76[] = {
1,
- -1, 1, 364
+ -1, 1, 444
};
static int parser_action_row77[] = {
1,
- -1, 1, 365
+ -1, 1, 445
};
static int parser_action_row78[] = {
3,
-1, 3, 77,
- 53, 0, 230,
- 63, 0, 231
+ 53, 0, 239,
+ 63, 0, 240
};
static int parser_action_row79[] = {
1,
- -1, 1, 493
+ -1, 1, 588
};
static int parser_action_row80[] = {
3,
-1, 3, 79,
- 87, 0, 233,
- 88, 0, 234
+ 87, 0, 242,
+ 88, 0, 243
};
static int parser_action_row81[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row82[] = {
- 1,
- -1, 1, 484
+ 2,
+ -1, 1, 570,
+ 79, 0, 205
};
static int parser_action_row83[] = {
2,
-1, 3, 82,
- 41, 0, 240
+ 41, 0, 250
};
static int parser_action_row84[] = {
1,
- -1, 1, 860
+ -1, 1, 1284
};
static int parser_action_row85[] = {
1,
- -1, 1, 521
+ -1, 1, 646
};
static int parser_action_row86[] = {
3,
- -1, 1, 523,
- 79, 0, 54,
- 80, 0, 241
+ -1, 1, 648,
+ 80, 0, 54,
+ 81, 0, 251
};
static int parser_action_row87[] = {
3,
- -1, 1, 529,
+ -1, 1, 654,
0, 0, 1,
1, 0, 107
};
static int parser_action_row88[] = {
1,
- -1, 1, 527
+ -1, 1, 652
};
static int parser_action_row89[] = {
1,
- -1, 1, 526
+ -1, 1, 651
};
static int parser_action_row90[] = {
1,
- -1, 1, 536
+ -1, 1, 661
};
static int parser_action_row91[] = {
1,
- -1, 1, 833
+ -1, 1, 1251
};
static int parser_action_row92[] = {
1,
};
static int parser_action_row93[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 6
+ 93, 1, 6
};
static int parser_action_row94[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 10
+ 93, 1, 10
};
static int parser_action_row95[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 18
+ 93, 1, 18
};
static int parser_action_row96[] = {
1,
};
static int parser_action_row97[] = {
1,
- -1, 1, 835
+ -1, 1, 1253
};
static int parser_action_row98[] = {
36,
- -1, 1, 258,
+ -1, 1, 331,
11, 0, 28,
12, 0, 29,
14, 0, 30,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61,
- 91, 0, 62
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61,
+ 92, 0, 62
};
static int parser_action_row99[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 12
+ 93, 1, 12
};
static int parser_action_row100[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 20
+ 93, 1, 20
};
static int parser_action_row101[] = {
1,
};
static int parser_action_row102[] = {
1,
- -1, 1, 837
+ -1, 1, 1255
};
static int parser_action_row103[] = {
34,
- -1, 1, 258,
+ -1, 1, 331,
11, 0, 28,
12, 0, 29,
14, 0, 30,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row104[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 24
+ 93, 1, 24
};
static int parser_action_row105[] = {
1,
};
static int parser_action_row106[] = {
34,
- -1, 1, 258,
+ -1, 1, 331,
11, 0, 28,
- 12, 0, 256,
+ 12, 0, 266,
14, 0, 30,
17, 0, 31,
20, 0, 32,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row107[] = {
1,
- -1, 1, 839
+ -1, 1, 1257
};
static int parser_action_row108[] = {
1,
- -1, 1, 863
+ -1, 1, 1287
};
static int parser_action_row109[] = {
2,
- -1, 1, 533,
+ -1, 1, 658,
0, 0, 109
};
static int parser_action_row110[] = {
1,
- -1, 1, 865
+ -1, 1, 1289
};
static int parser_action_row111[] = {
1,
};
static int parser_action_row112[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 7
+ 93, 1, 7
};
static int parser_action_row113[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 11
+ 93, 1, 11
};
static int parser_action_row114[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 19
+ 93, 1, 19
};
static int parser_action_row115[] = {
1,
};
static int parser_action_row116[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 13
+ 93, 1, 13
};
static int parser_action_row117[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 21
+ 93, 1, 21
};
static int parser_action_row118[] = {
1,
};
static int parser_action_row119[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 25
+ 93, 1, 25
};
static int parser_action_row120[] = {
1,
};
static int parser_action_row121[] = {
1,
- -1, 1, 532
+ -1, 1, 657
};
static int parser_action_row122[] = {
3,
-1, 3, 121,
- 57, 0, 268,
- 80, 0, 269
+ 57, 0, 278,
+ 81, 0, 279
};
static int parser_action_row123[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
static int parser_action_row124[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row125[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row126[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row127[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row128[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
static int parser_action_row129[] = {
- 1,
- -1, 1, 760
+ 2,
+ -1, 1, 864,
+ 79, 0, 205
};
static int parser_action_row130[] = {
- 1,
- -1, 1, 761
+ 2,
+ -1, 1, 866,
+ 79, 0, 205
};
static int parser_action_row131[] = {
- 1,
- -1, 1, 762
+ 2,
+ -1, 1, 868,
+ 79, 0, 205
};
static int parser_action_row132[] = {
- 1,
- -1, 1, 763
+ 2,
+ -1, 1, 870,
+ 79, 0, 205
};
static int parser_action_row133[] = {
16,
-1, 3, 132,
11, 0, 122,
- 38, 0, 279,
+ 38, 0, 293,
41, 0, 127,
42, 0, 128,
43, 0, 129,
44, 0, 130,
45, 0, 131,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 280,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 294,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
static int parser_action_row134[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row135[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row136[] = {
3,
- -1, 1, 506,
- 51, 0, 272,
- 57, 0, 211
+ -1, 1, 631,
+ 51, 0, 282,
+ 57, 0, 216
};
static int parser_action_row137[] = {
1,
- -1, 1, 751
+ -1, 1, 855
};
static int parser_action_row138[] = {
- 1,
- -1, 1, 764
+ 2,
+ -1, 1, 872,
+ 79, 0, 205
};
static int parser_action_row139[] = {
- 1,
- -1, 1, 765
+ 2,
+ -1, 1, 874,
+ 79, 0, 205
};
static int parser_action_row140[] = {
- 1,
- -1, 1, 766
+ 2,
+ -1, 1, 878,
+ 79, 0, 205
};
static int parser_action_row141[] = {
- 1,
- -1, 1, 767
+ 2,
+ -1, 1, 876,
+ 79, 0, 205
};
static int parser_action_row142[] = {
1,
- -1, 1, 768
+ -1, 1, 880
};
static int parser_action_row143[] = {
1,
- -1, 1, 479
+ -1, 1, 563
};
static int parser_action_row144[] = {
1,
- -1, 1, 373
+ -1, 1, 453
};
static int parser_action_row145[] = {
2,
-1, 3, 144,
- 41, 0, 285
+ 41, 0, 303
};
static int parser_action_row146[] = {
1,
- -1, 1, 508
+ -1, 1, 633
};
static int parser_action_row147[] = {
3,
- -1, 1, 716,
- 30, 0, 286,
- 31, 0, 287
+ -1, 1, 820,
+ 30, 0, 304,
+ 31, 0, 305
};
static int parser_action_row148[] = {
1,
- -1, 1, 718
+ -1, 1, 822
};
static int parser_action_row149[] = {
3,
- -1, 1, 722,
- 73, 0, 288,
- 76, 0, 289
+ -1, 1, 826,
+ 73, 0, 306,
+ 76, 0, 307
};
static int parser_action_row150[] = {
12,
- -1, 1, 724,
- 13, 0, 290,
- 39, 0, 291,
- 64, 0, 292,
- 65, 0, 293,
- 69, 0, 294,
- 70, 0, 295,
- 71, 0, 296,
- 72, 0, 297,
- 74, 0, 298,
- 75, 0, 299,
- 77, 0, 300
+ -1, 1, 828,
+ 13, 0, 308,
+ 39, 0, 309,
+ 64, 0, 310,
+ 65, 0, 311,
+ 69, 0, 312,
+ 70, 0, 313,
+ 71, 0, 314,
+ 72, 0, 315,
+ 74, 0, 316,
+ 75, 0, 317,
+ 77, 0, 318
};
static int parser_action_row151[] = {
4,
- -1, 1, 736,
- 66, 0, 301,
- 67, 0, 302,
- 68, 0, 303
+ -1, 1, 840,
+ 66, 0, 319,
+ 67, 0, 320,
+ 68, 0, 321
};
static int parser_action_row152[] = {
1,
- -1, 1, 739
+ -1, 1, 843
};
static int parser_action_row153[] = {
1,
- -1, 1, 743
+ -1, 1, 847
};
static int parser_action_row154[] = {
3,
- -1, 1, 746,
- 53, 0, 230,
- 63, 0, 304
+ -1, 1, 850,
+ 53, 0, 239,
+ 63, 0, 322
};
static int parser_action_row155[] = {
7,
-1, 3, 154,
- 4, 0, 219,
- 5, 0, 220,
- 6, 0, 221,
- 7, 0, 222,
- 9, 0, 306,
- 19, 0, 224
+ 4, 0, 228,
+ 5, 0, 229,
+ 6, 0, 230,
+ 7, 0, 231,
+ 9, 0, 324,
+ 19, 0, 233
};
static int parser_action_row156[] = {
2,
- -1, 1, 338,
- 49, 1, 709
+ -1, 1, 418,
+ 49, 1, 1087
};
static int parser_action_row157[] = {
1,
- -1, 1, 413
+ -1, 1, 497
};
static int parser_action_row158[] = {
1,
- -1, 1, 339
+ -1, 1, 419
};
static int parser_action_row159[] = {
31,
-1, 3, 158,
- 8, 0, 308,
+ 8, 0, 326,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row160[] = {
2,
49, 0, 191
};
static int parser_action_row161[] = {
- 3,
- -1, 1, 396,
- 56, 0, 312,
- 58, 0, 313
+ 4,
+ -1, 1, 476,
+ 56, 0, 330,
+ 58, 0, 331,
+ 79, 0, 205
};
static int parser_action_row162[] = {
1,
- -1, 1, 260
+ -1, 1, 333
};
static int parser_action_row163[] = {
1,
- -1, 1, 259
+ -1, 1, 332
};
static int parser_action_row164[] = {
1,
- -1, 1, 261
+ -1, 1, 334
};
static int parser_action_row165[] = {
23,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row166[] = {
23,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row167[] = {
1,
- -1, 1, 422
+ -1, 1, 506
};
static int parser_action_row168[] = {
2,
static int parser_action_row169[] = {
3,
-1, 3, 168,
- 51, 0, 318,
- 80, 0, 319
+ 51, 0, 337,
+ 81, 0, 338
};
static int parser_action_row170[] = {
1,
- -1, 1, 324
+ -1, 1, 400
};
static int parser_action_row171[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
static int parser_action_row172[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row173[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row174[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row175[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row176[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
static int parser_action_row177[] = {
18,
45, 0, 50,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 325,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 344,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row178[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
static int parser_action_row179[] = {
3,
- -1, 1, 506,
- 51, 0, 272,
- 57, 0, 211
+ -1, 1, 631,
+ 51, 0, 282,
+ 57, 0, 216
};
static int parser_action_row180[] = {
1,
- -1, 1, 473
+ -1, 1, 557
};
static int parser_action_row181[] = {
1,
- -1, 1, 350
+ -1, 1, 430
};
static int parser_action_row182[] = {
1,
- -1, 1, 434
+ -1, 1, 518
};
static int parser_action_row183[] = {
3,
- -1, 1, 438,
- 30, 0, 329,
- 31, 0, 330
+ -1, 1, 522,
+ 30, 0, 348,
+ 31, 0, 349
};
static int parser_action_row184[] = {
1,
- -1, 1, 440
+ -1, 1, 524
};
static int parser_action_row185[] = {
3,
- -1, 1, 444,
- 73, 0, 331,
- 76, 0, 332
+ -1, 1, 528,
+ 73, 0, 350,
+ 76, 0, 351
};
static int parser_action_row186[] = {
12,
- -1, 1, 446,
- 13, 0, 333,
- 39, 0, 334,
- 64, 0, 335,
- 65, 0, 336,
- 69, 0, 337,
- 70, 0, 338,
- 71, 0, 339,
- 72, 0, 340,
- 74, 0, 341,
- 75, 0, 342,
- 77, 0, 343
+ -1, 1, 530,
+ 13, 0, 352,
+ 39, 0, 353,
+ 64, 0, 354,
+ 65, 0, 355,
+ 69, 0, 356,
+ 70, 0, 357,
+ 71, 0, 358,
+ 72, 0, 359,
+ 74, 0, 360,
+ 75, 0, 361,
+ 77, 0, 362
};
static int parser_action_row187[] = {
4,
- -1, 1, 458,
- 66, 0, 344,
- 67, 0, 345,
- 68, 0, 346
+ -1, 1, 542,
+ 66, 0, 363,
+ 67, 0, 364,
+ 68, 0, 365
};
static int parser_action_row188[] = {
1,
- -1, 1, 461
+ -1, 1, 545
};
static int parser_action_row189[] = {
1,
- -1, 1, 465
+ -1, 1, 549
};
static int parser_action_row190[] = {
3,
- -1, 1, 468,
- 53, 0, 230,
- 63, 0, 347
+ -1, 1, 552,
+ 53, 0, 239,
+ 63, 0, 366
};
static int parser_action_row191[] = {
2,
-1, 3, 190,
- 41, 0, 349
+ 41, 0, 368
};
static int parser_action_row192[] = {
2,
-1, 3, 191,
- 80, 0, 350
+ 81, 0, 369
};
static int parser_action_row193[] = {
23,
- -1, 1, 357,
+ -1, 1, 437,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row194[] = {
1,
- -1, 1, 358
+ -1, 1, 438
};
static int parser_action_row195[] = {
23,
- -1, 1, 352,
+ -1, 1, 432,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row196[] = {
1,
- -1, 1, 353
+ -1, 1, 433
};
static int parser_action_row197[] = {
4,
- -1, 1, 506,
- 51, 0, 272,
- 56, 0, 353,
- 57, 0, 211
+ -1, 1, 631,
+ 51, 0, 282,
+ 56, 0, 372,
+ 57, 0, 216
};
static int parser_action_row198[] = {
23,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
static int parser_action_row199[] = {
1,
- -1, 1, 431
+ -1, 1, 515
};
static int parser_action_row200[] = {
2,
- -1, 1, 434,
- 25, 1, 700
+ -1, 1, 518,
+ 25, 1, 1034
};
static int parser_action_row201[] = {
3,
- -1, 1, 468,
- 53, 0, 230,
- 63, 0, 358
+ -1, 1, 552,
+ 53, 0, 239,
+ 63, 0, 377
};
static int parser_action_row202[] = {
2,
-1, 3, 201,
- 25, 0, 360
+ 25, 0, 379
};
static int parser_action_row203[] = {
3,
-1, 3, 202,
- 47, 0, 361,
- 79, 0, 362
+ 47, 0, 380,
+ 80, 0, 381
};
static int parser_action_row204[] = {
1,
- -1, 1, 476
+ -1, 1, 560
};
static int parser_action_row205[] = {
1,
- -1, 1, 370
+ -1, 1, 450
};
static int parser_action_row206[] = {
- 3,
+ 6,
-1, 3, 205,
- 47, 0, 361,
- 79, 0, 362
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 51, 0, 386,
+ 81, 0, 387
};
static int parser_action_row207[] = {
- 3,
- -1, 1, 506,
- 51, 0, 272,
- 57, 0, 211
+ 1,
+ -1, 1, 573
};
static int parser_action_row208[] = {
- 2,
- -1, 3, 207,
- 52, 0, 366
+ 1,
+ -1, 1, 575
};
static int parser_action_row209[] = {
- 3,
- -1, 1, 468,
- 53, 0, 230,
- 63, 0, 367
+ 1,
+ -1, 1, 577
};
static int parser_action_row210[] = {
+ 1,
+ -1, 1, 579
+};
+static int parser_action_row211[] = {
+ 3,
+ -1, 3, 210,
+ 47, 0, 390,
+ 80, 0, 391
+};
+static int parser_action_row212[] = {
+ 3,
+ -1, 1, 631,
+ 51, 0, 282,
+ 57, 0, 216
+};
+static int parser_action_row213[] = {
+ 2,
+ -1, 3, 212,
+ 52, 0, 394
+};
+static int parser_action_row214[] = {
+ 3,
+ -1, 1, 552,
+ 53, 0, 239,
+ 63, 0, 395
+};
+static int parser_action_row215[] = {
23,
- -1, 3, 209,
+ -1, 3, 214,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row211[] = {
+static int parser_action_row216[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row212[] = {
+static int parser_action_row217[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row213[] = {
+static int parser_action_row218[] = {
4,
- -1, 1, 475,
- 58, 0, 373,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 559,
+ 58, 0, 401,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row214[] = {
+static int parser_action_row219[] = {
2,
- -1, 1, 367,
- 78, 0, 375
+ -1, 1, 447,
+ 78, 0, 403
};
-static int parser_action_row215[] = {
+static int parser_action_row220[] = {
23,
- -1, 3, 214,
+ -1, 3, 219,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row216[] = {
+static int parser_action_row221[] = {
1,
- -1, 1, 410
+ -1, 1, 494
};
-static int parser_action_row217[] = {
+static int parser_action_row222[] = {
1,
- -1, 1, 411
+ -1, 1, 495
};
-static int parser_action_row218[] = {
+static int parser_action_row223[] = {
23,
- -1, 3, 217,
+ -1, 3, 222,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row219[] = {
+static int parser_action_row224[] = {
+ 1,
+ -1, 1, 581
+};
+static int parser_action_row225[] = {
+ 1,
+ -1, 1, 583
+};
+static int parser_action_row226[] = {
+ 1,
+ -1, 1, 587
+};
+static int parser_action_row227[] = {
+ 1,
+ -1, 1, 585
+};
+static int parser_action_row228[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row220[] = {
+static int parser_action_row229[] = {
1,
- -1, 1, 103
+ -1, 1, 137
};
-static int parser_action_row221[] = {
+static int parser_action_row230[] = {
2,
- -1, 3, 220,
- 4, 0, 382
+ -1, 3, 229,
+ 4, 0, 410
};
-static int parser_action_row222[] = {
+static int parser_action_row231[] = {
1,
- -1, 1, 105
+ -1, 1, 139
};
-static int parser_action_row223[] = {
+static int parser_action_row232[] = {
1,
- -1, 1, 106
+ -1, 1, 140
};
-static int parser_action_row224[] = {
+static int parser_action_row233[] = {
17,
- -1, 3, 223,
- 53, 0, 383,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
+ -1, 3, 232,
+ 53, 0, 411,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
};
-static int parser_action_row225[] = {
+static int parser_action_row234[] = {
2,
- -1, 1, 107,
- 4, 0, 400
+ -1, 1, 141,
+ 4, 0, 428
};
-static int parser_action_row226[] = {
+static int parser_action_row235[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row227[] = {
+static int parser_action_row236[] = {
1,
- -1, 1, 326
+ -1, 1, 402
};
-static int parser_action_row228[] = {
+static int parser_action_row237[] = {
1,
- -1, 1, 854
+ -1, 1, 1272
};
-static int parser_action_row229[] = {
+static int parser_action_row238[] = {
30,
- -1, 1, 342,
+ -1, 1, 422,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row230[] = {
+static int parser_action_row239[] = {
3,
- -1, 1, 341,
+ -1, 1, 421,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row231[] = {
+static int parser_action_row240[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row232[] = {
+static int parser_action_row241[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row233[] = {
+static int parser_action_row242[] = {
4,
- -1, 1, 480,
- 58, 0, 407,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 564,
+ 58, 0, 435,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row234[] = {
+static int parser_action_row243[] = {
1,
- -1, 1, 502
+ -1, 1, 600
};
-static int parser_action_row235[] = {
+static int parser_action_row244[] = {
1,
- -1, 1, 503
+ -1, 1, 601
};
-static int parser_action_row236[] = {
+static int parser_action_row245[] = {
1,
- -1, 1, 856
+ -1, 1, 1274
};
-static int parser_action_row237[] = {
+static int parser_action_row246[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row238[] = {
- 1,
- -1, 1, 497
+static int parser_action_row247[] = {
+ 2,
+ -1, 1, 593,
+ 79, 0, 205
};
-static int parser_action_row239[] = {
+static int parser_action_row248[] = {
3,
- -1, 3, 238,
- 87, 0, 233,
- 88, 0, 234
+ -1, 3, 247,
+ 87, 0, 242,
+ 88, 0, 243
};
-static int parser_action_row240[] = {
+static int parser_action_row249[] = {
23,
- -1, 3, 239,
+ -1, 3, 248,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row241[] = {
+static int parser_action_row250[] = {
+ 1,
+ -1, 1, 571
+};
+static int parser_action_row251[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row242[] = {
+static int parser_action_row252[] = {
2,
- -1, 3, 241,
- 57, 0, 211
+ -1, 3, 251,
+ 57, 0, 216
};
-static int parser_action_row243[] = {
+static int parser_action_row253[] = {
1,
- -1, 1, 861
+ -1, 1, 1285
};
-static int parser_action_row244[] = {
+static int parser_action_row254[] = {
1,
- -1, 1, 522
+ -1, 1, 647
};
-static int parser_action_row245[] = {
+static int parser_action_row255[] = {
2,
- -1, 1, 534,
+ -1, 1, 659,
0, 0, 109
};
-static int parser_action_row246[] = {
+static int parser_action_row256[] = {
1,
-1, 1, 38
};
-static int parser_action_row247[] = {
+static int parser_action_row257[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 14
+ 93, 1, 14
};
-static int parser_action_row248[] = {
+static int parser_action_row258[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 22
+ 93, 1, 22
};
-static int parser_action_row249[] = {
+static int parser_action_row259[] = {
1,
-1, 1, 42
};
-static int parser_action_row250[] = {
+static int parser_action_row260[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 26
+ 93, 1, 26
};
-static int parser_action_row251[] = {
+static int parser_action_row261[] = {
1,
-1, 1, 50
};
-static int parser_action_row252[] = {
+static int parser_action_row262[] = {
7,
- -1, 3, 251,
- 4, 0, 219,
- 5, 0, 220,
- 6, 0, 221,
- 7, 0, 222,
- 9, 0, 223,
- 19, 0, 224
+ -1, 3, 261,
+ 4, 0, 228,
+ 5, 0, 229,
+ 6, 0, 230,
+ 7, 0, 231,
+ 9, 0, 232,
+ 19, 0, 233
};
-static int parser_action_row253[] = {
+static int parser_action_row263[] = {
1,
-1, 1, 44
};
-static int parser_action_row254[] = {
+static int parser_action_row264[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 28
+ 93, 1, 28
};
-static int parser_action_row255[] = {
+static int parser_action_row265[] = {
1,
-1, 1, 52
};
-static int parser_action_row256[] = {
+static int parser_action_row266[] = {
1,
-1, 1, 56
};
-static int parser_action_row257[] = {
+static int parser_action_row267[] = {
4,
- -1, 1, 258,
+ -1, 1, 331,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row258[] = {
+static int parser_action_row268[] = {
2,
- -1, 3, 257,
- 9, 0, 223
+ -1, 3, 267,
+ 9, 0, 232
};
-static int parser_action_row259[] = {
+static int parser_action_row269[] = {
1,
-1, 1, 39
};
-static int parser_action_row260[] = {
+static int parser_action_row270[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 15
+ 93, 1, 15
};
-static int parser_action_row261[] = {
+static int parser_action_row271[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 23
+ 93, 1, 23
};
-static int parser_action_row262[] = {
+static int parser_action_row272[] = {
1,
-1, 1, 43
};
-static int parser_action_row263[] = {
+static int parser_action_row273[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 27
+ 93, 1, 27
};
-static int parser_action_row264[] = {
+static int parser_action_row274[] = {
1,
-1, 1, 51
};
-static int parser_action_row265[] = {
+static int parser_action_row275[] = {
1,
-1, 1, 45
};
-static int parser_action_row266[] = {
+static int parser_action_row276[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 29
+ 93, 1, 29
};
-static int parser_action_row267[] = {
+static int parser_action_row277[] = {
1,
-1, 1, 53
};
-static int parser_action_row268[] = {
+static int parser_action_row278[] = {
1,
-1, 1, 57
};
-static int parser_action_row269[] = {
+static int parser_action_row279[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row270[] = {
+static int parser_action_row280[] = {
2,
- -1, 1, 517,
- 57, 0, 211
+ -1, 1, 642,
+ 57, 0, 216
};
-static int parser_action_row271[] = {
- 3,
- -1, 3, 270,
+static int parser_action_row281[] = {
+ 4,
+ -1, 3, 280,
0, 0, 87,
- 1, 0, 88
+ 1, 0, 88,
+ 13, 0, 456
};
-static int parser_action_row272[] = {
+static int parser_action_row282[] = {
2,
- -1, 3, 271,
- 80, 0, 428
+ -1, 3, 281,
+ 81, 0, 459
};
-static int parser_action_row273[] = {
+static int parser_action_row283[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row274[] = {
+static int parser_action_row284[] = {
1,
- -1, 1, 757
+ -1, 1, 861
};
-static int parser_action_row275[] = {
+static int parser_action_row285[] = {
23,
- -1, 3, 274,
+ -1, 3, 284,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row276[] = {
+static int parser_action_row286[] = {
20,
- -1, 3, 275,
+ -1, 3, 285,
11, 0, 122,
32, 0, 124,
38, 0, 125,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row277[] = {
+static int parser_action_row287[] = {
3,
- -1, 3, 276,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 286,
+ 47, 0, 380,
+ 80, 0, 381
};
-static int parser_action_row278[] = {
+static int parser_action_row288[] = {
19,
- -1, 3, 277,
+ -1, 3, 287,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row279[] = {
+static int parser_action_row289[] = {
1,
- -1, 1, 754
+ -1, 1, 858
};
-static int parser_action_row280[] = {
+static int parser_action_row290[] = {
+ 1,
+ -1, 1, 865
+};
+static int parser_action_row291[] = {
+ 1,
+ -1, 1, 867
+};
+static int parser_action_row292[] = {
+ 1,
+ -1, 1, 869
+};
+static int parser_action_row293[] = {
+ 1,
+ -1, 1, 871
+};
+static int parser_action_row294[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row281[] = {
+static int parser_action_row295[] = {
3,
- -1, 1, 749,
- 53, 1, 751,
- 63, 1, 751
+ -1, 1, 853,
+ 53, 1, 855,
+ 63, 1, 855
};
-static int parser_action_row282[] = {
+static int parser_action_row296[] = {
3,
- -1, 3, 281,
- 53, 0, 230,
- 63, 0, 435
+ -1, 3, 295,
+ 53, 0, 239,
+ 63, 0, 466
};
-static int parser_action_row283[] = {
+static int parser_action_row297[] = {
24,
- -1, 3, 282,
+ -1, 3, 296,
11, 0, 170,
23, 0, 171,
32, 0, 172,
45, 0, 50,
48, 0, 176,
51, 0, 52,
- 52, 0, 436,
+ 52, 0, 467,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row284[] = {
+static int parser_action_row298[] = {
19,
- -1, 3, 283,
+ -1, 3, 297,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row285[] = {
+static int parser_action_row299[] = {
1,
- -1, 1, 753
+ -1, 1, 857
};
-static int parser_action_row286[] = {
+static int parser_action_row300[] = {
+ 1,
+ -1, 1, 873
+};
+static int parser_action_row301[] = {
+ 1,
+ -1, 1, 875
+};
+static int parser_action_row302[] = {
+ 1,
+ -1, 1, 879
+};
+static int parser_action_row303[] = {
+ 1,
+ -1, 1, 877
+};
+static int parser_action_row304[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row287[] = {
+static int parser_action_row305[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row288[] = {
+static int parser_action_row306[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 25, 0, 442
+ 25, 0, 473
};
-static int parser_action_row289[] = {
+static int parser_action_row307[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row290[] = {
+static int parser_action_row308[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row291[] = {
+static int parser_action_row309[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row292[] = {
+static int parser_action_row310[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row293[] = {
+static int parser_action_row311[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row294[] = {
+static int parser_action_row312[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row295[] = {
+static int parser_action_row313[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row296[] = {
+static int parser_action_row314[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row297[] = {
+static int parser_action_row315[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row298[] = {
+static int parser_action_row316[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row299[] = {
+static int parser_action_row317[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row300[] = {
+static int parser_action_row318[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row301[] = {
+static int parser_action_row319[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row302[] = {
+static int parser_action_row320[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row303[] = {
+static int parser_action_row321[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row304[] = {
+static int parser_action_row322[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row305[] = {
+static int parser_action_row323[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row306[] = {
+static int parser_action_row324[] = {
1,
- -1, 1, 758
+ -1, 1, 862
};
-static int parser_action_row307[] = {
+static int parser_action_row325[] = {
17,
- -1, 3, 306,
- 53, 0, 383,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
+ -1, 3, 324,
+ 53, 0, 411,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
};
-static int parser_action_row308[] = {
+static int parser_action_row326[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row309[] = {
+static int parser_action_row327[] = {
2,
- -1, 1, 337,
- 49, 1, 708
+ -1, 1, 417,
+ 49, 1, 1086
};
-static int parser_action_row310[] = {
+static int parser_action_row328[] = {
2,
- -1, 1, 336,
- 49, 1, 707
+ -1, 1, 416,
+ 49, 1, 1085
};
-static int parser_action_row311[] = {
+static int parser_action_row329[] = {
3,
- -1, 3, 310,
+ -1, 3, 328,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row312[] = {
+static int parser_action_row330[] = {
1,
- -1, 1, 412
+ -1, 1, 496
};
-static int parser_action_row313[] = {
+static int parser_action_row331[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row314[] = {
+static int parser_action_row332[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row315[] = {
+static int parser_action_row333[] = {
2,
- -1, 1, 397,
- 58, 0, 467
+ -1, 1, 478,
+ 58, 0, 498
};
-static int parser_action_row316[] = {
+static int parser_action_row334[] = {
3,
- -1, 1, 531,
+ -1, 1, 477,
+ 56, 0, 330,
+ 58, 0, 499
+};
+static int parser_action_row335[] = {
+ 3,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row317[] = {
+static int parser_action_row336[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row318[] = {
+static int parser_action_row337[] = {
1,
- -1, 1, 421
+ -1, 1, 505
};
-static int parser_action_row319[] = {
+static int parser_action_row338[] = {
2,
- -1, 3, 318,
- 80, 0, 319
+ -1, 3, 337,
+ 81, 0, 338
};
-static int parser_action_row320[] = {
+static int parser_action_row339[] = {
1,
- -1, 1, 515
+ -1, 1, 640
};
-static int parser_action_row321[] = {
+static int parser_action_row340[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row322[] = {
+static int parser_action_row341[] = {
23,
- -1, 3, 321,
+ -1, 3, 340,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row323[] = {
+static int parser_action_row342[] = {
22,
- -1, 3, 322,
+ -1, 3, 341,
11, 0, 170,
32, 0, 172,
38, 0, 173,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row324[] = {
+static int parser_action_row343[] = {
3,
- -1, 3, 323,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 342,
+ 47, 0, 380,
+ 80, 0, 381
};
-static int parser_action_row325[] = {
+static int parser_action_row344[] = {
21,
- -1, 3, 324,
+ -1, 3, 343,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row326[] = {
+static int parser_action_row345[] = {
3,
- -1, 1, 471,
- 53, 1, 473,
- 63, 1, 473
+ -1, 1, 555,
+ 53, 1, 557,
+ 63, 1, 557
};
-static int parser_action_row327[] = {
+static int parser_action_row346[] = {
3,
- -1, 3, 326,
- 53, 0, 230,
- 63, 0, 476
+ -1, 3, 345,
+ 53, 0, 239,
+ 63, 0, 509
};
-static int parser_action_row328[] = {
+static int parser_action_row347[] = {
21,
- -1, 3, 327,
+ -1, 3, 346,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row329[] = {
+static int parser_action_row348[] = {
2,
- -1, 1, 475,
- 78, 0, 375
+ -1, 1, 559,
+ 78, 0, 403
};
-static int parser_action_row330[] = {
+static int parser_action_row349[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row331[] = {
+static int parser_action_row350[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 25, 0, 480
+ 25, 0, 513
};
-static int parser_action_row332[] = {
+static int parser_action_row351[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row333[] = {
+static int parser_action_row352[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row334[] = {
+static int parser_action_row353[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row335[] = {
+static int parser_action_row354[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row336[] = {
+static int parser_action_row355[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row337[] = {
+static int parser_action_row356[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row338[] = {
+static int parser_action_row357[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row339[] = {
+static int parser_action_row358[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row340[] = {
+static int parser_action_row359[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row341[] = {
+static int parser_action_row360[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row342[] = {
+static int parser_action_row361[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row343[] = {
+static int parser_action_row362[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row344[] = {
+static int parser_action_row363[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row345[] = {
+static int parser_action_row364[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row346[] = {
+static int parser_action_row365[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row347[] = {
+static int parser_action_row366[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row348[] = {
+static int parser_action_row367[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row349[] = {
+static int parser_action_row368[] = {
2,
- -1, 1, 480,
- 78, 0, 375
+ -1, 1, 564,
+ 78, 0, 403
};
-static int parser_action_row350[] = {
+static int parser_action_row369[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row351[] = {
+static int parser_action_row370[] = {
1,
- -1, 1, 375
+ -1, 1, 455
};
-static int parser_action_row352[] = {
+static int parser_action_row371[] = {
1,
- -1, 1, 359
+ -1, 1, 439
};
-static int parser_action_row353[] = {
+static int parser_action_row372[] = {
1,
- -1, 1, 354
+ -1, 1, 434
};
-static int parser_action_row354[] = {
+static int parser_action_row373[] = {
1,
- -1, 1, 433
+ -1, 1, 517
};
-static int parser_action_row355[] = {
+static int parser_action_row374[] = {
2,
- -1, 1, 475,
- 78, 0, 500
+ -1, 1, 559,
+ 78, 0, 533
};
-static int parser_action_row356[] = {
+static int parser_action_row375[] = {
3,
- -1, 1, 506,
- 51, 0, 272,
- 57, 0, 211
+ -1, 1, 631,
+ 51, 0, 282,
+ 57, 0, 216
};
-static int parser_action_row357[] = {
+static int parser_action_row376[] = {
1,
- -1, 1, 432
+ -1, 1, 516
};
-static int parser_action_row358[] = {
+static int parser_action_row377[] = {
2,
- -1, 3, 357,
- 25, 0, 504
+ -1, 3, 376,
+ 25, 0, 537
};
-static int parser_action_row359[] = {
+static int parser_action_row378[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row360[] = {
+static int parser_action_row379[] = {
2,
- -1, 1, 480,
- 78, 0, 500
+ -1, 1, 564,
+ 78, 0, 533
};
-static int parser_action_row361[] = {
+static int parser_action_row380[] = {
33,
- -1, 3, 360,
+ -1, 3, 379,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row362[] = {
+static int parser_action_row381[] = {
2,
- -1, 3, 361,
- 79, 0, 510
+ -1, 3, 380,
+ 80, 0, 543
};
-static int parser_action_row363[] = {
+static int parser_action_row382[] = {
+ 3,
+ -1, 1, 771,
+ 53, 0, 544,
+ 79, 0, 545
+};
+static int parser_action_row383[] = {
2,
- -1, 1, 328,
- 53, 0, 511
+ -1, 3, 382,
+ 63, 0, 547
};
-static int parser_action_row364[] = {
+static int parser_action_row384[] = {
+ 1,
+ -1, 1, 628
+};
+static int parser_action_row385[] = {
+ 1,
+ -1, 1, 626
+};
+static int parser_action_row386[] = {
+ 1,
+ -1, 1, 627
+};
+static int parser_action_row387[] = {
+ 5,
+ -1, 3, 386,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 81, 0, 387
+};
+static int parser_action_row388[] = {
+ 1,
+ -1, 1, 625
+};
+static int parser_action_row389[] = {
+ 1,
+ -1, 1, 602
+};
+static int parser_action_row390[] = {
+ 3,
+ -1, 1, 604,
+ 51, 0, 550,
+ 79, 0, 205
+};
+static int parser_action_row391[] = {
2,
- -1, 3, 363,
- 63, 0, 512
+ -1, 3, 390,
+ 80, 0, 552
};
-static int parser_action_row365[] = {
+static int parser_action_row392[] = {
+ 3,
+ -1, 1, 404,
+ 53, 0, 553,
+ 79, 0, 205
+};
+static int parser_action_row393[] = {
2,
- -1, 3, 364,
- 56, 0, 513
+ -1, 3, 392,
+ 56, 0, 555
};
-static int parser_action_row366[] = {
+static int parser_action_row394[] = {
1,
- -1, 1, 475
+ -1, 1, 559
};
-static int parser_action_row367[] = {
- 1,
- -1, 1, 494
+static int parser_action_row395[] = {
+ 2,
+ -1, 1, 589,
+ 79, 0, 205
};
-static int parser_action_row368[] = {
+static int parser_action_row396[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row369[] = {
+static int parser_action_row397[] = {
1,
- -1, 1, 480
+ -1, 1, 564
};
-static int parser_action_row370[] = {
+static int parser_action_row398[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row371[] = {
+static int parser_action_row399[] = {
2,
- -1, 3, 370,
- 54, 0, 516
+ -1, 3, 398,
+ 54, 0, 559
};
-static int parser_action_row372[] = {
+static int parser_action_row400[] = {
1,
- -1, 1, 525
+ -1, 1, 650
};
-static int parser_action_row373[] = {
+static int parser_action_row401[] = {
1,
- -1, 1, 524
+ -1, 1, 649
};
-static int parser_action_row374[] = {
+static int parser_action_row402[] = {
23,
- -1, 3, 373,
+ -1, 3, 401,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row375[] = {
+static int parser_action_row403[] = {
23,
- -1, 3, 374,
+ -1, 3, 402,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row376[] = {
+static int parser_action_row404[] = {
3,
- -1, 3, 375,
- 35, 0, 519,
- 80, 0, 520
+ -1, 3, 403,
+ 35, 0, 562,
+ 81, 0, 563
};
-static int parser_action_row377[] = {
+static int parser_action_row405[] = {
1,
- -1, 1, 369
+ -1, 1, 449
};
-static int parser_action_row378[] = {
+static int parser_action_row406[] = {
1,
- -1, 1, 376
+ -1, 1, 456
};
-static int parser_action_row379[] = {
+static int parser_action_row407[] = {
2,
- -1, 3, 378,
- 78, 0, 375
+ -1, 3, 406,
+ 78, 0, 403
};
-static int parser_action_row380[] = {
+static int parser_action_row408[] = {
1,
- -1, 1, 401
+ -1, 1, 485
};
-static int parser_action_row381[] = {
+static int parser_action_row409[] = {
1,
- -1, 1, 406
+ -1, 1, 490
};
-static int parser_action_row382[] = {
+static int parser_action_row410[] = {
4,
- -1, 3, 381,
- 8, 0, 523,
- 57, 0, 268,
- 80, 0, 269
+ -1, 3, 409,
+ 8, 0, 566,
+ 57, 0, 278,
+ 81, 0, 279
};
-static int parser_action_row383[] = {
+static int parser_action_row411[] = {
1,
- -1, 1, 104
+ -1, 1, 138
};
-static int parser_action_row384[] = {
+static int parser_action_row412[] = {
2,
- -1, 3, 383,
- 54, 0, 525
+ -1, 3, 411,
+ 54, 0, 568
};
-static int parser_action_row385[] = {
+static int parser_action_row413[] = {
1,
- -1, 1, 263
+ -1, 1, 336
};
-static int parser_action_row386[] = {
+static int parser_action_row414[] = {
1,
- -1, 1, 264
+ -1, 1, 337
};
-static int parser_action_row387[] = {
+static int parser_action_row415[] = {
1,
- -1, 1, 265
+ -1, 1, 338
};
-static int parser_action_row388[] = {
+static int parser_action_row416[] = {
1,
- -1, 1, 266
+ -1, 1, 339
};
-static int parser_action_row389[] = {
+static int parser_action_row417[] = {
1,
- -1, 1, 267
+ -1, 1, 340
};
-static int parser_action_row390[] = {
+static int parser_action_row418[] = {
1,
- -1, 1, 268
+ -1, 1, 341
};
-static int parser_action_row391[] = {
+static int parser_action_row419[] = {
1,
- -1, 1, 269
+ -1, 1, 342
};
-static int parser_action_row392[] = {
+static int parser_action_row420[] = {
1,
- -1, 1, 272
+ -1, 1, 345
};
-static int parser_action_row393[] = {
+static int parser_action_row421[] = {
1,
- -1, 1, 270
+ -1, 1, 343
};
-static int parser_action_row394[] = {
+static int parser_action_row422[] = {
1,
- -1, 1, 274
+ -1, 1, 347
};
-static int parser_action_row395[] = {
+static int parser_action_row423[] = {
1,
- -1, 1, 273
+ -1, 1, 346
};
-static int parser_action_row396[] = {
+static int parser_action_row424[] = {
1,
- -1, 1, 271
+ -1, 1, 344
};
-static int parser_action_row397[] = {
+static int parser_action_row425[] = {
1,
- -1, 1, 275
+ -1, 1, 348
};
-static int parser_action_row398[] = {
+static int parser_action_row426[] = {
1,
- -1, 1, 277
+ -1, 1, 350
};
-static int parser_action_row399[] = {
+static int parser_action_row427[] = {
2,
- -1, 1, 262,
- 58, 0, 526
+ -1, 1, 335,
+ 58, 0, 569
};
-static int parser_action_row400[] = {
+static int parser_action_row428[] = {
5,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 51, 0, 527,
- 56, 0, 312
+ 51, 0, 570,
+ 56, 0, 330
};
-static int parser_action_row401[] = {
+static int parser_action_row429[] = {
1,
- -1, 1, 108
+ -1, 1, 142
};
-static int parser_action_row402[] = {
+static int parser_action_row430[] = {
2,
- -1, 3, 401,
- 79, 0, 532
+ -1, 3, 429,
+ 80, 0, 575
};
-static int parser_action_row403[] = {
+static int parser_action_row431[] = {
1,
- -1, 1, 346
+ -1, 1, 426
};
-static int parser_action_row404[] = {
+static int parser_action_row432[] = {
1,
- -1, 1, 855
+ -1, 1, 1273
};
-static int parser_action_row405[] = {
+static int parser_action_row433[] = {
30,
- -1, 1, 343,
+ -1, 1, 423,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row406[] = {
+static int parser_action_row434[] = {
23,
- -1, 3, 405,
+ -1, 3, 433,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row407[] = {
+static int parser_action_row435[] = {
5,
- -1, 3, 406,
- 11, 0, 533,
- 46, 0, 534,
- 80, 0, 535,
- 81, 0, 536
+ -1, 3, 434,
+ 11, 0, 576,
+ 46, 0, 577,
+ 81, 0, 578,
+ 82, 0, 579
};
-static int parser_action_row408[] = {
+static int parser_action_row436[] = {
23,
- -1, 3, 407,
+ -1, 3, 435,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row409[] = {
+static int parser_action_row437[] = {
23,
- -1, 3, 408,
+ -1, 3, 436,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row410[] = {
+static int parser_action_row438[] = {
23,
- -1, 3, 409,
+ -1, 3, 437,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row411[] = {
+static int parser_action_row439[] = {
1,
- -1, 1, 857
+ -1, 1, 595
};
-static int parser_action_row412[] = {
+static int parser_action_row440[] = {
1,
- -1, 1, 498
+ -1, 1, 1275
};
-static int parser_action_row413[] = {
+static int parser_action_row441[] = {
+ 2,
+ -1, 1, 594,
+ 79, 0, 205
+};
+static int parser_action_row442[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row414[] = {
+static int parser_action_row443[] = {
1,
- -1, 1, 477
+ -1, 1, 561
};
-static int parser_action_row415[] = {
+static int parser_action_row444[] = {
1,
- -1, 1, 371
+ -1, 1, 451
};
-static int parser_action_row416[] = {
+static int parser_action_row445[] = {
1,
-1, 1, 46
};
-static int parser_action_row417[] = {
+static int parser_action_row446[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 30
+ 93, 1, 30
};
-static int parser_action_row418[] = {
+static int parser_action_row447[] = {
1,
-1, 1, 54
};
-static int parser_action_row419[] = {
+static int parser_action_row448[] = {
1,
-1, 1, 58
};
-static int parser_action_row420[] = {
+static int parser_action_row449[] = {
1,
-1, 1, 60
};
-static int parser_action_row421[] = {
+static int parser_action_row450[] = {
2,
- -1, 3, 420,
- 9, 0, 306
+ -1, 3, 449,
+ 9, 0, 324
};
-static int parser_action_row422[] = {
+static int parser_action_row451[] = {
1,
-1, 1, 47
};
-static int parser_action_row423[] = {
+static int parser_action_row452[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 92, 1, 31
+ 93, 1, 31
};
-static int parser_action_row424[] = {
+static int parser_action_row453[] = {
1,
-1, 1, 55
};
-static int parser_action_row425[] = {
+static int parser_action_row454[] = {
1,
-1, 1, 59
};
-static int parser_action_row426[] = {
+static int parser_action_row455[] = {
1,
-1, 1, 61
};
-static int parser_action_row427[] = {
+static int parser_action_row456[] = {
2,
- -1, 3, 426,
- 80, 0, 543
+ -1, 3, 455,
+ 81, 0, 587
};
-static int parser_action_row428[] = {
+static int parser_action_row457[] = {
+ 7,
+ -1, 3, 456,
+ 0, 0, 87,
+ 1, 0, 88,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 81, 0, 387
+};
+static int parser_action_row458[] = {
+ 3,
+ -1, 3, 457,
+ 0, 0, 87,
+ 1, 0, 88
+};
+static int parser_action_row459[] = {
1,
-1, 1, 64
};
-static int parser_action_row429[] = {
+static int parser_action_row460[] = {
2,
- -1, 1, 518,
- 57, 0, 211
+ -1, 1, 643,
+ 57, 0, 216
};
-static int parser_action_row430[] = {
+static int parser_action_row461[] = {
24,
- -1, 3, 429,
+ -1, 3, 460,
11, 0, 170,
23, 0, 171,
32, 0, 172,
45, 0, 50,
48, 0, 176,
51, 0, 52,
- 52, 0, 545,
+ 52, 0, 593,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row431[] = {
+static int parser_action_row462[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row432[] = {
+static int parser_action_row463[] = {
1,
- -1, 1, 723
+ -1, 1, 827
};
-static int parser_action_row433[] = {
+static int parser_action_row464[] = {
3,
- -1, 1, 506,
- 51, 0, 272,
- 63, 0, 548
+ -1, 1, 631,
+ 51, 0, 282,
+ 63, 0, 596
};
-static int parser_action_row434[] = {
+static int parser_action_row465[] = {
1,
- -1, 1, 745
+ -1, 1, 849
};
-static int parser_action_row435[] = {
+static int parser_action_row466[] = {
3,
- -1, 3, 434,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 465,
+ 47, 0, 380,
+ 80, 0, 381
};
-static int parser_action_row436[] = {
+static int parser_action_row467[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row437[] = {
+static int parser_action_row468[] = {
6,
- -1, 1, 509,
- 53, 1, 505,
- 58, 1, 505,
- 59, 1, 505,
- 60, 1, 505,
- 63, 1, 505
+ -1, 1, 634,
+ 53, 1, 630,
+ 58, 1, 630,
+ 59, 1, 630,
+ 60, 1, 630,
+ 63, 1, 630
};
-static int parser_action_row438[] = {
+static int parser_action_row469[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row439[] = {
+static int parser_action_row470[] = {
2,
- -1, 3, 438,
- 52, 0, 553
+ -1, 3, 469,
+ 52, 0, 601
};
-static int parser_action_row440[] = {
+static int parser_action_row471[] = {
1,
- -1, 1, 744
+ -1, 1, 848
};
-static int parser_action_row441[] = {
+static int parser_action_row472[] = {
1,
- -1, 1, 755
+ -1, 1, 859
};
-static int parser_action_row442[] = {
+static int parser_action_row473[] = {
20,
- -1, 3, 441,
+ -1, 3, 472,
11, 0, 122,
32, 0, 124,
38, 0, 125,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row443[] = {
+static int parser_action_row474[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row444[] = {
+static int parser_action_row475[] = {
20,
- -1, 3, 443,
+ -1, 3, 474,
11, 0, 122,
32, 0, 124,
38, 0, 125,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row445[] = {
+static int parser_action_row476[] = {
19,
- -1, 3, 444,
+ -1, 3, 475,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row446[] = {
+static int parser_action_row477[] = {
19,
- -1, 3, 445,
+ -1, 3, 476,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row447[] = {
+static int parser_action_row478[] = {
19,
- -1, 3, 446,
+ -1, 3, 477,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row448[] = {
+static int parser_action_row479[] = {
3,
- -1, 3, 447,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 478,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row449[] = {
+static int parser_action_row480[] = {
19,
- -1, 3, 448,
+ -1, 3, 479,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row450[] = {
+static int parser_action_row481[] = {
19,
- -1, 3, 449,
+ -1, 3, 480,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row451[] = {
+static int parser_action_row482[] = {
19,
- -1, 3, 450,
+ -1, 3, 481,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row452[] = {
+static int parser_action_row483[] = {
19,
- -1, 3, 451,
+ -1, 3, 482,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row453[] = {
+static int parser_action_row484[] = {
19,
- -1, 3, 452,
+ -1, 3, 483,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row454[] = {
+static int parser_action_row485[] = {
19,
- -1, 3, 453,
+ -1, 3, 484,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row455[] = {
+static int parser_action_row486[] = {
19,
- -1, 3, 454,
+ -1, 3, 485,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row456[] = {
+static int parser_action_row487[] = {
19,
- -1, 3, 455,
+ -1, 3, 486,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row457[] = {
+static int parser_action_row488[] = {
19,
- -1, 3, 456,
+ -1, 3, 487,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row458[] = {
+static int parser_action_row489[] = {
19,
- -1, 3, 457,
+ -1, 3, 488,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row459[] = {
+static int parser_action_row490[] = {
19,
- -1, 3, 458,
+ -1, 3, 489,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row460[] = {
+static int parser_action_row491[] = {
19,
- -1, 3, 459,
+ -1, 3, 490,
11, 0, 122,
38, 0, 125,
40, 0, 126,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row461[] = {
+static int parser_action_row492[] = {
5,
- -1, 3, 460,
- 11, 0, 573,
- 46, 0, 574,
- 80, 0, 575,
- 81, 0, 576
+ -1, 3, 491,
+ 11, 0, 621,
+ 46, 0, 622,
+ 81, 0, 623,
+ 82, 0, 624
};
-static int parser_action_row462[] = {
+static int parser_action_row493[] = {
5,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 51, 0, 527,
- 56, 0, 312
+ 51, 0, 570,
+ 56, 0, 330
};
-static int parser_action_row463[] = {
+static int parser_action_row494[] = {
2,
- -1, 3, 462,
- 79, 0, 579
+ -1, 3, 493,
+ 80, 0, 627
};
-static int parser_action_row464[] = {
+static int parser_action_row495[] = {
31,
- -1, 3, 463,
- 8, 0, 580,
+ -1, 3, 494,
+ 8, 0, 628,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row465[] = {
+static int parser_action_row496[] = {
3,
- -1, 3, 464,
+ -1, 3, 495,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row466[] = {
+static int parser_action_row497[] = {
3,
- -1, 3, 465,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 496,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row467[] = {
+static int parser_action_row498[] = {
23,
- -1, 3, 466,
+ -1, 3, 497,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row468[] = {
+static int parser_action_row499[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row469[] = {
- 2,
- -1, 3, 468,
- 24, 0, 585
-};
-static int parser_action_row470[] = {
- 2,
- -1, 3, 469,
- 14, 0, 586
+static int parser_action_row500[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row471[] = {
+static int parser_action_row501[] = {
+ 2,
+ -1, 1, 479,
+ 58, 0, 634
+};
+static int parser_action_row502[] = {
+ 2,
+ -1, 3, 501,
+ 24, 0, 635
+};
+static int parser_action_row503[] = {
+ 2,
+ -1, 3, 502,
+ 14, 0, 636
+};
+static int parser_action_row504[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 52, 0, 587
+ 52, 0, 637
};
-static int parser_action_row472[] = {
+static int parser_action_row505[] = {
3,
- -1, 3, 471,
- 29, 0, 589,
- 55, 0, 590
+ -1, 3, 504,
+ 29, 0, 639,
+ 55, 0, 640
};
-static int parser_action_row473[] = {
+static int parser_action_row506[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row474[] = {
+static int parser_action_row507[] = {
1,
- -1, 1, 445
+ -1, 1, 529
};
-static int parser_action_row475[] = {
+static int parser_action_row508[] = {
3,
- -1, 1, 506,
- 51, 0, 272,
- 63, 0, 512
+ -1, 1, 631,
+ 51, 0, 282,
+ 63, 0, 547
};
-static int parser_action_row476[] = {
+static int parser_action_row509[] = {
1,
- -1, 1, 467
+ -1, 1, 551
};
-static int parser_action_row477[] = {
+static int parser_action_row510[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row478[] = {
+static int parser_action_row511[] = {
1,
- -1, 1, 466
+ -1, 1, 550
};
-static int parser_action_row479[] = {
+static int parser_action_row512[] = {
1,
- -1, 1, 436
+ -1, 1, 520
};
-static int parser_action_row480[] = {
+static int parser_action_row513[] = {
22,
- -1, 3, 479,
+ -1, 3, 512,
11, 0, 170,
32, 0, 172,
38, 0, 173,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row481[] = {
+static int parser_action_row514[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row482[] = {
+static int parser_action_row515[] = {
22,
- -1, 3, 481,
+ -1, 3, 514,
11, 0, 170,
32, 0, 172,
38, 0, 173,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row483[] = {
+static int parser_action_row516[] = {
21,
- -1, 3, 482,
+ -1, 3, 515,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row484[] = {
+static int parser_action_row517[] = {
21,
- -1, 3, 483,
+ -1, 3, 516,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row485[] = {
+static int parser_action_row518[] = {
21,
- -1, 3, 484,
+ -1, 3, 517,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row486[] = {
+static int parser_action_row519[] = {
3,
- -1, 3, 485,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 518,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row487[] = {
+static int parser_action_row520[] = {
21,
- -1, 3, 486,
+ -1, 3, 519,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row488[] = {
+static int parser_action_row521[] = {
21,
- -1, 3, 487,
+ -1, 3, 520,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row489[] = {
+static int parser_action_row522[] = {
21,
- -1, 3, 488,
+ -1, 3, 521,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row490[] = {
+static int parser_action_row523[] = {
21,
- -1, 3, 489,
+ -1, 3, 522,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row491[] = {
+static int parser_action_row524[] = {
21,
- -1, 3, 490,
+ -1, 3, 523,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row492[] = {
+static int parser_action_row525[] = {
21,
- -1, 3, 491,
+ -1, 3, 524,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row493[] = {
+static int parser_action_row526[] = {
21,
- -1, 3, 492,
+ -1, 3, 525,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row494[] = {
+static int parser_action_row527[] = {
21,
- -1, 3, 493,
+ -1, 3, 526,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row495[] = {
+static int parser_action_row528[] = {
21,
- -1, 3, 494,
+ -1, 3, 527,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row496[] = {
+static int parser_action_row529[] = {
21,
- -1, 3, 495,
+ -1, 3, 528,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row497[] = {
+static int parser_action_row530[] = {
21,
- -1, 3, 496,
+ -1, 3, 529,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row498[] = {
+static int parser_action_row531[] = {
21,
- -1, 3, 497,
+ -1, 3, 530,
11, 0, 170,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row499[] = {
+static int parser_action_row532[] = {
5,
- -1, 3, 498,
- 11, 0, 613,
- 46, 0, 534,
- 80, 0, 614,
- 81, 0, 615
+ -1, 3, 531,
+ 11, 0, 663,
+ 46, 0, 577,
+ 81, 0, 664,
+ 82, 0, 665
};
-static int parser_action_row500[] = {
+static int parser_action_row533[] = {
1,
- -1, 1, 437
+ -1, 1, 521
};
-static int parser_action_row501[] = {
+static int parser_action_row534[] = {
3,
- -1, 3, 500,
- 35, 0, 519,
- 80, 0, 520
+ -1, 3, 533,
+ 35, 0, 562,
+ 81, 0, 563
};
-static int parser_action_row502[] = {
+static int parser_action_row535[] = {
2,
- -1, 3, 501,
- 78, 0, 500
+ -1, 3, 534,
+ 78, 0, 533
};
-static int parser_action_row503[] = {
+static int parser_action_row536[] = {
1,
- -1, 1, 702
+ -1, 1, 1036
};
-static int parser_action_row504[] = {
+static int parser_action_row537[] = {
1,
- -1, 1, 661
+ -1, 1, 991
};
-static int parser_action_row505[] = {
+static int parser_action_row538[] = {
33,
- -1, 3, 504,
+ -1, 3, 537,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row506[] = {
+static int parser_action_row539[] = {
5,
- -1, 3, 505,
- 11, 0, 613,
- 46, 0, 534,
- 80, 0, 619,
- 81, 0, 615
+ -1, 3, 538,
+ 11, 0, 663,
+ 46, 0, 577,
+ 81, 0, 669,
+ 82, 0, 665
};
-static int parser_action_row507[] = {
+static int parser_action_row540[] = {
1,
- -1, 1, 703
+ -1, 1, 1037
};
-static int parser_action_row508[] = {
+static int parser_action_row541[] = {
1,
- -1, 1, 338
+ -1, 1, 418
};
-static int parser_action_row509[] = {
+static int parser_action_row542[] = {
1,
- -1, 1, 429
+ -1, 1, 513
};
-static int parser_action_row510[] = {
+static int parser_action_row543[] = {
31,
- -1, 3, 509,
- 8, 0, 620,
+ -1, 3, 542,
+ 8, 0, 670,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row511[] = {
- 2,
- -1, 1, 329,
- 53, 0, 622
+static int parser_action_row544[] = {
+ 3,
+ -1, 1, 772,
+ 53, 0, 672,
+ 79, 0, 545
};
-static int parser_action_row512[] = {
+static int parser_action_row545[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row513[] = {
+static int parser_action_row546[] = {
+ 6,
+ -1, 3, 545,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 51, 0, 675,
+ 81, 0, 387
+};
+static int parser_action_row547[] = {
+ 1,
+ -1, 1, 773
+};
+static int parser_action_row548[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row514[] = {
+static int parser_action_row549[] = {
+ 2,
+ -1, 1, 609,
+ 55, 0, 679
+};
+static int parser_action_row550[] = {
+ 2,
+ -1, 3, 549,
+ 52, 0, 682
+};
+static int parser_action_row551[] = {
+ 36,
+ -1, 3, 550,
+ 11, 0, 170,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 171,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 32, 0, 172,
+ 33, 0, 683,
+ 34, 0, 684,
+ 35, 0, 685,
+ 36, 0, 686,
+ 37, 0, 44,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 47, 0, 390,
+ 48, 0, 176,
+ 50, 0, 687,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 79, 0, 205,
+ 80, 0, 688,
+ 81, 0, 689,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row552[] = {
+ 1,
+ -1, 1, 605
+};
+static int parser_action_row553[] = {
+ 3,
+ -1, 1, 405,
+ 53, 0, 704,
+ 79, 0, 205
+};
+static int parser_action_row554[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row555[] = {
+ 1,
+ -1, 1, 406
+};
+static int parser_action_row556[] = {
23,
- -1, 3, 513,
+ -1, 3, 555,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row515[] = {
+static int parser_action_row557[] = {
+ 1,
+ -1, 1, 590
+};
+static int parser_action_row558[] = {
5,
- -1, 3, 514,
- 11, 0, 613,
- 46, 0, 534,
- 80, 0, 626,
- 81, 0, 615
+ -1, 3, 557,
+ 11, 0, 663,
+ 46, 0, 577,
+ 81, 0, 708,
+ 82, 0, 665
};
-static int parser_action_row516[] = {
+static int parser_action_row559[] = {
3,
- -1, 1, 512,
- 55, 0, 627,
- 62, 0, 628
+ -1, 1, 637,
+ 55, 0, 709,
+ 62, 0, 710
};
-static int parser_action_row517[] = {
+static int parser_action_row560[] = {
1,
- -1, 1, 511
+ -1, 1, 636
};
-static int parser_action_row518[] = {
+static int parser_action_row561[] = {
1,
- -1, 1, 403
+ -1, 1, 487
};
-static int parser_action_row519[] = {
+static int parser_action_row562[] = {
1,
- -1, 1, 408
+ -1, 1, 492
};
-static int parser_action_row520[] = {
+static int parser_action_row563[] = {
1,
- -1, 1, 394
+ -1, 1, 474
};
-static int parser_action_row521[] = {
+static int parser_action_row564[] = {
1,
- -1, 1, 393
+ -1, 1, 473
};
-static int parser_action_row522[] = {
+static int parser_action_row565[] = {
5,
- -1, 3, 521,
- 14, 0, 631,
- 51, 0, 632,
- 58, 0, 633,
- 80, 0, 319
+ -1, 3, 564,
+ 14, 0, 713,
+ 51, 0, 714,
+ 58, 0, 715,
+ 81, 0, 338
};
-static int parser_action_row523[] = {
+static int parser_action_row566[] = {
1,
- -1, 1, 377
+ -1, 1, 457
};
-static int parser_action_row524[] = {
+static int parser_action_row567[] = {
3,
- -1, 3, 523,
+ -1, 3, 566,
0, 0, 87,
1, 0, 88
};
-static int parser_action_row525[] = {
- 3,
- -1, 3, 524,
+static int parser_action_row568[] = {
+ 4,
+ -1, 3, 567,
0, 0, 87,
- 1, 0, 88
+ 1, 0, 88,
+ 13, 0, 456
};
-static int parser_action_row526[] = {
+static int parser_action_row569[] = {
2,
- -1, 1, 276,
- 58, 0, 637
+ -1, 1, 349,
+ 58, 0, 720
};
-static int parser_action_row527[] = {
+static int parser_action_row570[] = {
1,
- -1, 1, 278
+ -1, 1, 351
};
-static int parser_action_row528[] = {
+static int parser_action_row571[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row529[] = {
+static int parser_action_row572[] = {
6,
- -1, 3, 528,
- 3, 0, 639,
- 13, 0, 640,
- 14, 0, 641,
+ -1, 3, 571,
+ 3, 0, 722,
+ 13, 0, 723,
+ 14, 0, 724,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row530[] = {
+static int parser_action_row573[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row531[] = {
+static int parser_action_row574[] = {
3,
- -1, 1, 290,
- 35, 0, 645,
- 78, 0, 646
+ -1, 1, 363,
+ 35, 0, 730,
+ 78, 0, 731
};
-static int parser_action_row532[] = {
+static int parser_action_row575[] = {
2,
- -1, 3, 531,
- 58, 0, 650
+ -1, 3, 574,
+ 58, 0, 735
};
-static int parser_action_row533[] = {
+static int parser_action_row576[] = {
6,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
29, 0, 39,
- 53, 0, 651,
- 91, 0, 62
+ 53, 0, 736,
+ 92, 0, 62
};
-static int parser_action_row534[] = {
+static int parser_action_row577[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row535[] = {
+static int parser_action_row578[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row536[] = {
+static int parser_action_row579[] = {
27,
- -1, 1, 506,
- 0, 1, 510,
- 1, 1, 510,
- 8, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
+ 53, 1, 631,
+ 58, 1, 631,
+ 59, 1, 631,
+ 60, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 78, 1, 510,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61,
- 92, 1, 510
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row537[] = {
+static int parser_action_row580[] = {
4,
- -1, 1, 472,
- 58, 0, 665,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 556,
+ 58, 0, 752,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row538[] = {
+static int parser_action_row581[] = {
1,
- -1, 1, 404
+ -1, 1, 488
};
-static int parser_action_row539[] = {
+static int parser_action_row582[] = {
1,
- -1, 1, 409
+ -1, 1, 493
};
-static int parser_action_row540[] = {
+static int parser_action_row583[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row541[] = {
+static int parser_action_row584[] = {
1,
- -1, 1, 499
+ -1, 1, 596
};
-static int parser_action_row542[] = {
+static int parser_action_row585[] = {
+ 1,
+ -1, 1, 597
+};
+static int parser_action_row586[] = {
1,
-1, 1, 62
};
-static int parser_action_row543[] = {
+static int parser_action_row587[] = {
1,
-1, 1, 63
};
-static int parser_action_row544[] = {
+static int parser_action_row588[] = {
2,
- -1, 1, 519,
- 57, 0, 211
+ -1, 1, 644,
+ 57, 0, 216
};
-static int parser_action_row545[] = {
+static int parser_action_row589[] = {
2,
- -1, 3, 544,
- 80, 0, 668
+ -1, 3, 588,
+ 81, 0, 755
};
-static int parser_action_row546[] = {
+static int parser_action_row590[] = {
1,
- -1, 1, 505
+ -1, 1, 321
};
-static int parser_action_row547[] = {
+static int parser_action_row591[] = {
+ 1,
+ -1, 1, 608
+};
+static int parser_action_row592[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row593[] = {
+ 1,
+ -1, 1, 65
+};
+static int parser_action_row594[] = {
+ 1,
+ -1, 1, 630
+};
+static int parser_action_row595[] = {
2,
- -1, 3, 546,
- 52, 0, 669
+ -1, 3, 594,
+ 52, 0, 760
};
-static int parser_action_row548[] = {
+static int parser_action_row596[] = {
2,
- -1, 3, 547,
- 24, 0, 670
+ -1, 3, 595,
+ 24, 0, 761
};
-static int parser_action_row549[] = {
+static int parser_action_row597[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row550[] = {
+static int parser_action_row598[] = {
1,
- -1, 1, 747
+ -1, 1, 851
};
-static int parser_action_row551[] = {
+static int parser_action_row599[] = {
2,
- -1, 3, 550,
- 63, 0, 548
+ -1, 3, 598,
+ 63, 0, 596
};
-static int parser_action_row552[] = {
+static int parser_action_row600[] = {
5,
- -1, 3, 551,
- 11, 0, 573,
- 46, 0, 574,
- 80, 0, 575,
- 81, 0, 672
+ -1, 3, 599,
+ 11, 0, 621,
+ 46, 0, 622,
+ 81, 0, 623,
+ 82, 0, 763
};
-static int parser_action_row553[] = {
+static int parser_action_row601[] = {
2,
- -1, 1, 512,
- 55, 0, 627
+ -1, 1, 637,
+ 55, 0, 709
};
-static int parser_action_row554[] = {
+static int parser_action_row602[] = {
6,
- -1, 1, 507,
- 53, 1, 504,
- 58, 1, 504,
- 59, 1, 504,
- 60, 1, 504,
- 63, 1, 504
+ -1, 1, 632,
+ 53, 1, 629,
+ 58, 1, 629,
+ 59, 1, 629,
+ 60, 1, 629,
+ 63, 1, 629
};
-static int parser_action_row555[] = {
+static int parser_action_row603[] = {
1,
- -1, 1, 720
+ -1, 1, 824
};
-static int parser_action_row556[] = {
+static int parser_action_row604[] = {
20,
- -1, 3, 555,
+ -1, 3, 603,
11, 0, 122,
32, 0, 124,
38, 0, 125,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row557[] = {
+static int parser_action_row605[] = {
1,
- -1, 1, 719
+ -1, 1, 823
};
-static int parser_action_row558[] = {
+static int parser_action_row606[] = {
3,
- -1, 1, 730,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 834,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row559[] = {
+static int parser_action_row607[] = {
3,
- -1, 1, 733,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 837,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row560[] = {
+static int parser_action_row608[] = {
3,
- -1, 1, 726,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 830,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row561[] = {
+static int parser_action_row609[] = {
1,
- -1, 1, 735
+ -1, 1, 839
};
-static int parser_action_row562[] = {
+static int parser_action_row610[] = {
4,
- -1, 1, 737,
- 66, 0, 301,
- 67, 0, 302,
- 68, 0, 303
+ -1, 1, 841,
+ 66, 0, 319,
+ 67, 0, 320,
+ 68, 0, 321
};
-static int parser_action_row563[] = {
+static int parser_action_row611[] = {
4,
- -1, 1, 738,
- 66, 0, 301,
- 67, 0, 302,
- 68, 0, 303
+ -1, 1, 842,
+ 66, 0, 319,
+ 67, 0, 320,
+ 68, 0, 321
};
-static int parser_action_row564[] = {
+static int parser_action_row612[] = {
3,
- -1, 1, 725,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 829,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row565[] = {
+static int parser_action_row613[] = {
3,
- -1, 1, 727,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 831,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row566[] = {
+static int parser_action_row614[] = {
3,
- -1, 1, 728,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 832,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row567[] = {
+static int parser_action_row615[] = {
3,
- -1, 1, 729,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 833,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row568[] = {
+static int parser_action_row616[] = {
3,
- -1, 1, 731,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 835,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row569[] = {
+static int parser_action_row617[] = {
3,
- -1, 1, 732,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 836,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row570[] = {
+static int parser_action_row618[] = {
3,
- -1, 1, 734,
- 64, 0, 292,
- 65, 0, 293
+ -1, 1, 838,
+ 64, 0, 310,
+ 65, 0, 311
};
-static int parser_action_row571[] = {
+static int parser_action_row619[] = {
1,
- -1, 1, 740
+ -1, 1, 844
};
-static int parser_action_row572[] = {
+static int parser_action_row620[] = {
1,
- -1, 1, 741
+ -1, 1, 845
};
-static int parser_action_row573[] = {
+static int parser_action_row621[] = {
1,
- -1, 1, 742
+ -1, 1, 846
};
-static int parser_action_row574[] = {
+static int parser_action_row622[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row575[] = {
+static int parser_action_row623[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row576[] = {
+static int parser_action_row624[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row577[] = {
+static int parser_action_row625[] = {
1,
- -1, 1, 750
+ -1, 1, 854
};
-static int parser_action_row578[] = {
+static int parser_action_row626[] = {
6,
- -1, 3, 577,
- 3, 0, 639,
- 13, 0, 677,
- 14, 0, 678,
+ -1, 3, 625,
+ 3, 0, 722,
+ 13, 0, 768,
+ 14, 0, 769,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row579[] = {
+static int parser_action_row627[] = {
2,
- -1, 3, 578,
- 58, 0, 681
+ -1, 3, 626,
+ 58, 0, 774
};
-static int parser_action_row580[] = {
+static int parser_action_row628[] = {
6,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
29, 0, 39,
- 53, 0, 651,
- 91, 0, 62
+ 53, 0, 736,
+ 92, 0, 62
};
-static int parser_action_row581[] = {
+static int parser_action_row629[] = {
1,
- -1, 1, 344
+ -1, 1, 424
};
-static int parser_action_row582[] = {
+static int parser_action_row630[] = {
31,
- -1, 3, 581,
- 8, 0, 687,
+ -1, 3, 629,
+ 8, 0, 781,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row583[] = {
+static int parser_action_row631[] = {
1,
- -1, 1, 335
+ -1, 1, 415
};
-static int parser_action_row584[] = {
+static int parser_action_row632[] = {
1,
- -1, 1, 398
+ -1, 1, 480
};
-static int parser_action_row585[] = {
+static int parser_action_row633[] = {
23,
- -1, 3, 584,
+ -1, 3, 632,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row586[] = {
+static int parser_action_row634[] = {
+ 23,
+ -1, 3, 633,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row635[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row636[] = {
34,
- -1, 3, 585,
+ -1, 3, 635,
0, 0, 1,
1, 0, 2,
- 8, 0, 689,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 25, 0, 694,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 785,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 25, 0, 790,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row587[] = {
+static int parser_action_row637[] = {
33,
- -1, 3, 586,
+ -1, 3, 636,
0, 0, 1,
1, 0, 2,
8, 0, 155,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row588[] = {
+static int parser_action_row638[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row589[] = {
+static int parser_action_row639[] = {
2,
- -1, 3, 588,
- 55, 0, 590
+ -1, 3, 638,
+ 55, 0, 640
};
-static int parser_action_row590[] = {
+static int parser_action_row640[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row591[] = {
+static int parser_action_row641[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row592[] = {
+static int parser_action_row642[] = {
2,
- -1, 3, 591,
- 24, 0, 726
+ -1, 3, 641,
+ 24, 0, 822
};
-static int parser_action_row593[] = {
+static int parser_action_row643[] = {
1,
- -1, 1, 469
+ -1, 1, 553
};
-static int parser_action_row594[] = {
+static int parser_action_row644[] = {
5,
- -1, 3, 593,
- 11, 0, 613,
- 46, 0, 534,
- 80, 0, 626,
- 81, 0, 727
+ -1, 3, 643,
+ 11, 0, 663,
+ 46, 0, 577,
+ 81, 0, 708,
+ 82, 0, 823
};
-static int parser_action_row595[] = {
+static int parser_action_row645[] = {
1,
- -1, 1, 442
+ -1, 1, 526
};
-static int parser_action_row596[] = {
+static int parser_action_row646[] = {
22,
- -1, 3, 595,
+ -1, 3, 645,
11, 0, 170,
32, 0, 172,
38, 0, 173,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row597[] = {
+static int parser_action_row647[] = {
1,
- -1, 1, 441
+ -1, 1, 525
};
-static int parser_action_row598[] = {
+static int parser_action_row648[] = {
3,
- -1, 1, 452,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 536,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row599[] = {
+static int parser_action_row649[] = {
3,
- -1, 1, 455,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 539,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row600[] = {
+static int parser_action_row650[] = {
3,
- -1, 1, 448,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 532,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row601[] = {
+static int parser_action_row651[] = {
1,
- -1, 1, 457
+ -1, 1, 541
};
-static int parser_action_row602[] = {
+static int parser_action_row652[] = {
4,
- -1, 1, 459,
- 66, 0, 344,
- 67, 0, 345,
- 68, 0, 346
+ -1, 1, 543,
+ 66, 0, 363,
+ 67, 0, 364,
+ 68, 0, 365
};
-static int parser_action_row603[] = {
+static int parser_action_row653[] = {
4,
- -1, 1, 460,
- 66, 0, 344,
- 67, 0, 345,
- 68, 0, 346
+ -1, 1, 544,
+ 66, 0, 363,
+ 67, 0, 364,
+ 68, 0, 365
};
-static int parser_action_row604[] = {
+static int parser_action_row654[] = {
3,
- -1, 1, 447,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 531,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row605[] = {
+static int parser_action_row655[] = {
3,
- -1, 1, 449,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 533,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row606[] = {
+static int parser_action_row656[] = {
3,
- -1, 1, 450,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 534,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row607[] = {
+static int parser_action_row657[] = {
3,
- -1, 1, 451,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 535,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row608[] = {
+static int parser_action_row658[] = {
3,
- -1, 1, 453,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 537,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row609[] = {
+static int parser_action_row659[] = {
3,
- -1, 1, 454,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 538,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row610[] = {
+static int parser_action_row660[] = {
3,
- -1, 1, 456,
- 64, 0, 335,
- 65, 0, 336
+ -1, 1, 540,
+ 64, 0, 354,
+ 65, 0, 355
};
-static int parser_action_row611[] = {
+static int parser_action_row661[] = {
1,
- -1, 1, 462
+ -1, 1, 546
};
-static int parser_action_row612[] = {
+static int parser_action_row662[] = {
1,
- -1, 1, 463
+ -1, 1, 547
};
-static int parser_action_row613[] = {
+static int parser_action_row663[] = {
1,
- -1, 1, 464
+ -1, 1, 548
};
-static int parser_action_row614[] = {
+static int parser_action_row664[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row615[] = {
+static int parser_action_row665[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row616[] = {
+static int parser_action_row666[] = {
1,
- -1, 1, 472
+ -1, 1, 556
};
-static int parser_action_row617[] = {
+static int parser_action_row667[] = {
5,
- -1, 3, 616,
- 14, 0, 730,
- 51, 0, 731,
- 58, 0, 732,
- 80, 0, 319
+ -1, 3, 666,
+ 14, 0, 826,
+ 51, 0, 827,
+ 58, 0, 828,
+ 81, 0, 338
};
-static int parser_action_row618[] = {
+static int parser_action_row668[] = {
1,
- -1, 1, 662
+ -1, 1, 992
};
-static int parser_action_row619[] = {
+static int parser_action_row669[] = {
1,
- -1, 1, 430
+ -1, 1, 514
};
-static int parser_action_row620[] = {
+static int parser_action_row670[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row621[] = {
+static int parser_action_row671[] = {
1,
- -1, 1, 337
+ -1, 1, 417
};
-static int parser_action_row622[] = {
+static int parser_action_row672[] = {
1,
- -1, 1, 336
+ -1, 1, 416
};
-static int parser_action_row623[] = {
+static int parser_action_row673[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row624[] = {
+static int parser_action_row674[] = {
+ 1,
+ -1, 1, 774
+};
+static int parser_action_row675[] = {
3,
- -1, 3, 623,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 674,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row625[] = {
+static int parser_action_row676[] = {
+ 5,
+ -1, 3, 675,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 81, 0, 387
+};
+static int parser_action_row677[] = {
2,
- -1, 3, 624,
- 80, 0, 738
+ -1, 1, 885,
+ 79, 0, 545
};
-static int parser_action_row626[] = {
+static int parser_action_row678[] = {
1,
- -1, 1, 374
+ -1, 1, 883
};
-static int parser_action_row627[] = {
+static int parser_action_row679[] = {
2,
- -1, 1, 506,
- 51, 0, 272
-};
-static int parser_action_row628[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 678,
+ 81, 0, 836
};
-static int parser_action_row629[] = {
+static int parser_action_row680[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row630[] = {
+static int parser_action_row681[] = {
1,
- -1, 1, 858
+ -1, 1, 1276
};
-static int parser_action_row631[] = {
+static int parser_action_row682[] = {
2,
- -1, 1, 513,
- 55, 0, 627
+ -1, 1, 610,
+ 55, 0, 679
};
-static int parser_action_row632[] = {
- 33,
- -1, 3, 631,
- 0, 0, 1,
- 1, 0, 2,
- 8, 0, 155,
- 11, 0, 28,
- 14, 0, 30,
- 17, 0, 31,
- 23, 0, 35,
- 26, 0, 36,
- 27, 0, 37,
- 28, 0, 38,
- 33, 0, 40,
- 34, 0, 41,
- 35, 0, 42,
- 36, 0, 43,
- 37, 0, 44,
- 38, 0, 45,
- 41, 0, 46,
+static int parser_action_row683[] = {
+ 1,
+ -1, 1, 603
+};
+static int parser_action_row684[] = {
+ 23,
+ -1, 1, 1093,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 51,
+ 48, 0, 176,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row633[] = {
+static int parser_action_row685[] = {
+ 24,
+ -1, 1, 1100,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 49, 0, 191,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row686[] = {
+ 24,
+ -1, 1, 1095,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 49, 0, 191,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row687[] = {
+ 1,
+ -1, 1, 1099
+};
+static int parser_action_row688[] = {
2,
- -1, 3, 632,
- 80, 0, 319
+ -1, 3, 687,
+ 10, 0, 844
};
-static int parser_action_row634[] = {
+static int parser_action_row689[] = {
+ 4,
+ -1, 1, 404,
+ 53, 0, 553,
+ 57, 0, 215,
+ 79, 0, 205
+};
+static int parser_action_row690[] = {
3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 631,
+ 51, 0, 282,
+ 57, 0, 216
};
-static int parser_action_row635[] = {
- 5,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2,
- 14, 0, 748,
- 58, 0, 749
+static int parser_action_row691[] = {
+ 1,
+ -1, 1, 621
};
-static int parser_action_row636[] = {
+static int parser_action_row692[] = {
1,
- -1, 1, 66
+ -1, 1, 1091
};
-static int parser_action_row637[] = {
+static int parser_action_row693[] = {
1,
- -1, 1, 65
+ -1, 1, 1092
};
-static int parser_action_row638[] = {
+static int parser_action_row694[] = {
1,
- -1, 1, 279
+ -1, 1, 1104
};
-static int parser_action_row639[] = {
+static int parser_action_row695[] = {
+ 1,
+ -1, 1, 1106
+};
+static int parser_action_row696[] = {
+ 1,
+ -1, 1, 1105
+};
+static int parser_action_row697[] = {
+ 1,
+ -1, 1, 1107
+};
+static int parser_action_row698[] = {
+ 1,
+ -1, 1, 1108
+};
+static int parser_action_row699[] = {
+ 1,
+ -1, 1, 622
+};
+static int parser_action_row700[] = {
3,
- -1, 3, 638,
- 52, 0, 750,
- 80, 0, 751
+ -1, 1, 552,
+ 53, 0, 239,
+ 63, 0, 845
};
-static int parser_action_row640[] = {
+static int parser_action_row701[] = {
+ 1,
+ -1, 1, 624
+};
+static int parser_action_row702[] = {
+ 2,
+ -1, 3, 701,
+ 52, 0, 846
+};
+static int parser_action_row703[] = {
+ 2,
+ -1, 1, 618,
+ 55, 0, 847
+};
+static int parser_action_row704[] = {
+ 1,
+ -1, 1, 623
+};
+static int parser_action_row705[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row641[] = {
+static int parser_action_row706[] = {
+ 1,
+ -1, 1, 407
+};
+static int parser_action_row707[] = {
+ 3,
+ -1, 3, 706,
+ 47, 0, 390,
+ 80, 0, 391
+};
+static int parser_action_row708[] = {
+ 1,
+ -1, 1, 454
+};
+static int parser_action_row709[] = {
2,
- -1, 3, 640,
- 19, 0, 755
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row642[] = {
+static int parser_action_row710[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row711[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row712[] = {
+ 1,
+ -1, 1, 1282
+};
+static int parser_action_row713[] = {
+ 2,
+ -1, 1, 638,
+ 55, 0, 709
+};
+static int parser_action_row714[] = {
33,
- -1, 3, 641,
+ -1, 3, 713,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 155,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row643[] = {
+static int parser_action_row715[] = {
+ 2,
+ -1, 3, 714,
+ 81, 0, 338
+};
+static int parser_action_row716[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row717[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 14, 0, 861,
+ 58, 0, 862
+};
+static int parser_action_row718[] = {
+ 1,
+ -1, 1, 68
+};
+static int parser_action_row719[] = {
+ 3,
+ -1, 3, 718,
+ 0, 0, 87,
+ 1, 0, 88
+};
+static int parser_action_row720[] = {
+ 1,
+ -1, 1, 66
+};
+static int parser_action_row721[] = {
+ 1,
+ -1, 1, 352
+};
+static int parser_action_row722[] = {
+ 3,
+ -1, 3, 721,
+ 52, 0, 864,
+ 81, 0, 865
+};
+static int parser_action_row723[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row724[] = {
+ 8,
+ -1, 3, 723,
+ 0, 0, 87,
+ 1, 0, 88,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 19, 0, 869,
+ 81, 0, 387
+};
+static int parser_action_row725[] = {
+ 33,
+ -1, 3, 724,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row726[] = {
+ 1,
+ -1, 1, 672
+};
+static int parser_action_row727[] = {
+ 2,
+ -1, 3, 726,
+ 14, 0, 873
+};
+static int parser_action_row728[] = {
3,
- -1, 3, 642,
+ -1, 3, 727,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row644[] = {
+static int parser_action_row729[] = {
1,
- -1, 1, 559
+ -1, 1, 690
};
-static int parser_action_row645[] = {
+static int parser_action_row730[] = {
4,
- -1, 1, 288,
- 35, 0, 645,
- 58, 1, 567,
- 78, 0, 646
+ -1, 1, 361,
+ 35, 0, 730,
+ 58, 1, 698,
+ 78, 0, 731
};
-static int parser_action_row646[] = {
+static int parser_action_row731[] = {
2,
- -1, 3, 645,
- 78, 0, 759
+ -1, 3, 730,
+ 78, 0, 876
};
-static int parser_action_row647[] = {
+static int parser_action_row732[] = {
2,
- -1, 3, 646,
- 80, 0, 760
+ -1, 3, 731,
+ 81, 0, 877
};
-static int parser_action_row648[] = {
+static int parser_action_row733[] = {
1,
- -1, 1, 291
+ -1, 1, 364
};
-static int parser_action_row649[] = {
+static int parser_action_row734[] = {
1,
- -1, 1, 848
+ -1, 1, 1266
};
-static int parser_action_row650[] = {
+static int parser_action_row735[] = {
3,
- -1, 1, 304,
- 35, 0, 645,
- 78, 0, 646
+ -1, 1, 380,
+ 35, 0, 730,
+ 78, 0, 731
};
-static int parser_action_row651[] = {
+static int parser_action_row736[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row652[] = {
+static int parser_action_row737[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row653[] = {
+static int parser_action_row738[] = {
5,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row654[] = {
+static int parser_action_row739[] = {
1,
- -1, 1, 840
+ -1, 1, 1258
};
-static int parser_action_row655[] = {
+static int parser_action_row740[] = {
1,
- -1, 1, 842
+ -1, 1, 1260
};
-static int parser_action_row656[] = {
+static int parser_action_row741[] = {
3,
- -1, 3, 655,
+ -1, 3, 740,
0, 0, 87,
1, 0, 88
};
-static int parser_action_row657[] = {
+static int parser_action_row742[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row658[] = {
- 9,
- -1, 1, 258,
- 8, 0, 772,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+static int parser_action_row743[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 891,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895,
+ 81, 0, 896
};
-static int parser_action_row659[] = {
+static int parser_action_row744[] = {
+ 1,
+ -1, 1, 1290
+};
+static int parser_action_row745[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row660[] = {
+static int parser_action_row746[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row661[] = {
+static int parser_action_row747[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 29, 0, 39,
+ 92, 0, 62
+};
+static int parser_action_row748[] = {
1,
- -1, 1, 478
+ -1, 1, 562
};
-static int parser_action_row662[] = {
+static int parser_action_row749[] = {
1,
- -1, 1, 372
+ -1, 1, 452
};
-static int parser_action_row663[] = {
+static int parser_action_row750[] = {
2,
- -1, 3, 662,
- 51, 0, 785
+ -1, 3, 749,
+ 51, 0, 911
};
-static int parser_action_row664[] = {
+static int parser_action_row751[] = {
4,
- -1, 1, 474,
- 58, 0, 786,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 558,
+ 58, 0, 912,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row665[] = {
+static int parser_action_row752[] = {
2,
- -1, 1, 366,
- 78, 0, 375
+ -1, 1, 446,
+ 78, 0, 403
};
-static int parser_action_row666[] = {
+static int parser_action_row753[] = {
23,
- -1, 3, 665,
+ -1, 3, 752,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row667[] = {
+static int parser_action_row754[] = {
23,
- -1, 3, 666,
+ -1, 3, 753,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row668[] = {
+static int parser_action_row755[] = {
1,
- -1, 1, 501
+ -1, 1, 599
};
-static int parser_action_row669[] = {
+static int parser_action_row756[] = {
2,
- -1, 1, 520,
- 57, 0, 211
+ -1, 1, 645,
+ 57, 0, 216
};
-static int parser_action_row670[] = {
+static int parser_action_row757[] = {
+ 2,
+ -1, 3, 756,
+ 8, 0, 917
+};
+static int parser_action_row758[] = {
1,
- -1, 1, 504
+ -1, 1, 1278
};
-static int parser_action_row671[] = {
+static int parser_action_row759[] = {
+ 5,
+ -1, 3, 758,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 81, 0, 387
+};
+static int parser_action_row760[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 1, 611,
+ 14, 1, 611
+};
+static int parser_action_row761[] = {
+ 1,
+ -1, 1, 629
+};
+static int parser_action_row762[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row672[] = {
+static int parser_action_row763[] = {
2,
- -1, 3, 671,
- 80, 0, 792
+ -1, 3, 762,
+ 81, 0, 921
};
-static int parser_action_row673[] = {
+static int parser_action_row764[] = {
3,
- -1, 1, 748,
- 53, 1, 750,
- 63, 1, 750
+ -1, 1, 852,
+ 53, 1, 854,
+ 63, 1, 854
};
-static int parser_action_row674[] = {
+static int parser_action_row765[] = {
1,
- -1, 1, 721
+ -1, 1, 825
};
-static int parser_action_row675[] = {
+static int parser_action_row766[] = {
1,
- -1, 1, 756
+ -1, 1, 860
};
-static int parser_action_row676[] = {
+static int parser_action_row767[] = {
2,
- -1, 3, 675,
- 51, 0, 793
+ -1, 3, 766,
+ 51, 0, 922
};
-static int parser_action_row677[] = {
+static int parser_action_row768[] = {
1,
- -1, 1, 752
+ -1, 1, 856
};
-static int parser_action_row678[] = {
- 2,
- -1, 3, 677,
- 19, 0, 794
+static int parser_action_row769[] = {
+ 8,
+ -1, 3, 768,
+ 0, 0, 87,
+ 1, 0, 88,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 19, 0, 923,
+ 81, 0, 387
};
-static int parser_action_row679[] = {
+static int parser_action_row770[] = {
33,
- -1, 3, 678,
+ -1, 3, 769,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row680[] = {
+static int parser_action_row771[] = {
+ 1,
+ -1, 1, 673
+};
+static int parser_action_row772[] = {
+ 2,
+ -1, 3, 771,
+ 14, 0, 925
+};
+static int parser_action_row773[] = {
3,
- -1, 3, 679,
+ -1, 3, 772,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row681[] = {
+static int parser_action_row774[] = {
1,
- -1, 1, 560
+ -1, 1, 691
};
-static int parser_action_row682[] = {
+static int parser_action_row775[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row683[] = {
+static int parser_action_row776[] = {
5,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row684[] = {
+static int parser_action_row777[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row685[] = {
- 9,
- -1, 1, 258,
- 8, 0, 805,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+static int parser_action_row778[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 936,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895,
+ 81, 0, 896
};
-static int parser_action_row686[] = {
+static int parser_action_row779[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row687[] = {
+static int parser_action_row780[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row688[] = {
- 1,
- -1, 1, 345
+static int parser_action_row781[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 29, 0, 39,
+ 92, 0, 62
};
-static int parser_action_row689[] = {
+static int parser_action_row782[] = {
1,
- -1, 1, 399
+ -1, 1, 425
};
-static int parser_action_row690[] = {
+static int parser_action_row783[] = {
1,
- -1, 1, 420
+ -1, 1, 482
};
-static int parser_action_row691[] = {
+static int parser_action_row784[] = {
+ 1,
+ -1, 1, 481
+};
+static int parser_action_row785[] = {
+ 23,
+ -1, 3, 784,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row786[] = {
+ 1,
+ -1, 1, 504
+};
+static int parser_action_row787[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row692[] = {
+static int parser_action_row788[] = {
33,
- -1, 3, 691,
+ -1, 3, 787,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row693[] = {
+static int parser_action_row789[] = {
2,
- -1, 3, 692,
- 80, 0, 815
+ -1, 3, 788,
+ 81, 0, 951
};
-static int parser_action_row694[] = {
+static int parser_action_row790[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row695[] = {
+static int parser_action_row791[] = {
33,
- -1, 3, 694,
+ -1, 3, 790,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row696[] = {
+static int parser_action_row792[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row697[] = {
+static int parser_action_row793[] = {
33,
- -1, 3, 696,
+ -1, 3, 792,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row698[] = {
+static int parser_action_row794[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row699[] = {
+static int parser_action_row795[] = {
24,
- -1, 1, 349,
+ -1, 1, 429,
11, 0, 170,
23, 0, 171,
- 25, 1, 635,
+ 25, 1, 965,
32, 0, 172,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row700[] = {
+static int parser_action_row796[] = {
25,
- -1, 1, 356,
+ -1, 1, 436,
11, 0, 170,
23, 0, 171,
- 25, 1, 642,
+ 25, 1, 972,
32, 0, 172,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row701[] = {
+static int parser_action_row797[] = {
25,
- -1, 1, 351,
+ -1, 1, 431,
11, 0, 170,
23, 0, 171,
- 25, 1, 637,
+ 25, 1, 967,
32, 0, 172,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row702[] = {
+static int parser_action_row798[] = {
2,
- -1, 1, 355,
- 25, 1, 641
+ -1, 1, 435,
+ 25, 1, 971
};
-static int parser_action_row703[] = {
+static int parser_action_row799[] = {
23,
- -1, 3, 702,
+ -1, 3, 798,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 196,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 196,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row704[] = {
+static int parser_action_row800[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row705[] = {
+static int parser_action_row801[] = {
2,
- -1, 3, 704,
- 10, 0, 830
+ -1, 3, 800,
+ 10, 0, 966
};
-static int parser_action_row706[] = {
+static int parser_action_row802[] = {
28,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 57, 0, 211,
- 58, 1, 506,
- 59, 1, 506,
- 60, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 57, 0, 216,
+ 58, 1, 631,
+ 59, 1, 631,
+ 60, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row707[] = {
+static int parser_action_row803[] = {
4,
- -1, 1, 473,
- 58, 0, 833,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 557,
+ 58, 0, 969,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row708[] = {
+static int parser_action_row804[] = {
1,
- -1, 1, 415
+ -1, 1, 499
};
-static int parser_action_row709[] = {
+static int parser_action_row805[] = {
1,
- -1, 1, 417
+ -1, 1, 501
};
-static int parser_action_row710[] = {
+static int parser_action_row806[] = {
3,
- -1, 3, 709,
- 53, 0, 230,
- 63, 0, 835
+ -1, 3, 805,
+ 53, 0, 239,
+ 63, 0, 971
};
-static int parser_action_row711[] = {
+static int parser_action_row807[] = {
2,
- -1, 3, 710,
- 41, 0, 837
+ -1, 3, 806,
+ 41, 0, 973
};
-static int parser_action_row712[] = {
+static int parser_action_row808[] = {
32,
- -1, 3, 711,
- 8, 0, 689,
+ -1, 3, 807,
+ 8, 0, 785,
11, 0, 28,
14, 0, 30,
17, 0, 31,
23, 0, 35,
- 25, 0, 694,
+ 25, 0, 790,
26, 0, 36,
27, 0, 37,
28, 0, 38,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row713[] = {
+static int parser_action_row809[] = {
2,
- -1, 3, 712,
- 25, 0, 841
+ -1, 3, 808,
+ 25, 0, 977
};
-static int parser_action_row714[] = {
+static int parser_action_row810[] = {
1,
- -1, 1, 633
+ -1, 1, 963
};
-static int parser_action_row715[] = {
+static int parser_action_row811[] = {
1,
- -1, 1, 634
+ -1, 1, 964
};
-static int parser_action_row716[] = {
+static int parser_action_row812[] = {
1,
- -1, 1, 646
+ -1, 1, 976
};
-static int parser_action_row717[] = {
+static int parser_action_row813[] = {
1,
- -1, 1, 647
+ -1, 1, 977
};
-static int parser_action_row718[] = {
+static int parser_action_row814[] = {
1,
- -1, 1, 649
+ -1, 1, 979
};
-static int parser_action_row719[] = {
+static int parser_action_row815[] = {
1,
- -1, 1, 648
+ -1, 1, 978
};
-static int parser_action_row720[] = {
+static int parser_action_row816[] = {
1,
- -1, 1, 650
+ -1, 1, 980
};
-static int parser_action_row721[] = {
+static int parser_action_row817[] = {
1,
- -1, 1, 651
+ -1, 1, 981
};
-static int parser_action_row722[] = {
+static int parser_action_row818[] = {
1,
- -1, 1, 424
+ -1, 1, 508
};
-static int parser_action_row723[] = {
+static int parser_action_row819[] = {
2,
- -1, 3, 722,
+ -1, 3, 818,
49, 0, 191
};
-static int parser_action_row724[] = {
+static int parser_action_row820[] = {
2,
- -1, 3, 723,
- 29, 0, 843
+ -1, 3, 819,
+ 29, 0, 979
};
-static int parser_action_row725[] = {
+static int parser_action_row821[] = {
23,
- -1, 3, 724,
+ -1, 3, 820,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row726[] = {
+static int parser_action_row822[] = {
2,
- -1, 3, 725,
- 80, 0, 845
+ -1, 3, 821,
+ 81, 0, 981
};
-static int parser_action_row727[] = {
+static int parser_action_row823[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row728[] = {
+static int parser_action_row824[] = {
3,
- -1, 1, 470,
- 53, 1, 472,
- 63, 1, 472
+ -1, 1, 554,
+ 53, 1, 556,
+ 63, 1, 556
};
-static int parser_action_row729[] = {
+static int parser_action_row825[] = {
1,
- -1, 1, 443
+ -1, 1, 527
};
-static int parser_action_row730[] = {
+static int parser_action_row826[] = {
2,
- -1, 1, 474,
- 78, 0, 375
+ -1, 1, 558,
+ 78, 0, 403
};
-static int parser_action_row731[] = {
+static int parser_action_row827[] = {
33,
- -1, 3, 730,
+ -1, 3, 826,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row732[] = {
+static int parser_action_row828[] = {
2,
- -1, 3, 731,
- 80, 0, 319
+ -1, 3, 827,
+ 81, 0, 338
};
-static int parser_action_row733[] = {
+static int parser_action_row829[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row734[] = {
+static int parser_action_row830[] = {
5,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 14, 0, 853,
- 58, 0, 854
+ 14, 0, 989,
+ 58, 0, 990
};
-static int parser_action_row735[] = {
+static int parser_action_row831[] = {
2,
- -1, 1, 474,
- 78, 0, 500
+ -1, 1, 558,
+ 78, 0, 533
};
-static int parser_action_row736[] = {
+static int parser_action_row832[] = {
3,
- -1, 3, 735,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 831,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row737[] = {
+static int parser_action_row833[] = {
2,
- -1, 1, 332,
- 55, 0, 857
+ -1, 1, 412,
+ 55, 0, 993
};
-static int parser_action_row738[] = {
+static int parser_action_row834[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row739[] = {
+static int parser_action_row835[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 3, 834,
+ 52, 0, 997
};
-static int parser_action_row740[] = {
+static int parser_action_row836[] = {
1,
- -1, 1, 474
+ -1, 1, 886
};
-static int parser_action_row741[] = {
+static int parser_action_row837[] = {
+ 2,
+ -1, 1, 631,
+ 51, 0, 282
+};
+static int parser_action_row838[] = {
+ 5,
+ -1, 3, 837,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 81, 0, 387
+};
+static int parser_action_row839[] = {
+ 1,
+ -1, 1, 1277
+};
+static int parser_action_row840[] = {
+ 1,
+ -1, 1, 1094
+};
+static int parser_action_row841[] = {
23,
- -1, 3, 740,
+ -1, 1, 1101,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row742[] = {
- 22,
- -1, 3, 741,
- 11, 0, 863,
- 23, 0, 864,
- 32, 0, 865,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
-};
-static int parser_action_row743[] = {
- 1,
- -1, 1, 859
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row744[] = {
+static int parser_action_row842[] = {
1,
- -1, 1, 381
-};
-static int parser_action_row745[] = {
- 31,
- -1, 1, 390,
- 8, 0, 308,
- 11, 0, 28,
- 14, 0, 30,
- 17, 0, 31,
- 23, 0, 35,
- 26, 0, 36,
- 27, 0, 37,
- 28, 0, 38,
- 33, 0, 40,
- 34, 0, 41,
- 35, 0, 42,
- 36, 0, 43,
- 37, 0, 44,
- 38, 0, 45,
- 41, 0, 46,
- 42, 0, 47,
- 43, 0, 48,
- 44, 0, 49,
- 45, 0, 50,
- 50, 0, 51,
- 51, 0, 52,
- 53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row746[] = {
- 2,
- -1, 3, 745,
- 49, 0, 191
-};
-static int parser_action_row747[] = {
- 4,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 896
+ -1, 1, 1102
};
-static int parser_action_row748[] = {
+static int parser_action_row843[] = {
23,
- -1, 3, 747,
+ -1, 1, 1096,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row749[] = {
- 33,
- -1, 3, 748,
- 0, 0, 1,
- 1, 0, 2,
- 8, 0, 155,
- 11, 0, 28,
- 14, 0, 30,
- 17, 0, 31,
- 23, 0, 35,
- 26, 0, 36,
- 27, 0, 37,
- 28, 0, 38,
- 33, 0, 40,
- 34, 0, 41,
- 35, 0, 42,
- 36, 0, 43,
- 37, 0, 44,
- 38, 0, 45,
- 41, 0, 46,
- 42, 0, 47,
- 43, 0, 48,
- 44, 0, 49,
- 45, 0, 50,
- 50, 0, 51,
- 51, 0, 52,
- 53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+static int parser_action_row844[] = {
+ 1,
+ -1, 1, 1097
};
-static int parser_action_row750[] = {
+static int parser_action_row845[] = {
3,
- -1, 1, 531,
+ -1, 3, 844,
+ 47, 0, 390,
+ 80, 0, 391
+};
+static int parser_action_row846[] = {
+ 3,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row751[] = {
+static int parser_action_row847[] = {
+ 2,
+ -1, 1, 606,
+ 79, 0, 205
+};
+static int parser_action_row848[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row849[] = {
+ 1,
+ -1, 1, 1280
+};
+static int parser_action_row850[] = {
+ 2,
+ -1, 1, 619,
+ 55, 0, 847
+};
+static int parser_action_row851[] = {
+ 3,
+ -1, 3, 850,
+ 47, 0, 390,
+ 80, 0, 391
+};
+static int parser_action_row852[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row853[] = {
+ 1,
+ -1, 1, 558
+};
+static int parser_action_row854[] = {
+ 23,
+ -1, 3, 853,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row855[] = {
+ 22,
+ -1, 3, 854,
+ 11, 0, 1010,
+ 23, 0, 1011,
+ 32, 0, 1012,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
+};
+static int parser_action_row856[] = {
+ 1,
+ -1, 1, 1283
+};
+static int parser_action_row857[] = {
+ 1,
+ -1, 1, 461
+};
+static int parser_action_row858[] = {
+ 31,
+ -1, 1, 470,
+ 8, 0, 326,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row859[] = {
+ 2,
+ -1, 3, 858,
+ 49, 0, 191
+};
+static int parser_action_row860[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 56, 0, 312
+ 52, 0, 1043
};
-static int parser_action_row752[] = {
- 2,
- -1, 1, 301,
- 56, 0, 312
+static int parser_action_row861[] = {
+ 23,
+ -1, 3, 860,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row753[] = {
+static int parser_action_row862[] = {
+ 33,
+ -1, 3, 861,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 155,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row863[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row864[] = {
+ 1,
+ -1, 1, 67
+};
+static int parser_action_row865[] = {
+ 4,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 56, 0, 330
+};
+static int parser_action_row866[] = {
+ 3,
+ -1, 1, 374,
+ 56, 0, 330,
+ 79, 0, 205
+};
+static int parser_action_row867[] = {
2,
- -1, 3, 752,
- 52, 0, 906
+ -1, 3, 866,
+ 52, 0, 1054
};
-static int parser_action_row754[] = {
+static int parser_action_row868[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 55, 0, 907
+ 55, 0, 1055
};
-static int parser_action_row755[] = {
+static int parser_action_row869[] = {
20,
- -1, 3, 754,
- 41, 0, 911,
- 47, 0, 361,
- 53, 0, 383,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 79, 0, 912,
- 80, 0, 398
+ -1, 3, 868,
+ 41, 0, 1059,
+ 47, 0, 390,
+ 53, 0, 411,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 80, 0, 1060,
+ 81, 0, 426
};
-static int parser_action_row756[] = {
+static int parser_action_row870[] = {
5,
- -1, 1, 543,
- 3, 0, 639,
+ -1, 1, 674,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 918,
- 91, 0, 62
+ 85, 0, 1066,
+ 92, 0, 62
};
-static int parser_action_row757[] = {
+static int parser_action_row871[] = {
2,
- -1, 1, 537,
- 8, 0, 921
+ -1, 1, 321,
+ 14, 1, 323
};
-static int parser_action_row758[] = {
+static int parser_action_row872[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row873[] = {
+ 2,
+ -1, 1, 662,
+ 8, 0, 1070
+};
+static int parser_action_row874[] = {
+ 33,
+ -1, 3, 873,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row875[] = {
1,
- -1, 1, 561
+ -1, 1, 692
};
-static int parser_action_row759[] = {
+static int parser_action_row876[] = {
2,
- -1, 1, 289,
- 58, 1, 568
+ -1, 1, 362,
+ 58, 1, 699
};
-static int parser_action_row760[] = {
+static int parser_action_row877[] = {
2,
- -1, 3, 759,
- 80, 0, 922
+ -1, 3, 876,
+ 81, 0, 1072
};
-static int parser_action_row761[] = {
+static int parser_action_row878[] = {
3,
- -1, 1, 296,
- 51, 0, 923,
- 56, 0, 312
+ -1, 1, 369,
+ 51, 0, 1073,
+ 56, 0, 330
};
-static int parser_action_row762[] = {
+static int parser_action_row879[] = {
1,
- -1, 1, 849
+ -1, 1, 1267
};
-static int parser_action_row763[] = {
+static int parser_action_row880[] = {
23,
- -1, 3, 762,
+ -1, 3, 879,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row764[] = {
+static int parser_action_row881[] = {
2,
- -1, 3, 763,
- 79, 0, 928
+ -1, 3, 880,
+ 80, 0, 1078
};
-static int parser_action_row765[] = {
+static int parser_action_row882[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row766[] = {
- 9,
- -1, 1, 258,
- 8, 0, 933,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+static int parser_action_row883[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 1083,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895,
+ 81, 0, 896
};
-static int parser_action_row767[] = {
+static int parser_action_row884[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row768[] = {
+static int parser_action_row885[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row769[] = {
+static int parser_action_row886[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 29, 0, 39,
+ 92, 0, 62
+};
+static int parser_action_row887[] = {
1,
- -1, 1, 115
+ -1, 1, 152
};
-static int parser_action_row770[] = {
+static int parser_action_row888[] = {
9,
- -1, 1, 258,
- 8, 0, 937,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1091,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row771[] = {
+static int parser_action_row889[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row772[] = {
+static int parser_action_row890[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row773[] = {
+static int parser_action_row891[] = {
1,
- -1, 1, 71
+ -1, 1, 1249
};
-static int parser_action_row774[] = {
+static int parser_action_row892[] = {
+ 1,
+ -1, 1, 73
+};
+static int parser_action_row893[] = {
6,
- -1, 1, 258,
- 15, 0, 941,
- 16, 0, 942,
+ -1, 1, 331,
+ 15, 0, 1095,
+ 16, 0, 1096,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row775[] = {
+static int parser_action_row894[] = {
1,
- -1, 1, 252
+ -1, 1, 325
};
-static int parser_action_row776[] = {
+static int parser_action_row895[] = {
1,
- -1, 1, 254
+ -1, 1, 327
};
-static int parser_action_row777[] = {
+static int parser_action_row896[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row778[] = {
+static int parser_action_row897[] = {
+ 1,
+ -1, 1, 1248
+};
+static int parser_action_row898[] = {
6,
- -1, 1, 258,
- 12, 0, 945,
- 16, 0, 775,
+ -1, 1, 331,
+ 12, 0, 1099,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row779[] = {
+static int parser_action_row899[] = {
5,
- -1, 1, 258,
- 12, 0, 948,
+ -1, 1, 331,
+ 12, 0, 1102,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row780[] = {
+static int parser_action_row900[] = {
6,
- -1, 3, 779,
- 9, 0, 950,
- 10, 0, 951,
- 11, 0, 952,
- 17, 0, 953,
- 38, 0, 954
+ -1, 3, 899,
+ 9, 0, 1104,
+ 10, 0, 1105,
+ 11, 0, 1106,
+ 17, 0, 1107,
+ 38, 0, 1108
};
-static int parser_action_row781[] = {
+static int parser_action_row901[] = {
+ 37,
+ -1, 3, 900,
+ 0, 0, 87,
+ 1, 0, 88,
+ 11, 0, 122,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 123,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 32, 0, 124,
+ 33, 0, 1109,
+ 34, 0, 1110,
+ 35, 0, 1111,
+ 36, 0, 1112,
+ 37, 0, 44,
+ 38, 0, 125,
+ 40, 0, 126,
+ 41, 0, 127,
+ 42, 0, 128,
+ 43, 0, 129,
+ 44, 0, 130,
+ 45, 0, 131,
+ 47, 0, 390,
+ 48, 0, 132,
+ 50, 0, 1113,
+ 51, 0, 1114,
+ 65, 0, 134,
+ 79, 0, 205,
+ 80, 0, 688,
+ 81, 0, 1115,
+ 82, 0, 1116,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
+};
+static int parser_action_row902[] = {
1,
- -1, 1, 841
+ -1, 1, 1259
};
-static int parser_action_row782[] = {
+static int parser_action_row903[] = {
9,
- -1, 1, 258,
- 8, 0, 955,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1132,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row783[] = {
+static int parser_action_row904[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row784[] = {
+static int parser_action_row905[] = {
1,
- -1, 1, 843
+ -1, 1, 1261
};
-static int parser_action_row785[] = {
+static int parser_action_row906[] = {
8,
- -1, 1, 258,
- 8, 0, 957,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1134,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row786[] = {
+static int parser_action_row907[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row787[] = {
+static int parser_action_row908[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 1138,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895,
+ 81, 0, 896
+};
+static int parser_action_row909[] = {
+ 1,
+ -1, 1, 1291
+};
+static int parser_action_row910[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row911[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row912[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row913[] = {
23,
- -1, 3, 786,
+ -1, 3, 912,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row788[] = {
+static int parser_action_row914[] = {
23,
- -1, 3, 787,
+ -1, 3, 913,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row789[] = {
+static int parser_action_row915[] = {
1,
- -1, 1, 368
+ -1, 1, 448
};
-static int parser_action_row790[] = {
+static int parser_action_row916[] = {
1,
- -1, 1, 400
+ -1, 1, 484
};
-static int parser_action_row791[] = {
+static int parser_action_row917[] = {
1,
- -1, 1, 405
+ -1, 1, 489
};
-static int parser_action_row792[] = {
+static int parser_action_row918[] = {
+ 1,
+ -1, 1, 322
+};
+static int parser_action_row919[] = {
+ 37,
+ -1, 3, 918,
+ 0, 0, 87,
+ 1, 0, 88,
+ 11, 0, 122,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 123,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 32, 0, 124,
+ 33, 0, 1109,
+ 34, 0, 1110,
+ 35, 0, 1111,
+ 36, 0, 1112,
+ 37, 0, 44,
+ 38, 0, 125,
+ 40, 0, 126,
+ 41, 0, 127,
+ 42, 0, 128,
+ 43, 0, 129,
+ 44, 0, 130,
+ 45, 0, 131,
+ 47, 0, 390,
+ 48, 0, 132,
+ 50, 0, 1113,
+ 51, 0, 1145,
+ 65, 0, 134,
+ 79, 0, 205,
+ 80, 0, 688,
+ 81, 0, 1115,
+ 82, 0, 1116,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
+};
+static int parser_action_row920[] = {
+ 1,
+ -1, 1, 1279
+};
+static int parser_action_row921[] = {
23,
- -1, 3, 791,
+ -1, 3, 920,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row793[] = {
+static int parser_action_row922[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row794[] = {
+static int parser_action_row923[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row795[] = {
+static int parser_action_row924[] = {
5,
- -1, 1, 544,
- 3, 0, 639,
+ -1, 1, 675,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 964,
- 91, 0, 62
+ 85, 0, 1152,
+ 92, 0, 62
};
-static int parser_action_row796[] = {
+static int parser_action_row925[] = {
2,
- -1, 1, 538,
- 8, 0, 967
+ -1, 1, 663,
+ 8, 0, 1155
};
-static int parser_action_row797[] = {
+static int parser_action_row926[] = {
+ 33,
+ -1, 3, 925,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row927[] = {
1,
- -1, 1, 562
+ -1, 1, 693
};
-static int parser_action_row798[] = {
+static int parser_action_row928[] = {
23,
- -1, 3, 797,
+ -1, 3, 927,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row799[] = {
+static int parser_action_row929[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row800[] = {
- 9,
- -1, 1, 258,
- 8, 0, 972,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+static int parser_action_row930[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 1161,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895,
+ 81, 0, 896
};
-static int parser_action_row801[] = {
+static int parser_action_row931[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row802[] = {
+static int parser_action_row932[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row803[] = {
+static int parser_action_row933[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 29, 0, 39,
+ 92, 0, 62
+};
+static int parser_action_row934[] = {
9,
- -1, 1, 258,
- 8, 0, 976,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1169,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row804[] = {
+static int parser_action_row935[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row805[] = {
+static int parser_action_row936[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row806[] = {
+static int parser_action_row937[] = {
1,
- -1, 1, 72
+ -1, 1, 74
};
-static int parser_action_row807[] = {
+static int parser_action_row938[] = {
9,
- -1, 1, 258,
- 8, 0, 980,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1173,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row808[] = {
+static int parser_action_row939[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row809[] = {
+static int parser_action_row940[] = {
8,
- -1, 1, 258,
- 8, 0, 982,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1175,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row810[] = {
+static int parser_action_row941[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row942[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 1179,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895,
+ 81, 0, 896
+};
+static int parser_action_row943[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row944[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row945[] = {
+ 1,
+ -1, 1, 483
+};
+static int parser_action_row946[] = {
2,
- -1, 1, 373,
- 25, 1, 659
+ -1, 1, 453,
+ 25, 1, 989
};
-static int parser_action_row811[] = {
+static int parser_action_row947[] = {
3,
- -1, 1, 338,
- 25, 1, 631,
- 49, 1, 709
+ -1, 1, 418,
+ 25, 1, 961,
+ 49, 1, 1087
};
-static int parser_action_row812[] = {
+static int parser_action_row948[] = {
31,
- -1, 3, 811,
- 8, 0, 983,
+ -1, 3, 947,
+ 8, 0, 1183,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row813[] = {
+static int parser_action_row949[] = {
1,
- -1, 1, 688
+ -1, 1, 1022
};
-static int parser_action_row814[] = {
+static int parser_action_row950[] = {
1,
- -1, 1, 632
+ -1, 1, 962
};
-static int parser_action_row815[] = {
+static int parser_action_row951[] = {
2,
- -1, 3, 814,
+ -1, 3, 950,
49, 0, 191
};
-static int parser_action_row816[] = {
- 4,
- -1, 1, 396,
- 25, 1, 673,
- 56, 0, 312,
- 58, 0, 986
+static int parser_action_row952[] = {
+ 5,
+ -1, 1, 476,
+ 25, 1, 1003,
+ 56, 0, 330,
+ 58, 0, 1186,
+ 79, 0, 205
};
-static int parser_action_row817[] = {
+static int parser_action_row953[] = {
23,
- -1, 3, 816,
+ -1, 3, 952,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row818[] = {
+static int parser_action_row954[] = {
1,
- -1, 1, 419
+ -1, 1, 503
};
-static int parser_action_row819[] = {
+static int parser_action_row955[] = {
23,
- -1, 3, 818,
+ -1, 3, 954,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row820[] = {
+static int parser_action_row956[] = {
1,
- -1, 1, 691
+ -1, 1, 1025
};
-static int parser_action_row821[] = {
+static int parser_action_row957[] = {
2,
- -1, 3, 820,
+ -1, 3, 956,
49, 0, 191
};
-static int parser_action_row822[] = {
+static int parser_action_row958[] = {
3,
- -1, 3, 821,
- 51, 0, 991,
- 80, 0, 319
+ -1, 3, 957,
+ 51, 0, 1192,
+ 81, 0, 338
};
-static int parser_action_row823[] = {
+static int parser_action_row959[] = {
1,
- -1, 1, 636
+ -1, 1, 966
};
-static int parser_action_row824[] = {
+static int parser_action_row960[] = {
24,
- -1, 1, 357,
+ -1, 1, 437,
11, 0, 170,
23, 0, 171,
- 25, 1, 643,
+ 25, 1, 973,
32, 0, 172,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row825[] = {
+static int parser_action_row961[] = {
1,
- -1, 1, 644
+ -1, 1, 974
};
-static int parser_action_row826[] = {
+static int parser_action_row962[] = {
24,
- -1, 1, 352,
+ -1, 1, 432,
11, 0, 170,
23, 0, 171,
- 25, 1, 638,
+ 25, 1, 968,
32, 0, 172,
38, 0, 173,
40, 0, 174,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row827[] = {
+static int parser_action_row963[] = {
1,
- -1, 1, 639
+ -1, 1, 969
};
-static int parser_action_row828[] = {
+static int parser_action_row964[] = {
23,
- -1, 3, 827,
+ -1, 3, 963,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row829[] = {
+static int parser_action_row965[] = {
2,
- -1, 3, 828,
- 25, 0, 996
+ -1, 3, 964,
+ 25, 0, 1197
};
-static int parser_action_row830[] = {
+static int parser_action_row966[] = {
2,
- -1, 1, 370,
- 25, 1, 656
+ -1, 1, 450,
+ 25, 1, 986
};
-static int parser_action_row831[] = {
+static int parser_action_row967[] = {
3,
- -1, 3, 830,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 966,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row832[] = {
+static int parser_action_row968[] = {
4,
- -1, 1, 475,
- 58, 0, 998,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 559,
+ 58, 0, 1199,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row833[] = {
+static int parser_action_row969[] = {
3,
- -1, 1, 367,
- 25, 1, 653,
- 78, 0, 500
+ -1, 1, 447,
+ 25, 1, 983,
+ 78, 0, 533
};
-static int parser_action_row834[] = {
+static int parser_action_row970[] = {
23,
- -1, 3, 833,
+ -1, 3, 969,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row835[] = {
+static int parser_action_row971[] = {
23,
- -1, 3, 834,
+ -1, 3, 970,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row836[] = {
+static int parser_action_row972[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row837[] = {
+static int parser_action_row973[] = {
4,
- -1, 1, 480,
- 58, 0, 1004,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 564,
+ 58, 0, 1205,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row838[] = {
+static int parser_action_row974[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row839[] = {
+static int parser_action_row975[] = {
3,
- -1, 3, 838,
- 8, 0, 689,
- 25, 0, 694
+ -1, 3, 974,
+ 8, 0, 785,
+ 25, 0, 790
};
-static int parser_action_row840[] = {
+static int parser_action_row976[] = {
3,
- -1, 3, 839,
+ -1, 3, 975,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row841[] = {
+static int parser_action_row977[] = {
1,
- -1, 1, 418
+ -1, 1, 502
};
-static int parser_action_row842[] = {
+static int parser_action_row978[] = {
33,
- -1, 3, 841,
+ -1, 3, 977,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row843[] = {
+static int parser_action_row979[] = {
1,
- -1, 1, 423
+ -1, 1, 507
};
-static int parser_action_row844[] = {
+static int parser_action_row980[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row845[] = {
+static int parser_action_row981[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row846[] = {
+static int parser_action_row982[] = {
1,
- -1, 1, 516
+ -1, 1, 641
};
-static int parser_action_row847[] = {
+static int parser_action_row983[] = {
23,
- -1, 3, 846,
+ -1, 3, 982,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row848[] = {
+static int parser_action_row984[] = {
1,
- -1, 1, 435
+ -1, 1, 519
};
-static int parser_action_row849[] = {
+static int parser_action_row985[] = {
31,
- -1, 1, 390,
- 8, 0, 983,
+ -1, 1, 470,
+ 8, 0, 1183,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row850[] = {
+static int parser_action_row986[] = {
1,
- -1, 1, 666
+ -1, 1, 996
};
-static int parser_action_row851[] = {
+static int parser_action_row987[] = {
2,
- -1, 3, 850,
+ -1, 3, 986,
49, 0, 191
};
-static int parser_action_row852[] = {
+static int parser_action_row988[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 52, 0, 1014
+ 52, 0, 1215
};
-static int parser_action_row853[] = {
+static int parser_action_row989[] = {
23,
- -1, 3, 852,
+ -1, 3, 988,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row854[] = {
+static int parser_action_row990[] = {
33,
- -1, 3, 853,
+ -1, 3, 989,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row855[] = {
+static int parser_action_row991[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row856[] = {
+static int parser_action_row992[] = {
1,
- -1, 1, 701
+ -1, 1, 1035
};
-static int parser_action_row857[] = {
+static int parser_action_row993[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row858[] = {
+static int parser_action_row994[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row859[] = {
+static int parser_action_row995[] = {
1,
- -1, 1, 852
+ -1, 1, 1270
};
-static int parser_action_row860[] = {
+static int parser_action_row996[] = {
2,
- -1, 1, 333,
- 55, 0, 857
+ -1, 1, 413,
+ 55, 0, 993
};
-static int parser_action_row861[] = {
+static int parser_action_row997[] = {
2,
- -1, 3, 860,
- 54, 0, 1024
+ -1, 3, 996,
+ 54, 0, 1225
};
-static int parser_action_row862[] = {
+static int parser_action_row998[] = {
1,
- -1, 1, 481
+ -1, 1, 884
};
-static int parser_action_row863[] = {
+static int parser_action_row999[] = {
+ 1,
+ -1, 1, 565
+};
+static int parser_action_row1000[] = {
+ 1,
+ -1, 1, 617
+};
+static int parser_action_row1001[] = {
+ 1,
+ -1, 1, 1103
+};
+static int parser_action_row1002[] = {
+ 1,
+ -1, 1, 1098
+};
+static int parser_action_row1003[] = {
+ 2,
+ -1, 3, 1002,
+ 56, 0, 1226
+};
+static int parser_action_row1004[] = {
+ 5,
+ -1, 3, 1003,
+ 11, 0, 663,
+ 46, 0, 577,
+ 81, 0, 1227,
+ 82, 0, 579
+};
+static int parser_action_row1005[] = {
+ 1,
+ -1, 1, 607
+};
+static int parser_action_row1006[] = {
+ 36,
+ -1, 3, 1005,
+ 11, 0, 170,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 171,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 32, 0, 172,
+ 33, 0, 683,
+ 34, 0, 684,
+ 35, 0, 685,
+ 36, 0, 686,
+ 37, 0, 44,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 47, 0, 390,
+ 48, 0, 176,
+ 50, 0, 687,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 79, 0, 205,
+ 80, 0, 688,
+ 81, 0, 689,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1007[] = {
+ 1,
+ -1, 1, 1281
+};
+static int parser_action_row1008[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row864[] = {
+static int parser_action_row1009[] = {
+ 2,
+ -1, 3, 1008,
+ 54, 0, 1230
+};
+static int parser_action_row1010[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1011[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row865[] = {
+static int parser_action_row1012[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row866[] = {
+static int parser_action_row1013[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row867[] = {
+static int parser_action_row1014[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row868[] = {
+static int parser_action_row1015[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row869[] = {
+static int parser_action_row1016[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row870[] = {
- 1,
- -1, 1, 617
+static int parser_action_row1017[] = {
+ 2,
+ -1, 1, 750,
+ 79, 0, 205
};
-static int parser_action_row871[] = {
- 1,
- -1, 1, 618
+static int parser_action_row1018[] = {
+ 2,
+ -1, 1, 752,
+ 79, 0, 205
};
-static int parser_action_row872[] = {
- 1,
- -1, 1, 619
+static int parser_action_row1019[] = {
+ 2,
+ -1, 1, 754,
+ 79, 0, 205
};
-static int parser_action_row873[] = {
- 1,
- -1, 1, 620
+static int parser_action_row1020[] = {
+ 2,
+ -1, 1, 756,
+ 79, 0, 205
};
-static int parser_action_row874[] = {
+static int parser_action_row1021[] = {
17,
- -1, 3, 873,
- 11, 0, 863,
- 38, 0, 1032,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 51, 0, 874,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 1033,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1020,
+ 11, 0, 1010,
+ 38, 0, 1242,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 51, 0, 1021,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1243,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row875[] = {
+static int parser_action_row1022[] = {
23,
- -1, 3, 874,
+ -1, 3, 1021,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row876[] = {
+static int parser_action_row1023[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row877[] = {
+static int parser_action_row1024[] = {
3,
- -1, 1, 506,
- 51, 0, 272,
- 57, 0, 211
+ -1, 1, 631,
+ 51, 0, 282,
+ 57, 0, 216
};
-static int parser_action_row878[] = {
- 1,
- -1, 1, 609
-};
-static int parser_action_row879[] = {
+static int parser_action_row1025[] = {
1,
- -1, 1, 621
+ -1, 1, 742
};
-static int parser_action_row880[] = {
- 1,
- -1, 1, 622
+static int parser_action_row1026[] = {
+ 2,
+ -1, 1, 758,
+ 79, 0, 205
};
-static int parser_action_row881[] = {
- 1,
- -1, 1, 623
+static int parser_action_row1027[] = {
+ 2,
+ -1, 1, 760,
+ 79, 0, 205
};
-static int parser_action_row882[] = {
- 1,
- -1, 1, 624
+static int parser_action_row1028[] = {
+ 2,
+ -1, 1, 764,
+ 79, 0, 205
};
-static int parser_action_row883[] = {
+static int parser_action_row1029[] = {
+ 2,
+ -1, 1, 762,
+ 79, 0, 205
+};
+static int parser_action_row1030[] = {
1,
- -1, 1, 625
+ -1, 1, 766
};
-static int parser_action_row884[] = {
+static int parser_action_row1031[] = {
2,
- -1, 3, 883,
- 41, 0, 1038
+ -1, 3, 1030,
+ 41, 0, 1252
};
-static int parser_action_row885[] = {
+static int parser_action_row1032[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row886[] = {
+static int parser_action_row1033[] = {
3,
- -1, 1, 574,
- 30, 0, 1040,
- 31, 0, 1041
+ -1, 1, 707,
+ 30, 0, 1254,
+ 31, 0, 1255
};
-static int parser_action_row887[] = {
+static int parser_action_row1034[] = {
1,
- -1, 1, 576
+ -1, 1, 709
};
-static int parser_action_row888[] = {
+static int parser_action_row1035[] = {
3,
- -1, 1, 580,
- 73, 0, 1042,
- 76, 0, 1043
+ -1, 1, 713,
+ 73, 0, 1256,
+ 76, 0, 1257
};
-static int parser_action_row889[] = {
+static int parser_action_row1036[] = {
12,
- -1, 1, 582,
- 13, 0, 1044,
- 39, 0, 1045,
- 64, 0, 1046,
- 65, 0, 1047,
- 69, 0, 1048,
- 70, 0, 1049,
- 71, 0, 1050,
- 72, 0, 1051,
- 74, 0, 1052,
- 75, 0, 1053,
- 77, 0, 1054
+ -1, 1, 715,
+ 13, 0, 1258,
+ 39, 0, 1259,
+ 64, 0, 1260,
+ 65, 0, 1261,
+ 69, 0, 1262,
+ 70, 0, 1263,
+ 71, 0, 1264,
+ 72, 0, 1265,
+ 74, 0, 1266,
+ 75, 0, 1267,
+ 77, 0, 1268
};
-static int parser_action_row890[] = {
+static int parser_action_row1037[] = {
4,
- -1, 1, 594,
- 66, 0, 1055,
- 67, 0, 1056,
- 68, 0, 1057
+ -1, 1, 727,
+ 66, 0, 1269,
+ 67, 0, 1270,
+ 68, 0, 1271
};
-static int parser_action_row891[] = {
+static int parser_action_row1038[] = {
1,
- -1, 1, 597
+ -1, 1, 730
};
-static int parser_action_row892[] = {
+static int parser_action_row1039[] = {
1,
- -1, 1, 601
+ -1, 1, 734
};
-static int parser_action_row893[] = {
+static int parser_action_row1040[] = {
2,
- -1, 1, 604,
- 63, 0, 1058
+ -1, 1, 737,
+ 63, 0, 1272
};
-static int parser_action_row894[] = {
+static int parser_action_row1041[] = {
1,
- -1, 1, 387
+ -1, 1, 467
};
-static int parser_action_row895[] = {
+static int parser_action_row1042[] = {
3,
- -1, 3, 894,
+ -1, 3, 1041,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row896[] = {
+static int parser_action_row1043[] = {
1,
- -1, 1, 378
+ -1, 1, 458
};
-static int parser_action_row897[] = {
+static int parser_action_row1044[] = {
3,
- -1, 3, 896,
- 14, 0, 1061,
- 58, 0, 1062
+ -1, 3, 1043,
+ 14, 0, 1275,
+ 58, 0, 1276
};
-static int parser_action_row898[] = {
+static int parser_action_row1045[] = {
1,
- -1, 1, 384
+ -1, 1, 464
};
-static int parser_action_row899[] = {
+static int parser_action_row1046[] = {
1,
- -1, 1, 395
+ -1, 1, 475
};
-static int parser_action_row900[] = {
+static int parser_action_row1047[] = {
1,
- -1, 1, 383
+ -1, 1, 463
};
-static int parser_action_row901[] = {
+static int parser_action_row1048[] = {
31,
- -1, 1, 392,
- 8, 0, 308,
+ -1, 1, 472,
+ 8, 0, 326,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row902[] = {
+static int parser_action_row1049[] = {
2,
- -1, 3, 901,
+ -1, 3, 1048,
49, 0, 191
};
-static int parser_action_row903[] = {
+static int parser_action_row1050[] = {
23,
- -1, 3, 902,
+ -1, 3, 1049,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row904[] = {
+static int parser_action_row1051[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row905[] = {
+static int parser_action_row1052[] = {
3,
- -1, 1, 284,
- 35, 0, 645,
- 78, 0, 646
+ -1, 1, 357,
+ 35, 0, 730,
+ 78, 0, 731
};
-static int parser_action_row906[] = {
+static int parser_action_row1053[] = {
2,
- -1, 1, 302,
- 61, 0, 1068
+ -1, 1, 376,
+ 61, 0, 1282
};
-static int parser_action_row907[] = {
+static int parser_action_row1054[] = {
+ 2,
+ -1, 1, 375,
+ 56, 0, 330
+};
+static int parser_action_row1055[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 56, 0, 312
+ 56, 0, 330
};
-static int parser_action_row908[] = {
+static int parser_action_row1056[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row909[] = {
+static int parser_action_row1057[] = {
1,
- -1, 1, 846
+ -1, 1, 1264
};
-static int parser_action_row910[] = {
+static int parser_action_row1058[] = {
1,
- -1, 1, 298
+ -1, 1, 371
};
-static int parser_action_row911[] = {
+static int parser_action_row1059[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 55, 0, 907
+ 55, 0, 1055
};
-static int parser_action_row912[] = {
+static int parser_action_row1060[] = {
1,
- -1, 1, 317
+ -1, 1, 393
};
-static int parser_action_row913[] = {
- 4,
- -1, 1, 320,
- 46, 1, 328,
- 53, 0, 511,
- 57, 0, 1074
+static int parser_action_row1061[] = {
+ 5,
+ -1, 1, 396,
+ 46, 1, 404,
+ 53, 0, 553,
+ 57, 0, 1289,
+ 79, 0, 205
};
-static int parser_action_row914[] = {
+static int parser_action_row1062[] = {
1,
- -1, 1, 318
+ -1, 1, 394
};
-static int parser_action_row915[] = {
+static int parser_action_row1063[] = {
2,
- -1, 1, 312,
- 55, 0, 1075
+ -1, 1, 388,
+ 55, 0, 1290
};
-static int parser_action_row916[] = {
+static int parser_action_row1064[] = {
1,
- -1, 1, 315
+ -1, 1, 391
};
-static int parser_action_row917[] = {
+static int parser_action_row1065[] = {
1,
- -1, 1, 316
+ -1, 1, 392
};
-static int parser_action_row918[] = {
+static int parser_action_row1066[] = {
2,
- -1, 3, 917,
- 46, 0, 1078
+ -1, 3, 1065,
+ 46, 0, 1293
};
-static int parser_action_row919[] = {
+static int parser_action_row1067[] = {
4,
- -1, 1, 545,
- 3, 0, 639,
+ -1, 1, 676,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row920[] = {
+static int parser_action_row1068[] = {
3,
- -1, 1, 547,
+ -1, 1, 678,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row921[] = {
+static int parser_action_row1069[] = {
1,
- -1, 1, 551
+ -1, 1, 682
};
-static int parser_action_row922[] = {
+static int parser_action_row1070[] = {
+ 2,
+ -1, 1, 324,
+ 8, 0, 917
+};
+static int parser_action_row1071[] = {
1,
- -1, 1, 539
+ -1, 1, 666
};
-static int parser_action_row923[] = {
+static int parser_action_row1072[] = {
+ 2,
+ -1, 1, 664,
+ 8, 0, 1297
+};
+static int parser_action_row1073[] = {
3,
- -1, 1, 296,
- 51, 0, 923,
- 56, 0, 312
+ -1, 1, 369,
+ 51, 0, 1073,
+ 56, 0, 330
};
-static int parser_action_row924[] = {
+static int parser_action_row1074[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row925[] = {
+static int parser_action_row1075[] = {
5,
- -1, 3, 924,
+ -1, 3, 1074,
0, 0, 1,
1, 0, 2,
- 14, 0, 1084,
- 58, 0, 1085
+ 14, 0, 1300,
+ 58, 0, 1301
};
-static int parser_action_row926[] = {
+static int parser_action_row1076[] = {
1,
- -1, 1, 297
+ -1, 1, 370
};
-static int parser_action_row927[] = {
+static int parser_action_row1077[] = {
1,
- -1, 1, 541
+ -1, 1, 670
};
-static int parser_action_row928[] = {
+static int parser_action_row1078[] = {
1,
- -1, 1, 311
+ -1, 1, 387
};
-static int parser_action_row929[] = {
- 2,
- -1, 1, 112,
- 56, 0, 312
+static int parser_action_row1079[] = {
+ 3,
+ -1, 1, 146,
+ 56, 0, 330,
+ 79, 0, 205
};
-static int parser_action_row930[] = {
+static int parser_action_row1080[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 55, 0, 1088
+ 55, 0, 1305
};
-static int parser_action_row931[] = {
+static int parser_action_row1081[] = {
9,
- -1, 1, 258,
- 8, 0, 1092,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1309,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row932[] = {
+static int parser_action_row1082[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row933[] = {
+static int parser_action_row1083[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row934[] = {
+static int parser_action_row1084[] = {
1,
- -1, 1, 73
+ -1, 1, 75
};
-static int parser_action_row935[] = {
+static int parser_action_row1085[] = {
9,
- -1, 1, 258,
- 8, 0, 1096,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1313,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row936[] = {
+static int parser_action_row1086[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row937[] = {
+static int parser_action_row1087[] = {
8,
- -1, 1, 258,
- 8, 0, 1098,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1315,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row938[] = {
+static int parser_action_row1088[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1089[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 1319,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895,
+ 81, 0, 896
+};
+static int parser_action_row1090[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1091[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1092[] = {
1,
- -1, 1, 75
+ -1, 1, 81
};
-static int parser_action_row939[] = {
+static int parser_action_row1093[] = {
9,
- -1, 1, 258,
- 8, 0, 1099,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1323,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row940[] = {
+static int parser_action_row1094[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row941[] = {
+static int parser_action_row1095[] = {
8,
- -1, 1, 258,
- 8, 0, 1101,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1325,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row942[] = {
+static int parser_action_row1096[] = {
1,
- -1, 1, 253
+ -1, 1, 326
};
-static int parser_action_row943[] = {
+static int parser_action_row1097[] = {
1,
- -1, 1, 255
+ -1, 1, 328
};
-static int parser_action_row944[] = {
+static int parser_action_row1098[] = {
6,
- -1, 3, 943,
- 9, 0, 1102,
- 10, 0, 1103,
- 11, 0, 1104,
- 17, 0, 1105,
- 38, 0, 1106
+ -1, 3, 1097,
+ 9, 0, 1326,
+ 10, 0, 1327,
+ 11, 0, 1328,
+ 17, 0, 1329,
+ 38, 0, 1330
};
-static int parser_action_row945[] = {
+static int parser_action_row1099[] = {
3,
- -1, 3, 944,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 1098,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row946[] = {
+static int parser_action_row1100[] = {
5,
- -1, 1, 258,
- 16, 0, 942,
+ -1, 1, 331,
+ 16, 0, 1096,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row947[] = {
+static int parser_action_row1101[] = {
5,
- -1, 1, 258,
- 12, 0, 1109,
+ -1, 1, 331,
+ 12, 0, 1333,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row948[] = {
+static int parser_action_row1102[] = {
2,
- -1, 3, 947,
- 17, 0, 1111
+ -1, 3, 1101,
+ 17, 0, 1335
};
-static int parser_action_row949[] = {
+static int parser_action_row1103[] = {
4,
- -1, 1, 258,
+ -1, 1, 331,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row950[] = {
+static int parser_action_row1104[] = {
2,
- -1, 3, 949,
- 17, 0, 1113
+ -1, 3, 1103,
+ 17, 0, 1337
};
-static int parser_action_row951[] = {
+static int parser_action_row1105[] = {
17,
- -1, 3, 950,
- 53, 0, 383,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
+ -1, 3, 1104,
+ 53, 0, 411,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
};
-static int parser_action_row952[] = {
+static int parser_action_row1106[] = {
2,
- -1, 3, 951,
- 79, 0, 1115
+ -1, 3, 1105,
+ 80, 0, 1339
};
-static int parser_action_row953[] = {
+static int parser_action_row1107[] = {
21,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 51, 0, 1116,
- 53, 0, 383,
- 56, 0, 312,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
+ 51, 0, 1340,
+ 53, 0, 411,
+ 56, 0, 330,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
};
-static int parser_action_row954[] = {
+static int parser_action_row1108[] = {
3,
- -1, 3, 953,
- 80, 0, 1120,
- 81, 0, 1121
+ -1, 3, 1107,
+ 81, 0, 1344,
+ 82, 0, 1345
};
-static int parser_action_row955[] = {
+static int parser_action_row1109[] = {
21,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 51, 0, 1116,
- 53, 0, 383,
- 56, 0, 312,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
+ 51, 0, 1340,
+ 53, 0, 411,
+ 56, 0, 330,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
};
-static int parser_action_row956[] = {
- 1,
- -1, 1, 79
+static int parser_action_row1110[] = {
+ 23,
+ -1, 1, 1112,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row957[] = {
- 8,
- -1, 1, 258,
- 8, 0, 1124,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
- 20, 0, 32,
- 21, 0, 33,
- 22, 0, 34
+static int parser_action_row1111[] = {
+ 24,
+ -1, 1, 1119,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 49, 0, 191,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row958[] = {
+static int parser_action_row1112[] = {
+ 24,
+ -1, 1, 1114,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 49, 0, 191,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1113[] = {
1,
- -1, 1, 87
+ -1, 1, 1118
};
-static int parser_action_row959[] = {
+static int parser_action_row1114[] = {
+ 2,
+ -1, 3, 1113,
+ 10, 0, 1353
+};
+static int parser_action_row1115[] = {
+ 36,
+ -1, 3, 1114,
+ 11, 0, 170,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 171,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 32, 0, 172,
+ 33, 0, 683,
+ 34, 0, 684,
+ 35, 0, 685,
+ 36, 0, 686,
+ 37, 0, 44,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 47, 0, 390,
+ 48, 0, 176,
+ 50, 0, 687,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 79, 0, 205,
+ 80, 0, 688,
+ 81, 0, 689,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1116[] = {
+ 3,
+ -1, 1, 631,
+ 51, 0, 282,
+ 57, 0, 216
+};
+static int parser_action_row1117[] = {
4,
- -1, 3, 958,
- 32, 0, 1125,
- 47, 0, 361,
- 79, 0, 362
+ -1, 1, 855,
+ 58, 0, 1356,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row960[] = {
+static int parser_action_row1118[] = {
1,
- -1, 1, 402
+ -1, 1, 889
};
-static int parser_action_row961[] = {
+static int parser_action_row1119[] = {
1,
- -1, 1, 407
+ -1, 1, 1110
};
-static int parser_action_row962[] = {
+static int parser_action_row1120[] = {
+ 1,
+ -1, 1, 1123
+};
+static int parser_action_row1121[] = {
+ 1,
+ -1, 1, 1125
+};
+static int parser_action_row1122[] = {
+ 1,
+ -1, 1, 1124
+};
+static int parser_action_row1123[] = {
+ 1,
+ -1, 1, 1126
+};
+static int parser_action_row1124[] = {
+ 1,
+ -1, 1, 1127
+};
+static int parser_action_row1125[] = {
3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 1124,
+ 0, 0, 87,
+ 1, 0, 88
};
-static int parser_action_row963[] = {
+static int parser_action_row1126[] = {
1,
- -1, 1, 759
+ -1, 1, 1243
};
-static int parser_action_row964[] = {
- 4,
- -1, 3, 963,
- 32, 0, 1128,
- 47, 0, 361,
- 79, 0, 362
+static int parser_action_row1127[] = {
+ 1,
+ -1, 1, 1111
};
-static int parser_action_row965[] = {
- 4,
- -1, 1, 546,
- 3, 0, 639,
- 29, 0, 39,
- 91, 0, 62
+static int parser_action_row1128[] = {
+ 1,
+ -1, 1, 890
};
-static int parser_action_row966[] = {
+static int parser_action_row1129[] = {
3,
- -1, 1, 548,
- 29, 0, 39,
- 91, 0, 62
+ -1, 1, 850,
+ 53, 0, 239,
+ 63, 0, 1359
};
-static int parser_action_row967[] = {
+static int parser_action_row1130[] = {
+ 3,
+ -1, 3, 1129,
+ 0, 0, 87,
+ 1, 0, 88
+};
+static int parser_action_row1131[] = {
+ 2,
+ -1, 1, 887,
+ 55, 0, 847
+};
+static int parser_action_row1132[] = {
1,
- -1, 1, 552
+ -1, 1, 891
};
-static int parser_action_row968[] = {
+static int parser_action_row1133[] = {
1,
- -1, 1, 540
+ -1, 1, 89
};
-static int parser_action_row969[] = {
+static int parser_action_row1134[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1363,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1135[] = {
1,
- -1, 1, 542
+ -1, 1, 105
};
-static int parser_action_row970[] = {
+static int parser_action_row1136[] = {
9,
- -1, 1, 258,
- 8, 0, 1133,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1364,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row971[] = {
+static int parser_action_row1137[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row972[] = {
+static int parser_action_row1138[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row973[] = {
+static int parser_action_row1139[] = {
1,
- -1, 1, 74
+ -1, 1, 77
};
-static int parser_action_row974[] = {
+static int parser_action_row1140[] = {
9,
- -1, 1, 258,
- 8, 0, 1137,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1368,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row975[] = {
+static int parser_action_row1141[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row976[] = {
+static int parser_action_row1142[] = {
8,
- -1, 1, 258,
- 8, 0, 1139,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1370,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row977[] = {
+static int parser_action_row1143[] = {
+ 4,
+ -1, 3, 1142,
+ 32, 0, 1371,
+ 47, 0, 390,
+ 80, 0, 391
+};
+static int parser_action_row1144[] = {
1,
- -1, 1, 76
+ -1, 1, 486
};
-static int parser_action_row978[] = {
- 9,
- -1, 1, 258,
- 8, 0, 1140,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
- 20, 0, 32,
- 21, 0, 33,
- 22, 0, 34,
- 41, 0, 776
+static int parser_action_row1145[] = {
+ 1,
+ -1, 1, 491
};
-static int parser_action_row979[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1146[] = {
+ 36,
+ -1, 3, 1145,
+ 11, 0, 170,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 171,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 32, 0, 172,
+ 33, 0, 683,
+ 34, 0, 684,
+ 35, 0, 685,
+ 36, 0, 686,
+ 37, 0, 44,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 47, 0, 390,
+ 48, 0, 176,
+ 50, 0, 687,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 79, 0, 205,
+ 80, 0, 688,
+ 81, 0, 689,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row980[] = {
- 8,
- -1, 1, 258,
- 8, 0, 1142,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
- 20, 0, 32,
- 21, 0, 33,
- 22, 0, 34
+static int parser_action_row1147[] = {
+ 3,
+ -1, 3, 1146,
+ 0, 0, 87,
+ 1, 0, 88
};
-static int parser_action_row981[] = {
+static int parser_action_row1148[] = {
1,
- -1, 1, 80
+ -1, 1, 612
};
-static int parser_action_row982[] = {
- 8,
- -1, 1, 258,
- 8, 0, 1143,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+static int parser_action_row1149[] = {
+ 3,
+ -1, 3, 1148,
+ 0, 0, 87,
+ 1, 0, 88
+};
+static int parser_action_row1150[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1151[] = {
+ 1,
+ -1, 1, 863
+};
+static int parser_action_row1152[] = {
+ 4,
+ -1, 3, 1151,
+ 32, 0, 1377,
+ 47, 0, 390,
+ 80, 0, 391
+};
+static int parser_action_row1153[] = {
+ 4,
+ -1, 1, 677,
+ 3, 0, 722,
+ 29, 0, 39,
+ 92, 0, 62
+};
+static int parser_action_row1154[] = {
+ 3,
+ -1, 1, 679,
+ 29, 0, 39,
+ 92, 0, 62
+};
+static int parser_action_row1155[] = {
+ 1,
+ -1, 1, 683
+};
+static int parser_action_row1156[] = {
+ 1,
+ -1, 1, 667
+};
+static int parser_action_row1157[] = {
+ 2,
+ -1, 1, 665,
+ 8, 0, 1382
+};
+static int parser_action_row1158[] = {
+ 1,
+ -1, 1, 671
+};
+static int parser_action_row1159[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1383,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1160[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1161[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1162[] = {
+ 1,
+ -1, 1, 76
+};
+static int parser_action_row1163[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1387,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1164[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1165[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1389,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row983[] = {
+static int parser_action_row1166[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1167[] = {
+ 11,
+ -1, 1, 331,
+ 3, 0, 890,
+ 8, 0, 1393,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895,
+ 81, 0, 896
+};
+static int parser_action_row1168[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1169[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1170[] = {
1,
- -1, 1, 88
+ -1, 1, 82
};
-static int parser_action_row984[] = {
+static int parser_action_row1171[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1397,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1172[] = {
3,
- -1, 1, 337,
- 25, 1, 630,
- 49, 1, 708
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row985[] = {
+static int parser_action_row1173[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1399,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1174[] = {
+ 1,
+ -1, 1, 90
+};
+static int parser_action_row1175[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1400,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1176[] = {
+ 1,
+ -1, 1, 106
+};
+static int parser_action_row1177[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1401,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1178[] = {
3,
- -1, 1, 336,
- 25, 1, 629,
- 49, 1, 707
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row986[] = {
+static int parser_action_row1179[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1180[] = {
+ 1,
+ -1, 1, 78
+};
+static int parser_action_row1181[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1405,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1182[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1183[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1407,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1184[] = {
+ 3,
+ -1, 1, 417,
+ 25, 1, 960,
+ 49, 1, 1086
+};
+static int parser_action_row1185[] = {
+ 3,
+ -1, 1, 416,
+ 25, 1, 959,
+ 49, 1, 1085
+};
+static int parser_action_row1186[] = {
2,
- -1, 1, 412,
- 25, 1, 687
+ -1, 1, 496,
+ 25, 1, 1021
};
-static int parser_action_row987[] = {
+static int parser_action_row1187[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row988[] = {
+static int parser_action_row1188[] = {
3,
- -1, 1, 397,
- 25, 1, 674,
- 58, 0, 1145
+ -1, 1, 478,
+ 25, 1, 1005,
+ 58, 0, 1409
};
-static int parser_action_row989[] = {
+static int parser_action_row1189[] = {
+ 4,
+ -1, 1, 477,
+ 25, 1, 1004,
+ 56, 0, 330,
+ 58, 0, 1410
+};
+static int parser_action_row1190[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row990[] = {
+static int parser_action_row1191[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row991[] = {
+static int parser_action_row1192[] = {
2,
- -1, 1, 421,
- 25, 1, 690
+ -1, 1, 505,
+ 25, 1, 1024
};
-static int parser_action_row992[] = {
+static int parser_action_row1193[] = {
2,
- -1, 3, 991,
- 80, 0, 319
+ -1, 3, 1192,
+ 81, 0, 338
};
-static int parser_action_row993[] = {
+static int parser_action_row1194[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row994[] = {
+static int parser_action_row1195[] = {
1,
- -1, 1, 645
+ -1, 1, 975
};
-static int parser_action_row995[] = {
+static int parser_action_row1196[] = {
1,
- -1, 1, 640
+ -1, 1, 970
};
-static int parser_action_row996[] = {
+static int parser_action_row1197[] = {
2,
- -1, 3, 995,
- 25, 0, 1150
+ -1, 3, 1196,
+ 25, 0, 1416
};
-static int parser_action_row997[] = {
+static int parser_action_row1198[] = {
33,
- -1, 3, 996,
+ -1, 3, 1197,
0, 0, 1,
1, 0, 2,
- 8, 0, 1151,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 1417,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row998[] = {
+static int parser_action_row1199[] = {
2,
- -1, 3, 997,
- 56, 0, 1154
+ -1, 3, 1198,
+ 56, 0, 1420
};
-static int parser_action_row999[] = {
+static int parser_action_row1200[] = {
23,
- -1, 3, 998,
+ -1, 3, 1199,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1000[] = {
+static int parser_action_row1201[] = {
23,
- -1, 3, 999,
+ -1, 3, 1200,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1001[] = {
+static int parser_action_row1202[] = {
1,
- -1, 1, 655
+ -1, 1, 985
};
-static int parser_action_row1002[] = {
+static int parser_action_row1203[] = {
1,
- -1, 1, 678
+ -1, 1, 1012
};
-static int parser_action_row1003[] = {
+static int parser_action_row1204[] = {
1,
- -1, 1, 683
+ -1, 1, 1017
};
-static int parser_action_row1004[] = {
+static int parser_action_row1205[] = {
5,
- -1, 3, 1003,
- 11, 0, 1157,
- 46, 0, 534,
- 80, 0, 1158,
- 81, 0, 1159
+ -1, 3, 1204,
+ 11, 0, 1423,
+ 46, 0, 577,
+ 81, 0, 1424,
+ 82, 0, 1425
};
-static int parser_action_row1005[] = {
+static int parser_action_row1206[] = {
23,
- -1, 3, 1004,
+ -1, 3, 1205,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1006[] = {
+static int parser_action_row1207[] = {
23,
- -1, 3, 1005,
+ -1, 3, 1206,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1007[] = {
+static int parser_action_row1208[] = {
2,
- -1, 1, 371,
- 25, 1, 657
+ -1, 1, 451,
+ 25, 1, 987
};
-static int parser_action_row1008[] = {
+static int parser_action_row1209[] = {
1,
- -1, 1, 416
+ -1, 1, 500
};
-static int parser_action_row1009[] = {
+static int parser_action_row1210[] = {
3,
- -1, 3, 1008,
+ -1, 3, 1209,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1010[] = {
+static int parser_action_row1211[] = {
1,
- -1, 1, 414
+ -1, 1, 498
};
-static int parser_action_row1011[] = {
+static int parser_action_row1212[] = {
23,
- -1, 3, 1010,
+ -1, 3, 1211,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1012[] = {
+static int parser_action_row1213[] = {
2,
- -1, 3, 1011,
- 14, 0, 1163
+ -1, 3, 1212,
+ 14, 0, 1429
};
-static int parser_action_row1013[] = {
+static int parser_action_row1214[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1014[] = {
+static int parser_action_row1215[] = {
2,
- -1, 1, 378,
- 25, 1, 663
+ -1, 1, 458,
+ 25, 1, 993
};
-static int parser_action_row1015[] = {
+static int parser_action_row1216[] = {
3,
- -1, 3, 1014,
- 14, 0, 1165,
- 58, 0, 1166
+ -1, 3, 1215,
+ 14, 0, 1431,
+ 58, 0, 1432
};
-static int parser_action_row1016[] = {
+static int parser_action_row1217[] = {
1,
- -1, 1, 669
+ -1, 1, 999
};
-static int parser_action_row1017[] = {
+static int parser_action_row1218[] = {
1,
- -1, 1, 672
+ -1, 1, 1002
};
-static int parser_action_row1018[] = {
+static int parser_action_row1219[] = {
31,
- -1, 1, 392,
- 8, 0, 983,
+ -1, 1, 472,
+ 8, 0, 1183,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1019[] = {
+static int parser_action_row1220[] = {
1,
- -1, 1, 668
+ -1, 1, 998
};
-static int parser_action_row1020[] = {
+static int parser_action_row1221[] = {
2,
- -1, 3, 1019,
+ -1, 3, 1220,
49, 0, 191
};
-static int parser_action_row1021[] = {
+static int parser_action_row1222[] = {
23,
- -1, 3, 1020,
+ -1, 3, 1221,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1022[] = {
+static int parser_action_row1223[] = {
2,
- -1, 3, 1021,
- 54, 0, 1169
+ -1, 3, 1222,
+ 54, 0, 1435
};
-static int parser_action_row1023[] = {
+static int parser_action_row1224[] = {
3,
- -1, 3, 1022,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 1223,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row1024[] = {
+static int parser_action_row1225[] = {
1,
- -1, 1, 853
+ -1, 1, 1271
};
-static int parser_action_row1025[] = {
+static int parser_action_row1226[] = {
+ 2,
+ -1, 1, 775,
+ 79, 0, 545
+};
+static int parser_action_row1227[] = {
+ 23,
+ -1, 3, 1226,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1228[] = {
+ 2,
+ -1, 1, 631,
+ 51, 0, 282
+};
+static int parser_action_row1229[] = {
1,
- -1, 1, 330
+ -1, 1, 620
};
-static int parser_action_row1026[] = {
+static int parser_action_row1230[] = {
+ 2,
+ -1, 3, 1229,
+ 54, 0, 1439
+};
+static int parser_action_row1231[] = {
+ 2,
+ -1, 1, 408,
+ 79, 0, 205
+};
+static int parser_action_row1232[] = {
1,
- -1, 1, 514
+ -1, 1, 639
};
-static int parser_action_row1027[] = {
+static int parser_action_row1233[] = {
1,
- -1, 1, 615
+ -1, 1, 748
};
-static int parser_action_row1028[] = {
+static int parser_action_row1234[] = {
23,
- -1, 3, 1027,
+ -1, 3, 1233,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1029[] = {
+static int parser_action_row1235[] = {
21,
- -1, 3, 1028,
- 11, 0, 863,
- 32, 0, 865,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1234,
+ 11, 0, 1010,
+ 32, 0, 1012,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1030[] = {
+static int parser_action_row1236[] = {
3,
- -1, 3, 1029,
- 47, 0, 1173,
- 79, 0, 1174
+ -1, 3, 1235,
+ 47, 0, 1443,
+ 80, 0, 1444
};
-static int parser_action_row1031[] = {
+static int parser_action_row1237[] = {
20,
- -1, 3, 1030,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1236,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1032[] = {
+static int parser_action_row1238[] = {
1,
- -1, 1, 612
+ -1, 1, 745
};
-static int parser_action_row1033[] = {
+static int parser_action_row1239[] = {
+ 1,
+ -1, 1, 751
+};
+static int parser_action_row1240[] = {
+ 1,
+ -1, 1, 753
+};
+static int parser_action_row1241[] = {
+ 1,
+ -1, 1, 755
+};
+static int parser_action_row1242[] = {
+ 1,
+ -1, 1, 757
+};
+static int parser_action_row1243[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1034[] = {
+static int parser_action_row1244[] = {
2,
- -1, 1, 607,
- 63, 1, 609
+ -1, 1, 740,
+ 63, 1, 742
};
-static int parser_action_row1035[] = {
+static int parser_action_row1245[] = {
2,
- -1, 3, 1034,
- 63, 0, 1178
+ -1, 3, 1244,
+ 63, 0, 1448
};
-static int parser_action_row1036[] = {
+static int parser_action_row1246[] = {
2,
- -1, 3, 1035,
- 52, 0, 1179
+ -1, 3, 1245,
+ 52, 0, 1449
};
-static int parser_action_row1037[] = {
+static int parser_action_row1247[] = {
20,
- -1, 3, 1036,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1246,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1038[] = {
+static int parser_action_row1248[] = {
1,
- -1, 1, 611
+ -1, 1, 744
};
-static int parser_action_row1039[] = {
+static int parser_action_row1249[] = {
+ 1,
+ -1, 1, 759
+};
+static int parser_action_row1250[] = {
+ 1,
+ -1, 1, 761
+};
+static int parser_action_row1251[] = {
+ 1,
+ -1, 1, 765
+};
+static int parser_action_row1252[] = {
+ 1,
+ -1, 1, 763
+};
+static int parser_action_row1253[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row1040[] = {
+static int parser_action_row1254[] = {
3,
- -1, 3, 1039,
- 53, 0, 1182,
- 54, 0, 1183
+ -1, 3, 1253,
+ 53, 0, 1452,
+ 54, 0, 1453
};
-static int parser_action_row1041[] = {
+static int parser_action_row1255[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1042[] = {
+static int parser_action_row1256[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 25, 0, 1185
+ 25, 0, 1455
};
-static int parser_action_row1043[] = {
+static int parser_action_row1257[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1044[] = {
+static int parser_action_row1258[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1045[] = {
+static int parser_action_row1259[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1046[] = {
+static int parser_action_row1260[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1047[] = {
+static int parser_action_row1261[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1048[] = {
+static int parser_action_row1262[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1049[] = {
+static int parser_action_row1263[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1050[] = {
+static int parser_action_row1264[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1051[] = {
+static int parser_action_row1265[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1052[] = {
+static int parser_action_row1266[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1053[] = {
+static int parser_action_row1267[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1054[] = {
+static int parser_action_row1268[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1055[] = {
+static int parser_action_row1269[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1056[] = {
+static int parser_action_row1270[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1057[] = {
+static int parser_action_row1271[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1058[] = {
+static int parser_action_row1272[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1059[] = {
+static int parser_action_row1273[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1060[] = {
+static int parser_action_row1274[] = {
31,
- -1, 1, 342,
- 8, 0, 580,
+ -1, 1, 422,
+ 8, 0, 628,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1061[] = {
+static int parser_action_row1275[] = {
3,
- -1, 3, 1060,
+ -1, 3, 1274,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1062[] = {
+static int parser_action_row1276[] = {
33,
- -1, 3, 1061,
+ -1, 3, 1275,
0, 0, 1,
1, 0, 2,
8, 0, 155,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1063[] = {
+static int parser_action_row1277[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1064[] = {
+static int parser_action_row1278[] = {
1,
- -1, 1, 389
+ -1, 1, 469
};
-static int parser_action_row1065[] = {
+static int parser_action_row1279[] = {
1,
- -1, 1, 380
+ -1, 1, 460
};
-static int parser_action_row1066[] = {
+static int parser_action_row1280[] = {
1,
- -1, 1, 386
+ -1, 1, 466
};
-static int parser_action_row1067[] = {
+static int parser_action_row1281[] = {
4,
- -1, 1, 280,
- 35, 0, 645,
- 58, 1, 563,
- 78, 0, 646
+ -1, 1, 353,
+ 35, 0, 730,
+ 58, 1, 694,
+ 78, 0, 731
};
-static int parser_action_row1068[] = {
+static int parser_action_row1282[] = {
1,
- -1, 1, 286
+ -1, 1, 359
};
-static int parser_action_row1069[] = {
+static int parser_action_row1283[] = {
1,
- -1, 1, 303
+ -1, 1, 378
};
-static int parser_action_row1070[] = {
+static int parser_action_row1284[] = {
+ 2,
+ -1, 1, 377,
+ 61, 0, 1480
+};
+static int parser_action_row1285[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1071[] = {
+static int parser_action_row1286[] = {
3,
- -1, 1, 285,
- 35, 0, 645,
- 78, 0, 646
+ -1, 1, 358,
+ 35, 0, 730,
+ 78, 0, 731
};
-static int parser_action_row1072[] = {
+static int parser_action_row1287[] = {
2,
- -1, 3, 1071,
- 80, 0, 751
+ -1, 3, 1286,
+ 81, 0, 865
};
-static int parser_action_row1073[] = {
+static int parser_action_row1288[] = {
1,
- -1, 1, 847
+ -1, 1, 1265
};
-static int parser_action_row1074[] = {
+static int parser_action_row1289[] = {
1,
- -1, 1, 299
+ -1, 1, 372
};
-static int parser_action_row1075[] = {
+static int parser_action_row1290[] = {
17,
- -1, 3, 1074,
- 53, 0, 383,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
+ -1, 3, 1289,
+ 53, 0, 411,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
};
-static int parser_action_row1076[] = {
+static int parser_action_row1291[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1077[] = {
+static int parser_action_row1292[] = {
1,
- -1, 1, 850
+ -1, 1, 1268
};
-static int parser_action_row1078[] = {
+static int parser_action_row1293[] = {
2,
- -1, 1, 313,
- 55, 0, 1075
+ -1, 1, 389,
+ 55, 0, 1290
};
-static int parser_action_row1079[] = {
+static int parser_action_row1294[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1080[] = {
+static int parser_action_row1295[] = {
3,
- -1, 1, 549,
+ -1, 1, 680,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
+};
+static int parser_action_row1296[] = {
+ 1,
+ -1, 1, 684
+};
+static int parser_action_row1297[] = {
+ 1,
+ -1, 1, 686
+};
+static int parser_action_row1298[] = {
+ 1,
+ -1, 1, 668
+};
+static int parser_action_row1299[] = {
+ 5,
+ -1, 3, 1298,
+ 0, 0, 1,
+ 1, 0, 2,
+ 14, 0, 1489,
+ 58, 0, 1490
+};
+static int parser_action_row1300[] = {
+ 3,
+ -1, 3, 1299,
+ 52, 0, 1492,
+ 81, 0, 865
+};
+static int parser_action_row1301[] = {
+ 33,
+ -1, 3, 1300,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1302[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1303[] = {
+ 1,
+ -1, 1, 381
+};
+static int parser_action_row1304[] = {
+ 1,
+ -1, 1, 148
+};
+static int parser_action_row1305[] = {
+ 2,
+ -1, 1, 147,
+ 56, 0, 330
+};
+static int parser_action_row1306[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1307[] = {
+ 1,
+ -1, 1, 1262
+};
+static int parser_action_row1308[] = {
+ 2,
+ -1, 3, 1307,
+ 54, 0, 1498
+};
+static int parser_action_row1309[] = {
+ 4,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 55, 0, 1305
+};
+static int parser_action_row1310[] = {
+ 1,
+ -1, 1, 83
+};
+static int parser_action_row1311[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1501,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1312[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1313[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1503,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1314[] = {
+ 1,
+ -1, 1, 91
+};
+static int parser_action_row1315[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1504,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1316[] = {
+ 1,
+ -1, 1, 107
+};
+static int parser_action_row1317[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1505,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1318[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1319[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1320[] = {
+ 1,
+ -1, 1, 79
+};
+static int parser_action_row1321[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1509,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1322[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1323[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1511,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1324[] = {
+ 1,
+ -1, 1, 97
+};
+static int parser_action_row1325[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1512,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1326[] = {
+ 1,
+ -1, 1, 113
+};
+static int parser_action_row1327[] = {
+ 17,
+ -1, 3, 1326,
+ 53, 0, 411,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
+};
+static int parser_action_row1328[] = {
+ 2,
+ -1, 3, 1327,
+ 80, 0, 1514
+};
+static int parser_action_row1329[] = {
+ 21,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 1340,
+ 53, 0, 411,
+ 56, 0, 330,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
+};
+static int parser_action_row1330[] = {
+ 3,
+ -1, 3, 1329,
+ 81, 0, 1517,
+ 82, 0, 1518
+};
+static int parser_action_row1331[] = {
+ 21,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 1340,
+ 53, 0, 411,
+ 56, 0, 330,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 81, 0, 426
+};
+static int parser_action_row1332[] = {
+ 2,
+ -1, 1, 150,
+ 13, 0, 456
+};
+static int parser_action_row1333[] = {
+ 2,
+ -1, 3, 1332,
+ 17, 0, 1522
+};
+static int parser_action_row1334[] = {
+ 4,
+ -1, 1, 331,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1335[] = {
+ 2,
+ -1, 3, 1334,
+ 17, 0, 1524
+};
+static int parser_action_row1336[] = {
+ 2,
+ -1, 3, 1335,
+ 82, 0, 1525
+};
+static int parser_action_row1337[] = {
+ 2,
+ -1, 3, 1336,
+ 17, 0, 1526
+};
+static int parser_action_row1338[] = {
+ 2,
+ -1, 3, 1337,
+ 82, 0, 1527
+};
+static int parser_action_row1339[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 570,
+ 56, 0, 330
+};
+static int parser_action_row1340[] = {
+ 2,
+ -1, 3, 1339,
+ 56, 0, 330
+};
+static int parser_action_row1341[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1342[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 1340,
+ 56, 0, 330
+};
+static int parser_action_row1343[] = {
+ 3,
+ -1, 3, 1342,
+ 13, 0, 1533,
+ 14, 0, 1534
+};
+static int parser_action_row1344[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1345[] = {
+ 9,
+ -1, 1, 221,
+ 12, 0, 1537,
+ 13, 0, 456,
+ 16, 1, 331,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 56, 0, 330,
+ 58, 0, 1538
+};
+static int parser_action_row1346[] = {
+ 3,
+ -1, 1, 189,
+ 56, 0, 330,
+ 58, 0, 1543
+};
+static int parser_action_row1347[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 1340,
+ 56, 0, 330
+};
+static int parser_action_row1348[] = {
+ 6,
+ -1, 3, 1347,
+ 3, 0, 722,
+ 13, 0, 1546,
+ 29, 0, 39,
+ 85, 0, 1547,
+ 92, 0, 62
+};
+static int parser_action_row1349[] = {
+ 1,
+ -1, 1, 1113
+};
+static int parser_action_row1350[] = {
+ 23,
+ -1, 1, 1120,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1351[] = {
+ 1,
+ -1, 1, 1121
+};
+static int parser_action_row1352[] = {
+ 23,
+ -1, 1, 1115,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1081[] = {
+static int parser_action_row1353[] = {
1,
- -1, 1, 553
+ -1, 1, 1116
};
-static int parser_action_row1082[] = {
- 1,
- -1, 1, 555
+static int parser_action_row1354[] = {
+ 3,
+ -1, 3, 1353,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row1083[] = {
- 5,
- -1, 3, 1082,
- 0, 0, 1,
- 1, 0, 2,
- 14, 0, 1218,
- 58, 0, 1219
+static int parser_action_row1355[] = {
+ 2,
+ -1, 3, 1354,
+ 52, 0, 1553
};
-static int parser_action_row1084[] = {
- 3,
- -1, 3, 1083,
- 52, 0, 1221,
- 80, 0, 751
+static int parser_action_row1356[] = {
+ 4,
+ -1, 1, 857,
+ 58, 0, 1554,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row1085[] = {
- 33,
- -1, 3, 1084,
- 0, 0, 1,
- 1, 0, 2,
- 8, 0, 507,
- 11, 0, 28,
- 14, 0, 30,
- 17, 0, 31,
- 23, 0, 35,
- 26, 0, 36,
- 27, 0, 37,
- 28, 0, 38,
- 33, 0, 40,
- 34, 0, 41,
- 35, 0, 42,
- 36, 0, 43,
- 37, 0, 44,
- 38, 0, 45,
- 41, 0, 46,
+static int parser_action_row1357[] = {
+ 23,
+ -1, 3, 1356,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 51,
+ 48, 0, 176,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1086[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1087[] = {
- 1,
- -1, 1, 305
+static int parser_action_row1358[] = {
+ 23,
+ -1, 3, 1357,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1088[] = {
+static int parser_action_row1359[] = {
1,
- -1, 1, 113
+ -1, 1, 1244
};
-static int parser_action_row1089[] = {
+static int parser_action_row1360[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1090[] = {
+static int parser_action_row1361[] = {
+ 4,
+ -1, 1, 862,
+ 58, 0, 1559,
+ 59, 0, 220,
+ 60, 0, 221
+};
+static int parser_action_row1362[] = {
1,
- -1, 1, 844
+ -1, 1, 1247
};
-static int parser_action_row1091[] = {
+static int parser_action_row1363[] = {
2,
- -1, 3, 1090,
- 54, 0, 1226
+ -1, 1, 888,
+ 55, 0, 847
};
-static int parser_action_row1092[] = {
- 4,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2,
- 55, 0, 1088
+static int parser_action_row1364[] = {
+ 1,
+ -1, 1, 121
};
-static int parser_action_row1093[] = {
+static int parser_action_row1365[] = {
1,
- -1, 1, 77
+ -1, 1, 85
};
-static int parser_action_row1094[] = {
+static int parser_action_row1366[] = {
9,
- -1, 1, 258,
- 8, 0, 1229,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1561,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row1095[] = {
+static int parser_action_row1367[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1096[] = {
- 8,
- -1, 1, 258,
- 8, 0, 1231,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
- 20, 0, 32,
- 21, 0, 33,
- 22, 0, 34
-};
-static int parser_action_row1097[] = {
- 1,
- -1, 1, 81
-};
-static int parser_action_row1098[] = {
+static int parser_action_row1368[] = {
8,
- -1, 1, 258,
- 8, 0, 1232,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1563,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1099[] = {
- 1,
- -1, 1, 89
-};
-static int parser_action_row1100[] = {
+static int parser_action_row1369[] = {
1,
- -1, 1, 83
+ -1, 1, 93
};
-static int parser_action_row1101[] = {
+static int parser_action_row1370[] = {
8,
- -1, 1, 258,
- 8, 0, 1233,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1564,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1102[] = {
+static int parser_action_row1371[] = {
1,
- -1, 1, 91
-};
-static int parser_action_row1103[] = {
- 17,
- -1, 3, 1102,
- 53, 0, 383,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
-};
-static int parser_action_row1104[] = {
- 2,
- -1, 3, 1103,
- 79, 0, 1235
+ -1, 1, 109
};
-static int parser_action_row1105[] = {
- 21,
- -1, 1, 531,
+static int parser_action_row1372[] = {
+ 3,
+ -1, 1, 656,
0, 0, 1,
- 1, 0, 2,
- 51, 0, 1116,
- 53, 0, 383,
- 56, 0, 312,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
+ 1, 0, 2
};
-static int parser_action_row1106[] = {
+static int parser_action_row1373[] = {
3,
- -1, 3, 1105,
- 80, 0, 1238,
- 81, 0, 1239
-};
-static int parser_action_row1107[] = {
- 21,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
- 1, 0, 2,
- 51, 0, 1116,
- 53, 0, 383,
- 56, 0, 312,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 80, 0, 398
-};
-static int parser_action_row1108[] = {
- 1,
- -1, 1, 114
-};
-static int parser_action_row1109[] = {
- 2,
- -1, 3, 1108,
- 17, 0, 1242
-};
-static int parser_action_row1110[] = {
- 4,
- -1, 1, 258,
- 20, 0, 32,
- 21, 0, 33,
- 22, 0, 34
+ 1, 0, 2
};
-static int parser_action_row1111[] = {
+static int parser_action_row1374[] = {
2,
- -1, 3, 1110,
- 17, 0, 1244
+ -1, 3, 1373,
+ 52, 0, 1567
};
-static int parser_action_row1112[] = {
- 2,
- -1, 3, 1111,
- 81, 0, 1245
+static int parser_action_row1375[] = {
+ 1,
+ -1, 1, 613
};
-static int parser_action_row1113[] = {
- 2,
- -1, 3, 1112,
- 17, 0, 1246
+static int parser_action_row1376[] = {
+ 1,
+ -1, 1, 616
};
-static int parser_action_row1114[] = {
+static int parser_action_row1377[] = {
2,
- -1, 3, 1113,
- 81, 0, 1247
+ -1, 3, 1376,
+ 25, 0, 1568
};
-static int parser_action_row1115[] = {
- 5,
- -1, 1, 531,
+static int parser_action_row1378[] = {
+ 3,
+ -1, 1, 656,
0, 0, 1,
- 1, 0, 2,
- 51, 0, 527,
- 56, 0, 312
-};
-static int parser_action_row1116[] = {
- 2,
- -1, 3, 1115,
- 56, 0, 312
+ 1, 0, 2
};
-static int parser_action_row1117[] = {
+static int parser_action_row1379[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1118[] = {
- 5,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2,
- 51, 0, 1116,
- 56, 0, 312
+static int parser_action_row1380[] = {
+ 3,
+ -1, 1, 681,
+ 29, 0, 39,
+ 92, 0, 62
};
-static int parser_action_row1119[] = {
- 2,
- -1, 3, 1118,
- 14, 0, 1253
+static int parser_action_row1381[] = {
+ 1,
+ -1, 1, 685
};
-static int parser_action_row1120[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1382[] = {
+ 1,
+ -1, 1, 687
};
-static int parser_action_row1121[] = {
- 8,
- -1, 1, 178,
- 12, 0, 1255,
- 16, 1, 258,
+static int parser_action_row1383[] = {
+ 1,
+ -1, 1, 669
+};
+static int parser_action_row1384[] = {
+ 1,
+ -1, 1, 84
+};
+static int parser_action_row1385[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1572,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 56, 0, 312,
- 58, 0, 1256
+ 41, 0, 895
};
-static int parser_action_row1122[] = {
+static int parser_action_row1386[] = {
3,
- -1, 1, 146,
- 56, 0, 312,
- 58, 0, 1260
-};
-static int parser_action_row1123[] = {
- 5,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
- 1, 0, 2,
- 51, 0, 1116,
- 56, 0, 312
+ 1, 0, 2
};
-static int parser_action_row1124[] = {
- 6,
- -1, 3, 1123,
- 3, 0, 639,
- 13, 0, 1263,
- 29, 0, 39,
- 85, 0, 1264,
- 91, 0, 62
+static int parser_action_row1387[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1574,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
};
-static int parser_action_row1125[] = {
+static int parser_action_row1388[] = {
1,
- -1, 1, 95
+ -1, 1, 92
};
-static int parser_action_row1126[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1389[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1575,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
};
-static int parser_action_row1127[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1390[] = {
+ 1,
+ -1, 1, 108
};
-static int parser_action_row1128[] = {
- 2,
- -1, 3, 1127,
- 25, 0, 1269
+static int parser_action_row1391[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1576,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
};
-static int parser_action_row1129[] = {
+static int parser_action_row1392[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1130[] = {
+static int parser_action_row1393[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1131[] = {
- 3,
- -1, 1, 550,
- 29, 0, 39,
- 91, 0, 62
-};
-static int parser_action_row1132[] = {
- 1,
- -1, 1, 554
-};
-static int parser_action_row1133[] = {
- 1,
- -1, 1, 556
-};
-static int parser_action_row1134[] = {
+static int parser_action_row1394[] = {
1,
- -1, 1, 78
+ -1, 1, 80
};
-static int parser_action_row1135[] = {
+static int parser_action_row1395[] = {
9,
- -1, 1, 258,
- 8, 0, 1273,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1580,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 41, 0, 776
+ 41, 0, 895
};
-static int parser_action_row1136[] = {
+static int parser_action_row1396[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1137[] = {
+static int parser_action_row1397[] = {
8,
- -1, 1, 258,
- 8, 0, 1275,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1582,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1138[] = {
+static int parser_action_row1398[] = {
1,
- -1, 1, 82
+ -1, 1, 98
};
-static int parser_action_row1139[] = {
+static int parser_action_row1399[] = {
8,
- -1, 1, 258,
- 8, 0, 1276,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1583,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1140[] = {
+static int parser_action_row1400[] = {
1,
- -1, 1, 90
+ -1, 1, 114
};
-static int parser_action_row1141[] = {
+static int parser_action_row1401[] = {
1,
- -1, 1, 84
+ -1, 1, 122
};
-static int parser_action_row1142[] = {
+static int parser_action_row1402[] = {
+ 1,
+ -1, 1, 86
+};
+static int parser_action_row1403[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1584,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1404[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1405[] = {
8,
- -1, 1, 258,
- 8, 0, 1277,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1586,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1143[] = {
+static int parser_action_row1406[] = {
1,
- -1, 1, 92
+ -1, 1, 94
};
-static int parser_action_row1144[] = {
+static int parser_action_row1407[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1587,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1408[] = {
1,
- -1, 1, 96
+ -1, 1, 110
};
-static int parser_action_row1145[] = {
+static int parser_action_row1409[] = {
23,
- -1, 3, 1144,
+ -1, 3, 1408,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1146[] = {
+static int parser_action_row1410[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1147[] = {
+static int parser_action_row1411[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1412[] = {
+ 3,
+ -1, 1, 479,
+ 25, 1, 1006,
+ 58, 0, 1591
+};
+static int parser_action_row1413[] = {
2,
- -1, 3, 1146,
- 24, 0, 1280
+ -1, 3, 1412,
+ 24, 0, 1592
};
-static int parser_action_row1148[] = {
+static int parser_action_row1414[] = {
2,
- -1, 3, 1147,
- 14, 0, 1281
+ -1, 3, 1413,
+ 14, 0, 1593
};
-static int parser_action_row1149[] = {
+static int parser_action_row1415[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 52, 0, 1282
+ 52, 0, 1594
};
-static int parser_action_row1150[] = {
+static int parser_action_row1416[] = {
3,
- -1, 3, 1149,
- 29, 0, 1283,
- 55, 0, 590
+ -1, 3, 1415,
+ 29, 0, 1595,
+ 55, 0, 640
};
-static int parser_action_row1151[] = {
+static int parser_action_row1417[] = {
33,
- -1, 3, 1150,
+ -1, 3, 1416,
0, 0, 1,
1, 0, 2,
- 8, 0, 1151,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 1417,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1152[] = {
+static int parser_action_row1418[] = {
2,
- -1, 1, 338,
- 25, 1, 631
+ -1, 1, 418,
+ 25, 1, 961
};
-static int parser_action_row1153[] = {
+static int parser_action_row1419[] = {
31,
- -1, 3, 1152,
- 8, 0, 1285,
+ -1, 3, 1418,
+ 8, 0, 1597,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1154[] = {
+static int parser_action_row1420[] = {
1,
- -1, 1, 698
+ -1, 1, 1032
};
-static int parser_action_row1155[] = {
+static int parser_action_row1421[] = {
23,
- -1, 3, 1154,
+ -1, 3, 1420,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1156[] = {
+static int parser_action_row1422[] = {
1,
- -1, 1, 680
+ -1, 1, 1014
};
-static int parser_action_row1157[] = {
+static int parser_action_row1423[] = {
1,
- -1, 1, 685
+ -1, 1, 1019
};
-static int parser_action_row1158[] = {
+static int parser_action_row1424[] = {
24,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row1159[] = {
+static int parser_action_row1425[] = {
27,
- -1, 1, 510,
+ -1, 1, 635,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
51, 0, 133,
- 53, 1, 506,
- 58, 1, 506,
- 59, 1, 506,
- 60, 1, 506,
- 63, 1, 506,
+ 53, 1, 631,
+ 58, 1, 631,
+ 59, 1, 631,
+ 60, 1, 631,
+ 63, 1, 631,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row1160[] = {
+static int parser_action_row1426[] = {
4,
- -1, 1, 472,
- 58, 0, 1291,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 556,
+ 58, 0, 1603,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row1161[] = {
+static int parser_action_row1427[] = {
1,
- -1, 1, 681
+ -1, 1, 1015
};
-static int parser_action_row1162[] = {
+static int parser_action_row1428[] = {
1,
- -1, 1, 686
+ -1, 1, 1020
};
-static int parser_action_row1163[] = {
+static int parser_action_row1429[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1164[] = {
+static int parser_action_row1430[] = {
33,
- -1, 3, 1163,
+ -1, 3, 1429,
0, 0, 1,
1, 0, 2,
8, 0, 155,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1165[] = {
+static int parser_action_row1431[] = {
2,
- -1, 3, 1164,
- 25, 0, 1296
+ -1, 3, 1430,
+ 25, 0, 1608
};
-static int parser_action_row1166[] = {
+static int parser_action_row1432[] = {
33,
- -1, 3, 1165,
+ -1, 3, 1431,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1167[] = {
+static int parser_action_row1433[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1168[] = {
+static int parser_action_row1434[] = {
2,
- -1, 1, 380,
- 25, 1, 665
+ -1, 1, 460,
+ 25, 1, 995
};
-static int parser_action_row1169[] = {
+static int parser_action_row1435[] = {
1,
- -1, 1, 671
+ -1, 1, 1001
};
-static int parser_action_row1170[] = {
+static int parser_action_row1436[] = {
+ 2,
+ -1, 1, 776,
+ 79, 0, 545
+};
+static int parser_action_row1437[] = {
1,
- -1, 1, 331
+ -1, 1, 414
};
-static int parser_action_row1171[] = {
+static int parser_action_row1438[] = {
1,
- -1, 1, 334
+ -1, 1, 777
};
-static int parser_action_row1172[] = {
+static int parser_action_row1439[] = {
+ 1,
+ -1, 1, 1109
+};
+static int parser_action_row1440[] = {
+ 2,
+ -1, 1, 409,
+ 79, 0, 205
+};
+static int parser_action_row1441[] = {
+ 1,
+ -1, 1, 410
+};
+static int parser_action_row1442[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1173[] = {
+static int parser_action_row1443[] = {
1,
- -1, 1, 581
+ -1, 1, 714
};
-static int parser_action_row1174[] = {
+static int parser_action_row1444[] = {
2,
- -1, 3, 1173,
- 79, 0, 1302
+ -1, 3, 1443,
+ 80, 0, 1616
};
-static int parser_action_row1175[] = {
- 1,
- -1, 1, 569
+static int parser_action_row1445[] = {
+ 2,
+ -1, 1, 892,
+ 79, 0, 545
};
-static int parser_action_row1176[] = {
+static int parser_action_row1446[] = {
3,
- -1, 1, 506,
- 51, 0, 272,
- 63, 0, 1303
+ -1, 1, 631,
+ 51, 0, 282,
+ 63, 0, 1618
};
-static int parser_action_row1177[] = {
+static int parser_action_row1447[] = {
1,
- -1, 1, 603
+ -1, 1, 736
};
-static int parser_action_row1178[] = {
+static int parser_action_row1448[] = {
3,
- -1, 3, 1177,
- 47, 0, 1173,
- 79, 0, 1174
+ -1, 3, 1447,
+ 47, 0, 1443,
+ 80, 0, 1444
};
-static int parser_action_row1179[] = {
+static int parser_action_row1449[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1180[] = {
- 1,
- -1, 1, 626
+static int parser_action_row1450[] = {
+ 2,
+ -1, 1, 767,
+ 79, 0, 205
};
-static int parser_action_row1181[] = {
+static int parser_action_row1451[] = {
1,
- -1, 1, 602
+ -1, 1, 735
};
-static int parser_action_row1182[] = {
+static int parser_action_row1452[] = {
1,
- -1, 1, 613
+ -1, 1, 746
};
-static int parser_action_row1183[] = {
- 1,
- -1, 1, 483
+static int parser_action_row1453[] = {
+ 2,
+ -1, 1, 568,
+ 79, 0, 205
};
-static int parser_action_row1184[] = {
- 1,
- -1, 1, 482
+static int parser_action_row1454[] = {
+ 2,
+ -1, 1, 566,
+ 79, 0, 205
};
-static int parser_action_row1185[] = {
+static int parser_action_row1455[] = {
21,
- -1, 3, 1184,
- 11, 0, 863,
- 32, 0, 865,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1454,
+ 11, 0, 1010,
+ 32, 0, 1012,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1186[] = {
+static int parser_action_row1456[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1187[] = {
+static int parser_action_row1457[] = {
21,
- -1, 3, 1186,
- 11, 0, 863,
- 32, 0, 865,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1456,
+ 11, 0, 1010,
+ 32, 0, 1012,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1188[] = {
+static int parser_action_row1458[] = {
20,
- -1, 3, 1187,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1457,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1189[] = {
+static int parser_action_row1459[] = {
20,
- -1, 3, 1188,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1458,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1190[] = {
+static int parser_action_row1460[] = {
20,
- -1, 3, 1189,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1459,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1191[] = {
+static int parser_action_row1461[] = {
3,
- -1, 3, 1190,
- 47, 0, 1173,
- 79, 0, 1174
+ -1, 3, 1460,
+ 47, 0, 1631,
+ 80, 0, 1632
};
-static int parser_action_row1192[] = {
+static int parser_action_row1462[] = {
20,
- -1, 3, 1191,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1461,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1193[] = {
+static int parser_action_row1463[] = {
20,
- -1, 3, 1192,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1462,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1194[] = {
+static int parser_action_row1464[] = {
20,
- -1, 3, 1193,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1463,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1195[] = {
+static int parser_action_row1465[] = {
20,
- -1, 3, 1194,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1464,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1196[] = {
+static int parser_action_row1466[] = {
20,
- -1, 3, 1195,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1465,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1197[] = {
+static int parser_action_row1467[] = {
20,
- -1, 3, 1196,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1466,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1198[] = {
+static int parser_action_row1468[] = {
20,
- -1, 3, 1197,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1467,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1199[] = {
+static int parser_action_row1469[] = {
20,
- -1, 3, 1198,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1468,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1200[] = {
+static int parser_action_row1470[] = {
20,
- -1, 3, 1199,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1469,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1201[] = {
+static int parser_action_row1471[] = {
20,
- -1, 3, 1200,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1470,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1202[] = {
+static int parser_action_row1472[] = {
20,
- -1, 3, 1201,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1471,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1203[] = {
+static int parser_action_row1473[] = {
20,
- -1, 3, 1202,
- 11, 0, 863,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1472,
+ 11, 0, 1010,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1204[] = {
+static int parser_action_row1474[] = {
5,
- -1, 3, 1203,
- 11, 0, 1326,
- 46, 0, 1327,
- 80, 0, 1328,
- 81, 0, 1329
+ -1, 3, 1473,
+ 11, 0, 1646,
+ 46, 0, 1647,
+ 81, 0, 1648,
+ 82, 0, 1649
};
-static int parser_action_row1205[] = {
+static int parser_action_row1475[] = {
31,
- -1, 1, 343,
- 8, 0, 687,
+ -1, 1, 423,
+ 8, 0, 781,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1206[] = {
+static int parser_action_row1476[] = {
1,
- -1, 1, 382
+ -1, 1, 462
};
-static int parser_action_row1207[] = {
+static int parser_action_row1477[] = {
31,
- -1, 1, 391,
- 8, 0, 308,
+ -1, 1, 471,
+ 8, 0, 326,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1208[] = {
+static int parser_action_row1478[] = {
2,
- -1, 3, 1207,
+ -1, 3, 1477,
49, 0, 191
};
-static int parser_action_row1209[] = {
+static int parser_action_row1479[] = {
+ 23,
+ -1, 3, 1478,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1480[] = {
+ 2,
+ -1, 1, 355,
+ 58, 1, 696
+};
+static int parser_action_row1481[] = {
+ 1,
+ -1, 1, 379
+};
+static int parser_action_row1482[] = {
+ 4,
+ -1, 1, 354,
+ 35, 0, 730,
+ 58, 1, 695,
+ 78, 0, 731
+};
+static int parser_action_row1483[] = {
+ 1,
+ -1, 1, 360
+};
+static int parser_action_row1484[] = {
+ 1,
+ -1, 1, 373
+};
+static int parser_action_row1485[] = {
+ 1,
+ -1, 1, 395
+};
+static int parser_action_row1486[] = {
+ 20,
+ -1, 3, 1485,
+ 41, 0, 1059,
+ 47, 0, 390,
+ 53, 0, 411,
+ 64, 0, 412,
+ 65, 0, 413,
+ 66, 0, 414,
+ 67, 0, 415,
+ 68, 0, 416,
+ 69, 0, 417,
+ 70, 0, 418,
+ 71, 0, 419,
+ 72, 0, 420,
+ 73, 0, 421,
+ 74, 0, 422,
+ 75, 0, 423,
+ 76, 0, 424,
+ 77, 0, 425,
+ 80, 0, 1060,
+ 81, 0, 426
+};
+static int parser_action_row1487[] = {
+ 1,
+ -1, 1, 1269
+};
+static int parser_action_row1488[] = {
+ 4,
+ -1, 3, 1487,
+ 32, 0, 1655,
+ 47, 0, 1656,
+ 51, 0, 1657
+};
+static int parser_action_row1489[] = {
+ 1,
+ -1, 1, 688
+};
+static int parser_action_row1490[] = {
+ 33,
+ -1, 3, 1489,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1491[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1492[] = {
+ 1,
+ -1, 1, 382
+};
+static int parser_action_row1493[] = {
+ 2,
+ -1, 1, 365,
+ 56, 0, 330
+};
+static int parser_action_row1494[] = {
+ 2,
+ -1, 3, 1493,
+ 52, 0, 1661
+};
+static int parser_action_row1495[] = {
+ 3,
+ -1, 3, 1494,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1496[] = {
23,
- -1, 3, 1208,
+ -1, 3, 1495,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1497[] = {
+ 1,
+ -1, 1, 149
+};
+static int parser_action_row1498[] = {
+ 2,
+ -1, 3, 1497,
+ 80, 0, 1078
+};
+static int parser_action_row1499[] = {
+ 1,
+ -1, 1, 143
+};
+static int parser_action_row1500[] = {
+ 1,
+ -1, 1, 1263
+};
+static int parser_action_row1501[] = {
+ 2,
+ -1, 3, 1500,
+ 54, 0, 1665
+};
+static int parser_action_row1502[] = {
+ 1,
+ -1, 1, 99
+};
+static int parser_action_row1503[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1666,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1504[] = {
+ 1,
+ -1, 1, 115
+};
+static int parser_action_row1505[] = {
+ 1,
+ -1, 1, 123
+};
+static int parser_action_row1506[] = {
+ 1,
+ -1, 1, 87
+};
+static int parser_action_row1507[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1667,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1508[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1509[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1669,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1510[] = {
+ 1,
+ -1, 1, 95
+};
+static int parser_action_row1511[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1670,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1512[] = {
+ 1,
+ -1, 1, 111
+};
+static int parser_action_row1513[] = {
+ 1,
+ -1, 1, 129
+};
+static int parser_action_row1514[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 570,
+ 56, 0, 330
+};
+static int parser_action_row1515[] = {
+ 2,
+ -1, 3, 1514,
+ 56, 0, 330
+};
+static int parser_action_row1516[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 1340,
+ 56, 0, 330
+};
+static int parser_action_row1517[] = {
+ 3,
+ -1, 3, 1516,
+ 13, 0, 1533,
+ 14, 0, 1675
+};
+static int parser_action_row1518[] = {
+ 9,
+ -1, 1, 222,
+ 12, 0, 1537,
+ 13, 0, 456,
+ 16, 1, 331,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 56, 0, 330,
+ 58, 0, 1677
+};
+static int parser_action_row1519[] = {
+ 3,
+ -1, 1, 190,
+ 56, 0, 330,
+ 58, 0, 1681
+};
+static int parser_action_row1520[] = {
+ 5,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 51, 0, 1340,
+ 56, 0, 330
+};
+static int parser_action_row1521[] = {
+ 6,
+ -1, 3, 1520,
+ 3, 0, 722,
+ 13, 0, 1684,
+ 29, 0, 39,
+ 85, 0, 1685,
+ 92, 0, 62
};
-static int parser_action_row1210[] = {
+static int parser_action_row1522[] = {
+ 1,
+ -1, 1, 151
+};
+static int parser_action_row1523[] = {
2,
- -1, 1, 282,
- 58, 1, 565
+ -1, 3, 1522,
+ 82, 0, 1688
};
-static int parser_action_row1211[] = {
- 4,
- -1, 1, 281,
- 35, 0, 645,
- 58, 1, 564,
- 78, 0, 646
+static int parser_action_row1524[] = {
+ 2,
+ -1, 3, 1523,
+ 17, 0, 1689
};
-static int parser_action_row1212[] = {
- 1,
- -1, 1, 287
+static int parser_action_row1525[] = {
+ 2,
+ -1, 3, 1524,
+ 82, 0, 1690
};
-static int parser_action_row1213[] = {
- 1,
- -1, 1, 300
+static int parser_action_row1526[] = {
+ 3,
+ -1, 1, 191,
+ 56, 0, 330,
+ 58, 0, 1691
};
-static int parser_action_row1214[] = {
- 1,
- -1, 1, 319
+static int parser_action_row1527[] = {
+ 2,
+ -1, 3, 1526,
+ 82, 0, 1693
};
-static int parser_action_row1215[] = {
- 20,
- -1, 3, 1214,
- 41, 0, 911,
- 47, 0, 361,
- 53, 0, 383,
- 64, 0, 384,
- 65, 0, 385,
- 66, 0, 386,
- 67, 0, 387,
- 68, 0, 388,
- 69, 0, 389,
- 70, 0, 390,
- 71, 0, 391,
- 72, 0, 392,
- 73, 0, 393,
- 74, 0, 394,
- 75, 0, 395,
- 76, 0, 396,
- 77, 0, 397,
- 79, 0, 912,
- 80, 0, 398
+static int parser_action_row1528[] = {
+ 3,
+ -1, 1, 193,
+ 56, 0, 330,
+ 58, 0, 1694
};
-static int parser_action_row1216[] = {
- 1,
- -1, 1, 851
+static int parser_action_row1529[] = {
+ 6,
+ -1, 3, 1528,
+ 3, 0, 722,
+ 13, 0, 1696,
+ 14, 0, 1697,
+ 29, 0, 39,
+ 92, 0, 62
};
-static int parser_action_row1217[] = {
- 4,
- -1, 3, 1216,
- 32, 0, 1335,
- 47, 0, 1336,
- 51, 0, 1337
+static int parser_action_row1530[] = {
+ 2,
+ -1, 3, 1529,
+ 58, 0, 1702
};
-static int parser_action_row1218[] = {
- 1,
- -1, 1, 557
+static int parser_action_row1531[] = {
+ 2,
+ -1, 1, 269,
+ 13, 0, 456
};
-static int parser_action_row1219[] = {
+static int parser_action_row1532[] = {
+ 3,
+ -1, 3, 1531,
+ 52, 0, 1704,
+ 81, 0, 865
+};
+static int parser_action_row1533[] = {
+ 3,
+ -1, 3, 1532,
+ 13, 0, 1533,
+ 14, 0, 1706
+};
+static int parser_action_row1534[] = {
+ 7,
+ -1, 3, 1533,
+ 0, 0, 87,
+ 1, 0, 88,
+ 3, 0, 383,
+ 15, 0, 384,
+ 16, 0, 385,
+ 81, 0, 387
+};
+static int parser_action_row1535[] = {
33,
- -1, 3, 1218,
+ -1, 3, 1534,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1220[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1221[] = {
- 1,
- -1, 1, 306
-};
-static int parser_action_row1222[] = {
- 2,
- -1, 1, 292,
- 56, 0, 312
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1223[] = {
+static int parser_action_row1536[] = {
2,
- -1, 3, 1222,
- 52, 0, 1341
+ -1, 3, 1535,
+ 14, 0, 1711
};
-static int parser_action_row1224[] = {
+static int parser_action_row1537[] = {
3,
- -1, 3, 1223,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1225[] = {
- 23,
- -1, 3, 1224,
- 11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
- 38, 0, 173,
- 40, 0, 174,
- 41, 0, 175,
- 42, 0, 47,
- 43, 0, 48,
- 44, 0, 49,
- 45, 0, 50,
- 48, 0, 176,
- 51, 0, 52,
- 53, 0, 53,
- 65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1226[] = {
- 2,
- -1, 3, 1225,
- 79, 0, 928
-};
-static int parser_action_row1227[] = {
- 1,
- -1, 1, 109
-};
-static int parser_action_row1228[] = {
- 1,
- -1, 1, 845
-};
-static int parser_action_row1229[] = {
- 2,
- -1, 3, 1228,
- 54, 0, 1345
-};
-static int parser_action_row1230[] = {
- 1,
- -1, 1, 85
+ -1, 1, 361,
+ 35, 0, 730,
+ 78, 0, 731
};
-static int parser_action_row1231[] = {
- 8,
- -1, 1, 258,
- 8, 0, 1346,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+static int parser_action_row1538[] = {
+ 4,
+ -1, 1, 331,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1232[] = {
- 1,
- -1, 1, 93
-};
-static int parser_action_row1233[] = {
- 1,
- -1, 1, 97
-};
-static int parser_action_row1234[] = {
- 1,
- -1, 1, 99
-};
-static int parser_action_row1235[] = {
- 5,
- -1, 1, 531,
+static int parser_action_row1539[] = {
+ 3,
+ -1, 1, 656,
0, 0, 1,
- 1, 0, 2,
- 51, 0, 527,
- 56, 0, 312
+ 1, 0, 2
};
-static int parser_action_row1236[] = {
- 2,
- -1, 3, 1235,
- 56, 0, 312
+static int parser_action_row1540[] = {
+ 1,
+ -1, 1, 229
};
-static int parser_action_row1237[] = {
- 5,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2,
- 51, 0, 1116,
- 56, 0, 312
+static int parser_action_row1541[] = {
+ 3,
+ -1, 1, 225,
+ 13, 0, 456,
+ 58, 0, 1715
};
-static int parser_action_row1238[] = {
+static int parser_action_row1542[] = {
2,
- -1, 3, 1237,
- 14, 0, 1351
+ -1, 3, 1541,
+ 16, 0, 1717
};
-static int parser_action_row1239[] = {
+static int parser_action_row1543[] = {
8,
- -1, 1, 179,
- 12, 0, 1255,
- 16, 1, 258,
+ -1, 1, 223,
+ 12, 0, 1537,
+ 13, 0, 456,
+ 16, 1, 331,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 56, 0, 312,
- 58, 0, 1352
+ 58, 0, 1718
};
-static int parser_action_row1240[] = {
+static int parser_action_row1544[] = {
3,
- -1, 1, 147,
- 56, 0, 312,
- 58, 0, 1355
-};
-static int parser_action_row1241[] = {
- 5,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
- 1, 0, 2,
- 51, 0, 1116,
- 56, 0, 312
+ 1, 0, 2
};
-static int parser_action_row1242[] = {
+static int parser_action_row1545[] = {
+ 2,
+ -1, 1, 197,
+ 58, 0, 1722
+};
+static int parser_action_row1546[] = {
6,
- -1, 3, 1241,
- 3, 0, 639,
- 13, 0, 1358,
+ -1, 3, 1545,
+ 3, 0, 722,
+ 13, 0, 1723,
29, 0, 39,
- 85, 0, 1359,
- 91, 0, 62
-};
-static int parser_action_row1243[] = {
- 2,
- -1, 3, 1242,
- 81, 0, 1362
+ 85, 0, 1724,
+ 92, 0, 62
};
-static int parser_action_row1244[] = {
+static int parser_action_row1547[] = {
2,
- -1, 3, 1243,
- 17, 0, 1363
+ -1, 3, 1546,
+ 19, 0, 1727
};
-static int parser_action_row1245[] = {
- 2,
- -1, 3, 1244,
- 81, 0, 1364
+static int parser_action_row1548[] = {
+ 4,
+ -1, 3, 1547,
+ 3, 0, 722,
+ 29, 0, 39,
+ 92, 0, 62
};
-static int parser_action_row1246[] = {
+static int parser_action_row1549[] = {
3,
- -1, 1, 148,
- 56, 0, 312,
- 58, 0, 1365
+ -1, 3, 1548,
+ 29, 0, 39,
+ 92, 0, 62
};
-static int parser_action_row1247[] = {
- 2,
- -1, 3, 1246,
- 81, 0, 1367
+static int parser_action_row1550[] = {
+ 1,
+ -1, 1, 305
};
-static int parser_action_row1248[] = {
- 3,
- -1, 1, 150,
- 56, 0, 312,
- 58, 0, 1368
+static int parser_action_row1551[] = {
+ 1,
+ -1, 1, 1122
};
-static int parser_action_row1249[] = {
- 6,
- -1, 3, 1248,
- 3, 0, 639,
- 13, 0, 1370,
- 14, 0, 1371,
- 29, 0, 39,
- 91, 0, 62
+static int parser_action_row1552[] = {
+ 1,
+ -1, 1, 1117
};
-static int parser_action_row1250[] = {
+static int parser_action_row1553[] = {
2,
- -1, 3, 1249,
- 58, 0, 1374
+ -1, 3, 1552,
+ 56, 0, 1731
};
-static int parser_action_row1251[] = {
+static int parser_action_row1554[] = {
+ 4,
+ -1, 3, 1553,
+ 0, 0, 87,
+ 1, 0, 88,
+ 79, 0, 205
+};
+static int parser_action_row1555[] = {
+ 23,
+ -1, 3, 1554,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1556[] = {
+ 23,
+ -1, 3, 1555,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1557[] = {
1,
- -1, 1, 202
+ -1, 1, 808
};
-static int parser_action_row1252[] = {
- 3,
- -1, 3, 1251,
- 52, 0, 1375,
- 80, 0, 751
+static int parser_action_row1558[] = {
+ 1,
+ -1, 1, 813
};
-static int parser_action_row1253[] = {
- 2,
- -1, 3, 1252,
- 14, 0, 1377
+static int parser_action_row1559[] = {
+ 5,
+ -1, 3, 1558,
+ 11, 0, 621,
+ 46, 0, 622,
+ 81, 0, 1736,
+ 82, 0, 1737
+};
+static int parser_action_row1560[] = {
+ 23,
+ -1, 3, 1559,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1254[] = {
- 33,
- -1, 3, 1253,
- 0, 0, 1,
- 1, 0, 2,
- 8, 0, 507,
- 11, 0, 28,
- 14, 0, 30,
- 17, 0, 31,
- 23, 0, 35,
- 26, 0, 36,
- 27, 0, 37,
- 28, 0, 38,
- 33, 0, 40,
- 34, 0, 41,
- 35, 0, 42,
- 36, 0, 43,
- 37, 0, 44,
- 38, 0, 45,
- 41, 0, 46,
+static int parser_action_row1561[] = {
+ 23,
+ -1, 3, 1560,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 51,
+ 48, 0, 176,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1255[] = {
- 3,
- -1, 1, 288,
- 35, 0, 645,
- 78, 0, 646
+static int parser_action_row1562[] = {
+ 1,
+ -1, 1, 101
};
-static int parser_action_row1256[] = {
- 4,
- -1, 1, 258,
+static int parser_action_row1563[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1740,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1257[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1564[] = {
+ 1,
+ -1, 1, 117
};
-static int parser_action_row1258[] = {
+static int parser_action_row1565[] = {
+ 1,
+ -1, 1, 125
+};
+static int parser_action_row1566[] = {
2,
- -1, 1, 182,
- 58, 0, 1382
+ -1, 3, 1565,
+ 45, 0, 1741
};
-static int parser_action_row1259[] = {
+static int parser_action_row1567[] = {
2,
- -1, 3, 1258,
- 16, 0, 1383
+ -1, 3, 1566,
+ 52, 0, 1742
};
-static int parser_action_row1260[] = {
- 7,
- -1, 1, 180,
- 12, 0, 1255,
- 16, 1, 258,
- 20, 0, 32,
- 21, 0, 33,
- 22, 0, 34,
- 58, 0, 1384
+static int parser_action_row1568[] = {
+ 4,
+ -1, 3, 1567,
+ 0, 0, 87,
+ 1, 0, 88,
+ 79, 0, 205
};
-static int parser_action_row1261[] = {
+static int parser_action_row1569[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1262[] = {
+static int parser_action_row1570[] = {
2,
- -1, 1, 154,
- 58, 0, 1387
-};
-static int parser_action_row1263[] = {
- 6,
- -1, 3, 1262,
- 3, 0, 639,
- 13, 0, 1388,
- 29, 0, 39,
- 85, 0, 1389,
- 91, 0, 62
+ -1, 3, 1569,
+ 45, 0, 1746
};
-static int parser_action_row1264[] = {
+static int parser_action_row1571[] = {
2,
- -1, 3, 1263,
- 19, 0, 1392
+ -1, 3, 1570,
+ 52, 0, 1747
};
-static int parser_action_row1265[] = {
- 4,
- -1, 3, 1264,
- 3, 0, 639,
- 29, 0, 39,
- 91, 0, 62
+static int parser_action_row1572[] = {
+ 1,
+ -1, 1, 689
};
-static int parser_action_row1266[] = {
- 3,
- -1, 3, 1265,
- 29, 0, 39,
- 91, 0, 62
+static int parser_action_row1573[] = {
+ 1,
+ -1, 1, 100
};
-static int parser_action_row1267[] = {
+static int parser_action_row1574[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1748,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1575[] = {
1,
- -1, 1, 236
+ -1, 1, 116
};
-static int parser_action_row1268[] = {
- 2,
- -1, 3, 1267,
- 45, 0, 1396
+static int parser_action_row1576[] = {
+ 1,
+ -1, 1, 124
};
-static int parser_action_row1269[] = {
- 2,
- -1, 3, 1268,
- 52, 0, 1397
+static int parser_action_row1577[] = {
+ 1,
+ -1, 1, 88
};
-static int parser_action_row1270[] = {
+static int parser_action_row1578[] = {
+ 9,
+ -1, 1, 331,
+ 8, 0, 1749,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34,
+ 41, 0, 895
+};
+static int parser_action_row1579[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1271[] = {
- 2,
- -1, 3, 1270,
- 45, 0, 1399
+static int parser_action_row1580[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1751,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
};
-static int parser_action_row1272[] = {
- 2,
- -1, 3, 1271,
- 52, 0, 1400
+static int parser_action_row1581[] = {
+ 1,
+ -1, 1, 96
};
-static int parser_action_row1273[] = {
+static int parser_action_row1582[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1752,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1583[] = {
1,
- -1, 1, 558
+ -1, 1, 112
};
-static int parser_action_row1274[] = {
+static int parser_action_row1584[] = {
1,
- -1, 1, 86
+ -1, 1, 130
};
-static int parser_action_row1275[] = {
+static int parser_action_row1585[] = {
+ 1,
+ -1, 1, 102
+};
+static int parser_action_row1586[] = {
8,
- -1, 1, 258,
- 8, 0, 1401,
- 12, 0, 773,
- 15, 0, 774,
- 16, 0, 775,
+ -1, 1, 331,
+ 8, 0, 1753,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
20, 0, 32,
21, 0, 33,
22, 0, 34
};
-static int parser_action_row1276[] = {
+static int parser_action_row1587[] = {
1,
- -1, 1, 94
+ -1, 1, 118
};
-static int parser_action_row1277[] = {
+static int parser_action_row1588[] = {
1,
- -1, 1, 98
+ -1, 1, 126
};
-static int parser_action_row1278[] = {
+static int parser_action_row1589[] = {
1,
- -1, 1, 100
+ -1, 1, 1007
};
-static int parser_action_row1279[] = {
- 1,
- -1, 1, 675
+static int parser_action_row1590[] = {
+ 23,
+ -1, 3, 1589,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1280[] = {
+static int parser_action_row1591[] = {
23,
- -1, 3, 1279,
+ -1, 3, 1590,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1281[] = {
+static int parser_action_row1592[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1593[] = {
34,
- -1, 3, 1280,
+ -1, 3, 1592,
0, 0, 1,
1, 0, 2,
- 8, 0, 689,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 25, 0, 694,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 785,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 25, 0, 790,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1282[] = {
+static int parser_action_row1594[] = {
33,
- -1, 3, 1281,
+ -1, 3, 1593,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1283[] = {
+static int parser_action_row1595[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1284[] = {
+static int parser_action_row1596[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1285[] = {
+static int parser_action_row1597[] = {
1,
- -1, 1, 699
+ -1, 1, 1033
};
-static int parser_action_row1286[] = {
+static int parser_action_row1598[] = {
2,
- -1, 1, 337,
- 25, 1, 630
+ -1, 1, 417,
+ 25, 1, 960
};
-static int parser_action_row1287[] = {
+static int parser_action_row1599[] = {
2,
- -1, 1, 336,
- 25, 1, 629
+ -1, 1, 416,
+ 25, 1, 959
};
-static int parser_action_row1288[] = {
+static int parser_action_row1600[] = {
1,
- -1, 1, 660
+ -1, 1, 990
};
-static int parser_action_row1289[] = {
+static int parser_action_row1601[] = {
2,
- -1, 1, 372,
- 25, 1, 658
+ -1, 1, 452,
+ 25, 1, 988
};
-static int parser_action_row1290[] = {
+static int parser_action_row1602[] = {
4,
- -1, 1, 474,
- 58, 0, 1408,
- 59, 0, 215,
- 60, 0, 216
+ -1, 1, 558,
+ 58, 0, 1762,
+ 59, 0, 220,
+ 60, 0, 221
};
-static int parser_action_row1291[] = {
+static int parser_action_row1603[] = {
3,
- -1, 1, 366,
- 25, 1, 652,
- 78, 0, 500
+ -1, 1, 446,
+ 25, 1, 982,
+ 78, 0, 533
};
-static int parser_action_row1292[] = {
+static int parser_action_row1604[] = {
23,
- -1, 3, 1291,
+ -1, 3, 1603,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1293[] = {
+static int parser_action_row1605[] = {
23,
- -1, 3, 1292,
+ -1, 3, 1604,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1294[] = {
+static int parser_action_row1606[] = {
2,
- -1, 3, 1293,
- 14, 0, 1413
+ -1, 3, 1605,
+ 14, 0, 1767
};
-static int parser_action_row1295[] = {
+static int parser_action_row1607[] = {
1,
- -1, 1, 428
+ -1, 1, 512
};
-static int parser_action_row1296[] = {
+static int parser_action_row1608[] = {
2,
- -1, 3, 1295,
+ -1, 3, 1607,
49, 0, 191
};
-static int parser_action_row1297[] = {
+static int parser_action_row1609[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1298[] = {
+static int parser_action_row1610[] = {
31,
- -1, 1, 391,
- 8, 0, 983,
+ -1, 1, 471,
+ 8, 0, 1183,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1299[] = {
+static int parser_action_row1611[] = {
1,
- -1, 1, 667
+ -1, 1, 997
};
-static int parser_action_row1300[] = {
+static int parser_action_row1612[] = {
2,
- -1, 3, 1299,
+ -1, 3, 1611,
49, 0, 191
};
-static int parser_action_row1301[] = {
+static int parser_action_row1613[] = {
23,
- -1, 3, 1300,
+ -1, 3, 1612,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1614[] = {
+ 1,
+ -1, 1, 778
+};
+static int parser_action_row1615[] = {
+ 1,
+ -1, 1, 411
};
-static int parser_action_row1302[] = {
+static int parser_action_row1616[] = {
2,
- -1, 3, 1301,
- 24, 0, 1418
+ -1, 3, 1615,
+ 24, 0, 1772
};
-static int parser_action_row1303[] = {
+static int parser_action_row1617[] = {
+ 2,
+ -1, 1, 893,
+ 79, 0, 545
+};
+static int parser_action_row1618[] = {
1,
- -1, 1, 570
+ -1, 1, 894
};
-static int parser_action_row1304[] = {
+static int parser_action_row1619[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1305[] = {
+static int parser_action_row1620[] = {
1,
- -1, 1, 605
+ -1, 1, 738
};
-static int parser_action_row1306[] = {
+static int parser_action_row1621[] = {
2,
- -1, 3, 1305,
- 63, 0, 1303
+ -1, 3, 1620,
+ 63, 0, 1618
};
-static int parser_action_row1307[] = {
+static int parser_action_row1622[] = {
5,
- -1, 3, 1306,
- 11, 0, 1326,
- 46, 0, 1327,
- 80, 0, 1328,
- 81, 0, 1420
+ -1, 3, 1621,
+ 11, 0, 1646,
+ 46, 0, 1647,
+ 81, 0, 1648,
+ 82, 0, 1775
};
-static int parser_action_row1308[] = {
+static int parser_action_row1623[] = {
1,
- -1, 1, 578
+ -1, 1, 768
};
-static int parser_action_row1309[] = {
+static int parser_action_row1624[] = {
+ 1,
+ -1, 1, 569
+};
+static int parser_action_row1625[] = {
+ 1,
+ -1, 1, 567
+};
+static int parser_action_row1626[] = {
+ 1,
+ -1, 1, 711
+};
+static int parser_action_row1627[] = {
21,
- -1, 3, 1308,
- 11, 0, 863,
- 32, 0, 865,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
+ -1, 3, 1626,
+ 11, 0, 1010,
+ 32, 0, 1012,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
};
-static int parser_action_row1310[] = {
+static int parser_action_row1628[] = {
1,
- -1, 1, 577
+ -1, 1, 710
};
-static int parser_action_row1311[] = {
+static int parser_action_row1629[] = {
3,
- -1, 1, 588,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 721,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1312[] = {
+static int parser_action_row1630[] = {
3,
- -1, 1, 591,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 724,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1313[] = {
+static int parser_action_row1631[] = {
3,
- -1, 1, 584,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 717,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1314[] = {
+static int parser_action_row1632[] = {
+ 2,
+ -1, 3, 1631,
+ 80, 0, 1777
+};
+static int parser_action_row1633[] = {
+ 2,
+ -1, 1, 700,
+ 79, 0, 205
+};
+static int parser_action_row1634[] = {
1,
- -1, 1, 593
+ -1, 1, 726
};
-static int parser_action_row1315[] = {
+static int parser_action_row1635[] = {
4,
- -1, 1, 595,
- 66, 0, 1055,
- 67, 0, 1056,
- 68, 0, 1057
+ -1, 1, 728,
+ 66, 0, 1269,
+ 67, 0, 1270,
+ 68, 0, 1271
};
-static int parser_action_row1316[] = {
+static int parser_action_row1636[] = {
4,
- -1, 1, 596,
- 66, 0, 1055,
- 67, 0, 1056,
- 68, 0, 1057
+ -1, 1, 729,
+ 66, 0, 1269,
+ 67, 0, 1270,
+ 68, 0, 1271
};
-static int parser_action_row1317[] = {
+static int parser_action_row1637[] = {
3,
- -1, 1, 583,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 716,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1318[] = {
+static int parser_action_row1638[] = {
3,
- -1, 1, 585,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 718,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1319[] = {
+static int parser_action_row1639[] = {
3,
- -1, 1, 586,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 719,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1320[] = {
+static int parser_action_row1640[] = {
3,
- -1, 1, 587,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 720,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1321[] = {
+static int parser_action_row1641[] = {
3,
- -1, 1, 589,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 722,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1322[] = {
+static int parser_action_row1642[] = {
3,
- -1, 1, 590,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 723,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1323[] = {
+static int parser_action_row1643[] = {
3,
- -1, 1, 592,
- 64, 0, 1046,
- 65, 0, 1047
+ -1, 1, 725,
+ 64, 0, 1260,
+ 65, 0, 1261
};
-static int parser_action_row1324[] = {
+static int parser_action_row1644[] = {
1,
- -1, 1, 598
+ -1, 1, 731
};
-static int parser_action_row1325[] = {
+static int parser_action_row1645[] = {
1,
- -1, 1, 599
+ -1, 1, 732
};
-static int parser_action_row1326[] = {
+static int parser_action_row1646[] = {
1,
- -1, 1, 600
+ -1, 1, 733
};
-static int parser_action_row1327[] = {
+static int parser_action_row1647[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row1328[] = {
+static int parser_action_row1648[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1329[] = {
+static int parser_action_row1649[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row1330[] = {
+static int parser_action_row1650[] = {
1,
- -1, 1, 608
+ -1, 1, 741
};
-static int parser_action_row1331[] = {
+static int parser_action_row1651[] = {
1,
- -1, 1, 388
+ -1, 1, 468
};
-static int parser_action_row1332[] = {
+static int parser_action_row1652[] = {
1,
- -1, 1, 379
+ -1, 1, 459
};
-static int parser_action_row1333[] = {
+static int parser_action_row1653[] = {
1,
- -1, 1, 385
+ -1, 1, 465
};
-static int parser_action_row1334[] = {
+static int parser_action_row1654[] = {
2,
- -1, 1, 283,
- 58, 1, 566
+ -1, 1, 356,
+ 58, 1, 697
};
-static int parser_action_row1335[] = {
+static int parser_action_row1655[] = {
1,
- -1, 1, 314
+ -1, 1, 390
};
-static int parser_action_row1336[] = {
+static int parser_action_row1656[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1337[] = {
+static int parser_action_row1657[] = {
1,
- -1, 1, 322
+ -1, 1, 398
};
-static int parser_action_row1338[] = {
+static int parser_action_row1658[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1339[] = {
+static int parser_action_row1659[] = {
3,
- -1, 3, 1338,
+ -1, 3, 1658,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1340[] = {
+static int parser_action_row1660[] = {
23,
- -1, 3, 1339,
+ -1, 3, 1659,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1341[] = {
+static int parser_action_row1661[] = {
1,
- -1, 1, 294
+ -1, 1, 367
};
-static int parser_action_row1342[] = {
+static int parser_action_row1662[] = {
2,
- -1, 1, 293,
- 56, 0, 312
+ -1, 1, 366,
+ 56, 0, 330
};
-static int parser_action_row1343[] = {
+static int parser_action_row1663[] = {
1,
- -1, 1, 307
+ -1, 1, 383
};
-static int parser_action_row1344[] = {
+static int parser_action_row1664[] = {
3,
- -1, 3, 1343,
+ -1, 3, 1663,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1345[] = {
+static int parser_action_row1665[] = {
1,
- -1, 1, 111
+ -1, 1, 145
};
-static int parser_action_row1346[] = {
+static int parser_action_row1666[] = {
1,
- -1, 1, 110
+ -1, 1, 144
};
-static int parser_action_row1347[] = {
+static int parser_action_row1667[] = {
1,
- -1, 1, 101
+ -1, 1, 131
};
-static int parser_action_row1348[] = {
+static int parser_action_row1668[] = {
+ 1,
+ -1, 1, 103
+};
+static int parser_action_row1669[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1788,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1670[] = {
+ 1,
+ -1, 1, 119
+};
+static int parser_action_row1671[] = {
+ 1,
+ -1, 1, 127
+};
+static int parser_action_row1672[] = {
6,
- -1, 3, 1347,
- 3, 0, 639,
- 13, 0, 1431,
- 14, 0, 1432,
+ -1, 3, 1671,
+ 3, 0, 722,
+ 13, 0, 1789,
+ 14, 0, 1790,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1349[] = {
+static int parser_action_row1673[] = {
2,
- -1, 3, 1348,
- 58, 0, 1435
-};
-static int parser_action_row1350[] = {
- 1,
- -1, 1, 203
+ -1, 3, 1672,
+ 58, 0, 1795
};
-static int parser_action_row1351[] = {
+static int parser_action_row1674[] = {
2,
- -1, 3, 1350,
- 14, 0, 1436
+ -1, 1, 270,
+ 13, 0, 456
};
-static int parser_action_row1352[] = {
+static int parser_action_row1675[] = {
+ 3,
+ -1, 3, 1674,
+ 13, 0, 1533,
+ 14, 0, 1797
+};
+static int parser_action_row1676[] = {
33,
- -1, 3, 1351,
+ -1, 3, 1675,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1353[] = {
+static int parser_action_row1677[] = {
+ 2,
+ -1, 3, 1676,
+ 14, 0, 1800
+};
+static int parser_action_row1678[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1354[] = {
- 2,
- -1, 1, 183,
- 58, 0, 1439
+static int parser_action_row1679[] = {
+ 1,
+ -1, 1, 230
};
-static int parser_action_row1355[] = {
- 7,
- -1, 1, 181,
- 12, 0, 1255,
- 16, 1, 258,
+static int parser_action_row1680[] = {
+ 3,
+ -1, 1, 226,
+ 13, 0, 456,
+ 58, 0, 1802
+};
+static int parser_action_row1681[] = {
+ 8,
+ -1, 1, 224,
+ 12, 0, 1537,
+ 13, 0, 456,
+ 16, 1, 331,
20, 0, 32,
21, 0, 33,
22, 0, 34,
- 58, 0, 1440
+ 58, 0, 1804
};
-static int parser_action_row1356[] = {
+static int parser_action_row1682[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1357[] = {
+static int parser_action_row1683[] = {
2,
- -1, 1, 155,
- 58, 0, 1443
+ -1, 1, 198,
+ 58, 0, 1808
};
-static int parser_action_row1358[] = {
+static int parser_action_row1684[] = {
6,
- -1, 3, 1357,
- 3, 0, 639,
- 13, 0, 1444,
+ -1, 3, 1683,
+ 3, 0, 722,
+ 13, 0, 1809,
29, 0, 39,
- 85, 0, 1445,
- 91, 0, 62
+ 85, 0, 1810,
+ 92, 0, 62
};
-static int parser_action_row1359[] = {
+static int parser_action_row1685[] = {
2,
- -1, 3, 1358,
- 19, 0, 1448
+ -1, 3, 1684,
+ 19, 0, 1813
};
-static int parser_action_row1360[] = {
+static int parser_action_row1686[] = {
4,
- -1, 3, 1359,
- 3, 0, 639,
+ -1, 3, 1685,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1361[] = {
+static int parser_action_row1687[] = {
3,
- -1, 3, 1360,
+ -1, 3, 1686,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1362[] = {
+static int parser_action_row1688[] = {
1,
- -1, 1, 237
+ -1, 1, 306
};
-static int parser_action_row1363[] = {
+static int parser_action_row1689[] = {
3,
- -1, 1, 149,
- 56, 0, 312,
- 58, 0, 1452
+ -1, 1, 192,
+ 56, 0, 330,
+ 58, 0, 1817
};
-static int parser_action_row1364[] = {
+static int parser_action_row1690[] = {
2,
- -1, 3, 1363,
- 81, 0, 1454
+ -1, 3, 1689,
+ 82, 0, 1819
};
-static int parser_action_row1365[] = {
+static int parser_action_row1691[] = {
3,
- -1, 1, 152,
- 56, 0, 312,
- 58, 0, 1455
+ -1, 1, 195,
+ 56, 0, 330,
+ 58, 0, 1820
};
-static int parser_action_row1366[] = {
+static int parser_action_row1692[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1367[] = {
+static int parser_action_row1693[] = {
2,
- -1, 1, 156,
- 58, 0, 1458
+ -1, 1, 199,
+ 58, 0, 1823
};
-static int parser_action_row1368[] = {
+static int parser_action_row1694[] = {
3,
- -1, 1, 151,
- 56, 0, 312,
- 58, 0, 1459
+ -1, 1, 194,
+ 56, 0, 330,
+ 58, 0, 1824
};
-static int parser_action_row1369[] = {
+static int parser_action_row1695[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1370[] = {
+static int parser_action_row1696[] = {
2,
- -1, 1, 158,
- 58, 0, 1462
-};
-static int parser_action_row1371[] = {
- 4,
- -1, 3, 1370,
- 5, 0, 1463,
- 18, 0, 1464,
- 19, 0, 1465
+ -1, 1, 201,
+ 58, 0, 1827
};
-static int parser_action_row1372[] = {
+static int parser_action_row1697[] = {
+ 10,
+ -1, 3, 1696,
+ 0, 0, 87,
+ 1, 0, 88,
+ 3, 0, 383,
+ 5, 0, 1828,
+ 15, 0, 384,
+ 16, 0, 385,
+ 18, 0, 1829,
+ 19, 0, 1830,
+ 81, 0, 387
+};
+static int parser_action_row1698[] = {
33,
- -1, 3, 1371,
+ -1, 3, 1697,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1373[] = {
+static int parser_action_row1699[] = {
+ 1,
+ -1, 1, 163
+};
+static int parser_action_row1700[] = {
+ 2,
+ -1, 3, 1699,
+ 14, 0, 1832
+};
+static int parser_action_row1701[] = {
3,
- -1, 3, 1372,
+ -1, 3, 1700,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1374[] = {
+static int parser_action_row1702[] = {
1,
- -1, 1, 142
+ -1, 1, 185
};
-static int parser_action_row1375[] = {
+static int parser_action_row1703[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1376[] = {
+static int parser_action_row1704[] = {
+ 1,
+ -1, 1, 271
+};
+static int parser_action_row1705[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 56, 0, 312
+ 56, 0, 330
};
-static int parser_action_row1377[] = {
+static int parser_action_row1706[] = {
2,
- -1, 3, 1376,
- 52, 0, 1470
+ -1, 3, 1705,
+ 52, 0, 1836
};
-static int parser_action_row1378[] = {
+static int parser_action_row1707[] = {
33,
- -1, 3, 1377,
+ -1, 3, 1706,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1379[] = {
+static int parser_action_row1708[] = {
2,
- -1, 1, 194,
- 8, 0, 1472
+ -1, 3, 1707,
+ 14, 0, 1838
};
-static int parser_action_row1380[] = {
+static int parser_action_row1709[] = {
1,
- -1, 1, 289
+ -1, 1, 323
+};
+static int parser_action_row1710[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1711[] = {
+ 2,
+ -1, 1, 253,
+ 8, 0, 1840
+};
+static int parser_action_row1712[] = {
+ 33,
+ -1, 3, 1711,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1713[] = {
+ 1,
+ -1, 1, 362
};
-static int parser_action_row1381[] = {
+static int parser_action_row1714[] = {
2,
- -1, 3, 1380,
- 16, 0, 1473
+ -1, 3, 1713,
+ 16, 0, 1842
};
-static int parser_action_row1382[] = {
+static int parser_action_row1715[] = {
23,
- -1, 3, 1381,
+ -1, 3, 1714,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
+ 23, 0, 1843,
+ 32, 0, 1844,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1383[] = {
+static int parser_action_row1716[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1384[] = {
+static int parser_action_row1717[] = {
1,
- -1, 1, 256
+ -1, 1, 233
};
-static int parser_action_row1385[] = {
+static int parser_action_row1718[] = {
+ 1,
+ -1, 1, 329
+};
+static int parser_action_row1719[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1386[] = {
- 2,
- -1, 1, 184,
- 58, 0, 1477
+static int parser_action_row1720[] = {
+ 1,
+ -1, 1, 231
};
-static int parser_action_row1387[] = {
+static int parser_action_row1721[] = {
+ 3,
+ -1, 1, 227,
+ 13, 0, 456,
+ 58, 0, 1852
+};
+static int parser_action_row1722[] = {
23,
- -1, 3, 1386,
+ -1, 3, 1721,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1388[] = {
+static int parser_action_row1723[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1389[] = {
+static int parser_action_row1724[] = {
2,
- -1, 3, 1388,
- 19, 0, 1480
+ -1, 3, 1723,
+ 19, 0, 1856
};
-static int parser_action_row1390[] = {
+static int parser_action_row1725[] = {
4,
- -1, 3, 1389,
- 3, 0, 639,
+ -1, 3, 1724,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1391[] = {
+static int parser_action_row1726[] = {
3,
- -1, 3, 1390,
+ -1, 3, 1725,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1392[] = {
+static int parser_action_row1727[] = {
1,
- -1, 1, 238
+ -1, 1, 307
};
-static int parser_action_row1393[] = {
+static int parser_action_row1728[] = {
5,
- -1, 1, 204,
- 3, 0, 639,
+ -1, 1, 273,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 1484,
- 91, 0, 62
+ 85, 0, 1860,
+ 92, 0, 62
};
-static int parser_action_row1394[] = {
+static int parser_action_row1729[] = {
3,
- -1, 3, 1393,
+ -1, 3, 1728,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1395[] = {
+static int parser_action_row1730[] = {
+ 1,
+ -1, 1, 309
+};
+static int parser_action_row1731[] = {
1,
- -1, 1, 240
+ -1, 1, 313
};
-static int parser_action_row1396[] = {
+static int parser_action_row1732[] = {
+ 23,
+ -1, 3, 1731,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1733[] = {
+ 3,
+ -1, 3, 1732,
+ 0, 0, 87,
+ 1, 0, 88
+};
+static int parser_action_row1734[] = {
1,
- -1, 1, 244
+ -1, 1, 1245
};
-static int parser_action_row1397[] = {
+static int parser_action_row1735[] = {
+ 1,
+ -1, 1, 810
+};
+static int parser_action_row1736[] = {
+ 1,
+ -1, 1, 815
+};
+static int parser_action_row1737[] = {
+ 2,
+ -1, 1, 631,
+ 51, 0, 282
+};
+static int parser_action_row1738[] = {
+ 4,
+ -1, 1, 854,
+ 58, 0, 1867,
+ 59, 0, 220,
+ 60, 0, 221
+};
+static int parser_action_row1739[] = {
+ 1,
+ -1, 1, 811
+};
+static int parser_action_row1740[] = {
+ 1,
+ -1, 1, 816
+};
+static int parser_action_row1741[] = {
+ 1,
+ -1, 1, 133
+};
+static int parser_action_row1742[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1398[] = {
+static int parser_action_row1743[] = {
1,
- -1, 1, 495
+ -1, 1, 591
};
-static int parser_action_row1399[] = {
+static int parser_action_row1744[] = {
+ 3,
+ -1, 3, 1743,
+ 0, 0, 87,
+ 1, 0, 88
+};
+static int parser_action_row1745[] = {
+ 1,
+ -1, 1, 614
+};
+static int parser_action_row1746[] = {
21,
- -1, 3, 1398,
+ -1, 3, 1745,
11, 0, 122,
23, 0, 123,
32, 0, 124,
45, 0, 131,
48, 0, 132,
65, 0, 134,
- 79, 0, 54,
- 80, 0, 135,
- 81, 0, 136,
- 82, 0, 137,
- 83, 0, 138,
- 84, 0, 139,
- 85, 0, 140,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 135,
+ 82, 0, 136,
+ 83, 0, 137,
+ 84, 0, 138,
+ 85, 0, 139,
+ 86, 0, 60,
+ 89, 0, 140
};
-static int parser_action_row1400[] = {
+static int parser_action_row1747[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1401[] = {
+static int parser_action_row1748[] = {
1,
- -1, 1, 769
+ -1, 1, 881
};
-static int parser_action_row1402[] = {
+static int parser_action_row1749[] = {
1,
- -1, 1, 102
+ -1, 1, 132
};
-static int parser_action_row1403[] = {
+static int parser_action_row1750[] = {
1,
- -1, 1, 676
+ -1, 1, 104
};
-static int parser_action_row1404[] = {
+static int parser_action_row1751[] = {
+ 8,
+ -1, 1, 331,
+ 8, 0, 1873,
+ 12, 0, 892,
+ 15, 0, 893,
+ 16, 0, 894,
+ 20, 0, 32,
+ 21, 0, 33,
+ 22, 0, 34
+};
+static int parser_action_row1752[] = {
+ 1,
+ -1, 1, 120
+};
+static int parser_action_row1753[] = {
+ 1,
+ -1, 1, 128
+};
+static int parser_action_row1754[] = {
+ 1,
+ -1, 1, 134
+};
+static int parser_action_row1755[] = {
+ 1,
+ -1, 1, 1009
+};
+static int parser_action_row1756[] = {
+ 1,
+ -1, 1, 1008
+};
+static int parser_action_row1757[] = {
+ 23,
+ -1, 3, 1756,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1758[] = {
2,
- -1, 3, 1403,
- 25, 0, 1491
+ -1, 3, 1757,
+ 25, 0, 1875
};
-static int parser_action_row1405[] = {
+static int parser_action_row1759[] = {
1,
- -1, 1, 693
+ -1, 1, 1027
};
-static int parser_action_row1406[] = {
+static int parser_action_row1760[] = {
2,
- -1, 3, 1405,
+ -1, 3, 1759,
49, 0, 191
};
-static int parser_action_row1407[] = {
+static int parser_action_row1761[] = {
2,
- -1, 3, 1406,
- 29, 0, 1493
+ -1, 3, 1760,
+ 29, 0, 1877
};
-static int parser_action_row1408[] = {
+static int parser_action_row1762[] = {
23,
- -1, 3, 1407,
+ -1, 3, 1761,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1409[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1763[] = {
23,
- -1, 3, 1408,
+ -1, 3, 1762,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1410[] = {
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1764[] = {
23,
- -1, 3, 1409,
+ -1, 3, 1763,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 355,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 374,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1411[] = {
+static int parser_action_row1765[] = {
1,
- -1, 1, 654
+ -1, 1, 984
};
-static int parser_action_row1412[] = {
+static int parser_action_row1766[] = {
1,
- -1, 1, 677
+ -1, 1, 1011
};
-static int parser_action_row1413[] = {
+static int parser_action_row1767[] = {
1,
- -1, 1, 682
+ -1, 1, 1016
};
-static int parser_action_row1414[] = {
+static int parser_action_row1768[] = {
33,
- -1, 3, 1413,
+ -1, 3, 1767,
0, 0, 1,
1, 0, 2,
8, 0, 155,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1415[] = {
+static int parser_action_row1769[] = {
1,
- -1, 1, 426
+ -1, 1, 510
};
-static int parser_action_row1416[] = {
+static int parser_action_row1770[] = {
23,
- -1, 3, 1415,
+ -1, 3, 1769,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1417[] = {
+static int parser_action_row1771[] = {
2,
- -1, 1, 379,
- 25, 1, 664
+ -1, 1, 459,
+ 25, 1, 994
};
-static int parser_action_row1418[] = {
+static int parser_action_row1772[] = {
1,
- -1, 1, 670
+ -1, 1, 1000
};
-static int parser_action_row1419[] = {
+static int parser_action_row1773[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1420[] = {
+static int parser_action_row1774[] = {
+ 1,
+ -1, 1, 895
+};
+static int parser_action_row1775[] = {
2,
- -1, 3, 1419,
- 80, 0, 1501
+ -1, 3, 1774,
+ 81, 0, 1885
};
-static int parser_action_row1421[] = {
+static int parser_action_row1776[] = {
2,
- -1, 1, 606,
- 63, 1, 608
+ -1, 1, 739,
+ 63, 1, 741
};
-static int parser_action_row1422[] = {
+static int parser_action_row1777[] = {
1,
- -1, 1, 579
+ -1, 1, 712
};
-static int parser_action_row1423[] = {
+static int parser_action_row1778[] = {
+ 2,
+ -1, 1, 701,
+ 79, 0, 205
+};
+static int parser_action_row1779[] = {
1,
- -1, 1, 614
+ -1, 1, 702
};
-static int parser_action_row1424[] = {
+static int parser_action_row1780[] = {
+ 1,
+ -1, 1, 747
+};
+static int parser_action_row1781[] = {
2,
- -1, 3, 1423,
- 51, 0, 1502
+ -1, 3, 1780,
+ 51, 0, 1887
};
-static int parser_action_row1425[] = {
+static int parser_action_row1782[] = {
1,
- -1, 1, 610
+ -1, 1, 743
};
-static int parser_action_row1426[] = {
+static int parser_action_row1783[] = {
2,
- -1, 3, 1425,
- 47, 0, 1503
+ -1, 3, 1782,
+ 47, 0, 1888
};
-static int parser_action_row1427[] = {
+static int parser_action_row1784[] = {
3,
- -1, 3, 1426,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 1783,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row1428[] = {
+static int parser_action_row1785[] = {
1,
- -1, 1, 308
+ -1, 1, 384
};
-static int parser_action_row1429[] = {
+static int parser_action_row1786[] = {
3,
- -1, 3, 1428,
+ -1, 3, 1785,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1430[] = {
+static int parser_action_row1787[] = {
1,
- -1, 1, 295
+ -1, 1, 368
};
-static int parser_action_row1431[] = {
+static int parser_action_row1788[] = {
1,
- -1, 1, 309
+ -1, 1, 385
};
-static int parser_action_row1432[] = {
- 4,
- -1, 3, 1431,
- 5, 0, 1506,
- 18, 0, 1507,
- 19, 0, 1508
+static int parser_action_row1789[] = {
+ 1,
+ -1, 1, 135
};
-static int parser_action_row1433[] = {
+static int parser_action_row1790[] = {
+ 10,
+ -1, 3, 1789,
+ 0, 0, 87,
+ 1, 0, 88,
+ 3, 0, 383,
+ 5, 0, 1891,
+ 15, 0, 384,
+ 16, 0, 385,
+ 18, 0, 1892,
+ 19, 0, 1893,
+ 81, 0, 387
+};
+static int parser_action_row1791[] = {
33,
- -1, 3, 1432,
+ -1, 3, 1790,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1434[] = {
+static int parser_action_row1792[] = {
+ 1,
+ -1, 1, 164
+};
+static int parser_action_row1793[] = {
+ 2,
+ -1, 3, 1792,
+ 14, 0, 1895
+};
+static int parser_action_row1794[] = {
3,
- -1, 3, 1433,
+ -1, 3, 1793,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1435[] = {
+static int parser_action_row1795[] = {
1,
- -1, 1, 143
+ -1, 1, 186
};
-static int parser_action_row1436[] = {
+static int parser_action_row1796[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1437[] = {
+static int parser_action_row1797[] = {
+ 1,
+ -1, 1, 272
+};
+static int parser_action_row1798[] = {
33,
- -1, 3, 1436,
+ -1, 3, 1797,
0, 0, 1,
1, 0, 2,
- 8, 0, 507,
+ 8, 0, 540,
11, 0, 28,
14, 0, 30,
17, 0, 31,
50, 0, 51,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 55,
- 81, 0, 56,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1438[] = {
+static int parser_action_row1799[] = {
2,
- -1, 1, 195,
- 8, 0, 1513
+ -1, 3, 1798,
+ 14, 0, 1899
};
-static int parser_action_row1439[] = {
+static int parser_action_row1800[] = {
+ 2,
+ -1, 1, 254,
+ 8, 0, 1900
+};
+static int parser_action_row1801[] = {
+ 33,
+ -1, 3, 1800,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1802[] = {
23,
- -1, 3, 1438,
+ -1, 3, 1801,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
+ 23, 0, 1843,
+ 32, 0, 1844,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1440[] = {
+static int parser_action_row1803[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1441[] = {
+static int parser_action_row1804[] = {
+ 1,
+ -1, 1, 234
+};
+static int parser_action_row1805[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1442[] = {
- 2,
- -1, 1, 185,
- 58, 0, 1517
+static int parser_action_row1806[] = {
+ 1,
+ -1, 1, 232
};
-static int parser_action_row1443[] = {
+static int parser_action_row1807[] = {
+ 3,
+ -1, 1, 228,
+ 13, 0, 456,
+ 58, 0, 1905
+};
+static int parser_action_row1808[] = {
23,
- -1, 3, 1442,
+ -1, 3, 1807,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1444[] = {
+static int parser_action_row1809[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1445[] = {
+static int parser_action_row1810[] = {
2,
- -1, 3, 1444,
- 19, 0, 1520
+ -1, 3, 1809,
+ 19, 0, 1909
};
-static int parser_action_row1446[] = {
+static int parser_action_row1811[] = {
4,
- -1, 3, 1445,
- 3, 0, 639,
+ -1, 3, 1810,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1447[] = {
+static int parser_action_row1812[] = {
3,
- -1, 3, 1446,
+ -1, 3, 1811,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1448[] = {
+static int parser_action_row1813[] = {
1,
- -1, 1, 239
+ -1, 1, 308
};
-static int parser_action_row1449[] = {
+static int parser_action_row1814[] = {
5,
- -1, 1, 205,
- 3, 0, 639,
+ -1, 1, 274,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 1524,
- 91, 0, 62
+ 85, 0, 1913,
+ 92, 0, 62
};
-static int parser_action_row1450[] = {
+static int parser_action_row1815[] = {
3,
- -1, 3, 1449,
+ -1, 3, 1814,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1451[] = {
+static int parser_action_row1816[] = {
1,
- -1, 1, 241
+ -1, 1, 310
};
-static int parser_action_row1452[] = {
+static int parser_action_row1817[] = {
1,
- -1, 1, 245
+ -1, 1, 314
};
-static int parser_action_row1453[] = {
+static int parser_action_row1818[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1454[] = {
+static int parser_action_row1819[] = {
2,
- -1, 1, 157,
- 58, 0, 1529
+ -1, 1, 200,
+ 58, 0, 1918
};
-static int parser_action_row1455[] = {
+static int parser_action_row1820[] = {
3,
- -1, 1, 153,
- 56, 0, 312,
- 58, 0, 1530
+ -1, 1, 196,
+ 56, 0, 330,
+ 58, 0, 1919
};
-static int parser_action_row1456[] = {
+static int parser_action_row1821[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1457[] = {
+static int parser_action_row1822[] = {
2,
- -1, 1, 160,
- 58, 0, 1533
+ -1, 1, 203,
+ 58, 0, 1922
};
-static int parser_action_row1458[] = {
+static int parser_action_row1823[] = {
23,
- -1, 3, 1457,
+ -1, 3, 1822,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1459[] = {
+static int parser_action_row1824[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1460[] = {
+static int parser_action_row1825[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1461[] = {
+static int parser_action_row1826[] = {
2,
- -1, 1, 159,
- 58, 0, 1537
+ -1, 1, 202,
+ 58, 0, 1926
};
-static int parser_action_row1462[] = {
+static int parser_action_row1827[] = {
23,
- -1, 3, 1461,
+ -1, 3, 1826,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1463[] = {
+static int parser_action_row1828[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1464[] = {
+static int parser_action_row1829[] = {
1,
- -1, 1, 122
+ -1, 1, 165
};
-static int parser_action_row1465[] = {
+static int parser_action_row1830[] = {
1,
- -1, 1, 124
+ -1, 1, 167
};
-static int parser_action_row1466[] = {
+static int parser_action_row1831[] = {
5,
- -1, 1, 126,
- 3, 0, 639,
+ -1, 1, 169,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 1540,
- 91, 0, 62
+ 85, 0, 1929,
+ 92, 0, 62
};
-static int parser_action_row1467[] = {
+static int parser_action_row1832[] = {
2,
- -1, 1, 116,
- 8, 0, 1543
+ -1, 1, 153,
+ 8, 0, 1932
};
-static int parser_action_row1468[] = {
+static int parser_action_row1833[] = {
+ 33,
+ -1, 3, 1832,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1834[] = {
1,
- -1, 1, 144
+ -1, 1, 187
};
-static int parser_action_row1469[] = {
+static int parser_action_row1835[] = {
23,
- -1, 3, 1468,
+ -1, 3, 1834,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1470[] = {
+static int parser_action_row1836[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1471[] = {
+static int parser_action_row1837[] = {
4,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2,
- 56, 0, 312
+ 56, 0, 330
};
-static int parser_action_row1472[] = {
+static int parser_action_row1838[] = {
2,
- -1, 1, 196,
- 8, 0, 1547
+ -1, 1, 255,
+ 8, 0, 1937
};
-static int parser_action_row1473[] = {
+static int parser_action_row1839[] = {
+ 33,
+ -1, 3, 1838,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1840[] = {
1,
- -1, 1, 198
+ -1, 1, 324
};
-static int parser_action_row1474[] = {
+static int parser_action_row1841[] = {
1,
- -1, 1, 257
+ -1, 1, 261
};
-static int parser_action_row1475[] = {
+static int parser_action_row1842[] = {
+ 2,
+ -1, 1, 257,
+ 8, 0, 1939
+};
+static int parser_action_row1843[] = {
1,
- -1, 1, 186
+ -1, 1, 330
};
-static int parser_action_row1476[] = {
+static int parser_action_row1844[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1845[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1846[] = {
+ 11,
+ -1, 1, 1175,
+ 39, 0, 1942,
+ 64, 0, 354,
+ 65, 0, 355,
+ 69, 0, 1943,
+ 70, 0, 1944,
+ 71, 0, 1945,
+ 72, 0, 1946,
+ 74, 0, 1947,
+ 75, 0, 1948,
+ 77, 0, 1949
+};
+static int parser_action_row1847[] = {
+ 2,
+ -1, 1, 237,
+ 13, 0, 456
+};
+static int parser_action_row1848[] = {
+ 3,
+ -1, 1, 1167,
+ 30, 0, 1951,
+ 31, 0, 1952
+};
+static int parser_action_row1849[] = {
+ 1,
+ -1, 1, 1169
+};
+static int parser_action_row1850[] = {
+ 3,
+ -1, 1, 1173,
+ 73, 0, 1953,
+ 76, 0, 1954
+};
+static int parser_action_row1851[] = {
23,
- -1, 3, 1475,
+ -1, 3, 1850,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
+ 23, 0, 1843,
+ 32, 0, 1844,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1477[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1852[] = {
23,
- -1, 3, 1476,
+ -1, 3, 1851,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
+ 23, 0, 1843,
+ 32, 0, 1844,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1478[] = {
+static int parser_action_row1853[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1479[] = {
+static int parser_action_row1854[] = {
1,
- -1, 1, 162
+ -1, 1, 235
};
-static int parser_action_row1480[] = {
+static int parser_action_row1855[] = {
+ 1,
+ -1, 1, 205
+};
+static int parser_action_row1856[] = {
23,
- -1, 3, 1479,
+ -1, 3, 1855,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1481[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1857[] = {
5,
- -1, 1, 206,
- 3, 0, 639,
+ -1, 1, 275,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 1552,
- 91, 0, 62
+ 85, 0, 1959,
+ 92, 0, 62
};
-static int parser_action_row1482[] = {
+static int parser_action_row1858[] = {
3,
- -1, 3, 1481,
+ -1, 3, 1857,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1483[] = {
+static int parser_action_row1859[] = {
1,
- -1, 1, 242
+ -1, 1, 311
};
-static int parser_action_row1484[] = {
+static int parser_action_row1860[] = {
1,
- -1, 1, 246
+ -1, 1, 315
};
-static int parser_action_row1485[] = {
+static int parser_action_row1861[] = {
4,
- -1, 1, 208,
- 3, 0, 639,
+ -1, 1, 277,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1486[] = {
+static int parser_action_row1862[] = {
3,
- -1, 1, 212,
+ -1, 1, 281,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1487[] = {
+static int parser_action_row1863[] = {
1,
- -1, 1, 220
+ -1, 1, 289
};
-static int parser_action_row1488[] = {
+static int parser_action_row1864[] = {
1,
- -1, 1, 248
+ -1, 1, 317
};
-static int parser_action_row1489[] = {
+static int parser_action_row1865[] = {
+ 1,
+ -1, 1, 1128
+};
+static int parser_action_row1866[] = {
+ 1,
+ -1, 1, 1246
+};
+static int parser_action_row1867[] = {
+ 4,
+ -1, 1, 856,
+ 58, 0, 1966,
+ 59, 0, 220,
+ 60, 0, 221
+};
+static int parser_action_row1868[] = {
+ 23,
+ -1, 3, 1867,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1869[] = {
+ 23,
+ -1, 3, 1868,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1870[] = {
2,
- -1, 3, 1488,
- 52, 0, 1559
+ -1, 3, 1869,
+ 52, 0, 1970
};
-static int parser_action_row1490[] = {
+static int parser_action_row1871[] = {
+ 1,
+ -1, 1, 615
+};
+static int parser_action_row1872[] = {
1,
- -1, 1, 717
+ -1, 1, 821
};
-static int parser_action_row1491[] = {
+static int parser_action_row1873[] = {
2,
- -1, 3, 1490,
- 52, 0, 1560
+ -1, 3, 1872,
+ 52, 0, 1971
};
-static int parser_action_row1492[] = {
+static int parser_action_row1874[] = {
+ 1,
+ -1, 1, 136
+};
+static int parser_action_row1875[] = {
+ 1,
+ -1, 1, 1010
+};
+static int parser_action_row1876[] = {
33,
- -1, 3, 1491,
+ -1, 3, 1875,
0, 0, 1,
1, 0, 2,
- 8, 0, 1151,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 1417,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1493[] = {
+static int parser_action_row1877[] = {
2,
- -1, 1, 423,
- 25, 1, 692
+ -1, 1, 507,
+ 25, 1, 1026
};
-static int parser_action_row1494[] = {
+static int parser_action_row1878[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1495[] = {
+static int parser_action_row1879[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1496[] = {
+static int parser_action_row1880[] = {
1,
- -1, 1, 679
+ -1, 1, 1013
};
-static int parser_action_row1497[] = {
+static int parser_action_row1881[] = {
1,
- -1, 1, 684
+ -1, 1, 1018
};
-static int parser_action_row1498[] = {
+static int parser_action_row1882[] = {
1,
- -1, 1, 427
+ -1, 1, 511
};
-static int parser_action_row1499[] = {
+static int parser_action_row1883[] = {
2,
- -1, 3, 1498,
+ -1, 3, 1882,
49, 0, 191
};
-static int parser_action_row1500[] = {
+static int parser_action_row1884[] = {
1,
- -1, 1, 439
+ -1, 1, 523
};
-static int parser_action_row1501[] = {
+static int parser_action_row1885[] = {
23,
- -1, 3, 1500,
+ -1, 3, 1884,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1502[] = {
+static int parser_action_row1886[] = {
2,
- -1, 1, 506,
- 51, 0, 272
+ -1, 1, 631,
+ 51, 0, 282
};
-static int parser_action_row1503[] = {
+static int parser_action_row1887[] = {
+ 1,
+ -1, 1, 703
+};
+static int parser_action_row1888[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1504[] = {
+static int parser_action_row1889[] = {
1,
- -1, 1, 323
+ -1, 1, 399
};
-static int parser_action_row1505[] = {
+static int parser_action_row1890[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1506[] = {
+static int parser_action_row1891[] = {
1,
- -1, 1, 310
+ -1, 1, 386
};
-static int parser_action_row1507[] = {
+static int parser_action_row1892[] = {
1,
- -1, 1, 123
+ -1, 1, 166
};
-static int parser_action_row1508[] = {
+static int parser_action_row1893[] = {
1,
- -1, 1, 125
+ -1, 1, 168
};
-static int parser_action_row1509[] = {
+static int parser_action_row1894[] = {
5,
- -1, 1, 127,
- 3, 0, 639,
+ -1, 1, 170,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 1569,
- 91, 0, 62
+ 85, 0, 1980,
+ 92, 0, 62
};
-static int parser_action_row1510[] = {
+static int parser_action_row1895[] = {
2,
- -1, 1, 117,
- 8, 0, 1572
+ -1, 1, 154,
+ 8, 0, 1983
+};
+static int parser_action_row1896[] = {
+ 33,
+ -1, 3, 1895,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1511[] = {
+static int parser_action_row1897[] = {
1,
- -1, 1, 145
+ -1, 1, 188
};
-static int parser_action_row1512[] = {
+static int parser_action_row1898[] = {
23,
- -1, 3, 1511,
+ -1, 3, 1897,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 178,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1513[] = {
+static int parser_action_row1899[] = {
2,
- -1, 1, 197,
- 8, 0, 1574
+ -1, 1, 256,
+ 8, 0, 1986
};
-static int parser_action_row1514[] = {
- 1,
- -1, 1, 199
+static int parser_action_row1900[] = {
+ 33,
+ -1, 3, 1899,
+ 0, 0, 1,
+ 1, 0, 2,
+ 8, 0, 540,
+ 11, 0, 28,
+ 14, 0, 30,
+ 17, 0, 31,
+ 23, 0, 35,
+ 26, 0, 36,
+ 27, 0, 37,
+ 28, 0, 38,
+ 33, 0, 40,
+ 34, 0, 41,
+ 35, 0, 42,
+ 36, 0, 43,
+ 37, 0, 44,
+ 38, 0, 45,
+ 41, 0, 46,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 50, 0, 51,
+ 51, 0, 52,
+ 53, 0, 53,
+ 80, 0, 54,
+ 81, 0, 55,
+ 82, 0, 56,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1515[] = {
+static int parser_action_row1901[] = {
1,
- -1, 1, 187
+ -1, 1, 262
};
-static int parser_action_row1516[] = {
+static int parser_action_row1902[] = {
+ 2,
+ -1, 1, 258,
+ 8, 0, 1988
+};
+static int parser_action_row1903[] = {
+ 2,
+ -1, 1, 238,
+ 13, 0, 456
+};
+static int parser_action_row1904[] = {
23,
- -1, 3, 1515,
+ -1, 3, 1903,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
+ 23, 0, 1843,
+ 32, 0, 1844,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1517[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1905[] = {
23,
- -1, 3, 1516,
+ -1, 3, 1904,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
+ 23, 0, 1843,
+ 32, 0, 1844,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1518[] = {
+static int parser_action_row1906[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1519[] = {
+static int parser_action_row1907[] = {
1,
- -1, 1, 163
+ -1, 1, 236
};
-static int parser_action_row1520[] = {
+static int parser_action_row1908[] = {
+ 1,
+ -1, 1, 206
+};
+static int parser_action_row1909[] = {
23,
- -1, 3, 1519,
+ -1, 3, 1908,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1521[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1910[] = {
5,
- -1, 1, 207,
- 3, 0, 639,
+ -1, 1, 276,
+ 3, 0, 722,
29, 0, 39,
- 85, 0, 1579,
- 91, 0, 62
+ 85, 0, 1994,
+ 92, 0, 62
};
-static int parser_action_row1522[] = {
+static int parser_action_row1911[] = {
3,
- -1, 3, 1521,
+ -1, 3, 1910,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1523[] = {
+static int parser_action_row1912[] = {
1,
- -1, 1, 243
+ -1, 1, 312
};
-static int parser_action_row1524[] = {
+static int parser_action_row1913[] = {
1,
- -1, 1, 247
+ -1, 1, 316
};
-static int parser_action_row1525[] = {
+static int parser_action_row1914[] = {
4,
- -1, 1, 209,
- 3, 0, 639,
+ -1, 1, 278,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1526[] = {
+static int parser_action_row1915[] = {
3,
- -1, 1, 213,
+ -1, 1, 282,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1527[] = {
+static int parser_action_row1916[] = {
1,
- -1, 1, 221
+ -1, 1, 290
};
-static int parser_action_row1528[] = {
+static int parser_action_row1917[] = {
1,
- -1, 1, 249
+ -1, 1, 318
};
-static int parser_action_row1529[] = {
+static int parser_action_row1918[] = {
23,
- -1, 3, 1528,
+ -1, 3, 1917,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1530[] = {
+static int parser_action_row1919[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1531[] = {
+static int parser_action_row1920[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1532[] = {
+static int parser_action_row1921[] = {
2,
- -1, 1, 161,
- 58, 0, 1589
+ -1, 1, 204,
+ 58, 0, 2004
};
-static int parser_action_row1533[] = {
+static int parser_action_row1922[] = {
23,
- -1, 3, 1532,
+ -1, 3, 1921,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1534[] = {
+static int parser_action_row1923[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1535[] = {
+static int parser_action_row1924[] = {
1,
- -1, 1, 164
+ -1, 1, 207
};
-static int parser_action_row1536[] = {
+static int parser_action_row1925[] = {
23,
- -1, 3, 1535,
+ -1, 3, 1924,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1537[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1926[] = {
23,
- -1, 3, 1536,
+ -1, 3, 1925,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1538[] = {
+static int parser_action_row1927[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1539[] = {
+static int parser_action_row1928[] = {
1,
- -1, 1, 166
+ -1, 1, 209
};
-static int parser_action_row1540[] = {
+static int parser_action_row1929[] = {
23,
- -1, 3, 1539,
+ -1, 3, 1928,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1541[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1930[] = {
4,
- -1, 1, 128,
- 3, 0, 639,
+ -1, 1, 171,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1542[] = {
+static int parser_action_row1931[] = {
3,
- -1, 1, 130,
+ -1, 1, 173,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1543[] = {
+static int parser_action_row1932[] = {
1,
- -1, 1, 134
+ -1, 1, 177
};
-static int parser_action_row1544[] = {
+static int parser_action_row1933[] = {
1,
- -1, 1, 118
+ -1, 1, 157
};
-static int parser_action_row1545[] = {
+static int parser_action_row1934[] = {
+ 2,
+ -1, 1, 155,
+ 8, 0, 2014
+};
+static int parser_action_row1935[] = {
1,
- -1, 1, 120
+ -1, 1, 161
};
-static int parser_action_row1546[] = {
+static int parser_action_row1936[] = {
3,
- -1, 1, 280,
- 35, 0, 645,
- 78, 0, 646
+ -1, 1, 353,
+ 35, 0, 730,
+ 78, 0, 731
};
-static int parser_action_row1547[] = {
+static int parser_action_row1937[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1548[] = {
+static int parser_action_row1938[] = {
1,
- -1, 1, 200
+ -1, 1, 263
};
-static int parser_action_row1549[] = {
- 1,
- -1, 1, 190
+static int parser_action_row1939[] = {
+ 2,
+ -1, 1, 259,
+ 8, 0, 2017
};
-static int parser_action_row1550[] = {
+static int parser_action_row1940[] = {
1,
- -1, 1, 188
+ -1, 1, 265
};
-static int parser_action_row1551[] = {
+static int parser_action_row1941[] = {
23,
- -1, 3, 1550,
+ -1, 3, 1940,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1942[] = {
+ 22,
+ -1, 3, 1941,
+ 11, 0, 170,
+ 32, 0, 1844,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1552[] = {
+static int parser_action_row1943[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1944[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1945[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1946[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1947[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1948[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1949[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1950[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1951[] = {
1,
- -1, 1, 170
+ -1, 1, 245
};
-static int parser_action_row1553[] = {
+static int parser_action_row1952[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1953[] = {
+ 4,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2,
+ 25, 0, 2029
+};
+static int parser_action_row1954[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1955[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1956[] = {
+ 2,
+ -1, 1, 241,
+ 13, 0, 456
+};
+static int parser_action_row1957[] = {
+ 2,
+ -1, 1, 239,
+ 13, 0, 456
+};
+static int parser_action_row1958[] = {
+ 23,
+ -1, 3, 1957,
+ 11, 0, 170,
+ 23, 0, 1843,
+ 32, 0, 1844,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1959[] = {
+ 1,
+ -1, 1, 213
+};
+static int parser_action_row1960[] = {
4,
- -1, 1, 210,
- 3, 0, 639,
+ -1, 1, 279,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1554[] = {
+static int parser_action_row1961[] = {
3,
- -1, 1, 214,
+ -1, 1, 283,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1555[] = {
+static int parser_action_row1962[] = {
1,
- -1, 1, 222
+ -1, 1, 291
};
-static int parser_action_row1556[] = {
+static int parser_action_row1963[] = {
1,
- -1, 1, 250
+ -1, 1, 319
};
-static int parser_action_row1557[] = {
+static int parser_action_row1964[] = {
3,
- -1, 1, 216,
+ -1, 1, 285,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
+};
+static int parser_action_row1965[] = {
+ 1,
+ -1, 1, 293
+};
+static int parser_action_row1966[] = {
+ 1,
+ -1, 1, 297
+};
+static int parser_action_row1967[] = {
+ 23,
+ -1, 3, 1966,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row1968[] = {
+ 23,
+ -1, 3, 1967,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 178,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1558[] = {
+static int parser_action_row1969[] = {
1,
- -1, 1, 224
+ -1, 1, 807
};
-static int parser_action_row1559[] = {
+static int parser_action_row1970[] = {
1,
- -1, 1, 228
+ -1, 1, 812
};
-static int parser_action_row1560[] = {
+static int parser_action_row1971[] = {
1,
- -1, 1, 496
+ -1, 1, 592
};
-static int parser_action_row1561[] = {
+static int parser_action_row1972[] = {
1,
- -1, 1, 770
+ -1, 1, 882
};
-static int parser_action_row1562[] = {
+static int parser_action_row1973[] = {
1,
- -1, 1, 689
+ -1, 1, 1023
};
-static int parser_action_row1563[] = {
+static int parser_action_row1974[] = {
23,
- -1, 3, 1562,
+ -1, 3, 1973,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1564[] = {
+static int parser_action_row1975[] = {
2,
- -1, 3, 1563,
- 14, 0, 1607
+ -1, 3, 1974,
+ 14, 0, 2043
};
-static int parser_action_row1565[] = {
+static int parser_action_row1976[] = {
1,
- -1, 1, 425
+ -1, 1, 509
};
-static int parser_action_row1566[] = {
+static int parser_action_row1977[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1567[] = {
+static int parser_action_row1978[] = {
1,
- -1, 1, 616
+ -1, 1, 749
};
-static int parser_action_row1568[] = {
+static int parser_action_row1979[] = {
4,
- -1, 3, 1567,
- 32, 0, 1609,
- 47, 0, 361,
- 79, 0, 362
+ -1, 3, 1978,
+ 32, 0, 2045,
+ 47, 0, 390,
+ 80, 0, 391
};
-static int parser_action_row1569[] = {
+static int parser_action_row1980[] = {
2,
- -1, 3, 1568,
- 52, 0, 1611
+ -1, 3, 1979,
+ 52, 0, 2047
};
-static int parser_action_row1570[] = {
+static int parser_action_row1981[] = {
4,
- -1, 1, 129,
- 3, 0, 639,
+ -1, 1, 172,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1571[] = {
+static int parser_action_row1982[] = {
3,
- -1, 1, 131,
+ -1, 1, 174,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1572[] = {
+static int parser_action_row1983[] = {
1,
- -1, 1, 135
+ -1, 1, 178
};
-static int parser_action_row1573[] = {
+static int parser_action_row1984[] = {
1,
- -1, 1, 119
+ -1, 1, 158
};
-static int parser_action_row1574[] = {
+static int parser_action_row1985[] = {
+ 2,
+ -1, 1, 156,
+ 8, 0, 2051
+};
+static int parser_action_row1986[] = {
1,
- -1, 1, 121
+ -1, 1, 162
};
-static int parser_action_row1575[] = {
+static int parser_action_row1987[] = {
1,
- -1, 1, 201
+ -1, 1, 264
};
-static int parser_action_row1576[] = {
+static int parser_action_row1988[] = {
+ 2,
+ -1, 1, 260,
+ 8, 0, 2052
+};
+static int parser_action_row1989[] = {
1,
- -1, 1, 191
+ -1, 1, 266
};
-static int parser_action_row1577[] = {
+static int parser_action_row1990[] = {
1,
- -1, 1, 189
+ -1, 1, 246
};
-static int parser_action_row1578[] = {
+static int parser_action_row1991[] = {
+ 2,
+ -1, 1, 242,
+ 13, 0, 456
+};
+static int parser_action_row1992[] = {
+ 2,
+ -1, 1, 240,
+ 13, 0, 456
+};
+static int parser_action_row1993[] = {
23,
- -1, 3, 1577,
+ -1, 3, 1992,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
+ 23, 0, 1843,
+ 32, 0, 1844,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1579[] = {
+static int parser_action_row1994[] = {
1,
- -1, 1, 171
+ -1, 1, 214
};
-static int parser_action_row1580[] = {
+static int parser_action_row1995[] = {
4,
- -1, 1, 211,
- 3, 0, 639,
+ -1, 1, 280,
+ 3, 0, 722,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1581[] = {
+static int parser_action_row1996[] = {
3,
- -1, 1, 215,
+ -1, 1, 284,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1582[] = {
+static int parser_action_row1997[] = {
1,
- -1, 1, 223
+ -1, 1, 292
};
-static int parser_action_row1583[] = {
+static int parser_action_row1998[] = {
1,
- -1, 1, 251
+ -1, 1, 320
};
-static int parser_action_row1584[] = {
+static int parser_action_row1999[] = {
3,
- -1, 1, 217,
+ -1, 1, 286,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1585[] = {
+static int parser_action_row2000[] = {
1,
- -1, 1, 225
+ -1, 1, 294
};
-static int parser_action_row1586[] = {
+static int parser_action_row2001[] = {
1,
- -1, 1, 229
+ -1, 1, 298
};
-static int parser_action_row1587[] = {
+static int parser_action_row2002[] = {
1,
- -1, 1, 165
+ -1, 1, 208
};
-static int parser_action_row1588[] = {
+static int parser_action_row2003[] = {
23,
- -1, 3, 1587,
+ -1, 3, 2002,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1589[] = {
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2004[] = {
23,
- -1, 3, 1588,
+ -1, 3, 2003,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1590[] = {
+static int parser_action_row2005[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1591[] = {
+static int parser_action_row2006[] = {
1,
- -1, 1, 168
+ -1, 1, 211
};
-static int parser_action_row1592[] = {
+static int parser_action_row2007[] = {
+ 23,
+ -1, 3, 2006,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2008[] = {
+ 1,
+ -1, 1, 215
+};
+static int parser_action_row2009[] = {
+ 1,
+ -1, 1, 210
+};
+static int parser_action_row2010[] = {
23,
- -1, 3, 1591,
+ -1, 3, 2009,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1593[] = {
- 1,
- -1, 1, 172
-};
-static int parser_action_row1594[] = {
- 1,
- -1, 1, 167
-};
-static int parser_action_row1595[] = {
- 23,
- -1, 3, 1594,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2011[] = {
+ 1,
+ -1, 1, 217
+};
+static int parser_action_row2012[] = {
+ 3,
+ -1, 1, 175,
+ 29, 0, 39,
+ 92, 0, 62
+};
+static int parser_action_row2013[] = {
+ 1,
+ -1, 1, 179
+};
+static int parser_action_row2014[] = {
+ 1,
+ -1, 1, 181
+};
+static int parser_action_row2015[] = {
+ 1,
+ -1, 1, 159
+};
+static int parser_action_row2016[] = {
+ 1,
+ -1, 1, 355
+};
+static int parser_action_row2017[] = {
+ 3,
+ -1, 1, 354,
+ 35, 0, 730,
+ 78, 0, 731
+};
+static int parser_action_row2018[] = {
+ 1,
+ -1, 1, 267
+};
+static int parser_action_row2019[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row2020[] = {
+ 1,
+ -1, 1, 1174
+};
+static int parser_action_row2021[] = {
+ 3,
+ -1, 3, 2020,
+ 47, 0, 390,
+ 80, 0, 391
+};
+static int parser_action_row2022[] = {
+ 21,
+ -1, 3, 2021,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2023[] = {
+ 21,
+ -1, 3, 2022,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2024[] = {
+ 21,
+ -1, 3, 2023,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2025[] = {
+ 21,
+ -1, 3, 2024,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2026[] = {
+ 21,
+ -1, 3, 2025,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2027[] = {
+ 21,
+ -1, 3, 2026,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2028[] = {
+ 21,
+ -1, 3, 2027,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2029[] = {
+ 22,
+ -1, 3, 2028,
+ 11, 0, 170,
+ 32, 0, 1844,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2030[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row2031[] = {
+ 22,
+ -1, 3, 2030,
+ 11, 0, 170,
+ 32, 0, 1844,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2032[] = {
+ 21,
+ -1, 3, 2031,
+ 11, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2033[] = {
+ 21,
+ -1, 3, 2032,
11, 0, 170,
- 23, 0, 171,
- 32, 0, 172,
38, 0, 173,
40, 0, 174,
41, 0, 175,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
-};
-static int parser_action_row1596[] = {
- 1,
- -1, 1, 174
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1597[] = {
- 3,
- -1, 1, 132,
- 29, 0, 39,
- 91, 0, 62
-};
-static int parser_action_row1598[] = {
+static int parser_action_row2034[] = {
1,
- -1, 1, 136
+ -1, 1, 249
};
-static int parser_action_row1599[] = {
+static int parser_action_row2035[] = {
1,
- -1, 1, 138
+ -1, 1, 247
};
-static int parser_action_row1600[] = {
- 1,
- -1, 1, 282
+static int parser_action_row2036[] = {
+ 2,
+ -1, 1, 243,
+ 13, 0, 456
};
-static int parser_action_row1601[] = {
+static int parser_action_row2037[] = {
3,
- -1, 1, 281,
- 35, 0, 645,
- 78, 0, 646
+ -1, 1, 287,
+ 29, 0, 39,
+ 92, 0, 62
};
-static int parser_action_row1602[] = {
+static int parser_action_row2038[] = {
1,
- -1, 1, 192
+ -1, 1, 295
};
-static int parser_action_row1603[] = {
- 3,
- -1, 1, 218,
- 29, 0, 39,
- 91, 0, 62
+static int parser_action_row2039[] = {
+ 1,
+ -1, 1, 299
};
-static int parser_action_row1604[] = {
+static int parser_action_row2040[] = {
1,
- -1, 1, 226
+ -1, 1, 301
};
-static int parser_action_row1605[] = {
+static int parser_action_row2041[] = {
1,
- -1, 1, 230
+ -1, 1, 809
};
-static int parser_action_row1606[] = {
+static int parser_action_row2042[] = {
1,
- -1, 1, 232
+ -1, 1, 814
};
-static int parser_action_row1607[] = {
+static int parser_action_row2043[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1608[] = {
+static int parser_action_row2044[] = {
33,
- -1, 3, 1607,
+ -1, 3, 2043,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1609[] = {
+static int parser_action_row2045[] = {
2,
- -1, 3, 1608,
- 25, 0, 1631
+ -1, 3, 2044,
+ 25, 0, 2086
};
-static int parser_action_row1610[] = {
+static int parser_action_row2046[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1611[] = {
+static int parser_action_row2047[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1612[] = {
+static int parser_action_row2048[] = {
1,
- -1, 1, 321
+ -1, 1, 397
};
-static int parser_action_row1613[] = {
+static int parser_action_row2049[] = {
3,
- -1, 1, 133,
+ -1, 1, 176,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1614[] = {
+static int parser_action_row2050[] = {
1,
- -1, 1, 137
+ -1, 1, 180
};
-static int parser_action_row1615[] = {
+static int parser_action_row2051[] = {
1,
- -1, 1, 139
+ -1, 1, 182
};
-static int parser_action_row1616[] = {
+static int parser_action_row2052[] = {
1,
- -1, 1, 193
+ -1, 1, 160
};
-static int parser_action_row1617[] = {
+static int parser_action_row2053[] = {
+ 1,
+ -1, 1, 268
+};
+static int parser_action_row2054[] = {
+ 1,
+ -1, 1, 250
+};
+static int parser_action_row2055[] = {
+ 1,
+ -1, 1, 248
+};
+static int parser_action_row2056[] = {
+ 2,
+ -1, 1, 244,
+ 13, 0, 456
+};
+static int parser_action_row2057[] = {
3,
- -1, 1, 219,
+ -1, 1, 288,
29, 0, 39,
- 91, 0, 62
+ 92, 0, 62
};
-static int parser_action_row1618[] = {
+static int parser_action_row2058[] = {
1,
- -1, 1, 227
+ -1, 1, 296
};
-static int parser_action_row1619[] = {
+static int parser_action_row2059[] = {
1,
- -1, 1, 231
+ -1, 1, 300
};
-static int parser_action_row1620[] = {
+static int parser_action_row2060[] = {
1,
- -1, 1, 233
+ -1, 1, 302
};
-static int parser_action_row1621[] = {
+static int parser_action_row2061[] = {
1,
- -1, 1, 173
+ -1, 1, 216
};
-static int parser_action_row1622[] = {
+static int parser_action_row2062[] = {
1,
- -1, 1, 169
+ -1, 1, 212
};
-static int parser_action_row1623[] = {
+static int parser_action_row2063[] = {
23,
- -1, 3, 1622,
+ -1, 3, 2062,
11, 0, 170,
23, 0, 171,
32, 0, 172,
51, 0, 52,
53, 0, 53,
65, 0, 177,
- 79, 0, 54,
- 80, 0, 206,
- 81, 0, 179,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1624[] = {
+static int parser_action_row2064[] = {
1,
- -1, 1, 176
+ -1, 1, 219
};
-static int parser_action_row1625[] = {
+static int parser_action_row2065[] = {
1,
- -1, 1, 175
+ -1, 1, 218
};
-static int parser_action_row1626[] = {
+static int parser_action_row2066[] = {
1,
- -1, 1, 140
+ -1, 1, 183
};
-static int parser_action_row1627[] = {
+static int parser_action_row2067[] = {
1,
- -1, 1, 283
+ -1, 1, 356
};
-static int parser_action_row1628[] = {
+static int parser_action_row2068[] = {
+ 2,
+ -1, 3, 2067,
+ 24, 0, 2093
+};
+static int parser_action_row2069[] = {
1,
- -1, 1, 234
+ -1, 1, 1185
};
-static int parser_action_row1629[] = {
+static int parser_action_row2070[] = {
+ 3,
+ -1, 1, 1176,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2071[] = {
+ 3,
+ -1, 1, 1177,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2072[] = {
+ 3,
+ -1, 1, 1178,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2073[] = {
+ 3,
+ -1, 1, 1179,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2074[] = {
+ 3,
+ -1, 1, 1181,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2075[] = {
+ 3,
+ -1, 1, 1182,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2076[] = {
+ 3,
+ -1, 1, 1184,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2077[] = {
+ 1,
+ -1, 1, 1171
+};
+static int parser_action_row2078[] = {
+ 22,
+ -1, 3, 2077,
+ 11, 0, 170,
+ 32, 0, 1844,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2079[] = {
+ 1,
+ -1, 1, 1170
+};
+static int parser_action_row2080[] = {
+ 3,
+ -1, 1, 1180,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2081[] = {
+ 3,
+ -1, 1, 1183,
+ 64, 0, 354,
+ 65, 0, 355
+};
+static int parser_action_row2082[] = {
+ 1,
+ -1, 1, 251
+};
+static int parser_action_row2083[] = {
+ 1,
+ -1, 1, 303
+};
+static int parser_action_row2084[] = {
2,
- -1, 3, 1628,
- 14, 0, 1637
+ -1, 3, 2083,
+ 14, 0, 2095
};
-static int parser_action_row1630[] = {
+static int parser_action_row2085[] = {
1,
- -1, 1, 697
+ -1, 1, 1031
};
-static int parser_action_row1631[] = {
+static int parser_action_row2086[] = {
2,
- -1, 3, 1630,
+ -1, 3, 2085,
49, 0, 191
};
-static int parser_action_row1632[] = {
+static int parser_action_row2087[] = {
3,
- -1, 1, 531,
+ -1, 1, 656,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1633[] = {
+static int parser_action_row2088[] = {
2,
- -1, 3, 1632,
- 45, 0, 1640
+ -1, 3, 2087,
+ 45, 0, 2098
};
-static int parser_action_row1634[] = {
+static int parser_action_row2089[] = {
2,
- -1, 3, 1633,
- 52, 0, 1641
+ -1, 3, 2088,
+ 52, 0, 2099
};
-static int parser_action_row1635[] = {
+static int parser_action_row2090[] = {
1,
- -1, 1, 141
+ -1, 1, 184
};
-static int parser_action_row1636[] = {
+static int parser_action_row2091[] = {
1,
- -1, 1, 235
+ -1, 1, 252
};
-static int parser_action_row1637[] = {
+static int parser_action_row2092[] = {
1,
- -1, 1, 177
+ -1, 1, 304
};
-static int parser_action_row1638[] = {
+static int parser_action_row2093[] = {
+ 1,
+ -1, 1, 220
+};
+static int parser_action_row2094[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row2095[] = {
+ 1,
+ -1, 1, 1172
+};
+static int parser_action_row2096[] = {
33,
- -1, 3, 1637,
+ -1, 3, 2095,
0, 0, 1,
1, 0, 2,
- 8, 0, 810,
- 11, 0, 690,
- 14, 0, 691,
- 17, 0, 692,
- 23, 0, 693,
- 26, 0, 695,
- 27, 0, 696,
- 28, 0, 697,
- 33, 0, 698,
- 34, 0, 699,
- 35, 0, 700,
- 36, 0, 701,
- 37, 0, 702,
+ 8, 0, 946,
+ 11, 0, 786,
+ 14, 0, 787,
+ 17, 0, 788,
+ 23, 0, 789,
+ 26, 0, 791,
+ 27, 0, 792,
+ 28, 0, 793,
+ 33, 0, 794,
+ 34, 0, 795,
+ 35, 0, 796,
+ 36, 0, 797,
+ 37, 0, 798,
38, 0, 45,
- 41, 0, 703,
+ 41, 0, 799,
42, 0, 47,
43, 0, 48,
44, 0, 49,
45, 0, 50,
- 50, 0, 704,
+ 50, 0, 800,
51, 0, 52,
53, 0, 53,
- 79, 0, 54,
- 80, 0, 705,
- 81, 0, 706,
- 82, 0, 57,
- 83, 0, 58,
- 84, 0, 59,
- 85, 0, 60,
- 86, 0, 61
+ 80, 0, 54,
+ 81, 0, 801,
+ 82, 0, 802,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
};
-static int parser_action_row1639[] = {
+static int parser_action_row2097[] = {
2,
- -1, 1, 426,
- 25, 1, 695
+ -1, 1, 510,
+ 25, 1, 1029
};
-static int parser_action_row1640[] = {
+static int parser_action_row2098[] = {
22,
- -1, 3, 1639,
- 11, 0, 863,
- 23, 0, 864,
- 32, 0, 865,
- 38, 0, 866,
- 40, 0, 867,
- 41, 0, 868,
- 42, 0, 869,
- 43, 0, 870,
- 44, 0, 871,
- 45, 0, 872,
- 48, 0, 873,
- 51, 0, 874,
- 65, 0, 875,
- 79, 0, 54,
- 80, 0, 876,
- 81, 0, 877,
- 82, 0, 878,
- 83, 0, 879,
- 84, 0, 880,
- 85, 0, 881,
- 86, 0, 61
-};
-static int parser_action_row1641[] = {
- 3,
- -1, 1, 531,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1642[] = {
+ -1, 3, 2097,
+ 11, 0, 1010,
+ 23, 0, 1011,
+ 32, 0, 1012,
+ 38, 0, 1013,
+ 40, 0, 1014,
+ 41, 0, 1015,
+ 42, 0, 1016,
+ 43, 0, 1017,
+ 44, 0, 1018,
+ 45, 0, 1019,
+ 48, 0, 1020,
+ 51, 0, 1021,
+ 65, 0, 1022,
+ 80, 0, 54,
+ 81, 0, 1023,
+ 82, 0, 1024,
+ 83, 0, 1025,
+ 84, 0, 1026,
+ 85, 0, 1027,
+ 86, 0, 60,
+ 89, 0, 1028
+};
+static int parser_action_row2099[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row2100[] = {
1,
- -1, 1, 627
+ -1, 1, 769
};
-static int parser_action_row1643[] = {
+static int parser_action_row2101[] = {
+ 23,
+ -1, 3, 2100,
+ 11, 0, 170,
+ 23, 0, 171,
+ 32, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2102[] = {
1,
- -1, 1, 696
+ -1, 1, 1030
};
-static int parser_action_row1644[] = {
+static int parser_action_row2103[] = {
2,
- -1, 3, 1643,
+ -1, 3, 2102,
49, 0, 191
};
-static int parser_action_row1645[] = {
+static int parser_action_row2104[] = {
1,
- -1, 1, 575
+ -1, 1, 708
};
-static int parser_action_row1646[] = {
+static int parser_action_row2105[] = {
2,
- -1, 3, 1645,
- 52, 0, 1647
+ -1, 3, 2104,
+ 52, 0, 2107
};
-static int parser_action_row1647[] = {
+static int parser_action_row2106[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row2107[] = {
2,
- -1, 1, 425,
- 25, 1, 694
+ -1, 1, 509,
+ 25, 1, 1028
};
-static int parser_action_row1648[] = {
+static int parser_action_row2108[] = {
1,
- -1, 1, 628
+ -1, 1, 770
+};
+static int parser_action_row2109[] = {
+ 2,
+ -1, 3, 2108,
+ 25, 0, 2109
+};
+static int parser_action_row2110[] = {
+ 3,
+ -1, 1, 656,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row2111[] = {
+ 23,
+ -1, 3, 2110,
+ 11, 0, 170,
+ 23, 0, 1843,
+ 32, 0, 1844,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 0, 175,
+ 42, 0, 47,
+ 43, 0, 48,
+ 44, 0, 49,
+ 45, 0, 50,
+ 48, 0, 176,
+ 51, 0, 52,
+ 53, 0, 53,
+ 65, 0, 177,
+ 80, 0, 54,
+ 81, 0, 211,
+ 82, 0, 179,
+ 83, 0, 57,
+ 84, 0, 58,
+ 85, 0, 59,
+ 86, 0, 60,
+ 89, 0, 61
+};
+static int parser_action_row2112[] = {
+ 1,
+ -1, 1, 1168
};
const int* const parser_action_table[] = {
parser_action_row1645,
parser_action_row1646,
parser_action_row1647,
- parser_action_row1648
+ parser_action_row1648,
+ parser_action_row1649,
+ parser_action_row1650,
+ parser_action_row1651,
+ parser_action_row1652,
+ parser_action_row1653,
+ parser_action_row1654,
+ parser_action_row1655,
+ parser_action_row1656,
+ parser_action_row1657,
+ parser_action_row1658,
+ parser_action_row1659,
+ parser_action_row1660,
+ parser_action_row1661,
+ parser_action_row1662,
+ parser_action_row1663,
+ parser_action_row1664,
+ parser_action_row1665,
+ parser_action_row1666,
+ parser_action_row1667,
+ parser_action_row1668,
+ parser_action_row1669,
+ parser_action_row1670,
+ parser_action_row1671,
+ parser_action_row1672,
+ parser_action_row1673,
+ parser_action_row1674,
+ parser_action_row1675,
+ parser_action_row1676,
+ parser_action_row1677,
+ parser_action_row1678,
+ parser_action_row1679,
+ parser_action_row1680,
+ parser_action_row1681,
+ parser_action_row1682,
+ parser_action_row1683,
+ parser_action_row1684,
+ parser_action_row1685,
+ parser_action_row1686,
+ parser_action_row1687,
+ parser_action_row1688,
+ parser_action_row1689,
+ parser_action_row1690,
+ parser_action_row1691,
+ parser_action_row1692,
+ parser_action_row1693,
+ parser_action_row1694,
+ parser_action_row1695,
+ parser_action_row1696,
+ parser_action_row1697,
+ parser_action_row1698,
+ parser_action_row1699,
+ parser_action_row1700,
+ parser_action_row1701,
+ parser_action_row1702,
+ parser_action_row1703,
+ parser_action_row1704,
+ parser_action_row1705,
+ parser_action_row1706,
+ parser_action_row1707,
+ parser_action_row1708,
+ parser_action_row1709,
+ parser_action_row1710,
+ parser_action_row1711,
+ parser_action_row1712,
+ parser_action_row1713,
+ parser_action_row1714,
+ parser_action_row1715,
+ parser_action_row1716,
+ parser_action_row1717,
+ parser_action_row1718,
+ parser_action_row1719,
+ parser_action_row1720,
+ parser_action_row1721,
+ parser_action_row1722,
+ parser_action_row1723,
+ parser_action_row1724,
+ parser_action_row1725,
+ parser_action_row1726,
+ parser_action_row1727,
+ parser_action_row1728,
+ parser_action_row1729,
+ parser_action_row1730,
+ parser_action_row1731,
+ parser_action_row1732,
+ parser_action_row1733,
+ parser_action_row1734,
+ parser_action_row1735,
+ parser_action_row1736,
+ parser_action_row1737,
+ parser_action_row1738,
+ parser_action_row1739,
+ parser_action_row1740,
+ parser_action_row1741,
+ parser_action_row1742,
+ parser_action_row1743,
+ parser_action_row1744,
+ parser_action_row1745,
+ parser_action_row1746,
+ parser_action_row1747,
+ parser_action_row1748,
+ parser_action_row1749,
+ parser_action_row1750,
+ parser_action_row1751,
+ parser_action_row1752,
+ parser_action_row1753,
+ parser_action_row1754,
+ parser_action_row1755,
+ parser_action_row1756,
+ parser_action_row1757,
+ parser_action_row1758,
+ parser_action_row1759,
+ parser_action_row1760,
+ parser_action_row1761,
+ parser_action_row1762,
+ parser_action_row1763,
+ parser_action_row1764,
+ parser_action_row1765,
+ parser_action_row1766,
+ parser_action_row1767,
+ parser_action_row1768,
+ parser_action_row1769,
+ parser_action_row1770,
+ parser_action_row1771,
+ parser_action_row1772,
+ parser_action_row1773,
+ parser_action_row1774,
+ parser_action_row1775,
+ parser_action_row1776,
+ parser_action_row1777,
+ parser_action_row1778,
+ parser_action_row1779,
+ parser_action_row1780,
+ parser_action_row1781,
+ parser_action_row1782,
+ parser_action_row1783,
+ parser_action_row1784,
+ parser_action_row1785,
+ parser_action_row1786,
+ parser_action_row1787,
+ parser_action_row1788,
+ parser_action_row1789,
+ parser_action_row1790,
+ parser_action_row1791,
+ parser_action_row1792,
+ parser_action_row1793,
+ parser_action_row1794,
+ parser_action_row1795,
+ parser_action_row1796,
+ parser_action_row1797,
+ parser_action_row1798,
+ parser_action_row1799,
+ parser_action_row1800,
+ parser_action_row1801,
+ parser_action_row1802,
+ parser_action_row1803,
+ parser_action_row1804,
+ parser_action_row1805,
+ parser_action_row1806,
+ parser_action_row1807,
+ parser_action_row1808,
+ parser_action_row1809,
+ parser_action_row1810,
+ parser_action_row1811,
+ parser_action_row1812,
+ parser_action_row1813,
+ parser_action_row1814,
+ parser_action_row1815,
+ parser_action_row1816,
+ parser_action_row1817,
+ parser_action_row1818,
+ parser_action_row1819,
+ parser_action_row1820,
+ parser_action_row1821,
+ parser_action_row1822,
+ parser_action_row1823,
+ parser_action_row1824,
+ parser_action_row1825,
+ parser_action_row1826,
+ parser_action_row1827,
+ parser_action_row1828,
+ parser_action_row1829,
+ parser_action_row1830,
+ parser_action_row1831,
+ parser_action_row1832,
+ parser_action_row1833,
+ parser_action_row1834,
+ parser_action_row1835,
+ parser_action_row1836,
+ parser_action_row1837,
+ parser_action_row1838,
+ parser_action_row1839,
+ parser_action_row1840,
+ parser_action_row1841,
+ parser_action_row1842,
+ parser_action_row1843,
+ parser_action_row1844,
+ parser_action_row1845,
+ parser_action_row1846,
+ parser_action_row1847,
+ parser_action_row1848,
+ parser_action_row1849,
+ parser_action_row1850,
+ parser_action_row1851,
+ parser_action_row1852,
+ parser_action_row1853,
+ parser_action_row1854,
+ parser_action_row1855,
+ parser_action_row1856,
+ parser_action_row1857,
+ parser_action_row1858,
+ parser_action_row1859,
+ parser_action_row1860,
+ parser_action_row1861,
+ parser_action_row1862,
+ parser_action_row1863,
+ parser_action_row1864,
+ parser_action_row1865,
+ parser_action_row1866,
+ parser_action_row1867,
+ parser_action_row1868,
+ parser_action_row1869,
+ parser_action_row1870,
+ parser_action_row1871,
+ parser_action_row1872,
+ parser_action_row1873,
+ parser_action_row1874,
+ parser_action_row1875,
+ parser_action_row1876,
+ parser_action_row1877,
+ parser_action_row1878,
+ parser_action_row1879,
+ parser_action_row1880,
+ parser_action_row1881,
+ parser_action_row1882,
+ parser_action_row1883,
+ parser_action_row1884,
+ parser_action_row1885,
+ parser_action_row1886,
+ parser_action_row1887,
+ parser_action_row1888,
+ parser_action_row1889,
+ parser_action_row1890,
+ parser_action_row1891,
+ parser_action_row1892,
+ parser_action_row1893,
+ parser_action_row1894,
+ parser_action_row1895,
+ parser_action_row1896,
+ parser_action_row1897,
+ parser_action_row1898,
+ parser_action_row1899,
+ parser_action_row1900,
+ parser_action_row1901,
+ parser_action_row1902,
+ parser_action_row1903,
+ parser_action_row1904,
+ parser_action_row1905,
+ parser_action_row1906,
+ parser_action_row1907,
+ parser_action_row1908,
+ parser_action_row1909,
+ parser_action_row1910,
+ parser_action_row1911,
+ parser_action_row1912,
+ parser_action_row1913,
+ parser_action_row1914,
+ parser_action_row1915,
+ parser_action_row1916,
+ parser_action_row1917,
+ parser_action_row1918,
+ parser_action_row1919,
+ parser_action_row1920,
+ parser_action_row1921,
+ parser_action_row1922,
+ parser_action_row1923,
+ parser_action_row1924,
+ parser_action_row1925,
+ parser_action_row1926,
+ parser_action_row1927,
+ parser_action_row1928,
+ parser_action_row1929,
+ parser_action_row1930,
+ parser_action_row1931,
+ parser_action_row1932,
+ parser_action_row1933,
+ parser_action_row1934,
+ parser_action_row1935,
+ parser_action_row1936,
+ parser_action_row1937,
+ parser_action_row1938,
+ parser_action_row1939,
+ parser_action_row1940,
+ parser_action_row1941,
+ parser_action_row1942,
+ parser_action_row1943,
+ parser_action_row1944,
+ parser_action_row1945,
+ parser_action_row1946,
+ parser_action_row1947,
+ parser_action_row1948,
+ parser_action_row1949,
+ parser_action_row1950,
+ parser_action_row1951,
+ parser_action_row1952,
+ parser_action_row1953,
+ parser_action_row1954,
+ parser_action_row1955,
+ parser_action_row1956,
+ parser_action_row1957,
+ parser_action_row1958,
+ parser_action_row1959,
+ parser_action_row1960,
+ parser_action_row1961,
+ parser_action_row1962,
+ parser_action_row1963,
+ parser_action_row1964,
+ parser_action_row1965,
+ parser_action_row1966,
+ parser_action_row1967,
+ parser_action_row1968,
+ parser_action_row1969,
+ parser_action_row1970,
+ parser_action_row1971,
+ parser_action_row1972,
+ parser_action_row1973,
+ parser_action_row1974,
+ parser_action_row1975,
+ parser_action_row1976,
+ parser_action_row1977,
+ parser_action_row1978,
+ parser_action_row1979,
+ parser_action_row1980,
+ parser_action_row1981,
+ parser_action_row1982,
+ parser_action_row1983,
+ parser_action_row1984,
+ parser_action_row1985,
+ parser_action_row1986,
+ parser_action_row1987,
+ parser_action_row1988,
+ parser_action_row1989,
+ parser_action_row1990,
+ parser_action_row1991,
+ parser_action_row1992,
+ parser_action_row1993,
+ parser_action_row1994,
+ parser_action_row1995,
+ parser_action_row1996,
+ parser_action_row1997,
+ parser_action_row1998,
+ parser_action_row1999,
+ parser_action_row2000,
+ parser_action_row2001,
+ parser_action_row2002,
+ parser_action_row2003,
+ parser_action_row2004,
+ parser_action_row2005,
+ parser_action_row2006,
+ parser_action_row2007,
+ parser_action_row2008,
+ parser_action_row2009,
+ parser_action_row2010,
+ parser_action_row2011,
+ parser_action_row2012,
+ parser_action_row2013,
+ parser_action_row2014,
+ parser_action_row2015,
+ parser_action_row2016,
+ parser_action_row2017,
+ parser_action_row2018,
+ parser_action_row2019,
+ parser_action_row2020,
+ parser_action_row2021,
+ parser_action_row2022,
+ parser_action_row2023,
+ parser_action_row2024,
+ parser_action_row2025,
+ parser_action_row2026,
+ parser_action_row2027,
+ parser_action_row2028,
+ parser_action_row2029,
+ parser_action_row2030,
+ parser_action_row2031,
+ parser_action_row2032,
+ parser_action_row2033,
+ parser_action_row2034,
+ parser_action_row2035,
+ parser_action_row2036,
+ parser_action_row2037,
+ parser_action_row2038,
+ parser_action_row2039,
+ parser_action_row2040,
+ parser_action_row2041,
+ parser_action_row2042,
+ parser_action_row2043,
+ parser_action_row2044,
+ parser_action_row2045,
+ parser_action_row2046,
+ parser_action_row2047,
+ parser_action_row2048,
+ parser_action_row2049,
+ parser_action_row2050,
+ parser_action_row2051,
+ parser_action_row2052,
+ parser_action_row2053,
+ parser_action_row2054,
+ parser_action_row2055,
+ parser_action_row2056,
+ parser_action_row2057,
+ parser_action_row2058,
+ parser_action_row2059,
+ parser_action_row2060,
+ parser_action_row2061,
+ parser_action_row2062,
+ parser_action_row2063,
+ parser_action_row2064,
+ parser_action_row2065,
+ parser_action_row2066,
+ parser_action_row2067,
+ parser_action_row2068,
+ parser_action_row2069,
+ parser_action_row2070,
+ parser_action_row2071,
+ parser_action_row2072,
+ parser_action_row2073,
+ parser_action_row2074,
+ parser_action_row2075,
+ parser_action_row2076,
+ parser_action_row2077,
+ parser_action_row2078,
+ parser_action_row2079,
+ parser_action_row2080,
+ parser_action_row2081,
+ parser_action_row2082,
+ parser_action_row2083,
+ parser_action_row2084,
+ parser_action_row2085,
+ parser_action_row2086,
+ parser_action_row2087,
+ parser_action_row2088,
+ parser_action_row2089,
+ parser_action_row2090,
+ parser_action_row2091,
+ parser_action_row2092,
+ parser_action_row2093,
+ parser_action_row2094,
+ parser_action_row2095,
+ parser_action_row2096,
+ parser_action_row2097,
+ parser_action_row2098,
+ parser_action_row2099,
+ parser_action_row2100,
+ parser_action_row2101,
+ parser_action_row2102,
+ parser_action_row2103,
+ parser_action_row2104,
+ parser_action_row2105,
+ parser_action_row2106,
+ parser_action_row2107,
+ parser_action_row2108,
+ parser_action_row2109,
+ parser_action_row2110,
+ parser_action_row2111,
+ parser_action_row2112
};
static int parser_goto_row1[] = {
24, 114,
25, 117,
26, 119,
- 92, 245,
- 93, 248,
- 94, 250,
- 98, 252,
- 99, 254,
- 103, 255,
- 111, 258,
- 112, 261,
- 113, 263,
- 115, 264,
- 116, 266,
- 118, 267,
- 246, 415,
- 247, 417,
- 249, 418,
- 253, 419,
- 259, 421,
- 260, 423,
- 262, 424,
- 265, 425,
- 416, 541,
- 422, 542
+ 92, 255,
+ 93, 258,
+ 94, 260,
+ 98, 262,
+ 99, 264,
+ 103, 265,
+ 111, 268,
+ 112, 271,
+ 113, 273,
+ 115, 274,
+ 116, 276,
+ 118, 277,
+ 256, 444,
+ 257, 446,
+ 259, 447,
+ 263, 448,
+ 269, 450,
+ 270, 452,
+ 272, 453,
+ 275, 454,
+ 445, 585,
+ 451, 586
};
static int parser_goto_row5[] = {
1,
98, 101,
112, 101,
115, 101,
- 246, 101,
- 259, 101
+ 256, 101,
+ 269, 101
};
static int parser_goto_row7[] = {
2,
- -1, 225,
- 154, 307
+ -1, 234,
+ 154, 325
};
static int parser_goto_row8[] = {
2,
- -1, 652,
- 579, 682
+ -1, 737,
+ 627, 775
};
static int parser_goto_row9[] = {
2,
- -1, 1089,
- 1091, 1227
+ -1, 1306,
+ 1308, 1499
};
static int parser_goto_row10[] = {
2,
- -1, 929,
- 1225, 1344
+ -1, 1079,
+ 1497, 1664
};
static int parser_goto_row11[] = {
- 9,
- -1, 653,
- 658, 780,
- 685, 780,
- 766, 780,
- 770, 780,
- 800, 780,
- 803, 780,
- 931, 780,
- 970, 780
+ 17,
+ -1, 738,
+ 744, 901,
+ 778, 901,
+ 883, 901,
+ 888, 901,
+ 909, 901,
+ 930, 901,
+ 934, 901,
+ 942, 901,
+ 1081, 901,
+ 1089, 901,
+ 1136, 901,
+ 1159, 901,
+ 1167, 901,
+ 1177, 901,
+ 1317, 901,
+ 1391, 901
};
static int parser_goto_row12[] = {
- 17,
- -1, 654,
- 659, 783,
- 686, 783,
- 767, 783,
- 771, 783,
- 782, 783,
- 801, 783,
- 804, 783,
- 807, 783,
- 932, 783,
- 935, 783,
- 939, 783,
- 971, 783,
- 974, 783,
- 978, 783,
- 1094, 783,
- 1135, 783
+ 33,
+ -1, 739,
+ 745, 904,
+ 779, 904,
+ 884, 904,
+ 889, 904,
+ 903, 904,
+ 910, 904,
+ 931, 904,
+ 935, 904,
+ 938, 904,
+ 943, 904,
+ 1082, 904,
+ 1085, 904,
+ 1090, 904,
+ 1093, 904,
+ 1137, 904,
+ 1140, 904,
+ 1160, 904,
+ 1163, 904,
+ 1168, 904,
+ 1171, 904,
+ 1178, 904,
+ 1181, 904,
+ 1311, 904,
+ 1318, 904,
+ 1321, 904,
+ 1366, 904,
+ 1385, 904,
+ 1392, 904,
+ 1395, 904,
+ 1403, 904,
+ 1507, 904,
+ 1578, 904
};
static int parser_goto_row13[] = {
1,
- -1, 655
+ -1, 740
};
static int parser_goto_row14[] = {
- 1,
- -1, 777
+ 25,
+ -1, 457,
+ 567, 718,
+ 571, 725,
+ 625, 770,
+ 1331, 1521,
+ 1344, 1539,
+ 1517, 1678,
+ 1528, 1698,
+ 1530, 1703,
+ 1540, 1716,
+ 1542, 1719,
+ 1671, 1791,
+ 1673, 1796,
+ 1679, 1803,
+ 1680, 1805,
+ 1720, 1853,
+ 1806, 1906,
+ 1846, 1950,
+ 1902, 1989,
+ 1955, 2033,
+ 1956, 2034,
+ 1990, 2053,
+ 1991, 2054,
+ 2035, 2081,
+ 2055, 2090
};
static int parser_goto_row15[] = {
- 2,
- -1, 778,
- 777, 946
+ 8,
+ -1, 726,
+ 625, 771,
+ 1342, 1535,
+ 1516, 1676,
+ 1528, 1699,
+ 1532, 1707,
+ 1671, 1792,
+ 1674, 1798
};
static int parser_goto_row16[] = {
- 4,
- -1, 1257,
- 1238, 1353,
- 1259, 1385,
- 1354, 1441
+ 1,
+ -1, 897
};
static int parser_goto_row17[] = {
+ 2,
+ -1, 898,
+ 897, 1100
+};
+static int parser_goto_row18[] = {
+ 4,
+ -1, 1540,
+ 1517, 1679,
+ 1542, 1720,
+ 1680, 1806
+};
+static int parser_goto_row19[] = {
20,
- -1, 779,
+ -1, 899,
11, 63,
22, 63,
29, 154,
- 97, 251,
- 102, 251,
- 105, 257,
- 256, 420,
- 773, 943,
- 777, 947,
- 778, 949,
- 945, 1108,
- 946, 1110,
- 948, 1112,
- 1109, 1243,
- 1120, 1258,
- 1238, 1258,
- 1255, 1380,
- 1259, 1258,
- 1354, 1258
+ 97, 261,
+ 102, 261,
+ 105, 267,
+ 266, 449,
+ 892, 1097,
+ 897, 1101,
+ 898, 1103,
+ 1099, 1332,
+ 1100, 1334,
+ 1102, 1336,
+ 1333, 1523,
+ 1344, 1541,
+ 1517, 1541,
+ 1537, 1713,
+ 1542, 1541,
+ 1680, 1541
};
-static int parser_goto_row18[] = {
+static int parser_goto_row20[] = {
10,
- -1, 913,
- 223, 399,
- 306, 461,
- 950, 1114,
- 952, 1117,
- 954, 1122,
- 1074, 1213,
- 1102, 1234,
- 1104, 1236,
- 1106, 1240
+ -1, 1061,
+ 232, 427,
+ 324, 492,
+ 1104, 1338,
+ 1106, 1341,
+ 1108, 1346,
+ 1289, 1484,
+ 1326, 1513,
+ 1328, 1515,
+ 1330, 1519
};
-static int parser_goto_row19[] = {
+static int parser_goto_row21[] = {
12,
- -1, 528,
- 461, 577,
- 952, 1118,
- 954, 1123,
- 1104, 1237,
- 1106, 1241,
- 1114, 1248,
- 1117, 1252,
- 1122, 1262,
- 1234, 1347,
- 1236, 1350,
- 1240, 1357
+ -1, 571,
+ 492, 625,
+ 1106, 1342,
+ 1108, 1347,
+ 1328, 1516,
+ 1330, 1520,
+ 1338, 1528,
+ 1341, 1532,
+ 1346, 1545,
+ 1513, 1671,
+ 1515, 1674,
+ 1519, 1683
};
-static int parser_goto_row20[] = {
+static int parser_goto_row22[] = {
2,
- -1, 924,
- 922, 1082
+ -1, 1074,
+ 1072, 1298
};
-static int parser_goto_row21[] = {
+static int parser_goto_row23[] = {
3,
- -1, 752,
- 1083, 1222,
- 1251, 1376
+ -1, 866,
+ 1299, 1493,
+ 1531, 1705
};
-static int parser_goto_row22[] = {
+static int parser_goto_row24[] = {
2,
- -1, 908,
- 910, 1072
+ -1, 1056,
+ 1058, 1287
};
-static int parser_goto_row23[] = {
+static int parser_goto_row25[] = {
2,
- -1, 753,
- 1071, 1212
+ -1, 867,
+ 1286, 1483
};
-static int parser_goto_row24[] = {
+static int parser_goto_row26[] = {
9,
- -1, 647,
- 644, 758,
- 904, 1067,
- 1066, 1209,
- 1070, 1211,
- 1210, 1333,
- 1254, 1379,
- 1545, 1599,
- 1600, 1626
+ -1, 732,
+ 729, 875,
+ 1051, 1281,
+ 1280, 1479,
+ 1285, 1482,
+ 1481, 1653,
+ 1536, 1712,
+ 1935, 2015,
+ 2016, 2066
};
-static int parser_goto_row25[] = {
+static int parser_goto_row27[] = {
2,
- -1, 648,
- 649, 761
+ -1, 733,
+ 734, 878
};
-static int parser_goto_row26[] = {
+static int parser_goto_row28[] = {
4,
- -1, 926,
- 797, 968,
- 1468, 1544,
- 1511, 1573
+ -1, 1076,
+ 927, 1157,
+ 1834, 1934,
+ 1897, 1985
};
-static int parser_goto_row27[] = {
+static int parser_goto_row29[] = {
28,
- -1, 642,
- 577, 679,
- 755, 919,
- 794, 965,
- 918, 1079,
- 964, 1130,
- 1123, 1265,
- 1241, 1360,
- 1248, 1372,
- 1262, 1390,
- 1264, 1393,
- 1347, 1433,
- 1357, 1446,
- 1359, 1449,
- 1389, 1481,
- 1392, 1485,
- 1445, 1521,
- 1448, 1525,
- 1465, 1541,
- 1480, 1553,
- 1484, 1556,
- 1508, 1570,
- 1520, 1580,
- 1524, 1583,
- 1540, 1596,
- 1552, 1602,
- 1569, 1612,
- 1579, 1616
+ -1, 727,
+ 625, 772,
+ 869, 1067,
+ 923, 1153,
+ 1066, 1294,
+ 1152, 1379,
+ 1347, 1548,
+ 1520, 1686,
+ 1528, 1700,
+ 1545, 1725,
+ 1547, 1728,
+ 1671, 1793,
+ 1683, 1811,
+ 1685, 1814,
+ 1724, 1857,
+ 1727, 1861,
+ 1810, 1910,
+ 1813, 1914,
+ 1830, 1930,
+ 1856, 1960,
+ 1860, 1963,
+ 1893, 1981,
+ 1909, 1995,
+ 1913, 1998,
+ 1929, 2011,
+ 1959, 2036,
+ 1980, 2048,
+ 1994, 2056
};
-static int parser_goto_row28[] = {
+static int parser_goto_row30[] = {
2,
- -1, 1076,
- 1077, 1215
+ -1, 1291,
+ 1292, 1486
};
-static int parser_goto_row29[] = {
+static int parser_goto_row31[] = {
2,
- -1, 914,
- 1214, 1334
+ -1, 1062,
+ 1485, 1654
};
-static int parser_goto_row30[] = {
+static int parser_goto_row32[] = {
1,
- -1, 915
+ -1, 1063
};
-static int parser_goto_row31[] = {
+static int parser_goto_row33[] = {
1,
- -1, 916
+ -1, 1064
};
-static int parser_goto_row32[] = {
+static int parser_goto_row34[] = {
1,
-1, 64
};
-static int parser_goto_row33[] = {
- 61,
+static int parser_goto_row35[] = {
+ 65,
-1, 65,
- 528, 643,
- 532, 656,
- 577, 680,
- 579, 683,
- 642, 757,
- 652, 764,
- 679, 796,
- 682, 798,
- 755, 920,
- 794, 966,
- 918, 1080,
- 919, 1081,
- 964, 1131,
- 965, 1132,
- 1079, 1217,
- 1123, 1266,
- 1130, 1272,
- 1241, 1361,
- 1248, 1373,
- 1262, 1391,
- 1264, 1394,
- 1265, 1395,
- 1347, 1434,
- 1357, 1447,
- 1359, 1450,
- 1360, 1451,
- 1372, 1467,
- 1389, 1482,
- 1390, 1483,
- 1392, 1486,
- 1393, 1487,
- 1433, 1510,
- 1445, 1522,
- 1446, 1523,
- 1448, 1526,
- 1449, 1527,
- 1465, 1542,
- 1480, 1554,
- 1481, 1555,
- 1484, 1557,
- 1485, 1558,
- 1508, 1571,
- 1520, 1581,
- 1521, 1582,
- 1524, 1584,
- 1525, 1585,
- 1540, 1597,
- 1541, 1598,
- 1552, 1603,
- 1553, 1604,
- 1556, 1605,
- 1569, 1613,
- 1570, 1614,
- 1579, 1617,
- 1580, 1618,
- 1583, 1619,
- 1596, 1625,
- 1602, 1627,
- 1612, 1634,
- 1616, 1635
+ 571, 728,
+ 575, 741,
+ 625, 773,
+ 627, 776,
+ 727, 874,
+ 737, 881,
+ 746, 906,
+ 772, 926,
+ 775, 928,
+ 780, 940,
+ 869, 1068,
+ 885, 1087,
+ 923, 1154,
+ 932, 1165,
+ 1066, 1295,
+ 1067, 1296,
+ 1152, 1380,
+ 1153, 1381,
+ 1294, 1488,
+ 1347, 1549,
+ 1379, 1571,
+ 1520, 1687,
+ 1528, 1701,
+ 1545, 1726,
+ 1547, 1729,
+ 1548, 1730,
+ 1671, 1794,
+ 1683, 1812,
+ 1685, 1815,
+ 1686, 1816,
+ 1700, 1833,
+ 1724, 1858,
+ 1725, 1859,
+ 1727, 1862,
+ 1728, 1863,
+ 1793, 1896,
+ 1810, 1911,
+ 1811, 1912,
+ 1813, 1915,
+ 1814, 1916,
+ 1830, 1931,
+ 1856, 1961,
+ 1857, 1962,
+ 1860, 1964,
+ 1861, 1965,
+ 1893, 1982,
+ 1909, 1996,
+ 1910, 1997,
+ 1913, 1999,
+ 1914, 2000,
+ 1929, 2012,
+ 1930, 2013,
+ 1959, 2037,
+ 1960, 2038,
+ 1963, 2039,
+ 1980, 2049,
+ 1981, 2050,
+ 1994, 2057,
+ 1995, 2058,
+ 1998, 2059,
+ 2011, 2065,
+ 2036, 2082,
+ 2048, 2089,
+ 2056, 2091
};
-static int parser_goto_row34[] = {
+static int parser_goto_row36[] = {
5,
-1, 9,
16, 96,
92, 96,
111, 96
};
-static int parser_goto_row35[] = {
- 18,
- -1, 736,
- 202, 363,
- 205, 364,
- 276, 432,
- 323, 474,
- 434, 550,
- 447, 560,
- 465, 582,
- 485, 600,
- 754, 917,
- 830, 997,
- 944, 1107,
- 958, 1126,
- 963, 1129,
- 1022, 1170,
- 1214, 917,
- 1426, 1504,
- 1567, 1610
-};
-static int parser_goto_row36[] = {
- 2,
- -1, 737,
- 735, 856
-};
static int parser_goto_row37[] = {
- 2,
- -1, 858,
- 859, 1023
+ 23,
+ -1, 832,
+ 210, 392,
+ 478, 608,
+ 496, 630,
+ 518, 650,
+ 550, 690,
+ 844, 1002,
+ 868, 1065,
+ 900, 1117,
+ 918, 1117,
+ 966, 1198,
+ 1005, 690,
+ 1098, 1331,
+ 1114, 690,
+ 1142, 1372,
+ 1145, 690,
+ 1151, 1378,
+ 1223, 1436,
+ 1353, 1552,
+ 1485, 1065,
+ 1783, 1889,
+ 1978, 2046,
+ 2020, 2068
};
static int parser_goto_row38[] = {
- 29,
- -1, 1119,
- 160, 314,
- 399, 529,
- 461, 529,
- 750, 903,
- 751, 905,
- 760, 925,
- 815, 987,
- 906, 1069,
- 922, 925,
- 928, 1087,
- 1114, 529,
- 1115, 1250,
- 1120, 1259,
- 1121, 1261,
- 1221, 1340,
- 1234, 529,
- 1235, 1349,
- 1238, 1354,
- 1239, 1356,
- 1245, 1366,
- 1247, 1369,
- 1341, 1429,
- 1362, 1453,
- 1364, 1456,
- 1367, 1460,
- 1375, 1469,
- 1454, 1531,
- 1470, 1546
+ 4,
+ -1, 833,
+ 706, 851,
+ 831, 992,
+ 850, 1007
};
static int parser_goto_row39[] = {
- 32,
+ 2,
+ -1, 994,
+ 995, 1224
+};
+static int parser_goto_row40[] = {
+ 33,
+ -1, 1343,
+ 160, 332,
+ 333, 500,
+ 427, 572,
+ 492, 572,
+ 864, 1050,
+ 865, 1052,
+ 877, 1075,
+ 951, 1187,
+ 1053, 1283,
+ 1054, 1284,
+ 1072, 1075,
+ 1078, 1303,
+ 1188, 1411,
+ 1304, 1496,
+ 1338, 572,
+ 1339, 1530,
+ 1344, 1542,
+ 1345, 1544,
+ 1492, 1660,
+ 1513, 572,
+ 1514, 1673,
+ 1517, 1680,
+ 1518, 1682,
+ 1525, 1692,
+ 1527, 1695,
+ 1661, 1786,
+ 1688, 1818,
+ 1690, 1821,
+ 1693, 1825,
+ 1704, 1835,
+ 1819, 1920,
+ 1836, 1936
+};
+static int parser_goto_row41[] = {
+ 40,
-1, 156,
37, 166,
- 360, 508,
- 504, 618,
- 586, 721,
- 631, 743,
- 641, 756,
- 678, 795,
- 694, 817,
- 696, 166,
- 730, 743,
- 748, 899,
- 841, 1009,
- 853, 899,
- 996, 508,
- 1061, 1205,
- 1084, 1223,
- 1150, 618,
- 1163, 1294,
- 1165, 1205,
- 1218, 1338,
- 1253, 1378,
- 1281, 721,
- 1351, 1437,
- 1371, 1466,
- 1377, 1471,
- 1413, 1497,
- 1432, 1509,
- 1436, 1512,
- 1491, 1009,
- 1607, 1294,
- 1637, 1497
+ 379, 541,
+ 537, 668,
+ 636, 817,
+ 713, 856,
+ 724, 872,
+ 769, 924,
+ 790, 953,
+ 792, 166,
+ 826, 856,
+ 861, 1046,
+ 873, 1071,
+ 925, 1156,
+ 977, 1210,
+ 989, 1046,
+ 1197, 541,
+ 1275, 1475,
+ 1300, 1494,
+ 1416, 668,
+ 1429, 1606,
+ 1431, 1475,
+ 1489, 1658,
+ 1534, 1710,
+ 1593, 817,
+ 1675, 1799,
+ 1697, 1831,
+ 1706, 1837,
+ 1711, 1841,
+ 1767, 1881,
+ 1790, 1894,
+ 1797, 1898,
+ 1800, 1901,
+ 1832, 1933,
+ 1838, 1938,
+ 1875, 1210,
+ 1895, 1984,
+ 1899, 1987,
+ 2043, 1606,
+ 2095, 1881
};
-static int parser_goto_row40[] = {
+static int parser_goto_row42[] = {
1,
-1, 66
};
-static int parser_goto_row41[] = {
+static int parser_goto_row43[] = {
8,
-1, 67,
- 711, 838,
- 744, 893,
- 848, 893,
- 900, 1063,
- 1017, 1063,
- 1206, 1330,
- 1297, 1330
+ 807, 974,
+ 857, 1040,
+ 984, 1040,
+ 1047, 1277,
+ 1218, 1277,
+ 1476, 1650,
+ 1609, 1650
};
-static int parser_goto_row42[] = {
+static int parser_goto_row44[] = {
7,
- -1, 309,
- 509, 621,
- 811, 984,
- 848, 984,
- 1017, 984,
- 1152, 1286,
- 1297, 984
+ -1, 327,
+ 542, 671,
+ 947, 1184,
+ 984, 1184,
+ 1218, 1184,
+ 1418, 1598,
+ 1609, 1184
};
-static int parser_goto_row43[] = {
+static int parser_goto_row45[] = {
5,
- -1, 227,
- 229, 403,
- 464, 403,
- 1008, 403,
- 1060, 403
+ -1, 236,
+ 238, 431,
+ 495, 431,
+ 1209, 431,
+ 1274, 431
};
-static int parser_goto_row44[] = {
+static int parser_goto_row46[] = {
25,
-1, 157,
11, 68,
97, 68,
102, 68,
105, 68,
- 158, 310,
- 228, 402,
- 404, 402,
- 463, 402,
- 509, 310,
- 581, 402,
- 585, 707,
- 711, 839,
- 744, 894,
- 811, 310,
- 848, 894,
- 900, 894,
- 1017, 894,
- 1059, 402,
- 1152, 310,
- 1204, 402,
- 1206, 894,
- 1280, 707,
- 1297, 894
+ 158, 328,
+ 237, 430,
+ 432, 430,
+ 494, 430,
+ 542, 328,
+ 629, 430,
+ 635, 803,
+ 807, 975,
+ 857, 1041,
+ 947, 328,
+ 984, 1041,
+ 1047, 1041,
+ 1218, 1041,
+ 1273, 430,
+ 1418, 328,
+ 1474, 430,
+ 1476, 1041,
+ 1592, 803,
+ 1609, 1041
};
-static int parser_goto_row45[] = {
- 20,
+static int parser_goto_row47[] = {
+ 24,
-1, 192,
42, 194,
- 159, 311,
- 167, 317,
- 699, 823,
- 700, 825,
- 722, 842,
- 745, 895,
- 814, 985,
- 820, 990,
- 850, 1013,
- 901, 1064,
- 1019, 1167,
- 1207, 1331,
- 1295, 1414,
- 1299, 1416,
- 1405, 1492,
- 1498, 1564,
- 1630, 1638,
- 1643, 1646
-};
-static int parser_goto_row46[] = {
- 11,
- -1, 478,
- 213, 376,
- 348, 499,
- 359, 499,
- 378, 522,
- 501, 522,
- 664, 788,
- 729, 847,
- 734, 847,
- 832, 376,
- 1290, 788
-};
-static int parser_goto_row47[] = {
- 1,
- -1, 377
+ 159, 329,
+ 167, 336,
+ 684, 840,
+ 685, 842,
+ 795, 959,
+ 796, 961,
+ 818, 978,
+ 858, 1042,
+ 950, 1185,
+ 956, 1191,
+ 986, 1214,
+ 1048, 1278,
+ 1110, 1349,
+ 1111, 1351,
+ 1220, 1433,
+ 1477, 1651,
+ 1607, 1768,
+ 1611, 1770,
+ 1759, 1876,
+ 1882, 1975,
+ 2085, 2096,
+ 2102, 2106
};
static int parser_goto_row48[] = {
- 7,
- -1, 378,
- 354, 501,
- 359, 501,
- 501, 501,
- 734, 501,
- 832, 501,
- 1290, 501
+ 11,
+ -1, 511,
+ 218, 404,
+ 367, 532,
+ 378, 532,
+ 406, 565,
+ 534, 565,
+ 751, 914,
+ 825, 983,
+ 830, 983,
+ 968, 404,
+ 1602, 914
};
static int parser_goto_row49[] = {
- 2,
- -1, 521,
- 500, 616
+ 1,
+ -1, 405
};
static int parser_goto_row50[] = {
7,
- -1, 897,
- 902, 1065,
- 1020, 1065,
- 1208, 1332,
- 1224, 1343,
- 1300, 1332,
- 1339, 1428
+ -1, 406,
+ 373, 534,
+ 378, 534,
+ 534, 534,
+ 830, 534,
+ 968, 534,
+ 1602, 534
};
static int parser_goto_row51[] = {
- 1,
- -1, 69
+ 2,
+ -1, 564,
+ 533, 666
};
static int parser_goto_row52[] = {
- 1,
- -1, 70
+ 7,
+ -1, 1044,
+ 1049, 1279,
+ 1221, 1279,
+ 1478, 1652,
+ 1495, 1663,
+ 1612, 1652,
+ 1659, 1785
};
static int parser_goto_row53[] = {
- 10,
- -1, 217,
- 212, 374,
- 232, 408,
- 536, 666,
- 663, 787,
- 706, 834,
- 831, 999,
- 836, 1005,
- 1159, 1292,
- 1289, 1409
+ 7,
+ -1, 69,
+ 550, 691,
+ 900, 1118,
+ 918, 1118,
+ 1005, 691,
+ 1114, 691,
+ 1145, 691
};
static int parser_goto_row54[] = {
- 1,
- -1, 71
+ 5,
+ -1, 70,
+ 550, 692,
+ 1005, 692,
+ 1114, 692,
+ 1145, 692
};
static int parser_goto_row55[] = {
- 1,
- -1, 72
+ 15,
+ -1, 222,
+ 217, 402,
+ 241, 436,
+ 579, 753,
+ 750, 913,
+ 802, 970,
+ 967, 1200,
+ 972, 1206,
+ 1116, 1357,
+ 1355, 1555,
+ 1360, 1560,
+ 1425, 1604,
+ 1601, 1763,
+ 1737, 1868,
+ 1866, 1967
};
static int parser_goto_row56[] = {
- 3,
- -1, 708,
- 711, 840,
- 838, 1007
+ 7,
+ -1, 71,
+ 550, 693,
+ 900, 1119,
+ 918, 1119,
+ 1005, 693,
+ 1114, 693,
+ 1145, 693
};
static int parser_goto_row57[] = {
1,
- -1, 73
+ -1, 72
};
static int parser_goto_row58[] = {
- 1,
- -1, 74
+ 3,
+ -1, 804,
+ 807, 976,
+ 974, 1208
};
static int parser_goto_row59[] = {
- 1,
- -1, 75
+ 7,
+ -1, 73,
+ 550, 694,
+ 900, 1120,
+ 918, 1120,
+ 1005, 694,
+ 1114, 694,
+ 1145, 694
};
static int parser_goto_row60[] = {
- 1,
- -1, 76
+ 7,
+ -1, 74,
+ 550, 695,
+ 900, 1121,
+ 918, 1121,
+ 1005, 695,
+ 1114, 695,
+ 1145, 695
};
static int parser_goto_row61[] = {
+ 7,
+ -1, 75,
+ 550, 696,
+ 900, 1122,
+ 918, 1122,
+ 1005, 696,
+ 1114, 696,
+ 1145, 696
+};
+static int parser_goto_row62[] = {
+ 7,
+ -1, 76,
+ 550, 697,
+ 900, 1123,
+ 918, 1123,
+ 1005, 697,
+ 1114, 697,
+ 1145, 697
+};
+static int parser_goto_row63[] = {
2,
-1, 197,
- 702, 827
+ 798, 963
};
-static int parser_goto_row62[] = {
- 45,
- -1, 898,
+static int parser_goto_row64[] = {
+ 71,
+ -1, 1045,
40, 180,
41, 193,
42, 195,
44, 198,
- 192, 351,
- 194, 352,
- 197, 356,
- 214, 379,
- 217, 380,
- 373, 517,
- 374, 518,
- 407, 537,
- 408, 538,
- 466, 583,
- 513, 625,
- 584, 688,
- 665, 789,
- 666, 790,
- 698, 180,
- 699, 193,
- 700, 195,
- 702, 198,
- 762, 927,
- 786, 959,
- 787, 960,
- 797, 927,
- 823, 351,
- 825, 352,
- 827, 356,
- 833, 379,
- 834, 380,
- 998, 517,
- 999, 518,
- 1004, 537,
- 1005, 538,
- 1144, 583,
- 1154, 625,
- 1279, 688,
- 1291, 789,
- 1292, 790,
- 1408, 959,
- 1409, 960,
- 1468, 927,
- 1511, 927
+ 192, 370,
+ 194, 371,
+ 197, 375,
+ 219, 407,
+ 222, 408,
+ 401, 560,
+ 402, 561,
+ 435, 580,
+ 436, 581,
+ 497, 631,
+ 555, 707,
+ 632, 782,
+ 633, 783,
+ 683, 839,
+ 684, 841,
+ 685, 843,
+ 752, 915,
+ 753, 916,
+ 784, 944,
+ 794, 180,
+ 795, 193,
+ 796, 195,
+ 798, 198,
+ 840, 1000,
+ 842, 1001,
+ 879, 1077,
+ 912, 1143,
+ 913, 1144,
+ 927, 1077,
+ 959, 370,
+ 961, 371,
+ 963, 375,
+ 969, 407,
+ 970, 408,
+ 1109, 1348,
+ 1110, 1350,
+ 1111, 1352,
+ 1199, 560,
+ 1200, 561,
+ 1205, 580,
+ 1206, 581,
+ 1226, 1438,
+ 1349, 1550,
+ 1351, 1551,
+ 1356, 1556,
+ 1357, 1557,
+ 1408, 631,
+ 1420, 707,
+ 1554, 1734,
+ 1555, 1735,
+ 1559, 1738,
+ 1560, 1739,
+ 1589, 782,
+ 1590, 783,
+ 1603, 915,
+ 1604, 916,
+ 1731, 1864,
+ 1756, 944,
+ 1762, 1143,
+ 1763, 1144,
+ 1834, 1077,
+ 1867, 1968,
+ 1868, 1969,
+ 1897, 1077,
+ 1966, 2040,
+ 1967, 2041
};
-static int parser_goto_row63[] = {
+static int parser_goto_row65[] = {
74,
-1, 181,
44, 199,
- 52, 207,
- 164, 315,
- 165, 316,
+ 52, 212,
+ 164, 334,
+ 165, 335,
197, 199,
- 209, 369,
- 239, 412,
- 274, 430,
- 282, 437,
- 321, 472,
- 405, 437,
- 409, 539,
- 429, 437,
- 698, 199,
- 699, 199,
- 700, 199,
- 702, 199,
- 724, 844,
- 740, 862,
- 791, 961,
- 816, 988,
- 818, 989,
- 823, 199,
- 825, 199,
- 827, 199,
- 833, 199,
- 834, 199,
- 846, 1012,
- 852, 199,
- 874, 1035,
- 998, 199,
- 999, 199,
- 1004, 199,
- 1005, 199,
- 1010, 1162,
- 1020, 199,
- 1027, 1171,
- 1144, 199,
- 1154, 199,
- 1279, 199,
- 1291, 199,
- 1292, 199,
- 1300, 199,
- 1381, 1474,
- 1386, 1478,
- 1407, 1494,
+ 214, 397,
+ 248, 441,
+ 284, 461,
+ 296, 468,
+ 340, 505,
+ 433, 468,
+ 437, 582,
+ 460, 468,
+ 550, 698,
+ 794, 199,
+ 795, 199,
+ 796, 199,
+ 798, 199,
+ 820, 980,
+ 853, 1009,
+ 920, 1149,
+ 952, 1189,
+ 954, 1190,
+ 959, 199,
+ 961, 199,
+ 963, 199,
+ 969, 199,
+ 970, 199,
+ 982, 1213,
+ 988, 199,
+ 1005, 698,
+ 1021, 1245,
+ 1114, 698,
+ 1145, 698,
+ 1199, 199,
+ 1200, 199,
+ 1205, 199,
+ 1206, 199,
+ 1211, 1428,
+ 1221, 199,
+ 1233, 1441,
1408, 199,
- 1409, 199,
- 1415, 1499,
- 1438, 1514,
- 1442, 1518,
- 1457, 1534,
- 1461, 1538,
- 1475, 1548,
- 1476, 1549,
- 1479, 1551,
- 1500, 1565,
- 1515, 1575,
- 1516, 1576,
- 1519, 1578,
- 1528, 1586,
- 1532, 1590,
- 1535, 1592,
- 1536, 1593,
- 1539, 1595,
- 1550, 1601,
- 1562, 1606,
- 1577, 1615,
- 1587, 1620,
- 1588, 1621,
- 1591, 1623,
- 1594, 1624,
- 1622, 1636
+ 1420, 199,
+ 1589, 199,
+ 1590, 199,
+ 1603, 199,
+ 1604, 199,
+ 1612, 199,
+ 1721, 1854,
+ 1756, 199,
+ 1761, 1878,
+ 1762, 199,
+ 1763, 199,
+ 1769, 1883,
+ 1807, 1907,
+ 1822, 1923,
+ 1826, 1927,
+ 1855, 1958,
+ 1884, 1976,
+ 1908, 1993,
+ 1917, 2001,
+ 1921, 2005,
+ 1924, 2007,
+ 1925, 2008,
+ 1928, 2010,
+ 1940, 2018,
+ 1973, 2042,
+ 2002, 2060,
+ 2003, 2061,
+ 2006, 2063,
+ 2009, 2064,
+ 2062, 2092,
+ 2100, 2105
};
-static int parser_goto_row64[] = {
+static int parser_goto_row66[] = {
1,
-1, 182
};
-static int parser_goto_row65[] = {
+static int parser_goto_row67[] = {
5,
-1, 183,
- 322, 473,
- 479, 594,
- 481, 596,
- 595, 728
+ 341, 506,
+ 512, 644,
+ 514, 646,
+ 645, 824
};
-static int parser_goto_row66[] = {
+static int parser_goto_row68[] = {
1,
-1, 184
};
-static int parser_goto_row67[] = {
- 11,
+static int parser_goto_row69[] = {
+ 33,
-1, 185,
- 482, 597,
- 483, 598,
- 484, 599,
- 488, 603,
- 489, 604,
- 490, 605,
- 491, 606,
- 492, 607,
- 493, 608,
- 494, 609
+ 515, 647,
+ 516, 648,
+ 517, 649,
+ 521, 653,
+ 522, 654,
+ 523, 655,
+ 524, 656,
+ 525, 657,
+ 526, 658,
+ 527, 659,
+ 1714, 1845,
+ 1801, 1845,
+ 1850, 1845,
+ 1851, 1845,
+ 1903, 1845,
+ 1904, 1845,
+ 1941, 1845,
+ 1957, 1845,
+ 1992, 1845,
+ 2021, 2069,
+ 2022, 2070,
+ 2023, 2071,
+ 2024, 2072,
+ 2025, 2073,
+ 2026, 2074,
+ 2027, 2075,
+ 2028, 1845,
+ 2030, 1845,
+ 2031, 2079,
+ 2032, 2080,
+ 2077, 1845,
+ 2110, 1845
};
-static int parser_goto_row68[] = {
+static int parser_goto_row70[] = {
3,
-1, 186,
- 486, 601,
- 487, 602
+ 519, 651,
+ 520, 652
};
-static int parser_goto_row69[] = {
+static int parser_goto_row71[] = {
6,
-1, 187,
- 324, 475,
- 327, 477,
- 495, 610,
- 496, 611,
- 497, 612
+ 343, 508,
+ 346, 510,
+ 528, 660,
+ 529, 661,
+ 530, 662
};
-static int parser_goto_row70[] = {
+static int parser_goto_row72[] = {
1,
-1, 188
};
-static int parser_goto_row71[] = {
- 111,
- -1, 208,
+static int parser_goto_row73[] = {
+ 149,
+ -1, 213,
11, 77,
22, 77,
30, 77,
102, 77,
105, 77,
158, 77,
- 176, 326,
+ 176, 345,
192, 189,
194, 189,
197, 200,
- 214, 189,
- 217, 189,
- 228, 77,
- 360, 77,
- 373, 189,
- 374, 189,
- 404, 77,
- 407, 189,
- 408, 189,
- 463, 77,
- 466, 189,
- 504, 77,
- 509, 77,
- 513, 189,
- 581, 77,
- 584, 189,
- 585, 709,
- 586, 77,
- 631, 77,
- 641, 77,
- 665, 189,
- 666, 189,
- 678, 77,
- 691, 709,
- 694, 77,
- 696, 709,
- 698, 200,
- 699, 200,
- 700, 200,
- 702, 200,
- 711, 77,
- 730, 709,
- 744, 77,
- 747, 189,
- 748, 77,
- 762, 189,
- 786, 189,
- 787, 189,
- 797, 189,
- 811, 77,
- 823, 200,
- 825, 200,
- 827, 200,
- 833, 200,
- 834, 200,
- 841, 77,
- 848, 77,
- 852, 200,
- 853, 709,
- 900, 77,
- 902, 189,
- 996, 709,
- 998, 200,
- 999, 200,
- 1004, 200,
- 1005, 200,
- 1017, 77,
- 1020, 200,
- 1059, 77,
- 1061, 77,
- 1084, 77,
- 1144, 200,
- 1150, 709,
- 1152, 77,
- 1154, 200,
- 1163, 77,
- 1165, 709,
- 1204, 77,
- 1206, 77,
- 1208, 189,
+ 219, 189,
+ 222, 189,
+ 237, 77,
+ 379, 77,
+ 401, 189,
+ 402, 189,
+ 432, 77,
+ 435, 189,
+ 436, 189,
+ 494, 77,
+ 497, 189,
+ 537, 77,
+ 542, 77,
+ 550, 699,
+ 555, 189,
+ 629, 77,
+ 632, 189,
+ 633, 189,
+ 635, 805,
+ 636, 77,
+ 683, 189,
+ 684, 189,
+ 685, 189,
+ 713, 77,
+ 724, 77,
+ 752, 189,
+ 753, 189,
+ 769, 77,
+ 784, 189,
+ 787, 805,
+ 790, 77,
+ 792, 805,
+ 794, 200,
+ 795, 200,
+ 796, 200,
+ 798, 200,
+ 807, 77,
+ 826, 805,
+ 840, 189,
+ 842, 189,
+ 857, 77,
+ 860, 189,
+ 861, 77,
+ 873, 77,
+ 879, 189,
+ 912, 189,
+ 913, 189,
+ 925, 77,
+ 927, 189,
+ 947, 77,
+ 959, 200,
+ 961, 200,
+ 963, 200,
+ 969, 200,
+ 970, 200,
+ 977, 77,
+ 984, 77,
+ 988, 200,
+ 989, 805,
+ 1005, 699,
+ 1047, 77,
+ 1049, 189,
+ 1109, 189,
+ 1110, 189,
+ 1111, 189,
+ 1114, 699,
+ 1145, 699,
+ 1197, 805,
+ 1199, 200,
+ 1200, 200,
+ 1205, 200,
+ 1206, 200,
1218, 77,
- 1224, 189,
- 1253, 77,
- 1279, 200,
- 1280, 709,
- 1281, 709,
- 1291, 200,
- 1292, 200,
- 1297, 77,
- 1300, 200,
- 1339, 189,
- 1351, 77,
- 1371, 77,
- 1377, 77,
+ 1221, 200,
+ 1226, 189,
+ 1273, 77,
+ 1275, 77,
+ 1300, 77,
+ 1349, 189,
+ 1351, 189,
+ 1356, 189,
+ 1357, 189,
1408, 200,
- 1409, 200,
- 1413, 77,
- 1432, 77,
- 1436, 77,
- 1468, 189,
- 1491, 709,
- 1511, 189,
- 1607, 709,
- 1637, 709
+ 1416, 805,
+ 1418, 77,
+ 1420, 200,
+ 1429, 77,
+ 1431, 805,
+ 1474, 77,
+ 1476, 77,
+ 1478, 189,
+ 1489, 77,
+ 1495, 189,
+ 1534, 77,
+ 1554, 189,
+ 1555, 189,
+ 1559, 189,
+ 1560, 189,
+ 1589, 200,
+ 1590, 200,
+ 1592, 805,
+ 1593, 805,
+ 1603, 200,
+ 1604, 200,
+ 1609, 77,
+ 1612, 200,
+ 1659, 189,
+ 1675, 77,
+ 1697, 77,
+ 1706, 77,
+ 1711, 77,
+ 1731, 189,
+ 1756, 200,
+ 1762, 200,
+ 1763, 200,
+ 1767, 77,
+ 1790, 77,
+ 1797, 77,
+ 1800, 77,
+ 1832, 77,
+ 1834, 189,
+ 1838, 77,
+ 1867, 189,
+ 1868, 189,
+ 1875, 805,
+ 1895, 77,
+ 1897, 189,
+ 1899, 77,
+ 1966, 189,
+ 1967, 189,
+ 2043, 805,
+ 2095, 805
};
-static int parser_goto_row72[] = {
- 60,
+static int parser_goto_row74[] = {
+ 62,
-1, 78,
28, 141,
46, 141,
55, 141,
132, 141,
- 240, 141,
- 275, 141,
- 277, 141,
- 283, 141,
- 441, 141,
- 443, 141,
- 444, 141,
- 445, 141,
- 446, 141,
- 448, 141,
- 449, 141,
- 450, 141,
- 451, 141,
- 452, 141,
- 453, 141,
- 454, 141,
- 455, 141,
- 456, 141,
- 457, 141,
- 458, 141,
- 459, 141,
- 533, 141,
- 535, 141,
- 555, 141,
- 690, 141,
- 703, 141,
- 705, 141,
- 741, 882,
- 837, 141,
- 873, 882,
- 1028, 882,
- 1030, 882,
- 1036, 882,
- 1157, 141,
- 1158, 141,
- 1184, 882,
- 1186, 882,
- 1187, 882,
- 1188, 882,
- 1189, 882,
- 1191, 882,
- 1192, 882,
- 1193, 882,
- 1194, 882,
- 1195, 882,
- 1196, 882,
- 1197, 882,
- 1198, 882,
- 1199, 882,
- 1200, 882,
- 1201, 882,
- 1202, 882,
- 1308, 882,
- 1398, 141,
- 1639, 882
+ 250, 141,
+ 285, 141,
+ 287, 141,
+ 297, 141,
+ 472, 141,
+ 474, 141,
+ 475, 141,
+ 476, 141,
+ 477, 141,
+ 479, 141,
+ 480, 141,
+ 481, 141,
+ 482, 141,
+ 483, 141,
+ 484, 141,
+ 485, 141,
+ 486, 141,
+ 487, 141,
+ 488, 141,
+ 489, 141,
+ 490, 141,
+ 576, 141,
+ 578, 141,
+ 603, 141,
+ 786, 141,
+ 799, 141,
+ 801, 141,
+ 854, 1029,
+ 900, 141,
+ 918, 141,
+ 973, 141,
+ 1020, 1029,
+ 1234, 1029,
+ 1236, 1029,
+ 1246, 1029,
+ 1423, 141,
+ 1424, 141,
+ 1454, 1029,
+ 1456, 1029,
+ 1457, 1029,
+ 1458, 1029,
+ 1459, 1029,
+ 1461, 1029,
+ 1462, 1029,
+ 1463, 1029,
+ 1464, 1029,
+ 1465, 1029,
+ 1466, 1029,
+ 1467, 1029,
+ 1468, 1029,
+ 1469, 1029,
+ 1470, 1029,
+ 1471, 1029,
+ 1472, 1029,
+ 1626, 1029,
+ 1745, 141,
+ 2097, 1029
};
-static int parser_goto_row73[] = {
+static int parser_goto_row75[] = {
1,
-1, 79
};
-static int parser_goto_row74[] = {
+static int parser_goto_row76[] = {
1,
-1, 80
};
-static int parser_goto_row75[] = {
+static int parser_goto_row77[] = {
2,
- -1, 235,
- 238, 410
+ -1, 244,
+ 247, 439
};
-static int parser_goto_row76[] = {
+static int parser_goto_row78[] = {
1,
- -1, 236
+ -1, 245
};
-static int parser_goto_row77[] = {
+static int parser_goto_row79[] = {
2,
- -1, 237,
- 238, 411
+ -1, 246,
+ 247, 440
};
-static int parser_goto_row78[] = {
- 39,
+static int parser_goto_row80[] = {
+ 50,
+ -1, 700,
+ 47, 206,
+ 48, 207,
+ 49, 208,
+ 50, 209,
+ 57, 223,
+ 58, 224,
+ 59, 225,
+ 61, 226,
+ 81, 249,
+ 128, 289,
+ 129, 290,
+ 130, 291,
+ 131, 292,
+ 137, 299,
+ 138, 300,
+ 139, 301,
+ 140, 302,
+ 160, 333,
+ 246, 438,
+ 389, 551,
+ 391, 554,
+ 394, 556,
+ 440, 583,
+ 552, 705,
+ 688, 554,
+ 846, 1004,
+ 865, 1053,
+ 900, 1124,
+ 918, 1146,
+ 951, 1188,
+ 1016, 1238,
+ 1017, 1239,
+ 1018, 1240,
+ 1019, 1241,
+ 1025, 1248,
+ 1026, 1249,
+ 1027, 1250,
+ 1028, 1251,
+ 1060, 554,
+ 1078, 1304,
+ 1230, 1440,
+ 1439, 1614,
+ 1449, 1622,
+ 1452, 1623,
+ 1453, 1624,
+ 1553, 1732,
+ 1567, 1743,
+ 1632, 1778,
+ 1777, 1886
+};
+static int parser_goto_row81[] = {
+ 3,
+ -1, 548,
+ 205, 388,
+ 837, 999
+};
+static int parser_goto_row82[] = {
+ 3,
+ -1, 870,
+ 456, 589,
+ 1533, 1708
+};
+static int parser_goto_row83[] = {
+ 3,
+ -1, 590,
+ 386, 549,
+ 675, 834
+};
+static int parser_goto_row84[] = {
+ 3,
+ -1, 756,
+ 871, 1069,
+ 1709, 1839
+};
+static int parser_goto_row85[] = {
+ 2,
+ -1, 757,
+ 759, 919
+};
+static int parser_goto_row86[] = {
+ 2,
+ -1, 680,
+ 681, 838
+};
+static int parser_goto_row87[] = {
+ 3,
+ -1, 701,
+ 1114, 1354,
+ 1145, 1373
+};
+static int parser_goto_row88[] = {
+ 3,
+ -1, 848,
+ 849, 1006,
+ 1362, 1006
+};
+static int parser_goto_row89[] = {
+ 2,
+ -1, 702,
+ 1005, 1228
+};
+static int parser_goto_row90[] = {
+ 3,
+ -1, 389,
+ 545, 676,
+ 758, 918
+};
+static int parser_goto_row91[] = {
+ 43,
-1, 142,
46, 203,
- 55, 212,
- 122, 273,
- 127, 278,
- 135, 284,
+ 55, 217,
+ 122, 283,
+ 127, 288,
+ 135, 298,
175, 203,
- 178, 328,
- 196, 354,
- 206, 365,
- 240, 413,
- 285, 440,
- 349, 413,
- 355, 354,
- 432, 549,
- 474, 592,
- 533, 660,
- 535, 663,
- 573, 674,
- 575, 676,
- 613, 660,
- 614, 729,
- 619, 734,
- 626, 739,
- 703, 203,
- 705, 831,
- 738, 861,
- 792, 962,
- 837, 413,
- 863, 1026,
- 868, 1031,
- 876, 1037,
- 1038, 1181,
- 1157, 660,
- 1158, 1289,
- 1175, 1304,
- 1326, 1422,
- 1328, 1424,
- 1501, 1566
+ 178, 347,
+ 196, 373,
+ 211, 393,
+ 250, 442,
+ 303, 471,
+ 368, 442,
+ 374, 373,
+ 463, 597,
+ 507, 642,
+ 576, 747,
+ 578, 750,
+ 621, 765,
+ 623, 767,
+ 663, 747,
+ 664, 825,
+ 669, 830,
+ 689, 217,
+ 708, 852,
+ 799, 203,
+ 801, 967,
+ 836, 998,
+ 921, 1150,
+ 973, 442,
+ 1010, 1232,
+ 1015, 1237,
+ 1023, 1247,
+ 1115, 1355,
+ 1227, 750,
+ 1252, 1451,
+ 1423, 747,
+ 1424, 1601,
+ 1445, 1619,
+ 1646, 1779,
+ 1648, 1781,
+ 1736, 1866,
+ 1885, 1977
};
-static int parser_goto_row79[] = {
+static int parser_goto_row92[] = {
12,
-1, 143,
46, 204,
- 55, 213,
- 240, 414,
- 533, 661,
- 535, 664,
- 690, 809,
- 703, 829,
- 705, 832,
- 837, 1006,
- 1157, 1288,
- 1158, 1290
+ 55, 218,
+ 250, 443,
+ 576, 748,
+ 578, 751,
+ 786, 945,
+ 799, 965,
+ 801, 968,
+ 973, 1207,
+ 1423, 1600,
+ 1424, 1602
};
-static int parser_goto_row80[] = {
- 9,
+static int parser_goto_row93[] = {
+ 11,
-1, 81,
- 77, 232,
- 153, 305,
- 189, 348,
- 200, 359,
- 208, 368,
- 281, 305,
- 326, 368,
- 709, 836
+ 77, 241,
+ 153, 323,
+ 189, 367,
+ 200, 378,
+ 213, 396,
+ 295, 323,
+ 345, 396,
+ 699, 241,
+ 805, 972,
+ 1128, 1360
};
-static int parser_goto_row81[] = {
+static int parser_goto_row94[] = {
3,
- -1, 370,
- 282, 438,
- 429, 546
+ -1, 398,
+ 296, 469,
+ 460, 594
};
-static int parser_goto_row82[] = {
+static int parser_goto_row95[] = {
2,
- -1, 629,
- 630, 742
+ -1, 711,
+ 712, 855
};
-static int parser_goto_row83[] = {
+static int parser_goto_row96[] = {
8,
- -1, 320,
- 318, 470,
- 521, 634,
- 616, 733,
- 632, 746,
- 731, 851,
- 821, 992,
- 991, 1148
+ -1, 339,
+ 337, 503,
+ 564, 716,
+ 666, 829,
+ 714, 859,
+ 827, 987,
+ 957, 1193,
+ 1192, 1414
};
-static int parser_goto_row84[] = {
+static int parser_goto_row97[] = {
2,
- -1, 270,
- 381, 524
+ -1, 280,
+ 409, 567
};
-static int parser_goto_row85[] = {
- 117,
+static int parser_goto_row98[] = {
+ 127,
-1, 190,
11, 82,
22, 82,
105, 82,
132, 144,
158, 82,
- 228, 82,
- 240, 144,
- 275, 144,
- 277, 144,
- 283, 144,
- 360, 82,
- 404, 82,
- 441, 144,
- 443, 144,
- 444, 144,
- 445, 144,
- 446, 144,
- 448, 144,
- 449, 144,
- 450, 144,
- 451, 144,
- 452, 144,
- 453, 144,
- 454, 144,
- 455, 144,
- 456, 144,
- 457, 144,
- 458, 144,
- 459, 144,
- 463, 82,
- 504, 82,
- 509, 82,
- 533, 144,
- 535, 144,
- 555, 144,
- 581, 82,
- 585, 710,
- 586, 82,
- 631, 82,
- 641, 82,
- 678, 82,
- 690, 144,
- 691, 710,
- 694, 82,
- 696, 710,
- 703, 144,
- 705, 144,
- 711, 82,
- 730, 710,
- 741, 883,
- 744, 82,
- 748, 82,
- 811, 82,
- 837, 144,
- 841, 82,
- 848, 82,
- 853, 710,
- 873, 883,
- 900, 82,
- 996, 710,
- 1017, 82,
- 1028, 883,
- 1030, 883,
- 1036, 883,
- 1059, 82,
- 1061, 82,
- 1084, 82,
- 1150, 710,
- 1152, 82,
- 1157, 144,
- 1158, 144,
- 1163, 82,
- 1165, 710,
- 1184, 883,
- 1186, 883,
- 1187, 883,
- 1188, 883,
- 1189, 883,
- 1191, 883,
- 1192, 883,
- 1193, 883,
- 1194, 883,
- 1195, 883,
- 1196, 883,
- 1197, 883,
- 1198, 883,
- 1199, 883,
- 1200, 883,
- 1201, 883,
- 1202, 883,
- 1204, 82,
- 1206, 82,
+ 237, 82,
+ 250, 144,
+ 285, 144,
+ 287, 144,
+ 297, 144,
+ 379, 82,
+ 432, 82,
+ 472, 144,
+ 474, 144,
+ 475, 144,
+ 476, 144,
+ 477, 144,
+ 479, 144,
+ 480, 144,
+ 481, 144,
+ 482, 144,
+ 483, 144,
+ 484, 144,
+ 485, 144,
+ 486, 144,
+ 487, 144,
+ 488, 144,
+ 489, 144,
+ 490, 144,
+ 494, 82,
+ 537, 82,
+ 542, 82,
+ 576, 144,
+ 578, 144,
+ 603, 144,
+ 629, 82,
+ 635, 806,
+ 636, 82,
+ 713, 82,
+ 724, 82,
+ 769, 82,
+ 786, 144,
+ 787, 806,
+ 790, 82,
+ 792, 806,
+ 799, 144,
+ 801, 144,
+ 807, 82,
+ 826, 806,
+ 854, 1030,
+ 857, 82,
+ 861, 82,
+ 873, 82,
+ 900, 144,
+ 918, 144,
+ 925, 82,
+ 947, 82,
+ 973, 144,
+ 977, 82,
+ 984, 82,
+ 989, 806,
+ 1020, 1030,
+ 1047, 82,
+ 1197, 806,
1218, 82,
- 1253, 82,
- 1280, 710,
- 1281, 710,
- 1297, 82,
- 1308, 883,
- 1351, 82,
- 1371, 82,
- 1377, 82,
- 1398, 144,
- 1413, 82,
- 1432, 82,
- 1436, 82,
- 1491, 710,
- 1607, 710,
- 1637, 710,
- 1639, 883
+ 1234, 1030,
+ 1236, 1030,
+ 1246, 1030,
+ 1273, 82,
+ 1275, 82,
+ 1300, 82,
+ 1416, 806,
+ 1418, 82,
+ 1423, 144,
+ 1424, 144,
+ 1429, 82,
+ 1431, 806,
+ 1454, 1030,
+ 1456, 1030,
+ 1457, 1030,
+ 1458, 1030,
+ 1459, 1030,
+ 1461, 1030,
+ 1462, 1030,
+ 1463, 1030,
+ 1464, 1030,
+ 1465, 1030,
+ 1466, 1030,
+ 1467, 1030,
+ 1468, 1030,
+ 1469, 1030,
+ 1470, 1030,
+ 1471, 1030,
+ 1472, 1030,
+ 1474, 82,
+ 1476, 82,
+ 1489, 82,
+ 1534, 82,
+ 1592, 806,
+ 1593, 806,
+ 1609, 82,
+ 1626, 1030,
+ 1675, 82,
+ 1697, 82,
+ 1706, 82,
+ 1711, 82,
+ 1745, 144,
+ 1767, 82,
+ 1790, 82,
+ 1797, 82,
+ 1800, 82,
+ 1832, 82,
+ 1838, 82,
+ 1875, 806,
+ 1895, 82,
+ 1899, 82,
+ 2043, 806,
+ 2095, 806,
+ 2097, 1030
};
-static int parser_goto_row86[] = {
+static int parser_goto_row99[] = {
4,
-1, 83,
- 85, 242,
- 271, 242,
- 544, 242
+ 85, 252,
+ 281, 252,
+ 588, 252
};
-static int parser_goto_row87[] = {
+static int parser_goto_row100[] = {
2,
-1, 84,
- 85, 243
+ 85, 253
};
-static int parser_goto_row88[] = {
- 5,
- -1, 89,
- 270, 427,
- 523, 635,
- 524, 636,
- 655, 768
+static int parser_goto_row101[] = {
+ 20,
+ -1, 871,
+ 14, 89,
+ 280, 458,
+ 456, 591,
+ 457, 592,
+ 566, 717,
+ 567, 719,
+ 718, 863,
+ 740, 886,
+ 900, 1125,
+ 918, 1147,
+ 1124, 1358,
+ 1129, 1361,
+ 1146, 1374,
+ 1148, 1375,
+ 1533, 1709,
+ 1553, 1733,
+ 1567, 1744,
+ 1732, 1865,
+ 1743, 1870
};
-static int parser_goto_row89[] = {
- 82,
+static int parser_goto_row102[] = {
+ 90,
-1, 120,
0, 10,
4, 10,
26, 10,
30, 158,
37, 158,
- 68, 228,
+ 68, 237,
92, 10,
93, 10,
94, 10,
115, 10,
116, 10,
118, 10,
- 229, 404,
- 246, 10,
- 247, 10,
- 249, 10,
- 253, 10,
+ 238, 432,
+ 256, 10,
+ 257, 10,
259, 10,
- 260, 10,
- 262, 10,
- 265, 10,
- 310, 463,
- 360, 509,
- 416, 10,
- 422, 10,
- 464, 581,
- 504, 509,
- 585, 711,
- 586, 158,
- 631, 744,
- 641, 509,
- 678, 509,
- 691, 811,
- 694, 509,
- 696, 811,
- 730, 848,
- 748, 900,
- 839, 228,
- 841, 509,
- 853, 1017,
- 894, 1059,
- 924, 1086,
- 996, 1152,
- 1008, 404,
- 1060, 1204,
- 1061, 1206,
- 1082, 1220,
- 1084, 509,
- 1150, 1152,
- 1163, 158,
- 1165, 1297,
- 1218, 509,
- 1223, 1342,
- 1253, 509,
- 1280, 711,
- 1281, 811,
- 1338, 1427,
- 1343, 1430,
- 1351, 509,
- 1371, 509,
- 1377, 509,
- 1413, 158,
- 1428, 1505,
- 1432, 509,
- 1436, 509,
- 1491, 1152,
- 1607, 811,
- 1637, 811
+ 263, 10,
+ 269, 10,
+ 270, 10,
+ 272, 10,
+ 275, 10,
+ 328, 494,
+ 379, 542,
+ 445, 10,
+ 451, 10,
+ 495, 629,
+ 537, 542,
+ 635, 807,
+ 636, 158,
+ 713, 857,
+ 724, 542,
+ 769, 542,
+ 787, 947,
+ 790, 542,
+ 792, 947,
+ 826, 984,
+ 861, 1047,
+ 873, 542,
+ 925, 542,
+ 975, 237,
+ 977, 542,
+ 989, 1218,
+ 1041, 1273,
+ 1074, 1302,
+ 1197, 1418,
+ 1209, 432,
+ 1274, 1474,
+ 1275, 1476,
+ 1298, 1491,
+ 1300, 542,
+ 1416, 1418,
+ 1429, 158,
+ 1431, 1609,
+ 1489, 542,
+ 1494, 1662,
+ 1534, 542,
+ 1592, 807,
+ 1593, 947,
+ 1658, 1784,
+ 1663, 1787,
+ 1675, 542,
+ 1697, 542,
+ 1706, 542,
+ 1711, 542,
+ 1767, 158,
+ 1785, 1890,
+ 1790, 542,
+ 1797, 542,
+ 1800, 542,
+ 1832, 542,
+ 1838, 542,
+ 1875, 1418,
+ 1895, 542,
+ 1899, 542,
+ 2043, 947,
+ 2095, 947
};
-static int parser_goto_row90[] = {
- 302,
+static int parser_goto_row103[] = {
+ 369,
-1, 105,
0, 11,
- 4, 22,
- 15, 22,
- 16, 97,
- 17, 102,
- 23, 22,
- 24, 97,
- 25, 102,
- 27, 121,
- 32, 161,
- 33, 162,
- 34, 163,
- 35, 164,
- 36, 165,
- 38, 168,
- 45, 202,
- 53, 209,
- 80, 239,
- 92, 97,
- 93, 102,
- 98, 102,
- 111, 97,
- 112, 102,
- 115, 102,
- 123, 274,
- 124, 275,
- 125, 276,
- 126, 277,
- 133, 282,
- 134, 283,
- 171, 321,
- 172, 322,
- 173, 323,
- 174, 324,
- 177, 327,
- 210, 371,
- 211, 372,
- 218, 381,
- 225, 401,
- 230, 405,
- 231, 406,
- 236, 409,
- 246, 102,
- 259, 102,
- 268, 426,
- 272, 429,
- 279, 434,
- 286, 441,
- 287, 443,
- 288, 444,
- 289, 445,
- 290, 446,
- 291, 447,
- 292, 448,
- 293, 449,
- 294, 450,
- 295, 451,
- 296, 452,
- 297, 453,
- 298, 454,
- 299, 455,
- 300, 456,
- 301, 457,
- 302, 458,
- 303, 459,
- 304, 460,
- 307, 462,
- 312, 465,
- 313, 466,
- 315, 468,
- 316, 469,
- 320, 471,
- 329, 479,
- 330, 481,
- 331, 482,
- 332, 483,
- 333, 484,
- 334, 485,
- 335, 486,
- 336, 487,
- 337, 488,
- 338, 489,
- 339, 490,
- 340, 491,
- 341, 492,
- 342, 493,
- 343, 494,
- 344, 495,
- 345, 496,
- 346, 497,
- 347, 498,
- 358, 505,
- 367, 514,
- 369, 515,
- 399, 530,
- 412, 540,
- 430, 547,
- 435, 551,
- 437, 552,
- 442, 555,
- 461, 530,
- 467, 584,
- 470, 588,
- 472, 591,
- 476, 593,
- 480, 595,
- 511, 623,
- 512, 624,
- 527, 638,
- 529, 644,
- 532, 657,
- 534, 662,
- 539, 667,
- 548, 671,
- 574, 675,
- 579, 684,
- 587, 723,
- 589, 724,
- 590, 725,
- 622, 735,
- 627, 740,
- 628, 741,
- 633, 747,
- 634, 588,
- 639, 754,
- 650, 762,
- 651, 763,
- 652, 765,
- 656, 769,
- 658, 781,
- 659, 784,
- 670, 791,
- 681, 797,
- 682, 799,
- 683, 802,
- 685, 806,
- 686, 808,
- 693, 816,
- 695, 818,
- 697, 821,
- 726, 846,
- 732, 852,
- 733, 588,
- 737, 860,
- 746, 588,
- 749, 902,
- 750, 904,
- 753, 909,
- 764, 930,
- 766, 934,
- 767, 936,
- 770, 938,
- 771, 940,
- 776, 944,
- 782, 956,
- 785, 958,
- 793, 963,
- 798, 969,
- 800, 973,
- 801, 975,
- 803, 977,
- 804, 979,
- 807, 981,
- 835, 1003,
- 843, 1010,
- 844, 1011,
- 851, 588,
- 854, 1020,
- 856, 1021,
- 857, 1022,
- 862, 1025,
- 864, 1027,
- 865, 1028,
- 866, 1029,
- 867, 1030,
- 875, 1036,
- 884, 1039,
- 903, 1066,
- 906, 1070,
- 907, 1071,
- 910, 1073,
- 923, 1083,
- 929, 1090,
- 931, 1093,
- 932, 1095,
- 935, 1097,
- 939, 1100,
- 952, 530,
- 954, 530,
- 961, 1127,
- 970, 1134,
- 971, 1136,
- 974, 1138,
- 978, 1141,
- 986, 1144,
- 988, 1146,
- 989, 1147,
- 992, 1149,
- 1012, 1164,
- 1032, 1177,
- 1040, 1184,
- 1041, 1186,
- 1042, 1187,
- 1043, 1188,
- 1044, 1189,
- 1045, 1190,
- 1046, 1191,
- 1047, 1192,
- 1048, 1193,
- 1049, 1194,
- 1050, 1195,
- 1051, 1196,
- 1052, 1197,
- 1053, 1198,
- 1054, 1199,
- 1055, 1200,
- 1056, 1201,
- 1057, 1202,
- 1058, 1203,
- 1062, 1208,
- 1069, 1210,
- 1075, 1214,
- 1078, 1216,
- 1085, 1224,
- 1088, 1225,
- 1091, 1228,
- 1094, 1230,
- 1104, 530,
- 1106, 530,
- 1114, 530,
- 1116, 1251,
- 1117, 530,
- 1119, 1254,
- 1122, 530,
- 1125, 1267,
- 1126, 1268,
- 1128, 1270,
- 1129, 1271,
- 1135, 1274,
- 1145, 1279,
- 1148, 588,
- 1162, 1293,
- 1166, 1300,
- 1171, 1301,
- 1178, 1306,
- 1185, 1308,
- 1219, 1339,
- 1234, 530,
- 1236, 530,
- 1240, 530,
- 1256, 1381,
- 1260, 1386,
- 1269, 1398,
- 1282, 1406,
- 1283, 1407,
- 1296, 1415,
- 1303, 1419,
- 1327, 1423,
- 1335, 1425,
- 1337, 1426,
- 1352, 1438,
- 1355, 1442,
- 1365, 1457,
- 1368, 1461,
- 1374, 1468,
- 1375, 904,
- 1382, 1475,
- 1384, 1476,
- 1387, 1479,
- 1396, 1488,
- 1399, 1490,
- 1418, 1500,
- 1435, 1511,
- 1439, 1515,
- 1440, 1516,
- 1443, 1519,
- 1452, 1528,
- 1455, 1532,
- 1458, 1535,
- 1459, 1536,
- 1462, 1539,
- 1469, 1545,
- 1470, 1070,
- 1477, 1550,
- 1493, 1562,
- 1494, 1563,
- 1502, 1567,
- 1504, 1568,
- 1517, 1577,
- 1529, 1587,
- 1530, 1588,
- 1533, 1591,
- 1537, 1594,
- 1546, 1600,
- 1565, 1608,
- 1589, 1622,
- 1606, 1628,
- 1609, 1632,
- 1610, 1633,
- 1631, 1639,
- 1640, 1645
-};
-static int parser_goto_row91[] = {
- 1,
- -1, 12
-};
-static int parser_goto_row92[] = {
- 17,
- -1, 13,
- 18, 106,
- 26, 106,
- 94, 106,
- 99, 106,
- 103, 106,
- 113, 106,
- 116, 106,
- 118, 106,
- 247, 106,
- 249, 106,
- 253, 106,
- 260, 106,
- 262, 106,
- 265, 106,
- 416, 106,
- 422, 106
-};
-static int parser_goto_row93[] = {
- 1,
- -1, 14
-};
-static int parser_goto_row94[] = {
- 4,
- -1, 531,
- 461, 578,
- 1114, 1249,
- 1234, 1348
-};
-static int parser_goto_row95[] = {
- 3,
- -1, 1175,
- 1177, 1305,
- 1190, 1313
-};
-static int parser_goto_row96[] = {
- 1,
- -1, -1
-};
-static int parser_goto_row97[] = {
- 2,
- -1, 884,
- 1639, 1644
-};
-static int parser_goto_row98[] = {
- 1,
- -1, 885
-};
-static int parser_goto_row99[] = {
- 5,
- -1, 886,
- 1028, 1172,
- 1184, 1307,
- 1186, 1309,
- 1308, 1421
-};
-static int parser_goto_row100[] = {
- 1,
- -1, 887
-};
-static int parser_goto_row101[] = {
- 11,
- -1, 888,
- 1187, 1310,
- 1188, 1311,
- 1189, 1312,
- 1193, 1316,
- 1194, 1317,
- 1195, 1318,
- 1196, 1319,
- 1197, 1320,
- 1198, 1321,
- 1199, 1322
-};
-static int parser_goto_row102[] = {
- 3,
- -1, 889,
- 1191, 1314,
- 1192, 1315
-};
-static int parser_goto_row103[] = {
- 6,
- -1, 890,
- 1030, 1176,
- 1036, 1180,
- 1200, 1323,
- 1201, 1324,
- 1202, 1325
+ 4, 22,
+ 15, 22,
+ 16, 97,
+ 17, 102,
+ 23, 22,
+ 24, 97,
+ 25, 102,
+ 27, 121,
+ 32, 161,
+ 33, 162,
+ 34, 163,
+ 35, 164,
+ 36, 165,
+ 38, 168,
+ 45, 202,
+ 53, 214,
+ 80, 248,
+ 92, 97,
+ 93, 102,
+ 98, 102,
+ 111, 97,
+ 112, 102,
+ 115, 102,
+ 123, 284,
+ 124, 285,
+ 125, 286,
+ 126, 287,
+ 133, 296,
+ 134, 297,
+ 171, 340,
+ 172, 341,
+ 173, 342,
+ 174, 343,
+ 177, 346,
+ 215, 399,
+ 216, 400,
+ 227, 409,
+ 234, 429,
+ 239, 433,
+ 240, 434,
+ 245, 437,
+ 256, 102,
+ 269, 102,
+ 278, 455,
+ 282, 460,
+ 293, 465,
+ 304, 472,
+ 305, 474,
+ 306, 475,
+ 307, 476,
+ 308, 477,
+ 309, 478,
+ 310, 479,
+ 311, 480,
+ 312, 481,
+ 313, 482,
+ 314, 483,
+ 315, 484,
+ 316, 485,
+ 317, 486,
+ 318, 487,
+ 319, 488,
+ 320, 489,
+ 321, 490,
+ 322, 491,
+ 325, 493,
+ 330, 496,
+ 331, 497,
+ 334, 501,
+ 335, 502,
+ 339, 504,
+ 348, 512,
+ 349, 514,
+ 350, 515,
+ 351, 516,
+ 352, 517,
+ 353, 518,
+ 354, 519,
+ 355, 520,
+ 356, 521,
+ 357, 522,
+ 358, 523,
+ 359, 524,
+ 360, 525,
+ 361, 526,
+ 362, 527,
+ 363, 528,
+ 364, 529,
+ 365, 530,
+ 366, 531,
+ 377, 538,
+ 395, 557,
+ 397, 558,
+ 427, 573,
+ 441, 584,
+ 461, 595,
+ 466, 599,
+ 468, 600,
+ 473, 603,
+ 492, 573,
+ 498, 632,
+ 499, 633,
+ 503, 638,
+ 505, 641,
+ 509, 643,
+ 513, 645,
+ 544, 674,
+ 547, 678,
+ 553, 706,
+ 570, 721,
+ 572, 729,
+ 575, 742,
+ 577, 749,
+ 582, 754,
+ 591, 758,
+ 596, 762,
+ 622, 766,
+ 627, 777,
+ 634, 784,
+ 637, 819,
+ 639, 820,
+ 640, 821,
+ 672, 831,
+ 679, 837,
+ 704, 850,
+ 709, 853,
+ 710, 854,
+ 715, 860,
+ 716, 638,
+ 722, 868,
+ 735, 879,
+ 736, 880,
+ 737, 882,
+ 741, 887,
+ 744, 902,
+ 745, 905,
+ 746, 907,
+ 759, 758,
+ 761, 920,
+ 774, 927,
+ 775, 929,
+ 776, 933,
+ 778, 937,
+ 779, 939,
+ 780, 941,
+ 789, 952,
+ 791, 954,
+ 793, 957,
+ 822, 982,
+ 828, 988,
+ 829, 638,
+ 833, 996,
+ 845, 1003,
+ 847, 1005,
+ 851, 1008,
+ 859, 638,
+ 862, 1049,
+ 864, 1051,
+ 867, 1057,
+ 871, 758,
+ 881, 1080,
+ 883, 1084,
+ 884, 1086,
+ 885, 1088,
+ 888, 1092,
+ 889, 1094,
+ 895, 1098,
+ 903, 1133,
+ 906, 1135,
+ 909, 1139,
+ 910, 1141,
+ 911, 1142,
+ 922, 1151,
+ 928, 1158,
+ 930, 1162,
+ 931, 1164,
+ 932, 1166,
+ 934, 1170,
+ 935, 1172,
+ 938, 1174,
+ 940, 1176,
+ 942, 1180,
+ 943, 1182,
+ 971, 1204,
+ 979, 1211,
+ 980, 1212,
+ 987, 638,
+ 990, 1221,
+ 992, 1222,
+ 993, 1223,
+ 1007, 1229,
+ 1009, 1231,
+ 1011, 1233,
+ 1012, 1234,
+ 1013, 1235,
+ 1014, 1236,
+ 1022, 1246,
+ 1031, 1253,
+ 1050, 1280,
+ 1054, 1285,
+ 1055, 1286,
+ 1058, 1288,
+ 1073, 1299,
+ 1079, 1307,
+ 1081, 1310,
+ 1082, 1312,
+ 1085, 1314,
+ 1087, 1316,
+ 1089, 1320,
+ 1090, 1322,
+ 1093, 1324,
+ 1106, 573,
+ 1108, 573,
+ 1136, 1365,
+ 1137, 1367,
+ 1140, 1369,
+ 1149, 1376,
+ 1159, 1384,
+ 1160, 1386,
+ 1163, 1388,
+ 1165, 1390,
+ 1167, 1394,
+ 1168, 1396,
+ 1171, 1398,
+ 1177, 1402,
+ 1178, 1404,
+ 1181, 1406,
+ 1186, 1408,
+ 1189, 1412,
+ 1190, 1413,
+ 1193, 1415,
+ 1213, 1430,
+ 1242, 1447,
+ 1254, 1454,
+ 1255, 1456,
+ 1256, 1457,
+ 1257, 1458,
+ 1258, 1459,
+ 1259, 1460,
+ 1260, 1461,
+ 1261, 1462,
+ 1262, 1463,
+ 1263, 1464,
+ 1264, 1465,
+ 1265, 1466,
+ 1266, 1467,
+ 1267, 1468,
+ 1268, 1469,
+ 1269, 1470,
+ 1270, 1471,
+ 1271, 1472,
+ 1272, 1473,
+ 1276, 1478,
+ 1284, 1481,
+ 1290, 1485,
+ 1293, 1487,
+ 1301, 1495,
+ 1305, 1497,
+ 1308, 1500,
+ 1311, 1502,
+ 1317, 1506,
+ 1318, 1508,
+ 1321, 1510,
+ 1328, 573,
+ 1330, 573,
+ 1338, 573,
+ 1340, 1531,
+ 1341, 573,
+ 1343, 1536,
+ 1346, 573,
+ 1359, 1558,
+ 1366, 1562,
+ 1371, 1565,
+ 1372, 1566,
+ 1377, 1569,
+ 1378, 1570,
+ 1385, 1573,
+ 1391, 1577,
+ 1392, 1579,
+ 1395, 1581,
+ 1403, 1585,
+ 1409, 1589,
+ 1410, 1590,
+ 1414, 638,
+ 1428, 1605,
+ 1432, 1612,
+ 1441, 1615,
+ 1448, 1621,
+ 1455, 1626,
+ 1490, 1659,
+ 1507, 1668,
+ 1513, 573,
+ 1515, 573,
+ 1519, 573,
+ 1538, 1714,
+ 1543, 1721,
+ 1568, 1745,
+ 1578, 1750,
+ 1591, 1756,
+ 1594, 1760,
+ 1595, 1761,
+ 1608, 1769,
+ 1618, 1774,
+ 1647, 1780,
+ 1655, 1782,
+ 1657, 1783,
+ 1677, 1801,
+ 1681, 1807,
+ 1691, 1822,
+ 1694, 1826,
+ 1702, 1834,
+ 1704, 1051,
+ 1709, 758,
+ 1715, 1850,
+ 1718, 1851,
+ 1722, 1855,
+ 1741, 1869,
+ 1746, 1872,
+ 1772, 1884,
+ 1795, 1897,
+ 1802, 1903,
+ 1804, 1904,
+ 1808, 1908,
+ 1817, 1917,
+ 1820, 1921,
+ 1823, 1924,
+ 1824, 1925,
+ 1827, 1928,
+ 1835, 1935,
+ 1836, 1285,
+ 1843, 1940,
+ 1844, 1941,
+ 1852, 1957,
+ 1877, 1973,
+ 1878, 1974,
+ 1887, 1978,
+ 1889, 1979,
+ 1905, 1992,
+ 1918, 2002,
+ 1919, 2003,
+ 1922, 2006,
+ 1926, 2009,
+ 1936, 2016,
+ 1942, 2020,
+ 1943, 2021,
+ 1944, 2022,
+ 1945, 2023,
+ 1946, 2024,
+ 1947, 2025,
+ 1948, 2026,
+ 1949, 2027,
+ 1951, 2028,
+ 1952, 2030,
+ 1953, 2031,
+ 1954, 2032,
+ 1976, 2044,
+ 2004, 2062,
+ 2018, 2067,
+ 2029, 2077,
+ 2042, 2083,
+ 2045, 2087,
+ 2046, 2088,
+ 2086, 2097,
+ 2093, 2100,
+ 2098, 2104,
+ 2105, 2108,
+ 2109, 2110
};
static int parser_goto_row104[] = {
1,
- -1, 891
+ -1, 12
};
static int parser_goto_row105[] = {
- 2,
- -1, 892,
- 873, 1034
+ 17,
+ -1, 13,
+ 18, 106,
+ 26, 106,
+ 94, 106,
+ 99, 106,
+ 103, 106,
+ 113, 106,
+ 116, 106,
+ 118, 106,
+ 257, 106,
+ 259, 106,
+ 263, 106,
+ 270, 106,
+ 272, 106,
+ 275, 106,
+ 445, 106,
+ 451, 106
};
static int parser_goto_row106[] = {
- 11,
- -1, 812,
- 696, 819,
- 730, 849,
- 853, 1018,
- 996, 1153,
- 1150, 1284,
- 1165, 1298,
- 1281, 1404,
- 1491, 1561,
- 1607, 1629,
- 1637, 1642
+ 1,
+ -1, 14
};
static int parser_goto_row107[] = {
- 3,
- -1, 813,
- 585, 712,
- 1280, 1403
+ 4,
+ -1, 574,
+ 492, 626,
+ 1338, 1529,
+ 1513, 1672
};
static int parser_goto_row108[] = {
- 6,
- -1, 502,
- 359, 506,
- 501, 617,
- 734, 855,
- 832, 1000,
- 1290, 1410
+ 1,
+ -1, 1633
};
static int parser_goto_row109[] = {
1,
- -1, 503
+ -1, -1
};
static int parser_goto_row110[] = {
- 3,
- -1, 1015,
- 1020, 1168,
- 1300, 1417
+ 2,
+ -1, 1031,
+ 2097, 2103
};
static int parser_goto_row111[] = {
1,
- -1, 713
+ -1, 1032
};
static int parser_goto_row112[] = {
- 1,
- -1, 714
+ 5,
+ -1, 1033,
+ 1234, 1442,
+ 1454, 1625,
+ 1456, 1627,
+ 1626, 1776
};
static int parser_goto_row113[] = {
1,
- -1, 715
+ -1, 1034
};
static int parser_goto_row114[] = {
- 1,
- -1, 716
+ 11,
+ -1, 1035,
+ 1457, 1628,
+ 1458, 1629,
+ 1459, 1630,
+ 1463, 1636,
+ 1464, 1637,
+ 1465, 1638,
+ 1466, 1639,
+ 1467, 1640,
+ 1468, 1641,
+ 1469, 1642
};
static int parser_goto_row115[] = {
- 1,
- -1, 717
+ 3,
+ -1, 1036,
+ 1461, 1634,
+ 1462, 1635
};
static int parser_goto_row116[] = {
- 1,
- -1, 718
+ 6,
+ -1, 1037,
+ 1236, 1446,
+ 1246, 1450,
+ 1470, 1643,
+ 1471, 1644,
+ 1472, 1645
};
static int parser_goto_row117[] = {
1,
- -1, 719
+ -1, 1038
};
static int parser_goto_row118[] = {
- 1,
- -1, 720
+ 2,
+ -1, 1039,
+ 1020, 1244
};
static int parser_goto_row119[] = {
- 23,
- -1, 1016,
- 44, 201,
- 197, 357,
- 698, 822,
- 699, 824,
- 700, 826,
- 702, 828,
- 823, 993,
- 825, 994,
- 827, 995,
- 833, 1001,
- 834, 1002,
- 998, 1155,
- 999, 1156,
- 1004, 1160,
- 1005, 1161,
- 1144, 1278,
- 1154, 1287,
- 1279, 1402,
- 1291, 1411,
- 1292, 1412,
- 1408, 1495,
- 1409, 1496
+ 4,
+ -1, 382,
+ 286, 463,
+ 342, 507,
+ 465, 598
};
static int parser_goto_row120[] = {
1,
-1, -1
};
static int parser_goto_row121[] = {
- 16,
- -1, 159,
- 37, 167,
- 586, 722,
- 631, 745,
- 691, 814,
- 696, 820,
- 730, 850,
- 748, 901,
- 853, 1019,
- 1061, 1207,
- 1163, 1295,
- 1165, 1299,
- 1281, 1405,
- 1413, 1498,
- 1607, 1630,
- 1637, 1643
+ 1,
+ -1, 1126
};
static int parser_goto_row122[] = {
1,
-1, -1
};
static int parser_goto_row123[] = {
- 1,
- -1, -1
-};
-static int parser_goto_row124[] = {
- 2,
+ 4,
-1, 145,
- 1398, 1489
+ 900, 1127,
+ 918, 1127,
+ 1745, 1871
};
-static int parser_goto_row125[] = {
+static int parser_goto_row124[] = {
1,
-1, 146
};
-static int parser_goto_row126[] = {
+static int parser_goto_row125[] = {
5,
-1, 147,
- 275, 431,
- 441, 554,
- 443, 556,
- 555, 673
+ 285, 462,
+ 472, 602,
+ 474, 604,
+ 603, 764
};
-static int parser_goto_row127[] = {
+static int parser_goto_row126[] = {
1,
-1, 148
};
-static int parser_goto_row128[] = {
+static int parser_goto_row127[] = {
11,
-1, 149,
- 444, 557,
- 445, 558,
- 446, 559,
- 450, 563,
- 451, 564,
- 452, 565,
- 453, 566,
- 454, 567,
- 455, 568,
- 456, 569
+ 475, 605,
+ 476, 606,
+ 477, 607,
+ 481, 611,
+ 482, 612,
+ 483, 613,
+ 484, 614,
+ 485, 615,
+ 486, 616,
+ 487, 617
};
-static int parser_goto_row129[] = {
+static int parser_goto_row128[] = {
3,
-1, 150,
- 448, 561,
- 449, 562
+ 479, 609,
+ 480, 610
};
-static int parser_goto_row130[] = {
+static int parser_goto_row129[] = {
6,
-1, 151,
- 277, 433,
- 283, 439,
- 457, 570,
- 458, 571,
- 459, 572
+ 287, 464,
+ 297, 470,
+ 488, 618,
+ 489, 619,
+ 490, 620
};
-static int parser_goto_row131[] = {
+static int parser_goto_row130[] = {
1,
-1, 152
};
-static int parser_goto_row132[] = {
- 2,
+static int parser_goto_row131[] = {
+ 4,
-1, 153,
- 132, 281
+ 132, 295,
+ 900, 1128,
+ 918, 1128
+};
+static int parser_goto_row132[] = {
+ 7,
+ -1, 546,
+ 543, 673,
+ 676, 835,
+ 1225, 1437,
+ 1435, 1613,
+ 1444, 1617,
+ 1616, 1773
};
static int parser_goto_row133[] = {
1,
- -1, -1
+ -1, 677
};
static int parser_goto_row134[] = {
- 1,
- -1, -1
+ 2,
+ -1, 1129,
+ 918, 1148
};
static int parser_goto_row135[] = {
1,
- -1, -1
+ -1, 1130
};
static int parser_goto_row136[] = {
- 1,
- -1, -1
+ 2,
+ -1, 1445,
+ 1447, 1620
};
static int parser_goto_row137[] = {
1,
-1, -1
};
static int parser_goto_row146[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row147[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row148[] = {
+ 11,
+ -1, 948,
+ 792, 955,
+ 826, 985,
+ 989, 1219,
+ 1197, 1419,
+ 1416, 1596,
+ 1431, 1610,
+ 1593, 1758,
+ 1875, 1972,
+ 2043, 2084,
+ 2095, 2101
+};
+static int parser_goto_row149[] = {
+ 3,
+ -1, 949,
+ 635, 808,
+ 1592, 1757
+};
+static int parser_goto_row150[] = {
+ 6,
+ -1, 535,
+ 378, 539,
+ 534, 667,
+ 830, 991,
+ 968, 1201,
+ 1602, 1764
+};
+static int parser_goto_row151[] = {
+ 1,
+ -1, 536
+};
+static int parser_goto_row152[] = {
+ 3,
+ -1, 1216,
+ 1221, 1434,
+ 1612, 1771
+};
+static int parser_goto_row153[] = {
+ 1,
+ -1, 809
+};
+static int parser_goto_row154[] = {
+ 1,
+ -1, 810
+};
+static int parser_goto_row155[] = {
+ 1,
+ -1, 811
+};
+static int parser_goto_row156[] = {
+ 1,
+ -1, 812
+};
+static int parser_goto_row157[] = {
+ 1,
+ -1, 813
+};
+static int parser_goto_row158[] = {
+ 1,
+ -1, 814
+};
+static int parser_goto_row159[] = {
+ 1,
+ -1, 815
+};
+static int parser_goto_row160[] = {
+ 1,
+ -1, 816
+};
+static int parser_goto_row161[] = {
+ 25,
+ -1, 1217,
+ 44, 201,
+ 197, 376,
+ 794, 958,
+ 795, 960,
+ 796, 962,
+ 798, 964,
+ 959, 1194,
+ 961, 1195,
+ 963, 1196,
+ 969, 1202,
+ 970, 1203,
+ 1199, 1421,
+ 1200, 1422,
+ 1205, 1426,
+ 1206, 1427,
+ 1408, 1588,
+ 1420, 1599,
+ 1589, 1754,
+ 1590, 1755,
+ 1603, 1765,
+ 1604, 1766,
+ 1756, 1874,
+ 1762, 1879,
+ 1763, 1880
+};
+static int parser_goto_row162[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row163[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row164[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row165[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row166[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row167[] = {
+ 16,
+ -1, 159,
+ 37, 167,
+ 636, 818,
+ 713, 858,
+ 787, 950,
+ 792, 956,
+ 826, 986,
+ 861, 1048,
+ 989, 1220,
+ 1275, 1477,
+ 1429, 1607,
+ 1431, 1611,
+ 1593, 1759,
+ 1767, 1882,
+ 2043, 2085,
+ 2095, 2102
+};
+static int parser_goto_row168[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row169[] = {
+ 1,
+ -1, 703
+};
+static int parser_goto_row170[] = {
+ 1,
+ -1, 1131
+};
+static int parser_goto_row171[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row172[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row173[] = {
+ 9,
+ -1, 1846,
+ 1801, 1902,
+ 1850, 1955,
+ 1851, 1956,
+ 1903, 1990,
+ 1904, 1991,
+ 1957, 2035,
+ 1992, 2055,
+ 2110, 2111
+};
+static int parser_goto_row174[] = {
+ 1,
+ -1, 1847
+};
+static int parser_goto_row175[] = {
+ 5,
+ -1, 1848,
+ 1941, 2019,
+ 2028, 2076,
+ 2030, 2078,
+ 2077, 2094
+};
+static int parser_goto_row176[] = {
+ 1,
+ -1, 1849
+};
+static int parser_goto_row177[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row178[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row179[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row180[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row181[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row182[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row183[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row184[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row185[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row186[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row187[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row188[] = {
+ 1,
+ -1, -1
+};
+static int parser_goto_row189[] = {
+ 5,
+ -1, 743,
+ 746, 908,
+ 780, 908,
+ 885, 908,
+ 932, 908
+};
+static int parser_goto_row190[] = {
+ 1,
+ -1, 900
+};
+static int parser_goto_row191[] = {
2,
-1, 15,
4, 23
};
-static int parser_goto_row147[] = {
+static int parser_goto_row192[] = {
4,
-1, 16,
4, 24,
15, 92,
23, 111
};
-static int parser_goto_row148[] = {
+static int parser_goto_row193[] = {
8,
-1, 17,
4, 25,
16, 98,
23, 112,
24, 115,
- 92, 246,
- 111, 259
+ 92, 256,
+ 111, 269
};
-static int parser_goto_row149[] = {
+static int parser_goto_row194[] = {
16,
-1, 18,
4, 26,
23, 113,
24, 116,
25, 118,
- 92, 247,
- 93, 249,
- 98, 253,
- 111, 260,
- 112, 262,
- 115, 265,
- 246, 416,
- 259, 422
-};
-static int parser_goto_row150[] = {
- 8,
- -1, 658,
- 579, 685,
- 652, 766,
- 656, 770,
- 682, 800,
- 683, 803,
- 764, 931,
- 798, 970
-};
-static int parser_goto_row151[] = {
+ 92, 257,
+ 93, 259,
+ 98, 263,
+ 111, 270,
+ 112, 272,
+ 115, 275,
+ 256, 445,
+ 269, 451
+};
+static int parser_goto_row195[] = {
16,
- -1, 659,
- 579, 686,
- 652, 767,
- 656, 771,
- 658, 782,
- 682, 801,
- 683, 804,
- 685, 807,
- 764, 932,
- 766, 935,
- 770, 939,
- 798, 971,
- 800, 974,
- 803, 978,
- 931, 1094,
- 970, 1135
-};
-static int parser_goto_row152[] = {
- 1,
- -1, 1091
-};
-static int parser_goto_row153[] = {
- 1,
- -1, 910
+ -1, 744,
+ 627, 778,
+ 737, 883,
+ 741, 888,
+ 746, 909,
+ 775, 930,
+ 776, 934,
+ 780, 942,
+ 881, 1081,
+ 885, 1089,
+ 906, 1136,
+ 928, 1159,
+ 932, 1167,
+ 940, 1177,
+ 1087, 1317,
+ 1165, 1391
+};
+static int parser_goto_row196[] = {
+ 32,
+ -1, 745,
+ 627, 779,
+ 737, 884,
+ 741, 889,
+ 744, 903,
+ 746, 910,
+ 775, 931,
+ 776, 935,
+ 778, 938,
+ 780, 943,
+ 881, 1082,
+ 883, 1085,
+ 885, 1090,
+ 888, 1093,
+ 906, 1137,
+ 909, 1140,
+ 928, 1160,
+ 930, 1163,
+ 932, 1168,
+ 934, 1171,
+ 940, 1178,
+ 942, 1181,
+ 1081, 1311,
+ 1087, 1318,
+ 1089, 1321,
+ 1136, 1366,
+ 1159, 1385,
+ 1165, 1392,
+ 1167, 1395,
+ 1177, 1403,
+ 1317, 1507,
+ 1391, 1578
+};
+static int parser_goto_row197[] = {
+ 1,
+ -1, 1308
+};
+static int parser_goto_row198[] = {
+ 1,
+ -1, 1058
+};
+static int parser_goto_row199[] = {
+ 1,
+ -1, 734
+};
+static int parser_goto_row200[] = {
+ 1,
+ -1, 1292
+};
+static int parser_goto_row201[] = {
+ 1,
+ -1, 995
+};
+static int parser_goto_row202[] = {
+ 4,
+ -1, 238,
+ 328, 495,
+ 975, 1209,
+ 1041, 1274
};
-static int parser_goto_row154[] = {
+static int parser_goto_row203[] = {
1,
- -1, 649
+ -1, 247
};
-static int parser_goto_row155[] = {
+static int parser_goto_row204[] = {
1,
- -1, 1077
+ -1, 681
};
-static int parser_goto_row156[] = {
+static int parser_goto_row205[] = {
1,
- -1, 859
+ -1, 759
};
-static int parser_goto_row157[] = {
- 4,
- -1, 229,
- 310, 464,
- 839, 1008,
- 894, 1060
-};
-static int parser_goto_row158[] = {
- 1,
- -1, 238
+static int parser_goto_row206[] = {
+ 2,
+ -1, 849,
+ 1130, 1362
};
-static int parser_goto_row159[] = {
+static int parser_goto_row207[] = {
1,
- -1, 630
+ -1, 712
};
-static int parser_goto_row160[] = {
+static int parser_goto_row208[] = {
4,
-1, 85,
- 121, 271,
- 381, 271,
- 426, 544
+ 121, 281,
+ 409, 281,
+ 455, 588
};
-static int parser_goto_row161[] = {
+static int parser_goto_row209[] = {
2,
-1, 19,
12, 86
};
-static int parser_goto_row162[] = {
+static int parser_goto_row210[] = {
3,
-1, 20,
19, 108,
- 86, 244
+ 86, 254
+};
+static int parser_goto_row211[] = {
+ 4,
+ -1, 746,
+ 627, 780,
+ 737, 885,
+ 775, 932
};
const int* const parser_goto_table[] = {
parser_goto_row159,
parser_goto_row160,
parser_goto_row161,
- parser_goto_row162
+ parser_goto_row162,
+ parser_goto_row163,
+ parser_goto_row164,
+ parser_goto_row165,
+ parser_goto_row166,
+ parser_goto_row167,
+ parser_goto_row168,
+ parser_goto_row169,
+ parser_goto_row170,
+ parser_goto_row171,
+ parser_goto_row172,
+ parser_goto_row173,
+ parser_goto_row174,
+ parser_goto_row175,
+ parser_goto_row176,
+ parser_goto_row177,
+ parser_goto_row178,
+ parser_goto_row179,
+ parser_goto_row180,
+ parser_goto_row181,
+ parser_goto_row182,
+ parser_goto_row183,
+ parser_goto_row184,
+ parser_goto_row185,
+ parser_goto_row186,
+ parser_goto_row187,
+ parser_goto_row188,
+ parser_goto_row189,
+ parser_goto_row190,
+ parser_goto_row191,
+ parser_goto_row192,
+ parser_goto_row193,
+ parser_goto_row194,
+ parser_goto_row195,
+ parser_goto_row196,
+ parser_goto_row197,
+ parser_goto_row198,
+ parser_goto_row199,
+ parser_goto_row200,
+ parser_goto_row201,
+ parser_goto_row202,
+ parser_goto_row203,
+ parser_goto_row204,
+ parser_goto_row205,
+ parser_goto_row206,
+ parser_goto_row207,
+ parser_goto_row208,
+ parser_goto_row209,
+ parser_goto_row210,
+ parser_goto_row211
};
var location = new Location(_file, start_line + 1, start_line + 1, start_pos + 1, start_pos + 1)
if sp > start_stream_pos then
var text = string.substring(start_stream_pos, sp-start_stream_pos)
- var token = new PError.init_error("Syntax error: unknown token {text}.", location)
+ var token = new PLexerError.init_lexer_error("Syntax error: unknown token {text}.", location, text)
return token
else
- var token = new EOF(location)
+ var token = new EOF.init_tk(location)
return token
end
end
(new ComputeProdLocationVisitor).enter_visit(node)
return node
else if action_type == 3 then # ERROR
- var node2 = new PError.init_error("Syntax error: unexpected {token}.", token.location)
+ var node2 = new PParserError.init_parser_error("Syntax error: unexpected {token}.", token.location, token)
var node = new Start(null, node2)
return node
end
$ end
class EOF
super Token
-private init noinit do end
end
class PError
super EOF
-private init noinit do end
+end
+class PLexerError
+ super PError
+end
+class PParserError
+ super PError
end
$ end template
return res
end
+ redef fun text=(text)
+ do
+ _text = text
+ end
+
fun parser_index: Int is abstract
end
return ${tokens/eof/@parser_index}
end
- init(loc: Location)
+ init init_tk(loc: Location)
do
_text = ""
_location = loc
init init_error(message: String, loc: Location)
do
- init(loc)
+ init_tk(loc)
_message = message
end
end
+redef class PLexerError
+ readable var _string: String
+
+ init init_lexer_error(message: String, loc: Location, string: String)
+ do
+ init_error(message, loc)
+ _string = string
+ end
+end
+
+redef class PParserError
+ readable var _token: Token
+
+ init init_parser_error(message: String, loc: Location, token: Token)
+ do
+ init_error(message, loc)
+ _token = token
+ end
+end
$ end template
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Utils and tools related to parsers and AST
+module parser_util
+
+import parser
+import toolcontext
+
+redef class ToolContext
+ # Parse a full module given as a string
+ # Fatal error if the `string` is not a syntactically correct module
+ fun parse_module(string: String): AModule
+ do
+ var source = new SourceFile.from_string("", string)
+ var lexer = new Lexer(source)
+ var parser = new Parser(lexer)
+ var tree = parser.parse
+
+ var eof = tree.n_eof
+ if eof isa AError then
+ self.fatal_error(null, "Fatal Error: {eof.message}")
+ abort
+ end
+ return tree.n_base.as(not null)
+ end
+
+ # Parse a full classdef given as a string
+ # Fatal error if the `string` is not a syntactically correct class definition
+ fun parse_classdef(string: String): AClassdef
+ do
+ var nmodule = parse_module(string)
+ var nclassdefs = nmodule.n_classdefs
+ if nclassdefs.length != 1 then
+ self.fatal_error(null, "Fatal Error: not a classdef")
+ abort
+ end
+ return nclassdefs.first
+ end
+
+ # Parse a full propdef given as a string
+ # Fatal error if the `string` is not a syntactically correct property definition
+ fun parse_propdef(string: String): APropdef
+ do
+ var mod_string = "class Dummy\n{string}\nend"
+ var nclassdef = parse_classdef(mod_string)
+ var npropdefs = nclassdef.n_propdefs
+ if npropdefs.length != 1 then
+ self.fatal_error(null, "Fatal Error: not a propdef")
+ abort
+ end
+ return npropdefs.first
+ end
+
+ # Parse a full statement block given as a string
+ # Fatal error if the `string` is not a syntactically correct statement block
+ fun parse_stmts(string: String): AExpr
+ do
+ var mod_string = "do\n{string}\nend"
+ var nmodule = parse_module(mod_string)
+ var nblock = nmodule.n_classdefs.first.n_propdefs.first.as(AMainMethPropdef).n_block.as(ABlockExpr).n_expr.first.as(ADoExpr).n_block.as(not null)
+ return nblock
+ end
+
+ # Parse a full expression given as a string
+ # Fatal error if the `string` is not a syntactically correct expression
+ fun parse_expr(string: String): AExpr
+ do
+ var mod_string = "var dummy = \n{string}"
+ var nmodule = parse_module(mod_string)
+ var nexpr = nmodule.n_classdefs.first.n_propdefs.first.as(AMainMethPropdef).n_block.as(ABlockExpr).n_expr.first.as(AVardeclExpr).n_expr.as(not null)
+ return nexpr
+ end
+end
+
+redef class ANode
+ # Return an array of tokens that match a given text
+ fun collect_tokens_by_text(text: String): Array[Token]
+ do
+ var v = new CollectTokensByTextVisitor(text)
+ v.enter_visit(self)
+ return v.result
+ end
+
+ # Return an array of node that are annotated
+ # The attached node can be retrieved by two invocation of parent
+ fun collect_annotations_by_name(name: String): Array[AAnnotation]
+ do
+ var v = new CollectAnnotationsByNameVisitor(name)
+ v.enter_visit(self)
+ return v.result
+ end
+end
+
+private class CollectTokensByTextVisitor
+ super Visitor
+ var text: String
+ init(text: String) do self.text = text
+ var result = new Array[Token]
+ redef fun visit(node)
+ do
+ if node == null then return
+ node.visit_all(self)
+ if node isa Token and node.text == text then result.add(node)
+ end
+end
+
+private class CollectAnnotationsByNameVisitor
+ super Visitor
+ var name: String
+ init(name: String) do self.name = name
+ var result = new Array[AAnnotation]
+ redef fun visit(node)
+ do
+ if node == null then return
+ node.visit_all(self)
+ if node isa AAnnotation and node.n_atid.n_id.text == name then result.add(node)
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Phases of the processing of nit programs
+module phase
+
+import toolcontext
+import parser
+import poset
+
+redef class ToolContext
+ # The various registered phases to performs
+ # The order in the poset is the dependance of phases
+ #
+ # While you can directly modify the poset (nodes and edges),
+ # it is often simpler to use the constructor in `Phase`
+ var phases = new POSet[Phase]
+
+ fun phases_list: Sequence[Phase]
+ do
+ var phases = self.phases.to_a
+ self.phases.sort(phases)
+ return phases
+ end
+
+ # Run all registered phases on a set of modules
+ fun run_phases(nmodules: Collection[AModule])
+ do
+ var time0 = get_time
+ self.info("*** SEMANTIC ANALYSIS ***", 1)
+ #phases.show_dot
+
+ var phases = phases_list
+
+ for phase in phases do
+ self.info(" registered phases: {phase.class_name}", 2)
+ end
+
+ for nmodule in nmodules do
+ self.info("Semantic analysis module {nmodule.location.file.filename}", 2)
+ for phase in phases do
+ self.info(" phase: {phase.class_name}", 3)
+ assert phase.toolcontext == self
+ var errcount = self.error_count
+ phase.process_nmodule(nmodule)
+ if errcount != self.error_count then
+ self.check_errors
+ break
+ end
+ errcount = self.error_count
+ for nclassdef in nmodule.n_classdefs do
+ for npropdef in nclassdef.n_propdefs do
+ self.info(" phase: {phase.class_name} for {npropdef.location}", 4)
+ assert phase.toolcontext == self
+ phase.process_npropdef(npropdef)
+ end
+ end
+ if errcount != self.error_count then
+ self.check_errors
+ break
+ end
+ var v = new AnnotationPhaseVisitor(phase)
+ v.enter_visit(nmodule)
+ if errcount != self.error_count then
+ self.check_errors
+ break
+ end
+ end
+ self.check_errors
+ end
+
+ var time1 = get_time
+ self.info("*** END SEMANTIC ANALYSIS: {time1-time0} ***", 2)
+ end
+end
+
+private class AnnotationPhaseVisitor
+ super Visitor
+
+ var phase: Phase
+
+ init(phase: Phase) do self.phase = phase
+
+ redef fun visit(n)
+ do
+ n.visit_all(self)
+ if n isa AAnnotation then phase.process_annotated_node(n.parent.parent.as(not null), n)
+ end
+end
+
+# Abstraction of steps in the analysis/processing of Nit programs
+# Specific phases should implements one of the `process_*` method
+abstract class Phase
+ # The toolcontext instance attached to the phase
+ var toolcontext: ToolContext
+
+ # The dependence relation of the phase with the other phases
+ var in_hierarchy: POSetElement[Phase]
+
+ # Initialize and register a phase to the toolcontext
+ init(toolcontext: ToolContext, depends: nullable Collection[Phase])
+ do
+ self.toolcontext = toolcontext
+ in_hierarchy = toolcontext.phases.add_node(self)
+ if depends != null then
+ for d in depends do
+ toolcontext.phases.add_edge(self, d)
+ end
+ end
+ end
+
+ # Specific actions to execute on the whole tree of a module
+ # @toimplement
+ fun process_nmodule(nmodule: AModule) do end
+
+ # Specific actions to execute on the tree of a property
+ # Note that the order of the visit is the one of the file
+ # @toimplement
+ fun process_npropdef(npropdef: APropdef) do end
+
+ # Specific actions to execute on annotated nodes
+ # Note that the order of the visit is the one of the file
+ # @toimplement
+ fun process_annotated_node(node: ANode, nat: AAnnotation) do end
+end
super NaiveCollection[E]
super AbstractSorter[E]
- redef fun iterator do return nodes.iterator
+ redef fun iterator do return elements.keys.iterator
# All the nodes
- private var nodes: Set[E] = new HashSet[E]
- private var tos: HashMap[E, Set[E]] = new HashMap[E, Set[E]]
- private var froms: HashMap[E, Set[E]] = new HashMap[E, Set[E]]
- private var dtos: HashMap[E, Set[E]] = new HashMap[E, Set[E]]
- private var dfroms: HashMap[E, Set[E]] = new HashMap[E, Set[E]]
private var elements: HashMap[E, POSetElement[E]] = new HashMap[E, POSetElement[E]]
- redef fun has(e) do return self.nodes.has(e)
+ redef fun has(e) do return self.elements.keys.has(e)
# Add a node (an element) to the posed
# The new element is added unconnected to any other nodes (it is both a new root and a new leaf).
# If `e' is already present in the POSet then just return the POSetElement (usually you will prefer []) is this case.
fun add_node(e: E): POSetElement[E]
do
- if nodes.has(e) then return self.elements[e]
- nodes.add(e)
- tos[e] = new HashSet[E]
- tos[e].add(e)
- froms[e] = new HashSet[E]
- froms[e].add(e)
- dtos[e] = new HashSet[E]
- dfroms[e] = new HashSet[E]
- var poe = new POSetElement[E](self, e, nodes.length)
+ if elements.keys.has(e) then return self.elements[e]
+ var poe = new POSetElement[E](self, e, elements.length)
+ poe.tos.add(e)
+ poe.froms.add(e)
self.elements[e] = poe
return poe
end
# REQUIRE: has(e)
fun [](e: E): POSetElement[E]
do
- assert nodes.has(e)
+ assert elements.keys.has(e)
return self.elements[e]
end
# FIXME: Do somethind clever to manage loops.
fun add_edge(f, t: E)
do
- add_node(f)
- add_node(t)
+ var fe = add_node(f)
+ var te = add_node(t)
# Skip if edge already present
- if tos[f].has(t) then return
+ if fe.tos.has(t) then return
# Add the edge and close the transitivity
- for ff in froms[f] do
- for tt in tos[t] do
- froms[tt].add ff
- tos[ff].add tt
+ for ff in fe.froms do
+ var ffe = self.elements[ff]
+ for tt in te.tos do
+ var tte = self.elements[tt]
+ tte.froms.add ff
+ ffe.tos.add tt
end
end
# Update the transitive reduction
- if tos[t].has(f) then return # Skip the reduction if there is a loop
+ if te.tos.has(f) then return # Skip the reduction if there is a loop
- for x in dfroms[t].to_a do
- if tos[x].has(f) then
- dfroms[t].remove(x)
- dtos[x].remove(t)
+ for x in te.dfroms.to_a do
+ var xe = self.elements[x]
+ if xe.tos.has(f) then
+ te.dfroms.remove(x)
+ xe.dtos.remove(t)
end
end
- for x in dtos[f].to_a do
- if froms[x].has(t) then
- dfroms[x].remove(f)
- dtos[f].remove(x)
+ for x in fe.dtos.to_a do
+ var xe = self.elements[x]
+ if xe.froms.has(t) then
+ xe.dfroms.remove(f)
+ fe.dtos.remove(x)
end
end
- dtos[f].add t
- dfroms[t].add f
+ fe.dtos.add t
+ te.dfroms.add f
end
# Is there an edge (transitive or not) from `f' to `t'?
# Since the POSet is reflexive, true is returned if `f == t'.
fun has_edge(f,t: E): Bool
do
- return nodes.has(f) and tos[f].has(t)
+ if not elements.keys.has(f) then return false
+ var fe = self.elements[f]
+ return fe.tos.has(t)
end
# Is there a direct edge from `f' to `t'?
# Note that because of loops, the result may not be the expected one.
fun has_direct_edge(f,t: E): Bool
do
- return nodes.has(f) and dtos[f].has(t)
+ if not elements.keys.has(f) then return false
+ var fe = self.elements[f]
+ return fe.dtos.has(t)
end
# Display the POSet in a gaphical windows.
var f = new OProcess("dot", "-Txlib")
#var f = stdout
f.write "digraph \{\n"
- for x in nodes do
- for y in dtos[x] do
+ for x in elements.keys do
+ f.write "\"{x}\";\n"
+ var xe = self.elements[x]
+ for y in xe.dtos do
if self.has_edge(y,x) then
f.write "\"{x}\" -> \"{y}\"[dir=both];\n"
else
# The total order is stable unless a new node or a new edge is added
redef fun compare(a, b: E): Int
do
- var res = tos[a].length <=> tos[b].length
+ var ae = self.elements[a]
+ var be = self.elements[b]
+ var res = ae.tos.length <=> be.tos.length
if res != 0 then return res
return elements[a].count <=> elements[b].count
end
# The real object behind the view
var element: E
+ private var tos = new HashSet[E]
+ private var froms = new HashSet[E]
+ private var dtos = new HashSet[E]
+ private var dfroms = new HashSet[E]
+
# The rank of the
# This attribute is used to force a total order for POSet#compare
private var count: Int
# Since the POSet is reflexive, element is included in the set.
fun greaters: Collection[E]
do
- return self.poset.tos[self.element]
+ return self.tos
end
# Return the set of all elements `t' that have a direct edge from `element' to `t'.
fun direct_greaters: Collection[E]
do
- return self.poset.dtos[self.element]
+ return self.dtos
end
# Return the set of all elements `f' that have an edge from `f' to `element'.
# Since the POSet is reflexive, element is included in the set.
fun smallers: Collection[E]
do
- return self.poset.froms[self.element]
+ return self.froms
end
# Return the set of all elements `f' that have an edge from `f' to `element'.
fun direct_smallers: Collection[E]
do
- return self.poset.dfroms[self.element]
+ return self.dfroms
end
# Is there an edge from `object' to `t'?
fun <=(t: E): Bool
do
- return self.poset.tos[self.element].has(t)
+ return self.tos.has(t)
end
# Is `t != element' and is there an edge from `object' to `t'?
fun <(t: E): Bool
do
- return t != self.element and self.poset.tos[self.element].has(t)
+ return t != self.element and self.tos.has(t)
end
end
redef class ModelBuilder
fun do_rapid_type_analysis(mainmodule: MModule): RapidTypeAnalysis
do
+ var time0 = get_time
+ self.toolcontext.info("*** RAPID TYPE ANALYSIS ***", 1)
+
var model = self.model
var analysis = new RapidTypeAnalysis(self, mainmodule)
var nmodule = self.nmodules.first
analysis.add_monomorphic_send(maintype, mainprop)
end
analysis.run_analysis
+
+ var time1 = get_time
+ self.toolcontext.info("*** END RAPID TYPE ANALYSIS: {time1-time0} ***", 2)
+
return analysis
end
end
var implicit_cast_to = node.implicit_cast_to
if implicit_cast_to != null then self.add_cast_type(implicit_cast_to)
end
- node.visit_all(self)
+ # RTA does not enter in AAnnotations
+ if not node isa AAnnotations then
+ node.visit_all(self)
+ end
end
# Force to get the primitive class named `name' or abort
return
end
- #FIXME: we do not want an ugly static call!
- var mpropdef = v.mpropdef
- var mpropdefs = mpropdef.mproperty.lookup_super_definitions(mpropdef.mclassdef.mmodule, mpropdef.mclassdef.bound_mtype)
- if mpropdefs.length != 1 then
- debug("MPRODFEFS for super {mpropdef} for {v.receiver}: {mpropdefs.join(", ")}")
- end
- var msuperpropdef = mpropdefs.first
- assert msuperpropdef isa MMethodDef
- v.analysis.add_static_call(v.receiver, msuperpropdef)
+ var mpropdef = v.mpropdef.lookup_next_definition(v.analysis.mainmodule, v.receiver)
+ assert mpropdef isa MMethodDef
+ v.analysis.add_static_call(v.receiver, mpropdef)
end
end
import parser
import toolcontext
+import phase
+
+import modelbuilder #FIXME useless
+
+redef class ToolContext
+ var scope_phase: Phase = new ScopePhase(self, null)
+end
+
+private class ScopePhase
+ super Phase
+ redef fun process_npropdef(npropdef) do npropdef.do_scope(toolcontext)
+end
+
# A local variable (including parameters, automatic variables and self)
class Variable
fun run_separate_compiler(mainmodule: MModule, runtime_type_analysis: RapidTypeAnalysis)
do
var time0 = get_time
- self.toolcontext.info("*** COMPILING TO C ***", 1)
+ self.toolcontext.info("*** GENERATING C ***", 1)
var compiler = new SeparateCompiler(mainmodule, self, runtime_type_analysis)
compiler.compile_header
# compile class structures
+ self.toolcontext.info("Property coloring", 2)
+ compiler.new_file("{mainmodule.name}.classes")
+ compiler.do_property_coloring
for m in mainmodule.in_importation.greaters do
for mclass in m.intro_mclasses do
compiler.compile_class_to_c(mclass)
end
# The main function of the C
- compiler.new_file
+ compiler.new_file("{mainmodule.name}.main")
compiler.compile_main_function
# compile methods
for m in mainmodule.in_importation.greaters do
- compiler.new_file
+ self.toolcontext.info("Generate C for module {m}", 2)
+ compiler.new_file("{m.name}.sep")
compiler.compile_module_to_c(m)
end
# compile live & cast type structures
- compiler.new_file
+ self.toolcontext.info("Type coloring", 2)
+ compiler.new_file("{mainmodule.name}.types")
var mtypes = compiler.do_type_coloring
for t in mtypes do
compiler.compile_type_to_c(t)
compiler.display_stats
+ var time1 = get_time
+ self.toolcontext.info("*** END GENERATING C: {time1-time0} ***", 2)
write_and_make(compiler)
end
end
init(mainmodule: MModule, mmbuilder: ModelBuilder, runtime_type_analysis: RapidTypeAnalysis) do
super(mainmodule, mmbuilder)
- self.header = new_visitor
+ var file = new_file("nit.common")
+ self.header = new CodeWriter(file)
self.runtime_type_analysis = runtime_type_analysis
- self.do_property_coloring
self.compile_box_kinds
end
redef fun compile_header_structs do
self.header.add_decl("typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */")
self.compile_header_attribute_structs
- self.header.add_decl("struct class \{ int box_kind; nitmethod_t vft[1]; \}; /* general C type representing a Nit class. */")
+ self.header.add_decl("struct class \{ int box_kind; nitmethod_t vft[]; \}; /* general C type representing a Nit class. */")
# With resolution_table_table, all live type resolution are stored in a big table: resolution_table
- self.header.add_decl("struct type \{ int id; const char *name; int color; short int is_nullable; struct types *resolution_table; int table_size; int type_table[1]; \}; /* general C type representing a Nit type. */")
+ self.header.add_decl("struct type \{ int id; const char *name; int color; short int is_nullable; const struct types *resolution_table; int table_size; int type_table[]; \}; /* general C type representing a Nit type. */")
+ self.header.add_decl("struct instance \{ const struct type *type; const struct class *class; nitattribute_t attrs[]; \}; /* general C type representing a Nit instance. */")
if modelbuilder.toolcontext.opt_phmod_typing.value or modelbuilder.toolcontext.opt_phand_typing.value then
- self.header.add_decl("struct types \{ int mask; struct type *types[1]; \}; /* a list types (used for vts, fts and unresolved lists). */")
+ self.header.add_decl("struct types \{ int mask; const struct type *types[]; \}; /* a list types (used for vts, fts and unresolved lists). */")
else
- self.header.add_decl("struct types \{ struct type *types[1]; \}; /* a list types (used for vts, fts and unresolved lists). */")
+ self.header.add_decl("struct types \{ int dummy; const struct type *types[]; \}; /* a list types (used for vts, fts and unresolved lists). */")
end
if modelbuilder.toolcontext.opt_phmod_typing.value then
self.header.add_decl("#define HASH(mask, id) ((mask)&(id))")
end
- self.header.add_decl("typedef struct \{ struct type *type; struct class *class; nitattribute_t attrs[1]; \} val; /* general C type representing a Nit instance. */")
+ self.header.add_decl("typedef struct instance val; /* general C type representing a Nit instance. */")
end
fun compile_header_attribute_structs
end
fun compile_color_consts(colors: Map[Object, Int]) do
+ var v = new_visitor
for m, c in colors do
if color_consts_done.has(m) then continue
if m isa MProperty then
if modelbuilder.toolcontext.opt_inline_coloring_numbers.value then
- self.header.add_decl("#define {m.const_color} {c}")
+ self.provide_declaration(m.const_color, "#define {m.const_color} {c}")
else
- self.header.add_decl("extern const int {m.const_color};")
- self.header.add("const int {m.const_color} = {c};")
+ self.provide_declaration(m.const_color, "extern const int {m.const_color};")
+ v.add("const int {m.const_color} = {c};")
end
else if m isa MType then
if modelbuilder.toolcontext.opt_inline_coloring_numbers.value then
- self.header.add_decl("#define {m.const_color} {c}")
+ self.provide_declaration(m.const_color, "#define {m.const_color} {c}")
else
- self.header.add_decl("extern const int {m.const_color};")
- self.header.add("const int {m.const_color} = {c};")
+ self.provide_declaration(m.const_color, "extern const int {m.const_color};")
+ v.add("const int {m.const_color} = {c};")
end
end
color_consts_done.add(m)
# Layouts
var method_layout_builder: PropertyLayoutBuilder[MMethod]
var attribute_layout_builder: PropertyLayoutBuilder[MAttribute]
- if modelbuilder.toolcontext.opt_bm_typing.value then
- method_layout_builder = new MMethodBMizer(self.mainmodule)
- attribute_layout_builder = new MAttributeBMizer(self.mainmodule)
- else
- method_layout_builder = new MMethodColorer(self.mainmodule)
- attribute_layout_builder = new MAttributeColorer(self.mainmodule)
- end
+ #FIXME PH and BM layouts too slow for large programs
+ #if modelbuilder.toolcontext.opt_bm_typing.value then
+ # method_layout_builder = new MMethodBMizer(self.mainmodule)
+ # attribute_layout_builder = new MAttributeBMizer(self.mainmodule)
+ #else if modelbuilder.toolcontext.opt_phmod_typing.value then
+ # method_layout_builder = new MMethodHasher(new PHModOperator, self.mainmodule)
+ # attribute_layout_builder = new MAttributeHasher(new PHModOperator, self.mainmodule)
+ #else if modelbuilder.toolcontext.opt_phand_typing.value then
+ # method_layout_builder = new MMethodHasher(new PHAndOperator, self.mainmodule)
+ # attribute_layout_builder = new MAttributeHasher(new PHAndOperator, self.mainmodule)
+ #else
+ method_layout_builder = new MMethodColorer(self.mainmodule)
+ attribute_layout_builder = new MAttributeColorer(self.mainmodule)
+ #end
# methods coloration
var method_layout = method_layout_builder.build_layout(mclasses)
end
for mtype in mtypes do
- retieve_live_partial_types(mtype)
+ retrieve_partial_types(mtype)
end
mtypes.add_all(self.partial_types)
return tables
end
- fun retieve_live_partial_types(mtype: MType) do
+ fun retrieve_partial_types(mtype: MType) do
# add formal types arguments to mtypes
if mtype isa MGenericType then
for ft in mtype.arguments do
abort
end
self.partial_types.add(ft)
- retieve_live_partial_types(ft)
+ retrieve_partial_types(ft)
end
end
var mclass_type: MClassType
for pd in cd.mpropdefs do
if not pd isa MMethodDef then continue
#print "compile {pd} @ {cd} @ {mmodule}"
- var r = new SeparateRuntimeFunction(pd)
+ var r = pd.separate_runtime_function
r.compile_to_c(self)
- if true or cd.bound_mtype.ctype != "val*" then
- var r2 = new VirtualRuntimeFunction(pd)
- r2.compile_to_c(self)
- end
+ var r2 = pd.virtual_runtime_function
+ r2.compile_to_c(self)
end
end
self.mainmodule = old_module
v.add_decl("/* runtime type {mtype} */")
# extern const struct type_X
- self.header.add_decl("extern const struct type_{c_name} type_{c_name};")
- self.header.add_decl("struct type_{c_name} \{")
- self.header.add_decl("int id;")
- self.header.add_decl("const char *name;")
- self.header.add_decl("int color;")
- self.header.add_decl("short int is_nullable;")
- self.header.add_decl("const struct types *resolution_table;")
- self.header.add_decl("int table_size;")
- self.header.add_decl("int type_table[{self.type_tables[mtype].length}];")
- self.header.add_decl("\};")
+ self.provide_declaration("type_{c_name}", "extern const struct type type_{c_name};")
# const struct type_X
- v.add_decl("const struct type_{c_name} type_{c_name} = \{")
+ v.add_decl("const struct type type_{c_name} = \{")
v.add_decl("{self.type_layout.ids[mtype]},")
v.add_decl("\"{mtype}\", /* class_name_string */")
var layout = self.type_layout
v.add_decl("0,")
end
if compile_type_resolution_table(mtype) then
- v.add_decl("(struct types*) &resolution_table_{c_name},")
+ v.require_declaration("resolution_table_{c_name}")
+ v.add_decl("&resolution_table_{c_name},")
else
v.add_decl("NULL,")
end
var layout = self.resolution_layout
# extern const struct resolution_table_X resolution_table_X
- self.header.add_decl("extern const struct resolution_table_{mtype.c_name} resolution_table_{mtype.c_name};")
- self.header.add_decl("struct resolution_table_{mtype.c_name} \{")
- if layout isa PHLayout[MClassType, MType] then
- self.header.add_decl("int mask;")
- end
- self.header.add_decl("struct type *types[{self.resolution_tables[mclass_type].length}];")
- self.header.add_decl("\};")
+ self.provide_declaration("resolution_table_{mtype.c_name}", "extern const struct types resolution_table_{mtype.c_name};")
# const struct fts_table_X fts_table_X
var v = new_visitor
- v.add_decl("const struct resolution_table_{mtype.c_name} resolution_table_{mtype.c_name} = \{")
+ v.add_decl("const struct types resolution_table_{mtype.c_name} = \{")
if layout isa PHLayout[MClassType, MType] then
v.add_decl("{layout.masks[mclass_type]},")
+ else
+ v.add_decl("0, /* dummy */")
end
v.add_decl("\{")
for t in self.resolution_tables[mclass_type] do
var tv = t.resolve_for(mclass_type, mclass_type, self.mainmodule, true)
# FIXME: What typeids means here? How can a tv not be live?
if self.type_layout.ids.has_key(tv) then
- v.add_decl("(struct type*)&type_{tv.c_name}, /* {t}: {tv} */")
+ v.require_declaration("type_{tv.c_name}")
+ v.add_decl("&type_{tv.c_name}, /* {t}: {tv} */")
else
v.add_decl("NULL, /* empty ({t}: {tv} not a live type) */")
end
end
end
- v.add_decl("\},")
+ v.add_decl("\}")
v.add_decl("\};")
return true
end
v.add_decl("/* runtime class {c_name} */")
- self.header.add_decl("struct class_{c_name} \{")
- self.header.add_decl("int box_kind;")
- self.header.add_decl("nitmethod_t vft[{vft.length}];")
- self.header.add_decl("\};")
-
# Build class vft
- self.header.add_decl("extern const struct class_{c_name} class_{c_name};")
- v.add_decl("const struct class_{c_name} class_{c_name} = \{")
+ self.provide_declaration("class_{c_name}", "extern const struct class class_{c_name};")
+ v.add_decl("const struct class class_{c_name} = \{")
v.add_decl("{self.box_kind_of(mclass)}, /* box_kind */")
v.add_decl("\{")
for i in [0 .. vft.length[ do
if mpropdef == null then
v.add_decl("NULL, /* empty */")
else
- if true or mpropdef.mclassdef.bound_mtype.ctype != "val*" then
- v.add_decl("(nitmethod_t)VIRTUAL_{mpropdef.c_name}, /* pointer to {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
- else
- v.add_decl("(nitmethod_t){mpropdef.c_name}, /* pointer to {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
- end
+ assert mpropdef isa MMethodDef
+ var rf = mpropdef.virtual_runtime_function
+ v.require_declaration(rf.c_name)
+ v.add_decl("(nitmethod_t){rf.c_name}, /* pointer to {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
end
end
v.add_decl("\}")
if not self.runtime_type_analysis.live_types.has(mtype) then return
+ #Build BOX
self.header.add_decl("val* BOX_{c_name}({mtype.ctype});")
v.add_decl("/* allocate {mtype} */")
v.add_decl("val* BOX_{mtype.c_name}({mtype.ctype} value) \{")
- v.add("struct instance_{c_name}*res = GC_MALLOC(sizeof(struct instance_{c_name}));")
- v.add("res->type = (struct type*) &type_{c_name};")
- v.add("res->class = (struct class*) &class_{c_name};")
+ v.add("struct instance_{c_name}*res = nit_alloc(sizeof(struct instance_{c_name}));")
+ v.require_declaration("type_{c_name}")
+ v.add("res->type = &type_{c_name};")
+ v.require_declaration("class_{c_name}")
+ v.add("res->class = &class_{c_name};")
v.add("res->value = value;")
v.add("return (val*)res;")
v.add("\}")
return
- end
-
- var is_native_array = mclass.name == "NativeArray"
-
- var sig
- if is_native_array then
- sig = "int length, struct type* type"
- else
- sig = "struct type* type"
- end
-
- #Build instance struct
- #extern const struct instance_array__NativeArray instance_array__NativeArray;
- self.header.add_decl("struct instance_{c_name} \{")
- self.header.add_decl("const struct type *type;")
- self.header.add_decl("const struct class *class;")
- self.header.add_decl("nitattribute_t attrs[{attrs.length}];")
- if is_native_array then
+ else if mclass.name == "NativeArray" then
+ #Build instance struct
+ self.header.add_decl("struct instance_{c_name} \{")
+ self.header.add_decl("const struct type *type;")
+ self.header.add_decl("const struct class *class;")
# NativeArrays are just a instance header followed by an array of values
self.header.add_decl("val* values[0];")
- end
- self.header.add_decl("\};")
+ self.header.add_decl("\};")
+ #Build NEW
+ self.provide_declaration("NEW_{c_name}", "{mtype.ctype} NEW_{c_name}(int length, const struct type* type);")
+ v.add_decl("/* allocate {mtype} */")
+ v.add_decl("{mtype.ctype} NEW_{c_name}(int length, const struct type* type) \{")
+ var res = v.new_named_var(mtype, "self")
+ res.is_exact = true
+ var mtype_elt = mtype.arguments.first
+ v.add("{res} = nit_alloc(sizeof(struct instance_{c_name}) + length*sizeof({mtype_elt.ctype}));")
+ v.add("{res}->type = type;")
+ hardening_live_type(v, "type")
+ v.require_declaration("class_{c_name}")
+ v.add("{res}->class = &class_{c_name};")
+ v.add("return {res};")
+ v.add("\}")
+ return
+ end
- self.header.add_decl("{mtype.ctype} NEW_{c_name}({sig});")
+ #Build NEW
+ self.provide_declaration("NEW_{c_name}", "{mtype.ctype} NEW_{c_name}(const struct type* type);")
v.add_decl("/* allocate {mtype} */")
- v.add_decl("{mtype.ctype} NEW_{c_name}({sig}) \{")
+ v.add_decl("{mtype.ctype} NEW_{c_name}(const struct type* type) \{")
var res = v.new_named_var(mtype, "self")
res.is_exact = true
- if is_native_array then
- var mtype_elt = mtype.arguments.first
- v.add("{res} = GC_MALLOC(sizeof(struct instance_{c_name}) + length*sizeof({mtype_elt.ctype}));")
- else
- v.add("{res} = GC_MALLOC(sizeof(struct instance_{c_name}));")
- end
+ v.add("{res} = nit_alloc(sizeof(struct instance) + {attrs.length}*sizeof(nitattribute_t));")
v.add("{res}->type = type;")
- if v.compiler.modelbuilder.toolcontext.opt_hardening.value then
- v.add("if(type == NULL) \{")
- v.add_abort("type null")
- v.add("\}")
- v.add("if(type->resolution_table == NULL) \{")
- v.add("fprintf(stderr, \"Insantiation of a dead type: %s\\n\", type->name);")
- v.add_abort("type dead")
- v.add("\}")
- end
- v.add("{res}->class = (struct class*) &class_{c_name};")
-
+ hardening_live_type(v, "type")
+ v.require_declaration("class_{c_name}")
+ v.add("{res}->class = &class_{c_name};")
self.generate_init_attr(v, res, mtype)
v.add("return {res};")
v.add("\}")
generate_check_init_instance(mtype)
end
+ # Add a dynamic test to ensure that the type referenced by `t` is a live type
+ fun hardening_live_type(v: VISITOR, t: String)
+ do
+ if not v.compiler.modelbuilder.toolcontext.opt_hardening.value then return
+ v.add("if({t} == NULL) \{")
+ v.add_abort("type null")
+ v.add("\}")
+ v.add("if({t}->resolution_table == NULL) \{")
+ v.add("fprintf(stderr, \"Insantiation of a dead type: %s\\n\", {t}->name);")
+ v.add_abort("type dead")
+ v.add("\}")
+ end
+
redef fun generate_check_init_instance(mtype)
do
if self.modelbuilder.toolcontext.opt_no_check_initialization.value then return
var v = self.new_visitor
var c_name = mtype.mclass.c_name
var res = new RuntimeVariable("self", mtype, mtype)
- self.header.add_decl("void CHECK_NEW_{c_name}({mtype.ctype});")
+ self.provide_declaration("CHECK_NEW_{c_name}", "void CHECK_NEW_{c_name}({mtype.ctype});")
v.add_decl("/* allocate {mtype} */")
v.add_decl("void CHECK_NEW_{c_name}({mtype.ctype} {res}) \{")
self.generate_check_attr(v, res, mtype)
if value.mtype.ctype == "val*" then
return "{value}->type"
else
+ self.require_declaration("type_{value.mtype.c_name}")
return "(&type_{value.mtype.c_name})"
end
end
redef fun send(mmethod, arguments)
do
if arguments.first.mcasttype.ctype != "val*" then
- return self.monomorphic_send(mmethod, arguments.first.mcasttype, arguments)
+ # In order to shortcut the primitive, we need to find the most specific method
+ # Howverr, because of performance (no flattening), we always work on the realmainmodule
+ var m = self.compiler.mainmodule
+ self.compiler.mainmodule = self.compiler.realmainmodule
+ var res = self.monomorphic_send(mmethod, arguments.first.mcasttype, arguments)
+ self.compiler.mainmodule = m
+ return res
end
var res: nullable RuntimeVariable
var r
if ret == null then r = "void" else r = ret.ctype
+ self.require_declaration(mmethod.const_color)
var call = "(({r} (*)({s}))({arguments.first}->class->vft[{mmethod.const_color}]))({ss}) /* {mmethod} on {arguments.first.inspect}*/"
if res != null then
# Autobox arguments
self.adapt_signature(mmethoddef, arguments)
+ self.require_declaration(mmethoddef.c_name)
if res == null then
self.add("{mmethoddef.c_name}({arguments.join(", ")});")
return null
return res
end
+ self.require_declaration(a.const_color)
if self.compiler.modelbuilder.toolcontext.opt_no_union_attribute.value then
self.add("{res} = {recv}->attrs[{a.const_color}] != NULL; /* {a} on {recv.inspect}*/")
else
var intromclassdef = a.intro.mclassdef
ret = ret.resolve_for(intromclassdef.bound_mtype, intromclassdef.bound_mtype, intromclassdef.mmodule, true)
+ self.require_declaration(a.const_color)
if self.compiler.modelbuilder.toolcontext.opt_no_union_attribute.value then
# Get the attribute or a box (ie. always a val*)
var cret = self.object_type.as_nullable
# Adapt the value to the declared type
value = self.autobox(value, mtype)
+ self.require_declaration(a.const_color)
if self.compiler.modelbuilder.toolcontext.opt_no_union_attribute.value then
var attr = "{recv}->attrs[{a.const_color}]"
if mtype.ctype != "val*" then
redef fun init_instance(mtype)
do
+ self.require_declaration("NEW_{mtype.mclass.c_name}")
var compiler = self.compiler
if mtype isa MGenericType and mtype.need_anchor then
link_unresolved_type(self.frame.mpropdef.mclassdef, mtype)
var recv = self.frame.arguments.first
var recv_type_info = self.type_info(recv)
+ self.require_declaration(mtype.const_color)
if compiler.modelbuilder.toolcontext.opt_phmod_typing.value or compiler.modelbuilder.toolcontext.opt_phand_typing.value then
- return self.new_expr("NEW_{mtype.mclass.c_name}((struct type *) {recv_type_info}->resolution_table->types[HASH({recv_type_info}->resolution_table->mask, {mtype.const_color})])", mtype)
+ return self.new_expr("NEW_{mtype.mclass.c_name}({recv_type_info}->resolution_table->types[HASH({recv_type_info}->resolution_table->mask, {mtype.const_color})])", mtype)
else
- return self.new_expr("NEW_{mtype.mclass.c_name}((struct type *) {recv_type_info}->resolution_table->types[{mtype.const_color}])", mtype)
+ return self.new_expr("NEW_{mtype.mclass.c_name}({recv_type_info}->resolution_table->types[{mtype.const_color}])", mtype)
end
end
compiler.undead_types.add(mtype)
- return self.new_expr("NEW_{mtype.mclass.c_name}((struct type *) &type_{mtype.c_name})", mtype)
+ self.require_declaration("type_{mtype.c_name}")
+ return self.new_expr("NEW_{mtype.mclass.c_name}(&type_{mtype.c_name})", mtype)
end
redef fun check_init_instance(value, mtype)
do
if self.compiler.modelbuilder.toolcontext.opt_no_check_initialization.value then return
+ self.require_declaration("CHECK_NEW_{mtype.mclass.c_name}")
self.add("CHECK_NEW_{mtype.mclass.c_name}({value});")
end
if ntype.need_anchor then
var type_struct = self.get_name("type_struct")
- self.add_decl("struct type* {type_struct};")
+ self.add_decl("const struct type* {type_struct};")
# Either with resolution_table with a direct resolution
link_unresolved_type(self.frame.mpropdef.mclassdef, ntype)
+ self.require_declaration(ntype.const_color)
if compiler.modelbuilder.toolcontext.opt_phmod_typing.value or compiler.modelbuilder.toolcontext.opt_phand_typing.value then
self.add("{type_struct} = {recv_type_info}->resolution_table->types[HASH({recv_type_info}->resolution_table->mask, {ntype.const_color})];")
else
end
else if ntype isa MClassType then
compiler.undead_types.add(mtype)
+ self.require_declaration("type_{mtype.c_name}")
self.add("{cltype} = type_{mtype.c_name}.color;")
self.add("{idtype} = type_{mtype.c_name}.id;")
if compiler.modelbuilder.toolcontext.opt_typing_test_metrics.value then
self.add("{res} = 0; /* is_same_type_test: incompatible types {value1.mtype} vs. {value2.mtype}*/")
else
var mtype1 = value1.mtype.as(MClassType)
- self.add("{res} = ({value2} != NULL) && ({value2}->class == (struct class*) &class_{mtype1.c_name}); /* is_same_type_test */")
+ self.require_declaration("class_{mtype1.c_name}")
+ self.add("{res} = ({value2} != NULL) && ({value2}->class == &class_{mtype1.c_name}); /* is_same_type_test */")
end
else
self.add("{res} = ({value1} == {value2}) || ({value1} != NULL && {value2} != NULL && {value1}->class == {value2}->class); /* is_same_type_test */")
if value.mtype.ctype == "val*" then
self.add "{res} = {value} == NULL ? \"null\" : {value}->type->name;"
else
+ self.require_declaration("type_{value.mtype.c_name}")
self.add "{res} = type_{value.mtype.c_name}.name;"
end
return res
self.add("{res} = 0; /* incompatible types {value1.mtype} vs. {value2.mtype}*/")
else
var mtype1 = value1.mtype.as(MClassType)
- self.add("{res} = ({value2} != NULL) && ({value2}->class == (struct class*) &class_{mtype1.c_name});")
+ self.require_declaration("class_{mtype1.c_name}")
+ self.add("{res} = ({value2} != NULL) && ({value2}->class == &class_{mtype1.c_name});")
self.add("if ({res}) \{")
self.add("{res} = ({self.autobox(value2, value1.mtype)} == {value1});")
self.add("\}")
fun native_array_instance(elttype: MType, length: RuntimeVariable): RuntimeVariable
do
var mtype = self.get_class("NativeArray").get_mtype([elttype])
+ self.require_declaration("NEW_{mtype.mclass.c_name}")
assert mtype isa MGenericType
var compiler = self.compiler
if mtype.need_anchor then
link_unresolved_type(self.frame.mpropdef.mclassdef, mtype)
var recv = self.frame.arguments.first
var recv_type_info = self.type_info(recv)
+ self.require_declaration(mtype.const_color)
if compiler.modelbuilder.toolcontext.opt_phmod_typing.value or compiler.modelbuilder.toolcontext.opt_phand_typing.value then
- return self.new_expr("NEW_{mtype.mclass.c_name}({length}, (struct type *) {recv_type_info}->resolution_table->types[HASH({recv_type_info}->resolution_table->mask, {mtype.const_color})])", mtype)
+ return self.new_expr("NEW_{mtype.mclass.c_name}({length}, {recv_type_info}->resolution_table->types[HASH({recv_type_info}->resolution_table->mask, {mtype.const_color})])", mtype)
else
- return self.new_expr("NEW_{mtype.mclass.c_name}({length}, (struct type *) {recv_type_info}->resolution_table->types[{mtype.const_color}])", mtype)
+ return self.new_expr("NEW_{mtype.mclass.c_name}({length}, {recv_type_info}->resolution_table->types[{mtype.const_color}])", mtype)
end
end
compiler.undead_types.add(mtype)
- return self.new_expr("NEW_{mtype.mclass.c_name}({length}, (struct type *) &type_{mtype.c_name})", mtype)
+ self.require_declaration("type_{mtype.c_name}")
+ return self.new_expr("NEW_{mtype.mclass.c_name}({length}, &type_{mtype.c_name})", mtype)
end
redef fun native_array_def(pname, ret_type, arguments)
end
end
+redef class MMethodDef
+ fun separate_runtime_function: AbstractRuntimeFunction
+ do
+ var res = self.separate_runtime_function_cache
+ if res == null then
+ res = new SeparateRuntimeFunction(self)
+ self.separate_runtime_function_cache = res
+ end
+ return res
+ end
+ private var separate_runtime_function_cache: nullable SeparateRuntimeFunction
+
+ fun virtual_runtime_function: AbstractRuntimeFunction
+ do
+ var res = self.virtual_runtime_function_cache
+ if res == null then
+ res = new VirtualRuntimeFunction(self)
+ self.virtual_runtime_function_cache = res
+ end
+ return res
+ end
+ private var virtual_runtime_function_cache: nullable VirtualRuntimeFunction
+end
+
# The C function associated to a methoddef separately compiled
class SeparateRuntimeFunction
super AbstractRuntimeFunction
end
sig.append(self.c_name)
sig.append("({selfvar.mtype.ctype} {selfvar}")
- comment.append("(self: {selfvar}")
+ comment.append("({selfvar}: {selfvar.mtype}")
arguments.add(selfvar)
for i in [0..msignature.arity[ do
var mtype = msignature.mparameters[i].mtype
if ret != null then
comment.append(": {ret}")
end
- compiler.header.add_decl("{sig};")
+ compiler.provide_declaration(self.c_name, "{sig};")
v.add_decl("/* method {self} for {comment} */")
v.add_decl("{sig} \{")
end
sig.append(self.c_name)
sig.append("({selfvar.mtype.ctype} {selfvar}")
- comment.append("(self: {selfvar}")
+ comment.append("({selfvar}: {selfvar.mtype}")
arguments.add(selfvar)
for i in [0..msignature.arity[ do
var mtype = msignature.mparameters[i].mtype
if ret != null then
comment.append(": {ret}")
end
- compiler.header.add_decl("{sig};")
+ compiler.provide_declaration(self.c_name, "{sig};")
v.add_decl("/* method {self} for {comment} */")
v.add_decl("{sig} \{")
end
frame.returnlabel = v.get_name("RET_LABEL")
- if recv != arguments.first.mtype then
- #print "{self} {recv} {arguments.first}"
+ var subret = v.call(mmethoddef, recv, arguments)
+ if ret != null then
+ assert subret != null
+ v.assign(frame.returnvar.as(not null), subret)
end
- mmethoddef.compile_inside_to_c(v, arguments)
v.add("{frame.returnlabel.as(not null)}:;")
if ret != null then
fun run_separate_erasure_compiler(mainmodule: MModule, runtime_type_analysis: RapidTypeAnalysis)
do
var time0 = get_time
- self.toolcontext.info("*** COMPILING TO C ***", 1)
+ self.toolcontext.info("*** GENERATING C ***", 1)
var compiler = new SeparateErasureCompiler(mainmodule, self, runtime_type_analysis)
compiler.compile_header
# compile class structures
- compiler.new_file
+ self.toolcontext.info("Property coloring", 2)
+ compiler.new_file("{mainmodule.name}.tables")
+ compiler.do_property_coloring
for m in mainmodule.in_importation.greaters do
for mclass in m.intro_mclasses do
compiler.compile_class_to_c(mclass)
end
end
+ compiler.compile_color_consts(compiler.vt_layout.pos)
# The main function of the C
- compiler.new_file
+ compiler.new_file("{mainmodule.name}.main")
compiler.compile_main_function
# compile methods
for m in mainmodule.in_importation.greaters do
- compiler.new_file
+ self.toolcontext.info("Generate C for module {m}", 2)
+ compiler.new_file("{m.name}.sep")
compiler.compile_module_to_c(m)
end
compiler.display_stats
+ var time1 = get_time
+ self.toolcontext.info("*** END GENERATING C: {time1-time0} ***", 2)
write_and_make(compiler)
end
end
var vt_coloring = new MVirtualTypePropColorer(mainmodule)
var vt_layout = vt_coloring.build_layout(mclasses)
self.vt_tables = build_vt_tables(mclasses, vt_layout)
- self.compile_color_consts(vt_layout.pos)
self.vt_layout = vt_layout
end
redef fun compile_header_structs do
self.header.add_decl("typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */")
self.compile_header_attribute_structs
- self.header.add_decl("struct class \{ int id; const char *name; int box_kind; int color; struct vts_table *vts_table; struct type_table *type_table; nitmethod_t vft[1]; \}; /* general C type representing a Nit class. */")
- self.header.add_decl("struct type_table \{ int size; int table[1]; \}; /* colorized type table. */")
- self.header.add_decl("struct vts_entry \{ short int is_nullable; struct class *class; \}; /* link (nullable or not) between the vts and is bound. */")
+ self.header.add_decl("struct class \{ int id; const char *name; int box_kind; int color; const struct vts_table *vts_table; const struct type_table *type_table; nitmethod_t vft[]; \}; /* general C type representing a Nit class. */")
+ self.header.add_decl("struct type_table \{ int size; int table[]; \}; /* colorized type table. */")
+ self.header.add_decl("struct vts_entry \{ short int is_nullable; const struct class *class; \}; /* link (nullable or not) between the vts and is bound. */")
if self.vt_layout isa PHLayout[MClass, MVirtualTypeProp] then
- self.header.add_decl("struct vts_table \{ int mask; struct vts_entry vts[1]; \}; /* vts list of a C type representation. */")
+ self.header.add_decl("struct vts_table \{ int mask; const struct vts_entry vts[]; \}; /* vts list of a C type representation. */")
else
- self.header.add_decl("struct vts_table \{ struct vts_entry vts[1]; \}; /* vts list of a C type representation. */")
+ self.header.add_decl("struct vts_table \{ int dummy; const struct vts_entry vts[]; \}; /* vts list of a C type representation. */")
end
if modelbuilder.toolcontext.opt_phmod_typing.value then
self.header.add_decl("#define HASH(mask, id) ((mask)&(id))")
end
- self.header.add_decl("typedef struct val \{ struct class *class; nitattribute_t attrs[1]; \} val; /* general C type representing a Nit instance. */")
+ self.header.add_decl("typedef struct instance \{ const struct class *class; nitattribute_t attrs[1]; \} val; /* general C type representing a Nit instance. */")
end
redef fun compile_class_to_c(mclass: MClass)
v.add_decl("/* runtime class {c_name} */")
- self.header.add_decl("extern const struct class_{c_name} class_{c_name};")
- self.header.add_decl("struct class_{c_name} \{")
- self.header.add_decl("int id;")
- self.header.add_decl("const char *name;")
- self.header.add_decl("int box_kind;")
- self.header.add_decl("int color;")
- self.header.add_decl("const struct vts_table *vts_table;")
- self.header.add_decl("struct type_table *type_table;")
- self.header.add_decl("nitmethod_t vft[{vft.length}];")
- self.header.add_decl("\};")
+ self.provide_declaration("class_{c_name}", "extern const struct class class_{c_name};")
+ v.add_decl("extern const struct type_table type_table_{c_name};")
# Build class vft
- v.add_decl("const struct class_{c_name} class_{c_name} = \{")
+ v.add_decl("const struct class class_{c_name} = \{")
v.add_decl("{self.class_layout.ids[mclass]},")
v.add_decl("\"{mclass.name}\", /* class_name_string */")
v.add_decl("{self.box_kind_of(mclass)}, /* box_kind */")
v.add_decl("{layout.pos[mclass]},")
end
if build_class_vts_table(mclass) then
- v.add_decl("(const struct vts_table*) &vts_table_{c_name},")
+ v.require_declaration("vts_table_{c_name}")
+ v.add_decl("&vts_table_{c_name},")
else
v.add_decl("NULL,")
end
- v.add_decl("(struct type_table*) &type_table_{c_name},")
+ v.add_decl("&type_table_{c_name},")
v.add_decl("\{")
for i in [0 .. vft.length[ do
var mpropdef = vft[i]
v.add_decl("NULL, /* empty */")
else
if true or mpropdef.mclassdef.bound_mtype.ctype != "val*" then
+ v.require_declaration("VIRTUAL_{mpropdef.c_name}")
v.add_decl("(nitmethod_t)VIRTUAL_{mpropdef.c_name}, /* pointer to {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
else
+ v.require_declaration("{mpropdef.c_name}")
v.add_decl("(nitmethod_t){mpropdef.c_name}, /* pointer to {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
end
end
v.add_decl("\};")
# Build class type table
- self.header.add_decl("extern const struct type_table_{c_name} type_table_{c_name};")
- self.header.add_decl("struct type_table_{c_name} \{")
- self.header.add_decl("int size;")
- self.header.add_decl("int table[{class_table.length}];")
- self.header.add_decl("\};")
- v.add_decl("const struct type_table_{c_name} type_table_{c_name} = \{")
+ v.add_decl("const struct type_table type_table_{c_name} = \{")
v.add_decl("{class_table.length},")
v.add_decl("\{")
for msuper in class_table do
v.add_decl("\}")
v.add_decl("\};")
- #Build instance struct
if mtype.ctype != "val*" then
+ #Build instance struct
self.header.add_decl("struct instance_{c_name} \{")
self.header.add_decl("const struct class *class;")
self.header.add_decl("{mtype.ctype} value;")
self.header.add_decl("\};")
+ #Build BOX
self.header.add_decl("val* BOX_{c_name}({mtype.ctype});")
v.add_decl("/* allocate {mtype} */")
v.add_decl("val* BOX_{mtype.c_name}({mtype.ctype} value) \{")
- v.add("struct instance_{c_name}*res = GC_MALLOC(sizeof(struct instance_{c_name}));")
- v.add("res->class = (struct class*) &class_{c_name};")
+ v.add("struct instance_{c_name}*res = nit_alloc(sizeof(struct instance_{c_name}));")
+ v.require_declaration("class_{c_name}")
+ v.add("res->class = &class_{c_name};")
v.add("res->value = value;")
v.add("return (val*)res;")
v.add("\}")
return
- end
-
- var is_native_array = mclass.name == "NativeArray"
-
- var sig
- if is_native_array then
- sig = "int length"
- else
- sig = ""
- end
+ else if mclass.name == "NativeArray" then
+ #Build instance struct
+ self.header.add_decl("struct instance_{c_name} \{")
+ self.header.add_decl("const struct class *class;")
+ self.header.add_decl("val* values[];")
+ self.header.add_decl("\};")
- #Build instance struct
- #extern const struct instance_array__NativeArray instance_array__NativeArray;
- self.header.add_decl("struct instance_{c_name} \{")
- self.header.add_decl("const struct class *class;")
- self.header.add_decl("nitattribute_t attrs[{attrs.length}];")
- if is_native_array then
- # NativeArrays are just a instance header followed by an array of values
- self.header.add_decl("val* values[0];")
+ #Build NEW
+ self.provide_declaration("NEW_{c_name}", "{mtype.ctype} NEW_{c_name}(int length);")
+ v.add_decl("/* allocate {mtype} */")
+ v.add_decl("{mtype.ctype} NEW_{c_name}(int length) \{")
+ var res = v.new_named_var(mtype, "self")
+ res.is_exact = true
+ var mtype_elt = mtype.arguments.first
+ v.add("{res} = nit_alloc(sizeof(struct instance_{c_name}) + length*sizeof({mtype_elt.ctype}));")
+ v.require_declaration("class_{c_name}")
+ v.add("{res}->class = &class_{c_name};")
+ v.add("return {res};")
+ v.add("\}")
+ return
end
- self.header.add_decl("\};")
-
- self.header.add_decl("{mtype.ctype} NEW_{c_name}({sig});")
+ #Build NEW
+ self.provide_declaration("NEW_{c_name}", "{mtype.ctype} NEW_{c_name}(void);")
v.add_decl("/* allocate {mtype} */")
- v.add_decl("{mtype.ctype} NEW_{c_name}({sig}) \{")
+ v.add_decl("{mtype.ctype} NEW_{c_name}(void) \{")
var res = v.new_named_var(mtype, "self")
res.is_exact = true
- if is_native_array then
- var mtype_elt = mtype.arguments.first
- v.add("{res} = GC_MALLOC(sizeof(struct instance_{c_name}) + length*sizeof({mtype_elt.ctype}));")
- else
- v.add("{res} = GC_MALLOC(sizeof(struct instance_{c_name}));")
- end
- v.add("{res}->class = (struct class*) &class_{c_name};")
-
+ v.add("{res} = nit_alloc(sizeof(struct instance) + {attrs.length}*sizeof(nitattribute_t));")
+ v.require_declaration("class_{c_name}")
+ v.add("{res}->class = &class_{c_name};")
self.generate_init_attr(v, res, mtype)
v.add("return {res};")
v.add("\}")
private fun build_class_vts_table(mclass: MClass): Bool do
if self.vt_tables[mclass].is_empty then return false
- self.header.add_decl("extern const struct vts_table_{mclass.c_name} vts_table_{mclass.c_name};")
- self.header.add_decl("struct vts_table_{mclass.c_name} \{")
- if self.vt_layout isa PHLayout[MClass, MVirtualTypeProp] then
- self.header.add_decl("int mask;")
- end
- self.header.add_decl("struct vts_entry vts[{self.vt_tables[mclass].length}];")
- self.header.add_decl("\};")
+ self.provide_declaration("vts_table_{mclass.c_name}", "extern const struct vts_table vts_table_{mclass.c_name};")
var v = new_visitor
- v.add_decl("const struct vts_table_{mclass.c_name} vts_table_{mclass.c_name} = \{")
+ v.add_decl("const struct vts_table vts_table_{mclass.c_name} = \{")
if self.vt_layout isa PHLayout[MClass, MVirtualTypeProp] then
#TODO redo this when PHPropertyLayoutBuilder will be implemented
#v.add_decl("{vt_masks[mclass]},")
+ else
+ v.add_decl("0, /* dummy */")
end
v.add_decl("\{")
bound = retrieve_vt_bound(mclass.intro.bound_mtype, bound.mtype)
is_null = 1
end
- v.add_decl("\{{is_null}, (struct class*)&class_{bound.as(MClassType).mclass.c_name}\}, /* {vt} */")
+ var vtclass = bound.as(MClassType).mclass
+ v.require_declaration("class_{vtclass.c_name}")
+ v.add_decl("\{{is_null}, &class_{vtclass.c_name}\}, /* {vt} */")
end
end
v.add_decl("\},")
return res
end
- redef fun init_instance(mtype) do return self.new_expr("NEW_{mtype.mclass.c_name}()", mtype)
+ redef fun init_instance(mtype)
+ do
+ self.require_declaration("NEW_{mtype.mclass.c_name}")
+ return self.new_expr("NEW_{mtype.mclass.c_name}()", mtype)
+ end
redef fun type_test(value, mtype, tag)
do
class_ptr = "{value}->class->"
else
var mclass = value.mtype.as(MClassType).mclass
+ self.require_declaration("class_{mclass.c_name}")
class_ptr = "class_{mclass.c_name}."
end
if mtype isa MClassType then
+ self.require_declaration("class_{mtype.mclass.c_name}")
self.add("{cltype} = class_{mtype.mclass.c_name}.color;")
self.add("{idtype} = class_{mtype.mclass.c_name}.id;")
if compiler.modelbuilder.toolcontext.opt_typing_test_metrics.value then
recv_ptr = "{recv}->class->"
else
var mclass = recv.mtype.as(MClassType).mclass
+ self.require_declaration("class_{mclass.c_name}")
recv_ptr = "class_{mclass.c_name}."
end
var entry = self.get_name("entry")
self.add("struct vts_entry {entry};")
+ self.require_declaration(mtype.mproperty.const_color)
if self.compiler.as(SeparateErasureCompiler).vt_layout isa PHLayout[MClass, MVirtualTypeProp] then
self.add("{entry} = {recv_ptr}vts_table->vts[HASH({recv_ptr}vts_table->mask, {mtype.mproperty.const_color})];")
else
if value.mtype.ctype == "val*" then
self.add "{res} = {value} == NULL ? \"null\" : {value}->class->name;"
else
+ self.require_declaration("class_{value.mtype.c_name}")
self.add "{res} = class_{value.mtype.c_name}.name;"
end
return res
self.add("\{ /* {res} = array_instance Array[{elttype}] */")
var nat = self.new_var(self.get_class("NativeArray").get_mtype([elttype]))
nat.is_exact = true
+ self.require_declaration("NEW_{nclass.c_name}")
self.add("{nat} = NEW_{nclass.c_name}({array.length});")
for i in [0..array.length[ do
var r = self.autobox(array[i], self.object_type)
redef fun calloc_array(ret_type, arguments)
do
var ret = ret_type.as(MClassType)
+ self.require_declaration("NEW_{ret.mclass.c_name}")
self.ret(self.new_expr("NEW_{ret.mclass.c_name}({arguments[1]})", ret_type))
end
end
fun integrate_separate_options( options : String, mod : MMModule )
do
- for line in options.split do
+ for line in options.split_with('\n') do
line = line.strip_extension( "\n" )
separate_options.parse( line.split_with( ' ' ) )
var rest = new Array[String]
import toolcontext
import parser
+import phase
+
+import modelbuilder #FIXME useless
+
+redef class ToolContext
+ var simple_misc_analysis_phase: Phase = new SimpleMiscAnalysisPhase(self, null)
+end
+
+private class SimpleMiscAnalysisPhase
+ super Phase
+ redef fun process_nmodule(nmodule) do nmodule.do_simple_misc_analysis(toolcontext)
+end
redef class AModule
# Visit the module to detect easy warnings that does not need the metamodel or the importation
# Compute _cstring and _cstring_length using string_text
protected fun compute_string_infos
do
- var len = 0
- var str = string_text
+ var str = n_string.text
+ if str.length >= 6 and str[0] == str[1] then
+ str = str.substring(3, str.length - 6)
+ else
+ str = str.substring(1, str.length - 2)
+ end
var res = new Buffer
+ var len = 0
var i = 0
while i < str.length do
var c = str[i]
res.add(c)
end
c = c2
+ else if c == '"' then
+ res.add('\\')
+ else if c == '\n' then
+ res.add('\\')
+ c = 'n'
end
len = len + 1
res.add(c)
var no_print = false
var only_lexer = false
var need_help = false
+var no_file = false
while not args.is_empty and args.first.first == '-' do
if args.first == "-n" then
else if args.first == "-l" then
only_lexer = true
else if args.first == "-p" then
- only_lexer = false
+ only_lexer = false
+ else if args.first == "-e" then
+ no_file = true
else if args.first == "-h" or args.first == "-?" then
need_help = true
else
print(" -n do not print anything")
print(" -l only lexer")
print(" -p lexer and parser (default)")
+ print(" -e instead on files, each argument is a content to parse")
print(" -h print this help")
else
for a in args do
- var f = new IFStream.open(a)
- var lexer = new Lexer(new SourceFile(a, f))
+ var source
+ if no_file then
+ source = new SourceFile.from_string("", a)
+ else
+ var f = new IFStream.open(a)
+ source = new SourceFile(a, f)
+ f.close
+ end
+ var lexer = new Lexer(source)
if only_lexer then
var token = lexer.next
while not token isa EOF do
end
token = lexer.next
end
- f.close
else
var parser = new Parser(lexer)
var tree = parser.parse
- f.close
+
+ var error = tree.n_eof
+ if error isa AError then
+ print("Error at {error.location}:\n\t{error.message}")
+ return
+ end
if not no_print then
(new PrintTreeVisitor).enter_visit(tree)
module typing
import flow
-import modelbuilder
+import modelize_property
+import phase
+import local_var_init
+
+redef class ToolContext
+ var typing_phase: Phase = new TypingPhase(self, [flow_phase, modelize_property_phase, local_var_init_phase])
+end
+
+private class TypingPhase
+ super Phase
+ redef fun process_npropdef(npropdef) do npropdef.do_typing(toolcontext.modelbuilder)
+end
private class TypeVisitor
var modelbuilder: ModelBuilder
PROGS=*.nit ../examples/*.nit ../examples/leapfrog/leapfrog.nit ../examples/shoot/shoot_logic.nit ../lib/*.nit ../src/nitdoc.nit ../src/nits.nit ../src/nitc.nit ../src/test_parser.nit ../src/nit.nit ../src/nitmetrics.nit ../src/nitg.nit
-all: separate global niti nitg nitg-s nitg-s-bm nitg-s-phmod nitg-s-phand nitg-e nitg-e-bm nitg-e-phmod nitg-e-phand icode
+all: separate niti nitg nitg-s
+
+alot: separate global niti nitg nitg-s nitg-s-bm nitg-s-phmod nitg-s-phand nitg-e nitg-e-bm nitg-e-phmod nitg-e-phand icode
separate:
- ./tests.sh ${PROGS}
+ ./testfull.sh
some:
./tests.sh base_compile.nit base_attr.nit base_gen.nit test_gen_inh.nit bench_fib.nit example_objet.nit
global:
- ./tests.sh -o --global ${PROGS}
+ ./testfull.sh -o --global
niti:
- ./tests.sh --engine niti ${PROGS}
+ ./testfull.sh --engine niti
nitg:
- ./tests.sh --engine nitg ${PROGS}
+ ./testfull.sh --engine nitg
nitg-s:
- ./tests.sh --engine nitg-s ${PROGS}
+ ./testfull.sh --engine nitg-s
nitg-s-bm:
- ./tests.sh --engine nitg-s -o --bm-typing ${PROGS}
+ ./testfull.sh --engine nitg-s -o --bm-typing
nitg-s-phmod:
- ./tests.sh --engine nitg-s -o --phmod-typing ${PROGS}
+ ./testfull.sh --engine nitg-s -o --phmod-typing
nitg-s-phand:
- ./tests.sh --engine nitg-s -o --phand-typing ${PROGS}
+ ./testfull.sh --engine nitg-s -o --phand-typing
nitg-e:
- ./tests.sh --engine nitg-e ${PROGS}
+ ./testfull.sh --engine nitg-e
nitg-e-bm:
- ./tests.sh --engine nitg-e -o --bm-typing ${PROGS}
+ ./testfull.sh --engine nitg-e -o --bm-typing
nitg-e-phmod:
- ./tests.sh --engine nitg-e -o --phmod-typing ${PROGS}
+ ./testfull.sh --engine nitg-e -o --phmod-typing
nitg-e-phand:
- ./tests.sh --engine nitg-e -o --phand-typing ${PROGS}
-
-nitdoc:
- ./tests.sh ../src/nitdoc.nit
+ ./testfull.sh --engine nitg-e -o --phand-typing
icode:
./tests_icode.sh icode*.nit
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import kernel
+
+class Base
+ var foo: Int = 10
+ fun -: Int do return foo + 20
+ fun bar: Int = -self + 40
+end
+
+class CMinus
+ super Base
+
+ redef fun - is cached do return foo + 1
+end
+
+class CBar
+ super Base
+
+ redef fun bar is cached do return -self + 2
+end
+
+fun test(b: Base)
+do
+ b.foo.output
+ (-b).output
+ b.bar.output
+ b.foo = 110
+ b.foo.output
+ (-b).output
+ b.bar.output
+ '\n'.output
+end
+
+test(new Base)
+test(new CMinus)
+test(new CBar)
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2006-2008 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import abstract_collection
+
+class A
+ fun foo do 1.output
+end
+
+class G[E]
+ super Collection[E]
+
+ var a: A
+
+ redef fun iterator do return new I[E](self)
+end
+
+class I[E]
+ super Iterator[E]
+
+ var g: G[E]
+ var fini: Bool = false
+
+ redef fun next
+ do
+ fini = true
+ end
+
+ redef fun is_ok
+ do
+ return not fini
+ end
+
+ redef fun item
+ do
+ return g.a
+ end
+end
+
+class B
+ var a = new A
+ var g = new G[A](a)
+
+ fun bar
+ do
+ for x in g do x.foo
+ end
+end
+
+var b = new B
+b.bar
+for x in b.g do x.foo
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import kernel
+
+class G[E]
+ var e: E
+ fun sete(e: E) do self.e = e
+ redef fun output
+ do
+ 'G'.output
+ var e = self.e
+ if e isa G[Object] then
+ e.output
+ else if e isa Int then
+ 0.output
+ else
+ '\n'.output
+ end
+ end
+end
+
+var a = new G[Object](1)
+var x = new G[Int](10) #1alt1# var x = new G[G[Object]](a)
+var b: G[Object] = x
+#alt1# b.sete 100
+#alt2# b.e = 100
+#alt3# b.sete a
+#alt4# b.e = a
+x.output
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import kernel
+
+var d1: Discrete = 1
+var d2: Discrete = 2
+var c1: Discrete = 'a'
+var c2: Discrete = 'b'
+(1<2).output
+(d1<2).output
+#alt1#(c1<2).output
+#alt2#(1<d2).output
+(d1<d2).output
+#alt3#(c1<d2).output
+#alt4#(1<c2).output
+#alt5#(d1<c2).output
+(c1<c2).output
--- /dev/null
+import kernel
+
+class A
+ fun /(i: Int): Int do return i
+end
+
+var i = 10
+var f = 10.0
+var a = new A
+var z = 0
+
+(i * 0).output
+(i / 2).output
+(f / 0.0).output
+(a / 0).output
+if false then (i / z).output
+if false then (i / 0).output
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import kernel
+
+class G[E: A]
+ var e: nullable E = null
+ fun foo(e: E)
+ do
+ 0.output
+ end
+end
+
+class H
+ super G[B]
+ redef fun foo(e)
+ do
+ e.bar
+ end
+end
+
+class A
+end
+class B
+ super A
+ fun bar
+ do
+ 2.output
+ end
+end
+class D
+ super A
+ fun not_bar
+ do
+ 100.output
+ end
+end
+
+var h: G[A] = new H
+var b = new B
+var d = new D
+h.foo(b)
+#alt1#h.foo(d)
+'!'.output
+b.bar
+'!'.output
+d.not_bar
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import kernel
+
+class G[E: Discrete]
+ var e: nullable E = null
+ fun foo(e: E)
+ do
+ 0.output
+ end
+end
+
+class H
+ super G[Int]
+ redef fun foo(e)
+ do
+ e.bar
+ end
+end
+
+redef class Int
+ fun bar
+ do
+ 2.output
+ end
+end
+redef class Char
+ fun not_bar
+ do
+ 100.output
+ end
+end
+
+var h: G[Discrete] = new H
+var b = 10
+var d = 'A'
+h.foo(b)
+#alt1#h.foo(d)
+'!'.output
+b.bar
+'!'.output
+d.not_bar
# See the License for the specific language governing permissions and
# limitations under the License.
-import base_virtual_type2
import array
+import base_virtual_type2
class C
super A
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import kernel
+
+class G
+ type E: Discrete
+ var e: nullable E = null
+ fun foo(e: E)
+ do
+ 0.output
+ end
+end
+
+class H
+ super G
+ redef type E: Int
+ redef fun foo(e)
+ do
+ e.bar
+ end
+ fun foo2(e: E)
+ do
+ e.output
+ end
+end
+
+redef class Int
+ fun bar
+ do
+ 2.output
+ end
+end
+redef class Char
+ fun not_bar
+ do
+ 100.output
+ end
+end
+
+var h: G = new H
+var b = 10
+var d = 'A'
+h.foo(b)
+#alt1#h.foo(d)
+'!'.output
+b.bar
+'!'.output
+d.not_bar
init_linext
inline
test_extern
+curses
nitc
nitdoc
nits
-../examples/hello_world.nit -o out/nitg-hello_world ; out/nitg-hello_world
-base_simple3.nit -o out/nitg-base_simple3 ; out/nitg-base_simple3
+--global ../examples/hello_world.nit -o out/nitg-hello_world ; out/nitg-hello_world
+--global base_simple3.nit -o out/nitg-base_simple3 ; out/nitg-base_simple3
--separate ../examples/hello_world.nit -o out/nitgs-hello_world ; out/nitgs-hello_world
--separate base_simple3.nit -o out/nitgs-base_simple3 ; out/nitgs-base_simple3
init_inherit
init_linext
inline
-test_math
test_mem
shoot_logic
bench_
-base_simple3.nit -d out/nitmetrics_args1.write
+--all base_simple3.nit -d out/nitmetrics_args1.write
--- /dev/null
+10
+30
+70
+110
+130
+170
+
+10
+11
+51
+110
+11
+51
+
+10
+30
+32
+110
+130
+32
+
--- /dev/null
+Runtime error: Cast failed (alt/base_covar_gen_1alt1_alt1.nit:19)
--- /dev/null
+Runtime error: Cast failed (alt/base_covar_gen_1alt1_alt2.nit:18)
--- /dev/null
+Runtime error: Cast failed (alt/base_covar_gen_alt3.nit:19)
--- /dev/null
+Runtime error: Cast failed (alt/base_covar_gen_alt4.nit:18)
--- /dev/null
+true
+true
+true
+true
--- /dev/null
+Runtime error: Cast failed (../lib/standard/kernel.nit:386)
+true
+true
--- /dev/null
+alt/base_covar_int_alt2.nit:24,4--5: Type error: expected Int, got Discrete
--- /dev/null
+Runtime error: Cast failed (../lib/standard/kernel.nit:386)
+true
+true
+true
--- /dev/null
+alt/base_covar_int_alt4.nit:27,4--5: Type error: expected Int, got Discrete
--- /dev/null
+Runtime error: Cast failed (../lib/standard/kernel.nit:235)
+true
+true
+true
--- /dev/null
+base_div_by_zero.nit:17,16--20: Error: Definitely division by zero
--- /dev/null
+2
+!2
+!100
--- /dev/null
+Runtime error: Cast failed (alt/base_gen_variance3_alt1.nit:27)
+2
--- /dev/null
+2
+!2
+!100
--- /dev/null
+Runtime error: Cast failed (alt/base_gen_variance_int_alt1.nit:27)
+2
--- /dev/null
+2
+!2
+!100
--- /dev/null
+Runtime error: Cast failed (alt/base_virtual_type_variance_int_alt1.nit:29)
+2
--- /dev/null
+ OOOOOOOO OOOOOOOO OOOOOOOO
+ O O O
+ O O O
+ O O O
+ OOOOOOOO OOOOOOOO O
+ O O O O
+ O O O O
+ OOOOOOOO OOOOOOOO O
+
+ O OOOOOOOO
+ ****** OO O
+ ****** O O O
+ ****** O O O
+ ****** O OOOOOOOO
+ ****** O O
+ ****** O O
+ OOOOOOOO OOOOOOOO
+
+_____________________________________________
+
+ OOOOOOOO OOOOOOOO OOOOOOOO O
+ O O O OO
+ O O O O O
+ O O O O O
+ O OOOOOOOO O O
+ O O O O
+ O O O O
+ O OOOOOOOO O OOOOOOOO
-error_gen_f_inh_clash.nit:19,7--8: Error: Cannot provide a defaut constructor: conflict for G1 and G2
base_gen_f.nit:19,14: Type error: class E not found in module base_gen_f.
144
sleeping 1 second...
-0.463648
+0.464
from C: self + fib(self) = 29
from Nit: self + fib(self) = 29
+++ /dev/null
-../lib/standard/collection/array.nit:24,21--27: Error: No property AbstractArrayRead::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:26,12--19: Error: No property AbstractArrayRead::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:28,12--14: Error: No property AbstractArrayRead::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:39,12--19: Error: No property AbstractArrayRead::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:50,12--16: Error: No property AbstractArrayRead::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:62,12--19: Error: No property AbstractArrayRead::index_of is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:83,12--19: Error: No property NaiveCollection::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:85,12--17: Error: No property NaiveCollection::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:92,12--14: Error: No property NaiveCollection::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:98,12--19: Error: No property NaiveCollection::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:104,12--16: Error: No property NaiveCollection::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:111,12--16: Error: No property NaiveCollection::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:128,12--17: Error: No property AbstractArrayRead::output is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:137,12--16: Error: No property Container::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:139,12--19: Error: No property AbstractArrayRead::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:139,12--19: Error: No property Container::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:141,12--17: Error: No property Container::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:142,12--13: Error: No property AbstractArrayRead::== is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:143,12--14: Error: No property Container::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:145,12--19: Error: No property Container::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:147,12--16: Error: No property Container::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:156,12--19: Error: No property Container::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:166,12--15: Error: No property AbstractArray::push is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:168,12--14: Error: No property AbstractArray::pop is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:168,12--15: Error: No property ContainerIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:170,12--15: Error: No property ContainerIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:174,21--26: Error: No property ContainerIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:176,12--16: Error: No property AbstractArray::shift is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:190,12--18: Error: No property AbstractArray::unshift is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:212,12--14: Error: No property AbstractArray::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:214,12--16: Error: No property AbstractArray::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:215,12--19: Error: No property Set::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:216,12--17: Error: No property AbstractArray::remove is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:218,12--21: Error: No property AbstractArray::remove_all is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:227,12--20: Error: No property AbstractArray::remove_at is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:228,12--16: Error: No property Set::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:238,12--21: Error: No property Set::remove_all is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:266,12--18: Error: No property Array::iterate is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:278,12--13: Error: No property Array::[] is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:284,12--14: Error: No property Array::[]= is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:296,12--14: Error: No property Array::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:306,12--18: Error: No property Array::enlarge is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:321,12--17: Error: No property Map::values is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:323,12--15: Error: No property Map::keys is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:375,12--16: Error: No property SequenceRead::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:407,12--19: Error: No property SequenceRead::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:431,12--15: Error: No property ArrayIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:434,12--14: Error: No property Sequence::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:435,12--16: Error: No property ArrayIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:437,12--15: Error: No property ArrayIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:445,21--26: Error: No property ArrayIterator::index is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:458,12--14: Error: No property ArraySet::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:460,12--14: Error: No property ArraySet::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:462,12--19: Error: No property ArraySet::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:464,12--17: Error: No property ArraySet::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:466,12--16: Error: No property ArraySet::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:472,12--17: Error: No property ArraySet::remove is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:473,12--13: Error: No property CoupleMap::[] is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:478,12--21: Error: No property ArraySet::remove_all is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:480,12--16: Error: No property ArraySet::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:482,12--19: Error: No property ArraySet::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:489,12--15: Error: No property CoupleMapIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:493,12--14: Error: No property CoupleMapIterator::key is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:495,12--16: Error: No property CoupleMapIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:497,12--15: Error: No property CoupleMapIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:504,12--16: Error: No property ArraySetIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:506,12--15: Error: No property ArraySetIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:508,12--15: Error: No property ArraySetIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:521,12--13: Error: No property ArrayMap::[] is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:532,12--14: Error: No property ArrayMap::[]= is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:542,12--15: Error: No property ArrayMap::keys is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:543,12--17: Error: No property ArrayMap::values is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:546,12--17: Error: No property ArrayMap::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:548,12--19: Error: No property ArrayMap::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:550,12--19: Error: No property ArrayMap::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:552,12--16: Error: No property ArrayMap::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:557,12--20: Error: No property ArrayMap::couple_at is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:629,12--16: Error: No property ArrayMapValues::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:630,12--19: Error: No property ArrayMapValues::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:631,12--17: Error: No property ArrayMapValues::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:632,12--19: Error: No property ArrayMapValues::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:635,12--14: Error: No property ArrayMapValues::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:642,12--19: Error: No property ArrayMapValues::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:649,12--16: Error: No property ArrayMapValues::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:656,12--16: Error: No property ArrayMapValues::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:658,12--17: Error: No property ArrayMapValues::remove is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:671,12--21: Error: No property ArrayMapValues::remove_all is inherited. Remove the redef keyword to define a new property.
+++ /dev/null
-../lib/standard/collection/array.nit:24,21--27: Error: No property AbstractArrayRead::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:26,12--19: Error: No property AbstractArrayRead::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:28,12--14: Error: No property AbstractArrayRead::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:39,12--19: Error: No property AbstractArrayRead::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:50,12--16: Error: No property AbstractArrayRead::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:62,12--19: Error: No property AbstractArrayRead::index_of is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:83,12--19: Error: No property NaiveCollection::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:85,12--17: Error: No property NaiveCollection::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:92,12--14: Error: No property NaiveCollection::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:98,12--19: Error: No property NaiveCollection::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:104,12--16: Error: No property NaiveCollection::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:111,12--16: Error: No property NaiveCollection::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:128,12--17: Error: No property AbstractArrayRead::output is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:137,12--16: Error: No property Container::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:139,12--19: Error: No property AbstractArrayRead::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:139,12--19: Error: No property Container::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:141,12--17: Error: No property Container::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:142,12--13: Error: No property AbstractArrayRead::== is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:143,12--14: Error: No property Container::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:145,12--19: Error: No property Container::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:147,12--16: Error: No property Container::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:156,12--19: Error: No property Container::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:166,12--15: Error: No property AbstractArray::push is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:168,12--14: Error: No property AbstractArray::pop is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:168,12--15: Error: No property ContainerIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:170,12--15: Error: No property ContainerIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:174,21--26: Error: No property ContainerIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:176,12--16: Error: No property AbstractArray::shift is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:190,12--18: Error: No property AbstractArray::unshift is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:212,12--14: Error: No property AbstractArray::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:214,12--16: Error: No property AbstractArray::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:215,12--19: Error: No property Set::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:216,12--17: Error: No property AbstractArray::remove is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:218,12--21: Error: No property AbstractArray::remove_all is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:227,12--20: Error: No property AbstractArray::remove_at is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:228,12--16: Error: No property Set::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:238,12--21: Error: No property Set::remove_all is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:266,12--18: Error: No property Array::iterate is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:278,12--13: Error: No property Array::[] is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:284,12--14: Error: No property Array::[]= is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:296,12--14: Error: No property Array::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:306,12--18: Error: No property Array::enlarge is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:321,12--17: Error: No property Map::values is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:323,12--15: Error: No property Map::keys is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:375,12--16: Error: No property SequenceRead::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:407,12--19: Error: No property SequenceRead::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:431,12--15: Error: No property ArrayIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:434,12--14: Error: No property Sequence::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:435,12--16: Error: No property ArrayIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:437,12--15: Error: No property ArrayIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:445,21--26: Error: No property ArrayIterator::index is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:458,12--14: Error: No property ArraySet::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:460,12--14: Error: No property ArraySet::add is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:462,12--19: Error: No property ArraySet::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:464,12--17: Error: No property ArraySet::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:466,12--16: Error: No property ArraySet::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:472,12--17: Error: No property ArraySet::remove is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:473,12--13: Error: No property CoupleMap::[] is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:478,12--21: Error: No property ArraySet::remove_all is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:480,12--16: Error: No property ArraySet::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:482,12--19: Error: No property ArraySet::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:489,12--15: Error: No property CoupleMapIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:493,12--14: Error: No property CoupleMapIterator::key is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:495,12--16: Error: No property CoupleMapIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/abstract_collection.nit:497,12--15: Error: No property CoupleMapIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:504,12--16: Error: No property ArraySetIterator::is_ok is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:506,12--15: Error: No property ArraySetIterator::next is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:508,12--15: Error: No property ArraySetIterator::item is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:521,12--13: Error: No property ArrayMap::[] is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:532,12--14: Error: No property ArrayMap::[]= is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:542,12--15: Error: No property ArrayMap::keys is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:543,12--17: Error: No property ArrayMap::values is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:546,12--17: Error: No property ArrayMap::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:548,12--19: Error: No property ArrayMap::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:550,12--19: Error: No property ArrayMap::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:552,12--16: Error: No property ArrayMap::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:557,12--20: Error: No property ArrayMap::couple_at is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:629,12--16: Error: No property ArrayMapValues::first is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:630,12--19: Error: No property ArrayMapValues::is_empty is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:631,12--17: Error: No property ArrayMapValues::length is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:632,12--19: Error: No property ArrayMapValues::iterator is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:635,12--14: Error: No property ArrayMapValues::has is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:642,12--19: Error: No property ArrayMapValues::has_only is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:649,12--16: Error: No property ArrayMapValues::count is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:656,12--16: Error: No property ArrayMapValues::clear is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:658,12--17: Error: No property ArrayMapValues::remove is inherited. Remove the redef keyword to define a new property.
-../lib/standard/collection/array.nit:671,12--21: Error: No property ArrayMapValues::remove_all is inherited. Remove the redef keyword to define a new property.
--- /dev/null
+<!DOCTYPE html><html><head><meta charset='utf-8'/><title>Nit</title><link rel='icon' href='http://nitlanguage.org/favicon.ico' type='image/x-icon'/><link rel='stylesheet' href='http://nitlanguage.org/style.css' type='text/css'/><link rel='stylesheet' href='http://nitlanguage.org/local.css' type='text/css'/></head><body><article class=' page'><section class=' pageheader'><a id='toptitle_first' class='toptitle'>the</a><a id='toptitle_second' class='toptitle' href=''>Nit</a><a id='toptitle_third' class='toptitle' href=''>Programming Language</a><header class=' header'><div class=' topsubtitle'><p>A Fun Language for Serious Programming</p></div></header></section><div id='pagebody'><section id='content'><h1># What is Nit?</h1><p>Nit is an object-oriented programming language. The goal of Nit is to propose a robust statically typed programming language where structure is not a pain.</p><p>So, what does the famous hello world program look like, in Nit?</p><pre><tt><span class='normal'>print </span><span class='string'>'Hello, World!'</span></tt></pre><h1># Feature Highlights</h1><h2>Usability</h2><p>Nit's goal is to be usable by real programmers for real projects</p><ul><li><a href='http://en.wikipedia.org/wiki/KISS_principle'>KISS principle</a></li><li>Script-like language without verbosity nor cryptic statements</li><li>Painless static types: static typing should help programmers</li><li>Efficient development, efficient execution, efficient evolution.</li></ul><h2>Robustness</h2><p>Nit will help you to write bug-free programs</p><ul><li>Strong static typing</li><li>No more NullPointerException</li></ul><h2>Object-Oriented</h2><p>Nit's guideline is to follow the most powerful OO principles</p><ul><li><a href='./everything_is_an_object/'>Everything is an object</a></li><li><a href='./multiple_inheritance/'>Multiple inheritance</a></li><li><a href='./refinement/'>Open classes</a></li><li><a href='./virtual_types/'>Virtual types</a></li></ul><h1># Getting Started</h1><p>Get Nit from its Git repository:</p><pre><code>$ git clone http://nitlanguage.org/nit.git</code></pre><p>Build the compiler (may be long):</p><pre><code>$ cd nit
+$ make</code></pre><p>Compile a program:</p><pre><code>$ bin/nitc examples/hello_world.nit</code></pre><p>Execute the program:</p><pre><code>$ ./hello_world</code></pre></section></div></article></body></html>
--- /dev/null
+Runtime error: Cast failed (../lib/standard/kernel.nit)
+true
+true
--- /dev/null
+Runtime error: Cast failed (../lib/standard/kernel.nit)
+true
+true
+true
--- /dev/null
+Runtime error: Cast failed (../lib/standard/kernel.nit)
+true
+true
+true
--- /dev/null
+0
+5
+inf
+0
--- /dev/null
+Runtime error: Cast failed (alt/base_virtual_type_variance_int_alt1.nit)
+2
--- /dev/null
+10
+30
+70
+110
+130
+170
+
+10
+11
+51
+110
+111
+151
+
+10
+30
+32
+110
+130
+132
+
--- /dev/null
+2
+100
+!2
+!100
--- /dev/null
+Recieved signal 11
+2
--- /dev/null
+2
+2
+!2
+!100
--custom-menu-items Items displayed in menu before the 'Overview' item (Each item must be enclosed in 'li' tags)
--custom-overview-text Text displayed as introduction of Overview page before the modules list
--custom-footer-text Text displayed as footer of all pages
+ --github GitHub repo name, example: --github MyRepoName
--- /dev/null
+2
+100
+!2
+!100
--- /dev/null
+2
+2
+!2
+!100
--- /dev/null
+2
+2
+!2
+!100
--- /dev/null
+2
+100
+!2
+!100
--- /dev/null
+2
+2
+!2
+!100
--- /dev/null
+2
+2
+!2
+!100
--tables-metrics Enable static size measuring of tables used for vft, typing and resolution
--erasure Erase generic types
--no-check-erasure-cast Disable implicit casts on unsafe return with erasure-typing policy (dangerous)
+ --global Use global compilation
--- /dev/null
+2
+Cast error: Cannot cast Char to Int.
--- /dev/null
+2
+Cast error: Cannot cast Char to Int.
--rta Compute RTA metrics
--generate-csv Generate CVS format metrics
--generate_hyperdoc Generate Hyperdoc
+ --poset Complete metrics on posets
-d, --dir Directory where some statistics files are generated
*** METRICS ***
+--- Poset metrics ---
+## Module importation hierarchy
+Number of nodes: 1
+Number of edges: 1 (1.00 per node)
+Number of direct edges: 0 (0.0 per node)
+Distribution of greaters
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct greaters
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+Distribution of smallers
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct smallers
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+## Module nesting hierarchy
+Number of nodes: 1
+Number of edges: 1 (1.00 per node)
+Number of direct edges: 0 (0.0 per node)
+Distribution of greaters
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct greaters
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+Distribution of smallers
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct smallers
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+## Classdef hierarchy
+Number of nodes: 8
+Number of edges: 22 (2.75 per node)
+Number of direct edges: 7 (0.87 per node)
+Distribution of greaters
+ population: 8
+ minimum value: 2
+ maximum value: 3
+ total value: 22
+ average value: 2.75
+ distribution:
+ <=2: sub-population=2 (25.00%); cumulated value=4 (18.18%)
+ <=4: sub-population=6 (75.00%); cumulated value=18 (81.81%)
+Distribution of direct greaters
+ population: 8
+ minimum value: 0
+ maximum value: 1
+ total value: 7
+ average value: 0.87
+ distribution:
+ <=0: sub-population=1 (12.50%); cumulated value=0 (0.0%)
+ <=1: sub-population=7 (87.50%); cumulated value=7 (100.00%)
+Distribution of smallers
+ population: 8
+ minimum value: 1
+ maximum value: 8
+ total value: 22
+ average value: 2.75
+ distribution:
+ <=1: sub-population=6 (75.00%); cumulated value=6 (27.27%)
+ <=8: sub-population=2 (25.00%); cumulated value=16 (72.72%)
+Distribution of direct smallers
+ population: 8
+ minimum value: 0
+ maximum value: 6
+ total value: 7
+ average value: 0.87
+ distribution:
+ <=0: sub-population=6 (75.00%); cumulated value=0 (0.0%)
+ <=1: sub-population=1 (12.50%); cumulated value=1 (14.28%)
+ <=8: sub-population=1 (12.50%); cumulated value=6 (85.71%)
+## Class hierarchy
+Number of nodes: 7
+Number of edges: 13 (1.85 per node)
+Number of direct edges: 6 (0.85 per node)
+Distribution of greaters
+ population: 7
+ minimum value: 1
+ maximum value: 2
+ total value: 13
+ average value: 1.85
+ distribution:
+ <=1: sub-population=1 (14.28%); cumulated value=1 (7.69%)
+ <=2: sub-population=6 (85.71%); cumulated value=12 (92.30%)
+Distribution of direct greaters
+ population: 7
+ minimum value: 0
+ maximum value: 1
+ total value: 6
+ average value: 0.85
+ distribution:
+ <=0: sub-population=1 (14.28%); cumulated value=0 (0.0%)
+ <=1: sub-population=6 (85.71%); cumulated value=6 (100.00%)
+Distribution of smallers
+ population: 7
+ minimum value: 1
+ maximum value: 7
+ total value: 13
+ average value: 1.85
+ distribution:
+ <=1: sub-population=6 (85.71%); cumulated value=6 (46.15%)
+ <=8: sub-population=1 (14.28%); cumulated value=7 (53.84%)
+Distribution of direct smallers
+ population: 7
+ minimum value: 0
+ maximum value: 6
+ total value: 6
+ average value: 0.85
+ distribution:
+ <=0: sub-population=6 (85.71%); cumulated value=0 (0.0%)
+ <=8: sub-population=1 (14.28%); cumulated value=6 (100.00%)
+--- Global Summary metrics ---
+(NMD) Number of Modules: 1
+(NC) Number of Classes: 4
+(NI) Number of Interfaces: 1
+(NAC) Number of Abstract Classes: 0
+(NGC) Number of Generic Classes: 0
+(NGI) Number of Generic Interfaces: 0
+--- (SL) Std-Lib Summary metrics ---
+(NMDSL) Number of Modules: 0
+(NCSL) Number of Classes: 0
+(NISL) Number of Interfaces: 0
+(NACSL) Number of Abstract Classes: 0
+(NGCSL) Number of Generic Classes: 0
+(NGISL) Number of Generic Interfaces: 0
+--- (UD) User-Defined Summary metrics ---
+(NMDUD) Number of Modules: 1
+(NCUD) Number of Classes: 4
+(NIUD) Number of Interfaces: 1
+(NACUD) Number of Abstract Classes: 0
+(NGCUD) Number of Generic Classes: 0
+(NGIUD) Number of Generic Interfaces: 0
+
+--- Global Inheritance metrics ---
+(DIT) Global Depth in Inheritance Tree: 0.85
+(DUI) Proportion of types inheriting another type other than Object: 0.0%
+(CCDUI) Proportion of classes that extend some other class: 0.0%
+(CIDUI) Proportion of classes that implement some other interface: 0.0%
+(IIDUI) Proportion of interfaces that extend some other interface: 0.0%
+(IF) Proportion of types Inherited From: 20.00%
+(CCIF) Proportion of classes extended by class: 0.0%
+(ICIF) Proportion of interfaces implemented by class: 100.00%
+(IIIF) Proportion of interfaces extended by interface: 0.0%
+
+--- (SL -> *) Std-Lib Inheritance metrics ---
+(SLDUI) Proportion of SL types inheriting another type other than Object: na%
+(SLCCDUI) Proportion of SL classes that extend some other class: na%
+(SLCIDUI) Proportion of SL classes that implement some other interface: na%
+(SLIIDUI) Proportion of SL interfaces that extend some other interface: na%
+(SLIF) Proportion of SL types Inherited From: na%
+(SLCCIF) Proportion of SL classes extended by class: na%
+(SLICIF) Proportion of SL interfaces implemented by class: na%
+(SLIIIF) Proportion of SL interfaces extended by interface: na%
+
+--- (SL -> SL) Std-Lib Inheritance metrics ---
+(SLIFSL) Proportion of SL types Inherited From by SL type: na%
+(SLCCIFSL) Proportion of SL classes extended by SL class: na%
+(SLICIFSL) Proportion of SL interfaces implemented by SL class: na%
+(SLIIIFSL) Proportion of SL interfaces extended by SL interface: na%
+
+--- (SL->UD) Std-Lib Inheritance metrics ---
+(SLIFUD) Proportion of SL types Inherited From by UD type: na%
+(SLCCIFUD) Proportion of SL classes extended by UD class: na%
+(SLICIFUD) Proportion of SL interfaces implemented by UD class: na%
+(SLIIIFUD) Proportion of SL interfaces extended by UD interface: na%
+
+--- (UD->*) User-Defined Inheritance metrics ---
+(UDDUI) Proportion of UD types inheriting another type other than Object: 0.0%
+(UDCCDUI) Proportion of UD classes that extend some other class: 0.0%
+(UDCIDUI) Proportion of UD classes that implement some other interface: 0.0%
+(UDIIDUI) Proportion of UD interfaces that extend some other interface: 0.0%
+(UDIF) Proportion of UD types Inherited From: 20.00%
+(UDCCIF) Proportion of UD classes extended by class: 0.0%
+(UDICIF) Proportion of UD interfaces implemented by class: 100.00%
+(UDIIIF) Proportion of UD interfaces extended by interface: 0.0%
+
+--- (UD -> SL) User-Defined Inheritance metrics ---
+(UDDUISL) Proportion of UD types inheriting another type other SL type: 0.0%
+(UDCCDUISL) Proportion of UD classes that extend some other SL class: 0.0%
+(UDCIDUISL) Proportion of UD classes that implement some other SL interface: 0.0%
+(UDIIDUISL) Proportion of UD interfaces that extend some other SL interface: 0.0%
+
+--- (UD -> UD) User-Defined Inheritance metrics ---
+(UDDUIUD) Proportion of UD types inheriting another type other UD type: 0.0%
+(UDCCDUIUD) Proportion of UD classes that extend some other UD class: 0.0%
+(UDCIDUIUD) Proportion of UD classes that implement some other UD interface: 0.0%
+(UDIIDUIUD) Proportion of UD interfaces that extend some other UD interface: 0.0%
+(UDIFUD) Proportion of UD types Inherited From: 20.00%
+(UDCCIFUD) Proportion of UD classes extended by UD class: 0.0%
+(UDICIFUD) Proportion of UD interfaces implemented by UD class: 100.00%
+(UDIIIFUD) Proportion of UD interfaces extended by UD interface: 0.0%
+--- Metrics of refinement usage ---
+Number of modules: 1
+
+Number of classes: 7
+ Number of interface kind: 1 (14.28%)
+ Number of enum kind: 2 (28.57%)
+ Number of class kind: 4 (57.14%)
+
+Number of class definitions: 8
+Number of refined classes: 1 (14.28%)
+Average number of class refinments by classes: 0.14
+Average number of class refinments by refined classes: 1.00
+
+Number of properties: 19
+ Number of MAttribute: 3 (15.78%)
+ Number of MMethod: 16 (84.21%)
+
+Number of property definitions: 19
+Number of redefined properties: 0 (0.0%)
+Average number of property redefinitions by property: 0.0
+Average number of property redefinitions by redefined property: na
+--- Metrics of the explitic static types ---
+Total number of explicit static types: 9
+Most used types:
+ Int: 6
+ C: 1
+ B: 1
+ A: 1
+Statistics of type usage:
+ population: 4
+ minimum value: 1
+ maximum value: 6
+ total value: 9
+ average value: 2.25
+ distribution:
+ <=1: sub-population=3 (75.00%); cumulated value=3 (33.33%)
+ <=8: sub-population=1 (25.00%); cumulated value=6 (66.66%)
+--- Sends on Nullable Reciever ---
+Total number of sends: 19
+Number of sends on a nullable receiver: 0 (0.0%)
+Number of buggy sends (cannot determine the type of the receiver): 0 (0.0%)
+--- Explicit vs. Implicit Self ---
+Total number of self: 5
+Total number of implicit self: 4 (80.00%)
+--- Construction of tables ---
+Number of runtime classes: 6 (excluding interfaces and abstract classes)
+Average number of composing class definition by runtime class: 3.00
+Total size of tables (classes and instances): 34 (not including stuff like info for subtyping or call-next-method)
+Average size of table by runtime class: 5.66
+Values never redefined: 34 (100.00%)
+--- RTA metrics ---
+Number of live runtime types (instantied resolved type): 6
+ Sys Bool Int A B C
+Number of live method definitions: 14
+Number of live customized method definitions: 14
+Number of live runtime cast types (ie used in as and isa): 0
+
+class_hierarchy.dot
+classdef_hierarchy.dot
+model.html
+module_hierarchy.dot
--- /dev/null
+*** METRICS ***
+--- Poset metrics ---
+## Module importation hierarchy
+Number of nodes: 1
+Number of edges: 1 (1.00 per node)
+Number of direct edges: 0 (0.0 per node)
+Distribution of greaters
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct greaters
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+Distribution of smallers
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct smallers
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+## Module nesting hierarchy
+Number of nodes: 1
+Number of edges: 1 (1.00 per node)
+Number of direct edges: 0 (0.0 per node)
+Distribution of greaters
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct greaters
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+Distribution of smallers
+ population: 1
+ minimum value: 1
+ maximum value: 1
+ total value: 1
+ average value: 1.00
+ distribution:
+ <=1: sub-population=1 (100.00%); cumulated value=1 (100.00%)
+Distribution of direct smallers
+ population: 1
+ minimum value: 0
+ maximum value: 0
+ total value: 0
+ average value: 0.0
+ distribution:
+ <=0: sub-population=1 (100.00%); cumulated value=0 (na%)
+## Classdef hierarchy
+Number of nodes: 8
+Number of edges: 22 (2.75 per node)
+Number of direct edges: 7 (0.87 per node)
+Distribution of greaters
+ population: 8
+ minimum value: 2
+ maximum value: 3
+ total value: 22
+ average value: 2.75
+ distribution:
+ <=2: sub-population=2 (25.00%); cumulated value=4 (18.18%)
+ <=4: sub-population=6 (75.00%); cumulated value=18 (81.81%)
+Distribution of direct greaters
+ population: 8
+ minimum value: 0
+ maximum value: 1
+ total value: 7
+ average value: 0.87
+ distribution:
+ <=0: sub-population=1 (12.50%); cumulated value=0 (0.0%)
+ <=1: sub-population=7 (87.50%); cumulated value=7 (100.00%)
+Distribution of smallers
+ population: 8
+ minimum value: 1
+ maximum value: 8
+ total value: 22
+ average value: 2.75
+ distribution:
+ <=1: sub-population=6 (75.00%); cumulated value=6 (27.27%)
+ <=8: sub-population=2 (25.00%); cumulated value=16 (72.72%)
+Distribution of direct smallers
+ population: 8
+ minimum value: 0
+ maximum value: 6
+ total value: 7
+ average value: 0.87
+ distribution:
+ <=0: sub-population=6 (75.00%); cumulated value=0 (0.0%)
+ <=1: sub-population=1 (12.50%); cumulated value=1 (14.28%)
+ <=8: sub-population=1 (12.50%); cumulated value=6 (85.71%)
+## Class hierarchy
+Number of nodes: 7
+Number of edges: 13 (1.85 per node)
+Number of direct edges: 6 (0.85 per node)
+Distribution of greaters
+ population: 7
+ minimum value: 1
+ maximum value: 2
+ total value: 13
+ average value: 1.85
+ distribution:
+ <=1: sub-population=1 (14.28%); cumulated value=1 (7.69%)
+ <=2: sub-population=6 (85.71%); cumulated value=12 (92.30%)
+Distribution of direct greaters
+ population: 7
+ minimum value: 0
+ maximum value: 1
+ total value: 6
+ average value: 0.85
+ distribution:
+ <=0: sub-population=1 (14.28%); cumulated value=0 (0.0%)
+ <=1: sub-population=6 (85.71%); cumulated value=6 (100.00%)
+Distribution of smallers
+ population: 7
+ minimum value: 1
+ maximum value: 7
+ total value: 13
+ average value: 1.85
+ distribution:
+ <=1: sub-population=6 (85.71%); cumulated value=6 (46.15%)
+ <=8: sub-population=1 (14.28%); cumulated value=7 (53.84%)
+Distribution of direct smallers
+ population: 7
+ minimum value: 0
+ maximum value: 6
+ total value: 6
+ average value: 0.85
+ distribution:
+ <=0: sub-population=6 (85.71%); cumulated value=0 (0.0%)
+ <=8: sub-population=1 (14.28%); cumulated value=6 (100.00%)
+--- Construction of tables ---
+Number of runtime classes: 6 (excluding interfaces and abstract classes)
+Average number of composing class definition by runtime class: 3.00
+Total size of tables (classes and instances): 34 (not including stuff like info for subtyping or call-next-method)
+Average size of table by runtime class: 5.66
+Values never redefined: 34 (100.00%)
+--- RTA metrics ---
+Number of live runtime types (instantied resolved type): 6
+ Sys Bool Int A B C
+Number of live method definitions: 14
+Number of live customized method definitions: 14
+Number of live runtime cast types (ie used in as and isa): 0
+
+--- Explicit vs. Implicit Self ---
+Total number of self: 5
+Total number of implicit self: 4 (80.00%)
+--- Sends on Nullable Reciever ---
+Total number of sends: 19
+Number of sends on a nullable receiver: 0 (0.0%)
+Number of buggy sends (cannot determine the type of the receiver): 0 (0.0%)
+--- Metrics of the explitic static types ---
+Total number of explicit static types: 9
+Most used types:
+ Int: 6
+ C: 1
+ B: 1
+ A: 1
+Statistics of type usage:
+ population: 4
+ minimum value: 1
+ maximum value: 6
+ total value: 9
+ average value: 2.25
+ distribution:
+ <=1: sub-population=3 (75.00%); cumulated value=3 (33.33%)
+ <=8: sub-population=1 (25.00%); cumulated value=6 (66.66%)
+--- Metrics of refinement usage ---
+Number of modules: 1
+
+Number of classes: 7
+ Number of interface kind: 1 (14.28%)
+ Number of enum kind: 2 (28.57%)
+ Number of class kind: 4 (57.14%)
+
+Number of class definitions: 8
+Number of refined classes: 1 (14.28%)
+Average number of class refinments by classes: 0.14
+Average number of class refinments by refined classes: 1.00
+
+Number of properties: 19
+ Number of MAttribute: 3 (15.78%)
+ Number of MMethod: 16 (84.21%)
+
+Number of property definitions: 19
+Number of redefined properties: 0 (0.0%)
+Average number of property redefinitions by property: 0.0
+Average number of property redefinitions by redefined property: na
+--- Global Summary metrics ---
+(NMD) Number of Modules: 1
+(NC) Number of Classes: 4
+(NI) Number of Interfaces: 1
+(NAC) Number of Abstract Classes: 0
+(NGC) Number of Generic Classes: 0
+(NGI) Number of Generic Interfaces: 0
+--- (SL) Std-Lib Summary metrics ---
+(NMDSL) Number of Modules: 0
+(NCSL) Number of Classes: 0
+(NISL) Number of Interfaces: 0
+(NACSL) Number of Abstract Classes: 0
+(NGCSL) Number of Generic Classes: 0
+(NGISL) Number of Generic Interfaces: 0
+--- (UD) User-Defined Summary metrics ---
+(NMDUD) Number of Modules: 1
+(NCUD) Number of Classes: 4
+(NIUD) Number of Interfaces: 1
+(NACUD) Number of Abstract Classes: 0
+(NGCUD) Number of Generic Classes: 0
+(NGIUD) Number of Generic Interfaces: 0
+
+--- Global Inheritance metrics ---
+(DIT) Global Depth in Inheritance Tree: 0.85
+(DUI) Proportion of types inheriting another type other than Object: 0.0%
+(CCDUI) Proportion of classes that extend some other class: 0.0%
+(CIDUI) Proportion of classes that implement some other interface: 0.0%
+(IIDUI) Proportion of interfaces that extend some other interface: 0.0%
+(IF) Proportion of types Inherited From: 20.00%
+(CCIF) Proportion of classes extended by class: 0.0%
+(ICIF) Proportion of interfaces implemented by class: 100.00%
+(IIIF) Proportion of interfaces extended by interface: 0.0%
+
+--- (SL -> *) Std-Lib Inheritance metrics ---
+(SLDUI) Proportion of SL types inheriting another type other than Object: na%
+(SLCCDUI) Proportion of SL classes that extend some other class: na%
+(SLCIDUI) Proportion of SL classes that implement some other interface: na%
+(SLIIDUI) Proportion of SL interfaces that extend some other interface: na%
+(SLIF) Proportion of SL types Inherited From: na%
+(SLCCIF) Proportion of SL classes extended by class: na%
+(SLICIF) Proportion of SL interfaces implemented by class: na%
+(SLIIIF) Proportion of SL interfaces extended by interface: na%
+
+--- (SL -> SL) Std-Lib Inheritance metrics ---
+(SLIFSL) Proportion of SL types Inherited From by SL type: na%
+(SLCCIFSL) Proportion of SL classes extended by SL class: na%
+(SLICIFSL) Proportion of SL interfaces implemented by SL class: na%
+(SLIIIFSL) Proportion of SL interfaces extended by SL interface: na%
+
+--- (SL->UD) Std-Lib Inheritance metrics ---
+(SLIFUD) Proportion of SL types Inherited From by UD type: na%
+(SLCCIFUD) Proportion of SL classes extended by UD class: na%
+(SLICIFUD) Proportion of SL interfaces implemented by UD class: na%
+(SLIIIFUD) Proportion of SL interfaces extended by UD interface: na%
+
+--- (UD->*) User-Defined Inheritance metrics ---
+(UDDUI) Proportion of UD types inheriting another type other than Object: 0.0%
+(UDCCDUI) Proportion of UD classes that extend some other class: 0.0%
+(UDCIDUI) Proportion of UD classes that implement some other interface: 0.0%
+(UDIIDUI) Proportion of UD interfaces that extend some other interface: 0.0%
+(UDIF) Proportion of UD types Inherited From: 20.00%
+(UDCCIF) Proportion of UD classes extended by class: 0.0%
+(UDICIF) Proportion of UD interfaces implemented by class: 100.00%
+(UDIIIF) Proportion of UD interfaces extended by interface: 0.0%
+
+--- (UD -> SL) User-Defined Inheritance metrics ---
+(UDDUISL) Proportion of UD types inheriting another type other SL type: 0.0%
+(UDCCDUISL) Proportion of UD classes that extend some other SL class: 0.0%
+(UDCIDUISL) Proportion of UD classes that implement some other SL interface: 0.0%
+(UDIIDUISL) Proportion of UD interfaces that extend some other SL interface: 0.0%
+
+--- (UD -> UD) User-Defined Inheritance metrics ---
+(UDDUIUD) Proportion of UD types inheriting another type other UD type: 0.0%
+(UDCCDUIUD) Proportion of UD classes that extend some other UD class: 0.0%
+(UDCIDUIUD) Proportion of UD classes that implement some other UD interface: 0.0%
+(UDIIDUIUD) Proportion of UD interfaces that extend some other UD interface: 0.0%
+(UDIFUD) Proportion of UD types Inherited From: 20.00%
+(UDCCIFUD) Proportion of UD classes extended by UD class: 0.0%
+(UDICIFUD) Proportion of UD interfaces implemented by UD class: 100.00%
+(UDIIIFUD) Proportion of UD interfaces extended by UD interface: 0.0%
+class_hierarchy.dot
+classdef_hierarchy.dot
+model.html
+module_hierarchy.dot
--- /dev/null
+This is a test string
+This is a test string
+Do the strings have the same NativeString reference ? False
--- /dev/null
+resulttrim = nono nono
+returntrim + nono nono
+thirdtrim = nono nono
+emptytrim =
+bufferemptytrim =
+onelettertrim = d
+oneletterbuftest = d
+twolettertrim = hg
+twoletterbuftest = hg
+firstlettertrimtest = d
+firstlettertrimbuftest = d
+lastlettertrimtest = d
+lastlettertrimbuftest = d
--- /dev/null
+1
+2
+3
+4
+5
test_attr_easy.nit:20,5--16: Warning: Expression is already a String.
test_attr_easy.nit:20,20--26: Warning: Expression is already a B.
test_attr_easy.nit:20,44--62: Warning: Expression is already a HashMap[Int, B].
-true false 12345 1.234499 asdf true
+true false 12345 1.234 asdf true
an instance of B
true true true true
true true true true
test_attr_easy.nit:20,5--16: Warning: Expression is already a String.
test_attr_easy.nit:20,20--26: Warning: Expression is already a B.
test_attr_easy.nit:20,44--62: Warning: Expression is already a HashMap[Int, B].
-true false 12345 1.2345 asdf true
+true false 12345 1.235 asdf true
an instance of B
true true true true
true true true true
-5.12345
+5.123
C implementation!
in C!
42
5.500000
0.550000
-12.345678
-12.345678
-12.345
+12.346
+12.346
+12.346
12.3
12
+++ /dev/null
-5.500000
-0.550000
-12.345679
-12.345679
-12.346
-12.3
-12
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
--- /dev/null
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
--- /dev/null
+{"int":"1234","float":"0.123","str":"str","null": null}
+{"int":1234,"float":0.123400,"str":"str","null":null}
+{"arr":"123","obj":"{"int":"123","float":"-234.45"}"}
+{"arr":[1,2,3],"obj":{"int":123,"float":-234.449997}}
+{"arr":"12.3str","obj":"{"int":"123","float":"-234.45"}"}
+{"arr":[1,2.300000,null,"str"],"obj":{"int":123,"float":-234.449997}}
--- /dev/null
+4
+5
+6
+1
+2
+3
+4
-3.141593
+3.142
-1.0
--0.0
0.0
-0.785398
0.0
-1.570796
+0.785
+0.0
+1.571
5.0
1.0
0.0
-n do not print anything
-l only lexer
-p lexer and parser (default)
+ -e instead on files, each argument is a content to parse
-h print this help
--- /dev/null
+../src/test_parser.nit:17,1--111,1
+ ../src/test_parser.nit:17,1--110,3
+ ../src/test_parser.nit:17,1--18,19
+ ../src/test_parser.nit:17,1--18,0
+ '# Program used to test the NIT parser
+' ... ../src/test_parser.nit:17,1--18,0
+ keyword 'package' ... ../src/test_parser.nit:18,1--7
+ ../src/test_parser.nit:18,9--19
+ identifier 'test_parser' ... ../src/test_parser.nit:18,9--19
+ ../src/test_parser.nit:20,1--13
+ ../src/test_parser.nit:20,8
+ keyword 'import' ... ../src/test_parser.nit:20,1--6
+ ../src/test_parser.nit:20,8--13
+ identifier 'parser' ... ../src/test_parser.nit:20,8--13
+ ../src/test_parser.nit:22,1--42,3
+ ../src/test_parser.nit:22,1
+ ../src/test_parser.nit:22,1--5
+ keyword 'class' ... ../src/test_parser.nit:22,1--5
+ type identifier 'PrintTreeVisitor' ... ../src/test_parser.nit:22,7--22
+ ../src/test_parser.nit:23,2--14
+ keyword 'super' ... ../src/test_parser.nit:23,2--6
+ ../src/test_parser.nit:23,8--14
+ type identifier 'Visitor' ... ../src/test_parser.nit:23,8--14
+ ../src/test_parser.nit:24,2--15
+ ../src/test_parser.nit:24,13
+ keyword 'var' ... ../src/test_parser.nit:24,2--4
+ attribute '_rank' ... ../src/test_parser.nit:24,6--10
+ ../src/test_parser.nit:24,13--15
+ type identifier 'Int' ... ../src/test_parser.nit:24,13--15
+ ../src/test_parser.nit:25,2--36,4
+ keyword 'redef' ... ../src/test_parser.nit:25,2--6
+ ../src/test_parser.nit:25,12
+ keyword 'fun' ... ../src/test_parser.nit:25,8--10
+ ../src/test_parser.nit:25,12--16
+ identifier 'visit' ... ../src/test_parser.nit:25,12--16
+ ../src/test_parser.nit:25,17--35
+ '(' ... ../src/test_parser.nit:25,17
+ ../src/test_parser.nit:25,18--34
+ identifier 'n' ... ../src/test_parser.nit:25,18
+ ../src/test_parser.nit:25,21--34
+ keyword 'nullable' ... ../src/test_parser.nit:25,21--28
+ type identifier 'ANode' ... ../src/test_parser.nit:25,30--34
+ ')' ... ../src/test_parser.nit:25,35
+ ../src/test_parser.nit:27,3--36,4
+ ../src/test_parser.nit:27,3--26
+ keyword 'if' ... ../src/test_parser.nit:27,3--4
+ ../src/test_parser.nit:27,6--14
+ ../src/test_parser.nit:27,6
+ ../src/test_parser.nit:27,6
+ identifier 'n' ... ../src/test_parser.nit:27,6
+ ../src/test_parser.nit:27,6
+ ../src/test_parser.nit:27,11--14
+ keyword 'null' ... ../src/test_parser.nit:27,11--14
+ ../src/test_parser.nit:27,21--26
+ keyword 'return' ... ../src/test_parser.nit:27,21--26
+ ../src/test_parser.nit:28,3--32,5
+ keyword 'if' ... ../src/test_parser.nit:28,3--4
+ ../src/test_parser.nit:28,6--16
+ ../src/test_parser.nit:28,6
+ ../src/test_parser.nit:28,6
+ identifier 'n' ... ../src/test_parser.nit:28,6
+ ../src/test_parser.nit:28,6
+ ../src/test_parser.nit:28,12--16
+ type identifier 'Token' ... ../src/test_parser.nit:28,12--16
+ ../src/test_parser.nit:29,4--58
+ ../src/test_parser.nit:29,4--58
+ ../src/test_parser.nit:29,11
+ identifier 'printn' ... ../src/test_parser.nit:29,4--9
+ ../src/test_parser.nit:29,10--58
+ '(' ... ../src/test_parser.nit:29,10
+ ../src/test_parser.nit:29,11--22
+ ../src/test_parser.nit:29,11--14
+ literal value '" "' ... ../src/test_parser.nit:29,11--14
+ ../src/test_parser.nit:29,18--22
+ ../src/test_parser.nit:29,18
+ attribute '_rank' ... ../src/test_parser.nit:29,18--22
+ ../src/test_parser.nit:29,25--30
+ ../src/test_parser.nit:29,25
+ ../src/test_parser.nit:29,25
+ identifier 'n' ... ../src/test_parser.nit:29,25
+ ../src/test_parser.nit:29,25
+ identifier 'to_s' ... ../src/test_parser.nit:29,27--30
+ ../src/test_parser.nit:29,25
+ ../src/test_parser.nit:29,33--39
+ literal value '" ... "' ... ../src/test_parser.nit:29,33--39
+ ../src/test_parser.nit:29,42--51
+ ../src/test_parser.nit:29,42
+ ../src/test_parser.nit:29,42
+ identifier 'n' ... ../src/test_parser.nit:29,42
+ ../src/test_parser.nit:29,42
+ identifier 'location' ... ../src/test_parser.nit:29,44--51
+ ../src/test_parser.nit:29,42
+ ../src/test_parser.nit:29,54--57
+ literal value '"\n"' ... ../src/test_parser.nit:29,54--57
+ ')' ... ../src/test_parser.nit:29,58
+ ../src/test_parser.nit:31,4--32,5
+ ../src/test_parser.nit:31,4--41
+ ../src/test_parser.nit:31,11
+ identifier 'printn' ... ../src/test_parser.nit:31,4--9
+ ../src/test_parser.nit:31,10--41
+ '(' ... ../src/test_parser.nit:31,10
+ ../src/test_parser.nit:31,11--22
+ ../src/test_parser.nit:31,11--14
+ literal value '" "' ... ../src/test_parser.nit:31,11--14
+ ../src/test_parser.nit:31,18--22
+ ../src/test_parser.nit:31,18
+ attribute '_rank' ... ../src/test_parser.nit:31,18--22
+ ../src/test_parser.nit:31,25--34
+ ../src/test_parser.nit:31,25
+ ../src/test_parser.nit:31,25
+ identifier 'n' ... ../src/test_parser.nit:31,25
+ ../src/test_parser.nit:31,25
+ identifier 'location' ... ../src/test_parser.nit:31,27--34
+ ../src/test_parser.nit:31,25
+ ../src/test_parser.nit:31,37--40
+ literal value '"\n"' ... ../src/test_parser.nit:31,37--40
+ ')' ... ../src/test_parser.nit:31,41
+ keyword 'end' ... ../src/test_parser.nit:32,3--5
+ ../src/test_parser.nit:33,3--19
+ ../src/test_parser.nit:33,11
+ attribute '_rank' ... ../src/test_parser.nit:33,3--7
+ '=' ... ../src/test_parser.nit:33,9
+ ../src/test_parser.nit:33,11--19
+ ../src/test_parser.nit:33,11--15
+ ../src/test_parser.nit:33,11
+ attribute '_rank' ... ../src/test_parser.nit:33,11--15
+ ../src/test_parser.nit:33,19
+ literal value '1' ... ../src/test_parser.nit:33,19
+ ../src/test_parser.nit:34,3--19
+ ../src/test_parser.nit:34,3
+ ../src/test_parser.nit:34,3
+ identifier 'n' ... ../src/test_parser.nit:34,3
+ ../src/test_parser.nit:34,3
+ identifier 'visit_all' ... ../src/test_parser.nit:34,5--13
+ ../src/test_parser.nit:34,14--19
+ '(' ... ../src/test_parser.nit:34,14
+ ../src/test_parser.nit:34,15--18
+ keyword 'self' ... ../src/test_parser.nit:34,15--18
+ ')' ... ../src/test_parser.nit:34,19
+ ../src/test_parser.nit:35,3--19
+ ../src/test_parser.nit:35,11
+ attribute '_rank' ... ../src/test_parser.nit:35,3--7
+ '=' ... ../src/test_parser.nit:35,9
+ ../src/test_parser.nit:35,11--19
+ ../src/test_parser.nit:35,11--15
+ ../src/test_parser.nit:35,11
+ attribute '_rank' ... ../src/test_parser.nit:35,11--15
+ ../src/test_parser.nit:35,19
+ literal value '1' ... ../src/test_parser.nit:35,19
+ keyword 'end' ... ../src/test_parser.nit:36,2--4
+ ../src/test_parser.nit:38,2--41,4
+ ../src/test_parser.nit:40,11
+ keyword 'init' ... ../src/test_parser.nit:38,2--5
+ ../src/test_parser.nit:40,11
+ ../src/test_parser.nit:40,3--41,4
+ ../src/test_parser.nit:40,3--11
+ ../src/test_parser.nit:40,11
+ attribute '_rank' ... ../src/test_parser.nit:40,3--7
+ '=' ... ../src/test_parser.nit:40,9
+ ../src/test_parser.nit:40,11
+ literal value '0' ... ../src/test_parser.nit:40,11
+ keyword 'end' ... ../src/test_parser.nit:41,2--4
+ keyword 'end' ... ../src/test_parser.nit:42,1--3
+ ../src/test_parser.nit:44,1--110,3
+ ../src/test_parser.nit:44,1--110,3
+ ../src/test_parser.nit:44,1--110,3
+ ../src/test_parser.nit:44,1--20
+ keyword 'var' ... ../src/test_parser.nit:44,1--3
+ identifier 'no_print' ... ../src/test_parser.nit:44,5--12
+ '=' ... ../src/test_parser.nit:44,14
+ ../src/test_parser.nit:44,16--20
+ keyword 'false' ... ../src/test_parser.nit:44,16--20
+ ../src/test_parser.nit:45,1--22
+ keyword 'var' ... ../src/test_parser.nit:45,1--3
+ identifier 'only_lexer' ... ../src/test_parser.nit:45,5--14
+ '=' ... ../src/test_parser.nit:45,16
+ ../src/test_parser.nit:45,18--22
+ keyword 'false' ... ../src/test_parser.nit:45,18--22
+ ../src/test_parser.nit:46,1--21
+ keyword 'var' ... ../src/test_parser.nit:46,1--3
+ identifier 'need_help' ... ../src/test_parser.nit:46,5--13
+ '=' ... ../src/test_parser.nit:46,15
+ ../src/test_parser.nit:46,17--21
+ keyword 'false' ... ../src/test_parser.nit:46,17--21
+ ../src/test_parser.nit:47,1--19
+ keyword 'var' ... ../src/test_parser.nit:47,1--3
+ identifier 'no_file' ... ../src/test_parser.nit:47,5--11
+ '=' ... ../src/test_parser.nit:47,13
+ ../src/test_parser.nit:47,15--19
+ keyword 'false' ... ../src/test_parser.nit:47,15--19
+ ../src/test_parser.nit:49,1--65,3
+ keyword 'while' ... ../src/test_parser.nit:49,1--5
+ ../src/test_parser.nit:49,7--51
+ ../src/test_parser.nit:49,7--23
+ keyword 'not' ... ../src/test_parser.nit:49,7--9
+ ../src/test_parser.nit:49,11--23
+ ../src/test_parser.nit:49,11--14
+ ../src/test_parser.nit:49,11
+ identifier 'args' ... ../src/test_parser.nit:49,11--14
+ ../src/test_parser.nit:49,11
+ identifier 'is_empty' ... ../src/test_parser.nit:49,16--23
+ ../src/test_parser.nit:49,11
+ ../src/test_parser.nit:49,29--51
+ ../src/test_parser.nit:49,29--44
+ ../src/test_parser.nit:49,29--38
+ ../src/test_parser.nit:49,29--32
+ ../src/test_parser.nit:49,29
+ identifier 'args' ... ../src/test_parser.nit:49,29--32
+ ../src/test_parser.nit:49,29
+ identifier 'first' ... ../src/test_parser.nit:49,34--38
+ ../src/test_parser.nit:49,29
+ identifier 'first' ... ../src/test_parser.nit:49,40--44
+ ../src/test_parser.nit:49,29
+ ../src/test_parser.nit:49,49--51
+ literal value ''-'' ... ../src/test_parser.nit:49,49--51
+ keyword 'do' ... ../src/test_parser.nit:49,53--54
+ ../src/test_parser.nit:50,2--65,3
+ ../src/test_parser.nit:50,2--63,4
+ keyword 'if' ... ../src/test_parser.nit:50,2--3
+ ../src/test_parser.nit:50,5--22
+ ../src/test_parser.nit:50,5--14
+ ../src/test_parser.nit:50,5--8
+ ../src/test_parser.nit:50,5
+ identifier 'args' ... ../src/test_parser.nit:50,5--8
+ ../src/test_parser.nit:50,5
+ identifier 'first' ... ../src/test_parser.nit:50,10--14
+ ../src/test_parser.nit:50,5
+ ../src/test_parser.nit:50,19--22
+ literal value '"-n"' ... ../src/test_parser.nit:50,19--22
+ ../src/test_parser.nit:51,3--17
+ ../src/test_parser.nit:51,3--17
+ ../src/test_parser.nit:51,14
+ identifier 'no_print' ... ../src/test_parser.nit:51,3--10
+ ../src/test_parser.nit:51,14
+ '=' ... ../src/test_parser.nit:51,12
+ ../src/test_parser.nit:51,14--17
+ keyword 'true' ... ../src/test_parser.nit:51,14--17
+ ../src/test_parser.nit:52,7--63,4
+ keyword 'if' ... ../src/test_parser.nit:52,7--8
+ ../src/test_parser.nit:52,10--27
+ ../src/test_parser.nit:52,10--19
+ ../src/test_parser.nit:52,10--13
+ ../src/test_parser.nit:52,10
+ identifier 'args' ... ../src/test_parser.nit:52,10--13
+ ../src/test_parser.nit:52,10
+ identifier 'first' ... ../src/test_parser.nit:52,15--19
+ ../src/test_parser.nit:52,10
+ ../src/test_parser.nit:52,24--27
+ literal value '"-l"' ... ../src/test_parser.nit:52,24--27
+ ../src/test_parser.nit:53,3--19
+ ../src/test_parser.nit:53,3--19
+ ../src/test_parser.nit:53,16
+ identifier 'only_lexer' ... ../src/test_parser.nit:53,3--12
+ ../src/test_parser.nit:53,16
+ '=' ... ../src/test_parser.nit:53,14
+ ../src/test_parser.nit:53,16--19
+ keyword 'true' ... ../src/test_parser.nit:53,16--19
+ ../src/test_parser.nit:54,7--63,4
+ keyword 'if' ... ../src/test_parser.nit:54,7--8
+ ../src/test_parser.nit:54,10--27
+ ../src/test_parser.nit:54,10--19
+ ../src/test_parser.nit:54,10--13
+ ../src/test_parser.nit:54,10
+ identifier 'args' ... ../src/test_parser.nit:54,10--13
+ ../src/test_parser.nit:54,10
+ identifier 'first' ... ../src/test_parser.nit:54,15--19
+ ../src/test_parser.nit:54,10
+ ../src/test_parser.nit:54,24--27
+ literal value '"-p"' ... ../src/test_parser.nit:54,24--27
+ ../src/test_parser.nit:55,3--20
+ ../src/test_parser.nit:55,3--20
+ ../src/test_parser.nit:55,16
+ identifier 'only_lexer' ... ../src/test_parser.nit:55,3--12
+ ../src/test_parser.nit:55,16
+ '=' ... ../src/test_parser.nit:55,14
+ ../src/test_parser.nit:55,16--20
+ keyword 'false' ... ../src/test_parser.nit:55,16--20
+ ../src/test_parser.nit:56,7--63,4
+ keyword 'if' ... ../src/test_parser.nit:56,7--8
+ ../src/test_parser.nit:56,10--27
+ ../src/test_parser.nit:56,10--19
+ ../src/test_parser.nit:56,10--13
+ ../src/test_parser.nit:56,10
+ identifier 'args' ... ../src/test_parser.nit:56,10--13
+ ../src/test_parser.nit:56,10
+ identifier 'first' ... ../src/test_parser.nit:56,15--19
+ ../src/test_parser.nit:56,10
+ ../src/test_parser.nit:56,24--27
+ literal value '"-e"' ... ../src/test_parser.nit:56,24--27
+ ../src/test_parser.nit:57,3--16
+ ../src/test_parser.nit:57,3--16
+ ../src/test_parser.nit:57,13
+ identifier 'no_file' ... ../src/test_parser.nit:57,3--9
+ ../src/test_parser.nit:57,13
+ '=' ... ../src/test_parser.nit:57,11
+ ../src/test_parser.nit:57,13--16
+ keyword 'true' ... ../src/test_parser.nit:57,13--16
+ ../src/test_parser.nit:58,7--63,4
+ keyword 'if' ... ../src/test_parser.nit:58,7--8
+ ../src/test_parser.nit:58,10--49
+ ../src/test_parser.nit:58,10--27
+ ../src/test_parser.nit:58,10--19
+ ../src/test_parser.nit:58,10--13
+ ../src/test_parser.nit:58,10
+ identifier 'args' ... ../src/test_parser.nit:58,10--13
+ ../src/test_parser.nit:58,10
+ identifier 'first' ... ../src/test_parser.nit:58,15--19
+ ../src/test_parser.nit:58,10
+ ../src/test_parser.nit:58,24--27
+ literal value '"-h"' ... ../src/test_parser.nit:58,24--27
+ ../src/test_parser.nit:58,32--49
+ ../src/test_parser.nit:58,32--41
+ ../src/test_parser.nit:58,32--35
+ ../src/test_parser.nit:58,32
+ identifier 'args' ... ../src/test_parser.nit:58,32--35
+ ../src/test_parser.nit:58,32
+ identifier 'first' ... ../src/test_parser.nit:58,37--41
+ ../src/test_parser.nit:58,32
+ ../src/test_parser.nit:58,46--49
+ literal value '"-?"' ... ../src/test_parser.nit:58,46--49
+ ../src/test_parser.nit:59,3--18
+ ../src/test_parser.nit:59,3--18
+ ../src/test_parser.nit:59,15
+ identifier 'need_help' ... ../src/test_parser.nit:59,3--11
+ ../src/test_parser.nit:59,15
+ '=' ... ../src/test_parser.nit:59,13
+ ../src/test_parser.nit:59,15--18
+ keyword 'true' ... ../src/test_parser.nit:59,15--18
+ ../src/test_parser.nit:61,3--63,4
+ ../src/test_parser.nit:61,3--48
+ ../src/test_parser.nit:61,3--8
+ ../src/test_parser.nit:61,3
+ identifier 'stderr' ... ../src/test_parser.nit:61,3--8
+ ../src/test_parser.nit:61,3
+ identifier 'write' ... ../src/test_parser.nit:61,10--14
+ ../src/test_parser.nit:61,15--48
+ '(' ... ../src/test_parser.nit:61,15
+ ../src/test_parser.nit:61,16--47
+ ../src/test_parser.nit:61,16--32
+ literal value '"Unknown option {' ... ../src/test_parser.nit:61,16--32
+ ../src/test_parser.nit:61,33--42
+ ../src/test_parser.nit:61,33--36
+ ../src/test_parser.nit:61,33
+ identifier 'args' ... ../src/test_parser.nit:61,33--36
+ ../src/test_parser.nit:61,33
+ identifier 'first' ... ../src/test_parser.nit:61,38--42
+ ../src/test_parser.nit:61,33
+ ../src/test_parser.nit:61,43--47
+ '}.\n"' ... ../src/test_parser.nit:61,43--47
+ ')' ... ../src/test_parser.nit:61,48
+ ../src/test_parser.nit:62,3--9
+ ../src/test_parser.nit:62,8
+ identifier 'exit' ... ../src/test_parser.nit:62,3--6
+ ../src/test_parser.nit:62,7--9
+ '(' ... ../src/test_parser.nit:62,7
+ ../src/test_parser.nit:62,8
+ literal value '0' ... ../src/test_parser.nit:62,8
+ ')' ... ../src/test_parser.nit:62,9
+ keyword 'end' ... ../src/test_parser.nit:63,2--4
+ ../src/test_parser.nit:64,2--11
+ ../src/test_parser.nit:64,2--5
+ ../src/test_parser.nit:64,2
+ identifier 'args' ... ../src/test_parser.nit:64,2--5
+ ../src/test_parser.nit:64,2
+ identifier 'shift' ... ../src/test_parser.nit:64,7--11
+ ../src/test_parser.nit:64,2
+ keyword 'end' ... ../src/test_parser.nit:65,1--3
+ ../src/test_parser.nit:67,1--110,3
+ keyword 'if' ... ../src/test_parser.nit:67,1--2
+ ../src/test_parser.nit:67,4--29
+ ../src/test_parser.nit:67,4--16
+ ../src/test_parser.nit:67,4--7
+ ../src/test_parser.nit:67,4
+ identifier 'args' ... ../src/test_parser.nit:67,4--7
+ ../src/test_parser.nit:67,4
+ identifier 'is_empty' ... ../src/test_parser.nit:67,9--16
+ ../src/test_parser.nit:67,4
+ ../src/test_parser.nit:67,21--29
+ ../src/test_parser.nit:67,21
+ identifier 'need_help' ... ../src/test_parser.nit:67,21--29
+ ../src/test_parser.nit:67,21
+ ../src/test_parser.nit:68,2--75,30
+ ../src/test_parser.nit:68,2--16
+ ../src/test_parser.nit:68,8
+ identifier 'print' ... ../src/test_parser.nit:68,2--6
+ ../src/test_parser.nit:68,7--16
+ '(' ... ../src/test_parser.nit:68,7
+ ../src/test_parser.nit:68,8--15
+ literal value '"usage:"' ... ../src/test_parser.nit:68,8--15
+ ')' ... ../src/test_parser.nit:68,16
+ ../src/test_parser.nit:69,2--54
+ ../src/test_parser.nit:69,8
+ identifier 'print' ... ../src/test_parser.nit:69,2--6
+ ../src/test_parser.nit:69,7--54
+ '(' ... ../src/test_parser.nit:69,7
+ ../src/test_parser.nit:69,8--53
+ literal value '" test_parser [options]... <filename.nit>..."' ... ../src/test_parser.nit:69,8--53
+ ')' ... ../src/test_parser.nit:69,54
+ ../src/test_parser.nit:70,2--18
+ ../src/test_parser.nit:70,8
+ identifier 'print' ... ../src/test_parser.nit:70,2--6
+ ../src/test_parser.nit:70,7--18
+ '(' ... ../src/test_parser.nit:70,7
+ ../src/test_parser.nit:70,8--17
+ literal value '"options:"' ... ../src/test_parser.nit:70,8--17
+ ')' ... ../src/test_parser.nit:70,18
+ ../src/test_parser.nit:71,2--36
+ ../src/test_parser.nit:71,8
+ identifier 'print' ... ../src/test_parser.nit:71,2--6
+ ../src/test_parser.nit:71,7--36
+ '(' ... ../src/test_parser.nit:71,7
+ ../src/test_parser.nit:71,8--35
+ literal value '" -n do not print anything"' ... ../src/test_parser.nit:71,8--35
+ ')' ... ../src/test_parser.nit:71,36
+ ../src/test_parser.nit:72,2--25
+ ../src/test_parser.nit:72,8
+ identifier 'print' ... ../src/test_parser.nit:72,2--6
+ ../src/test_parser.nit:72,7--25
+ '(' ... ../src/test_parser.nit:72,7
+ ../src/test_parser.nit:72,8--24
+ literal value '" -l only lexer"' ... ../src/test_parser.nit:72,8--24
+ ')' ... ../src/test_parser.nit:72,25
+ ../src/test_parser.nit:73,2--41
+ ../src/test_parser.nit:73,8
+ identifier 'print' ... ../src/test_parser.nit:73,2--6
+ ../src/test_parser.nit:73,7--41
+ '(' ... ../src/test_parser.nit:73,7
+ ../src/test_parser.nit:73,8--40
+ literal value '" -p lexer and parser (default)"' ... ../src/test_parser.nit:73,8--40
+ ')' ... ../src/test_parser.nit:73,41
+ ../src/test_parser.nit:74,2--68
+ ../src/test_parser.nit:74,8
+ identifier 'print' ... ../src/test_parser.nit:74,2--6
+ ../src/test_parser.nit:74,7--68
+ '(' ... ../src/test_parser.nit:74,7
+ ../src/test_parser.nit:74,8--67
+ literal value '" -e instead on files, each argument is a content to parse"' ... ../src/test_parser.nit:74,8--67
+ ')' ... ../src/test_parser.nit:74,68
+ ../src/test_parser.nit:75,2--30
+ ../src/test_parser.nit:75,8
+ identifier 'print' ... ../src/test_parser.nit:75,2--6
+ ../src/test_parser.nit:75,7--30
+ '(' ... ../src/test_parser.nit:75,7
+ ../src/test_parser.nit:75,8--29
+ literal value '" -h print this help"' ... ../src/test_parser.nit:75,8--29
+ ')' ... ../src/test_parser.nit:75,30
+ ../src/test_parser.nit:77,2--110,3
+ ../src/test_parser.nit:77,2--109,4
+ keyword 'for' ... ../src/test_parser.nit:77,2--4
+ identifier 'a' ... ../src/test_parser.nit:77,6
+ ../src/test_parser.nit:77,11--14
+ ../src/test_parser.nit:77,11
+ identifier 'args' ... ../src/test_parser.nit:77,11--14
+ ../src/test_parser.nit:77,11
+ keyword 'do' ... ../src/test_parser.nit:77,16--17
+ ../src/test_parser.nit:78,3--109,4
+ ../src/test_parser.nit:78,3--12
+ keyword 'var' ... ../src/test_parser.nit:78,3--5
+ identifier 'source' ... ../src/test_parser.nit:78,7--12
+ ../src/test_parser.nit:79,3--85,5
+ keyword 'if' ... ../src/test_parser.nit:79,3--4
+ ../src/test_parser.nit:79,6--12
+ ../src/test_parser.nit:79,6
+ identifier 'no_file' ... ../src/test_parser.nit:79,6--12
+ ../src/test_parser.nit:79,6
+ ../src/test_parser.nit:80,4--45
+ ../src/test_parser.nit:80,4--45
+ ../src/test_parser.nit:80,17
+ identifier 'source' ... ../src/test_parser.nit:80,4--9
+ ../src/test_parser.nit:80,17
+ '=' ... ../src/test_parser.nit:80,11
+ ../src/test_parser.nit:80,13--45
+ keyword 'new' ... ../src/test_parser.nit:80,13--15
+ ../src/test_parser.nit:80,17--26
+ type identifier 'SourceFile' ... ../src/test_parser.nit:80,17--26
+ identifier 'from_string' ... ../src/test_parser.nit:80,28--38
+ ../src/test_parser.nit:80,39--45
+ '(' ... ../src/test_parser.nit:80,39
+ ../src/test_parser.nit:80,40--41
+ literal value '""' ... ../src/test_parser.nit:80,40--41
+ ../src/test_parser.nit:80,44
+ ../src/test_parser.nit:80,44
+ identifier 'a' ... ../src/test_parser.nit:80,44
+ ../src/test_parser.nit:80,44
+ ')' ... ../src/test_parser.nit:80,45
+ ../src/test_parser.nit:82,4--85,5
+ ../src/test_parser.nit:82,4--31
+ keyword 'var' ... ../src/test_parser.nit:82,4--6
+ identifier 'f' ... ../src/test_parser.nit:82,8
+ '=' ... ../src/test_parser.nit:82,10
+ ../src/test_parser.nit:82,12--31
+ keyword 'new' ... ../src/test_parser.nit:82,12--14
+ ../src/test_parser.nit:82,16--23
+ type identifier 'IFStream' ... ../src/test_parser.nit:82,16--23
+ identifier 'open' ... ../src/test_parser.nit:82,25--28
+ ../src/test_parser.nit:82,29--31
+ '(' ... ../src/test_parser.nit:82,29
+ ../src/test_parser.nit:82,30
+ ../src/test_parser.nit:82,30
+ identifier 'a' ... ../src/test_parser.nit:82,30
+ ../src/test_parser.nit:82,30
+ ')' ... ../src/test_parser.nit:82,31
+ ../src/test_parser.nit:83,4--32
+ ../src/test_parser.nit:83,17
+ identifier 'source' ... ../src/test_parser.nit:83,4--9
+ ../src/test_parser.nit:83,17
+ '=' ... ../src/test_parser.nit:83,11
+ ../src/test_parser.nit:83,13--32
+ keyword 'new' ... ../src/test_parser.nit:83,13--15
+ ../src/test_parser.nit:83,17--26
+ type identifier 'SourceFile' ... ../src/test_parser.nit:83,17--26
+ ../src/test_parser.nit:83,27--32
+ '(' ... ../src/test_parser.nit:83,27
+ ../src/test_parser.nit:83,28
+ ../src/test_parser.nit:83,28
+ identifier 'a' ... ../src/test_parser.nit:83,28
+ ../src/test_parser.nit:83,28
+ ../src/test_parser.nit:83,31
+ ../src/test_parser.nit:83,31
+ identifier 'f' ... ../src/test_parser.nit:83,31
+ ../src/test_parser.nit:83,31
+ ')' ... ../src/test_parser.nit:83,32
+ ../src/test_parser.nit:84,4--10
+ ../src/test_parser.nit:84,4
+ ../src/test_parser.nit:84,4
+ identifier 'f' ... ../src/test_parser.nit:84,4
+ ../src/test_parser.nit:84,4
+ identifier 'close' ... ../src/test_parser.nit:84,6--10
+ ../src/test_parser.nit:84,4
+ keyword 'end' ... ../src/test_parser.nit:85,3--5
+ ../src/test_parser.nit:86,3--31
+ keyword 'var' ... ../src/test_parser.nit:86,3--5
+ identifier 'lexer' ... ../src/test_parser.nit:86,7--11
+ '=' ... ../src/test_parser.nit:86,13
+ ../src/test_parser.nit:86,15--31
+ keyword 'new' ... ../src/test_parser.nit:86,15--17
+ ../src/test_parser.nit:86,19--23
+ type identifier 'Lexer' ... ../src/test_parser.nit:86,19--23
+ ../src/test_parser.nit:86,24--31
+ '(' ... ../src/test_parser.nit:86,24
+ ../src/test_parser.nit:86,25--30
+ ../src/test_parser.nit:86,25
+ identifier 'source' ... ../src/test_parser.nit:86,25--30
+ ../src/test_parser.nit:86,25
+ ')' ... ../src/test_parser.nit:86,31
+ ../src/test_parser.nit:87,3--108,5
+ keyword 'if' ... ../src/test_parser.nit:87,3--4
+ ../src/test_parser.nit:87,6--15
+ ../src/test_parser.nit:87,6
+ identifier 'only_lexer' ... ../src/test_parser.nit:87,6--15
+ ../src/test_parser.nit:87,6
+ ../src/test_parser.nit:88,4--94,6
+ ../src/test_parser.nit:88,4--25
+ keyword 'var' ... ../src/test_parser.nit:88,4--6
+ identifier 'token' ... ../src/test_parser.nit:88,8--12
+ '=' ... ../src/test_parser.nit:88,14
+ ../src/test_parser.nit:88,16--25
+ ../src/test_parser.nit:88,16--20
+ ../src/test_parser.nit:88,16
+ identifier 'lexer' ... ../src/test_parser.nit:88,16--20
+ ../src/test_parser.nit:88,16
+ identifier 'next' ... ../src/test_parser.nit:88,22--25
+ ../src/test_parser.nit:88,16
+ ../src/test_parser.nit:89,4--94,6
+ keyword 'while' ... ../src/test_parser.nit:89,4--8
+ ../src/test_parser.nit:89,10--26
+ keyword 'not' ... ../src/test_parser.nit:89,10--12
+ ../src/test_parser.nit:89,14--26
+ ../src/test_parser.nit:89,14--18
+ ../src/test_parser.nit:89,14
+ identifier 'token' ... ../src/test_parser.nit:89,14--18
+ ../src/test_parser.nit:89,14
+ ../src/test_parser.nit:89,24--26
+ type identifier 'EOF' ... ../src/test_parser.nit:89,24--26
+ keyword 'do' ... ../src/test_parser.nit:89,28--29
+ ../src/test_parser.nit:90,5--94,6
+ ../src/test_parser.nit:90,5--92,7
+ keyword 'if' ... ../src/test_parser.nit:90,5--6
+ ../src/test_parser.nit:90,8--19
+ keyword 'not' ... ../src/test_parser.nit:90,8--10
+ ../src/test_parser.nit:90,12--19
+ ../src/test_parser.nit:90,12
+ identifier 'no_print' ... ../src/test_parser.nit:90,12--19
+ ../src/test_parser.nit:90,12
+ ../src/test_parser.nit:91,6--64
+ ../src/test_parser.nit:91,6--64
+ ../src/test_parser.nit:91,12
+ identifier 'print' ... ../src/test_parser.nit:91,6--10
+ ../src/test_parser.nit:91,11--64
+ '(' ... ../src/test_parser.nit:91,11
+ ../src/test_parser.nit:91,12--63
+ ../src/test_parser.nit:91,12--27
+ literal value '"Read token at {' ... ../src/test_parser.nit:91,12--27
+ ../src/test_parser.nit:91,28--41
+ ../src/test_parser.nit:91,28--32
+ ../src/test_parser.nit:91,28
+ identifier 'token' ... ../src/test_parser.nit:91,28--32
+ ../src/test_parser.nit:91,28
+ identifier 'location' ... ../src/test_parser.nit:91,34--41
+ ../src/test_parser.nit:91,28
+ ../src/test_parser.nit:91,42--50
+ literal value '} text='{' ... ../src/test_parser.nit:91,42--50
+ ../src/test_parser.nit:91,51--60
+ ../src/test_parser.nit:91,51--55
+ ../src/test_parser.nit:91,51
+ identifier 'token' ... ../src/test_parser.nit:91,51--55
+ ../src/test_parser.nit:91,51
+ identifier 'text' ... ../src/test_parser.nit:91,57--60
+ ../src/test_parser.nit:91,51
+ ../src/test_parser.nit:91,61--63
+ '}'"' ... ../src/test_parser.nit:91,61--63
+ ')' ... ../src/test_parser.nit:91,64
+ ../src/test_parser.nit:92,5--7
+ keyword 'end' ... ../src/test_parser.nit:92,5--7
+ ../src/test_parser.nit:93,5--22
+ ../src/test_parser.nit:93,13
+ identifier 'token' ... ../src/test_parser.nit:93,5--9
+ ../src/test_parser.nit:93,13
+ '=' ... ../src/test_parser.nit:93,11
+ ../src/test_parser.nit:93,13--22
+ ../src/test_parser.nit:93,13--17
+ ../src/test_parser.nit:93,13
+ identifier 'lexer' ... ../src/test_parser.nit:93,13--17
+ ../src/test_parser.nit:93,13
+ identifier 'next' ... ../src/test_parser.nit:93,19--22
+ ../src/test_parser.nit:93,13
+ keyword 'end' ... ../src/test_parser.nit:94,4--6
+ ../src/test_parser.nit:96,4--108,5
+ ../src/test_parser.nit:96,4--33
+ keyword 'var' ... ../src/test_parser.nit:96,4--6
+ identifier 'parser' ... ../src/test_parser.nit:96,8--13
+ '=' ... ../src/test_parser.nit:96,15
+ ../src/test_parser.nit:96,17--33
+ keyword 'new' ... ../src/test_parser.nit:96,17--19
+ ../src/test_parser.nit:96,21--26
+ type identifier 'Parser' ... ../src/test_parser.nit:96,21--26
+ ../src/test_parser.nit:96,27--33
+ '(' ... ../src/test_parser.nit:96,27
+ ../src/test_parser.nit:96,28--32
+ ../src/test_parser.nit:96,28
+ identifier 'lexer' ... ../src/test_parser.nit:96,28--32
+ ../src/test_parser.nit:96,28
+ ')' ... ../src/test_parser.nit:96,33
+ ../src/test_parser.nit:97,4--26
+ keyword 'var' ... ../src/test_parser.nit:97,4--6
+ identifier 'tree' ... ../src/test_parser.nit:97,8--11
+ '=' ... ../src/test_parser.nit:97,13
+ ../src/test_parser.nit:97,15--26
+ ../src/test_parser.nit:97,15--20
+ ../src/test_parser.nit:97,15
+ identifier 'parser' ... ../src/test_parser.nit:97,15--20
+ ../src/test_parser.nit:97,15
+ identifier 'parse' ... ../src/test_parser.nit:97,22--26
+ ../src/test_parser.nit:97,15
+ ../src/test_parser.nit:99,4--25
+ keyword 'var' ... ../src/test_parser.nit:99,4--6
+ identifier 'error' ... ../src/test_parser.nit:99,8--12
+ '=' ... ../src/test_parser.nit:99,14
+ ../src/test_parser.nit:99,16--25
+ ../src/test_parser.nit:99,16--19
+ ../src/test_parser.nit:99,16
+ identifier 'tree' ... ../src/test_parser.nit:99,16--19
+ ../src/test_parser.nit:99,16
+ identifier 'n_eof' ... ../src/test_parser.nit:99,21--25
+ ../src/test_parser.nit:99,16
+ ../src/test_parser.nit:100,4--103,6
+ keyword 'if' ... ../src/test_parser.nit:100,4--5
+ ../src/test_parser.nit:100,7--22
+ ../src/test_parser.nit:100,7--11
+ ../src/test_parser.nit:100,7
+ identifier 'error' ... ../src/test_parser.nit:100,7--11
+ ../src/test_parser.nit:100,7
+ ../src/test_parser.nit:100,17--22
+ type identifier 'AError' ... ../src/test_parser.nit:100,17--22
+ ../src/test_parser.nit:101,5--102,10
+ ../src/test_parser.nit:101,5--58
+ ../src/test_parser.nit:101,11
+ identifier 'print' ... ../src/test_parser.nit:101,5--9
+ ../src/test_parser.nit:101,10--58
+ '(' ... ../src/test_parser.nit:101,10
+ ../src/test_parser.nit:101,11--57
+ ../src/test_parser.nit:101,11--21
+ literal value '"Error at {' ... ../src/test_parser.nit:101,11--21
+ ../src/test_parser.nit:101,22--35
+ ../src/test_parser.nit:101,22--26
+ ../src/test_parser.nit:101,22
+ identifier 'error' ... ../src/test_parser.nit:101,22--26
+ ../src/test_parser.nit:101,22
+ identifier 'location' ... ../src/test_parser.nit:101,28--35
+ ../src/test_parser.nit:101,22
+ ../src/test_parser.nit:101,36--42
+ literal value '}:\n\t{' ... ../src/test_parser.nit:101,36--42
+ ../src/test_parser.nit:101,43--55
+ ../src/test_parser.nit:101,43--47
+ ../src/test_parser.nit:101,43
+ identifier 'error' ... ../src/test_parser.nit:101,43--47
+ ../src/test_parser.nit:101,43
+ identifier 'message' ... ../src/test_parser.nit:101,49--55
+ ../src/test_parser.nit:101,43
+ ../src/test_parser.nit:101,56--57
+ '}"' ... ../src/test_parser.nit:101,56--57
+ ')' ... ../src/test_parser.nit:101,58
+ ../src/test_parser.nit:102,5--10
+ keyword 'return' ... ../src/test_parser.nit:102,5--10
+ ../src/test_parser.nit:103,4--6
+ keyword 'end' ... ../src/test_parser.nit:103,4--6
+ ../src/test_parser.nit:105,4--107,6
+ keyword 'if' ... ../src/test_parser.nit:105,4--5
+ ../src/test_parser.nit:105,7--18
+ keyword 'not' ... ../src/test_parser.nit:105,7--9
+ ../src/test_parser.nit:105,11--18
+ ../src/test_parser.nit:105,11
+ identifier 'no_print' ... ../src/test_parser.nit:105,11--18
+ ../src/test_parser.nit:105,11
+ ../src/test_parser.nit:106,5--44
+ ../src/test_parser.nit:106,5--44
+ ../src/test_parser.nit:106,5--26
+ '(' ... ../src/test_parser.nit:106,5
+ ../src/test_parser.nit:106,6--25
+ keyword 'new' ... ../src/test_parser.nit:106,6--8
+ ../src/test_parser.nit:106,10--25
+ type identifier 'PrintTreeVisitor' ... ../src/test_parser.nit:106,10--25
+ ../src/test_parser.nit:106,6
+ ')' ... ../src/test_parser.nit:106,26
+ identifier 'enter_visit' ... ../src/test_parser.nit:106,28--38
+ ../src/test_parser.nit:106,39--44
+ '(' ... ../src/test_parser.nit:106,39
+ ../src/test_parser.nit:106,40--43
+ ../src/test_parser.nit:106,40
+ identifier 'tree' ... ../src/test_parser.nit:106,40--43
+ ../src/test_parser.nit:106,40
+ ')' ... ../src/test_parser.nit:106,44
+ ../src/test_parser.nit:107,4--6
+ keyword 'end' ... ../src/test_parser.nit:107,4--6
+ keyword 'end' ... ../src/test_parser.nit:108,3--5
+ keyword 'end' ... ../src/test_parser.nit:109,2--4
+ keyword 'end' ... ../src/test_parser.nit:110,1--3
+ end of file ... ../src/test_parser.nit:111,1
+++ /dev/null
-../src/test_parser.nit:17,1--96,1
- ../src/test_parser.nit:17,1--95,3
- ../src/test_parser.nit:17,1--18,19
- ../src/test_parser.nit:17,1--18,0
- '# Program used to test the NIT parser
-' ... ../src/test_parser.nit:17,1--18,0
- keyword 'package' ... ../src/test_parser.nit:18,1--7
- ../src/test_parser.nit:18,9--19
- identifier 'test_parser' ... ../src/test_parser.nit:18,9--19
- ../src/test_parser.nit:20,1--13
- ../src/test_parser.nit:20,8
- keyword 'import' ... ../src/test_parser.nit:20,1--6
- ../src/test_parser.nit:20,8--13
- identifier 'parser' ... ../src/test_parser.nit:20,8--13
- ../src/test_parser.nit:22,1--42,3
- ../src/test_parser.nit:22,1
- ../src/test_parser.nit:22,1--5
- keyword 'class' ... ../src/test_parser.nit:22,1--5
- type identifier 'PrintTreeVisitor' ... ../src/test_parser.nit:22,7--22
- ../src/test_parser.nit:23,2--14
- keyword 'super' ... ../src/test_parser.nit:23,2--6
- ../src/test_parser.nit:23,8--14
- type identifier 'Visitor' ... ../src/test_parser.nit:23,8--14
- ../src/test_parser.nit:24,2--15
- ../src/test_parser.nit:24,13
- keyword 'var' ... ../src/test_parser.nit:24,2--4
- attribute '_rank' ... ../src/test_parser.nit:24,6--10
- ../src/test_parser.nit:24,13--15
- type identifier 'Int' ... ../src/test_parser.nit:24,13--15
- ../src/test_parser.nit:25,2--36,4
- keyword 'redef' ... ../src/test_parser.nit:25,2--6
- ../src/test_parser.nit:25,12
- keyword 'fun' ... ../src/test_parser.nit:25,8--10
- ../src/test_parser.nit:25,12--16
- identifier 'visit' ... ../src/test_parser.nit:25,12--16
- ../src/test_parser.nit:25,17--35
- '(' ... ../src/test_parser.nit:25,17
- ../src/test_parser.nit:25,18--34
- identifier 'n' ... ../src/test_parser.nit:25,18
- ../src/test_parser.nit:25,21--34
- keyword 'nullable' ... ../src/test_parser.nit:25,21--28
- type identifier 'ANode' ... ../src/test_parser.nit:25,30--34
- ')' ... ../src/test_parser.nit:25,35
- ../src/test_parser.nit:27,3--36,4
- ../src/test_parser.nit:27,3--26
- keyword 'if' ... ../src/test_parser.nit:27,3--4
- ../src/test_parser.nit:27,6--14
- ../src/test_parser.nit:27,6
- ../src/test_parser.nit:27,6
- identifier 'n' ... ../src/test_parser.nit:27,6
- ../src/test_parser.nit:27,6
- ../src/test_parser.nit:27,11--14
- keyword 'null' ... ../src/test_parser.nit:27,11--14
- ../src/test_parser.nit:27,21--26
- keyword 'return' ... ../src/test_parser.nit:27,21--26
- ../src/test_parser.nit:28,3--32,5
- keyword 'if' ... ../src/test_parser.nit:28,3--4
- ../src/test_parser.nit:28,6--16
- ../src/test_parser.nit:28,6
- ../src/test_parser.nit:28,6
- identifier 'n' ... ../src/test_parser.nit:28,6
- ../src/test_parser.nit:28,6
- ../src/test_parser.nit:28,12--16
- type identifier 'Token' ... ../src/test_parser.nit:28,12--16
- ../src/test_parser.nit:29,4--58
- ../src/test_parser.nit:29,4--58
- ../src/test_parser.nit:29,11
- identifier 'printn' ... ../src/test_parser.nit:29,4--9
- ../src/test_parser.nit:29,10--58
- '(' ... ../src/test_parser.nit:29,10
- ../src/test_parser.nit:29,11--22
- ../src/test_parser.nit:29,11--14
- literal value '" "' ... ../src/test_parser.nit:29,11--14
- ../src/test_parser.nit:29,18--22
- ../src/test_parser.nit:29,18
- attribute '_rank' ... ../src/test_parser.nit:29,18--22
- ../src/test_parser.nit:29,25--30
- ../src/test_parser.nit:29,25
- ../src/test_parser.nit:29,25
- identifier 'n' ... ../src/test_parser.nit:29,25
- ../src/test_parser.nit:29,25
- identifier 'to_s' ... ../src/test_parser.nit:29,27--30
- ../src/test_parser.nit:29,25
- ../src/test_parser.nit:29,33--39
- literal value '" ... "' ... ../src/test_parser.nit:29,33--39
- ../src/test_parser.nit:29,42--51
- ../src/test_parser.nit:29,42
- ../src/test_parser.nit:29,42
- identifier 'n' ... ../src/test_parser.nit:29,42
- ../src/test_parser.nit:29,42
- identifier 'location' ... ../src/test_parser.nit:29,44--51
- ../src/test_parser.nit:29,42
- ../src/test_parser.nit:29,54--57
- literal value '"\n"' ... ../src/test_parser.nit:29,54--57
- ')' ... ../src/test_parser.nit:29,58
- ../src/test_parser.nit:31,4--32,5
- ../src/test_parser.nit:31,4--41
- ../src/test_parser.nit:31,11
- identifier 'printn' ... ../src/test_parser.nit:31,4--9
- ../src/test_parser.nit:31,10--41
- '(' ... ../src/test_parser.nit:31,10
- ../src/test_parser.nit:31,11--22
- ../src/test_parser.nit:31,11--14
- literal value '" "' ... ../src/test_parser.nit:31,11--14
- ../src/test_parser.nit:31,18--22
- ../src/test_parser.nit:31,18
- attribute '_rank' ... ../src/test_parser.nit:31,18--22
- ../src/test_parser.nit:31,25--34
- ../src/test_parser.nit:31,25
- ../src/test_parser.nit:31,25
- identifier 'n' ... ../src/test_parser.nit:31,25
- ../src/test_parser.nit:31,25
- identifier 'location' ... ../src/test_parser.nit:31,27--34
- ../src/test_parser.nit:31,25
- ../src/test_parser.nit:31,37--40
- literal value '"\n"' ... ../src/test_parser.nit:31,37--40
- ')' ... ../src/test_parser.nit:31,41
- keyword 'end' ... ../src/test_parser.nit:32,3--5
- ../src/test_parser.nit:33,3--19
- ../src/test_parser.nit:33,11
- attribute '_rank' ... ../src/test_parser.nit:33,3--7
- '=' ... ../src/test_parser.nit:33,9
- ../src/test_parser.nit:33,11--19
- ../src/test_parser.nit:33,11--15
- ../src/test_parser.nit:33,11
- attribute '_rank' ... ../src/test_parser.nit:33,11--15
- ../src/test_parser.nit:33,19
- literal value '1' ... ../src/test_parser.nit:33,19
- ../src/test_parser.nit:34,3--19
- ../src/test_parser.nit:34,3
- ../src/test_parser.nit:34,3
- identifier 'n' ... ../src/test_parser.nit:34,3
- ../src/test_parser.nit:34,3
- identifier 'visit_all' ... ../src/test_parser.nit:34,5--13
- ../src/test_parser.nit:34,14--19
- '(' ... ../src/test_parser.nit:34,14
- ../src/test_parser.nit:34,15--18
- keyword 'self' ... ../src/test_parser.nit:34,15--18
- ')' ... ../src/test_parser.nit:34,19
- ../src/test_parser.nit:35,3--19
- ../src/test_parser.nit:35,11
- attribute '_rank' ... ../src/test_parser.nit:35,3--7
- '=' ... ../src/test_parser.nit:35,9
- ../src/test_parser.nit:35,11--19
- ../src/test_parser.nit:35,11--15
- ../src/test_parser.nit:35,11
- attribute '_rank' ... ../src/test_parser.nit:35,11--15
- ../src/test_parser.nit:35,19
- literal value '1' ... ../src/test_parser.nit:35,19
- keyword 'end' ... ../src/test_parser.nit:36,2--4
- ../src/test_parser.nit:38,2--41,4
- ../src/test_parser.nit:40,11
- keyword 'init' ... ../src/test_parser.nit:38,2--5
- ../src/test_parser.nit:40,11
- ../src/test_parser.nit:40,3--41,4
- ../src/test_parser.nit:40,3--11
- ../src/test_parser.nit:40,11
- attribute '_rank' ... ../src/test_parser.nit:40,3--7
- '=' ... ../src/test_parser.nit:40,9
- ../src/test_parser.nit:40,11
- literal value '0' ... ../src/test_parser.nit:40,11
- keyword 'end' ... ../src/test_parser.nit:41,2--4
- keyword 'end' ... ../src/test_parser.nit:42,1--3
- ../src/test_parser.nit:44,1--95,3
- ../src/test_parser.nit:44,1--95,3
- ../src/test_parser.nit:44,1--95,3
- ../src/test_parser.nit:44,1--20
- keyword 'var' ... ../src/test_parser.nit:44,1--3
- identifier 'no_print' ... ../src/test_parser.nit:44,5--12
- '=' ... ../src/test_parser.nit:44,14
- ../src/test_parser.nit:44,16--20
- keyword 'false' ... ../src/test_parser.nit:44,16--20
- ../src/test_parser.nit:45,1--22
- keyword 'var' ... ../src/test_parser.nit:45,1--3
- identifier 'only_lexer' ... ../src/test_parser.nit:45,5--14
- '=' ... ../src/test_parser.nit:45,16
- ../src/test_parser.nit:45,18--22
- keyword 'false' ... ../src/test_parser.nit:45,18--22
- ../src/test_parser.nit:46,1--21
- keyword 'var' ... ../src/test_parser.nit:46,1--3
- identifier 'need_help' ... ../src/test_parser.nit:46,5--13
- '=' ... ../src/test_parser.nit:46,15
- ../src/test_parser.nit:46,17--21
- keyword 'false' ... ../src/test_parser.nit:46,17--21
- ../src/test_parser.nit:48,1--62,3
- keyword 'while' ... ../src/test_parser.nit:48,1--5
- ../src/test_parser.nit:48,7--51
- ../src/test_parser.nit:48,7--23
- keyword 'not' ... ../src/test_parser.nit:48,7--9
- ../src/test_parser.nit:48,11--23
- ../src/test_parser.nit:48,11--14
- ../src/test_parser.nit:48,11
- identifier 'args' ... ../src/test_parser.nit:48,11--14
- ../src/test_parser.nit:48,11
- identifier 'is_empty' ... ../src/test_parser.nit:48,16--23
- ../src/test_parser.nit:48,11
- ../src/test_parser.nit:48,29--51
- ../src/test_parser.nit:48,29--44
- ../src/test_parser.nit:48,29--38
- ../src/test_parser.nit:48,29--32
- ../src/test_parser.nit:48,29
- identifier 'args' ... ../src/test_parser.nit:48,29--32
- ../src/test_parser.nit:48,29
- identifier 'first' ... ../src/test_parser.nit:48,34--38
- ../src/test_parser.nit:48,29
- identifier 'first' ... ../src/test_parser.nit:48,40--44
- ../src/test_parser.nit:48,29
- ../src/test_parser.nit:48,49--51
- literal value ''-'' ... ../src/test_parser.nit:48,49--51
- keyword 'do' ... ../src/test_parser.nit:48,53--54
- ../src/test_parser.nit:49,2--62,3
- ../src/test_parser.nit:49,2--60,4
- keyword 'if' ... ../src/test_parser.nit:49,2--3
- ../src/test_parser.nit:49,5--22
- ../src/test_parser.nit:49,5--14
- ../src/test_parser.nit:49,5--8
- ../src/test_parser.nit:49,5
- identifier 'args' ... ../src/test_parser.nit:49,5--8
- ../src/test_parser.nit:49,5
- identifier 'first' ... ../src/test_parser.nit:49,10--14
- ../src/test_parser.nit:49,5
- ../src/test_parser.nit:49,19--22
- literal value '"-n"' ... ../src/test_parser.nit:49,19--22
- ../src/test_parser.nit:50,3--17
- ../src/test_parser.nit:50,3--17
- ../src/test_parser.nit:50,14
- identifier 'no_print' ... ../src/test_parser.nit:50,3--10
- ../src/test_parser.nit:50,14
- '=' ... ../src/test_parser.nit:50,12
- ../src/test_parser.nit:50,14--17
- keyword 'true' ... ../src/test_parser.nit:50,14--17
- ../src/test_parser.nit:51,7--60,4
- keyword 'if' ... ../src/test_parser.nit:51,7--8
- ../src/test_parser.nit:51,10--27
- ../src/test_parser.nit:51,10--19
- ../src/test_parser.nit:51,10--13
- ../src/test_parser.nit:51,10
- identifier 'args' ... ../src/test_parser.nit:51,10--13
- ../src/test_parser.nit:51,10
- identifier 'first' ... ../src/test_parser.nit:51,15--19
- ../src/test_parser.nit:51,10
- ../src/test_parser.nit:51,24--27
- literal value '"-l"' ... ../src/test_parser.nit:51,24--27
- ../src/test_parser.nit:52,3--19
- ../src/test_parser.nit:52,3--19
- ../src/test_parser.nit:52,16
- identifier 'only_lexer' ... ../src/test_parser.nit:52,3--12
- ../src/test_parser.nit:52,16
- '=' ... ../src/test_parser.nit:52,14
- ../src/test_parser.nit:52,16--19
- keyword 'true' ... ../src/test_parser.nit:52,16--19
- ../src/test_parser.nit:53,7--60,4
- keyword 'if' ... ../src/test_parser.nit:53,7--8
- ../src/test_parser.nit:53,10--27
- ../src/test_parser.nit:53,10--19
- ../src/test_parser.nit:53,10--13
- ../src/test_parser.nit:53,10
- identifier 'args' ... ../src/test_parser.nit:53,10--13
- ../src/test_parser.nit:53,10
- identifier 'first' ... ../src/test_parser.nit:53,15--19
- ../src/test_parser.nit:53,10
- ../src/test_parser.nit:53,24--27
- literal value '"-p"' ... ../src/test_parser.nit:53,24--27
- ../src/test_parser.nit:54,3--20
- ../src/test_parser.nit:54,3--20
- ../src/test_parser.nit:54,16
- identifier 'only_lexer' ... ../src/test_parser.nit:54,3--12
- ../src/test_parser.nit:54,16
- '=' ... ../src/test_parser.nit:54,14
- ../src/test_parser.nit:54,16--20
- keyword 'false' ... ../src/test_parser.nit:54,16--20
- ../src/test_parser.nit:55,7--60,4
- keyword 'if' ... ../src/test_parser.nit:55,7--8
- ../src/test_parser.nit:55,10--49
- ../src/test_parser.nit:55,10--27
- ../src/test_parser.nit:55,10--19
- ../src/test_parser.nit:55,10--13
- ../src/test_parser.nit:55,10
- identifier 'args' ... ../src/test_parser.nit:55,10--13
- ../src/test_parser.nit:55,10
- identifier 'first' ... ../src/test_parser.nit:55,15--19
- ../src/test_parser.nit:55,10
- ../src/test_parser.nit:55,24--27
- literal value '"-h"' ... ../src/test_parser.nit:55,24--27
- ../src/test_parser.nit:55,32--49
- ../src/test_parser.nit:55,32--41
- ../src/test_parser.nit:55,32--35
- ../src/test_parser.nit:55,32
- identifier 'args' ... ../src/test_parser.nit:55,32--35
- ../src/test_parser.nit:55,32
- identifier 'first' ... ../src/test_parser.nit:55,37--41
- ../src/test_parser.nit:55,32
- ../src/test_parser.nit:55,46--49
- literal value '"-?"' ... ../src/test_parser.nit:55,46--49
- ../src/test_parser.nit:56,3--18
- ../src/test_parser.nit:56,3--18
- ../src/test_parser.nit:56,15
- identifier 'need_help' ... ../src/test_parser.nit:56,3--11
- ../src/test_parser.nit:56,15
- '=' ... ../src/test_parser.nit:56,13
- ../src/test_parser.nit:56,15--18
- keyword 'true' ... ../src/test_parser.nit:56,15--18
- ../src/test_parser.nit:58,3--60,4
- ../src/test_parser.nit:58,3--48
- ../src/test_parser.nit:58,3--8
- ../src/test_parser.nit:58,3
- identifier 'stderr' ... ../src/test_parser.nit:58,3--8
- ../src/test_parser.nit:58,3
- identifier 'write' ... ../src/test_parser.nit:58,10--14
- ../src/test_parser.nit:58,15--48
- '(' ... ../src/test_parser.nit:58,15
- ../src/test_parser.nit:58,16--47
- ../src/test_parser.nit:58,16--32
- literal value '"Unknown option {' ... ../src/test_parser.nit:58,16--32
- ../src/test_parser.nit:58,33--42
- ../src/test_parser.nit:58,33--36
- ../src/test_parser.nit:58,33
- identifier 'args' ... ../src/test_parser.nit:58,33--36
- ../src/test_parser.nit:58,33
- identifier 'first' ... ../src/test_parser.nit:58,38--42
- ../src/test_parser.nit:58,33
- ../src/test_parser.nit:58,43--47
- '}.\n"' ... ../src/test_parser.nit:58,43--47
- ')' ... ../src/test_parser.nit:58,48
- ../src/test_parser.nit:59,3--9
- ../src/test_parser.nit:59,8
- identifier 'exit' ... ../src/test_parser.nit:59,3--6
- ../src/test_parser.nit:59,7--9
- '(' ... ../src/test_parser.nit:59,7
- ../src/test_parser.nit:59,8
- literal value '0' ... ../src/test_parser.nit:59,8
- ')' ... ../src/test_parser.nit:59,9
- keyword 'end' ... ../src/test_parser.nit:60,2--4
- ../src/test_parser.nit:61,2--11
- ../src/test_parser.nit:61,2--5
- ../src/test_parser.nit:61,2
- identifier 'args' ... ../src/test_parser.nit:61,2--5
- ../src/test_parser.nit:61,2
- identifier 'shift' ... ../src/test_parser.nit:61,7--11
- ../src/test_parser.nit:61,2
- keyword 'end' ... ../src/test_parser.nit:62,1--3
- ../src/test_parser.nit:64,1--95,3
- keyword 'if' ... ../src/test_parser.nit:64,1--2
- ../src/test_parser.nit:64,4--29
- ../src/test_parser.nit:64,4--16
- ../src/test_parser.nit:64,4--7
- ../src/test_parser.nit:64,4
- identifier 'args' ... ../src/test_parser.nit:64,4--7
- ../src/test_parser.nit:64,4
- identifier 'is_empty' ... ../src/test_parser.nit:64,9--16
- ../src/test_parser.nit:64,4
- ../src/test_parser.nit:64,21--29
- ../src/test_parser.nit:64,21
- identifier 'need_help' ... ../src/test_parser.nit:64,21--29
- ../src/test_parser.nit:64,21
- ../src/test_parser.nit:65,2--71,30
- ../src/test_parser.nit:65,2--16
- ../src/test_parser.nit:65,8
- identifier 'print' ... ../src/test_parser.nit:65,2--6
- ../src/test_parser.nit:65,7--16
- '(' ... ../src/test_parser.nit:65,7
- ../src/test_parser.nit:65,8--15
- literal value '"usage:"' ... ../src/test_parser.nit:65,8--15
- ')' ... ../src/test_parser.nit:65,16
- ../src/test_parser.nit:66,2--54
- ../src/test_parser.nit:66,8
- identifier 'print' ... ../src/test_parser.nit:66,2--6
- ../src/test_parser.nit:66,7--54
- '(' ... ../src/test_parser.nit:66,7
- ../src/test_parser.nit:66,8--53
- literal value '" test_parser [options]... <filename.nit>..."' ... ../src/test_parser.nit:66,8--53
- ')' ... ../src/test_parser.nit:66,54
- ../src/test_parser.nit:67,2--18
- ../src/test_parser.nit:67,8
- identifier 'print' ... ../src/test_parser.nit:67,2--6
- ../src/test_parser.nit:67,7--18
- '(' ... ../src/test_parser.nit:67,7
- ../src/test_parser.nit:67,8--17
- literal value '"options:"' ... ../src/test_parser.nit:67,8--17
- ')' ... ../src/test_parser.nit:67,18
- ../src/test_parser.nit:68,2--36
- ../src/test_parser.nit:68,8
- identifier 'print' ... ../src/test_parser.nit:68,2--6
- ../src/test_parser.nit:68,7--36
- '(' ... ../src/test_parser.nit:68,7
- ../src/test_parser.nit:68,8--35
- literal value '" -n do not print anything"' ... ../src/test_parser.nit:68,8--35
- ')' ... ../src/test_parser.nit:68,36
- ../src/test_parser.nit:69,2--25
- ../src/test_parser.nit:69,8
- identifier 'print' ... ../src/test_parser.nit:69,2--6
- ../src/test_parser.nit:69,7--25
- '(' ... ../src/test_parser.nit:69,7
- ../src/test_parser.nit:69,8--24
- literal value '" -l only lexer"' ... ../src/test_parser.nit:69,8--24
- ')' ... ../src/test_parser.nit:69,25
- ../src/test_parser.nit:70,2--41
- ../src/test_parser.nit:70,8
- identifier 'print' ... ../src/test_parser.nit:70,2--6
- ../src/test_parser.nit:70,7--41
- '(' ... ../src/test_parser.nit:70,7
- ../src/test_parser.nit:70,8--40
- literal value '" -p lexer and parser (default)"' ... ../src/test_parser.nit:70,8--40
- ')' ... ../src/test_parser.nit:70,41
- ../src/test_parser.nit:71,2--30
- ../src/test_parser.nit:71,8
- identifier 'print' ... ../src/test_parser.nit:71,2--6
- ../src/test_parser.nit:71,7--30
- '(' ... ../src/test_parser.nit:71,7
- ../src/test_parser.nit:71,8--29
- literal value '" -h print this help"' ... ../src/test_parser.nit:71,8--29
- ')' ... ../src/test_parser.nit:71,30
- ../src/test_parser.nit:73,2--95,3
- ../src/test_parser.nit:73,2--94,4
- keyword 'for' ... ../src/test_parser.nit:73,2--4
- identifier 'a' ... ../src/test_parser.nit:73,6
- ../src/test_parser.nit:73,11--14
- ../src/test_parser.nit:73,11
- identifier 'args' ... ../src/test_parser.nit:73,11--14
- ../src/test_parser.nit:73,11
- keyword 'do' ... ../src/test_parser.nit:73,16--17
- ../src/test_parser.nit:74,3--94,4
- ../src/test_parser.nit:74,3--30
- keyword 'var' ... ../src/test_parser.nit:74,3--5
- identifier 'f' ... ../src/test_parser.nit:74,7
- '=' ... ../src/test_parser.nit:74,9
- ../src/test_parser.nit:74,11--30
- keyword 'new' ... ../src/test_parser.nit:74,11--13
- ../src/test_parser.nit:74,15--22
- type identifier 'IFStream' ... ../src/test_parser.nit:74,15--22
- identifier 'open' ... ../src/test_parser.nit:74,24--27
- ../src/test_parser.nit:74,28--30
- '(' ... ../src/test_parser.nit:74,28
- ../src/test_parser.nit:74,29
- ../src/test_parser.nit:74,29
- identifier 'a' ... ../src/test_parser.nit:74,29
- ../src/test_parser.nit:74,29
- ')' ... ../src/test_parser.nit:74,30
- ../src/test_parser.nit:75,3--45
- keyword 'var' ... ../src/test_parser.nit:75,3--5
- identifier 'lexer' ... ../src/test_parser.nit:75,7--11
- '=' ... ../src/test_parser.nit:75,13
- ../src/test_parser.nit:75,15--45
- keyword 'new' ... ../src/test_parser.nit:75,15--17
- ../src/test_parser.nit:75,19--23
- type identifier 'Lexer' ... ../src/test_parser.nit:75,19--23
- ../src/test_parser.nit:75,24--45
- '(' ... ../src/test_parser.nit:75,24
- ../src/test_parser.nit:75,25--44
- keyword 'new' ... ../src/test_parser.nit:75,25--27
- ../src/test_parser.nit:75,29--38
- type identifier 'SourceFile' ... ../src/test_parser.nit:75,29--38
- ../src/test_parser.nit:75,39--44
- '(' ... ../src/test_parser.nit:75,39
- ../src/test_parser.nit:75,40
- ../src/test_parser.nit:75,40
- identifier 'a' ... ../src/test_parser.nit:75,40
- ../src/test_parser.nit:75,40
- ../src/test_parser.nit:75,43
- ../src/test_parser.nit:75,43
- identifier 'f' ... ../src/test_parser.nit:75,43
- ../src/test_parser.nit:75,43
- ')' ... ../src/test_parser.nit:75,44
- ')' ... ../src/test_parser.nit:75,45
- ../src/test_parser.nit:76,3--93,5
- keyword 'if' ... ../src/test_parser.nit:76,3--4
- ../src/test_parser.nit:76,6--15
- ../src/test_parser.nit:76,6
- identifier 'only_lexer' ... ../src/test_parser.nit:76,6--15
- ../src/test_parser.nit:76,6
- ../src/test_parser.nit:77,4--84,10
- ../src/test_parser.nit:77,4--25
- keyword 'var' ... ../src/test_parser.nit:77,4--6
- identifier 'token' ... ../src/test_parser.nit:77,8--12
- '=' ... ../src/test_parser.nit:77,14
- ../src/test_parser.nit:77,16--25
- ../src/test_parser.nit:77,16--20
- ../src/test_parser.nit:77,16
- identifier 'lexer' ... ../src/test_parser.nit:77,16--20
- ../src/test_parser.nit:77,16
- identifier 'next' ... ../src/test_parser.nit:77,22--25
- ../src/test_parser.nit:77,16
- ../src/test_parser.nit:78,4--83,6
- keyword 'while' ... ../src/test_parser.nit:78,4--8
- ../src/test_parser.nit:78,10--26
- keyword 'not' ... ../src/test_parser.nit:78,10--12
- ../src/test_parser.nit:78,14--26
- ../src/test_parser.nit:78,14--18
- ../src/test_parser.nit:78,14
- identifier 'token' ... ../src/test_parser.nit:78,14--18
- ../src/test_parser.nit:78,14
- ../src/test_parser.nit:78,24--26
- type identifier 'EOF' ... ../src/test_parser.nit:78,24--26
- keyword 'do' ... ../src/test_parser.nit:78,28--29
- ../src/test_parser.nit:79,5--83,6
- ../src/test_parser.nit:79,5--81,7
- keyword 'if' ... ../src/test_parser.nit:79,5--6
- ../src/test_parser.nit:79,8--19
- keyword 'not' ... ../src/test_parser.nit:79,8--10
- ../src/test_parser.nit:79,12--19
- ../src/test_parser.nit:79,12
- identifier 'no_print' ... ../src/test_parser.nit:79,12--19
- ../src/test_parser.nit:79,12
- ../src/test_parser.nit:80,6--64
- ../src/test_parser.nit:80,6--64
- ../src/test_parser.nit:80,12
- identifier 'print' ... ../src/test_parser.nit:80,6--10
- ../src/test_parser.nit:80,11--64
- '(' ... ../src/test_parser.nit:80,11
- ../src/test_parser.nit:80,12--63
- ../src/test_parser.nit:80,12--27
- literal value '"Read token at {' ... ../src/test_parser.nit:80,12--27
- ../src/test_parser.nit:80,28--41
- ../src/test_parser.nit:80,28--32
- ../src/test_parser.nit:80,28
- identifier 'token' ... ../src/test_parser.nit:80,28--32
- ../src/test_parser.nit:80,28
- identifier 'location' ... ../src/test_parser.nit:80,34--41
- ../src/test_parser.nit:80,28
- ../src/test_parser.nit:80,42--50
- literal value '} text='{' ... ../src/test_parser.nit:80,42--50
- ../src/test_parser.nit:80,51--60
- ../src/test_parser.nit:80,51--55
- ../src/test_parser.nit:80,51
- identifier 'token' ... ../src/test_parser.nit:80,51--55
- ../src/test_parser.nit:80,51
- identifier 'text' ... ../src/test_parser.nit:80,57--60
- ../src/test_parser.nit:80,51
- ../src/test_parser.nit:80,61--63
- '}'"' ... ../src/test_parser.nit:80,61--63
- ')' ... ../src/test_parser.nit:80,64
- ../src/test_parser.nit:81,5--7
- keyword 'end' ... ../src/test_parser.nit:81,5--7
- ../src/test_parser.nit:82,5--22
- ../src/test_parser.nit:82,13
- identifier 'token' ... ../src/test_parser.nit:82,5--9
- ../src/test_parser.nit:82,13
- '=' ... ../src/test_parser.nit:82,11
- ../src/test_parser.nit:82,13--22
- ../src/test_parser.nit:82,13--17
- ../src/test_parser.nit:82,13
- identifier 'lexer' ... ../src/test_parser.nit:82,13--17
- ../src/test_parser.nit:82,13
- identifier 'next' ... ../src/test_parser.nit:82,19--22
- ../src/test_parser.nit:82,13
- keyword 'end' ... ../src/test_parser.nit:83,4--6
- ../src/test_parser.nit:84,4--10
- ../src/test_parser.nit:84,4
- ../src/test_parser.nit:84,4
- identifier 'f' ... ../src/test_parser.nit:84,4
- ../src/test_parser.nit:84,4
- identifier 'close' ... ../src/test_parser.nit:84,6--10
- ../src/test_parser.nit:84,4
- ../src/test_parser.nit:86,4--93,5
- ../src/test_parser.nit:86,4--33
- keyword 'var' ... ../src/test_parser.nit:86,4--6
- identifier 'parser' ... ../src/test_parser.nit:86,8--13
- '=' ... ../src/test_parser.nit:86,15
- ../src/test_parser.nit:86,17--33
- keyword 'new' ... ../src/test_parser.nit:86,17--19
- ../src/test_parser.nit:86,21--26
- type identifier 'Parser' ... ../src/test_parser.nit:86,21--26
- ../src/test_parser.nit:86,27--33
- '(' ... ../src/test_parser.nit:86,27
- ../src/test_parser.nit:86,28--32
- ../src/test_parser.nit:86,28
- identifier 'lexer' ... ../src/test_parser.nit:86,28--32
- ../src/test_parser.nit:86,28
- ')' ... ../src/test_parser.nit:86,33
- ../src/test_parser.nit:87,4--26
- keyword 'var' ... ../src/test_parser.nit:87,4--6
- identifier 'tree' ... ../src/test_parser.nit:87,8--11
- '=' ... ../src/test_parser.nit:87,13
- ../src/test_parser.nit:87,15--26
- ../src/test_parser.nit:87,15--20
- ../src/test_parser.nit:87,15
- identifier 'parser' ... ../src/test_parser.nit:87,15--20
- ../src/test_parser.nit:87,15
- identifier 'parse' ... ../src/test_parser.nit:87,22--26
- ../src/test_parser.nit:87,15
- ../src/test_parser.nit:88,4--10
- ../src/test_parser.nit:88,4
- ../src/test_parser.nit:88,4
- identifier 'f' ... ../src/test_parser.nit:88,4
- ../src/test_parser.nit:88,4
- identifier 'close' ... ../src/test_parser.nit:88,6--10
- ../src/test_parser.nit:88,4
- ../src/test_parser.nit:90,4--92,6
- keyword 'if' ... ../src/test_parser.nit:90,4--5
- ../src/test_parser.nit:90,7--18
- keyword 'not' ... ../src/test_parser.nit:90,7--9
- ../src/test_parser.nit:90,11--18
- ../src/test_parser.nit:90,11
- identifier 'no_print' ... ../src/test_parser.nit:90,11--18
- ../src/test_parser.nit:90,11
- ../src/test_parser.nit:91,5--44
- ../src/test_parser.nit:91,5--44
- ../src/test_parser.nit:91,5--26
- '(' ... ../src/test_parser.nit:91,5
- ../src/test_parser.nit:91,6--25
- keyword 'new' ... ../src/test_parser.nit:91,6--8
- ../src/test_parser.nit:91,10--25
- type identifier 'PrintTreeVisitor' ... ../src/test_parser.nit:91,10--25
- ../src/test_parser.nit:91,6
- ')' ... ../src/test_parser.nit:91,26
- identifier 'enter_visit' ... ../src/test_parser.nit:91,28--38
- ../src/test_parser.nit:91,39--44
- '(' ... ../src/test_parser.nit:91,39
- ../src/test_parser.nit:91,40--43
- ../src/test_parser.nit:91,40
- identifier 'tree' ... ../src/test_parser.nit:91,40--43
- ../src/test_parser.nit:91,40
- ')' ... ../src/test_parser.nit:91,44
- ../src/test_parser.nit:92,4--6
- keyword 'end' ... ../src/test_parser.nit:92,4--6
- keyword 'end' ... ../src/test_parser.nit:93,3--5
- keyword 'end' ... ../src/test_parser.nit:94,2--4
- keyword 'end' ... ../src/test_parser.nit:95,1--3
- end of file ... ../src/test_parser.nit:96,1
--- /dev/null
+Read token at ../src/test_parser.nit:1,1--2,0 text='# This file is part of NIT ( http://www.nitlanguage.org ).
+'
+Read token at ../src/test_parser.nit:2,1--3,0 text='#
+'
+Read token at ../src/test_parser.nit:3,1--4,0 text='# Copyright 2008 Jean Privat <jean@pryen.org>
+'
+Read token at ../src/test_parser.nit:4,1--5,0 text='#
+'
+Read token at ../src/test_parser.nit:5,1--6,0 text='# Licensed under the Apache License, Version 2.0 (the "License");
+'
+Read token at ../src/test_parser.nit:6,1--7,0 text='# you may not use this file except in compliance with the License.
+'
+Read token at ../src/test_parser.nit:7,1--8,0 text='# You may obtain a copy of the License at
+'
+Read token at ../src/test_parser.nit:8,1--9,0 text='#
+'
+Read token at ../src/test_parser.nit:9,1--10,0 text='# http://www.apache.org/licenses/LICENSE-2.0
+'
+Read token at ../src/test_parser.nit:10,1--11,0 text='#
+'
+Read token at ../src/test_parser.nit:11,1--12,0 text='# Unless required by applicable law or agreed to in writing, software
+'
+Read token at ../src/test_parser.nit:12,1--13,0 text='# distributed under the License is distributed on an "AS IS" BASIS,
+'
+Read token at ../src/test_parser.nit:13,1--14,0 text='# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+'
+Read token at ../src/test_parser.nit:14,1--15,0 text='# See the License for the specific language governing permissions and
+'
+Read token at ../src/test_parser.nit:15,1--16,0 text='# limitations under the License.
+'
+Read token at ../src/test_parser.nit:16,1--17,0 text='
+'
+Read token at ../src/test_parser.nit:17,1--18,0 text='# Program used to test the NIT parser
+'
+Read token at ../src/test_parser.nit:18,1--7 text='package'
+Read token at ../src/test_parser.nit:18,9--19 text='test_parser'
+Read token at ../src/test_parser.nit:18,20--19,0 text='
+'
+Read token at ../src/test_parser.nit:19,1--20,0 text='
+'
+Read token at ../src/test_parser.nit:20,1--6 text='import'
+Read token at ../src/test_parser.nit:20,8--13 text='parser'
+Read token at ../src/test_parser.nit:20,14--21,0 text='
+'
+Read token at ../src/test_parser.nit:21,1--22,0 text='
+'
+Read token at ../src/test_parser.nit:22,1--5 text='class'
+Read token at ../src/test_parser.nit:22,7--22 text='PrintTreeVisitor'
+Read token at ../src/test_parser.nit:22,23--23,0 text='
+'
+Read token at ../src/test_parser.nit:23,2--6 text='super'
+Read token at ../src/test_parser.nit:23,8--14 text='Visitor'
+Read token at ../src/test_parser.nit:23,15--24,0 text='
+'
+Read token at ../src/test_parser.nit:24,2--4 text='var'
+Read token at ../src/test_parser.nit:24,6--10 text='_rank'
+Read token at ../src/test_parser.nit:24,11 text=':'
+Read token at ../src/test_parser.nit:24,13--15 text='Int'
+Read token at ../src/test_parser.nit:24,16--25,0 text='
+'
+Read token at ../src/test_parser.nit:25,2--6 text='redef'
+Read token at ../src/test_parser.nit:25,8--10 text='fun'
+Read token at ../src/test_parser.nit:25,12--16 text='visit'
+Read token at ../src/test_parser.nit:25,17 text='('
+Read token at ../src/test_parser.nit:25,18 text='n'
+Read token at ../src/test_parser.nit:25,19 text=':'
+Read token at ../src/test_parser.nit:25,21--28 text='nullable'
+Read token at ../src/test_parser.nit:25,30--34 text='ANode'
+Read token at ../src/test_parser.nit:25,35 text=')'
+Read token at ../src/test_parser.nit:25,36--26,0 text='
+'
+Read token at ../src/test_parser.nit:26,2--3 text='do'
+Read token at ../src/test_parser.nit:26,4--27,0 text='
+'
+Read token at ../src/test_parser.nit:27,3--4 text='if'
+Read token at ../src/test_parser.nit:27,6 text='n'
+Read token at ../src/test_parser.nit:27,8--9 text='=='
+Read token at ../src/test_parser.nit:27,11--14 text='null'
+Read token at ../src/test_parser.nit:27,16--19 text='then'
+Read token at ../src/test_parser.nit:27,21--26 text='return'
+Read token at ../src/test_parser.nit:27,27--28,0 text='
+'
+Read token at ../src/test_parser.nit:28,3--4 text='if'
+Read token at ../src/test_parser.nit:28,6 text='n'
+Read token at ../src/test_parser.nit:28,8--10 text='isa'
+Read token at ../src/test_parser.nit:28,12--16 text='Token'
+Read token at ../src/test_parser.nit:28,18--21 text='then'
+Read token at ../src/test_parser.nit:28,22--29,0 text='
+'
+Read token at ../src/test_parser.nit:29,4--9 text='printn'
+Read token at ../src/test_parser.nit:29,10 text='('
+Read token at ../src/test_parser.nit:29,11--14 text='" "'
+Read token at ../src/test_parser.nit:29,16 text='*'
+Read token at ../src/test_parser.nit:29,18--22 text='_rank'
+Read token at ../src/test_parser.nit:29,23 text=','
+Read token at ../src/test_parser.nit:29,25 text='n'
+Read token at ../src/test_parser.nit:29,26 text='.'
+Read token at ../src/test_parser.nit:29,27--30 text='to_s'
+Read token at ../src/test_parser.nit:29,31 text=','
+Read token at ../src/test_parser.nit:29,33--39 text='" ... "'
+Read token at ../src/test_parser.nit:29,40 text=','
+Read token at ../src/test_parser.nit:29,42 text='n'
+Read token at ../src/test_parser.nit:29,43 text='.'
+Read token at ../src/test_parser.nit:29,44--51 text='location'
+Read token at ../src/test_parser.nit:29,52 text=','
+Read token at ../src/test_parser.nit:29,54--57 text='"\n"'
+Read token at ../src/test_parser.nit:29,58 text=')'
+Read token at ../src/test_parser.nit:29,59--30,0 text='
+'
+Read token at ../src/test_parser.nit:30,3--6 text='else'
+Read token at ../src/test_parser.nit:30,7--31,0 text='
+'
+Read token at ../src/test_parser.nit:31,4--9 text='printn'
+Read token at ../src/test_parser.nit:31,10 text='('
+Read token at ../src/test_parser.nit:31,11--14 text='" "'
+Read token at ../src/test_parser.nit:31,16 text='*'
+Read token at ../src/test_parser.nit:31,18--22 text='_rank'
+Read token at ../src/test_parser.nit:31,23 text=','
+Read token at ../src/test_parser.nit:31,25 text='n'
+Read token at ../src/test_parser.nit:31,26 text='.'
+Read token at ../src/test_parser.nit:31,27--34 text='location'
+Read token at ../src/test_parser.nit:31,35 text=','
+Read token at ../src/test_parser.nit:31,37--40 text='"\n"'
+Read token at ../src/test_parser.nit:31,41 text=')'
+Read token at ../src/test_parser.nit:31,42--32,0 text='
+'
+Read token at ../src/test_parser.nit:32,3--5 text='end'
+Read token at ../src/test_parser.nit:32,6--33,0 text='
+'
+Read token at ../src/test_parser.nit:33,3--7 text='_rank'
+Read token at ../src/test_parser.nit:33,9 text='='
+Read token at ../src/test_parser.nit:33,11--15 text='_rank'
+Read token at ../src/test_parser.nit:33,17 text='+'
+Read token at ../src/test_parser.nit:33,19 text='1'
+Read token at ../src/test_parser.nit:33,20--34,0 text='
+'
+Read token at ../src/test_parser.nit:34,3 text='n'
+Read token at ../src/test_parser.nit:34,4 text='.'
+Read token at ../src/test_parser.nit:34,5--13 text='visit_all'
+Read token at ../src/test_parser.nit:34,14 text='('
+Read token at ../src/test_parser.nit:34,15--18 text='self'
+Read token at ../src/test_parser.nit:34,19 text=')'
+Read token at ../src/test_parser.nit:34,20--35,0 text='
+'
+Read token at ../src/test_parser.nit:35,3--7 text='_rank'
+Read token at ../src/test_parser.nit:35,9 text='='
+Read token at ../src/test_parser.nit:35,11--15 text='_rank'
+Read token at ../src/test_parser.nit:35,17 text='-'
+Read token at ../src/test_parser.nit:35,19 text='1'
+Read token at ../src/test_parser.nit:35,20--36,0 text='
+'
+Read token at ../src/test_parser.nit:36,2--4 text='end'
+Read token at ../src/test_parser.nit:36,5--37,0 text='
+'
+Read token at ../src/test_parser.nit:37,1--38,0 text='
+'
+Read token at ../src/test_parser.nit:38,2--5 text='init'
+Read token at ../src/test_parser.nit:38,6--39,0 text='
+'
+Read token at ../src/test_parser.nit:39,2--3 text='do'
+Read token at ../src/test_parser.nit:39,4--40,0 text='
+'
+Read token at ../src/test_parser.nit:40,3--7 text='_rank'
+Read token at ../src/test_parser.nit:40,9 text='='
+Read token at ../src/test_parser.nit:40,11 text='0'
+Read token at ../src/test_parser.nit:40,12--41,0 text='
+'
+Read token at ../src/test_parser.nit:41,2--4 text='end'
+Read token at ../src/test_parser.nit:41,5--42,0 text='
+'
+Read token at ../src/test_parser.nit:42,1--3 text='end'
+Read token at ../src/test_parser.nit:42,4--43,0 text='
+'
+Read token at ../src/test_parser.nit:43,1--44,0 text='
+'
+Read token at ../src/test_parser.nit:44,1--3 text='var'
+Read token at ../src/test_parser.nit:44,5--12 text='no_print'
+Read token at ../src/test_parser.nit:44,14 text='='
+Read token at ../src/test_parser.nit:44,16--20 text='false'
+Read token at ../src/test_parser.nit:44,21--45,0 text='
+'
+Read token at ../src/test_parser.nit:45,1--3 text='var'
+Read token at ../src/test_parser.nit:45,5--14 text='only_lexer'
+Read token at ../src/test_parser.nit:45,16 text='='
+Read token at ../src/test_parser.nit:45,18--22 text='false'
+Read token at ../src/test_parser.nit:45,23--46,0 text='
+'
+Read token at ../src/test_parser.nit:46,1--3 text='var'
+Read token at ../src/test_parser.nit:46,5--13 text='need_help'
+Read token at ../src/test_parser.nit:46,15 text='='
+Read token at ../src/test_parser.nit:46,17--21 text='false'
+Read token at ../src/test_parser.nit:46,22--47,0 text='
+'
+Read token at ../src/test_parser.nit:47,1--3 text='var'
+Read token at ../src/test_parser.nit:47,5--11 text='no_file'
+Read token at ../src/test_parser.nit:47,13 text='='
+Read token at ../src/test_parser.nit:47,15--19 text='false'
+Read token at ../src/test_parser.nit:47,20--48,0 text='
+'
+Read token at ../src/test_parser.nit:48,1--49,0 text='
+'
+Read token at ../src/test_parser.nit:49,1--5 text='while'
+Read token at ../src/test_parser.nit:49,7--9 text='not'
+Read token at ../src/test_parser.nit:49,11--14 text='args'
+Read token at ../src/test_parser.nit:49,15 text='.'
+Read token at ../src/test_parser.nit:49,16--23 text='is_empty'
+Read token at ../src/test_parser.nit:49,25--27 text='and'
+Read token at ../src/test_parser.nit:49,29--32 text='args'
+Read token at ../src/test_parser.nit:49,33 text='.'
+Read token at ../src/test_parser.nit:49,34--38 text='first'
+Read token at ../src/test_parser.nit:49,39 text='.'
+Read token at ../src/test_parser.nit:49,40--44 text='first'
+Read token at ../src/test_parser.nit:49,46--47 text='=='
+Read token at ../src/test_parser.nit:49,49--51 text=''-''
+Read token at ../src/test_parser.nit:49,53--54 text='do'
+Read token at ../src/test_parser.nit:49,55--50,0 text='
+'
+Read token at ../src/test_parser.nit:50,2--3 text='if'
+Read token at ../src/test_parser.nit:50,5--8 text='args'
+Read token at ../src/test_parser.nit:50,9 text='.'
+Read token at ../src/test_parser.nit:50,10--14 text='first'
+Read token at ../src/test_parser.nit:50,16--17 text='=='
+Read token at ../src/test_parser.nit:50,19--22 text='"-n"'
+Read token at ../src/test_parser.nit:50,24--27 text='then'
+Read token at ../src/test_parser.nit:50,28--51,0 text='
+'
+Read token at ../src/test_parser.nit:51,3--10 text='no_print'
+Read token at ../src/test_parser.nit:51,12 text='='
+Read token at ../src/test_parser.nit:51,14--17 text='true'
+Read token at ../src/test_parser.nit:51,18--52,0 text='
+'
+Read token at ../src/test_parser.nit:52,2--5 text='else'
+Read token at ../src/test_parser.nit:52,7--8 text='if'
+Read token at ../src/test_parser.nit:52,10--13 text='args'
+Read token at ../src/test_parser.nit:52,14 text='.'
+Read token at ../src/test_parser.nit:52,15--19 text='first'
+Read token at ../src/test_parser.nit:52,21--22 text='=='
+Read token at ../src/test_parser.nit:52,24--27 text='"-l"'
+Read token at ../src/test_parser.nit:52,29--32 text='then'
+Read token at ../src/test_parser.nit:52,33--53,0 text='
+'
+Read token at ../src/test_parser.nit:53,3--12 text='only_lexer'
+Read token at ../src/test_parser.nit:53,14 text='='
+Read token at ../src/test_parser.nit:53,16--19 text='true'
+Read token at ../src/test_parser.nit:53,20--54,0 text='
+'
+Read token at ../src/test_parser.nit:54,2--5 text='else'
+Read token at ../src/test_parser.nit:54,7--8 text='if'
+Read token at ../src/test_parser.nit:54,10--13 text='args'
+Read token at ../src/test_parser.nit:54,14 text='.'
+Read token at ../src/test_parser.nit:54,15--19 text='first'
+Read token at ../src/test_parser.nit:54,21--22 text='=='
+Read token at ../src/test_parser.nit:54,24--27 text='"-p"'
+Read token at ../src/test_parser.nit:54,29--32 text='then'
+Read token at ../src/test_parser.nit:54,33--55,0 text='
+'
+Read token at ../src/test_parser.nit:55,3--12 text='only_lexer'
+Read token at ../src/test_parser.nit:55,14 text='='
+Read token at ../src/test_parser.nit:55,16--20 text='false'
+Read token at ../src/test_parser.nit:55,21--56,0 text='
+'
+Read token at ../src/test_parser.nit:56,2--5 text='else'
+Read token at ../src/test_parser.nit:56,7--8 text='if'
+Read token at ../src/test_parser.nit:56,10--13 text='args'
+Read token at ../src/test_parser.nit:56,14 text='.'
+Read token at ../src/test_parser.nit:56,15--19 text='first'
+Read token at ../src/test_parser.nit:56,21--22 text='=='
+Read token at ../src/test_parser.nit:56,24--27 text='"-e"'
+Read token at ../src/test_parser.nit:56,29--32 text='then'
+Read token at ../src/test_parser.nit:56,33--57,0 text='
+'
+Read token at ../src/test_parser.nit:57,3--9 text='no_file'
+Read token at ../src/test_parser.nit:57,11 text='='
+Read token at ../src/test_parser.nit:57,13--16 text='true'
+Read token at ../src/test_parser.nit:57,17--58,0 text='
+'
+Read token at ../src/test_parser.nit:58,2--5 text='else'
+Read token at ../src/test_parser.nit:58,7--8 text='if'
+Read token at ../src/test_parser.nit:58,10--13 text='args'
+Read token at ../src/test_parser.nit:58,14 text='.'
+Read token at ../src/test_parser.nit:58,15--19 text='first'
+Read token at ../src/test_parser.nit:58,21--22 text='=='
+Read token at ../src/test_parser.nit:58,24--27 text='"-h"'
+Read token at ../src/test_parser.nit:58,29--30 text='or'
+Read token at ../src/test_parser.nit:58,32--35 text='args'
+Read token at ../src/test_parser.nit:58,36 text='.'
+Read token at ../src/test_parser.nit:58,37--41 text='first'
+Read token at ../src/test_parser.nit:58,43--44 text='=='
+Read token at ../src/test_parser.nit:58,46--49 text='"-?"'
+Read token at ../src/test_parser.nit:58,51--54 text='then'
+Read token at ../src/test_parser.nit:58,55--59,0 text='
+'
+Read token at ../src/test_parser.nit:59,3--11 text='need_help'
+Read token at ../src/test_parser.nit:59,13 text='='
+Read token at ../src/test_parser.nit:59,15--18 text='true'
+Read token at ../src/test_parser.nit:59,19--60,0 text='
+'
+Read token at ../src/test_parser.nit:60,2--5 text='else'
+Read token at ../src/test_parser.nit:60,6--61,0 text='
+'
+Read token at ../src/test_parser.nit:61,3--8 text='stderr'
+Read token at ../src/test_parser.nit:61,9 text='.'
+Read token at ../src/test_parser.nit:61,10--14 text='write'
+Read token at ../src/test_parser.nit:61,15 text='('
+Read token at ../src/test_parser.nit:61,16--32 text='"Unknown option {'
+Read token at ../src/test_parser.nit:61,33--36 text='args'
+Read token at ../src/test_parser.nit:61,37 text='.'
+Read token at ../src/test_parser.nit:61,38--42 text='first'
+Read token at ../src/test_parser.nit:61,43--47 text='}.\n"'
+Read token at ../src/test_parser.nit:61,48 text=')'
+Read token at ../src/test_parser.nit:61,49--62,0 text='
+'
+Read token at ../src/test_parser.nit:62,3--6 text='exit'
+Read token at ../src/test_parser.nit:62,7 text='('
+Read token at ../src/test_parser.nit:62,8 text='0'
+Read token at ../src/test_parser.nit:62,9 text=')'
+Read token at ../src/test_parser.nit:62,10--63,0 text='
+'
+Read token at ../src/test_parser.nit:63,2--4 text='end'
+Read token at ../src/test_parser.nit:63,5--64,0 text='
+'
+Read token at ../src/test_parser.nit:64,2--5 text='args'
+Read token at ../src/test_parser.nit:64,6 text='.'
+Read token at ../src/test_parser.nit:64,7--11 text='shift'
+Read token at ../src/test_parser.nit:64,12--65,0 text='
+'
+Read token at ../src/test_parser.nit:65,1--3 text='end'
+Read token at ../src/test_parser.nit:65,4--66,0 text='
+'
+Read token at ../src/test_parser.nit:66,1--67,0 text='
+'
+Read token at ../src/test_parser.nit:67,1--2 text='if'
+Read token at ../src/test_parser.nit:67,4--7 text='args'
+Read token at ../src/test_parser.nit:67,8 text='.'
+Read token at ../src/test_parser.nit:67,9--16 text='is_empty'
+Read token at ../src/test_parser.nit:67,18--19 text='or'
+Read token at ../src/test_parser.nit:67,21--29 text='need_help'
+Read token at ../src/test_parser.nit:67,31--34 text='then'
+Read token at ../src/test_parser.nit:67,35--68,0 text='
+'
+Read token at ../src/test_parser.nit:68,2--6 text='print'
+Read token at ../src/test_parser.nit:68,7 text='('
+Read token at ../src/test_parser.nit:68,8--15 text='"usage:"'
+Read token at ../src/test_parser.nit:68,16 text=')'
+Read token at ../src/test_parser.nit:68,17--69,0 text='
+'
+Read token at ../src/test_parser.nit:69,2--6 text='print'
+Read token at ../src/test_parser.nit:69,7 text='('
+Read token at ../src/test_parser.nit:69,8--53 text='" test_parser [options]... <filename.nit>..."'
+Read token at ../src/test_parser.nit:69,54 text=')'
+Read token at ../src/test_parser.nit:69,55--70,0 text='
+'
+Read token at ../src/test_parser.nit:70,2--6 text='print'
+Read token at ../src/test_parser.nit:70,7 text='('
+Read token at ../src/test_parser.nit:70,8--17 text='"options:"'
+Read token at ../src/test_parser.nit:70,18 text=')'
+Read token at ../src/test_parser.nit:70,19--71,0 text='
+'
+Read token at ../src/test_parser.nit:71,2--6 text='print'
+Read token at ../src/test_parser.nit:71,7 text='('
+Read token at ../src/test_parser.nit:71,8--35 text='" -n do not print anything"'
+Read token at ../src/test_parser.nit:71,36 text=')'
+Read token at ../src/test_parser.nit:71,37--72,0 text='
+'
+Read token at ../src/test_parser.nit:72,2--6 text='print'
+Read token at ../src/test_parser.nit:72,7 text='('
+Read token at ../src/test_parser.nit:72,8--24 text='" -l only lexer"'
+Read token at ../src/test_parser.nit:72,25 text=')'
+Read token at ../src/test_parser.nit:72,26--73,0 text='
+'
+Read token at ../src/test_parser.nit:73,2--6 text='print'
+Read token at ../src/test_parser.nit:73,7 text='('
+Read token at ../src/test_parser.nit:73,8--40 text='" -p lexer and parser (default)"'
+Read token at ../src/test_parser.nit:73,41 text=')'
+Read token at ../src/test_parser.nit:73,42--74,0 text='
+'
+Read token at ../src/test_parser.nit:74,2--6 text='print'
+Read token at ../src/test_parser.nit:74,7 text='('
+Read token at ../src/test_parser.nit:74,8--67 text='" -e instead on files, each argument is a content to parse"'
+Read token at ../src/test_parser.nit:74,68 text=')'
+Read token at ../src/test_parser.nit:74,69--75,0 text='
+'
+Read token at ../src/test_parser.nit:75,2--6 text='print'
+Read token at ../src/test_parser.nit:75,7 text='('
+Read token at ../src/test_parser.nit:75,8--29 text='" -h print this help"'
+Read token at ../src/test_parser.nit:75,30 text=')'
+Read token at ../src/test_parser.nit:75,31--76,0 text='
+'
+Read token at ../src/test_parser.nit:76,1--4 text='else'
+Read token at ../src/test_parser.nit:76,5--77,0 text='
+'
+Read token at ../src/test_parser.nit:77,2--4 text='for'
+Read token at ../src/test_parser.nit:77,6 text='a'
+Read token at ../src/test_parser.nit:77,8--9 text='in'
+Read token at ../src/test_parser.nit:77,11--14 text='args'
+Read token at ../src/test_parser.nit:77,16--17 text='do'
+Read token at ../src/test_parser.nit:77,18--78,0 text='
+'
+Read token at ../src/test_parser.nit:78,3--5 text='var'
+Read token at ../src/test_parser.nit:78,7--12 text='source'
+Read token at ../src/test_parser.nit:78,13--79,0 text='
+'
+Read token at ../src/test_parser.nit:79,3--4 text='if'
+Read token at ../src/test_parser.nit:79,6--12 text='no_file'
+Read token at ../src/test_parser.nit:79,14--17 text='then'
+Read token at ../src/test_parser.nit:79,18--80,0 text='
+'
+Read token at ../src/test_parser.nit:80,4--9 text='source'
+Read token at ../src/test_parser.nit:80,11 text='='
+Read token at ../src/test_parser.nit:80,13--15 text='new'
+Read token at ../src/test_parser.nit:80,17--26 text='SourceFile'
+Read token at ../src/test_parser.nit:80,27 text='.'
+Read token at ../src/test_parser.nit:80,28--38 text='from_string'
+Read token at ../src/test_parser.nit:80,39 text='('
+Read token at ../src/test_parser.nit:80,40--41 text='""'
+Read token at ../src/test_parser.nit:80,42 text=','
+Read token at ../src/test_parser.nit:80,44 text='a'
+Read token at ../src/test_parser.nit:80,45 text=')'
+Read token at ../src/test_parser.nit:80,46--81,0 text='
+'
+Read token at ../src/test_parser.nit:81,3--6 text='else'
+Read token at ../src/test_parser.nit:81,7--82,0 text='
+'
+Read token at ../src/test_parser.nit:82,4--6 text='var'
+Read token at ../src/test_parser.nit:82,8 text='f'
+Read token at ../src/test_parser.nit:82,10 text='='
+Read token at ../src/test_parser.nit:82,12--14 text='new'
+Read token at ../src/test_parser.nit:82,16--23 text='IFStream'
+Read token at ../src/test_parser.nit:82,24 text='.'
+Read token at ../src/test_parser.nit:82,25--28 text='open'
+Read token at ../src/test_parser.nit:82,29 text='('
+Read token at ../src/test_parser.nit:82,30 text='a'
+Read token at ../src/test_parser.nit:82,31 text=')'
+Read token at ../src/test_parser.nit:82,32--83,0 text='
+'
+Read token at ../src/test_parser.nit:83,4--9 text='source'
+Read token at ../src/test_parser.nit:83,11 text='='
+Read token at ../src/test_parser.nit:83,13--15 text='new'
+Read token at ../src/test_parser.nit:83,17--26 text='SourceFile'
+Read token at ../src/test_parser.nit:83,27 text='('
+Read token at ../src/test_parser.nit:83,28 text='a'
+Read token at ../src/test_parser.nit:83,29 text=','
+Read token at ../src/test_parser.nit:83,31 text='f'
+Read token at ../src/test_parser.nit:83,32 text=')'
+Read token at ../src/test_parser.nit:83,33--84,0 text='
+'
+Read token at ../src/test_parser.nit:84,4 text='f'
+Read token at ../src/test_parser.nit:84,5 text='.'
+Read token at ../src/test_parser.nit:84,6--10 text='close'
+Read token at ../src/test_parser.nit:84,11--85,0 text='
+'
+Read token at ../src/test_parser.nit:85,3--5 text='end'
+Read token at ../src/test_parser.nit:85,6--86,0 text='
+'
+Read token at ../src/test_parser.nit:86,3--5 text='var'
+Read token at ../src/test_parser.nit:86,7--11 text='lexer'
+Read token at ../src/test_parser.nit:86,13 text='='
+Read token at ../src/test_parser.nit:86,15--17 text='new'
+Read token at ../src/test_parser.nit:86,19--23 text='Lexer'
+Read token at ../src/test_parser.nit:86,24 text='('
+Read token at ../src/test_parser.nit:86,25--30 text='source'
+Read token at ../src/test_parser.nit:86,31 text=')'
+Read token at ../src/test_parser.nit:86,32--87,0 text='
+'
+Read token at ../src/test_parser.nit:87,3--4 text='if'
+Read token at ../src/test_parser.nit:87,6--15 text='only_lexer'
+Read token at ../src/test_parser.nit:87,17--20 text='then'
+Read token at ../src/test_parser.nit:87,21--88,0 text='
+'
+Read token at ../src/test_parser.nit:88,4--6 text='var'
+Read token at ../src/test_parser.nit:88,8--12 text='token'
+Read token at ../src/test_parser.nit:88,14 text='='
+Read token at ../src/test_parser.nit:88,16--20 text='lexer'
+Read token at ../src/test_parser.nit:88,21 text='.'
+Read token at ../src/test_parser.nit:88,22--25 text='next'
+Read token at ../src/test_parser.nit:88,26--89,0 text='
+'
+Read token at ../src/test_parser.nit:89,4--8 text='while'
+Read token at ../src/test_parser.nit:89,10--12 text='not'
+Read token at ../src/test_parser.nit:89,14--18 text='token'
+Read token at ../src/test_parser.nit:89,20--22 text='isa'
+Read token at ../src/test_parser.nit:89,24--26 text='EOF'
+Read token at ../src/test_parser.nit:89,28--29 text='do'
+Read token at ../src/test_parser.nit:89,30--90,0 text='
+'
+Read token at ../src/test_parser.nit:90,5--6 text='if'
+Read token at ../src/test_parser.nit:90,8--10 text='not'
+Read token at ../src/test_parser.nit:90,12--19 text='no_print'
+Read token at ../src/test_parser.nit:90,21--24 text='then'
+Read token at ../src/test_parser.nit:90,25--91,0 text='
+'
+Read token at ../src/test_parser.nit:91,6--10 text='print'
+Read token at ../src/test_parser.nit:91,11 text='('
+Read token at ../src/test_parser.nit:91,12--27 text='"Read token at {'
+Read token at ../src/test_parser.nit:91,28--32 text='token'
+Read token at ../src/test_parser.nit:91,33 text='.'
+Read token at ../src/test_parser.nit:91,34--41 text='location'
+Read token at ../src/test_parser.nit:91,42--50 text='} text='{'
+Read token at ../src/test_parser.nit:91,51--55 text='token'
+Read token at ../src/test_parser.nit:91,56 text='.'
+Read token at ../src/test_parser.nit:91,57--60 text='text'
+Read token at ../src/test_parser.nit:91,61--63 text='}'"'
+Read token at ../src/test_parser.nit:91,64 text=')'
+Read token at ../src/test_parser.nit:91,65--92,0 text='
+'
+Read token at ../src/test_parser.nit:92,5--7 text='end'
+Read token at ../src/test_parser.nit:92,8--93,0 text='
+'
+Read token at ../src/test_parser.nit:93,5--9 text='token'
+Read token at ../src/test_parser.nit:93,11 text='='
+Read token at ../src/test_parser.nit:93,13--17 text='lexer'
+Read token at ../src/test_parser.nit:93,18 text='.'
+Read token at ../src/test_parser.nit:93,19--22 text='next'
+Read token at ../src/test_parser.nit:93,23--94,0 text='
+'
+Read token at ../src/test_parser.nit:94,4--6 text='end'
+Read token at ../src/test_parser.nit:94,7--95,0 text='
+'
+Read token at ../src/test_parser.nit:95,3--6 text='else'
+Read token at ../src/test_parser.nit:95,7--96,0 text='
+'
+Read token at ../src/test_parser.nit:96,4--6 text='var'
+Read token at ../src/test_parser.nit:96,8--13 text='parser'
+Read token at ../src/test_parser.nit:96,15 text='='
+Read token at ../src/test_parser.nit:96,17--19 text='new'
+Read token at ../src/test_parser.nit:96,21--26 text='Parser'
+Read token at ../src/test_parser.nit:96,27 text='('
+Read token at ../src/test_parser.nit:96,28--32 text='lexer'
+Read token at ../src/test_parser.nit:96,33 text=')'
+Read token at ../src/test_parser.nit:96,34--97,0 text='
+'
+Read token at ../src/test_parser.nit:97,4--6 text='var'
+Read token at ../src/test_parser.nit:97,8--11 text='tree'
+Read token at ../src/test_parser.nit:97,13 text='='
+Read token at ../src/test_parser.nit:97,15--20 text='parser'
+Read token at ../src/test_parser.nit:97,21 text='.'
+Read token at ../src/test_parser.nit:97,22--26 text='parse'
+Read token at ../src/test_parser.nit:97,27--98,0 text='
+'
+Read token at ../src/test_parser.nit:98,1--99,0 text='
+'
+Read token at ../src/test_parser.nit:99,4--6 text='var'
+Read token at ../src/test_parser.nit:99,8--12 text='error'
+Read token at ../src/test_parser.nit:99,14 text='='
+Read token at ../src/test_parser.nit:99,16--19 text='tree'
+Read token at ../src/test_parser.nit:99,20 text='.'
+Read token at ../src/test_parser.nit:99,21--25 text='n_eof'
+Read token at ../src/test_parser.nit:99,26--100,0 text='
+'
+Read token at ../src/test_parser.nit:100,4--5 text='if'
+Read token at ../src/test_parser.nit:100,7--11 text='error'
+Read token at ../src/test_parser.nit:100,13--15 text='isa'
+Read token at ../src/test_parser.nit:100,17--22 text='AError'
+Read token at ../src/test_parser.nit:100,24--27 text='then'
+Read token at ../src/test_parser.nit:100,28--101,0 text='
+'
+Read token at ../src/test_parser.nit:101,5--9 text='print'
+Read token at ../src/test_parser.nit:101,10 text='('
+Read token at ../src/test_parser.nit:101,11--21 text='"Error at {'
+Read token at ../src/test_parser.nit:101,22--26 text='error'
+Read token at ../src/test_parser.nit:101,27 text='.'
+Read token at ../src/test_parser.nit:101,28--35 text='location'
+Read token at ../src/test_parser.nit:101,36--42 text='}:\n\t{'
+Read token at ../src/test_parser.nit:101,43--47 text='error'
+Read token at ../src/test_parser.nit:101,48 text='.'
+Read token at ../src/test_parser.nit:101,49--55 text='message'
+Read token at ../src/test_parser.nit:101,56--57 text='}"'
+Read token at ../src/test_parser.nit:101,58 text=')'
+Read token at ../src/test_parser.nit:101,59--102,0 text='
+'
+Read token at ../src/test_parser.nit:102,5--10 text='return'
+Read token at ../src/test_parser.nit:102,11--103,0 text='
+'
+Read token at ../src/test_parser.nit:103,4--6 text='end'
+Read token at ../src/test_parser.nit:103,7--104,0 text='
+'
+Read token at ../src/test_parser.nit:104,1--105,0 text='
+'
+Read token at ../src/test_parser.nit:105,4--5 text='if'
+Read token at ../src/test_parser.nit:105,7--9 text='not'
+Read token at ../src/test_parser.nit:105,11--18 text='no_print'
+Read token at ../src/test_parser.nit:105,20--23 text='then'
+Read token at ../src/test_parser.nit:105,24--106,0 text='
+'
+Read token at ../src/test_parser.nit:106,5 text='('
+Read token at ../src/test_parser.nit:106,6--8 text='new'
+Read token at ../src/test_parser.nit:106,10--25 text='PrintTreeVisitor'
+Read token at ../src/test_parser.nit:106,26 text=')'
+Read token at ../src/test_parser.nit:106,27 text='.'
+Read token at ../src/test_parser.nit:106,28--38 text='enter_visit'
+Read token at ../src/test_parser.nit:106,39 text='('
+Read token at ../src/test_parser.nit:106,40--43 text='tree'
+Read token at ../src/test_parser.nit:106,44 text=')'
+Read token at ../src/test_parser.nit:106,45--107,0 text='
+'
+Read token at ../src/test_parser.nit:107,4--6 text='end'
+Read token at ../src/test_parser.nit:107,7--108,0 text='
+'
+Read token at ../src/test_parser.nit:108,3--5 text='end'
+Read token at ../src/test_parser.nit:108,6--109,0 text='
+'
+Read token at ../src/test_parser.nit:109,2--4 text='end'
+Read token at ../src/test_parser.nit:109,5--110,0 text='
+'
+Read token at ../src/test_parser.nit:110,1--3 text='end'
+Read token at ../src/test_parser.nit:110,4--111,0 text='
+'
+++ /dev/null
-Read token at ../src/test_parser.nit:1,1--2,0 text='# This file is part of NIT ( http://www.nitlanguage.org ).
-'
-Read token at ../src/test_parser.nit:2,1--3,0 text='#
-'
-Read token at ../src/test_parser.nit:3,1--4,0 text='# Copyright 2008 Jean Privat <jean@pryen.org>
-'
-Read token at ../src/test_parser.nit:4,1--5,0 text='#
-'
-Read token at ../src/test_parser.nit:5,1--6,0 text='# Licensed under the Apache License, Version 2.0 (the "License");
-'
-Read token at ../src/test_parser.nit:6,1--7,0 text='# you may not use this file except in compliance with the License.
-'
-Read token at ../src/test_parser.nit:7,1--8,0 text='# You may obtain a copy of the License at
-'
-Read token at ../src/test_parser.nit:8,1--9,0 text='#
-'
-Read token at ../src/test_parser.nit:9,1--10,0 text='# http://www.apache.org/licenses/LICENSE-2.0
-'
-Read token at ../src/test_parser.nit:10,1--11,0 text='#
-'
-Read token at ../src/test_parser.nit:11,1--12,0 text='# Unless required by applicable law or agreed to in writing, software
-'
-Read token at ../src/test_parser.nit:12,1--13,0 text='# distributed under the License is distributed on an "AS IS" BASIS,
-'
-Read token at ../src/test_parser.nit:13,1--14,0 text='# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-'
-Read token at ../src/test_parser.nit:14,1--15,0 text='# See the License for the specific language governing permissions and
-'
-Read token at ../src/test_parser.nit:15,1--16,0 text='# limitations under the License.
-'
-Read token at ../src/test_parser.nit:16,1--17,0 text='
-'
-Read token at ../src/test_parser.nit:17,1--18,0 text='# Program used to test the NIT parser
-'
-Read token at ../src/test_parser.nit:18,1--7 text='package'
-Read token at ../src/test_parser.nit:18,9--19 text='test_parser'
-Read token at ../src/test_parser.nit:18,20--19,0 text='
-'
-Read token at ../src/test_parser.nit:19,1--20,0 text='
-'
-Read token at ../src/test_parser.nit:20,1--6 text='import'
-Read token at ../src/test_parser.nit:20,8--13 text='parser'
-Read token at ../src/test_parser.nit:20,14--21,0 text='
-'
-Read token at ../src/test_parser.nit:21,1--22,0 text='
-'
-Read token at ../src/test_parser.nit:22,1--5 text='class'
-Read token at ../src/test_parser.nit:22,7--22 text='PrintTreeVisitor'
-Read token at ../src/test_parser.nit:22,23--23,0 text='
-'
-Read token at ../src/test_parser.nit:23,2--6 text='super'
-Read token at ../src/test_parser.nit:23,8--14 text='Visitor'
-Read token at ../src/test_parser.nit:23,15--24,0 text='
-'
-Read token at ../src/test_parser.nit:24,2--4 text='var'
-Read token at ../src/test_parser.nit:24,6--10 text='_rank'
-Read token at ../src/test_parser.nit:24,11 text=':'
-Read token at ../src/test_parser.nit:24,13--15 text='Int'
-Read token at ../src/test_parser.nit:24,16--25,0 text='
-'
-Read token at ../src/test_parser.nit:25,2--6 text='redef'
-Read token at ../src/test_parser.nit:25,8--10 text='fun'
-Read token at ../src/test_parser.nit:25,12--16 text='visit'
-Read token at ../src/test_parser.nit:25,17 text='('
-Read token at ../src/test_parser.nit:25,18 text='n'
-Read token at ../src/test_parser.nit:25,19 text=':'
-Read token at ../src/test_parser.nit:25,21--28 text='nullable'
-Read token at ../src/test_parser.nit:25,30--34 text='ANode'
-Read token at ../src/test_parser.nit:25,35 text=')'
-Read token at ../src/test_parser.nit:25,36--26,0 text='
-'
-Read token at ../src/test_parser.nit:26,2--3 text='do'
-Read token at ../src/test_parser.nit:26,4--27,0 text='
-'
-Read token at ../src/test_parser.nit:27,3--4 text='if'
-Read token at ../src/test_parser.nit:27,6 text='n'
-Read token at ../src/test_parser.nit:27,8--9 text='=='
-Read token at ../src/test_parser.nit:27,11--14 text='null'
-Read token at ../src/test_parser.nit:27,16--19 text='then'
-Read token at ../src/test_parser.nit:27,21--26 text='return'
-Read token at ../src/test_parser.nit:27,27--28,0 text='
-'
-Read token at ../src/test_parser.nit:28,3--4 text='if'
-Read token at ../src/test_parser.nit:28,6 text='n'
-Read token at ../src/test_parser.nit:28,8--10 text='isa'
-Read token at ../src/test_parser.nit:28,12--16 text='Token'
-Read token at ../src/test_parser.nit:28,18--21 text='then'
-Read token at ../src/test_parser.nit:28,22--29,0 text='
-'
-Read token at ../src/test_parser.nit:29,4--9 text='printn'
-Read token at ../src/test_parser.nit:29,10 text='('
-Read token at ../src/test_parser.nit:29,11--14 text='" "'
-Read token at ../src/test_parser.nit:29,16 text='*'
-Read token at ../src/test_parser.nit:29,18--22 text='_rank'
-Read token at ../src/test_parser.nit:29,23 text=','
-Read token at ../src/test_parser.nit:29,25 text='n'
-Read token at ../src/test_parser.nit:29,26 text='.'
-Read token at ../src/test_parser.nit:29,27--30 text='to_s'
-Read token at ../src/test_parser.nit:29,31 text=','
-Read token at ../src/test_parser.nit:29,33--39 text='" ... "'
-Read token at ../src/test_parser.nit:29,40 text=','
-Read token at ../src/test_parser.nit:29,42 text='n'
-Read token at ../src/test_parser.nit:29,43 text='.'
-Read token at ../src/test_parser.nit:29,44--51 text='location'
-Read token at ../src/test_parser.nit:29,52 text=','
-Read token at ../src/test_parser.nit:29,54--57 text='"\n"'
-Read token at ../src/test_parser.nit:29,58 text=')'
-Read token at ../src/test_parser.nit:29,59--30,0 text='
-'
-Read token at ../src/test_parser.nit:30,3--6 text='else'
-Read token at ../src/test_parser.nit:30,7--31,0 text='
-'
-Read token at ../src/test_parser.nit:31,4--9 text='printn'
-Read token at ../src/test_parser.nit:31,10 text='('
-Read token at ../src/test_parser.nit:31,11--14 text='" "'
-Read token at ../src/test_parser.nit:31,16 text='*'
-Read token at ../src/test_parser.nit:31,18--22 text='_rank'
-Read token at ../src/test_parser.nit:31,23 text=','
-Read token at ../src/test_parser.nit:31,25 text='n'
-Read token at ../src/test_parser.nit:31,26 text='.'
-Read token at ../src/test_parser.nit:31,27--34 text='location'
-Read token at ../src/test_parser.nit:31,35 text=','
-Read token at ../src/test_parser.nit:31,37--40 text='"\n"'
-Read token at ../src/test_parser.nit:31,41 text=')'
-Read token at ../src/test_parser.nit:31,42--32,0 text='
-'
-Read token at ../src/test_parser.nit:32,3--5 text='end'
-Read token at ../src/test_parser.nit:32,6--33,0 text='
-'
-Read token at ../src/test_parser.nit:33,3--7 text='_rank'
-Read token at ../src/test_parser.nit:33,9 text='='
-Read token at ../src/test_parser.nit:33,11--15 text='_rank'
-Read token at ../src/test_parser.nit:33,17 text='+'
-Read token at ../src/test_parser.nit:33,19 text='1'
-Read token at ../src/test_parser.nit:33,20--34,0 text='
-'
-Read token at ../src/test_parser.nit:34,3 text='n'
-Read token at ../src/test_parser.nit:34,4 text='.'
-Read token at ../src/test_parser.nit:34,5--13 text='visit_all'
-Read token at ../src/test_parser.nit:34,14 text='('
-Read token at ../src/test_parser.nit:34,15--18 text='self'
-Read token at ../src/test_parser.nit:34,19 text=')'
-Read token at ../src/test_parser.nit:34,20--35,0 text='
-'
-Read token at ../src/test_parser.nit:35,3--7 text='_rank'
-Read token at ../src/test_parser.nit:35,9 text='='
-Read token at ../src/test_parser.nit:35,11--15 text='_rank'
-Read token at ../src/test_parser.nit:35,17 text='-'
-Read token at ../src/test_parser.nit:35,19 text='1'
-Read token at ../src/test_parser.nit:35,20--36,0 text='
-'
-Read token at ../src/test_parser.nit:36,2--4 text='end'
-Read token at ../src/test_parser.nit:36,5--37,0 text='
-'
-Read token at ../src/test_parser.nit:37,1--38,0 text='
-'
-Read token at ../src/test_parser.nit:38,2--5 text='init'
-Read token at ../src/test_parser.nit:38,6--39,0 text='
-'
-Read token at ../src/test_parser.nit:39,2--3 text='do'
-Read token at ../src/test_parser.nit:39,4--40,0 text='
-'
-Read token at ../src/test_parser.nit:40,3--7 text='_rank'
-Read token at ../src/test_parser.nit:40,9 text='='
-Read token at ../src/test_parser.nit:40,11 text='0'
-Read token at ../src/test_parser.nit:40,12--41,0 text='
-'
-Read token at ../src/test_parser.nit:41,2--4 text='end'
-Read token at ../src/test_parser.nit:41,5--42,0 text='
-'
-Read token at ../src/test_parser.nit:42,1--3 text='end'
-Read token at ../src/test_parser.nit:42,4--43,0 text='
-'
-Read token at ../src/test_parser.nit:43,1--44,0 text='
-'
-Read token at ../src/test_parser.nit:44,1--3 text='var'
-Read token at ../src/test_parser.nit:44,5--12 text='no_print'
-Read token at ../src/test_parser.nit:44,14 text='='
-Read token at ../src/test_parser.nit:44,16--20 text='false'
-Read token at ../src/test_parser.nit:44,21--45,0 text='
-'
-Read token at ../src/test_parser.nit:45,1--3 text='var'
-Read token at ../src/test_parser.nit:45,5--14 text='only_lexer'
-Read token at ../src/test_parser.nit:45,16 text='='
-Read token at ../src/test_parser.nit:45,18--22 text='false'
-Read token at ../src/test_parser.nit:45,23--46,0 text='
-'
-Read token at ../src/test_parser.nit:46,1--3 text='var'
-Read token at ../src/test_parser.nit:46,5--13 text='need_help'
-Read token at ../src/test_parser.nit:46,15 text='='
-Read token at ../src/test_parser.nit:46,17--21 text='false'
-Read token at ../src/test_parser.nit:46,22--47,0 text='
-'
-Read token at ../src/test_parser.nit:47,1--48,0 text='
-'
-Read token at ../src/test_parser.nit:48,1--5 text='while'
-Read token at ../src/test_parser.nit:48,7--9 text='not'
-Read token at ../src/test_parser.nit:48,11--14 text='args'
-Read token at ../src/test_parser.nit:48,15 text='.'
-Read token at ../src/test_parser.nit:48,16--23 text='is_empty'
-Read token at ../src/test_parser.nit:48,25--27 text='and'
-Read token at ../src/test_parser.nit:48,29--32 text='args'
-Read token at ../src/test_parser.nit:48,33 text='.'
-Read token at ../src/test_parser.nit:48,34--38 text='first'
-Read token at ../src/test_parser.nit:48,39 text='.'
-Read token at ../src/test_parser.nit:48,40--44 text='first'
-Read token at ../src/test_parser.nit:48,46--47 text='=='
-Read token at ../src/test_parser.nit:48,49--51 text=''-''
-Read token at ../src/test_parser.nit:48,53--54 text='do'
-Read token at ../src/test_parser.nit:48,55--49,0 text='
-'
-Read token at ../src/test_parser.nit:49,2--3 text='if'
-Read token at ../src/test_parser.nit:49,5--8 text='args'
-Read token at ../src/test_parser.nit:49,9 text='.'
-Read token at ../src/test_parser.nit:49,10--14 text='first'
-Read token at ../src/test_parser.nit:49,16--17 text='=='
-Read token at ../src/test_parser.nit:49,19--22 text='"-n"'
-Read token at ../src/test_parser.nit:49,24--27 text='then'
-Read token at ../src/test_parser.nit:49,28--50,0 text='
-'
-Read token at ../src/test_parser.nit:50,3--10 text='no_print'
-Read token at ../src/test_parser.nit:50,12 text='='
-Read token at ../src/test_parser.nit:50,14--17 text='true'
-Read token at ../src/test_parser.nit:50,18--51,0 text='
-'
-Read token at ../src/test_parser.nit:51,2--5 text='else'
-Read token at ../src/test_parser.nit:51,7--8 text='if'
-Read token at ../src/test_parser.nit:51,10--13 text='args'
-Read token at ../src/test_parser.nit:51,14 text='.'
-Read token at ../src/test_parser.nit:51,15--19 text='first'
-Read token at ../src/test_parser.nit:51,21--22 text='=='
-Read token at ../src/test_parser.nit:51,24--27 text='"-l"'
-Read token at ../src/test_parser.nit:51,29--32 text='then'
-Read token at ../src/test_parser.nit:51,33--52,0 text='
-'
-Read token at ../src/test_parser.nit:52,3--12 text='only_lexer'
-Read token at ../src/test_parser.nit:52,14 text='='
-Read token at ../src/test_parser.nit:52,16--19 text='true'
-Read token at ../src/test_parser.nit:52,20--53,0 text='
-'
-Read token at ../src/test_parser.nit:53,2--5 text='else'
-Read token at ../src/test_parser.nit:53,7--8 text='if'
-Read token at ../src/test_parser.nit:53,10--13 text='args'
-Read token at ../src/test_parser.nit:53,14 text='.'
-Read token at ../src/test_parser.nit:53,15--19 text='first'
-Read token at ../src/test_parser.nit:53,21--22 text='=='
-Read token at ../src/test_parser.nit:53,24--27 text='"-p"'
-Read token at ../src/test_parser.nit:53,29--32 text='then'
-Read token at ../src/test_parser.nit:53,33--54,0 text='
-'
-Read token at ../src/test_parser.nit:54,3--12 text='only_lexer'
-Read token at ../src/test_parser.nit:54,14 text='='
-Read token at ../src/test_parser.nit:54,16--20 text='false'
-Read token at ../src/test_parser.nit:54,22--55,0 text='
-'
-Read token at ../src/test_parser.nit:55,2--5 text='else'
-Read token at ../src/test_parser.nit:55,7--8 text='if'
-Read token at ../src/test_parser.nit:55,10--13 text='args'
-Read token at ../src/test_parser.nit:55,14 text='.'
-Read token at ../src/test_parser.nit:55,15--19 text='first'
-Read token at ../src/test_parser.nit:55,21--22 text='=='
-Read token at ../src/test_parser.nit:55,24--27 text='"-h"'
-Read token at ../src/test_parser.nit:55,29--30 text='or'
-Read token at ../src/test_parser.nit:55,32--35 text='args'
-Read token at ../src/test_parser.nit:55,36 text='.'
-Read token at ../src/test_parser.nit:55,37--41 text='first'
-Read token at ../src/test_parser.nit:55,43--44 text='=='
-Read token at ../src/test_parser.nit:55,46--49 text='"-?"'
-Read token at ../src/test_parser.nit:55,51--54 text='then'
-Read token at ../src/test_parser.nit:55,55--56,0 text='
-'
-Read token at ../src/test_parser.nit:56,3--11 text='need_help'
-Read token at ../src/test_parser.nit:56,13 text='='
-Read token at ../src/test_parser.nit:56,15--18 text='true'
-Read token at ../src/test_parser.nit:56,19--57,0 text='
-'
-Read token at ../src/test_parser.nit:57,2--5 text='else'
-Read token at ../src/test_parser.nit:57,6--58,0 text='
-'
-Read token at ../src/test_parser.nit:58,3--8 text='stderr'
-Read token at ../src/test_parser.nit:58,9 text='.'
-Read token at ../src/test_parser.nit:58,10--14 text='write'
-Read token at ../src/test_parser.nit:58,15 text='('
-Read token at ../src/test_parser.nit:58,16--32 text='"Unknown option {'
-Read token at ../src/test_parser.nit:58,33--36 text='args'
-Read token at ../src/test_parser.nit:58,37 text='.'
-Read token at ../src/test_parser.nit:58,38--42 text='first'
-Read token at ../src/test_parser.nit:58,43--47 text='}.\n"'
-Read token at ../src/test_parser.nit:58,48 text=')'
-Read token at ../src/test_parser.nit:58,49--59,0 text='
-'
-Read token at ../src/test_parser.nit:59,3--6 text='exit'
-Read token at ../src/test_parser.nit:59,7 text='('
-Read token at ../src/test_parser.nit:59,8 text='0'
-Read token at ../src/test_parser.nit:59,9 text=')'
-Read token at ../src/test_parser.nit:59,10--60,0 text='
-'
-Read token at ../src/test_parser.nit:60,2--4 text='end'
-Read token at ../src/test_parser.nit:60,5--61,0 text='
-'
-Read token at ../src/test_parser.nit:61,2--5 text='args'
-Read token at ../src/test_parser.nit:61,6 text='.'
-Read token at ../src/test_parser.nit:61,7--11 text='shift'
-Read token at ../src/test_parser.nit:61,12--62,0 text='
-'
-Read token at ../src/test_parser.nit:62,1--3 text='end'
-Read token at ../src/test_parser.nit:62,4--63,0 text='
-'
-Read token at ../src/test_parser.nit:63,1--64,0 text='
-'
-Read token at ../src/test_parser.nit:64,1--2 text='if'
-Read token at ../src/test_parser.nit:64,4--7 text='args'
-Read token at ../src/test_parser.nit:64,8 text='.'
-Read token at ../src/test_parser.nit:64,9--16 text='is_empty'
-Read token at ../src/test_parser.nit:64,18--19 text='or'
-Read token at ../src/test_parser.nit:64,21--29 text='need_help'
-Read token at ../src/test_parser.nit:64,31--34 text='then'
-Read token at ../src/test_parser.nit:64,35--65,0 text='
-'
-Read token at ../src/test_parser.nit:65,2--6 text='print'
-Read token at ../src/test_parser.nit:65,7 text='('
-Read token at ../src/test_parser.nit:65,8--15 text='"usage:"'
-Read token at ../src/test_parser.nit:65,16 text=')'
-Read token at ../src/test_parser.nit:65,17--66,0 text='
-'
-Read token at ../src/test_parser.nit:66,2--6 text='print'
-Read token at ../src/test_parser.nit:66,7 text='('
-Read token at ../src/test_parser.nit:66,8--53 text='" test_parser [options]... <filename.nit>..."'
-Read token at ../src/test_parser.nit:66,54 text=')'
-Read token at ../src/test_parser.nit:66,55--67,0 text='
-'
-Read token at ../src/test_parser.nit:67,2--6 text='print'
-Read token at ../src/test_parser.nit:67,7 text='('
-Read token at ../src/test_parser.nit:67,8--17 text='"options:"'
-Read token at ../src/test_parser.nit:67,18 text=')'
-Read token at ../src/test_parser.nit:67,19--68,0 text='
-'
-Read token at ../src/test_parser.nit:68,2--6 text='print'
-Read token at ../src/test_parser.nit:68,7 text='('
-Read token at ../src/test_parser.nit:68,8--35 text='" -n do not print anything"'
-Read token at ../src/test_parser.nit:68,36 text=')'
-Read token at ../src/test_parser.nit:68,37--69,0 text='
-'
-Read token at ../src/test_parser.nit:69,2--6 text='print'
-Read token at ../src/test_parser.nit:69,7 text='('
-Read token at ../src/test_parser.nit:69,8--24 text='" -l only lexer"'
-Read token at ../src/test_parser.nit:69,25 text=')'
-Read token at ../src/test_parser.nit:69,26--70,0 text='
-'
-Read token at ../src/test_parser.nit:70,2--6 text='print'
-Read token at ../src/test_parser.nit:70,7 text='('
-Read token at ../src/test_parser.nit:70,8--40 text='" -p lexer and parser (default)"'
-Read token at ../src/test_parser.nit:70,41 text=')'
-Read token at ../src/test_parser.nit:70,42--71,0 text='
-'
-Read token at ../src/test_parser.nit:71,2--6 text='print'
-Read token at ../src/test_parser.nit:71,7 text='('
-Read token at ../src/test_parser.nit:71,8--29 text='" -h print this help"'
-Read token at ../src/test_parser.nit:71,30 text=')'
-Read token at ../src/test_parser.nit:71,31--72,0 text='
-'
-Read token at ../src/test_parser.nit:72,1--4 text='else'
-Read token at ../src/test_parser.nit:72,5--73,0 text='
-'
-Read token at ../src/test_parser.nit:73,2--4 text='for'
-Read token at ../src/test_parser.nit:73,6 text='a'
-Read token at ../src/test_parser.nit:73,8--9 text='in'
-Read token at ../src/test_parser.nit:73,11--14 text='args'
-Read token at ../src/test_parser.nit:73,16--17 text='do'
-Read token at ../src/test_parser.nit:73,18--74,0 text='
-'
-Read token at ../src/test_parser.nit:74,3--5 text='var'
-Read token at ../src/test_parser.nit:74,7 text='f'
-Read token at ../src/test_parser.nit:74,9 text='='
-Read token at ../src/test_parser.nit:74,11--13 text='new'
-Read token at ../src/test_parser.nit:74,15--22 text='IFStream'
-Read token at ../src/test_parser.nit:74,23 text='.'
-Read token at ../src/test_parser.nit:74,24--27 text='open'
-Read token at ../src/test_parser.nit:74,28 text='('
-Read token at ../src/test_parser.nit:74,29 text='a'
-Read token at ../src/test_parser.nit:74,30 text=')'
-Read token at ../src/test_parser.nit:74,31--75,0 text='
-'
-Read token at ../src/test_parser.nit:75,3--5 text='var'
-Read token at ../src/test_parser.nit:75,7--11 text='lexer'
-Read token at ../src/test_parser.nit:75,13 text='='
-Read token at ../src/test_parser.nit:75,15--17 text='new'
-Read token at ../src/test_parser.nit:75,19--23 text='Lexer'
-Read token at ../src/test_parser.nit:75,24 text='('
-Read token at ../src/test_parser.nit:75,25--27 text='new'
-Read token at ../src/test_parser.nit:75,29--38 text='SourceFile'
-Read token at ../src/test_parser.nit:75,39 text='('
-Read token at ../src/test_parser.nit:75,40 text='a'
-Read token at ../src/test_parser.nit:75,41 text=','
-Read token at ../src/test_parser.nit:75,43 text='f'
-Read token at ../src/test_parser.nit:75,44 text=')'
-Read token at ../src/test_parser.nit:75,45 text=')'
-Read token at ../src/test_parser.nit:75,46--76,0 text='
-'
-Read token at ../src/test_parser.nit:76,3--4 text='if'
-Read token at ../src/test_parser.nit:76,6--15 text='only_lexer'
-Read token at ../src/test_parser.nit:76,17--20 text='then'
-Read token at ../src/test_parser.nit:76,21--77,0 text='
-'
-Read token at ../src/test_parser.nit:77,4--6 text='var'
-Read token at ../src/test_parser.nit:77,8--12 text='token'
-Read token at ../src/test_parser.nit:77,14 text='='
-Read token at ../src/test_parser.nit:77,16--20 text='lexer'
-Read token at ../src/test_parser.nit:77,21 text='.'
-Read token at ../src/test_parser.nit:77,22--25 text='next'
-Read token at ../src/test_parser.nit:77,26--78,0 text='
-'
-Read token at ../src/test_parser.nit:78,4--8 text='while'
-Read token at ../src/test_parser.nit:78,10--12 text='not'
-Read token at ../src/test_parser.nit:78,14--18 text='token'
-Read token at ../src/test_parser.nit:78,20--22 text='isa'
-Read token at ../src/test_parser.nit:78,24--26 text='EOF'
-Read token at ../src/test_parser.nit:78,28--29 text='do'
-Read token at ../src/test_parser.nit:78,30--79,0 text='
-'
-Read token at ../src/test_parser.nit:79,5--6 text='if'
-Read token at ../src/test_parser.nit:79,8--10 text='not'
-Read token at ../src/test_parser.nit:79,12--19 text='no_print'
-Read token at ../src/test_parser.nit:79,21--24 text='then'
-Read token at ../src/test_parser.nit:79,25--80,0 text='
-'
-Read token at ../src/test_parser.nit:80,6--10 text='print'
-Read token at ../src/test_parser.nit:80,11 text='('
-Read token at ../src/test_parser.nit:80,12--27 text='"Read token at {'
-Read token at ../src/test_parser.nit:80,28--32 text='token'
-Read token at ../src/test_parser.nit:80,33 text='.'
-Read token at ../src/test_parser.nit:80,34--41 text='location'
-Read token at ../src/test_parser.nit:80,42--50 text='} text='{'
-Read token at ../src/test_parser.nit:80,51--55 text='token'
-Read token at ../src/test_parser.nit:80,56 text='.'
-Read token at ../src/test_parser.nit:80,57--60 text='text'
-Read token at ../src/test_parser.nit:80,61--63 text='}'"'
-Read token at ../src/test_parser.nit:80,64 text=')'
-Read token at ../src/test_parser.nit:80,65--81,0 text='
-'
-Read token at ../src/test_parser.nit:81,5--7 text='end'
-Read token at ../src/test_parser.nit:81,8--82,0 text='
-'
-Read token at ../src/test_parser.nit:82,5--9 text='token'
-Read token at ../src/test_parser.nit:82,11 text='='
-Read token at ../src/test_parser.nit:82,13--17 text='lexer'
-Read token at ../src/test_parser.nit:82,18 text='.'
-Read token at ../src/test_parser.nit:82,19--22 text='next'
-Read token at ../src/test_parser.nit:82,23--83,0 text='
-'
-Read token at ../src/test_parser.nit:83,4--6 text='end'
-Read token at ../src/test_parser.nit:83,7--84,0 text='
-'
-Read token at ../src/test_parser.nit:84,4 text='f'
-Read token at ../src/test_parser.nit:84,5 text='.'
-Read token at ../src/test_parser.nit:84,6--10 text='close'
-Read token at ../src/test_parser.nit:84,11--85,0 text='
-'
-Read token at ../src/test_parser.nit:85,3--6 text='else'
-Read token at ../src/test_parser.nit:85,7--86,0 text='
-'
-Read token at ../src/test_parser.nit:86,4--6 text='var'
-Read token at ../src/test_parser.nit:86,8--13 text='parser'
-Read token at ../src/test_parser.nit:86,15 text='='
-Read token at ../src/test_parser.nit:86,17--19 text='new'
-Read token at ../src/test_parser.nit:86,21--26 text='Parser'
-Read token at ../src/test_parser.nit:86,27 text='('
-Read token at ../src/test_parser.nit:86,28--32 text='lexer'
-Read token at ../src/test_parser.nit:86,33 text=')'
-Read token at ../src/test_parser.nit:86,34--87,0 text='
-'
-Read token at ../src/test_parser.nit:87,4--6 text='var'
-Read token at ../src/test_parser.nit:87,8--11 text='tree'
-Read token at ../src/test_parser.nit:87,13 text='='
-Read token at ../src/test_parser.nit:87,15--20 text='parser'
-Read token at ../src/test_parser.nit:87,21 text='.'
-Read token at ../src/test_parser.nit:87,22--26 text='parse'
-Read token at ../src/test_parser.nit:87,27--88,0 text='
-'
-Read token at ../src/test_parser.nit:88,4 text='f'
-Read token at ../src/test_parser.nit:88,5 text='.'
-Read token at ../src/test_parser.nit:88,6--10 text='close'
-Read token at ../src/test_parser.nit:88,11--89,0 text='
-'
-Read token at ../src/test_parser.nit:89,1--90,0 text='
-'
-Read token at ../src/test_parser.nit:90,4--5 text='if'
-Read token at ../src/test_parser.nit:90,7--9 text='not'
-Read token at ../src/test_parser.nit:90,11--18 text='no_print'
-Read token at ../src/test_parser.nit:90,20--23 text='then'
-Read token at ../src/test_parser.nit:90,24--91,0 text='
-'
-Read token at ../src/test_parser.nit:91,5 text='('
-Read token at ../src/test_parser.nit:91,6--8 text='new'
-Read token at ../src/test_parser.nit:91,10--25 text='PrintTreeVisitor'
-Read token at ../src/test_parser.nit:91,26 text=')'
-Read token at ../src/test_parser.nit:91,27 text='.'
-Read token at ../src/test_parser.nit:91,28--38 text='enter_visit'
-Read token at ../src/test_parser.nit:91,39 text='('
-Read token at ../src/test_parser.nit:91,40--43 text='tree'
-Read token at ../src/test_parser.nit:91,44 text=')'
-Read token at ../src/test_parser.nit:91,45--92,0 text='
-'
-Read token at ../src/test_parser.nit:92,4--6 text='end'
-Read token at ../src/test_parser.nit:92,7--93,0 text='
-'
-Read token at ../src/test_parser.nit:93,3--5 text='end'
-Read token at ../src/test_parser.nit:93,6--94,0 text='
-'
-Read token at ../src/test_parser.nit:94,2--4 text='end'
-Read token at ../src/test_parser.nit:94,5--95,0 text='
-'
-Read token at ../src/test_parser.nit:95,1--3 text='end'
-Read token at ../src/test_parser.nit:95,4--96,0 text='
-'
--- /dev/null
+Error at ./error_syntax.nit:19,2:
+ Syntax error: unknown token ?.
--- /dev/null
+Read token at ./error_syntax.nit:1,1--2,0 text='# This file is part of NIT ( http://www.nitlanguage.org ).
+'
+Read token at ./error_syntax.nit:2,1--3,0 text='#
+'
+Read token at ./error_syntax.nit:3,1--4,0 text='# Copyright 2009 Jean Privat <jean@pryen.org>
+'
+Read token at ./error_syntax.nit:4,1--5,0 text='#
+'
+Read token at ./error_syntax.nit:5,1--6,0 text='# Licensed under the Apache License, Version 2.0 (the "License");
+'
+Read token at ./error_syntax.nit:6,1--7,0 text='# you may not use this file except in compliance with the License.
+'
+Read token at ./error_syntax.nit:7,1--8,0 text='# You may obtain a copy of the License at
+'
+Read token at ./error_syntax.nit:8,1--9,0 text='#
+'
+Read token at ./error_syntax.nit:9,1--10,0 text='# http://www.apache.org/licenses/LICENSE-2.0
+'
+Read token at ./error_syntax.nit:10,1--11,0 text='#
+'
+Read token at ./error_syntax.nit:11,1--12,0 text='# Unless required by applicable law or agreed to in writing, software
+'
+Read token at ./error_syntax.nit:12,1--13,0 text='# distributed under the License is distributed on an "AS IS" BASIS,
+'
+Read token at ./error_syntax.nit:13,1--14,0 text='# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+'
+Read token at ./error_syntax.nit:14,1--15,0 text='# See the License for the specific language governing permissions and
+'
+Read token at ./error_syntax.nit:15,1--16,0 text='# limitations under the License.
+'
+Read token at ./error_syntax.nit:16,1--17,0 text='
+'
+Read token at ./error_syntax.nit:17,1--5 text='class'
+Read token at ./error_syntax.nit:17,7 text='A'
+Read token at ./error_syntax.nit:17,8--18,0 text='
+'
+Read token at ./error_syntax.nit:18,2--19,0 text='#alt1#once
+'
--- /dev/null
+Error at ./error_syntax3.nit:1,1--4:
+ Syntax error: unexpected keyword 'else'.
--- /dev/null
+1,1--42
+ 1,1--41
+ 1,1--41
+ 1,1--41
+ 1,1--41
+ 1,1--41
+ keyword 'var' ... 1,1--3
+ identifier 'toto' ... 1,5--8
+ 1,11--14
+ type identifier 'Toto' ... 1,11--14
+ '=' ... 1,16
+ 1,18--41
+ keyword 'new' ... 1,18--20
+ 1,22--25
+ type identifier 'Toto' ... 1,22--25
+ identifier 'toto' ... 1,27--30
+ 1,31--41
+ '(' ... 1,31
+ 1,32--40
+ 1,32--35
+ 1,32
+ identifier 'toto' ... 1,32--35
+ 1,32
+ 1,37--40
+ 1,37
+ identifier 'toto' ... 1,37--40
+ 1,37
+ ')' ... 1,41
+ end of file ... 1,42
--- /dev/null
+sleeping 1s
+true
+true
+sleeping 5000ns
+true
+true
+true
true
true
true
+true
+true
5
a
e
true
true
true
+true
+true
5
a
e
true
true
true
+true
+true
-0.123450
+0.123
1234.0
-0.989897
+0.99
+++ /dev/null
-0.12345
-1234.0
-0.989898
--- /dev/null
+ab'bc'c"c
+a"b"b"c""" """ """
+c
+
+ab'bc''' ''' '''
+c
+
+111121
+1111b{b}bc{{{ {{{ {{{ 1
+
+
+
+
+*1**2***3***$4$
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2013 Lucas Bajolet <lucas.bajolet@gmail.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module string_ffi_ref_test
+
+class StringTest
+
+ var copied_str: nullable String
+
+ var referenced_str: nullable String
+
+ init
+ do
+ copied_str = null
+ referenced_str = null
+ end
+
+ fun get_c_string import String::items, String::from_cstring, String::copy_from_native, StringTest::ref_test, StringTest::copy_test `{
+ char* string = "This is a test string";
+
+ String ref_string = new_String_from_cstring(string);
+ StringTest_ref_test(recv, ref_string);
+
+ String copy_string = new_String_copy_from_native(string);
+ StringTest_copy_test(recv, copy_string);
+
+ int same_refs = String_items(copy_string) == String_items(ref_string);
+
+ printf("Do the strings have the same NativeString reference ? ");
+
+ if(same_refs){
+ printf("True\n");
+ }else{
+ printf("False\n");
+ }
+ `}
+
+ private fun ref_test(referenced: String)
+ do
+ print referenced
+ referenced_str = referenced
+ end
+
+ private fun copy_test(copied: String)
+ do
+ print copied
+ copied_str = copied
+ end
+
+end
+
+var str_test = new StringTest
+
+str_test.get_c_string
--- /dev/null
+module string_trim
+
+var trimtest = " \t nono nono \n \t"
+
+var subtrim = trimtest.substring(2,15)
+
+var buffertrimtest = new Buffer.from(trimtest)
+
+print "resulttrim = {buffertrimtest.trim}"
+
+print "returntrim + {trimtest.trim}"
+
+print "thirdtrim = {subtrim.trim}"
+
+var emptytrim = " \t "
+
+var bufferemptytest = new Buffer.from(emptytrim)
+
+print "emptytrim = {emptytrim.trim}"
+
+print "bufferemptytrim = {bufferemptytest.trim}"
+
+var onelettertrim = " \n d \n\t "
+
+var oneletterbuftest = new Buffer.from(onelettertrim)
+
+print "onelettertrim = {onelettertrim.trim}"
+
+print "oneletterbuftest = {oneletterbuftest.trim}"
+
+var twolettertrim = " \n hg \n\t "
+
+var twoletterbuftest = new Buffer.from(twolettertrim)
+
+print "twolettertrim = {twolettertrim.trim}"
+
+print "twoletterbuftest = {twoletterbuftest.trim}"
+
+var firstlettertrim = "d "
+
+var firstlettertrimbuf = new Buffer.from(firstlettertrim)
+
+print "firstlettertrimtest = {firstlettertrim.trim}"
+
+print "firstlettertrimbuftest = {firstlettertrimbuf.trim}"
+
+var lastlettertrim = " d"
+
+var lastlettertrimbuf = new Buffer.from(lastlettertrim)
+
+print "lastlettertrimtest = {lastlettertrim.trim}"
+
+print "lastlettertrimbuftest = {lastlettertrimbuf.trim}"
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+var foo1@foo
+var foo2@foo(foo)
+var foo3@foo(1)
+var foo4@foo(1+1)
+var foo5@foo(assert true)
+var foo6@foo(Foo)
+var foo7@foo(@foo)
+var foo8@foo(@(foo,foo))
+var foo9@foo(foo, Foo, @foo, @(foo,foo))
+var foo10@(foo, foo)
+var foo11@(foo(foo, Foo, @foo, @(foo,foo)), foo(foo, Foo, @foo(foo), @(foo(foo),foo(foo))))
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module syntax_annotations2 is
+ annot
+ annot2
+end
+
+import kernel is annot
+import kernel is annot, annot2
+import kernel is
+ annot
+ annot2
+end
+
+class A
+ annot
+ super Toto is annot
+ super Toto is annot, annot2
+ super Toto is
+ annot
+ annot2
+ end
+ fun foo1 is
+ annot
+ do
+ var x: Toto@foo
+ end
+ fun foo2 is annot
+ fun foo3 is annot, annot2
+ fun foo4 is
+ annot
+ annot2
+ end
+ var bar: Int is annot, annot2
+ var bar2: Int is
+ annot
+ annot2
+ end
+end
+
+class Toto
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+class Account
+ invariant solde > 0
+
+ fun toto(i: Int): Int is
+ pre i >= 0
+ post result == i + 1
+ test toto(5) == 6
+ do
+ return i + 1
+ end
+
+ fun stop
+ is
+ inter
+ do
+ abort
+ end
+
+ var tata: Int@u32 is
+ ondebug(@daemon@after(print(toto)))
+ final
+ end
+
+ var titi = 5 is writable, readable, initable, fast_init
+
+ var x = new HashMap[String, Object] is lazy
+
+ type T: Object is unchecked
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2004-2008 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+var a1 = [1, 2, 3, 4, 5]
+var a2 = new Array[Int].from(a1)
+
+for i in a2 do
+ print i
+end
\ No newline at end of file
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import for_abuse
+
+for f in file_open("test_for_abuse.nit") do
+ print f.read_line
+end
+
+var array = ["*", "****", "**", "*******"]
+for q in array.sort_fa do
+ q.res = q.b.length <=> q.b.length
+end
+
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2004-2008 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+var set = new HashSet[Int]
+
+for i in [0..10[ do set.add(i)
+for i in [0..10[ do set.add(i)
+
+var test = new HashSet[Int].from(set)
+
+for i in test do print test.length
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_json
+
+import json
+
+redef class HashMap[K,V]
+ redef fun to_s
+ do
+ var es = new Array[String]
+ for k, v in self do
+ if v != null then
+ es.add( "\"{k}\":\"{v}\"" )
+ else
+ es.add( "\"{k}\": null" )
+ end
+ end
+ return "\{{es.join(",")}\}"
+ end
+end
+
+redef class String
+ fun parse_and_display
+ do
+ var json_map = json_to_object
+ if json_map != null then
+ print json_map
+ print json_map.to_json.replace(" ","")
+
+ # only available for libjson0 v0.10
+ # print json_map.to_pretty_json
+ else
+ print "Conversion to json failed."
+ end
+ end
+end
+
+fun print_usage do print "Usage: json input.json"
+
+if args.length == 1 then
+ var input_path = args.first
+ var input_file = new IFStream.open( input_path )
+ var input_text = input_file.read_all
+ input_file.close
+
+ input_text.parse_and_display
+else
+ var s = "\{\"int\":1234, \"float\":0.1234, \"str\":\"str\", \"null\":null\}"
+ s.parse_and_display
+
+ s = "\{\"arr\":[1,2,3], \"obj\":\{\"int\":123, \"float\":-234.45\}\}"
+ s.parse_and_display
+
+ s = "\{\"arr\":[1,2.3,null,\"str\"], \"obj\":\{\"int\":123, \"float\":-234.45\}\}"
+ s.parse_and_display
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2009 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+var l = new List[Int].from([1, 2, 3, 4, 5, 6])
+
+var l1 = l.slice(3, 5)
+var l2 = l.slice(0, 3)
+
+for i in l1 do print i
+for i in l2 do print i
../src/test_parser.nit
-l ../src/test_parser.nit
+./error_syntax.nit
+-l ./error_syntax.nit
+./error_syntax3.nit
+-e "var toto: Toto = new Toto.toto(toto+toto)"
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import realtime
+
+redef extern Timespec
+ fun simplify : Int
+ do
+ return sec*1000000 + nanosec/1000
+ end
+end
+
+var c = new Clock
+var t0 = c.total.simplify
+
+print "sleeping 1s"
+nanosleep(1, 0)
+print c.total.sec >= 1
+print c.lapse.sec >= 1
+
+var t1 = c.total.simplify
+
+print "sleeping 5000ns"
+nanosleep(0, 5000)
+print c.lapse.nanosec >= 5000
+
+var t2 = c.total.simplify
+
+print t0 <= t1
+print t1 <= t2
print s == "abcde"
print s < "abcdf"
print s > "abcdd"
+ print s > "abcd"
+ print s < "abcdef"
print "z" + s + "z" == "zabcdez"
end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+var s1 = "a" + "b'b" + "c'c\"c"
+print s1
+
+var s2 = """a""" + """"b"b""" + """"c\""" "\"" ""\"
+c
+"""
+print s2
+
+var s3 = '''a''' + '''b'b''' + '''c\''' '\'' ''\'
+c
+'''
+print s3
+
+var s4 = "1{1}1{1}" + "{1+1}{"1"}"
+print s4
+
+var s5 = """1{{{1}}}1{{{1}}}""" + """b{b}b""" + """c\{{{ {\{{ {{\{ {{{1}}}"""
+print s5
+
+var s6 =
+"""
+{{{
+"""
+"""
+}}}
+"""
+print s6
+
+var s9 = """*{{{ 1 }**{ 2 }}}***{{{ 3 }***" + "${ 4 }}}$"""
+print s9
--- /dev/null
+for x in nitc nitg nitg-s nitg-e niti; do
+ echo "--engine $x"
+ ./tests.sh --engine $x "$@"
+done
--- /dev/null
+#!/bin/sh
+list=""
+for x in ../lib/*
+do
+ bx=`basename $x`
+ y="$x/$bx.nit"
+ test -f $y && list="$list $y"
+done
+./tests.sh "$@" *.nit ../examples/*.nit ../examples/leapfrog/leapfrog.nit ../examples/shoot/shoot_logic.nit ../lib/*.nit $list ../src/nitdoc.nit ../src/nits.nit ../src/nitc.nit ../src/test_parser.nit ../src/nit.nit ../src/nitmetrics.nit ../src/nitg.nit
enginebinname=$engine
case $engine in
nitc) ;;
- nitg) ;;
+ nitg) OPT="--global $OPT";;
nitg-s) enginebinname=nitg; OPT="--separate $OPT";;
nitg-e) enginebinname=nitg; OPT="--erasure $OPT";;
nit) engine=niti ;;
args="$line"
bff=$bf"_args"$cptr
fff=$ff"_args"$cptr
+ name="$bf args $cptr"
# Sould we skip the input for this engine?
- need_skip $bff " args #$cptr" && continue
+ need_skip $bff " $name" && continue
rm -rf "$fff.res" "$fff.err" "$fff.write" 2> /dev/null
if [ "x$verbose" = "xtrue" ]; then
echo ""
echo "NIT_NO_STACK=1 ./$ff.bin" $args
fi
- test -z "$tap" && echo -n "==> args #"$cptr " "
+ test -z "$tap" && echo -n "==> $name "
echo "./$ff.bin $args" > "./$fff.bin"
chmod +x "./$fff.bin"
sh -c "NIT_NO_STACK=1 $TIMEOUT ./$fff.bin < $inputs > $fff.res 2>$fff.err"
cp "$fff.res" "$fff.res2"
cat "$fff.err" "$fff.res2" > "$fff.res"
fi
- process_result $bff " args #$cptr"
+ process_result $bff " $name"
done < $fargs
fi
else