mkdir -p bin
../../bin/nitc src/nitiwiki.nit -o bin/nitiwiki
-check: tests
-tests: nitiwiki
+check: nitiwiki
cd tests; make
doc:
To add content in your wiki simply add markdown files (with `.md` extension) into the `pages/` folder.
+#### Write content
+
+Nitiwiki only support content written in
+[markdown format](http://daringfireball.net/projects/markdown/).
+
+#### Link wiki articles
+
+In nitiwiki, linking to a section or an article is done using the *wikilinks*.
+
+Wikilinks provide easy linking between pages of the wiki.
+To create a wikilink, just put the name of the page to link to in double brackets.
+For example `[[WikiLink]]`.
+
+If you ever need to write something like `[[WikiLink]]` without creating a wikilink,
+just prefix it with a `\\`, like `\\[[WikiLink]]`.
+
+There are some special linking precedence that come into play when linking between
+sections and sub-sections.
+
+Nitiwiki will chose the first entry that match the given wikilinks in that order:
+1. Looks in the current section
+2. Looks in the current section children recursively
+3. Looks in the current section parents until root
+
+To link to or from a subpage, you can use a regular wikilink that does not
+contain the name of the parent directory of the subpage.
+Nikiwiki descends the directory hierarchy looking for a page that matches your link.
+
+For example, if `FooBar/SubPage` links to `OtherPage`, nikiwiki will first prefer
+pointing the link to `FooBar/SubPage/OtherPage` if it exists, next to
+`FooBar/OtherPage` and finally to `OtherPage` in the root of the wiki.
+
+You can also specify a link that contains a relative section name,
+like `FooBar/OtherPage` to specify what page to link to.
+
+You can also use `/` at the start of a link, to specify exactly which page to link to,
+when there are multiple pages with similar names and the link goes to the wrong page by default.
+For example, linking from `FooBar/SubPage` to `/OtherPage` will link to the `OtherPage`
+in the root of the wiki, even if there is a `FooBar/OtherPage`.
+
+It's also possible to write a wikilink that uses something other than the page
+name as the link text.
+For example `[[Contact|Contact me!]]` links to the `Contact` page, but the link
+will appear like this: `Contact me!`.
+
+You can link to an anchor inside a page, using something like `[[WikiLink#foo]]`.
+
+#### Render the wiki in HTML
+
Once you have done your changes, use:
nitiwiki --status
end
# --status
-if opt_status.value or args.is_empty then
+if opt_status.value or
+ (not opt_clean.value and
+ not opt_fetch.value and
+ not opt_render.value and
+ not opt_rsync.value) then
wiki.parse
wiki.status
end
module wiki_base
import template::macro
-import markdown
import opts
import ini
end
end
+ # Render output.
+ fun render do end
+
# Show wiki status.
fun status do
print "nitiWiki"
end
end
- # Display msg if `level >= verbose_level`
+ # Display msg if `level <= verbose_level`
fun message(msg: String, level: Int) do
if level <= verbose_level then print msg
end
# `path` is used to determine the ancestor sections.
protected fun new_article(path: String): WikiArticle do
if entries.has_key(path) then return entries[path].as(WikiArticle)
+ message("Found article `{path}`", 2)
var article = new WikiArticle.from_source(self, path)
var section = new_section(path.dirname)
section.add_child(article)
private fun try_load_config do
var cfile = wiki.expand_path(wiki.config.root_dir, src_path, wiki.config_filename)
if not cfile.file_exists then return
- wiki.message("Custom config for section {name}", 2)
+ wiki.message("Custom config for section {name}", 1)
config = new SectionConfig(cfile)
end
# Page content.
#
# What you want to be displayed in the page.
- var content: nullable Writable = null
-
- # Headlines ids and titles.
- var headlines = new ArrayMap[String, HeadLine]
+ var content: nullable Writable = null is writable
- # Create a new articleu sing a markdown source file.
+ # Create a new article using a markdown source file.
init from_source(wiki: Nitiwiki, md_file: String) do
src_full_path = md_file
init(wiki, md_file.basename(".md"))
- var md_proc = new MarkdownProcessor
- content = md_proc.process(md)
- headlines = md_proc.emitter.decorator.headlines
+ content = md
end
redef var src_full_path: nullable String = null
# Extract the markdown text from `source_file`.
#
# REQUIRE: `has_source`.
- var md: String is lazy do
- assert has_source
+ var md: nullable String is lazy do
+ if not has_source then return null
var file = new FileReader.open(src_full_path.to_s)
var md = file.read_all
file.close
# HTML wiki rendering
module wiki_html
-import wiki_base
+import wiki_links
redef class Nitiwiki
# Render HTML output looking for changes in the markdown sources.
- fun render do
+ redef fun render do
+ super
if not root_section.is_dirty and not force_render then return
var out_dir = expand_path(config.root_dir, config.out_dir)
out_dir.mkdir
end
redef class WikiEntry
-
- # Url to `self` once generated.
- fun url: String do return wiki.config.root_url.join_path(breadcrumbs.join("/"))
-
# Get a `<a>` template link to `self`
fun tpl_link: Writable do
return "<a href=\"{url}\">{title}</a>"
end
end
- # The index page for this section.
- #
- # If no file `index.md` exists for this section,
- # a summary is generated using contained articles.
- var index: WikiArticle is lazy do
- for child in children.values do
- if child isa WikiArticle and child.is_index then return child
- end
- return new WikiSectionIndex(wiki, "index", self)
- end
-
redef fun tpl_link do return index.tpl_link
# Render the section hierarchy as a html tree.
end
end
- redef fun url do
- if parent == null then
- return wiki.config.root_url.join_path("{name}.html")
- else
- return parent.url.join_path("{name}.html")
- end
- end
-
- # Is `self` an index page?
- #
- # Checks if `self.name == "index"`.
- fun is_index: Bool do return name == "index"
-
redef fun render do
+ super
if not is_dirty and not wiki.force_render then return
wiki.message("Render article {name}", 2)
var file = out_full_path
file.dirname.mkdir
tpl_page.write_to_file file
- super
end
end
# A `WikiArticle` that contains the section index tree.
-class WikiSectionIndex
- super WikiArticle
-
- # The section described by `self`.
- var section: WikiSection
-
- redef fun title do return section.title
-
- redef fun url do return section.url
+redef class WikiSectionIndex
redef var is_dirty = 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.
+
+# Wiki internal links handling.
+module wiki_links
+
+import wiki_base
+intrude import markdown
+
+redef class Nitiwiki
+ # Looks up a WikiEntry by its `name`.
+ #
+ # Rules are:
+ # 1. Looks in the current section
+ # 2. Looks in the current section children
+ # 3. Looks in the current section parent
+ # 4. Looks up to wiki root
+ #
+ # Returns `null` if no article can be found.
+ fun lookup_entry_by_name(context: WikiEntry, name: String): nullable WikiEntry do
+ var section = context.parent
+ var res = section.lookup_entry_by_name(name)
+ if res != null then return res
+ while section != null do
+ if section.name == name then return section
+ if section.children.has_key(name) then return section.children[name]
+ section = section.parent
+ end
+ return null
+ end
+
+ # Looks up a WikiEntry by its `title`.
+ #
+ # Rules are:
+ # 1. Looks in the current section
+ # 2. Looks in the current section children
+ # 3. Looks in the current section parent
+ # 4. Looks up to wiki root
+ #
+ # Returns `null` if no article can be found.
+ fun lookup_entry_by_title(context: WikiEntry, title: String): nullable WikiEntry do
+ var section = context.parent
+ var res = section.lookup_entry_by_title(title)
+ if res != null then return res
+ while section != null do
+ if section.title == title then return section
+ for child in section.children.values do
+ if child.title == title then return child
+ end
+ section = section.parent
+ end
+ return null
+ end
+
+ # Looks up a WikiEntry by its `path`.
+ #
+ # Path can be relative from `context` like `context/entry`.
+ # Or absolute like `/entry1/entry2`.
+ #
+ # Returns `null` if no article can be found.
+ fun lookup_entry_by_path(context: WikiEntry, path: String): nullable WikiEntry do
+ var entry = context.parent
+ var parts = path.split_with("/")
+ if path.has_prefix("/") then
+ entry = root_section
+ if parts.is_empty then return root_section.index
+ parts.shift
+ end
+ while not parts.is_empty do
+ var name = parts.shift
+ if name.is_empty then continue
+ if not entry.children.has_key(name) then return null
+ entry = entry.children[name]
+ end
+ return entry
+ end
+end
+
+redef class WikiEntry
+
+ # Url to `self` once generated.
+ fun url: String do return wiki.config.root_url.join_path(breadcrumbs.join("/"))
+
+ redef fun render do
+ super
+ if not is_dirty and not wiki.force_render then return
+ end
+
+ # Search in `self` then `self.children` if an entry has the name `name`.
+ fun lookup_entry_by_name(name: String): nullable WikiEntry do
+ if children.has_key(name) then return children[name]
+ for child in children.values do
+ var res = child.lookup_entry_by_name(name)
+ if res != null then return res
+ end
+ return null
+ end
+
+ # Search in `self` then `self.children` if an entry has the title `title`.
+ fun lookup_entry_by_title(title: String): nullable WikiEntry do
+ for child in children.values do
+ if child.title == title then return child
+ end
+ for child in children.values do
+ var res = child.lookup_entry_by_title(title)
+ if res != null then return res
+ end
+ return null
+ end
+end
+
+redef class WikiSection
+
+ # The index page for this section.
+ #
+ # If no file `index.md` exists for this section,
+ # a summary is generated using contained articles.
+ var index: WikiArticle is lazy do
+ for child in children.values do
+ if child isa WikiArticle and child.is_index then return child
+ end
+ return new WikiSectionIndex(wiki, "index", self)
+ end
+end
+
+redef class WikiArticle
+
+ # Headlines ids and titles.
+ var headlines = new ArrayMap[String, HeadLine]
+
+ # Is `self` an index page?
+ #
+ # Checks if `self.name == "index"`.
+ fun is_index: Bool do return name == "index"
+
+ redef fun url do
+ if parent == null then
+ return wiki.config.root_url.join_path("{name}.html")
+ else
+ return parent.url.join_path("{name}.html")
+ end
+ end
+
+ redef fun render do
+ super
+ if not is_dirty and not wiki.force_render or not has_source then return
+ var md_proc = new NitiwikiMdProcessor(wiki, self)
+ content = md_proc.process(md.as(not null))
+ headlines.recover_with(md_proc.emitter.decorator.headlines)
+ end
+end
+
+# A `WikiArticle` that contains the section index tree.
+class WikiSectionIndex
+ super WikiArticle
+
+ # The section described by `self`.
+ var section: WikiSection
+
+ redef fun title do return section.title
+
+ redef fun url do return section.url
+end
+
+# A MarkdownProcessor able to parse wiki links.
+class NitiwikiMdProcessor
+ super MarkdownProcessor
+
+ # Wiki used to resolve links.
+ var wiki: Nitiwiki
+
+ # Article parsed by `self`.
+ #
+ # Used to contextualize links.
+ var context: WikiArticle
+
+ init do
+ emitter = new MarkdownEmitter(self)
+ emitter.decorator = new NitiwikiDecorator(wiki, context)
+ end
+
+ redef fun token_at(text, pos) do
+ var token = super
+ if not token isa TokenLink then return token
+ if pos + 1 < text.length then
+ var c = text[pos + 1]
+ if c == '[' then return new TokenWikiLink(pos, c)
+ end
+ return token
+ end
+end
+
+private class NitiwikiDecorator
+ super HTMLDecorator
+
+ # Wiki used to resolve links.
+ var wiki: Nitiwiki
+
+ # Article used to contextualize links.
+ var context: WikiArticle
+
+ fun add_wikilink(v: MarkdownEmitter, link: Text, name, comment: nullable Text) do
+ var wiki = v.processor.as(NitiwikiMdProcessor).wiki
+ var target: nullable WikiEntry = null
+ var anchor: nullable String = null
+ if link.has("#") then
+ var parts = link.split_with("#")
+ link = parts.first
+ anchor = parts.subarray(1, parts.length - 1).join("#")
+ end
+ if link.has("/") then
+ target = wiki.lookup_entry_by_path(context, link.to_s)
+ else
+ target = wiki.lookup_entry_by_name(context, link.to_s)
+ if target == null then
+ target = wiki.lookup_entry_by_title(context, link.to_s)
+ end
+ end
+ v.add "<a "
+ if target != null then
+ if name == null then name = target.title
+ link = target.url
+ else
+ wiki.message("Warning: unknown wikilink `{link}` (in {context.src_path.as(not null)})", 0)
+ v.add "class=\"broken\" "
+ end
+ v.add "href=\""
+ append_value(v, link)
+ if anchor != null then append_value(v, "#{anchor}")
+ v.add "\""
+ if comment != null and not comment.is_empty then
+ v.add " title=\""
+ append_value(v, comment)
+ v.add "\""
+ end
+ v.add ">"
+ if name == null then name = link
+ v.emit_text(name)
+ v.add "</a>"
+ end
+end
+
+# A NitiWiki link token.
+#
+# Something of the form `[[foo]]`.
+#
+# Allowed formats:
+#
+# * `[[Wikilink]]`
+# * `[[Wikilink/Bar]]`
+# * `[[Wikilink#foo]]`
+# * `[[Wikilink/Bar#foo]]`
+# * `[[title|Wikilink]]`
+# * `[[title|Wikilink/Bar]]`
+# * `[[title|Wikilink/Bar#foo]]`
+class TokenWikiLink
+ super TokenLink
+
+ redef fun emit_hyper(v) do
+ v.decorator.as(NitiwikiDecorator).add_wikilink(v, link.as(not null), name, comment)
+ end
+
+ redef fun check_link(v, out, start, token) do
+ var md = v.current_text
+ var pos = start + 2
+ var tmp = new FlatBuffer
+ pos = md.read_md_link_id(tmp, pos)
+ if pos < start then return -1
+ var name = tmp.write_to_string
+ if name.has("|") then
+ var parts = name.split_once_on("|")
+ self.name = parts.first
+ self.link = parts[1]
+ else
+ self.name = null
+ self.link = name
+ end
+ pos += 1
+ pos = md.skip_spaces(pos)
+ if pos < start then return -1
+ pos += 1
+ return pos
+ end
+end
-nitiwiki
+../bin/nitiwiki
+++ /dev/null
-nitiwiki --config wiki1/config.ini --clean --render -v
+++ /dev/null
-nitiwiki --config wiki1/config.ini --clean --status
+++ /dev/null
-Render section out
-Render section out/sec1
-Render section out/sec2
-Render auto-index for section out/sec2
-Render section out/sec2/sub-sec21
-Render section out/sec2/sub-sec22
--- /dev/null
+Render section out
--- /dev/null
+nitiWiki
+name: wiki1
+config: wiki1/config.ini
+url: http://localhost/
+
+There is modified files:
+ + pages
+ + /pages/index.md
+
+Use nitiwiki --render to render modified files
--- /dev/null
+Custom config for section sec2
+Render section out
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Warning: unknown wikilink `Not Found` (in /pages/index.md)
+Warning: unknown wikilink `/not/found` (in /pages/index.md)
+Warning: unknown wikilink `not/found` (in /pages/index.md)
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Render section out/sec1
+Render section out/sec2
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `Not Found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `/not/found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not/found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Render section out/sec2/sub-sec21
+Render section out/sec2/sub-sec22
nitiWiki
-name: wiki1
-config: wiki1/config.ini
+name: wiki2
+config: wiki2/config.ini
url: http://localhost/
There is modified files:
+ pages
+ + /pages/contact.md
+ /pages/index.md
+ + /pages/other_page.md
+ pages/sec1
+ /pages/sec1/index.md
+ pages/sec2
+ + /pages/sec2/index.md
+ pages/sec2/sub-sec21
+ /pages/sec2/sub-sec21/index.md
+ pages/sec2/sub-sec22
+ /pages/sec2/sub-sec22/index.md
+ + /pages/sec2/sub-sec22/other.md
Use nitiwiki --render to render modified files
--- /dev/null
+../bin/nitiwiki --config wiki1/config.ini --clean --render -v
--- /dev/null
+../bin/nitiwiki --config wiki1/config.ini --clean --status
--- /dev/null
+dummy { margin: 0 }
+
+a.broken { font-style: italic; color: red }
--- /dev/null
+wiki.name=wiki2
+wiki.root_dir=wiki2
--- /dev/null
+# Test wikilinks
+
+## Link to entries by name
+
+* Link to [[sec1]]
+* Link to [[sec2]]
+* Link to [[contact]]
+* Link to [[other_page]]
+* Link to [[other]]
+* Link to [[not found]]
+
+## Link to entries by title
+
+* Link to [[Sec1]]
+* Link to [[Section 2]]
+* Link to [[Contact]]
+* Link to [[Other Page]]
+* Link to [[Other]]
+* Link to [[Not Found]]
+
+## Link to entries by absolute path
+
+* Link to [[/index]]
+* Link to [[/sec1]]
+* Link to [[/sec1/index]]
+* Link to [[/sec1/]]
+* Link to [[/sec2/sub-sec22]]
+* Link to [[/sec2/sub-sec22/]]
+* Link to [[/sec2/sub-sec22/index]]
+* Link to [[/sec2/sub-sec22/other]]
+* Link to [[/not/found]]
+
+## Link to entries by relative path
+
+* Link to [[sec1]]
+* Link to [[sec1/index]]
+* Link to [[sec1/]]
+* Link to [[sec2/sub-sec22]]
+* Link to [[sec2/sub-sec22/]]
+* Link to [[sec2/sub-sec22/index]]
+* Link to [[sec2/sub-sec22/other]]
+* Link to [[not/found]]
+
+## Link with custom text
+
+* Link to [[1Fooi|Other Page]]
+* Link to [[2 Foo bar|/sec2/sub-sec22/index]]
+* Link to [[3|sec2/sub-sec22/other]]
+* Link to [[foo>bar>bar|other_page]]
+* Link to [[5|not found]]
+
+## Link with anchors
+
+* Link to [[Other Page#Foo]]
+* Link to [[/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[sec2/sub-sec22/other#3]]
+* Link to [[other_page#4]]
+* Link to [[not found#5_lol]]
+* Link to [[1|Other Page#Foo]]
+* Link to [[2|/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[3|sec2/sub-sec22/other#3]]
+* Link to [[4|other_page#4foobar#baz]]
+* Link to [[5|not found#5]]
--- /dev/null
+# Other Page
--- /dev/null
+# Section 1
--- /dev/null
+section.title=Section 2
--- /dev/null
+# Test wikilinks
+
+## Link to entries by name
+
+* Link to [[sec1]]
+* Link to [[sec2]]
+* Link to [[contact]]
+* Link to [[other_page]]
+* Link to [[not found]]
+
+## Link to entries by title
+
+* Link to [[Sec1]]
+* Link to [[Section 2]]
+* Link to [[Contact]]
+* Link to [[Other Page]]
+* Link to [[Not Found]]
+
+## Link to entries by absolute path
+
+* Link to [[/index]]
+* Link to [[/sec1]]
+* Link to [[/sec1/index]]
+* Link to [[/sec1/]]
+* Link to [[/sec2/sub-sec22]]
+* Link to [[/sec2/sub-sec22/]]
+* Link to [[/sec2/sub-sec22/index]]
+* Link to [[/sec2/sub-sec22/other]]
+* Link to [[/not/found]]
+
+## Link to entries by relative path
+
+* Link to [[sub-sec22]]
+* Link to [[sub-sec22/index]]
+* Link to [[sub-sec22/other]]
+* Link to [[sub-sec22/]]
+* Link to [[not/found]]
+
+## Link with custom text
+
+* Link to [[1Foo|Other Page]]
+* Link to [[2 Foo bar|/sec2/sub-sec22/index]]
+* Link to [[3|sub-sec22/other]]
+* Link to [[4foo>bar>baz|other_page]]
+* Link to [[5|not found]]
+
+## Link with anchors
+
+* Link to [[Other Page#Foo]]
+* Link to [[/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[sub-sec22/other#3]]
+* Link to [[other_page#4]]
+* Link to [[not found#5_lol]]
+* Link to [[1|Other Page#Foo]]
+* Link to [[2|/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[3|sub-sec22/other#3]]
+* Link to [[4|other_page#4foobar#baz]]
+* Link to [[5|not found#5]]
--- /dev/null
+# Section 2-1
--- /dev/null
+# Section 2-2
--- /dev/null
+# Other page
--- /dev/null
+<div class="row footer">
+ <div class="container-fluid">
+ <div class="well well-sm">
+ <p><strong>%TITLE% © %YEAR%</strong></p>
+ <p class="text-muted"><em>last modification %GEN_TIME%</em></p>
+ <p class="text-muted">Proudly powered by
+ <a href="http://nitlanguage.org">nit</a>!</p>
+ </div>
+ </div>
+</div>
--- /dev/null
+<div class="container-fluid header">
+ <div class="container">
+ <div class="header">
+ <a href="http://uqam.ca"><img src="%ROOT_URL%/%LOGO%" alt="logo" /></a>
+ <h2>%SUBTITLE%</h2>
+ <h1>%TITLE%</h1>
+ </div>
+ </div>
+</div>
--- /dev/null
+<nav class="menu" role="navigation">
+ <div class="container">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="%ROOT_URL%index.html">%TITLE%</a>
+ </div>
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ %MENUS%
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div>
+</nav>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>%TITLE%</title>
+
+ <link href="%ROOT_URL%/assets/vendors/bootstrap/bootstrap-3.2.0-dist/css/bootstrap.min.css" rel="stylesheet">
+ <link href="%ROOT_URL%/assets/css/main.css" rel="stylesheet">
+
+ <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+ <![endif]-->
+ </head>
+ <body>
+ %HEADER%
+ %TOP_MENU%
+ <div class="container">
+ <div class="row">
+ %BODY%
+ </div>
+ %FOOTER%
+ </div>
+
+ <script src="%ROOT_URL%/vendors/jquery/jquery-1.11.1.min.js"></script>
+ <script src="%ROOT_URL%/vendors/bootstrap/bootstrap-3.2.0-dist/js/bootstrap.min.js"></script>
+ </body>
+</html>
--- /dev/null
+../bin/nitiwiki --config wiki2/config.ini --clean --render -v
--- /dev/null
+../bin/nitiwiki --config wiki2/config.ini --clean --status
redef fun react_event(game, event) do
if not event isa IssueCommentEvent then return
# FIXME use a more precise way to locate reviews
- if event.comment.has_ok_review then
+ if event.comment.is_ack then
var player = event.comment.user.player(game)
var a = new_achievement(game)
player.unlock_achievement(a, event)
# Rewards player for review comments.
#
- # Actuallty we look if the comment contains the string `"+1"`.
- #
# TODO only give nitcoins if reviewers < 2
redef fun react_player_event(r, game) do
- # FIXME use a more precise way to locate reviews
- if comment.body.has("\\+1\\b".to_re) then
+ if comment.is_ack then
react_player_review(r, game)
end
end
game.stats.inc("comments")
player.stats.inc("comments")
# FIXME use a more precise way to locate reviews
- if comment.has_ok_review then
+ if comment.is_ack then
game.stats.inc("reviews")
player.stats.inc("reviews")
end
end
end
end
-
-redef class IssueComment
- # Does this comment contain a "+1"?
- fun has_ok_review: Bool do return body.has("\\+1\\b".to_re)
-end
--- /dev/null
+bin/
+tests/out/
+stats.json
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.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.
+
+all: refund
+
+refund:
+ mkdir -p bin
+ ../../bin/nitc src/refund.nit -o bin/refund
+
+check: refund
+ cd tests; make
+
+clean:
+ rm -rf bin
+ rm -rf -- .nit_compile 2> /dev/null || true
+ cd tests; make clean
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.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.
+
+# Insurance refunds calculation tool.
+#
+# `refund` computes automatically the allowed refund for a reclamation according
+# to an insurrance policy.
+#
+# Usage:
+#
+# ~~~sh
+# > refund (<input_file> <output_file> | [OPTIONS])
+# ~~~
+#
+# Input file:
+#
+# `refund` expects a JSON input file on the form:
+#
+# ~~~json
+# {
+# "dossier": "A100323",
+# "mois": "2015-01",
+# "reclamations": [
+# {
+# "soin": 100,
+# "date": "2015-01-11",
+# "montant": "234.00$"
+# }, {
+# "soin": 200,
+# "date": "2015-01-13",
+# "montant": "128.00$"
+# }, {
+# "soin": 334,
+# "date": "2015-01-23",
+# "montant": "50.00$"
+# }
+# ]
+# }
+# ~~~
+#
+# Output file:
+#
+# You have to specify the path where `refund` should output the result file.
+#
+# Results are formatted as JSON:
+#
+# ~~~json
+# {
+# "client": "100323",
+# "mois": "2015-01",
+# "remboursements": [
+# {
+# "soin": 100,
+# "date": "2015-01-11",
+# "montant": "58.50$"
+# }, {
+# "soin": 200,
+# "date": "2015-01-13",
+# "montant": "22.50$"
+# }, {
+# "soin": 334,
+# "date": "2015-01-23",
+# "montant": "0.00$"
+# }
+# ]
+# }
+# ~~~
+#
+# Options:
+#
+# `refund` can generate statistics about reclamations and refunds computed.
+#
+# * `-S`: display statistics
+# * `-SR`: reset statistics
+#
+# Error handling:
+#
+# In case of error, a JSON object is generated in place of the output file:
+#
+# ~~~json
+# { "message": "Invalid input data" }
+# ~~~
+module refund
+
+
+import refund_json
+
+# Display usage in console then leave.
+fun usage do
+ print ""
+ print "Usage:"
+ print "refund <input.json> <output.json>"
+ print ""
+ print "options"
+ print " -S\tShow stats in console"
+ print " -RS\tClear stats"
+ exit 1
+end
+
+var proc = new RefundProcessor
+
+if args.length == 1 then
+ var flag = args.first
+ if flag == "-RS" then
+ proc.clear_stats
+ exit 0
+ else if flag == "-S" then
+ proc.show_stats
+ exit 0
+ else
+ print "Error: Unknown flag {flag}."
+ usage
+ end
+else if args.length != 2 then
+ print "Error: Incorrect number of arguments. Got {args.length}, expected 2."
+ usage
+end
+
+proc.process(args[0], args[1])
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.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.
+
+# Insurance refunds calculation base classes.
+module refund_base
+
+import counter
+
+# `RefundProcessor` manages the calculation of the refunds.
+#
+# See `process`.
+class RefundProcessor
+
+ # Where to generate output file.
+ var output_file: String is noinit, writable
+
+ # Where to save usage statistics.
+ var stats_file = "stats.json"
+
+ # Processes the `input_file` and write the output in `output_file`.
+ #
+ # Steps:
+ #
+ # 1. Parses the input_file and check json validity (see `load_input`).
+ # 2. Instantiates and checks the reclamation sheet against client rules
+ # (see `ReclamationSheet.from_json`).
+ # 3. Processes refunds (see `proces_refunds`).
+ # 4. Writes the output file (see `write_output`).
+ fun process(input_file, output_file: String) is abstract
+
+ # Refunds allowed for the current reclamation sheet.
+ var current_refunds = new HashMap[Care, Dollar]
+
+ # Computes allowed refunds for a given `Reclamation` found in a `ReclamationSheet`.
+ fun process_refund(sheet: ReclamationSheet, recl: Reclamation): Dollar is abstract
+
+ # Shows stats values in console
+ fun show_stats do print load_stats
+
+ # Loads stats from file as a RefundStats instance.
+ fun load_stats: RefundStats is abstract
+
+ # Saves stats in file.
+ fun save_stats(stats: RefundStats) is abstract
+
+ # Outputs error object then exit.
+ fun die(msg: String) is abstract
+
+ # Clears stats.
+ #
+ # Basically delete the stats file.
+ fun clear_stats do if stats_file.file_exists then stats_file.file_delete
+end
+
+# Stats representation using a `Counter`.
+class RefundStats
+ super Counter[String]
+end
+
+# A `Client` can ask for refunds from the insurance company.
+class Client
+
+ # Client number.
+ var number: String
+
+ redef fun to_s do return "#{number}"
+end
+
+# A `ReclamationSheet` is filled by the `Client` to obtain a `RefundSheet`.
+class ReclamationSheet
+
+ # File used for this refund.
+ var file: ReclFile is writable
+
+ # Month concerned by the refund.
+ var month: ReclMonth is writable
+
+ # Array of reclamations.
+ var recls = new Array[Reclamation] is writable
+
+ redef fun to_s do
+ return "Refund (file: {file}, month: {month}, recls: {recls.length})"
+ end
+end
+
+# A File found in a `ReclamationSheet`.
+#
+# A File points to a `Contract` and a `Client`.
+#
+# Allowed format is: `X12345` where `X` is the contract kind and `12345` is the
+# client number.
+class ReclFile
+
+ # File string id.
+ var id: String is writable
+
+ # Contract instance linked to this file.
+ var contract: Contract is noinit, writable
+
+ # Client instance linked to this file.
+ var client: Client is noinit, writable
+
+ # Returns the contract instance corresponding to `kind`.
+ fun contract_factory(proc: RefundProcessor, kind: String): Contract do
+ if kind == "A" then return new ContractA
+ if kind == "B" then return new ContractB
+ if kind == "C" then return new ContractC
+ if kind == "D" then return new ContractD
+ if kind == "E" then return new ContractE
+ proc.die("Unknown contract {kind}")
+ abort
+ end
+
+ redef fun to_s do return "{contract.kind}{client.number}"
+end
+
+# Month date formatted for contracts.
+#
+# Mainly used to factorize treatments on date calculation.
+class ReclMonth
+
+ # Internal date used to store the month.
+ var date: ReclDate is writable
+
+ # Is `date` in this month?
+ fun has(date: ReclDate): Bool do return self.date.month == date.month
+
+ redef fun to_s do
+ if date.month < 10 then
+ return "{date.year}-0{date.month}"
+ end
+ return "{date.year}-0{date.month}"
+ end
+end
+
+# The date on which a `Care` occured.
+class ReclDate
+ # Year of the month.
+ var year: Int is writable
+
+ # Month number (`1` is January).
+ var month: Int is writable
+
+ # Day number.
+ var day: Int is writable
+
+ redef fun to_s do
+ var res = new FlatBuffer
+ res.append "{year}-"
+ if month < 10 then
+ res.append "0{month}-"
+ else
+ res.append "{month}-"
+ end
+ if day < 10 then
+ res.append "0{day}"
+ else
+ res.append day.to_s
+ end
+ return res.write_to_string
+ end
+end
+
+# `RefundRecl` are parts of the `RefundReclamation`.
+class Reclamation
+ # `Care` id concerned by this reclamation.
+ var care_id: Int is writable
+
+ # Date this care was applied.
+ var date: ReclDate is writable
+
+ # Amount of money given by the `Client` in exchange of this care.
+ var fees: Dollar is writable
+
+ redef fun to_s do return "Entry (care: {care_id}, date: {date}, fees: {fees})"
+end
+
+# A `Contract` specifies the refund applicable on care.
+class Contract
+
+ # Kind of the contract (specified by a letter).
+ var kind: String is noinit, writable
+
+ # Covered cares for this kind of contract.
+ var cares = new Array[Care] is writable
+
+ # Adds a care to this contract.
+ fun add_care(care: Care) do cares.add care
+
+ # Gets a `Care` instance by its id.
+ #
+ # Returns `null` if no `Care` found.
+ fun care_by_id(id: Int): nullable Care do
+ for care in cares do
+ if care.match_id(id) then return care
+ end
+ return null
+ end
+
+ redef fun to_s do return "{kind} ({cares.length} cares)"
+end
+
+# Contracts
+# FIXME move contracts to a JSON configuration file.
+
+private class ContractA
+ super Contract
+
+ init do
+ kind = "A"
+ add_care(new UniqCare.with_vals(0, 25.0, null, null))
+ add_care(new UniqCare.with_vals(100, 35.0, null, 250.0.to_dollar))
+ add_care(new UniqCare.with_vals(150, 0.0, null, null))
+ add_care(new UniqCare.with_vals(175, 50.0, null, 200.0.to_dollar))
+ add_care(new UniqCare.with_vals(200, 25.0, null, 250.0.to_dollar))
+ add_care(new RangeCare.with_vals([300..399], 0.0, null, null))
+ add_care(new UniqCare.with_vals(400, 0.0, null, null))
+ add_care(new UniqCare.with_vals(500, 25.0, null, 150.0.to_dollar))
+ add_care(new UniqCare.with_vals(600, 40.0, null, 300.0.to_dollar))
+ add_care(new UniqCare.with_vals(700, 0.0, null, null))
+ end
+end
+
+private class ContractB
+ super Contract
+
+ init do
+ kind = "B"
+ add_care(new UniqCare.with_vals(0, 50.0, 40.0.to_dollar, null))
+ add_care(new UniqCare.with_vals(100, 50.0, 50.0.to_dollar, 250.0.to_dollar))
+ add_care(new UniqCare.with_vals(150, 0.0, null, null))
+ add_care(new UniqCare.with_vals(175, 75.0, null, 200.0.to_dollar))
+ add_care(new UniqCare.with_vals(200, 100.0,null, 250.0.to_dollar))
+ add_care(new RangeCare.with_vals([300..399], 50.0, null, null))
+ add_care(new UniqCare.with_vals(400, 0.0, null, null))
+ add_care(new UniqCare.with_vals(500, 50.0, 50.0.to_dollar, 150.0.to_dollar))
+ add_care(new UniqCare.with_vals(600, 100.0,null, 300.0.to_dollar))
+ add_care(new UniqCare.with_vals(700, 70.0, null, null))
+ end
+end
+
+private class ContractC
+ super Contract
+
+ init do
+ kind = "C"
+ add_care(new UniqCare.with_vals(0, 90.0, null, null))
+ add_care(new UniqCare.with_vals(100, 95.0, null, 250.0.to_dollar))
+ add_care(new UniqCare.with_vals(150, 85.0, null, null))
+ add_care(new UniqCare.with_vals(175, 90.0, null, 200.0.to_dollar))
+ add_care(new UniqCare.with_vals(200, 90.0, null, 250.0.to_dollar))
+ add_care(new RangeCare.with_vals([300..399], 90.0, null, null))
+ add_care(new UniqCare.with_vals(400, 90.0, null, null))
+ add_care(new UniqCare.with_vals(500, 90.0, null, 150.0.to_dollar))
+ add_care(new UniqCare.with_vals(600, 75.0, null, 300.0.to_dollar))
+ add_care(new UniqCare.with_vals(700, 90.0, null, null))
+ end
+end
+
+private class ContractD
+ super Contract
+
+ init do
+ kind = "D"
+ add_care(new UniqCare.with_vals(0, 100.0, 85.0.to_dollar, null))
+ add_care(new UniqCare.with_vals(100, 100.0, 75.0.to_dollar, 250.0.to_dollar))
+ add_care(new UniqCare.with_vals(150, 100.0, 150.0.to_dollar, null))
+ add_care(new UniqCare.with_vals(175, 95.0, null, 200.0.to_dollar))
+ add_care(new UniqCare.with_vals(200, 100.0, 100.0.to_dollar, 250.0.to_dollar))
+ add_care(new RangeCare.with_vals([300..399],100.0, null, null))
+ add_care(new UniqCare.with_vals(400, 100.0, 65.0.to_dollar, null))
+ add_care(new UniqCare.with_vals(500, 100.0, null, 150.0.to_dollar))
+ add_care(new UniqCare.with_vals(600, 100.0, 100.0.to_dollar, 300.0.to_dollar))
+ add_care(new UniqCare.with_vals(700, 100.0, 90.0.to_dollar, null))
+ end
+end
+
+private class ContractE
+ super Contract
+
+ init do
+ kind = "E"
+ add_care(new UniqCare.with_vals(0, 15.0, null, null))
+ add_care(new UniqCare.with_vals(100, 25.0, null, 250.0.to_dollar))
+ add_care(new UniqCare.with_vals(150, 15.0, null, null))
+ add_care(new UniqCare.with_vals(175, 25.0, 20.0.to_dollar, 200.0.to_dollar))
+ add_care(new UniqCare.with_vals(200, 12.0, null, 250.0.to_dollar))
+ add_care(new RangeCare.with_vals([300..399], 60.0, null, null))
+ add_care(new UniqCare.with_vals(400, 25.0, 15.0.to_dollar, null))
+ add_care(new UniqCare.with_vals(500, 30.0, 20.0.to_dollar, 150.0.to_dollar))
+ add_care(new UniqCare.with_vals(600, 15.0, null, 300.0.to_dollar))
+ add_care(new UniqCare.with_vals(700, 22.0, null, null))
+ end
+end
+
+# A `Care` is payed by the `Client` and can raises a `Refund`.
+interface Care
+
+ # Does `id` is acceptable for this care?
+ fun match_id(id: Int): Bool is abstract
+
+ # Percent covered for this kind of care.
+ fun cover: Float is abstract
+
+ # Max amount covered for this kind of care by reclamation.
+ fun max: nullable Dollar is abstract
+
+ # Max amount covered for this kind of care by month.
+ fun month_max: nullable Dollar is abstract
+
+ # Computes the refund for this care.
+ fun process_refund(fees: Dollar): Dollar do
+ var max = self.max
+ var val = ((fees.value.to_f * (cover / 100.0)) / 100.0).to_dollar
+ if max != null and val > max then val = max
+ return val
+ end
+end
+
+# A `UniqCare` refers to one and only one kind of `Care`.
+#
+# For example, the care `Ostéopathie` as the uniq id `200`.
+class UniqCare
+ super Care
+
+ # Care id.
+ var id: Int
+
+ redef fun match_id(id) do return self.id == id
+
+ redef var cover = 0.0
+ redef var max = null
+ redef var month_max = null
+
+ # Inits this `Care` with values.
+ #
+ # * `id`: the `Care` id.
+ # * `cover`: refund percentage covered for this `Care`.
+ # * `max`: max amount refunded for this `Care` in a reclamation sheet.
+ # * `month_max`: max amount refunded by month.
+ init with_vals(id: Int, cover: Float, max, month_max: nullable Dollar) do
+ self.id = id
+ self.cover = cover
+ self.max = max
+ self.month_max = month_max
+ end
+
+ redef fun to_s do return id.to_s
+end
+
+# A `RangeCare` refers to a set of id corresponding to the same `Care`.
+#
+# For example, the care `Soins Dentaires` is refered by the ids 300 to 399.
+class RangeCare
+ super Care
+
+ # Care id range.
+ var id: Range[Int]
+
+ redef fun match_id(id) do return self.id.has(id)
+ redef var cover = 0.0
+ redef var max = null
+ redef var month_max = null
+
+ # Inits this `Care` with values.
+ #
+ # * `id`: the `Care` id.
+ # * `cover`: refund percentage covered for this `Care`.
+ # * `max`: max amount refunded for this `Care` in a reclamation sheet.
+ # * `month_max`: max amount refunded by month.
+ init with_vals(id: Range[Int], cover: Float, max, month_max: nullable Dollar) do
+ self.id = id
+ self.cover = cover
+ self.max = max
+ self.month_max = month_max
+ end
+
+ redef fun to_s do return id.first.to_s
+end
+
+# Used to represent currencies values.
+class Dollar
+ super Comparable
+
+ redef type OTHER: Dollar
+
+ # Amount of cents.
+ var value: Int
+
+ # Inits `self` from a float `value`.
+ init from_float(value: Float) do
+ self.value = (value * 100.0).to_i
+ end
+
+ redef fun to_s do return "{value / 100}.{value % 100}$"
+ redef fun <(o) do return value < o.value
+
+ # Dollars addition.
+ fun +(o: Dollar): Dollar do return new Dollar(value + o.value)
+
+ # Dollars substraction.
+ fun -(o: Dollar): Dollar do return new Dollar(value - o.value)
+end
+
+redef class Float
+ # Returns `self` as a Dollar instance.
+ fun to_dollar: Dollar do return new Dollar.from_float(self)
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.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.
+
+# JSON handling for `refund`.
+module refund_json
+
+import refund_base
+import json::static
+
+redef class RefundProcessor
+
+ redef fun process(input_file, output_file) do
+ self.output_file = output_file
+ var json = load_input(input_file)
+ var sheet = new ReclamationSheet.from_json(self, json)
+ var res = process_refunds(sheet)
+ write_output(res.to_pretty_json, output_file)
+ end
+
+ # Computes allowed refunds for a given `ReclamationSheet`.
+ fun process_refunds(sheet: ReclamationSheet): JsonObject do
+ # update stats
+ var stats = load_stats
+ stats.inc("total_treatments")
+ # compute refunds
+ current_refunds.clear
+ var json = new JsonObject
+ json["dossier"] = sheet.file.to_s
+ json["mois"] = sheet.month.to_s
+ var arr = new JsonArray
+ var sum = 0.0.to_dollar
+ for recl in sheet.recls do
+ var refund = process_refund(sheet, recl)
+ var obj = new JsonObject
+ obj["soin"] = recl.care_id
+ obj["date"] = recl.date.to_s
+ obj["montant"] = refund.to_s
+ arr.add obj
+ sum += refund
+ # update stats for care
+ stats.inc("total_{recl.care_id}")
+ end
+ save_stats(stats)
+ json["remboursements"] = arr
+ json["total"] = sum.to_s
+ return json
+ end
+
+ # Loads the input string and returns its content as a JsonObject.
+ #
+ # Dies if the file cannot be read or does not contain a valid JSONObject.
+ fun load_input(file: String): JsonObject do
+ if not file.file_exists then
+ die("File `{file}` not found.")
+ abort
+ end
+ var ptr = new FileReader.open(file)
+ var json = ptr.read_all.parse_json
+ if json isa JsonParseError then
+ die("Wrong input file ({json.message})")
+ abort
+ else if not json isa JsonObject then
+ die("Wrong input type (expected JsonObject got {json.class_name})")
+ abort
+ end
+ ptr.close
+ return json
+ end
+
+ # Writes `str` in path specified by `file`.
+ #
+ # Used to produce output and stats.
+ fun write_output(str: String, file: String) do
+ var ofs = new FileWriter.open(file)
+ ofs.write(str)
+ ofs.close
+ end
+
+ # UTILS
+
+ # Does `json` contains `key`? Dies otherwise.
+ private fun check_key(json: JsonObject, key: String) do
+ if json.has_key(key) then return
+ die("Malformed input (missing key {key})")
+ end
+
+ # Does `str` match the regex `re`.
+ private fun check_format(str, re: String): Bool do
+ return str.has(re.to_re)
+ end
+
+ redef fun die(msg) do
+ # save error
+ var obj = new JsonObject
+ obj["message"] = msg
+ write_output(obj.to_pretty_json, output_file)
+ # update stats
+ var stats = load_stats
+ stats.inc("total_reject")
+ save_stats(stats)
+ # leave
+ exit 1
+ end
+
+ redef fun show_stats do print load_stats.to_json.to_pretty_json
+
+ redef fun load_stats do
+ # If no stats found, return a new object
+ if not stats_file.file_exists then return new RefundStats
+ # Try to read from file
+ var ifs = new FileReader.open(stats_file)
+ var content = ifs.read_all.parse_json
+ ifs.close
+ # If file is corrupted, return a new object
+ if not content isa JsonObject then return new RefundStats
+ # Return file contained stats
+ return new RefundStats.from_json(content)
+ end
+
+ redef fun save_stats(stats: RefundStats) do
+ write_output(stats.to_json.to_pretty_json, stats_file)
+ end
+end
+
+redef class RefundStats
+
+ # Inits `self` from the content of a JsonObject
+ init from_json(json: JsonObject) do
+ for k, v in json do self[k] = v.as(Int)
+ end
+
+ # Outputs `self` as a JSON string.
+ fun to_json: JsonObject do
+ var obj = new JsonObject
+ for k, v in self do obj[k] = v
+ return obj
+ end
+end
+
+redef class ReclamationSheet
+
+ # Inits `self` from the content of a `JsonObject`.
+ init from_json(proc: RefundProcessor, json: JsonObject) do
+ file = new ReclFile.from_json(proc, json)
+ month = new ReclMonth.from_json(proc, json)
+ recls = parse_recls(proc, json)
+ init(file, month)
+ end
+
+ # Parses and checks the given `json` then returns an array of `Reclamation` instances.
+ private fun parse_recls(proc: RefundProcessor, json: JsonObject): Array[Reclamation] do
+ proc.check_key(json, "reclamations")
+ var res = new Array[Reclamation]
+ var recls = json["reclamations"]
+ if not recls isa JsonArray then
+ proc.die("Wrong type for `number` (expected JsonArray got {recls.class_name})")
+ abort
+ end
+ var i = 0
+ for obj in recls do
+ if not obj isa JsonObject then
+ proc.die("Wrong type for `reclamations#{i}` " +
+ "(expected JsonObject got {obj.class_name})")
+ abort
+ end
+ var recl = new Reclamation.from_json(proc, obj)
+ if not month.has(recl.date) then
+ proc.die("Wrong `mois` for `soin` with id `{recl.care_id}`")
+ abort
+ end
+ if file.contract.care_by_id(recl.care_id) == null then
+ proc.die("Unknown `soin` with id `{recl.care_id}`")
+ abort
+ end
+ res.add recl
+ i += 1
+ end
+ return res
+ end
+end
+
+redef class ReclFile
+ # Inits `self` from the content of a JsonObject.
+ init from_json(proc: RefundProcessor, json: JsonObject) do
+ proc.check_key(json, "dossier")
+ var id = json["dossier"]
+ if not id isa String then
+ proc.die("Wrong type for `dossier` (expected String got {id.class_name})")
+ abort
+ end
+ # Check format
+ parse_contract(proc, id)
+ parse_client(proc, id)
+ init(id)
+ end
+
+ # Tries to parse the contract from `file_id` string.
+ private fun parse_contract(proc: RefundProcessor, file_id: String) do
+ var kind = file_id.first.to_s
+ if not proc.check_format(kind, "^[A-E]\{1\}$") then
+ proc.die("Wrong contract (expected A, B, C, D or E got {kind})")
+ end
+ contract = contract_factory(proc, kind)
+ end
+
+ # Tries to parse the client number from the `file_id` string.
+ private fun parse_client(proc: RefundProcessor, file_id: String) do
+ var num = file_id.substring_from(1)
+ if not proc.check_format(num, "^[0-9]\{6\}$") then
+ proc.die("Wrong format for `number` (expected XXXXXX got {num})")
+ abort
+ end
+ client = new Client(num)
+ end
+end
+
+redef class ReclMonth
+ # Inits `self` from a `JsonObject`.
+ init from_json(proc: RefundProcessor, json: JsonObject) do
+ proc.check_key(json, "mois")
+ var month = json["mois"]
+ if not month isa String then
+ proc.die("Wrong type for `mois` (expected String got {month.class_name})")
+ return
+ end
+ if not proc.check_format(month, "^[0-9]\{4\}-[0-9]\{2\}$") then
+ proc.die("Wrong format for `mois` (expected AAAA-MM got {month})")
+ return
+ end
+ from_string(proc, month)
+ end
+
+ # Inits `self` from a string representation formatted as `AAAA-MM`.
+ init from_string(proc: RefundProcessor, str: String) do
+ var parts = str.split("-")
+ var year = parts[0].to_i
+ var month = parts[1].to_i
+ if month < 1 or month > 12 then
+ proc.die("Wrong format for `mois` (expected AAAA-MM got {str})")
+ return
+ end
+ date = new ReclDate(year, month, 1)
+ init(date)
+ end
+end
+
+redef class ReclDate
+ # Inits `self` from a `JsonObject`.
+ #
+ # Dies if the `json` input is invalid.
+ init from_json(proc: RefundProcessor, json: JsonObject) do
+ proc.check_key(json, "date")
+ var date = json["date"]
+ if not date isa String then
+ proc.die("Wrong type for `date` (expected String got {date.class_name})")
+ abort
+ end
+ if not proc.check_format(date, "^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}$") then
+ proc.die("Wrong format for `date` (expected AAAA-MM-DD got {date})")
+ abort
+ end
+ from_string(proc, date)
+ end
+
+ # Inits `self` from its string representation formatted as `AAAA-MM`.
+ init from_string(proc: RefundProcessor, str: String) do
+ var parts = str.split("-")
+ year = parts[0].to_i
+ month = parts[1].to_i
+ day = parts[2].to_i
+ if month < 1 or month > 12 or day < 1 or day > 31 then
+ proc.die("Wrong format for `mois` (expected AAAA-MM got {str})")
+ abort
+ end
+ init(year, month, day)
+ end
+end
+
+redef class Reclamation
+ # Inits `self` from a `JsonObject`.
+ init from_json(proc: RefundProcessor, json: JsonObject) do
+ care_id = parse_care_id(proc, json)
+ date = new ReclDate.from_json(proc, json)
+ fees = parse_fees(proc, json)
+ init(care_id, date, fees)
+ end
+
+ # Inits `self` from its string representation formatted as `Int`.
+ private fun parse_care_id(proc: RefundProcessor, json: JsonObject): Int do
+ proc.check_key(json, "soin")
+ var id = json["soin"]
+ if not id isa Int then
+ proc.die("Wrong type for `soin` (expected Int got {id.class_name})")
+ abort
+ end
+ return id
+ end
+
+ # Inits `self` from its string representation formatted as `0.00$`.
+ private fun parse_fees(proc: RefundProcessor, json: JsonObject): Dollar do
+ proc.check_key(json, "montant")
+ var fees = json["montant"]
+ if not fees isa String then
+ proc.die("Wrong type for `fees` (expected String got {fees.class_name})")
+ abort
+ end
+ if not proc.check_format(fees, "^[0-9]+((\\.|\\,)[0-9]+)?\\$$") then
+ proc.die("Wrong format for `montant` (expected XX.XX$ got {fees})")
+ abort
+ end
+ return new Dollar.from_float(fees.basename("$").to_f)
+ end
+end
--- /dev/null
+# Copyright 2013 Alexandre Terrasa <alexandre@moz-code.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.
+
+all: tests
+
+tests: clean
+ ./tests.sh
+
+clean:
+ rm -rf out/
--- /dev/null
+{
+ "dossier": "A",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A1003233",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A10032A",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": 1003233,
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 0,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200,00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "130.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-14",
+ "montant": "130.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-15",
+ "montant": "130.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-17",
+ "montant": "130.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "400.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.00$"
+ },
+ {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "400.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200,00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200,00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "400,00$"
+ },
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "400,00$"
+ },
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "400,00$"
+ },
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "400,00$"
+ },
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "400,00$"
+ },
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "400,00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-11",
+ "montant": "1400,00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "100.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-13",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 399,
+ "date": "2015-01-23",
+ "montant": "400.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "reclamations": []
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-13",
+ "montant": "900.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "100.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.00$"
+ },
+ {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "400.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "0.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.00$"
+ },
+ {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "400.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-13",
+ "montant": "900.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "100.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.00$"
+ },
+ {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "400.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.00$"
+ },
+ {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 500,
+ "date": "2015-01-23",
+ "montant": "400.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "a100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "Z100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "100100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": 10,
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015/01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-23",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015/01/11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-13-32",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-02-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01"
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": {
+ "1": {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ "2": {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ "3": {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ }
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [1, 2, 3]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {},
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "ABCD"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "234.00"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": "200",
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ },
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 900,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "message": "Wrong format for `number` (expected XXXXXX got )"
+}
--- /dev/null
+{
+ "message": "Wrong format for `number` (expected XXXXXX got 1003233)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `number` (expected XXXXXX got 10032A)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `dossier` (expected String got Int)"
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "81.89$"
+ }, {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "22.50$"
+ }, {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "0.0$"
+ }],
+ "total": "104.39$"
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 0,
+ "date": "2015-01-11",
+ "montant": "50.0$"
+ }, {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "0.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-13",
+ "montant": "36.0$"
+ }],
+ "total": "86.0$"
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "0.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "100.0$"
+ }],
+ "total": "100.0$"
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "0.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "100.0$"
+ }],
+ "total": "100.0$"
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "65.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-14",
+ "montant": "65.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-15",
+ "montant": "65.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-17",
+ "montant": "5.0$"
+ }],
+ "total": "200.0$"
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "50.0$"
+ }, {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.0$"
+ }, {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "200.0$"
+ }],
+ "total": "340.0$"
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.0$"
+ }, {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "0.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "300.0$"
+ }],
+ "total": "369.0$"
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "0.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "150.0$"
+ }],
+ "total": "150.0$"
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "0.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "150.0$"
+ }],
+ "total": "150.0$"
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "50.0$"
+ }, {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "50.0$"
+ }, {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "50.0$"
+ }, {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "50.0$"
+ }, {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "50.0$"
+ }, {
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "0.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-11",
+ "montant": "300.0$"
+ }],
+ "total": "550.0$"
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "95.0$"
+ }, {
+ "soin": 334,
+ "date": "2015-01-13",
+ "montant": "180.0$"
+ }, {
+ "soin": 399,
+ "date": "2015-01-23",
+ "montant": "360.0$"
+ }],
+ "total": "635.0$"
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "remboursements": [],
+ "total": "0.0$"
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "170.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "180.0$"
+ }],
+ "total": "350.0$"
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "75.0$"
+ }, {
+ "soin": 334,
+ "date": "2015-01-13",
+ "montant": "900.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "100.0$"
+ }],
+ "total": "1075.0$"
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.0$"
+ }, {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "65.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "100.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "0.0$"
+ }],
+ "total": "234.0$"
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "69.0$"
+ }, {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "65.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "100.0$"
+ }],
+ "total": "234.0$"
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "150.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "190.0$"
+ }],
+ "total": "340.0$"
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 100,
+ "date": "2015-01-11",
+ "montant": "58.50$"
+ }, {
+ "soin": 334,
+ "date": "2015-01-13",
+ "montant": "540.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "15.0$"
+ }],
+ "total": "613.50$"
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "8.27$"
+ }, {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "15.0$"
+ }, {
+ "soin": 600,
+ "date": "2015-01-23",
+ "montant": "60.0$"
+ }],
+ "total": "83.27$"
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 200,
+ "date": "2015-01-11",
+ "montant": "8.27$"
+ }, {
+ "soin": 400,
+ "date": "2015-01-13",
+ "montant": "15.0$"
+ }, {
+ "soin": 500,
+ "date": "2015-01-23",
+ "montant": "20.0$"
+ }],
+ "total": "43.27$"
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "remboursements": [{
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "30.0$"
+ }, {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "20.0$"
+ }],
+ "total": "50.0$"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got 1)"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got a)"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got Z)"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got 1)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key dossier)"
+}
--- /dev/null
+{
+ "message": "Wrong input file (Unexpected Eof; is acceptable instead: value)"
+}
--- /dev/null
+{
+ "message": "Wrong input type (expected JsonObject got JsonArray)"
+}
--- /dev/null
+{
+ "message": "Wrong input file (Unexpected Eof; is acceptable instead: members, pair)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key mois)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `mois` (expected String got Int)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `mois` (expected AAAA-MM got 2015\/01)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `mois` (expected AAAA-MM got 2015-23)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key date)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `date` (expected AAAA-MM-DD got 2015\/01\/11)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `mois` (expected AAAA-MM got 2015-13-32)"
+}
--- /dev/null
+{
+ "message": "Wrong `mois` for `soin` with id `100`"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key reclamations)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `number` (expected JsonArray got JsonObject)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `reclamations#0` (expected JsonObject got Int)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key soin)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key montant)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `montant` (expected XX.XX$ got ABCD)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `montant` (expected XX.XX$ got 234)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `montant` (expected XX.XX$ got 234.00)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key soin)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `soin` (expected Int got FlatString)"
+}
--- /dev/null
+{
+ "message": "Unknown `soin` with id `900`"
+}
--- /dev/null
+#!/bin/bash
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.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.
+
+BIN=../bin
+OUT=out
+RES=res
+
+# Execute test with name $1.
+run_test()
+{
+ local test="$1"
+ $BIN/refund $test.json $OUT/$test.res > $OUT/$test.out 2> $OUT/$test.err
+ diff $OUT/$test.res $RES/$test.res > $OUT/$test.diff 2> /dev/null
+}
+
+# Return
+# 0 if the sav not exists
+# 1 if the file does match
+# 2 if the file does not match
+check_result() {
+ local test="$1"
+
+ if [ ! -r "$RES/$test.res" ]; then
+ return 0
+ elif [ ! -s $OUT/$test.diff ]; then
+ return 1
+ else
+ return 2
+ fi
+}
+
+echo "Testing..."
+echo ""
+
+rm -rf $OUT 2>/dev/null
+mkdir $OUT 2>/dev/null
+
+all=0
+ok=0
+ko=0
+sk=0
+
+for file in `ls *.json`; do
+ ((all++))
+ test="${file%.*}"
+ echo -n "* $test: "
+
+ run_test $test
+ check_result $test
+
+ case "$?" in
+ 0)
+ echo "skip ($test.res not found)"
+ ((sk++))
+ continue;;
+ 1)
+ echo "success"
+ ((ok++))
+ ;;
+ 2)
+ echo "error (diff $OUT/$test.res $RES/$test.res)"
+ ((ko++))
+ ;;
+ esac
+done
+
+# clear tmp stats file.
+rm stats.json
+
+echo ""
+echo "==> success $ok/$all ($ko tests failed, $sk skipped)"
all:
mkdir -p bin/
- # Compile in global mode to silence warnings on unused GTK deprecated
- ../../bin/nitc --global --dir bin/ src/calculator_gtk.nit src/calculator_test.nit
+ ../../bin/nitc --dir bin/ src/calculator_gtk.nit src/calculator_test.nit
android:
mkdir -p bin/ res/
do
init_gtk
- win = new GtkWindow(0)
+ win = new GtkWindow(new GtkWindowType.toplevel)
+ win.connect_destroy_signal_to_quit
- container = new GtkGrid(5, 5, true)
- win.add(container)
+ container = new GtkGrid
+ win.add container
lbl_disp = new GtkLabel("_")
container.attach(lbl_disp, 0, 0, 5, 1)
of the language annotation capacities
"""
+
+var s = "example"
+
+print "This superstring {s} rocks"
+
+print "This superstring %1 rocks".format(s)
msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
msgstr "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr "example"
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr "This superstring %1 rocks"
+
# Generated file, do not modify
msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
msgstr "Example de\n\nchaine multiligne\n\n\navec annotation de localisation\n"
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr "exemple"
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr "Cet %1 de superstring est génial"
+
# Generated file, do not modify
msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
msgstr "複数行の文字列\n\nなサンプルプログラム\n\n\n新しい国際化アノテーションとともに\n"
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr "サンプル"
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr "このスパ文字列%1は驚くべきです"
+
# Generated file, do not modify
msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
msgstr ""
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr ""
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr ""
+
# Generated file, do not modify
fun test_intent
do
- intent = new Intent(self)
+ intent = new Intent
intent.action = intent_action.view.to_s
intent.data = "content://contacts/people/"
- intent.launch_activity
+ start_activity intent
intent.destroy
- intent = new Intent(self)
+ intent = new Intent
var p1 = new Point(10, 20)
intent["a_point"] = p1
var p2 = intent["a_point"]
import native_app_glue
import dalvik
private import log
-private import android_data_store
+private import data_store
redef class App
redef fun init_window
# Implements `app::data_store` using `shared_preferences`
#
# We use the shared preferences named "data_store" to store the data.
-module android_data_store
+module data_store
import app::data_store
private import shared_preferences
# `android.content.Intent` for the android platform
module intent_api10
-import native_app_glue
+import dalvik
import android::bundle
import serialization
private import json_serialization
extern class NativeIntent in "Java" `{ android.content.Intent `}
super JavaObject
+ new in "Java" `{ return new Intent(); `}
+
fun add_category(category: JavaString) in "Java" `{ recv.addCategory(category); `}
fun add_flags(flags: Int) in "Java" `{ recv.addFlags((int)flags); `}
fun filter_equals(other: NativeIntent): Bool in "Java" `{
# Services allowing to launch an activity and start/stop services
class Intent
- protected var intent: NativeIntent
- protected var context: NativeActivity
-
- init (app: App)
- do
- self.context = app.native_activity
- setup
- end
-
- private fun set_vars(intent: NativeIntent) do
- self.intent = intent.new_global_ref
- end
-
- private fun setup import context, intent, set_vars in "Java" `{
- Intent intent = new Intent();
- Intent_set_vars(recv, intent);
- `}
+ protected var intent: NativeIntent = (new NativeIntent).new_global_ref is lazy
# The general action to be performed
#
sys.jni_env.pop_local_frame
return self
end
- # Execute the intent and launch the appropriate application
- fun launch_activity do context.start_activity(intent)
-
- # Start a service that will be running until the `stop_service` call
- fun start_service do context.start_service(intent)
-
- # Stop service
- fun stop_service do context.stop_service(intent)
# Deletes intent global reference
fun destroy do self.intent.delete_global_ref
end
redef extern class NativeActivity
- fun start_activity(intent: NativeIntent) in "Java" `{ recv.startActivity(intent); `}
- fun start_service(intent: NativeIntent) in "Java" `{ recv.startService(intent); `}
- fun stop_service(intent: NativeIntent) in "Java" `{ recv.stopService(intent); `}
+ private fun start_activity(intent: NativeIntent) in "Java" `{ recv.startActivity(intent); `}
+ private fun start_service(intent: NativeIntent) in "Java" `{ recv.startService(intent); `}
+ private fun stop_service(intent: NativeIntent) in "Java" `{ recv.stopService(intent); `}
end
# Allows user to get values with enum-like syntax : `intent_action.main`
var collection = new HashSet[String]
fun add(element: JavaString) do collection.add element.to_s
end
+
+redef class App
+
+ # Execute the intent and launch the appropriate application
+ fun start_activity(intent: Intent) do native_activity.start_activity(intent.intent)
+
+ # Start a service that will be running until the `stop_service` call
+ fun start_service(intent: Intent) do native_activity.start_service(intent.intent)
+
+ # Stop service
+ fun stop_service(intent: Intent) do native_activity.stop_service(intent.intent)
+end
# Services to save/load data using `android.content.SharedPreferences` for the android platform
module shared_preferences_api10
-import native_app_glue
+import dalvik
import serialization
private import json_serialization
# Services to display a _toast_, a small popup on Android
module toast
-import native_app_glue
+import dalvik
in "Java" `{
import android.widget.Toast;
private fun native_toast(message: JavaString, is_long: Bool)
import native_activity in "Java" `{
- final android.app.NativeActivity context = App_native_activity(recv);
+ final android.app.Activity context = App_native_activity(recv);
final CharSequence final_message = message;
final int duration = is_long? Toast.LENGTH_LONG: Toast.LENGTH_SHORT;
# See the License for the specific language governing permissions and
# limitations under the License.
-# Views and services to use the Android native user interface
-#
-# Events, such as a button click, come from the UI thread and are then
-# passed to the main thread. It is recommended to specialize one of the
-# methods of the main thread to customize the response to a given event.
-#
-# This graph shows the path of a button click:
-# ~~~raw
-# UI Thread # Main thread
-#
-# User
-# |
-# V
-# Button::click_ui --> Button::click
-# |
-# V
-# App::catch_event
-# ~~~
-module ui is min_api_version 14
+# Native services from the `android.view` and `android.widget` namespaces
+module native_ui is min_api_version 14
import nit_activity
-import pthreads::concurrent_collections
in "Java" `{
import android.app.Activity;
import android.view.Gravity;
- import android.view.MotionEvent;
+ import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import java.util.*;
`}
-# An event from the `app.nit` framework
-interface AppEvent
- # Reaction to this event
- fun react do end
-end
-
-# A control click event
-class ClickEvent
- super AppEvent
-
- # Sender of this event
- var sender: Button
-
- redef fun react do sender.click self
-end
-
-# Receiver of events not handled directly by the sender
-interface EventCatcher
- fun catch_event(event: AppEvent) do end
-end
-
-redef class App
- super EventCatcher
-end
-
redef extern class NativeActivity
# Set the main layout of this activity
`}
end
-# An `Object` that raises events
-abstract class Eventful
- var event_catcher: EventCatcher = app is lazy, writable
-end
-
-#
-## Nity classes and services
-#
-
-# An Android control with text
-abstract class TextView
- super Finalizable
- super Eventful
-
- # Native Java variant to this Nity class
- type NATIVE: NativeTextView
-
- # The native Java object encapsulated by `self`
- var native: NATIVE is noinit
-
- # Get the text of this view
- fun text: String
- do
- var jstr = native.text
- var str = jstr.to_s
- jstr.delete_local_ref
- return str
- end
-
- # Set the text of this view
- fun text=(value: Text)
- do
- var jstr = value.to_s.to_java_string
- native.text = jstr
- jstr.delete_local_ref
- end
-
- # Get whether this view is enabled or not
- fun enabled: Bool do return native.enabled
-
- # Set if this view is enabled
- fun enabled=(val: Bool) do native.enabled = val
-
- # Set the size of the text in this view at `dpi`
- fun text_size=(dpi: Numeric) do native.text_size = dpi.to_f
-
- private var finalized = false
- redef fun finalize
- do
- if not finalized then
- native.delete_global_ref
- finalized = true
- end
- end
-end
-
-# An Android button
-class Button
- super TextView
-
- redef type NATIVE: NativeButton
-
- init
- do
- var native = new NativeButton(app.native_activity, self)
- self.native = native.new_global_ref
- end
-
- # Click event
- #
- # By default, this method calls `app.catch_event`. It can be specialized
- # with custom behavior or the receiver of `catch_event` can be changed
- # with `event_catcher=`.
- fun click(event: AppEvent) do event_catcher.catch_event(event)
-
- private fun click_from_native do click(new ClickEvent(self))
-end
-
-# An Android editable text field
-class EditText
- super TextView
-
- redef type NATIVE: NativeEditText
-
- init
- do
- var native = new NativeEditText(app.activities.first.native)
- self.native = native.new_global_ref
- end
-end
-
-#
-## Native classes
-#
-
# A `View` for Android
extern class NativeView in "Java" `{ android.view.View `}
super JavaObject
fun minimum_width=(val: Int) in "Java" `{ recv.setMinimumWidth((int)val); `}
fun minimum_height=(val: Int) in "Java" `{ recv.setMinimumHeight((int)val); `}
+
+ fun enabled: Bool in "Java" `{ return recv.isEnabled(); `}
+ fun enabled=(value: Bool) in "Java" `{
+ final View final_recv = recv;
+ final boolean final_value = value;
+
+ ((Activity)recv.getContext()).runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ final_recv.setEnabled(final_value);
+ }
+ });
+ `}
end
# A collection of `NativeView`
super NativeView
fun add_view(view: NativeView) in "Java" `{ recv.addView(view); `}
+
+ fun add_view_with_weight(view: NativeView, weight: Float)
+ in "Java" `{
+ recv.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, (float)weight));
+ `}
end
# A `NativeViewGroup` organized in a line
LinearLayout.LayoutParams.WRAP_CONTENT);
recv.addView(view, params);
`}
-
- fun add_view_with_weight(view: NativeView, weight: Float)
- in "Java" `{
- recv.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, (float)weight));
- `}
end
# A `NativeViewGroup` organized as a grid
});
`}
- fun enabled: Bool in "Java" `{ return recv.isEnabled(); `}
- fun enabled=(value: Bool) in "Java" `{
- final TextView final_recv = recv;
- final boolean final_value = value;
-
- ((Activity)recv.getContext()).runOnUiThread(new Runnable() {
- @Override
- public void run() {
- final_recv.setEnabled(final_value);
- }
- });
- `}
-
fun gravity_center in "Java" `{
recv.setGravity(Gravity.CENTER);
`}
+ fun text_size: Float in "Java" `{
+ return recv.getTextSize();
+ `}
fun text_size=(dpi: Float) in "Java" `{
recv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, (float)dpi);
`}
redef type SELF: NativeButton
- new (context: NativeActivity, sender_object: Object)
- import Button.click_from_native in "Java" `{
- final int final_sender_object = sender_object;
-
- return new Button(context){
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if(event.getAction() == MotionEvent.ACTION_DOWN) {
- Button_click_from_native(final_sender_object);
- return true;
- }
- return false;
- }
- };
- `}
-
redef fun new_global_ref: SELF import sys, Sys.jni_env `{
Sys sys = NativeButton_sys(recv);
JNIEnv *env = Sys_jni_env(sys);
--- /dev/null
+# This file is part of NIT (http://www.nitlanguage.org).
+#
+# Copyright 2014 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.
+
+# Views and services to use the Android native user interface
+module ui
+
+import native_ui
+
+# An event from the `app.nit` framework
+interface AppEvent
+ # Reaction to this event
+ fun react do end
+end
+
+# A control click event
+class ClickEvent
+ super AppEvent
+
+ # Sender of this event
+ var sender: Button
+
+ redef fun react do sender.click self
+end
+
+# Receiver of events not handled directly by the sender
+interface EventCatcher
+ fun catch_event(event: AppEvent) do end
+end
+
+redef class App
+ super EventCatcher
+end
+
+# An `Object` that raises events
+abstract class Eventful
+ var event_catcher: EventCatcher = app is lazy, writable
+end
+
+#
+## Nity classes and services
+#
+
+# An Android control with text
+abstract class TextView
+ super Finalizable
+ super Eventful
+
+ # Native Java variant to this Nity class
+ type NATIVE: NativeTextView
+
+ # The native Java object encapsulated by `self`
+ var native: NATIVE is noinit
+
+ # Get the text of this view
+ fun text: String
+ do
+ var jstr = native.text
+ var str = jstr.to_s
+ jstr.delete_local_ref
+ return str
+ end
+
+ # Set the text of this view
+ fun text=(value: Text)
+ do
+ var jstr = value.to_s.to_java_string
+ native.text = jstr
+ jstr.delete_local_ref
+ end
+
+ # Get whether this view is enabled or not
+ fun enabled: Bool do return native.enabled
+
+ # Set if this view is enabled
+ fun enabled=(val: Bool) do native.enabled = val
+
+ # Set the size of the text in this view at `dpi`
+ fun text_size=(dpi: Numeric) do native.text_size = dpi.to_f
+
+ private var finalized = false
+ redef fun finalize
+ do
+ if not finalized then
+ native.delete_global_ref
+ finalized = true
+ end
+ end
+end
+
+# An Android button
+class Button
+ super TextView
+
+ redef type NATIVE: NativeButton
+
+ init
+ do
+ var native = new NativeButton(app.native_activity, self)
+ self.native = native.new_global_ref
+ end
+
+ # Click event
+ #
+ # By default, this method calls `app.catch_event`. It can be specialized
+ # with custom behavior or the receiver of `catch_event` can be changed
+ # with `event_catcher=`.
+ fun click(event: AppEvent) do event_catcher.catch_event(event)
+
+ private fun click_from_native do click(new ClickEvent(self))
+end
+
+# An Android editable text field
+class EditText
+ super TextView
+
+ redef type NATIVE: NativeEditText
+
+ init
+ do
+ var native = new NativeEditText(app.activities.first.native)
+ self.native = native.new_global_ref
+ end
+end
+
+redef class NativeButton
+ new (context: NativeActivity, sender_object: Object)
+ import Button.click_from_native in "Java" `{
+ final int final_sender_object = sender_object;
+
+ return new android.widget.Button(context){
+ @Override
+ public boolean onTouchEvent(android.view.MotionEvent event) {
+ if(event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
+ Button_click_from_native(final_sender_object);
+ return true;
+ }
+ return false;
+ }
+ };
+ `}
+end
android_manifest("""<uses-permission android:name="android.permission.VIBRATE" />""")
end
-import native_app_glue
+import dalvik
# Handle to an Android vibrator
extern class Vibrator in "Java" `{ android.os.Vibrator `}
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Budi Kurniawan <budi2020@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.
+
+# The Bitmap class represents a 24-bit bitmap image. An instance can be constructed
+# by calling load or with_size:
+#
+# new Bitmap.load(path_to_a_bmp_file)
+# new Bitmap.with_size(400, 300)
+#
+# The width and height attributes contain the image's width and height,
+# respectively.
+#
+# Individual pixels can be manipulated by calling the set_pixel function:
+#
+# set_pixel(x, y, color)
+#
+# The no-argument grayscale function converts the bitmap to grayscale and is an
+# implementation of this Rossetacode task:
+# http://rosettacode.org/wiki/Grayscale_image
+#
+# Finally, the bitmap can be saved to a file by calling save:
+#
+# save(path_to_a_file)
+#
+# For information on the bitmap format, see
+# http://en.wikipedia.org/wiki/BMP_file_format
+#
+# A module containing classes for manipulating bitmap images
+module bitmap
+#
+# A class that represents a Bitmap image
+class Bitmap
+ # The file path if this Bitmap is created by loading a bitmap file
+ var file_path: String is noinit
+
+ # The file extension if this Bitmap is created by loading a bitmap file
+ var file_extension: String is noinit
+
+ # The file size if this Bitmap is created by loading a bitmap file
+ var file_size: Int is noinit
+
+ # The image width in pixels
+ var width: Int is noinit
+
+ # The image height in pixels
+ var height: Int is noinit
+
+ # The offset of image data. Typically, 54
+ private var data_offset: Int is noinit
+
+ # The number of bits representing a pixel. Currently only 24-bit bitmaps are supported
+ private var bits_per_pixel: Int is noinit
+
+ # The size of images. For a 24-bit bitmap, this is equal to (3*width*height)
+ private var image_size: Int is noinit
+
+ # 14-byte bitmap header
+ private var bitmap_header: Array[Int] = [66, 77, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0]
+
+ # 40-byte dib header
+ private var dib_header: Array[Int] = [40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 24, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+
+ # The image data, each cell contains a pixel.
+ # The first 8 least-significant bits represent the red component,
+ # the next 8 least-significant bits represent the green component,
+ # and the next 8 bit represent the blue component.
+ # The last 8 most-significant bits are not used
+ private var data = new Array[Array[Int]]
+
+ # Constructs a Bitmap object by passing the image's width and height (in pixels)
+ init with_size(width: Int, height: Int)
+ do
+ self.width = width
+ self.height = height
+ self.bits_per_pixel = 24
+ self.data_offset = 54
+ #set width and height
+
+ self.set_value(dib_header, 4, width)
+ self.set_value(dib_header, 8, height)
+ #set file size
+ var file_size = 3 * width * height + 54
+ self.set_value(bitmap_header, 2, file_size)
+
+ #init pixel data
+ self.data = new Array[Array[Int]].with_capacity(height)
+ for x in [0..height[ do
+ var row = new Array[Int].with_capacity(width)
+ for y in [0..width[ do
+ row.add(0x00FFFFFF)
+ end
+ self.data[x] = row
+ end
+ end
+
+ # Creates an instance of Bitmap by loading an existing image file
+ init load(path: String)
+ do
+ self.file_path = path
+ var temp = path.file_extension
+ if temp != null then
+ self.file_extension = temp
+ else
+ self.file_extension = ""
+ end
+ var fileReader = new FileReader.open(path)
+
+ # =============== Bitmap header ================
+ for x in [0..13] do
+ bitmap_header[x] = fileReader.read(1)[0].ascii
+ end
+ self.file_size = get_value(bitmap_header.subarray(2, 4))
+ self.data_offset = get_value(bitmap_header.subarray(10, 4))
+
+ # =============== DIB header ================
+ for x in [0..39] do
+ dib_header[x] = fileReader.read(1)[0].ascii
+ end
+ var dib_size = get_value(dib_header.subarray(0, 4))
+ # only support BITMAPINFOHEADER
+ if dib_size != 40 then
+ print "This type of bitmap is not supported"
+ fileReader.close
+ return
+ end
+
+ self.width = get_value(dib_header.subarray(4, 4))
+ self.height = get_value(dib_header.subarray(8, 4))
+ self.bits_per_pixel = get_value(dib_header.subarray(14, 2))
+ self.image_size = get_value(dib_header.subarray(20, 4))
+
+ if self.bits_per_pixel != 24 then
+ print "Only full color bitmaps are supported"
+ fileReader.close
+ return
+ end
+
+ if self.bits_per_pixel == 24 then
+ # assert self.image_size + 54 <= self.file_size
+ # start loading image data, for now assume no padding
+ for x in [0..self.height[
+ do
+ var row = new Array[Int].with_capacity(self.width)
+ for y in [0..self.width[
+ do
+ var red = fileReader.read(1)[0].ascii * 256 * 256
+ var green = fileReader.read(1)[0].ascii * 256
+ var blue = fileReader.read(1)[0].ascii
+ row.add(red + green + blue)
+ end
+ self.data.add(row)
+ end
+ end
+ fileReader.close
+ end #end of load_from_file method
+
+ # Reads in a series of bytes from the FileReader when loading a Bitmap from a file
+ # FileReader.read(1) is used due to https://github.com/privat/nit/issues/1264
+ private fun read_chars(fr: FileReader, howMany: Int): String
+ do
+ var s = ""
+ for x in [1..howMany]
+ do
+ s += fr.read(1)
+ end
+ return s
+ end
+
+ # Converts the value contained in two or four bytes into an Int. Since Nit
+ # does not have a byte type, Int is used
+ private fun get_value(array: Array[Int]): Int
+ do
+ var value = 0
+ for x in [0..array.length[ do
+ value += array[x] * 256.to_f.pow(x.to_f).to_i
+ end
+ return value
+ end
+
+ # Converts the value in an Int to four bytes. Since Nit does not have a byte
+ # type, Int is used.
+ private fun set_value(array: Array[Int], start_index: Int, value: Int)
+ do
+ array[start_index] = value.bin_and(0x000000FF)
+ array[start_index + 1] = value.rshift(8).bin_and(0x000000FF)
+ array[start_index + 2] = value.rshift(16).bin_and(0x000000FF)
+ array[start_index + 3] = value.rshift(24).bin_and(0x000000FF)
+ end
+
+ # Saves the bitmap into a file
+ fun save(path: String)
+ do
+ var fw = new FileWriter.open(path)
+ # Write bitmap header
+ for x in [0..self.bitmap_header.length[ do
+ fw.write(self.bitmap_header[x].ascii.to_s)
+ end
+ # Write dib header
+ for x in [0..self.dib_header.length[ do
+ fw.write(self.dib_header[x].ascii.to_s)
+ end
+ # Write color table (if any)
+ # Write data (no padding for now)
+ for x in [0..self.height[ do
+ var row = self.data[x]
+ for y in [0..self.width[ do
+ var pixel = row[y]
+ var red = pixel.rshift(16)
+ var green = pixel.bin_and(0x00FF00).rshift(8)
+ var blue = pixel.bin_and(0x000000FF)
+ fw.write(red.ascii.to_s)
+ fw.write(green.ascii.to_s)
+ fw.write(blue.ascii.to_s)
+ end
+ end
+ fw.close
+ end #end of save
+
+ # Converts the bitmap to grayscale by manipulating each individual pixel
+ fun grayscale
+ do
+ for x in [0..self.height[ do
+ var row = self.data[x]
+ for y in [0..self.width[ do
+ var pixel = row[y]
+ var red = pixel.rshift(16)
+ var green = pixel.bin_and(0x00FF00).rshift(8)
+ var blue = pixel.bin_and(0x000000FF)
+ var lum = (0.2126 * red.to_f + 0.7152 * green.to_f + 0.0722 * blue.to_f).to_i
+ pixel = lum * 256 * 256 + lum * 256 + lum
+ self.data[x][y] = pixel
+ end
+ end
+ end
+
+ # Sets an individual pixel, where position (0, 0) represents the top-left pixel.
+ fun set_pixel(x: Int, y: Int, color: Int)
+ do
+ if x >= 0 and y >= 0 and x < self.width and y < self.height then
+ # Since a bitmap stores its rows of pixels upside-down, y is mapped to
+ # height - 1 - y to make (0, 0) the top-left pixel
+ self.data[self.height - 1 - y][x] = color
+ end
+ end
+end #end of class Bitmap
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Budi Kurniawan <budi2020@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.
+
+# This file tests the Bitmap class in the bitmap module
+# It has to be called by passing two arguments:
+#
+# - An input bitmap file
+# - An output bitmap file
+#
+# It converts the input bitmap to grayscale and save it to the specified
+# output file. In addition, it creates a blank.bmp file in the current directory.
+#
+#
+# A module for testing the classes in the bitmap module
+module test_bitmap is test_suite
+
+import bitmap
+import test_suite
+
+class TestBitmap
+ super TestSuite
+
+ fun test_grayscale do
+ var bitmap = new Bitmap.with_size(400, 300)
+ for y in [0..300] do
+ for x in [0..200] do bitmap.set_pixel(x, y, 0x0077AAAA)
+ end
+ bitmap.grayscale
+ bitmap.save("./blank.bmp")
+ end
+end
redef fun +(offset) `{ return recv + offset; `}
end
+# Wrapper around an array of `NativeString` in C (`char**`) with length and destroy state.
+class CNativeStringArray
+ super CArray[NativeString]
+
+ redef type NATIVE: NativeCStringArray
+
+ # Initialize a new NativeCStringArray of `size` elements.
+ init(size: Int) is old_style_init do
+ native_array = new NativeCStringArray(size)
+ super size
+ end
+
+ # Build from an `Array[NativeString]`
+ new from(array: Array[NativeString])
+ do
+ var carray = new CNativeStringArray(array.length)
+ for i in array.length.times do
+ carray[i] = array[i]
+ end
+ return carray
+ end
+end
+
+# An array of `NativeString` in C (`char**`)
+extern class NativeCStringArray `{ char** `}
+ super NativeCArray
+
+ redef type E: NativeString
+
+ # Initialize a new NativeCStringArray of `size` elements.
+ new(size: Int) `{ return calloc(size, sizeof(char*)); `}
+
+ redef fun [](index) `{ return recv[index]; `}
+ redef fun []=(index, val) `{ recv[index] = val; `}
+ redef fun +(offset) `{ return recv + offset; `}
+end
+
redef class NativeString
super NativeCArray
redef type E: Char
# Comment body text.
fun body: String do return json["body"].to_s
+
+ # Does the comment contain an acknowledgement (+1)
+ fun is_ack: Bool
+ do
+ return body.has("\\+1\\b".to_re) or body.has(":+1:") or body.has(":shipit:")
+ end
end
# A comment made on a commit.
# See the License for the specific language governing permissions and
# limitations under the License.
-module gdk_enums is pkgconfig("gtk+-3.0")
+module gdk_enums is pkgconfig "gtk+-3.0"
in "C Header" `{
#include <gtk/gtk.h>
`}
-#enum GdkGravity
-#Defines the reference point of a window and the meaning of coordinates passed to gtk_window_move().
-#@https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkGravity
+# enum GdkGravity
+# Defines the reference point of a window and the meaning of coordinates passed to gtk_window_move().
+# See: https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkGravity
extern class GdkGravity `{GdkGravity`}
- #The reference point is at the top left corner.
- new north_west `{ return GDK_GRAVITY_NORTH_WEST; `}
+ # The reference point is at the top left corner.
+ new north_west `{ return GDK_GRAVITY_NORTH_WEST; `}
- #The reference point is in the middle of the top edge.
- new north `{ return GDK_GRAVITY_NORTH; `}
+ # The reference point is in the middle of the top edge.
+ new north `{ return GDK_GRAVITY_NORTH; `}
- #The reference point is at the top right corner.
- new north_east `{ return GDK_GRAVITY_NORTH_EAST; `}
+ # The reference point is at the top right corner.
+ new north_east `{ return GDK_GRAVITY_NORTH_EAST; `}
- #The reference point is at the middle of the left edge.
- new west `{ return GDK_GRAVITY_WEST; `}
+ # The reference point is at the middle of the left edge.
+ new west `{ return GDK_GRAVITY_WEST; `}
- #The reference point is at the center of the window
- new center `{ return GDK_GRAVITY_CENTER; `}
+ # The reference point is at the center of the window
+ new center `{ return GDK_GRAVITY_CENTER; `}
- #The reference point is at the middle of the right edge.
- new east `{ return GDK_GRAVITY_EAST; `}
+ # The reference point is at the middle of the right edge.
+ new east `{ return GDK_GRAVITY_EAST; `}
- #The reference point is at the lower left corner.
- new south_west `{ return GDK_GRAVITY_SOUTH_WEST; `}
+ # The reference point is at the lower left corner.
+ new south_west `{ return GDK_GRAVITY_SOUTH_WEST; `}
- #The reference point is at the middle of the lower edge.
- new south `{ return GDK_GRAVITY_SOUTH; `}
+ # The reference point is at the middle of the lower edge.
+ new south `{ return GDK_GRAVITY_SOUTH; `}
- #The reference point is at the lower right corner.
- new south_east `{ return GDK_GRAVITY_SOUTH_EAST; `}
+ # The reference point is at the lower right corner.
+ new south_east `{ return GDK_GRAVITY_SOUTH_EAST; `}
- #The reference point is at the top left corner of the window itself, ignoring window manager decorations.
- new static `{ return GDK_GRAVITY_STATIC; `}
+ # The reference point is at the top left corner of the window itself, ignoring window manager decorations.
+ new static `{ return GDK_GRAVITY_STATIC; `}
end
-#enum GdkGWindowEdge
-#Determines a window edge or corner.
-#@https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowEdge
+# enum GdkGWindowEdge
+# Determines a window edge or corner.
+# See: https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowEdge
extern class GdkWindowEdge `{GdkWindowEdge`}
- #The top left corner.
- new north_west `{ return GDK_WINDOW_EDGE_NORTH_WEST; `}
+ # The top left corner.
+ new north_west `{ return GDK_WINDOW_EDGE_NORTH_WEST; `}
- #The top edge.
- new north `{ return GDK_WINDOW_EDGE_NORTH; `}
+ # The top edge.
+ new north `{ return GDK_WINDOW_EDGE_NORTH; `}
- #The top right corner.
- new north_east `{ return GDK_WINDOW_EDGE_NORTH_EAST; `}
+ # The top right corner.
+ new north_east `{ return GDK_WINDOW_EDGE_NORTH_EAST; `}
- #The left edge.
- new west `{ return GDK_WINDOW_EDGE_WEST; `}
+ # The left edge.
+ new west `{ return GDK_WINDOW_EDGE_WEST; `}
- #The right edge.
- new east `{ return GDK_WINDOW_EDGE_EAST; `}
+ # The right edge.
+ new east `{ return GDK_WINDOW_EDGE_EAST; `}
- #The lower left corner.
- new south_west `{ return GDK_WINDOW_EDGE_SOUTH_WEST; `}
+ # The lower left corner.
+ new south_west `{ return GDK_WINDOW_EDGE_SOUTH_WEST; `}
- #The lower edge.
- new south `{ return GDK_WINDOW_EDGE_SOUTH; `}
+ # The lower edge.
+ new south `{ return GDK_WINDOW_EDGE_SOUTH; `}
- #The lower right corner.
- new south_east `{ return GDK_WINDOW_EDGE_SOUTH_EAST; `}
+ # The lower right corner.
+ new south_east `{ return GDK_WINDOW_EDGE_SOUTH_EAST; `}
end
# See the License for the specific language governing permissions and
# limitations under the License.
-module gtk_assistant is pkgconfig("gtk+-3.0")
+module gtk_assistant is pkgconfig "gtk+-3.0"
import gtk_core
#include <gtk/gtk.h>
`}
-#A widget used to guide users through multi-step operations
-#@https://developer.gnome.org/gtk3/stable/GtkAssistant.html
+# A widget used to guide users through multi-step operations
+# See: https://developer.gnome.org/gtk3/stable/GtkAssistant.html
extern class GtkAssistant `{GtkAssistant *`}
super GtkWindow
- new is extern `{
- return (GtkAssistant *)gtk_assistant_new( );
+ new `{
+ return (GtkAssistant *)gtk_assistant_new();
`}
- fun current_page : Int is extern `{
- return gtk_assistant_get_current_page ( recv );
+ fun current_page: Int `{
+ return gtk_assistant_get_current_page (recv);
`}
- fun current_page=( page_num : Int ) is extern `{
- gtk_assistant_set_current_page( recv, page_num);
+ fun current_page=(page_num: Int) `{
+ gtk_assistant_set_current_page(recv, page_num);
`}
- fun number_pages : Int is extern `{
- return gtk_assistant_get_n_pages( recv );
+ fun number_pages: Int `{
+ return gtk_assistant_get_n_pages(recv);
`}
- fun get_page( page_num : Int ) : GtkWidget is extern `{
- return gtk_assistant_get_nth_page( recv, page_num );
+ fun get_page(page_num: Int): GtkWidget `{
+ return gtk_assistant_get_nth_page(recv, page_num);
`}
- fun prepend( page : GtkWidget ) : Int is extern `{
- return gtk_assistant_prepend_page( recv, page );
+ fun prepend(page: GtkWidget): Int `{
+ return gtk_assistant_prepend_page(recv, page);
`}
- fun append( page : GtkWidget ) : Int is extern `{
- return gtk_assistant_append_page( recv, page );
+ fun append(page: GtkWidget): Int `{
+ return gtk_assistant_append_page(recv, page);
`}
- fun insert( page : GtkWidget, position : Int ) : Int is extern `{
- return gtk_assistant_insert_page( recv, page, position );
+ fun insert(page: GtkWidget, position: Int): Int `{
+ return gtk_assistant_insert_page(recv, page, position);
`}
- fun remove( page_num : Int ) is extern `{
- gtk_assistant_remove_page( recv, page_num );
+ fun remove(page_num: Int) `{
+ gtk_assistant_remove_page(recv, page_num);
`}
- fun get_page_type( page : GtkWidget ) : GtkAssistantPageType is extern `{
- return gtk_assistant_get_page_type( recv, page );
+ fun get_page_type(page: GtkWidget): GtkAssistantPageType `{
+ return gtk_assistant_get_page_type(recv, page);
`}
- fun set_page_type( page : GtkWidget, t : GtkAssistantPageType) is extern `{
- gtk_assistant_set_page_type( recv, page, t );
+ fun set_page_type(page: GtkWidget, t: GtkAssistantPageType) `{
+ gtk_assistant_set_page_type(recv, page, t);
`}
- fun get_page_title( page : GtkWidget ) : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_assistant_get_page_title( recv, page ) );
+ fun get_page_title(page: GtkWidget): String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_assistant_get_page_title(recv, page));
`}
- fun set_page_title( page : GtkWidget, title : String) is extern import String.to_cstring `{
- gtk_assistant_set_page_title( recv, page, String_to_cstring( title ) );
+ fun set_page_title(page: GtkWidget, title: String) import String.to_cstring `{
+ gtk_assistant_set_page_title(recv, page, String_to_cstring(title));
`}
- fun set_page_complete( page : GtkWidget, is_complete : Bool ) is extern `{
- gtk_assistant_set_page_complete( recv, page, is_complete );
+ fun set_page_complete(page: GtkWidget, is_complete: Bool) `{
+ gtk_assistant_set_page_complete(recv, page, is_complete);
`}
- fun get_page_complete( page : GtkWidget ) : Bool is extern `{
- return gtk_assistant_get_page_complete( recv, page );
+ fun get_page_complete(page: GtkWidget): Bool `{
+ return gtk_assistant_get_page_complete(recv, page);
`}
- fun remove_action_widget( child : GtkWidget ) is extern `{
- gtk_assistant_remove_action_widget( recv, child );
+ fun remove_action_widget(child: GtkWidget) `{
+ gtk_assistant_remove_action_widget(recv, child);
`}
- fun add_action_widget( child : GtkWidget ) is extern `{
- gtk_assistant_add_action_widget( recv, child );
+ fun add_action_widget(child: GtkWidget) `{
+ gtk_assistant_add_action_widget(recv, child);
`}
- fun update_buttons_state is extern `{
- gtk_assistant_update_buttons_state( recv );
+ fun update_buttons_state `{
+ gtk_assistant_update_buttons_state(recv);
`}
- fun commit is extern `{
- gtk_assistant_commit( recv );
+ fun commit `{
+ gtk_assistant_commit(recv);
`}
- fun next_page is extern `{
- gtk_assistant_next_page( recv );
+ fun next_page `{
+ gtk_assistant_next_page(recv);
`}
- fun previous_page is extern `{
- gtk_assistant_previous_page( recv );
+ fun previous_page `{
+ gtk_assistant_previous_page(recv);
`}
end
-#enum GtkAssistantPageType
-#An enum for determining the page role inside the GtkAssistant. It's used to handle buttons sensitivity and visibility.
-#@https://developer.gnome.org/gtk3/stable/GtkAssistant.html#GtkAssistantPageType
+# enum GtkAssistantPageType
+# An enum for determining the page role inside the GtkAssistant. It's used to handle buttons sensitivity and visibility.
+# See: https://developer.gnome.org/gtk3/stable/GtkAssistant.html#GtkAssistantPageType
extern class GtkAssistantPageType `{GtkAssistantPageType`}
- #The page has regular contents. Both the Back and forward buttons will be shown.
+ # The page has regular contents. Both the Back and forward buttons will be shown.
new content `{ return GTK_ASSISTANT_PAGE_CONTENT; `}
- #The page contains an introduction to the assistant task. Only the Forward button will be shown if there is a next page.
+ # The page contains an introduction to the assistant task. Only the Forward button will be shown if there is a next page.
new intro `{ return GTK_ASSISTANT_PAGE_INTRO; `}
- #The page lets the user confirm or deny the changes. The Back and Apply buttons will be shown.
+ # The page lets the user confirm or deny the changes. The Back and Apply buttons will be shown.
new confirm `{ return GTK_ASSISTANT_PAGE_CONFIRM; `}
- #The page informs the user of the changes done. Only the Close button will be shown.
+ # The page informs the user of the changes done. Only the Close button will be shown.
new summary `{ return GTK_ASSISTANT_PAGE_SUMMARY; `}
- #Used for tasks that take a long time to complete, blocks the assistant until the page is marked as complete. Only the back button will be shown.
+ # Used for tasks that take a long time to complete, blocks the assistant until the page is marked as complete. Only the back button will be shown.
new progress `{ return GTK_ASSISTANT_PAGE_PROGRESS; `}
- #Used for when other page types are not appropriate. No buttons will be shown, and the application must add its own buttons through gtk_assistant_add_action_widget().
+ # Used for when other page types are not appropriate. No buttons will be shown, and the application must add its own buttons through gtk_assistant_add_action_widget().
new custom `{ return GTK_ASSISTANT_PAGE_CUSTOM; `}
end
# limitations under the License.
# Classes and services to use libGTK widgets
-module gtk_core is pkgconfig("gtk+-3.0")
+module gtk_core is
+ pkgconfig "gtk+-3.0"
+ cflags "-Wno-deprecated-declarations"
+end
import gtk_enums
import gdk_enums
`}
`{
- /* callback user data */
- typedef struct {
- GtkCallable to_call;
- nullable_Object user_data;
- } NitGtkSignal;
-
- void nit_gtk_callback_func( GtkWidget *widget,
- gpointer callback_data ) {
- NitGtkSignal *data;
- data = (NitGtkSignal*)callback_data;
- GtkCallable_signal( data->to_call, widget, data->user_data );
- }
+ /* callback user data */
+ typedef struct {
+ GtkCallable to_call;
+ nullable_Object user_data;
+ } NitGtkSignal;
+
+ void nit_gtk_callback_func(GtkWidget *widget, gpointer callback_data) {
+ NitGtkSignal *data;
+ data = (NitGtkSignal*)callback_data;
+ GtkCallable_signal(data->to_call, widget, data->user_data);
+ }
`}
-redef interface Object
- protected fun init_gtk `{ gtk_init( 0, NULL ); `}
- protected fun run_gtk `{ gtk_main(); `}
- protected fun quit_gtk `{ gtk_main_quit(); `}
-end
+# Initialize the GTK system
+fun init_gtk `{ gtk_init(0, NULL); `}
+
+# Hand over control to the GTK event loop
+fun run_gtk `{ gtk_main(); `}
+
+# Quit the GTK event loop and clean up the system
+fun quit_gtk `{ gtk_main_quit(); `}
interface GtkCallable
# return true to stop event processing, false to let it propagate
- fun signal( sender : GtkWidget, user_data : nullable Object ) is abstract
+ fun signal(sender: GtkWidget, user_data: nullable Object) is abstract
end
extern class GdkEvent `{GdkEvent *`}
end
-
-#Base class for all widgets
-#@https://developer.gnome.org/gtk3/stable/GtkWidget.html
+# Base class for all widgets
+# See: https://developer.gnome.org/gtk3/stable/GtkWidget.html
extern class GtkWidget `{GtkWidget *`}
- fun show_all is extern `{ gtk_widget_show_all( recv ); `}
+ fun show_all `{ gtk_widget_show_all(recv); `}
- fun signal_connect( signal_name : String, to_call : GtkCallable, user_data : nullable Object ) is extern import String.to_cstring, GtkCallable.signal, Object.as not nullable `{
- NitGtkSignal *data = malloc( sizeof(NitGtkSignal) );
+ fun signal_connect(signal_name: String, to_call: GtkCallable, user_data: nullable Object) import String.to_cstring, GtkCallable.signal, Object.as not nullable `{
+ NitGtkSignal *data = malloc(sizeof(NitGtkSignal));
- GtkCallable_incr_ref( to_call );
- Object_incr_ref( user_data );
+ GtkCallable_incr_ref(to_call);
+ Object_incr_ref(user_data);
data->to_call = to_call;
data->user_data = user_data;
/*Use G_CALLBACK() to cast the callback function to a GCallback*/
- g_signal_connect( recv,
- String_to_cstring( signal_name ),
- G_CALLBACK(nit_gtk_callback_func),
- data );
+ g_signal_connect(recv,
+ String_to_cstring(signal_name),
+ G_CALLBACK(nit_gtk_callback_func),
+ data);
`}
- redef fun == ( o ) do return o isa GtkWidget and equal_to_gtk_widget( o )
+ redef fun ==(o) do return o isa GtkWidget and equal_to_gtk_widget(o)
- private fun equal_to_gtk_widget( o : GtkWidget ) : Bool `{
+ private fun equal_to_gtk_widget(o: GtkWidget): Bool `{
return recv == o;
`}
- fun request_size( width, height : Int ) `{
- gtk_widget_set_size_request( recv, width, height );
+ fun request_size(width, height: Int) `{
+ gtk_widget_set_size_request(recv, width, height);
`}
- fun bg_color=( state : GtkStateType, color : GdkRGBA ) is extern `{
- gtk_widget_override_background_color( recv, state, color);
+ fun bg_color=(state: GtkStateType, color: GdkRGBA) `{
+ gtk_widget_override_background_color(recv, state, color);
`}
- #with gtk it's possible to set fg_color to all widget : is it correct? is fg color inherited?
- #GdkColor color;
- fun fg_color=( state : GtkStateType, color : GdkRGBA ) is extern `{
- gtk_widget_override_color( recv, state, color);
+ # with gtk it's possible to set fg_color to all widget: is it correct? is fg color inherited?
+ # GdkColor color;
+ fun fg_color=(state: GtkStateType, color: GdkRGBA) `{
+ gtk_widget_override_color(recv, state, color);
`}
-
+
# Sets the sensitivity of a widget. sensitive -> the user can interact with it.
# Insensitive -> widget "grayed out" and the user can"t interact with them
- fun sensitive=(sensitive : Bool) is extern `{
+ fun sensitive=(sensitive: Bool) `{
gtk_widget_set_sensitive(recv, sensitive);
`}
-
+
# return the sensitivity of the widget
- fun sensitive: Bool is extern `{
+ fun sensitive: Bool `{
return gtk_widget_get_sensitive(recv);
`}
-
+
# Set the visibility of the widget
- fun visible=(visible: Bool) is extern `{
+ fun visible=(visible: Bool) `{
gtk_widget_set_visible(recv, visible);
`}
# Get the visibility of the widget only
- fun visible_self: Bool is extern `{
+ fun visible_self: Bool `{
return gtk_widget_get_visible(recv);
`}
fun hide `{ gtk_widget_hide(recv); `}
end
-#Base class for widgets which contain other widgets
-#@https://developer.gnome.org/gtk3/stable/GtkContainer.html
+# Base class for widgets which contain other widgets
+# See: https://developer.gnome.org/gtk3/stable/GtkContainer.html
extern class GtkContainer `{GtkContainer *`}
super GtkWidget
# Add a widget to the container
- fun add( widget : GtkWidget ) is extern `{
- gtk_container_add( recv, widget );
+ fun add(widget: GtkWidget) `{
+ gtk_container_add(recv, widget);
`}
# Remove the widget from the container
- fun remove_widget( widget : GtkWidget ) is extern `{
- gtk_container_remove( recv, widget );
+ fun remove_widget(widget: GtkWidget) `{
+ gtk_container_remove(recv, widget);
`}
# Get the resize mode of the container
- fun resize_mode : GtkResizeMode is extern `{
- return gtk_container_get_resize_mode( recv );
+ fun resize_mode: GtkResizeMode `{
+ return gtk_container_get_resize_mode(recv);
`}
# Set the resize mode of the container
- fun resize_mode=( resize_mode: GtkResizeMode ) is extern `{
- gtk_container_set_resize_mode( recv, resize_mode );
+ fun resize_mode=(resize_mode: GtkResizeMode) `{
+ gtk_container_set_resize_mode(recv, resize_mode);
`}
end
-#A container with just one child
-#@https://developer.gnome.org/gtk3/stable/GtkBin.html
+# A container with just one child
+# See: https://developer.gnome.org/gtk3/stable/GtkBin.html
extern class GtkBin `{GtkBin *`}
super GtkContainer
- fun child : GtkWidget is extern `{
- return gtk_bin_get_child( recv );
+ fun child: GtkWidget `{
+ return gtk_bin_get_child(recv);
`}
end
-#Toplevel which can contain other widgets
-#@https://developer.gnome.org/gtk3/stable/GtkWindow.html
+# Toplevel which can contain other widgets
+# See: https://developer.gnome.org/gtk3/stable/GtkWindow.html
extern class GtkWindow `{GtkWindow *`}
super GtkBin
- new ( flag : Int ) is extern `{
- GtkWindow *win;
+ new (typ: GtkWindowType) `{
+ return (GtkWindow *)gtk_window_new(typ);
+ `}
- win = GTK_WINDOW(gtk_window_new( flag ));
- g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
- return win;
+ # Connect the "destroy" signal to `quit_gtk`
+ fun connect_destroy_signal_to_quit `{
+ g_signal_connect(recv, "destroy", G_CALLBACK(gtk_main_quit), NULL);
`}
- fun title=( title : String ) is extern import String.to_cstring `{
- gtk_window_set_title( recv, String_to_cstring( title ) );
+ fun title=(title: String) import String.to_cstring `{
+ gtk_window_set_title(recv, String_to_cstring(title));
`}
- #The "destroy" signal is emitted when a widget is destroyed, either by explicitly calling gtk_widget_destroy() or when the widget is unparented. Top-level GtkWindows are also destroyed when the Close window control button is clicked.
- fun on_close( to_call : GtkCallable, user_data : nullable Object )
+ # The "destroy" signal is emitted when a widget is destroyed, either by explicitly calling gtk_widget_destroy() or when the widget is unparented. Top-level GtkWindows are also destroyed when the Close window control button is clicked.
+ fun on_close(to_call: GtkCallable, user_data: nullable Object)
do
- signal_connect( "destroy", to_call, user_data )
+ signal_connect("destroy", to_call, user_data)
end
- fun resizable : Bool is extern `{
- return gtk_window_get_resizable( recv );
+ fun resizable: Bool `{
+ return gtk_window_get_resizable(recv);
`}
- fun resizable=( is_resizable : Bool) is extern `{
- return gtk_window_set_resizable( recv, is_resizable );
+ fun resizable=(is_resizable: Bool) `{
+ return gtk_window_set_resizable(recv, is_resizable);
`}
- #Activates the current focused widget within the window.
- #returns TRUE if a widget got activated.
- fun activate_focus : Bool is extern `{
- return gtk_window_activate_focus( recv );
+ # Activates the current focused widget within the window.
+ # returns TRUE if a widget got activated.
+ fun activate_focus: Bool `{
+ return gtk_window_activate_focus(recv);
`}
- #Sets a window modal or non-modal. Modal windows prevent interaction with other windows in the same application.
- fun modal=( is_modal : Bool ) is extern `{
- gtk_window_set_modal( recv, is_modal );
+ # Sets a window modal or non-modal. Modal windows prevent interaction with other windows in the same application.
+ fun modal=(is_modal: Bool) `{
+ gtk_window_set_modal(recv, is_modal);
`}
- #Windows can't actually be 0x0 in size, they must be at least 1x1
- #but passing 0 for width and height is OK, resulting in a 1x1 default size.
- #params width in pixels, or -1 to unset the default width
- #params height in pixels, or -1 to unset the default height
- fun default_size( width : Int, height : Int ) is extern `{
- gtk_window_set_default_size( recv, width, height );
+ # Windows can't actually be 0x0 in size, they must be at least 1x1
+ # but passing 0 for width and height is OK, resulting in a 1x1 default size.
+ # params width in pixels, or -1 to unset the default width
+ # params height in pixels, or -1 to unset the default height
+ fun default_size(width: Int, height: Int) `{
+ gtk_window_set_default_size(recv, width, height);
`}
- #Activates the default widget for the window
- #unless the current focused widget has been configured to receive the default action (see gtk_widget_set_receives_default()), in which case the focused widget is activated.
- fun activate_default : Bool is extern `{
- return gtk_window_activate_default( recv );
+ # Activates the default widget for the window
+ # unless the current focused widget has been configured to receive the default action (see gtk_widget_set_receives_default()), in which case the focused widget is activated.
+ fun activate_default: Bool `{
+ return gtk_window_activate_default(recv);
`}
- fun gravity : GdkGravity is extern `{
- return gtk_window_get_gravity( recv );
+ fun gravity: GdkGravity `{
+ return gtk_window_get_gravity(recv);
`}
- fun gravity=( window_grav : GdkGravity ) is extern `{
- gtk_window_set_gravity( recv, window_grav );
+ fun gravity=(window_grav: GdkGravity) `{
+ gtk_window_set_gravity(recv, window_grav);
`}
-# fun position : GtkWindowPosition is extern `{
-# return gtk_window_get_position( recv );
+# fun position: GtkWindowPosition `{
+# return gtk_window_get_position(recv);
# `}
#
-# fun position=( window_pos : GtkWindowPosition ) is extern `{
-# gtk_window_set_position( recv, window_pos );
+# fun position=(window_pos: GtkWindowPosition) `{
+# gtk_window_set_position(recv, window_pos);
# `}
- fun active : Bool is extern `{
- return gtk_window_is_active( recv );
+ fun active: Bool `{
+ return gtk_window_is_active(recv);
`}
- #Returns whether the input focus is within this GtkWindow. For real toplevel windows, this is identical to gtk_window_is_active(), but for embedded windows, like GtkPlug, the results will differ.
- fun has_toplevel_focus : Bool is extern `{
- return gtk_window_has_toplevel_focus( recv );
+ # Returns whether the input focus is within this GtkWindow. For real toplevel windows, this is identical to gtk_window_is_active(), but for embedded windows, like GtkPlug, the results will differ.
+ fun has_toplevel_focus: Bool `{
+ return gtk_window_has_toplevel_focus(recv);
`}
- fun get_focus : GtkWidget is extern `{
- return gtk_window_get_focus( recv );
+ fun get_focus: GtkWidget `{
+ return gtk_window_get_focus(recv);
`}
- fun set_focus( widget : GtkWidget ) is extern `{
- return gtk_window_set_focus( recv, widget );
+ fun set_focus(widget: GtkWidget) `{
+ return gtk_window_set_focus(recv, widget);
`}
- fun get_default_widget : GtkWidget is extern `{
- return gtk_window_get_default_widget( recv );
+ fun get_default_widget: GtkWidget `{
+ return gtk_window_get_default_widget(recv);
`}
- fun set_default_widget( widget : GtkWidget ) is extern `{
- return gtk_window_set_default( recv, widget );
+ fun set_default_widget(widget: GtkWidget) `{
+ return gtk_window_set_default(recv, widget);
`}
- fun maximize is extern `{
- return gtk_window_maximize( recv );
+ fun maximize `{
+ return gtk_window_maximize(recv);
`}
- fun unmaximize is extern `{
- return gtk_window_unmaximize( recv );
+ fun unmaximize `{
+ return gtk_window_unmaximize(recv);
`}
- fun fullscreen is extern `{
- return gtk_window_fullscreen( recv );
+ fun fullscreen `{
+ return gtk_window_fullscreen(recv);
`}
- fun unfullscreen is extern `{
- return gtk_window_unfullscreen( recv );
+ fun unfullscreen `{
+ return gtk_window_unfullscreen(recv);
`}
- fun keep_above=( setting : Bool ) is extern `{
- gtk_window_set_keep_above( recv, setting );
+ fun keep_above=(setting: Bool) `{
+ gtk_window_set_keep_above(recv, setting);
`}
- fun keep_below=( setting : Bool ) is extern `{
- gtk_window_set_keep_below( recv, setting );
+ fun keep_below=(setting: Bool) `{
+ gtk_window_set_keep_below(recv, setting);
`}
end
-#A bin with a decorative frame and optional label
-#https://developer.gnome.org/gtk3/stable/GtkFrame.html
+# A bin with a decorative frame and optional label
+# https://developer.gnome.org/gtk3/stable/GtkFrame.html
extern class GtkFrame `{GtkFrame *`}
super GtkBin
- new ( lbl : String ) is extern import String.to_cstring`{
- return (GtkFrame *)gtk_frame_new( String_to_cstring( lbl ) );
+ new (lbl: String) import String.to_cstring `{
+ return (GtkFrame *)gtk_frame_new(String_to_cstring(lbl));
`}
- fun frame_label : String is extern`{
- return NativeString_to_s( (char *)gtk_frame_get_label( recv ) );
+ fun frame_label: String `{
+ return NativeString_to_s((char *)gtk_frame_get_label(recv));
`}
- fun frame_label=( lbl : String ) is extern import String.to_cstring`{
- gtk_frame_set_label( recv, String_to_cstring( lbl ) );
+ fun frame_label=(lbl: String) import String.to_cstring `{
+ gtk_frame_set_label(recv, String_to_cstring(lbl));
`}
- fun label_widget : GtkWidget is extern `{
- return gtk_frame_get_label_widget( recv );
+ fun label_widget: GtkWidget `{
+ return gtk_frame_get_label_widget(recv);
`}
- fun label_widget=( widget : GtkWidget ) is extern `{
- gtk_frame_set_label_widget( recv, widget );
+ fun label_widget=(widget: GtkWidget) `{
+ gtk_frame_set_label_widget(recv, widget);
`}
- fun shadow_type : GtkShadowType is extern `{
- return gtk_frame_get_shadow_type( recv );
+ fun shadow_type: GtkShadowType `{
+ return gtk_frame_get_shadow_type(recv);
`}
- fun shadow_type=( stype : GtkShadowType ) is extern `{
- gtk_frame_set_shadow_type( recv, stype );
+ fun shadow_type=(stype: GtkShadowType) `{
+ gtk_frame_set_shadow_type(recv, stype);
`}
- #fun label_align : GtkShadowType is extern `{
- #`}
-
- fun label_align=( xalign : Float, yalign : Float ) is extern `{
- gtk_frame_set_label_align( recv, xalign, yalign );
+ fun label_align=(xalign: Float, yalign: Float) `{
+ gtk_frame_set_label_align(recv, xalign, yalign);
`}
end
-#Pack widgets in a rows and columns
-#@https://developer.gnome.org/gtk3/3.3/GtkGrid.html
+# Pack widgets in a rows and columns
+# See: https://developer.gnome.org/gtk3/3.3/GtkGrid.html
extern class GtkGrid `{GtkGrid *`}
super GtkContainer
- # Create a grid with a fixed number of rows and columns
- new ( rows : Int, columns : Int, homogeneous : Bool ) `{
- return (GtkGrid*)gtk_grid_new(); // rows, columns, homogeneous );
+ # Create a new grid
+ new `{
+ return (GtkGrid*)gtk_grid_new();
`}
# Set a widget child inside the grid at a given position
- fun attach( child : GtkWidget, left, top, width, height : Int ) `{
- gtk_grid_attach( recv, child, left, top, width, height );
+ fun attach(child: GtkWidget, left, top, width, height: Int) `{
+ gtk_grid_attach(recv, child, left, top, width, height);
`}
# Get the child of the Grid at the given position
- fun get_child_at( left : Int, top : Int ): GtkWidget is extern `{
- return gtk_grid_get_child_at( recv, left, top );
+ fun get_child_at(left: Int, top: Int): GtkWidget `{
+ return gtk_grid_get_child_at(recv, left, top);
`}
# Insert a row at the specified position
- fun insert_row( position :Int ) is extern `{
- gtk_grid_insert_row( recv, position );
+ fun insert_row(position:Int) `{
+ gtk_grid_insert_row(recv, position);
`}
# Insert a column at the specified position
- fun insert_column( position : Int ) is extern `{
- gtk_grid_insert_column( recv, position );
+ fun insert_column(position: Int) `{
+ gtk_grid_insert_column(recv, position);
+ `}
+end
+
+# A widget that can switch orientation
+extern class GtkOrientable `{GtkOrientable *`}
+ super GtkWidget
+
+ # Get the orientation of this widget
+ fun orientation: GtkOrientation `{
+ return gtk_orientable_get_orientation(recv);
+ `}
+
+ # Set the orientation of this widget
+ fun orientation=(orientation: GtkOrientation) `{
+ gtk_orientable_set_orientation(recv, orientation);
`}
end
# A container box
#
-# @https://developer.gnome.org/gtk3/3.4/GtkBox.html
+# See: https://developer.gnome.org/gtk3/3.4/GtkBox.html
extern class GtkBox `{ GtkBox * `}
super GtkContainer
+ super GtkOrientable
+
+ # Create a new `GtkBox` with the given `orientation` and `spacing` between its children
+ new (orientation: GtkOrientation, spacing: Int) `{
+ return (GtkBox *)gtk_box_new(orientation, spacing);
+ `}
+
+ # Give the children of `self` equal space in the box?
+ fun omogeneous: Bool `{ return gtk_box_get_homogeneous(recv); `}
+
+ # Give the children of `self` equal space in the box?
+ fun omogeneous=(omogeneous: Bool) `{
+ gtk_box_set_homogeneous(recv, omogeneous);
+ `}
+
+ # Add `child` and pack it at the start of the box
+ fun pack_start(child: GtkWidget, expand, fill: Bool, padding: Int) `{
+ gtk_box_pack_start(recv, child, expand, fill, padding);
+ `}
+
+ # Add `child` and pack it at the end of the box
+ fun pack_end(child: GtkWidget, expand, fill: Bool, padding: Int) `{
+ gtk_box_pack_end(recv, child, expand, fill, padding);
+ `}
+
+ # Set the way `child` is packed in `self`
+ fun set_child_packing(child: GtkWidget, expand, fill: Bool, padding: Int, packing: GtkPackType) `{
+ gtk_box_set_child_packing(recv, child, expand, fill, padding, packing);
+ `}
end
-#The tree interface used by GtkTreeView
-#@https://developer.gnome.org/gtk3/stable/GtkTreeModel.html
+# The tree interface used by GtkTreeView
+# See: https://developer.gnome.org/gtk3/stable/GtkTreeModel.html
extern class GtkTreeModel `{GtkTreeModel *`}
end
-#An abstract class for laying out GtkCellRenderers
-#@https://developer.gnome.org/gtk3/stable/GtkCellArea.html
+# An abstract class for laying out GtkCellRenderers
+# See: https://developer.gnome.org/gtk3/stable/GtkCellArea.html
extern class GtkCellArea `{GtkCellArea *`}
end
-#Base class for widgets with alignments and padding
-#@https://developer.gnome.org/gtk3/3.2/GtkMisc.html
+# Base class for widgets with alignments and padding
+# See: https://developer.gnome.org/gtk3/3.2/GtkMisc.html
extern class GtkMisc `{GtkMisc *`}
super GtkWidget
- fun alignment : GtkAlignment is abstract
+ fun alignment: GtkAlignment is abstract
- fun alignment=( x : Float, y : Float ) is extern `{
- gtk_misc_set_alignment( recv, x, y );
+ fun alignment=(x: Float, y: Float) `{
+ gtk_misc_set_alignment(recv, x, y);
`}
- fun padding : GtkAlignment is abstract
+ fun padding: GtkAlignment is abstract
- fun padding=( x : Float, y : Float ) is extern `{
- gtk_misc_set_padding( recv, x, y );
+ fun padding=(x: Float, y: Float) `{
+ gtk_misc_set_padding(recv, x, y);
`}
end
-#A single line text entry field
-#@https://developer.gnome.org/gtk3/3.2/GtkEntry.html
+# A single line text entry field
+# See: https://developer.gnome.org/gtk3/3.2/GtkEntry.html
extern class GtkEntry `{GtkEntry *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkEntry *)gtk_entry_new();
`}
- fun text : String is extern import NativeString.to_s_with_copy `{
- return NativeString_to_s_with_copy( (char *)gtk_entry_get_text( recv ) );
+ fun text: String import NativeString.to_s_with_copy `{
+ return NativeString_to_s_with_copy((char *)gtk_entry_get_text(recv));
`}
- fun text=( value : String) is extern import String.to_cstring`{
- gtk_entry_set_text( recv, String_to_cstring( value ) );
+ fun text=(value: String) import String.to_cstring `{
+ gtk_entry_set_text(recv, String_to_cstring(value));
`}
# Is the text visible or is it the invisible char (such as '*')?
- fun visiblility: Bool is extern `{
- return gtk_entry_get_visibility( recv );
+ fun visiblility: Bool `{
+ return gtk_entry_get_visibility(recv);
`}
# Set the text visiblility
# If false, will use the invisible char (such as '*')
- fun visibility=( is_visible : Bool) is extern `{
- gtk_entry_set_visibility( recv, is_visible );
+ fun visibility=(is_visible: Bool) `{
+ gtk_entry_set_visibility(recv, is_visible);
`}
- fun max_length : Int is extern `{
- return gtk_entry_get_max_length( recv );
+ fun max_length: Int `{
+ return gtk_entry_get_max_length(recv);
`}
- fun max_length=( max : Int) is extern `{
- gtk_entry_set_max_length( recv, max );
+ fun max_length=(max: Int) `{
+ gtk_entry_set_max_length(recv, max);
`}
end
-#Base class for widgets which visualize an adjustment
-#@https://developer.gnome.org/gtk3/3.2/GtkRange.html
+# Base class for widgets which visualize an adjustment
+# See: https://developer.gnome.org/gtk3/3.2/GtkRange.html
extern class GtkRange `{GtkRange *`}
super GtkWidget
- #Gets the current position of the fill level indicator.
- fun fill_level : Float is extern `{
- return gtk_range_get_fill_level( recv );
+ # Gets the current position of the fill level indicator.
+ fun fill_level: Float `{
+ return gtk_range_get_fill_level(recv);
`}
- fun fill_level=( level : Float ) is extern `{
- gtk_range_set_fill_level( recv, level );
+ fun fill_level=(level: Float) `{
+ gtk_range_set_fill_level(recv, level);
`}
- #Gets whether the range is restricted to the fill level.
- fun restricted_to_fill_level : Bool is extern `{
- return gtk_range_get_restrict_to_fill_level( recv );
+ # Gets whether the range is restricted to the fill level.
+ fun restricted_to_fill_level: Bool `{
+ return gtk_range_get_restrict_to_fill_level(recv);
`}
- fun restricted_to_fill_level=( restricted : Bool ) is extern `{
- gtk_range_set_restrict_to_fill_level( recv, restricted );
+ fun restricted_to_fill_level=(restricted: Bool) `{
+ gtk_range_set_restrict_to_fill_level(recv, restricted);
`}
- #Gets whether the range displays the fill level graphically.
- fun show_fill_level : Bool is extern `{
- return gtk_range_get_show_fill_level( recv );
+ # Gets whether the range displays the fill level graphically.
+ fun show_fill_level: Bool `{
+ return gtk_range_get_show_fill_level(recv);
`}
- fun show_fill_level=( is_displayed : Bool ) is extern `{
- gtk_range_set_show_fill_level( recv, is_displayed );
+ fun show_fill_level=(is_displayed: Bool) `{
+ gtk_range_set_show_fill_level(recv, is_displayed);
`}
- fun adjustment : GtkAdjustment is extern `{
- return gtk_range_get_adjustment( recv );
+ fun adjustment: GtkAdjustment `{
+ return gtk_range_get_adjustment(recv);
`}
- fun adjustment=( value : GtkAdjustment ) is extern `{
- gtk_range_set_adjustment( recv, value );
+ fun adjustment=(value: GtkAdjustment) `{
+ gtk_range_set_adjustment(recv, value);
`}
- fun inverted : Bool is extern `{
- return gtk_range_get_inverted( recv );
+ fun inverted: Bool `{
+ return gtk_range_get_inverted(recv);
`}
- fun inverted=( setting : Bool ) is extern `{
- gtk_range_set_inverted( recv, setting );
+ fun inverted=(setting: Bool) `{
+ gtk_range_set_inverted(recv, setting);
`}
- fun value : Float is extern `{
- return gtk_range_get_value( recv );
+ fun value: Float `{
+ return gtk_range_get_value(recv);
`}
- fun value=( val : Float ) is extern `{
- gtk_range_set_value( recv, val );
+ fun value=(val: Float) `{
+ gtk_range_set_value(recv, val);
`}
- fun set_increments( step : Float, page : Float ) is extern `{
- gtk_range_set_increments( recv, step, page );
+ fun set_increments(step: Float, page: Float) `{
+ gtk_range_set_increments(recv, step, page);
`}
- fun set_range( min : Float, max : Float ) is extern `{
- gtk_range_set_range( recv, min, max );
+ fun set_range(min: Float, max: Float) `{
+ gtk_range_set_range(recv, min, max);
`}
- fun round_digits : Int is extern `{
- return gtk_range_get_round_digits( recv );
+ fun round_digits: Int `{
+ return gtk_range_get_round_digits(recv);
`}
- fun round_digits=( nb : Int ) is extern `{
- gtk_range_set_round_digits( recv, nb );
+ fun round_digits=(nb: Int) `{
+ gtk_range_set_round_digits(recv, nb);
`}
- fun size_fixed : Bool is extern `{
- return gtk_range_get_slider_size_fixed( recv );
+ fun size_fixed: Bool `{
+ return gtk_range_get_slider_size_fixed(recv);
`}
- fun size_fixed=( is_fixed : Bool ) is extern `{
- return gtk_range_set_slider_size_fixed( recv, is_fixed );
+ fun size_fixed=(is_fixed: Bool) `{
+ return gtk_range_set_slider_size_fixed(recv, is_fixed);
`}
- fun flippable : Bool is extern `{
- return gtk_range_get_flippable( recv );
+ fun flippable: Bool `{
+ return gtk_range_get_flippable(recv);
`}
- fun min_size=( is_flippable : Bool ) is extern `{
- return gtk_range_set_flippable( recv, is_flippable );
+ fun min_size=(is_flippable: Bool) `{
+ return gtk_range_set_flippable(recv, is_flippable);
`}
- fun min_slider_size : Int is extern `{
- return gtk_range_get_min_slider_size( recv );
+ fun min_slider_size: Int `{
+ return gtk_range_get_min_slider_size(recv);
`}
- fun min_slider_size=( size : Int ) is extern `{
- return gtk_range_set_min_slider_size( recv, size );
+ fun min_slider_size=(size: Int) `{
+ return gtk_range_set_min_slider_size(recv, size);
`}
end
-#A slider widget for selecting a value from a range
-#@https://developer.gnome.org/gtk3/3.2/GtkScale.html
+# A slider widget for selecting a value from a range
+# See: https://developer.gnome.org/gtk3/3.2/GtkScale.html
extern class GtkScale `{GtkScale *`}
super GtkRange
- new ( orientation : GtkOrientation, adjustment : GtkAdjustment ) is extern `{
- return (GtkScale *)gtk_scale_new( orientation, adjustment );
+ new (orientation: GtkOrientation, adjustment: GtkAdjustment) `{
+ return (GtkScale *)gtk_scale_new(orientation, adjustment);
`}
- new with_range ( orientation : GtkOrientation, min : Float, max : Float, step : Float ) is extern `{
- return (GtkScale *)gtk_scale_new_with_range( orientation, min, max, step );
+ new with_range (orientation: GtkOrientation, min: Float, max: Float, step: Float) `{
+ return (GtkScale *)gtk_scale_new_with_range(orientation, min, max, step);
`}
- fun digits : Int is extern `{
- return gtk_scale_get_digits( recv );
+ fun digits: Int `{
+ return gtk_scale_get_digits(recv);
`}
- fun digits=( nb_digits : Int ) is extern `{
- gtk_scale_set_digits( recv, nb_digits );
+ fun digits=(nb_digits: Int) `{
+ gtk_scale_set_digits(recv, nb_digits);
`}
- fun draw_value : Bool is extern `{
- return gtk_scale_get_draw_value( recv );
+ fun draw_value: Bool `{
+ return gtk_scale_get_draw_value(recv);
`}
- fun draw_value=( is_displayed : Bool ) is extern `{
- gtk_scale_set_draw_value( recv, is_displayed );
+ fun draw_value=(is_displayed: Bool) `{
+ gtk_scale_set_draw_value(recv, is_displayed);
`}
- fun value_position : GtkPositionType is extern `{
- return gtk_scale_get_value_pos( recv );
+ fun value_position: GtkPositionType `{
+ return gtk_scale_get_value_pos(recv);
`}
- fun value_position=( pos : GtkPositionType ) is extern `{
- gtk_scale_set_value_pos( recv, pos );
+ fun value_position=(pos: GtkPositionType) `{
+ gtk_scale_set_value_pos(recv, pos);
`}
- fun has_origin : Bool is extern `{
- return gtk_scale_get_has_origin( recv );
+ fun has_origin: Bool `{
+ return gtk_scale_get_has_origin(recv);
`}
- fun has_origin=( orig : Bool ) is extern `{
- gtk_scale_set_has_origin( recv, orig );
+ fun has_origin=(orig: Bool) `{
+ gtk_scale_set_has_origin(recv, orig);
`}
- fun add_mark( value : Float, position : GtkPositionType, markup : String ) is extern import String.to_cstring`{
- gtk_scale_add_mark( recv, value, position, String_to_cstring( markup ) );
+ fun add_mark(value: Float, position: GtkPositionType, markup: String)
+ import String.to_cstring `{
+ gtk_scale_add_mark(recv, value, position, String_to_cstring(markup));
`}
- #Removes any marks that have been added with gtk_scale_add_mark().
- fun clear_marks is extern `{
- gtk_scale_clear_marks( recv );
+ # Removes any marks that have been added with gtk_scale_add_mark().
+ fun clear_marks `{
+ gtk_scale_clear_marks(recv);
`}
-
- #get layout
- #get layout offsets
-
end
-#A scrollbar
-#@https://developer.gnome.org/gtk3/3.2/GtkScrollbar.html
+# A scrollbar
+# See: https://developer.gnome.org/gtk3/3.2/GtkScrollbar.html
extern class GtkScrollbar `{GtkScrollbar *`}
super GtkRange
- new ( orientation : GtkOrientation, adjustment : GtkAdjustment ) is extern `{
- return (GtkScrollbar *)gtk_scrollbar_new( orientation, adjustment );
+ new (orientation: GtkOrientation, adjustment: GtkAdjustment) `{
+ return (GtkScrollbar *)gtk_scrollbar_new(orientation, adjustment);
`}
end
-#A widget that displays a small to medium amount of text
-#@https://developer.gnome.org/gtk3/3.2/GtkLabel.html
+# A widget that displays a small to medium amount of text
+# See: https://developer.gnome.org/gtk3/3.2/GtkLabel.html
extern class GtkLabel `{GtkLabel *`}
super GtkMisc
# Create a GtkLabel with text
- new ( text : String ) is extern import String.to_cstring `{
- return (GtkLabel*)gtk_label_new( String_to_cstring( text ) );
+ new (text: String) import String.to_cstring `{
+ return (GtkLabel*)gtk_label_new(String_to_cstring(text));
`}
# Set the text of the label
- fun text=( text : String ) import String.to_cstring `{
- gtk_label_set_text( recv, String_to_cstring( text ) );
+ fun text=(text: String) import String.to_cstring `{
+ gtk_label_set_text(recv, String_to_cstring(text));
`}
# Returns the text of the label
- fun text : String import NativeString.to_s `{
- return NativeString_to_s( (char*)gtk_label_get_text( recv ) );
+ fun text: String import NativeString.to_s `{
+ return NativeString_to_s((char*)gtk_label_get_text(recv));
`}
# Sets the angle of rotation for the label.
# An angle of 90 reads from from bottom to top, an angle of 270, from top to bottom.
- fun angle=( degre : Float ) `{
- gtk_label_set_angle( recv, degre );
+ fun angle=(degre: Float) `{
+ gtk_label_set_angle(recv, degre);
`}
# Returns the angle of rotation for the label.
- fun angle : Float `{
- return gtk_label_get_angle( recv );
+ fun angle: Float `{
+ return gtk_label_get_angle(recv);
`}
end
-#A widget displaying an image
-#@https://developer.gnome.org/gtk3/3.2/GtkImage.html
+# A widget displaying an image
+# See: https://developer.gnome.org/gtk3/3.2/GtkImage.html
extern class GtkImage `{GtkImage *`}
super GtkMisc
# Create a GtkImage
- new is extern `{
- return (GtkImage*)gtk_image_new( );
+ new `{
+ return (GtkImage*)gtk_image_new();
`}
# Create a GtkImage with text
- new file( filename : String ) is extern import String.to_cstring `{
- return (GtkImage*)gtk_image_new_from_file( String_to_cstring( filename ) );
+ new file(filename: String) import String.to_cstring `{
+ return (GtkImage*)gtk_image_new_from_file(String_to_cstring(filename));
`}
- fun pixel_size : Int is extern `{
- return gtk_image_get_pixel_size( recv );
+ fun pixel_size: Int `{
+ return gtk_image_get_pixel_size(recv);
`}
- fun pixel_size=( size : Int) is extern `{
- gtk_image_set_pixel_size( recv, size );
+ fun pixel_size=(size: Int) `{
+ gtk_image_set_pixel_size(recv, size);
`}
- fun clear is extern `{
- gtk_image_clear( recv );
+ fun clear `{
+ gtk_image_clear(recv);
`}
end
-#enum GtkImageType
-#Describes the image data representation used by a GtkImage.
-#@https://developer.gnome.org/gtk3/3.2/GtkImage.html#GtkImageType
+# enum GtkImageType
+# Describes the image data representation used by a GtkImage.
+# See: https://developer.gnome.org/gtk3/3.2/GtkImage.html#GtkImageType
extern class GtkImageType `{GtkImageType`}
# There is no image displayed by the widget.
new empty `{ return GTK_IMAGE_EMPTY; `}
new gicon `{ return GTK_IMAGE_GICON; `}
end
-#Displays an arrow
-#@https://developer.gnome.org/gtk3/3.2/GtkArrow.html
+# Displays an arrow
+# See: https://developer.gnome.org/gtk3/3.2/GtkArrow.html
extern class GtkArrow `{GtkArrow *`}
super GtkMisc
- new ( arrow_type : GtkArrowType, shadow_type : GtkShadowType ) is extern `{
- return (GtkArrow *)gtk_arrow_new( arrow_type, shadow_type );
+ new (arrow_type: GtkArrowType, shadow_type: GtkShadowType) `{
+ return (GtkArrow *)gtk_arrow_new(arrow_type, shadow_type);
`}
- fun set( arrow_type : GtkArrowType, shadow_type : GtkShadowType ) is extern `{
- gtk_arrow_set( recv, arrow_type, shadow_type );
+ fun set(arrow_type: GtkArrowType, shadow_type: GtkShadowType) `{
+ gtk_arrow_set(recv, arrow_type, shadow_type);
`}
end
-#A widget that emits a signal when clicked on
-#@https://developer.gnome.org/gtk3/stable/GtkButton.html
+# A widget that emits a signal when clicked on
+# See: https://developer.gnome.org/gtk3/stable/GtkButton.html
extern class GtkButton `{GtkButton *`}
super GtkBin
- new is extern `{
- return (GtkButton *)gtk_button_new( );
+ new `{
+ return (GtkButton *)gtk_button_new();
`}
- #Create a GtkButton with text
- new with_label( text : String ) is extern import String.to_cstring `{
- return (GtkButton *)gtk_button_new_with_label( String_to_cstring( text ) );
+ # Create a GtkButton with text
+ new with_label(text: String) import String.to_cstring `{
+ return (GtkButton *)gtk_button_new_with_label(String_to_cstring(text));
`}
- new from_stock( stock_id : String ) is extern import String.to_cstring `{
- return (GtkButton *)gtk_button_new_from_stock( String_to_cstring( stock_id ) );
+ new from_stock(stock_id: String) import String.to_cstring `{
+ return (GtkButton *)gtk_button_new_from_stock(String_to_cstring(stock_id));
`}
- fun text : String is extern `{
- return NativeString_to_s( (char *)gtk_button_get_label( recv ) );
+ fun text: String `{
+ return NativeString_to_s((char *)gtk_button_get_label(recv));
`}
- fun text=( value : String ) is extern import String.to_cstring`{
- gtk_button_set_label( recv, String_to_cstring( value ) );
+ fun text=(value: String) import String.to_cstring `{
+ gtk_button_set_label(recv, String_to_cstring(value));
`}
- fun on_click( to_call : GtkCallable, user_data : nullable Object ) do
- signal_connect( "clicked", to_call, user_data )
+ fun on_click(to_call: GtkCallable, user_data: nullable Object) do
+ signal_connect("clicked", to_call, user_data)
end
end
-#A button which pops up a scale
-#@https://developer.gnome.org/gtk3/stable/GtkScaleButton.html
+# A button which pops up a scale
+# See: https://developer.gnome.org/gtk3/stable/GtkScaleButton.html
extern class GtkScaleButton `{GtkScaleButton *`}
super GtkButton
- #const gchar **icons
- new( size: GtkIconSize, min: Float, max: Float, step: Float ) is extern `{
- return (GtkScaleButton *)gtk_scale_button_new( size, min, max, step, (const char **)0 );
+ # const gchar **icons
+ new(size: GtkIconSize, min: Float, max: Float, step: Float) `{
+ return (GtkScaleButton *)gtk_scale_button_new(size, min, max, step, (const char **)0);
`}
end
-#Create buttons bound to a URL
-#@https://developer.gnome.org/gtk3/stable/GtkLinkButton.html
+# Create buttons bound to a URL
+# See: https://developer.gnome.org/gtk3/stable/GtkLinkButton.html
extern class GtkLinkButton `{GtkLinkButton *`}
super GtkButton
- new( uri: String ) is extern import String.to_cstring `{
- return (GtkLinkButton *)gtk_link_button_new( String_to_cstring(uri) );
+ new(uri: String) import String.to_cstring `{
+ return (GtkLinkButton *)gtk_link_button_new(String_to_cstring(uri));
`}
end
-#A container which can hide its child
-#https://developer.gnome.org/gtk3/stable/GtkExpander.html
+# A container which can hide its child
+# https://developer.gnome.org/gtk3/stable/GtkExpander.html
extern class GtkExpander `{GtkExpander *`}
super GtkBin
- new( lbl : String) is extern import String.to_cstring`{
- return (GtkExpander *)gtk_expander_new( String_to_cstring( lbl ) );
+ new(lbl: String) import String.to_cstring `{
+ return (GtkExpander *)gtk_expander_new(String_to_cstring(lbl));
`}
- new with_mnemonic( lbl : String) is extern import String.to_cstring`{
- return (GtkExpander *)gtk_expander_new_with_mnemonic(String_to_cstring( lbl ));
+ new with_mnemonic(lbl: String) import String.to_cstring `{
+ return (GtkExpander *)gtk_expander_new_with_mnemonic(String_to_cstring(lbl));
`}
- fun expanded : Bool is extern `{
- return gtk_expander_get_expanded( recv );
+ fun expanded: Bool `{
+ return gtk_expander_get_expanded(recv);
`}
- fun expanded=( is_expanded : Bool ) is extern `{
- gtk_expander_set_expanded( recv, is_expanded );
+ fun expanded=(is_expanded: Bool) `{
+ gtk_expander_set_expanded(recv, is_expanded);
`}
- fun spacing : Int is extern `{
- return gtk_expander_get_spacing( recv );
+ fun spacing: Int `{
+ return gtk_expander_get_spacing(recv);
`}
- fun spacing=( pixels : Int ) is extern `{
- gtk_expander_set_spacing( recv, pixels );
+ fun spacing=(pixels: Int) `{
+ gtk_expander_set_spacing(recv, pixels);
`}
- fun label_text : String is extern `{
- return NativeString_to_s( (char *)gtk_expander_get_label( recv ) );
+ fun label_text: String `{
+ return NativeString_to_s((char *)gtk_expander_get_label(recv));
`}
- fun label_text=( lbl : String ) is extern import String.to_cstring`{
- gtk_expander_set_label( recv, String_to_cstring( lbl ) );
+ fun label_text=(lbl: String) import String.to_cstring `{
+ gtk_expander_set_label(recv, String_to_cstring(lbl));
`}
- fun use_underline : Bool is extern `{
- return gtk_expander_get_use_underline( recv );
+ fun use_underline: Bool `{
+ return gtk_expander_get_use_underline(recv);
`}
- fun use_underline=( used : Bool) is extern `{
- gtk_expander_set_use_underline( recv, used );
+ fun use_underline=(used: Bool) `{
+ gtk_expander_set_use_underline(recv, used);
`}
- fun use_markup : Bool is extern `{
- return gtk_expander_get_use_markup( recv );
+ fun use_markup: Bool `{
+ return gtk_expander_get_use_markup(recv);
`}
- fun use_markup=( used : Bool) is extern `{
- gtk_expander_set_use_markup( recv, used );
+ fun use_markup=(used: Bool) `{
+ gtk_expander_set_use_markup(recv, used);
`}
- fun label_widget : GtkWidget is extern `{
- return gtk_expander_get_label_widget( recv );
+ fun label_widget: GtkWidget `{
+ return gtk_expander_get_label_widget(recv);
`}
- fun label_widget=( widget : GtkWidget ) is extern `{
- gtk_expander_set_label_widget( recv, widget );
+ fun label_widget=(widget: GtkWidget) `{
+ gtk_expander_set_label_widget(recv, widget);
`}
- fun label_fill : Bool is extern `{
- return gtk_expander_get_label_fill( recv );
+ fun label_fill: Bool `{
+ return gtk_expander_get_label_fill(recv);
`}
- fun label_fill=( fill : Bool ) is extern `{
- gtk_expander_set_label_fill( recv, fill );
+ fun label_fill=(fill: Bool) `{
+ gtk_expander_set_label_fill(recv, fill);
`}
- fun resize_toplevel : Bool is extern `{
- return gtk_expander_get_resize_toplevel( recv );
+ fun resize_toplevel: Bool `{
+ return gtk_expander_get_resize_toplevel(recv);
`}
- fun resize_toplevel=( resize : Bool ) is extern `{
- gtk_expander_set_resize_toplevel( recv, resize );
+ fun resize_toplevel=(resize: Bool) `{
+ gtk_expander_set_resize_toplevel(recv, resize);
`}
end
-#An abstract class for laying out GtkCellRenderers
-#@https://developer.gnome.org/gtk3/stable/GtkCellArea.html
+# An abstract class for laying out GtkCellRenderers
+# See: https://developer.gnome.org/gtk3/stable/GtkCellArea.html
extern class GtkComboBox `{GtkComboBox *`}
super GtkBin
- new is extern `{
- return (GtkComboBox *)gtk_combo_box_new( );
+ new `{
+ return (GtkComboBox *)gtk_combo_box_new();
`}
- new with_entry is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_entry( );
+ new with_entry `{
+ return (GtkComboBox *)gtk_combo_box_new_with_entry();
`}
- new with_model( model : GtkTreeModel ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_model( model );
+ new with_model(model: GtkTreeModel) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_model(model);
`}
- new with_model_and_entry( model : GtkTreeModel ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_model_and_entry( model );
+ new with_model_and_entry(model: GtkTreeModel) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_model_and_entry(model);
`}
- new with_area( area : GtkCellArea ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_area( area );
+ new with_area(area: GtkCellArea) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_area(area);
`}
- new with_area_and_entry( area : GtkCellArea ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_area_and_entry( area );
+ new with_area_and_entry(area: GtkCellArea) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_area_and_entry(area);
`}
- fun wrap_width : Int is extern `{
- return gtk_combo_box_get_wrap_width( recv );
+ fun wrap_width: Int `{
+ return gtk_combo_box_get_wrap_width(recv);
`}
- fun wrap_width=( width : Int ) is extern `{
- gtk_combo_box_set_wrap_width( recv, width );
+ fun wrap_width=(width: Int) `{
+ gtk_combo_box_set_wrap_width(recv, width);
`}
- fun row_span_col : Int is extern `{
- return gtk_combo_box_get_row_span_column( recv );
+ fun row_span_col: Int `{
+ return gtk_combo_box_get_row_span_column(recv);
`}
- fun row_span_col=( row_span : Int ) is extern `{
- gtk_combo_box_set_row_span_column( recv, row_span );
+ fun row_span_col=(row_span: Int) `{
+ gtk_combo_box_set_row_span_column(recv, row_span);
`}
- fun col_span_col : Int is extern `{
- return gtk_combo_box_get_column_span_column( recv );
+ fun col_span_col: Int `{
+ return gtk_combo_box_get_column_span_column(recv);
`}
- fun col_span_col=( col_span : Int ) is extern `{
- gtk_combo_box_set_column_span_column( recv, col_span );
+ fun col_span_col=(col_span: Int) `{
+ gtk_combo_box_set_column_span_column(recv, col_span);
`}
- fun active_item : Int is extern `{
- return gtk_combo_box_get_active( recv );
+ fun active_item: Int `{
+ return gtk_combo_box_get_active(recv);
`}
- fun active_item=( active : Int ) is extern `{
- gtk_combo_box_set_active( recv, active );
+ fun active_item=(active: Int) `{
+ gtk_combo_box_set_active(recv, active);
`}
- #fun active_iter : GtkTreeIter is extern `{
- #`}
- #
- #fun active_iter=( active : Bool ) is extern `{
- #`}
-
- fun column_id : Int is extern `{
- return gtk_combo_box_get_id_column( recv );
+ fun column_id: Int `{
+ return gtk_combo_box_get_id_column(recv);
`}
- fun column_id=( id_column : Int ) is extern `{
- gtk_combo_box_set_id_column( recv, id_column );
+ fun column_id=(id_column: Int) `{
+ gtk_combo_box_set_id_column(recv, id_column);
`}
- fun active_id : String is extern `{
- return NativeString_to_s( (char *)gtk_combo_box_get_active_id( recv ) );
+ fun active_id: String `{
+ return NativeString_to_s((char *)gtk_combo_box_get_active_id(recv));
`}
- fun active_id=( id_active : String ) is extern import String.to_cstring`{
- gtk_combo_box_set_active_id( recv, String_to_cstring( id_active ) );
+ fun active_id=(id_active: String) import String.to_cstring `{
+ gtk_combo_box_set_active_id(recv, String_to_cstring(id_active));
`}
- fun model : GtkTreeModel is extern `{
- return gtk_combo_box_get_model( recv );
+ fun model: GtkTreeModel `{
+ return gtk_combo_box_get_model(recv);
`}
- fun model=( model : GtkTreeModel ) is extern `{
- gtk_combo_box_set_model( recv, model );
+ fun model=(model: GtkTreeModel) `{
+ gtk_combo_box_set_model(recv, model);
`}
- fun popup is extern `{
- gtk_combo_box_popup( recv );
+ fun popup `{
+ gtk_combo_box_popup(recv);
`}
- fun popdown is extern `{
- gtk_combo_box_popdown( recv );
+ fun popdown `{
+ gtk_combo_box_popdown(recv);
`}
- fun title : String is extern`{
- return NativeString_to_s( (char *)gtk_combo_box_get_title( recv ) );
+ fun title: String `{
+ return NativeString_to_s((char *)gtk_combo_box_get_title(recv));
`}
- fun title=( t : String ) is extern import String.to_cstring `{
- gtk_combo_box_set_title( recv, String_to_cstring( t ) );
+ fun title=(t: String) import String.to_cstring `{
+ gtk_combo_box_set_title(recv, String_to_cstring(t));
`}
- fun has_entry : Bool is extern `{
- return gtk_combo_box_get_has_entry( recv );
+ fun has_entry: Bool `{
+ return gtk_combo_box_get_has_entry(recv);
`}
- fun with_fixed : Bool is extern `{
- return gtk_combo_box_get_popup_fixed_width( recv );
+ fun with_fixed: Bool `{
+ return gtk_combo_box_get_popup_fixed_width(recv);
`}
- fun with_fixed=( fixed : Bool ) is extern `{
- gtk_combo_box_set_popup_fixed_width( recv, fixed );
+ fun with_fixed=(fixed: Bool) `{
+ gtk_combo_box_set_popup_fixed_width(recv, fixed);
`}
end
-#Show a spinner animation
-#@https://developer.gnome.org/gtk3/3.2/GtkSpinner.html
+# Show a spinner animation
+# See: https://developer.gnome.org/gtk3/3.2/GtkSpinner.html
extern class GtkSpinner `{GtkSpinner *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkSpinner *)gtk_spinner_new();
`}
- fun start is extern `{
- return gtk_spinner_start( recv );
+ fun start `{
+ return gtk_spinner_start(recv);
`}
- fun stop is extern `{
- return gtk_spinner_stop( recv );
+ fun stop `{
+ return gtk_spinner_stop(recv);
`}
end
-#A "light switch" style toggle
-#@https://developer.gnome.org/gtk3/3.2/GtkSwitch.html
+# A "light switch" style toggle
+# See: https://developer.gnome.org/gtk3/3.2/GtkSwitch.html
extern class GtkSwitch `{GtkSwitch *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkSwitch *)gtk_switch_new();
`}
- fun active : Bool is extern `{
- return gtk_switch_get_active( recv );
+ fun active: Bool `{
+ return gtk_switch_get_active(recv);
`}
- fun active=( is_active : Bool ) is extern `{
- return gtk_switch_set_active( recv, is_active );
+ fun active=(is_active: Bool) `{
+ return gtk_switch_set_active(recv, is_active);
`}
end
-
-#A widget which controls the alignment and size of its child
-#https://developer.gnome.org/gtk3/stable/GtkAlignment.html
+# A widget which controls the alignment and size of its child
+# https://developer.gnome.org/gtk3/stable/GtkAlignment.html
extern class GtkAlignment `{GtkAlignment *`}
super GtkBin
- new ( xalign : Float, yalign : Float, xscale : Float, yscale : Float ) is extern `{
- return (GtkAlignment *)gtk_alignment_new( xalign, yalign, xscale, yscale );
+ new (xalign: Float, yalign: Float, xscale: Float, yscale: Float) `{
+ return (GtkAlignment *)gtk_alignment_new(xalign, yalign, xscale, yscale);
`}
- fun set ( xalign : Float, yalign : Float, xscale : Float, yscale : Float ) is extern `{
- gtk_alignment_set( recv, xalign, yalign, xscale, yscale );
+ fun set (xalign: Float, yalign: Float, xscale: Float, yscale: Float) `{
+ gtk_alignment_set(recv, xalign, yalign, xscale, yscale);
`}
- #get_padding
- #set_padding
end
-#A representation of an adjustable bounded value
-#@https://developer.gnome.org/gtk3/stable/GtkAdjustment.html#GtkAdjustment.description
+# A representation of an adjustable bounded value
+# See: https://developer.gnome.org/gtk3/stable/GtkAdjustment.html#GtkAdjustment.description
extern class GtkAdjustment `{GtkAdjustment *`}
-
end
extern class GdkColor `{GdkColor*`}
- new is extern `{
- GdkColor * col = malloc(sizeof(GdkColor));
- /*gdk_color_parse( "red", recv );*/
- gdk_color_parse( "red", col);
- return col;
+ new (color_name: String) import String.to_cstring `{
+ GdkColor *color = malloc(sizeof(GdkColor));
+ gdk_color_parse(String_to_cstring(color_name), color);
+ return color;
`}
end
extern class GdkRGBA `{GdkRGBA*`}
- new is extern `{
- `}
end
#include <gtk/gtk.h>
`}
-#Create popup windows
-#@https://developer.gnome.org/gtk3/stable/GtkDialog.html
+# Create popup windows
+# See: https://developer.gnome.org/gtk3/stable/GtkDialog.html
extern class GtkDialog `{GtkDialog *`}
super GtkWindow
- new is extern `{
- return (GtkDialog *)gtk_dialog_new( );
+ new `{
+ return (GtkDialog *)gtk_dialog_new();
`}
- new with_buttons( title : String, parent : GtkWindow, flags : GtkDialogFlags) is extern import String.to_cstring`{
- return (GtkDialog *)gtk_dialog_new_with_buttons( String_to_cstring( title ), parent, flags, "", NULL );
+ new with_buttons(title: String, parent: GtkWindow, flags: GtkDialogFlags)
+ import String.to_cstring `{
+ return (GtkDialog *)gtk_dialog_new_with_buttons(
+ String_to_cstring(title), parent, flags, "", NULL);
`}
- fun run is extern `{
- gtk_dialog_run( recv );
+ fun run `{
+ gtk_dialog_run(recv);
`}
-
end
-#Display information about an application
-#@https://developer.gnome.org/gtk3/stable/GtkAboutDialog.html
+# Display information about an application
+# See: https://developer.gnome.org/gtk3/stable/GtkAboutDialog.html
extern class GtkAboutDialog `{GtkAboutDialog *`}
super GtkDialog
- new is extern `{
- return (GtkAboutDialog *)gtk_about_dialog_new( );
+ new `{
+ return (GtkAboutDialog *)gtk_about_dialog_new();
`}
- fun program_name : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_program_name( recv ) );
+ fun program_name: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_program_name(recv));
`}
- fun program_name=( name : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_program_name( recv, String_to_cstring( name ) );
+ fun program_name=(name: String) import String.to_cstring `{
+ gtk_about_dialog_set_program_name(recv, String_to_cstring(name));
`}
- fun version : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_version( recv ) );
+ fun version: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_version(recv));
`}
- fun version=( v : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_version( recv, String_to_cstring( v ) );
+ fun version=(v: String) import String.to_cstring `{
+ gtk_about_dialog_set_version(recv, String_to_cstring(v));
`}
- fun copyright : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_copyright( recv ) );
+ fun copyright: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_copyright(recv));
`}
- fun copyright=( c : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_copyright( recv, String_to_cstring( c ) );
+ fun copyright=(c: String) import String.to_cstring `{
+ gtk_about_dialog_set_copyright(recv, String_to_cstring(c));
`}
- fun comments : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_comments( recv ) );
+ fun comments: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_comments(recv));
`}
- fun comments=( com : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_comments( recv, String_to_cstring( com ) );
+ fun comments=(com: String) import String.to_cstring `{
+ gtk_about_dialog_set_comments(recv, String_to_cstring(com));
`}
- fun license : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_license( recv ) );
+ fun license: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_license(recv));
`}
- fun license=( li : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_license( recv, String_to_cstring( li ) );
+ fun license=(li: String) import String.to_cstring `{
+ gtk_about_dialog_set_license(recv, String_to_cstring(li));
`}
- #license_type
+ # license_type
- fun website : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_website( recv ) );
+ fun website: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_website(recv));
`}
- fun website=( link : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_website( recv, String_to_cstring( link ) );
+ fun website=(link: String) import String.to_cstring `{
+ gtk_about_dialog_set_website(recv, String_to_cstring(link));
`}
- fun website_label : String import NativeString.to_s `{
- return NativeString_to_s( (char *) gtk_about_dialog_get_website_label( recv ) );
+ fun website_label: String import NativeString.to_s `{
+ return NativeString_to_s((char *) gtk_about_dialog_get_website_label(recv));
`}
- fun website_label=( link_label : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_website_label( recv, String_to_cstring( link_label ) );
+ fun website_label=(link_label: String) import String.to_cstring `{
+ gtk_about_dialog_set_website_label(recv, String_to_cstring(link_label));
`}
- #TODO
- #fun authors : String is extern`{
- # return NativeString_to_s( gtk_about_dialog_get_authors( recv ) );
- #`}
+ # TODO
+ # fun authors: String`{
+ # return NativeString_to_s(gtk_about_dialog_get_authors(recv));
+ # `}
- #TODO
- #fun authors=( authors_list : String ) is extern import String.to_cstring`{
- # gtk_about_dialog_set_authors( recv, String_to_cstring( authors_list ) );
- #`}
+ # TODO
+ # fun authors=(authors_list: String) import String.to_cstring`{
+ # gtk_about_dialog_set_authors(recv, String_to_cstring(authors_list));
+ # `}
- fun show_about_dialog(parent: GtkWindow, params: String) import String.to_cstring `{
+ fun show_about_dialog(parent: GtkWindow, params: String)
+ import String.to_cstring `{
gtk_show_about_dialog(parent, String_to_cstring(params), NULL);
`}
end
-#An application chooser dialog
-#@https://developer.gnome.org/gtk3/stable/GtkAppChooserDialog.html
+# An application chooser dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkAppChooserDialog.html
extern class GtkAppChooserDialog `{GtkAppChooserDialog *`}
super GtkDialog
- #TODO - GFile
- #new ( parent : GtkWindow, flags : GtkDialogFlags, file : GFile ) is extern `{
- # return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new( parent, flags, file );
- #`}
+ # TODO - GFile
+ # new (parent: GtkWindow, flags: GtkDialogFlags, file: GFile) `{
+ # return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new(parent, flags, file);
+ # `}
- new for_content_type ( parent : GtkWindow, flags : GtkDialogFlags, content_type : String ) is extern import String.to_cstring `{
- return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new_for_content_type( parent, flags, String_to_cstring( content_type ) );
+ new for_content_type (parent: GtkWindow, flags: GtkDialogFlags, content_type: String)
+ import String.to_cstring `{
+ return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new_for_content_type(
+ parent, flags, String_to_cstring(content_type));
`}
- fun widget : GtkWidget is extern `{ return gtk_app_chooser_dialog_get_widget( recv ); `}
+ fun widget: GtkWidget `{ return gtk_app_chooser_dialog_get_widget(recv); `}
- fun heading : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_app_chooser_dialog_get_heading( recv ) );
+ fun heading: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_app_chooser_dialog_get_heading(recv));
`}
- fun heading=( text : String ) is extern import String.to_cstring `{
- gtk_app_chooser_dialog_set_heading( recv, String_to_cstring( text ) );
+ fun heading=(text: String) import String.to_cstring `{
+ gtk_app_chooser_dialog_set_heading(recv, String_to_cstring(text));
`}
end
-#A dialog for choosing colors
-#@https://developer.gnome.org/gtk3/stable/GtkColorChooserDialog.html
+# A dialog for choosing colors
+# See: https://developer.gnome.org/gtk3/stable/GtkColorChooserDialog.html
extern class GtkColorChooserDialog `{GtkColorChooserDialog *`}
super GtkDialog
- new ( title : String, parent : GtkWindow ) is extern import String.to_cstring `{
- return (GtkColorChooserDialog *)gtk_color_chooser_dialog_new( String_to_cstring( title ), parent );
+ new (title: String, parent: GtkWindow) import String.to_cstring `{
+ return (GtkColorChooserDialog *)gtk_color_chooser_dialog_new(
+ String_to_cstring(title), parent);
`}
end
-#A file chooser dialog, suitable for "File/Open" or "File/Save" commands
-#@https://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html
+# A file chooser dialog, suitable for "File/Open" or "File/Save" commands
+# See: https://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html
extern class GtkFileChooserDialog `{GtkFileChooserDialog *`}
super GtkDialog
- new ( title : String, parent : GtkWindow, action : GtkFileChooserAction ) is extern import String.to_cstring `{
- return (GtkFileChooserDialog *)gtk_file_chooser_dialog_new( String_to_cstring( title ), parent, action, "", NULL );
+ new (title: String, parent: GtkWindow, action: GtkFileChooserAction)
+ import String.to_cstring `{
+ return (GtkFileChooserDialog *)gtk_file_chooser_dialog_new(
+ String_to_cstring(title), parent, action, "", NULL);
`}
end
-#enum GtkFileChooserAction
-#Describes whether a GtkFileChooser is being used to open existing files or to save to a possibly new file.
-#@https://developer.gnome.org/gtk3/stable/GtkFileChooser.html#GtkFileChooserAction
+# enum GtkFileChooserAction
+#
+# Describes whether a GtkFileChooser is being used to open existing files or to save to a possibly new file.
+# See: https://developer.gnome.org/gtk3/stable/GtkFileChooser.html#GtkFileChooserAction
extern class GtkFileChooserAction `{GtkFileChooserAction`}
- #Indicates open mode. The file chooser will only let the user pick an existing file.
+ # Open file mode
+ #
+ # The file chooser will only let the user pick an existing file.
new open `{ return GTK_FILE_CHOOSER_ACTION_OPEN; `}
- #Indicates save mode. The file chooser will let the user pick an existing file, or type in a new filename.
+ # Save file mode
+ #
+ # The file chooser will let the user pick an existing file, or type in a new filename.
new save `{ return GTK_FILE_CHOOSER_ACTION_SAVE; `}
- #Indicates an Open mode for selecting folders. The file chooser will let the user pick an existing folder.
+ # Select folder mode
+ #
+ # The file chooser will let the user pick an existing folder.
new select_folder `{ return GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; `}
- #Indicates a mode for creating a new folder. The file chooser will let the user name an existing or new folder.
+ # Create a new folder mode
+ #
+ # The file chooser will let the user name an existing or new folder.
new create_folder `{ return GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER; `}
end
-#A dialog for selecting fonts
-#@https://developer.gnome.org/gtk3/stable/GtkFontChooserDialog.html
+# A dialog for selecting fonts
+# See: https://developer.gnome.org/gtk3/stable/GtkFontChooserDialog.html
extern class GtkFontChooserDialog `{GtkFontChooserDialog *`}
super GtkDialog
- new ( title : String, parent : GtkWindow ) is extern `{
- return (GtkFontChooserDialog *)gtk_font_chooser_dialog_new( String_to_cstring( title ), parent );
+ new (title: String, parent: GtkWindow) `{
+ return (GtkFontChooserDialog *)gtk_font_chooser_dialog_new(String_to_cstring(title), parent);
`}
end
-#A convenient message window
-#@https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html
+# A convenient message window
+# See: https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html
extern class GtkMessageDialog `{GtkMessageDialog *`}
super GtkDialog
- new ( parent : GtkWindow, flags : GtkDialogFlags, msg_type : GtkMessageType, btn_type : GtkButtonsType, format : String ) is extern import String.to_cstring `{
- return (GtkMessageDialog *)gtk_message_dialog_new( parent, flags, msg_type, btn_type, String_to_cstring( format ), NULL );
+ new (parent: GtkWindow, flags: GtkDialogFlags, msg_type: GtkMessageType, btn_type: GtkButtonsType, format: String) import String.to_cstring `{
+ return (GtkMessageDialog *)gtk_message_dialog_new(parent, flags, msg_type, btn_type, String_to_cstring(format), NULL);
`}
end
-#enum GtkButtonsType
-#Prebuilt sets of buttons for the dialog. If none of these choices are appropriate, simply use GTK_BUTTONS_NONE then call gtk_dialog_add_buttons().
-#@https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkButtonsType
+# enum GtkButtonsType
+# Prebuilt sets of buttons for the dialog. If none of these choices are appropriate, simply use GTK_BUTTONS_NONE then call gtk_dialog_add_buttons().
+# See: https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkButtonsType
extern class GtkButtonsType `{GtkButtonsType`}
- #No buttons at all
+ # No buttons at all
new none `{ return GTK_BUTTONS_NONE; `}
- #An OK button.
+ # An OK button.
new ok `{ return GTK_BUTTONS_OK; `}
- #A Close button.
+ # A Close button.
new close `{ return GTK_BUTTONS_CLOSE; `}
- #A Cancel button.
+ # A Cancel button.
new cancel `{ return GTK_BUTTONS_CANCEL; `}
- #Yes and No buttons.
+ # Yes and No buttons.
new yes_no `{ return GTK_BUTTONS_YES_NO; `}
- #OK and Cancel buttons.
+ # OK and Cancel buttons.
new ok_cancel `{ return GTK_BUTTONS_OK_CANCEL; `}
end
-#enum GtkMessageType
-#The type of message being displayed in the dialog.
-#@https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkMessageType
+# enum GtkMessageType
+# The type of message being displayed in the dialog.
+# See: https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkMessageType
extern class GtkMessageType `{GtkMessageType`}
- #Informational message
+ # Informational message
new info `{ return GTK_MESSAGE_INFO; `}
- #Non-fatal warning message.
+ # Non-fatal warning message.
new warning `{ return GTK_MESSAGE_WARNING; `}
- #Question requiring a choice.
+ # Question requiring a choice.
new question `{ return GTK_MESSAGE_QUESTION; `}
- #Fatal error message.
+ # Fatal error message.
new error `{ return GTK_MESSAGE_ERROR; `}
- #None of the above, doesn't get an icon.
+ # None of the above, doesn't get an icon.
new other `{ return GTK_MESSAGE_OTHER; `}
end
-#A page setup dialog
-#@https://developer.gnome.org/gtk3/stable/GtkPageSetupUnixDialog.html
-#extern class GtkPageSetupUnixDialog `{GtkPageSetupUnixDialog *`}
+# A page setup dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkPageSetupUnixDialog.html
+# extern class GtkPageSetupUnixDialog `{GtkPageSetupUnixDialog *`}
# super GtkDialog
#
-#end
+# end
-#A print dialog
-#@https://developer.gnome.org/gtk3/stable/GtkPrintUnixDialog.html
-#extern class GtkPrintUnixDialog `{GtkPrintUnixDialog *`}
+# A print dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkPrintUnixDialog.html
+# extern class GtkPrintUnixDialog `{GtkPrintUnixDialog *`}
# super GtkDialog
#
-#end
+# end
-#Displays recently used files in a dialog
-#@https://developer.gnome.org/gtk3/stable/GtkRecentChooserDialog.html
+# Displays recently used files in a dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkRecentChooserDialog.html
extern class GtkRecentChooserDialog `{GtkRecentChooserDialog *`}
super GtkDialog
end
-#enum GtkDialogFlags
-#Flags used to influence dialog construction.
-#@https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkDialogFlags
+# enum GtkDialogFlags
+# Flags used to influence dialog construction.
+# See: https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkDialogFlags
extern class GtkDialogFlags `{GtkDialogFlags`}
- #Make the constructed dialog modal.
+ # Make the constructed dialog modal.
new modal `{ return GTK_DIALOG_MODAL; `}
- #Destroy the dialog when its parent is destroyed.
+ # Destroy the dialog when its parent is destroyed.
new destroy_with_parent `{ return GTK_DIALOG_DESTROY_WITH_PARENT; `}
end
-#enum GtkResponseType
-#Predefined values for use as response ids in gtk_dialog_add_button().
-#@https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkResponseType
+# enum GtkResponseType
+# Predefined values for use as response ids in gtk_dialog_add_button().
+# See: https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkResponseType
extern class GtkResponseType `{GtkResponseType`}
- #Returned if an action widget has no response id, or if the dialog gets programmatically hidden or destroyed.
+ # Returned if an action widget has no response id, or if the dialog gets programmatically hidden or destroyed.
new none `{ return GTK_RESPONSE_NONE; `}
- #Generic response id, not used by GTK+ dialogs.
+ # Generic response id, not used by GTK+ dialogs.
new reject `{ return GTK_RESPONSE_REJECT; `}
- #Generic response id, not used by GTK+ dialogs
+ # Generic response id, not used by GTK+ dialogs
new accept `{ return GTK_RESPONSE_ACCEPT; `}
- #Returned if the dialog is deleted
+ # Returned if the dialog is deleted
new delete_event `{ return GTK_RESPONSE_DELETE_EVENT; `}
- #Returned by OK buttons in GTK+ dialogs.
+ # Returned by OK buttons in GTK+ dialogs.
new ok `{ return GTK_RESPONSE_OK; `}
- #Returned by Cancel buttons in GTK+ dialogs.
+ # Returned by Cancel buttons in GTK+ dialogs.
new cancel `{ return GTK_RESPONSE_CANCEL; `}
- #Returned by OK Close in GTK+ dialogs.
+ # Returned by OK Close in GTK+ dialogs.
new close `{ return GTK_RESPONSE_CLOSE; `}
- #Returned by OK Yes in GTK+ dialogs.
+ # Returned by OK Yes in GTK+ dialogs.
new yes `{ return GTK_RESPONSE_YES; `}
- #Returned by OK No in GTK+ dialogs.
+ # Returned by OK No in GTK+ dialogs.
new no `{ return GTK_RESPONSE_NO; `}
- #Returned by OK Apply in GTK+ dialogs.
+ # Returned by OK Apply in GTK+ dialogs.
new apply `{ return GTK_RESPONSE_APPLY; `}
- #Returned by OK Help in GTK+ dialogs.
+ # Returned by OK Help in GTK+ dialogs.
new help `{ return GTK_RESPONSE_HELP; `}
end
# See the License for the specific language governing permissions and
# limitations under the License.
-module gtk_widgets_ext is pkgconfig("gtk+-3.0")
+module gtk_widgets_ext is pkgconfig "gtk+-3.0"
import gtk_core
-#Displays a calendar and allows the user to select a date
-#@https://developer.gnome.org/gtk3/3.2/GtkCalendar.html
+# Displays a calendar and allows the user to select a date
+# See: https://developer.gnome.org/gtk3/3.2/GtkCalendar.html
extern class GtkCalendar `{GtkCalendar *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkCalendar *)gtk_calendar_new();
`}
- fun month=( month : Int, year : Int ) is extern `{
- gtk_calendar_select_month( recv, month, year );
+ fun month=(month: Int, year: Int) `{
+ gtk_calendar_select_month(recv, month, year);
`}
- fun day=( day : Int ) is extern `{
- gtk_calendar_select_day( recv, day );
+ fun day=(day: Int) `{
+ gtk_calendar_select_day(recv, day);
`}
- fun mark_day( day : Int ) is extern `{
- gtk_calendar_mark_day( recv, day );
+ fun mark_day(day: Int) `{
+ gtk_calendar_mark_day(recv, day);
`}
- fun unmark_day( day : Int ) is extern `{
- gtk_calendar_unmark_day( recv, day );
+ fun unmark_day(day: Int) `{
+ gtk_calendar_unmark_day(recv, day);
`}
- fun is_marked( day : Int ): Bool is extern `{
- return gtk_calendar_get_day_is_marked( recv, day );
+ fun is_marked(day: Int): Bool `{
+ return gtk_calendar_get_day_is_marked(recv, day);
`}
- fun clear_marks is extern `{
- gtk_calendar_clear_marks( recv );
+ fun clear_marks `{
+ gtk_calendar_clear_marks(recv);
`}
- fun display_options : GtkCalendarDisplayOptions is extern `{
- return gtk_calendar_get_display_options( recv );
+ fun display_options: GtkCalendarDisplayOptions `{
+ return gtk_calendar_get_display_options(recv);
`}
- fun display_options=( options : GtkCalendarDisplayOptions) is extern `{
- gtk_calendar_set_display_options( recv, options );
+ fun display_options=(options: GtkCalendarDisplayOptions) `{
+ gtk_calendar_set_display_options(recv, options);
`}
- #date en nit...
+ # date en nit...
fun date: String is abstract
end
-#enum GtkCalendarDisplayOptions
-#@https://developer.gnome.org/gtk3/3.2/GtkCalendar.html#GtkCalendarDisplayOptions
+# enum GtkCalendarDisplayOptions
+# See: https://developer.gnome.org/gtk3/3.2/GtkCalendar.html#GtkCalendarDisplayOptions
extern class GtkCalendarDisplayOptions `{GtkCalendarDisplayOptions`}
new show_heading `{ return GTK_CALENDAR_SHOW_HEADING; `}
new show_day_names `{ return GTK_CALENDAR_SHOW_DAY_NAMES; `}
new show_details `{ return GTK_CALENDAR_SHOW_DETAILS; `}
end
-#A separator widget
-#@https://developer.gnome.org/gtk3/stable/GtkSeparator.html
+# A separator widget
+# See: https://developer.gnome.org/gtk3/stable/GtkSeparator.html
extern class GtkSeparator `{GtkSeparator *`}
super GtkWidget
- new ( orientation : GtkOrientation ) is extern `{
- return (GtkSeparator *)gtk_separator_new( orientation );
+ new (orientation: GtkOrientation) `{
+ return (GtkSeparator *)gtk_separator_new(orientation);
`}
end
-#A widget which indicates progress visually
-#@https://developer.gnome.org/gtk3/3.2/GtkProgressBar.html
+# A widget which indicates progress visually
+# See: https://developer.gnome.org/gtk3/3.2/GtkProgressBar.html
extern class GtkProgressBar `{GtkProgressBar *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkProgressBar *)gtk_progress_bar_new();
`}
- fun pulse is extern `{
- gtk_progress_bar_pulse( recv );
+ fun pulse `{
+ gtk_progress_bar_pulse(recv);
`}
- fun pulse_step : Float is extern `{
- return gtk_progress_bar_get_pulse_step( recv );
+ fun pulse_step: Float `{
+ return gtk_progress_bar_get_pulse_step(recv);
`}
- fun pulse_step=( step : Float ) is extern `{
- gtk_progress_bar_set_pulse_step( recv, step);
+ fun pulse_step=(step: Float) `{
+ gtk_progress_bar_set_pulse_step(recv, step);
`}
- fun fraction : Float is extern `{
- return gtk_progress_bar_get_fraction( recv );
+ fun fraction: Float `{
+ return gtk_progress_bar_get_fraction(recv);
`}
- fun fraction=( fraction : Float) is extern `{
- gtk_progress_bar_set_fraction( recv, fraction );
+ fun fraction=(fraction: Float) `{
+ gtk_progress_bar_set_fraction(recv, fraction);
`}
- fun inverted : Bool is extern `{
- return gtk_progress_bar_get_inverted( recv );
+ fun inverted: Bool `{
+ return gtk_progress_bar_get_inverted(recv);
`}
- fun inverted=( is_inverted : Bool) is extern `{
- gtk_progress_bar_set_inverted( recv, is_inverted );
+ fun inverted=(is_inverted: Bool) `{
+ gtk_progress_bar_set_inverted(recv, is_inverted);
`}
- fun show_text : Bool is extern `{
- return gtk_progress_bar_get_show_text( recv );
+ fun show_text: Bool `{
+ return gtk_progress_bar_get_show_text(recv);
`}
- fun show_text=( show : Bool) is extern `{
- gtk_progress_bar_set_show_text( recv, show );
+ fun show_text=(show: Bool) `{
+ gtk_progress_bar_set_show_text(recv, show);
`}
- fun text : String is extern import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_progress_bar_get_text( recv ) );
+ fun text: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_progress_bar_get_text(recv));
`}
- fun text=( value : String) is extern import String.to_cstring`{
- gtk_progress_bar_set_text( recv, String_to_cstring( value ) );
+ fun text=(value: String) import String.to_cstring `{
+ gtk_progress_bar_set_text(recv, String_to_cstring(value));
`}
fun ellipsize is abstract
extern class GtkColorSelectionDialog
super GtkWidget
- new ( title : String, parent : GtkWindow ) is extern import String.to_cstring `{
- return gtk_color_chooser_dialog_new( String_to_cstring( title ), parent );
+ new (title: String, parent: GtkWindow) import String.to_cstring `{
+ return gtk_color_chooser_dialog_new(String_to_cstring(title), parent);
`}
- #fun color_selection : is extern `{
- # return gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( recv ) );
- #`}
+ # fun color_selection: `{
+ # return gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(recv));
+ # `}
- #fun color : Float is extern `{
- # return gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( recv ) );
- #`}
+ # fun color: Float `{
+ # return gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(recv));
+ # `}
end
-#Retrieve an integer or floating-point number from the user
-#@https://developer.gnome.org/gtk3/3.2/GtkSpinButton.html
+# Retrieve an integer or floating-point number from the user
+# See: https://developer.gnome.org/gtk3/3.2/GtkSpinButton.html
extern class GtkSpinButton `{GtkSpinButton *`}
super GtkEntry
- new ( adjustment : GtkAdjustment, climb_rate : Float, digits : Int )is extern `{
- return (GtkSpinButton *)gtk_spin_button_new( adjustment, climb_rate, digits );
+ new (adjustment: GtkAdjustment, climb_rate: Float, digits: Int)is extern `{
+ return (GtkSpinButton *)gtk_spin_button_new(adjustment, climb_rate, digits);
`}
- new with_range( min : Float, max : Float, step : Float )is extern `{
- return (GtkSpinButton *)gtk_spin_button_new_with_range( min, max, step );
+ new with_range(min: Float, max: Float, step: Float)is extern `{
+ return (GtkSpinButton *)gtk_spin_button_new_with_range(min, max, step);
`}
- fun configure ( adjustment : GtkAdjustment, climb_rate : Float, digits : Int ) is extern `{
- gtk_spin_button_configure( recv, adjustment, climb_rate, digits );
+ fun configure (adjustment: GtkAdjustment, climb_rate: Float, digits: Int) `{
+ gtk_spin_button_configure(recv, adjustment, climb_rate, digits);
`}
- fun adjustment : GtkAdjustment is extern `{
- return gtk_spin_button_get_adjustment( recv );
+ fun adjustment: GtkAdjustment `{
+ return gtk_spin_button_get_adjustment(recv);
`}
- fun adjustment=( value : GtkAdjustment ) is extern `{
- gtk_spin_button_set_adjustment( recv, value );
+ fun adjustment=(value: GtkAdjustment) `{
+ gtk_spin_button_set_adjustment(recv, value);
`}
- fun digits : Int is extern `{
- return gtk_spin_button_get_digits( recv );
+ fun digits: Int `{
+ return gtk_spin_button_get_digits(recv);
`}
- fun digits=( nb_digits : Int ) is extern `{
- gtk_spin_button_set_digits( recv, nb_digits );
+ fun digits=(nb_digits: Int) `{
+ gtk_spin_button_set_digits(recv, nb_digits);
`}
- fun value : Float is extern `{
- return gtk_spin_button_get_value( recv );
+ fun value: Float `{
+ return gtk_spin_button_get_value(recv);
`}
- fun val=( val : Float ) is extern `{
- gtk_spin_button_set_value( recv, val );
+ fun val=(val: Float) `{
+ gtk_spin_button_set_value(recv, val);
`}
- fun spin( direction : GtkSpinType, increment : Float ) is extern`{
- gtk_spin_button_spin( recv, direction, increment );
+ fun spin(direction: GtkSpinType, increment: Float)`{
+ gtk_spin_button_spin(recv, direction, increment);
`}
end
-#enum GtkSpinType
-#The values of the GtkSpinType enumeration are used to specify the change to make in gtk_spin_button_spin().
-#@https://developer.gnome.org/gtk3/stable/GtkSpinButton.html#GtkSpinType
+# enum GtkSpinType
+# The values of the GtkSpinType enumeration are used to specify the change to make in gtk_spin_button_spin().
+# See: https://developer.gnome.org/gtk3/stable/GtkSpinButton.html#GtkSpinType
extern class GtkSpinType `{GtkSpinType`}
- #Increment by the adjustments step increment.
+ # Increment by the adjustments step increment.
new step_forward `{ return GTK_SPIN_STEP_FORWARD; `}
- #Decrement by the adjustments step increment.
+ # Decrement by the adjustments step increment.
new step_backward `{ return GTK_SPIN_STEP_BACKWARD; `}
- #Increment by the adjustments page increment.
+ # Increment by the adjustments page increment.
new page_forward `{ return GTK_SPIN_PAGE_FORWARD; `}
- #Decrement by the adjustments page increment.
+ # Decrement by the adjustments page increment.
new page_backward `{ return GTK_SPIN_PAGE_BACKWARD; `}
- #Go to the adjustments lower bound.
+ # Go to the adjustments lower bound.
new lower_bound `{ return GTK_SPIN_HOME; `}
- #Go to the adjustments upper bound.
+ # Go to the adjustments upper bound.
new upper_bound `{ return GTK_SPIN_END; `}
- #Change by a specified amount.
+ # Change by a specified amount.
new user_defined `{ return GTK_SPIN_USER_DEFINED; `}
end
-#A widget to unlock or lock privileged operations
-#@https://developer.gnome.org/gtk3/stable/GtkLockButton.html
+# A widget to unlock or lock privileged operations
+# See: https://developer.gnome.org/gtk3/stable/GtkLockButton.html
extern class GtkLockButton
super GtkButton
end
-#A button to launch a color selection dialog
-#@https://developer.gnome.org/gtk3/stable/GtkColorButton.html
+# A button to launch a color selection dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkColorButton.html
extern class GtkColorButton `{GtkColorButton *`}
super GtkButton
- new is extern `{
- return (GtkColorButton *)gtk_color_button_new( );
- `}
-
- fun color=( col : GdkColor ) is extern `{
-
- /* deprecated
- GdkColor *c = malloc(sizeof(GdkColor));
- c->pixel = 50;
- c->red = 50;
- c->green = 50;
- c->blue = 50;
-
- gtk_color_button_set_color( (GtkColorButton*)recv, c );*/
+ new `{
+ return (GtkColorButton *)gtk_color_button_new();
`}
end
# See the License for the specific language governing permissions and
# limitations under the License.
-module v3_4 is pkgconfig("gtk+-3.0")
+module v3_4 is pkgconfig "gtk+-3.0"
import gtk_widgets_ext
import gtk_dialogs
# limitations under the License.
# GTK+ services added at version 3.6
-module v3_6 is pkgconfig("gtk+-3.0")
+module v3_6 is pkgconfig "gtk+-3.0"
import v3_4
-#An entry which shows a search icon
-#@https://developer.gnome.org/gtk3/stable/GtkSearchEntry.html
+# An entry which shows a search icon
+# See: https://developer.gnome.org/gtk3/stable/GtkSearchEntry.html
extern class GtkSearchEntry `{GtkSearchEntry *`}
super GtkEntry
- new is extern `{
- return (GtkSearchEntry *)gtk_search_entry_new( );
+ new `{
+ return (GtkSearchEntry *)gtk_search_entry_new();
`}
end
redef class GtkWidget
# Get the visibility of the widget, check if it's parents are visible too
- fun visible: Bool is extern `{
+ fun visible: Bool `{
return gtk_widget_is_visible(recv);
`}
end
#
# SEE: `to_json`
fun append_json(buffer: Buffer) do buffer.append(to_json)
+
+ # Pretty print JSON string.
+ #
+ # ~~~
+ # var obj = new JsonObject
+ # obj["foo"] = 1
+ # obj["bar"] = true
+ # var arr = new JsonArray
+ # arr.add 2
+ # arr.add false
+ # arr.add "baz"
+ # obj["baz"] = arr
+ # var res = obj.to_pretty_json
+ # var exp = """{
+ # "foo": 1,
+ # "bar": true,
+ # "baz": [2, false, "baz"]
+ # }\n"""
+ # assert res == exp
+ # ~~~
+ fun to_pretty_json: String do
+ var res = new FlatBuffer
+ pretty_json_visit(res, 0)
+ res.add '\n'
+ return res.write_to_string
+ end
+
+ private fun pretty_json_visit(buffer: FlatBuffer, indent: Int) is abstract
end
redef class Text
# Encode `self` in JSON.
#
- # assert "\t\"http://example.com\"\r\n\0\\".to_json ==
- # "\"\\t\\\"http:\\/\\/example.com\\\"\\r\\n\\u0000\\\\\""
+ # ~~~
+ # assert "\t\"http://example.com\"\r\n\0\\".to_json ==
+ # "\"\\t\\\"http:\\/\\/example.com\\\"\\r\\n\\u0000\\\\\""
+ # ~~~
redef fun to_json do return to_json_by_append
# Parse `self` as JSON.
# assert obj.to_json == "\{\"baz\":null\}"
redef fun to_json do return to_json_by_append
+ redef fun pretty_json_visit(buffer, indent) do
+ buffer.append "\{\n"
+ indent += 1
+ var i = 0
+ for k, v in self do
+ buffer.append "\t" * indent
+ buffer.append "\"{k}\": "
+ if v isa JsonObject or v isa JsonArray then
+ v.pretty_json_visit(buffer, indent)
+ else
+ buffer.append v.to_json
+ end
+ if i < length - 1 then
+ buffer.append ","
+ end
+ buffer.append "\n"
+ i += 1
+ end
+ indent -= 1
+ buffer.append "\t" * indent
+ buffer.append "\}"
+ end
+
private fun append_json_entry(iterator: MapIterator[String, nullable Jsonable],
buffer: Buffer) do
buffer.append iterator.key.to_json
# assert arr.to_json =="[]"
redef fun to_json do return to_json_by_append
+ redef fun pretty_json_visit(buffer, indent) do
+ buffer.append "\["
+ var i = 0
+ for v in self do
+ if v isa JsonObject or v isa JsonArray then
+ v.pretty_json_visit(buffer, indent)
+ else
+ buffer.append v.to_json
+ end
+ if i < length - 1 then buffer.append ", "
+ i += 1
+ end
+ buffer.append "\]"
+ end
+
private fun append_json_entry(iterator: Iterator[nullable Jsonable],
buffer: Buffer) do
buffer.append_json_of(iterator.item)
# Get the JSON representation of `self`.
#
- # var err = new JsonParseError("foo", new Position(1, 2, 3, 4, 5, 6))
- # assert err.to_json == "\{\"error\":\"JsonParseError\"," +
- # "\"position\":\{" +
- # "\"pos_start\":1,\"pos_end\":2," +
- # "\"line_start\":3,\"line_end\":4," +
- # "\"col_start\":5,\"col_end\":6" +
- # "\},\"message\":\"foo\"\}"
+ # ~~~
+ # var err = new JsonParseError("foo", new Position(1, 2, 3, 4, 5, 6))
+ # assert err.to_json == "\{\"error\":\"JsonParseError\"," +
+ # "\"position\":\{" +
+ # "\"pos_start\":1,\"pos_end\":2," +
+ # "\"line_start\":3,\"line_end\":4," +
+ # "\"col_start\":5,\"col_end\":6" +
+ # "\},\"message\":\"foo\"\}"
+ # ~~~
redef fun to_json do
return "\{\"error\":\"JsonParseError\"," +
"\"position\":{position.to_json}," +
# Get the JSON representation of `self`.
#
- # var pos = new Position(1, 2, 3, 4, 5, 6)
- # assert pos.to_json == "\{" +
- # "\"pos_start\":1,\"pos_end\":2," +
- # "\"line_start\":3,\"line_end\":4," +
- # "\"col_start\":5,\"col_end\":6" +
- # "\}"
+ # ~~~
+ # var pos = new Position(1, 2, 3, 4, 5, 6)
+ # assert pos.to_json == "\{" +
+ # "\"pos_start\":1,\"pos_end\":2," +
+ # "\"line_start\":3,\"line_end\":4," +
+ # "\"col_start\":5,\"col_end\":6" +
+ # "\}"
+ # ~~~
redef fun to_json do
return "\{\"pos_start\":{pos_start},\"pos_end\":{pos_end}," +
"\"line_start\":{line_start},\"line_end\":{line_end}," +
# See the License for the specific language governing permissions and
# limitations under the License.
-module linux_data_store
+# `app::data_store` implementation on GNU/Linux
+module data_store
import app::data_store
private import xdg_basedir
module linux
import app
-private import linux_data_store
+private import data_store
#
# Markdown allows link refs to be defined over two lines:
#
- # [id]: http://example.com/longish/path/to/resource/here
+ # [id]: http://example.com/longish/path/to/resource/here
# "Optional Title Here"
#
private var last_link_ref: nullable LinkRef = null
comment = lr.title
end
else
- var tid = name.write_to_string.replace("\n", " ").to_lower
+ var tid = name.write_to_string.replace("\n", " ").to_lower
if v.processor.link_refs.has_key(tid) then
var lr = v.processor.link_refs[tid]
link = lr.link
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.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.
+
+# MongoDB Nit Driver.
+#
+# This is actually a wrapper around the [MongoDB C Driver](http://api.mongodb.org/c/1.1.4/index.html).
+#
+# Usage:
+#
+# ~~~
+# # Opens the connexion with the Mongo server.
+# var client = new MongoClient("mongodb://localhost:27017/")
+#
+# # Retrieve a collection.
+# var col = client.database("test").collection("test")
+#
+# # Insert a document in the collection.
+# var doc = new JsonObject
+# doc["foo"] = 10
+# doc["bar"] = "bar"
+# doc["baz"] = new JsonArray
+# assert col.insert(doc)
+#
+# # Retrieve a document from the collection.
+# var query = new JsonObject
+# query["foo"] = 10
+# var res = col.find(query)
+# assert res["bar"] == "bar"
+# ~~~
+#
+# TODO Get last Object_ID
+module mongodb
+
+import json
+private import native_mongodb
+
+in "C header" `{
+ #include <mongoc.h>
+`}
+
+# Everything inside MongoDB is manipulated as BSON Objects.
+#
+# See:
+# * [Binary JSON spec](http://bsonspec.org/)
+# * [Libbson](http://api.mongodb.org/libbson/1.1.4/)#
+private class BSON
+ super Finalizable
+
+ # Native instance pointer.
+ var native: NativeBSON
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ var is_alive = true
+
+ # Returns a new BSON object initialized from the content of `json`.
+ #
+ # ~~~
+ # intrude import mongodb
+ # var obj = new JsonObject
+ # obj["age"] = 10
+ # obj["name"] = "Rick"
+ # obj["ELS"] = new JsonArray
+ # var bson = new BSON.from_json(obj)
+ # assert bson.to_s == """{ "age" : 10, "name" : "Rick", "ELS" : [ ] }"""
+ # ~~~
+ init from_json(json: JsonObject) do
+ init(new NativeBSON.from_json_string(json.to_json.to_cstring))
+ end
+
+ # Returns a new BSON object parsed from `json_string`.
+ #
+ # If `json_string` is not a valid JSON string, this initializer returns NULL.
+ #
+ # ~~~
+ # intrude import mongodb
+ # var str = """{ "age" : 10, "name" : "Rick", "ELS" : [ ] }"""
+ # var bson = new BSON.from_json_string(str)
+ # assert bson.to_s == str
+ # ~~~
+ init from_json_string(json_string: String) do
+ init(new NativeBSON.from_json_string(json_string.to_cstring))
+ end
+
+ redef fun to_s do
+ assert is_alive
+ var ns = native.to_native_string
+ var res = ns.to_s_with_copy
+ ns.free # manual free of gc allocated NativeString
+ return res
+ end
+
+ # Returns a new JsonObject from `self`.
+ #
+ # ~~~
+ # intrude import mongodb
+ # var str = """{ "age" : 10, "name" : "Rick", "ELS" : [ ] }"""
+ # var bson = new BSON.from_json_string(str)
+ # var json = bson.to_json
+ # assert json["age"] == 10
+ # assert json["name"] == "Rick"
+ # assert json["ELS"].as(JsonArray).is_empty
+ # ~~~
+ fun to_json: JsonObject do
+ assert is_alive
+ return to_s.parse_json.as(JsonObject)
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
+
+redef class JsonObject
+ # Inits `self` from a BSON object.
+ private init from_bson(bson: BSON) do recover_with(bson.to_json)
+
+ # Returns a new BSON object from `self`.
+ private fun to_bson: BSON do return new BSON.from_json(self)
+end
+
+# An error returned by the mongoc client.
+#
+# Within the client, if a method returns `false` or `null` it's more likely that
+# an error occured during the execution.
+#
+# See `MongoClient::last_error`.
+class MongoError
+
+ private var native: BSONError
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ # Logical domain within a library that created the error.
+ fun domain: Int do
+ assert is_alive
+ return native.domain
+ end
+
+ # Domain specific error code.
+ fun code: Int do
+ assert is_alive
+ return native.code
+ end
+
+ # Human readable error message.
+ fun message: String do
+ assert is_alive
+ var ns = native.message
+ var res = ns.to_s_with_copy
+ ns.free
+ return res
+ end
+
+ redef fun to_s do return "{message} (code: {code})"
+end
+
+# The MongoClient is used to connect to the mongo server and send queries.
+#
+# Usage:
+#
+# ~~~
+# var uri = "mongodb://localhost:27017/"
+# var client = new MongoClient(uri)
+# assert client.server_uri == uri
+# ~~~
+class MongoClient
+ super Finalizable
+
+ # Server URI.
+ var server_uri: String
+
+ private var native: NativeMongoClient is noinit
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ init do
+ native = new NativeMongoClient(server_uri.to_cstring)
+ end
+
+ # Gets server data.
+ #
+ # Returns `null` if an error occured. See `last_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # assert client.server_status["process"] == "mongod"
+ # ~~~
+ fun server_status: nullable JsonObject do
+ assert is_alive
+ var nbson = native.server_status
+ if nbson == null then return null
+ var bson = new BSON(nbson)
+ var res = new JsonObject.from_bson(bson)
+ return res
+ end
+
+ # Lists available database names.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # db.collection("test").insert(new JsonObject)
+ # assert client.database_names.has("test")
+ # ~~~
+ fun database_names: Array[String] do
+ assert is_alive
+ var res = new Array[String]
+ var nas = native.database_names
+ var i = 0
+ var name = nas[i]
+ while not name.address_is_null do
+ res.add name.to_s_with_copy
+ name.free
+ i += 1
+ name = nas[i]
+ end
+ return res
+ end
+
+ # Loads or creates a database from its `name`.
+ #
+ # Database are automatically created on the MongoDB server upon insertion of
+ # the first document into a collection.
+ # There is no need to create a database manually.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # assert client.database("test").name == "test"
+ # ~~~
+ fun database(name: String): MongoDb do
+ assert is_alive
+ return new MongoDb(self, name)
+ end
+
+ # Close the connexion and destroy the instance.
+ #
+ # The reference should not be used beyond this point!
+ fun close do
+ assert is_alive
+ finalize
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+
+ # Last error raised by mongoc.
+ fun last_error: nullable MongoError do
+ var last_error = sys.last_mongoc_error
+ if last_error == null then return null
+ return new MongoError(last_error)
+ end
+end
+
+# A MongoDb database.
+#
+# Database are automatically created on the MongoDB server upon insertion of the
+# first document into a collection.
+# There is no need to create a database manually.
+class MongoDb
+ super Finalizable
+
+ # `MongoClient` used to load this database.
+ var client: MongoClient
+
+ # The database name.
+ var name: String
+
+ private var native: NativeMongoDb is noinit
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ init do
+ native = new NativeMongoDb(client.native, name.to_cstring)
+ end
+
+ # Lists available collection names.
+ #
+ # Returns `null` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # db.collection("test").insert(new JsonObject)
+ # assert db.collection_names.has("test")
+ # ~~~
+ fun collection_names: Array[String] do
+ assert is_alive
+ var res = new Array[String]
+ var nas = native.collection_names
+ var i = 0
+ var name = nas[i]
+ while not name.address_is_null do
+ res.add name.to_s_with_copy
+ name.free
+ i += 1
+ name = nas[i]
+ end
+ return res
+ end
+
+ # Loads or creates a collection by its `name`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # var col = db.collection("test")
+ # assert col.name == "test"
+ # ~~~
+ fun collection(name: String): MongoCollection do
+ assert is_alive
+ return new MongoCollection(self, name)
+ end
+
+ # Checks if a collection named `name` exists.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # assert not db.has_collection("qwerty")
+ # ~~~
+ fun has_collection(name: String): Bool do
+ assert is_alive
+ # TODO handle error
+ return native.has_collection(name.to_cstring)
+ end
+
+ # Drop `self`, returns false if an error occured.
+ fun drop: Bool do
+ assert is_alive
+ return native.drop
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
+
+# A Mongo collection.
+#
+# Collections are automatically created on the MongoDB server upon insertion of
+# the first document.
+# There is no need to create a database manually.
+class MongoCollection
+ super Finalizable
+
+ # Database that collection belongs to.
+ var database: MongoDb
+
+ # Name of this collection.
+ var name: String
+
+ private var native: NativeMongoCollection is noinit
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ # Loads a collection.
+ #
+ # Call `MongoDb::collection` instead.
+ init do
+ native = new NativeMongoCollection(
+ database.client.native,
+ database.name.to_cstring,
+ name.to_cstring)
+ end
+
+ # Inserts a new document in the collection.
+ #
+ # If no _id element is found in document, then a new one be generated locally
+ # and added to the document.
+ #
+ # Returns `false` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var doc = new JsonObject
+ # doc["foo"] = 10
+ # doc["bar"] = "bar"
+ # doc["baz"] = new JsonArray
+ # assert col.insert(doc)
+ # ~~~
+ fun insert(doc: JsonObject): Bool do
+ assert is_alive
+ return native.insert(doc.to_bson.native)
+ end
+
+ # Inserts multiple documents in the collection.
+ #
+ # See `insert`.
+ fun insert_all(docs: Collection[JsonObject]): Bool do
+ assert is_alive
+ var res = true
+ for doc in docs do res = insert(doc) and res
+ return res
+ end
+
+ # Saves a new document in the collection.
+ #
+ # If the document has an `_id` field it will be updated.
+ # Otherwise it will be inserted.
+ #
+ # Returns `false` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var doc = new JsonObject
+ # doc["foo"] = 10
+ # doc["bar"] = "bar"
+ # doc["baz"] = new JsonArray
+ # assert col.save(doc) # will be inserted
+ # ~~~
+ fun save(doc: JsonObject): Bool do
+ assert is_alive
+ return native.save(doc.to_bson.native)
+ end
+
+ # Removes the first document that matches `selector`.
+ #
+ # Returns `false` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var sel = new JsonObject
+ # sel["foo"] = 10
+ # assert col.remove(sel)
+ # ~~~
+ fun remove(selector: JsonObject): Bool do
+ assert is_alive
+ return native.remove(selector.to_bson.native)
+ end
+
+ # Removes all the document that match `selector`.
+ #
+ # See `remove`.
+ fun remove_all(selector: JsonObject): Bool do
+ assert is_alive
+ return native.remove_all(selector.to_bson.native)
+ end
+
+ # Updates a document already existing in the collection.
+ #
+ # No upsert is done, see `save` instead.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var sel = new JsonObject
+ # sel["foo"] = 10
+ # var upd = new JsonObject
+ # upd["bar"] = "BAR"
+ # assert col.update(sel, upd)
+ # ~~~
+ fun update(selector: JsonObject, update: JsonObject): Bool do
+ assert is_alive
+ return native.update(
+ selector.to_bson.native,
+ update.to_bson.native)
+ end
+
+ # Updates all documents matching the `selector`.
+ #
+ # See `update`.
+ fun update_all(selector: JsonObject, update: JsonObject): Bool do
+ return native.update_all(
+ selector.to_bson.native,
+ update.to_bson.native)
+ end
+
+ # Counts the document matching `query`.
+ #
+ # Returns `-1` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var query = new JsonObject
+ # query["foo"] = 10
+ # assert col.count(query) > 0
+ # ~~~
+ fun count(query: JsonObject): Int do
+ assert is_alive
+ return native.count(query.to_bson.native)
+ end
+
+ # Finds the first document that matches `query`.
+ #
+ # Returns `null` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var query = new JsonObject
+ # query["foo"] = 10
+ # var doc = col.find(query)
+ # print doc or else "nullllllllllllllllll"
+ # print doc.to_json
+ # assert doc["foo"] == 10
+ # ~~~
+ fun find(query: JsonObject): nullable JsonObject do
+ assert is_alive
+ var c = native.find(query.to_bson.native)
+ if c == null then return null
+ var cursor = new MongoCursor(c)
+ if cursor.is_ok then
+ cursor.next
+ return cursor.item
+ end
+ return null
+ end
+
+ # Finds all the documents matching the `query`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var query = new JsonObject
+ # query["foo"] = 10
+ # assert col.find_all(query).length > 0
+ # ~~~
+ fun find_all(query: JsonObject): Array[JsonObject] do
+ assert is_alive
+ var res = new Array[JsonObject]
+ var c = native.find(query.to_bson.native)
+ if c == null then return res
+ var cursor = new MongoCursor(c)
+ for item in cursor do res.add item
+ return res
+ end
+
+ # Retrieves statistics about the collection.
+ #
+ # Returns `null` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # assert col.stats["ns"] == "test.test"
+ # ~~~
+ fun stats: nullable JsonObject do
+ assert is_alive
+ var bson = native.stats
+ if bson == null then return null
+ return new JsonObject.from_bson(new BSON(bson))
+ end
+
+ # Drops `self`, returns false if an error occured.
+ fun drop: Bool do
+ assert is_alive
+ return native.drop
+ end
+
+ # Moves `self` to another `database`.
+ #
+ # The database will also be updated internally so it is safe to continue using
+ # this collection after the move.
+ # Additional operations will occur on moved collection.
+ fun move(database: MongoDb): Bool do
+ assert is_alive
+ self.database = database
+ return native.rename(database.name.to_cstring, name.to_cstring)
+ end
+
+ # Renames `self`.
+ #
+ # The name of the collection will also be updated internally so it is safe
+ # to continue using this collection after the rename.
+ # Additional operations will occur on renamed collection.
+ fun rename(name: String): Bool do
+ assert is_alive
+ self.name = name
+ return native.rename(database.name.to_cstring, name.to_cstring)
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
+
+# A MongoDB query cursor.
+#
+# It wraps up the wire protocol negotation required to initiate a query and
+# retreive an unknown number of documents.
+class MongoCursor
+ super Finalizable
+ super Iterator[JsonObject]
+
+ private var native: NativeMongoCursor
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ init do next
+
+ redef fun is_ok do
+ assert is_alive
+ return native.more
+ end
+
+ redef fun next do
+ assert is_alive
+ native.next
+ end
+
+ redef fun item do
+ assert is_alive
+ return new JsonObject.from_bson(new BSON(native.current))
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.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.
+
+# Native wrapper for the MongoDB C Driver
+#
+# See [mongoc](http://api.mongodb.org/c/1.1.4/index.html).
+module native_mongodb is pkgconfig "libmongoc-1.0"
+
+import c
+
+in "C header" `{
+ #include <mongoc.h>
+`}
+
+# Wrapper for `bson_t`.
+#
+# All data manipulated by `mongoc` are BSON formated.
+#
+# The `bson_t` structure represents a BSON document.
+# This structure manages the underlying BSON encoded buffer.
+# For mutable documents, it can append new data to the document.
+#
+# See [`bson_t`](http://api.mongodb.org/libbson/current/bson_t.html).
+extern class NativeBSON `{ bson_t * `}
+
+ # Wrapper for `bson_new()`.
+ #
+ # The `bson_new()` function shall create a new `bson_t` structure on the heap.
+ # It should be freed with `bson_destroy()` when it is no longer in use.
+ new `{ return bson_new(); `}
+
+ # Wrapper for `bson_new_from_json()`.
+ #
+ # The `bson_new_from_json()` function allocates and initialize a new `bson_t`
+ # by parsing the JSON found in `data`.
+ # Only a single JSON object may exist in data or an error will be set and
+ # `NULL` returned.
+ new from_json_string(data: NativeString) import set_mongoc_error `{
+ bson_error_t error;
+ bson_t *bson;
+ bson = bson_new_from_json(data, -1, &error);
+ if(!bson) {
+ NativeBSON_set_mongoc_error(recv, &error);
+ return NULL;
+ }
+ return bson;
+ `}
+
+ # Wrapper for `bson_as_json()`.
+ #
+ # The `bson_as_json()` function shall encode bson as a JSON encoded UTF-8 string.
+ # The caller is responsible for freeing the resulting UTF-8 encoded string
+ # by calling `bson_free()` with the result.
+ fun to_native_string: NativeString `{ return bson_as_json(recv, NULL); `}
+
+ # Wrapper for `bson_destroy()`.
+ #
+ # The `bson_destroy()` function shall free an allocated `bson_t` structure.
+ # This function should always be called when you are done with a `bson_t`
+ # unless otherwise specified.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ bson_destroy(recv); `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `bson_error_t`.
+#
+# The `bson_error_t` structure is used to encapsulate information about an error.
+#
+# See [`bson_error_t`](http://api.mongodb.org/libbson/current/bson_error_t.html).
+extern class BSONError `{ bson_error_t * `}
+
+ # Wrapper for `error.domain`.
+ #
+ # The `error.domain` field contains the logical domain within a library that
+ # created the error.
+ fun domain: Int `{ return recv->domain; `}
+
+ # Wrapper for `error.code`.
+ #
+ # The `error.code` field contains the domain specific error code.
+ fun code: Int `{ return recv->code; `}
+
+ # Wrapper for `error.message`.
+ #
+ # The `error.message` field contains a human printable error message.
+ fun message: NativeString `{ return recv->message; `}
+end
+
+redef class Sys
+ # Last error raised by `monogdb::MongoClient`.
+ #
+ # See `MongoClient::last_error`.
+ var last_mongoc_error: nullable BSONError = null
+end
+
+# Wrapper for `char**`.
+#
+# Used to handle array of NativeString returned by MongoDB.
+redef class NativeCStringArray
+ # Frees `self`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ free(recv); `}
+end
+
+# Wrapper for `mongoc_client_t`.
+#
+# `mongoc_client_t` is an opaque type that provides access to a MongoDB node,
+# replica-set, or sharded-cluster.
+# It maintains management of underlying sockets and routing to individual nodes.
+#
+# See [`mongoc_client_t`](http://api.mongodb.org/c/current/mongoc_client_t.html).
+extern class NativeMongoClient `{ mongoc_client_t * `}
+
+ # Wrapper for `mongoc_client_new()`.
+ #
+ # Creates a new `mongoc_client_t` using the `uri` string provided.
+ new(uri: NativeString) `{
+ mongoc_init();
+ return mongoc_client_new(uri);
+ `}
+
+ # Wrapper for `mongoc_client_get_server_status()`.
+ #
+ # Queries the server for the current server status.
+ # Returns `null` if an error occured.
+ fun server_status: nullable NativeBSON import set_mongoc_error, NativeBSON.as nullable `{
+ bson_error_t error;
+ bson_t *reply = bson_new();
+ if(!mongoc_client_get_server_status(recv, NULL, reply, &error)){
+ NativeMongoClient_set_mongoc_error(recv, &error);
+ return null_NativeBSON();
+ }
+ return NativeBSON_as_nullable(reply);
+ `}
+
+ # Wrapper for `mongoc_client_get_database_names()`.
+ #
+ # This function queries the MongoDB server for a list of known databases.
+ # Returns `null` if an error occured.
+ fun database_names: nullable NativeCStringArray
+ import set_mongoc_error, NativeCStringArray, NativeCStringArray.as nullable `{
+ bson_error_t error;
+ char **strv;
+ if(strv = mongoc_client_get_database_names(recv, &error)) {
+ return NativeCStringArray_as_nullable(strv);
+ }
+ NativeMongoClient_set_mongoc_error(recv, &error);
+ return null_NativeCStringArray();
+ `}
+
+ # Wrapper for `mongoc_client_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{
+ mongoc_client_destroy(recv);
+ mongoc_cleanup();
+ `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `mongoc_database_t`.
+#
+# `mongoc_database_t` provides access to a MongoDB database.
+# This handle is useful for actions a particular database object.
+# It is not a container for `mongoc_collection_t` structures.
+#
+# See [`mongoc_database_t`](http://api.mongodb.org/c/current/mongoc_database_t.html).
+extern class NativeMongoDb `{ mongoc_database_t * `}
+
+ # Wrapper for `mongoc_client_get_database()`.
+ #
+ # Get a newly allocated `mongoc_database_t` for the database named name.
+ #
+ # Database are automatically created on the MongoDB server upon insertion of
+ # the first document into a collection.
+ # There is no need to create a database manually.
+ new(client: NativeMongoClient, db_name: NativeString) `{
+ return mongoc_client_get_database(client, db_name);
+ `}
+
+ # Wrapper for `mongoc_database_get_collection_names()`.
+ #
+ # Fetches a `NULL` terminated array of `NULL-byte` terminated `char*` strings
+ # containing the names of all of the collections in database.
+ fun collection_names: nullable NativeCStringArray
+ import set_mongoc_error, NativeCStringArray, NativeCStringArray.as nullable `{
+ bson_error_t error;
+ char **strv;
+ if(strv = mongoc_database_get_collection_names(recv, &error)) {
+ return NativeCStringArray_as_nullable(strv);
+ }
+ NativeMongoDb_set_mongoc_error(recv, &error);
+ return null_NativeCStringArray();
+ `}
+
+ # Wrapper for `mongoc_database_get_collection()`.
+ #
+ # Allocates a new `mongoc_collection_t` structure for the collection named
+ # `name` in database.
+ fun collection(name: NativeString): NativeMongoCollection `{
+ return mongoc_database_get_collection(recv, name);
+ `}
+
+ # Wrapper for `mongoc_database_has_collection()`.
+ #
+ # This function checks to see if a collection exists on the MongoDB server
+ # within database.
+ fun has_collection(name: NativeString): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_database_has_collection(recv, name, &error)) {
+ NativeMongoDb_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_database_drop()`.
+ #
+ # This function attempts to drop a database on the MongoDB server.
+ fun drop: Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_database_drop(recv, &error)) {
+ NativeMongoDb_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_database_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ mongoc_database_destroy(recv); `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `mongoc_collection_t`.
+#
+# `mongoc_collection_t` provides access to a MongoDB collection.
+# This handle is useful for actions for most CRUD operations,
+# I.e. insert, update, delete, find, etc.
+#
+# It is an error to call `mongoc_collection_destroy()` on a collection that has
+# operations pending.
+# It is required that you release `mongoc_cursor_t` structures before calling
+# `mongoc_collection_destroy()`.
+#
+# See [`mongoc_collection_t`](http://api.mongodb.org/c/current/mongoc_collection_t.html).
+extern class NativeMongoCollection `{ mongoc_collection_t * `}
+
+ # Wrapper for `mongoc_client_get_collection()`.
+ #
+ # Get a newly allocated `mongoc_collection_t` for the collection named
+ # `collection` in the database named `db`.
+ #
+ # Collections are automatically created on the MongoDB server upon insertion
+ # of the first document.
+ # There is no need to create a collection manually.
+ new(client: NativeMongoClient, db, collection: NativeString) `{
+ return mongoc_client_get_collection(client, db, collection);
+ `}
+
+ # Wrapper for `mongoc_collection_insert()`.
+ #
+ # This function shall insert `document` into the collection.
+ # If no `_id` element is found in document, then a `bson_oid_t` will be
+ # generated locally and added to the document.
+ #
+ # You can retrieve a generated `_id` from `mongoc_collection_get_last_error()`.
+ fun insert(doc: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_insert(recv, MONGOC_INSERT_NONE, doc, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_save()`.
+ #
+ # This function shall save a document into the collection.
+ # If the document has an `_id` field it will be updated.
+ # Otherwise it will be inserted.
+ fun save(document: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_save(recv, document, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_remove(MONGOC_REMOVE_SINGLE_REMOVE)`.
+ #
+ # This function shall remove the first document in the collection that matches
+ # `selector`.
+ # The bson selector is not validated, simply passed along as appropriate to the server.
+ fun remove(selector: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_remove(recv, MONGOC_REMOVE_SINGLE_REMOVE, selector, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_remove(MONGOC_REMOVE_NONE)`.
+ #
+ # This function shall remove documents in the collection that match `selector`.
+ fun remove_all(selector: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_remove(recv, MONGOC_REMOVE_NONE, selector, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_update(MONGOC_UPDATE_NONE)`.
+ #
+ # This function shall update the first document in the collection that
+ # matches `selector`.
+ fun update(selector, update: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_update(recv, MONGOC_UPDATE_NONE, selector, update, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_update(MONGOC_UPDATE_MULTI_UPDATE)`.
+ #
+ # This function shall update documents in the collection that match `selector`.
+ fun update_all(selector, update: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_update(recv, MONGOC_UPDATE_MULTI_UPDATE, selector, update, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_count()`.
+ #
+ # This function shall execute a count `query` on the underlying collection.
+ fun count(query: NativeBSON): Int import set_mongoc_error `{
+ bson_error_t error;
+ int64_t count = mongoc_collection_count(recv, MONGOC_QUERY_NONE, query, 0, 0, NULL, &error);
+ if(count < 0) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return -1;
+ }
+ return count;
+ `}
+
+ # Wrapper for `mongoc_collection_find()`.
+ #
+ # This function shall execute a `query` on the underlying collection.
+ #
+ # If no options are necessary, `query` can simply contain a query such as `{a:1}`.
+ #
+ # If you would like to specify options such as a sort order,
+ # the query must be placed inside of `{"$query": {}}`.
+ fun find(query: NativeBSON): nullable NativeMongoCursor import
+ NativeMongoCursor.as nullable, set_mongoc_error `{
+ bson_error_t error;
+ mongoc_cursor_t *cursor;
+ cursor = mongoc_collection_find(recv, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL);
+
+ if (mongoc_cursor_error(cursor, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return null_NativeMongoCursor();
+ }
+
+ return NativeMongoCursor_as_nullable(cursor);
+ `}
+
+ # Wrapper for `mongoc_collection_stats()`.
+ #
+ # This function is a helper to retrieve statistics about the collection.
+ fun stats: nullable NativeBSON import set_mongoc_error, NativeBSON.as nullable `{
+ bson_error_t error;
+ bson_t *reply = bson_new();
+ if(!mongoc_collection_stats(recv, NULL, reply, &error)){
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return null_NativeBSON();
+ }
+ return NativeBSON_as_nullable(reply);
+ `}
+
+ # Wrapper for `mongoc_collection_drop()`.
+ #
+ # This function requests that the `collection` be dropped,
+ # including all indexes associated with the collection.
+ fun drop: Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_drop(recv, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_rename()`.
+ #
+ # This function is a helper to rename an existing collection on a MongoDB server.
+ # The name of the collection will also be updated internally so it is safe
+ # to continue using this collection after the rename.
+ # Additional operations will occur on renamed collection.
+ fun rename(new_database, new_name: NativeString): Bool `{
+ bson_error_t error;
+ if(!mongoc_collection_rename(recv, new_database, new_name, false, &error)){
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ mongoc_collection_destroy(recv); `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `mongoc_cursor_t`.
+#
+# `mongoc_cursor_t` provides access to a MongoDB query cursor.
+# It wraps up the wire protocol negotation required to initiate a query and
+# retreive an unknown number of documents.
+#
+# Cursors are lazy, meaning that no network traffic occurs until the first call
+# to mongoc_cursor_next().
+#
+# At that point we can:
+# * Retreive more records with repeated calls to `mongoc_cursor_next()`.
+# * Test for more records with `mongoc_cursor_more()`.
+# * Retrieve the document under the cursor with `mongoc_cursor_current()`.
+#
+# See [`mongoc_cursor_t`](http://api.mongodb.org/c/current/mongoc_cursor_t.html).
+extern class NativeMongoCursor `{ mongoc_cursor_t* `}
+
+ # Wrapper for `mongoc_cursor_current()`.
+ #
+ # Fetches the cursors current document or NULL if there has been an error.
+ fun current: NativeBSON `{ return (bson_t*) mongoc_cursor_current(recv); `}
+
+ # Wrapper for `mongoc_cursor_next()`.
+ #
+ # This function shall iterate the underlying cursor, setting `current` to the next
+ # document.
+ #
+ # This function is a blocking function.
+ fun next: Bool `{
+ const bson_t *doc;
+ return mongoc_cursor_next(recv, &doc);
+ `}
+
+ # Wrapper for `mongoc_cursor_more()`.
+ #
+ # This function shall indicate if there is more data to be read from the cursor.
+ fun more: Bool `{ return mongoc_cursor_more(recv); `}
+
+ # Wrapper for `mongoc_cursor_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ mongoc_cursor_destroy(recv); `}
+end
return hash_cache.as(not null)
end
+ # Gives the formatted string back as a Nit string with `args` in place
+ #
+ # assert "This %1 is a %2.".format("String", "formatted String") == "This String is a formatted String"
+ # assert "\\%1 This string".format("String") == "\\%1 This string"
+ fun format(args: Object...): String do
+ var s = new Array[Text]
+ var curr_st = 0
+ var i = 0
+ while i < length do
+ # Skip escaped characters
+ if self[i] == '\\' then
+ i += 1
+ # In case of format
+ else if self[i] == '%' then
+ var fmt_st = i
+ i += 1
+ var ciph_st = i
+ while i < length and self[i].is_numeric do
+ i += 1
+ end
+ i -= 1
+ var fmt_end = i
+ var ciph_len = fmt_end - ciph_st + 1
+ s.push substring(curr_st, fmt_st - curr_st)
+ s.push args[substring(ciph_st, ciph_len).to_i - 1].to_s
+ curr_st = i + 1
+ end
+ i += 1
+ end
+ s.push substring(curr_st, length - curr_st)
+ return s.to_s
+ end
+
end
# All kinds of array-based text representations.
" FFI Python
syntax include @FFIPython syntax/python.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"Python"/ nextgroup=NITFFIBlockPython skipwhite
+syn match NITFFILanguage /\c"Python"\ze.*`{/ nextgroup=NITFFIBlockPython skipwhite
syn region NITFFIBlockPython matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIPython
" FFI Java
syntax include @FFIJava syntax/java.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"Java\(\| inner\)"/ nextgroup=NITFFIBlockJava skipwhite
+syn match NITFFILanguage /\c"Java\(\| inner\)"\ze.*`{/ nextgroup=NITFFIBlockJava skipwhite
syn region NITFFIBlockJava matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIJava
" FFI C++
syntax include @FFICpp syntax/cpp.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"C++\(\| header\| body\)"/ nextgroup=NITFFIBlockCpp skipwhite
+syn match NITFFILanguage /\c"C++\(\| header\| body\)"\ze.*`{/ nextgroup=NITFFIBlockCpp skipwhite
syn region NITFFIBlockCpp matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFICpp
" FFI Objective-C
syntax include @FFIObjC syntax/objc.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"ObjC\(\| Header\| Body\)"/ nextgroup=NITFFIBlockObjC skipwhite
+syn match NITFFILanguage /\c"ObjC\(\| Header\| Body\)"\ze.*`{/ nextgroup=NITFFIBlockObjC skipwhite
syn region NITFFIBlockObjC matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIObjC
" FFI C (the last one is the default)
syntax include @FFIC syntax/c.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"C\(\| header\| body\)"/ nextgroup=NITFFIBlockC skipwhite
+syn match NITFFILanguage /\c"C\(\| header\| body\)"\ze.*`{/ nextgroup=NITFFIBlockC skipwhite
syn region NITFFIBlockC matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIC
hi def link NITFFILanguage Define
_n_kwif = new TKwif
_n_expr = condition
_n_expr.parent = self
+ _n_kwthen = new TKwthen
_n_then = new ABlockExpr.make
+ _n_kwelse = new TKwelse
_n_else = new ABlockExpr.make
self.mtype = mtype
self.is_typed = true
# files to compile TODO check is appropriate
var files = new Array[String]
- fun add_local_function( efc : CFunction )
+ # Add `c_function` as a `static` function local to this unit
+ fun add_local_function(c_function: CFunction)
do
- body_decl.add "static {efc.signature};\n"
+ body_decl.add "static {c_function.signature};\n"
body_impl.add "\n"
- body_impl.add efc.to_writer
+ body_impl.add c_function.to_writer
end
- fun add_exported_function( efc : CFunction )
+ # Add `c_function` as a public function to this unit
+ fun add_exported_function(c_function: CFunction)
do
- header_decl.add( "{efc.signature};\n" )
- body_impl.add( "\n" )
- body_impl.add( efc.to_writer )
+ header_decl.add "{c_function.signature};\n"
+ body_impl.add "\n"
+ body_impl.add c_function.to_writer
end
- fun compile_header_core( stream : Writer )
+ # Write the core of the header to `stream`
+ fun compile_header_core(stream: Writer)
do
- header_c_base.write_to( stream )
- header_custom.write_to( stream )
- header_c_types.write_to( stream )
- header_decl.write_to( stream )
+ header_c_base.write_to stream
+ header_custom.write_to stream
+ header_c_types.write_to stream
+ header_decl.write_to stream
end
- fun compile_body_core( stream : Writer )
+ # Write the core of the body to `stream`
+ fun compile_body_core(stream: Writer)
do
- body_decl.write_to( stream )
- body_custom.write_to( stream )
- body_impl.write_to( stream )
+ body_decl.write_to stream
+ body_custom.write_to stream
+ body_impl.write_to stream
end
end
# See the License for the specific language governing permissions and
# limitations under the License.
-# FFI support for the compilers
+# Full FFI support for the compiler
module compiler_ffi
-intrude import abstract_compiler
-intrude import ffi
+intrude import light
import nitni
redef class MModule
private var foreign_callbacks = new ForeignCallbackSet
- var nitni_ccu: nullable CCompilationUnit = null
-
- private fun nmodule(v: AbstractCompilerVisitor): nullable AModule
- do
- return v.compiler.modelbuilder.mmodule2node(self)
- end
redef fun finalize_ffi(compiler: AbstractCompiler)
do
if not uses_ffi then return
- var v = compiler.new_visitor
- var n = nmodule(v)
- if n == null then return
- n.ensure_compile_ffi_wrapper
- finalize_ffi_wrapper(v.compiler.modelbuilder.compile_dir, v.compiler.mainmodule)
- for file in ffi_files do v.compiler.extern_bodies.add(file)
-
- ensure_compile_nitni_base(v)
-
- nitni_ccu.header_c_types.add("#include \"{c_name}._ffi.h\"\n")
- nitni_ccu.header_c_types.add """
-extern void nitni_global_ref_incr(void*);
-extern void nitni_global_ref_decr(void*);
-"""
-
- var cflags = self.cflags[""].join(" ")
- nitni_ccu.write_as_nitni(self, v.compiler.modelbuilder.compile_dir)
-
- for file in nitni_ccu.files do
- var f = new ExternCFile(file, cflags)
- f.pkgconfigs.add_all pkgconfigs
- v.compiler.extern_bodies.add(f)
- end
+ super
- # reset FFI things so the next compilation job, if any, starts with a clean context
- # FIXME clean and rationalize this
- nitni_ccu = null
- compiled_ffi_methods.clear
- ffi_ccu = null
- ffi_files.clear
compiled_callbacks.clear
#Do not reset `foreign_callbacks` and `ffi_callbacks` because they are computed in previous phases
end
- private fun ensure_compile_nitni_base(v: AbstractCompilerVisitor)
- do
- if nitni_ccu != null then return
-
- nitni_ccu = new CCompilationUnit
- end
-
- redef fun collect_linker_libs
- do
- if not self.ldflags.keys.has("") then return null
- return self.ldflags[""]
- end
-
private var compiled_callbacks = new Array[NitniCallback]
# Returns true if callbacks has yet to be generated and register it as being generated
end
redef class AMethPropdef
- private fun compile_ffi_support_to_c(v: AbstractCompilerVisitor)
+ redef fun compile_ffi_support_to_c(v)
do
+ super
+
var mmodule = mpropdef.mclassdef.mmodule
var mainmodule = v.compiler.mainmodule
- var amodule = v.compiler.modelbuilder.mmodule2node(mmodule)
- var mclass_type = mpropdef.mclassdef.bound_mtype
-
- # Declare as extern
- var csignature = mpropdef.mproperty.build_csignature(mclass_type, mmodule, "___impl", long_signature, internal_call_context)
- v.declare_once("{csignature};")
-
- # FFI part
- amodule.ensure_compile_ffi_wrapper
- compile_ffi_method(mmodule)
-
- # nitni - Compile missing callbacks
- mmodule.ensure_compile_nitni_base(v)
var ccu = mmodule.nitni_ccu.as(not null)
for mtype in foreign_callbacks.types do
# manage nitni callback set
mmodule.foreign_callbacks.join(foreign_callbacks)
end
+end
- redef fun compile_externmeth_to_c(v, mpropdef, arguments)
+redef class MExplicitCall
+ private fun compile_extern_callback(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
do
- # if using the old native interface fallback on previous implementation
- if n_extern_code_block == null then return super
+ var mproperty = mproperty
+ assert mproperty isa MMethod
- var mmodule = mpropdef.mclassdef.mmodule
- mmodule.uses_ffi = true
+ # In nitni files, declare internal function as extern
+ var full_friendly_csignature = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
+ ccu.header_decl.add("extern {full_friendly_csignature};\n")
- var mclass_type = mpropdef.mclassdef.bound_mtype
+ if not compile_implementation_too then return
- # Outgoing code in compiler
- var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
- var recv_var: nullable RuntimeVariable = null
- var return_mtype = mpropdef.msignature.return_mtype
- if return_mtype != null then
- return_mtype = return_mtype.anchor_to(mmodule, mclass_type)
- recv_var = v.new_var(return_mtype)
- end
+ # Internally, implement internal function
+ var nitni_visitor = v.compiler.new_visitor
+ nitni_visitor.frame = v.frame
+ var msignature = mproperty.lookup_first_definition(v.compiler.mainmodule, recv_mtype).msignature
+ var csignature_blind = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
- v.adapt_signature(mpropdef, arguments)
- v.unbox_signature_extern(mpropdef, arguments)
-
- var arguments_for_c = new Array[String]
- for a in [0..arguments.length[ do
- var arg = arguments[a]
- var param_mtype: MType
- if a == 0 then
- param_mtype = mpropdef.mclassdef.mclass.mclass_type
- else param_mtype = mpropdef.msignature.mparameters[a-1].mtype
-
- param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
-
- if param_mtype.is_cprimitive then
- arguments_for_c.add(arg.name)
- else
- v.add("struct nitni_instance* var_for_c_{a};")
- v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
- v.add("var_for_c_{a}->value = {arg.name};")
- arguments_for_c.add("var_for_c_{a}")
- end
- end
+ nitni_visitor.add_decl("/* nitni callback for {mproperty.full_name} */")
+ nitni_visitor.add_decl("{csignature_blind} \{")
- if recv_var == null then
- v.add("{externname}({arguments_for_c.join(", ")});")
+ var vars = new Array[RuntimeVariable]
+ var mtype: MType = recv_mtype
+ var recv_var = null
+ if mproperty.is_init then
+ var recv_mtype = recv_mtype
+ recv_var = nitni_visitor.init_instance_or_extern(recv_mtype)
+ nitni_visitor.add("{mtype.ctype} recv /* var self: {mtype} */;")
+ nitni_visitor.add("recv = {recv_var};")
else
- assert return_mtype != null
- if return_mtype.is_cprimitive then
- v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
- else
- v.add("struct nitni_instance* ret_var;")
- v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
- v.add("{recv_var} = ret_var->value;")
- end
- recv_var = v.box_extern(recv_var, return_mtype)
- v.ret(recv_var)
+ mtype = mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
+ recv_var = nitni_visitor.var_from_c("recv", mtype)
+ recv_var = nitni_visitor.box_extern(recv_var, mtype)
end
- compile_ffi_support_to_c(v)
- return true
- end
-
- redef fun compile_externinit_to_c(v, mpropdef, arguments)
- do
- # if using the old native interface fallback on previous implementation
- if n_extern_code_block == null then return super
-
- var mmodule = mpropdef.mclassdef.mmodule
- mmodule.uses_ffi = true
-
- var mclass_type = mpropdef.mclassdef.bound_mtype
-
- var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
- var return_mtype = arguments.first.mtype
- var recv_var = v.new_var(return_mtype)
-
- v.adapt_signature(mpropdef, arguments)
- v.unbox_signature_extern(mpropdef, arguments)
-
- arguments.shift
-
- var arguments_for_c = new Array[String]
- for a in [0..arguments.length[ do
- var arg = arguments[a]
- var param_mtype: MType
- param_mtype = mpropdef.msignature.mparameters[a].mtype
- param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
-
- if param_mtype.is_cprimitive then
- arguments_for_c.add(arg.name)
- else
- v.add("struct nitni_instance* var_for_c_{a};")
- v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
- v.add("var_for_c_{a}->value = {arg.name};")
- arguments_for_c.add("var_for_c_{a}")
- end
- end
+ vars.add(recv_var)
- if return_mtype.is_cprimitive then
- v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
- else
- v.add("struct nitni_instance* ret_var;")
- v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
- v.add("{recv_var} = ret_var->value;")
+ for p in msignature.mparameters do
+ var arg_mtype = p.mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
+ var arg = nitni_visitor.var_from_c(p.name, arg_mtype)
+ arg = nitni_visitor.box_extern(arg, arg_mtype)
+ vars.add(arg)
end
- recv_var = v.box_extern(recv_var, return_mtype)
- v.ret(recv_var)
- compile_ffi_support_to_c(v)
- return true
- end
-end
-
-redef class CCompilationUnit
- fun write_as_nitni(mmodule: MModule, compdir: String)
- do
- var base_name = "{mmodule.c_name}._nitni"
-
- var h_file = "{base_name}.h"
- write_header_to_file( mmodule, "{compdir}/{h_file}", new Array[String],
- "{mmodule.c_name.to_s.to_upper}_NITG_NITNI_H")
-
- var c_file = "{base_name}.c"
- write_body_to_file( mmodule, "{compdir}/{c_file}", ["\"{h_file}\""] )
-
- files.add( "{compdir}/{c_file}" )
- end
-end
-
-redef class AbstractCompiler
- # Cache to avoid multiple compilation of NULL values
- # see FIXME in `MNullableType#compile_extern_helper_functions`
- private var compiled_null_types = new Array[MNullableType]
-end
+ var ret_var = nitni_visitor.send(mproperty, vars)
-redef class AbstractCompilerVisitor
- # Create a `RuntimeVariable` for this C variable originating from C user code
- private fun var_from_c(name: String, mtype: MType): RuntimeVariable
- do
- if mtype.is_cprimitive then
- return new RuntimeVariable(name, mtype, mtype)
- else
- return new RuntimeVariable("{name}->value", mtype, mtype)
+ var return_mtype = msignature.return_mtype
+ if mproperty.is_init then
+ if recv_mtype.mclass.kind != extern_kind then ret_var = recv_var
+ return_mtype = recv_mtype
end
- end
-
- # Return a `RuntimeVarible` to C user code
- private fun ret_to_c(src: RuntimeVariable, mtype: MType)
- do
- if mtype.is_cprimitive then
- add("return {src};")
- else
- add("struct nitni_instance* ret_for_c;")
- add("ret_for_c = nit_alloc(sizeof(struct nitni_instance));")
- add("ret_for_c->value = {src};")
- add("return ret_for_c;")
+ if return_mtype != null then
+ assert ret_var != null
+ return_mtype = return_mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
+ ret_var = nitni_visitor.autobox(ret_var, return_mtype)
+ ret_var = nitni_visitor.unbox_extern(ret_var, return_mtype)
+ nitni_visitor.ret_to_c(ret_var, return_mtype)
end
+ nitni_visitor.add("\}")
end
end
redef class MType
- private fun compile_extern_type(v: AbstractCompilerVisitor, ccu: CCompilationUnit)
- do
- assert not is_cprimitive
-
- # define friendly type
- ccu.header_c_types.add("#ifndef NIT_TYPE_{cname}\n")
- ccu.header_c_types.add("#define NIT_TYPE_{cname} 1\n")
- ccu.header_c_types.add("typedef struct nitni_instance *{cname};\n")
- ccu.header_c_types.add("#endif\n")
- end
-
private fun compile_extern_helper_functions(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
do
# actually, we do not need to do anything when using the bohem garbage collector
end
end
-redef class MExplicitCall
- private fun compile_extern_callback(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
- do
- var mproperty = mproperty
- assert mproperty isa MMethod
-
- # In nitni files, declare internal function as extern
- var full_friendly_csignature = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
- ccu.header_decl.add("extern {full_friendly_csignature};\n")
-
- if not compile_implementation_too then return
-
- # Internally, implement internal function
- var nitni_visitor = v.compiler.new_visitor
- nitni_visitor.frame = v.frame
- var msignature = mproperty.lookup_first_definition(v.compiler.mainmodule, recv_mtype).msignature
- var csignature_blind = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
-
- nitni_visitor.add_decl("/* nitni callback for {mproperty.full_name} */")
- nitni_visitor.add_decl("{csignature_blind} \{")
-
- var vars = new Array[RuntimeVariable]
- var mtype: MType = recv_mtype
- var recv_var = null
- if mproperty.is_init then
- var recv_mtype = recv_mtype
- recv_var = nitni_visitor.init_instance_or_extern(recv_mtype)
- nitni_visitor.add("{mtype.ctype} recv /* var self: {mtype} */;")
- nitni_visitor.add("recv = {recv_var};")
- else
- mtype = mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
- recv_var = nitni_visitor.var_from_c("recv", mtype)
- recv_var = nitni_visitor.box_extern(recv_var, mtype)
- end
-
- vars.add(recv_var)
-
- for p in msignature.mparameters do
- var arg_mtype = p.mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
- var arg = nitni_visitor.var_from_c(p.name, arg_mtype)
- arg = nitni_visitor.box_extern(arg, arg_mtype)
- vars.add(arg)
- end
-
- var ret_var = nitni_visitor.send(mproperty, vars)
-
- var return_mtype = msignature.return_mtype
- if mproperty.is_init then
- if recv_mtype.mclass.kind != extern_kind then ret_var = recv_var
- return_mtype = recv_mtype
- end
- if return_mtype != null then
- assert ret_var != null
- return_mtype = return_mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
- ret_var = nitni_visitor.autobox(ret_var, return_mtype)
- ret_var = nitni_visitor.unbox_extern(ret_var, return_mtype)
- nitni_visitor.ret_to_c(ret_var, return_mtype)
- end
- nitni_visitor.add("\}")
- end
-end
-
redef class MExplicitSuper
private fun compile_extern_callback(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
do
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2013-2015 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.
+
+# Light FFI support for the compiler
+module light
+
+intrude import abstract_compiler
+intrude import ffi::light_ffi
+
+redef class MModule
+ # `CCompilationUnit` used for nitni signatures and code specific to the compiler
+ var nitni_ccu: nullable CCompilationUnit = null
+
+ private fun nmodule(v: AbstractCompilerVisitor): nullable AModule
+ do
+ return v.compiler.modelbuilder.mmodule2node(self)
+ end
+
+ redef fun finalize_ffi(compiler: AbstractCompiler)
+ do
+ if not uses_ffi then return
+
+ var v = compiler.new_visitor
+ var n = nmodule(v)
+ if n == null then return
+ n.ensure_compile_ffi_wrapper
+ finalize_ffi_wrapper(v.compiler.modelbuilder.compile_dir, v.compiler.mainmodule)
+ for file in ffi_files do v.compiler.extern_bodies.add(file)
+
+ ensure_compile_nitni_base(v)
+
+ nitni_ccu.header_c_types.add("#include \"{c_name}._ffi.h\"\n")
+ nitni_ccu.header_c_types.add """
+extern void nitni_global_ref_incr(void*);
+extern void nitni_global_ref_decr(void*);
+"""
+
+ var cflags = self.cflags[""].join(" ")
+ nitni_ccu.write_as_nitni(self, v.compiler.modelbuilder.compile_dir)
+
+ for file in nitni_ccu.files do
+ var f = new ExternCFile(file, cflags)
+ f.pkgconfigs.add_all pkgconfigs
+ v.compiler.extern_bodies.add(f)
+ end
+
+ # reset FFI things so the next compilation job, if any, starts with a clean context
+ # FIXME clean and rationalize this
+ nitni_ccu = null
+ compiled_ffi_methods.clear
+ ffi_ccu = null
+ ffi_files.clear
+ end
+
+ private fun ensure_compile_nitni_base(v: AbstractCompilerVisitor)
+ do
+ if nitni_ccu != null then return
+
+ nitni_ccu = new CCompilationUnit
+ end
+
+ redef fun collect_linker_libs
+ do
+ if not self.ldflags.keys.has("") then return null
+ return self.ldflags[""]
+ end
+end
+
+redef class AMethPropdef
+ private fun compile_ffi_support_to_c(v: AbstractCompilerVisitor)
+ do
+ var mmodule = mpropdef.mclassdef.mmodule
+ var amodule = v.compiler.modelbuilder.mmodule2node(mmodule)
+ var mclass_type = mpropdef.mclassdef.bound_mtype
+
+ # Declare as extern
+ var csignature = mpropdef.mproperty.build_csignature(mclass_type, mmodule, "___impl", long_signature, internal_call_context)
+ v.declare_once("{csignature};")
+
+ # FFI part
+ amodule.ensure_compile_ffi_wrapper
+ compile_ffi_method(mmodule)
+
+ # nitni - Compile missing callbacks
+ mmodule.ensure_compile_nitni_base(v)
+ end
+
+ # Should we compile the extern method `self`?
+ #
+ # Returns false when restricting to the light FFI on methods using callbacks.
+ fun accept_externmeth: Bool do return true
+
+ redef fun compile_externmeth_to_c(v, mpropdef, arguments)
+ do
+ # if using the old native interface fallback on previous implementation
+ if n_extern_code_block == null then return super
+
+ if not accept_externmeth then return false
+
+ var mmodule = mpropdef.mclassdef.mmodule
+ mmodule.uses_ffi = true
+
+ var mclass_type = mpropdef.mclassdef.bound_mtype
+
+ # Outgoing code in compiler
+ var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
+ var recv_var: nullable RuntimeVariable = null
+ var return_mtype = mpropdef.msignature.return_mtype
+ if return_mtype != null then
+ return_mtype = return_mtype.anchor_to(mmodule, mclass_type)
+ recv_var = v.new_var(return_mtype)
+ end
+
+ v.adapt_signature(mpropdef, arguments)
+ v.unbox_signature_extern(mpropdef, arguments)
+
+ var arguments_for_c = new Array[String]
+ for a in [0..arguments.length[ do
+ var arg = arguments[a]
+ var param_mtype: MType
+ if a == 0 then
+ param_mtype = mpropdef.mclassdef.mclass.mclass_type
+ else param_mtype = mpropdef.msignature.mparameters[a-1].mtype
+
+ param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
+
+ if param_mtype.is_cprimitive then
+ arguments_for_c.add(arg.name)
+ else
+ v.add("struct nitni_instance* var_for_c_{a};")
+ v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
+ v.add("var_for_c_{a}->value = {arg.name};")
+ arguments_for_c.add("var_for_c_{a}")
+ end
+ end
+
+ if recv_var == null then
+ v.add("{externname}({arguments_for_c.join(", ")});")
+ else
+ assert return_mtype != null
+ if return_mtype.is_cprimitive then
+ v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
+ else
+ v.add("struct nitni_instance* ret_var;")
+ v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
+ v.add("{recv_var} = ret_var->value;")
+ end
+ recv_var = v.box_extern(recv_var, return_mtype)
+ v.ret(recv_var)
+ end
+
+ compile_ffi_support_to_c(v)
+ return true
+ end
+
+ redef fun compile_externinit_to_c(v, mpropdef, arguments)
+ do
+ # if using the old native interface fallback on previous implementation
+ if n_extern_code_block == null then return super
+
+ if not accept_externmeth then return false
+
+ var mmodule = mpropdef.mclassdef.mmodule
+ mmodule.uses_ffi = true
+
+ var mclass_type = mpropdef.mclassdef.bound_mtype
+
+ var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
+ var return_mtype = arguments.first.mtype
+ var recv_var = v.new_var(return_mtype)
+
+ v.adapt_signature(mpropdef, arguments)
+ v.unbox_signature_extern(mpropdef, arguments)
+
+ arguments.shift
+
+ var arguments_for_c = new Array[String]
+ for a in [0..arguments.length[ do
+ var arg = arguments[a]
+ var param_mtype: MType
+ param_mtype = mpropdef.msignature.mparameters[a].mtype
+ param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
+
+ if param_mtype.is_cprimitive then
+ arguments_for_c.add(arg.name)
+ else
+ v.add("struct nitni_instance* var_for_c_{a};")
+ v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
+ v.add("var_for_c_{a}->value = {arg.name};")
+ arguments_for_c.add("var_for_c_{a}")
+ end
+ end
+
+ if return_mtype.is_cprimitive then
+ v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
+ else
+ v.add("struct nitni_instance* ret_var;")
+ v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
+ v.add("{recv_var} = ret_var->value;")
+ end
+ recv_var = v.box_extern(recv_var, return_mtype)
+ v.ret(recv_var)
+
+ compile_ffi_support_to_c(v)
+ return true
+ end
+end
+
+redef class CCompilationUnit
+ # Compile a `_nitni` files, used to implement nitni features for the compiler
+ fun write_as_nitni(mmodule: MModule, compdir: String)
+ do
+ var base_name = "{mmodule.c_name}._nitni"
+
+ var h_file = "{base_name}.h"
+ write_header_to_file( mmodule, "{compdir}/{h_file}", new Array[String],
+ "{mmodule.c_name.to_s.to_upper}_NITG_NITNI_H")
+
+ var c_file = "{base_name}.c"
+ write_body_to_file( mmodule, "{compdir}/{c_file}", ["\"{h_file}\""] )
+
+ files.add( "{compdir}/{c_file}" )
+ end
+end
+
+redef class AbstractCompiler
+ # Cache to avoid multiple compilation of NULL values
+ # see FIXME in `MNullableType#compile_extern_helper_functions`
+ private var compiled_null_types = new Array[MNullableType]
+end
+
+redef class AbstractCompilerVisitor
+ # Create a `RuntimeVariable` for this C variable originating from C user code
+ private fun var_from_c(name: String, mtype: MType): RuntimeVariable
+ do
+ if mtype.is_cprimitive then
+ return new RuntimeVariable(name, mtype, mtype)
+ else
+ return new RuntimeVariable("{name}->value", mtype, mtype)
+ end
+ end
+
+ # Return a `RuntimeVarible` to C user code
+ private fun ret_to_c(src: RuntimeVariable, mtype: MType)
+ do
+ if mtype.is_cprimitive then
+ add("return {src};")
+ else
+ add("struct nitni_instance* ret_for_c;")
+ add("ret_for_c = nit_alloc(sizeof(struct nitni_instance));")
+ add("ret_for_c->value = {src};")
+ add("return ret_for_c;")
+ end
+ end
+end
+
+redef class MType
+ private fun compile_extern_type(v: AbstractCompilerVisitor, ccu: CCompilationUnit)
+ do
+ assert not is_cprimitive
+
+ # define friendly type
+ ccu.header_c_types.add("#ifndef NIT_TYPE_{cname}\n")
+ ccu.header_c_types.add("#define NIT_TYPE_{cname} 1\n")
+ ccu.header_c_types.add("typedef struct nitni_instance *{cname};\n")
+ ccu.header_c_types.add("#endif\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.
+
+# Compiler support for the light FFI only, detects unsupported usage of callbacks
+module light_only
+
+import light
+
+redef class MClassType
+ redef fun cname_normal_class do return "void*"
+end
+
+redef class AMethPropdef
+ redef fun accept_externmeth do return n_extern_calls == null
+end
module c
import ffi_base
+import light_c
-redef class FFILanguageAssignationPhase
- var c_language: FFILanguage = new CLanguage(self)
-end
-
-class CLanguage
- super FFILanguage
-
- redef fun identify_language(n) do return n.is_c
-
- redef fun compile_module_block(block, ecc, mmodule)
- do
- if block.is_c_header then
- ecc.header_custom.add block.location.as_line_pragma
- ecc.header_custom.add "\n"
- ecc.header_custom.add block.code
- else if block.is_c_body then
- ecc.body_impl.add block.location.as_line_pragma
- ecc.body_impl.add "\n"
- ecc.body_impl.add block.code
- end
- end
-
- redef fun compile_extern_method(block, m, ecc, mmodule)
- do
- var fc = new ExternCFunction(m, mmodule)
- fc.decls.add( block.location.as_line_pragma )
- fc.exprs.add( block.code )
- ecc.add_exported_function( fc )
- end
-
- redef fun compile_extern_class(block, m, ecc, mmodule) do end
-
- redef fun get_ftype(block, m) do return new ForeignCType(block.code)
-
+redef class CLanguage
redef fun compile_callback(callback, mmodule, mainmodule, ecc)
do
callback.compile_callback_to_c(mainmodule, ecc)
end
end
-redef class AExternCodeBlock
- fun is_c: Bool do return language_name == null or
- language_name_lowered == "c" or language_name_lowered.has_prefix( "c " )
-
- fun is_c_body: Bool do return language_name == null or
- language_name_lowered == "c" or language_name_lowered == "c body"
-
- fun is_c_header: Bool do return language_name_lowered == "c header"
-end
-
-redef class Location
- fun as_line_pragma: String do return "#line {line_start-1} \"{file.filename}\"\n"
-end
-
-redef class MModule
- # FIXME make nullable the key of `cflags`, `ldflags` and `cppflags` when
- # supported by the bootstrap
-
- # Custom options for the C compiler (CFLAGS)
- var cflags = new MultiHashMap[String, String]
-
- # Custom options for the C linker (LDFLAGS)
- var ldflags = new MultiHashMap[String, String]
-
- # Additional libraries needed for the compilation
- # Will be used with pkg-config
- var pkgconfigs = new Array[String]
-end
-
-class ForeignCType
- super ForeignType
-
- redef var ctype: String
-end
-
redef class NitniCallback
fun compile_callback_to_c(mmodule: MModule, ffi_ccu: CCompilationUnit) do end
end
-redef class Object
- # Context when calling user C code from generated code
- fun to_c_call_context: ToCCallContext do return once new ToCCallContext
-
- # Context when calling generated code from user C code
- fun from_c_call_context: FromCCallContext do return once new FromCCallContext
-end
-
redef class MExplicitCall
redef fun compile_callback_to_c(mmodule, ffi_ccu)
do
ffi_ccu.body_decl.add("#define {friendly_cname} {full_cname}\n")
end
end
-
-# Context when calling user C code from generated code
-class ToCCallContext
- super CallContext
-
- # TODO: private init because singleton instance (see `to_c_call_context`)
-
- redef fun name_mtype(mtype)
- do
- if mtype isa MClassType and mtype.mclass.kind == extern_kind then return "void *"
- return mtype.cname
- end
-end
-
-# Context when calling generated code from user C code
-class FromCCallContext
- super CallContext
-
- # TODO: private init because singleton instance (see `from_c_call_context`)
-
- redef fun name_mtype(mtype) do return mtype.cname
-end
-
-class ExternCFunction
- super CFunction
-
- var method: AMethPropdef
-
- init (method: AMethPropdef, mmodule: MModule)
- do
- self.method = method
-
- var recv_mtype = method.mpropdef.mclassdef.bound_mtype
- var csignature = method.mpropdef.mproperty.build_csignature(recv_mtype, mmodule, "___impl", long_signature, from_c_call_context)
-
- super( csignature )
- end
-end
# Manages all extern classes and their associated foreign type.
module extern_classes
-import ffi_base
+import light_ffi_base
+import modelize
redef class ToolContext
var extern_classes_typing_phase_ast: Phase = new ExternClassesTypingPhaseAst(self, [ffi_language_assignation_phase, modelize_class_phase])
# See the License for the specific language governing permissions and
# limitations under the License.
-# FFI concers common between the compilers and the interpreter.
-# Offers services to compile modules using foreign code. Mainly allows
-# to wrap foreign code in Nit methods.
+# Full FFI support, independent of the compiler
+#
+# The full FFI support all the features of the light FFI and more:
+#
+# * More foreign languages: **C++, Java and Objective-C**.
+# * **Callbacks** to Nit from foreign codes.
+# The callbacks are declared in Nit using the `import` annotation on extern methods.
+# They are then generated on demand for the target foreign language.
+# * **Static Nit types** in C for precise typing and static typing errors in C.
+# * **Propagating public code blocks** at the module level (C Header).
+# This allows to use extern classes in foreign code in other modules
+# without having to import the related headers.
+# This is optional in C as it is easy to find the correct importation.
+# However it is important in Java and other complex FFIs.
+# * **Reference pinning** of Nit objects from foreign code.
+# This ensure that objects referenced from foreign code are not liberated by the GC.
+# * FFI **annotations**:
+# * `cflags`, `ldflags` and `cppflags` pass arguments to the C and C++
+# compilers and linker.
+# * `pkgconfig` calls the `pkg-config` program to get the arguments
+# to pass to the C copiler and linker.
+# * `extra_java_files` adds Java source file to the compilation chain.
module ffi
import modelbuilder
import java
import extra_java_files
import objc
+intrude import light_ffi
redef class MModule
- # Does this module uses the FFI?
- var uses_ffi: Bool = false
-
- # C compilation unit for the FFI files
- private var ffi_ccu: nullable CCompilationUnit = null
-
- # Foreign language used in this AModule
- private var present_languages = new HashSet[FFILanguage]
-
# Complete the compilation of the FFI code
- fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)
+ redef fun finalize_ffi_wrapper(compdir, mainmodule)
do
for language in ffi_callbacks.keys do
for callback in ffi_callbacks[language] do
if mod.uses_ffi then ffi_ccu.header_custom.add("#include \"{mod.c_name}._ffi.h\"\n")
end
- var cflags = self.cflags[""].join(" ")
-
- ffi_ccu.write_as_impl(self, compdir)
- for filename in ffi_ccu.files do
- var f = new ExternCFile(filename, cflags)
- f.pkgconfigs.add_all pkgconfigs
- ffi_files.add(f)
- end
- end
-
- # Avoid the compile a ffi propdef more than once
- # See `AMethPropdef::compile_ffi_method`
- # FIXME find a better way
- private var compiled_ffi_methods = new HashSet[AMethPropdef]
-end
-
-redef class AModule
-
- # Ensures all of the general foreign code of the module has been analyzed.
- # Manages header blocks, extern class types and foreign dependancies between modules
- fun ensure_compile_ffi_wrapper
- do
- var mmodule = mmodule
- if mmodule == null or mmodule.ffi_ccu != null then return
-
- # ready extern code compiler
- var ffi_ccu = new CCompilationUnit
- mmodule.ffi_ccu = ffi_ccu
-
- # generate code
- for block in n_extern_code_blocks do
- var language = block.language
- assert language != null
- mmodule.present_languages.add(language)
- language.compile_module_block(block, ffi_ccu, mmodule)
- end
-
- ffi_ccu.header_c_base.add( "#include \"{mmodule.c_name}._nitni.h\"\n" )
-
- ffi_ccu.body_decl.add("#ifdef ANDROID\n")
- ffi_ccu.body_decl.add(" #include <android/log.h>\n")
- ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)\n")
- ffi_ccu.body_decl.add("#else\n")
- ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) fprintf(stderr, __VA_ARGS__)\n")
- ffi_ccu.body_decl.add("#endif\n")
-
- for nclassdef in n_classdefs do
- # Does it declares an extern type?
- if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
- mmodule.uses_ffi = true
- var language = nclassdef.n_extern_code_block.language
- assert language != null
- mmodule.present_languages.add(language)
- nclassdef.n_extern_code_block.language.compile_extern_class(
- nclassdef.n_extern_code_block.as(not null), nclassdef, ffi_ccu, mmodule)
- end
- end
+ super
end
end
-redef class AMethPropdef
- # Compile the necessary wrapper around this extern method or constructor
- fun compile_ffi_method(mmodule: MModule)
- do
- assert n_extern_code_block != null
-
- if mmodule.compiled_ffi_methods.has(self) then return
- mmodule.compiled_ffi_methods.add self
-
- var language = n_extern_code_block.language
- assert language != null
- mmodule.present_languages.add(language)
- n_extern_code_block.language.compile_extern_method(
- n_extern_code_block.as(not null), self, mmodule.ffi_ccu.as(not null), mmodule)
- end
-end
redef class VerifyNitniCallbacksPhase
redef fun process_npropdef(npropdef)
# See the License for the specific language governing permissions and
# limitations under the License.
-# Tools and utilities for language targetted FFI implementations
+# Tools and utilities for implement FFI with different languages
module ffi_base
import c_tools
import modelbuilder
import nitni
-redef class ToolContext
- var ffi_language_assignation_phase: Phase = new FFILanguageAssignationPhase(self, null)
-end
-
-class FFILanguageAssignationPhase
- super Phase
-
- # All supported languages
- var languages = new Array[FFILanguage]
-
- redef fun process_nmodule(nmodule)
- do
- for block in nmodule.n_extern_code_blocks do
- verify_foreign_code_on_node( block )
- end
- end
-
- redef fun process_npropdef(npropdef)
- do
- if npropdef isa AMethPropdef then
- var code_block = npropdef.n_extern_code_block
- if code_block != null then
- verify_foreign_code_on_node( code_block )
- end
- end
- end
-
- redef fun process_nclassdef(nclassdef)
- do
- if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
- verify_foreign_code_on_node( nclassdef.n_extern_code_block.as(not null) )
- end
- end
-
- private fun verify_foreign_code_on_node(n: AExternCodeBlock)
- do
- var found = false
- for v in languages do
- var identified = v.identify_language(n)
- if identified then
- if found and identified then
- toolcontext.error(n.location, "FFI Error: two languages identified as possible handlers.")
- end
- n.language = v
- found = true
- end
- end
-
- if not found then toolcontext.error(n.location, "FFI Error: unsupported language.")
- end
-end
+import light_ffi_base
redef class MModule
- var ffi_files = new Array[ExternFile]
-
# Callbacks used by this module, classified by language
var ffi_callbacks = new HashMap[FFILanguage, Set[NitniCallback]]
end
-redef class AExternCodeBlock
- fun language_name: nullable String do
- if n_in_language == null then return null
- return n_in_language.n_string.without_quotes
- end
- fun language_name_lowered: nullable String do
- if language_name == null then return null
- return language_name.to_lower
- end
-
- fun code: String do return n_extern_code_segment.without_guard
-
- var language: nullable FFILanguage = null
-end
-
# Visitor for a specific languages. Works kinda like a `Phase` and is executed
# by a `Phase`.
-class FFILanguage
- var ffi_language_assignation_phase: FFILanguageAssignationPhase
-
- init
- do
- ffi_language_assignation_phase.languages.add(self)
- end
-
- # Is this `block` written in this language?
- fun identify_language(block: AExternCodeBlock ): Bool is abstract
-
- # Generate wrapper code for this module/header code block
- fun compile_module_block(block: AExternCodeBlock, ecc: CCompilationUnit, mmodule: MModule) is abstract
-
- # Generate wrapper code for this extern method
- fun compile_extern_method(block: AExternCodeBlock, m: AMethPropdef,
- ecc: CCompilationUnit, nmodule: MModule) is abstract
-
- # Generate wrapper code for this extern class
- fun compile_extern_class(block: AExternCodeBlock, m: AClassdef,
- ecc: CCompilationUnit, mmodule: MModule) is abstract
-
- # Get the foreign type of this extern class definition
- fun get_ftype(block: AExternCodeBlock, m: AClassdef): ForeignType is abstract
-
+redef class FFILanguage
# Generate the code to offer this callback if foreign code
fun compile_callback(callback: NitniCallback, mmodule: MModule,
mainmmodule: MModule, ecc: CCompilationUnit) is abstract
-
- # Complete compilation of generated code
- fun compile_to_files(mmodule: MModule, directory: String) do end
-end
-
-redef class TString
- # Returns the content of this node without both of the surrounding "
- fun without_quotes: String
- do
- assert text.length >= 2
- return text.substring(1, text.length-2)
- end
-end
-
-redef class TExternCodeSegment
- # Returns the content of this node without the surrounding `{ and `}
- fun without_guard: String
- do
- assert text.length >= 4
- return text.substring(2, text.length-4)
- end
-end
-
-redef class CCompilationUnit
- fun write_as_impl(mmodule: MModule, compdir: String)
- do
- var base_name = "{mmodule.c_name}._ffi"
-
- var h_file = "{base_name}.h"
- var guard = "{mmodule.c_name.to_upper}_NIT_H"
- write_header_to_file(mmodule, "{compdir}/{h_file}", new Array[String], guard)
-
- var c_file = "{base_name}.c"
- write_body_to_file(mmodule, "{compdir}/{c_file}", ["<stdlib.h>", "<stdio.h>", "\"{h_file}\""])
-
- files.add( "{compdir}/{c_file}" )
- end
-
- fun write_header_to_file(mmodule: MModule, file: String, includes: Array[String], guard: String)
- do
- var stream = new FileWriter.open( file )
-
- # header comments
- var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
-
- stream.write( module_info )
-
- stream.write( "#ifndef {guard}\n" )
- stream.write( "#define {guard}\n\n" )
-
- for incl in includes do stream.write( "#include {incl}\n" )
-
- compile_header_core( stream )
-
- # header file guard close
- stream.write( "#endif\n" )
- stream.close
- end
-
- fun write_body_to_file(mmodule: MModule, file: String, includes: Array[String])
- do
- var stream = new FileWriter.open(file)
-
- var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
-
- stream.write( module_info )
- for incl in includes do stream.write( "#include {incl}\n" )
-
- compile_body_core( stream )
-
- stream.close
- end
-end
-
-class ForeignType
- fun ctype: String do return "void*"
end
var csignature = mproperty.build_c_implementation_signature(recv_mtype, mmodule, "___indirect", long_signature, from_java_call_context)
var cf = new CFunction("JNIEXPORT {csignature}")
cf.exprs.add "\t{mproperty.build_ccall(recv_mtype, mainmodule, null, long_signature, from_java_call_context, null)}\n"
- ccu.add_local_function cf
+ ccu.add_non_static_local_function cf
# In Java, declare the extern method as a private static local method
var java_signature = mproperty.build_csignature(recv_mtype, mainmodule, null, short_signature, java_call_context)
private fun java_call_context: JavaCallContext do return new JavaCallContext
private fun to_java_call_context: ToJavaCallContext do return new ToJavaCallContext
private fun from_java_call_context: FromJavaCallContext do return new FromJavaCallContext
+
+redef class CCompilationUnit
+ # Similar to `add_local_function` but not `static`
+ #
+ # Used when the signature contains a visibility attribute.
+ private fun add_non_static_local_function(c_function: CFunction)
+ do
+ body_decl.add c_function.signature
+ body_decl.add ";\n"
+
+ body_impl.add "\n"
+ body_impl.add c_function.to_writer
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2014 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.
+
+# Support for nesting C code within a Nit program using its FFI
+module light_c
+
+import modelize::modelize_property
+
+import light_ffi_base
+
+redef class FFILanguageAssignationPhase
+ var c_language: FFILanguage = new CLanguage(self)
+end
+
+class CLanguage
+ super FFILanguage
+
+ redef fun identify_language(n) do return n.is_c
+
+ redef fun compile_module_block(block, ecc, mmodule)
+ do
+ if block.is_c_header then
+ ecc.header_custom.add block.location.as_line_pragma
+ ecc.header_custom.add "\n"
+ ecc.header_custom.add block.code
+ else if block.is_c_body then
+ ecc.body_impl.add block.location.as_line_pragma
+ ecc.body_impl.add "\n"
+ ecc.body_impl.add block.code
+ end
+ end
+
+ redef fun compile_extern_method(block, m, ecc, mmodule)
+ do
+ var fc = new ExternCFunction(m, mmodule)
+ fc.decls.add( block.location.as_line_pragma )
+ fc.exprs.add( block.code )
+ ecc.add_exported_function( fc )
+ end
+
+ redef fun compile_extern_class(block, m, ecc, mmodule) do end
+
+ redef fun get_ftype(block, m) do return new ForeignCType(block.code)
+end
+
+redef class AExternCodeBlock
+ fun is_c: Bool do return language_name == null or
+ language_name_lowered == "c" or language_name_lowered.has_prefix( "c " )
+
+ fun is_c_body: Bool do return language_name == null or
+ language_name_lowered == "c" or language_name_lowered == "c body"
+
+ fun is_c_header: Bool do return language_name_lowered == "c header"
+end
+
+redef class Location
+ fun as_line_pragma: String do return "#line {line_start-1} \"{file.filename}\"\n"
+end
+
+redef class MModule
+ # FIXME make nullable the key of `cflags`, `ldflags` and `cppflags` when
+ # supported by the bootstrap
+
+ # Custom options for the C compiler (CFLAGS)
+ var cflags = new MultiHashMap[String, String]
+
+ # Custom options for the C linker (LDFLAGS)
+ var ldflags = new MultiHashMap[String, String]
+
+ # Additional libraries needed for the compilation
+ # Will be used with pkg-config
+ var pkgconfigs = new Array[String]
+end
+
+class ForeignCType
+ super ForeignType
+
+ redef var ctype: String
+end
+
+redef class Object
+ # Context when calling user C code from generated code
+ fun to_c_call_context: ToCCallContext do return once new ToCCallContext
+
+ # Context when calling generated code from user C code
+ fun from_c_call_context: FromCCallContext do return once new FromCCallContext
+end
+
+# Context when calling user C code from generated code
+class ToCCallContext
+ super CallContext
+
+ # TODO: private init because singleton instance (see `to_c_call_context`)
+
+ redef fun name_mtype(mtype)
+ do
+ if mtype isa MClassType and mtype.mclass.kind == extern_kind then return "void *"
+ return mtype.cname
+ end
+end
+
+# Context when calling generated code from user C code
+class FromCCallContext
+ super CallContext
+
+ # TODO: private init because singleton instance (see `from_c_call_context`)
+
+ redef fun name_mtype(mtype) do return mtype.cname
+end
+
+class ExternCFunction
+ super CFunction
+
+ var method: AMethPropdef
+
+ init (method: AMethPropdef, mmodule: MModule)
+ do
+ self.method = method
+
+ var recv_mtype = method.mpropdef.mclassdef.bound_mtype
+ var csignature = method.mpropdef.mproperty.build_csignature(recv_mtype, mmodule, "___impl", long_signature, from_c_call_context)
+
+ super( csignature )
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 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.
+
+# Light FFI support, independent of the compiler
+#
+# The light FFI offers only basic FFI features:
+#
+# * **Extern methods** implemented in C, nested within the Nit code.
+# The body of these method is copied directly to the generated C files for compilation.
+# Also supports extern `new` factories.
+# * Module level **C code blocks**, both "C Body" (the default) and "C Header".
+# They will be copied to the beginning of the generated C files.
+# * Automatic transformation of Nit **primitive types** from/to their equivalent in C.
+# * **Extern classes** to create a Nit class around a C pointer.
+# Allows to specify the equivalent C type of the Nit extern class.
+#
+# These limited features should be easy to implement in new/alternative engines
+# to quickly achieve a bootstrap. For this reason, core features of the Nit
+# standard library should be limited to use the light FFI.
+module light_ffi
+
+import modelbuilder
+
+import nitni::nitni_utilities
+
+intrude import light_ffi_base
+import extern_classes
+import light_c
+
+redef class MModule
+ # Does this module uses the FFI?
+ var uses_ffi: Bool = false
+
+ # C compilation unit for the FFI files
+ private var ffi_ccu: nullable CCompilationUnit = null
+
+ # Foreign language used in this AModule
+ private var present_languages = new HashSet[FFILanguage]
+
+ # Complete the compilation of the FFI code
+ fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)
+ do
+ var cflags = self.cflags[""].join(" ")
+
+ ffi_ccu.write_as_impl(self, compdir)
+ for filename in ffi_ccu.files do
+ var f = new ExternCFile(filename, cflags)
+ f.pkgconfigs.add_all pkgconfigs
+ ffi_files.add(f)
+ end
+ end
+
+ # Avoid the compile a ffi propdef more than once
+ # See `AMethPropdef::compile_ffi_method`
+ # FIXME find a better way
+ private var compiled_ffi_methods = new HashSet[AMethPropdef]
+end
+
+redef class AModule
+
+ # Ensures all of the general foreign code of the module has been analyzed.
+ # Manages header blocks, extern class types and foreign dependancies between modules
+ fun ensure_compile_ffi_wrapper
+ do
+ var mmodule = mmodule
+ if mmodule == null or mmodule.ffi_ccu != null then return
+
+ # ready extern code compiler
+ var ffi_ccu = new CCompilationUnit
+ mmodule.ffi_ccu = ffi_ccu
+
+ # generate code
+ for block in n_extern_code_blocks do
+ var language = block.language
+ assert language != null
+ mmodule.present_languages.add(language)
+ language.compile_module_block(block, ffi_ccu, mmodule)
+ end
+
+ ffi_ccu.header_c_base.add( "#include \"{mmodule.c_name}._nitni.h\"\n" )
+
+ ffi_ccu.body_decl.add("#ifdef ANDROID\n")
+ ffi_ccu.body_decl.add(" #include <android/log.h>\n")
+ ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)\n")
+ ffi_ccu.body_decl.add("#else\n")
+ ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) fprintf(stderr, __VA_ARGS__)\n")
+ ffi_ccu.body_decl.add("#endif\n")
+
+ for nclassdef in n_classdefs do
+ # Does it declares an extern type?
+ if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
+ mmodule.uses_ffi = true
+ var language = nclassdef.n_extern_code_block.language
+ assert language != null
+ mmodule.present_languages.add(language)
+ nclassdef.n_extern_code_block.language.compile_extern_class(
+ nclassdef.n_extern_code_block.as(not null), nclassdef, ffi_ccu, mmodule)
+ end
+ end
+ end
+end
+
+redef class AMethPropdef
+ # Compile the necessary wrapper around this extern method or constructor
+ fun compile_ffi_method(mmodule: MModule)
+ do
+ assert n_extern_code_block != null
+
+ if mmodule.compiled_ffi_methods.has(self) then return
+ mmodule.compiled_ffi_methods.add self
+
+ var language = n_extern_code_block.language
+ assert language != null
+ mmodule.present_languages.add(language)
+ n_extern_code_block.language.compile_extern_method(
+ n_extern_code_block.as(not null), self, mmodule.ffi_ccu.as(not null), mmodule)
+ end
+end
--- /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.
+
+# Tools and utilities for implement FFI with different languages
+module light_ffi_base
+
+import c_tools
+import parser
+import modelbuilder
+import nitni::nitni_utilities
+
+redef class ToolContext
+ # Phase that assign a `FFILanguage` to all `AExternCodeBlock`
+ var ffi_language_assignation_phase: Phase = new FFILanguageAssignationPhase(self, null)
+end
+
+# Phase that assign a `FFILanguage` to all `AExternCodeBlock`
+#
+# It will also report errors when using an unknown foreign langages.
+class FFILanguageAssignationPhase
+ super Phase
+
+ # All supported languages
+ var languages = new Array[FFILanguage]
+
+ redef fun process_nmodule(nmodule)
+ do
+ for block in nmodule.n_extern_code_blocks do
+ verify_foreign_code_on_node( block )
+ end
+ end
+
+ redef fun process_npropdef(npropdef)
+ do
+ if npropdef isa AMethPropdef then
+ var code_block = npropdef.n_extern_code_block
+ if code_block != null then
+ verify_foreign_code_on_node( code_block )
+ end
+ end
+ end
+
+ redef fun process_nclassdef(nclassdef)
+ do
+ if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
+ verify_foreign_code_on_node( nclassdef.n_extern_code_block.as(not null) )
+ end
+ end
+
+ private fun verify_foreign_code_on_node(n: AExternCodeBlock)
+ do
+ var found = false
+ for v in languages do
+ var identified = v.identify_language(n)
+ if identified then
+ if found and identified then
+ toolcontext.error(n.location, "FFI Error: two languages identified as possible handlers.")
+ end
+ n.language = v
+ found = true
+ end
+ end
+
+ if not found then toolcontext.error(n.location, "FFI Error: unsupported language.")
+ end
+end
+
+redef class MModule
+ # All FFI files linked to this module
+ var ffi_files = new Array[ExternFile]
+end
+
+redef class AExternCodeBlock
+ # User entered name for the language of this block
+ fun language_name: nullable String do
+ if n_in_language == null then return null
+ return n_in_language.n_string.without_quotes
+ end
+
+ # `language_name`, in lower case
+ protected fun language_name_lowered: nullable String do
+ if language_name == null then return null
+ return language_name.to_lower
+ end
+
+ # User entered foreign code in the block
+ fun code: String do return n_extern_code_segment.without_guard
+
+ # `FFILanguage` assigned to this block
+ var language: nullable FFILanguage = null
+end
+
+# Visitor for a specific languages. Works kinda like a `Phase` and is executed
+# by a `Phase`.
+class FFILanguage
+ # `FFILanguageAssignationPhase` assigning `self` to `AExternCodeBlock`s
+ var ffi_language_assignation_phase: FFILanguageAssignationPhase
+
+ init
+ do
+ ffi_language_assignation_phase.languages.add(self)
+ end
+
+ # Is this `block` written in this language?
+ fun identify_language(block: AExternCodeBlock ): Bool is abstract
+
+ # Generate wrapper code for this module/header code block
+ fun compile_module_block(block: AExternCodeBlock, ecc: CCompilationUnit, mmodule: MModule) is abstract
+
+ # Generate wrapper code for this extern method
+ fun compile_extern_method(block: AExternCodeBlock, m: AMethPropdef,
+ ecc: CCompilationUnit, nmodule: MModule) is abstract
+
+ # Generate wrapper code for this extern class
+ fun compile_extern_class(block: AExternCodeBlock, m: AClassdef,
+ ecc: CCompilationUnit, mmodule: MModule) is abstract
+
+ # Get the foreign type of this extern class definition
+ fun get_ftype(block: AExternCodeBlock, m: AClassdef): ForeignType is abstract
+
+ # Complete compilation of generated code
+ fun compile_to_files(mmodule: MModule, directory: String) do end
+end
+
+redef class TString
+ # Returns the content of this node without both of the surrounding "
+ fun without_quotes: String
+ do
+ assert text.length >= 2
+ return text.substring(1, text.length-2)
+ end
+end
+
+redef class TExternCodeSegment
+ # Returns the content of this node without the surrounding `{ and `}
+ fun without_guard: String
+ do
+ assert text.length >= 4
+ return text.substring(2, text.length-4)
+ end
+end
+
+redef class CCompilationUnit
+ # Compile as `_ffi` files which contains the implementation of extern methods
+ fun write_as_impl(mmodule: MModule, compdir: String)
+ do
+ var base_name = "{mmodule.c_name}._ffi"
+
+ var h_file = "{base_name}.h"
+ var guard = "{mmodule.c_name.to_upper}_NIT_H"
+ write_header_to_file(mmodule, "{compdir}/{h_file}", new Array[String], guard)
+
+ var c_file = "{base_name}.c"
+ write_body_to_file(mmodule, "{compdir}/{c_file}", ["<stdlib.h>", "<stdio.h>", "\"{h_file}\""])
+
+ files.add( "{compdir}/{c_file}" )
+ end
+
+ # Write the header part to `file` including all `includes` using the `guard`
+ fun write_header_to_file(mmodule: MModule, file: String, includes: Array[String], guard: String)
+ do
+ var stream = new FileWriter.open( file )
+
+ # header comments
+ var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
+
+ stream.write( module_info )
+
+ stream.write( "#ifndef {guard}\n" )
+ stream.write( "#define {guard}\n\n" )
+
+ for incl in includes do stream.write( "#include {incl}\n" )
+
+ compile_header_core( stream )
+
+ # header file guard close
+ stream.write( "#endif\n" )
+ stream.close
+ end
+
+ # Write the body part to `file` including all `includes`
+ fun write_body_to_file(mmodule: MModule, file: String, includes: Array[String])
+ do
+ var stream = new FileWriter.open(file)
+
+ var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
+
+ stream.write( module_info )
+ for incl in includes do stream.write( "#include {incl}\n" )
+
+ compile_body_core( stream )
+
+ stream.close
+ end
+end
+
+# Foreign equivalent types of extern classes
+class ForeignType
+ # C type of `self`, by default it is `void*`
+ fun ctype: String do return "void*"
+end
if e isa AAnnotation then return
super
end
+
+ # Adds a String to the list of strings of the module
+ #
+ # The string needs to be pre-formatted to C standards (escape_to_c)
+ fun add_string(s: String, loc: Location) do
+ var locstr = "{amodule.mmodule.mgroup.name}::{amodule.mmodule.name} {loc.line_start}--{loc.column_start}:{loc.column_end}"
+ if not strings.has_key(s) then
+ var po = new PObject([locstr], s, "")
+ strings[s] = po
+ else
+ strings[s].locations.push locstr
+ end
+ end
end
redef class ANode
redef fun accept_string_finder(v) do
var str = value.as(not null).escape_to_c
var parse = v.toolcontext.parse_expr("\"{str}\".get_translation(\"{v.domain}\", \"{v.languages_location}\").unescape_nit")
- var loc = location
- var locstr = "{v.amodule.mmodule.mgroup.name}::{v.amodule.mmodule.name} {loc.line_start}--{loc.column_start}:{loc.column_end}"
- if not v.strings.has_key(str) then
- var po = new PObject([locstr], str, "")
- v.strings[str] = po
- else
- v.strings[str].locations.push locstr
- end
replace_with(parse)
+ v.add_string(str, location)
+ end
+end
+
+redef class ASuperstringExpr
+
+ redef fun accept_string_finder(v) do
+ var fmt = ""
+ var exprs = new Array[AExpr]
+ for i in n_exprs do
+ if i isa AStringFormExpr then
+ fmt += i.value.as(not null)
+ else
+ fmt += "%"
+ exprs.push i
+ fmt += exprs.length.to_s
+ end
+ end
+ fmt = fmt.escape_to_c
+ v.add_string(fmt, location)
+ var parse = v.toolcontext.parse_expr("\"{fmt}\".get_translation(\"{v.domain}\", \"{v.languages_location}\").unescape_nit.format()")
+ if not parse isa ACallExpr then
+ v.toolcontext.error(location, "Fatal error in i18n annotation, the parsed superstring could not be generated properly")
+ return
+ end
+ var parse_exprs = parse.n_args.n_exprs
+ parse_exprs.add_all exprs
+ replace_with parse
end
end
var initializers = new Array[MProperty]
for npropdef in nclassdef.n_propdefs do
if npropdef isa AMethPropdef then
- if npropdef.mpropdef == null then return # Skip broken attribute
+ if npropdef.mpropdef == null then return # Skip broken method
var at = npropdef.get_single_annotation("autoinit", self)
if at == null then continue # Skip non tagged init
npropdef.mpropdef.mproperty.is_autoinit = true
end
if npropdef isa AAttrPropdef then
- if npropdef.mpropdef == null then return # Skip broken attribute
+ var mreadpropdef = npropdef.mreadpropdef
+ if mreadpropdef == null or mreadpropdef.msignature == null then return # Skip broken attribute
if npropdef.noinit then continue # Skip noinit attribute
var atautoinit = npropdef.get_single_annotation("autoinit", self)
if atautoinit != null then
# For autoinit attributes, call the reader to force
# the lazy initialization of the attribute.
- initializers.add(npropdef.mreadpropdef.mproperty)
- npropdef.mreadpropdef.mproperty.is_autoinit = true
+ initializers.add(mreadpropdef.mproperty)
+ mreadpropdef.mproperty.is_autoinit = true
continue
end
if npropdef.has_value then continue
- var paramname = npropdef.mpropdef.mproperty.name.substring_from(1)
- var ret_type = npropdef.mpropdef.static_mtype
+ var paramname = mreadpropdef.mproperty.name
+ var ret_type = mreadpropdef.msignature.return_mtype
if ret_type == null then return
var mparameter = new MParameter(paramname, ret_type, false, ret_type isa MNullableType)
mparameters.add(mparameter)
var msetter = npropdef.mwritepropdef
if msetter == null then
- # No setter, it is a old-style attribute, so just add it
+ # No setter, it is a readonly attribute, so just add it
initializers.add(npropdef.mpropdef.mproperty)
npropdef.mpropdef.mproperty.is_autoinit = true
else
import rapid_type_analysis
import compiler::separate_erasure_compiler
+import compiler::compiler_ffi::light_only
+
redef class ToolContext
redef fun process_options(args)
do
assert ctype != null
return ctype
end
- return mangled_cname
+ return cname_normal_class
end
redef fun cname_blind do
return "struct nitni_instance *"
end
+ # Name of this type in C for normal classes (not extern and not primitive)
+ protected fun cname_normal_class: String do return mangled_cname
+
redef fun mangled_cname do return mclass.name
redef fun is_cprimitive do return mclass.kind == extern_kind or
/* CLASSES *******************************************************************/
classdef
- = [doc]:nd redef visibility classkind no qclassid formaldefs extern_code_block? propdefs kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, qclassid.classid, [formaldefs.formaldef], extern_code_block, [propdefs.propdef], kwend)};
+ = [doc]:nd redef visibility classkind no qclassid extern_code_block? propdefs kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, qclassid.classid, Null, [], Null, extern_code_block, [propdefs.propdef], kwend)}
+ | {for} [doc]:nd redef visibility classkind no qclassid obra [n2]:no formaldefs cbra extern_code_block? propdefs kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, qclassid.classid, obra, [formaldefs.formaldef], cbra, extern_code_block, [propdefs.propdef], kwend)}
+ ;
+
redef {-> kwredef?}
= kwredef? {-> kwredef};
classkind
;
formaldefs {-> formaldef*}
- = obra no formaldef formaldefs_tail* [n2]:no cbra {-> [formaldef, formaldefs_tail.formaldef]}
- | {null} {-> []}
+ = formaldef formaldefs_tail* {-> [formaldef, formaldefs_tail.formaldef]}
+ | {empty} {->[]}
;
formaldefs_tail {-> formaldef}
= comma no formaldef {-> formaldef};
formaldef
- = classid annotations? typing_o {-> New formaldef(classid, typing_o.type, annotations)};
+ = classid annotations? typing_o no {-> New formaldef(classid, typing_o.type, annotations)};
superclass {-> propdef}
= {super} [doc]:nd redef visibility kwsuper [n2]:no type annotation_withend {-> New propdef.super(doc.doc, redef.kwredef, visibility, kwsuper, type, annotation_withend.annotations)}
= propdef n1 {-> propdef.propdef}
;
propdef~toplevel {-> propdef}
- = {meth} [doc]:nd redef visibility kwmeth qmethid signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, stmtso.expr)}
- | {nobody} [doc]:nd redef visibility kwmeth qmethid signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_withend_nonull.annotations, Null, Null, Null)}
-!toplevel| {intern_new} [doc]:nd redef visibility kwnew qmethid? signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_withend_nonull.annotations, Null, Null, Null)}
-!toplevel| {new} [doc]:nd redef visibility kwnew qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, Null, Null, stmtso.expr)}
- | {extern_implicit} [doc]:nd redef visibility kwmeth qmethid signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_noend.annotations, extern_calls, extern_code_block, Null)}
-!toplevel| {var3} [doc]:nd redef visibility kwvar id typing_o annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, annotation_withend.annotations, Null)}
-!toplevel| {var4} [doc]:nd redef visibility kwvar id typing_o assign [n2]:no expr annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, expr.expr, annotation_withend.annotations, Null)}
-!toplevel| {var5} [doc]:nd redef visibility kwvar id typing_o annotation_noend? kwdo stmtso kwend? {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, annotation_noend.annotations, stmtso.expr)}
-!toplevel| {init} [doc]:nd redef visibility kwinit qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, kwinit, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, stmtso.expr)}
+ = {meth} [doc]:nd redef visibility kwmeth qmethid signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, kwdo, stmtso.expr, kwend_o.kwend)}
+ | {nobody} [doc]:nd redef visibility kwmeth qmethid signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_withend_nonull.annotations, Null, Null, Null, Null, Null)}
+!toplevel| {intern_new} [doc]:nd redef visibility kwnew qmethid? signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_withend_nonull.annotations, Null, Null, Null, Null, Null)}
+!toplevel| {new} [doc]:nd redef visibility kwnew qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, Null, Null, kwdo, stmtso.expr, kwend_o.kwend)}
+ | {extern_implicit} [doc]:nd redef visibility kwmeth qmethid signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_noend.annotations, extern_calls, extern_code_block, Null, Null, Null)}
+!toplevel| {var3} [doc]:nd redef visibility kwvar id typing_o annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, Null, annotation_withend.annotations, Null, Null, Null)}
+!toplevel| {var4} [doc]:nd redef visibility kwvar id typing_o assign [n2]:no expr annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, assign, expr.expr, annotation_withend.annotations, Null, Null, Null)}
+!toplevel| {var5} [doc]:nd redef visibility kwvar id typing_o annotation_noend? kwdo stmtso kwend? {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, Null, annotation_noend.annotations, kwdo, stmtso.expr, kwend)}
+!toplevel| {init} [doc]:nd redef visibility kwinit qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, kwinit, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, kwdo, stmtso.expr, kwend_o.kwend)}
!toplevel| {type} [doc]:nd 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_implicit} [doc]:nd redef visibility kwnew qmethid? signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, extern_calls, extern_code_block, Null)}
+!toplevel| {extern_init_implicit} [doc]:nd redef visibility kwnew qmethid? signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, extern_calls, extern_code_block, Null, Null, Null)}
!toplevel| {annot} line_annotation_forclass {-> line_annotation_forclass.propdef}
!toplevel| {super} superclass {-> superclass.propdef}
;
annotation_withend~nonull {-> annotations?}
- = {oneliner} kwis many_annotations {-> many_annotations.annotations}
- | {more} kwis n1 line_annotations kwend {-> line_annotations.annotations}
+ = {oneliner} kwis annotation_list {-> New annotations(kwis, Null, Null, [annotation_list.annotation], Null, Null)}
+ | {more} kwis n1 line_annotation+ kwend {-> New annotations(kwis, Null, Null, [line_annotation.annotation], Null, kwend) }
!nonull | {null} {-> Null}
;
annotation_noend {-> annotations}
- = {oneliner} kwis many_annotations {-> many_annotations.annotations}
- | {more} kwis n1 line_annotations {-> line_annotations.annotations}
+ = {oneliner} kwis annotation_list {-> New annotations(kwis, Null, Null, [annotation_list.annotation], Null, Null)}
+ | {more} kwis n1 line_annotation+ {-> New annotations(kwis, Null, Null, [line_annotation.annotation], Null, Null) }
;
visibility
/* TYPES *********************************************************************/
type~nobra~nopar {-> type}
- = {simple} kwnullable? classid annotations_o~nopar {-> New type(kwnullable, classid, [], annotations_o~nopar.annotations)}
-!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra annotations_o~nopar {-> New type(kwnullable, classid, [types.type], annotations_o~nopar.annotations)}
+ = {simple} kwnullable? classid annotations_o~nopar {-> New type(kwnullable, classid, Null, [], Null, annotations_o~nopar.annotations)}
+!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra annotations_o~nopar {-> New type(kwnullable, classid, obra, [types.type], cbra, annotations_o~nopar.annotations)}
;
types {-> type*}
= type types_tail* {-> [type, types_tail.type]};
;
if~withelse {-> expr}
- = {onelineelse} kwif no expr [n2]:no kwthen stmt_withelse kwelse stmtso~withelse {-> New expr.if(kwif, expr, stmt_withelse.expr, stmtso~withelse.expr)}
-!withelse | {oneline} kwif no expr [n2]:no kwthen stmt {-> New expr.if(kwif, expr, stmt.expr, Null)}
-!withelse | {block} kwif no expr [n2]:no kwthen [n3]:n stmtsn elsepartblock {-> New expr.if(kwif, expr, stmtsn.expr, elsepartblock.expr)}
-!withelse | {emptyblock} kwif no expr [n2]:no kwthen [n3]:n? elsepartblock {-> New expr.if(kwif, expr, Null, elsepartblock.expr)}
+ = {onelineelse} kwif no expr [n2]:no kwthen stmt_withelse kwelse stmtso~withelse {-> New expr.if(kwif, expr, kwthen, stmt_withelse.expr, kwelse, stmtso~withelse.expr)}
+!withelse | {oneline} kwif no expr [n2]:no kwthen stmt {-> New expr.if(kwif, expr, kwthen, stmt.expr, Null, Null)}
+!withelse | {block} kwif no expr [n2]:no kwthen [n3]:n stmtsn kwelse stmtso {-> New expr.if(kwif, expr, kwthen, stmtsn.expr, kwelse, stmtso.expr)}
+!withelse | {emptyblock} kwif no expr [n2]:no kwthen [n3]:n? kwelse stmtso {-> New expr.if(kwif, expr, kwthen, Null, kwelse, stmtso.expr)}
+!withelse | {blocknoelse} kwif no expr [n2]:no kwthen [n3]:n stmtsn endblock {-> New expr.if(kwif, expr, kwthen, stmtsn.expr, Null, endblock.expr)}
+!withelse | {emptyblocknoelse} kwif no expr [n2]:no kwthen [n3]:n? endblock {-> New expr.if(kwif, expr, kwthen, Null, Null, endblock.expr)}
;
-elsepartblock {-> expr?}
- = {else} kwelse stmtso {-> stmtso.expr}
- | {empty} kwend {-> New expr.block([], kwend)}
+endblock {-> expr}
+ = {empty} kwend {-> New expr.block([], kwend)}
;
loop~withelse {-> expr}
;
for~withelse {-> expr}
- = kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso_withend label {-> New expr.for(kwfor, [ids.id], expr, kwdo, stmtso_withend.expr, label)}
- | {nolabel} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso~withelse {-> New expr.for(kwfor, [ids.id], expr, kwdo, stmtso~withelse.expr, Null)}
+ = kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso_withend label {-> New expr.for(kwfor, [ids.id], kwin, expr, kwdo, stmtso_withend.expr, label)}
+ | {nolabel} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso~withelse {-> New expr.for(kwfor, [ids.id], kwin, expr, kwdo, stmtso~withelse.expr, Null)}
;
with~withelse {-> expr}
;
assert~withelse {-> expr}
- = {else} kwassert assertid? expr kwelse stmtso~withelse {-> New expr.assert(kwassert, assertid.id, expr, stmtso~withelse.expr)}
-!withelse| {noelse} kwassert assertid? expr {-> New expr.assert(kwassert, assertid.id, expr, Null)}
+ = {else} kwassert assertid? expr kwelse stmtso~withelse {-> New expr.assert(kwassert, assertid.id, expr, kwelse, stmtso~withelse.expr)}
+!withelse| {noelse} kwassert assertid? expr {-> New expr.assert(kwassert, assertid.id, expr, Null, Null)}
;
assertid {-> id}
= id column {-> id};
| {superstring} superstring {-> superstring.expr}
!nopar | {par} expr_par {-> expr_par.expr}
// !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 annotations_o {-> New expr.crange(obra, expr, expr2.expr, cbra, annotations_o.annotations)}
-!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra annotations_o {-> New expr.orange(obra, expr, expr2.expr, cbra, annotations_o.annotations)}
+!nobra!nopar | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra annotations_o {-> New expr.crange(obra, expr, dotdot, expr2.expr, cbra, annotations_o.annotations)}
+!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra annotations_o {-> New expr.orange(obra, expr, dotdot, expr2.expr, cbra, annotations_o.annotations)}
!nobra!nopar | {array} obra no array_items typing_o cbra annotations_o {-> New expr.array(obra, [array_items.expr], typing_o.type, cbra, annotations_o.annotations)}
;
;
array_item {-> expr}
= expr no {-> expr}
- | {for} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo [block]:array_item {-> New expr.for(kwfor, [ids.id], expr, kwdo, block.expr, Null)}
- | {if} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:array_item {-> New expr.if(kwif, expr, then.expr, Null)}
+ | {for} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo [block]:array_item {-> New expr.for(kwfor, [ids.id], kwin, expr, kwdo, block.expr, Null)}
+ | {if} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:array_item {-> New expr.if(kwif, expr, kwthen, then.expr, Null, Null)}
;
superstring {-> expr}
/* ANNOTATIONS *******************************************************************/
annotations~nopar {-> annotations}
- = {one} at one_annotation~nopar {-> New annotations(at, Null, [one_annotation~nopar.annotation], Null)}
- | {many} at opar no annotation_list [n2]:no cpar {-> New annotations(at, opar, [annotation_list.annotation], cpar)}
+ = {one} at one_annotation~nopar {-> New annotations(Null, at, Null, [one_annotation~nopar.annotation], Null, Null)}
+ | {many} at opar no annotation_list [n2]:no cpar {-> New annotations(Null, at, opar, [annotation_list.annotation], cpar, Null)}
;
annotations_o~nopar {-> annotations?}
= annotations~nopar {-> annotations~nopar.annotations}
!nopar | {args} redef visibility atid opar no at_args [n2]:no cpar annotations_o~nopar {-> New annotation(Null, redef.kwredef, visibility, atid, opar, [at_args.expr], cpar, annotations_o~nopar.annotations)}
;
-many_annotations {-> annotations}
- = {many} annotation_list {-> New annotations(Null, Null, [annotation_list.annotation], Null)}
- ;
-
annotation_list {-> annotation*}
= {many} one_annotation_list annotations_tail* {-> [one_annotation_list.annotation, annotations_tail.annotation] }
;
= comma no one_annotation_list {-> one_annotation_list.annotation}
;
-line_annotations {-> annotations}
- = line_annotation+ {-> New annotations(Null, Null, [line_annotation.annotation], Null) }
- ;
line_annotation {-> annotation}
= [doc]:nd redef visibility atid annotations? n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, Null, [], Null, annotations)}
| {args} [doc]:nd redef visibility atid opar no at_args cpar annotations? n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, opar, [at_args.expr], cpar, annotations)}
| {intrude} kwintrude
;
-classdef= {std} doc? kwredef? visibility classkind [id]:classid? [formaldefs]:formaldef* extern_code_block? [propdefs]:propdef* kwend
+classdef= {std} doc? kwredef? visibility classkind [id]:classid? obra? [formaldefs]:formaldef* cbra? extern_code_block? [propdefs]:propdef* kwend
| {top} [propdefs]:propdef*
| {main} [propdefs]:propdef*
;
formaldef = [id]:classid type? annotations?;
-propdef = {attr} doc? kwredef? visibility kwvar [id2]:id type? expr? annotations? [block]:expr?
+propdef = {attr} doc? kwredef? visibility kwvar [id2]:id type? assign? expr? annotations? kwdo? [block]:expr? kwend?
| {main_meth} kwredef? [block]:expr?
| {type} doc? kwredef? visibility kwtype [id]:classid type annotations?
- | {meth} doc? kwredef? visibility kwmeth? kwinit? kwnew? methid? signature annotations? extern_calls? extern_code_block? [block]:expr?
+ | {meth} doc? kwredef? visibility kwmeth? kwinit? kwnew? methid? signature annotations? extern_calls? extern_code_block? kwdo? [block]:expr? kwend?
| {super} doc? kwredef? visibility kwsuper type annotations?
| {annot} doc? kwredef? visibility? atid opar? [args]:expr* cpar? annotations?
;
param = id type? dotdotdot? annotations?
;
-type = kwnullable? [id]:classid [types]:type* annotations?;
+type = kwnullable? [id]:classid obra? [types]:type* cbra? annotations?;
label = kwlabel id?;
| {abort} kwabort
| {continue} kwcontinue? label?
| {do} kwdo [block]:expr? label?
- | {if} kwif expr [then]:expr? [else]:expr?
+ | {if} kwif expr kwthen [then]:expr? kwelse? [else]:expr?
| {ifexpr} kwif expr kwthen [then]:expr kwelse [else]:expr
| {while} kwwhile expr kwdo [block]:expr? label?
| {loop} kwloop [block]:expr? label?
- | {for} kwfor [ids]:id* expr kwdo [block]:expr? label?
+ | {for} kwfor [ids]:id* kwin expr kwdo [block]:expr? label?
| {with} kwwith expr kwdo [block]:expr? label?
- | {assert} kwassert id? expr [else]:expr?
+ | {assert} kwassert id? expr kwelse? [else]:expr?
| {once} kwonce expr
| {send} expr
| {binop} expr [expr2]:expr
| {var_assign} id assign [value]:expr
| {var_reassign} id assign_op [value]:expr
| {range} expr [expr2]:expr annotations?
- | {crange} obra expr [expr2]:expr cbra annotations?
- | {orange} obra expr [expr2]:expr [cbra]:obra annotations?
+ | {crange} obra expr dotdot [expr2]:expr cbra annotations?
+ | {orange} obra expr dotdot [expr2]:expr [cbra]:obra annotations?
| {array} obra [exprs]:expr* type? cbra annotations?
| {self} kwself annotations?
| {implicit_self}
doc = comment+;
-annotations = at? opar? [items]:annotation* cpar?;
+annotations = kwis? at? opar? [items]:annotation* cpar? kwend?;
annotation = doc? kwredef? visibility? atid opar? [args]:expr* cpar? annotations?;
new ReduceAction24(5),
new ReduceAction26(6),
new ReduceAction27(6),
+ new ReduceAction28(6),
+ new ReduceAction29(6),
new ReduceAction22(7),
- new ReduceAction29(7),
- new ReduceAction30(8),
- new ReduceAction31(8),
+ new ReduceAction31(7),
new ReduceAction32(8),
new ReduceAction33(8),
new ReduceAction34(8),
- new ReduceAction35(9),
- new ReduceAction36(9),
+ new ReduceAction35(8),
+ new ReduceAction36(8),
new ReduceAction37(9),
- new ReduceAction38(10),
- new ReduceAction39(11),
- new ReduceAction40(11),
- new ReduceAction41(12),
- new ReduceAction42(13),
- new ReduceAction43(13),
+ new ReduceAction38(9),
+ new ReduceAction39(9),
+ new ReduceAction40(10),
+ new ReduceAction41(11),
+ new ReduceAction42(11),
+ new ReduceAction43(12),
new ReduceAction44(13),
- new ReduceAction45(14),
- new ReduceAction46(15),
- new ReduceAction47(15),
+ new ReduceAction45(13),
+ new ReduceAction46(13),
+ new ReduceAction47(14),
new ReduceAction48(15),
new ReduceAction49(15),
new ReduceAction50(15),
new ReduceAction70(15),
new ReduceAction71(15),
new ReduceAction72(15),
- new ReduceAction72(15),
- new ReduceAction74(16),
- new ReduceAction75(16),
+ new ReduceAction73(15),
+ new ReduceAction74(15),
+ new ReduceAction74(15),
+ new ReduceAction76(16),
+ new ReduceAction77(16),
new ReduceAction22(16),
- new ReduceAction74(17),
- new ReduceAction78(17),
- new ReduceAction79(18),
- new ReduceAction80(18),
+ new ReduceAction76(17),
+ new ReduceAction80(17),
new ReduceAction81(18),
new ReduceAction82(18),
new ReduceAction83(18),
- new ReduceAction84(19),
- new ReduceAction85(19),
+ new ReduceAction84(18),
+ new ReduceAction85(18),
new ReduceAction86(19),
new ReduceAction87(19),
new ReduceAction88(19),
new ReduceAction104(19),
new ReduceAction105(19),
new ReduceAction106(19),
- new ReduceAction107(20),
- new ReduceAction108(20),
+ new ReduceAction107(19),
+ new ReduceAction108(19),
new ReduceAction109(20),
new ReduceAction110(20),
- new ReduceAction111(21),
- new ReduceAction112(21),
- new ReduceAction37(21),
- new ReduceAction114(22),
- new ReduceAction115(23),
- new ReduceAction116(23),
+ new ReduceAction111(20),
+ new ReduceAction112(20),
+ new ReduceAction113(21),
+ new ReduceAction114(21),
+ new ReduceAction39(21),
+ new ReduceAction116(22),
new ReduceAction117(23),
new ReduceAction118(23),
new ReduceAction119(23),
- new ReduceAction120(24),
- new ReduceAction121(24),
+ new ReduceAction120(23),
+ new ReduceAction121(23),
+ new ReduceAction122(24),
+ new ReduceAction123(24),
new ReduceAction22(24),
- new ReduceAction123(25),
- new ReduceAction124(26),
- new ReduceAction124(26),
+ new ReduceAction125(25),
+ new ReduceAction126(26),
new ReduceAction126(26),
- new ReduceAction127(27),
- new ReduceAction128(27),
+ new ReduceAction128(26),
new ReduceAction129(27),
- new ReduceAction130(28),
- new ReduceAction131(28),
+ new ReduceAction130(27),
+ new ReduceAction131(27),
new ReduceAction132(28),
new ReduceAction133(28),
new ReduceAction134(28),
new ReduceAction135(28),
+ new ReduceAction136(28),
+ new ReduceAction137(28),
new ReduceAction22(29),
- new ReduceAction137(29),
- new ReduceAction138(30),
- new ReduceAction139(31),
- new ReduceAction140(31),
- new ReduceAction141(32),
+ new ReduceAction139(29),
+ new ReduceAction140(30),
+ new ReduceAction141(31),
+ new ReduceAction142(31),
+ new ReduceAction143(32),
new ReduceAction22(32),
- new ReduceAction143(33),
- new ReduceAction144(34),
- new ReduceAction145(34),
+ new ReduceAction145(33),
new ReduceAction146(34),
new ReduceAction147(34),
- new ReduceAction148(35),
- new ReduceAction149(35),
- new ReduceAction150(36),
- new ReduceAction150(37),
- new ReduceAction150(38),
+ new ReduceAction148(34),
+ new ReduceAction149(34),
+ new ReduceAction150(35),
+ new ReduceAction151(35),
+ new ReduceAction152(36),
+ new ReduceAction152(37),
+ new ReduceAction152(38),
new ReduceAction22(38),
- new ReduceAction154(39),
- new ReduceAction155(39),
new ReduceAction156(39),
new ReduceAction157(39),
- new ReduceAction158(40),
- new ReduceAction159(40),
- new ReduceAction160(41),
- new ReduceAction161(41),
- new ReduceAction162(42),
- new ReduceAction163(42),
- new ReduceAction154(43),
- new ReduceAction157(44),
- new ReduceAction157(44),
- new ReduceAction167(44),
- new ReduceAction168(44),
+ new ReduceAction158(39),
+ new ReduceAction159(39),
+ new ReduceAction160(40),
+ new ReduceAction161(40),
+ new ReduceAction162(41),
+ new ReduceAction163(41),
+ new ReduceAction164(42),
+ new ReduceAction165(42),
+ new ReduceAction156(43),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
new ReduceAction169(44),
new ReduceAction170(44),
new ReduceAction171(44),
new ReduceAction172(44),
new ReduceAction173(44),
- new ReduceAction157(44),
- new ReduceAction157(44),
- new ReduceAction157(44),
- new ReduceAction157(44),
- new ReduceAction157(44),
- new ReduceAction157(44),
- new ReduceAction157(44),
- new ReduceAction181(44),
- new ReduceAction182(44),
+ new ReduceAction174(44),
+ new ReduceAction175(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
new ReduceAction183(44),
- new ReduceAction182(44),
+ new ReduceAction184(44),
new ReduceAction185(44),
- new ReduceAction186(44),
+ new ReduceAction184(44),
new ReduceAction187(44),
- new ReduceAction186(44),
+ new ReduceAction188(44),
new ReduceAction189(44),
- new ReduceAction190(44),
+ new ReduceAction188(44),
new ReduceAction191(44),
new ReduceAction192(44),
new ReduceAction193(44),
- new ReduceAction192(44),
- new ReduceAction195(44),
- new ReduceAction196(44),
+ new ReduceAction194(44),
new ReduceAction195(44),
+ new ReduceAction194(44),
+ new ReduceAction197(44),
new ReduceAction198(44),
- new ReduceAction199(45),
- new ReduceAction200(45),
- new ReduceAction201(46),
- new ReduceAction202(46),
+ new ReduceAction197(44),
+ new ReduceAction200(44),
+ new ReduceAction201(45),
+ new ReduceAction202(45),
new ReduceAction203(46),
new ReduceAction204(46),
- new ReduceAction205(47),
- new ReduceAction206(47),
+ new ReduceAction205(46),
+ new ReduceAction206(46),
new ReduceAction207(47),
new ReduceAction208(47),
new ReduceAction209(47),
new ReduceAction210(47),
new ReduceAction211(47),
new ReduceAction212(47),
- new ReduceAction209(47),
- new ReduceAction210(47),
- new ReduceAction215(47),
- new ReduceAction216(47),
+ new ReduceAction213(47),
+ new ReduceAction214(47),
+ new ReduceAction211(47),
+ new ReduceAction212(47),
new ReduceAction217(47),
new ReduceAction218(47),
new ReduceAction219(47),
new ReduceAction220(47),
- new ReduceAction217(47),
- new ReduceAction218(47),
- new ReduceAction223(47),
- new ReduceAction224(47),
+ new ReduceAction221(47),
+ new ReduceAction222(47),
+ new ReduceAction219(47),
+ new ReduceAction220(47),
new ReduceAction225(47),
new ReduceAction226(47),
new ReduceAction227(47),
new ReduceAction229(47),
new ReduceAction230(47),
new ReduceAction231(47),
- new ReduceAction228(47),
- new ReduceAction229(47),
- new ReduceAction234(47),
- new ReduceAction235(47),
+ new ReduceAction232(47),
+ new ReduceAction233(47),
+ new ReduceAction230(47),
+ new ReduceAction231(47),
new ReduceAction236(47),
new ReduceAction237(47),
new ReduceAction238(47),
new ReduceAction239(47),
- new ReduceAction236(47),
- new ReduceAction237(47),
- new ReduceAction242(47),
- new ReduceAction243(48),
- new ReduceAction244(48),
+ new ReduceAction240(47),
+ new ReduceAction241(47),
+ new ReduceAction238(47),
+ new ReduceAction239(47),
+ new ReduceAction244(47),
new ReduceAction245(48),
new ReduceAction246(48),
new ReduceAction247(48),
new ReduceAction251(48),
new ReduceAction252(48),
new ReduceAction253(48),
- new ReduceAction254(49),
- new ReduceAction255(49),
- new ReduceAction256(50),
- new ReduceAction257(50),
+ new ReduceAction254(48),
+ new ReduceAction255(48),
+ new ReduceAction256(49),
+ new ReduceAction257(49),
new ReduceAction258(50),
new ReduceAction259(50),
new ReduceAction260(50),
- new ReduceAction154(51),
- new ReduceAction156(51),
- new ReduceAction263(52),
- new ReduceAction264(52),
- new ReduceAction265(53),
- new ReduceAction266(53),
- new ReduceAction267(54),
- new ReduceAction268(54),
- new ReduceAction269(55),
- new ReduceAction270(55),
- new ReduceAction271(56),
- new ReduceAction272(56),
- new ReduceAction157(56),
- new ReduceAction274(57),
- new ReduceAction275(57),
- new ReduceAction276(57),
- new ReduceAction277(57),
- new ReduceAction278(58),
- new ReduceAction157(59),
- new ReduceAction280(59),
- new ReduceAction157(60),
- new ReduceAction282(60),
- new ReduceAction283(60),
- new ReduceAction284(60),
- new ReduceAction285(60),
- new ReduceAction157(61),
- new ReduceAction287(61),
- new ReduceAction157(62),
- new ReduceAction289(62),
- new ReduceAction290(62),
- new ReduceAction291(62),
- new ReduceAction292(62),
+ new ReduceAction261(50),
+ new ReduceAction262(50),
+ new ReduceAction263(50),
+ new ReduceAction264(50),
+ new ReduceAction265(50),
+ new ReduceAction158(51),
+ new ReduceAction267(52),
+ new ReduceAction268(52),
+ new ReduceAction269(53),
+ new ReduceAction270(53),
+ new ReduceAction271(54),
+ new ReduceAction272(54),
+ new ReduceAction273(55),
+ new ReduceAction274(55),
+ new ReduceAction275(56),
+ new ReduceAction276(56),
+ new ReduceAction159(56),
+ new ReduceAction278(57),
+ new ReduceAction279(57),
+ new ReduceAction280(57),
+ new ReduceAction281(57),
+ new ReduceAction282(58),
+ new ReduceAction159(59),
+ new ReduceAction284(59),
+ new ReduceAction159(60),
+ new ReduceAction286(60),
+ new ReduceAction287(60),
+ new ReduceAction288(60),
+ new ReduceAction289(60),
+ new ReduceAction159(61),
+ new ReduceAction291(61),
+ new ReduceAction159(62),
new ReduceAction293(62),
new ReduceAction294(62),
new ReduceAction295(62),
new ReduceAction296(62),
- new ReduceAction157(63),
- new ReduceAction298(63),
- new ReduceAction157(64),
- new ReduceAction300(64),
- new ReduceAction157(65),
- new ReduceAction302(65),
- new ReduceAction157(66),
- new ReduceAction304(66),
- new ReduceAction305(66),
- new ReduceAction157(67),
- new ReduceAction307(67),
- new ReduceAction308(67),
- new ReduceAction157(68),
- new ReduceAction310(68),
- new ReduceAction311(68),
- new ReduceAction312(68),
- new ReduceAction157(69),
- new ReduceAction314(69),
- new ReduceAction157(70),
- new ReduceAction316(70),
- new ReduceAction317(70),
- new ReduceAction318(70),
- new ReduceAction319(70),
- new ReduceAction157(71),
- new ReduceAction321(71),
- new ReduceAction322(71),
- new ReduceAction323(71),
- new ReduceAction324(71),
- new ReduceAction157(72),
- new ReduceAction326(72),
- new ReduceAction327(72),
- new ReduceAction181(72),
- new ReduceAction329(72),
- new ReduceAction182(72),
+ new ReduceAction297(62),
+ new ReduceAction298(62),
+ new ReduceAction299(62),
+ new ReduceAction300(62),
+ new ReduceAction159(63),
+ new ReduceAction302(63),
+ new ReduceAction159(64),
+ new ReduceAction304(64),
+ new ReduceAction159(65),
+ new ReduceAction306(65),
+ new ReduceAction159(66),
+ new ReduceAction308(66),
+ new ReduceAction309(66),
+ new ReduceAction159(67),
+ new ReduceAction311(67),
+ new ReduceAction312(67),
+ new ReduceAction159(68),
+ new ReduceAction314(68),
+ new ReduceAction315(68),
+ new ReduceAction316(68),
+ new ReduceAction159(69),
+ new ReduceAction318(69),
+ new ReduceAction159(70),
+ new ReduceAction320(70),
+ new ReduceAction321(70),
+ new ReduceAction322(70),
+ new ReduceAction323(70),
+ new ReduceAction159(71),
+ new ReduceAction325(71),
+ new ReduceAction326(71),
+ new ReduceAction327(71),
+ new ReduceAction328(71),
+ new ReduceAction159(72),
+ new ReduceAction330(72),
new ReduceAction331(72),
new ReduceAction183(72),
new ReduceAction333(72),
- new ReduceAction182(72),
- new ReduceAction331(72),
+ new ReduceAction184(72),
+ new ReduceAction335(72),
new ReduceAction185(72),
new ReduceAction337(72),
- new ReduceAction186(72),
- new ReduceAction339(72),
+ new ReduceAction184(72),
+ new ReduceAction335(72),
new ReduceAction187(72),
new ReduceAction341(72),
- new ReduceAction186(72),
- new ReduceAction339(72),
+ new ReduceAction188(72),
+ new ReduceAction343(72),
new ReduceAction189(72),
new ReduceAction345(72),
- new ReduceAction190(72),
- new ReduceAction347(72),
+ new ReduceAction188(72),
+ new ReduceAction343(72),
new ReduceAction191(72),
new ReduceAction349(72),
- new ReduceAction350(72),
+ new ReduceAction192(72),
new ReduceAction351(72),
- new ReduceAction352(72),
+ new ReduceAction193(72),
new ReduceAction353(72),
new ReduceAction354(72),
new ReduceAction355(72),
new ReduceAction356(72),
- new ReduceAction353(72),
- new ReduceAction354(72),
+ new ReduceAction357(72),
+ new ReduceAction358(72),
new ReduceAction359(72),
new ReduceAction360(72),
- new ReduceAction361(72),
- new ReduceAction157(73),
- new ReduceAction363(73),
- new ReduceAction364(73),
- new ReduceAction365(74),
- new ReduceAction366(74),
- new ReduceAction367(74),
- new ReduceAction368(74),
+ new ReduceAction357(72),
+ new ReduceAction358(72),
+ new ReduceAction363(72),
+ new ReduceAction364(72),
+ new ReduceAction365(72),
+ new ReduceAction159(73),
+ new ReduceAction367(73),
+ new ReduceAction368(73),
new ReduceAction369(74),
new ReduceAction370(74),
new ReduceAction371(74),
new ReduceAction372(74),
new ReduceAction373(74),
- new ReduceAction157(74),
- new ReduceAction157(74),
+ new ReduceAction374(74),
+ new ReduceAction375(74),
new ReduceAction376(74),
new ReduceAction377(74),
- new ReduceAction378(74),
- new ReduceAction379(75),
- new ReduceAction379(75),
- new ReduceAction381(76),
- new ReduceAction382(77),
- new ReduceAction383(78),
- new ReduceAction384(78),
- new ReduceAction382(79),
- new ReduceAction386(80),
- new ReduceAction268(80),
- new ReduceAction388(80),
- new ReduceAction389(81),
- new ReduceAction390(81),
- new ReduceAction391(82),
- new ReduceAction392(82),
- new ReduceAction393(83),
- new ReduceAction391(84),
- new ReduceAction392(84),
- new ReduceAction396(85),
- new ReduceAction397(86),
- new ReduceAction398(87),
- new ReduceAction399(87),
- new ReduceAction400(88),
+ new ReduceAction159(74),
+ new ReduceAction159(74),
+ new ReduceAction380(74),
+ new ReduceAction381(74),
+ new ReduceAction382(74),
+ new ReduceAction383(75),
+ new ReduceAction383(75),
+ new ReduceAction385(76),
+ new ReduceAction386(77),
+ new ReduceAction387(78),
+ new ReduceAction388(78),
+ new ReduceAction386(79),
+ new ReduceAction390(80),
+ new ReduceAction272(80),
+ new ReduceAction392(80),
+ new ReduceAction393(81),
+ new ReduceAction394(81),
+ new ReduceAction395(82),
+ new ReduceAction396(82),
+ new ReduceAction397(83),
+ new ReduceAction395(84),
+ new ReduceAction396(84),
+ new ReduceAction400(85),
+ new ReduceAction401(86),
+ new ReduceAction402(87),
+ new ReduceAction403(87),
+ new ReduceAction404(88),
new ReduceAction22(88),
- new ReduceAction402(89),
- new ReduceAction403(89),
- new ReduceAction404(90),
- new ReduceAction405(91),
+ new ReduceAction406(89),
+ new ReduceAction407(89),
+ new ReduceAction408(90),
+ new ReduceAction409(90),
new ReduceAction406(91),
- new ReduceAction402(92),
- new ReduceAction403(92),
- new ReduceAction409(92),
- new ReduceAction157(93),
- new ReduceAction411(94),
- new ReduceAction404(95),
- new ReduceAction413(96),
- new ReduceAction414(96),
- new ReduceAction415(96),
- new ReduceAction416(96),
- new ReduceAction417(96),
- new ReduceAction418(97),
- new ReduceAction419(97),
- new ReduceAction420(97),
- new ReduceAction421(97),
- new ReduceAction422(97),
- new ReduceAction383(98),
- new ReduceAction384(98),
- new ReduceAction382(99),
- new ReduceAction426(100),
- new ReduceAction157(100),
- new ReduceAction157(100),
- new ReduceAction429(100),
- new ReduceAction430(100),
- new ReduceAction431(100),
- new ReduceAction432(101),
- new ReduceAction433(101),
- new ReduceAction434(101),
- new ReduceAction435(102),
- new ReduceAction436(102),
- new ReduceAction435(103),
- new ReduceAction438(103),
- new ReduceAction436(103),
- new ReduceAction440(103),
- new ReduceAction441(104),
- new ReduceAction392(105),
- new ReduceAction443(105),
- new ReduceAction444(106),
- new ReduceAction445(107),
- new ReduceAction446(107),
- new ReduceAction447(108),
- new ReduceAction448(108),
- new ReduceAction449(109),
- new ReduceAction450(109),
- new ReduceAction451(109),
- new ReduceAction452(109),
- new ReduceAction453(110),
- new ReduceAction454(110),
- new ReduceAction455(110),
- new ReduceAction22(110),
- new ReduceAction457(111),
- new ReduceAction458(111),
- new ReduceAction459(111),
- new ReduceAction458(111),
- new ReduceAction461(112),
- new ReduceAction462(112),
- new ReduceAction463(112),
- new ReduceAction462(112),
- new ReduceAction465(113),
- new ReduceAction466(114),
- new ReduceAction22(115),
- new ReduceAction468(115),
- new ReduceAction469(116),
- new ReduceAction469(116),
- new ReduceAction469(116),
- new ReduceAction472(117),
- new ReduceAction473(117),
- new ReduceAction23(117),
- new ReduceAction23(117),
- new ReduceAction476(117),
- new ReduceAction476(117),
- new ReduceAction478(117),
- new ReduceAction479(117),
- new ReduceAction480(117),
- new ReduceAction480(117),
- new ReduceAction482(117),
- new ReduceAction22(118),
- new ReduceAction484(118),
- new ReduceAction485(119),
- new ReduceAction469(119),
- new ReduceAction469(120),
- new ReduceAction488(120),
- new ReduceAction46(121),
- new ReduceAction47(121),
- new ReduceAction48(121),
- new ReduceAction55(121),
- new ReduceAction56(121),
- new ReduceAction74(122),
- new ReduceAction75(122),
- new ReduceAction84(123),
- new ReduceAction85(123),
- new ReduceAction86(123),
- new ReduceAction87(123),
- new ReduceAction88(123),
- new ReduceAction89(123),
- new ReduceAction90(123),
- new ReduceAction91(123),
- new ReduceAction92(123),
- new ReduceAction93(123),
- new ReduceAction94(123),
- new ReduceAction95(123),
- new ReduceAction96(123),
- new ReduceAction97(123),
- new ReduceAction98(123),
- new ReduceAction99(123),
- new ReduceAction100(123),
- new ReduceAction101(123),
- new ReduceAction102(123),
- new ReduceAction103(123),
- new ReduceAction104(123),
- new ReduceAction105(123),
- new ReduceAction461(124),
- new ReduceAction462(124),
- new ReduceAction463(124),
- new ReduceAction462(124),
- new ReduceAction144(125),
- new ReduceAction145(125),
- new ReduceAction157(126),
- new ReduceAction280(126),
- new ReduceAction157(127),
- new ReduceAction282(127),
- new ReduceAction283(127),
- new ReduceAction284(127),
- new ReduceAction285(127),
- new ReduceAction157(128),
- new ReduceAction287(128),
- new ReduceAction157(129),
- new ReduceAction289(129),
- new ReduceAction290(129),
- new ReduceAction291(129),
- new ReduceAction292(129),
- new ReduceAction293(129),
- new ReduceAction294(129),
- new ReduceAction295(129),
- new ReduceAction296(129),
- new ReduceAction157(130),
- new ReduceAction298(130),
- new ReduceAction157(131),
- new ReduceAction300(131),
- new ReduceAction157(132),
- new ReduceAction302(132),
- new ReduceAction157(133),
- new ReduceAction304(133),
- new ReduceAction305(133),
- new ReduceAction157(134),
- new ReduceAction307(134),
- new ReduceAction308(134),
- new ReduceAction157(135),
- new ReduceAction310(135),
- new ReduceAction311(135),
- new ReduceAction312(135),
- new ReduceAction157(136),
- new ReduceAction314(136),
- new ReduceAction157(137),
- new ReduceAction316(137),
- new ReduceAction317(137),
- new ReduceAction318(137),
- new ReduceAction319(137),
- new ReduceAction157(138),
- new ReduceAction321(138),
- new ReduceAction322(138),
- new ReduceAction323(138),
- new ReduceAction324(138),
- new ReduceAction157(139),
- new ReduceAction326(139),
- new ReduceAction327(139),
- new ReduceAction181(139),
- new ReduceAction185(139),
- new ReduceAction329(139),
- new ReduceAction337(139),
- new ReduceAction182(139),
- new ReduceAction186(139),
- new ReduceAction331(139),
- new ReduceAction339(139),
- new ReduceAction183(139),
- new ReduceAction187(139),
- new ReduceAction333(139),
- new ReduceAction341(139),
- new ReduceAction182(139),
- new ReduceAction186(139),
- new ReduceAction331(139),
- new ReduceAction339(139),
- new ReduceAction189(139),
- new ReduceAction345(139),
- new ReduceAction190(139),
- new ReduceAction191(139),
- new ReduceAction347(139),
- new ReduceAction349(139),
- new ReduceAction351(139),
- new ReduceAction352(139),
- new ReduceAction353(139),
- new ReduceAction354(139),
- new ReduceAction355(139),
- new ReduceAction356(139),
- new ReduceAction353(139),
- new ReduceAction354(139),
- new ReduceAction359(139),
- new ReduceAction360(139),
- new ReduceAction361(139),
- new ReduceAction157(140),
- new ReduceAction363(140),
- new ReduceAction364(140),
- new ReduceAction365(141),
- new ReduceAction366(141),
- new ReduceAction367(141),
- new ReduceAction368(141),
- new ReduceAction369(141),
- new ReduceAction370(141),
- new ReduceAction371(141),
- new ReduceAction372(141),
- new ReduceAction373(141),
- new ReduceAction157(141),
- new ReduceAction157(141),
- new ReduceAction144(142),
- new ReduceAction145(142),
- new ReduceAction146(142),
- new ReduceAction147(142),
- new ReduceAction157(143),
- new ReduceAction157(143),
- new ReduceAction167(143),
- new ReduceAction168(143),
- new ReduceAction169(143),
- new ReduceAction170(143),
- new ReduceAction171(143),
- new ReduceAction172(143),
- new ReduceAction173(143),
- new ReduceAction157(143),
- new ReduceAction157(143),
- new ReduceAction157(143),
- new ReduceAction157(143),
- new ReduceAction157(143),
- new ReduceAction157(143),
- new ReduceAction157(143),
- new ReduceAction181(143),
- new ReduceAction182(143),
- new ReduceAction183(143),
- new ReduceAction182(143),
- new ReduceAction185(143),
- new ReduceAction186(143),
- new ReduceAction187(143),
- new ReduceAction186(143),
- new ReduceAction189(143),
- new ReduceAction190(143),
- new ReduceAction191(143),
- new ReduceAction192(143),
- new ReduceAction193(143),
- new ReduceAction192(143),
- new ReduceAction195(143),
- new ReduceAction196(143),
- new ReduceAction195(143),
- new ReduceAction198(143),
- new ReduceAction205(144),
- new ReduceAction206(144),
- new ReduceAction207(144),
- new ReduceAction208(144),
- new ReduceAction209(144),
- new ReduceAction210(144),
- new ReduceAction211(144),
- new ReduceAction212(144),
- new ReduceAction209(144),
- new ReduceAction210(144),
- new ReduceAction215(144),
- new ReduceAction216(144),
- new ReduceAction217(144),
- new ReduceAction218(144),
- new ReduceAction219(144),
- new ReduceAction220(144),
- new ReduceAction217(144),
- new ReduceAction218(144),
- new ReduceAction223(144),
- new ReduceAction224(144),
- new ReduceAction225(144),
- new ReduceAction226(144),
- new ReduceAction227(144),
- new ReduceAction228(144),
- new ReduceAction229(144),
- new ReduceAction230(144),
- new ReduceAction231(144),
- new ReduceAction228(144),
- new ReduceAction229(144),
- new ReduceAction234(144),
- new ReduceAction235(144),
- new ReduceAction236(144),
- new ReduceAction237(144),
- new ReduceAction238(144),
- new ReduceAction239(144),
- new ReduceAction236(144),
- new ReduceAction237(144),
- new ReduceAction242(144),
- new ReduceAction157(145),
- new ReduceAction280(145),
- new ReduceAction157(146),
- new ReduceAction282(146),
- new ReduceAction283(146),
- new ReduceAction284(146),
- new ReduceAction285(146),
- new ReduceAction157(147),
- new ReduceAction287(147),
- new ReduceAction157(148),
- new ReduceAction289(148),
- new ReduceAction290(148),
- new ReduceAction291(148),
- new ReduceAction292(148),
- new ReduceAction293(148),
- new ReduceAction294(148),
- new ReduceAction295(148),
- new ReduceAction296(148),
- new ReduceAction157(149),
- new ReduceAction298(149),
- new ReduceAction157(150),
- new ReduceAction300(150),
- new ReduceAction157(151),
- new ReduceAction302(151),
- new ReduceAction157(152),
- new ReduceAction304(152),
- new ReduceAction305(152),
- new ReduceAction157(153),
- new ReduceAction307(153),
- new ReduceAction308(153),
- new ReduceAction157(154),
- new ReduceAction310(154),
- new ReduceAction311(154),
- new ReduceAction312(154),
- new ReduceAction157(155),
- new ReduceAction314(155),
- new ReduceAction157(156),
- new ReduceAction316(156),
- new ReduceAction317(156),
- new ReduceAction318(156),
- new ReduceAction319(156),
- new ReduceAction157(157),
- new ReduceAction321(157),
- new ReduceAction322(157),
- new ReduceAction323(157),
- new ReduceAction324(157),
- new ReduceAction157(158),
- new ReduceAction326(158),
- new ReduceAction327(158),
- new ReduceAction181(158),
- new ReduceAction329(158),
- new ReduceAction182(158),
- new ReduceAction331(158),
- new ReduceAction183(158),
- new ReduceAction333(158),
- new ReduceAction182(158),
- new ReduceAction331(158),
- new ReduceAction185(158),
- new ReduceAction337(158),
- new ReduceAction186(158),
- new ReduceAction339(158),
- new ReduceAction187(158),
- new ReduceAction341(158),
- new ReduceAction186(158),
- new ReduceAction339(158),
- new ReduceAction189(158),
- new ReduceAction345(158),
- new ReduceAction190(158),
- new ReduceAction347(158),
- new ReduceAction191(158),
- new ReduceAction349(158),
- new ReduceAction350(158),
- new ReduceAction351(158),
- new ReduceAction352(158),
- new ReduceAction353(158),
- new ReduceAction354(158),
- new ReduceAction355(158),
- new ReduceAction356(158),
- new ReduceAction353(158),
- new ReduceAction354(158),
- new ReduceAction359(158),
- new ReduceAction360(158),
- new ReduceAction361(158),
- new ReduceAction157(159),
- new ReduceAction363(159),
- new ReduceAction364(159),
- new ReduceAction365(160),
- new ReduceAction366(160),
- new ReduceAction367(160),
- new ReduceAction368(160),
- new ReduceAction369(160),
- new ReduceAction370(160),
- new ReduceAction371(160),
- new ReduceAction372(160),
- new ReduceAction373(160),
- new ReduceAction157(160),
- new ReduceAction398(161),
- new ReduceAction399(161),
- new ReduceAction400(162),
- new ReduceAction22(162),
- new ReduceAction402(163),
- new ReduceAction402(164),
- new ReduceAction383(165),
- new ReduceAction384(165),
- new ReduceAction426(166),
- new ReduceAction157(166),
- new ReduceAction157(166),
- new ReduceAction429(166),
- new ReduceAction430(166),
- new ReduceAction144(167),
- new ReduceAction145(167),
- new ReduceAction157(168),
- new ReduceAction280(168),
- new ReduceAction157(169),
- new ReduceAction282(169),
- new ReduceAction283(169),
- new ReduceAction284(169),
- new ReduceAction285(169),
- new ReduceAction157(170),
- new ReduceAction287(170),
- new ReduceAction157(171),
- new ReduceAction289(171),
- new ReduceAction290(171),
- new ReduceAction291(171),
- new ReduceAction292(171),
- new ReduceAction293(171),
- new ReduceAction294(171),
- new ReduceAction295(171),
- new ReduceAction296(171),
- new ReduceAction157(172),
- new ReduceAction298(172),
- new ReduceAction157(173),
- new ReduceAction300(173),
- new ReduceAction157(174),
- new ReduceAction302(174),
- new ReduceAction157(175),
- new ReduceAction304(175),
- new ReduceAction305(175),
- new ReduceAction157(176),
- new ReduceAction307(176),
- new ReduceAction308(176),
- new ReduceAction157(177),
- new ReduceAction310(177),
- new ReduceAction311(177),
- new ReduceAction312(177),
- new ReduceAction157(178),
- new ReduceAction314(178),
- new ReduceAction157(179),
- new ReduceAction316(179),
- new ReduceAction317(179),
- new ReduceAction318(179),
- new ReduceAction319(179),
- new ReduceAction157(180),
- new ReduceAction321(180),
- new ReduceAction322(180),
- new ReduceAction851(180),
- new ReduceAction157(181),
- new ReduceAction853(181),
- new ReduceAction854(181),
- new ReduceAction855(181),
- new ReduceAction856(181),
- new ReduceAction857(181),
- new ReduceAction181(181),
- new ReduceAction329(181),
- new ReduceAction856(181),
- new ReduceAction857(181),
- new ReduceAction189(181),
- new ReduceAction345(181),
- new ReduceAction864(181),
- new ReduceAction865(181),
- new ReduceAction351(181),
- new ReduceAction352(181),
- new ReduceAction353(181),
- new ReduceAction354(181),
- new ReduceAction355(181),
- new ReduceAction356(181),
- new ReduceAction353(181),
- new ReduceAction354(181),
- new ReduceAction359(181),
- new ReduceAction360(181),
- new ReduceAction361(181),
- new ReduceAction157(182),
- new ReduceAction363(182),
- new ReduceAction364(182),
- new ReduceAction365(183),
- new ReduceAction366(183),
- new ReduceAction367(183),
- new ReduceAction368(183),
- new ReduceAction369(183),
- new ReduceAction370(183),
- new ReduceAction371(183),
- new ReduceAction372(183),
- new ReduceAction373(183),
+ new ReduceAction407(91),
+ new ReduceAction412(91),
+ new ReduceAction159(92),
+ new ReduceAction414(93),
+ new ReduceAction415(94),
+ new ReduceAction416(94),
+ new ReduceAction417(94),
+ new ReduceAction418(94),
+ new ReduceAction419(94),
+ new ReduceAction420(95),
+ new ReduceAction421(95),
+ new ReduceAction422(95),
+ new ReduceAction423(95),
+ new ReduceAction424(95),
+ new ReduceAction387(96),
+ new ReduceAction388(96),
+ new ReduceAction386(97),
+ new ReduceAction428(98),
+ new ReduceAction159(98),
+ new ReduceAction159(98),
+ new ReduceAction431(98),
+ new ReduceAction432(98),
+ new ReduceAction433(98),
+ new ReduceAction434(99),
+ new ReduceAction435(99),
+ new ReduceAction436(99),
+ new ReduceAction437(100),
+ new ReduceAction438(100),
+ new ReduceAction437(101),
+ new ReduceAction440(101),
+ new ReduceAction438(101),
+ new ReduceAction442(101),
+ new ReduceAction443(102),
+ new ReduceAction396(103),
+ new ReduceAction445(103),
+ new ReduceAction446(104),
+ new ReduceAction447(105),
+ new ReduceAction448(105),
+ new ReduceAction449(106),
+ new ReduceAction450(106),
+ new ReduceAction451(107),
+ new ReduceAction452(107),
+ new ReduceAction453(107),
+ new ReduceAction454(107),
+ new ReduceAction455(108),
+ new ReduceAction456(108),
+ new ReduceAction457(108),
+ new ReduceAction22(108),
+ new ReduceAction459(109),
+ new ReduceAction460(109),
+ new ReduceAction461(109),
+ new ReduceAction460(109),
+ new ReduceAction463(110),
+ new ReduceAction464(110),
+ new ReduceAction465(110),
+ new ReduceAction464(110),
+ new ReduceAction467(111),
+ new ReduceAction468(112),
+ new ReduceAction22(113),
+ new ReduceAction470(113),
+ new ReduceAction471(114),
+ new ReduceAction471(114),
+ new ReduceAction471(114),
+ new ReduceAction474(115),
+ new ReduceAction475(115),
+ new ReduceAction23(115),
+ new ReduceAction23(115),
+ new ReduceAction478(115),
+ new ReduceAction478(115),
+ new ReduceAction480(115),
+ new ReduceAction481(115),
+ new ReduceAction482(115),
+ new ReduceAction482(115),
+ new ReduceAction484(115),
+ new ReduceAction22(116),
+ new ReduceAction486(116),
+ new ReduceAction487(117),
+ new ReduceAction471(117),
+ new ReduceAction471(118),
+ new ReduceAction490(118),
+ new ReduceAction48(119),
+ new ReduceAction49(119),
+ new ReduceAction50(119),
+ new ReduceAction57(119),
+ new ReduceAction58(119),
+ new ReduceAction76(120),
+ new ReduceAction77(120),
+ new ReduceAction86(121),
+ new ReduceAction87(121),
+ new ReduceAction88(121),
+ new ReduceAction89(121),
+ new ReduceAction90(121),
+ new ReduceAction91(121),
+ new ReduceAction92(121),
+ new ReduceAction93(121),
+ new ReduceAction94(121),
+ new ReduceAction95(121),
+ new ReduceAction96(121),
+ new ReduceAction97(121),
+ new ReduceAction98(121),
+ new ReduceAction99(121),
+ new ReduceAction100(121),
+ new ReduceAction101(121),
+ new ReduceAction102(121),
+ new ReduceAction103(121),
+ new ReduceAction104(121),
+ new ReduceAction105(121),
+ new ReduceAction106(121),
+ new ReduceAction107(121),
+ new ReduceAction463(122),
+ new ReduceAction464(122),
+ new ReduceAction465(122),
+ new ReduceAction464(122),
+ new ReduceAction146(123),
+ new ReduceAction147(123),
+ new ReduceAction159(124),
+ new ReduceAction284(124),
+ new ReduceAction159(125),
+ new ReduceAction286(125),
+ new ReduceAction287(125),
+ new ReduceAction288(125),
+ new ReduceAction289(125),
+ new ReduceAction159(126),
+ new ReduceAction291(126),
+ new ReduceAction159(127),
+ new ReduceAction293(127),
+ new ReduceAction294(127),
+ new ReduceAction295(127),
+ new ReduceAction296(127),
+ new ReduceAction297(127),
+ new ReduceAction298(127),
+ new ReduceAction299(127),
+ new ReduceAction300(127),
+ new ReduceAction159(128),
+ new ReduceAction302(128),
+ new ReduceAction159(129),
+ new ReduceAction304(129),
+ new ReduceAction159(130),
+ new ReduceAction306(130),
+ new ReduceAction159(131),
+ new ReduceAction308(131),
+ new ReduceAction309(131),
+ new ReduceAction159(132),
+ new ReduceAction311(132),
+ new ReduceAction312(132),
+ new ReduceAction159(133),
+ new ReduceAction314(133),
+ new ReduceAction315(133),
+ new ReduceAction316(133),
+ new ReduceAction159(134),
+ new ReduceAction318(134),
+ new ReduceAction159(135),
+ new ReduceAction320(135),
+ new ReduceAction321(135),
+ new ReduceAction322(135),
+ new ReduceAction323(135),
+ new ReduceAction159(136),
+ new ReduceAction325(136),
+ new ReduceAction326(136),
+ new ReduceAction327(136),
+ new ReduceAction328(136),
+ new ReduceAction159(137),
+ new ReduceAction330(137),
+ new ReduceAction331(137),
+ new ReduceAction183(137),
+ new ReduceAction187(137),
+ new ReduceAction333(137),
+ new ReduceAction341(137),
+ new ReduceAction184(137),
+ new ReduceAction188(137),
+ new ReduceAction335(137),
+ new ReduceAction343(137),
+ new ReduceAction185(137),
+ new ReduceAction189(137),
+ new ReduceAction337(137),
+ new ReduceAction345(137),
+ new ReduceAction184(137),
+ new ReduceAction188(137),
+ new ReduceAction335(137),
+ new ReduceAction343(137),
+ new ReduceAction191(137),
+ new ReduceAction349(137),
+ new ReduceAction192(137),
+ new ReduceAction193(137),
+ new ReduceAction351(137),
+ new ReduceAction353(137),
+ new ReduceAction355(137),
+ new ReduceAction356(137),
+ new ReduceAction357(137),
+ new ReduceAction358(137),
+ new ReduceAction359(137),
+ new ReduceAction360(137),
+ new ReduceAction357(137),
+ new ReduceAction358(137),
+ new ReduceAction363(137),
+ new ReduceAction364(137),
+ new ReduceAction365(137),
+ new ReduceAction159(138),
+ new ReduceAction367(138),
+ new ReduceAction368(138),
+ new ReduceAction369(139),
+ new ReduceAction370(139),
+ new ReduceAction371(139),
+ new ReduceAction372(139),
+ new ReduceAction373(139),
+ new ReduceAction374(139),
+ new ReduceAction375(139),
+ new ReduceAction376(139),
+ new ReduceAction377(139),
+ new ReduceAction159(139),
+ new ReduceAction159(139),
+ new ReduceAction146(140),
+ new ReduceAction147(140),
+ new ReduceAction148(140),
+ new ReduceAction149(140),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction169(141),
+ new ReduceAction170(141),
+ new ReduceAction171(141),
+ new ReduceAction172(141),
+ new ReduceAction173(141),
+ new ReduceAction174(141),
+ new ReduceAction175(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction183(141),
+ new ReduceAction184(141),
+ new ReduceAction185(141),
+ new ReduceAction184(141),
+ new ReduceAction187(141),
+ new ReduceAction188(141),
+ new ReduceAction189(141),
+ new ReduceAction188(141),
+ new ReduceAction191(141),
+ new ReduceAction192(141),
+ new ReduceAction193(141),
+ new ReduceAction194(141),
+ new ReduceAction195(141),
+ new ReduceAction194(141),
+ new ReduceAction197(141),
+ new ReduceAction198(141),
+ new ReduceAction197(141),
+ new ReduceAction200(141),
+ new ReduceAction207(142),
+ new ReduceAction208(142),
+ new ReduceAction209(142),
+ new ReduceAction210(142),
+ new ReduceAction211(142),
+ new ReduceAction212(142),
+ new ReduceAction213(142),
+ new ReduceAction214(142),
+ new ReduceAction211(142),
+ new ReduceAction212(142),
+ new ReduceAction217(142),
+ new ReduceAction218(142),
+ new ReduceAction219(142),
+ new ReduceAction220(142),
+ new ReduceAction221(142),
+ new ReduceAction222(142),
+ new ReduceAction219(142),
+ new ReduceAction220(142),
+ new ReduceAction225(142),
+ new ReduceAction226(142),
+ new ReduceAction227(142),
+ new ReduceAction228(142),
+ new ReduceAction229(142),
+ new ReduceAction230(142),
+ new ReduceAction231(142),
+ new ReduceAction232(142),
+ new ReduceAction233(142),
+ new ReduceAction230(142),
+ new ReduceAction231(142),
+ new ReduceAction236(142),
+ new ReduceAction237(142),
+ new ReduceAction238(142),
+ new ReduceAction239(142),
+ new ReduceAction240(142),
+ new ReduceAction241(142),
+ new ReduceAction238(142),
+ new ReduceAction239(142),
+ new ReduceAction244(142),
+ new ReduceAction159(143),
+ new ReduceAction284(143),
+ new ReduceAction159(144),
+ new ReduceAction286(144),
+ new ReduceAction287(144),
+ new ReduceAction288(144),
+ new ReduceAction289(144),
+ new ReduceAction159(145),
+ new ReduceAction291(145),
+ new ReduceAction159(146),
+ new ReduceAction293(146),
+ new ReduceAction294(146),
+ new ReduceAction295(146),
+ new ReduceAction296(146),
+ new ReduceAction297(146),
+ new ReduceAction298(146),
+ new ReduceAction299(146),
+ new ReduceAction300(146),
+ new ReduceAction159(147),
+ new ReduceAction302(147),
+ new ReduceAction159(148),
+ new ReduceAction304(148),
+ new ReduceAction159(149),
+ new ReduceAction306(149),
+ new ReduceAction159(150),
+ new ReduceAction308(150),
+ new ReduceAction309(150),
+ new ReduceAction159(151),
+ new ReduceAction311(151),
+ new ReduceAction312(151),
+ new ReduceAction159(152),
+ new ReduceAction314(152),
+ new ReduceAction315(152),
+ new ReduceAction316(152),
+ new ReduceAction159(153),
+ new ReduceAction318(153),
+ new ReduceAction159(154),
+ new ReduceAction320(154),
+ new ReduceAction321(154),
+ new ReduceAction322(154),
+ new ReduceAction323(154),
+ new ReduceAction159(155),
+ new ReduceAction325(155),
+ new ReduceAction326(155),
+ new ReduceAction327(155),
+ new ReduceAction328(155),
+ new ReduceAction159(156),
+ new ReduceAction330(156),
+ new ReduceAction331(156),
+ new ReduceAction183(156),
+ new ReduceAction333(156),
+ new ReduceAction184(156),
+ new ReduceAction335(156),
+ new ReduceAction185(156),
+ new ReduceAction337(156),
+ new ReduceAction184(156),
+ new ReduceAction335(156),
+ new ReduceAction187(156),
+ new ReduceAction341(156),
+ new ReduceAction188(156),
+ new ReduceAction343(156),
+ new ReduceAction189(156),
+ new ReduceAction345(156),
+ new ReduceAction188(156),
+ new ReduceAction343(156),
+ new ReduceAction191(156),
+ new ReduceAction349(156),
+ new ReduceAction192(156),
+ new ReduceAction351(156),
+ new ReduceAction193(156),
+ new ReduceAction353(156),
+ new ReduceAction354(156),
+ new ReduceAction355(156),
+ new ReduceAction356(156),
+ new ReduceAction357(156),
+ new ReduceAction358(156),
+ new ReduceAction359(156),
+ new ReduceAction360(156),
+ new ReduceAction357(156),
+ new ReduceAction358(156),
+ new ReduceAction363(156),
+ new ReduceAction364(156),
+ new ReduceAction365(156),
+ new ReduceAction159(157),
+ new ReduceAction367(157),
+ new ReduceAction368(157),
+ new ReduceAction369(158),
+ new ReduceAction370(158),
+ new ReduceAction371(158),
+ new ReduceAction372(158),
+ new ReduceAction373(158),
+ new ReduceAction374(158),
+ new ReduceAction375(158),
+ new ReduceAction376(158),
+ new ReduceAction377(158),
+ new ReduceAction159(158),
+ new ReduceAction402(159),
+ new ReduceAction403(159),
+ new ReduceAction404(160),
+ new ReduceAction22(160),
+ new ReduceAction406(161),
+ new ReduceAction406(162),
+ new ReduceAction387(163),
+ new ReduceAction388(163),
+ new ReduceAction428(164),
+ new ReduceAction159(164),
+ new ReduceAction159(164),
+ new ReduceAction431(164),
+ new ReduceAction432(164),
+ new ReduceAction146(165),
+ new ReduceAction147(165),
+ new ReduceAction159(166),
+ new ReduceAction284(166),
+ new ReduceAction159(167),
+ new ReduceAction286(167),
+ new ReduceAction287(167),
+ new ReduceAction288(167),
+ new ReduceAction289(167),
+ new ReduceAction159(168),
+ new ReduceAction291(168),
+ new ReduceAction159(169),
+ new ReduceAction293(169),
+ new ReduceAction294(169),
+ new ReduceAction295(169),
+ new ReduceAction296(169),
+ new ReduceAction297(169),
+ new ReduceAction298(169),
+ new ReduceAction299(169),
+ new ReduceAction300(169),
+ new ReduceAction159(170),
+ new ReduceAction302(170),
+ new ReduceAction159(171),
+ new ReduceAction304(171),
+ new ReduceAction159(172),
+ new ReduceAction306(172),
+ new ReduceAction159(173),
+ new ReduceAction308(173),
+ new ReduceAction309(173),
+ new ReduceAction159(174),
+ new ReduceAction311(174),
+ new ReduceAction312(174),
+ new ReduceAction159(175),
+ new ReduceAction314(175),
+ new ReduceAction315(175),
+ new ReduceAction316(175),
+ new ReduceAction159(176),
+ new ReduceAction318(176),
+ new ReduceAction159(177),
+ new ReduceAction320(177),
+ new ReduceAction321(177),
+ new ReduceAction322(177),
+ new ReduceAction323(177),
+ new ReduceAction159(178),
+ new ReduceAction325(178),
+ new ReduceAction326(178),
+ new ReduceAction853(178),
+ new ReduceAction159(179),
+ new ReduceAction855(179),
+ new ReduceAction856(179),
+ new ReduceAction857(179),
+ new ReduceAction858(179),
+ new ReduceAction859(179),
+ new ReduceAction183(179),
+ new ReduceAction333(179),
+ new ReduceAction858(179),
+ new ReduceAction859(179),
+ new ReduceAction191(179),
+ new ReduceAction349(179),
+ new ReduceAction866(179),
+ new ReduceAction867(179),
+ new ReduceAction355(179),
+ new ReduceAction356(179),
+ new ReduceAction357(179),
+ new ReduceAction358(179),
+ new ReduceAction359(179),
+ new ReduceAction360(179),
+ new ReduceAction357(179),
+ new ReduceAction358(179),
+ new ReduceAction363(179),
+ new ReduceAction364(179),
+ new ReduceAction365(179),
+ new ReduceAction159(180),
+ new ReduceAction367(180),
+ new ReduceAction368(180),
+ new ReduceAction369(181),
+ new ReduceAction370(181),
+ new ReduceAction371(181),
+ new ReduceAction372(181),
+ new ReduceAction373(181),
+ new ReduceAction374(181),
+ new ReduceAction375(181),
+ new ReduceAction376(181),
+ new ReduceAction377(181),
+ new ReduceAction159(181),
+ new ReduceAction892(182),
+ new ReduceAction893(182),
+ new ReduceAction156(183),
new ReduceAction157(183),
- new ReduceAction890(184),
- new ReduceAction891(184),
- new ReduceAction154(185),
- new ReduceAction155(185),
- new ReduceAction156(185),
- new ReduceAction157(185),
- new ReduceAction157(186),
- new ReduceAction157(186),
- new ReduceAction167(186),
- new ReduceAction168(186),
- new ReduceAction169(186),
- new ReduceAction170(186),
- new ReduceAction171(186),
- new ReduceAction172(186),
- new ReduceAction173(186),
- new ReduceAction157(186),
- new ReduceAction157(186),
- new ReduceAction157(186),
- new ReduceAction157(186),
- new ReduceAction157(186),
- new ReduceAction157(186),
- new ReduceAction157(186),
- new ReduceAction181(186),
- new ReduceAction182(186),
- new ReduceAction183(186),
- new ReduceAction182(186),
- new ReduceAction185(186),
- new ReduceAction186(186),
- new ReduceAction187(186),
- new ReduceAction186(186),
- new ReduceAction189(186),
- new ReduceAction190(186),
- new ReduceAction191(186),
- new ReduceAction192(186),
- new ReduceAction193(186),
- new ReduceAction192(186),
- new ReduceAction195(186),
- new ReduceAction196(186),
- new ReduceAction195(186),
- new ReduceAction198(186),
- new ReduceAction254(187),
- new ReduceAction255(187),
- new ReduceAction256(188),
- new ReduceAction263(189),
- new ReduceAction264(189),
- new ReduceAction265(190),
- new ReduceAction266(190),
- new ReduceAction267(191),
- new ReduceAction268(191),
- new ReduceAction269(192),
- new ReduceAction270(192),
- new ReduceAction274(193),
- new ReduceAction275(193),
- new ReduceAction157(194),
+ new ReduceAction158(183),
+ new ReduceAction159(183),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction169(184),
+ new ReduceAction170(184),
+ new ReduceAction171(184),
+ new ReduceAction172(184),
+ new ReduceAction173(184),
+ new ReduceAction174(184),
+ new ReduceAction175(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction183(184),
+ new ReduceAction184(184),
+ new ReduceAction185(184),
+ new ReduceAction184(184),
+ new ReduceAction187(184),
+ new ReduceAction188(184),
+ new ReduceAction189(184),
+ new ReduceAction188(184),
+ new ReduceAction191(184),
+ new ReduceAction192(184),
+ new ReduceAction193(184),
+ new ReduceAction194(184),
+ new ReduceAction195(184),
+ new ReduceAction194(184),
+ new ReduceAction197(184),
+ new ReduceAction198(184),
+ new ReduceAction197(184),
+ new ReduceAction200(184),
+ new ReduceAction256(185),
+ new ReduceAction257(185),
+ new ReduceAction258(186),
+ new ReduceAction267(187),
+ new ReduceAction268(187),
+ new ReduceAction269(188),
+ new ReduceAction270(188),
+ new ReduceAction271(189),
+ new ReduceAction272(189),
+ new ReduceAction273(190),
+ new ReduceAction274(190),
+ new ReduceAction278(191),
+ new ReduceAction279(191),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction169(192),
+ new ReduceAction170(192),
+ new ReduceAction171(192),
+ new ReduceAction172(192),
+ new ReduceAction173(192),
+ new ReduceAction174(192),
+ new ReduceAction175(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction183(192),
+ new ReduceAction184(192),
+ new ReduceAction185(192),
+ new ReduceAction184(192),
+ new ReduceAction187(192),
+ new ReduceAction188(192),
+ new ReduceAction189(192),
+ new ReduceAction188(192),
+ new ReduceAction191(192),
+ new ReduceAction192(192),
+ new ReduceAction193(192),
+ new ReduceAction194(192),
+ new ReduceAction195(192),
+ new ReduceAction194(192),
+ new ReduceAction197(192),
+ new ReduceAction198(192),
+ new ReduceAction197(192),
+ new ReduceAction200(192),
+ new ReduceAction156(193),
+ new ReduceAction157(193),
+ new ReduceAction158(193),
+ new ReduceAction156(194),
new ReduceAction157(194),
- new ReduceAction167(194),
- new ReduceAction168(194),
- new ReduceAction169(194),
- new ReduceAction170(194),
- new ReduceAction171(194),
- new ReduceAction172(194),
- new ReduceAction173(194),
- new ReduceAction157(194),
- new ReduceAction157(194),
- new ReduceAction157(194),
- new ReduceAction157(194),
- new ReduceAction157(194),
- new ReduceAction157(194),
- new ReduceAction157(194),
- new ReduceAction181(194),
- new ReduceAction182(194),
- new ReduceAction183(194),
- new ReduceAction182(194),
- new ReduceAction185(194),
- new ReduceAction186(194),
- new ReduceAction187(194),
- new ReduceAction186(194),
- new ReduceAction189(194),
- new ReduceAction190(194),
- new ReduceAction191(194),
- new ReduceAction192(194),
- new ReduceAction193(194),
- new ReduceAction192(194),
- new ReduceAction195(194),
- new ReduceAction196(194),
- new ReduceAction195(194),
- new ReduceAction198(194),
- new ReduceAction154(195),
- new ReduceAction155(195),
- new ReduceAction156(195),
- new ReduceAction154(196),
- new ReduceAction155(196),
- new ReduceAction156(196),
- new ReduceAction157(197),
- new ReduceAction157(197),
- new ReduceAction167(197),
- new ReduceAction168(197),
+ new ReduceAction158(194),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction169(195),
+ new ReduceAction170(195),
+ new ReduceAction171(195),
+ new ReduceAction172(195),
+ new ReduceAction173(195),
+ new ReduceAction174(195),
+ new ReduceAction175(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction200(195),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction169(196),
+ new ReduceAction170(196),
+ new ReduceAction171(196),
+ new ReduceAction172(196),
+ new ReduceAction173(196),
+ new ReduceAction174(196),
+ new ReduceAction175(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction200(196),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
new ReduceAction169(197),
new ReduceAction170(197),
new ReduceAction171(197),
new ReduceAction172(197),
new ReduceAction173(197),
- new ReduceAction157(197),
- new ReduceAction157(197),
- new ReduceAction157(197),
- new ReduceAction157(197),
- new ReduceAction157(197),
- new ReduceAction157(197),
- new ReduceAction198(197),
- new ReduceAction157(198),
- new ReduceAction157(198),
- new ReduceAction167(198),
- new ReduceAction168(198),
+ new ReduceAction174(197),
+ new ReduceAction175(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction200(197),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
new ReduceAction169(198),
new ReduceAction170(198),
new ReduceAction171(198),
new ReduceAction172(198),
new ReduceAction173(198),
- new ReduceAction157(198),
- new ReduceAction157(198),
- new ReduceAction157(198),
- new ReduceAction157(198),
- new ReduceAction157(198),
- new ReduceAction157(198),
- new ReduceAction198(198),
- new ReduceAction157(199),
- new ReduceAction157(199),
- new ReduceAction167(199),
- new ReduceAction168(199),
- new ReduceAction169(199),
- new ReduceAction170(199),
- new ReduceAction171(199),
- new ReduceAction172(199),
- new ReduceAction173(199),
- new ReduceAction157(199),
- new ReduceAction157(199),
- new ReduceAction157(199),
- new ReduceAction157(199),
- new ReduceAction157(199),
- new ReduceAction157(199),
- new ReduceAction198(199),
- new ReduceAction157(200),
- new ReduceAction157(200),
- new ReduceAction167(200),
- new ReduceAction168(200),
- new ReduceAction169(200),
- new ReduceAction170(200),
- new ReduceAction171(200),
- new ReduceAction172(200),
- new ReduceAction173(200),
- new ReduceAction157(200),
- new ReduceAction157(200),
- new ReduceAction157(200),
- new ReduceAction157(200),
- new ReduceAction157(200),
- new ReduceAction157(200),
- new ReduceAction198(200),
- new ReduceAction432(201),
- new ReduceAction434(201),
- new ReduceAction472(202),
- new ReduceAction473(202),
- new ReduceAction23(202),
- new ReduceAction1052(203),
- new ReduceAction1053(203),
- new ReduceAction1054(204),
- new ReduceAction1055(204),
- new ReduceAction1056(205),
- new ReduceAction1057(205),
- new ReduceAction1058(206),
- new ReduceAction1059(206),
- new ReduceAction43(207),
- new ReduceAction1061(207),
- new ReduceAction1062(208),
- new ReduceAction1063(208),
- new ReduceAction1064(209),
- new ReduceAction1065(209),
- new ReduceAction148(210),
- new ReduceAction1067(210),
- new ReduceAction383(211),
- new ReduceAction1069(211),
- new ReduceAction383(212),
- new ReduceAction1069(212),
- new ReduceAction383(213),
- new ReduceAction1069(213),
- new ReduceAction446(214),
- new ReduceAction1075(214),
- new ReduceAction405(215),
- new ReduceAction1077(215),
- new ReduceAction405(216),
- new ReduceAction1077(216),
- new ReduceAction383(217),
- new ReduceAction1069(217),
- new ReduceAction383(218),
- new ReduceAction1069(218),
- new ReduceAction447(219),
- new ReduceAction1085(219),
- new ReduceAction1086(220),
- new ReduceAction1087(220),
- new ReduceAction469(221),
- new ReduceAction488(221)
+ new ReduceAction174(198),
+ new ReduceAction175(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction200(198),
+ new ReduceAction434(199),
+ new ReduceAction436(199),
+ new ReduceAction474(200),
+ new ReduceAction475(200),
+ new ReduceAction23(200),
+ new ReduceAction1054(201),
+ new ReduceAction1055(201),
+ new ReduceAction1056(202),
+ new ReduceAction1057(202),
+ new ReduceAction1058(203),
+ new ReduceAction1059(203),
+ new ReduceAction37(204),
+ new ReduceAction1061(204),
+ new ReduceAction45(205),
+ new ReduceAction1063(205),
+ new ReduceAction408(206),
+ new ReduceAction1065(206),
+ new ReduceAction1066(207),
+ new ReduceAction1067(207),
+ new ReduceAction1068(208),
+ new ReduceAction1069(208),
+ new ReduceAction150(209),
+ new ReduceAction1071(209),
+ new ReduceAction387(210),
+ new ReduceAction1073(210),
+ new ReduceAction387(211),
+ new ReduceAction1073(211),
+ new ReduceAction387(212),
+ new ReduceAction1073(212),
+ new ReduceAction448(213),
+ new ReduceAction1079(213),
+ new ReduceAction408(214),
+ new ReduceAction1065(214),
+ new ReduceAction387(215),
+ new ReduceAction1073(215),
+ new ReduceAction387(216),
+ new ReduceAction1073(216),
+ new ReduceAction449(217),
+ new ReduceAction1087(217),
+ new ReduceAction1088(218),
+ new ReduceAction1089(218),
+ new ReduceAction471(219),
+ new ReduceAction490(219)
)
end
end
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 nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode12 = 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 listnode7 = nodearraylist7
- assert listnode7 isa Array[Object]
- listnode8 = concat(listnode8, listnode7)
- var listnode10 = nodearraylist8
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var tkwendnode12 = nodearraylist9
- assert tkwendnode12 isa nullable TKwend
+ var listnode11 = nodearraylist7
+ 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,
tkwredefnode3,
pvisibilitynode4,
pclasskindnode5,
tclassidnode6,
+ null,
listnode8,
null,
- listnode11,
- tkwendnode12
+ null,
+ listnode12,
+ tkwendnode13
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
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 nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode12 = 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 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 tkwendnode12 = nodearraylist10
- assert tkwendnode12 isa nullable TKwend
+ var pexterncodeblocknode10 = nodearraylist7
+ assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+ var listnode11 = nodearraylist8
+ 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,
+ null,
listnode8,
- pexterncodeblocknode9,
- listnode11,
- tkwendnode12
+ null,
+ pexterncodeblocknode10,
+ listnode12,
+ tkwendnode13
+ )
+ node_list = pclassdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction28
+ 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 listnode9 = 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 tobranode7 = nodearraylist7
+ assert tobranode7 isa nullable TObra
+ var listnode8 = nodearraylist9
+ assert listnode8 isa Array[Object]
+ listnode9 = concat(listnode9, listnode8)
+ var tcbranode10 = nodearraylist10
+ assert tcbranode10 isa nullable TCbra
+ var listnode12 = nodearraylist11
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist12
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ tobranode7,
+ listnode9,
+ tcbranode10,
+ null,
+ listnode13,
+ tkwendnode14
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
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 listnode9 = 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 tobranode7 = nodearraylist7
+ assert tobranode7 isa nullable TObra
+ var listnode8 = nodearraylist9
+ assert listnode8 isa Array[Object]
+ listnode9 = concat(listnode9, listnode8)
+ var tcbranode10 = nodearraylist10
+ assert tcbranode10 isa nullable TCbra
+ var pexterncodeblocknode11 = nodearraylist11
+ assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+ var listnode12 = nodearraylist12
+ assert listnode12 isa Array[Object]
+ listnode13 = concat(listnode13, listnode12)
+ var tkwendnode14 = nodearraylist13
+ assert tkwendnode14 isa nullable TKwend
+ var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ tobranode7,
+ listnode9,
+ tcbranode10,
+ pexterncodeblocknode11,
+ listnode13,
+ tkwendnode14
+ )
+ node_list = pclassdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction31
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
var nodearraylist1 = p.pop
var tkwredefnode1 = nodearraylist1
node_list = tkwredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction30
+private class ReduceAction32
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction31
+private class ReduceAction33
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction32
+private class ReduceAction34
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction33
+private class ReduceAction35
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction34
+private class ReduceAction36
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction35
+private class ReduceAction37
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 listnode2 = new Array[Object]
- var pformaldefnode1 = nodearraylist3
+ var pformaldefnode1 = nodearraylist1
if pformaldefnode1 != null then
listnode2.add(pformaldefnode1)
end
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction36
+private class ReduceAction38
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 pformaldefnode1 = nodearraylist3
- var listnode2 = nodearraylist4
+ var pformaldefnode1 = nodearraylist1
+ var listnode2 = nodearraylist2
assert listnode2 isa Array[Object]
if pformaldefnode1 != null then
listnode3.add(pformaldefnode1)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction37
+private class ReduceAction39
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction38
+private class ReduceAction40
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction39
+private class ReduceAction41
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
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction40
+private class ReduceAction42
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
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction41
+private class ReduceAction43
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction42
+private class ReduceAction44
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction43
+private class ReduceAction45
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction44
+private class ReduceAction46
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction45
+private class ReduceAction47
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction46
+private class ReduceAction48
super ReduceAction
redef fun action(p: Parser)
do
assert pmethidnode8 isa nullable AMethid
var psignaturenode9 = nodearraylist6
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction47
+private class ReduceAction49
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist7
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist9
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist8
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist9
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist10
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction48
+private class ReduceAction50
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
null,
null,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction49
+private class ReduceAction51
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
null,
null,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction50
+private class ReduceAction52
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
null,
null,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction51
+private class ReduceAction53
super ReduceAction
redef fun action(p: Parser)
do
assert tkwnewnode7 isa nullable TKwnew
var psignaturenode9 = nodearraylist5
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist7
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist6
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist7
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist8
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction52
+private class ReduceAction54
super ReduceAction
redef fun action(p: Parser)
do
assert pmethidnode8 isa nullable AMethid
var psignaturenode9 = nodearraylist6
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction53
+private class ReduceAction55
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist6
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction54
+private class ReduceAction56
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist7
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist9
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist8
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist9
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist10
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction55
+private class ReduceAction57
super ReduceAction
redef fun action(p: Parser)
do
null,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction56
+private class ReduceAction58
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction57
+private class ReduceAction59
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pannotationsnode9 = nodearraylist7
- assert pannotationsnode9 isa nullable AAnnotations
+ var pannotationsnode10 = nodearraylist7
+ assert pannotationsnode10 isa nullable AAnnotations
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
tidnode6,
ptypenode7,
null,
- pannotationsnode9,
+ null,
+ pannotationsnode10,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction58
+private class ReduceAction60
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pexprnode8 = nodearraylist9
- assert pexprnode8 isa nullable AExpr
- var pannotationsnode9 = nodearraylist10
- assert pannotationsnode9 isa nullable AAnnotations
+ var tassignnode8 = nodearraylist7
+ assert tassignnode8 isa nullable TAssign
+ var pexprnode9 = nodearraylist9
+ assert pexprnode9 isa nullable AExpr
+ var pannotationsnode10 = nodearraylist10
+ assert pannotationsnode10 isa nullable AAnnotations
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
tkwvarnode5,
tidnode6,
ptypenode7,
- pexprnode8,
- pannotationsnode9,
+ tassignnode8,
+ pexprnode9,
+ pannotationsnode10,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction59
+private class ReduceAction61
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pexprnode10 = nodearraylist8
- assert pexprnode10 isa nullable AExpr
+ var tkwdonode11 = nodearraylist7
+ assert tkwdonode11 isa nullable TKwdo
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
ptypenode7,
null,
null,
- pexprnode10
+ null,
+ tkwdonode11,
+ pexprnode12,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction60
+private class ReduceAction62
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pannotationsnode9 = nodearraylist7
- assert pannotationsnode9 isa nullable AAnnotations
- var pexprnode10 = nodearraylist9
- assert pexprnode10 isa nullable AExpr
+ var pannotationsnode10 = nodearraylist7
+ assert pannotationsnode10 isa nullable AAnnotations
+ var tkwdonode11 = nodearraylist8
+ assert tkwdonode11 isa nullable TKwdo
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
tidnode6,
ptypenode7,
null,
- pannotationsnode9,
- pexprnode10
+ null,
+ pannotationsnode10,
+ tkwdonode11,
+ pexprnode12,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction61
+private class ReduceAction63
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pexprnode10 = nodearraylist8
- assert pexprnode10 isa nullable AExpr
+ var tkwdonode11 = nodearraylist7
+ assert tkwdonode11 isa nullable TKwdo
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
+ var tkwendnode13 = nodearraylist9
+ assert tkwendnode13 isa nullable TKwend
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
ptypenode7,
null,
null,
- pexprnode10
+ null,
+ tkwdonode11,
+ pexprnode12,
+ tkwendnode13
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction62
+private class ReduceAction64
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pannotationsnode9 = nodearraylist7
- assert pannotationsnode9 isa nullable AAnnotations
- var pexprnode10 = nodearraylist9
- assert pexprnode10 isa nullable AExpr
+ var pannotationsnode10 = nodearraylist7
+ assert pannotationsnode10 isa nullable AAnnotations
+ var tkwdonode11 = nodearraylist8
+ assert tkwdonode11 isa nullable TKwdo
+ var pexprnode12 = nodearraylist9
+ assert pexprnode12 isa nullable AExpr
+ var tkwendnode13 = nodearraylist10
+ assert tkwendnode13 isa nullable TKwend
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
tidnode6,
ptypenode7,
null,
- pannotationsnode9,
- pexprnode10
+ null,
+ pannotationsnode10,
+ tkwdonode11,
+ pexprnode12,
+ tkwendnode13
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction63
+private class ReduceAction65
super ReduceAction
redef fun action(p: Parser)
do
assert tkwinitnode6 isa nullable TKwinit
var psignaturenode9 = nodearraylist5
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist7
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist6
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist7
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist8
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction64
+private class ReduceAction66
super ReduceAction
redef fun action(p: Parser)
do
assert pmethidnode8 isa nullable AMethid
var psignaturenode9 = nodearraylist6
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction65
+private class ReduceAction67
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist6
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction66
+private class ReduceAction68
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist7
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist9
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist8
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist9
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist10
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
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
null,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction69
+private class ReduceAction71
super ReduceAction
redef fun action(p: Parser)
do
null,
pexterncallsnode11,
pexterncodeblocknode12,
- null
+ null,
+ null,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction70
+private class ReduceAction72
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction71
+private class ReduceAction73
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction72
+private class ReduceAction74
super ReduceAction
redef fun action(p: Parser)
do
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 node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pannotationsnode1 = nodearraylist2
+ var listnode6 = new Array[Object]
+ var tkwisnode2 = nodearraylist1
+ assert tkwisnode2 isa nullable TKwis
+ var listnode5 = nodearraylist2
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+ tkwisnode2,
+ null,
+ null,
+ listnode6,
+ null,
+ null
+ )
node_list = pannotationsnode1
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 nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pannotationsnode1 = nodearraylist3
+ var listnode6 = new Array[Object]
+ var tkwisnode2 = nodearraylist1
+ assert tkwisnode2 isa nullable TKwis
+ var listnode5 = nodearraylist3
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var tkwendnode8 = nodearraylist4
+ assert tkwendnode8 isa nullable TKwend
+ var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+ tkwisnode2,
+ null,
+ null,
+ listnode6,
+ null,
+ tkwendnode8
+ )
node_list = pannotationsnode1
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 nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pannotationsnode1 = nodearraylist3
+ var listnode6 = new Array[Object]
+ var tkwisnode2 = nodearraylist1
+ assert tkwisnode2 isa nullable TKwis
+ var listnode5 = nodearraylist3
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+ tkwisnode2,
+ null,
+ null,
+ listnode6,
+ null,
+ null
+ )
node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction79
+private class ReduceAction81
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction80
+private class ReduceAction82
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction81
+private class ReduceAction83
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction82
+private class ReduceAction84
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction83
+private class ReduceAction85
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction84
+private class ReduceAction86
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction85
+private class ReduceAction87
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction86
+private class ReduceAction88
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction87
+private class ReduceAction89
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction88
+private class ReduceAction90
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction89
+private class ReduceAction91
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction90
+private class ReduceAction92
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction91
+private class ReduceAction93
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction92
+private class ReduceAction94
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction93
+private class ReduceAction95
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction94
+private class ReduceAction96
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction95
+private class ReduceAction97
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction96
+private class ReduceAction98
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction97
+private class ReduceAction99
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction98
+private class ReduceAction100
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction99
+private class ReduceAction101
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction100
+private class ReduceAction102
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction101
+private class ReduceAction103
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction102
+private class ReduceAction104
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction103
+private class ReduceAction105
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction104
+private class ReduceAction106
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction105
+private class ReduceAction107
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction106
+private class ReduceAction108
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction107
+private class ReduceAction109
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction108
+private class ReduceAction110
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction109
+private class ReduceAction111
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction110
+private class ReduceAction112
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction111
+private class ReduceAction113
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction112
+private class ReduceAction114
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction114
+private class ReduceAction116
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction115
+private class ReduceAction117
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction116
+private class ReduceAction118
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction117
+private class ReduceAction119
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction118
+private class ReduceAction120
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction119
+private class ReduceAction121
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction120
+private class ReduceAction122
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction121
+private class ReduceAction123
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction123
+private class ReduceAction125
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction124
+private class ReduceAction126
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction126
+private class ReduceAction128
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction127
+private class ReduceAction129
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction128
+private class ReduceAction130
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction129
+private class ReduceAction131
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction130
+private class ReduceAction132
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction131
+private class ReduceAction133
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction132
+private class ReduceAction134
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction133
+private class ReduceAction135
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction134
+private class ReduceAction136
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction135
+private class ReduceAction137
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction137
+private class ReduceAction139
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction138
+private class ReduceAction140
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction139
+private class ReduceAction141
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction140
+private class ReduceAction142
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction141
+private class ReduceAction143
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction143
+private class ReduceAction145
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction144
+private class ReduceAction146
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 listnode5 = new Array[Object]
var tclassidnode3 = nodearraylist1
assert tclassidnode3 isa nullable TClassid
- var pannotationsnode5 = nodearraylist2
- assert pannotationsnode5 isa nullable AAnnotations
+ var pannotationsnode7 = nodearraylist2
+ assert pannotationsnode7 isa nullable AAnnotations
var ptypenode1: nullable AType = new AType.init_atype(
null,
tclassidnode3,
- listnode4,
- pannotationsnode5
+ null,
+ listnode5,
+ null,
+ pannotationsnode7
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction145
+private class ReduceAction147
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 listnode5 = 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 pannotationsnode7 = nodearraylist3
+ assert pannotationsnode7 isa nullable AAnnotations
var ptypenode1: nullable AType = new AType.init_atype(
tkwnullablenode2,
tclassidnode3,
- listnode4,
- pannotationsnode5
+ null,
+ listnode5,
+ null,
+ pannotationsnode7
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction146
+private class ReduceAction148
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 listnode6 = 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 tobranode4 = nodearraylist2
+ assert tobranode4 isa nullable TObra
+ var listnode5 = nodearraylist4
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var tcbranode7 = nodearraylist6
+ assert tcbranode7 isa nullable TCbra
+ var pannotationsnode8 = nodearraylist7
+ assert pannotationsnode8 isa nullable AAnnotations
var ptypenode1: nullable AType = new AType.init_atype(
null,
tclassidnode3,
- listnode5,
- pannotationsnode6
+ tobranode4,
+ listnode6,
+ tcbranode7,
+ pannotationsnode8
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction147
+private class ReduceAction149
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 listnode6 = 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 tobranode4 = nodearraylist3
+ assert tobranode4 isa nullable TObra
+ var listnode5 = nodearraylist5
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var tcbranode7 = nodearraylist7
+ assert tcbranode7 isa nullable TCbra
+ var pannotationsnode8 = nodearraylist8
+ assert pannotationsnode8 isa nullable AAnnotations
var ptypenode1: nullable AType = new AType.init_atype(
tkwnullablenode2,
tclassidnode3,
- listnode5,
- pannotationsnode6
+ tobranode4,
+ listnode6,
+ tcbranode7,
+ pannotationsnode8
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction148
+private class ReduceAction150
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction149
+private class ReduceAction151
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction150
+private class ReduceAction152
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction154
+private class ReduceAction156
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction155
+private class ReduceAction157
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction156
+private class ReduceAction158
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction157
+private class ReduceAction159
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction158
+private class ReduceAction160
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction159
+private class ReduceAction161
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction160
+private class ReduceAction162
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction161
+private class ReduceAction163
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction162
+private class ReduceAction164
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction163
+private class ReduceAction165
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction167
+private class ReduceAction169
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction168
+private class ReduceAction170
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction169
+private class ReduceAction171
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction170
+private class ReduceAction172
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction171
+private class ReduceAction173
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction172
+private class ReduceAction174
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction173
+private class ReduceAction175
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction181
+private class ReduceAction183
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction182
+private class ReduceAction184
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction183
+private class ReduceAction185
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction185
+private class ReduceAction187
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction186
+private class ReduceAction188
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction187
+private class ReduceAction189
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction189
+private class ReduceAction191
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction190
+private class ReduceAction192
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction191
+private class ReduceAction193
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction192
+private class ReduceAction194
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction193
+private class ReduceAction195
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction195
+private class ReduceAction197
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction196
+private class ReduceAction198
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction198
+private class ReduceAction200
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction199
+private class ReduceAction201
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction200
+private class ReduceAction202
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction201
+private class ReduceAction203
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction202
+private class ReduceAction204
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction203
+private class ReduceAction205
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction204
+private class ReduceAction206
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction205
+private class ReduceAction207
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction206
+private class ReduceAction208
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction207
+private class ReduceAction209
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction208
+private class ReduceAction210
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction209
+private class ReduceAction211
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction210
+private class ReduceAction212
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction211
+private class ReduceAction213
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction212
+private class ReduceAction214
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction215
+private class ReduceAction217
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction216
+private class ReduceAction218
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction217
+private class ReduceAction219
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction218
+private class ReduceAction220
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction219
+private class ReduceAction221
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction220
+private class ReduceAction222
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction223
+private class ReduceAction225
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction224
+private class ReduceAction226
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction225
+private class ReduceAction227
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction226
+private class ReduceAction228
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction227
+private class ReduceAction229
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction228
+private class ReduceAction230
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction229
+private class ReduceAction231
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction230
+private class ReduceAction232
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction231
+private class ReduceAction233
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction234
+private class ReduceAction236
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction235
+private class ReduceAction237
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction236
+private class ReduceAction238
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction237
+private class ReduceAction239
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction238
+private class ReduceAction240
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction239
+private class ReduceAction241
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction242
+private class ReduceAction244
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction243
+private class ReduceAction245
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction244
+private class ReduceAction246
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction245
+private class ReduceAction247
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction246
+private class ReduceAction248
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction247
+private class ReduceAction249
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction248
+private class ReduceAction250
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction249
+private class ReduceAction251
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction250
+private class ReduceAction252
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction251
+private class ReduceAction253
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction252
+private class ReduceAction254
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction253
+private class ReduceAction255
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction254
+private class ReduceAction256
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction255
+private class ReduceAction257
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
+ var nodearraylist1 = p.pop
+ 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 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 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 = nodearraylist6
+ assert pexprnode5 isa nullable AExpr
+ var tkwelsenode6 = nodearraylist7
+ assert tkwelsenode6 isa nullable TKwelse
+ var pexprnode7 = nodearraylist8
+ assert pexprnode7 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
+ pexprnode3,
+ tkwthennode4,
+ pexprnode5,
+ tkwelsenode6,
+ pexprnode7
+ )
+ node_list = pexprnode1
+ 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 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 = nodearraylist6
+ assert pexprnode5 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
+ pexprnode3,
+ tkwthennode4,
+ pexprnode5,
+ null,
+ null
+ )
+ node_list = pexprnode1
+ 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 tkwdonode2 = nodearraylist1
- assert tkwdonode2 isa nullable TKwdo
- var pexprnode3 = nodearraylist2
+ var tkwifnode2 = nodearraylist1
+ assert tkwifnode2 isa nullable TKwif
+ var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
- tkwdonode2,
+ var tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
+ var tkwelsenode6 = nodearraylist8
+ assert tkwelsenode6 isa nullable TKwelse
+ var pexprnode7 = nodearraylist9
+ assert pexprnode7 isa nullable AExpr
+ var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+ tkwifnode2,
pexprnode3,
- null
+ tkwthennode4,
+ pexprnode5,
+ tkwelsenode6,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction256
+private class ReduceAction261
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
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 tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var tkwelsenode6 = nodearraylist6
+ assert tkwelsenode6 isa nullable TKwelse
+ var pexprnode7 = nodearraylist7
+ assert pexprnode7 isa nullable AExpr
var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
tkwifnode2,
pexprnode3,
- pexprnode4,
- pexprnode5
+ tkwthennode4,
+ null,
+ tkwelsenode6,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction257
+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
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist6
- assert pexprnode4 isa nullable AExpr
+ var tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var tkwelsenode6 = nodearraylist7
+ assert tkwelsenode6 isa nullable TKwelse
+ var pexprnode7 = nodearraylist8
+ assert pexprnode7 isa nullable AExpr
var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
tkwifnode2,
pexprnode3,
- pexprnode4,
- null
+ tkwthennode4,
+ null,
+ tkwelsenode6,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction258
+private class ReduceAction263
super ReduceAction
redef fun action(p: Parser)
do
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist8
+ var tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var pexprnode5 = nodearraylist7
assert pexprnode5 isa nullable AExpr
+ var pexprnode7 = nodearraylist8
+ assert pexprnode7 isa nullable AExpr
var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
tkwifnode2,
pexprnode3,
- pexprnode4,
- pexprnode5
+ tkwthennode4,
+ pexprnode5,
+ null,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction259
+private class ReduceAction264
super ReduceAction
redef fun action(p: Parser)
do
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode5 = nodearraylist6
- assert pexprnode5 isa nullable AExpr
+ var tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var pexprnode7 = nodearraylist6
+ assert pexprnode7 isa nullable AExpr
var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
tkwifnode2,
pexprnode3,
+ tkwthennode4,
null,
- pexprnode5
+ null,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction260
+private class ReduceAction265
super ReduceAction
redef fun action(p: Parser)
do
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode5 = nodearraylist7
- assert pexprnode5 isa nullable AExpr
+ var tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var pexprnode7 = nodearraylist7
+ assert pexprnode7 isa nullable AExpr
var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
tkwifnode2,
pexprnode3,
+ tkwthennode4,
null,
- pexprnode5
+ null,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction263
+private class ReduceAction267
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction264
+private class ReduceAction268
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction265
+private class ReduceAction269
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction266
+private class ReduceAction270
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction267
+private class ReduceAction271
super ReduceAction
redef fun action(p: Parser)
do
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 tkwinnode5 = nodearraylist5
+ assert tkwinnode5 isa nullable TKwin
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var tkwdonode7 = nodearraylist9
+ assert tkwdonode7 isa nullable TKwdo
+ var pexprnode8 = nodearraylist10
+ assert pexprnode8 isa nullable AExpr
+ var plabelnode9 = nodearraylist11
+ assert plabelnode9 isa nullable ALabel
var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
tkwfornode2,
listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
- plabelnode8
+ tkwinnode5,
+ pexprnode6,
+ tkwdonode7,
+ pexprnode8,
+ plabelnode9
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction268
+private class ReduceAction272
super ReduceAction
redef fun action(p: Parser)
do
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 tkwinnode5 = nodearraylist5
+ assert tkwinnode5 isa nullable TKwin
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var tkwdonode7 = nodearraylist9
+ assert tkwdonode7 isa nullable TKwdo
+ var pexprnode8 = nodearraylist10
+ assert pexprnode8 isa nullable AExpr
var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
tkwfornode2,
listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
+ tkwinnode5,
+ pexprnode6,
+ tkwdonode7,
+ pexprnode8,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction269
+private class ReduceAction273
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction270
+private class ReduceAction274
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction271
+private class ReduceAction275
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction272
+private class ReduceAction276
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction274
+private class ReduceAction278
super ReduceAction
redef fun action(p: Parser)
do
assert tkwassertnode2 isa nullable TKwassert
var pexprnode4 = nodearraylist2
assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist4
- assert pexprnode5 isa nullable AExpr
+ var tkwelsenode5 = nodearraylist3
+ assert tkwelsenode5 isa nullable TKwelse
+ var pexprnode6 = nodearraylist4
+ assert pexprnode6 isa nullable AExpr
var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
tkwassertnode2,
null,
pexprnode4,
- pexprnode5
+ tkwelsenode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction275
+private class ReduceAction279
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode3 isa nullable TId
var pexprnode4 = nodearraylist3
assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist5
- assert pexprnode5 isa nullable AExpr
+ var tkwelsenode5 = nodearraylist4
+ assert tkwelsenode5 isa nullable TKwelse
+ var pexprnode6 = nodearraylist5
+ assert pexprnode6 isa nullable AExpr
var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
tkwassertnode2,
tidnode3,
pexprnode4,
- pexprnode5
+ tkwelsenode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction276
+private class ReduceAction280
super ReduceAction
redef fun action(p: Parser)
do
tkwassertnode2,
null,
pexprnode4,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction277
+private class ReduceAction281
super ReduceAction
redef fun action(p: Parser)
do
tkwassertnode2,
tidnode3,
pexprnode4,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction278
+private class ReduceAction282
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction280
+private class ReduceAction284
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction282
+private class ReduceAction286
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction283
+private class ReduceAction287
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction284
+private class ReduceAction288
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction285
+private class ReduceAction289
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction287
+private class ReduceAction291
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction289
+private class ReduceAction293
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction290
+private class ReduceAction294
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction291
+private class ReduceAction295
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction292
+private class ReduceAction296
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction293
+private class ReduceAction297
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction294
+private class ReduceAction298
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction295
+private class ReduceAction299
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction296
+private class ReduceAction300
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction298
+private class ReduceAction302
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction300
+private class ReduceAction304
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction302
+private class ReduceAction306
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction304
+private class ReduceAction308
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction305
+private class ReduceAction309
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction307
+private class ReduceAction311
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction308
+private class ReduceAction312
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction310
+private class ReduceAction314
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction311
+private class ReduceAction315
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction312
+private class ReduceAction316
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction314
+private class ReduceAction318
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction316
+private class ReduceAction320
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction317
+private class ReduceAction321
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction318
+private class ReduceAction322
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction319
+private class ReduceAction323
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction321
+private class ReduceAction325
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction322
+private class ReduceAction326
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction323
+private class ReduceAction327
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction324
+private class ReduceAction328
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction326
+private class ReduceAction330
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction327
+private class ReduceAction331
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction329
+private class ReduceAction333
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction331
+private class ReduceAction335
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction333
+private class ReduceAction337
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction337
+private class ReduceAction341
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction339
+private class ReduceAction343
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction341
+private class ReduceAction345
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction345
+private class ReduceAction349
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction347
+private class ReduceAction351
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction349
+private class ReduceAction353
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction350
+private class ReduceAction354
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction351
+private class ReduceAction355
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction352
+private class ReduceAction356
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction353
+private class ReduceAction357
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction354
+private class ReduceAction358
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction355
+private class ReduceAction359
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction356
+private class ReduceAction360
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction359
+private class ReduceAction363
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction360
+private class ReduceAction364
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction361
+private class ReduceAction365
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction363
+private class ReduceAction367
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction364
+private class ReduceAction368
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction365
+private class ReduceAction369
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction366
+private class ReduceAction370
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction367
+private class ReduceAction371
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction368
+private class ReduceAction372
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction369
+private class ReduceAction373
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction370
+private class ReduceAction374
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction371
+private class ReduceAction375
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction372
+private class ReduceAction376
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction373
+private class ReduceAction377
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction376
+private class ReduceAction380
super ReduceAction
redef fun action(p: Parser)
do
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
+ assert pexprnode3 isa nullable AExpr
+ var tdotdotnode4 = nodearraylist5
+ assert tdotdotnode4 isa nullable TDotdot
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
+ var tcbranode6 = nodearraylist9
+ assert tcbranode6 isa nullable TCbra
+ var pannotationsnode7 = nodearraylist10
+ assert pannotationsnode7 isa nullable AAnnotations
var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
tobranode2,
pexprnode3,
- pexprnode4,
- tcbranode5,
- pannotationsnode6
+ tdotdotnode4,
+ pexprnode5,
+ tcbranode6,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction377
+private class ReduceAction381
super ReduceAction
redef fun action(p: Parser)
do
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 pannotationsnode6 = nodearraylist10
- assert pannotationsnode6 isa nullable AAnnotations
+ var tdotdotnode4 = nodearraylist5
+ assert tdotdotnode4 isa nullable TDotdot
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
+ var tobranode6 = nodearraylist9
+ assert tobranode6 isa nullable TObra
+ var pannotationsnode7 = nodearraylist10
+ assert pannotationsnode7 isa nullable AAnnotations
var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
tobranode2,
pexprnode3,
- pexprnode4,
- tobranode5,
- pannotationsnode6
+ tdotdotnode4,
+ pexprnode5,
+ tobranode6,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction378
+private class ReduceAction382
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction379
+private class ReduceAction383
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction381
+private class ReduceAction385
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction382
+private class ReduceAction386
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction383
+private class ReduceAction387
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction384
+private class ReduceAction388
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction386
+private class ReduceAction390
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction388
+private class ReduceAction392
super ReduceAction
redef fun action(p: Parser)
do
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
+ var tkwthennode4 = nodearraylist5
+ assert tkwthennode4 isa nullable TKwthen
+ var pexprnode5 = nodearraylist7
+ assert pexprnode5 isa nullable AExpr
var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
tkwifnode2,
pexprnode3,
- pexprnode4,
+ tkwthennode4,
+ pexprnode5,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction389
+private class ReduceAction393
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction390
+private class ReduceAction394
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction391
+private class ReduceAction395
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction392
+private class ReduceAction396
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction393
+private class ReduceAction397
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction396
+private class ReduceAction400
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction397
+private class ReduceAction401
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction398
+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 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)
+ var listnode6 = new Array[Object]
+ var tatnode3 = nodearraylist1
+ assert tatnode3 isa nullable TAt
+ var pannotationnode5 = nodearraylist2
+ assert pannotationnode5 isa nullable AAnnotation
+ if pannotationnode5 != null then
+ listnode6.add(pannotationnode5)
end
var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
- tatnode2,
null,
- listnode5,
+ tatnode3,
+ null,
+ listnode6,
+ null,
null
)
node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction399
+private class ReduceAction403
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 tatnode2 = nodearraylist1
- assert tatnode2 isa nullable TAt
- var toparnode3 = nodearraylist2
- assert toparnode3 isa nullable TOpar
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tcparnode6 = nodearraylist6
- assert tcparnode6 isa nullable TCpar
+ var listnode6 = new Array[Object]
+ var tatnode3 = nodearraylist1
+ assert tatnode3 isa nullable TAt
+ var toparnode4 = nodearraylist2
+ assert toparnode4 isa nullable TOpar
+ var listnode5 = nodearraylist4
+ assert listnode5 isa Array[Object]
+ listnode6 = concat(listnode6, listnode5)
+ var tcparnode7 = nodearraylist6
+ assert tcparnode7 isa nullable TCpar
var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
- tatnode2,
- toparnode3,
- listnode5,
- tcparnode6
+ null,
+ tatnode3,
+ toparnode4,
+ listnode6,
+ tcparnode7,
+ null
)
node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction400
+private class ReduceAction404
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction402
+private class ReduceAction406
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction403
+private class ReduceAction407
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction404
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- 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 = pannotationsnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction405
+private class ReduceAction408
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction406
+private class ReduceAction409
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction409
+private class ReduceAction412
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction411
+private class ReduceAction414
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction413
+private class ReduceAction415
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction414
+private class ReduceAction416
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction415
+private class ReduceAction417
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction416
+private class ReduceAction418
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction417
+private class ReduceAction419
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction418
+private class ReduceAction420
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction419
+private class ReduceAction421
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction420
+private class ReduceAction422
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction421
+private class ReduceAction423
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction422
+private class ReduceAction424
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction426
+private class ReduceAction428
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction429
+private class ReduceAction431
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction430
+private class ReduceAction432
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction431
+private class ReduceAction433
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction432
+private class ReduceAction434
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction433
+private class ReduceAction435
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction434
+private class ReduceAction436
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction435
+private class ReduceAction437
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction436
+private class ReduceAction438
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction438
+private class ReduceAction440
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction440
+private class ReduceAction442
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction441
+private class ReduceAction443
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction443
+private class ReduceAction445
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction444
+private class ReduceAction446
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction445
+private class ReduceAction447
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction446
+private class ReduceAction448
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction447
+private class ReduceAction449
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction448
+private class ReduceAction450
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction449
+private class ReduceAction451
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction450
+private class ReduceAction452
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction451
+private class ReduceAction453
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction452
+private class ReduceAction454
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction453
+private class ReduceAction455
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction454
+private class ReduceAction456
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction455
+private class ReduceAction457
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction457
+private class ReduceAction459
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction458
+private class ReduceAction460
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction459
+private class ReduceAction461
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction461
+private class ReduceAction463
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction462
+private class ReduceAction464
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction463
+private class ReduceAction465
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction465
+private class ReduceAction467
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction466
+private class ReduceAction468
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction468
+private class ReduceAction470
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction469
+private class ReduceAction471
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction472
+private class ReduceAction474
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction473
+private class ReduceAction475
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction476
+private class ReduceAction478
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction478
+private class ReduceAction480
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction479
+private class ReduceAction481
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction480
+private class ReduceAction482
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction482
+private class ReduceAction484
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction484
+private class ReduceAction486
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction485
+private class ReduceAction487
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction488
+private class ReduceAction490
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction851
+private class ReduceAction853
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction853
+private class ReduceAction855
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction854
+private class ReduceAction856
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction855
+private class ReduceAction857
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction856
+private class ReduceAction858
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction857
+private class ReduceAction859
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction864
+private class ReduceAction866
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction865
+private class ReduceAction867
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction890
+private class ReduceAction892
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction891
+private class ReduceAction893
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1052
+private class ReduceAction1054
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1053
+private class ReduceAction1055
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1054
+private class ReduceAction1056
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1055
+private class ReduceAction1057
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1056
+private class ReduceAction1058
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1057
+private class ReduceAction1059
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1058
+private class ReduceAction1061
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 pformaldefnode1 = nodearraylist1
- if pformaldefnode1 != null then
- listnode2.add(pformaldefnode1)
+ var listnode3 = new Array[Object]
+ var listnode1 = nodearraylist1
+ assert listnode1 isa Array[Object]
+ var pformaldefnode2 = nodearraylist2
+ listnode3 = concat(listnode3, listnode1)
+ if pformaldefnode2 != null then
+ listnode3.add(pformaldefnode2)
end
- node_list = listnode2
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1059
+private class ReduceAction1063
super ReduceAction
redef fun action(p: Parser)
do
var listnode3 = new Array[Object]
var listnode1 = nodearraylist1
assert listnode1 isa Array[Object]
- var pformaldefnode2 = nodearraylist2
+ var ppropdefnode2 = nodearraylist2
listnode3 = concat(listnode3, listnode1)
- if pformaldefnode2 != null then
- listnode3.add(pformaldefnode2)
+ if ppropdefnode2 != null then
+ listnode3.add(ppropdefnode2)
end
node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1061
+private class ReduceAction1065
super ReduceAction
redef fun action(p: Parser)
do
var listnode3 = new Array[Object]
var listnode1 = nodearraylist1
assert listnode1 isa Array[Object]
- var ppropdefnode2 = nodearraylist2
+ var pannotationnode2 = nodearraylist2
listnode3 = concat(listnode3, listnode1)
- if ppropdefnode2 != null then
- listnode3.add(ppropdefnode2)
+ if pannotationnode2 != null then
+ listnode3.add(pannotationnode2)
end
node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1062
+private class ReduceAction1066
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1063
+private class ReduceAction1067
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1064
+private class ReduceAction1068
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1065
+private class ReduceAction1069
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1067
+private class ReduceAction1071
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1069
+private class ReduceAction1073
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1075
+private class ReduceAction1079
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1077
- 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 ReduceAction1085
+private class ReduceAction1087
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1086
+private class ReduceAction1088
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1087
+private class ReduceAction1089
super ReduceAction
redef fun action(p: Parser)
do
var n_visibility: AVisibility is writable, noinit
var n_classkind: AClasskind is writable, noinit
var n_id: nullable TClassid = null is writable
+ var n_obra: nullable TObra = null is writable
var n_formaldefs: List[AFormaldef] = new List[AFormaldef]
+ var n_cbra: nullable TCbra = null is writable
var n_extern_code_block: nullable AExternCodeBlock = null is writable
var n_propdefs: List[APropdef] = new List[APropdef]
var n_kwend: TKwend is writable, noinit
var n_kwvar: TKwvar is writable, noinit
var n_id2: TId is writable, noinit
var n_type: nullable AType = null is writable
+ var n_assign: nullable TAssign = null is writable
var n_expr: nullable AExpr = null is writable
var n_annotations: nullable AAnnotations = null is writable
+ var n_kwdo: nullable TKwdo = null is writable
var n_block: nullable AExpr = null is writable
+ var n_kwend: nullable TKwend = null is writable
end
class AMainMethPropdef
super APropdef
var n_annotations: nullable AAnnotations = null is writable
var n_extern_calls: nullable AExternCalls = null is writable
var n_extern_code_block: nullable AExternCodeBlock = null is writable
+ var n_kwdo: nullable TKwdo = null is writable
var n_block: nullable AExpr = null is writable
+ var n_kwend: nullable TKwend = null is writable
end
class ASuperPropdef
super APropdef
super AType
var n_kwnullable: nullable TKwnullable = null is writable
var n_id: TClassid is writable, noinit
+ var n_obra: nullable TObra = null is writable
var n_types: List[AType] = new List[AType]
+ var n_cbra: nullable TCbra = null is writable
var n_annotations: nullable AAnnotations = null is writable
end
class ALabel
super AExpr
var n_kwif: TKwif is writable, noinit
var n_expr: AExpr is writable, noinit
+ var n_kwthen: TKwthen is writable, noinit
var n_then: nullable AExpr = null is writable
+ var n_kwelse: nullable TKwelse = null is writable
var n_else: nullable AExpr = null is writable
end
class AIfexprExpr
super AExpr
var n_kwfor: TKwfor is writable, noinit
var n_ids: List[TId] = new List[TId]
+ var n_kwin: TKwin is writable, noinit
var n_expr: AExpr is writable, noinit
var n_kwdo: TKwdo is writable, noinit
var n_block: nullable AExpr = null is writable
var n_kwassert: TKwassert is writable, noinit
var n_id: nullable TId = null is writable
var n_expr: AExpr is writable, noinit
+ var n_kwelse: nullable TKwelse = null is writable
var n_else: nullable AExpr = null is writable
end
class AOnceExpr
super AExpr
var n_obra: TObra is writable, noinit
var n_expr: AExpr is writable, noinit
+ var n_dotdot: TDotdot is writable, noinit
var n_expr2: AExpr is writable, noinit
var n_cbra: TCbra is writable, noinit
var n_annotations: nullable AAnnotations = null is writable
super AExpr
var n_obra: TObra is writable, noinit
var n_expr: AExpr is writable, noinit
+ var n_dotdot: TDotdot is writable, noinit
var n_expr2: AExpr is writable, noinit
var n_cbra: TObra is writable, noinit
var n_annotations: nullable AAnnotations = null is writable
end
class AAnnotations
super AAnnotations
+ var n_kwis: nullable TKwis = null is writable
var n_at: nullable TAt = null is writable
var n_opar: nullable TOpar = null is writable
var n_items: List[AAnnotation] = new List[AAnnotation]
var n_cpar: nullable TCpar = null is writable
+ var n_kwend: nullable TKwend = null is writable
end
class AAnnotation
super AAnnotation
# The name of the class
var n_id: nullable TClassid = null is writable
+ # The `[` symbol
+ var n_obra: nullable TObra = null is writable
+
# The list of formal parameter types
var n_formaldefs = new ANodes[AFormaldef](self)
+ # The `]` symbol
+ var n_cbra: nullable TCbra = null is writable
+
# The extern block code
var n_extern_code_block: nullable AExternCodeBlock = null is writable
class AAttrPropdef
super APropdef
- # The identifier for a old-style attribute (null if new-style)
+ # The `var` keyword
var n_kwvar: TKwvar is writable, noinit
- # The identifier for a new-style attribute (null if old-style)
+ # The identifier for a new-style attribute
var n_id2: TId is writable, noinit
# The declared type of the attribute
var n_type: nullable AType = null is writable
+ # The `=` symbol
+ var n_assign: nullable TAssign = null is writable
+
# The initial value, if any (set with `=`)
var n_expr: nullable AExpr = null is writable
+ # The `do` keyword
+ var n_kwdo: nullable TKwdo = null is writable
+
# The initial value, if any (set with `do return`)
var n_block: nullable AExpr = null is writable
+ # The `end` keyword
+ var n_kwend: nullable TKwend = null is writable
+
redef fun hot_location
do
return n_id2.location
# The signature of the method, if any
var n_signature: nullable ASignature = null is writable
+ # The `do` keyword
+ var n_kwdo: nullable TKwdo = null is writable
+
# The body (in Nit) of the method, if any
var n_block: nullable AExpr = null is writable
+ # The `end` keyword
+ var n_kwend: nullable TKwend = null is writable
+
# The list of declared callbacks (for extern methods)
var n_extern_calls: nullable AExternCalls = null is writable
# The name of the class or of the formal type
var n_id: TClassid is writable, noinit
+ # The opening bracket
+ var n_obra: nullable TObra = null is writable
+
# Type arguments for a generic type
var n_types = new ANodes[AType](self)
+
+ # The closing bracket
+ var n_cbra: nullable TCbra = null is writable
end
# A label at the end of a block or in a break/continue statement. eg `label x`
# The expression used as the condition of the `if`
var n_expr: AExpr is writable, noinit
+ # The `then` keyword
+ var n_kwthen: TKwthen is writable, noinit
+
# The body of the `then` part
var n_then: nullable AExpr = null is writable
+ # The `else` keyword
+ var n_kwelse: nullable TKwelse = null is writable
+
# The body of the `else` part
var n_else: nullable AExpr = null is writable
end
# The list of name of the automatic variables
var n_ids = new ANodes[TId](self)
+ # The `in` keyword
+ var n_kwin: TKwin is writable, noinit
+
# The expression used as the collection to iterate on
var n_expr: AExpr is writable, noinit
# The expression used as the condition of the `assert`
var n_expr: AExpr is writable, noinit
+ # The `else` keyword
+ var n_kwelse: nullable TKwelse = null is writable
+
# The body to execute when the assert fails
var n_else: nullable AExpr = null is writable
end
# The left (lower) element of the range
var n_expr: AExpr is writable, noinit
- # The right (uppr) element of the range
+ # The `..`
+ var n_dotdot: TDotdot is writable, noinit
+
+ # The right (upper) element of the range
var n_expr2: AExpr is writable, noinit
end
class AAnnotations
super Prod
+ # The `is` keyword, for *is* annotations
+ var n_kwis: nullable TKwis = null is writable
+
# The `@` symbol, for *at* annotations
var n_at: nullable TAt = null is writable
# The closing parenthesis in *at* annotations
var n_cpar: nullable TCpar = null is writable
+
+ # The `end` keyword, for *is* annotations
+ var n_kwend: nullable TKwend = null is writable
end
# A single annotation
n_visibility: nullable AVisibility,
n_classkind: nullable AClasskind,
n_id: nullable TClassid,
+ n_obra: nullable TObra,
n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
+ n_cbra: nullable TCbra,
n_extern_code_block: nullable AExternCodeBlock,
n_propdefs: Collection[Object], # Should be Collection[APropdef]
n_kwend: nullable TKwend
n_classkind.parent = self
_n_id = n_id
if n_id != null then n_id.parent = self
+ _n_obra = n_obra
+ if n_obra != null then n_obra.parent = self
self.n_formaldefs.unsafe_add_all(n_formaldefs)
+ _n_cbra = n_cbra
+ if n_cbra != null then n_cbra.parent = self
_n_extern_code_block = n_extern_code_block
if n_extern_code_block != null then n_extern_code_block.parent = self
self.n_propdefs.unsafe_add_all(n_propdefs)
n_id = new_child.as(nullable TClassid)
return
end
+ if _n_obra == old_child then
+ n_obra = new_child.as(nullable TObra)
+ return
+ end
if n_formaldefs.replace_child(old_child, new_child) then return
+ if _n_cbra == old_child then
+ n_cbra = new_child.as(nullable TCbra)
+ return
+ end
if _n_extern_code_block == old_child then
n_extern_code_block = new_child.as(nullable AExternCodeBlock)
return
_n_id = node
if node != null then node.parent = self
end
+ redef fun n_obra=(node)
+ do
+ _n_obra = node
+ if node != null then node.parent = self
+ end
+ redef fun n_cbra=(node)
+ do
+ _n_cbra = node
+ if node != null then node.parent = self
+ end
redef fun n_extern_code_block=(node)
do
_n_extern_code_block = node
v.enter_visit(_n_visibility)
v.enter_visit(_n_classkind)
v.enter_visit(_n_id)
+ v.enter_visit(_n_obra)
n_formaldefs.visit_all(v)
+ v.enter_visit(_n_cbra)
v.enter_visit(_n_extern_code_block)
n_propdefs.visit_all(v)
v.enter_visit(_n_kwend)
n_kwvar: nullable TKwvar,
n_id2: nullable TId,
n_type: nullable AType,
+ n_assign: nullable TAssign,
n_expr: nullable AExpr,
n_annotations: nullable AAnnotations,
- n_block: nullable AExpr
+ n_kwdo: nullable TKwdo,
+ n_block: nullable AExpr,
+ n_kwend: nullable TKwend
)
do
_n_doc = n_doc
n_id2.parent = self
_n_type = n_type
if n_type != null then n_type.parent = self
+ _n_assign = n_assign
+ if n_assign != null then n_assign.parent = self
_n_expr = n_expr
if n_expr != null then n_expr.parent = self
_n_annotations = n_annotations
if n_annotations != null then n_annotations.parent = self
+ _n_kwdo = n_kwdo
+ if n_kwdo != null then n_kwdo.parent = self
_n_block = n_block
if n_block != null then n_block.parent = self
+ _n_kwend = n_kwend
+ if n_kwend != null then n_kwend.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
n_type = new_child.as(nullable AType)
return
end
+ if _n_assign == old_child then
+ n_assign = new_child.as(nullable TAssign)
+ return
+ end
if _n_expr == old_child then
n_expr = new_child.as(nullable AExpr)
return
n_annotations = new_child.as(nullable AAnnotations)
return
end
+ if _n_kwdo == old_child then
+ n_kwdo = new_child.as(nullable TKwdo)
+ return
+ end
if _n_block == old_child then
n_block = new_child.as(nullable AExpr)
return
end
+ if _n_kwend == old_child then
+ n_kwend = new_child.as(nullable TKwend)
+ return
+ end
end
redef fun n_doc=(node)
_n_type = node
if node != null then node.parent = self
end
+ redef fun n_assign=(node)
+ do
+ _n_assign = node
+ if node != null then node.parent = self
+ end
redef fun n_expr=(node)
do
_n_expr = node
_n_annotations = node
if node != null then node.parent = self
end
+ redef fun n_kwdo=(node)
+ do
+ _n_kwdo = node
+ if node != null then node.parent = self
+ end
redef fun n_block=(node)
do
_n_block = node
if node != null then node.parent = self
end
+ redef fun n_kwend=(node)
+ do
+ _n_kwend = node
+ if node != null then node.parent = self
+ end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_kwvar)
v.enter_visit(_n_id2)
v.enter_visit(_n_type)
+ v.enter_visit(_n_assign)
v.enter_visit(_n_expr)
v.enter_visit(_n_annotations)
+ v.enter_visit(_n_kwdo)
v.enter_visit(_n_block)
+ v.enter_visit(_n_kwend)
end
end
redef class AMainMethPropdef
n_annotations: nullable AAnnotations,
n_extern_calls: nullable AExternCalls,
n_extern_code_block: nullable AExternCodeBlock,
- n_block: nullable AExpr
+ n_kwdo: nullable TKwdo,
+ n_block: nullable AExpr,
+ n_kwend: nullable TKwend
)
do
_n_doc = n_doc
if n_extern_calls != null then n_extern_calls.parent = self
_n_extern_code_block = n_extern_code_block
if n_extern_code_block != null then n_extern_code_block.parent = self
+ _n_kwdo = n_kwdo
+ if n_kwdo != null then n_kwdo.parent = self
_n_block = n_block
if n_block != null then n_block.parent = self
+ _n_kwend = n_kwend
+ if n_kwend != null then n_kwend.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
n_extern_code_block = new_child.as(nullable AExternCodeBlock)
return
end
+ if _n_kwdo == old_child then
+ n_kwdo = new_child.as(nullable TKwdo)
+ return
+ end
if _n_block == old_child then
n_block = new_child.as(nullable AExpr)
return
end
+ if _n_kwend == old_child then
+ n_kwend = new_child.as(nullable TKwend)
+ return
+ end
end
redef fun n_doc=(node)
_n_extern_code_block = node
if node != null then node.parent = self
end
+ redef fun n_kwdo=(node)
+ do
+ _n_kwdo = node
+ if node != null then node.parent = self
+ end
redef fun n_block=(node)
do
_n_block = node
if node != null then node.parent = self
end
+ redef fun n_kwend=(node)
+ do
+ _n_kwend = node
+ if node != null then node.parent = self
+ end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_annotations)
v.enter_visit(_n_extern_calls)
v.enter_visit(_n_extern_code_block)
+ v.enter_visit(_n_kwdo)
v.enter_visit(_n_block)
+ v.enter_visit(_n_kwend)
end
end
redef class ASuperPropdef
init init_atype (
n_kwnullable: nullable TKwnullable,
n_id: nullable TClassid,
+ n_obra: nullable TObra,
n_types: Collection[Object], # Should be Collection[AType]
+ n_cbra: nullable TCbra,
n_annotations: nullable AAnnotations
)
do
if n_kwnullable != null then n_kwnullable.parent = self
_n_id = n_id.as(not null)
n_id.parent = self
+ _n_obra = n_obra
+ if n_obra != null then n_obra.parent = self
self.n_types.unsafe_add_all(n_types)
+ _n_cbra = n_cbra
+ if n_cbra != null then n_cbra.parent = self
_n_annotations = n_annotations
if n_annotations != null then n_annotations.parent = self
end
n_id = new_child.as(TClassid)
return
end
+ if _n_obra == old_child then
+ n_obra = new_child.as(nullable TObra)
+ return
+ end
if n_types.replace_child(old_child, new_child) then return
+ if _n_cbra == old_child then
+ n_cbra = new_child.as(nullable TCbra)
+ return
+ end
if _n_annotations == old_child then
n_annotations = new_child.as(nullable AAnnotations)
return
_n_id = node
node.parent = self
end
+ redef fun n_obra=(node)
+ do
+ _n_obra = node
+ if node != null then node.parent = self
+ end
+ redef fun n_cbra=(node)
+ do
+ _n_cbra = node
+ if node != null then node.parent = self
+ end
redef fun n_annotations=(node)
do
_n_annotations = node
do
v.enter_visit(_n_kwnullable)
v.enter_visit(_n_id)
+ v.enter_visit(_n_obra)
n_types.visit_all(v)
+ v.enter_visit(_n_cbra)
v.enter_visit(_n_annotations)
end
end
init init_aifexpr (
n_kwif: nullable TKwif,
n_expr: nullable AExpr,
+ n_kwthen: nullable TKwthen,
n_then: nullable AExpr,
+ n_kwelse: nullable TKwelse,
n_else: nullable AExpr
)
do
n_kwif.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_kwthen = n_kwthen.as(not null)
+ n_kwthen.parent = self
_n_then = n_then
if n_then != null then n_then.parent = self
+ _n_kwelse = n_kwelse
+ if n_kwelse != null then n_kwelse.parent = self
_n_else = n_else
if n_else != null then n_else.parent = self
end
n_expr = new_child.as(AExpr)
return
end
+ if _n_kwthen == old_child then
+ n_kwthen = new_child.as(TKwthen)
+ return
+ end
if _n_then == old_child then
n_then = new_child.as(nullable AExpr)
return
end
+ if _n_kwelse == old_child then
+ n_kwelse = new_child.as(nullable TKwelse)
+ return
+ end
if _n_else == old_child then
n_else = new_child.as(nullable AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_kwthen=(node)
+ do
+ _n_kwthen = node
+ node.parent = self
+ end
redef fun n_then=(node)
do
_n_then = node
if node != null then node.parent = self
end
+ redef fun n_kwelse=(node)
+ do
+ _n_kwelse = node
+ if node != null then node.parent = self
+ end
redef fun n_else=(node)
do
_n_else = node
do
v.enter_visit(_n_kwif)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_kwthen)
v.enter_visit(_n_then)
+ v.enter_visit(_n_kwelse)
v.enter_visit(_n_else)
end
end
init init_aforexpr (
n_kwfor: nullable TKwfor,
n_ids: Collection[Object], # Should be Collection[TId]
+ n_kwin: nullable TKwin,
n_expr: nullable AExpr,
n_kwdo: nullable TKwdo,
n_block: nullable AExpr,
_n_kwfor = n_kwfor.as(not null)
n_kwfor.parent = self
self.n_ids.unsafe_add_all(n_ids)
+ _n_kwin = n_kwin.as(not null)
+ n_kwin.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
_n_kwdo = n_kwdo.as(not null)
return
end
if n_ids.replace_child(old_child, new_child) then return
+ if _n_kwin == old_child then
+ n_kwin = new_child.as(TKwin)
+ return
+ end
if _n_expr == old_child then
n_expr = new_child.as(AExpr)
return
_n_kwfor = node
node.parent = self
end
+ redef fun n_kwin=(node)
+ do
+ _n_kwin = node
+ node.parent = self
+ end
redef fun n_expr=(node)
do
_n_expr = node
do
v.enter_visit(_n_kwfor)
n_ids.visit_all(v)
+ v.enter_visit(_n_kwin)
v.enter_visit(_n_expr)
v.enter_visit(_n_kwdo)
v.enter_visit(_n_block)
n_kwassert: nullable TKwassert,
n_id: nullable TId,
n_expr: nullable AExpr,
+ n_kwelse: nullable TKwelse,
n_else: nullable AExpr
)
do
if n_id != null then n_id.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_kwelse = n_kwelse
+ if n_kwelse != null then n_kwelse.parent = self
_n_else = n_else
if n_else != null then n_else.parent = self
end
n_expr = new_child.as(AExpr)
return
end
+ if _n_kwelse == old_child then
+ n_kwelse = new_child.as(nullable TKwelse)
+ return
+ end
if _n_else == old_child then
n_else = new_child.as(nullable AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_kwelse=(node)
+ do
+ _n_kwelse = node
+ if node != null then node.parent = self
+ end
redef fun n_else=(node)
do
_n_else = node
v.enter_visit(_n_kwassert)
v.enter_visit(_n_id)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_kwelse)
v.enter_visit(_n_else)
end
end
init init_acrangeexpr (
n_obra: nullable TObra,
n_expr: nullable AExpr,
+ n_dotdot: nullable TDotdot,
n_expr2: nullable AExpr,
n_cbra: nullable TCbra,
n_annotations: nullable AAnnotations
n_obra.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_dotdot = n_dotdot.as(not null)
+ n_dotdot.parent = self
_n_expr2 = n_expr2.as(not null)
n_expr2.parent = self
_n_cbra = n_cbra.as(not null)
n_expr = new_child.as(AExpr)
return
end
+ if _n_dotdot == old_child then
+ n_dotdot = new_child.as(TDotdot)
+ return
+ end
if _n_expr2 == old_child then
n_expr2 = new_child.as(AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_dotdot=(node)
+ do
+ _n_dotdot = node
+ node.parent = self
+ end
redef fun n_expr2=(node)
do
_n_expr2 = node
do
v.enter_visit(_n_obra)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_dotdot)
v.enter_visit(_n_expr2)
v.enter_visit(_n_cbra)
v.enter_visit(_n_annotations)
init init_aorangeexpr (
n_obra: nullable TObra,
n_expr: nullable AExpr,
+ n_dotdot: nullable TDotdot,
n_expr2: nullable AExpr,
n_cbra: nullable TObra,
n_annotations: nullable AAnnotations
n_obra.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_dotdot = n_dotdot.as(not null)
+ n_dotdot.parent = self
_n_expr2 = n_expr2.as(not null)
n_expr2.parent = self
_n_cbra = n_cbra.as(not null)
n_expr = new_child.as(AExpr)
return
end
+ if _n_dotdot == old_child then
+ n_dotdot = new_child.as(TDotdot)
+ return
+ end
if _n_expr2 == old_child then
n_expr2 = new_child.as(AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_dotdot=(node)
+ do
+ _n_dotdot = node
+ node.parent = self
+ end
redef fun n_expr2=(node)
do
_n_expr2 = node
do
v.enter_visit(_n_obra)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_dotdot)
v.enter_visit(_n_expr2)
v.enter_visit(_n_cbra)
v.enter_visit(_n_annotations)
end
redef class AAnnotations
init init_aannotations (
+ n_kwis: nullable TKwis,
n_at: nullable TAt,
n_opar: nullable TOpar,
n_items: Collection[Object], # Should be Collection[AAnnotation]
- n_cpar: nullable TCpar
+ n_cpar: nullable TCpar,
+ n_kwend: nullable TKwend
)
do
+ _n_kwis = n_kwis
+ if n_kwis != null then n_kwis.parent = self
_n_at = n_at
if n_at != null then n_at.parent = self
_n_opar = n_opar
self.n_items.unsafe_add_all(n_items)
_n_cpar = n_cpar
if n_cpar != null then n_cpar.parent = self
+ _n_kwend = n_kwend
+ if n_kwend != null then n_kwend.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
+ if _n_kwis == old_child then
+ n_kwis = new_child.as(nullable TKwis)
+ return
+ end
if _n_at == old_child then
n_at = new_child.as(nullable TAt)
return
n_cpar = new_child.as(nullable TCpar)
return
end
+ if _n_kwend == old_child then
+ n_kwend = new_child.as(nullable TKwend)
+ return
+ end
end
+ redef fun n_kwis=(node)
+ do
+ _n_kwis = node
+ if node != null then node.parent = self
+ end
redef fun n_at=(node)
do
_n_at = node
_n_cpar = node
if node != null then node.parent = self
end
+ redef fun n_kwend=(node)
+ do
+ _n_kwend = node
+ if node != null then node.parent = self
+ end
redef fun visit_all(v: Visitor)
do
+ v.enter_visit(_n_kwis)
v.enter_visit(_n_at)
v.enter_visit(_n_opar)
n_items.visit_all(v)
v.enter_visit(_n_cpar)
+ v.enter_visit(_n_kwend)
end
end
redef class AAnnotation
static int parser_action_row1[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row2[] = {
1,
- -1, 1, 487
+ -1, 1, 489
};
static int parser_action_row3[] = {
1,
- -1, 1, 1086
+ -1, 1, 1088
};
static int parser_action_row4[] = {
4,
- -1, 1, 475,
+ -1, 1, 477,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
static int parser_action_row6[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row7[] = {
1,
- -1, 1, 1052
+ -1, 1, 1054
};
static int parser_action_row8[] = {
1,
- -1, 1, 1056
+ -1, 1, 1058
};
static int parser_action_row9[] = {
1,
};
static int parser_action_row12[] = {
1,
- -1, 1, 1054
+ -1, 1, 1056
};
static int parser_action_row13[] = {
2,
- -1, 1, 484,
+ -1, 1, 486,
110, 1, 23
};
static int parser_action_row14[] = {
33,
- -1, 1, 28,
+ -1, 1, 30,
12, 0, 31,
13, 0, 32,
15, 0, 33,
36, 0, 42,
37, 0, 43,
38, 0, 44,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
54, 0, 52,
96, 0, 53,
97, 0, 54,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row16[] = {
1,
- -1, 1, 1088
+ -1, 1, 1090
};
static int parser_action_row17[] = {
4,
};
static int parser_action_row18[] = {
1,
- -1, 1, 486
+ -1, 1, 488
};
static int parser_action_row19[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row20[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row21[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row22[] = {
7,
- -1, 1, 472,
+ -1, 1, 474,
0, 0, 102,
1, 0, 103,
- 9, 1, 1049,
- 28, 1, 1049,
+ 9, 1, 1051,
+ 28, 1, 1051,
95, 0, 104,
- 109, 1, 1049
+ 109, 1, 1051
};
static int parser_action_row23[] = {
7,
- -1, 1, 474,
+ -1, 1, 476,
0, 0, 1,
1, 0, 2,
- 9, 1, 1051,
- 28, 1, 1051,
+ 9, 1, 1053,
+ 28, 1, 1053,
95, 0, 105,
- 109, 1, 1051
+ 109, 1, 1053
};
static int parser_action_row24[] = {
1,
- -1, 1, 479
+ -1, 1, 481
};
static int parser_action_row25[] = {
4,
- -1, 1, 472,
+ -1, 1, 474,
0, 0, 102,
1, 0, 103,
95, 0, 104
};
static int parser_action_row26[] = {
4,
- -1, 1, 474,
+ -1, 1, 476,
0, 0, 1,
1, 0, 2,
95, 0, 105
};
static int parser_action_row28[] = {
33,
- -1, 1, 28,
+ -1, 1, 30,
12, 0, 31,
13, 0, 32,
15, 0, 33,
36, 0, 42,
37, 0, 43,
38, 0, 44,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
54, 0, 52,
96, 0, 53,
97, 0, 54,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row29[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row30[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row31[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row32[] = {
27,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 349,
- 73, 1, 349,
+ 54, 1, 353,
+ 73, 1, 353,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row33[] = {
1,
- -1, 1, 29
+ -1, 1, 31
};
static int parser_action_row34[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 157,
};
static int parser_action_row36[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row37[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row38[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 157,
};
static int parser_action_row39[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row40[] = {
26,
- -1, 1, 167,
+ -1, 1, 169,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row41[] = {
2,
- -1, 1, 172,
+ -1, 1, 174,
49, 0, 197
};
static int parser_action_row42[] = {
2,
- -1, 1, 169,
+ -1, 1, 171,
49, 0, 197
};
static int parser_action_row43[] = {
1,
- -1, 1, 171
+ -1, 1, 173
};
static int parser_action_row44[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row45[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row46[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row47[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row48[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row49[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row50[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row52[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row53[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row55[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 337,
+ 54, 1, 341,
58, 0, 215,
59, 0, 216,
60, 0, 217,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 337,
+ 73, 1, 341,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row56[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row57[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row58[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row59[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row60[] = {
1,
- -1, 1, 393
+ -1, 1, 397
};
static int parser_action_row61[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row62[] = {
5,
- -1, 1, 79,
+ -1, 1, 81,
18, 0, 236,
19, 0, 237,
20, 0, 238,
};
static int parser_action_row65[] = {
4,
- -1, 1, 158,
+ -1, 1, 160,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
static int parser_action_row66[] = {
1,
- -1, 1, 165
+ -1, 1, 167
};
static int parser_action_row67[] = {
1,
- -1, 1, 166
+ -1, 1, 168
};
static int parser_action_row68[] = {
1,
- -1, 1, 174
+ -1, 1, 176
};
static int parser_action_row69[] = {
1,
- -1, 1, 175
+ -1, 1, 177
};
static int parser_action_row70[] = {
1,
- -1, 1, 177
+ -1, 1, 179
};
static int parser_action_row71[] = {
1,
- -1, 1, 176
+ -1, 1, 178
};
static int parser_action_row72[] = {
1,
- -1, 1, 178
+ -1, 1, 180
};
static int parser_action_row73[] = {
1,
- -1, 1, 179
+ -1, 1, 181
};
static int parser_action_row74[] = {
1,
- -1, 1, 180
+ -1, 1, 182
};
static int parser_action_row75[] = {
3,
};
static int parser_action_row76[] = {
1,
- -1, 1, 325
+ -1, 1, 329
};
static int parser_action_row77[] = {
1,
- -1, 1, 375
+ -1, 1, 379
};
static int parser_action_row78[] = {
1,
- -1, 1, 374
+ -1, 1, 378
};
static int parser_action_row79[] = {
3,
};
static int parser_action_row80[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row82[] = {
1,
- -1, 1, 1084
+ -1, 1, 1086
};
static int parser_action_row83[] = {
3,
- -1, 1, 453,
+ -1, 1, 455,
12, 0, 256,
97, 0, 257
};
static int parser_action_row84[] = {
4,
- -1, 1, 455,
+ -1, 1, 457,
12, 0, 258,
96, 0, 53,
97, 0, 259
};
static int parser_action_row85[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row86[] = {
1,
- -1, 1, 139
+ -1, 1, 141
};
static int parser_action_row87[] = {
2,
};
static int parser_action_row88[] = {
1,
- -1, 1, 143
+ -1, 1, 145
};
static int parser_action_row89[] = {
1,
- -1, 1, 470
+ -1, 1, 472
};
static int parser_action_row90[] = {
1,
- -1, 1, 469
+ -1, 1, 471
};
static int parser_action_row91[] = {
1,
- -1, 1, 471
+ -1, 1, 473
};
static int parser_action_row92[] = {
1,
};
static int parser_action_row93[] = {
1,
- -1, 1, 1053
+ -1, 1, 1055
};
static int parser_action_row94[] = {
1,
};
static int parser_action_row95[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row96[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row98[] = {
1,
- -1, 1, 1055
+ -1, 1, 1057
};
static int parser_action_row99[] = {
33,
- -1, 1, 28,
+ -1, 1, 30,
12, 0, 31,
13, 0, 32,
15, 0, 33,
36, 0, 42,
37, 0, 43,
38, 0, 44,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
54, 0, 52,
96, 0, 53,
97, 0, 54,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row100[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row101[] = {
1,
- -1, 1, 1057
+ -1, 1, 1059
};
static int parser_action_row102[] = {
1,
};
static int parser_action_row103[] = {
1,
- -1, 1, 488
+ -1, 1, 490
};
static int parser_action_row104[] = {
1,
- -1, 1, 1087
+ -1, 1, 1089
};
static int parser_action_row105[] = {
4,
- -1, 1, 477,
+ -1, 1, 479,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
static int parser_action_row106[] = {
4,
- -1, 1, 476,
+ -1, 1, 478,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
static int parser_action_row107[] = {
1,
- -1, 1, 1089
+ -1, 1, 1091
};
static int parser_action_row108[] = {
7,
- -1, 1, 473,
+ -1, 1, 475,
0, 0, 102,
1, 0, 103,
- 9, 1, 1050,
- 28, 1, 1050,
+ 9, 1, 1052,
+ 28, 1, 1052,
95, 0, 271,
- 109, 1, 1050
+ 109, 1, 1052
};
static int parser_action_row109[] = {
4,
- -1, 1, 473,
+ -1, 1, 475,
0, 0, 102,
1, 0, 103,
95, 0, 271
};
static int parser_action_row110[] = {
5,
- -1, 1, 79,
+ -1, 1, 81,
18, 0, 236,
19, 0, 237,
20, 0, 238,
};
static int parser_action_row112[] = {
7,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 1, 485,
+ 28, 1, 487,
95, 0, 3,
- 109, 1, 485,
+ 109, 1, 487,
110, 1, 22
};
static int parser_action_row113[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row115[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row117[] = {
2,
- -1, 1, 766,
+ -1, 1, 768,
52, 0, 277
};
static int parser_action_row118[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row119[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row120[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row121[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row122[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row123[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row124[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row125[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row126[] = {
15,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 287,
42, 0, 121,
};
static int parser_action_row127[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row128[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row129[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row130[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row131[] = {
3,
- -1, 1, 754,
+ -1, 1, 756,
52, 0, 277,
58, 0, 215
};
static int parser_action_row132[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row133[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row134[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row135[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row136[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row137[] = {
1,
- -1, 1, 791
+ -1, 1, 793
};
static int parser_action_row138[] = {
1,
- -1, 1, 348
+ -1, 1, 352
};
static int parser_action_row139[] = {
1,
- -1, 1, 191
+ -1, 1, 193
};
static int parser_action_row140[] = {
3,
};
static int parser_action_row141[] = {
2,
- -1, 1, 453,
+ -1, 1, 455,
97, 0, 302
};
static int parser_action_row142[] = {
1,
- -1, 1, 438
+ -1, 1, 440
};
static int parser_action_row143[] = {
4,
- -1, 1, 696,
+ -1, 1, 698,
29, 0, 303,
30, 0, 304,
32, 0, 305
};
static int parser_action_row144[] = {
1,
- -1, 1, 698
+ -1, 1, 700
};
static int parser_action_row145[] = {
1,
- -1, 1, 703
+ -1, 1, 705
};
static int parser_action_row146[] = {
10,
- -1, 1, 705,
+ -1, 1, 707,
39, 0, 306,
80, 0, 307,
84, 0, 308,
};
static int parser_action_row147[] = {
2,
- -1, 1, 714,
+ -1, 1, 716,
81, 0, 315
};
static int parser_action_row148[] = {
2,
- -1, 1, 716,
+ -1, 1, 718,
82, 0, 316
};
static int parser_action_row149[] = {
3,
- -1, 1, 718,
+ -1, 1, 720,
88, 0, 317,
91, 0, 318
};
static int parser_action_row150[] = {
3,
- -1, 1, 720,
+ -1, 1, 722,
74, 0, 319,
75, 0, 320
};
static int parser_action_row151[] = {
4,
- -1, 1, 723,
+ -1, 1, 725,
76, 0, 321,
78, 0, 322,
79, 0, 323
};
static int parser_action_row152[] = {
1,
- -1, 1, 726
+ -1, 1, 728
};
static int parser_action_row153[] = {
2,
- -1, 1, 730,
+ -1, 1, 732,
77, 0, 324
};
static int parser_action_row154[] = {
1,
- -1, 1, 732
+ -1, 1, 734
};
static int parser_action_row155[] = {
3,
- -1, 1, 737,
+ -1, 1, 739,
54, 0, 244,
73, 0, 325
};
static int parser_action_row156[] = {
1,
- -1, 1, 742
+ -1, 1, 744
};
static int parser_action_row157[] = {
3,
- -1, 1, 455,
+ -1, 1, 457,
96, 0, 53,
97, 0, 327
};
static int parser_action_row158[] = {
2,
- -1, 1, 156,
- 49, 1, 979
+ -1, 1, 158,
+ 49, 1, 981
};
static int parser_action_row159[] = {
1,
- -1, 1, 255
+ -1, 1, 257
};
static int parser_action_row160[] = {
1,
- -1, 1, 157
+ -1, 1, 159
};
static int parser_action_row161[] = {
31,
- -1, 1, 456,
+ -1, 1, 458,
9, 0, 329,
12, 0, 31,
15, 0, 33,
};
static int parser_action_row163[] = {
3,
- -1, 1, 153,
+ -1, 1, 155,
57, 0, 333,
94, 0, 204
};
static int parser_action_row164[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row165[] = {
3,
- -1, 1, 1049,
+ -1, 1, 1051,
0, 0, 102,
1, 0, 103
};
static int parser_action_row166[] = {
3,
- -1, 1, 1051,
+ -1, 1, 1053,
0, 0, 1,
1, 0, 2
};
static int parser_action_row167[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row168[] = {
1,
- -1, 1, 264
+ -1, 1, 268
};
static int parser_action_row169[] = {
2,
};
static int parser_action_row171[] = {
2,
- -1, 1, 349,
+ -1, 1, 353,
52, 0, 277
};
static int parser_action_row172[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row173[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row174[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row175[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row176[] = {
17,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 44,
42, 0, 45,
};
static int parser_action_row177[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row178[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row179[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row180[] = {
3,
- -1, 1, 337,
+ -1, 1, 341,
52, 0, 277,
58, 0, 215
};
static int parser_action_row181[] = {
1,
- -1, 1, 168
+ -1, 1, 170
};
static int parser_action_row182[] = {
4,
- -1, 1, 279,
+ -1, 1, 283,
29, 0, 354,
30, 0, 355,
32, 0, 356
};
static int parser_action_row183[] = {
1,
- -1, 1, 281
+ -1, 1, 285
};
static int parser_action_row184[] = {
1,
- -1, 1, 286
+ -1, 1, 290
};
static int parser_action_row185[] = {
10,
- -1, 1, 288,
+ -1, 1, 292,
39, 0, 357,
80, 0, 358,
84, 0, 359,
};
static int parser_action_row186[] = {
2,
- -1, 1, 297,
+ -1, 1, 301,
81, 0, 366
};
static int parser_action_row187[] = {
2,
- -1, 1, 299,
+ -1, 1, 303,
82, 0, 367
};
static int parser_action_row188[] = {
3,
- -1, 1, 301,
+ -1, 1, 305,
88, 0, 368,
91, 0, 369
};
static int parser_action_row189[] = {
3,
- -1, 1, 303,
+ -1, 1, 307,
74, 0, 370,
75, 0, 371
};
static int parser_action_row190[] = {
4,
- -1, 1, 306,
+ -1, 1, 310,
76, 0, 372,
78, 0, 373,
79, 0, 374
};
static int parser_action_row191[] = {
1,
- -1, 1, 309
+ -1, 1, 313
};
static int parser_action_row192[] = {
2,
- -1, 1, 313,
+ -1, 1, 317,
77, 0, 375
};
static int parser_action_row193[] = {
1,
- -1, 1, 315
+ -1, 1, 319
};
static int parser_action_row194[] = {
3,
- -1, 1, 320,
+ -1, 1, 324,
54, 0, 244,
73, 0, 376
};
};
static int parser_action_row196[] = {
2,
- -1, 1, 453,
+ -1, 1, 455,
97, 0, 380
};
static int parser_action_row197[] = {
3,
- -1, 1, 455,
+ -1, 1, 457,
96, 0, 53,
97, 0, 381
};
static int parser_action_row198[] = {
2,
- -1, 1, 199,
+ -1, 1, 201,
97, 0, 383
};
static int parser_action_row199[] = {
1,
- -1, 1, 173
+ -1, 1, 175
};
static int parser_action_row200[] = {
1,
- -1, 1, 170
+ -1, 1, 172
};
static int parser_action_row201[] = {
4,
- -1, 1, 337,
+ -1, 1, 341,
52, 0, 277,
57, 0, 384,
58, 0, 215
};
static int parser_action_row202[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row203[] = {
2,
- -1, 1, 276,
+ -1, 1, 280,
24, 0, 386
};
static int parser_action_row204[] = {
};
static int parser_action_row205[] = {
3,
- -1, 1, 28,
+ -1, 1, 30,
13, 0, 32,
52, 0, 390
};
static int parser_action_row206[] = {
1,
- -1, 1, 400
+ -1, 1, 404
};
static int parser_action_row207[] = {
1,
- -1, 1, 365
+ -1, 1, 369
};
static int parser_action_row208[] = {
1,
- -1, 1, 366
+ -1, 1, 370
};
static int parser_action_row209[] = {
1,
- -1, 1, 367
+ -1, 1, 371
};
static int parser_action_row210[] = {
1,
- -1, 1, 368
+ -1, 1, 372
};
static int parser_action_row211[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row213[] = {
54,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
15, 0, 33,
16, 0, 34,
};
static int parser_action_row214[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 446,
27, 0, 447,
};
static int parser_action_row215[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row216[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row217[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row218[] = {
1,
- -1, 1, 243
+ -1, 1, 245
};
static int parser_action_row219[] = {
1,
- -1, 1, 244
+ -1, 1, 246
};
static int parser_action_row220[] = {
1,
- -1, 1, 245
+ -1, 1, 247
};
static int parser_action_row221[] = {
1,
- -1, 1, 246
+ -1, 1, 248
};
static int parser_action_row222[] = {
1,
- -1, 1, 247
+ -1, 1, 249
};
static int parser_action_row223[] = {
1,
- -1, 1, 248
+ -1, 1, 250
};
static int parser_action_row224[] = {
1,
- -1, 1, 249
+ -1, 1, 251
};
static int parser_action_row225[] = {
1,
- -1, 1, 250
+ -1, 1, 252
};
static int parser_action_row226[] = {
1,
- -1, 1, 251
+ -1, 1, 253
};
static int parser_action_row227[] = {
1,
- -1, 1, 252
+ -1, 1, 254
};
static int parser_action_row228[] = {
1,
- -1, 1, 253
+ -1, 1, 255
};
static int parser_action_row229[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row230[] = {
13,
- -1, 1, 336,
+ -1, 1, 340,
59, 0, 455,
60, 0, 217,
61, 0, 218,
};
static int parser_action_row231[] = {
1,
- -1, 1, 185
+ -1, 1, 187
};
static int parser_action_row232[] = {
1,
- -1, 1, 369
+ -1, 1, 373
};
static int parser_action_row233[] = {
1,
- -1, 1, 370
+ -1, 1, 374
};
static int parser_action_row234[] = {
1,
- -1, 1, 371
+ -1, 1, 375
};
static int parser_action_row235[] = {
1,
- -1, 1, 373
+ -1, 1, 377
};
static int parser_action_row236[] = {
1,
- -1, 1, 372
+ -1, 1, 376
};
static int parser_action_row237[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row238[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row239[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row240[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row242[] = {
1,
- -1, 1, 1068
+ -1, 1, 1072
};
static int parser_action_row243[] = {
32,
- -1, 1, 160,
+ -1, 1, 162,
12, 0, 31,
15, 0, 33,
16, 0, 34,
36, 0, 42,
37, 0, 43,
38, 0, 44,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
54, 0, 52,
96, 0, 53,
97, 0, 54,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row244[] = {
4,
- -1, 1, 159,
+ -1, 1, 161,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
static int parser_action_row245[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row246[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row247[] = {
13,
- -1, 1, 350,
+ -1, 1, 354,
59, 0, 475,
60, 0, 217,
61, 0, 218,
};
static int parser_action_row248[] = {
1,
- -1, 1, 396
+ -1, 1, 400
};
static int parser_action_row249[] = {
1,
- -1, 1, 397
+ -1, 1, 401
};
static int parser_action_row250[] = {
1,
- -1, 1, 1074
+ -1, 1, 1078
};
static int parser_action_row251[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row252[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row253[] = {
};
static int parser_action_row254[] = {
26,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
101, 0, 57,
102, 0, 58,
103, 0, 59,
- 104, 1, 392,
- 105, 1, 392,
+ 104, 1, 396,
+ 105, 1, 396,
106, 0, 60
};
static int parser_action_row255[] = {
27,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 345,
- 73, 1, 345,
+ 54, 1, 349,
+ 73, 1, 349,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row256[] = {
13,
- -1, 1, 327,
+ -1, 1, 331,
59, 0, 484,
60, 0, 217,
61, 0, 218,
};
static int parser_action_row257[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row258[] = {
39,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 339,
+ 54, 1, 343,
59, 0, 488,
60, 0, 217,
61, 0, 218,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 339,
+ 73, 1, 343,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row259[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row260[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 343,
+ 54, 1, 347,
58, 0, 215,
59, 0, 493,
60, 0, 217,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 343,
+ 73, 1, 347,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row261[] = {
1,
- -1, 1, 1085
+ -1, 1, 1087
};
static int parser_action_row262[] = {
3,
- -1, 1, 454,
+ -1, 1, 456,
12, 0, 497,
97, 0, 498
};
};
static int parser_action_row264[] = {
1,
- -1, 1, 140
+ -1, 1, 142
};
static int parser_action_row265[] = {
1,
};
static int parser_action_row266[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row268[] = {
5,
- -1, 1, 79,
+ -1, 1, 81,
18, 0, 236,
19, 0, 237,
20, 0, 238,
};
static int parser_action_row270[] = {
1,
- -1, 1, 481
+ -1, 1, 483
};
static int parser_action_row271[] = {
1,
- -1, 1, 480
+ -1, 1, 482
};
static int parser_action_row272[] = {
4,
- -1, 1, 478,
+ -1, 1, 480,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
static int parser_action_row275[] = {
5,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3,
};
static int parser_action_row278[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row279[] = {
1,
- -1, 1, 765
+ -1, 1, 767
};
static int parser_action_row280[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row281[] = {
21,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
31, 0, 118,
38, 0, 119,
};
static int parser_action_row283[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row284[] = {
1,
- -1, 1, 782
+ -1, 1, 784
};
static int parser_action_row285[] = {
1,
- -1, 1, 783
+ -1, 1, 785
};
static int parser_action_row286[] = {
1,
- -1, 1, 784
+ -1, 1, 786
};
static int parser_action_row287[] = {
1,
- -1, 1, 785
+ -1, 1, 787
};
static int parser_action_row288[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row291[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row292[] = {
1,
- -1, 1, 734
+ -1, 1, 736
};
static int parser_action_row293[] = {
1,
- -1, 1, 733
+ -1, 1, 735
};
static int parser_action_row294[] = {
1,
- -1, 1, 735
+ -1, 1, 737
};
static int parser_action_row295[] = {
1,
- -1, 1, 753
+ -1, 1, 755
};
static int parser_action_row296[] = {
1,
- -1, 1, 786
+ -1, 1, 788
};
static int parser_action_row297[] = {
1,
- -1, 1, 787
+ -1, 1, 789
};
static int parser_action_row298[] = {
1,
- -1, 1, 788
+ -1, 1, 790
};
static int parser_action_row299[] = {
1,
- -1, 1, 790
+ -1, 1, 792
};
static int parser_action_row300[] = {
1,
- -1, 1, 789
+ -1, 1, 791
};
static int parser_action_row301[] = {
2,
- -1, 1, 762,
+ -1, 1, 764,
52, 0, 277
};
static int parser_action_row302[] = {
1,
- -1, 1, 744
+ -1, 1, 746
};
static int parser_action_row303[] = {
2,
- -1, 1, 756,
+ -1, 1, 758,
52, 0, 277
};
static int parser_action_row304[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row305[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
24, 0, 520
};
static int parser_action_row306[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row307[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row308[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row309[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row310[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row311[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row312[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row313[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row314[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row315[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row316[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row317[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row318[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row319[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row320[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row321[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row322[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row323[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row324[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row325[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row326[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row327[] = {
1,
- -1, 1, 767
+ -1, 1, 769
};
static int parser_action_row328[] = {
3,
- -1, 1, 760,
+ -1, 1, 762,
52, 0, 277,
58, 0, 215
};
static int parser_action_row329[] = {
2,
- -1, 1, 454,
+ -1, 1, 456,
97, 0, 544
};
static int parser_action_row330[] = {
2,
- -1, 1, 155,
- 49, 1, 978
+ -1, 1, 157,
+ 49, 1, 980
};
static int parser_action_row331[] = {
2,
- -1, 1, 154,
- 49, 1, 977
+ -1, 1, 156,
+ 49, 1, 979
};
static int parser_action_row332[] = {
4,
};
static int parser_action_row333[] = {
1,
- -1, 1, 254
+ -1, 1, 256
};
static int parser_action_row334[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row335[] = {
2,
- -1, 1, 201,
+ -1, 1, 203,
59, 0, 548
};
static int parser_action_row336[] = {
2,
- -1, 1, 153,
+ -1, 1, 155,
57, 0, 333
};
static int parser_action_row337[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row338[] = {
3,
- -1, 1, 1050,
+ -1, 1, 1052,
0, 0, 102,
1, 0, 103
};
static int parser_action_row339[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row340[] = {
1,
- -1, 1, 263
+ -1, 1, 267
};
static int parser_action_row341[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row342[] = {
1,
- -1, 1, 447
+ -1, 1, 449
};
static int parser_action_row343[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row344[] = {
2,
- -1, 1, 446,
+ -1, 1, 448,
56, 0, 554
};
static int parser_action_row345[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row346[] = {
23,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
31, 0, 172,
38, 0, 173,
};
static int parser_action_row348[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row351[] = {
1,
- -1, 1, 317
+ -1, 1, 321
};
static int parser_action_row352[] = {
1,
- -1, 1, 316
+ -1, 1, 320
};
static int parser_action_row353[] = {
1,
- -1, 1, 318
+ -1, 1, 322
};
static int parser_action_row354[] = {
1,
- -1, 1, 336
+ -1, 1, 340
};
static int parser_action_row355[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row356[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
24, 0, 562
};
static int parser_action_row357[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row358[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row359[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row360[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row361[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row362[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row363[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row364[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row365[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row366[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row367[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row368[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row369[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row370[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row371[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row372[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row373[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row374[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row375[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row376[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row377[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row378[] = {
1,
- -1, 1, 350
+ -1, 1, 354
};
static int parser_action_row379[] = {
2,
- -1, 1, 345,
+ -1, 1, 349,
52, 0, 277
};
static int parser_action_row380[] = {
1,
- -1, 1, 327
+ -1, 1, 331
};
static int parser_action_row381[] = {
2,
- -1, 1, 339,
+ -1, 1, 343,
52, 0, 277
};
static int parser_action_row382[] = {
3,
- -1, 1, 343,
+ -1, 1, 347,
52, 0, 277,
58, 0, 215
};
static int parser_action_row383[] = {
2,
- -1, 1, 454,
+ -1, 1, 456,
97, 0, 587
};
static int parser_action_row384[] = {
1,
- -1, 1, 200
+ -1, 1, 202
};
static int parser_action_row385[] = {
1,
- -1, 1, 278
+ -1, 1, 282
};
static int parser_action_row386[] = {
2,
- -1, 1, 277,
+ -1, 1, 281,
24, 0, 588
};
static int parser_action_row387[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
};
static int parser_action_row389[] = {
3,
- -1, 1, 795,
+ -1, 1, 797,
54, 0, 593,
94, 0, 594
};
};
static int parser_action_row391[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row392[] = {
5,
- -1, 1, 79,
+ -1, 1, 81,
18, 0, 236,
19, 0, 237,
20, 0, 238,
};
static int parser_action_row393[] = {
1,
- -1, 1, 398
+ -1, 1, 402
};
static int parser_action_row394[] = {
6,
- -1, 1, 337,
+ -1, 1, 341,
52, 0, 277,
57, 0, 333,
58, 0, 215,
- 59, 1, 153,
+ 59, 1, 155,
94, 0, 204
};
static int parser_action_row395[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row396[] = {
1,
- -1, 1, 273
+ -1, 1, 277
};
static int parser_action_row397[] = {
2,
};
static int parser_action_row398[] = {
3,
- -1, 1, 401,
+ -1, 1, 405,
54, 0, 604,
94, 0, 204
};
};
static int parser_action_row400[] = {
26,
- -1, 1, 985,
+ -1, 1, 987,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row401[] = {
2,
- -1, 1, 990,
+ -1, 1, 992,
49, 0, 197
};
static int parser_action_row402[] = {
2,
- -1, 1, 987,
+ -1, 1, 989,
49, 0, 197
};
static int parser_action_row403[] = {
1,
- -1, 1, 989
+ -1, 1, 991
};
static int parser_action_row404[] = {
2,
};
static int parser_action_row405[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
55, 0, 611
};
static int parser_action_row406[] = {
24,
- -1, 1, 496,
+ -1, 1, 498,
12, 0, 170,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row407[] = {
24,
- -1, 1, 497,
+ -1, 1, 499,
12, 0, 170,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row408[] = {
1,
- -1, 1, 498
+ -1, 1, 500
};
static int parser_action_row409[] = {
1,
- -1, 1, 499
+ -1, 1, 501
};
static int parser_action_row410[] = {
1,
- -1, 1, 500
+ -1, 1, 502
};
static int parser_action_row411[] = {
1,
- -1, 1, 501
+ -1, 1, 503
};
static int parser_action_row412[] = {
1,
- -1, 1, 502
+ -1, 1, 504
};
static int parser_action_row413[] = {
1,
- -1, 1, 503
+ -1, 1, 505
};
static int parser_action_row414[] = {
1,
- -1, 1, 504
+ -1, 1, 506
};
static int parser_action_row415[] = {
24,
- -1, 1, 505,
+ -1, 1, 507,
12, 0, 170,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row416[] = {
1,
- -1, 1, 506
+ -1, 1, 508
};
static int parser_action_row417[] = {
1,
- -1, 1, 507
+ -1, 1, 509
};
static int parser_action_row418[] = {
1,
- -1, 1, 510
+ -1, 1, 512
};
static int parser_action_row419[] = {
1,
- -1, 1, 508
+ -1, 1, 510
};
static int parser_action_row420[] = {
1,
- -1, 1, 512
+ -1, 1, 514
};
static int parser_action_row421[] = {
1,
- -1, 1, 511
+ -1, 1, 513
};
static int parser_action_row422[] = {
1,
- -1, 1, 509
+ -1, 1, 511
};
static int parser_action_row423[] = {
1,
- -1, 1, 513
+ -1, 1, 515
};
static int parser_action_row424[] = {
1,
- -1, 1, 515
+ -1, 1, 517
};
static int parser_action_row425[] = {
4,
- -1, 1, 401,
+ -1, 1, 405,
54, 0, 604,
58, 0, 214,
94, 0, 204
};
static int parser_action_row426[] = {
15,
- -1, 1, 337,
+ -1, 1, 341,
52, 0, 277,
58, 0, 215,
59, 0, 612,
};
static int parser_action_row427[] = {
1,
- -1, 1, 426
+ -1, 1, 428
};
static int parser_action_row428[] = {
1,
- -1, 1, 983
+ -1, 1, 985
};
static int parser_action_row429[] = {
1,
- -1, 1, 984
+ -1, 1, 986
};
static int parser_action_row430[] = {
1,
- -1, 1, 992
+ -1, 1, 994
};
static int parser_action_row431[] = {
1,
- -1, 1, 994
+ -1, 1, 996
};
static int parser_action_row432[] = {
1,
- -1, 1, 993
+ -1, 1, 995
};
static int parser_action_row433[] = {
1,
- -1, 1, 995
+ -1, 1, 997
};
static int parser_action_row434[] = {
1,
- -1, 1, 996
+ -1, 1, 998
};
static int parser_action_row435[] = {
1,
- -1, 1, 997
+ -1, 1, 999
};
static int parser_action_row436[] = {
1,
- -1, 1, 427
+ -1, 1, 429
};
static int parser_action_row437[] = {
3,
- -1, 1, 320,
+ -1, 1, 324,
54, 0, 244,
73, 0, 613
};
static int parser_action_row438[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row439[] = {
1,
- -1, 1, 431
+ -1, 1, 433
};
static int parser_action_row440[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
56, 0, 615
};
static int parser_action_row442[] = {
22,
- -1, 1, 453,
+ -1, 1, 455,
54, 0, 619,
74, 0, 620,
75, 0, 621,
};
static int parser_action_row443[] = {
1,
- -1, 1, 518
+ -1, 1, 520
};
static int parser_action_row444[] = {
1,
- -1, 1, 430
+ -1, 1, 432
};
static int parser_action_row445[] = {
1,
- -1, 1, 428
+ -1, 1, 430
};
static int parser_action_row446[] = {
23,
- -1, 1, 455,
+ -1, 1, 457,
54, 0, 619,
74, 0, 620,
75, 0, 621,
};
static int parser_action_row447[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row448[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row449[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row450[] = {
2,
- -1, 1, 153,
+ -1, 1, 155,
57, 0, 333
};
static int parser_action_row451[] = {
2,
- -1, 1, 383,
+ -1, 1, 387,
56, 0, 632
};
static int parser_action_row452[] = {
1,
- -1, 1, 466
+ -1, 1, 468
};
static int parser_action_row453[] = {
1,
- -1, 1, 465
+ -1, 1, 467
};
static int parser_action_row454[] = {
1,
- -1, 1, 216
+ -1, 1, 218
};
static int parser_action_row455[] = {
1,
- -1, 1, 235
+ -1, 1, 237
};
static int parser_action_row456[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row457[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row458[] = {
1,
- -1, 1, 80
+ -1, 1, 82
};
static int parser_action_row459[] = {
1,
- -1, 1, 82
+ -1, 1, 84
};
static int parser_action_row460[] = {
1,
- -1, 1, 81
+ -1, 1, 83
};
static int parser_action_row461[] = {
1,
- -1, 1, 83
+ -1, 1, 85
};
static int parser_action_row462[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row463[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row464[] = {
1,
- -1, 1, 30
+ -1, 1, 32
};
static int parser_action_row465[] = {
2,
};
static int parser_action_row466[] = {
1,
- -1, 1, 32
+ -1, 1, 34
};
static int parser_action_row467[] = {
1,
- -1, 1, 33
+ -1, 1, 35
};
static int parser_action_row468[] = {
23,
};
static int parser_action_row470[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row471[] = {
1,
- -1, 1, 164
+ -1, 1, 166
};
static int parser_action_row472[] = {
1,
- -1, 1, 1069
+ -1, 1, 1073
};
static int parser_action_row473[] = {
32,
- -1, 1, 161,
+ -1, 1, 163,
12, 0, 31,
15, 0, 33,
16, 0, 34,
36, 0, 42,
37, 0, 43,
38, 0, 44,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
54, 0, 52,
96, 0, 53,
97, 0, 54,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row474[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row475[] = {
5,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 668,
46, 0, 669,
96, 0, 53,
};
static int parser_action_row476[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row477[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row478[] = {
26,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
101, 0, 57,
102, 0, 58,
103, 0, 59,
- 104, 1, 395,
- 105, 1, 395,
+ 104, 1, 399,
+ 105, 1, 399,
106, 0, 60
};
static int parser_action_row479[] = {
1,
- -1, 1, 389
+ -1, 1, 393
};
static int parser_action_row480[] = {
1,
- -1, 1, 1075
+ -1, 1, 1079
};
static int parser_action_row481[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row482[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row483[] = {
1,
- -1, 1, 344
+ -1, 1, 348
};
static int parser_action_row484[] = {
1,
- -1, 1, 189
+ -1, 1, 191
};
static int parser_action_row485[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row486[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row487[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row488[] = {
1,
- -1, 1, 195
+ -1, 1, 197
};
static int parser_action_row489[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row490[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row491[] = {
13,
- -1, 1, 338,
+ -1, 1, 342,
59, 0, 684,
60, 0, 217,
61, 0, 218,
};
static int parser_action_row492[] = {
1,
- -1, 1, 186
+ -1, 1, 188
};
static int parser_action_row493[] = {
1,
- -1, 1, 197
+ -1, 1, 199
};
static int parser_action_row494[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row495[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row496[] = {
13,
- -1, 1, 342,
+ -1, 1, 346,
59, 0, 688,
60, 0, 217,
61, 0, 218,
};
static int parser_action_row497[] = {
1,
- -1, 1, 188
+ -1, 1, 190
};
static int parser_action_row498[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row499[] = {
39,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 341,
+ 54, 1, 345,
59, 0, 691,
60, 0, 217,
61, 0, 218,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 341,
+ 73, 1, 345,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row500[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row503[] = {
1,
- -1, 1, 482
+ -1, 1, 484
};
static int parser_action_row504[] = {
1,
};
static int parser_action_row505[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row506[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row507[] = {
1,
- -1, 1, 704
+ -1, 1, 706
};
static int parser_action_row508[] = {
3,
- -1, 1, 739,
+ -1, 1, 741,
52, 0, 277,
73, 0, 699
};
static int parser_action_row509[] = {
1,
- -1, 1, 736
+ -1, 1, 738
};
static int parser_action_row510[] = {
3,
};
static int parser_action_row511[] = {
3,
- -1, 1, 741,
- 54, 1, 744,
- 73, 1, 744
+ -1, 1, 743,
+ 54, 1, 746,
+ 73, 1, 746
};
static int parser_action_row512[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row513[] = {
9,
- -1, 1, 436,
- 0, 1, 439,
- 1, 1, 439,
- 9, 1, 439,
- 24, 1, 439,
- 53, 1, 439,
- 56, 1, 439,
- 95, 1, 439,
- 110, 1, 439
+ -1, 1, 438,
+ 0, 1, 441,
+ 1, 1, 441,
+ 9, 1, 441,
+ 24, 1, 441,
+ 53, 1, 441,
+ 56, 1, 441,
+ 95, 1, 441,
+ 110, 1, 441
};
static int parser_action_row514[] = {
4,
- -1, 1, 337,
+ -1, 1, 341,
52, 0, 277,
58, 0, 215,
59, 0, 703
};
static int parser_action_row515[] = {
2,
- -1, 1, 362,
+ -1, 1, 366,
71, 0, 704
};
static int parser_action_row516[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row518[] = {
1,
- -1, 1, 761
+ -1, 1, 763
};
static int parser_action_row519[] = {
1,
- -1, 1, 755
+ -1, 1, 757
};
static int parser_action_row520[] = {
21,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
31, 0, 118,
38, 0, 119,
};
static int parser_action_row521[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row522[] = {
21,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
31, 0, 118,
38, 0, 119,
};
static int parser_action_row523[] = {
21,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
31, 0, 118,
38, 0, 119,
};
static int parser_action_row525[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row526[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row527[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row528[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row529[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row530[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row531[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row532[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row533[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row534[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row535[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row536[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row537[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row538[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row539[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row540[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row541[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row542[] = {
20,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
38, 0, 119,
40, 0, 120,
};
static int parser_action_row543[] = {
5,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 730,
46, 0, 731,
96, 0, 53,
};
static int parser_action_row544[] = {
1,
- -1, 1, 759
+ -1, 1, 761
};
static int parser_action_row545[] = {
2,
- -1, 1, 758,
+ -1, 1, 760,
52, 0, 277
};
static int parser_action_row546[] = {
31,
- -1, 1, 456,
+ -1, 1, 458,
9, 0, 737,
12, 0, 31,
15, 0, 33,
};
static int parser_action_row549[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row550[] = {
2,
- -1, 1, 202,
+ -1, 1, 204,
59, 0, 741
};
static int parser_action_row551[] = {
};
static int parser_action_row555[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row556[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row557[] = {
1,
- -1, 1, 287
+ -1, 1, 291
};
static int parser_action_row558[] = {
3,
- -1, 1, 322,
+ -1, 1, 326,
52, 0, 277,
73, 0, 597
};
static int parser_action_row559[] = {
1,
- -1, 1, 319
+ -1, 1, 323
};
static int parser_action_row560[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row561[] = {
3,
- -1, 1, 324,
- 54, 1, 327,
- 73, 1, 327
+ -1, 1, 328,
+ 54, 1, 331,
+ 73, 1, 331
};
static int parser_action_row562[] = {
23,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
31, 0, 172,
38, 0, 173,
};
static int parser_action_row563[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row564[] = {
23,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
31, 0, 172,
38, 0, 173,
};
static int parser_action_row565[] = {
23,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
31, 0, 172,
38, 0, 173,
};
static int parser_action_row567[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row568[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row569[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row570[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row571[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row572[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row573[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row574[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row575[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row576[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row577[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row578[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row579[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row580[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row581[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row582[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row583[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row584[] = {
22,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
38, 0, 173,
40, 0, 174,
};
static int parser_action_row585[] = {
5,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 773,
46, 0, 669,
96, 0, 53,
};
static int parser_action_row586[] = {
1,
- -1, 1, 338
+ -1, 1, 342
};
static int parser_action_row587[] = {
1,
- -1, 1, 342
+ -1, 1, 346
};
static int parser_action_row588[] = {
2,
- -1, 1, 341,
+ -1, 1, 345,
52, 0, 277
};
static int parser_action_row589[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
};
static int parser_action_row590[] = {
1,
- -1, 1, 156
+ -1, 1, 158
};
static int parser_action_row591[] = {
1,
- -1, 1, 274
+ -1, 1, 278
};
static int parser_action_row592[] = {
31,
- -1, 1, 456,
+ -1, 1, 458,
9, 0, 780,
12, 0, 31,
15, 0, 33,
};
static int parser_action_row593[] = {
3,
- -1, 1, 795,
+ -1, 1, 797,
54, 0, 782,
94, 0, 594
};
static int parser_action_row594[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row595[] = {
3,
- -1, 1, 28,
+ -1, 1, 30,
13, 0, 32,
52, 0, 785
};
static int parser_action_row596[] = {
1,
- -1, 1, 794
+ -1, 1, 796
};
static int parser_action_row597[] = {
1,
- -1, 1, 620
+ -1, 1, 622
};
static int parser_action_row598[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row599[] = {
2,
- -1, 1, 28,
+ -1, 1, 30,
13, 0, 32
};
static int parser_action_row600[] = {
};
static int parser_action_row602[] = {
2,
- -1, 1, 153,
+ -1, 1, 155,
57, 0, 333
};
static int parser_action_row603[] = {
};
static int parser_action_row604[] = {
3,
- -1, 1, 401,
+ -1, 1, 405,
54, 0, 799,
94, 0, 204
};
static int parser_action_row605[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row606[] = {
1,
- -1, 1, 144
+ -1, 1, 146
};
static int parser_action_row607[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row608[] = {
1,
- -1, 1, 986
+ -1, 1, 988
};
static int parser_action_row609[] = {
1,
- -1, 1, 991
+ -1, 1, 993
};
static int parser_action_row610[] = {
1,
- -1, 1, 988
+ -1, 1, 990
};
static int parser_action_row611[] = {
3,
};
static int parser_action_row612[] = {
2,
- -1, 1, 514,
+ -1, 1, 516,
59, 0, 804
};
static int parser_action_row613[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row614[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row616[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row617[] = {
1,
- -1, 1, 1070
+ -1, 1, 1074
};
static int parser_action_row618[] = {
2,
};
static int parser_action_row619[] = {
2,
- -1, 1, 381,
+ -1, 1, 385,
56, 0, 615
};
static int parser_action_row620[] = {
};
static int parser_action_row621[] = {
1,
- -1, 1, 496
+ -1, 1, 498
};
static int parser_action_row622[] = {
1,
- -1, 1, 497
+ -1, 1, 499
};
static int parser_action_row623[] = {
1,
- -1, 1, 505
+ -1, 1, 507
};
static int parser_action_row624[] = {
14,
- -1, 1, 339,
+ -1, 1, 343,
52, 0, 277,
59, 0, 810,
60, 0, 217,
};
static int parser_action_row625[] = {
1,
- -1, 1, 519
+ -1, 1, 521
};
static int parser_action_row626[] = {
15,
- -1, 1, 343,
+ -1, 1, 347,
52, 0, 277,
58, 0, 215,
59, 0, 811,
};
static int parser_action_row627[] = {
22,
- -1, 1, 454,
+ -1, 1, 456,
54, 0, 619,
74, 0, 620,
75, 0, 621,
};
static int parser_action_row628[] = {
1,
- -1, 1, 521
+ -1, 1, 523
};
static int parser_action_row629[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row631[] = {
2,
- -1, 1, 386,
+ -1, 1, 390,
72, 0, 816
};
static int parser_action_row632[] = {
};
static int parser_action_row633[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row634[] = {
1,
- -1, 1, 1072
+ -1, 1, 1076
};
static int parser_action_row635[] = {
2,
- -1, 1, 384,
+ -1, 1, 388,
56, 0, 632
};
static int parser_action_row636[] = {
1,
- -1, 1, 215
+ -1, 1, 217
};
static int parser_action_row637[] = {
1,
- -1, 1, 234
+ -1, 1, 236
};
static int parser_action_row638[] = {
3,
};
static int parser_action_row640[] = {
1,
- -1, 1, 31
+ -1, 1, 33
};
static int parser_action_row641[] = {
2,
};
static int parser_action_row642[] = {
1,
- -1, 1, 84
+ -1, 1, 86
};
static int parser_action_row643[] = {
1,
- -1, 1, 85
+ -1, 1, 87
};
static int parser_action_row644[] = {
1,
- -1, 1, 86
+ -1, 1, 88
};
static int parser_action_row645[] = {
1,
- -1, 1, 87
+ -1, 1, 89
};
static int parser_action_row646[] = {
1,
- -1, 1, 88
+ -1, 1, 90
};
static int parser_action_row647[] = {
1,
- -1, 1, 89
+ -1, 1, 91
};
static int parser_action_row648[] = {
1,
- -1, 1, 90
+ -1, 1, 92
};
static int parser_action_row649[] = {
1,
- -1, 1, 91
+ -1, 1, 93
};
static int parser_action_row650[] = {
1,
- -1, 1, 92
+ -1, 1, 94
};
static int parser_action_row651[] = {
1,
- -1, 1, 93
+ -1, 1, 95
};
static int parser_action_row652[] = {
1,
- -1, 1, 94
+ -1, 1, 96
};
static int parser_action_row653[] = {
1,
- -1, 1, 95
+ -1, 1, 97
};
static int parser_action_row654[] = {
1,
- -1, 1, 98
+ -1, 1, 100
};
static int parser_action_row655[] = {
1,
- -1, 1, 96
+ -1, 1, 98
};
static int parser_action_row656[] = {
1,
- -1, 1, 100
+ -1, 1, 102
};
static int parser_action_row657[] = {
1,
- -1, 1, 99
+ -1, 1, 101
};
static int parser_action_row658[] = {
1,
- -1, 1, 97
+ -1, 1, 99
};
static int parser_action_row659[] = {
1,
- -1, 1, 101
+ -1, 1, 103
};
static int parser_action_row660[] = {
1,
- -1, 1, 103
+ -1, 1, 105
};
static int parser_action_row661[] = {
3,
- -1, 1, 106,
+ -1, 1, 108,
58, 0, 215,
59, 0, 827
};
static int parser_action_row662[] = {
1,
- -1, 1, 461
+ -1, 1, 463
};
static int parser_action_row663[] = {
5,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
52, 0, 828,
};
static int parser_action_row666[] = {
1,
- -1, 1, 34
+ -1, 1, 36
};
static int parser_action_row667[] = {
3,
};
static int parser_action_row669[] = {
27,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 347,
- 73, 1, 347,
+ 54, 1, 351,
+ 73, 1, 351,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row670[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row671[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 329,
+ 54, 1, 333,
58, 0, 215,
59, 0, 846,
60, 0, 217,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 329,
+ 73, 1, 333,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row673[] = {
3,
- -1, 1, 453,
+ -1, 1, 455,
12, 0, 851,
97, 0, 852
};
static int parser_action_row674[] = {
4,
- -1, 1, 455,
+ -1, 1, 457,
12, 0, 853,
96, 0, 53,
97, 0, 854
};
static int parser_action_row675[] = {
1,
- -1, 1, 223
+ -1, 1, 225
};
static int parser_action_row676[] = {
1,
- -1, 1, 242
+ -1, 1, 244
};
static int parser_action_row677[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row678[] = {
1,
- -1, 1, 390
+ -1, 1, 394
};
static int parser_action_row679[] = {
1,
- -1, 1, 391
+ -1, 1, 395
};
static int parser_action_row680[] = {
1,
- -1, 1, 206
+ -1, 1, 208
};
static int parser_action_row681[] = {
1,
- -1, 1, 225
+ -1, 1, 227
};
static int parser_action_row682[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row683[] = {
1,
- -1, 1, 218
+ -1, 1, 220
};
static int parser_action_row684[] = {
1,
- -1, 1, 237
+ -1, 1, 239
};
static int parser_action_row685[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row686[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row687[] = {
1,
- -1, 1, 222
+ -1, 1, 224
};
static int parser_action_row688[] = {
1,
- -1, 1, 241
+ -1, 1, 243
};
static int parser_action_row689[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row690[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row691[] = {
1,
- -1, 1, 196
+ -1, 1, 198
};
static int parser_action_row692[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row693[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row694[] = {
13,
- -1, 1, 340,
+ -1, 1, 344,
59, 0, 865,
60, 0, 217,
61, 0, 218,
};
static int parser_action_row695[] = {
1,
- -1, 1, 187
+ -1, 1, 189
};
static int parser_action_row696[] = {
1,
- -1, 1, 138
+ -1, 1, 140
};
static int parser_action_row697[] = {
1,
- -1, 1, 436
+ -1, 1, 438
};
static int parser_action_row698[] = {
2,
};
static int parser_action_row700[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row701[] = {
1,
- -1, 1, 738
+ -1, 1, 740
};
static int parser_action_row702[] = {
2,
};
static int parser_action_row703[] = {
5,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 730,
46, 0, 731,
96, 0, 53,
};
static int parser_action_row704[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row705[] = {
1,
- -1, 1, 363
+ -1, 1, 367
};
static int parser_action_row706[] = {
2,
- -1, 1, 442,
+ -1, 1, 444,
56, 0, 872
};
static int parser_action_row707[] = {
9,
- -1, 1, 435,
- 0, 1, 437,
- 1, 1, 437,
- 9, 1, 437,
- 24, 1, 437,
- 53, 1, 437,
- 56, 1, 437,
- 95, 1, 437,
- 110, 1, 437
+ -1, 1, 437,
+ 0, 1, 439,
+ 1, 1, 439,
+ 9, 1, 439,
+ 24, 1, 439,
+ 53, 1, 439,
+ 56, 1, 439,
+ 95, 1, 439,
+ 110, 1, 439
};
static int parser_action_row708[] = {
1,
- -1, 1, 700
+ -1, 1, 702
};
static int parser_action_row709[] = {
21,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 116,
31, 0, 118,
38, 0, 119,
};
static int parser_action_row710[] = {
1,
- -1, 1, 699
+ -1, 1, 701
};
static int parser_action_row711[] = {
1,
- -1, 1, 702
+ -1, 1, 704
};
static int parser_action_row712[] = {
1,
- -1, 1, 713
+ -1, 1, 715
};
static int parser_action_row713[] = {
2,
- -1, 1, 715,
+ -1, 1, 717,
81, 0, 315
};
static int parser_action_row714[] = {
2,
- -1, 1, 706,
+ -1, 1, 708,
80, 0, 307
};
static int parser_action_row715[] = {
2,
- -1, 1, 707,
+ -1, 1, 709,
80, 0, 307
};
static int parser_action_row716[] = {
2,
- -1, 1, 708,
+ -1, 1, 710,
80, 0, 307
};
static int parser_action_row717[] = {
2,
- -1, 1, 709,
+ -1, 1, 711,
80, 0, 307
};
static int parser_action_row718[] = {
2,
- -1, 1, 710,
+ -1, 1, 712,
80, 0, 307
};
static int parser_action_row719[] = {
2,
- -1, 1, 711,
+ -1, 1, 713,
80, 0, 307
};
static int parser_action_row720[] = {
2,
- -1, 1, 712,
+ -1, 1, 714,
80, 0, 307
};
static int parser_action_row721[] = {
2,
- -1, 1, 717,
+ -1, 1, 719,
82, 0, 316
};
static int parser_action_row722[] = {
3,
- -1, 1, 719,
+ -1, 1, 721,
88, 0, 317,
91, 0, 318
};
static int parser_action_row723[] = {
3,
- -1, 1, 721,
+ -1, 1, 723,
74, 0, 319,
75, 0, 320
};
static int parser_action_row724[] = {
3,
- -1, 1, 722,
+ -1, 1, 724,
74, 0, 319,
75, 0, 320
};
static int parser_action_row725[] = {
4,
- -1, 1, 724,
+ -1, 1, 726,
76, 0, 321,
78, 0, 322,
79, 0, 323
};
static int parser_action_row726[] = {
4,
- -1, 1, 725,
+ -1, 1, 727,
76, 0, 321,
78, 0, 322,
79, 0, 323
};
static int parser_action_row727[] = {
1,
- -1, 1, 727
+ -1, 1, 729
};
static int parser_action_row728[] = {
1,
- -1, 1, 728
+ -1, 1, 730
};
static int parser_action_row729[] = {
1,
- -1, 1, 729
+ -1, 1, 731
};
static int parser_action_row730[] = {
1,
- -1, 1, 731
+ -1, 1, 733
};
static int parser_action_row731[] = {
2,
- -1, 1, 764,
+ -1, 1, 766,
52, 0, 277
};
static int parser_action_row732[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row733[] = {
3,
- -1, 1, 746,
+ -1, 1, 748,
52, 0, 277,
58, 0, 215
};
};
static int parser_action_row735[] = {
2,
- -1, 1, 453,
+ -1, 1, 455,
97, 0, 880
};
static int parser_action_row736[] = {
3,
- -1, 1, 455,
+ -1, 1, 457,
96, 0, 53,
97, 0, 881
};
static int parser_action_row737[] = {
1,
- -1, 1, 757
+ -1, 1, 759
};
static int parser_action_row738[] = {
1,
- -1, 1, 162
+ -1, 1, 164
};
static int parser_action_row739[] = {
31,
- -1, 1, 456,
+ -1, 1, 458,
9, 0, 883,
12, 0, 31,
15, 0, 33,
};
static int parser_action_row740[] = {
1,
- -1, 1, 152
+ -1, 1, 154
};
static int parser_action_row741[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row742[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row743[] = {
35,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 886,
};
static int parser_action_row744[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 157,
};
static int parser_action_row745[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
56, 0, 554
};
static int parser_action_row746[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row749[] = {
1,
- -1, 1, 321
+ -1, 1, 325
};
static int parser_action_row750[] = {
5,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 773,
46, 0, 669,
96, 0, 53,
};
static int parser_action_row751[] = {
1,
- -1, 1, 283
+ -1, 1, 287
};
static int parser_action_row752[] = {
23,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
31, 0, 172,
38, 0, 173,
};
static int parser_action_row753[] = {
1,
- -1, 1, 282
+ -1, 1, 286
};
static int parser_action_row754[] = {
1,
- -1, 1, 285
+ -1, 1, 289
};
static int parser_action_row755[] = {
1,
- -1, 1, 296
+ -1, 1, 300
};
static int parser_action_row756[] = {
2,
- -1, 1, 298,
+ -1, 1, 302,
81, 0, 366
};
static int parser_action_row757[] = {
2,
- -1, 1, 289,
+ -1, 1, 293,
80, 0, 358
};
static int parser_action_row758[] = {
2,
- -1, 1, 290,
+ -1, 1, 294,
80, 0, 358
};
static int parser_action_row759[] = {
2,
- -1, 1, 291,
+ -1, 1, 295,
80, 0, 358
};
static int parser_action_row760[] = {
2,
- -1, 1, 292,
+ -1, 1, 296,
80, 0, 358
};
static int parser_action_row761[] = {
2,
- -1, 1, 293,
+ -1, 1, 297,
80, 0, 358
};
static int parser_action_row762[] = {
2,
- -1, 1, 294,
+ -1, 1, 298,
80, 0, 358
};
static int parser_action_row763[] = {
2,
- -1, 1, 295,
+ -1, 1, 299,
80, 0, 358
};
static int parser_action_row764[] = {
2,
- -1, 1, 300,
+ -1, 1, 304,
82, 0, 367
};
static int parser_action_row765[] = {
3,
- -1, 1, 302,
+ -1, 1, 306,
88, 0, 368,
91, 0, 369
};
static int parser_action_row766[] = {
3,
- -1, 1, 304,
+ -1, 1, 308,
74, 0, 370,
75, 0, 371
};
static int parser_action_row767[] = {
3,
- -1, 1, 305,
+ -1, 1, 309,
74, 0, 370,
75, 0, 371
};
static int parser_action_row768[] = {
4,
- -1, 1, 307,
+ -1, 1, 311,
76, 0, 372,
78, 0, 373,
79, 0, 374
};
static int parser_action_row769[] = {
4,
- -1, 1, 308,
+ -1, 1, 312,
76, 0, 372,
78, 0, 373,
79, 0, 374
};
static int parser_action_row770[] = {
1,
- -1, 1, 310
+ -1, 1, 314
};
static int parser_action_row771[] = {
1,
- -1, 1, 311
+ -1, 1, 315
};
static int parser_action_row772[] = {
1,
- -1, 1, 312
+ -1, 1, 316
};
static int parser_action_row773[] = {
1,
- -1, 1, 314
+ -1, 1, 318
};
static int parser_action_row774[] = {
2,
- -1, 1, 347,
+ -1, 1, 351,
52, 0, 277
};
static int parser_action_row775[] = {
3,
- -1, 1, 329,
+ -1, 1, 333,
52, 0, 277,
58, 0, 215
};
};
static int parser_action_row777[] = {
2,
- -1, 1, 453,
+ -1, 1, 455,
97, 0, 929
};
static int parser_action_row778[] = {
3,
- -1, 1, 455,
+ -1, 1, 457,
96, 0, 53,
97, 0, 930
};
static int parser_action_row779[] = {
1,
- -1, 1, 340
+ -1, 1, 344
};
static int parser_action_row780[] = {
1,
- -1, 1, 275
+ -1, 1, 279
};
static int parser_action_row781[] = {
1,
- -1, 1, 155
+ -1, 1, 157
};
static int parser_action_row782[] = {
1,
- -1, 1, 154
+ -1, 1, 156
};
static int parser_action_row783[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row784[] = {
1,
- -1, 1, 621
+ -1, 1, 623
};
static int parser_action_row785[] = {
3,
};
static int parser_action_row786[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row787[] = {
5,
- -1, 1, 79,
+ -1, 1, 81,
18, 0, 236,
19, 0, 237,
20, 0, 238,
};
static int parser_action_row788[] = {
1,
- -1, 1, 792
+ -1, 1, 794
};
static int parser_action_row789[] = {
3,
};
static int parser_action_row790[] = {
5,
- -1, 1, 79,
+ -1, 1, 81,
18, 0, 236,
19, 0, 237,
20, 0, 238,
};
static int parser_action_row791[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row792[] = {
2,
- -1, 1, 405,
+ -1, 1, 408,
56, 0, 942
};
static int parser_action_row793[] = {
1,
- -1, 1, 434
+ -1, 1, 436
};
static int parser_action_row794[] = {
1,
- -1, 1, 433
+ -1, 1, 435
};
static int parser_action_row795[] = {
1,
- -1, 1, 432
+ -1, 1, 434
};
static int parser_action_row796[] = {
3,
- -1, 1, 401,
+ -1, 1, 405,
52, 0, 945,
94, 0, 204
};
static int parser_action_row797[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
};
static int parser_action_row799[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 157,
};
static int parser_action_row800[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row801[] = {
1,
- -1, 1, 145
+ -1, 1, 147
};
static int parser_action_row802[] = {
3,
};
static int parser_action_row803[] = {
1,
- -1, 1, 198
+ -1, 1, 200
};
static int parser_action_row804[] = {
2,
};
static int parser_action_row805[] = {
1,
- -1, 1, 517
+ -1, 1, 519
};
static int parser_action_row806[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 773,
46, 0, 669,
54, 0, 619,
};
static int parser_action_row807[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row808[] = {
54,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
15, 0, 33,
16, 0, 34,
};
static int parser_action_row809[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row810[] = {
1,
- -1, 1, 1071
+ -1, 1, 1075
};
static int parser_action_row811[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row812[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row813[] = {
14,
- -1, 1, 341,
+ -1, 1, 345,
52, 0, 277,
59, 0, 961,
60, 0, 217,
};
static int parser_action_row814[] = {
1,
- -1, 1, 520
+ -1, 1, 522
};
static int parser_action_row815[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row816[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row817[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row818[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
static int parser_action_row819[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 446,
27, 0, 447,
};
static int parser_action_row820[] = {
1,
- -1, 1, 1073
+ -1, 1, 1077
};
static int parser_action_row821[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row822[] = {
2,
- -1, 1, 449,
+ -1, 1, 451,
58, 0, 215
};
static int parser_action_row823[] = {
2,
- -1, 1, 76,
+ -1, 1, 78,
14, 0, 969
};
static int parser_action_row824[] = {
};
static int parser_action_row826[] = {
2,
- -1, 1, 76,
+ -1, 1, 78,
14, 0, 969
};
static int parser_action_row827[] = {
2,
- -1, 1, 102,
+ -1, 1, 104,
59, 0, 974
};
static int parser_action_row828[] = {
1,
- -1, 1, 104
+ -1, 1, 106
};
static int parser_action_row829[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row830[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row831[] = {
4,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
14, 0, 978,
15, 0, 979
};
static int parser_action_row832[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row833[] = {
1,
- -1, 1, 110
+ -1, 1, 112
};
static int parser_action_row834[] = {
2,
- -1, 1, 106,
+ -1, 1, 108,
59, 0, 827
};
static int parser_action_row835[] = {
1,
- -1, 1, 462
+ -1, 1, 464
};
static int parser_action_row836[] = {
1,
- -1, 1, 464
+ -1, 1, 466
};
static int parser_action_row837[] = {
22,
};
static int parser_action_row838[] = {
2,
- -1, 1, 457,
+ -1, 1, 459,
58, 0, 214
};
static int parser_action_row839[] = {
58, 0, 215
};
static int parser_action_row840[] = {
- 2,
- -1, 1, 37,
- 54, 0, 985
+ 7,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 28, 0, 84,
+ 54, 0, 985,
+ 95, 0, 3,
+ 109, 0, 85
};
static int parser_action_row841[] = {
2,
-1, 3, 840,
- 96, 0, 987
+ 96, 0, 995
};
static int parser_action_row842[] = {
3,
-1, 3, 841,
- 96, 0, 988,
+ 96, 0, 996,
97, 0, 838
};
static int parser_action_row843[] = {
1,
- -1, 1, 441
+ -1, 1, 443
};
static int parser_action_row844[] = {
1,
- -1, 1, 346
+ -1, 1, 350
};
static int parser_action_row845[] = {
1,
- -1, 1, 190
+ -1, 1, 192
};
static int parser_action_row846[] = {
3,
-1, 3, 845,
- 31, 0, 990,
- 52, 0, 991
+ 31, 0, 998,
+ 52, 0, 999
};
static int parser_action_row847[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row848[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row849[] = {
13,
- -1, 1, 328,
- 59, 0, 994,
+ -1, 1, 332,
+ 59, 0, 1002,
60, 0, 217,
61, 0, 218,
62, 0, 219,
};
static int parser_action_row850[] = {
1,
- -1, 1, 181
+ -1, 1, 183
};
static int parser_action_row851[] = {
13,
- -1, 1, 326,
- 59, 0, 996,
+ -1, 1, 330,
+ 59, 0, 1004,
60, 0, 217,
61, 0, 218,
62, 0, 219,
};
static int parser_action_row852[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row853[] = {
39,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 331,
- 59, 0, 999,
+ 54, 1, 335,
+ 59, 0, 1007,
60, 0, 217,
61, 0, 218,
62, 0, 219,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 331,
+ 73, 1, 335,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row854[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row855[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 335,
+ 54, 1, 339,
58, 0, 215,
- 59, 0, 1004,
+ 59, 0, 1012,
60, 0, 217,
61, 0, 218,
62, 0, 219,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 335,
+ 73, 1, 339,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row856[] = {
3,
- -1, 1, 454,
- 12, 0, 1008,
- 97, 0, 1009
+ -1, 1, 456,
+ 12, 0, 1016,
+ 97, 0, 1017
};
static int parser_action_row857[] = {
1,
- -1, 1, 394
+ -1, 1, 398
};
static int parser_action_row858[] = {
1,
- -1, 1, 439
+ -1, 1, 441
};
static int parser_action_row859[] = {
2,
-1, 3, 858,
- 53, 0, 1010
+ 53, 0, 1018
};
static int parser_action_row860[] = {
1,
- -1, 1, 217
+ -1, 1, 219
};
static int parser_action_row861[] = {
1,
- -1, 1, 236
+ -1, 1, 238
};
static int parser_action_row862[] = {
1,
- -1, 1, 221
+ -1, 1, 223
};
static int parser_action_row863[] = {
1,
- -1, 1, 240
+ -1, 1, 242
};
static int parser_action_row864[] = {
1,
- -1, 1, 220
+ -1, 1, 222
};
static int parser_action_row865[] = {
1,
- -1, 1, 239
+ -1, 1, 241
};
static int parser_action_row866[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row867[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row868[] = {
1,
- -1, 1, 435
+ -1, 1, 437
};
static int parser_action_row869[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
3,
-1, 3, 869,
96, 0, 53,
- 97, 0, 1014
+ 97, 0, 1022
};
static int parser_action_row871[] = {
2,
-1, 3, 870,
- 98, 0, 1017
+ 98, 0, 1025
};
static int parser_action_row872[] = {
1,
- -1, 1, 364
+ -1, 1, 368
};
static int parser_action_row873[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row874[] = {
1,
- -1, 1, 1082
+ -1, 1, 1084
};
static int parser_action_row875[] = {
2,
- -1, 1, 443,
+ -1, 1, 445,
56, 0, 872
};
static int parser_action_row876[] = {
1,
- -1, 1, 701
+ -1, 1, 703
};
static int parser_action_row877[] = {
1,
- -1, 1, 763
+ -1, 1, 765
};
static int parser_action_row878[] = {
3,
-1, 3, 877,
- 31, 0, 1020,
- 52, 0, 1021
+ 31, 0, 1028,
+ 52, 0, 1029
};
static int parser_action_row879[] = {
1,
- -1, 1, 745
+ -1, 1, 747
};
static int parser_action_row880[] = {
1,
- -1, 1, 743
+ -1, 1, 745
};
static int parser_action_row881[] = {
2,
- -1, 1, 748,
+ -1, 1, 750,
52, 0, 277
};
static int parser_action_row882[] = {
3,
- -1, 1, 752,
+ -1, 1, 754,
52, 0, 277,
58, 0, 215
};
static int parser_action_row883[] = {
2,
- -1, 1, 454,
- 97, 0, 1024
+ -1, 1, 456,
+ 97, 0, 1032
};
static int parser_action_row884[] = {
1,
- -1, 1, 163
+ -1, 1, 165
};
static int parser_action_row885[] = {
1,
- -1, 1, 203
+ -1, 1, 205
};
static int parser_action_row886[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row887[] = {
1,
- -1, 1, 262
+ -1, 1, 266
};
static int parser_action_row888[] = {
27,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 349,
- 73, 1, 349,
+ 54, 1, 353,
+ 73, 1, 353,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row889[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
- 9, 0, 1027,
+ 9, 0, 1035,
12, 0, 887,
15, 0, 888,
16, 0, 34,
};
static int parser_action_row890[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row891[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
};
static int parser_action_row892[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row893[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
- 9, 0, 1027,
+ 9, 0, 1035,
12, 0, 887,
15, 0, 888,
16, 0, 34,
};
static int parser_action_row894[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row895[] = {
27,
- -1, 1, 167,
+ -1, 1, 169,
12, 0, 170,
22, 0, 171,
- 24, 1, 898,
+ 24, 1, 900,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
};
static int parser_action_row896[] = {
3,
- -1, 1, 172,
- 24, 1, 903,
+ -1, 1, 174,
+ 24, 1, 905,
49, 0, 197
};
static int parser_action_row897[] = {
3,
- -1, 1, 169,
- 24, 1, 900,
+ -1, 1, 171,
+ 24, 1, 902,
49, 0, 197
};
static int parser_action_row898[] = {
2,
- -1, 1, 171,
- 24, 1, 902
+ -1, 1, 173,
+ 24, 1, 904
};
static int parser_action_row899[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row900[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row901[] = {
2,
-1, 3, 900,
- 11, 0, 1044
+ 11, 0, 1052
};
static int parser_action_row902[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 337,
+ 54, 1, 341,
58, 0, 215,
59, 0, 216,
60, 0, 217,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 337,
+ 73, 1, 341,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
};
static int parser_action_row903[] = {
1,
- -1, 1, 257
+ -1, 1, 259
};
static int parser_action_row904[] = {
2,
- -1, 1, 165,
- 24, 1, 896
+ -1, 1, 167,
+ 24, 1, 898
};
static int parser_action_row905[] = {
2,
- -1, 1, 166,
- 24, 1, 897
+ -1, 1, 168,
+ 24, 1, 899
};
static int parser_action_row906[] = {
1,
- -1, 1, 259
+ -1, 1, 264
};
static int parser_action_row907[] = {
3,
-1, 3, 906,
54, 0, 244,
- 73, 0, 1046
+ 73, 0, 1054
};
static int parser_action_row908[] = {
3,
-1, 3, 907,
- 41, 0, 1047,
+ 41, 0, 1055,
98, 0, 255
};
static int parser_action_row909[] = {
3,
- -1, 1, 453,
- 12, 0, 1048,
- 97, 0, 1049
+ -1, 1, 455,
+ 12, 0, 1056,
+ 97, 0, 1057
};
static int parser_action_row910[] = {
32,
- -1, 1, 456,
+ -1, 1, 458,
9, 0, 886,
12, 0, 31,
15, 0, 33,
16, 0, 34,
22, 0, 35,
- 24, 0, 890,
+ 24, 0, 1058,
25, 0, 36,
26, 0, 37,
27, 0, 38,
static int parser_action_row911[] = {
2,
-1, 3, 910,
- 24, 0, 1053
+ 24, 0, 1062
};
static int parser_action_row912[] = {
1,
- -1, 1, 905
+ -1, 1, 907
};
static int parser_action_row913[] = {
1,
- -1, 1, 906
+ -1, 1, 908
};
static int parser_action_row914[] = {
1,
- -1, 1, 908
+ -1, 1, 910
};
static int parser_action_row915[] = {
1,
- -1, 1, 907
+ -1, 1, 909
};
static int parser_action_row916[] = {
1,
- -1, 1, 909
+ -1, 1, 911
};
static int parser_action_row917[] = {
1,
- -1, 1, 910
+ -1, 1, 912
};
static int parser_action_row918[] = {
1,
- -1, 1, 911
+ -1, 1, 913
};
static int parser_action_row919[] = {
4,
- -1, 1, 455,
- 12, 0, 1054,
+ -1, 1, 457,
+ 12, 0, 1063,
96, 0, 53,
- 97, 0, 1055
+ 97, 0, 1064
};
static int parser_action_row920[] = {
1,
- -1, 1, 266
+ -1, 1, 270
};
static int parser_action_row921[] = {
2,
static int parser_action_row922[] = {
2,
-1, 3, 921,
- 53, 0, 1058
+ 53, 0, 1067
};
static int parser_action_row923[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row924[] = {
1,
- -1, 1, 448
+ -1, 1, 450
};
static int parser_action_row925[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row926[] = {
2,
-1, 3, 925,
- 98, 0, 1061
+ 98, 0, 1070
};
static int parser_action_row927[] = {
1,
- -1, 1, 284
+ -1, 1, 288
};
static int parser_action_row928[] = {
1,
- -1, 1, 328
+ -1, 1, 332
};
static int parser_action_row929[] = {
1,
- -1, 1, 326
+ -1, 1, 330
};
static int parser_action_row930[] = {
2,
- -1, 1, 331,
+ -1, 1, 335,
52, 0, 277
};
static int parser_action_row931[] = {
3,
- -1, 1, 335,
+ -1, 1, 339,
52, 0, 277,
58, 0, 215
};
static int parser_action_row932[] = {
2,
- -1, 1, 454,
- 97, 0, 1064
+ -1, 1, 456,
+ 97, 0, 1073
};
static int parser_action_row933[] = {
3,
};
static int parser_action_row934[] = {
2,
- -1, 1, 148,
- 56, 0, 1066
+ -1, 1, 150,
+ 56, 0, 1075
};
static int parser_action_row935[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row936[] = {
2,
- -1, 1, 28,
+ -1, 1, 30,
13, 0, 32
};
static int parser_action_row937[] = {
};
static int parser_action_row938[] = {
3,
- -1, 1, 352,
+ -1, 1, 356,
52, 0, 277,
58, 0, 215
};
static int parser_action_row939[] = {
2,
-1, 3, 938,
- 97, 0, 1073
+ 97, 0, 1082
};
static int parser_action_row940[] = {
3,
-1, 3, 939,
96, 0, 53,
- 97, 0, 1074
+ 97, 0, 1083
};
static int parser_action_row941[] = {
4,
static int parser_action_row942[] = {
2,
-1, 3, 941,
- 53, 0, 1077
+ 53, 0, 1086
};
static int parser_action_row943[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row944[] = {
1,
- -1, 1, 1076
+ -1, 1, 1080
};
static int parser_action_row945[] = {
2,
- -1, 1, 406,
+ -1, 1, 409,
56, 0, 942
};
static int parser_action_row946[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row947[] = {
1,
- -1, 1, 402
+ -1, 1, 406
};
static int parser_action_row948[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row949[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row950[] = {
1,
- -1, 1, 270
+ -1, 1, 274
};
static int parser_action_row951[] = {
2,
};
static int parser_action_row953[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row954[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
};
static int parser_action_row955[] = {
15,
- -1, 1, 329,
+ -1, 1, 333,
52, 0, 277,
58, 0, 215,
- 59, 0, 1087,
+ 59, 0, 1096,
60, 0, 217,
61, 0, 218,
62, 0, 219,
};
static int parser_action_row956[] = {
22,
- -1, 1, 453,
+ -1, 1, 455,
54, 0, 619,
74, 0, 620,
75, 0, 621,
90, 0, 421,
91, 0, 422,
92, 0, 423,
- 97, 0, 1088
+ 97, 0, 1097
};
static int parser_action_row957[] = {
1,
- -1, 1, 429
+ -1, 1, 431
};
static int parser_action_row958[] = {
23,
- -1, 1, 455,
+ -1, 1, 457,
54, 0, 619,
74, 0, 620,
75, 0, 621,
91, 0, 422,
92, 0, 423,
96, 0, 53,
- 97, 0, 1089
+ 97, 0, 1098
};
static int parser_action_row959[] = {
1,
- -1, 1, 380
+ -1, 1, 384
};
static int parser_action_row960[] = {
1,
- -1, 1, 382
+ -1, 1, 386
};
static int parser_action_row961[] = {
1,
- -1, 1, 379
+ -1, 1, 383
};
static int parser_action_row962[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
static int parser_action_row963[] = {
2,
-1, 3, 962,
- 23, 0, 1091
+ 23, 0, 1100
};
static int parser_action_row964[] = {
2,
-1, 3, 963,
- 28, 0, 1092
+ 28, 0, 1101
};
static int parser_action_row965[] = {
23,
- -1, 1, 456,
- 12, 0, 1093,
- 22, 0, 1094,
- 31, 0, 1095,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 22, 0, 1103,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
static int parser_action_row966[] = {
1,
- -1, 1, 378
+ -1, 1, 382
};
static int parser_action_row967[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row968[] = {
1,
- -1, 1, 385
+ -1, 1, 389
};
static int parser_action_row969[] = {
2,
-1, 3, 968,
- 97, 0, 1133
+ 97, 0, 1142
};
static int parser_action_row970[] = {
5,
- -1, 1, 28,
+ -1, 1, 30,
0, 0, 88,
1, 0, 89,
13, 0, 32,
};
static int parser_action_row972[] = {
2,
- -1, 1, 450,
+ -1, 1, 452,
58, 0, 215
};
static int parser_action_row973[] = {
};
static int parser_action_row975[] = {
1,
- -1, 1, 105
+ -1, 1, 107
};
static int parser_action_row976[] = {
2,
- -1, 1, 113,
- 97, 0, 1140
+ -1, 1, 115,
+ 97, 0, 1148
};
static int parser_action_row977[] = {
3,
};
static int parser_action_row978[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row979[] = {
5,
- -1, 1, 28,
+ -1, 1, 30,
0, 0, 88,
1, 0, 89,
13, 0, 32,
};
static int parser_action_row980[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
};
static int parser_action_row981[] = {
3,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
- 15, 0, 1148
+ 15, 0, 1156
};
static int parser_action_row982[] = {
3,
};
static int parser_action_row983[] = {
1,
- -1, 1, 491
+ -1, 1, 493
};
static int parser_action_row984[] = {
1,
- -1, 1, 109
+ -1, 1, 111
};
static int parser_action_row985[] = {
1,
- -1, 1, 463
+ -1, 1, 465
};
static int parser_action_row986[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row987[] = {
- 6,
- -1, 1, 483,
+ 2,
+ -1, 1, 75,
+ 9, 1, 45
+};
+static int parser_action_row988[] = {
+ 2,
+ -1, 3, 987,
+ 9, 0, 1160
+};
+static int parser_action_row989[] = {
+ 1,
+ -1, 1, 1062
+};
+static int parser_action_row990[] = {
+ 4,
+ -1, 3, 989,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
+};
+static int parser_action_row991[] = {
+ 4,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 28, 0, 84,
- 95, 0, 3,
- 109, 0, 85
+ 95, 0, 3
};
-static int parser_action_row988[] = {
+static int parser_action_row992[] = {
+ 1,
+ -1, 1, 74
+};
+static int parser_action_row993[] = {
1,
- -1, 1, 458
+ -1, 1, 486
};
-static int parser_action_row989[] = {
+static int parser_action_row994[] = {
+ 5,
+ -1, 1, 30,
+ 6, 0, 1163,
+ 9, 1, 46,
+ 13, 0, 32,
+ 97, 0, 1164
+};
+static int parser_action_row995[] = {
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 1, 487,
+ 95, 0, 3
+};
+static int parser_action_row996[] = {
+ 1,
+ -1, 1, 460
+};
+static int parser_action_row997[] = {
2,
- -1, 1, 460,
+ -1, 1, 462,
58, 0, 214
};
-static int parser_action_row990[] = {
+static int parser_action_row998[] = {
2,
- -1, 3, 989,
- 96, 0, 1161
+ -1, 3, 997,
+ 96, 0, 1171
};
-static int parser_action_row991[] = {
+static int parser_action_row999[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row992[] = {
+static int parser_action_row1000[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row993[] = {
+static int parser_action_row1001[] = {
1,
- -1, 1, 208
+ -1, 1, 210
};
-static int parser_action_row994[] = {
+static int parser_action_row1002[] = {
1,
- -1, 1, 227
+ -1, 1, 229
};
-static int parser_action_row995[] = {
+static int parser_action_row1003[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row996[] = {
+static int parser_action_row1004[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row997[] = {
+static int parser_action_row1005[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row998[] = {
+static int parser_action_row1006[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row999[] = {
+static int parser_action_row1007[] = {
1,
- -1, 1, 192
+ -1, 1, 194
};
-static int parser_action_row1000[] = {
+static int parser_action_row1008[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1001[] = {
+static int parser_action_row1009[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1002[] = {
+static int parser_action_row1010[] = {
13,
- -1, 1, 330,
- 59, 0, 1170,
+ -1, 1, 334,
+ 59, 0, 1180,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1003[] = {
+static int parser_action_row1011[] = {
1,
- -1, 1, 182
+ -1, 1, 184
};
-static int parser_action_row1004[] = {
+static int parser_action_row1012[] = {
1,
- -1, 1, 194
+ -1, 1, 196
};
-static int parser_action_row1005[] = {
+static int parser_action_row1013[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1006[] = {
+static int parser_action_row1014[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1007[] = {
+static int parser_action_row1015[] = {
13,
- -1, 1, 334,
- 59, 0, 1174,
+ -1, 1, 338,
+ 59, 0, 1184,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1008[] = {
+static int parser_action_row1016[] = {
1,
- -1, 1, 184
+ -1, 1, 186
};
-static int parser_action_row1009[] = {
+static int parser_action_row1017[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1010[] = {
+static int parser_action_row1018[] = {
39,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 333,
- 59, 0, 1177,
+ 54, 1, 337,
+ 59, 0, 1187,
60, 0, 217,
61, 0, 218,
62, 0, 219,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 333,
+ 73, 1, 337,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1011[] = {
+static int parser_action_row1019[] = {
1,
- -1, 1, 437
+ -1, 1, 439
};
-static int parser_action_row1012[] = {
+static int parser_action_row1020[] = {
1,
- -1, 1, 219
+ -1, 1, 221
};
-static int parser_action_row1013[] = {
+static int parser_action_row1021[] = {
1,
- -1, 1, 238
+ -1, 1, 240
};
-static int parser_action_row1014[] = {
+static int parser_action_row1022[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1015[] = {
+static int parser_action_row1023[] = {
3,
- -1, 1, 769,
+ -1, 1, 771,
52, 0, 277,
58, 0, 215
};
-static int parser_action_row1016[] = {
+static int parser_action_row1024[] = {
2,
- -1, 3, 1015,
- 97, 0, 1183
+ -1, 3, 1023,
+ 97, 0, 1193
};
-static int parser_action_row1017[] = {
+static int parser_action_row1025[] = {
3,
- -1, 3, 1016,
+ -1, 3, 1024,
96, 0, 53,
- 97, 0, 1184
+ 97, 0, 1194
};
-static int parser_action_row1018[] = {
+static int parser_action_row1026[] = {
3,
- -1, 1, 740,
- 54, 1, 743,
- 73, 1, 743
+ -1, 1, 742,
+ 54, 1, 745,
+ 73, 1, 745
};
-static int parser_action_row1019[] = {
+static int parser_action_row1027[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1020[] = {
+static int parser_action_row1028[] = {
1,
- -1, 1, 1083
+ -1, 1, 1085
};
-static int parser_action_row1021[] = {
+static int parser_action_row1029[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1022[] = {
+static int parser_action_row1030[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1023[] = {
+static int parser_action_row1031[] = {
1,
- -1, 1, 747
+ -1, 1, 749
};
-static int parser_action_row1024[] = {
+static int parser_action_row1032[] = {
1,
- -1, 1, 751
+ -1, 1, 753
};
-static int parser_action_row1025[] = {
+static int parser_action_row1033[] = {
2,
- -1, 1, 750,
+ -1, 1, 752,
52, 0, 277
};
-static int parser_action_row1026[] = {
+static int parser_action_row1034[] = {
1,
- -1, 1, 204
+ -1, 1, 206
};
-static int parser_action_row1027[] = {
+static int parser_action_row1035[] = {
2,
- -1, 1, 191,
- 24, 1, 922
+ -1, 1, 193,
+ 24, 1, 924
};
-static int parser_action_row1028[] = {
+static int parser_action_row1036[] = {
3,
- -1, 1, 156,
- 24, 1, 894,
- 49, 1, 979
+ -1, 1, 158,
+ 24, 1, 896,
+ 49, 1, 981
};
-static int parser_action_row1029[] = {
+static int parser_action_row1037[] = {
31,
- -1, 1, 456,
- 9, 0, 1190,
+ -1, 1, 458,
+ 9, 0, 1200,
12, 0, 31,
15, 0, 33,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1030[] = {
+static int parser_action_row1038[] = {
1,
- -1, 1, 931
+ -1, 1, 933
};
-static int parser_action_row1031[] = {
+static int parser_action_row1039[] = {
1,
- -1, 1, 895
+ -1, 1, 897
};
-static int parser_action_row1032[] = {
+static int parser_action_row1040[] = {
2,
- -1, 3, 1031,
+ -1, 3, 1039,
49, 0, 197
};
-static int parser_action_row1033[] = {
+static int parser_action_row1041[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1034[] = {
+static int parser_action_row1042[] = {
1,
-1, 1, 261
};
-static int parser_action_row1035[] = {
+static int parser_action_row1043[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1036[] = {
+static int parser_action_row1044[] = {
1,
- -1, 1, 934
+ -1, 1, 936
};
-static int parser_action_row1037[] = {
+static int parser_action_row1045[] = {
2,
- -1, 3, 1036,
+ -1, 3, 1044,
49, 0, 197
};
-static int parser_action_row1038[] = {
+static int parser_action_row1046[] = {
3,
- -1, 3, 1037,
+ -1, 3, 1045,
52, 0, 340,
97, 0, 341
};
-static int parser_action_row1039[] = {
+static int parser_action_row1047[] = {
2,
- -1, 1, 168,
- 24, 1, 899
+ -1, 1, 170,
+ 24, 1, 901
};
-static int parser_action_row1040[] = {
+static int parser_action_row1048[] = {
2,
- -1, 1, 173,
- 24, 1, 904
+ -1, 1, 175,
+ 24, 1, 906
};
-static int parser_action_row1041[] = {
+static int parser_action_row1049[] = {
2,
- -1, 1, 170,
- 24, 1, 901
+ -1, 1, 172,
+ 24, 1, 903
};
-static int parser_action_row1042[] = {
+static int parser_action_row1050[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1043[] = {
+static int parser_action_row1051[] = {
2,
- -1, 1, 276,
- 24, 0, 1198
+ -1, 1, 280,
+ 24, 0, 1208
};
-static int parser_action_row1044[] = {
+static int parser_action_row1052[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1045[] = {
+static int parser_action_row1053[] = {
3,
- -1, 3, 1044,
+ -1, 3, 1052,
47, 0, 396,
96, 0, 397
};
-static int parser_action_row1046[] = {
+static int parser_action_row1054[] = {
2,
- -1, 1, 185,
- 24, 1, 916
+ -1, 1, 187,
+ 24, 1, 918
};
-static int parser_action_row1047[] = {
+static int parser_action_row1055[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1048[] = {
+static int parser_action_row1056[] = {
27,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 345,
- 73, 1, 345,
+ 54, 1, 349,
+ 73, 1, 349,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1049[] = {
+static int parser_action_row1057[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1050[] = {
+static int parser_action_row1058[] = {
39,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 339,
+ 54, 1, 343,
59, 0, 488,
60, 0, 217,
61, 0, 218,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 339,
+ 73, 1, 343,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1051[] = {
+static int parser_action_row1059[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1060[] = {
3,
- -1, 3, 1050,
+ -1, 3, 1059,
9, 0, 886,
- 24, 0, 890
+ 24, 0, 1216
};
-static int parser_action_row1052[] = {
+static int parser_action_row1061[] = {
4,
- -1, 3, 1051,
+ -1, 3, 1060,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
-static int parser_action_row1053[] = {
+static int parser_action_row1062[] = {
1,
- -1, 1, 260
+ -1, 1, 265
};
-static int parser_action_row1054[] = {
+static int parser_action_row1063[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1055[] = {
+static int parser_action_row1064[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1056[] = {
+static int parser_action_row1065[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 343,
+ 54, 1, 347,
58, 0, 215,
59, 0, 493,
60, 0, 217,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 343,
+ 73, 1, 347,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1057[] = {
+static int parser_action_row1066[] = {
3,
- -1, 1, 454,
- 12, 0, 1210,
- 97, 0, 1211
+ -1, 1, 456,
+ 12, 0, 1222,
+ 97, 0, 1223
};
-static int parser_action_row1058[] = {
+static int parser_action_row1067[] = {
1,
- -1, 1, 265
+ -1, 1, 269
};
-static int parser_action_row1059[] = {
+static int parser_action_row1068[] = {
1,
- -1, 1, 445
+ -1, 1, 447
};
-static int parser_action_row1060[] = {
+static int parser_action_row1069[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1061[] = {
+static int parser_action_row1070[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1062[] = {
+static int parser_action_row1071[] = {
3,
- -1, 1, 323,
- 54, 1, 326,
- 73, 1, 326
+ -1, 1, 327,
+ 54, 1, 330,
+ 73, 1, 330
};
-static int parser_action_row1063[] = {
+static int parser_action_row1072[] = {
1,
- -1, 1, 330
+ -1, 1, 334
};
-static int parser_action_row1064[] = {
+static int parser_action_row1073[] = {
1,
- -1, 1, 334
+ -1, 1, 338
};
-static int parser_action_row1065[] = {
+static int parser_action_row1074[] = {
2,
- -1, 1, 333,
+ -1, 1, 337,
52, 0, 277
};
-static int parser_action_row1066[] = {
+static int parser_action_row1075[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1067[] = {
+static int parser_action_row1076[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1068[] = {
+static int parser_action_row1077[] = {
1,
- -1, 1, 1066
+ -1, 1, 1070
};
-static int parser_action_row1069[] = {
+static int parser_action_row1078[] = {
2,
- -1, 1, 149,
- 56, 0, 1066
+ -1, 1, 151,
+ 56, 0, 1075
};
-static int parser_action_row1070[] = {
+static int parser_action_row1079[] = {
2,
- -1, 3, 1069,
- 55, 0, 1218
+ -1, 3, 1078,
+ 55, 0, 1230
};
-static int parser_action_row1071[] = {
+static int parser_action_row1080[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1072[] = {
+static int parser_action_row1081[] = {
2,
- -1, 1, 795,
+ -1, 1, 797,
94, 0, 594
};
-static int parser_action_row1073[] = {
+static int parser_action_row1082[] = {
1,
- -1, 1, 351
+ -1, 1, 355
};
-static int parser_action_row1074[] = {
+static int parser_action_row1083[] = {
2,
- -1, 1, 354,
+ -1, 1, 358,
52, 0, 277
};
-static int parser_action_row1075[] = {
+static int parser_action_row1084[] = {
3,
- -1, 1, 358,
+ -1, 1, 362,
52, 0, 277,
58, 0, 215
};
-static int parser_action_row1076[] = {
+static int parser_action_row1085[] = {
2,
- -1, 3, 1075,
- 97, 0, 1223
+ -1, 3, 1084,
+ 97, 0, 1235
};
-static int parser_action_row1077[] = {
+static int parser_action_row1086[] = {
13,
- -1, 1, 401,
+ -1, 1, 405,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
- 52, 0, 1224,
+ 52, 0, 1236,
94, 0, 204,
99, 0, 131,
100, 0, 132,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1078[] = {
+static int parser_action_row1087[] = {
1,
- -1, 1, 399
+ -1, 1, 403
};
-static int parser_action_row1079[] = {
+static int parser_action_row1088[] = {
2,
- -1, 1, 28,
+ -1, 1, 30,
13, 0, 32
};
-static int parser_action_row1080[] = {
+static int parser_action_row1089[] = {
1,
- -1, 1, 1077
+ -1, 1, 1081
};
-static int parser_action_row1081[] = {
+static int parser_action_row1090[] = {
54,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
15, 0, 33,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1082[] = {
+static int parser_action_row1091[] = {
1,
- -1, 1, 271
+ -1, 1, 275
};
-static int parser_action_row1083[] = {
+static int parser_action_row1092[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1084[] = {
+static int parser_action_row1093[] = {
1,
- -1, 1, 269
+ -1, 1, 273
};
-static int parser_action_row1085[] = {
+static int parser_action_row1094[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1086[] = {
+static int parser_action_row1095[] = {
2,
- -1, 3, 1085,
- 55, 0, 1233
+ -1, 3, 1094,
+ 55, 0, 1245
};
-static int parser_action_row1087[] = {
+static int parser_action_row1096[] = {
1,
- -1, 1, 998
+ -1, 1, 1000
};
-static int parser_action_row1088[] = {
+static int parser_action_row1097[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1089[] = {
+static int parser_action_row1098[] = {
14,
- -1, 1, 331,
+ -1, 1, 335,
52, 0, 277,
- 59, 0, 1234,
+ 59, 0, 1246,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1090[] = {
+static int parser_action_row1099[] = {
15,
- -1, 1, 335,
+ -1, 1, 339,
52, 0, 277,
58, 0, 215,
- 59, 0, 1235,
+ 59, 0, 1247,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1091[] = {
+static int parser_action_row1100[] = {
22,
- -1, 1, 454,
+ -1, 1, 456,
54, 0, 619,
74, 0, 620,
75, 0, 621,
90, 0, 421,
91, 0, 422,
92, 0, 423,
- 97, 0, 1236
+ 97, 0, 1248
};
-static int parser_action_row1092[] = {
+static int parser_action_row1101[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1093[] = {
+static int parser_action_row1102[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1094[] = {
+static int parser_action_row1103[] = {
2,
- -1, 1, 594,
+ -1, 1, 596,
52, 0, 277
};
-static int parser_action_row1095[] = {
+static int parser_action_row1104[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1096[] = {
+static int parser_action_row1105[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1097[] = {
+static int parser_action_row1106[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1098[] = {
+static int parser_action_row1107[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1099[] = {
+static int parser_action_row1108[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1100[] = {
+static int parser_action_row1109[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1101[] = {
+static int parser_action_row1110[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1102[] = {
+static int parser_action_row1111[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1103[] = {
+static int parser_action_row1112[] = {
16,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1248,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1260,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
52, 0, 51,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1104[] = {
+static int parser_action_row1113[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1105[] = {
+static int parser_action_row1114[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1106[] = {
+static int parser_action_row1115[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1107[] = {
+static int parser_action_row1116[] = {
3,
- -1, 1, 576,
+ -1, 1, 578,
52, 0, 277,
58, 0, 215
};
-static int parser_action_row1108[] = {
+static int parser_action_row1117[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1109[] = {
+static int parser_action_row1118[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1110[] = {
+static int parser_action_row1119[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1111[] = {
+static int parser_action_row1120[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1112[] = {
+static int parser_action_row1121[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1113[] = {
+static int parser_action_row1122[] = {
1,
- -1, 1, 619
+ -1, 1, 621
};
-static int parser_action_row1114[] = {
+static int parser_action_row1123[] = {
1,
- -1, 1, 618
+ -1, 1, 620
};
-static int parser_action_row1115[] = {
+static int parser_action_row1124[] = {
3,
- -1, 3, 1114,
- 41, 0, 1260,
- 98, 0, 1261
+ -1, 3, 1123,
+ 41, 0, 1272,
+ 98, 0, 1273
};
-static int parser_action_row1116[] = {
+static int parser_action_row1125[] = {
2,
- -1, 1, 453,
- 97, 0, 1262
+ -1, 1, 455,
+ 97, 0, 1274
};
-static int parser_action_row1117[] = {
+static int parser_action_row1126[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1118[] = {
+static int parser_action_row1127[] = {
4,
- -1, 1, 524,
- 29, 0, 1264,
- 30, 0, 1265,
- 32, 0, 1266
+ -1, 1, 526,
+ 29, 0, 1276,
+ 30, 0, 1277,
+ 32, 0, 1278
};
-static int parser_action_row1119[] = {
+static int parser_action_row1128[] = {
1,
- -1, 1, 526
+ -1, 1, 528
};
-static int parser_action_row1120[] = {
+static int parser_action_row1129[] = {
1,
- -1, 1, 531
+ -1, 1, 533
};
-static int parser_action_row1121[] = {
+static int parser_action_row1130[] = {
10,
- -1, 1, 533,
- 39, 0, 1267,
- 80, 0, 1268,
- 84, 0, 1269,
- 85, 0, 1270,
- 86, 0, 1271,
- 87, 0, 1272,
- 89, 0, 1273,
- 90, 0, 1274,
- 92, 0, 1275
-};
-static int parser_action_row1122[] = {
- 2,
- -1, 1, 542,
- 81, 0, 1276
+ -1, 1, 535,
+ 39, 0, 1279,
+ 80, 0, 1280,
+ 84, 0, 1281,
+ 85, 0, 1282,
+ 86, 0, 1283,
+ 87, 0, 1284,
+ 89, 0, 1285,
+ 90, 0, 1286,
+ 92, 0, 1287
};
-static int parser_action_row1123[] = {
+static int parser_action_row1131[] = {
2,
-1, 1, 544,
- 82, 0, 1277
+ 81, 0, 1288
};
-static int parser_action_row1124[] = {
- 3,
+static int parser_action_row1132[] = {
+ 2,
-1, 1, 546,
- 88, 0, 1278,
- 91, 0, 1279
+ 82, 0, 1289
};
-static int parser_action_row1125[] = {
+static int parser_action_row1133[] = {
3,
-1, 1, 548,
- 74, 0, 1280,
- 75, 0, 1281
+ 88, 0, 1290,
+ 91, 0, 1291
};
-static int parser_action_row1126[] = {
+static int parser_action_row1134[] = {
+ 3,
+ -1, 1, 550,
+ 74, 0, 1292,
+ 75, 0, 1293
+};
+static int parser_action_row1135[] = {
4,
- -1, 1, 551,
- 76, 0, 1282,
- 78, 0, 1283,
- 79, 0, 1284
+ -1, 1, 553,
+ 76, 0, 1294,
+ 78, 0, 1295,
+ 79, 0, 1296
};
-static int parser_action_row1127[] = {
+static int parser_action_row1136[] = {
1,
- -1, 1, 554
+ -1, 1, 556
};
-static int parser_action_row1128[] = {
+static int parser_action_row1137[] = {
2,
- -1, 1, 558,
- 77, 0, 1285
+ -1, 1, 560,
+ 77, 0, 1297
};
-static int parser_action_row1129[] = {
+static int parser_action_row1138[] = {
1,
- -1, 1, 560
+ -1, 1, 562
};
-static int parser_action_row1130[] = {
+static int parser_action_row1139[] = {
2,
- -1, 1, 565,
- 73, 0, 1286
+ -1, 1, 567,
+ 73, 0, 1298
};
-static int parser_action_row1131[] = {
+static int parser_action_row1140[] = {
1,
- -1, 1, 570
+ -1, 1, 572
};
-static int parser_action_row1132[] = {
+static int parser_action_row1141[] = {
3,
- -1, 1, 455,
+ -1, 1, 457,
96, 0, 53,
- 97, 0, 1287
+ 97, 0, 1299
};
-static int parser_action_row1133[] = {
+static int parser_action_row1142[] = {
1,
- -1, 1, 386
+ -1, 1, 390
};
-static int parser_action_row1134[] = {
+static int parser_action_row1143[] = {
2,
- -1, 1, 451,
+ -1, 1, 453,
58, 0, 215
};
-static int parser_action_row1135[] = {
+static int parser_action_row1144[] = {
2,
- -1, 3, 1134,
- 97, 0, 1289
-};
-static int parser_action_row1136[] = {
- 1,
- -1, 1, 74
+ -1, 3, 1143,
+ 97, 0, 1301
};
-static int parser_action_row1137[] = {
+static int parser_action_row1145[] = {
1,
- -1, 1, 404
+ -1, 1, 76
};
-static int parser_action_row1138[] = {
+static int parser_action_row1146[] = {
4,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
-static int parser_action_row1139[] = {
+static int parser_action_row1147[] = {
1,
-1, 1, 16
};
-static int parser_action_row1140[] = {
+static int parser_action_row1148[] = {
1,
-1, 1, 17
};
-static int parser_action_row1141[] = {
+static int parser_action_row1149[] = {
3,
- -1, 1, 401,
+ -1, 1, 405,
57, 0, 829,
94, 0, 204
};
-static int parser_action_row1142[] = {
+static int parser_action_row1150[] = {
2,
- -1, 3, 1141,
- 53, 0, 1297
+ -1, 3, 1149,
+ 53, 0, 1308
};
-static int parser_action_row1143[] = {
+static int parser_action_row1151[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
- 56, 0, 1298
+ 56, 0, 1309
};
-static int parser_action_row1144[] = {
+static int parser_action_row1152[] = {
1,
- -1, 1, 151
+ -1, 1, 153
};
-static int parser_action_row1145[] = {
+static int parser_action_row1153[] = {
25,
- -1, 3, 1144,
- 41, 0, 1302,
+ -1, 3, 1152,
+ 41, 0, 1313,
47, 0, 396,
54, 0, 640,
74, 0, 641,
96, 0, 424,
97, 0, 660
};
-static int parser_action_row1146[] = {
+static int parser_action_row1154[] = {
4,
- -1, 1, 77,
- 0, 1, 494,
- 1, 1, 494,
- 95, 1, 494
+ -1, 1, 79,
+ 0, 1, 496,
+ 1, 1, 496,
+ 95, 1, 496
};
-static int parser_action_row1147[] = {
+static int parser_action_row1155[] = {
4,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
-static int parser_action_row1148[] = {
+static int parser_action_row1156[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1149[] = {
+static int parser_action_row1157[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1150[] = {
+static int parser_action_row1158[] = {
3,
- -1, 3, 1149,
+ -1, 3, 1157,
28, 0, 84,
109, 0, 85
};
-static int parser_action_row1151[] = {
+static int parser_action_row1159[] = {
1,
- -1, 1, 492
+ -1, 1, 494
};
-static int parser_action_row1152[] = {
+static int parser_action_row1160[] = {
2,
- -1, 3, 1151,
- 96, 0, 1313
+ -1, 1, 39,
+ 96, 0, 1324
};
-static int parser_action_row1153[] = {
- 2,
- -1, 1, 73,
- 9, 1, 43
+static int parser_action_row1161[] = {
+ 1,
+ -1, 1, 26
};
-static int parser_action_row1154[] = {
+static int parser_action_row1162[] = {
+ 1,
+ -1, 1, 47
+};
+static int parser_action_row1163[] = {
2,
- -1, 3, 1153,
- 9, 0, 1315
+ -1, 3, 1162,
+ 9, 0, 1327
};
-static int parser_action_row1155[] = {
+static int parser_action_row1164[] = {
1,
- -1, 1, 1060
+ -1, 1, 1050
};
-static int parser_action_row1156[] = {
- 4,
- -1, 3, 1155,
- 0, 0, 88,
- 1, 0, 89,
- 95, 0, 90
+static int parser_action_row1165[] = {
+ 1,
+ -1, 1, 1049
};
-static int parser_action_row1157[] = {
- 4,
- -1, 1, 483,
- 0, 0, 1,
- 1, 0, 2,
- 95, 0, 3
+static int parser_action_row1166[] = {
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
-static int parser_action_row1158[] = {
+static int parser_action_row1167[] = {
+ 56,
+ -1, 1, 420,
+ 12, 0, 116,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 117,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 118,
+ 33, 0, 1329,
+ 34, 0, 1330,
+ 35, 0, 1331,
+ 36, 0, 1332,
+ 37, 0, 43,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 47, 0, 396,
+ 48, 0, 125,
+ 50, 0, 49,
+ 51, 0, 1333,
+ 52, 0, 1334,
+ 54, 0, 619,
+ 74, 0, 1335,
+ 75, 0, 1336,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 1337,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 1338,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
+};
+static int parser_action_row1168[] = {
1,
- -1, 1, 72
+ -1, 1, 75
};
-static int parser_action_row1159[] = {
+static int parser_action_row1169[] = {
1,
- -1, 1, 484
+ -1, 1, 1063
};
-static int parser_action_row1160[] = {
- 5,
- -1, 1, 28,
- 6, 0, 1318,
- 9, 1, 44,
+static int parser_action_row1170[] = {
+ 4,
+ -1, 1, 30,
+ 6, 0, 1163,
13, 0, 32,
- 97, 0, 1319
+ 97, 0, 1164
};
-static int parser_action_row1161[] = {
- 5,
- -1, 1, 483,
- 0, 0, 1,
- 1, 0, 2,
- 9, 1, 485,
- 95, 0, 3
+static int parser_action_row1171[] = {
+ 1,
+ -1, 1, 44
};
-static int parser_action_row1162[] = {
+static int parser_action_row1172[] = {
1,
- -1, 1, 459
+ -1, 1, 461
};
-static int parser_action_row1163[] = {
+static int parser_action_row1173[] = {
2,
- -1, 3, 1162,
- 45, 0, 1326
+ -1, 3, 1172,
+ 45, 0, 1358
};
-static int parser_action_row1164[] = {
+static int parser_action_row1174[] = {
4,
- -1, 3, 1163,
- 31, 0, 1327,
+ -1, 3, 1173,
+ 31, 0, 1359,
47, 0, 396,
96, 0, 397
};
-static int parser_action_row1165[] = {
+static int parser_action_row1175[] = {
1,
- -1, 1, 207
+ -1, 1, 209
};
-static int parser_action_row1166[] = {
+static int parser_action_row1176[] = {
1,
- -1, 1, 226
+ -1, 1, 228
};
-static int parser_action_row1167[] = {
+static int parser_action_row1177[] = {
1,
- -1, 1, 205
+ -1, 1, 207
};
-static int parser_action_row1168[] = {
+static int parser_action_row1178[] = {
1,
- -1, 1, 224
+ -1, 1, 226
};
-static int parser_action_row1169[] = {
+static int parser_action_row1179[] = {
1,
- -1, 1, 210
+ -1, 1, 212
};
-static int parser_action_row1170[] = {
+static int parser_action_row1180[] = {
1,
- -1, 1, 229
+ -1, 1, 231
};
-static int parser_action_row1171[] = {
+static int parser_action_row1181[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1172[] = {
+static int parser_action_row1182[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1173[] = {
+static int parser_action_row1183[] = {
1,
- -1, 1, 214
+ -1, 1, 216
};
-static int parser_action_row1174[] = {
+static int parser_action_row1184[] = {
1,
- -1, 1, 233
+ -1, 1, 235
};
-static int parser_action_row1175[] = {
+static int parser_action_row1185[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1176[] = {
+static int parser_action_row1186[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1177[] = {
+static int parser_action_row1187[] = {
1,
- -1, 1, 193
+ -1, 1, 195
};
-static int parser_action_row1178[] = {
+static int parser_action_row1188[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1179[] = {
+static int parser_action_row1189[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1180[] = {
+static int parser_action_row1190[] = {
13,
- -1, 1, 332,
- 59, 0, 1335,
+ -1, 1, 336,
+ 59, 0, 1367,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1181[] = {
+static int parser_action_row1191[] = {
1,
- -1, 1, 183
+ -1, 1, 185
};
-static int parser_action_row1182[] = {
+static int parser_action_row1192[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1183[] = {
+static int parser_action_row1193[] = {
1,
- -1, 1, 768
+ -1, 1, 770
};
-static int parser_action_row1184[] = {
+static int parser_action_row1194[] = {
2,
- -1, 1, 771,
+ -1, 1, 773,
52, 0, 277
};
-static int parser_action_row1185[] = {
+static int parser_action_row1195[] = {
3,
- -1, 1, 775,
+ -1, 1, 777,
52, 0, 277,
58, 0, 215
};
-static int parser_action_row1186[] = {
+static int parser_action_row1196[] = {
2,
- -1, 3, 1185,
- 97, 0, 1340
+ -1, 3, 1195,
+ 97, 0, 1372
};
-static int parser_action_row1187[] = {
+static int parser_action_row1197[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1188[] = {
+static int parser_action_row1198[] = {
2,
- -1, 3, 1187,
- 45, 0, 1342
+ -1, 3, 1197,
+ 45, 0, 1374
};
-static int parser_action_row1189[] = {
+static int parser_action_row1199[] = {
4,
- -1, 3, 1188,
- 31, 0, 1343,
+ -1, 3, 1198,
+ 31, 0, 1375,
47, 0, 396,
96, 0, 397
};
-static int parser_action_row1190[] = {
+static int parser_action_row1200[] = {
1,
- -1, 1, 749
+ -1, 1, 751
};
-static int parser_action_row1191[] = {
+static int parser_action_row1201[] = {
3,
- -1, 1, 155,
- 24, 1, 893,
- 49, 1, 978
+ -1, 1, 157,
+ 24, 1, 895,
+ 49, 1, 980
};
-static int parser_action_row1192[] = {
+static int parser_action_row1202[] = {
3,
- -1, 1, 154,
- 24, 1, 892,
- 49, 1, 977
+ -1, 1, 156,
+ 24, 1, 894,
+ 49, 1, 979
};
-static int parser_action_row1193[] = {
+static int parser_action_row1203[] = {
2,
- -1, 1, 254,
- 24, 1, 930
+ -1, 1, 256,
+ 24, 1, 932
};
-static int parser_action_row1194[] = {
+static int parser_action_row1204[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1195[] = {
+static int parser_action_row1205[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1196[] = {
+static int parser_action_row1206[] = {
2,
- -1, 1, 263,
- 24, 1, 933
+ -1, 1, 267,
+ 24, 1, 935
};
-static int parser_action_row1197[] = {
+static int parser_action_row1207[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1198[] = {
+static int parser_action_row1208[] = {
2,
- -1, 1, 277,
- 24, 0, 1348
+ -1, 1, 281,
+ 24, 0, 1380
};
-static int parser_action_row1199[] = {
+static int parser_action_row1209[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
- 9, 0, 1349,
+ 9, 0, 1381,
12, 0, 887,
15, 0, 888,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1200[] = {
+static int parser_action_row1210[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1201[] = {
+static int parser_action_row1211[] = {
2,
- -1, 3, 1200,
- 57, 0, 1353
+ -1, 3, 1210,
+ 57, 0, 1385
};
-static int parser_action_row1202[] = {
+static int parser_action_row1212[] = {
5,
- -1, 1, 456,
- 12, 0, 1354,
+ -1, 1, 458,
+ 12, 0, 1386,
46, 0, 669,
96, 0, 53,
- 97, 0, 1355
+ 97, 0, 1387
};
-static int parser_action_row1203[] = {
+static int parser_action_row1213[] = {
2,
- -1, 1, 189,
- 24, 1, 920
+ -1, 1, 191,
+ 24, 1, 922
};
-static int parser_action_row1204[] = {
+static int parser_action_row1214[] = {
2,
- -1, 1, 195,
- 24, 1, 926
+ -1, 1, 197,
+ 24, 1, 928
};
-static int parser_action_row1205[] = {
+static int parser_action_row1215[] = {
2,
- -1, 1, 186,
- 24, 1, 917
+ -1, 1, 188,
+ 24, 1, 919
};
-static int parser_action_row1206[] = {
+static int parser_action_row1216[] = {
1,
- -1, 1, 258
+ -1, 1, 262
};
-static int parser_action_row1207[] = {
+static int parser_action_row1217[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1218[] = {
+ 1,
+ -1, 1, 263
+};
+static int parser_action_row1219[] = {
4,
- -1, 3, 1206,
+ -1, 3, 1218,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
-static int parser_action_row1208[] = {
+static int parser_action_row1220[] = {
1,
- -1, 1, 256
+ -1, 1, 258
};
-static int parser_action_row1209[] = {
+static int parser_action_row1221[] = {
2,
- -1, 1, 197,
- 24, 1, 928
+ -1, 1, 199,
+ 24, 1, 930
};
-static int parser_action_row1210[] = {
+static int parser_action_row1222[] = {
2,
- -1, 1, 188,
- 24, 1, 919
+ -1, 1, 190,
+ 24, 1, 921
};
-static int parser_action_row1211[] = {
+static int parser_action_row1223[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1212[] = {
+static int parser_action_row1224[] = {
39,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 341,
+ 54, 1, 345,
59, 0, 691,
60, 0, 217,
61, 0, 218,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 341,
+ 73, 1, 345,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1213[] = {
+static int parser_action_row1225[] = {
2,
- -1, 3, 1212,
- 15, 0, 1360
+ -1, 3, 1224,
+ 15, 0, 1393
};
-static int parser_action_row1214[] = {
+static int parser_action_row1226[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1215[] = {
+static int parser_action_row1227[] = {
1,
- -1, 1, 332
+ -1, 1, 336
};
-static int parser_action_row1216[] = {
+static int parser_action_row1228[] = {
2,
- -1, 3, 1215,
- 55, 0, 1362
+ -1, 3, 1227,
+ 55, 0, 1395
};
-static int parser_action_row1217[] = {
+static int parser_action_row1229[] = {
3,
- -1, 3, 1216,
+ -1, 3, 1228,
47, 0, 396,
96, 0, 397
};
-static int parser_action_row1218[] = {
+static int parser_action_row1230[] = {
1,
- -1, 1, 1067
+ -1, 1, 1071
};
-static int parser_action_row1219[] = {
+static int parser_action_row1231[] = {
2,
- -1, 1, 795,
+ -1, 1, 797,
94, 0, 594
};
-static int parser_action_row1220[] = {
+static int parser_action_row1232[] = {
2,
- -1, 3, 1219,
- 53, 0, 1365
+ -1, 3, 1231,
+ 53, 0, 1398
};
-static int parser_action_row1221[] = {
+static int parser_action_row1233[] = {
1,
- -1, 1, 796
+ -1, 1, 798
};
-static int parser_action_row1222[] = {
+static int parser_action_row1234[] = {
1,
- -1, 1, 353
+ -1, 1, 357
};
-static int parser_action_row1223[] = {
+static int parser_action_row1235[] = {
1,
- -1, 1, 357
+ -1, 1, 361
};
-static int parser_action_row1224[] = {
+static int parser_action_row1236[] = {
2,
- -1, 1, 356,
+ -1, 1, 360,
52, 0, 277
};
-static int parser_action_row1225[] = {
+static int parser_action_row1237[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1226[] = {
+static int parser_action_row1238[] = {
1,
- -1, 1, 407
+ -1, 1, 410
};
-static int parser_action_row1227[] = {
+static int parser_action_row1239[] = {
1,
- -1, 1, 409
+ -1, 1, 412
};
-static int parser_action_row1228[] = {
+static int parser_action_row1240[] = {
1,
- -1, 1, 410
+ -1, 1, 413
};
-static int parser_action_row1229[] = {
+static int parser_action_row1241[] = {
1,
- -1, 1, 411
+ -1, 1, 414
};
-static int parser_action_row1230[] = {
+static int parser_action_row1242[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1231[] = {
+static int parser_action_row1243[] = {
2,
- -1, 1, 423,
- 56, 0, 1369
+ -1, 1, 425,
+ 56, 0, 1402
};
-static int parser_action_row1232[] = {
+static int parser_action_row1244[] = {
1,
- -1, 1, 272
+ -1, 1, 276
};
-static int parser_action_row1233[] = {
+static int parser_action_row1245[] = {
2,
- -1, 3, 1232,
- 55, 0, 1372
+ -1, 3, 1244,
+ 55, 0, 1405
};
-static int parser_action_row1234[] = {
+static int parser_action_row1246[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1235[] = {
+static int parser_action_row1247[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1236[] = {
+static int parser_action_row1248[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1237[] = {
+static int parser_action_row1249[] = {
14,
- -1, 1, 333,
+ -1, 1, 337,
52, 0, 277,
- 59, 0, 1374,
+ 59, 0, 1407,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1238[] = {
+static int parser_action_row1250[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 446,
27, 0, 447,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1239[] = {
+static int parser_action_row1251[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1240[] = {
+static int parser_action_row1252[] = {
1,
- -1, 1, 592
+ -1, 1, 594
};
-static int parser_action_row1241[] = {
+static int parser_action_row1253[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1242[] = {
+static int parser_action_row1254[] = {
22,
- -1, 1, 456,
- 12, 0, 1093,
- 31, 0, 1095,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1243[] = {
+static int parser_action_row1255[] = {
3,
- -1, 3, 1242,
- 47, 0, 1380,
- 96, 0, 1381
+ -1, 3, 1254,
+ 47, 0, 1413,
+ 96, 0, 1414
};
-static int parser_action_row1244[] = {
+static int parser_action_row1256[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1245[] = {
+static int parser_action_row1257[] = {
1,
- -1, 1, 609
+ -1, 1, 611
};
-static int parser_action_row1246[] = {
+static int parser_action_row1258[] = {
1,
- -1, 1, 610
+ -1, 1, 612
};
-static int parser_action_row1247[] = {
+static int parser_action_row1259[] = {
1,
- -1, 1, 611
+ -1, 1, 613
};
-static int parser_action_row1248[] = {
+static int parser_action_row1260[] = {
1,
- -1, 1, 612
+ -1, 1, 614
};
-static int parser_action_row1249[] = {
+static int parser_action_row1261[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1250[] = {
+static int parser_action_row1262[] = {
3,
- -1, 3, 1249,
- 41, 0, 1260,
- 98, 0, 1385
+ -1, 3, 1261,
+ 41, 0, 1272,
+ 98, 0, 1418
};
-static int parser_action_row1251[] = {
+static int parser_action_row1263[] = {
2,
- -1, 3, 1250,
- 73, 0, 1386
-};
-static int parser_action_row1252[] = {
- 1,
- -1, 1, 562
+ -1, 3, 1262,
+ 73, 0, 1419
};
-static int parser_action_row1253[] = {
+static int parser_action_row1264[] = {
1,
- -1, 1, 561
+ -1, 1, 564
};
-static int parser_action_row1254[] = {
+static int parser_action_row1265[] = {
1,
-1, 1, 563
};
-static int parser_action_row1255[] = {
+static int parser_action_row1266[] = {
1,
- -1, 1, 574
+ -1, 1, 565
};
-static int parser_action_row1256[] = {
+static int parser_action_row1267[] = {
1,
- -1, 1, 613
+ -1, 1, 576
};
-static int parser_action_row1257[] = {
+static int parser_action_row1268[] = {
1,
- -1, 1, 614
+ -1, 1, 615
};
-static int parser_action_row1258[] = {
+static int parser_action_row1269[] = {
1,
- -1, 1, 615
+ -1, 1, 616
};
-static int parser_action_row1259[] = {
+static int parser_action_row1270[] = {
1,
-1, 1, 617
};
-static int parser_action_row1260[] = {
+static int parser_action_row1271[] = {
1,
- -1, 1, 616
-};
-static int parser_action_row1261[] = {
- 2,
- -1, 1, 590,
- 52, 0, 277
+ -1, 1, 619
};
-static int parser_action_row1262[] = {
+static int parser_action_row1272[] = {
1,
- -1, 1, 572
+ -1, 1, 618
};
-static int parser_action_row1263[] = {
+static int parser_action_row1273[] = {
2,
- -1, 1, 580,
+ -1, 1, 592,
52, 0, 277
};
-static int parser_action_row1264[] = {
+static int parser_action_row1274[] = {
+ 1,
+ -1, 1, 574
+};
+static int parser_action_row1275[] = {
+ 2,
+ -1, 1, 582,
+ 52, 0, 277
+};
+static int parser_action_row1276[] = {
3,
- -1, 3, 1263,
- 54, 0, 1389,
- 55, 0, 1390
+ -1, 3, 1275,
+ 54, 0, 1422,
+ 55, 0, 1423
};
-static int parser_action_row1265[] = {
+static int parser_action_row1277[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1266[] = {
+static int parser_action_row1278[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
- 24, 0, 1392
+ 24, 0, 1425
};
-static int parser_action_row1267[] = {
+static int parser_action_row1279[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1268[] = {
+static int parser_action_row1280[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1269[] = {
+static int parser_action_row1281[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1270[] = {
+static int parser_action_row1282[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1271[] = {
+static int parser_action_row1283[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1272[] = {
+static int parser_action_row1284[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1273[] = {
+static int parser_action_row1285[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1274[] = {
+static int parser_action_row1286[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1275[] = {
+static int parser_action_row1287[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1276[] = {
+static int parser_action_row1288[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1277[] = {
+static int parser_action_row1289[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1278[] = {
+static int parser_action_row1290[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1279[] = {
+static int parser_action_row1291[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1280[] = {
+static int parser_action_row1292[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1281[] = {
+static int parser_action_row1293[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1282[] = {
+static int parser_action_row1294[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1283[] = {
+static int parser_action_row1295[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1284[] = {
+static int parser_action_row1296[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1285[] = {
+static int parser_action_row1297[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1286[] = {
+static int parser_action_row1298[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1287[] = {
+static int parser_action_row1299[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1288[] = {
+static int parser_action_row1300[] = {
3,
- -1, 1, 588,
+ -1, 1, 590,
52, 0, 277,
58, 0, 215
};
-static int parser_action_row1289[] = {
+static int parser_action_row1301[] = {
2,
- -1, 1, 454,
- 97, 0, 1416
+ -1, 1, 456,
+ 97, 0, 1449
};
-static int parser_action_row1290[] = {
+static int parser_action_row1302[] = {
2,
- -1, 1, 452,
+ -1, 1, 454,
58, 0, 215
};
-static int parser_action_row1291[] = {
- 2,
- -1, 3, 1290,
- 9, 0, 1417
-};
-static int parser_action_row1292[] = {
+static int parser_action_row1303[] = {
1,
- -1, 1, 1078
+ -1, 1, 1064
};
-static int parser_action_row1293[] = {
+static int parser_action_row1304[] = {
2,
- -1, 1, 28,
+ -1, 1, 30,
13, 0, 32
};
-static int parser_action_row1294[] = {
- 9,
- -1, 1, 483,
+static int parser_action_row1305[] = {
+ 5,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 4, 1, 412,
- 9, 1, 412,
- 15, 1, 412,
- 28, 1, 412,
- 95, 0, 3,
- 109, 1, 412
+ 9, 0, 1451,
+ 95, 0, 3
};
-static int parser_action_row1295[] = {
+static int parser_action_row1306[] = {
2,
- -1, 1, 116,
- 71, 0, 1420
+ -1, 1, 118,
+ 71, 0, 1453
};
-static int parser_action_row1296[] = {
+static int parser_action_row1307[] = {
2,
- -1, 1, 400,
+ -1, 1, 404,
57, 0, 829
};
-static int parser_action_row1297[] = {
+static int parser_action_row1308[] = {
1,
- -1, 1, 115
+ -1, 1, 117
};
-static int parser_action_row1298[] = {
+static int parser_action_row1309[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
57, 0, 829
};
-static int parser_action_row1299[] = {
+static int parser_action_row1310[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1300[] = {
+static int parser_action_row1311[] = {
1,
- -1, 1, 1062
+ -1, 1, 1066
};
-static int parser_action_row1301[] = {
+static int parser_action_row1312[] = {
1,
- -1, 1, 111
+ -1, 1, 113
};
-static int parser_action_row1302[] = {
+static int parser_action_row1313[] = {
4,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
- 56, 0, 1298
+ 56, 0, 1309
};
-static int parser_action_row1303[] = {
+static int parser_action_row1314[] = {
1,
- -1, 1, 126
+ -1, 1, 128
};
-static int parser_action_row1304[] = {
+static int parser_action_row1315[] = {
2,
- -1, 1, 120,
- 56, 0, 1427
+ -1, 1, 122,
+ 56, 0, 1460
};
-static int parser_action_row1305[] = {
+static int parser_action_row1316[] = {
1,
- -1, 1, 124
+ -1, 1, 126
};
-static int parser_action_row1306[] = {
+static int parser_action_row1317[] = {
1,
- -1, 1, 125
+ -1, 1, 127
};
-static int parser_action_row1307[] = {
+static int parser_action_row1318[] = {
2,
- -1, 1, 129,
- 73, 0, 1430
+ -1, 1, 131,
+ 73, 0, 1463
};
-static int parser_action_row1308[] = {
+static int parser_action_row1319[] = {
1,
- -1, 1, 127
+ -1, 1, 129
};
-static int parser_action_row1309[] = {
- 2,
- -1, 1, 78,
- 9, 0, 1431
+static int parser_action_row1320[] = {
+ 9,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 4, 1, 80,
+ 9, 0, 1464,
+ 15, 1, 80,
+ 28, 1, 80,
+ 95, 0, 3,
+ 109, 1, 80
};
-static int parser_action_row1310[] = {
+static int parser_action_row1321[] = {
1,
- -1, 1, 468
+ -1, 1, 470
};
-static int parser_action_row1311[] = {
+static int parser_action_row1322[] = {
1,
- -1, 1, 489
+ -1, 1, 491
};
-static int parser_action_row1312[] = {
+static int parser_action_row1323[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1313[] = {
+static int parser_action_row1324[] = {
1,
- -1, 1, 493
+ -1, 1, 495
};
-static int parser_action_row1314[] = {
+static int parser_action_row1325[] = {
3,
- -1, 1, 153,
+ -1, 1, 155,
57, 0, 333,
94, 0, 204
};
-static int parser_action_row1315[] = {
- 4,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2,
- 56, 0, 1435
+static int parser_action_row1326[] = {
+ 2,
+ -1, 3, 1325,
+ 55, 0, 1468
};
-static int parser_action_row1316[] = {
- 1,
- -1, 1, 26
+static int parser_action_row1327[] = {
+ 2,
+ -1, 1, 37,
+ 56, 0, 1469
};
-static int parser_action_row1317[] = {
+static int parser_action_row1328[] = {
1,
- -1, 1, 45
+ -1, 1, 27
};
-static int parser_action_row1318[] = {
+static int parser_action_row1329[] = {
+ 7,
+ -1, 3, 1328,
+ 10, 0, 1472,
+ 11, 0, 1473,
+ 12, 0, 1474,
+ 16, 0, 1475,
+ 38, 0, 1476,
+ 41, 0, 1477
+};
+static int parser_action_row1330[] = {
+ 26,
+ -1, 1, 1003,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1331[] = {
2,
- -1, 3, 1317,
- 9, 0, 1439
+ -1, 1, 1008,
+ 49, 0, 197
};
-static int parser_action_row1319[] = {
- 1,
- -1, 1, 1048
+static int parser_action_row1332[] = {
+ 2,
+ -1, 1, 1005,
+ 49, 0, 197
};
-static int parser_action_row1320[] = {
+static int parser_action_row1333[] = {
1,
- -1, 1, 1047
+ -1, 1, 1007
};
-static int parser_action_row1321[] = {
- 5,
- -1, 1, 79,
- 18, 0, 236,
- 19, 0, 237,
- 20, 0, 238,
- 21, 0, 239
+static int parser_action_row1334[] = {
+ 2,
+ -1, 3, 1333,
+ 11, 0, 1481
};
-static int parser_action_row1322[] = {
- 56,
- -1, 1, 418,
- 12, 0, 116,
- 15, 0, 33,
- 16, 0, 34,
- 22, 0, 117,
- 25, 0, 36,
- 26, 0, 37,
- 27, 0, 38,
- 31, 0, 118,
- 33, 0, 1441,
- 34, 0, 1442,
- 35, 0, 1443,
- 36, 0, 1444,
- 37, 0, 43,
- 38, 0, 119,
- 40, 0, 120,
- 41, 1, 456,
- 42, 0, 121,
- 43, 0, 122,
- 44, 0, 123,
- 45, 0, 124,
- 47, 0, 396,
- 48, 0, 125,
- 50, 0, 49,
- 51, 0, 1445,
- 52, 0, 1446,
+static int parser_action_row1335[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1336[] = {
+ 24,
+ -1, 1, 498,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1337[] = {
+ 24,
+ -1, 1, 499,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1338[] = {
+ 24,
+ -1, 1, 507,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1339[] = {
+ 15,
+ -1, 1, 756,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1483,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1340[] = {
+ 1,
+ -1, 1, 802
+};
+static int parser_action_row1341[] = {
+ 1,
+ -1, 1, 1001
+};
+static int parser_action_row1342[] = {
+ 1,
+ -1, 1, 1010
+};
+static int parser_action_row1343[] = {
+ 1,
+ -1, 1, 1012
+};
+static int parser_action_row1344[] = {
+ 1,
+ -1, 1, 1011
+};
+static int parser_action_row1345[] = {
+ 1,
+ -1, 1, 1013
+};
+static int parser_action_row1346[] = {
+ 1,
+ -1, 1, 1014
+};
+static int parser_action_row1347[] = {
+ 1,
+ -1, 1, 1015
+};
+static int parser_action_row1348[] = {
+ 1,
+ -1, 1, 421
+};
+static int parser_action_row1349[] = {
+ 3,
+ -1, 3, 1348,
+ 41, 0, 300,
+ 98, 0, 1486
+};
+static int parser_action_row1350[] = {
+ 22,
+ -1, 1, 455,
54, 0, 619,
- 74, 0, 1447,
- 75, 0, 1448,
+ 74, 0, 620,
+ 75, 0, 621,
76, 0, 407,
77, 0, 408,
78, 0, 409,
80, 0, 411,
81, 0, 412,
82, 0, 413,
- 83, 0, 1449,
+ 83, 0, 622,
84, 0, 415,
85, 0, 416,
86, 0, 417,
90, 0, 421,
91, 0, 422,
92, 0, 423,
- 94, 0, 204,
- 96, 0, 424,
- 97, 0, 1450,
- 98, 1, 456,
- 99, 0, 131,
- 100, 0, 132,
- 101, 0, 133,
- 102, 0, 134,
- 103, 0, 59,
- 106, 0, 135
+ 97, 0, 1487
};
-static int parser_action_row1323[] = {
+static int parser_action_row1351[] = {
1,
- -1, 1, 73
+ -1, 1, 806
};
-static int parser_action_row1324[] = {
+static int parser_action_row1352[] = {
1,
- -1, 1, 1061
+ -1, 1, 1002
};
-static int parser_action_row1325[] = {
- 4,
- -1, 1, 28,
- 6, 0, 1318,
- 13, 0, 32,
- 97, 0, 1319
+static int parser_action_row1353[] = {
+ 1,
+ -1, 1, 803
};
-static int parser_action_row1326[] = {
+static int parser_action_row1354[] = {
+ 3,
+ -1, 1, 739,
+ 54, 0, 244,
+ 73, 0, 1488
+};
+static int parser_action_row1355[] = {
1,
- -1, 1, 42
+ -1, 1, 424
};
-static int parser_action_row1327[] = {
+static int parser_action_row1356[] = {
+ 2,
+ -1, 1, 800,
+ 56, 0, 1402
+};
+static int parser_action_row1357[] = {
1,
- -1, 1, 361
+ -1, 1, 804
};
-static int parser_action_row1328[] = {
+static int parser_action_row1358[] = {
+ 23,
+ -1, 1, 457,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 96, 0, 53,
+ 97, 0, 1491
+};
+static int parser_action_row1359[] = {
+ 1,
+ -1, 1, 365
+};
+static int parser_action_row1360[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1329[] = {
+static int parser_action_row1361[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1330[] = {
+static int parser_action_row1362[] = {
1,
- -1, 1, 209
+ -1, 1, 211
};
-static int parser_action_row1331[] = {
+static int parser_action_row1363[] = {
1,
- -1, 1, 228
+ -1, 1, 230
};
-static int parser_action_row1332[] = {
+static int parser_action_row1364[] = {
1,
- -1, 1, 213
+ -1, 1, 215
};
-static int parser_action_row1333[] = {
+static int parser_action_row1365[] = {
1,
- -1, 1, 232
+ -1, 1, 234
};
-static int parser_action_row1334[] = {
+static int parser_action_row1366[] = {
1,
- -1, 1, 212
+ -1, 1, 214
};
-static int parser_action_row1335[] = {
+static int parser_action_row1367[] = {
1,
- -1, 1, 231
+ -1, 1, 233
};
-static int parser_action_row1336[] = {
+static int parser_action_row1368[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1337[] = {
+static int parser_action_row1369[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1338[] = {
+static int parser_action_row1370[] = {
2,
- -1, 3, 1337,
- 24, 0, 1474
+ -1, 3, 1369,
+ 24, 0, 1497
};
-static int parser_action_row1339[] = {
+static int parser_action_row1371[] = {
1,
- -1, 1, 770
+ -1, 1, 772
};
-static int parser_action_row1340[] = {
+static int parser_action_row1372[] = {
1,
- -1, 1, 774
+ -1, 1, 776
};
-static int parser_action_row1341[] = {
+static int parser_action_row1373[] = {
2,
- -1, 1, 773,
+ -1, 1, 775,
52, 0, 277
};
-static int parser_action_row1342[] = {
+static int parser_action_row1374[] = {
1,
- -1, 1, 444
+ -1, 1, 446
};
-static int parser_action_row1343[] = {
+static int parser_action_row1375[] = {
1,
- -1, 1, 778
+ -1, 1, 780
};
-static int parser_action_row1344[] = {
+static int parser_action_row1376[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1345[] = {
+static int parser_action_row1377[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1346[] = {
+static int parser_action_row1378[] = {
2,
- -1, 3, 1345,
- 23, 0, 1478
+ -1, 3, 1377,
+ 23, 0, 1501
};
-static int parser_action_row1347[] = {
+static int parser_action_row1379[] = {
2,
- -1, 3, 1346,
- 15, 0, 1479
+ -1, 3, 1378,
+ 15, 0, 1502
};
-static int parser_action_row1348[] = {
+static int parser_action_row1380[] = {
2,
- -1, 3, 1347,
- 28, 0, 1480
+ -1, 3, 1379,
+ 28, 0, 1503
};
-static int parser_action_row1349[] = {
+static int parser_action_row1381[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
- 9, 0, 1349,
+ 9, 0, 1381,
12, 0, 887,
15, 0, 888,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1350[] = {
+static int parser_action_row1382[] = {
2,
- -1, 1, 156,
- 24, 1, 894
+ -1, 1, 158,
+ 24, 1, 896
};
-static int parser_action_row1351[] = {
+static int parser_action_row1383[] = {
31,
- -1, 1, 456,
- 9, 0, 1482,
+ -1, 1, 458,
+ 9, 0, 1505,
12, 0, 31,
15, 0, 33,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1352[] = {
+static int parser_action_row1384[] = {
1,
- -1, 1, 941
+ -1, 1, 943
};
-static int parser_action_row1353[] = {
+static int parser_action_row1385[] = {
2,
- -1, 3, 1352,
- 15, 0, 1484
+ -1, 3, 1384,
+ 15, 0, 1507
};
-static int parser_action_row1354[] = {
+static int parser_action_row1386[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1355[] = {
+static int parser_action_row1387[] = {
27,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 347,
- 73, 1, 347,
+ 54, 1, 351,
+ 73, 1, 351,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1356[] = {
+static int parser_action_row1388[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 329,
+ 54, 1, 333,
58, 0, 215,
59, 0, 846,
60, 0, 217,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 329,
+ 73, 1, 333,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1357[] = {
+static int parser_action_row1389[] = {
3,
- -1, 1, 453,
- 12, 0, 1488,
- 97, 0, 1489
+ -1, 1, 455,
+ 12, 0, 1511,
+ 97, 0, 1512
};
-static int parser_action_row1358[] = {
+static int parser_action_row1390[] = {
4,
- -1, 1, 455,
- 12, 0, 1490,
+ -1, 1, 457,
+ 12, 0, 1513,
96, 0, 53,
- 97, 0, 1491
+ 97, 0, 1514
};
-static int parser_action_row1359[] = {
+static int parser_action_row1391[] = {
+ 1,
+ -1, 1, 260
+};
+static int parser_action_row1392[] = {
2,
- -1, 1, 196,
- 24, 1, 927
+ -1, 1, 198,
+ 24, 1, 929
};
-static int parser_action_row1360[] = {
+static int parser_action_row1393[] = {
2,
- -1, 1, 187,
- 24, 1, 918
+ -1, 1, 189,
+ 24, 1, 920
};
-static int parser_action_row1361[] = {
+static int parser_action_row1394[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 157,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1362[] = {
+static int parser_action_row1395[] = {
2,
- -1, 3, 1361,
- 24, 0, 1495
+ -1, 3, 1394,
+ 24, 0, 1518
};
-static int parser_action_row1363[] = {
+static int parser_action_row1396[] = {
2,
- -1, 1, 795,
+ -1, 1, 797,
94, 0, 594
};
-static int parser_action_row1364[] = {
+static int parser_action_row1397[] = {
1,
- -1, 1, 150
+ -1, 1, 152
};
-static int parser_action_row1365[] = {
+static int parser_action_row1398[] = {
1,
- -1, 1, 622
+ -1, 1, 624
};
-static int parser_action_row1366[] = {
+static int parser_action_row1399[] = {
1,
- -1, 1, 793
+ -1, 1, 795
};
-static int parser_action_row1367[] = {
+static int parser_action_row1400[] = {
1,
- -1, 1, 355
+ -1, 1, 359
};
-static int parser_action_row1368[] = {
+static int parser_action_row1401[] = {
54,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
15, 0, 33,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1369[] = {
+static int parser_action_row1402[] = {
2,
- -1, 3, 1368,
- 53, 0, 1498
+ -1, 3, 1401,
+ 53, 0, 1521
};
-static int parser_action_row1370[] = {
+static int parser_action_row1403[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1371[] = {
+static int parser_action_row1404[] = {
1,
- -1, 1, 1080
+ -1, 1, 1082
};
-static int parser_action_row1372[] = {
+static int parser_action_row1405[] = {
2,
- -1, 1, 424,
- 56, 0, 1369
+ -1, 1, 426,
+ 56, 0, 1402
};
-static int parser_action_row1373[] = {
+static int parser_action_row1406[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1374[] = {
+static int parser_action_row1407[] = {
1,
- -1, 1, 146
+ -1, 1, 148
};
-static int parser_action_row1375[] = {
+static int parser_action_row1408[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1376[] = {
+static int parser_action_row1409[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1377[] = {
+static int parser_action_row1410[] = {
1,
- -1, 1, 388
+ -1, 1, 392
};
-static int parser_action_row1378[] = {
+static int parser_action_row1411[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1379[] = {
+static int parser_action_row1412[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1380[] = {
+static int parser_action_row1413[] = {
1,
- -1, 1, 532
+ -1, 1, 534
};
-static int parser_action_row1381[] = {
+static int parser_action_row1414[] = {
2,
- -1, 3, 1380,
- 96, 0, 1505
+ -1, 3, 1413,
+ 96, 0, 1528
};
-static int parser_action_row1382[] = {
+static int parser_action_row1415[] = {
2,
- -1, 1, 795,
+ -1, 1, 797,
94, 0, 594
};
-static int parser_action_row1383[] = {
+static int parser_action_row1416[] = {
3,
- -1, 1, 567,
+ -1, 1, 569,
52, 0, 277,
- 73, 0, 1507
+ 73, 0, 1530
};
-static int parser_action_row1384[] = {
+static int parser_action_row1417[] = {
1,
- -1, 1, 564
+ -1, 1, 566
};
-static int parser_action_row1385[] = {
+static int parser_action_row1418[] = {
3,
- -1, 3, 1384,
- 47, 0, 1380,
- 96, 0, 1381
+ -1, 3, 1417,
+ 47, 0, 1413,
+ 96, 0, 1414
};
-static int parser_action_row1386[] = {
+static int parser_action_row1419[] = {
2,
- -1, 1, 569,
- 73, 1, 572
+ -1, 1, 571,
+ 73, 1, 574
};
-static int parser_action_row1387[] = {
+static int parser_action_row1420[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1388[] = {
+static int parser_action_row1421[] = {
1,
- -1, 1, 589
+ -1, 1, 591
};
-static int parser_action_row1389[] = {
+static int parser_action_row1422[] = {
1,
- -1, 1, 578
+ -1, 1, 580
};
-static int parser_action_row1390[] = {
+static int parser_action_row1423[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1391[] = {
+static int parser_action_row1424[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1392[] = {
+static int parser_action_row1425[] = {
22,
- -1, 1, 456,
- 12, 0, 1093,
- 31, 0, 1095,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1393[] = {
+static int parser_action_row1426[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1394[] = {
+static int parser_action_row1427[] = {
22,
- -1, 1, 456,
- 12, 0, 1093,
- 31, 0, 1095,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1395[] = {
+static int parser_action_row1428[] = {
22,
- -1, 1, 456,
- 12, 0, 1093,
- 31, 0, 1095,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1396[] = {
+static int parser_action_row1429[] = {
3,
- -1, 3, 1395,
- 47, 0, 1517,
- 96, 0, 1518
+ -1, 3, 1428,
+ 47, 0, 1540,
+ 96, 0, 1541
};
-static int parser_action_row1397[] = {
+static int parser_action_row1430[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1398[] = {
+static int parser_action_row1431[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1399[] = {
+static int parser_action_row1432[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1400[] = {
+static int parser_action_row1433[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1401[] = {
+static int parser_action_row1434[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1402[] = {
+static int parser_action_row1435[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1403[] = {
+static int parser_action_row1436[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1404[] = {
+static int parser_action_row1437[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1405[] = {
+static int parser_action_row1438[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1406[] = {
+static int parser_action_row1439[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1407[] = {
+static int parser_action_row1440[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1408[] = {
+static int parser_action_row1441[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1409[] = {
+static int parser_action_row1442[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1410[] = {
+static int parser_action_row1443[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1411[] = {
+static int parser_action_row1444[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1412[] = {
+static int parser_action_row1445[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1413[] = {
+static int parser_action_row1446[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1414[] = {
+static int parser_action_row1447[] = {
21,
- -1, 1, 456,
- 12, 0, 1093,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1415[] = {
+static int parser_action_row1448[] = {
5,
- -1, 1, 456,
- 12, 0, 1538,
- 46, 0, 1539,
+ -1, 1, 458,
+ 12, 0, 1561,
+ 46, 0, 1562,
96, 0, 53,
- 97, 0, 1540
+ 97, 0, 1563
};
-static int parser_action_row1416[] = {
+static int parser_action_row1449[] = {
1,
- -1, 1, 586
+ -1, 1, 588
};
-static int parser_action_row1417[] = {
+static int parser_action_row1450[] = {
2,
- -1, 1, 584,
+ -1, 1, 586,
52, 0, 277
};
-static int parser_action_row1418[] = {
- 1,
- -1, 1, 75
-};
-static int parser_action_row1419[] = {
+static int parser_action_row1451[] = {
5,
- -1, 1, 79,
+ -1, 1, 81,
18, 0, 236,
19, 0, 237,
20, 0, 238,
21, 0, 239
};
-static int parser_action_row1420[] = {
+static int parser_action_row1452[] = {
1,
- -1, 1, 1079
+ -1, 1, 77
};
-static int parser_action_row1421[] = {
+static int parser_action_row1453[] = {
1,
- -1, 1, 118
+ -1, 1, 1065
};
-static int parser_action_row1422[] = {
- 2,
- -1, 1, 117,
- 71, 0, 1546
+static int parser_action_row1454[] = {
+ 1,
+ -1, 1, 120
};
-static int parser_action_row1423[] = {
+static int parser_action_row1455[] = {
+ 2,
+ -1, 1, 119,
+ 71, 0, 1569
+};
+static int parser_action_row1456[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1424[] = {
+static int parser_action_row1457[] = {
1,
- -1, 1, 108
+ -1, 1, 110
};
-static int parser_action_row1425[] = {
+static int parser_action_row1458[] = {
2,
- -1, 3, 1424,
- 97, 0, 1140
+ -1, 3, 1457,
+ 97, 0, 1148
};
-static int parser_action_row1426[] = {
+static int parser_action_row1459[] = {
1,
- -1, 1, 1063
+ -1, 1, 1067
};
-static int parser_action_row1427[] = {
+static int parser_action_row1460[] = {
1,
- -1, 1, 112
+ -1, 1, 114
};
-static int parser_action_row1428[] = {
+static int parser_action_row1461[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1429[] = {
+static int parser_action_row1462[] = {
1,
- -1, 1, 1064
+ -1, 1, 1068
};
-static int parser_action_row1430[] = {
+static int parser_action_row1463[] = {
2,
- -1, 1, 121,
- 56, 0, 1427
+ -1, 1, 123,
+ 56, 0, 1460
};
-static int parser_action_row1431[] = {
+static int parser_action_row1464[] = {
24,
- -1, 3, 1430,
- 46, 0, 1551,
+ -1, 3, 1463,
+ 46, 0, 1574,
54, 0, 640,
74, 0, 641,
75, 0, 642,
96, 0, 53,
97, 0, 660
};
-static int parser_action_row1432[] = {
+static int parser_action_row1465[] = {
1,
- -1, 1, 495
+ -1, 1, 497
};
-static int parser_action_row1433[] = {
+static int parser_action_row1466[] = {
1,
- -1, 1, 490
+ -1, 1, 492
};
-static int parser_action_row1434[] = {
- 1,
- -1, 1, 39
+static int parser_action_row1467[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1435[] = {
+static int parser_action_row1468[] = {
2,
- -1, 1, 153,
+ -1, 1, 155,
57, 0, 333
};
-static int parser_action_row1436[] = {
- 3,
+static int parser_action_row1469[] = {
+ 6,
-1, 1, 485,
0, 0, 1,
+ 1, 0, 2,
+ 28, 0, 84,
+ 95, 0, 3,
+ 109, 0, 85
+};
+static int parser_action_row1470[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
1, 0, 2
};
-static int parser_action_row1437[] = {
+static int parser_action_row1471[] = {
1,
- -1, 1, 1058
+ -1, 1, 1060
};
-static int parser_action_row1438[] = {
+static int parser_action_row1472[] = {
2,
- -1, 3, 1437,
- 55, 0, 1555
+ -1, 1, 38,
+ 56, 0, 1469
};
-static int parser_action_row1439[] = {
- 4,
- -1, 1, 485,
+static int parser_action_row1473[] = {
+ 23,
+ -1, 3, 1472,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
+};
+static int parser_action_row1474[] = {
+ 2,
+ -1, 3, 1473,
+ 96, 0, 1583
+};
+static int parser_action_row1475[] = {
+ 27,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
- 56, 0, 1435
+ 52, 0, 828,
+ 54, 0, 640,
+ 57, 0, 829,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
};
-static int parser_action_row1440[] = {
+static int parser_action_row1476[] = {
+ 2,
+ -1, 3, 1475,
+ 97, 0, 1586
+};
+static int parser_action_row1477[] = {
+ 27,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 52, 0, 828,
+ 54, 0, 640,
+ 57, 0, 829,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
+};
+static int parser_action_row1478[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1479[] = {
1,
- -1, 1, 27
+ -1, 1, 1004
};
-static int parser_action_row1441[] = {
- 7,
- -1, 3, 1440,
- 10, 0, 1558,
- 11, 0, 1559,
- 12, 0, 1560,
- 16, 0, 1561,
- 38, 0, 1562,
- 41, 0, 1563
+static int parser_action_row1480[] = {
+ 1,
+ -1, 1, 1009
};
-static int parser_action_row1442[] = {
- 26,
- -1, 1, 1001,
+static int parser_action_row1481[] = {
+ 1,
+ -1, 1, 1006
+};
+static int parser_action_row1482[] = {
+ 3,
+ -1, 3, 1481,
+ 47, 0, 396,
+ 96, 0, 397
+};
+static int parser_action_row1483[] = {
+ 54,
+ -1, 1, 458,
12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
42, 0, 45,
43, 0, 46,
44, 0, 47,
45, 0, 48,
+ 47, 0, 396,
48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
52, 0, 51,
- 54, 0, 52,
- 74, 0, 176,
- 75, 0, 177,
- 83, 0, 178,
- 96, 0, 53,
- 97, 0, 179,
- 98, 1, 456,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1443[] = {
- 2,
- -1, 1, 1006,
- 49, 0, 197
-};
-static int parser_action_row1444[] = {
- 2,
- -1, 1, 1003,
- 49, 0, 197
-};
-static int parser_action_row1445[] = {
- 1,
- -1, 1, 1005
-};
-static int parser_action_row1446[] = {
- 2,
- -1, 3, 1445,
- 11, 0, 1567
-};
-static int parser_action_row1447[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1448[] = {
- 24,
- -1, 1, 496,
+static int parser_action_row1484[] = {
+ 26,
+ -1, 1, 518,
12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1449[] = {
+static int parser_action_row1485[] = {
24,
- -1, 1, 497,
+ -1, 1, 458,
12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1450[] = {
- 24,
- -1, 1, 505,
- 12, 0, 170,
- 38, 0, 173,
- 40, 0, 174,
- 41, 1, 456,
- 42, 0, 45,
- 43, 0, 46,
- 44, 0, 47,
- 45, 0, 48,
- 48, 0, 175,
- 52, 0, 51,
- 54, 0, 52,
- 74, 0, 176,
- 75, 0, 177,
- 83, 0, 178,
- 96, 0, 53,
- 97, 0, 179,
- 98, 1, 456,
- 99, 0, 55,
- 100, 0, 56,
- 101, 0, 57,
- 102, 0, 58,
- 103, 0, 59,
- 106, 0, 60
-};
-static int parser_action_row1451[] = {
- 15,
- -1, 1, 754,
- 52, 0, 277,
- 58, 0, 215,
- 59, 0, 1569,
+static int parser_action_row1486[] = {
+ 13,
+ -1, 1, 755,
+ 59, 0, 1594,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1452[] = {
- 1,
- -1, 1, 800
-};
-static int parser_action_row1453[] = {
- 1,
- -1, 1, 999
-};
-static int parser_action_row1454[] = {
- 1,
- -1, 1, 1008
-};
-static int parser_action_row1455[] = {
- 1,
- -1, 1, 1010
-};
-static int parser_action_row1456[] = {
- 1,
- -1, 1, 1009
-};
-static int parser_action_row1457[] = {
- 1,
- -1, 1, 1011
-};
-static int parser_action_row1458[] = {
- 1,
- -1, 1, 1012
-};
-static int parser_action_row1459[] = {
- 1,
- -1, 1, 1013
-};
-static int parser_action_row1460[] = {
- 1,
- -1, 1, 419
-};
-static int parser_action_row1461[] = {
- 3,
- -1, 3, 1460,
- 41, 0, 300,
- 98, 0, 1572
-};
-static int parser_action_row1462[] = {
- 22,
- -1, 1, 453,
- 54, 0, 619,
- 74, 0, 620,
- 75, 0, 621,
- 76, 0, 407,
- 77, 0, 408,
- 78, 0, 409,
- 79, 0, 410,
- 80, 0, 411,
- 81, 0, 412,
- 82, 0, 413,
- 83, 0, 622,
- 84, 0, 415,
- 85, 0, 416,
- 86, 0, 417,
- 87, 0, 418,
- 88, 0, 419,
- 89, 0, 420,
- 90, 0, 421,
- 91, 0, 422,
- 92, 0, 423,
- 97, 0, 1573
-};
-static int parser_action_row1463[] = {
- 1,
- -1, 1, 804
-};
-static int parser_action_row1464[] = {
- 1,
- -1, 1, 1000
+static int parser_action_row1487[] = {
+ 13,
+ -1, 1, 746,
+ 59, 0, 1596,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
-static int parser_action_row1465[] = {
- 1,
- -1, 1, 801
+static int parser_action_row1488[] = {
+ 14,
+ -1, 1, 758,
+ 52, 0, 277,
+ 59, 0, 1598,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
-static int parser_action_row1466[] = {
+static int parser_action_row1489[] = {
3,
- -1, 1, 737,
- 54, 0, 244,
- 73, 0, 1574
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1467[] = {
- 1,
- -1, 1, 422
+static int parser_action_row1490[] = {
+ 13,
+ -1, 1, 769,
+ 59, 0, 1602,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
-static int parser_action_row1468[] = {
+static int parser_action_row1491[] = {
2,
- -1, 1, 798,
- 56, 0, 1369
+ -1, 1, 801,
+ 56, 0, 1402
};
-static int parser_action_row1469[] = {
- 1,
- -1, 1, 802
+static int parser_action_row1492[] = {
+ 15,
+ -1, 1, 762,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1604,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
-static int parser_action_row1470[] = {
- 23,
- -1, 1, 455,
+static int parser_action_row1493[] = {
+ 22,
+ -1, 1, 456,
54, 0, 619,
74, 0, 620,
75, 0, 621,
90, 0, 421,
91, 0, 422,
92, 0, 423,
- 96, 0, 53,
- 97, 0, 1577
+ 97, 0, 1607
};
-static int parser_action_row1471[] = {
+static int parser_action_row1494[] = {
2,
- -1, 3, 1470,
- 45, 0, 1579
+ -1, 3, 1493,
+ 45, 0, 1608
};
-static int parser_action_row1472[] = {
+static int parser_action_row1495[] = {
2,
- -1, 3, 1471,
- 53, 0, 1580
+ -1, 3, 1494,
+ 53, 0, 1609
};
-static int parser_action_row1473[] = {
+static int parser_action_row1496[] = {
1,
- -1, 1, 211
+ -1, 1, 213
};
-static int parser_action_row1474[] = {
+static int parser_action_row1497[] = {
1,
- -1, 1, 230
+ -1, 1, 232
};
-static int parser_action_row1475[] = {
+static int parser_action_row1498[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1476[] = {
+static int parser_action_row1499[] = {
1,
- -1, 1, 772
+ -1, 1, 774
};
-static int parser_action_row1477[] = {
+static int parser_action_row1500[] = {
2,
- -1, 3, 1476,
- 45, 0, 1582
+ -1, 3, 1499,
+ 45, 0, 1611
};
-static int parser_action_row1478[] = {
+static int parser_action_row1501[] = {
2,
- -1, 3, 1477,
- 53, 0, 1583
+ -1, 3, 1500,
+ 53, 0, 1612
};
-static int parser_action_row1479[] = {
+static int parser_action_row1502[] = {
35,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 886,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1480[] = {
+static int parser_action_row1503[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
- 9, 0, 1027,
+ 9, 0, 1035,
12, 0, 887,
15, 0, 888,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1481[] = {
+static int parser_action_row1504[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1482[] = {
+static int parser_action_row1505[] = {
1,
- -1, 1, 942
+ -1, 1, 944
};
-static int parser_action_row1483[] = {
+static int parser_action_row1506[] = {
2,
- -1, 1, 155,
- 24, 1, 893
+ -1, 1, 157,
+ 24, 1, 895
};
-static int parser_action_row1484[] = {
+static int parser_action_row1507[] = {
2,
- -1, 1, 154,
- 24, 1, 892
+ -1, 1, 156,
+ 24, 1, 894
};
-static int parser_action_row1485[] = {
+static int parser_action_row1508[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
- 9, 0, 1027,
+ 9, 0, 1035,
12, 0, 887,
15, 0, 888,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1486[] = {
+static int parser_action_row1509[] = {
2,
- -1, 1, 198,
- 24, 1, 929
+ -1, 1, 200,
+ 24, 1, 931
};
-static int parser_action_row1487[] = {
+static int parser_action_row1510[] = {
2,
- -1, 1, 190,
- 24, 1, 921
+ -1, 1, 192,
+ 24, 1, 923
};
-static int parser_action_row1488[] = {
+static int parser_action_row1511[] = {
2,
- -1, 1, 181,
- 24, 1, 912
+ -1, 1, 183,
+ 24, 1, 914
};
-static int parser_action_row1489[] = {
+static int parser_action_row1512[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1490[] = {
+static int parser_action_row1513[] = {
39,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 331,
- 59, 0, 999,
+ 54, 1, 335,
+ 59, 0, 1007,
60, 0, 217,
61, 0, 218,
62, 0, 219,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 331,
+ 73, 1, 335,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1491[] = {
+static int parser_action_row1514[] = {
25,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1492[] = {
+static int parser_action_row1515[] = {
40,
- -1, 1, 440,
+ -1, 1, 442,
12, 0, 116,
22, 0, 117,
31, 0, 118,
38, 0, 119,
40, 0, 120,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 121,
43, 0, 122,
44, 0, 123,
45, 0, 124,
48, 0, 125,
52, 0, 126,
- 54, 1, 335,
+ 54, 1, 339,
58, 0, 215,
- 59, 0, 1004,
+ 59, 0, 1012,
60, 0, 217,
61, 0, 218,
62, 0, 219,
68, 0, 225,
69, 0, 226,
70, 0, 227,
- 73, 1, 335,
+ 73, 1, 339,
74, 0, 127,
75, 0, 128,
83, 0, 129,
96, 0, 53,
97, 0, 130,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 131,
100, 0, 132,
101, 0, 133,
103, 0, 59,
106, 0, 135
};
-static int parser_action_row1493[] = {
+static int parser_action_row1516[] = {
3,
- -1, 1, 454,
- 12, 0, 1594,
- 97, 0, 1595
+ -1, 1, 456,
+ 12, 0, 1623,
+ 97, 0, 1624
};
-static int parser_action_row1494[] = {
+static int parser_action_row1517[] = {
1,
- -1, 1, 268
+ -1, 1, 272
};
-static int parser_action_row1495[] = {
+static int parser_action_row1518[] = {
2,
- -1, 3, 1494,
+ -1, 3, 1517,
49, 0, 197
};
-static int parser_action_row1496[] = {
+static int parser_action_row1519[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1497[] = {
+static int parser_action_row1520[] = {
1,
- -1, 1, 623
+ -1, 1, 625
};
-static int parser_action_row1498[] = {
+static int parser_action_row1521[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1499[] = {
+static int parser_action_row1522[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1500[] = {
+static int parser_action_row1523[] = {
54,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
15, 0, 33,
16, 0, 34,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1501[] = {
+static int parser_action_row1524[] = {
1,
- -1, 1, 1081
+ -1, 1, 1083
};
-static int parser_action_row1502[] = {
+static int parser_action_row1525[] = {
1,
- -1, 1, 147
+ -1, 1, 149
};
-static int parser_action_row1503[] = {
+static int parser_action_row1526[] = {
2,
- -1, 1, 386,
- 24, 0, 1495
+ -1, 1, 390,
+ 24, 0, 1518
};
-static int parser_action_row1504[] = {
+static int parser_action_row1527[] = {
2,
- -1, 3, 1503,
- 15, 0, 1601
+ -1, 3, 1526,
+ 15, 0, 1630
};
-static int parser_action_row1505[] = {
+static int parser_action_row1528[] = {
2,
- -1, 3, 1504,
- 23, 0, 1602
+ -1, 3, 1527,
+ 23, 0, 1631
};
-static int parser_action_row1506[] = {
+static int parser_action_row1529[] = {
2,
- -1, 1, 795,
+ -1, 1, 797,
94, 0, 594
};
-static int parser_action_row1507[] = {
+static int parser_action_row1530[] = {
1,
- -1, 1, 805
+ -1, 1, 807
};
-static int parser_action_row1508[] = {
+static int parser_action_row1531[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1509[] = {
+static int parser_action_row1532[] = {
1,
- -1, 1, 566
+ -1, 1, 568
};
-static int parser_action_row1510[] = {
+static int parser_action_row1533[] = {
2,
- -1, 3, 1509,
- 73, 0, 1507
+ -1, 3, 1532,
+ 73, 0, 1530
};
-static int parser_action_row1511[] = {
+static int parser_action_row1534[] = {
5,
- -1, 1, 456,
- 12, 0, 1538,
- 46, 0, 1539,
+ -1, 1, 458,
+ 12, 0, 1561,
+ 46, 0, 1562,
96, 0, 53,
- 97, 0, 1540
+ 97, 0, 1563
};
-static int parser_action_row1512[] = {
+static int parser_action_row1535[] = {
1,
- -1, 1, 377
+ -1, 1, 381
};
-static int parser_action_row1513[] = {
+static int parser_action_row1536[] = {
1,
- -1, 1, 376
+ -1, 1, 380
};
-static int parser_action_row1514[] = {
+static int parser_action_row1537[] = {
1,
- -1, 1, 528
+ -1, 1, 530
};
-static int parser_action_row1515[] = {
+static int parser_action_row1538[] = {
22,
- -1, 1, 456,
- 12, 0, 1093,
- 31, 0, 1095,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
103, 0, 59,
- 106, 0, 1111
+ 106, 0, 1120
};
-static int parser_action_row1516[] = {
+static int parser_action_row1539[] = {
1,
- -1, 1, 527
+ -1, 1, 529
};
-static int parser_action_row1517[] = {
+static int parser_action_row1540[] = {
1,
- -1, 1, 530
+ -1, 1, 532
};
-static int parser_action_row1518[] = {
+static int parser_action_row1541[] = {
2,
- -1, 3, 1517,
- 96, 0, 1607
+ -1, 3, 1540,
+ 96, 0, 1636
};
-static int parser_action_row1519[] = {
+static int parser_action_row1542[] = {
2,
- -1, 1, 401,
+ -1, 1, 405,
94, 0, 204
};
-static int parser_action_row1520[] = {
+static int parser_action_row1543[] = {
1,
- -1, 1, 541
+ -1, 1, 543
};
-static int parser_action_row1521[] = {
- 2,
- -1, 1, 543,
- 81, 0, 1276
-};
-static int parser_action_row1522[] = {
- 2,
- -1, 1, 534,
- 80, 0, 1268
-};
-static int parser_action_row1523[] = {
+static int parser_action_row1544[] = {
2,
- -1, 1, 535,
- 80, 0, 1268
+ -1, 1, 545,
+ 81, 0, 1288
};
-static int parser_action_row1524[] = {
+static int parser_action_row1545[] = {
2,
-1, 1, 536,
- 80, 0, 1268
+ 80, 0, 1280
};
-static int parser_action_row1525[] = {
+static int parser_action_row1546[] = {
2,
-1, 1, 537,
- 80, 0, 1268
+ 80, 0, 1280
};
-static int parser_action_row1526[] = {
+static int parser_action_row1547[] = {
2,
-1, 1, 538,
- 80, 0, 1268
+ 80, 0, 1280
};
-static int parser_action_row1527[] = {
+static int parser_action_row1548[] = {
2,
-1, 1, 539,
- 80, 0, 1268
+ 80, 0, 1280
};
-static int parser_action_row1528[] = {
+static int parser_action_row1549[] = {
2,
-1, 1, 540,
- 80, 0, 1268
+ 80, 0, 1280
};
-static int parser_action_row1529[] = {
+static int parser_action_row1550[] = {
2,
- -1, 1, 545,
- 82, 0, 1277
+ -1, 1, 541,
+ 80, 0, 1280
};
-static int parser_action_row1530[] = {
- 3,
+static int parser_action_row1551[] = {
+ 2,
+ -1, 1, 542,
+ 80, 0, 1280
+};
+static int parser_action_row1552[] = {
+ 2,
-1, 1, 547,
- 88, 0, 1278,
- 91, 0, 1279
+ 82, 0, 1289
};
-static int parser_action_row1531[] = {
+static int parser_action_row1553[] = {
3,
-1, 1, 549,
- 74, 0, 1280,
- 75, 0, 1281
+ 88, 0, 1290,
+ 91, 0, 1291
};
-static int parser_action_row1532[] = {
+static int parser_action_row1554[] = {
3,
- -1, 1, 550,
- 74, 0, 1280,
- 75, 0, 1281
+ -1, 1, 551,
+ 74, 0, 1292,
+ 75, 0, 1293
};
-static int parser_action_row1533[] = {
- 4,
+static int parser_action_row1555[] = {
+ 3,
-1, 1, 552,
- 76, 0, 1282,
- 78, 0, 1283,
- 79, 0, 1284
+ 74, 0, 1292,
+ 75, 0, 1293
};
-static int parser_action_row1534[] = {
+static int parser_action_row1556[] = {
4,
- -1, 1, 553,
- 76, 0, 1282,
- 78, 0, 1283,
- 79, 0, 1284
+ -1, 1, 554,
+ 76, 0, 1294,
+ 78, 0, 1295,
+ 79, 0, 1296
};
-static int parser_action_row1535[] = {
- 1,
- -1, 1, 555
+static int parser_action_row1557[] = {
+ 4,
+ -1, 1, 555,
+ 76, 0, 1294,
+ 78, 0, 1295,
+ 79, 0, 1296
};
-static int parser_action_row1536[] = {
+static int parser_action_row1558[] = {
1,
- -1, 1, 556
+ -1, 1, 557
};
-static int parser_action_row1537[] = {
+static int parser_action_row1559[] = {
1,
- -1, 1, 557
+ -1, 1, 558
};
-static int parser_action_row1538[] = {
+static int parser_action_row1560[] = {
1,
-1, 1, 559
};
-static int parser_action_row1539[] = {
+static int parser_action_row1561[] = {
+ 1,
+ -1, 1, 561
+};
+static int parser_action_row1562[] = {
2,
- -1, 1, 593,
+ -1, 1, 595,
52, 0, 277
};
-static int parser_action_row1540[] = {
+static int parser_action_row1563[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1541[] = {
+static int parser_action_row1564[] = {
3,
- -1, 1, 575,
+ -1, 1, 577,
52, 0, 277,
58, 0, 215
};
-static int parser_action_row1542[] = {
+static int parser_action_row1565[] = {
2,
- -1, 3, 1541,
- 98, 0, 1612
+ -1, 3, 1564,
+ 98, 0, 1641
};
-static int parser_action_row1543[] = {
+static int parser_action_row1566[] = {
2,
- -1, 1, 453,
- 97, 0, 1613
+ -1, 1, 455,
+ 97, 0, 1642
};
-static int parser_action_row1544[] = {
+static int parser_action_row1567[] = {
3,
- -1, 1, 455,
+ -1, 1, 457,
96, 0, 53,
- 97, 0, 1614
+ 97, 0, 1643
};
-static int parser_action_row1545[] = {
+static int parser_action_row1568[] = {
1,
- -1, 1, 582
+ -1, 1, 584
};
-static int parser_action_row1546[] = {
+static int parser_action_row1569[] = {
4,
- -1, 3, 1545,
+ -1, 3, 1568,
6, 0, 792,
17, 0, 793,
97, 0, 794
};
-static int parser_action_row1547[] = {
+static int parser_action_row1570[] = {
1,
- -1, 1, 119
+ -1, 1, 121
};
-static int parser_action_row1548[] = {
+static int parser_action_row1571[] = {
1,
- -1, 1, 107
+ -1, 1, 109
};
-static int parser_action_row1549[] = {
+static int parser_action_row1572[] = {
1,
- -1, 1, 114
+ -1, 1, 116
};
-static int parser_action_row1550[] = {
+static int parser_action_row1573[] = {
25,
- -1, 3, 1549,
- 41, 0, 1302,
+ -1, 3, 1572,
+ 41, 0, 1313,
47, 0, 396,
54, 0, 640,
74, 0, 641,
96, 0, 424,
97, 0, 660
};
-static int parser_action_row1551[] = {
+static int parser_action_row1574[] = {
1,
- -1, 1, 1065
+ -1, 1, 1069
};
-static int parser_action_row1552[] = {
+static int parser_action_row1575[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1553[] = {
- 1,
- -1, 1, 128
-};
-static int parser_action_row1554[] = {
+static int parser_action_row1576[] = {
1,
- -1, 1, 40
-};
-static int parser_action_row1555[] = {
- 2,
- -1, 3, 1554,
- 96, 0, 1313
+ -1, 1, 130
};
-static int parser_action_row1556[] = {
+static int parser_action_row1577[] = {
1,
- -1, 1, 35
+ -1, 1, 41
};
-static int parser_action_row1557[] = {
- 1,
- -1, 1, 1059
+static int parser_action_row1578[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1558[] = {
+static int parser_action_row1579[] = {
2,
- -1, 3, 1557,
- 55, 0, 1620
+ -1, 3, 1578,
+ 9, 0, 1649
};
-static int parser_action_row1559[] = {
- 23,
- -1, 3, 1558,
- 54, 0, 640,
- 74, 0, 641,
- 75, 0, 642,
- 76, 0, 643,
- 77, 0, 644,
- 78, 0, 645,
- 79, 0, 646,
- 80, 0, 647,
- 81, 0, 648,
- 82, 0, 649,
- 83, 0, 650,
- 84, 0, 651,
- 85, 0, 652,
- 86, 0, 653,
- 87, 0, 654,
- 88, 0, 655,
- 89, 0, 656,
- 90, 0, 657,
- 91, 0, 658,
- 92, 0, 659,
- 96, 0, 53,
- 97, 0, 660
+static int parser_action_row1580[] = {
+ 4,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
-static int parser_action_row1560[] = {
+static int parser_action_row1581[] = {
2,
- -1, 3, 1559,
- 96, 0, 1622
+ -1, 3, 1580,
+ 96, 0, 1324
};
-static int parser_action_row1561[] = {
- 27,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 828,
- 54, 0, 640,
- 57, 0, 829,
- 74, 0, 641,
- 75, 0, 642,
- 76, 0, 643,
- 77, 0, 644,
- 78, 0, 645,
- 79, 0, 646,
- 80, 0, 647,
- 81, 0, 648,
- 82, 0, 649,
- 83, 0, 650,
- 84, 0, 651,
- 85, 0, 652,
- 86, 0, 653,
- 87, 0, 654,
- 88, 0, 655,
- 89, 0, 656,
- 90, 0, 657,
- 91, 0, 658,
- 92, 0, 659,
- 96, 0, 53,
- 97, 0, 660
-};
-static int parser_action_row1562[] = {
- 2,
- -1, 3, 1561,
- 97, 0, 1625
-};
-static int parser_action_row1563[] = {
- 27,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 828,
- 54, 0, 640,
- 57, 0, 829,
- 74, 0, 641,
- 75, 0, 642,
- 76, 0, 643,
- 77, 0, 644,
- 78, 0, 645,
- 79, 0, 646,
- 80, 0, 647,
- 81, 0, 648,
- 82, 0, 649,
- 83, 0, 650,
- 84, 0, 651,
- 85, 0, 652,
- 86, 0, 653,
- 87, 0, 654,
- 88, 0, 655,
- 89, 0, 656,
- 90, 0, 657,
- 91, 0, 658,
- 92, 0, 659,
- 96, 0, 53,
- 97, 0, 660
-};
-static int parser_action_row1564[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1565[] = {
- 1,
- -1, 1, 1002
-};
-static int parser_action_row1566[] = {
- 1,
- -1, 1, 1007
-};
-static int parser_action_row1567[] = {
- 1,
- -1, 1, 1004
-};
-static int parser_action_row1568[] = {
- 3,
- -1, 3, 1567,
- 47, 0, 396,
- 96, 0, 397
-};
-static int parser_action_row1569[] = {
- 54,
- -1, 1, 456,
- 12, 0, 170,
- 15, 0, 33,
- 16, 0, 34,
- 22, 0, 171,
- 25, 0, 36,
- 26, 0, 37,
- 27, 0, 38,
- 31, 0, 172,
- 33, 0, 399,
- 34, 0, 400,
- 35, 0, 401,
- 36, 0, 402,
- 37, 0, 43,
- 38, 0, 173,
- 40, 0, 174,
- 42, 0, 45,
- 43, 0, 46,
- 44, 0, 47,
- 45, 0, 48,
- 47, 0, 396,
- 48, 0, 175,
- 50, 0, 49,
- 51, 0, 403,
- 52, 0, 51,
- 54, 0, 404,
- 74, 0, 405,
- 75, 0, 406,
- 76, 0, 407,
- 77, 0, 408,
- 78, 0, 409,
- 79, 0, 410,
- 80, 0, 411,
- 81, 0, 412,
- 82, 0, 413,
- 83, 0, 414,
- 84, 0, 415,
- 85, 0, 416,
- 86, 0, 417,
- 87, 0, 418,
- 88, 0, 419,
- 89, 0, 420,
- 90, 0, 421,
- 91, 0, 422,
- 92, 0, 423,
- 94, 0, 204,
- 96, 0, 424,
- 97, 0, 425,
- 99, 0, 55,
- 100, 0, 56,
- 101, 0, 57,
- 102, 0, 58,
- 103, 0, 59,
- 106, 0, 60
-};
-static int parser_action_row1570[] = {
- 26,
- -1, 1, 516,
- 12, 0, 170,
- 22, 0, 171,
- 31, 0, 172,
- 38, 0, 173,
- 40, 0, 174,
- 41, 1, 456,
- 42, 0, 45,
- 43, 0, 46,
- 44, 0, 47,
- 45, 0, 48,
- 48, 0, 175,
- 52, 0, 51,
- 54, 0, 52,
- 74, 0, 176,
- 75, 0, 177,
- 83, 0, 178,
- 96, 0, 53,
- 97, 0, 179,
- 98, 1, 456,
- 99, 0, 55,
- 100, 0, 56,
- 101, 0, 57,
- 102, 0, 58,
- 103, 0, 59,
- 106, 0, 60
-};
-static int parser_action_row1571[] = {
- 24,
- -1, 1, 456,
- 12, 0, 170,
- 22, 0, 171,
- 31, 0, 172,
- 38, 0, 173,
- 40, 0, 174,
- 42, 0, 45,
- 43, 0, 46,
- 44, 0, 47,
- 45, 0, 48,
- 48, 0, 175,
- 52, 0, 51,
- 54, 0, 52,
- 74, 0, 176,
- 75, 0, 177,
- 83, 0, 178,
- 96, 0, 53,
- 97, 0, 179,
- 99, 0, 55,
- 100, 0, 56,
- 101, 0, 57,
- 102, 0, 58,
- 103, 0, 59,
- 106, 0, 60
-};
-static int parser_action_row1572[] = {
- 13,
- -1, 1, 753,
- 59, 0, 1633,
- 60, 0, 217,
- 61, 0, 218,
- 62, 0, 219,
- 63, 0, 220,
- 64, 0, 221,
- 65, 0, 222,
- 66, 0, 223,
- 67, 0, 224,
- 68, 0, 225,
- 69, 0, 226,
- 70, 0, 227
-};
-static int parser_action_row1573[] = {
- 13,
- -1, 1, 744,
- 59, 0, 1635,
- 60, 0, 217,
- 61, 0, 218,
- 62, 0, 219,
- 63, 0, 220,
- 64, 0, 221,
- 65, 0, 222,
- 66, 0, 223,
- 67, 0, 224,
- 68, 0, 225,
- 69, 0, 226,
- 70, 0, 227
-};
-static int parser_action_row1574[] = {
- 14,
- -1, 1, 756,
- 52, 0, 277,
- 59, 0, 1637,
- 60, 0, 217,
- 61, 0, 218,
- 62, 0, 219,
- 63, 0, 220,
- 64, 0, 221,
- 65, 0, 222,
- 66, 0, 223,
- 67, 0, 224,
- 68, 0, 225,
- 69, 0, 226,
- 70, 0, 227
-};
-static int parser_action_row1575[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1576[] = {
- 13,
- -1, 1, 767,
- 59, 0, 1641,
- 60, 0, 217,
- 61, 0, 218,
- 62, 0, 219,
- 63, 0, 220,
- 64, 0, 221,
- 65, 0, 222,
- 66, 0, 223,
- 67, 0, 224,
- 68, 0, 225,
- 69, 0, 226,
- 70, 0, 227
-};
-static int parser_action_row1577[] = {
- 2,
- -1, 1, 799,
- 56, 0, 1369
-};
-static int parser_action_row1578[] = {
- 15,
- -1, 1, 760,
- 52, 0, 277,
- 58, 0, 215,
- 59, 0, 1643,
- 60, 0, 217,
- 61, 0, 218,
- 62, 0, 219,
- 63, 0, 220,
- 64, 0, 221,
- 65, 0, 222,
- 66, 0, 223,
- 67, 0, 224,
- 68, 0, 225,
- 69, 0, 226,
- 70, 0, 227
-};
-static int parser_action_row1579[] = {
- 22,
- -1, 1, 454,
- 54, 0, 619,
- 74, 0, 620,
- 75, 0, 621,
- 76, 0, 407,
- 77, 0, 408,
- 78, 0, 409,
- 79, 0, 410,
- 80, 0, 411,
- 81, 0, 412,
- 82, 0, 413,
- 83, 0, 622,
- 84, 0, 415,
- 85, 0, 416,
- 86, 0, 417,
- 87, 0, 418,
- 88, 0, 419,
- 89, 0, 420,
- 90, 0, 421,
- 91, 0, 422,
- 92, 0, 423,
- 97, 0, 1646
-};
-static int parser_action_row1580[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1581[] = {
- 1,
- -1, 1, 359
-};
-static int parser_action_row1582[] = {
- 22,
- -1, 1, 456,
- 12, 0, 116,
- 22, 0, 117,
- 31, 0, 118,
- 38, 0, 119,
- 40, 0, 120,
- 42, 0, 121,
- 43, 0, 122,
- 44, 0, 123,
- 45, 0, 124,
- 48, 0, 125,
- 74, 0, 127,
- 75, 0, 128,
- 83, 0, 129,
- 96, 0, 53,
- 97, 0, 130,
- 99, 0, 131,
- 100, 0, 132,
- 101, 0, 133,
- 102, 0, 134,
- 103, 0, 59,
- 106, 0, 135
-};
-static int parser_action_row1583[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1584[] = {
- 1,
- -1, 1, 776
-};
-static int parser_action_row1585[] = {
- 2,
- -1, 3, 1584,
- 24, 0, 1650
-};
-static int parser_action_row1586[] = {
- 1,
- -1, 1, 936
-};
-static int parser_action_row1587[] = {
- 2,
- -1, 3, 1586,
- 49, 0, 197
-};
-static int parser_action_row1588[] = {
- 24,
- -1, 1, 456,
- 12, 0, 170,
- 22, 0, 171,
- 31, 0, 172,
- 38, 0, 173,
- 40, 0, 174,
- 42, 0, 45,
- 43, 0, 46,
- 44, 0, 47,
- 45, 0, 48,
- 48, 0, 175,
- 52, 0, 51,
- 54, 0, 52,
- 74, 0, 176,
- 75, 0, 177,
- 83, 0, 178,
- 96, 0, 53,
- 97, 0, 179,
- 99, 0, 55,
- 100, 0, 56,
- 101, 0, 57,
- 102, 0, 58,
- 103, 0, 59,
- 106, 0, 60
-};
-static int parser_action_row1589[] = {
- 1,
- -1, 1, 940
-};
-static int parser_action_row1590[] = {
- 2,
- -1, 3, 1589,
- 49, 0, 197
-};
-static int parser_action_row1591[] = {
- 2,
- -1, 1, 192,
- 24, 1, 923
-};
-static int parser_action_row1592[] = {
- 2,
- -1, 1, 182,
- 24, 1, 913
-};
-static int parser_action_row1593[] = {
- 2,
- -1, 1, 194,
- 24, 1, 925
-};
-static int parser_action_row1594[] = {
- 2,
- -1, 1, 184,
- 24, 1, 915
-};
-static int parser_action_row1595[] = {
- 25,
- -1, 1, 440,
- 12, 0, 116,
- 22, 0, 117,
- 31, 0, 118,
- 38, 0, 119,
- 40, 0, 120,
- 41, 1, 456,
- 42, 0, 121,
- 43, 0, 122,
- 44, 0, 123,
- 45, 0, 124,
- 48, 0, 125,
- 52, 0, 486,
- 74, 0, 127,
- 75, 0, 128,
- 83, 0, 129,
- 96, 0, 53,
- 97, 0, 130,
- 98, 1, 456,
- 99, 0, 131,
- 100, 0, 132,
- 101, 0, 133,
- 102, 0, 134,
- 103, 0, 59,
- 106, 0, 135
-};
-static int parser_action_row1596[] = {
- 39,
- -1, 1, 440,
- 12, 0, 116,
- 22, 0, 117,
- 31, 0, 118,
- 38, 0, 119,
- 40, 0, 120,
- 41, 1, 456,
- 42, 0, 121,
- 43, 0, 122,
- 44, 0, 123,
- 45, 0, 124,
- 48, 0, 125,
- 52, 0, 126,
- 54, 1, 333,
- 59, 0, 1177,
- 60, 0, 217,
- 61, 0, 218,
- 62, 0, 219,
- 63, 0, 220,
- 64, 0, 221,
- 65, 0, 222,
- 66, 0, 223,
- 67, 0, 224,
- 68, 0, 225,
- 69, 0, 226,
- 70, 0, 227,
- 73, 1, 333,
- 74, 0, 127,
- 75, 0, 128,
- 83, 0, 129,
- 96, 0, 53,
- 97, 0, 130,
- 98, 1, 456,
- 99, 0, 131,
- 100, 0, 132,
- 101, 0, 133,
- 102, 0, 134,
- 103, 0, 59,
- 106, 0, 135
-};
-static int parser_action_row1597[] = {
- 1,
- -1, 1, 267
-};
-static int parser_action_row1598[] = {
- 24,
- -1, 1, 456,
- 12, 0, 170,
- 22, 0, 171,
- 31, 0, 172,
- 38, 0, 173,
- 40, 0, 174,
- 42, 0, 45,
- 43, 0, 46,
- 44, 0, 47,
- 45, 0, 48,
- 48, 0, 175,
- 52, 0, 51,
- 54, 0, 52,
- 74, 0, 176,
- 75, 0, 177,
- 83, 0, 178,
- 96, 0, 53,
- 97, 0, 179,
- 99, 0, 55,
- 100, 0, 56,
- 101, 0, 57,
- 102, 0, 58,
- 103, 0, 59,
- 106, 0, 60
-};
-static int parser_action_row1599[] = {
- 2,
- -1, 3, 1598,
- 53, 0, 1657
-};
-static int parser_action_row1600[] = {
- 1,
- -1, 1, 403
-};
-static int parser_action_row1601[] = {
- 1,
- -1, 1, 425
-};
-static int parser_action_row1602[] = {
- 25,
- -1, 1, 456,
- 12, 0, 170,
- 22, 0, 446,
- 27, 0, 447,
- 31, 0, 172,
- 38, 0, 173,
- 40, 0, 174,
- 42, 0, 45,
- 43, 0, 46,
- 44, 0, 47,
- 45, 0, 48,
- 48, 0, 175,
- 52, 0, 51,
- 54, 0, 52,
- 74, 0, 176,
- 75, 0, 177,
- 83, 0, 178,
- 96, 0, 53,
- 97, 0, 179,
- 99, 0, 55,
- 100, 0, 56,
- 101, 0, 57,
- 102, 0, 58,
- 103, 0, 59,
- 106, 0, 60
-};
-static int parser_action_row1603[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1604[] = {
- 1,
- -1, 1, 806
-};
-static int parser_action_row1605[] = {
- 3,
- -1, 3, 1604,
- 96, 0, 53,
- 97, 0, 1660
-};
-static int parser_action_row1606[] = {
- 2,
- -1, 3, 1605,
- 98, 0, 1663
-};
-static int parser_action_row1607[] = {
- 1,
- -1, 1, 529
-};
-static int parser_action_row1608[] = {
- 2,
- -1, 1, 401,
- 94, 0, 204
-};
-static int parser_action_row1609[] = {
- 1,
- -1, 1, 522
-};
-static int parser_action_row1610[] = {
- 1,
- -1, 1, 591
-};
-static int parser_action_row1611[] = {
- 3,
- -1, 3, 1610,
- 31, 0, 1665,
- 52, 0, 1666
-};
-static int parser_action_row1612[] = {
- 1,
- -1, 1, 573
-};
-static int parser_action_row1613[] = {
- 1,
- -1, 1, 571
-};
-static int parser_action_row1614[] = {
- 2,
- -1, 1, 579,
- 52, 0, 277
-};
-static int parser_action_row1615[] = {
- 3,
- -1, 1, 587,
- 52, 0, 277,
- 58, 0, 215
-};
-static int parser_action_row1616[] = {
- 2,
- -1, 1, 454,
- 97, 0, 1669
-};
-static int parser_action_row1617[] = {
- 57,
- -1, 1, 456,
- 0, 0, 88,
- 1, 0, 89,
- 12, 0, 116,
- 15, 0, 33,
- 16, 0, 34,
- 22, 0, 117,
- 25, 0, 36,
- 26, 0, 37,
- 27, 0, 38,
- 31, 0, 118,
- 33, 0, 1441,
- 34, 0, 1442,
- 35, 0, 1443,
- 36, 0, 1444,
- 37, 0, 43,
- 38, 0, 119,
- 40, 0, 120,
- 42, 0, 121,
- 43, 0, 122,
- 44, 0, 123,
- 45, 0, 124,
- 47, 0, 396,
- 48, 0, 125,
- 50, 0, 49,
- 51, 0, 1445,
- 52, 0, 1670,
- 54, 0, 619,
- 74, 0, 1447,
- 75, 0, 1448,
- 76, 0, 407,
- 77, 0, 408,
- 78, 0, 409,
- 79, 0, 410,
- 80, 0, 411,
- 81, 0, 412,
- 82, 0, 413,
- 83, 0, 1449,
- 84, 0, 415,
- 85, 0, 416,
- 86, 0, 417,
- 87, 0, 418,
- 88, 0, 419,
- 89, 0, 420,
- 90, 0, 421,
- 91, 0, 422,
- 92, 0, 423,
- 94, 0, 204,
- 95, 0, 90,
- 96, 0, 424,
- 97, 0, 1450,
- 99, 0, 131,
- 100, 0, 132,
- 101, 0, 133,
- 102, 0, 134,
- 103, 0, 59,
- 106, 0, 135
-};
-static int parser_action_row1618[] = {
- 1,
- -1, 1, 123
-};
-static int parser_action_row1619[] = {
- 5,
- -1, 3, 1618,
- 31, 0, 1674,
- 47, 0, 1675,
- 52, 0, 1676,
- 96, 0, 397
-};
-static int parser_action_row1620[] = {
- 1,
- -1, 1, 38
-};
-static int parser_action_row1621[] = {
- 1,
- -1, 1, 36
-};
-static int parser_action_row1622[] = {
- 5,
- -1, 1, 485,
+static int parser_action_row1582[] = {
+ 1,
+ -1, 1, 1061
+};
+static int parser_action_row1583[] = {
+ 5,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
52, 0, 828,
57, 0, 829
};
-static int parser_action_row1623[] = {
+static int parser_action_row1584[] = {
2,
- -1, 3, 1622,
+ -1, 3, 1583,
57, 0, 829
};
-static int parser_action_row1624[] = {
+static int parser_action_row1585[] = {
3,
- -1, 3, 1623,
- 14, 0, 1680,
- 15, 0, 1681
+ -1, 3, 1584,
+ 14, 0, 1654,
+ 15, 0, 1655
};
-static int parser_action_row1625[] = {
+static int parser_action_row1586[] = {
5,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
52, 0, 828,
57, 0, 829
};
-static int parser_action_row1626[] = {
+static int parser_action_row1587[] = {
2,
- -1, 1, 153,
+ -1, 1, 155,
57, 0, 333
};
-static int parser_action_row1627[] = {
+static int parser_action_row1588[] = {
4,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
14, 0, 978,
- 15, 0, 1685
+ 15, 0, 1659
};
-static int parser_action_row1628[] = {
+static int parser_action_row1589[] = {
5,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
52, 0, 828,
57, 0, 829
};
-static int parser_action_row1629[] = {
+static int parser_action_row1590[] = {
3,
- -1, 3, 1628,
+ -1, 3, 1589,
47, 0, 396,
96, 0, 397
};
-static int parser_action_row1630[] = {
+static int parser_action_row1591[] = {
2,
- -1, 3, 1629,
- 57, 0, 1691
+ -1, 3, 1590,
+ 57, 0, 1665
};
-static int parser_action_row1631[] = {
+static int parser_action_row1592[] = {
2,
- -1, 3, 1630,
- 53, 0, 1692
+ -1, 3, 1591,
+ 53, 0, 1666
};
-static int parser_action_row1632[] = {
+static int parser_action_row1593[] = {
1,
- -1, 1, 669
+ -1, 1, 671
};
-static int parser_action_row1633[] = {
+static int parser_action_row1594[] = {
1,
- -1, 1, 688
+ -1, 1, 690
};
-static int parser_action_row1634[] = {
+static int parser_action_row1595[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1635[] = {
+static int parser_action_row1596[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1636[] = {
+static int parser_action_row1597[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1637[] = {
+static int parser_action_row1598[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1638[] = {
+static int parser_action_row1599[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1639[] = {
+static int parser_action_row1600[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1640[] = {
+static int parser_action_row1601[] = {
13,
- -1, 1, 755,
- 59, 0, 1699,
+ -1, 1, 757,
+ 59, 0, 1673,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1641[] = {
+static int parser_action_row1602[] = {
25,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 730,
46, 0, 731,
54, 0, 619,
91, 0, 422,
92, 0, 423,
96, 0, 53,
- 97, 0, 1701
+ 97, 0, 1675
};
-static int parser_action_row1642[] = {
+static int parser_action_row1603[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1643[] = {
+static int parser_action_row1604[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1644[] = {
+static int parser_action_row1605[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1645[] = {
+static int parser_action_row1606[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1646[] = {
+static int parser_action_row1607[] = {
13,
- -1, 1, 759,
- 59, 0, 1710,
+ -1, 1, 761,
+ 59, 0, 1684,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1647[] = {
+static int parser_action_row1608[] = {
14,
- -1, 1, 758,
+ -1, 1, 760,
52, 0, 277,
- 59, 0, 1712,
+ 59, 0, 1686,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1648[] = {
+static int parser_action_row1609[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1610[] = {
+ 1,
+ -1, 1, 363
+};
+static int parser_action_row1611[] = {
+ 22,
+ -1, 1, 458,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
+};
+static int parser_action_row1612[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1613[] = {
+ 1,
+ -1, 1, 778
+};
+static int parser_action_row1614[] = {
2,
- -1, 3, 1647,
- 53, 0, 1715
+ -1, 3, 1613,
+ 24, 0, 1692
};
-static int parser_action_row1649[] = {
+static int parser_action_row1615[] = {
1,
- -1, 1, 697
+ -1, 1, 938
};
-static int parser_action_row1650[] = {
+static int parser_action_row1616[] = {
2,
- -1, 3, 1649,
- 53, 0, 1716
+ -1, 3, 1615,
+ 49, 0, 197
};
-static int parser_action_row1651[] = {
- 34,
- -1, 1, 456,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 1349,
- 12, 0, 887,
- 15, 0, 888,
- 16, 0, 34,
- 22, 0, 889,
- 25, 0, 891,
- 26, 0, 892,
- 27, 0, 893,
- 33, 0, 894,
- 34, 0, 895,
- 35, 0, 896,
- 36, 0, 897,
- 37, 0, 898,
- 38, 0, 44,
+static int parser_action_row1617[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
42, 0, 45,
43, 0, 46,
44, 0, 47,
45, 0, 48,
- 50, 0, 899,
- 51, 0, 900,
+ 48, 0, 175,
52, 0, 51,
54, 0, 52,
- 95, 0, 3,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
96, 0, 53,
- 97, 0, 901,
+ 97, 0, 179,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1652[] = {
+static int parser_action_row1618[] = {
+ 1,
+ -1, 1, 942
+};
+static int parser_action_row1619[] = {
2,
- -1, 1, 265,
- 24, 1, 935
+ -1, 3, 1618,
+ 49, 0, 197
};
-static int parser_action_row1653[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1620[] = {
+ 2,
+ -1, 1, 194,
+ 24, 1, 925
};
-static int parser_action_row1654[] = {
+static int parser_action_row1621[] = {
2,
- -1, 1, 269,
- 24, 1, 939
+ -1, 1, 184,
+ 24, 1, 915
};
-static int parser_action_row1655[] = {
+static int parser_action_row1622[] = {
2,
- -1, 1, 193,
- 24, 1, 924
+ -1, 1, 196,
+ 24, 1, 927
+};
+static int parser_action_row1623[] = {
+ 2,
+ -1, 1, 186,
+ 24, 1, 917
+};
+static int parser_action_row1624[] = {
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
+};
+static int parser_action_row1625[] = {
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 337,
+ 59, 0, 1187,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 337,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
+};
+static int parser_action_row1626[] = {
+ 1,
+ -1, 1, 271
+};
+static int parser_action_row1627[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
-static int parser_action_row1656[] = {
+static int parser_action_row1628[] = {
2,
- -1, 1, 183,
- 24, 1, 914
+ -1, 3, 1627,
+ 53, 0, 1699
};
-static int parser_action_row1657[] = {
+static int parser_action_row1629[] = {
1,
- -1, 1, 280
-};
-static int parser_action_row1658[] = {
- 2,
- -1, 1, 401,
- 94, 0, 204
+ -1, 1, 407
};
-static int parser_action_row1659[] = {
+static int parser_action_row1630[] = {
1,
- -1, 1, 387
+ -1, 1, 427
};
-static int parser_action_row1660[] = {
- 24,
- -1, 1, 456,
+static int parser_action_row1631[] = {
+ 25,
+ -1, 1, 458,
12, 0, 170,
- 22, 0, 171,
+ 22, 0, 446,
+ 27, 0, 447,
31, 0, 172,
38, 0, 173,
40, 0, 174,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1661[] = {
+static int parser_action_row1632[] = {
3,
- -1, 1, 596,
- 52, 0, 277,
- 58, 0, 215
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1662[] = {
- 2,
- -1, 3, 1661,
- 97, 0, 1722
+static int parser_action_row1633[] = {
+ 1,
+ -1, 1, 808
};
-static int parser_action_row1663[] = {
+static int parser_action_row1634[] = {
3,
- -1, 3, 1662,
+ -1, 3, 1633,
96, 0, 53,
- 97, 0, 1723
+ 97, 0, 1702
};
-static int parser_action_row1664[] = {
+static int parser_action_row1635[] = {
2,
- -1, 1, 568,
- 73, 1, 571
+ -1, 3, 1634,
+ 98, 0, 1705
};
-static int parser_action_row1665[] = {
+static int parser_action_row1636[] = {
1,
- -1, 1, 523
+ -1, 1, 531
};
-static int parser_action_row1666[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1637[] = {
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
-static int parser_action_row1667[] = {
+static int parser_action_row1638[] = {
+ 1,
+ -1, 1, 524
+};
+static int parser_action_row1639[] = {
+ 1,
+ -1, 1, 593
+};
+static int parser_action_row1640[] = {
3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 1639,
+ 31, 0, 1707,
+ 52, 0, 1708
};
-static int parser_action_row1668[] = {
+static int parser_action_row1641[] = {
1,
- -1, 1, 577
+ -1, 1, 575
};
-static int parser_action_row1669[] = {
+static int parser_action_row1642[] = {
1,
- -1, 1, 585
+ -1, 1, 573
};
-static int parser_action_row1670[] = {
+static int parser_action_row1643[] = {
2,
- -1, 1, 583,
+ -1, 1, 581,
52, 0, 277
};
-static int parser_action_row1671[] = {
+static int parser_action_row1644[] = {
3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 589,
+ 52, 0, 277,
+ 58, 0, 215
};
-static int parser_action_row1672[] = {
- 4,
- -1, 3, 1671,
+static int parser_action_row1645[] = {
+ 2,
+ -1, 1, 456,
+ 97, 0, 1711
+};
+static int parser_action_row1646[] = {
+ 57,
+ -1, 1, 458,
0, 0, 88,
1, 0, 89,
- 95, 0, 90
+ 12, 0, 116,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 117,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 118,
+ 33, 0, 1329,
+ 34, 0, 1330,
+ 35, 0, 1331,
+ 36, 0, 1332,
+ 37, 0, 43,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 47, 0, 396,
+ 48, 0, 125,
+ 50, 0, 49,
+ 51, 0, 1333,
+ 52, 0, 1712,
+ 54, 0, 619,
+ 74, 0, 1335,
+ 75, 0, 1336,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 1337,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 95, 0, 90,
+ 96, 0, 424,
+ 97, 0, 1338,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
-static int parser_action_row1673[] = {
+static int parser_action_row1647[] = {
1,
- -1, 1, 413
+ -1, 1, 125
};
-static int parser_action_row1674[] = {
- 4,
- -1, 3, 1673,
- 0, 0, 88,
- 1, 0, 89,
- 95, 0, 90
+static int parser_action_row1648[] = {
+ 5,
+ -1, 3, 1647,
+ 31, 0, 1716,
+ 47, 0, 1717,
+ 52, 0, 1718,
+ 96, 0, 397
};
-static int parser_action_row1675[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1649[] = {
+ 1,
+ -1, 1, 42
};
-static int parser_action_row1676[] = {
- 2,
- -1, 1, 133,
- 96, 0, 603
+static int parser_action_row1650[] = {
+ 1,
+ -1, 1, 28
};
-static int parser_action_row1677[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1651[] = {
+ 2,
+ -1, 3, 1650,
+ 9, 0, 1720
};
-static int parser_action_row1678[] = {
+static int parser_action_row1652[] = {
1,
- -1, 1, 131
+ -1, 1, 40
};
-static int parser_action_row1679[] = {
+static int parser_action_row1653[] = {
4,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
14, 0, 978,
- 15, 0, 1733
+ 15, 0, 1721
};
-static int parser_action_row1680[] = {
+static int parser_action_row1654[] = {
2,
- -1, 1, 76,
+ -1, 1, 78,
14, 0, 969
};
-static int parser_action_row1681[] = {
+static int parser_action_row1655[] = {
5,
- -1, 1, 28,
+ -1, 1, 30,
0, 0, 88,
1, 0, 89,
13, 0, 32,
95, 0, 90
};
-static int parser_action_row1682[] = {
+static int parser_action_row1656[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1683[] = {
+static int parser_action_row1657[] = {
2,
- -1, 3, 1682,
- 15, 0, 1741
+ -1, 3, 1656,
+ 15, 0, 1729
};
-static int parser_action_row1684[] = {
+static int parser_action_row1658[] = {
3,
- -1, 3, 1683,
- 14, 0, 1680,
- 15, 0, 1742
+ -1, 3, 1657,
+ 14, 0, 1654,
+ 15, 0, 1730
};
-static int parser_action_row1685[] = {
+static int parser_action_row1659[] = {
4,
- -1, 1, 76,
- 14, 0, 1744,
- 15, 0, 1745,
- 59, 0, 1746
+ -1, 1, 78,
+ 14, 0, 1732,
+ 15, 0, 1733,
+ 59, 0, 1734
};
-static int parser_action_row1686[] = {
+static int parser_action_row1660[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1687[] = {
+static int parser_action_row1661[] = {
3,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
- 15, 0, 1750
+ 15, 0, 1738
};
-static int parser_action_row1688[] = {
+static int parser_action_row1662[] = {
3,
- -1, 3, 1687,
+ -1, 3, 1661,
28, 0, 84,
109, 0, 85
};
-static int parser_action_row1689[] = {
+static int parser_action_row1663[] = {
1,
- -1, 1, 49
+ -1, 1, 51
};
-static int parser_action_row1690[] = {
+static int parser_action_row1664[] = {
4,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
14, 0, 978,
- 15, 0, 1753
+ 15, 0, 1741
};
-static int parser_action_row1691[] = {
+static int parser_action_row1665[] = {
2,
- -1, 1, 76,
+ -1, 1, 78,
14, 0, 969
};
-static int parser_action_row1692[] = {
+static int parser_action_row1666[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1693[] = {
+static int parser_action_row1667[] = {
2,
- -1, 1, 420,
+ -1, 1, 422,
94, 0, 204
};
-static int parser_action_row1694[] = {
+static int parser_action_row1668[] = {
1,
- -1, 1, 668
+ -1, 1, 670
};
-static int parser_action_row1695[] = {
+static int parser_action_row1669[] = {
1,
- -1, 1, 687
+ -1, 1, 689
};
-static int parser_action_row1696[] = {
+static int parser_action_row1670[] = {
1,
- -1, 1, 659
+ -1, 1, 661
};
-static int parser_action_row1697[] = {
+static int parser_action_row1671[] = {
1,
- -1, 1, 678
+ -1, 1, 680
};
-static int parser_action_row1698[] = {
+static int parser_action_row1672[] = {
1,
- -1, 1, 671
+ -1, 1, 673
};
-static int parser_action_row1699[] = {
+static int parser_action_row1673[] = {
1,
- -1, 1, 690
+ -1, 1, 692
};
-static int parser_action_row1700[] = {
+static int parser_action_row1674[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1701[] = {
+static int parser_action_row1675[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1702[] = {
+static int parser_action_row1676[] = {
15,
- -1, 1, 746,
+ -1, 1, 748,
52, 0, 277,
58, 0, 215,
- 59, 0, 1762,
+ 59, 0, 1750,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1703[] = {
+static int parser_action_row1677[] = {
2,
- -1, 3, 1702,
- 98, 0, 1765
+ -1, 3, 1676,
+ 98, 0, 1753
};
-static int parser_action_row1704[] = {
+static int parser_action_row1678[] = {
22,
- -1, 1, 453,
+ -1, 1, 455,
54, 0, 619,
74, 0, 620,
75, 0, 621,
90, 0, 421,
91, 0, 422,
92, 0, 423,
- 97, 0, 1766
+ 97, 0, 1754
};
-static int parser_action_row1705[] = {
+static int parser_action_row1679[] = {
1,
- -1, 1, 803
+ -1, 1, 805
};
-static int parser_action_row1706[] = {
+static int parser_action_row1680[] = {
23,
- -1, 1, 455,
+ -1, 1, 457,
54, 0, 619,
74, 0, 620,
75, 0, 621,
91, 0, 422,
92, 0, 423,
96, 0, 53,
- 97, 0, 1767
+ 97, 0, 1755
};
-static int parser_action_row1707[] = {
+static int parser_action_row1681[] = {
1,
- -1, 1, 676
+ -1, 1, 678
};
-static int parser_action_row1708[] = {
+static int parser_action_row1682[] = {
1,
- -1, 1, 695
+ -1, 1, 697
};
-static int parser_action_row1709[] = {
+static int parser_action_row1683[] = {
1,
- -1, 1, 675
+ -1, 1, 677
};
-static int parser_action_row1710[] = {
+static int parser_action_row1684[] = {
1,
- -1, 1, 694
+ -1, 1, 696
};
-static int parser_action_row1711[] = {
+static int parser_action_row1685[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1712[] = {
+static int parser_action_row1686[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1713[] = {
+static int parser_action_row1687[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1714[] = {
+static int parser_action_row1688[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1715[] = {
+static int parser_action_row1689[] = {
13,
- -1, 1, 757,
- 59, 0, 1773,
+ -1, 1, 759,
+ 59, 0, 1761,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1716[] = {
- 1,
- -1, 1, 360
-};
-static int parser_action_row1717[] = {
- 1,
- -1, 1, 777
+static int parser_action_row1690[] = {
+ 2,
+ -1, 3, 1689,
+ 53, 0, 1763
};
-static int parser_action_row1718[] = {
+static int parser_action_row1691[] = {
1,
- -1, 1, 932
+ -1, 1, 699
};
-static int parser_action_row1719[] = {
+static int parser_action_row1692[] = {
2,
- -1, 3, 1718,
- 15, 0, 1775
+ -1, 3, 1691,
+ 53, 0, 1764
};
-static int parser_action_row1720[] = {
- 1,
- -1, 1, 408
+static int parser_action_row1693[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1381,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
-static int parser_action_row1721[] = {
+static int parser_action_row1694[] = {
+ 2,
+ -1, 1, 269,
+ 24, 1, 937
+};
+static int parser_action_row1695[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1722[] = {
- 1,
- -1, 1, 595
-};
-static int parser_action_row1723[] = {
+static int parser_action_row1696[] = {
2,
- -1, 1, 598,
- 52, 0, 277
-};
-static int parser_action_row1724[] = {
- 3,
- -1, 1, 602,
- 52, 0, 277,
- 58, 0, 215
+ -1, 1, 273,
+ 24, 1, 941
};
-static int parser_action_row1725[] = {
+static int parser_action_row1697[] = {
2,
- -1, 3, 1724,
- 97, 0, 1779
+ -1, 1, 195,
+ 24, 1, 926
};
-static int parser_action_row1726[] = {
+static int parser_action_row1698[] = {
2,
- -1, 3, 1725,
- 45, 0, 1780
+ -1, 1, 185,
+ 24, 1, 916
};
-static int parser_action_row1727[] = {
- 4,
- -1, 3, 1726,
- 31, 0, 1781,
- 47, 0, 396,
- 96, 0, 397
+static int parser_action_row1699[] = {
+ 1,
+ -1, 1, 284
};
-static int parser_action_row1728[] = {
+static int parser_action_row1700[] = {
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
+};
+static int parser_action_row1701[] = {
1,
- -1, 1, 581
+ -1, 1, 391
};
-static int parser_action_row1729[] = {
- 54,
- -1, 1, 456,
+static int parser_action_row1702[] = {
+ 24,
+ -1, 1, 458,
12, 0, 170,
- 15, 0, 33,
- 16, 0, 34,
22, 0, 171,
- 25, 0, 36,
- 26, 0, 37,
- 27, 0, 38,
31, 0, 172,
- 33, 0, 399,
- 34, 0, 400,
- 35, 0, 401,
- 36, 0, 402,
- 37, 0, 43,
38, 0, 173,
40, 0, 174,
42, 0, 45,
43, 0, 46,
44, 0, 47,
45, 0, 48,
- 47, 0, 396,
48, 0, 175,
- 50, 0, 49,
- 51, 0, 403,
52, 0, 51,
- 54, 0, 404,
- 74, 0, 405,
- 75, 0, 406,
- 76, 0, 407,
- 77, 0, 408,
- 78, 0, 409,
- 79, 0, 410,
- 80, 0, 411,
- 81, 0, 412,
- 82, 0, 413,
- 83, 0, 414,
- 84, 0, 415,
- 85, 0, 416,
- 86, 0, 417,
- 87, 0, 418,
- 88, 0, 419,
- 89, 0, 420,
- 90, 0, 421,
- 91, 0, 422,
- 92, 0, 423,
- 94, 0, 204,
- 96, 0, 424,
- 97, 0, 425,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1730[] = {
+static int parser_action_row1703[] = {
+ 3,
+ -1, 1, 598,
+ 52, 0, 277,
+ 58, 0, 215
+};
+static int parser_action_row1704[] = {
+ 2,
+ -1, 3, 1703,
+ 97, 0, 1770
+};
+static int parser_action_row1705[] = {
+ 3,
+ -1, 3, 1704,
+ 96, 0, 53,
+ 97, 0, 1771
+};
+static int parser_action_row1706[] = {
+ 2,
+ -1, 1, 570,
+ 73, 1, 573
+};
+static int parser_action_row1707[] = {
1,
- -1, 1, 414
+ -1, 1, 525
+};
+static int parser_action_row1708[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1709[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1710[] = {
+ 1,
+ -1, 1, 579
+};
+static int parser_action_row1711[] = {
+ 1,
+ -1, 1, 587
+};
+static int parser_action_row1712[] = {
+ 2,
+ -1, 1, 585,
+ 52, 0, 277
+};
+static int parser_action_row1713[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1714[] = {
+ 4,
+ -1, 3, 1713,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
+};
+static int parser_action_row1715[] = {
+ 1,
+ -1, 1, 415
+};
+static int parser_action_row1716[] = {
+ 4,
+ -1, 3, 1715,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
+};
+static int parser_action_row1717[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1718[] = {
+ 2,
+ -1, 1, 135,
+ 96, 0, 603
+};
+static int parser_action_row1719[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1731[] = {
+static int parser_action_row1720[] = {
1,
- -1, 1, 417
-};
-static int parser_action_row1732[] = {
- 2,
- -1, 3, 1731,
- 47, 0, 1784
+ -1, 1, 133
};
-static int parser_action_row1733[] = {
- 4,
- -1, 3, 1732,
- 31, 0, 1785,
- 47, 0, 1786,
- 96, 0, 397
+static int parser_action_row1721[] = {
+ 1,
+ -1, 1, 29
};
-static int parser_action_row1734[] = {
+static int parser_action_row1722[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1735[] = {
+static int parser_action_row1723[] = {
3,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
- 15, 0, 1789
+ 15, 0, 1782
};
-static int parser_action_row1736[] = {
+static int parser_action_row1724[] = {
3,
- -1, 3, 1735,
+ -1, 3, 1723,
28, 0, 84,
109, 0, 85
};
-static int parser_action_row1737[] = {
+static int parser_action_row1725[] = {
1,
- -1, 1, 48
+ -1, 1, 50
};
-static int parser_action_row1738[] = {
+static int parser_action_row1726[] = {
1,
- -1, 1, 67
+ -1, 1, 69
};
-static int parser_action_row1739[] = {
+static int parser_action_row1727[] = {
1,
- -1, 1, 77
+ -1, 1, 79
};
-static int parser_action_row1740[] = {
+static int parser_action_row1728[] = {
4,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
-static int parser_action_row1741[] = {
+static int parser_action_row1729[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1742[] = {
+static int parser_action_row1730[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1743[] = {
+static int parser_action_row1731[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1744[] = {
+static int parser_action_row1732[] = {
2,
- -1, 3, 1743,
- 15, 0, 1796
+ -1, 3, 1731,
+ 15, 0, 1789
};
-static int parser_action_row1745[] = {
+static int parser_action_row1733[] = {
5,
- -1, 1, 28,
+ -1, 1, 30,
0, 0, 88,
1, 0, 89,
13, 0, 32,
95, 0, 90
};
-static int parser_action_row1746[] = {
+static int parser_action_row1734[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1747[] = {
+static int parser_action_row1735[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1748[] = {
+static int parser_action_row1736[] = {
1,
- -1, 1, 57
+ -1, 1, 59
};
-static int parser_action_row1749[] = {
+static int parser_action_row1737[] = {
2,
- -1, 3, 1748,
- 15, 0, 1801
+ -1, 3, 1736,
+ 15, 0, 1794
};
-static int parser_action_row1750[] = {
+static int parser_action_row1738[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1751[] = {
+static int parser_action_row1739[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1752[] = {
+static int parser_action_row1740[] = {
3,
- -1, 3, 1751,
+ -1, 3, 1739,
28, 0, 84,
109, 0, 85
};
-static int parser_action_row1753[] = {
+static int parser_action_row1741[] = {
1,
- -1, 1, 68
+ -1, 1, 70
};
-static int parser_action_row1754[] = {
+static int parser_action_row1742[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1755[] = {
+static int parser_action_row1743[] = {
3,
- -1, 1, 122,
+ -1, 1, 124,
4, 0, 977,
- 15, 0, 1806
+ 15, 0, 1799
};
-static int parser_action_row1756[] = {
+static int parser_action_row1744[] = {
3,
- -1, 3, 1755,
+ -1, 3, 1743,
28, 0, 84,
109, 0, 85
};
-static int parser_action_row1757[] = {
+static int parser_action_row1745[] = {
1,
- -1, 1, 50
+ -1, 1, 52
};
-static int parser_action_row1758[] = {
+static int parser_action_row1746[] = {
1,
- -1, 1, 41
+ -1, 1, 43
};
-static int parser_action_row1759[] = {
+static int parser_action_row1747[] = {
1,
- -1, 1, 1014
+ -1, 1, 1016
};
-static int parser_action_row1760[] = {
+static int parser_action_row1748[] = {
1,
- -1, 1, 421
+ -1, 1, 423
};
-static int parser_action_row1761[] = {
+static int parser_action_row1749[] = {
1,
- -1, 1, 670
+ -1, 1, 672
};
-static int parser_action_row1762[] = {
+static int parser_action_row1750[] = {
1,
- -1, 1, 689
+ -1, 1, 691
};
-static int parser_action_row1763[] = {
+static int parser_action_row1751[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1764[] = {
+static int parser_action_row1752[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1765[] = {
+static int parser_action_row1753[] = {
13,
- -1, 1, 745,
- 59, 0, 1811,
+ -1, 1, 747,
+ 59, 0, 1804,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1766[] = {
+static int parser_action_row1754[] = {
13,
- -1, 1, 743,
- 59, 0, 1813,
+ -1, 1, 745,
+ 59, 0, 1806,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1767[] = {
+static int parser_action_row1755[] = {
14,
- -1, 1, 748,
+ -1, 1, 750,
52, 0, 277,
- 59, 0, 1815,
+ 59, 0, 1808,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1768[] = {
+static int parser_action_row1756[] = {
15,
- -1, 1, 752,
+ -1, 1, 754,
52, 0, 277,
58, 0, 215,
- 59, 0, 1818,
+ 59, 0, 1811,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1769[] = {
+static int parser_action_row1757[] = {
22,
- -1, 1, 454,
+ -1, 1, 456,
54, 0, 619,
74, 0, 620,
75, 0, 621,
90, 0, 421,
91, 0, 422,
92, 0, 423,
- 97, 0, 1821
+ 97, 0, 1814
};
-static int parser_action_row1770[] = {
+static int parser_action_row1758[] = {
1,
- -1, 1, 674
+ -1, 1, 676
};
-static int parser_action_row1771[] = {
+static int parser_action_row1759[] = {
1,
- -1, 1, 693
+ -1, 1, 695
};
-static int parser_action_row1772[] = {
+static int parser_action_row1760[] = {
1,
- -1, 1, 673
+ -1, 1, 675
};
-static int parser_action_row1773[] = {
+static int parser_action_row1761[] = {
1,
- -1, 1, 692
+ -1, 1, 694
};
-static int parser_action_row1774[] = {
+static int parser_action_row1762[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1775[] = {
+static int parser_action_row1763[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1776[] = {
- 34,
- -1, 1, 456,
+static int parser_action_row1764[] = {
+ 1,
+ -1, 1, 364
+};
+static int parser_action_row1765[] = {
+ 1,
+ -1, 1, 779
+};
+static int parser_action_row1766[] = {
+ 1,
+ -1, 1, 934
+};
+static int parser_action_row1767[] = {
+ 2,
+ -1, 3, 1766,
+ 15, 0, 1817
+};
+static int parser_action_row1768[] = {
+ 1,
+ -1, 1, 411
+};
+static int parser_action_row1769[] = {
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 9, 0, 1027,
- 12, 0, 887,
- 15, 0, 888,
+ 1, 0, 2
+};
+static int parser_action_row1770[] = {
+ 1,
+ -1, 1, 597
+};
+static int parser_action_row1771[] = {
+ 2,
+ -1, 1, 600,
+ 52, 0, 277
+};
+static int parser_action_row1772[] = {
+ 3,
+ -1, 1, 604,
+ 52, 0, 277,
+ 58, 0, 215
+};
+static int parser_action_row1773[] = {
+ 2,
+ -1, 3, 1772,
+ 97, 0, 1821
+};
+static int parser_action_row1774[] = {
+ 2,
+ -1, 3, 1773,
+ 45, 0, 1822
+};
+static int parser_action_row1775[] = {
+ 4,
+ -1, 3, 1774,
+ 31, 0, 1823,
+ 47, 0, 396,
+ 96, 0, 397
+};
+static int parser_action_row1776[] = {
+ 1,
+ -1, 1, 583
+};
+static int parser_action_row1777[] = {
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
16, 0, 34,
- 22, 0, 889,
- 25, 0, 891,
- 26, 0, 892,
- 27, 0, 893,
- 33, 0, 894,
- 34, 0, 895,
- 35, 0, 896,
- 36, 0, 897,
- 37, 0, 898,
- 38, 0, 44,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
42, 0, 45,
43, 0, 46,
44, 0, 47,
45, 0, 48,
- 50, 0, 899,
- 51, 0, 900,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
52, 0, 51,
- 54, 0, 52,
- 95, 0, 3,
- 96, 0, 53,
- 97, 0, 901,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1777[] = {
- 2,
- -1, 3, 1776,
- 24, 0, 1826
-};
static int parser_action_row1778[] = {
1,
- -1, 1, 597
+ -1, 1, 416
};
static int parser_action_row1779[] = {
1,
- -1, 1, 601
+ -1, 1, 419
};
static int parser_action_row1780[] = {
2,
- -1, 1, 600,
- 52, 0, 277
+ -1, 3, 1779,
+ 47, 0, 1826
};
static int parser_action_row1781[] = {
- 1,
- -1, 1, 605
-};
-static int parser_action_row1782[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1783[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1784[] = {
- 2,
- -1, 3, 1783,
- 53, 0, 1830
-};
-static int parser_action_row1785[] = {
- 1,
- -1, 1, 135
-};
-static int parser_action_row1786[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1787[] = {
4,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2,
- 96, 0, 603
-};
-static int parser_action_row1788[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 1780,
+ 31, 0, 1827,
+ 47, 0, 1828,
+ 96, 0, 397
};
-static int parser_action_row1789[] = {
+static int parser_action_row1782[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1790[] = {
+static int parser_action_row1783[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1791[] = {
+static int parser_action_row1784[] = {
3,
- -1, 3, 1790,
+ -1, 3, 1783,
28, 0, 84,
109, 0, 85
};
-static int parser_action_row1792[] = {
+static int parser_action_row1785[] = {
1,
- -1, 1, 55
+ -1, 1, 57
};
-static int parser_action_row1793[] = {
- 1,
- -1, 1, 78
+static int parser_action_row1786[] = {
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 15, 1, 80,
+ 95, 0, 3
};
-static int parser_action_row1794[] = {
+static int parser_action_row1787[] = {
1,
- -1, 1, 63
+ -1, 1, 65
};
-static int parser_action_row1795[] = {
+static int parser_action_row1788[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1796[] = {
+static int parser_action_row1789[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1797[] = {
+static int parser_action_row1790[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1798[] = {
+static int parser_action_row1791[] = {
2,
- -1, 1, 74,
- 15, 1, 77
+ -1, 1, 76,
+ 15, 1, 79
};
-static int parser_action_row1799[] = {
+static int parser_action_row1792[] = {
4,
- -1, 1, 483,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
95, 0, 3
};
-static int parser_action_row1800[] = {
+static int parser_action_row1793[] = {
2,
- -1, 1, 59,
- 9, 0, 1841
+ -1, 1, 61,
+ 9, 0, 1837
};
-static int parser_action_row1801[] = {
+static int parser_action_row1794[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1802[] = {
+static int parser_action_row1795[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1803[] = {
+static int parser_action_row1796[] = {
1,
- -1, 1, 51
+ -1, 1, 53
};
-static int parser_action_row1804[] = {
+static int parser_action_row1797[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1805[] = {
+static int parser_action_row1798[] = {
1,
- -1, 1, 70
+ -1, 1, 72
};
-static int parser_action_row1806[] = {
+static int parser_action_row1799[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1807[] = {
+static int parser_action_row1800[] = {
34,
- -1, 1, 456,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
9, 0, 589,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1808[] = {
+static int parser_action_row1801[] = {
3,
- -1, 3, 1807,
+ -1, 3, 1800,
28, 0, 84,
109, 0, 85
};
-static int parser_action_row1809[] = {
+static int parser_action_row1802[] = {
1,
- -1, 1, 69
+ -1, 1, 71
};
-static int parser_action_row1810[] = {
+static int parser_action_row1803[] = {
1,
- -1, 1, 661
+ -1, 1, 663
};
-static int parser_action_row1811[] = {
+static int parser_action_row1804[] = {
1,
- -1, 1, 680
+ -1, 1, 682
};
-static int parser_action_row1812[] = {
+static int parser_action_row1805[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1813[] = {
+static int parser_action_row1806[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1814[] = {
+static int parser_action_row1807[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1815[] = {
+static int parser_action_row1808[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1816[] = {
+static int parser_action_row1809[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1817[] = {
+static int parser_action_row1810[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1818[] = {
+static int parser_action_row1811[] = {
13,
- -1, 1, 747,
- 59, 0, 1854,
+ -1, 1, 749,
+ 59, 0, 1850,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1819[] = {
+static int parser_action_row1812[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1820[] = {
+static int parser_action_row1813[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1821[] = {
+static int parser_action_row1814[] = {
13,
- -1, 1, 751,
- 59, 0, 1858,
+ -1, 1, 753,
+ 59, 0, 1854,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1822[] = {
+static int parser_action_row1815[] = {
14,
- -1, 1, 750,
+ -1, 1, 752,
52, 0, 277,
- 59, 0, 1860,
+ 59, 0, 1856,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
+static int parser_action_row1816[] = {
+ 1,
+ -1, 1, 674
+};
+static int parser_action_row1817[] = {
+ 1,
+ -1, 1, 693
+};
+static int parser_action_row1818[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1035,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1819[] = {
+ 2,
+ -1, 3, 1818,
+ 24, 0, 1861
+};
+static int parser_action_row1820[] = {
+ 1,
+ -1, 1, 599
+};
+static int parser_action_row1821[] = {
+ 1,
+ -1, 1, 603
+};
+static int parser_action_row1822[] = {
+ 2,
+ -1, 1, 602,
+ 52, 0, 277
+};
static int parser_action_row1823[] = {
1,
- -1, 1, 672
+ -1, 1, 607
};
static int parser_action_row1824[] = {
- 1,
- -1, 1, 691
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1825[] = {
- 1,
- -1, 1, 938
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1826[] = {
2,
-1, 3, 1825,
- 49, 0, 197
+ 53, 0, 1865
};
static int parser_action_row1827[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 137
};
static int parser_action_row1828[] = {
- 1,
- -1, 1, 599
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1829[] = {
- 2,
- -1, 3, 1828,
- 45, 0, 1865
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 96, 0, 603
};
static int parser_action_row1830[] = {
- 2,
- -1, 3, 1829,
- 53, 0, 1866
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1831[] = {
- 5,
- -1, 3, 1830,
- 0, 0, 88,
- 1, 0, 89,
- 94, 0, 204,
- 95, 0, 90
+ 1,
+ -1, 1, 48
};
static int parser_action_row1832[] = {
2,
- -1, 3, 1831,
- 47, 0, 1869
+ -1, 1, 469,
+ 9, 0, 1320
};
static int parser_action_row1833[] = {
- 2,
- -1, 3, 1832,
- 53, 0, 1870
+ 1,
+ -1, 1, 58
};
static int parser_action_row1834[] = {
- 2,
- -1, 3, 1833,
- 53, 0, 1871
+ 1,
+ -1, 1, 67
};
static int parser_action_row1835[] = {
1,
- -1, 1, 46
+ -1, 1, 66
};
static int parser_action_row1836[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 469,
+ 9, 0, 1320
};
static int parser_action_row1837[] = {
- 1,
- -1, 1, 56
+ 6,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1451,
+ 15, 1, 80,
+ 95, 0, 3
};
static int parser_action_row1838[] = {
1,
- -1, 1, 65
+ -1, 1, 63
};
static int parser_action_row1839[] = {
- 1,
- -1, 1, 64
+ 2,
+ -1, 1, 78,
+ 14, 0, 969
};
static int parser_action_row1840[] = {
2,
- -1, 1, 467,
- 9, 0, 1309
+ -1, 1, 62,
+ 9, 0, 1872
};
static int parser_action_row1841[] = {
- 2,
- -1, 1, 78,
- 9, 0, 1417
+ 1,
+ -1, 1, 55
};
static int parser_action_row1842[] = {
1,
- -1, 1, 61
+ -1, 1, 54
};
static int parser_action_row1843[] = {
2,
- -1, 1, 76,
- 14, 0, 969
+ -1, 1, 469,
+ 9, 0, 1320
};
static int parser_action_row1844[] = {
- 2,
- -1, 1, 60,
- 9, 0, 1875
+ 1,
+ -1, 1, 73
};
static int parser_action_row1845[] = {
1,
- -1, 1, 53
+ -1, 1, 662
};
static int parser_action_row1846[] = {
1,
- -1, 1, 52
+ -1, 1, 681
};
static int parser_action_row1847[] = {
- 2,
- -1, 1, 467,
- 9, 0, 1309
+ 1,
+ -1, 1, 660
};
static int parser_action_row1848[] = {
1,
- -1, 1, 71
+ -1, 1, 679
};
static int parser_action_row1849[] = {
1,
- -1, 1, 660
+ -1, 1, 665
};
static int parser_action_row1850[] = {
1,
- -1, 1, 679
+ -1, 1, 684
};
static int parser_action_row1851[] = {
- 1,
- -1, 1, 658
-};
-static int parser_action_row1852[] = {
- 1,
- -1, 1, 677
-};
-static int parser_action_row1853[] = {
- 1,
- -1, 1, 663
-};
-static int parser_action_row1854[] = {
- 1,
- -1, 1, 682
-};
-static int parser_action_row1855[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1856[] = {
+static int parser_action_row1852[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1857[] = {
+static int parser_action_row1853[] = {
1,
- -1, 1, 667
+ -1, 1, 669
};
-static int parser_action_row1858[] = {
+static int parser_action_row1854[] = {
1,
- -1, 1, 686
+ -1, 1, 688
};
-static int parser_action_row1859[] = {
+static int parser_action_row1855[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1860[] = {
+static int parser_action_row1856[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1861[] = {
+static int parser_action_row1857[] = {
26,
- -1, 1, 516,
+ -1, 1, 518,
12, 0, 170,
22, 0, 171,
31, 0, 172,
38, 0, 173,
40, 0, 174,
- 41, 1, 456,
+ 41, 1, 458,
42, 0, 45,
43, 0, 46,
44, 0, 47,
83, 0, 178,
96, 0, 53,
97, 0, 179,
- 98, 1, 456,
+ 98, 1, 458,
99, 0, 55,
100, 0, 56,
101, 0, 57,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1862[] = {
+static int parser_action_row1858[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1863[] = {
+static int parser_action_row1859[] = {
13,
- -1, 1, 749,
- 59, 0, 1883,
+ -1, 1, 751,
+ 59, 0, 1880,
60, 0, 217,
61, 0, 218,
62, 0, 219,
69, 0, 226,
70, 0, 227
};
-static int parser_action_row1864[] = {
- 2,
- -1, 1, 267,
- 24, 1, 937
+static int parser_action_row1860[] = {
+ 1,
+ -1, 1, 940
};
-static int parser_action_row1865[] = {
- 23,
- -1, 1, 456,
- 12, 0, 1093,
- 22, 0, 1094,
- 31, 0, 1095,
- 38, 0, 1096,
- 40, 0, 1097,
- 42, 0, 1098,
- 43, 0, 1099,
- 44, 0, 1100,
- 45, 0, 1101,
- 48, 0, 1102,
- 52, 0, 51,
- 74, 0, 1103,
- 75, 0, 1104,
- 83, 0, 1105,
- 96, 0, 53,
- 97, 0, 1106,
- 99, 0, 1107,
- 100, 0, 1108,
- 101, 0, 1109,
- 102, 0, 1110,
- 103, 0, 59,
- 106, 0, 1111
+static int parser_action_row1861[] = {
+ 2,
+ -1, 3, 1860,
+ 49, 0, 197
};
-static int parser_action_row1866[] = {
+static int parser_action_row1862[] = {
3,
- -1, 1, 485,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1867[] = {
+static int parser_action_row1863[] = {
1,
- -1, 1, 603
+ -1, 1, 601
};
-static int parser_action_row1868[] = {
- 4,
- -1, 3, 1867,
+static int parser_action_row1864[] = {
+ 2,
+ -1, 3, 1863,
+ 45, 0, 1884
+};
+static int parser_action_row1865[] = {
+ 2,
+ -1, 3, 1864,
+ 53, 0, 1885
+};
+static int parser_action_row1866[] = {
+ 5,
+ -1, 3, 1865,
0, 0, 88,
1, 0, 89,
+ 94, 0, 204,
95, 0, 90
};
+static int parser_action_row1867[] = {
+ 2,
+ -1, 3, 1866,
+ 47, 0, 1888
+};
+static int parser_action_row1868[] = {
+ 2,
+ -1, 3, 1867,
+ 53, 0, 1889
+};
static int parser_action_row1869[] = {
- 1,
- -1, 1, 415
+ 2,
+ -1, 3, 1868,
+ 53, 0, 1890
};
static int parser_action_row1870[] = {
- 3,
- -1, 1, 485,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 49
};
static int parser_action_row1871[] = {
1,
- -1, 1, 132
+ -1, 1, 68
};
static int parser_action_row1872[] = {
1,
- -1, 1, 130
+ -1, 1, 60
};
static int parser_action_row1873[] = {
1,
- -1, 1, 47
+ -1, 1, 64
};
static int parser_action_row1874[] = {
1,
- -1, 1, 66
+ -1, 1, 56
};
static int parser_action_row1875[] = {
1,
- -1, 1, 58
+ -1, 1, 664
};
static int parser_action_row1876[] = {
1,
- -1, 1, 62
+ -1, 1, 683
};
static int parser_action_row1877[] = {
1,
- -1, 1, 54
+ -1, 1, 668
};
static int parser_action_row1878[] = {
1,
- -1, 1, 662
+ -1, 1, 687
};
static int parser_action_row1879[] = {
1,
- -1, 1, 681
+ -1, 1, 667
};
static int parser_action_row1880[] = {
1,
- -1, 1, 666
+ -1, 1, 686
};
static int parser_action_row1881[] = {
- 1,
- -1, 1, 685
-};
-static int parser_action_row1882[] = {
- 1,
- -1, 1, 665
-};
-static int parser_action_row1883[] = {
- 1,
- -1, 1, 684
-};
-static int parser_action_row1884[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
-static int parser_action_row1885[] = {
+static int parser_action_row1882[] = {
24,
- -1, 1, 456,
+ -1, 1, 458,
12, 0, 170,
22, 0, 171,
31, 0, 172,
103, 0, 59,
106, 0, 60
};
+static int parser_action_row1883[] = {
+ 2,
+ -1, 1, 271,
+ 24, 1, 939
+};
+static int parser_action_row1884[] = {
+ 23,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 22, 0, 1103,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
+};
+static int parser_action_row1885[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
static int parser_action_row1886[] = {
1,
- -1, 1, 525
+ -1, 1, 605
};
static int parser_action_row1887[] = {
- 2,
+ 4,
-1, 3, 1886,
- 53, 0, 1891
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row1888[] = {
1,
- -1, 1, 416
+ -1, 1, 417
};
static int parser_action_row1889[] = {
- 2,
- -1, 3, 1888,
- 53, 0, 1892
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1890[] = {
1,
- -1, 1, 664
+ -1, 1, 134
};
static int parser_action_row1891[] = {
1,
- -1, 1, 683
+ -1, 1, 132
};
static int parser_action_row1892[] = {
1,
- -1, 1, 604
+ -1, 1, 666
};
static int parser_action_row1893[] = {
1,
- -1, 1, 134
+ -1, 1, 685
+};
+static int parser_action_row1894[] = {
+ 1,
+ -1, 1, 527
+};
+static int parser_action_row1895[] = {
+ 2,
+ -1, 3, 1894,
+ 53, 0, 1897
+};
+static int parser_action_row1896[] = {
+ 1,
+ -1, 1, 418
+};
+static int parser_action_row1897[] = {
+ 2,
+ -1, 3, 1896,
+ 53, 0, 1898
+};
+static int parser_action_row1898[] = {
+ 1,
+ -1, 1, 606
+};
+static int parser_action_row1899[] = {
+ 1,
+ -1, 1, 136
};
const int* const parser_action_table[] = {
parser_action_row1890,
parser_action_row1891,
parser_action_row1892,
- parser_action_row1893
+ parser_action_row1893,
+ parser_action_row1894,
+ parser_action_row1895,
+ parser_action_row1896,
+ parser_action_row1897,
+ parser_action_row1898,
+ parser_action_row1899
};
static int parser_goto_row1[] = {
98, 267,
204, 391,
594, 786,
- 1159, 1320,
- 1292, 1418,
- 1324, 1320
+ 993, 1165,
+ 1169, 1165,
+ 1303, 1450
};
static int parser_goto_row9[] = {
1,
};
static int parser_goto_row10[] = {
1,
- -1, 986
+ -1, 1325
};
static int parser_goto_row11[] = {
2,
- -1, 1436,
- 1438, 1556
+ -1, 1470,
+ 1471, 1581
};
static int parser_goto_row12[] = {
2,
- -1, 1314,
- 1554, 1619
+ -1, 1326,
+ 1580, 1651
};
static int parser_goto_row13[] = {
2,
- -1, 1152,
- 1160, 1322
+ -1, 986,
+ 994, 1167
};
static int parser_goto_row14[] = {
- 2,
- -1, 1153,
- 1156, 1317
+ 4,
+ -1, 987,
+ 990, 1162,
+ 1468, 1578,
+ 1579, 1650
};
static int parser_goto_row15[] = {
2,
- -1, 1154,
- 1160, 1323
+ -1, 988,
+ 994, 1168
};
static int parser_goto_row16[] = {
1,
- -1, 1155
+ -1, 989
};
static int parser_goto_row17[] = {
6,
-1, 970,
825, 973,
- 1679, 1737,
- 1684, 1747,
- 1690, 1757,
- 1842, 1874
+ 1653, 1725,
+ 1658, 1735,
+ 1664, 1745,
+ 1838, 1871
};
static int parser_goto_row18[] = {
7,
-1, 980,
- 1623, 1682,
- 1626, 1686,
- 1678, 1734,
- 1683, 1743,
- 1684, 1748,
- 1689, 1754
+ 1584, 1656,
+ 1587, 1660,
+ 1652, 1722,
+ 1657, 1731,
+ 1658, 1736,
+ 1663, 1742
};
static int parser_goto_row19[] = {
8,
391, 599,
786, 936,
789, 940,
- 1320, 1440,
- 1418, 1545
+ 1165, 1328,
+ 1450, 1568
};
static int parser_goto_row20[] = {
4,
static int parser_goto_row21[] = {
6,
-1, 830,
- 1560, 1623,
- 1562, 1626,
- 1621, 1678,
- 1624, 1683,
- 1627, 1689
+ 1474, 1584,
+ 1476, 1587,
+ 1582, 1652,
+ 1585, 1657,
+ 1588, 1663
};
static int parser_goto_row22[] = {
1,
- -1, 1141
+ -1, 1149
};
static int parser_goto_row23[] = {
2,
- -1, 1299,
- 1301, 1425
+ -1, 1310,
+ 1312, 1458
};
static int parser_goto_row24[] = {
2,
- -1, 1142,
- 1424, 1548
+ -1, 1150,
+ 1457, 1571
};
static int parser_goto_row25[] = {
8,
-1, 981,
- 980, 1149,
- 1626, 1687,
- 1678, 1735,
- 1686, 1751,
- 1689, 1755,
- 1734, 1790,
- 1754, 1807
+ 980, 1157,
+ 1587, 1661,
+ 1652, 1723,
+ 1660, 1739,
+ 1663, 1743,
+ 1722, 1783,
+ 1742, 1800
};
static int parser_goto_row26[] = {
2,
- -1, 1428,
- 1429, 1550
+ -1, 1461,
+ 1462, 1573
};
static int parser_goto_row27[] = {
2,
- -1, 1303,
- 1549, 1617
+ -1, 1314,
+ 1572, 1646
};
static int parser_goto_row28[] = {
1,
- -1, 1304
+ -1, 1315
};
static int parser_goto_row29[] = {
1,
- -1, 1305
+ -1, 1316
};
static int parser_goto_row30[] = {
1,
-1, 86
};
static int parser_goto_row32[] = {
- 10,
+ 11,
-1, 87,
- 981, 1150,
- 986, 1156,
- 1149, 1312,
- 1687, 1752,
- 1735, 1791,
- 1751, 1804,
- 1755, 1808,
- 1790, 1836,
- 1807, 1847
+ 839, 990,
+ 981, 1158,
+ 1157, 1323,
+ 1468, 1579,
+ 1661, 1740,
+ 1723, 1784,
+ 1739, 1797,
+ 1743, 1801,
+ 1783, 1832,
+ 1800, 1843
};
static int parser_goto_row33[] = {
1,
801, 933,
932, 933,
951, 933,
- 976, 1143,
- 1044, 1200,
- 1144, 1306,
- 1163, 1328,
- 1188, 1344,
- 1216, 1363,
- 1321, 1451,
- 1549, 1306,
- 1567, 1629,
- 1616, 1451,
- 1618, 1677,
- 1628, 1690,
- 1726, 1782,
- 1732, 1787
+ 976, 1151,
+ 1052, 1210,
+ 1152, 1317,
+ 1166, 1339,
+ 1173, 1360,
+ 1198, 1376,
+ 1228, 1396,
+ 1481, 1590,
+ 1572, 1317,
+ 1589, 1664,
+ 1645, 1339,
+ 1647, 1719,
+ 1774, 1824,
+ 1780, 1829
};
static int parser_goto_row36[] = {
4,
-1, 934,
801, 952,
- 932, 1065,
- 951, 1084
+ 932, 1074,
+ 951, 1093
};
static int parser_goto_row37[] = {
2,
- -1, 1067,
- 1068, 1217
+ -1, 1076,
+ 1077, 1229
};
static int parser_goto_row38[] = {
5,
-1, 831,
- 1140, 1294,
- 1295, 1421,
- 1297, 1422,
- 1622, 1679
+ 1148, 1305,
+ 1306, 1454,
+ 1308, 1455,
+ 1583, 1653
};
static int parser_goto_row39[] = {
8,
393, 600,
449, 631,
601, 797,
- 1313, 1433,
- 1434, 1553,
- 1625, 1684
+ 1324, 1466,
+ 1467, 1577,
+ 1586, 1658
};
static int parser_goto_row40[] = {
- 30,
+ 32,
-1, 158,
37, 167,
386, 590,
588, 779,
743, 919,
798, 949,
- 890, 1033,
+ 890, 1041,
892, 167,
- 979, 1147,
- 1053, 1207,
- 1148, 1311,
- 1198, 590,
- 1348, 779,
- 1360, 1493,
- 1479, 919,
- 1484, 949,
- 1650, 1207,
- 1681, 1740,
- 1685, 1749,
- 1733, 1788,
- 1741, 1794,
- 1742, 1795,
- 1745, 1799,
- 1750, 1803,
- 1753, 1805,
- 1775, 1493,
+ 979, 1155,
+ 1058, 1215,
+ 1062, 1219,
+ 1156, 1322,
+ 1208, 590,
+ 1216, 1390,
+ 1380, 779,
+ 1393, 1516,
+ 1502, 919,
+ 1507, 949,
+ 1655, 1728,
+ 1659, 1737,
+ 1692, 1219,
+ 1721, 1781,
+ 1729, 1787,
+ 1730, 1788,
+ 1733, 1792,
+ 1738, 1796,
+ 1741, 1798,
+ 1782, 1831,
1789, 1835,
- 1796, 1839,
- 1801, 1843,
- 1806, 1846
+ 1794, 1839,
+ 1799, 1842,
+ 1817, 1516
};
static int parser_goto_row41[] = {
1,
static int parser_goto_row42[] = {
2,
-1, 63,
- 909, 1050
+ 909, 1059
};
static int parser_goto_row43[] = {
4,
-1, 330,
591, 781,
- 1028, 1191,
- 1350, 1483
+ 1036, 1201,
+ 1382, 1506
};
static int parser_goto_row44[] = {
4,
-1, 241,
243, 471,
546, 471,
- 1206, 471
+ 1218, 471
};
static int parser_goto_row45[] = {
15,
591, 331,
738, 470,
742, 902,
- 909, 1051,
- 1028, 331,
- 1350, 331,
- 1478, 902
+ 909, 1060,
+ 1036, 331,
+ 1382, 331,
+ 1501, 902
};
static int parser_goto_row46[] = {
18,
168, 339,
400, 608,
401, 609,
- 895, 1039,
- 896, 1040,
- 920, 1057,
- 950, 1083,
- 1031, 1192,
- 1036, 1195,
- 1442, 1565,
- 1443, 1566,
- 1494, 1596,
- 1586, 1651,
- 1589, 1653,
- 1825, 1863
+ 895, 1047,
+ 896, 1048,
+ 920, 1066,
+ 950, 1092,
+ 1039, 1202,
+ 1044, 1205,
+ 1330, 1479,
+ 1331, 1480,
+ 1517, 1625,
+ 1615, 1693,
+ 1618, 1695,
+ 1860, 1882
};
static int parser_goto_row47[] = {
20,
807, 427,
888, 903,
892, 903,
- 1080, 427,
- 1198, 903,
- 1321, 1452,
- 1348, 903,
- 1367, 427,
- 1478, 903,
- 1479, 903,
- 1484, 903,
- 1499, 427,
- 1568, 427,
- 1616, 1452,
- 1650, 903,
- 1728, 427,
- 1775, 903
+ 1089, 427,
+ 1166, 1340,
+ 1208, 903,
+ 1380, 903,
+ 1400, 427,
+ 1482, 427,
+ 1501, 903,
+ 1502, 903,
+ 1507, 903,
+ 1522, 427,
+ 1645, 1340,
+ 1692, 903,
+ 1776, 427,
+ 1817, 903
};
static int parser_goto_row48[] = {
18,
807, 428,
888, 904,
892, 904,
- 1080, 428,
- 1198, 904,
- 1348, 904,
- 1367, 428,
- 1478, 904,
- 1479, 904,
- 1484, 904,
- 1499, 428,
- 1568, 428,
- 1650, 904,
- 1728, 428,
- 1775, 904
+ 1089, 428,
+ 1208, 904,
+ 1380, 904,
+ 1400, 428,
+ 1482, 428,
+ 1501, 904,
+ 1502, 904,
+ 1507, 904,
+ 1522, 428,
+ 1692, 904,
+ 1776, 428,
+ 1817, 904
};
static int parser_goto_row49[] = {
52,
670, 847,
693, 866,
812, 692,
- 848, 995,
- 850, 997,
- 852, 1000,
- 854, 1005,
+ 848, 1003,
+ 850, 1005,
+ 852, 1008,
+ 854, 1013,
954, 847,
- 1001, 1171,
- 1006, 1175,
- 1009, 1178,
- 1049, 489,
- 1055, 494,
- 1088, 1000,
- 1089, 1005,
- 1179, 1336,
- 1211, 692,
- 1236, 1178,
- 1355, 847,
- 1450, 1570,
- 1489, 1000,
- 1491, 1005,
- 1571, 1634,
- 1572, 1636,
- 1573, 1638,
- 1575, 1642,
- 1577, 1644,
- 1595, 1178,
- 1639, 1700,
- 1645, 1711,
- 1646, 1713,
- 1701, 1763,
- 1714, 1774,
- 1764, 1812,
- 1765, 1814,
- 1766, 1816,
- 1767, 1819,
- 1817, 1855,
- 1820, 1859,
- 1821, 1861,
- 1862, 1884
+ 1009, 1181,
+ 1014, 1185,
+ 1017, 1188,
+ 1057, 489,
+ 1064, 494,
+ 1097, 1008,
+ 1098, 1013,
+ 1189, 1368,
+ 1223, 692,
+ 1248, 1188,
+ 1338, 1484,
+ 1387, 847,
+ 1485, 1595,
+ 1486, 1597,
+ 1487, 1599,
+ 1489, 1603,
+ 1491, 1605,
+ 1512, 1008,
+ 1514, 1013,
+ 1600, 1674,
+ 1606, 1685,
+ 1607, 1687,
+ 1624, 1188,
+ 1675, 1751,
+ 1688, 1762,
+ 1752, 1805,
+ 1753, 1807,
+ 1754, 1809,
+ 1755, 1812,
+ 1810, 1851,
+ 1813, 1855,
+ 1814, 1857,
+ 1858, 1881
};
static int parser_goto_row50[] = {
10,
-1, 67,
212, 429,
807, 429,
- 1080, 429,
- 1321, 1453,
- 1367, 429,
- 1499, 429,
- 1568, 429,
- 1616, 1453,
- 1728, 429
+ 1089, 429,
+ 1166, 1341,
+ 1400, 429,
+ 1482, 429,
+ 1522, 429,
+ 1645, 1341,
+ 1776, 429
};
static int parser_goto_row51[] = {
1,
static int parser_goto_row52[] = {
3,
-1, 905,
- 909, 1052,
- 1050, 1205
+ 909, 1061,
+ 1059, 1217
};
static int parser_goto_row53[] = {
10,
-1, 69,
212, 430,
807, 430,
- 1080, 430,
- 1321, 1454,
- 1367, 430,
- 1499, 430,
- 1568, 430,
- 1616, 1454,
- 1728, 430
+ 1089, 430,
+ 1166, 1342,
+ 1400, 430,
+ 1482, 430,
+ 1522, 430,
+ 1645, 1342,
+ 1776, 430
};
static int parser_goto_row54[] = {
10,
-1, 70,
212, 431,
807, 431,
- 1080, 431,
- 1321, 1455,
- 1367, 431,
- 1499, 431,
- 1568, 431,
- 1616, 1455,
- 1728, 431
+ 1089, 431,
+ 1166, 1343,
+ 1400, 431,
+ 1482, 431,
+ 1522, 431,
+ 1645, 1343,
+ 1776, 431
};
static int parser_goto_row55[] = {
10,
-1, 71,
212, 432,
807, 432,
- 1080, 432,
- 1321, 1456,
- 1367, 432,
- 1499, 432,
- 1568, 432,
- 1616, 1456,
- 1728, 432
+ 1089, 432,
+ 1166, 1344,
+ 1400, 432,
+ 1482, 432,
+ 1522, 432,
+ 1645, 1344,
+ 1776, 432
};
static int parser_goto_row56[] = {
10,
-1, 72,
212, 433,
807, 433,
- 1080, 433,
- 1321, 1457,
- 1367, 433,
- 1499, 433,
- 1568, 433,
- 1616, 1457,
- 1728, 433
+ 1089, 433,
+ 1166, 1345,
+ 1400, 433,
+ 1482, 433,
+ 1522, 433,
+ 1645, 1345,
+ 1776, 433
};
static int parser_goto_row57[] = {
2,
-1, 394,
- 1043, 1199
+ 1051, 1209
};
static int parser_goto_row58[] = {
10,
-1, 73,
212, 434,
807, 434,
- 1080, 434,
- 1321, 1458,
- 1367, 434,
- 1499, 434,
- 1568, 434,
- 1616, 1458,
- 1728, 434
+ 1089, 434,
+ 1166, 1346,
+ 1400, 434,
+ 1482, 434,
+ 1522, 434,
+ 1645, 1346,
+ 1776, 434
};
static int parser_goto_row59[] = {
2,
-1, 201,
- 898, 1041
+ 898, 1049
};
static int parser_goto_row60[] = {
131,
810, 682,
811, 686,
818, 966,
- 846, 992,
- 847, 993,
- 865, 1011,
- 866, 1012,
- 885, 1025,
- 894, 1038,
- 898, 1042,
- 922, 1059,
- 947, 1081,
- 953, 1086,
+ 846, 1000,
+ 847, 1001,
+ 865, 1019,
+ 866, 1020,
+ 885, 1033,
+ 894, 1046,
+ 898, 1050,
+ 922, 1068,
+ 947, 1090,
+ 953, 1095,
961, 863,
- 994, 1164,
- 995, 1165,
- 996, 1166,
- 997, 1167,
- 999, 1168,
- 1000, 1169,
- 1004, 1172,
- 1005, 1173,
- 1013, 1181,
- 1018, 514,
- 1032, 1193,
- 1034, 1194,
- 1041, 1197,
- 1043, 395,
- 1060, 1213,
- 1082, 1231,
- 1087, 992,
- 1170, 1329,
- 1171, 1330,
- 1174, 1331,
- 1175, 1332,
- 1177, 1333,
- 1178, 1334,
- 1234, 1168,
- 1235, 1172,
- 1237, 1375,
- 1238, 1377,
- 1240, 1378,
- 1335, 1472,
- 1336, 1473,
- 1353, 1485,
- 1374, 1333,
- 1441, 1564,
- 1569, 1631,
- 1570, 1632,
- 1587, 1652,
- 1597, 1656,
- 1601, 966,
- 1633, 1693,
- 1634, 1694,
- 1635, 1695,
- 1636, 1696,
- 1637, 1697,
- 1638, 1698,
- 1641, 1706,
- 1642, 1707,
- 1643, 1708,
- 1644, 1709,
- 1659, 1720,
- 1691, 1758,
- 1699, 1760,
- 1700, 1761,
- 1710, 1769,
- 1711, 1770,
- 1712, 1771,
- 1713, 1772,
- 1762, 1809,
- 1763, 1810,
- 1773, 1822,
- 1774, 1823,
- 1800, 1842,
- 1811, 1848,
- 1812, 1849,
- 1813, 1850,
- 1814, 1851,
- 1815, 1852,
- 1816, 1853,
- 1818, 1856,
- 1819, 1857,
- 1854, 1877,
- 1855, 1878,
- 1858, 1879,
- 1859, 1880,
- 1860, 1881,
- 1861, 1882,
- 1883, 1889,
- 1884, 1890
+ 1002, 1174,
+ 1003, 1175,
+ 1004, 1176,
+ 1005, 1177,
+ 1007, 1178,
+ 1008, 1179,
+ 1012, 1182,
+ 1013, 1183,
+ 1021, 1191,
+ 1026, 514,
+ 1040, 1203,
+ 1042, 1204,
+ 1049, 1207,
+ 1051, 395,
+ 1069, 1225,
+ 1091, 1243,
+ 1096, 1000,
+ 1180, 1361,
+ 1181, 1362,
+ 1184, 1363,
+ 1185, 1364,
+ 1187, 1365,
+ 1188, 1366,
+ 1246, 1178,
+ 1247, 1182,
+ 1249, 1408,
+ 1250, 1410,
+ 1252, 1411,
+ 1329, 1478,
+ 1367, 1495,
+ 1368, 1496,
+ 1385, 1508,
+ 1407, 1365,
+ 1483, 1592,
+ 1484, 1593,
+ 1594, 1667,
+ 1595, 1668,
+ 1596, 1669,
+ 1597, 1670,
+ 1598, 1671,
+ 1599, 1672,
+ 1602, 1680,
+ 1603, 1681,
+ 1604, 1682,
+ 1605, 1683,
+ 1616, 1694,
+ 1626, 1698,
+ 1630, 966,
+ 1665, 1746,
+ 1673, 1748,
+ 1674, 1749,
+ 1684, 1757,
+ 1685, 1758,
+ 1686, 1759,
+ 1687, 1760,
+ 1701, 1768,
+ 1750, 1802,
+ 1751, 1803,
+ 1761, 1815,
+ 1762, 1816,
+ 1793, 1838,
+ 1804, 1844,
+ 1805, 1845,
+ 1806, 1846,
+ 1807, 1847,
+ 1808, 1848,
+ 1809, 1849,
+ 1811, 1852,
+ 1812, 1853,
+ 1850, 1874,
+ 1851, 1875,
+ 1854, 1876,
+ 1855, 1877,
+ 1856, 1878,
+ 1857, 1879,
+ 1880, 1891,
+ 1881, 1892
};
static int parser_goto_row61[] = {
1,
405, 350,
406, 351,
414, 352,
- 1447, 291,
- 1448, 292,
- 1449, 293
+ 1335, 291,
+ 1336, 292,
+ 1337, 293
};
static int parser_goto_row72[] = {
1,
-1, 192
};
static int parser_goto_row73[] = {
- 54,
+ 56,
-1, 193,
13, 74,
27, 74,
892, 906,
909, 74,
979, 74,
- 1028, 74,
- 1053, 74,
- 1080, 436,
- 1148, 74,
- 1198, 906,
- 1348, 906,
- 1350, 74,
- 1360, 74,
- 1367, 436,
- 1478, 906,
- 1479, 906,
- 1484, 906,
- 1499, 436,
- 1568, 436,
- 1650, 906,
- 1681, 74,
- 1685, 74,
- 1728, 436,
+ 1036, 74,
+ 1058, 74,
+ 1062, 74,
+ 1089, 436,
+ 1156, 74,
+ 1208, 906,
+ 1216, 74,
+ 1380, 906,
+ 1382, 74,
+ 1393, 74,
+ 1400, 436,
+ 1482, 436,
+ 1501, 906,
+ 1502, 906,
+ 1507, 906,
+ 1522, 436,
+ 1655, 74,
+ 1659, 74,
+ 1692, 906,
+ 1721, 74,
+ 1729, 74,
+ 1730, 74,
1733, 74,
+ 1738, 74,
1741, 74,
- 1742, 74,
- 1745, 74,
- 1750, 74,
- 1753, 74,
- 1775, 906,
+ 1776, 436,
+ 1782, 74,
1789, 74,
- 1796, 74,
- 1801, 74,
- 1806, 74
+ 1794, 74,
+ 1799, 74,
+ 1817, 906
};
static int parser_goto_row74[] = {
2,
-1, 515,
- 1018, 1186
+ 1026, 1196
};
static int parser_goto_row75[] = {
1,
static int parser_goto_row76[] = {
31,
-1, 76,
- 964, 1112,
- 1102, 1112,
- 1103, 1112,
- 1104, 1112,
- 1105, 1112,
- 1241, 1112,
- 1243, 1112,
- 1391, 1112,
- 1393, 1112,
- 1394, 1112,
- 1396, 1112,
- 1397, 1112,
- 1398, 1112,
- 1399, 1112,
- 1400, 1112,
- 1401, 1112,
- 1402, 1112,
- 1403, 1112,
- 1404, 1112,
- 1405, 1112,
- 1406, 1112,
- 1407, 1112,
- 1408, 1112,
- 1409, 1112,
- 1410, 1112,
- 1411, 1112,
- 1412, 1112,
- 1413, 1112,
- 1514, 1112,
- 1864, 1112
+ 964, 1121,
+ 1111, 1121,
+ 1112, 1121,
+ 1113, 1121,
+ 1114, 1121,
+ 1253, 1121,
+ 1255, 1121,
+ 1424, 1121,
+ 1426, 1121,
+ 1427, 1121,
+ 1429, 1121,
+ 1430, 1121,
+ 1431, 1121,
+ 1432, 1121,
+ 1433, 1121,
+ 1434, 1121,
+ 1435, 1121,
+ 1436, 1121,
+ 1437, 1121,
+ 1438, 1121,
+ 1439, 1121,
+ 1440, 1121,
+ 1441, 1121,
+ 1442, 1121,
+ 1443, 1121,
+ 1444, 1121,
+ 1445, 1121,
+ 1446, 1121,
+ 1537, 1121,
+ 1883, 1121
};
static int parser_goto_row77[] = {
1,
4,
-1, 450,
818, 967,
- 1237, 1376,
- 1601, 1658
+ 1249, 1409,
+ 1630, 1700
};
static int parser_goto_row82[] = {
93,
854, 136,
887, 136,
901, 136,
- 964, 1113,
- 1008, 136,
- 1009, 136,
- 1047, 136,
- 1048, 136,
- 1049, 136,
- 1054, 136,
+ 964, 1122,
+ 1016, 136,
+ 1017, 136,
1055, 136,
- 1076, 136,
- 1102, 1113,
- 1103, 1113,
- 1104, 1113,
- 1105, 1113,
- 1210, 136,
- 1211, 136,
- 1241, 1113,
- 1243, 1113,
- 1321, 136,
- 1354, 136,
- 1355, 136,
- 1391, 1113,
- 1393, 1113,
- 1394, 1113,
- 1396, 1113,
- 1397, 1113,
- 1398, 1113,
- 1399, 1113,
- 1400, 1113,
- 1401, 1113,
- 1402, 1113,
- 1403, 1113,
- 1404, 1113,
- 1405, 1113,
- 1406, 1113,
- 1407, 1113,
- 1408, 1113,
- 1409, 1113,
- 1410, 1113,
- 1411, 1113,
- 1412, 1113,
- 1413, 1113,
- 1488, 136,
- 1489, 136,
- 1490, 136,
- 1491, 136,
- 1514, 1113,
- 1581, 136,
- 1594, 136,
- 1595, 136,
- 1616, 136,
- 1864, 1113
+ 1056, 136,
+ 1057, 136,
+ 1063, 136,
+ 1064, 136,
+ 1085, 136,
+ 1111, 1122,
+ 1112, 1122,
+ 1113, 1122,
+ 1114, 1122,
+ 1166, 136,
+ 1222, 136,
+ 1223, 136,
+ 1253, 1122,
+ 1255, 1122,
+ 1386, 136,
+ 1387, 136,
+ 1424, 1122,
+ 1426, 1122,
+ 1427, 1122,
+ 1429, 1122,
+ 1430, 1122,
+ 1431, 1122,
+ 1432, 1122,
+ 1433, 1122,
+ 1434, 1122,
+ 1435, 1122,
+ 1436, 1122,
+ 1437, 1122,
+ 1438, 1122,
+ 1439, 1122,
+ 1440, 1122,
+ 1441, 1122,
+ 1442, 1122,
+ 1443, 1122,
+ 1444, 1122,
+ 1445, 1122,
+ 1446, 1122,
+ 1511, 136,
+ 1512, 136,
+ 1513, 136,
+ 1514, 136,
+ 1537, 1122,
+ 1610, 136,
+ 1623, 136,
+ 1624, 136,
+ 1645, 136,
+ 1883, 1122
};
static int parser_goto_row83[] = {
1,
212, 438,
393, 601,
807, 438,
- 1080, 438,
- 1140, 1295,
- 1313, 1434,
- 1321, 1459,
- 1367, 438,
- 1499, 438,
- 1568, 438,
- 1616, 1671,
- 1692, 1759,
- 1728, 438,
- 1830, 1867
+ 1089, 438,
+ 1148, 1306,
+ 1166, 1347,
+ 1324, 1467,
+ 1400, 438,
+ 1482, 438,
+ 1522, 438,
+ 1645, 1713,
+ 1666, 1747,
+ 1776, 438,
+ 1865, 1886
};
static int parser_goto_row89[] = {
45,
806, 958,
808, 960,
817, 965,
- 1076, 1225,
- 1098, 1244,
- 1099, 1245,
- 1100, 1246,
- 1101, 1247,
- 1107, 1255,
- 1108, 1256,
- 1109, 1257,
- 1110, 1258,
- 1111, 1259,
- 1140, 1296,
- 1233, 1373,
- 1372, 1501,
- 1389, 1511,
- 1390, 1512,
- 1498, 1599,
- 1518, 1608,
- 1607, 1664,
- 1657, 1719
+ 1085, 1237,
+ 1107, 1256,
+ 1108, 1257,
+ 1109, 1258,
+ 1110, 1259,
+ 1116, 1267,
+ 1117, 1268,
+ 1118, 1269,
+ 1119, 1270,
+ 1120, 1271,
+ 1148, 1307,
+ 1245, 1406,
+ 1405, 1524,
+ 1422, 1534,
+ 1423, 1535,
+ 1521, 1628,
+ 1541, 1637,
+ 1636, 1706,
+ 1699, 1767
};
static int parser_goto_row90[] = {
1,
-1, 392
};
static int parser_goto_row91[] = {
- 4,
- -1, 1135,
- 978, 1145,
- 1680, 1738,
- 1744, 1797
+ 6,
+ -1, 790,
+ 935, 1079,
+ 969, 1144,
+ 978, 1153,
+ 1654, 1726,
+ 1732, 1790
};
static int parser_goto_row92[] = {
- 3,
- -1, 1136,
- 598, 790,
- 935, 1070
-};
-static int parser_goto_row93[] = {
2,
-1, 791,
- 1078, 1228
+ 1087, 1240
};
-static int parser_goto_row94[] = {
+static int parser_goto_row93[] = {
1,
- -1, 1226
+ -1, 1238
};
-static int parser_goto_row95[] = {
+static int parser_goto_row94[] = {
2,
-1, 943,
- 944, 1079
+ 944, 1088
};
-static int parser_goto_row96[] = {
- 4,
- -1, 1290,
- 1146, 1308,
- 1739, 1792,
- 1798, 1840
-};
-static int parser_goto_row97[] = {
- 2,
- -1, 1291,
- 1293, 1419
+static int parser_goto_row95[] = {
+ 5,
+ -1, 1302,
+ 1304, 1452,
+ 1319, 1452,
+ 1785, 1452,
+ 1836, 1452
};
-static int parser_goto_row98[] = {
+static int parser_goto_row96[] = {
1,
- -1, 1157
+ -1, 991
};
-static int parser_goto_row99[] = {
+static int parser_goto_row97[] = {
4,
- -1, 1229,
- 1367, 1497,
- 1568, 1630,
- 1728, 1783
+ -1, 1241,
+ 1400, 1520,
+ 1482, 1591,
+ 1776, 1825
};
-static int parser_goto_row100[] = {
+static int parser_goto_row98[] = {
3,
- -1, 1370,
- 1371, 1500,
- 1576, 1500
+ -1, 1403,
+ 1404, 1523,
+ 1490, 1523
};
-static int parser_goto_row101[] = {
+static int parser_goto_row99[] = {
4,
- -1, 1230,
+ -1, 1242,
212, 439,
807, 959,
- 1499, 1600
+ 1522, 1629
};
-static int parser_goto_row102[] = {
+static int parser_goto_row100[] = {
4,
-1, 795,
- 936, 1071,
- 940, 1076,
- 1545, 1616
+ 936, 1080,
+ 940, 1085,
+ 1568, 1645
};
-static int parser_goto_row103[] = {
+static int parser_goto_row101[] = {
86,
-1, 353,
31, 137,
773, 843,
774, 927,
812, 693,
- 852, 1001,
- 854, 1006,
- 880, 1022,
- 881, 1023,
+ 852, 1009,
+ 854, 1014,
+ 880, 1030,
+ 881, 1031,
887, 137,
901, 229,
- 929, 1062,
- 930, 1063,
- 937, 1072,
+ 929, 1071,
+ 930, 1072,
+ 937, 1081,
954, 848,
- 1009, 1179,
- 1014, 1182,
- 1024, 1189,
- 1047, 482,
- 1049, 490,
- 1055, 495,
- 1064, 1214,
- 1073, 1221,
- 1074, 1222,
- 1088, 1001,
- 1089, 1006,
- 1093, 1239,
- 1106, 1254,
- 1183, 1338,
- 1184, 1339,
- 1211, 693,
- 1223, 1366,
- 1236, 1179,
- 1260, 1387,
- 1262, 1388,
- 1287, 1415,
- 1340, 1475,
- 1354, 843,
- 1355, 848,
- 1382, 1508,
- 1416, 1544,
- 1450, 1571,
- 1489, 1001,
- 1491, 1006,
- 1538, 1609,
- 1540, 1611,
- 1573, 1639,
- 1577, 1645,
- 1595, 1179,
- 1613, 1667,
- 1614, 1668,
- 1646, 1714,
- 1660, 1721,
- 1669, 1727,
- 1701, 1764,
- 1722, 1777,
- 1723, 1778,
- 1766, 1817,
- 1767, 1820,
- 1779, 1827,
+ 1017, 1189,
+ 1022, 1192,
+ 1032, 1199,
+ 1055, 482,
+ 1057, 490,
+ 1064, 495,
+ 1073, 1226,
+ 1082, 1233,
+ 1083, 1234,
+ 1097, 1009,
+ 1098, 1014,
+ 1102, 1251,
+ 1115, 1266,
+ 1193, 1370,
+ 1194, 1371,
+ 1223, 693,
+ 1235, 1399,
+ 1248, 1189,
+ 1272, 1420,
+ 1274, 1421,
+ 1299, 1448,
+ 1338, 1485,
+ 1372, 1498,
+ 1386, 843,
+ 1387, 848,
+ 1415, 1531,
+ 1449, 1567,
+ 1487, 1600,
+ 1491, 1606,
+ 1512, 1009,
+ 1514, 1014,
+ 1561, 1638,
+ 1563, 1640,
+ 1607, 1688,
+ 1624, 1189,
+ 1642, 1709,
+ 1643, 1710,
+ 1675, 1752,
+ 1702, 1769,
+ 1711, 1775,
+ 1754, 1810,
+ 1755, 1813,
+ 1770, 1819,
+ 1771, 1820,
+ 1814, 1858,
1821, 1862
};
-static int parser_goto_row104[] = {
+static int parser_goto_row102[] = {
34,
-1, 138,
54, 230,
498, 694,
668, 844,
670, 849,
- 851, 998,
- 852, 1002,
- 853, 1003,
- 854, 1007,
- 887, 1026,
- 901, 1045,
- 1008, 1176,
- 1009, 1180,
- 1047, 1202,
- 1048, 1203,
- 1049, 1204,
- 1054, 1208,
- 1055, 1209,
- 1210, 1358,
- 1211, 1359,
- 1354, 1486,
- 1355, 1487,
- 1488, 1590,
- 1489, 1591,
- 1490, 1592,
- 1491, 1593,
- 1594, 1654,
- 1595, 1655
+ 851, 1006,
+ 852, 1010,
+ 853, 1011,
+ 854, 1015,
+ 887, 1034,
+ 901, 1053,
+ 1016, 1186,
+ 1017, 1190,
+ 1055, 1212,
+ 1056, 1213,
+ 1057, 1214,
+ 1063, 1220,
+ 1064, 1221,
+ 1222, 1391,
+ 1223, 1392,
+ 1386, 1509,
+ 1387, 1510,
+ 1511, 1619,
+ 1512, 1620,
+ 1513, 1621,
+ 1514, 1622,
+ 1623, 1696,
+ 1624, 1697
};
-static int parser_goto_row105[] = {
+static int parser_goto_row103[] = {
6,
-1, 246,
154, 326,
193, 377,
289, 326,
348, 377,
- 1465, 1575
+ 1353, 1489
};
-static int parser_goto_row106[] = {
+static int parser_goto_row104[] = {
4,
-1, 516,
473, 667,
504, 697,
681, 858
};
-static int parser_goto_row107[] = {
+static int parser_goto_row105[] = {
2,
-1, 873,
- 874, 1019
+ 874, 1027
};
-static int parser_goto_row108[] = {
+static int parser_goto_row106[] = {
3,
-1, 342,
629, 815,
- 1037, 1196
+ 1045, 1206
};
-static int parser_goto_row109[] = {
+static int parser_goto_row107[] = {
2,
-1, 343,
552, 744
};
-static int parser_goto_row110[] = {
+static int parser_goto_row108[] = {
2,
-1, 822,
638, 825
};
-static int parser_goto_row111[] = {
- 155,
+static int parser_goto_row109[] = {
+ 157,
-1, 194,
13, 80,
27, 80,
892, 907,
901, 139,
909, 80,
- 964, 1114,
+ 964, 1123,
979, 80,
- 1008, 139,
- 1009, 139,
- 1028, 80,
- 1047, 139,
- 1048, 139,
- 1049, 139,
- 1053, 80,
- 1054, 139,
+ 1016, 139,
+ 1017, 139,
+ 1036, 80,
1055, 139,
- 1080, 440,
- 1102, 1249,
- 1103, 1114,
- 1104, 1114,
- 1105, 1114,
- 1148, 80,
- 1198, 907,
- 1201, 671,
- 1210, 139,
- 1211, 139,
- 1241, 1114,
- 1243, 1114,
- 1321, 1460,
- 1348, 907,
- 1350, 80,
- 1354, 139,
- 1355, 139,
- 1360, 80,
- 1367, 440,
- 1391, 1114,
- 1393, 1114,
- 1394, 1114,
- 1396, 1114,
- 1397, 1114,
- 1398, 1114,
- 1399, 1114,
- 1400, 1114,
- 1401, 1114,
- 1402, 1114,
- 1403, 1114,
- 1404, 1114,
- 1405, 1114,
- 1406, 1114,
- 1407, 1114,
- 1408, 1114,
- 1409, 1114,
- 1410, 1114,
- 1411, 1114,
- 1412, 1114,
- 1413, 1114,
- 1414, 1541,
- 1478, 907,
- 1479, 907,
- 1484, 907,
- 1488, 139,
- 1489, 139,
- 1490, 139,
- 1491, 139,
- 1499, 440,
- 1510, 1605,
- 1514, 1114,
- 1568, 440,
- 1581, 139,
- 1594, 139,
- 1595, 139,
- 1616, 1460,
- 1640, 1702,
- 1650, 907,
- 1681, 80,
- 1685, 80,
- 1728, 440,
+ 1056, 139,
+ 1057, 139,
+ 1058, 80,
+ 1062, 80,
+ 1063, 139,
+ 1064, 139,
+ 1089, 440,
+ 1111, 1261,
+ 1112, 1123,
+ 1113, 1123,
+ 1114, 1123,
+ 1156, 80,
+ 1166, 1348,
+ 1208, 907,
+ 1211, 671,
+ 1216, 80,
+ 1222, 139,
+ 1223, 139,
+ 1253, 1123,
+ 1255, 1123,
+ 1380, 907,
+ 1382, 80,
+ 1386, 139,
+ 1387, 139,
+ 1393, 80,
+ 1400, 440,
+ 1424, 1123,
+ 1426, 1123,
+ 1427, 1123,
+ 1429, 1123,
+ 1430, 1123,
+ 1431, 1123,
+ 1432, 1123,
+ 1433, 1123,
+ 1434, 1123,
+ 1435, 1123,
+ 1436, 1123,
+ 1437, 1123,
+ 1438, 1123,
+ 1439, 1123,
+ 1440, 1123,
+ 1441, 1123,
+ 1442, 1123,
+ 1443, 1123,
+ 1444, 1123,
+ 1445, 1123,
+ 1446, 1123,
+ 1447, 1564,
+ 1482, 440,
+ 1501, 907,
+ 1502, 907,
+ 1507, 907,
+ 1511, 139,
+ 1512, 139,
+ 1513, 139,
+ 1514, 139,
+ 1522, 440,
+ 1533, 1634,
+ 1537, 1123,
+ 1601, 1676,
+ 1610, 139,
+ 1623, 139,
+ 1624, 139,
+ 1645, 1348,
+ 1655, 80,
+ 1659, 80,
+ 1692, 907,
+ 1721, 80,
+ 1729, 80,
+ 1730, 80,
1733, 80,
+ 1738, 80,
1741, 80,
- 1742, 80,
- 1745, 80,
- 1750, 80,
- 1753, 80,
- 1775, 907,
+ 1776, 440,
+ 1782, 80,
1789, 80,
- 1796, 80,
- 1801, 80,
- 1806, 80,
- 1864, 1114
+ 1794, 80,
+ 1799, 80,
+ 1817, 907,
+ 1883, 1123
};
-static int parser_goto_row112[] = {
+static int parser_goto_row110[] = {
1,
-1, 839
};
-static int parser_goto_row113[] = {
+static int parser_goto_row111[] = {
6,
- -1, 1307,
+ -1, 1318,
467, 662,
- 1430, 1552,
- 1558, 1621,
- 1560, 1624,
- 1562, 1627
+ 1463, 1575,
+ 1472, 1582,
+ 1474, 1585,
+ 1476, 1588
};
-static int parser_goto_row114[] = {
+static int parser_goto_row112[] = {
22,
-1, 81,
83, 260,
918, 260,
939, 260,
957, 260,
- 1016, 260,
- 1131, 260,
- 1134, 260,
+ 1024, 260,
+ 1140, 260,
+ 1143, 260,
1357, 260,
- 1469, 260,
- 1543, 260,
- 1662, 260,
- 1705, 260
+ 1389, 260,
+ 1566, 260,
+ 1679, 260,
+ 1704, 260
};
-static int parser_goto_row115[] = {
- 184,
+static int parser_goto_row113[] = {
+ 186,
-1, 195,
13, 82,
27, 82,
798, 82,
805, 955,
807, 441,
- 841, 989,
+ 841, 997,
851, 140,
852, 140,
853, 140,
854, 140,
- 869, 1015,
+ 869, 1023,
887, 140,
888, 908,
890, 82,
892, 908,
901, 140,
909, 82,
- 918, 1056,
- 939, 1075,
- 957, 1090,
- 964, 1115,
+ 918, 1065,
+ 939, 1084,
+ 957, 1099,
+ 964, 1124,
979, 82,
- 1008, 140,
- 1009, 140,
- 1016, 1185,
- 1028, 82,
- 1047, 140,
- 1048, 140,
- 1049, 140,
- 1053, 82,
- 1054, 140,
+ 1016, 140,
+ 1017, 140,
+ 1024, 1195,
+ 1036, 82,
1055, 140,
- 1080, 441,
- 1102, 1115,
- 1103, 1115,
- 1104, 1115,
- 1105, 1115,
- 1131, 1288,
- 1144, 663,
- 1148, 82,
- 1198, 908,
- 1201, 1356,
- 1210, 140,
- 1211, 140,
- 1241, 1115,
- 1243, 1115,
- 1321, 1461,
- 1348, 908,
- 1350, 82,
- 1354, 140,
- 1355, 140,
+ 1056, 140,
+ 1057, 140,
+ 1058, 82,
+ 1062, 82,
+ 1063, 140,
+ 1064, 140,
+ 1089, 441,
+ 1111, 1124,
+ 1112, 1124,
+ 1113, 1124,
+ 1114, 1124,
+ 1140, 1300,
+ 1152, 663,
+ 1156, 82,
+ 1166, 1349,
+ 1208, 908,
+ 1211, 1388,
+ 1216, 82,
+ 1222, 140,
+ 1223, 140,
+ 1253, 1124,
+ 1255, 1124,
1357, 1492,
- 1360, 82,
- 1367, 441,
- 1391, 1115,
- 1393, 1115,
- 1394, 1115,
- 1396, 1115,
- 1397, 1115,
- 1398, 1115,
- 1399, 1115,
- 1400, 1115,
- 1401, 1115,
- 1402, 1115,
- 1403, 1115,
- 1404, 1115,
- 1405, 1115,
- 1406, 1115,
- 1407, 1115,
- 1408, 1115,
- 1409, 1115,
- 1410, 1115,
- 1411, 1115,
- 1412, 1115,
- 1413, 1115,
- 1414, 1542,
- 1430, 663,
- 1469, 1578,
- 1478, 908,
- 1479, 908,
- 1484, 908,
- 1488, 140,
- 1489, 140,
- 1490, 140,
- 1491, 140,
- 1499, 441,
- 1510, 1542,
- 1514, 1115,
- 1543, 1615,
- 1549, 663,
- 1558, 663,
- 1560, 663,
- 1562, 663,
- 1568, 441,
- 1581, 140,
- 1594, 140,
- 1595, 140,
- 1604, 1661,
- 1616, 1461,
- 1640, 1703,
- 1650, 908,
- 1662, 1724,
- 1681, 82,
- 1685, 82,
- 1705, 1768,
- 1728, 441,
+ 1380, 908,
+ 1382, 82,
+ 1386, 140,
+ 1387, 140,
+ 1389, 1515,
+ 1393, 82,
+ 1400, 441,
+ 1424, 1124,
+ 1426, 1124,
+ 1427, 1124,
+ 1429, 1124,
+ 1430, 1124,
+ 1431, 1124,
+ 1432, 1124,
+ 1433, 1124,
+ 1434, 1124,
+ 1435, 1124,
+ 1436, 1124,
+ 1437, 1124,
+ 1438, 1124,
+ 1439, 1124,
+ 1440, 1124,
+ 1441, 1124,
+ 1442, 1124,
+ 1443, 1124,
+ 1444, 1124,
+ 1445, 1124,
+ 1446, 1124,
+ 1447, 1565,
+ 1463, 663,
+ 1472, 663,
+ 1474, 663,
+ 1476, 663,
+ 1482, 441,
+ 1501, 908,
+ 1502, 908,
+ 1507, 908,
+ 1511, 140,
+ 1512, 140,
+ 1513, 140,
+ 1514, 140,
+ 1522, 441,
+ 1533, 1565,
+ 1537, 1124,
+ 1566, 1644,
+ 1572, 663,
+ 1601, 1677,
+ 1610, 140,
+ 1623, 140,
+ 1624, 140,
+ 1633, 1703,
+ 1645, 1349,
+ 1655, 82,
+ 1659, 82,
+ 1679, 1756,
+ 1692, 908,
+ 1704, 1772,
+ 1721, 82,
+ 1729, 82,
+ 1730, 82,
1733, 82,
+ 1738, 82,
1741, 82,
- 1742, 82,
- 1745, 82,
- 1750, 82,
- 1753, 82,
- 1775, 908,
+ 1776, 441,
+ 1782, 82,
1789, 82,
- 1796, 82,
- 1801, 82,
- 1806, 82,
- 1864, 1115
+ 1794, 82,
+ 1799, 82,
+ 1817, 908,
+ 1883, 1124
};
-static int parser_goto_row116[] = {
+static int parser_goto_row114[] = {
12,
- -1, 1310,
- 1311, 1432,
- 1740, 1793,
- 1749, 1802,
+ -1, 1321,
+ 1322, 1465,
+ 1728, 1786,
+ 1737, 1795,
+ 1781, 1830,
+ 1787, 1833,
1788, 1834,
- 1794, 1837,
- 1795, 1838,
- 1803, 1844,
- 1805, 1845,
- 1835, 1872,
- 1839, 1873,
- 1846, 1876
+ 1796, 1840,
+ 1798, 1841,
+ 1831, 1869,
+ 1835, 1870,
+ 1842, 1873
};
-static int parser_goto_row117[] = {
+static int parser_goto_row115[] = {
14,
-1, 91,
824, 972,
- 969, 1137,
- 970, 1138,
- 973, 1139,
- 978, 1146,
- 1155, 1316,
- 1616, 1672,
- 1671, 1729,
- 1673, 1730,
- 1680, 1739,
- 1744, 1798,
- 1830, 1868,
- 1867, 1887
+ 969, 1145,
+ 970, 1146,
+ 973, 1147,
+ 978, 1154,
+ 989, 1161,
+ 1645, 1714,
+ 1654, 1727,
+ 1713, 1777,
+ 1715, 1778,
+ 1732, 1791,
+ 1865, 1887,
+ 1886, 1895
};
-static int parser_goto_row118[] = {
- 50,
+static int parser_goto_row116[] = {
+ 55,
-1, 591,
0, 12,
3, 23,
742, 909,
743, 160,
798, 160,
- 888, 1028,
- 892, 1028,
- 986, 1158,
- 1051, 242,
- 1137, 1158,
- 1146, 1158,
- 1156, 1158,
- 1160, 1158,
- 1198, 1350,
- 1206, 472,
- 1293, 1158,
- 1348, 1350,
- 1360, 160,
- 1478, 909,
- 1479, 1028,
- 1484, 1028,
- 1650, 1350,
- 1739, 1158,
- 1775, 1028,
- 1798, 1158
+ 839, 992,
+ 888, 1036,
+ 892, 1036,
+ 990, 992,
+ 994, 992,
+ 1060, 242,
+ 1145, 992,
+ 1154, 992,
+ 1208, 1382,
+ 1218, 472,
+ 1304, 992,
+ 1319, 992,
+ 1380, 1382,
+ 1393, 160,
+ 1468, 992,
+ 1501, 909,
+ 1502, 1036,
+ 1507, 1036,
+ 1579, 992,
+ 1692, 1382,
+ 1727, 992,
+ 1785, 992,
+ 1791, 992,
+ 1817, 1036,
+ 1836, 992
};
-static int parser_goto_row119[] = {
- 13,
+static int parser_goto_row117[] = {
+ 18,
-1, 98,
0, 13,
5, 27,
18, 27,
28, 27,
- 986, 1159,
- 1137, 1292,
- 1146, 1292,
- 1156, 1159,
- 1160, 1324,
- 1293, 1292,
- 1739, 1292,
- 1798, 1292
+ 839, 993,
+ 990, 993,
+ 994, 1169,
+ 1145, 1303,
+ 1154, 1303,
+ 1304, 1303,
+ 1319, 1303,
+ 1468, 993,
+ 1579, 993,
+ 1727, 1303,
+ 1785, 1303,
+ 1791, 1303,
+ 1836, 1303
};
-static int parser_goto_row120[] = {
+static int parser_goto_row118[] = {
249,
-1, 14,
35, 163,
828, 975,
829, 976,
831, 983,
- 868, 1013,
- 872, 1018,
- 889, 1032,
- 891, 1034,
- 893, 1037,
- 899, 1043,
- 924, 1060,
- 934, 1069,
- 942, 1078,
- 945, 1080,
- 948, 1082,
- 952, 1085,
- 966, 1132,
- 977, 1144,
- 985, 1151,
- 990, 1162,
- 991, 1163,
- 1020, 1187,
- 1021, 1188,
- 1046, 1201,
- 1059, 1212,
- 1065, 1215,
- 1066, 1216,
- 1070, 1219,
- 1084, 1232,
- 1091, 1237,
- 1092, 1238,
- 1094, 1240,
- 1095, 1241,
- 1096, 1242,
- 1097, 1243,
- 1116, 1263,
- 1142, 1300,
- 1160, 1325,
- 1181, 1337,
- 1186, 1341,
- 1193, 1345,
- 1194, 1346,
- 1196, 1347,
- 1199, 1352,
- 1213, 1361,
- 1224, 1367,
- 1229, 1368,
- 1248, 1384,
- 1264, 1391,
- 1265, 1393,
- 1266, 1394,
- 1267, 1395,
- 1268, 1396,
- 1269, 1397,
- 1270, 1398,
- 1271, 1399,
- 1272, 1400,
- 1273, 1401,
- 1274, 1402,
- 1275, 1403,
- 1276, 1404,
- 1277, 1405,
- 1278, 1406,
- 1279, 1407,
- 1280, 1408,
- 1281, 1409,
- 1282, 1410,
- 1283, 1411,
- 1284, 1412,
- 1285, 1413,
- 1286, 1414,
- 1297, 1423,
- 1298, 1424,
- 1301, 1426,
- 1314, 1437,
- 1327, 1470,
- 1328, 1471,
- 1343, 1476,
- 1344, 1477,
- 1369, 1499,
- 1375, 1502,
- 1377, 1503,
- 1378, 1504,
- 1386, 1510,
- 1392, 1514,
- 1422, 1547,
- 1427, 1549,
- 1435, 1554,
- 1438, 1557,
- 1446, 1568,
- 1474, 1581,
- 1480, 1587,
- 1495, 1597,
- 1497, 1598,
- 1507, 1604,
- 1539, 1610,
- 1551, 1618,
- 1560, 832,
- 1562, 832,
- 1563, 1628,
- 1574, 1640,
- 1579, 1647,
- 1582, 1649,
- 1602, 1659,
- 1621, 832,
- 1624, 832,
- 1627, 832,
- 1652, 1718,
- 1665, 1725,
- 1666, 1726,
- 1670, 1728,
- 1674, 1731,
- 1676, 1732,
- 1720, 1776,
- 1746, 1800,
- 1781, 1828,
- 1782, 1829,
- 1785, 1831,
- 1786, 1832,
- 1787, 1833,
- 1826, 1864,
- 1865, 1886,
- 1869, 1888
+ 868, 1021,
+ 872, 1026,
+ 889, 1040,
+ 891, 1042,
+ 893, 1045,
+ 899, 1051,
+ 924, 1069,
+ 934, 1078,
+ 942, 1087,
+ 945, 1089,
+ 948, 1091,
+ 952, 1094,
+ 966, 1141,
+ 977, 1152,
+ 985, 1159,
+ 994, 1170,
+ 998, 1172,
+ 999, 1173,
+ 1028, 1197,
+ 1029, 1198,
+ 1054, 1211,
+ 1068, 1224,
+ 1074, 1227,
+ 1075, 1228,
+ 1079, 1231,
+ 1093, 1244,
+ 1100, 1249,
+ 1101, 1250,
+ 1103, 1252,
+ 1104, 1253,
+ 1105, 1254,
+ 1106, 1255,
+ 1125, 1275,
+ 1150, 1311,
+ 1191, 1369,
+ 1196, 1373,
+ 1203, 1377,
+ 1204, 1378,
+ 1206, 1379,
+ 1209, 1384,
+ 1225, 1394,
+ 1236, 1400,
+ 1241, 1401,
+ 1260, 1417,
+ 1276, 1424,
+ 1277, 1426,
+ 1278, 1427,
+ 1279, 1428,
+ 1280, 1429,
+ 1281, 1430,
+ 1282, 1431,
+ 1283, 1432,
+ 1284, 1433,
+ 1285, 1434,
+ 1286, 1435,
+ 1287, 1436,
+ 1288, 1437,
+ 1289, 1438,
+ 1290, 1439,
+ 1291, 1440,
+ 1292, 1441,
+ 1293, 1442,
+ 1294, 1443,
+ 1295, 1444,
+ 1296, 1445,
+ 1297, 1446,
+ 1298, 1447,
+ 1308, 1456,
+ 1309, 1457,
+ 1312, 1459,
+ 1334, 1482,
+ 1359, 1493,
+ 1360, 1494,
+ 1375, 1499,
+ 1376, 1500,
+ 1402, 1522,
+ 1408, 1525,
+ 1410, 1526,
+ 1411, 1527,
+ 1419, 1533,
+ 1425, 1537,
+ 1455, 1570,
+ 1460, 1572,
+ 1466, 1576,
+ 1469, 1580,
+ 1474, 832,
+ 1476, 832,
+ 1477, 1589,
+ 1488, 1601,
+ 1497, 1610,
+ 1503, 1616,
+ 1518, 1626,
+ 1520, 1627,
+ 1530, 1633,
+ 1562, 1639,
+ 1574, 1647,
+ 1577, 1648,
+ 1582, 832,
+ 1585, 832,
+ 1588, 832,
+ 1608, 1689,
+ 1611, 1691,
+ 1631, 1701,
+ 1694, 1766,
+ 1707, 1773,
+ 1708, 1774,
+ 1712, 1776,
+ 1716, 1779,
+ 1718, 1780,
+ 1734, 1793,
+ 1768, 1818,
+ 1823, 1863,
+ 1824, 1864,
+ 1827, 1866,
+ 1828, 1867,
+ 1829, 1868,
+ 1861, 1883,
+ 1884, 1894,
+ 1888, 1896
};
-static int parser_goto_row121[] = {
+static int parser_goto_row119[] = {
4,
-1, 15,
22, 106,
25, 106,
165, 106
};
-static int parser_goto_row122[] = {
+static int parser_goto_row120[] = {
1,
-1, 16
};
-static int parser_goto_row123[] = {
+static int parser_goto_row121[] = {
4,
-1, 982,
- 1626, 1688,
- 1678, 1736,
- 1689, 1756
+ 1587, 1662,
+ 1652, 1724,
+ 1663, 1744
};
-static int parser_goto_row124[] = {
+static int parser_goto_row122[] = {
13,
-1, 442,
441, 624,
626, 813,
955, 624,
957, 627,
- 1090, 813,
- 1461, 624,
- 1469, 627,
- 1578, 813,
- 1703, 624,
- 1705, 627,
- 1768, 813
+ 1099, 813,
+ 1349, 624,
+ 1357, 627,
+ 1492, 813,
+ 1677, 624,
+ 1679, 627,
+ 1756, 813
};
-static int parser_goto_row125[] = {
+static int parser_goto_row123[] = {
5,
-1, 443,
805, 956,
- 1321, 1462,
- 1616, 1462,
- 1640, 1704
+ 1166, 1350,
+ 1601, 1678,
+ 1645, 1350
};
-static int parser_goto_row126[] = {
+static int parser_goto_row124[] = {
1,
- -1, 1519
+ -1, 1542
};
-static int parser_goto_row127[] = {
+static int parser_goto_row125[] = {
2,
- -1, 1116,
- 1864, 1885
+ -1, 1125,
+ 1883, 1893
};
-static int parser_goto_row128[] = {
+static int parser_goto_row126[] = {
1,
- -1, 1117
+ -1, 1126
};
-static int parser_goto_row129[] = {
+static int parser_goto_row127[] = {
6,
- -1, 1118,
- 1241, 1379,
- 1391, 1513,
- 1393, 1515,
- 1394, 1516,
- 1514, 1606
+ -1, 1127,
+ 1253, 1412,
+ 1424, 1536,
+ 1426, 1538,
+ 1427, 1539,
+ 1537, 1635
};
-static int parser_goto_row130[] = {
+static int parser_goto_row128[] = {
1,
- -1, 1119
+ -1, 1128
};
-static int parser_goto_row131[] = {
+static int parser_goto_row129[] = {
8,
- -1, 1120,
- 1397, 1521,
- 1398, 1522,
- 1399, 1523,
- 1400, 1524,
- 1401, 1525,
- 1402, 1526,
- 1403, 1527
+ -1, 1129,
+ 1430, 1544,
+ 1431, 1545,
+ 1432, 1546,
+ 1433, 1547,
+ 1434, 1548,
+ 1435, 1549,
+ 1436, 1550
};
-static int parser_goto_row132[] = {
+static int parser_goto_row130[] = {
2,
- -1, 1121,
- 1396, 1520
+ -1, 1130,
+ 1429, 1543
};
-static int parser_goto_row133[] = {
+static int parser_goto_row131[] = {
2,
- -1, 1122,
- 1404, 1528
+ -1, 1131,
+ 1437, 1551
};
-static int parser_goto_row134[] = {
+static int parser_goto_row132[] = {
2,
- -1, 1123,
- 1405, 1529
+ -1, 1132,
+ 1438, 1552
};
-static int parser_goto_row135[] = {
+static int parser_goto_row133[] = {
3,
- -1, 1124,
- 1406, 1530,
- 1407, 1531
+ -1, 1133,
+ 1439, 1553,
+ 1440, 1554
};
-static int parser_goto_row136[] = {
+static int parser_goto_row134[] = {
3,
- -1, 1125,
- 1408, 1532,
- 1409, 1533
+ -1, 1134,
+ 1441, 1555,
+ 1442, 1556
};
-static int parser_goto_row137[] = {
+static int parser_goto_row135[] = {
5,
- -1, 1126,
- 1410, 1534,
- 1411, 1535,
- 1412, 1536,
- 1413, 1537
+ -1, 1135,
+ 1443, 1557,
+ 1444, 1558,
+ 1445, 1559,
+ 1446, 1560
};
-static int parser_goto_row138[] = {
+static int parser_goto_row136[] = {
5,
- -1, 1127,
- 1103, 1251,
- 1104, 1252,
- 1105, 1253,
- 1243, 1383
+ -1, 1136,
+ 1112, 1263,
+ 1113, 1264,
+ 1114, 1265,
+ 1255, 1416
};
-static int parser_goto_row139[] = {
+static int parser_goto_row137[] = {
1,
- -1, 1128
+ -1, 1137
};
-static int parser_goto_row140[] = {
+static int parser_goto_row138[] = {
2,
- -1, 1129,
- 1102, 1250
+ -1, 1138,
+ 1111, 1262
};
-static int parser_goto_row141[] = {
+static int parser_goto_row139[] = {
1,
-1, -1
};
-static int parser_goto_row142[] = {
+static int parser_goto_row140[] = {
1,
- -1, 1130
+ -1, 1139
};
-static int parser_goto_row143[] = {
+static int parser_goto_row141[] = {
4,
-1, 389,
281, 507,
346, 557,
509, 701
};
-static int parser_goto_row144[] = {
+static int parser_goto_row142[] = {
1,
-1, -1
};
-static int parser_goto_row145[] = {
+static int parser_goto_row143[] = {
1,
- -1, 1463
+ -1, 1351
};
-static int parser_goto_row146[] = {
+static int parser_goto_row144[] = {
4,
-1, 141,
- 1321, 1464,
- 1581, 1648,
- 1616, 1464
+ 1166, 1352,
+ 1610, 1690,
+ 1645, 1352
};
-static int parser_goto_row147[] = {
+static int parser_goto_row145[] = {
1,
-1, 142
};
-static int parser_goto_row148[] = {
+static int parser_goto_row146[] = {
6,
-1, 143,
280, 506,
522, 710,
708, 875
};
-static int parser_goto_row149[] = {
+static int parser_goto_row147[] = {
1,
-1, 144
};
-static int parser_goto_row150[] = {
+static int parser_goto_row148[] = {
8,
-1, 145,
525, 713,
530, 718,
531, 719
};
-static int parser_goto_row151[] = {
+static int parser_goto_row149[] = {
2,
-1, 146,
524, 712
};
-static int parser_goto_row152[] = {
+static int parser_goto_row150[] = {
2,
-1, 147,
532, 720
};
-static int parser_goto_row153[] = {
+static int parser_goto_row151[] = {
2,
-1, 148,
533, 721
};
-static int parser_goto_row154[] = {
+static int parser_goto_row152[] = {
3,
-1, 149,
534, 722,
535, 723
};
-static int parser_goto_row155[] = {
+static int parser_goto_row153[] = {
3,
-1, 150,
536, 724,
537, 725
};
-static int parser_goto_row156[] = {
+static int parser_goto_row154[] = {
5,
-1, 151,
538, 726,
540, 728,
541, 729
};
-static int parser_goto_row157[] = {
+static int parser_goto_row155[] = {
1,
-1, 152
};
-static int parser_goto_row158[] = {
+static int parser_goto_row156[] = {
1,
-1, 153
};
-static int parser_goto_row159[] = {
+static int parser_goto_row157[] = {
4,
-1, 154,
125, 289,
- 1321, 1465,
- 1616, 1465
+ 1166, 1353,
+ 1645, 1353
};
-static int parser_goto_row160[] = {
+static int parser_goto_row158[] = {
1,
-1, -1
};
-static int parser_goto_row161[] = {
+static int parser_goto_row159[] = {
2,
-1, 155,
- 1076, 1227
+ 1085, 1239
};
-static int parser_goto_row162[] = {
+static int parser_goto_row160[] = {
1,
-1, 595
};
-static int parser_goto_row163[] = {
+static int parser_goto_row161[] = {
7,
-1, 596,
592, 783,
- 1071, 1220,
- 1218, 1364,
- 1362, 1496,
- 1381, 1506,
- 1505, 1603
+ 1080, 1232,
+ 1230, 1397,
+ 1395, 1519,
+ 1414, 1529,
+ 1528, 1632
};
-static int parser_goto_row164[] = {
+static int parser_goto_row162[] = {
1,
-1, 787
};
-static int parser_goto_row165[] = {
+static int parser_goto_row163[] = {
1,
-1, -1
};
+static int parser_goto_row164[] = {
+ 2,
+ -1, 1354,
+ 1645, 1715
+};
+static int parser_goto_row165[] = {
+ 1,
+ -1, 1355
+};
static int parser_goto_row166[] = {
2,
- -1, 1466,
- 1616, 1673
+ -1, 1415,
+ 1417, 1532
};
static int parser_goto_row167[] = {
1,
- -1, 1467
+ -1, -1
};
static int parser_goto_row168[] = {
- 2,
- -1, 1382,
- 1384, 1509
+ 1,
+ -1, -1
};
static int parser_goto_row169[] = {
1,
-1, -1
};
static int parser_goto_row184[] = {
- 1,
- -1, -1
-};
-static int parser_goto_row185[] = {
- 1,
- -1, -1
-};
-static int parser_goto_row186[] = {
8,
- -1, 1029,
- 892, 1035,
- 1198, 1351,
- 1348, 1481,
- 1479, 1585,
- 1484, 1588,
- 1650, 1717,
- 1775, 1824
+ -1, 1037,
+ 892, 1043,
+ 1208, 1383,
+ 1380, 1504,
+ 1502, 1614,
+ 1507, 1617,
+ 1692, 1765,
+ 1817, 1859
};
-static int parser_goto_row187[] = {
+static int parser_goto_row185[] = {
3,
- -1, 1030,
+ -1, 1038,
742, 910,
- 1478, 1584
+ 1501, 1613
};
-static int parser_goto_row188[] = {
+static int parser_goto_row186[] = {
1,
-1, 911
};
-static int parser_goto_row189[] = {
+static int parser_goto_row187[] = {
1,
-1, 912
};
-static int parser_goto_row190[] = {
+static int parser_goto_row188[] = {
1,
-1, 913
};
-static int parser_goto_row191[] = {
+static int parser_goto_row189[] = {
1,
-1, 914
};
-static int parser_goto_row192[] = {
+static int parser_goto_row190[] = {
1,
-1, 915
};
-static int parser_goto_row193[] = {
+static int parser_goto_row191[] = {
1,
-1, 916
};
-static int parser_goto_row194[] = {
+static int parser_goto_row192[] = {
1,
-1, 917
};
-static int parser_goto_row195[] = {
+static int parser_goto_row193[] = {
1,
-1, -1
};
-static int parser_goto_row196[] = {
+static int parser_goto_row194[] = {
10,
-1, 161,
37, 168,
743, 920,
798, 950,
- 888, 1031,
- 892, 1036,
- 1360, 1494,
- 1479, 1586,
- 1484, 1589,
- 1775, 1825
+ 888, 1039,
+ 892, 1044,
+ 1393, 1517,
+ 1502, 1615,
+ 1507, 1618,
+ 1817, 1860
};
-static int parser_goto_row197[] = {
+static int parser_goto_row195[] = {
1,
-1, -1
};
-static int parser_goto_row198[] = {
+static int parser_goto_row196[] = {
1,
-1, 444
};
-static int parser_goto_row199[] = {
+static int parser_goto_row197[] = {
1,
- -1, 1468
+ -1, 1356
};
-static int parser_goto_row200[] = {
+static int parser_goto_row198[] = {
1,
-1, -1
};
-static int parser_goto_row201[] = {
+static int parser_goto_row199[] = {
1,
-1, -1
};
-static int parser_goto_row202[] = {
+static int parser_goto_row200[] = {
1,
- -1, 1321
+ -1, 1166
};
-static int parser_goto_row203[] = {
+static int parser_goto_row201[] = {
1,
-1, 17
};
-static int parser_goto_row204[] = {
+static int parser_goto_row202[] = {
2,
-1, 18,
5, 28
};
-static int parser_goto_row205[] = {
+static int parser_goto_row203[] = {
4,
-1, 19,
5, 29,
18, 94,
28, 111
};
-static int parser_goto_row206[] = {
+static int parser_goto_row204[] = {
8,
-1, 20,
5, 30,
94, 265,
111, 274
};
-static int parser_goto_row207[] = {
+static int parser_goto_row205[] = {
1,
- -1, 1438
+ -1, 1471
+};
+static int parser_goto_row206[] = {
+ 1,
+ -1, 994
+};
+static int parser_goto_row207[] = {
+ 4,
+ -1, 1304,
+ 1154, 1319,
+ 1727, 1785,
+ 1791, 1836
};
static int parser_goto_row208[] = {
1,
- -1, 1160
+ -1, 1312
};
static int parser_goto_row209[] = {
1,
- -1, 1301
+ -1, 1462
};
static int parser_goto_row210[] = {
1,
- -1, 1429
+ -1, 1077
};
static int parser_goto_row211[] = {
- 1,
- -1, 1068
-};
-static int parser_goto_row212[] = {
3,
-1, 243,
331, 546,
- 1051, 1206
+ 1060, 1218
};
-static int parser_goto_row213[] = {
+static int parser_goto_row212[] = {
1,
-1, 618
};
-static int parser_goto_row214[] = {
+static int parser_goto_row213[] = {
1,
-1, 634
};
-static int parser_goto_row215[] = {
+static int parser_goto_row214[] = {
1,
-1, 252
};
-static int parser_goto_row216[] = {
+static int parser_goto_row215[] = {
1,
-1, 944
};
-static int parser_goto_row217[] = {
- 1,
- -1, 1293
-};
-static int parser_goto_row218[] = {
+static int parser_goto_row216[] = {
2,
- -1, 1371,
- 1467, 1576
+ -1, 1404,
+ 1355, 1490
};
-static int parser_goto_row219[] = {
+static int parser_goto_row217[] = {
1,
-1, 874
};
-static int parser_goto_row220[] = {
- 168,
+static int parser_goto_row218[] = {
+ 170,
-1, 196,
13, 83,
27, 83,
852, 156,
853, 156,
854, 156,
- 869, 1016,
+ 869, 1024,
887, 156,
888, 918,
890, 83,
892, 918,
901, 156,
909, 83,
- 964, 1131,
- 968, 1134,
+ 964, 1140,
+ 968, 1143,
979, 83,
- 1008, 156,
- 1009, 156,
- 1028, 83,
- 1047, 156,
- 1048, 156,
- 1049, 156,
- 1053, 83,
- 1054, 156,
+ 1016, 156,
+ 1017, 156,
+ 1036, 83,
1055, 156,
- 1080, 445,
- 1102, 1131,
- 1103, 1131,
- 1104, 1131,
- 1105, 1131,
- 1144, 664,
- 1148, 83,
- 1198, 918,
- 1201, 1357,
- 1210, 156,
- 1211, 156,
- 1241, 1131,
- 1243, 1131,
- 1321, 1469,
- 1348, 918,
- 1350, 83,
- 1354, 156,
- 1355, 156,
- 1360, 83,
- 1367, 445,
- 1391, 1131,
- 1393, 1131,
- 1394, 1131,
- 1396, 1131,
- 1397, 1131,
- 1398, 1131,
- 1399, 1131,
- 1400, 1131,
- 1401, 1131,
- 1402, 1131,
- 1403, 1131,
- 1404, 1131,
- 1405, 1131,
- 1406, 1131,
- 1407, 1131,
- 1408, 1131,
- 1409, 1131,
- 1410, 1131,
- 1411, 1131,
- 1412, 1131,
- 1413, 1131,
- 1414, 1543,
- 1430, 664,
- 1478, 918,
- 1479, 918,
- 1484, 918,
- 1488, 156,
- 1489, 156,
- 1490, 156,
- 1491, 156,
- 1499, 445,
- 1510, 1543,
- 1514, 1131,
- 1549, 664,
- 1558, 664,
- 1560, 664,
- 1562, 664,
- 1568, 445,
- 1581, 156,
- 1594, 156,
- 1595, 156,
- 1604, 1662,
- 1616, 1469,
- 1640, 1705,
- 1650, 918,
- 1681, 83,
- 1685, 83,
- 1728, 445,
+ 1056, 156,
+ 1057, 156,
+ 1058, 83,
+ 1062, 83,
+ 1063, 156,
+ 1064, 156,
+ 1089, 445,
+ 1111, 1140,
+ 1112, 1140,
+ 1113, 1140,
+ 1114, 1140,
+ 1152, 664,
+ 1156, 83,
+ 1166, 1357,
+ 1208, 918,
+ 1211, 1389,
+ 1216, 83,
+ 1222, 156,
+ 1223, 156,
+ 1253, 1140,
+ 1255, 1140,
+ 1380, 918,
+ 1382, 83,
+ 1386, 156,
+ 1387, 156,
+ 1393, 83,
+ 1400, 445,
+ 1424, 1140,
+ 1426, 1140,
+ 1427, 1140,
+ 1429, 1140,
+ 1430, 1140,
+ 1431, 1140,
+ 1432, 1140,
+ 1433, 1140,
+ 1434, 1140,
+ 1435, 1140,
+ 1436, 1140,
+ 1437, 1140,
+ 1438, 1140,
+ 1439, 1140,
+ 1440, 1140,
+ 1441, 1140,
+ 1442, 1140,
+ 1443, 1140,
+ 1444, 1140,
+ 1445, 1140,
+ 1446, 1140,
+ 1447, 1566,
+ 1463, 664,
+ 1472, 664,
+ 1474, 664,
+ 1476, 664,
+ 1482, 445,
+ 1501, 918,
+ 1502, 918,
+ 1507, 918,
+ 1511, 156,
+ 1512, 156,
+ 1513, 156,
+ 1514, 156,
+ 1522, 445,
+ 1533, 1566,
+ 1537, 1140,
+ 1572, 664,
+ 1601, 1679,
+ 1610, 156,
+ 1623, 156,
+ 1624, 156,
+ 1633, 1704,
+ 1645, 1357,
+ 1655, 83,
+ 1659, 83,
+ 1692, 918,
+ 1721, 83,
+ 1729, 83,
+ 1730, 83,
1733, 83,
+ 1738, 83,
1741, 83,
- 1742, 83,
- 1745, 83,
- 1750, 83,
- 1753, 83,
- 1775, 918,
+ 1776, 445,
+ 1782, 83,
1789, 83,
- 1796, 83,
- 1801, 83,
- 1806, 83,
- 1864, 1131
+ 1794, 83,
+ 1799, 83,
+ 1817, 918,
+ 1883, 1140
};
-static int parser_goto_row221[] = {
- 71,
+static int parser_goto_row219[] = {
+ 78,
-1, 164,
0, 21,
3, 24,
742, 24,
743, 24,
798, 24,
+ 839, 24,
888, 24,
890, 24,
892, 24,
979, 24,
- 986, 24,
- 1051, 24,
- 1053, 24,
- 1137, 24,
- 1146, 24,
- 1148, 24,
+ 990, 24,
+ 994, 21,
+ 1058, 24,
+ 1060, 24,
+ 1062, 24,
+ 1145, 24,
+ 1154, 24,
1156, 24,
- 1160, 21,
- 1198, 24,
- 1206, 24,
- 1293, 24,
- 1348, 24,
- 1360, 24,
- 1478, 24,
- 1479, 24,
- 1484, 24,
- 1650, 24,
- 1681, 24,
- 1685, 24,
+ 1208, 24,
+ 1216, 24,
+ 1218, 24,
+ 1304, 24,
+ 1319, 24,
+ 1380, 24,
+ 1393, 24,
+ 1468, 24,
+ 1501, 24,
+ 1502, 24,
+ 1507, 24,
+ 1579, 24,
+ 1655, 24,
+ 1659, 24,
+ 1692, 24,
+ 1721, 24,
+ 1727, 24,
+ 1729, 24,
+ 1730, 24,
1733, 24,
- 1739, 24,
+ 1738, 24,
1741, 24,
- 1742, 24,
- 1745, 24,
- 1750, 24,
- 1753, 24,
- 1775, 24,
+ 1782, 24,
+ 1785, 24,
1789, 24,
- 1796, 24,
- 1798, 24,
- 1801, 24,
- 1806, 24
+ 1791, 24,
+ 1794, 24,
+ 1799, 24,
+ 1817, 24,
+ 1836, 24
};
-static int parser_goto_row222[] = {
- 68,
+static int parser_goto_row220[] = {
+ 75,
-1, 165,
0, 22,
3, 25,
742, 25,
743, 25,
798, 25,
+ 839, 25,
888, 25,
890, 25,
892, 25,
979, 25,
- 986, 25,
- 1051, 25,
- 1053, 25,
- 1137, 25,
- 1146, 25,
- 1148, 25,
+ 990, 25,
+ 994, 22,
+ 1058, 25,
+ 1060, 25,
+ 1062, 25,
+ 1145, 25,
+ 1154, 25,
1156, 25,
- 1160, 22,
- 1198, 25,
- 1206, 25,
- 1293, 25,
- 1348, 25,
- 1360, 25,
- 1478, 25,
- 1479, 25,
- 1484, 25,
- 1650, 25,
- 1681, 25,
- 1685, 25,
+ 1208, 25,
+ 1216, 25,
+ 1218, 25,
+ 1304, 25,
+ 1319, 25,
+ 1380, 25,
+ 1393, 25,
+ 1468, 25,
+ 1501, 25,
+ 1502, 25,
+ 1507, 25,
+ 1579, 25,
+ 1655, 25,
+ 1659, 25,
+ 1692, 25,
+ 1721, 25,
+ 1727, 25,
+ 1729, 25,
+ 1730, 25,
1733, 25,
- 1739, 25,
+ 1738, 25,
1741, 25,
- 1742, 25,
- 1745, 25,
- 1750, 25,
- 1753, 25,
- 1775, 25,
+ 1782, 25,
+ 1785, 25,
1789, 25,
- 1796, 25,
- 1798, 25,
- 1801, 25,
- 1806, 25
+ 1791, 25,
+ 1794, 25,
+ 1799, 25,
+ 1817, 25,
+ 1836, 25
};
const int* const parser_goto_table[] = {
parser_goto_row217,
parser_goto_row218,
parser_goto_row219,
- parser_goto_row220,
- parser_goto_row221,
- parser_goto_row222
+ parser_goto_row220
};
--- /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 standard::kernel
+
+abstract class A
+ var x: Int
+ var y: Int is abstract
+end
+
+class B
+ super A
+ redef fun y=(v) do v.output
+end
+
+var b = new B(1,2)
+b.x.output
base_formal_subtype.nit:59,10--18: Warning: expression is already a `E` since it is a `VVE`.
base_formal_subtype.nit:60,10--23: Warning: expression is already a `Object` since it is a `VVE`.
base_formal_subtype.nit:62,10--20: Warning: expression is already a `VGE`.
-base_formal_subtype.nit:63,10--20: Warning: expression is already a `G[E]` since it is a `VGE`.
-base_formal_subtype.nit:64,10--25: Warning: expression is already a `G[Object]` since it is a `VGE`.
+base_formal_subtype.nit:63,10--21: Warning: expression is already a `G[E]` since it is a `VGE`.
+base_formal_subtype.nit:64,10--26: Warning: expression is already a `G[Object]` since it is a `VGE`.
base_formal_subtype.nit:65,10--23: Warning: expression is already a `Object` since it is a `VGE`.
base_formal_subtype.nit:67,10--22: Warning: expression is already a `VVGE`.
base_formal_subtype.nit:68,10--21: Warning: expression is already a `VGE` since it is a `VVGE`.
-base_formal_subtype.nit:69,10--21: Warning: expression is already a `G[E]` since it is a `VVGE`.
-base_formal_subtype.nit:70,10--26: Warning: expression is already a `G[Object]` since it is a `VVGE`.
+base_formal_subtype.nit:69,10--22: Warning: expression is already a `G[E]` since it is a `VVGE`.
+base_formal_subtype.nit:70,10--27: Warning: expression is already a `G[Object]` since it is a `VVGE`.
base_formal_subtype.nit:71,10--24: Warning: expression is already a `Object` since it is a `VVGE`.
base_formal_subtype.nit:73,10--22: Warning: expression is already a `VGVE`.
-base_formal_subtype.nit:74,10--22: Warning: expression is already a `G[VE]` since it is a `VGVE`.
-base_formal_subtype.nit:75,10--21: Warning: expression is already a `G[E]` since it is a `VGVE`.
-base_formal_subtype.nit:76,10--26: Warning: expression is already a `G[Object]` since it is a `VGVE`.
+base_formal_subtype.nit:74,10--23: Warning: expression is already a `G[VE]` since it is a `VGVE`.
+base_formal_subtype.nit:75,10--22: Warning: expression is already a `G[E]` since it is a `VGVE`.
+base_formal_subtype.nit:76,10--27: Warning: expression is already a `G[Object]` since it is a `VGVE`.
base_formal_subtype.nit:77,10--24: Warning: expression is already a `Object` since it is a `VGVE`.
base_formal_subtype.nit:79,10--24: Warning: expression is already a `VGVVE`.
-base_formal_subtype.nit:80,10--24: Warning: expression is already a `G[VVE]` since it is a `VGVVE`.
-base_formal_subtype.nit:81,10--23: Warning: expression is already a `G[VE]` since it is a `VGVVE`.
-base_formal_subtype.nit:82,10--22: Warning: expression is already a `G[E]` since it is a `VGVVE`.
-base_formal_subtype.nit:83,10--27: Warning: expression is already a `G[Object]` since it is a `VGVVE`.
+base_formal_subtype.nit:80,10--25: Warning: expression is already a `G[VVE]` since it is a `VGVVE`.
+base_formal_subtype.nit:81,10--24: Warning: expression is already a `G[VE]` since it is a `VGVVE`.
+base_formal_subtype.nit:82,10--23: Warning: expression is already a `G[E]` since it is a `VGVVE`.
+base_formal_subtype.nit:83,10--28: Warning: expression is already a `G[Object]` since it is a `VGVVE`.
base_formal_subtype.nit:84,10--25: Warning: expression is already a `Object` since it is a `VGVVE`.
-alt/base_gen2_alt1.nit:61,13--17: Type Error: `A` is not a generic class.
+alt/base_gen2_alt1.nit:61,13--18: Type Error: `A` is not a generic class.
-alt/base_gen2_alt3.nit:63,13--22: Type Error: expected 1 formal argument(s) for `B[E: nullable Object]`; got 2.
+alt/base_gen2_alt3.nit:63,13--23: Type Error: expected 1 formal argument(s) for `B[E: nullable Object]`; got 2.
-alt/base_gen2_alt5.nit:65,13--17: Type Error: expected 2 formal argument(s) for `C[F: nullable Object, G: nullable Object]`; got 1.
+alt/base_gen2_alt5.nit:65,13--18: Type Error: expected 2 formal argument(s) for `C[F: nullable Object, G: nullable Object]`; got 1.
base_isa_gen1.nit:62,8--14: Warning: expression is already a `A` since it is a `F`.
-base_isa_gen1.nit:65,8--29: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
-base_isa_gen1.nit:66,8--29: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
+base_isa_gen1.nit:65,8--30: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
+base_isa_gen1.nit:66,8--30: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
true
-base_isa_gen2.nit:39,8--21: Warning: expression is already a `A[Object]`.
-base_isa_gen2.nit:41,8--21: Warning: expression is already a `A[Object]` since it is a `B[Object]`.
-base_isa_gen2.nit:44,8--21: Warning: expression is already a `A[Object]` since it is a `C[Object]`.
-base_isa_gen2.nit:48,8--21: Warning: expression is already a `A[Object]` since it is a `D[Object, Object]`.
+base_isa_gen2.nit:39,8--22: Warning: expression is already a `A[Object]`.
+base_isa_gen2.nit:41,8--22: Warning: expression is already a `A[Object]` since it is a `B[Object]`.
+base_isa_gen2.nit:44,8--22: Warning: expression is already a `A[Object]` since it is a `C[Object]`.
+base_isa_gen2.nit:48,8--22: Warning: expression is already a `A[Object]` since it is a `D[Object, Object]`.
true
base_isa_gen4.nit:34,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen4.nit:36,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen4.nit:40,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen4.nit:42,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen4.nit:36,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen4.nit:40,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen4.nit:42,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
true
base_isa_gen5.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen5.nit:41,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen5.nit:46,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen5.nit:48,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen5.nit:41,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen5.nit:46,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen5.nit:48,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
true
-base_isa_gen8.nit:49,8--17: Warning: expression is already a `A[X]`.
-base_isa_gen8.nit:50,8--17: Warning: expression is already a `A[Y]`.
-base_isa_gen8.nit:51,8--17: Warning: expression is already a `A[Z]`.
-base_isa_gen8.nit:53,8--21: Warning: expression is already a `B[Object]` since it is a `B[X]`.
-base_isa_gen8.nit:55,8--21: Warning: expression is already a `C[X, X]`.
-base_isa_gen8.nit:56,8--21: Warning: expression is already a `C[X, Y]`.
-base_isa_gen8.nit:57,8--21: Warning: expression is already a `C[X, Z]`.
-base_isa_gen8.nit:59,8--22: Warning: expression is already a `D[X, Y, Z]`.
-base_isa_gen8.nit:60,8--28: Warning: expression is already a `E[X, Y, Z, Bool]`.
+base_isa_gen8.nit:49,8--18: Warning: expression is already a `A[X]`.
+base_isa_gen8.nit:50,8--18: Warning: expression is already a `A[Y]`.
+base_isa_gen8.nit:51,8--18: Warning: expression is already a `A[Z]`.
+base_isa_gen8.nit:53,8--22: Warning: expression is already a `B[Object]` since it is a `B[X]`.
+base_isa_gen8.nit:55,8--22: Warning: expression is already a `C[X, X]`.
+base_isa_gen8.nit:56,8--22: Warning: expression is already a `C[X, Y]`.
+base_isa_gen8.nit:57,8--22: Warning: expression is already a `C[X, Z]`.
+base_isa_gen8.nit:59,8--23: Warning: expression is already a `D[X, Y, Z]`.
+base_isa_gen8.nit:60,8--29: Warning: expression is already a `E[X, Y, Z, Bool]`.
true
base_isa_nullable1.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Integer]`.
-base_isa_nullable1.nit:41,8--24: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
-base_isa_nullable1.nit:46,8--25: Warning: expression is already a `B[B[Integer]]`.
-base_isa_nullable1.nit:48,8--26: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
-base_isa_nullable1.nit:50,8--33: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
+base_isa_nullable1.nit:41,8--25: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
+base_isa_nullable1.nit:46,8--27: Warning: expression is already a `B[B[Integer]]`.
+base_isa_nullable1.nit:48,8--28: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
+base_isa_nullable1.nit:50,8--34: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
true
base_isa_nullable2.nit:27,8--23: Warning: expression is already a `nullable A` since it is a `A`.
-base_isa_nullable2.nit:29,8--30: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
-base_isa_nullable2.nit:30,8--39: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
-base_isa_nullable2.nit:33,8--30: Warning: expression is already a `C[nullable Object]`.
+base_isa_nullable2.nit:29,8--31: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
+base_isa_nullable2.nit:30,8--40: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
+base_isa_nullable2.nit:33,8--31: Warning: expression is already a `C[nullable Object]`.
true
-base_isa_vt_gen1.nit:30,10--34: Warning: expression is already a `Triple[T, U, V]`.
-base_isa_vt_gen1.nit:54,8--52: Warning: expression is already a `Triple[String, Int, nullable Object]`.
-base_isa_vt_gen1.nit:57,8--46: Warning: expression is already a `Triple[String, String, String]`.
-base_isa_vt_gen1.nit:60,8--48: Warning: expression is already a `Triple[String, String, B[String]]`.
-base_isa_vt_gen1.nit:63,8--46: Warning: expression is already a `Triple[String, String, String]`.
+base_isa_vt_gen1.nit:30,10--35: Warning: expression is already a `Triple[T, U, V]`.
+base_isa_vt_gen1.nit:54,8--53: Warning: expression is already a `Triple[String, Int, nullable Object]`.
+base_isa_vt_gen1.nit:57,8--47: Warning: expression is already a `Triple[String, String, String]`.
+base_isa_vt_gen1.nit:60,8--50: Warning: expression is already a `Triple[String, String, B[String]]`.
+base_isa_vt_gen1.nit:63,8--47: Warning: expression is already a `Triple[String, String, String]`.
true
-error_formal.nit:18,9--13: Type Error: formal type `T` cannot have formal parameters.
+error_formal.nit:18,9--14: Type Error: formal type `T` cannot have formal parameters.
-alt/error_needed_method_alt2.nit:47,10--27: Type Error: cannot instantiate interface `Collection[Int]`.
+alt/error_needed_method_alt2.nit:47,10--28: Type Error: cannot instantiate interface `Collection[Int]`.
error_operators.nit:47,11: Syntax Error: binary operator `<=>` requires exactly one parameter; got 0.
error_operators.nit:48,10: Syntax Error: binary operator `<<` requires exactly one parameter; got 0.
error_operators.nit:49,10: Syntax Error: binary operator `>>` requires exactly one parameter; got 0.
-error_operators.nit:50,14: Syntax Error: `foo=` requires at least 1 parameter(s); got 0.
+error_operators.nit:50,11: Syntax Error: `foo=` requires at least 1 parameter(s); got 0.
error_operators.nit:51,10: Syntax Error: `[]` requires at least 1 parameter(s); got 0.
error_operators.nit:52,9--14: Syntax Error: `[]=` requires at least 2 parameter(s); got 1.
error_operators.nit:57,7--18: Syntax Error: binary operator `+` requires exactly one parameter; got 3.
-alt/error_redef_1alt2_alt1.nit:26,18: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt1::A::f1`.
+alt/error_redef_1alt2_alt1.nit:26,15: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt1::A::f1`.
-alt/error_redef_1alt2_alt4.nit:29,18: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt4::A::f1`.
+alt/error_redef_1alt2_alt4.nit:29,15: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt4::A::f1`.
-alt/error_redef_1alt4_alt1.nit:26,18: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt1::A::f1`.
+alt/error_redef_1alt4_alt1.nit:26,15: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt1::A::f1`.
-alt/error_redef_1alt4_alt4.nit:29,18: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt4::A::f1`.
+alt/error_redef_1alt4_alt4.nit:29,15: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt4::A::f1`.
alt/error_type_unk_alt2.nit:9,8--11: Error: class `Fail` not found in module `error_type_unk_alt2`.
-alt/error_type_unk_alt2.nit:11,8--13: Error: class `Fail` not found in module `error_type_unk_alt2`.
+alt/error_type_unk_alt2.nit:11,8--14: Error: class `Fail` not found in module `error_type_unk_alt2`.
-error_virtual_type2.nit:40,17--26: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
+error_virtual_type2.nit:40,17--27: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
-alt/error_virtual_type2_alt1.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> T <-> T.
+alt/error_virtual_type2_alt1.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> T <-> T.
alt/error_virtual_type2_alt1.nit:25,2--10: Error: circularity of virtual type definition: T <-> T.
alt/error_virtual_type2_alt1.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt1.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt1.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt1.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt2.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> T <-> nullable T.
+alt/error_virtual_type2_alt2.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> T <-> nullable T.
alt/error_virtual_type2_alt2.nit:25,2--26,19: Error: circularity of virtual type definition: T <-> nullable T.
alt/error_virtual_type2_alt2.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt2.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt2.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt2.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt3.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> G[T] <-> T.
-alt/error_virtual_type2_alt3.nit:25,2--27,12: Error: circularity of virtual type definition: T <-> G[T].
+alt/error_virtual_type2_alt3.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> G[T] <-> T.
+alt/error_virtual_type2_alt3.nit:25,2--27,13: Error: circularity of virtual type definition: T <-> G[T].
alt/error_virtual_type2_alt3.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt3.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt3.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt3.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
alt/error_virtual_type2_alt4.nit:29,10--13: Error: class `FAIL` not found in module `error_virtual_type2_alt4`.
alt/error_virtual_type2_alt4.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt4.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt4.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt4.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt5.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> T <-> U.
+alt/error_virtual_type2_alt5.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> T <-> U.
alt/error_virtual_type2_alt5.nit:25,2--30,10: Error: circularity of virtual type definition: T <-> U.
alt/error_virtual_type2_alt5.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt5.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt5.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt5.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt6.nit:40,17--26: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
-alt/error_virtual_type2_alt6.nit:41,2--22: Error: a property `GT` is already defined in class `B` at line 39.
+alt/error_virtual_type2_alt6.nit:40,17--27: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt6.nit:41,2--23: Error: a property `GT` is already defined in class `B` at line 39.
alt/error_virtual_type_alt3.nit:25,12: Type Error: expected `Object`, got `T`.
-alt/error_virtual_type_alt3.nit:22,2--25,12: Error: circularity of virtual type definition: T <-> G[T].
+alt/error_virtual_type_alt3.nit:22,2--25,13: Error: circularity of virtual type definition: T <-> G[T].
base_isa_gen1.nit:62,8--14: Warning: expression is already a `A` since it is a `F`.
-base_isa_gen1.nit:65,8--29: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
-base_isa_gen1.nit:66,8--29: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
+base_isa_gen1.nit:65,8--30: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
+base_isa_gen1.nit:66,8--30: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
Runtime error: Assert failed (base_isa_gen1.nit:68)
base_isa_gen4.nit:34,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen4.nit:36,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen4.nit:40,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen4.nit:42,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen4.nit:36,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen4.nit:40,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen4.nit:42,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
Runtime error: Assert failed (base_isa_gen4.nit:37)
base_isa_gen5.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen5.nit:41,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen5.nit:46,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen5.nit:48,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen5.nit:41,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen5.nit:46,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen5.nit:48,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
Runtime error: Assert failed (base_isa_gen5.nit:42)
base_isa_nullable1.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Integer]`.
-base_isa_nullable1.nit:41,8--24: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
-base_isa_nullable1.nit:46,8--25: Warning: expression is already a `B[B[Integer]]`.
-base_isa_nullable1.nit:48,8--26: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
-base_isa_nullable1.nit:50,8--33: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
+base_isa_nullable1.nit:41,8--25: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
+base_isa_nullable1.nit:46,8--27: Warning: expression is already a `B[B[Integer]]`.
+base_isa_nullable1.nit:48,8--28: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
+base_isa_nullable1.nit:50,8--34: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
Runtime error: Assert failed (base_isa_nullable1.nit:42)
base_isa_nullable2.nit:27,8--23: Warning: expression is already a `nullable A` since it is a `A`.
-base_isa_nullable2.nit:29,8--30: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
-base_isa_nullable2.nit:30,8--39: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
-base_isa_nullable2.nit:33,8--30: Warning: expression is already a `C[nullable Object]`.
+base_isa_nullable2.nit:29,8--31: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
+base_isa_nullable2.nit:30,8--40: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
+base_isa_nullable2.nit:33,8--31: Warning: expression is already a `C[nullable Object]`.
Runtime error: Assert failed (base_isa_nullable2.nit:32)
<=8: sub-population=1 (14.28%); cumulated value=6 (100.00%)
--- AST Metrics ---
## All nodes of the AST
- population: 48
+ population: 50
minimum value: 1
maximum value: 40
- total value: 261
- average value: 5.43
+ total value: 270
+ average value: 5.40
distribution:
- <=1: sub-population=15 (31.25%); cumulated value=15 (5.74%)
- <=2: sub-population=5 (10.41%); cumulated value=10 (3.83%)
- <=4: sub-population=10 (20.83%); cumulated value=32 (12.26%)
- <=8: sub-population=10 (20.83%); cumulated value=64 (24.52%)
- <=16: sub-population=4 (8.33%); cumulated value=44 (16.85%)
- <=32: sub-population=3 (6.25%); cumulated value=56 (21.45%)
- <=64: sub-population=1 (2.08%); cumulated value=40 (15.32%)
+ <=1: sub-population=16 (32.00%); cumulated value=16 (5.92%)
+ <=2: sub-population=5 (10.00%); cumulated value=10 (3.70%)
+ <=4: sub-population=9 (18.00%); cumulated value=28 (10.37%)
+ <=8: sub-population=12 (24.00%); cumulated value=76 (28.14%)
+ <=16: sub-population=4 (8.00%); cumulated value=44 (16.29%)
+ <=32: sub-population=3 (6.00%); cumulated value=56 (20.74%)
+ <=64: sub-population=1 (2.00%); cumulated value=40 (14.81%)
list:
- TId: 40 (15.32%)
- APublicVisibility: 19 (7.27%)
- AListExprs: 19 (7.27%)
- ACallExpr: 18 (6.89%)
- TClassid: 15 (5.74%)
- TNumber: 10 (3.83%)
- ADecIntExpr: 10 (3.83%)
- AType: 9 (3.44%)
- TKwend: 8 (3.06%)
- ASignature: 8 (3.06%)
+ TId: 40 (14.81%)
+ APublicVisibility: 19 (7.03%)
+ AListExprs: 19 (7.03%)
+ ACallExpr: 18 (6.66%)
+ TClassid: 15 (5.55%)
+ TNumber: 10 (3.70%)
+ ADecIntExpr: 10 (3.70%)
+ AType: 9 (3.33%)
+ TKwend: 8 (2.96%)
+ ASignature: 8 (2.96%)
...
- ACallAssignExpr: 1 (0.38%)
- AAnnotations: 1 (0.38%)
- AReturnExpr: 1 (0.38%)
- TKwreturn: 1 (0.38%)
- AInterfaceClasskind: 1 (0.38%)
- TKwinterface: 1 (0.38%)
- ANoImport: 1 (0.38%)
- AMainMethPropdef: 1 (0.38%)
- AMainClassdef: 1 (0.38%)
- TKwimport: 1 (0.38%)
+ ASelfExpr: 1 (0.37%)
+ AAnnotations: 1 (0.37%)
+ ACallAssignExpr: 1 (0.37%)
+ TKwreturn: 1 (0.37%)
+ AInterfaceClasskind: 1 (0.37%)
+ TKwinterface: 1 (0.37%)
+ ANoImport: 1 (0.37%)
+ AMainMethPropdef: 1 (0.37%)
+ AMainClassdef: 1 (0.37%)
+ TKwimport: 1 (0.37%)
## All identifiers of the AST
population: 20
minimum value: 1
return errno;
`}
-fun errnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo: Int is extern `{
- return errno;
-`}
+fun errnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo: Int is
+ extern `{ return errno; `}
private class A
var my_attr = 1234
test_attr_easy.nit:19,43--53: Warning: expression is already a `Float`.
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]`.
+test_attr_easy.nit:20,44--63: Warning: expression is already a `HashMap[Int, B]`.
true false 12345 1.235 asdf true
an instance of B
true true true true
TId "rank" ../src/test_parser.nit:27,14--17
AType ../src/test_parser.nit:27,20--22
TClassid "Int" ../src/test_parser.nit:27,20--22
+ TAssign "=" ../src/test_parser.nit:27,24
ADecIntExpr ../src/test_parser.nit:27,26
TNumber "0" ../src/test_parser.nit:27,26
AMethPropdef ../src/test_parser.nit:28,2--38,4
AParam ../src/test_parser.nit:28,18
TId "n" ../src/test_parser.nit:28,18
TCpar ")" ../src/test_parser.nit:28,19
+ TKwdo "do" ../src/test_parser.nit:29,2--3
ABlockExpr ../src/test_parser.nit:30,3--38,4
AIfExpr ../src/test_parser.nit:30,3--34,5
TKwif "if" ../src/test_parser.nit:30,3--4
TKwisa "isa" ../src/test_parser.nit:30,8--10
AType ../src/test_parser.nit:30,12--16
TClassid "Token" ../src/test_parser.nit:30,12--16
+ TKwthen "then" ../src/test_parser.nit:30,18--21
ABlockExpr ../src/test_parser.nit:31,4--88
ACallExpr ../src/test_parser.nit:31,4--88
AImplicitSelfExpr ../src/test_parser.nit:31,4
AStringExpr ../src/test_parser.nit:31,84--87
TString "\"\\n\"" ../src/test_parser.nit:31,84--87
TCpar ")" ../src/test_parser.nit:31,88
+ TKwelse "else" ../src/test_parser.nit:32,3--6
ABlockExpr ../src/test_parser.nit:33,4--34,5
ACallExpr ../src/test_parser.nit:33,4--59
AImplicitSelfExpr ../src/test_parser.nit:33,4
TEq "==" ../src/test_parser.nit:49,16--17
AStringExpr ../src/test_parser.nit:49,19--22
TString "\"-n\"" ../src/test_parser.nit:49,19--22
+ TKwthen "then" ../src/test_parser.nit:49,24--27
ABlockExpr ../src/test_parser.nit:50,3--17
ACallAssignExpr ../src/test_parser.nit:50,3--17
AImplicitSelfExpr ../src/test_parser.nit:50,3
TAssign "=" ../src/test_parser.nit:50,12
ATrueExpr ../src/test_parser.nit:50,14--17
TKwtrue "true" ../src/test_parser.nit:50,14--17
+ TKwelse "else" ../src/test_parser.nit:51,2--5
AIfExpr ../src/test_parser.nit:51,7--66,4
TKwif "if" ../src/test_parser.nit:51,7--8
AEqExpr ../src/test_parser.nit:51,10--27
TEq "==" ../src/test_parser.nit:51,21--22
AStringExpr ../src/test_parser.nit:51,24--27
TString "\"-l\"" ../src/test_parser.nit:51,24--27
+ TKwthen "then" ../src/test_parser.nit:51,29--32
ABlockExpr ../src/test_parser.nit:52,3--19
ACallAssignExpr ../src/test_parser.nit:52,3--19
AImplicitSelfExpr ../src/test_parser.nit:52,3
TAssign "=" ../src/test_parser.nit:52,14
ATrueExpr ../src/test_parser.nit:52,16--19
TKwtrue "true" ../src/test_parser.nit:52,16--19
+ TKwelse "else" ../src/test_parser.nit:53,2--5
AIfExpr ../src/test_parser.nit:53,7--66,4
TKwif "if" ../src/test_parser.nit:53,7--8
AEqExpr ../src/test_parser.nit:53,10--27
TEq "==" ../src/test_parser.nit:53,21--22
AStringExpr ../src/test_parser.nit:53,24--27
TString "\"-p\"" ../src/test_parser.nit:53,24--27
+ TKwthen "then" ../src/test_parser.nit:53,29--32
ABlockExpr ../src/test_parser.nit:54,3--20
ACallAssignExpr ../src/test_parser.nit:54,3--20
AImplicitSelfExpr ../src/test_parser.nit:54,3
TAssign "=" ../src/test_parser.nit:54,14
AFalseExpr ../src/test_parser.nit:54,16--20
TKwfalse "false" ../src/test_parser.nit:54,16--20
+ TKwelse "else" ../src/test_parser.nit:55,2--5
AIfExpr ../src/test_parser.nit:55,7--66,4
TKwif "if" ../src/test_parser.nit:55,7--8
AEqExpr ../src/test_parser.nit:55,10--27
TEq "==" ../src/test_parser.nit:55,21--22
AStringExpr ../src/test_parser.nit:55,24--27
TString "\"-x\"" ../src/test_parser.nit:55,24--27
+ TKwthen "then" ../src/test_parser.nit:55,29--32
ABlockExpr ../src/test_parser.nit:56,3--12
ACallAssignExpr ../src/test_parser.nit:56,3--12
AImplicitSelfExpr ../src/test_parser.nit:56,3
TAssign "=" ../src/test_parser.nit:56,7
ATrueExpr ../src/test_parser.nit:56,9--12
TKwtrue "true" ../src/test_parser.nit:56,9--12
+ TKwelse "else" ../src/test_parser.nit:57,2--5
AIfExpr ../src/test_parser.nit:57,7--66,4
TKwif "if" ../src/test_parser.nit:57,7--8
AEqExpr ../src/test_parser.nit:57,10--27
TEq "==" ../src/test_parser.nit:57,21--22
AStringExpr ../src/test_parser.nit:57,24--27
TString "\"-e\"" ../src/test_parser.nit:57,24--27
+ TKwthen "then" ../src/test_parser.nit:57,29--32
ABlockExpr ../src/test_parser.nit:58,3--16
ACallAssignExpr ../src/test_parser.nit:58,3--16
AImplicitSelfExpr ../src/test_parser.nit:58,3
TAssign "=" ../src/test_parser.nit:58,11
ATrueExpr ../src/test_parser.nit:58,13--16
TKwtrue "true" ../src/test_parser.nit:58,13--16
+ TKwelse "else" ../src/test_parser.nit:59,2--5
AIfExpr ../src/test_parser.nit:59,7--66,4
TKwif "if" ../src/test_parser.nit:59,7--8
AEqExpr ../src/test_parser.nit:59,10--27
TEq "==" ../src/test_parser.nit:59,21--22
AStringExpr ../src/test_parser.nit:59,24--27
TString "\"-i\"" ../src/test_parser.nit:59,24--27
+ TKwthen "then" ../src/test_parser.nit:59,29--32
ABlockExpr ../src/test_parser.nit:60,3--20
ACallAssignExpr ../src/test_parser.nit:60,3--20
AImplicitSelfExpr ../src/test_parser.nit:60,3
TAssign "=" ../src/test_parser.nit:60,15
ATrueExpr ../src/test_parser.nit:60,17--20
TKwtrue "true" ../src/test_parser.nit:60,17--20
+ TKwelse "else" ../src/test_parser.nit:61,2--5
AIfExpr ../src/test_parser.nit:61,7--66,4
TKwif "if" ../src/test_parser.nit:61,7--8
AOrExpr ../src/test_parser.nit:61,10--49
TEq "==" ../src/test_parser.nit:61,43--44
AStringExpr ../src/test_parser.nit:61,46--49
TString "\"-?\"" ../src/test_parser.nit:61,46--49
+ TKwthen "then" ../src/test_parser.nit:61,51--54
ABlockExpr ../src/test_parser.nit:62,3--18
ACallAssignExpr ../src/test_parser.nit:62,3--18
AImplicitSelfExpr ../src/test_parser.nit:62,3
TAssign "=" ../src/test_parser.nit:62,13
ATrueExpr ../src/test_parser.nit:62,15--18
TKwtrue "true" ../src/test_parser.nit:62,15--18
+ TKwelse "else" ../src/test_parser.nit:63,2--5
ABlockExpr ../src/test_parser.nit:64,3--66,4
ACallExpr ../src/test_parser.nit:64,3--48
ACallExpr ../src/test_parser.nit:64,3--8
AImplicitSelfExpr ../src/test_parser.nit:70,43
TId "need_help" ../src/test_parser.nit:70,43--51
AListExprs ../src/test_parser.nit:70,51
+ TKwthen "then" ../src/test_parser.nit:70,53--56
ABlockExpr ../src/test_parser.nit:71,2--82,30
ACallExpr ../src/test_parser.nit:71,2--16
AImplicitSelfExpr ../src/test_parser.nit:71,2
AStringExpr ../src/test_parser.nit:82,8--29
TString "\" -h\tprint this help\"" ../src/test_parser.nit:82,8--29
TCpar ")" ../src/test_parser.nit:82,30
+ TKwelse "else" ../src/test_parser.nit:83,1--4
AIfExpr ../src/test_parser.nit:83,6--155,3
TKwif "if" ../src/test_parser.nit:83,6--7
ACallExpr ../src/test_parser.nit:83,9--19
AImplicitSelfExpr ../src/test_parser.nit:83,9
TId "interactive" ../src/test_parser.nit:83,9--19
AListExprs ../src/test_parser.nit:83,19
+ TKwthen "then" ../src/test_parser.nit:83,21--24
ABlockExpr ../src/test_parser.nit:84,2--117,4
AIfExpr ../src/test_parser.nit:84,2--93,4
TKwif "if" ../src/test_parser.nit:84,2--3
AImplicitSelfExpr ../src/test_parser.nit:84,5
TId "only_lexer" ../src/test_parser.nit:84,5--14
AListExprs ../src/test_parser.nit:84,14
+ TKwthen "then" ../src/test_parser.nit:84,16--19
ABlockExpr ../src/test_parser.nit:85,3--86,8
ACallExpr ../src/test_parser.nit:85,3--43
AImplicitSelfExpr ../src/test_parser.nit:85,3
AListExprs ../src/test_parser.nit:86,8
ADecIntExpr ../src/test_parser.nit:86,8
TNumber "1" ../src/test_parser.nit:86,8
+ TKwelse "else" ../src/test_parser.nit:87,2--5
AIfExpr ../src/test_parser.nit:87,7--93,4
TKwif "if" ../src/test_parser.nit:87,7--8
ACallExpr ../src/test_parser.nit:87,10--16
AImplicitSelfExpr ../src/test_parser.nit:87,10
TId "no_file" ../src/test_parser.nit:87,10--16
AListExprs ../src/test_parser.nit:87,16
+ TKwthen "then" ../src/test_parser.nit:87,18--21
ABlockExpr ../src/test_parser.nit:88,3--89,8
ACallExpr ../src/test_parser.nit:88,3--43
AImplicitSelfExpr ../src/test_parser.nit:88,3
AListExprs ../src/test_parser.nit:89,8
ADecIntExpr ../src/test_parser.nit:89,8
TNumber "1" ../src/test_parser.nit:89,8
+ TKwelse "else" ../src/test_parser.nit:90,2--5
AIfExpr ../src/test_parser.nit:90,7--93,4
TKwif "if" ../src/test_parser.nit:90,7--8
ANotExpr ../src/test_parser.nit:90,10--26
AListExprs ../src/test_parser.nit:90,17
TId "is_empty" ../src/test_parser.nit:90,19--26
AListExprs ../src/test_parser.nit:90,26
+ TKwthen "then" ../src/test_parser.nit:90,28--31
ABlockExpr ../src/test_parser.nit:91,3--92,8
ACallExpr ../src/test_parser.nit:91,3--43
AImplicitSelfExpr ../src/test_parser.nit:91,3
TKwisa "isa" ../src/test_parser.nit:99,8--10
AType ../src/test_parser.nit:99,12--18
TClassid "TString" ../src/test_parser.nit:99,12--18
+ TKwthen "then" ../src/test_parser.nit:99,20--23
ABlockExpr ../src/test_parser.nit:100,4--106,11
AVardeclExpr ../src/test_parser.nit:100,4--17
TKwvar "var" ../src/test_parser.nit:100,4--6
TEq "==" ../src/test_parser.nit:101,9--10
AStringExpr ../src/test_parser.nit:101,12--15
TString "\":q\"" ../src/test_parser.nit:101,12--15
+ TKwthen "then" ../src/test_parser.nit:101,17--20
ABlockExpr ../src/test_parser.nit:102,5--9
ABreakExpr ../src/test_parser.nit:102,5--9
TKwbreak "break" ../src/test_parser.nit:102,5--9
+ TKwelse "else" ../src/test_parser.nit:103,4--7
ABlockExpr ../src/test_parser.nit:104,5--105,6
ACallExpr ../src/test_parser.nit:104,5--24
AImplicitSelfExpr ../src/test_parser.nit:104,5
TKwisa "isa" ../src/test_parser.nit:109,8--10
AType ../src/test_parser.nit:109,12--17
TClassid "AError" ../src/test_parser.nit:109,12--17
+ TKwthen "then" ../src/test_parser.nit:109,19--22
ABlockExpr ../src/test_parser.nit:110,4--111,11
ACallExpr ../src/test_parser.nit:110,4--57
AImplicitSelfExpr ../src/test_parser.nit:110,4
AImplicitSelfExpr ../src/test_parser.nit:114,10
TId "no_print" ../src/test_parser.nit:114,10--17
AListExprs ../src/test_parser.nit:114,17
+ TKwthen "then" ../src/test_parser.nit:114,19--22
ABlockExpr ../src/test_parser.nit:115,4--40
ACallExpr ../src/test_parser.nit:115,4--40
AParExpr ../src/test_parser.nit:115,4--25
ABlockExpr ../src/test_parser.nit:116,3--5
TKwend "end" ../src/test_parser.nit:116,3--5
TKwend "end" ../src/test_parser.nit:117,2--4
+ TKwelse "else" ../src/test_parser.nit:118,1--4
ABlockExpr ../src/test_parser.nit:119,2--155,3
AForExpr ../src/test_parser.nit:119,2--154,4
TKwfor "for" ../src/test_parser.nit:119,2--4
TId "a" ../src/test_parser.nit:119,6
+ TKwin "in" ../src/test_parser.nit:119,8--9
ACallExpr ../src/test_parser.nit:119,11--14
AImplicitSelfExpr ../src/test_parser.nit:119,11
TId "args" ../src/test_parser.nit:119,11--14
AImplicitSelfExpr ../src/test_parser.nit:121,6
TId "no_file" ../src/test_parser.nit:121,6--12
AListExprs ../src/test_parser.nit:121,12
+ TKwthen "then" ../src/test_parser.nit:121,14--17
ABlockExpr ../src/test_parser.nit:122,4--45
ACallAssignExpr ../src/test_parser.nit:122,4--45
AImplicitSelfExpr ../src/test_parser.nit:122,4
TId "a" ../src/test_parser.nit:122,44
AListExprs ../src/test_parser.nit:122,44
TCpar ")" ../src/test_parser.nit:122,45
+ TKwelse "else" ../src/test_parser.nit:123,3--6
ABlockExpr ../src/test_parser.nit:124,4--127,5
AVardeclExpr ../src/test_parser.nit:124,4--33
TKwvar "var" ../src/test_parser.nit:124,4--6
AImplicitSelfExpr ../src/test_parser.nit:129,6
TId "only_lexer" ../src/test_parser.nit:129,6--15
AListExprs ../src/test_parser.nit:129,15
+ TKwthen "then" ../src/test_parser.nit:129,17--20
ABlockExpr ../src/test_parser.nit:130,4--136,6
AVardeclExpr ../src/test_parser.nit:130,4--25
TKwvar "var" ../src/test_parser.nit:130,4--6
AImplicitSelfExpr ../src/test_parser.nit:132,12
TId "no_print" ../src/test_parser.nit:132,12--19
AListExprs ../src/test_parser.nit:132,19
+ TKwthen "then" ../src/test_parser.nit:132,21--24
ABlockExpr ../src/test_parser.nit:133,6--64
ACallExpr ../src/test_parser.nit:133,6--64
AImplicitSelfExpr ../src/test_parser.nit:133,6
TId "next" ../src/test_parser.nit:135,19--22
AListExprs ../src/test_parser.nit:135,22
TKwend "end" ../src/test_parser.nit:136,4--6
+ TKwelse "else" ../src/test_parser.nit:137,3--6
ABlockExpr ../src/test_parser.nit:138,4--153,5
AVardeclExpr ../src/test_parser.nit:138,4--33
TKwvar "var" ../src/test_parser.nit:138,4--6
TKwisa "isa" ../src/test_parser.nit:142,13--15
AType ../src/test_parser.nit:142,17--22
TClassid "AError" ../src/test_parser.nit:142,17--22
+ TKwthen "then" ../src/test_parser.nit:142,24--27
ABlockExpr ../src/test_parser.nit:143,5--144,10
ACallExpr ../src/test_parser.nit:143,5--58
AImplicitSelfExpr ../src/test_parser.nit:143,5
AImplicitSelfExpr ../src/test_parser.nit:147,7
TId "xml" ../src/test_parser.nit:147,7--9
AListExprs ../src/test_parser.nit:147,9
+ TKwthen "then" ../src/test_parser.nit:147,11--14
ABlockExpr ../src/test_parser.nit:148,5--149,32
ACallExpr ../src/test_parser.nit:148,5--25
ACallExpr ../src/test_parser.nit:148,5--8
TId "stdout" ../src/test_parser.nit:149,26--31
AListExprs ../src/test_parser.nit:149,31
TCpar ")" ../src/test_parser.nit:149,32
+ TKwelse "else" ../src/test_parser.nit:150,4--7
AIfExpr ../src/test_parser.nit:150,9--152,6
TKwif "if" ../src/test_parser.nit:150,9--10
ANotExpr ../src/test_parser.nit:150,12--23
AImplicitSelfExpr ../src/test_parser.nit:150,16
TId "no_print" ../src/test_parser.nit:150,16--23
AListExprs ../src/test_parser.nit:150,23
+ TKwthen "then" ../src/test_parser.nit:150,25--28
ABlockExpr ../src/test_parser.nit:151,5--44
ACallExpr ../src/test_parser.nit:151,5--44
AParExpr ../src/test_parser.nit:151,5--26
--> AForExpr 1,1--15
TKwfor "for" 1,1--3
TId "i" 1,5
+ TKwin "in" 1,7--8
ACallExpr 1,10
AImplicitSelfExpr 1,10
TId "x" 1,10
TKwmeth "fun" 1,1--3
AIdMethid 1,5--7
TId "foo" 1,5--7
- ASignature 1,12
+ ASignature 1,9
+ TKwdo "do" 1,9--10
ACallExpr 1,12
AImplicitSelfExpr 1,12
TId "z" 1,12
--> ... ... AForExpr 1,1--3,3
TKwfor "for" 1,1--3
TId "i" 1,5
+ TKwin "in" 1,7--8
ACallExpr 1,10
AImplicitSelfExpr 1,10
TId "x" 1,10
TKwmeth "fun" 1,1--3
AIdMethid 1,5--7
TId "foo" 1,5--7
- ASignature 2,1
+ ASignature 1,9
+ TKwdo "do" 1,9--10
ABlockExpr 2,1--5,3
AForExpr 2,1--4,3
TKwfor "for" 2,1--3
TId "i" 2,5
+ TKwin "in" 2,7--8
ACallExpr 2,10
AImplicitSelfExpr 2,10
TId "x" 2,10
do
init_gtk
- win = new GtkWindow( 0 )
+ win = new GtkWindow(new GtkWindowType.toplevel)
+ win.connect_destroy_signal_to_quit
- container = new GtkGrid(2,1,true)
+ container = new GtkGrid
win.add( container )
lbl = new GtkLabel( "Hello world" )