diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguityResolver.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguityResolver.java index ba3783ac334..e3ada63e2eb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguityResolver.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguityResolver.java @@ -17,8 +17,8 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode; * Visitor to resolve ast ambiguities in the right order, which is simply a depth * first traversal. */ -final class CASTAmbiguityResolver extends ASTVisitor { - CASTAmbiguityResolver() { +public final class CASTAmbiguityResolver extends ASTVisitor { + public CASTAmbiguityResolver() { super(false); shouldVisitAmbiguousNodes= true; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java index 2fa7d19a306..a918e8ca50e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java @@ -27,7 +27,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; /** * Visitor to resolve ast ambiguities in the right order */ -final class CPPASTAmbiguityResolver extends ASTVisitor { +public final class CPPASTAmbiguityResolver extends ASTVisitor { private static class ClassContext { ArrayList fDeferredNodes; final IASTNode fNode; @@ -44,7 +44,7 @@ final class CPPASTAmbiguityResolver extends ASTVisitor { private ClassContext fCurrentContext; private boolean fSkipInitializers; - CPPASTAmbiguityResolver() { + public CPPASTAmbiguityResolver() { super(false); shouldVisitAmbiguousNodes= true; shouldVisitDeclarations= true; diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g index 3eabcd7e357..07e488b50fc 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/c99/C99Grammar.g @@ -9,12 +9,6 @@ -- IBM Corporation - initial API and implementation ----------------------------------------------------------------------------------- - -$Include -../common.g -$End - - $Terminals -- Keywords @@ -549,7 +543,7 @@ complete_declarator storage_class_specifier ::= storage_class_specifier_token - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ storage_class_specifier_token @@ -562,7 +556,7 @@ storage_class_specifier_token simple_type_specifier ::= simple_type_specifier_token - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ simple_type_specifier_token ::= 'void' @@ -581,9 +575,9 @@ simple_type_specifier_token typedef_name_in_declspec ::= 'Completion' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'identifier' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ -- | 'TypedefName' -- remove identifier if this is uncommented @@ -691,7 +685,7 @@ enumerator type_qualifier ::= type_qualifier_token - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ type_qualifier_token @@ -702,7 +696,7 @@ type_qualifier_token function_specifier ::= 'inline' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ declarator diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/common.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/common.g deleted file mode 100644 index fd36088d531..00000000000 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/common.g +++ /dev/null @@ -1,144 +0,0 @@ ------------------------------------------------------------------------------------ --- Copyright (c) 2006, 2008 IBM Corporation and others. --- All rights reserved. This program and the accompanying materials --- are made available under the terms of the Eclipse Public License v1.0 --- which accompanies this distribution, and is available at --- http://www.eclipse.org/legal/epl-v10.html --- --- Contributors: --- IBM Corporation - initial API and implementation ------------------------------------------------------------------------------------ - - -$Notice --- Copied into all files generated by LPG -/./******************************************************************************* - * Copyright (c) 2006, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *********************************************************************************/ - - // This file was generated by LPG -./ -$End - - -$Define - -- These macros allow the template and header code to be customized by an extending parser. - - $ast_class /.Object./ - - $extra_interfaces /. ./ -- can override this macro to provide additional interfaces - $additional_interfaces /. , IParserActionTokenProvider, IParser $extra_interfaces ./ - - $build_action_class /. ./ -- name of the class that has the AST building callbacks - $node_factory_create_expression /. ./ -- expression that will create the node factory - - $Build /. $BeginAction action. ./ -- special action just for calling methods on the builder - $EndBuild /. $EndAction ./ -$End - - -$Globals -/. - import java.util.*; - import org.eclipse.cdt.core.dom.ast.*; - import org.eclipse.cdt.core.dom.lrparser.IParser; - import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; - import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; -./ -$End - -$Headers -/. - private $build_action_class action; - - public $action_type() { // constructor - } - - private void initActions(IASTTranslationUnit tu, Set options) { - action = new $build_action_class($node_factory_create_expression, this, tu); - action.setParserOptions(options); - } - - - public void addToken(IToken token) { - token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? - super.addToken(token); - } - - - public IASTCompletionNode parse(IASTTranslationUnit tu, Set options) { - // this has to be done, or... kaboom! - setStreamLength(getSize()); - initActions(tu, options); - - final int errorRepairCount = -1; // -1 means full error handling - parser(null, errorRepairCount); // do the actual parse - super.resetTokenStream(); // allow tokens to be garbage collected - - // the completion node may be null - IASTCompletionNode compNode = action.getASTCompletionNode(); - - //action = null; - //parserAction = null; - return compNode; - } - - // uncomment this method to use with backtracking parser - public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); - } - - - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); - } - - public String[] getOrderedTerminalSymbols() { - return $sym_type.orderedTerminalSymbols; - } - - @SuppressWarnings("nls") - public String getName() { - return "$action_type"; - } - -./ -$End - -$Globals -/. - import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; - import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; -./ -$End - -$Headers -/. - - private ITokenMap tokenMap = null; - - public void setTokens(List tokens) { - resetTokenStream(); - addToken(new Token(null, 0, 0, 0)); // dummy token - for(IToken token : tokens) { - token.setKind(tokenMap.mapKind(token.getKind())); - addToken(token); - } - addToken(new Token(null, 0, 0, $sym_type.TK_EOF_TOKEN)); - } - - public $action_type(String[] mapFrom) { // constructor - tokenMap = new TokenMap($sym_type.orderedTerminalSymbols, mapFrom); - } - - -./ -$End - diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g index 0543d0de1ad..0fdc046318d 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g @@ -10,11 +10,6 @@ ---------------------------------------------------------------------------------- -$Include -../common.g -$End - - $Terminals -- Keywords @@ -810,9 +805,9 @@ no_type_declaration_specifier | function_specifier | cv_qualifier | 'friend' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'typedef' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ no_type_declaration_specifiers @@ -869,24 +864,24 @@ type_name_declaration_specifiers storage_class_specifier ::= 'auto' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'register' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'static' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'extern' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'mutable' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ function_specifier ::= 'inline' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'virtual' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'explicit' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ -- We have no way to disambiguate token types @@ -913,27 +908,27 @@ function_specifier simple_type_specifier ::= 'char' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'wchar_t' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'bool' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'short' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'int' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'long' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'signed' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'unsigned' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'float' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'double' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'void' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ -- last two rules moved here from simple_type_specifier @@ -1162,9 +1157,9 @@ cv_qualifier_seq_opt cv_qualifier ::= 'const' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ | 'volatile' - /. $Build consumeDeclSpecToken(); $EndBuild ./ + /. $Build consumeToken(); $EndBuild ./ declarator_id_name diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g index 0ee401193c4..c528dc75055 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gcc/GCCParser.g @@ -33,10 +33,17 @@ $Terminals $End --- Hook the extensions into the main grammar. + + + $Rules +declaration + ::= extended_asm_declaration + + + no_type_declaration_specifier ::= attribute_or_decl_specifier diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g index 03b9362004e..6e07a75371a 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gnu/GNUExtensions.g @@ -26,6 +26,28 @@ $Terminals $End +$Globals +/. + import org.eclipse.cdt.core.dom.lrparser.action.gcc.GCCBuildASTParserAction; +./ +$End + +$Headers +/. + private GCCBuildASTParserAction gccAction; +./ +$End + +$Define + + $action_initializations /. + + gccAction = new GCCBuildASTParserAction($node_factory_create_expression, this, tu, astStack); + gccAction.setParserOptions(options); + + ./ + +$End $Rules @@ -73,11 +95,8 @@ attribute_parameter decl_specifier - ::= '__declspec' '(' extended_decl_modifier_seq_opt ')' - -extended_decl_modifier_seq_opt - ::= extended_decl_modifier_seq - | $empty + ::= '__declspec' '(' extended_decl_modifier_seq ')' + | '__declspec' '(' ')' extended_decl_modifier_seq ::= extended_decl_modifier @@ -96,9 +115,27 @@ extended_decl_modifier asm_label ::= 'asm' '(' 'stringlit' ')' -asm_label_opt - ::= asm_label + +extended_asm_declaration + ::= 'asm' volatile_opt '(' extended_asm_param_seq ')' ';' + /. $BeginAction gccAction.consumeDeclarationASM(); $EndAction ./ + +volatile_opt ::= 'volatile' | $empty + +extended_asm_param_seq + ::= extended_asm_param_with_operand + | extended_asm_param_seq ':' extended_asm_param_with_operand + +extended_asm_param_with_operand + ::= extended_asm_param + | extended_asm_param ',' extended_asm_param | $empty + +extended_asm_param + ::= 'stringlit' + | 'stringlit' '(' 'identifier' ')' + | 'stringlit' '(' '*' 'identifier' ')' + $End diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g index eef9432646f..a6e52f023ce 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/gpp/GPPParser.g @@ -18,8 +18,17 @@ -- to point at the directory where the CPPParser.g file is located. $Import ../cpp/CPPParser.g + +$DropRules + +-- will be replaced by extended asm syntax +asm_definition + ::= 'asm' '(' 'stringlit' ')' ';' + + $End + $Import ../gnu/GNUExtensions.g $End @@ -28,6 +37,10 @@ $End $Rules +asm_definition + ::= extended_asm_declaration + + no_type_declaration_specifier ::= attribute_or_decl_specifier diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/FixedBtParserTemplateD.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/FixedBtParserTemplateD.g similarity index 70% rename from lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/FixedBtParserTemplateD.g rename to lrparser/org.eclipse.cdt.core.lrparser/grammar/template/FixedBtParserTemplateD.g index fc1ef554201..bc5892463c1 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/lpgextensions/FixedBtParserTemplateD.g +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/template/FixedBtParserTemplateD.g @@ -9,6 +9,13 @@ -- IBM Corporation - initial API and implementation ---------------------------------------------------------------------------------- + +-- This template is a modified version of BtParserTemplateD.g. +-- This template contains a fix for an LPG bug: +-- http://sourceforge.net/tracker/index.php?func=detail&aid=1732851&group_id=155963&atid=797879 + + + -- -- In a parser using this template, the following macro may be redefined: -- @@ -285,6 +292,145 @@ $Trailers ./ $End + +$Notice +-- Copied into all files generated by LPG +/./******************************************************************************* + * Copyright (c) 2006, 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *********************************************************************************/ + + // This file was generated by LPG +./ +$End + + +$Define + -- These macros allow the template and header code to be customized by an extending parser. + + $ast_class /.Object./ + + $extra_interfaces /. ./ -- can override this macro to provide additional interfaces + $additional_interfaces /. , IParserActionTokenProvider, IParser $extra_interfaces ./ + + $build_action_class /. ./ -- name of the class that has the AST building callbacks + $node_factory_create_expression /. ./ -- expression that will create the node factory + + $action_initializations /. ./ + + $Build /. $BeginAction action. ./ -- special action just for calling methods on the builder + $EndBuild /. $EndAction ./ +$End + + +$Globals +/. + import java.util.*; + import org.eclipse.cdt.core.dom.ast.*; + import org.eclipse.cdt.core.dom.lrparser.IParser; + import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; + import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; + import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; +./ +$End + +$Headers +/. + private $build_action_class action; + private ScopedStack astStack = new ScopedStack(); + + public $action_type() { // constructor + } + + private void initActions(IASTTranslationUnit tu, Set options) { + action = new $build_action_class($node_factory_create_expression, this, tu, astStack); + action.setParserOptions(options); + + $action_initializations + } + + + public void addToken(IToken token) { + token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? + super.addToken(token); + } + + + public IASTCompletionNode parse(IASTTranslationUnit tu, Set options) { + // this has to be done, or... kaboom! + setStreamLength(getSize()); + initActions(tu, options); + + final int errorRepairCount = -1; // -1 means full error handling + parser(null, errorRepairCount); // do the actual parse + super.resetTokenStream(); // allow tokens to be garbage collected + + // the completion node may be null + IASTCompletionNode compNode = action.getASTCompletionNode(); + + //action = null; + //parserAction = null; + return compNode; + } + + // uncomment this method to use with backtracking parser + public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); + } + + public IASTNode getSecondaryParseResult() { + return (IASTNode) astStack.pop(); + } + + public String[] getOrderedTerminalSymbols() { + return $sym_type.orderedTerminalSymbols; + } + + @SuppressWarnings("nls") + public String getName() { + return "$action_type"; + } + +./ +$End + +$Globals +/. + import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; + import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; +./ +$End + +$Headers +/. + + private ITokenMap tokenMap = null; + + public void setTokens(List tokens) { + resetTokenStream(); + addToken(new Token(null, 0, 0, 0)); // dummy token + for(IToken token : tokens) { + token.setKind(tokenMap.mapKind(token.getKind())); + addToken(token); + } + addToken(new Token(null, 0, 0, $sym_type.TK_EOF_TOKEN)); + } + + public $action_type(String[] mapFrom) { // constructor + tokenMap = new TokenMap($sym_type.orderedTerminalSymbols, mapFrom); + } + + +./ +$End + + -- -- E N D O F T E M P L A T E -- diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/AbstractParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/AbstractParserAction.java new file mode 100644 index 00000000000..ddf394ad727 --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/AbstractParserAction.java @@ -0,0 +1,232 @@ +package org.eclipse.cdt.core.dom.lrparser.action; + +import java.util.EnumSet; +import java.util.List; +import java.util.Set; + +import lpg.lpgjavaruntime.IToken; + +import org.eclipse.cdt.core.dom.ast.IASTCompletionNode; +import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.cdt.core.dom.lrparser.IParser; +import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; +import org.eclipse.cdt.internal.core.dom.parser.ASTNode; + +@SuppressWarnings("restriction") +public abstract class AbstractParserAction { + + + /** + * Used with very simple optional rules that just say + * that some particular token or keyword is optional. + * The presence of the PLACE_HOLDER on the stack means that the keyword + * was parsed, the presence of null means the keyword wasn't parsed. + * + * @see BuildASTParserAction#consumePlaceHolder() + * @see BuildASTParserAction#consumeEmpty() + */ + protected static final Object PLACE_HOLDER = Boolean.TRUE; // any object will do + + + + /** Provides an interface to the token stream */ + protected final IParserActionTokenProvider parser; + + /** Stack that holds the intermediate nodes as the AST is being built */ + protected final ScopedStack astStack; + + /** The completion node, only generated during a completion parse */ + protected ASTCompletionNode completionNode; + + /** The root node is created outside the parser because it is also needed by the preprocessor */ + protected final IASTTranslationUnit tu; + + /** Options that change the behavior of the parser actions */ + protected Set options = EnumSet.noneOf(IParser.Options.class); + + + + + /** + * Completion tokens are represented by different kinds by different parsers. + */ + protected abstract boolean isCompletionToken(IToken token); + + + protected abstract IASTName createName(char[] image); + + + + /** + * Create a new parser action. + * @param tu Root node of the AST, its list of declarations should be empty. + * @throws NullPointerException if any of the parameters are null + */ + public AbstractParserAction(IParserActionTokenProvider parser, IASTTranslationUnit tu, ScopedStack astStack) { + if(parser == null) + throw new NullPointerException("parser is null"); //$NON-NLS-1$ + if(tu == null) + throw new NullPointerException("tu is null"); //$NON-NLS-1$ + if(astStack == null) + throw new NullPointerException("astStack is null"); //$NON-NLS-1$ + + this.parser = parser; + this.tu = tu; + this.astStack = astStack; + } + + + + protected void setOffsetAndLength(IASTNode node) { + int ruleOffset = parser.getLeftIToken().getStartOffset(); + int ruleLength = parser.getRightIToken().getEndOffset() - ruleOffset; + ((ASTNode)node).setOffsetAndLength(ruleOffset, ruleLength < 0 ? 0 : ruleLength); + } + + /** + * Creates a IASTName node from an identifier token. + * If the token is a completion token then it is added to the completion node. + */ + protected IASTName createName(IToken token) { + IASTName name = createName(token.toString().toCharArray()); // TODO, token.toCharArray(); + ParserUtil.setOffsetAndLength(name, token); + + if(isCompletionToken(token)) + addNameToCompletionNode(name, token.toString()); + + return name; + } + + public void setParserOptions(Set options) { + this.options = options == null ? EnumSet.noneOf(IParser.Options.class) : options; + } + + /** + * Creates a completion node if one does not yet exist and adds the + * given name to it. + */ + protected void addNameToCompletionNode(IASTName name, String prefix) { + if(completionNode == null) { + prefix = (prefix == null || prefix.length() == 0) ? null : prefix; + completionNode = newCompletionNode(prefix, tu); + } + + completionNode.addName(name); + } + + public ASTCompletionNode newCompletionNode(String prefix, IASTTranslationUnit tu) { + return new ASTCompletionNode((prefix == null || prefix.length() == 0) ? null : prefix, tu); + } + + /** + * Used to combine completion nodes from secondary parsers into + * the main completion node. + */ + protected void addNameToCompletionNode(IASTCompletionNode node) { + if(node == null) + return; + + for(IASTName name : node.getNames()) + addNameToCompletionNode(name, node.getPrefix()); + } + + + /** + * Returns the completion node if this is a completion parse, null otherwise. + */ + public IASTCompletionNode getASTCompletionNode() { + return completionNode; + } + + + /** + * Runs the given parser on the given token list. + * + */ + protected IASTNode runSecondaryParser(IParser secondaryParser) { + return runSecondaryParser(secondaryParser, parser.getRuleTokens()); + } + + + /** + * Runs the given parser on the tokens that make up the current rule. + */ + protected IASTNode runSecondaryParser(IParser secondaryParser, List tokens) { + // the secondary parser will alter the token kinds, which will need to be undone + int[] savedKinds = new int[tokens.size()]; + + int i = 0; + for(IToken token : tokens) + savedKinds[i++] = token.getKind(); + + secondaryParser.setTokens(tokens); + + // need to pass tu because any new completion nodes need to be linked directly to the root + IASTCompletionNode compNode = secondaryParser.parse(tu, options); + addNameToCompletionNode(compNode); + IASTNode result = secondaryParser.getSecondaryParseResult(); + + // restore the token kinds + i = 0; + for(IToken token : tokens) + token.setKind(savedKinds[i++]); + + return result; + } + + + + /************************************************************************************************************* + * Basic Actions + ************************************************************************************************************/ + + + /** + * Method that is called by the special production + * in order to create a new scope in the AST stack. + */ + public void openASTScope() { + astStack.openScope(); + } + + + /** + * Place null on the stack. + * Usually called for optional element to indicate the element + * was not parsed. + */ + public void consumeEmpty() { + astStack.push(null); + } + + + /** + * Place a marker on the stack. + * Usually used for very simple optional elements to indicate + * the element was parsed. Usually the existence of an AST node + * on the stack is used instead of the marker, but for simple + * cases like an optional keyword this action is useful. + */ + public void consumePlaceHolder() { + astStack.push(PLACE_HOLDER); + } + + + /** + * Just pops the stack, useful if you have a rule that generates + * a node but you don't need the node. + */ + public void consumeIgnore() { + astStack.pop(); + } + + + /** + * Gets the current token and places it on the stack for later consumption. + */ + public void consumeToken() { + astStack.push(parser.getRightIToken()); + } +} diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java index 8188fd5b1f5..94df5f97748 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java @@ -10,14 +10,16 @@ *******************************************************************************/ package org.eclipse.cdt.core.dom.lrparser.action; -import java.util.Arrays; -import java.util.EnumSet; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.endOffset; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset; + import java.util.List; -import java.util.Set; import lpg.lpgjavaruntime.IToken; import org.eclipse.cdt.core.dom.ast.ASTVisitor; +import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration; import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator; import org.eclipse.cdt.core.dom.ast.IASTArrayModifier; import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression; @@ -25,7 +27,6 @@ import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.IASTBreakStatement; import org.eclipse.cdt.core.dom.ast.IASTCaseStatement; import org.eclipse.cdt.core.dom.ast.IASTCastExpression; -import org.eclipse.cdt.core.dom.ast.IASTCompletionNode; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTConditionalExpression; import org.eclipse.cdt.core.dom.ast.IASTContinueStatement; @@ -75,56 +76,22 @@ import org.eclipse.cdt.core.parser.IProblem; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.ASTQueries; import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit; +import org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement; - /** * Parser semantic actions that are common to both C and C++. * * @author Mike Kucera */ @SuppressWarnings("restriction") -public abstract class BuildASTParserAction { - - - /** - * Used with very simple optional rules that just say - * that some particular token or keyword is optional. - * The presence of the PLACE_HOLDER on the stack means that the keyword - * was parsed, the presence of null means the keyword wasn't parsed. - * - * @see BuildASTParserAction#consumePlaceHolder() - * @see BuildASTParserAction#consumeEmpty() - */ - protected static final Object PLACE_HOLDER = Boolean.TRUE; // any object will do - +public abstract class BuildASTParserAction extends AbstractParserAction { - - /** Stack that holds the intermediate nodes as the AST is being built */ - protected final ScopedStack astStack = new ScopedStack(); - - /** Provides an interface to the token stream */ - protected final IParserActionTokenProvider parser; - - /** The completion node, only generated during a completion parse */ - protected ASTCompletionNode completionNode; - - /** The root node is created outside the parser because it is also needed by the preprocessor */ - protected final IASTTranslationUnit tu; /** Abstract factory for creating AST node objects */ private final INodeFactory nodeFactory; - /** Options that change the behavior of the parser actions */ - protected Set options = EnumSet.noneOf(IParser.Options.class); - - - /** - * Completion tokens are represented by different kinds by different parsers. - */ - protected abstract boolean isCompletionToken(IToken token); - /** * Returns true if the token is an identifier. @@ -158,273 +125,16 @@ public abstract class BuildASTParserAction { * @param tu Root node of the AST, its list of declarations should be empty. * @throws NullPointerException if any of the parameters are null */ - public BuildASTParserAction(INodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu) { + public BuildASTParserAction(INodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu, ScopedStack astStack) { + super(parser, tu, astStack); + if(nodeFactory == null) throw new NullPointerException("nodeFactory is null"); //$NON-NLS-1$ - if(parser == null) - throw new NullPointerException("parser is null"); //$NON-NLS-1$ - if(tu == null) - throw new NullPointerException("tu is null"); //$NON-NLS-1$ this.nodeFactory = nodeFactory; - this.parser = parser; - this.tu = tu; - } - - - public void setParserOptions(Set options) { - this.options = options == null ? EnumSet.noneOf(IParser.Options.class) : options; - } - - /** - * Creates a completion node if one does not yet exist and adds the - * given name to it. - */ - protected void addNameToCompletionNode(IASTName name, String prefix) { - if(completionNode == null) { - prefix = (prefix == null || prefix.length() == 0) ? null : prefix; - completionNode = newCompletionNode(prefix, tu); - } - - completionNode.addName(name); - } - - public ASTCompletionNode newCompletionNode(String prefix, IASTTranslationUnit tu) { - return new ASTCompletionNode((prefix == null || prefix.length() == 0) ? null : prefix, tu); - } - - /** - * Used to combine completion nodes from secondary parsers into - * the main completion node. - */ - protected void addNameToCompletionNode(IASTCompletionNode node) { - if(node == null) - return; - - for(IASTName name : node.getNames()) - addNameToCompletionNode(name, node.getPrefix()); - } - - - /** - * Returns the completion node if this is a completion parse, null otherwise. - */ - public IASTCompletionNode getASTCompletionNode() { - return completionNode; - } - - - /** - * Used to get the result of secondary parsers. - */ - public IASTNode getSecondaryParseResult() { - return (IASTNode) astStack.pop(); - } - - - - protected static int offset(IToken token) { - return token.getStartOffset(); - } - - protected static int offset(IASTNode node) { - return ((ASTNode)node).getOffset(); - } - - protected static int length(IToken token) { - return endOffset(token) - offset(token); - } - - protected static int length(IASTNode node) { - return ((ASTNode)node).getLength(); - } - - protected static int endOffset(IASTNode node) { - return offset(node) + length(node); - } - - protected static int endOffset(IToken token) { - return token.getEndOffset(); } - protected void setOffsetAndLength(IASTNode node) { - int ruleOffset = parser.getLeftIToken().getStartOffset(); - int ruleLength = parser.getRightIToken().getEndOffset() - ruleOffset; - ((ASTNode)node).setOffsetAndLength(ruleOffset, ruleLength < 0 ? 0 : ruleLength); - } - - protected static void setOffsetAndLength(IASTNode node, IToken token) { - ((ASTNode)node).setOffsetAndLength(offset(token), length(token)); - } - - protected static void setOffsetAndLength(IASTNode node, int offset, int length) { - ((ASTNode)node).setOffsetAndLength(offset, length); - } - - protected static void setOffsetAndLength(IASTNode node, IASTNode from) { - setOffsetAndLength(node, offset(from), length(from)); - } - - - protected static boolean isSameName(IASTName name1, IASTName name2) { - return Arrays.equals(name1.getLookupKey(), name2.getLookupKey()); - } - - /** - * Creates a IASTName node from an identifier token. - * If the token is a completion token then it is added to the completion node. - */ - protected IASTName createName(IToken token) { - IASTName name = nodeFactory.newName(token.toString().toCharArray()); // TODO, token.toCharArray(); - setOffsetAndLength(name, token); - - if(isCompletionToken(token)) - addNameToCompletionNode(name, token.toString()); - - return name; - } - - - /** - * Runs the given parser on the given token list. - * - */ - protected IASTNode runSecondaryParser(IParser secondaryParser) { - return runSecondaryParser(secondaryParser, parser.getRuleTokens()); - } - - - /** - * Runs the given parser on the tokens that make up the current rule. - */ - protected IASTNode runSecondaryParser(IParser secondaryParser, List tokens) { - // the secondary parser will alter the token kinds, which will need to be undone - int[] savedKinds = new int[tokens.size()]; - - int i = 0; - for(IToken token : tokens) - savedKinds[i++] = token.getKind(); - - secondaryParser.setTokens(tokens); - - // need to pass tu because any new completion nodes need to be linked directly to the root - IASTCompletionNode compNode = secondaryParser.parse(tu, options); - addNameToCompletionNode(compNode); - IASTNode result = secondaryParser.getSecondaryParseResult(); - - // restore the token kinds - i = 0; - for(IToken token : tokens) - token.setKind(savedKinds[i++]); - - return result; - } - - - - /** - * Allows simple pattern match testing of lists of tokens. - * - * TODO: need to take token mapping into account - * - * @throws NullPointerException if source or pattern is null - */ - public static boolean matchTokens(List source, ITokenMap tokenMap, Integer ... pattern) { - if(source.size() != pattern.length) // throws NPE if either parameter is null - return false; - - for(int i = 0, n = pattern.length; i < n; i++) { - if(tokenMap.mapKind(source.get(i).getKind()) != pattern[i].intValue()) - return false; - } - return true; - } - - - /** - * Finds the tokens in the given list that are between startOffset and endOffset. - * Note, the offsets have to be exact. - */ - public static List tokenOffsetSubList(List tokens, int startOffset, int endOffset) { - int first = 0, last = 0; - int i = 0; - for(IToken t : tokens) { - if(offset(t) == startOffset) { - first = i; - } - if(endOffset(t) == endOffset) { - last = i; - break; - } - i++; - } - return tokens.subList(first, last + 1); - } - - - /************************************************************************************************************* - * Start of actions. - ************************************************************************************************************/ - - - /** - * Method that is called by the special production - * in order to create a new scope in the AST stack. - */ - public void openASTScope() { - astStack.openScope(); - } - - - /** - * Place null on the stack. - * Usually called for optional element to indicate the element - * was not parsed. - */ - public void consumeEmpty() { - astStack.push(null); - } - - - /** - * Place a marker on the stack. - * Usually used for very simple optional elements to indicate - * the element was parsed. Usually the existence of an AST node - * on the stack is used instead of the marker, but for simple - * cases like an optional keyword this action is useful. - */ - public void consumePlaceHolder() { - astStack.push(PLACE_HOLDER); - } - - - /** - * Just pops the stack, useful if you have a rule that generates - * a node but you don't need the node. - */ - public void consumeIgnore() { - astStack.pop(); - } - - - /** - * Gets the current token and places it on the stack for later consumption. - */ - public void consumeDeclSpecToken() { - astStack.push(parser.getRightIToken()); - } - - - /** - * Gets the current token and places it on the stack for later consumption. - */ - public void consumeToken() { - astStack.push(parser.getRightIToken()); - } - - - public void consumeTranslationUnit() { // can't close the outermost scope // the outermost scope may be empty if there are no tokens in the file @@ -436,7 +146,7 @@ public abstract class BuildASTParserAction { IASTDeclaration[] declarations = tu.getDeclarations(); if (declarations.length != 0) { IASTNode d = declarations[declarations.length-1]; - setOffsetAndLength(tu, 0, offset(d) + length(d)); + ParserUtil.setOffsetAndLength(tu, 0, offset(d) + length(d)); } resolveAmbiguityNodes(); @@ -446,29 +156,18 @@ public abstract class BuildASTParserAction { /** * Removes ambiguity nodes from the AST by resolving them. - * The ambiguity nodes resolve themselves when visited for the first time. - * All ambiguities must be resolved before the AST is returned. * - * @see CPPASTAmbiguity.accept() - * @see CASTAmbiguity.accept() - * - * TODO Ambiguity resolution may be avoided in the case that no - * ambiguity nodes were created. + * @see AbstractGNUSourceCodeParser#resolveAmbiguities() */ private void resolveAmbiguityNodes() { - tu.accept(EMPTY_VISITOR); + tu.accept(createAmbiguityNodeVisitor()); if (tu instanceof ASTTranslationUnit) { ((ASTTranslationUnit)tu).cleanupAfterAmbiguityResolution(); } } - /** - * When applied to the AST causes ambiguity nodes to be resolved. - */ - protected static final ASTVisitor EMPTY_VISITOR = new ASTVisitor() { - { shouldVisitStatements = true; } - }; + protected abstract ASTVisitor createAmbiguityNodeVisitor(); /** @@ -583,7 +282,7 @@ public abstract class BuildASTParserAction { // } IASTLiteralExpression expr = nodeFactory.newLiteralExpression(kind, rep); - setOffsetAndLength(expr, token); + ParserUtil.setOffsetAndLength(expr, token); astStack.push(expr); } @@ -795,7 +494,7 @@ public abstract class BuildASTParserAction { List tokens = parser.getRuleTokens(); IToken defaultToken = tokens.get(0); IToken colonToken = tokens.get(1); - setOffsetAndLength(stat, offset(defaultToken), offset(colonToken) - offset(defaultToken) + 1); + ParserUtil.setOffsetAndLength(stat, offset(defaultToken), offset(colonToken) - offset(defaultToken) + 1); IASTCompoundStatement compound = nodeFactory.newCompoundStatement(); setOffsetAndLength(compound); @@ -917,7 +616,7 @@ public abstract class BuildASTParserAction { declarator = (IASTDeclarator) astStack.pop(); else { declarator = nodeFactory.newDeclarator(nodeFactory.newName()); - setOffsetAndLength(declarator, parser.getRightIToken().getEndOffset(), 0); + ParserUtil.setOffsetAndLength(declarator, parser.getRightIToken().getEndOffset(), 0); } IASTDeclSpecifier declSpecifier = (IASTDeclSpecifier) astStack.pop(); @@ -976,6 +675,19 @@ public abstract class BuildASTParserAction { setOffsetAndLength(declarator); // adjust the length to include the initializer } + + /** + * asm_definition + * ::= 'asm' '(' 'stringlit' ')' ';' + */ + public void consumeDeclarationASM() { + String s = parser.getRuleTokens().get(2).toString(); + IASTASMDeclaration asm = nodeFactory.newASMDeclaration(s); + + setOffsetAndLength(asm); + astStack.push(asm); + } + /** @@ -999,11 +711,11 @@ public abstract class BuildASTParserAction { final int endOffset = parser.getRightIToken().getEndOffset(); IASTName name = nodeFactory.newName(); - setOffsetAndLength(name, endOffset, 0); + ParserUtil.setOffsetAndLength(name, endOffset, 0); // it appears that a declarator is always required in the AST here IASTDeclarator declarator = nodeFactory.newDeclarator(name); - setOffsetAndLength(declarator, endOffset, 0); + ParserUtil.setOffsetAndLength(declarator, endOffset, 0); IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop(); IASTParameterDeclaration declaration = nodeFactory.newParameterDeclaration(declSpec, declarator); @@ -1113,7 +825,7 @@ public abstract class BuildASTParserAction { int offset = offset(nested); int length = endOffset(arrayModifier) - offset; - setOffsetAndLength(declarator, offset, length); + ParserUtil.setOffsetAndLength(declarator, offset, length); declarator.addArrayModifier(arrayModifier); astStack.push(declarator); @@ -1133,7 +845,7 @@ public abstract class BuildASTParserAction { int offset = offset(name); int length = endOffset(arrayModifier) - offset; - setOffsetAndLength(decl, offset, length); + ParserUtil.setOffsetAndLength(decl, offset, length); decl.addArrayModifier(arrayModifier); astStack.push(decl); @@ -1155,7 +867,7 @@ public abstract class BuildASTParserAction { declarator.setNestedDeclarator(decl); declarator.setName(nodeFactory.newName()); int offset = offset(decl); - setOffsetAndLength(declarator, offset, endOffset - offset); + ParserUtil.setOffsetAndLength(declarator, offset, endOffset - offset); astStack.push(declarator); } else { @@ -1171,7 +883,7 @@ public abstract class BuildASTParserAction { } int offset = offset(name); // TODO - setOffsetAndLength(declarator, offset, endOffset - offset); + ParserUtil.setOffsetAndLength(declarator, offset, endOffset - offset); astStack.push(declarator); } } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ParserUtil.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ParserUtil.java new file mode 100644 index 00000000000..44885fcb9c1 --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/ParserUtil.java @@ -0,0 +1,102 @@ +package org.eclipse.cdt.core.dom.lrparser.action; + +import java.util.Arrays; +import java.util.List; + +import lpg.lpgjavaruntime.IToken; + +import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.internal.core.dom.parser.ASTNode; + +@SuppressWarnings("restriction") +public final class ParserUtil { + + private ParserUtil() {} + + + public static int offset(IToken token) { + return token.getStartOffset(); + } + + public static int offset(IASTNode node) { + return ((ASTNode)node).getOffset(); + } + + public static int length(IToken token) { + return endOffset(token) - offset(token); + } + + public static int length(IASTNode node) { + return ((ASTNode)node).getLength(); + } + + public static int endOffset(IASTNode node) { + return offset(node) + length(node); + } + + public static int endOffset(IToken token) { + return token.getEndOffset(); + } + + + + + public static void setOffsetAndLength(IASTNode node, IToken token) { + ((ASTNode)node).setOffsetAndLength(offset(token), length(token)); + } + + public static void setOffsetAndLength(IASTNode node, int offset, int length) { + ((ASTNode)node).setOffsetAndLength(offset, length); + } + + public static void setOffsetAndLength(IASTNode node, IASTNode from) { + setOffsetAndLength(node, offset(from), length(from)); + } + + + public static boolean isSameName(IASTName name1, IASTName name2) { + return Arrays.equals(name1.getLookupKey(), name2.getLookupKey()); + } + + + /** + * Allows simple pattern match testing of lists of tokens. + * + * @throws NullPointerException if source or pattern is null + */ + public static boolean matchTokens(List source, ITokenMap tokenMap, Integer ... pattern) { + if(source.size() != pattern.length) // throws NPE if either parameter is null + return false; + + for(int i = 0, n = pattern.length; i < n; i++) { + if(tokenMap.mapKind(source.get(i).getKind()) != pattern[i].intValue()) + return false; + } + return true; + } + + + /** + * Finds the tokens in the given list that are between startOffset and endOffset. + * Note, the offsets have to be exact. + */ + public static List tokenOffsetSubList(List tokens, int startOffset, int endOffset) { + int first = 0, last = 0; + int i = 0; + for(IToken t : tokens) { + if(offset(t) == startOffset) { + first = i; + } + if(endOffset(t) == endOffset) { + last = i; + break; + } + i++; + } + return tokens.subList(first, last + 1); + } + + + +} diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java index c4b351d9e6f..cdb81619f88 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java @@ -12,12 +12,17 @@ package org.eclipse.cdt.core.dom.lrparser.action.c99; import static org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym.*; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.endOffset; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.matchTokens; import java.util.Collections; import java.util.List; import lpg.lpgjavaruntime.IToken; +import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; @@ -62,15 +67,19 @@ import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.action.BuildASTParserAction; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; +import org.eclipse.cdt.core.dom.lrparser.action.ParserUtil; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; import org.eclipse.cdt.core.parser.util.CollectionUtils; import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99ExpressionParser; import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99NoCastExpressionParser; import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym; import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99SizeofExpressionParser; +import org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement; +import org.eclipse.cdt.internal.core.dom.parser.c.CASTAmbiguityResolver; import org.eclipse.cdt.internal.core.dom.parser.c.CASTAmbiguousExpression; import org.eclipse.cdt.internal.core.dom.parser.c.CASTAmbiguousStatement; @@ -92,8 +101,9 @@ public class C99BuildASTParserAction extends BuildASTParserAction { * @param orderedTerminalSymbols When an instance of this class is created for a parser * that parsers token kinds will be mapped back to the base C99 parser's token kinds. */ - public C99BuildASTParserAction(ICNodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu) { - super(nodeFactory, parser, tu); + public C99BuildASTParserAction(ICNodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu, ScopedStack astStack) { + super(nodeFactory, parser, tu, astStack); + this.nodeFactory = nodeFactory; this.tokenMap = new TokenMap(C99Parsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols()); } @@ -129,13 +139,16 @@ public class C99BuildASTParserAction extends BuildASTParserAction { return new C99SizeofExpressionParser(parser.getOrderedTerminalSymbols()); } + @Override + protected IASTName createName(char[] image) { + return nodeFactory.newName(image); + } + /******************************************************************** * Start of semantic actions. ********************************************************************/ - - /** @@ -322,7 +335,7 @@ public class C99BuildASTParserAction extends BuildASTParserAction { public void consumePointer() { IASTPointer pointer = nodeFactory.newPointer(); IToken star = parser.getRightIToken(); - setOffsetAndLength(pointer, star); + ParserUtil.setOffsetAndLength(pointer, star); astStack.push(pointer); } @@ -618,14 +631,14 @@ public class C99BuildASTParserAction extends BuildASTParserAction { TK_for, TK_LeftParen, TK_Completion, TK_EOC, TK_EOC, TK_EOC, TK_EOC)) { IASTName name = createName(tokens.get(2)); IASTIdExpression idExpression = nodeFactory.newIdExpression(name); - setOffsetAndLength(idExpression, offset(name), length(name)); + ParserUtil.setOffsetAndLength(idExpression, offset(name), length(name)); initializer = nodeFactory.newExpressionStatement(idExpression); - setOffsetAndLength(initializer, offset(name), length(name)); + ParserUtil.setOffsetAndLength(initializer, offset(name), length(name)); } if(node != null) - setOffsetAndLength(initializer, offset(node), length(node)); + ParserUtil.setOffsetAndLength(initializer, offset(node), length(node)); IASTForStatement forStat = nodeFactory.newForStatement(initializer, expr2, expr3, body); setOffsetAndLength(forStat); @@ -727,4 +740,11 @@ public class C99BuildASTParserAction extends BuildASTParserAction { protected IASTAmbiguousStatement createAmbiguousStatement(IASTStatement... statements) { return new CASTAmbiguousStatement(statements); } + + @Override + protected ASTVisitor createAmbiguityNodeVisitor() { + return new CASTAmbiguityResolver(); + } + + } \ No newline at end of file diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java index 1860a180329..aa5d43d261f 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java @@ -10,6 +10,10 @@ *******************************************************************************/ package org.eclipse.cdt.core.dom.lrparser.action.cpp; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.endOffset; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.length; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.matchTokens; +import static org.eclipse.cdt.core.dom.lrparser.action.ParserUtil.offset; import static org.eclipse.cdt.core.parser.util.CollectionUtils.findFirstAndRemove; import static org.eclipse.cdt.core.parser.util.CollectionUtils.reverseIterable; import static org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym.*; @@ -21,7 +25,7 @@ import java.util.List; import lpg.lpgjavaruntime.IToken; -import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration; +import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; @@ -95,6 +99,8 @@ import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.LPGTokenAdapter; import org.eclipse.cdt.core.dom.lrparser.action.BuildASTParserAction; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; +import org.eclipse.cdt.core.dom.lrparser.action.ParserUtil; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPExpressionParser; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoCastExpressionParser; @@ -105,6 +111,7 @@ import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPTemplateTypeParameterPa import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguityResolver; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguousDeclarator; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguousExpression; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguousStatement; @@ -137,8 +144,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { * @param orderedTerminalSymbols When an instance of this class is created for a parser * that parsers token kinds will be mapped back to the base C99 parser's token kinds. */ - public CPPBuildASTParserAction(ICPPNodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu) { - super(nodeFactory, parser, tu); + public CPPBuildASTParserAction(ICPPNodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu, ScopedStack astStack) { + super(nodeFactory, parser, tu, astStack); + this.nodeFactory = nodeFactory; this.tokenMap = new TokenMap(CPPParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols()); } @@ -158,7 +166,11 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { return baseKind(token) == TK_identifier; } - + @Override + protected IASTName createName(char[] image) { + return nodeFactory.newName(image); + } + @Override protected IParser getExpressionParser() { return new CPPExpressionParser(parser.getOrderedTerminalSymbols()); @@ -224,17 +236,17 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { IASTName secondName = ((IASTNamedTypeSpecifier)typeId.getDeclSpecifier()).getName(); IASTNamedTypeSpecifier newTypeSpecifier = nodeFactory.newTypedefNameSpecifier(firstName.copy()); - setOffsetAndLength(newTypeSpecifier, firstName); + ParserUtil.setOffsetAndLength(newTypeSpecifier, firstName); IASTDeclarator newDeclarator = nodeFactory.newDeclarator(nodeFactory.newName()); - setOffsetAndLength(newDeclarator, endOffset(firstName), 0); + ParserUtil.setOffsetAndLength(newDeclarator, endOffset(firstName), 0); IASTTypeId newTypeId = nodeFactory.newTypeId(newTypeSpecifier, newDeclarator); - setOffsetAndLength(newTypeId, firstName); + ParserUtil.setOffsetAndLength(newTypeId, firstName); IASTIdExpression newInitializer = nodeFactory.newIdExpression(secondName.copy()); - setOffsetAndLength(newInitializer, secondName); + ParserUtil.setOffsetAndLength(newInitializer, secondName); ICPPASTNewExpression alternate = nodeFactory.newNewExpression(null, newInitializer, newTypeId); - setOffsetAndLength(alternate, newExpression); + ParserUtil.setOffsetAndLength(alternate, newExpression); newExpression.setIsGlobal(hasDoubleColon); newExpression.setIsNewTypeId(isNewTypeId); @@ -384,7 +396,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { IASTDeclSpecifier declSpec = (IASTDeclSpecifier) astStack.pop(); IASTInitializerExpression initializer = nodeFactory.newInitializerExpression(expr); - setOffsetAndLength(initializer, offset(expr), length(expr)); + ParserUtil.setOffsetAndLength(initializer, offset(expr), length(expr)); declarator.setInitializer(initializer); IASTSimpleDeclaration declaration = nodeFactory.newSimpleDeclaration(declSpec); @@ -457,10 +469,10 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { IASTName name = ((IASTIdExpression)expr).getName().copy(); IASTNamedTypeSpecifier declSpec = nodeFactory.newTypedefNameSpecifier(name); - setOffsetAndLength(declSpec, name); + ParserUtil.setOffsetAndLength(declSpec, name); IASTDeclarator declarator = nodeFactory.newDeclarator(nodeFactory.newName()); - setOffsetAndLength(declarator, endOffset(declSpec), 0); + ParserUtil.setOffsetAndLength(declarator, endOffset(declSpec), 0); IASTTypeId typeId = nodeFactory.newTypeId(declSpec, declarator); setOffsetAndLength(typeId); @@ -556,7 +568,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { int offset = offset(parser.getLeftIToken()); int length = offset - endOffset(oldName); - setOffsetAndLength(newName, offset, length); + ParserUtil.setOffsetAndLength(newName, offset, length); templateId.setTemplateName(newName); } @@ -651,9 +663,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { TK_for, TK_LeftParen, TK_Completion, TK_EOC, TK_EOC, TK_EOC, TK_EOC)) { IASTName name = createName(tokens.get(2)); IASTIdExpression idExpression = nodeFactory.newIdExpression(name); - setOffsetAndLength(idExpression, offset(name), length(name)); + ParserUtil.setOffsetAndLength(idExpression, offset(name), length(name)); initializer = nodeFactory.newExpressionStatement(idExpression); - setOffsetAndLength(initializer, offset(name), length(name)); + ParserUtil.setOffsetAndLength(initializer, offset(name), length(name)); } @@ -779,13 +791,13 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { ICPPASTQualifiedName qualifiedName = nodeFactory.newQualifiedName(); qualifiedName.setFullyQualified(startsWithColonColon); - setOffsetAndLength(qualifiedName, startOffset, endOffset - startOffset); + ParserUtil.setOffsetAndLength(qualifiedName, startOffset, endOffset - startOffset); for(IASTName name : reverseIterable(names)) qualifiedName.addName(name); if(qualifiedName instanceof CPPASTQualifiedName) { // compute the signature, find the tokens that make up the name - List nameTokens = tokenOffsetSubList(parser.getRuleTokens(), startOffset, endOffset); + List nameTokens = ParserUtil.tokenOffsetSubList(parser.getRuleTokens(), startOffset, endOffset); String signature = createStringRepresentation(nameTokens); ((CPPASTQualifiedName)qualifiedName).setSignature(signature); } @@ -793,7 +805,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { // there must be a dummy name in the AST after the last double colon, this happens with pointer to member names if(endsWithColonColon) { IASTName dummyName = nodeFactory.newName(); - setOffsetAndLength(dummyName, endOffset, 0); + ParserUtil.setOffsetAndLength(dummyName, endOffset, 0); qualifiedName.addName(dummyName); } @@ -891,18 +903,6 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { } - /** - * asm_definition - * ::= 'asm' '(' 'stringlit' ')' ';' - */ - public void consumeDeclarationASM() { - String s = parser.getRuleTokens().get(2).toString(); - IASTASMDeclaration asm = nodeFactory.newASMDeclaration(s); - - setOffsetAndLength(asm); - astStack.push(asm); - } - /** * namespace_alias_definition * ::= 'namespace' 'identifier' '=' dcolon_opt nested_name_specifier_opt namespace_name ';' @@ -1213,14 +1213,14 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { else if(matchTokens(ruleTokens, tokenMap, TK_Completion, TK_EndOfCompletion)) { IASTName name = createName(parser.getLeftIToken()); declSpec = nodeFactory.newTypedefNameSpecifier(name); - setOffsetAndLength(declSpec, offset(name), length(name)); + ParserUtil.setOffsetAndLength(declSpec, offset(name), length(name)); declarators = Collections.emptyList(); // throw away the bogus declarator } // can happen if implicit int is used else if(declSpec == null) { declSpec = nodeFactory.newSimpleDeclSpecifier(); - setOffsetAndLength(declSpec, parser.getLeftIToken().getStartOffset(), 0); + ParserUtil.setOffsetAndLength(declSpec, parser.getLeftIToken().getStartOffset(), 0); } @@ -1242,11 +1242,11 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { int offset = offset(parser.getLeftIToken()); int length = endOffset(ruleTokens.get(ruleTokens.size()-2)) - offset; - setOffsetAndLength(declSpec, offset, length); + ParserUtil.setOffsetAndLength(declSpec, offset, length); IASTName name = createName(nameToken); IASTDeclarator declarator = nodeFactory.newDeclarator(name); - setOffsetAndLength(declarator, nameToken); + ParserUtil.setOffsetAndLength(declarator, nameToken); declarators.add(declarator); } @@ -1280,23 +1280,23 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { IASTDeclarator nested = declarator.getNestedDeclarator(); ICPPASTSimpleDeclSpecifier simpleDeclSpec = nodeFactory.newSimpleDeclSpecifier(); // empty - setOffsetAndLength(simpleDeclSpec, parser.getLeftIToken().getStartOffset(), 0); + ParserUtil.setOffsetAndLength(simpleDeclSpec, parser.getLeftIToken().getStartOffset(), 0); - if(!classNames.isEmpty() && nested != null && isSameName(name, classNames.getLast())) { + if(!classNames.isEmpty() && nested != null && ParserUtil.isSameName(name, classNames.getLast())) { IASTName paramTypeName = nested.getName(); // reuse the parameter name node IASTNamedTypeSpecifier paramName = nodeFactory.newTypedefNameSpecifier(paramTypeName); - setOffsetAndLength(paramName, paramTypeName); + ParserUtil.setOffsetAndLength(paramName, paramTypeName); IASTDeclarator paramDeclarator = nodeFactory.newDeclarator(nodeFactory.newName()); - setOffsetAndLength(paramDeclarator, offset(paramName) + length(paramName), 0); + ParserUtil.setOffsetAndLength(paramDeclarator, offset(paramName) + length(paramName), 0); ICPPASTParameterDeclaration parameter = nodeFactory.newParameterDeclaration(paramName, paramDeclarator); - setOffsetAndLength(parameter, paramName); + ParserUtil.setOffsetAndLength(parameter, paramName); ICPPASTFunctionDeclarator constructorDeclarator = nodeFactory.newFunctionDeclarator(name); // reuse the name node constructorDeclarator.addParameterDeclaration(parameter); - setOffsetAndLength(constructorDeclarator, offset(simpleDeclSpec), endOffset(paramDeclarator) - offset(simpleDeclSpec) + 1); + ParserUtil.setOffsetAndLength(constructorDeclarator, offset(simpleDeclSpec), endOffset(paramDeclarator) - offset(simpleDeclSpec) + 1); astStack.push(constructorDeclarator); astStack.push(simpleDeclSpec); @@ -1314,11 +1314,11 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { for(IASTName n : qualifiedName.getNames()) newQualifiedName.addName(n); - setOffsetAndLength(newQualifiedName, offset(name), endOffset(qualifiedName.getLastName()) - offset(name)); + ParserUtil.setOffsetAndLength(newQualifiedName, offset(name), endOffset(qualifiedName.getLastName()) - offset(name)); declarator.setName(newQualifiedName); - setOffsetAndLength(declarator, offset(name), length(declarator) + offset(declarator) - offset(name)); + ParserUtil.setOffsetAndLength(declarator, offset(name), length(declarator) + offset(declarator) - offset(name)); astStack.push(declarator); astStack.push(simpleDeclSpec); @@ -1598,7 +1598,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { */ public void consumeAbstractDeclaratorEmpty() { IASTName name = nodeFactory.newName(); - setOffsetAndLength(name, offset(parser.getLeftIToken())+1, 0); + ParserUtil.setOffsetAndLength(name, offset(parser.getLeftIToken())+1, 0); IASTDeclarator declarator = nodeFactory.newDeclarator(name); setOffsetAndLength(declarator); astStack.push(declarator); @@ -1637,7 +1637,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { if(declSpec == null) { // can happen if implicit int is used declSpec = nodeFactory.newSimpleDeclSpecifier(); - setOffsetAndLength(declSpec, parser.getLeftIToken().getStartOffset(), 0); + ParserUtil.setOffsetAndLength(declSpec, parser.getLeftIToken().getStartOffset(), 0); } else if(disambiguateToConstructor(declSpec, declarator)) { declSpec = (IASTDeclSpecifier) astStack.pop(); @@ -1793,4 +1793,8 @@ public class CPPBuildASTParserAction extends BuildASTParserAction { return new CPPASTAmbiguousStatement(statements); } + @Override + protected ASTVisitor createAmbiguityNodeVisitor() { + return new CPPASTAmbiguityResolver(); + } } \ No newline at end of file diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gcc/GCCBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gcc/GCCBuildASTParserAction.java new file mode 100644 index 00000000000..21fc6b69b29 --- /dev/null +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/gcc/GCCBuildASTParserAction.java @@ -0,0 +1,77 @@ +package org.eclipse.cdt.core.dom.lrparser.action.gcc; + +import java.util.List; + +import lpg.lpgjavaruntime.IToken; + +import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration; +import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.cdt.core.dom.ast.INodeFactory; +import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; +import org.eclipse.cdt.core.dom.lrparser.action.AbstractParserAction; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; +import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; +import org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym; + +public class GCCBuildASTParserAction extends AbstractParserAction { + + private final INodeFactory nodeFactory; + + private final TokenMap tokenMap; + + public GCCBuildASTParserAction(INodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu, ScopedStack astStack) { + super(parser, tu, astStack); + + this.nodeFactory = nodeFactory; + this.tokenMap = new TokenMap(GCCParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols()); + } + + + @Override + protected IASTName createName(char[] image) { + return nodeFactory.newName(image); + } + + @Override + protected boolean isCompletionToken(IToken token) { + return tokenMap.mapKind(token.getKind()) == GCCParsersym.TK_Completion; + } + + + + /** + * Add support for GCC extended ASM declaration syntax. + * + * + * asm_definition -- same as in C++ but its not in C99 spec so we put it here + * ::= 'asm' '(' 'stringlit' ')' ';' + * + * extended_asm_declaration + * ::= 'asm' 'volatile' '(' extended_asm_param_seq ')' ';' + * | 'asm' '(' extended_asm_param_seq ')' ';' + * + */ + public void consumeDeclarationASM() { + List tokens = parser.getRuleTokens(); + + int firstToken = 2; + if(tokenMap.mapKind(tokens.get(1).getKind()) == GCCParsersym.TK_volatile) + firstToken = 3; + + StringBuilder sb = new StringBuilder(); + boolean first = true; + for(IToken token : tokens.subList(firstToken, tokens.size()-2)) { + if(!first) + sb.append(' '); + sb.append(token.toString()); + first = false; + } + + IASTASMDeclaration asm = nodeFactory.newASMDeclaration(sb.toString()); + setOffsetAndLength(asm); + astStack.push(asm); + } + + +} diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java index 9577abc7afa..22f5f9a4896 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99ExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -165,13 +166,16 @@ public class C99ExpressionParser extends PrsStream implements RuleAction , IPars private C99BuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public C99ExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu); + action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -199,13 +203,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -767,25 +770,25 @@ public C99ExpressionParser(String[] mapFrom) { // constructor // // Rule 159: storage_class_specifier ::= storage_class_specifier_token // - case 159: { action. consumeDeclSpecToken(); break; + case 159: { action. consumeToken(); break; } // // Rule 165: simple_type_specifier ::= simple_type_specifier_token // - case 165: { action. consumeDeclSpecToken(); break; + case 165: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= Completion // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // // Rule 179: typedef_name_in_declspec ::= identifier // - case 179: { action. consumeDeclSpecToken(); break; + case 179: { action. consumeToken(); break; } // @@ -875,13 +878,13 @@ public C99ExpressionParser(String[] mapFrom) { // constructor // // Rule 215: type_qualifier ::= type_qualifier_token // - case 215: { action. consumeDeclSpecToken(); break; + case 215: { action. consumeToken(); break; } // // Rule 219: function_specifier ::= inline // - case 219: { action. consumeDeclSpecToken(); break; + case 219: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java index 635a675bd50..044093e8dd5 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -165,13 +166,16 @@ public class C99NoCastExpressionParser extends PrsStream implements RuleAction , private C99BuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public C99NoCastExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu); + action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -199,13 +203,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -761,25 +764,25 @@ public C99NoCastExpressionParser(String[] mapFrom) { // constructor // // Rule 158: storage_class_specifier ::= storage_class_specifier_token // - case 158: { action. consumeDeclSpecToken(); break; + case 158: { action. consumeToken(); break; } // // Rule 164: simple_type_specifier ::= simple_type_specifier_token // - case 164: { action. consumeDeclSpecToken(); break; + case 164: { action. consumeToken(); break; } // // Rule 177: typedef_name_in_declspec ::= Completion // - case 177: { action. consumeDeclSpecToken(); break; + case 177: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= identifier // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // @@ -869,13 +872,13 @@ public C99NoCastExpressionParser(String[] mapFrom) { // constructor // // Rule 214: type_qualifier ::= type_qualifier_token // - case 214: { action. consumeDeclSpecToken(); break; + case 214: { action. consumeToken(); break; } // // Rule 218: function_specifier ::= inline // - case 218: { action. consumeDeclSpecToken(); break; + case 218: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java index 5b123b462f3..b75d93191ed 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99Parser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -165,13 +166,16 @@ public class C99Parser extends PrsStream implements RuleAction , IParserActionTo private C99BuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public C99Parser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu); + action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -199,13 +203,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -767,25 +770,25 @@ public C99Parser(String[] mapFrom) { // constructor // // Rule 159: storage_class_specifier ::= storage_class_specifier_token // - case 159: { action. consumeDeclSpecToken(); break; + case 159: { action. consumeToken(); break; } // // Rule 165: simple_type_specifier ::= simple_type_specifier_token // - case 165: { action. consumeDeclSpecToken(); break; + case 165: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= Completion // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // // Rule 179: typedef_name_in_declspec ::= identifier // - case 179: { action. consumeDeclSpecToken(); break; + case 179: { action. consumeToken(); break; } // @@ -875,13 +878,13 @@ public C99Parser(String[] mapFrom) { // constructor // // Rule 215: type_qualifier ::= type_qualifier_token // - case 215: { action. consumeDeclSpecToken(); break; + case 215: { action. consumeToken(); break; } // // Rule 219: function_specifier ::= inline // - case 219: { action. consumeDeclSpecToken(); break; + case 219: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java index 3f67e667f95..7bc098faf11 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99SizeofExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -165,13 +166,16 @@ public class C99SizeofExpressionParser extends PrsStream implements RuleAction , private C99BuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public C99SizeofExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu); + action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -199,13 +203,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -761,25 +764,25 @@ public C99SizeofExpressionParser(String[] mapFrom) { // constructor // // Rule 158: storage_class_specifier ::= storage_class_specifier_token // - case 158: { action. consumeDeclSpecToken(); break; + case 158: { action. consumeToken(); break; } // // Rule 164: simple_type_specifier ::= simple_type_specifier_token // - case 164: { action. consumeDeclSpecToken(); break; + case 164: { action. consumeToken(); break; } // // Rule 177: typedef_name_in_declspec ::= Completion // - case 177: { action. consumeDeclSpecToken(); break; + case 177: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= identifier // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // @@ -869,13 +872,13 @@ public C99SizeofExpressionParser(String[] mapFrom) { // constructor // // Rule 214: type_qualifier ::= type_qualifier_token // - case 214: { action. consumeDeclSpecToken(); break; + case 214: { action. consumeToken(); break; } // // Rule 218: function_specifier ::= inline // - case 218: { action. consumeDeclSpecToken(); break; + case 218: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java index ce11ca8d98b..dd430004489 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -166,13 +167,16 @@ public class CPPExpressionParser extends PrsStream implements RuleAction , IPars private CPPBuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public CPPExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu); + action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -200,13 +204,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -1110,127 +1113,127 @@ public CPPExpressionParser(String[] mapFrom) { // constructor // // Rule 234: no_type_declaration_specifier ::= friend // - case 234: { action. consumeDeclSpecToken(); break; + case 234: { action. consumeToken(); break; } // // Rule 235: no_type_declaration_specifier ::= typedef // - case 235: { action. consumeDeclSpecToken(); break; + case 235: { action. consumeToken(); break; } // // Rule 255: storage_class_specifier ::= auto // - case 255: { action. consumeDeclSpecToken(); break; + case 255: { action. consumeToken(); break; } // // Rule 256: storage_class_specifier ::= register // - case 256: { action. consumeDeclSpecToken(); break; + case 256: { action. consumeToken(); break; } // // Rule 257: storage_class_specifier ::= static // - case 257: { action. consumeDeclSpecToken(); break; + case 257: { action. consumeToken(); break; } // // Rule 258: storage_class_specifier ::= extern // - case 258: { action. consumeDeclSpecToken(); break; + case 258: { action. consumeToken(); break; } // // Rule 259: storage_class_specifier ::= mutable // - case 259: { action. consumeDeclSpecToken(); break; + case 259: { action. consumeToken(); break; } // // Rule 260: function_specifier ::= inline // - case 260: { action. consumeDeclSpecToken(); break; + case 260: { action. consumeToken(); break; } // // Rule 261: function_specifier ::= virtual // - case 261: { action. consumeDeclSpecToken(); break; + case 261: { action. consumeToken(); break; } // // Rule 262: function_specifier ::= explicit // - case 262: { action. consumeDeclSpecToken(); break; + case 262: { action. consumeToken(); break; } // // Rule 263: simple_type_specifier ::= char // - case 263: { action. consumeDeclSpecToken(); break; + case 263: { action. consumeToken(); break; } // // Rule 264: simple_type_specifier ::= wchar_t // - case 264: { action. consumeDeclSpecToken(); break; + case 264: { action. consumeToken(); break; } // // Rule 265: simple_type_specifier ::= bool // - case 265: { action. consumeDeclSpecToken(); break; + case 265: { action. consumeToken(); break; } // // Rule 266: simple_type_specifier ::= short // - case 266: { action. consumeDeclSpecToken(); break; + case 266: { action. consumeToken(); break; } // // Rule 267: simple_type_specifier ::= int // - case 267: { action. consumeDeclSpecToken(); break; + case 267: { action. consumeToken(); break; } // // Rule 268: simple_type_specifier ::= long // - case 268: { action. consumeDeclSpecToken(); break; + case 268: { action. consumeToken(); break; } // // Rule 269: simple_type_specifier ::= signed // - case 269: { action. consumeDeclSpecToken(); break; + case 269: { action. consumeToken(); break; } // // Rule 270: simple_type_specifier ::= unsigned // - case 270: { action. consumeDeclSpecToken(); break; + case 270: { action. consumeToken(); break; } // // Rule 271: simple_type_specifier ::= float // - case 271: { action. consumeDeclSpecToken(); break; + case 271: { action. consumeToken(); break; } // // Rule 272: simple_type_specifier ::= double // - case 272: { action. consumeDeclSpecToken(); break; + case 272: { action. consumeToken(); break; } // // Rule 273: simple_type_specifier ::= void // - case 273: { action. consumeDeclSpecToken(); break; + case 273: { action. consumeToken(); break; } // @@ -1446,13 +1449,13 @@ public CPPExpressionParser(String[] mapFrom) { // constructor // // Rule 338: cv_qualifier ::= const // - case 338: { action. consumeDeclSpecToken(); break; + case 338: { action. consumeToken(); break; } // // Rule 339: cv_qualifier ::= volatile // - case 339: { action. consumeDeclSpecToken(); break; + case 339: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java index 31bfccba979..f097e86450f 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -166,13 +167,16 @@ public class CPPNoCastExpressionParser extends PrsStream implements RuleAction , private CPPBuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public CPPNoCastExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu); + action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -200,13 +204,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -1104,127 +1107,127 @@ public CPPNoCastExpressionParser(String[] mapFrom) { // constructor // // Rule 233: no_type_declaration_specifier ::= friend // - case 233: { action. consumeDeclSpecToken(); break; + case 233: { action. consumeToken(); break; } // // Rule 234: no_type_declaration_specifier ::= typedef // - case 234: { action. consumeDeclSpecToken(); break; + case 234: { action. consumeToken(); break; } // // Rule 254: storage_class_specifier ::= auto // - case 254: { action. consumeDeclSpecToken(); break; + case 254: { action. consumeToken(); break; } // // Rule 255: storage_class_specifier ::= register // - case 255: { action. consumeDeclSpecToken(); break; + case 255: { action. consumeToken(); break; } // // Rule 256: storage_class_specifier ::= static // - case 256: { action. consumeDeclSpecToken(); break; + case 256: { action. consumeToken(); break; } // // Rule 257: storage_class_specifier ::= extern // - case 257: { action. consumeDeclSpecToken(); break; + case 257: { action. consumeToken(); break; } // // Rule 258: storage_class_specifier ::= mutable // - case 258: { action. consumeDeclSpecToken(); break; + case 258: { action. consumeToken(); break; } // // Rule 259: function_specifier ::= inline // - case 259: { action. consumeDeclSpecToken(); break; + case 259: { action. consumeToken(); break; } // // Rule 260: function_specifier ::= virtual // - case 260: { action. consumeDeclSpecToken(); break; + case 260: { action. consumeToken(); break; } // // Rule 261: function_specifier ::= explicit // - case 261: { action. consumeDeclSpecToken(); break; + case 261: { action. consumeToken(); break; } // // Rule 262: simple_type_specifier ::= char // - case 262: { action. consumeDeclSpecToken(); break; + case 262: { action. consumeToken(); break; } // // Rule 263: simple_type_specifier ::= wchar_t // - case 263: { action. consumeDeclSpecToken(); break; + case 263: { action. consumeToken(); break; } // // Rule 264: simple_type_specifier ::= bool // - case 264: { action. consumeDeclSpecToken(); break; + case 264: { action. consumeToken(); break; } // // Rule 265: simple_type_specifier ::= short // - case 265: { action. consumeDeclSpecToken(); break; + case 265: { action. consumeToken(); break; } // // Rule 266: simple_type_specifier ::= int // - case 266: { action. consumeDeclSpecToken(); break; + case 266: { action. consumeToken(); break; } // // Rule 267: simple_type_specifier ::= long // - case 267: { action. consumeDeclSpecToken(); break; + case 267: { action. consumeToken(); break; } // // Rule 268: simple_type_specifier ::= signed // - case 268: { action. consumeDeclSpecToken(); break; + case 268: { action. consumeToken(); break; } // // Rule 269: simple_type_specifier ::= unsigned // - case 269: { action. consumeDeclSpecToken(); break; + case 269: { action. consumeToken(); break; } // // Rule 270: simple_type_specifier ::= float // - case 270: { action. consumeDeclSpecToken(); break; + case 270: { action. consumeToken(); break; } // // Rule 271: simple_type_specifier ::= double // - case 271: { action. consumeDeclSpecToken(); break; + case 271: { action. consumeToken(); break; } // // Rule 272: simple_type_specifier ::= void // - case 272: { action. consumeDeclSpecToken(); break; + case 272: { action. consumeToken(); break; } // @@ -1440,13 +1443,13 @@ public CPPNoCastExpressionParser(String[] mapFrom) { // constructor // // Rule 337: cv_qualifier ::= const // - case 337: { action. consumeDeclSpecToken(); break; + case 337: { action. consumeToken(); break; } // // Rule 338: cv_qualifier ::= volatile // - case 338: { action. consumeDeclSpecToken(); break; + case 338: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java index b4a2669bc1c..8bbfe08c2e2 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoFunctionDeclaratorParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -166,13 +167,16 @@ public class CPPNoFunctionDeclaratorParser extends PrsStream implements RuleActi private CPPBuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public CPPNoFunctionDeclaratorParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu); + action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -200,13 +204,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -1110,127 +1113,127 @@ public CPPNoFunctionDeclaratorParser(String[] mapFrom) { // constructor // // Rule 234: no_type_declaration_specifier ::= friend // - case 234: { action. consumeDeclSpecToken(); break; + case 234: { action. consumeToken(); break; } // // Rule 235: no_type_declaration_specifier ::= typedef // - case 235: { action. consumeDeclSpecToken(); break; + case 235: { action. consumeToken(); break; } // // Rule 255: storage_class_specifier ::= auto // - case 255: { action. consumeDeclSpecToken(); break; + case 255: { action. consumeToken(); break; } // // Rule 256: storage_class_specifier ::= register // - case 256: { action. consumeDeclSpecToken(); break; + case 256: { action. consumeToken(); break; } // // Rule 257: storage_class_specifier ::= static // - case 257: { action. consumeDeclSpecToken(); break; + case 257: { action. consumeToken(); break; } // // Rule 258: storage_class_specifier ::= extern // - case 258: { action. consumeDeclSpecToken(); break; + case 258: { action. consumeToken(); break; } // // Rule 259: storage_class_specifier ::= mutable // - case 259: { action. consumeDeclSpecToken(); break; + case 259: { action. consumeToken(); break; } // // Rule 260: function_specifier ::= inline // - case 260: { action. consumeDeclSpecToken(); break; + case 260: { action. consumeToken(); break; } // // Rule 261: function_specifier ::= virtual // - case 261: { action. consumeDeclSpecToken(); break; + case 261: { action. consumeToken(); break; } // // Rule 262: function_specifier ::= explicit // - case 262: { action. consumeDeclSpecToken(); break; + case 262: { action. consumeToken(); break; } // // Rule 263: simple_type_specifier ::= char // - case 263: { action. consumeDeclSpecToken(); break; + case 263: { action. consumeToken(); break; } // // Rule 264: simple_type_specifier ::= wchar_t // - case 264: { action. consumeDeclSpecToken(); break; + case 264: { action. consumeToken(); break; } // // Rule 265: simple_type_specifier ::= bool // - case 265: { action. consumeDeclSpecToken(); break; + case 265: { action. consumeToken(); break; } // // Rule 266: simple_type_specifier ::= short // - case 266: { action. consumeDeclSpecToken(); break; + case 266: { action. consumeToken(); break; } // // Rule 267: simple_type_specifier ::= int // - case 267: { action. consumeDeclSpecToken(); break; + case 267: { action. consumeToken(); break; } // // Rule 268: simple_type_specifier ::= long // - case 268: { action. consumeDeclSpecToken(); break; + case 268: { action. consumeToken(); break; } // // Rule 269: simple_type_specifier ::= signed // - case 269: { action. consumeDeclSpecToken(); break; + case 269: { action. consumeToken(); break; } // // Rule 270: simple_type_specifier ::= unsigned // - case 270: { action. consumeDeclSpecToken(); break; + case 270: { action. consumeToken(); break; } // // Rule 271: simple_type_specifier ::= float // - case 271: { action. consumeDeclSpecToken(); break; + case 271: { action. consumeToken(); break; } // // Rule 272: simple_type_specifier ::= double // - case 272: { action. consumeDeclSpecToken(); break; + case 272: { action. consumeToken(); break; } // // Rule 273: simple_type_specifier ::= void // - case 273: { action. consumeDeclSpecToken(); break; + case 273: { action. consumeToken(); break; } // @@ -1440,13 +1443,13 @@ public CPPNoFunctionDeclaratorParser(String[] mapFrom) { // constructor // // Rule 336: cv_qualifier ::= const // - case 336: { action. consumeDeclSpecToken(); break; + case 336: { action. consumeToken(); break; } // // Rule 337: cv_qualifier ::= volatile // - case 337: { action. consumeDeclSpecToken(); break; + case 337: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java index 57ea5df3415..8d5a94fc2fa 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -166,13 +167,16 @@ public class CPPParser extends PrsStream implements RuleAction , IParserActionTo private CPPBuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public CPPParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu); + action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -200,13 +204,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -1110,127 +1113,127 @@ public CPPParser(String[] mapFrom) { // constructor // // Rule 234: no_type_declaration_specifier ::= friend // - case 234: { action. consumeDeclSpecToken(); break; + case 234: { action. consumeToken(); break; } // // Rule 235: no_type_declaration_specifier ::= typedef // - case 235: { action. consumeDeclSpecToken(); break; + case 235: { action. consumeToken(); break; } // // Rule 255: storage_class_specifier ::= auto // - case 255: { action. consumeDeclSpecToken(); break; + case 255: { action. consumeToken(); break; } // // Rule 256: storage_class_specifier ::= register // - case 256: { action. consumeDeclSpecToken(); break; + case 256: { action. consumeToken(); break; } // // Rule 257: storage_class_specifier ::= static // - case 257: { action. consumeDeclSpecToken(); break; + case 257: { action. consumeToken(); break; } // // Rule 258: storage_class_specifier ::= extern // - case 258: { action. consumeDeclSpecToken(); break; + case 258: { action. consumeToken(); break; } // // Rule 259: storage_class_specifier ::= mutable // - case 259: { action. consumeDeclSpecToken(); break; + case 259: { action. consumeToken(); break; } // // Rule 260: function_specifier ::= inline // - case 260: { action. consumeDeclSpecToken(); break; + case 260: { action. consumeToken(); break; } // // Rule 261: function_specifier ::= virtual // - case 261: { action. consumeDeclSpecToken(); break; + case 261: { action. consumeToken(); break; } // // Rule 262: function_specifier ::= explicit // - case 262: { action. consumeDeclSpecToken(); break; + case 262: { action. consumeToken(); break; } // // Rule 263: simple_type_specifier ::= char // - case 263: { action. consumeDeclSpecToken(); break; + case 263: { action. consumeToken(); break; } // // Rule 264: simple_type_specifier ::= wchar_t // - case 264: { action. consumeDeclSpecToken(); break; + case 264: { action. consumeToken(); break; } // // Rule 265: simple_type_specifier ::= bool // - case 265: { action. consumeDeclSpecToken(); break; + case 265: { action. consumeToken(); break; } // // Rule 266: simple_type_specifier ::= short // - case 266: { action. consumeDeclSpecToken(); break; + case 266: { action. consumeToken(); break; } // // Rule 267: simple_type_specifier ::= int // - case 267: { action. consumeDeclSpecToken(); break; + case 267: { action. consumeToken(); break; } // // Rule 268: simple_type_specifier ::= long // - case 268: { action. consumeDeclSpecToken(); break; + case 268: { action. consumeToken(); break; } // // Rule 269: simple_type_specifier ::= signed // - case 269: { action. consumeDeclSpecToken(); break; + case 269: { action. consumeToken(); break; } // // Rule 270: simple_type_specifier ::= unsigned // - case 270: { action. consumeDeclSpecToken(); break; + case 270: { action. consumeToken(); break; } // // Rule 271: simple_type_specifier ::= float // - case 271: { action. consumeDeclSpecToken(); break; + case 271: { action. consumeToken(); break; } // // Rule 272: simple_type_specifier ::= double // - case 272: { action. consumeDeclSpecToken(); break; + case 272: { action. consumeToken(); break; } // // Rule 273: simple_type_specifier ::= void // - case 273: { action. consumeDeclSpecToken(); break; + case 273: { action. consumeToken(); break; } // @@ -1446,13 +1449,13 @@ public CPPParser(String[] mapFrom) { // constructor // // Rule 338: cv_qualifier ::= const // - case 338: { action. consumeDeclSpecToken(); break; + case 338: { action. consumeToken(); break; } // // Rule 339: cv_qualifier ::= volatile // - case 339: { action. consumeDeclSpecToken(); break; + case 339: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java index 8b9afc78dbf..1f068d5311a 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -166,13 +167,16 @@ public class CPPSizeofExpressionParser extends PrsStream implements RuleAction , private CPPBuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public CPPSizeofExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu); + action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -200,13 +204,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -1098,127 +1101,127 @@ public CPPSizeofExpressionParser(String[] mapFrom) { // constructor // // Rule 232: no_type_declaration_specifier ::= friend // - case 232: { action. consumeDeclSpecToken(); break; + case 232: { action. consumeToken(); break; } // // Rule 233: no_type_declaration_specifier ::= typedef // - case 233: { action. consumeDeclSpecToken(); break; + case 233: { action. consumeToken(); break; } // // Rule 253: storage_class_specifier ::= auto // - case 253: { action. consumeDeclSpecToken(); break; + case 253: { action. consumeToken(); break; } // // Rule 254: storage_class_specifier ::= register // - case 254: { action. consumeDeclSpecToken(); break; + case 254: { action. consumeToken(); break; } // // Rule 255: storage_class_specifier ::= static // - case 255: { action. consumeDeclSpecToken(); break; + case 255: { action. consumeToken(); break; } // // Rule 256: storage_class_specifier ::= extern // - case 256: { action. consumeDeclSpecToken(); break; + case 256: { action. consumeToken(); break; } // // Rule 257: storage_class_specifier ::= mutable // - case 257: { action. consumeDeclSpecToken(); break; + case 257: { action. consumeToken(); break; } // // Rule 258: function_specifier ::= inline // - case 258: { action. consumeDeclSpecToken(); break; + case 258: { action. consumeToken(); break; } // // Rule 259: function_specifier ::= virtual // - case 259: { action. consumeDeclSpecToken(); break; + case 259: { action. consumeToken(); break; } // // Rule 260: function_specifier ::= explicit // - case 260: { action. consumeDeclSpecToken(); break; + case 260: { action. consumeToken(); break; } // // Rule 261: simple_type_specifier ::= char // - case 261: { action. consumeDeclSpecToken(); break; + case 261: { action. consumeToken(); break; } // // Rule 262: simple_type_specifier ::= wchar_t // - case 262: { action. consumeDeclSpecToken(); break; + case 262: { action. consumeToken(); break; } // // Rule 263: simple_type_specifier ::= bool // - case 263: { action. consumeDeclSpecToken(); break; + case 263: { action. consumeToken(); break; } // // Rule 264: simple_type_specifier ::= short // - case 264: { action. consumeDeclSpecToken(); break; + case 264: { action. consumeToken(); break; } // // Rule 265: simple_type_specifier ::= int // - case 265: { action. consumeDeclSpecToken(); break; + case 265: { action. consumeToken(); break; } // // Rule 266: simple_type_specifier ::= long // - case 266: { action. consumeDeclSpecToken(); break; + case 266: { action. consumeToken(); break; } // // Rule 267: simple_type_specifier ::= signed // - case 267: { action. consumeDeclSpecToken(); break; + case 267: { action. consumeToken(); break; } // // Rule 268: simple_type_specifier ::= unsigned // - case 268: { action. consumeDeclSpecToken(); break; + case 268: { action. consumeToken(); break; } // // Rule 269: simple_type_specifier ::= float // - case 269: { action. consumeDeclSpecToken(); break; + case 269: { action. consumeToken(); break; } // // Rule 270: simple_type_specifier ::= double // - case 270: { action. consumeDeclSpecToken(); break; + case 270: { action. consumeToken(); break; } // // Rule 271: simple_type_specifier ::= void // - case 271: { action. consumeDeclSpecToken(); break; + case 271: { action. consumeToken(); break; } // @@ -1434,13 +1437,13 @@ public CPPSizeofExpressionParser(String[] mapFrom) { // constructor // // Rule 336: cv_qualifier ::= const // - case 336: { action. consumeDeclSpecToken(); break; + case 336: { action. consumeToken(); break; } // // Rule 337: cv_qualifier ::= volatile // - case 337: { action. consumeDeclSpecToken(); break; + case 337: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java index 4d68b802e2e..8849971b658 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPTemplateTypeParameterParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -166,13 +167,16 @@ public class CPPTemplateTypeParameterParser extends PrsStream implements RuleAct private CPPBuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public CPPTemplateTypeParameterParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu); + action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + } @@ -200,13 +204,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -1110,127 +1113,127 @@ public CPPTemplateTypeParameterParser(String[] mapFrom) { // constructor // // Rule 234: no_type_declaration_specifier ::= friend // - case 234: { action. consumeDeclSpecToken(); break; + case 234: { action. consumeToken(); break; } // // Rule 235: no_type_declaration_specifier ::= typedef // - case 235: { action. consumeDeclSpecToken(); break; + case 235: { action. consumeToken(); break; } // // Rule 255: storage_class_specifier ::= auto // - case 255: { action. consumeDeclSpecToken(); break; + case 255: { action. consumeToken(); break; } // // Rule 256: storage_class_specifier ::= register // - case 256: { action. consumeDeclSpecToken(); break; + case 256: { action. consumeToken(); break; } // // Rule 257: storage_class_specifier ::= static // - case 257: { action. consumeDeclSpecToken(); break; + case 257: { action. consumeToken(); break; } // // Rule 258: storage_class_specifier ::= extern // - case 258: { action. consumeDeclSpecToken(); break; + case 258: { action. consumeToken(); break; } // // Rule 259: storage_class_specifier ::= mutable // - case 259: { action. consumeDeclSpecToken(); break; + case 259: { action. consumeToken(); break; } // // Rule 260: function_specifier ::= inline // - case 260: { action. consumeDeclSpecToken(); break; + case 260: { action. consumeToken(); break; } // // Rule 261: function_specifier ::= virtual // - case 261: { action. consumeDeclSpecToken(); break; + case 261: { action. consumeToken(); break; } // // Rule 262: function_specifier ::= explicit // - case 262: { action. consumeDeclSpecToken(); break; + case 262: { action. consumeToken(); break; } // // Rule 263: simple_type_specifier ::= char // - case 263: { action. consumeDeclSpecToken(); break; + case 263: { action. consumeToken(); break; } // // Rule 264: simple_type_specifier ::= wchar_t // - case 264: { action. consumeDeclSpecToken(); break; + case 264: { action. consumeToken(); break; } // // Rule 265: simple_type_specifier ::= bool // - case 265: { action. consumeDeclSpecToken(); break; + case 265: { action. consumeToken(); break; } // // Rule 266: simple_type_specifier ::= short // - case 266: { action. consumeDeclSpecToken(); break; + case 266: { action. consumeToken(); break; } // // Rule 267: simple_type_specifier ::= int // - case 267: { action. consumeDeclSpecToken(); break; + case 267: { action. consumeToken(); break; } // // Rule 268: simple_type_specifier ::= long // - case 268: { action. consumeDeclSpecToken(); break; + case 268: { action. consumeToken(); break; } // // Rule 269: simple_type_specifier ::= signed // - case 269: { action. consumeDeclSpecToken(); break; + case 269: { action. consumeToken(); break; } // // Rule 270: simple_type_specifier ::= unsigned // - case 270: { action. consumeDeclSpecToken(); break; + case 270: { action. consumeToken(); break; } // // Rule 271: simple_type_specifier ::= float // - case 271: { action. consumeDeclSpecToken(); break; + case 271: { action. consumeToken(); break; } // // Rule 272: simple_type_specifier ::= double // - case 272: { action. consumeDeclSpecToken(); break; + case 272: { action. consumeToken(); break; } // // Rule 273: simple_type_specifier ::= void // - case 273: { action. consumeDeclSpecToken(); break; + case 273: { action. consumeToken(); break; } // @@ -1446,13 +1449,13 @@ public CPPTemplateTypeParameterParser(String[] mapFrom) { // constructor // // Rule 338: cv_qualifier ::= const // - case 338: { action. consumeDeclSpecToken(); break; + case 338: { action. consumeToken(); break; } // // Rule 339: cv_qualifier ::= volatile // - case 339: { action. consumeDeclSpecToken(); break; + case 339: { action. consumeToken(); break; } // diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java index 4c722f2ebd1..4e617e150f8 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -27,6 +28,8 @@ import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory; import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; +import org.eclipse.cdt.core.dom.lrparser.action.gcc.GCCBuildASTParserAction; + public class GCCParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser { private static ParseTable prs = new GCCParserprs(); @@ -165,13 +168,21 @@ public class GCCParser extends PrsStream implements RuleAction , IParserActionTo private C99BuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public GCCParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu); + action = new C99BuildASTParserAction ( CNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + + + gccAction = new GCCBuildASTParserAction( CNodeFactory.getDefault() , this, tu, astStack); + gccAction.setParserOptions(options); + + } @@ -199,13 +210,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -237,6 +247,8 @@ public GCCParser(String[] mapFrom) { // constructor +private GCCBuildASTParserAction gccAction; + public void ruleAction(int ruleNumber) { switch (ruleNumber) @@ -767,25 +779,25 @@ public GCCParser(String[] mapFrom) { // constructor // // Rule 159: storage_class_specifier ::= storage_class_specifier_token // - case 159: { action. consumeDeclSpecToken(); break; + case 159: { action. consumeToken(); break; } // // Rule 165: simple_type_specifier ::= simple_type_specifier_token // - case 165: { action. consumeDeclSpecToken(); break; + case 165: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= Completion // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // // Rule 179: typedef_name_in_declspec ::= identifier // - case 179: { action. consumeDeclSpecToken(); break; + case 179: { action. consumeToken(); break; } // @@ -875,13 +887,13 @@ public GCCParser(String[] mapFrom) { // constructor // // Rule 215: type_qualifier ::= type_qualifier_token // - case 215: { action. consumeDeclSpecToken(); break; + case 215: { action. consumeToken(); break; } // // Rule 219: function_specifier ::= inline // - case 219: { action. consumeDeclSpecToken(); break; + case 219: { action. consumeToken(); break; } // @@ -1261,6 +1273,12 @@ public GCCParser(String[] mapFrom) { // constructor // case 331: { action. consumeIgnore(); break; } + + // + // Rule 341: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ; + // + case 341: { gccAction.consumeDeclarationASM(); break; + } default: diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java index fa8185c63a7..e52ea0f95b2 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParserprs.java @@ -67,254 +67,254 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym 0,1,2,1,1,1,1,1,2,4, 3,6,2,4,1,1,1,1,2,6, 3,1,3,1,4,0,1,1,1,3, - 1,0,4,1,0,1,2,1,3,4, - 4,1,0,1,2,2,3,2,2,3, - 1,1,1,1,1,-92,-29,0,0,0, + 1,0,4,3,1,2,1,3,4,4, + 6,1,0,1,3,1,3,0,1,4, + 5,1,1,2,2,3,2,2,3,1, + 1,1,1,1,-101,-50,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-6,-25, - 0,0,-2,-102,0,0,0,-214,-297,0, - 0,0,0,0,0,0,0,-45,0,-8, - -42,0,0,0,0,0,0,0,-12,0, - 0,0,0,0,0,-3,0,-9,0,0, - 0,0,0,-27,0,0,0,0,0,0, - 0,0,0,0,0,0,-31,-26,0,0, - 0,0,0,0,-10,0,0,-269,0,0, - 0,0,0,0,-58,-131,-105,0,0,0, - 0,0,-22,0,0,0,0,0,0,0, - 0,0,0,-157,0,-109,0,0,0,0, - 0,0,0,-313,0,0,0,-23,0,-106, - 0,0,0,0,0,-33,0,-28,0,0, - 0,0,0,0,0,0,-219,0,0,0, - 0,0,0,0,0,0,-30,0,0,0, + 0,0,0,0,-2,0,0,0,-8,0, + 0,-81,-5,0,0,0,-225,-114,0,0, + 0,0,0,0,0,0,-100,0,-28,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-166,0,0,0, - 0,0,0,0,-271,0,0,0,0,0, - 0,0,0,0,-237,-34,0,0,0,0, + 0,0,-86,0,-7,-4,0,-10,-107,0, + 0,-11,0,-49,0,0,0,0,0,-12, 0,0,0,0,0,0,0,0,0,0, - 0,-46,-306,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-11,0,-114,0,0, + 0,0,-109,-32,0,-96,0,-205,0,-221, + -82,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-140,-309,0,0, 0,0,0,0,0,0,0,0,0,0, - -35,0,0,-133,0,-293,0,0,0,0, - 0,0,0,0,0,0,0,-61,0,0, + 0,0,0,0,0,0,-48,0,0,0, + 0,0,0,0,0,0,0,0,-66,0, + -222,0,0,0,0,0,0,0,0,0, + -168,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-220,0,0,0,0,0, + 0,0,0,0,0,-184,0,0,0,0, + 0,0,0,0,0,0,0,-29,0,0, + 0,0,0,0,0,0,-283,0,0,0, + 0,0,0,0,0,0,0,0,-68,0, + 0,0,0,0,0,0,-24,0,0,0, + -174,0,0,0,-318,0,0,0,0,0, + 0,0,0,0,-332,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-13,-212, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-43,0,0,0,-38,0,0, - 0,0,0,-63,0,-50,-309,0,0,0, - 0,0,0,0,0,0,0,0,-80,0, - 0,0,0,0,0,0,0,0,0,-87, - 0,0,0,-68,0,0,0,0,0,0, - 0,0,0,-65,0,0,0,0,0,0, - 0,0,0,0,0,0,-51,-77,0,0, - -53,-210,-57,0,0,0,0,0,0,0, - 0,-62,-55,-60,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-40,-74,0, - 0,0,0,0,0,0,0,0,-194,0, + 0,0,-3,0,0,0,-70,0,-153,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-56,-159,0,0,0,0,0,0, - 0,0,0,0,-173,-145,0,0,0,0, - 0,0,0,0,0,0,0,-64,-209,0, - 0,0,0,0,0,0,0,0,-4,0, - 0,-81,0,0,0,0,0,0,-59,-321, - 0,0,0,0,0,0,0,0,0,-99, + -108,0,0,0,0,0,0,0,-33,0, + 0,0,0,0,0,0,-35,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-101,0,-24,0, - -243,0,0,0,0,0,0,0,0,0, - 0,0,-211,0,0,0,0,0,0,0, - 0,0,-82,-172,0,0,0,0,0,0, - 0,0,0,0,0,-234,0,0,-84,-164, - 0,0,0,0,0,0,-91,0,0,0, - -21,0,-162,0,0,0,-104,0,0,0, - 0,0,0,0,0,0,-135,0,0,0, - 0,0,0,0,0,0,0,0,0,-14, - -85,-93,0,-88,0,0,0,0,0,0, - 0,0,0,-95,0,0,0,0,0,0, - -90,0,0,0,0,0,0,-142,0,0, - 0,0,0,0,0,0,0,0,-44,0, + -321,0,0,0,0,0,0,0,0,0, + 0,-34,-61,0,0,0,0,0,0,0, + -173,0,0,0,-36,-45,0,-73,0,0, + 0,0,0,0,0,0,0,-110,0,0, + -37,0,0,0,0,0,0,-84,0,0, + 0,0,0,0,-47,0,-25,-214,0,0, + 0,0,0,0,0,0,0,-30,0,0, + 0,0,0,0,0,0,-79,0,0,0, + 0,0,0,0,0,0,-249,0,-87,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-174,0,0,0,0,0,0,0, - 0,0,0,-67,0,-94,0,0,0,0, - 0,0,0,0,0,-161,0,-278,0,0, - 0,0,0,0,0,0,0,0,-267,0, + -31,-170,0,0,0,0,0,0,0,0, + 0,-38,0,-203,0,0,0,0,0,0, + 0,-46,0,0,0,0,0,0,-181,-210, + -21,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-41,-333,0, 0,0,0,0,0,0,0,0,0,0, - 0,-96,-89,0,0,0,0,0,0,0, - 0,0,0,-163,0,-47,0,0,0,0, - 0,0,0,0,0,0,-176,-78,0,0, - 0,0,0,0,0,0,0,-107,0,-79, - 0,0,0,0,0,0,0,0,0,-215, + 0,0,0,0,0,0,0,0,-204,0, + 0,0,-254,0,0,-88,-176,-43,-26,0, + -53,0,-39,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-186,0,0,0, + 0,-144,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-54,0,0,-56,-115, + 0,0,0,0,0,0,0,0,-119,0, + 0,0,0,0,0,0,0,-113,0,0, + 0,0,0,0,0,0,0,-72,0,0, + 0,0,0,0,0,0,0,-250,0,0, + 0,-62,-226,0,-172,0,0,0,0,0, + -215,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-89, + -185,-95,0,0,0,0,0,0,0,0, + 0,-230,0,0,0,0,0,0,0,0, + -58,0,0,0,0,0,0,0,-290,-59, + 0,0,0,0,0,0,0,0,0,-152, 0,-177,0,0,0,0,0,0,0,0, - 0,0,0,-118,-129,0,0,0,0,0, - 0,0,0,0,-216,-221,0,0,-178,-86, - 0,0,0,0,0,0,0,0,0,-158, - 0,-141,0,0,0,0,0,0,0,0, - 0,0,0,-179,0,0,0,0,0,0, - 0,0,0,0,0,-143,-160,0,0,0, - 0,0,0,0,0,0,0,-171,-180,0, - 0,0,0,0,0,0,0,0,0,-187, - 0,-188,0,0,0,0,0,0,0,0, - 0,0,-220,-181,0,0,0,0,0,0, - 0,0,0,0,-224,0,-223,0,0,0, - 0,0,0,0,0,0,-235,-226,-182,0, + 0,0,-63,-98,0,0,0,0,0,0, + 0,0,0,0,-154,-156,0,0,0,0, + 0,0,0,0,0,0,0,-187,-67,0, + 0,0,0,0,0,0,0,0,0,-227, 0,0,0,0,0,0,0,0,0,0, - -227,-231,0,0,0,0,0,0,0,0, - 0,0,0,-183,0,0,0,0,0,0, - 0,0,0,-119,0,0,-242,0,0,0, - 0,0,0,0,0,0,0,-247,-184,0, - 0,0,0,0,0,0,0,0,-120,-248, - -250,-279,0,0,0,0,0,0,0,0, - 0,0,-249,-185,0,0,0,0,0,0, - 0,0,0,0,0,-192,-193,0,0,0, - 0,0,0,0,0,0,0,-268,-186,0, - 0,0,0,0,0,0,0,0,0,-285, - -272,0,0,0,0,0,0,0,0,0, - 0,0,-296,-230,0,0,0,0,0,0, - 0,0,0,0,-121,-280,-286,0,0,0, - 0,0,0,0,0,0,-287,-122,-236,0, + 0,-246,-188,0,0,0,0,0,0,0, + 0,0,-323,0,-69,0,0,0,0,0, + 0,0,-57,0,0,0,-232,0,0,-231, + -189,-83,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -247,0,0,0,-291,-190,0,0,0,0, + 0,0,0,0,0,-90,-235,-262,-284,0, + 0,0,0,0,0,0,0,0,0,0, + -191,0,0,0,0,0,0,0,0,0, + 0,-297,0,-292,0,0,0,0,0,0, + 0,0,0,0,0,-192,0,0,0,0, + 0,0,0,0,0,0,-311,0,-298,0, + 0,0,0,0,0,-320,0,0,0,-339, + -193,0,0,0,0,0,0,0,0,0, + 0,0,-299,-308,0,0,0,0,0,0, + -91,0,0,0,-93,-194,0,0,0,0, + 0,0,0,0,0,-94,0,-300,0,0, + 0,0,0,0,0,0,0,0,0,0, + -195,0,0,0,0,0,0,0,0,0, + 0,-328,-331,-334,0,0,0,0,0,0, + -97,0,0,0,-99,-196,0,0,0,0, + 0,0,0,0,0,0,-103,0,-105,0, + 0,0,0,0,0,-325,0,0,0,-116, + -197,0,0,0,0,0,0,0,0,0, + -335,0,-340,-127,0,0,0,0,0,0, + -128,0,0,0,-129,-242,0,0,0,0, + 0,0,0,0,0,-130,0,-131,0,0, + 0,0,0,0,0,-132,0,0,0,-133, + -248,0,0,0,0,0,0,0,0,0, + 0,-134,-158,0,0,0,0,0,0,0, + -135,0,0,0,-252,-136,0,0,0,0, + 0,0,0,0,-137,-141,-145,0,0,0, + 0,0,0,0,0,0,0,0,-147,-253, + 0,0,0,0,0,0,0,0,0,-148, + 0,-149,-151,0,0,0,0,0,0,-282, + 0,0,0,-279,0,0,0,-157,-162,0, + 0,0,0,-223,-165,0,0,0,0,0, + 0,0,0,0,-166,-167,0,0,0,0, + 0,0,-178,0,0,0,-118,-179,0,0, + 0,0,0,0,0,0,0,-27,0,-237, + -251,0,-293,-263,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-264,0,0,0,-315,-265,0,0, + 0,0,0,0,0,0,-266,-267,-159,0, + 0,0,0,0,0,0,-268,0,0,0, + -324,-269,0,0,0,0,0,0,0,0, + -270,-271,0,0,0,0,0,0,0,0, + 0,0,0,0,-336,-272,0,0,0,0, + 0,0,0,0,-60,0,0,-273,0,0, + 0,0,0,0,0,0,0,0,-211,-64, + 0,0,0,0,0,0,0,0,0,0, + 0,-274,0,0,0,-85,0,0,-301,0, + -275,0,0,0,0,0,0,0,0,0, + 0,0,-276,-277,0,0,-278,0,-294,0, + 0,-183,0,0,0,0,-303,-304,0,-102, + -313,-322,0,0,0,0,0,0,0,0, + -75,0,0,-160,0,0,-22,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,0,0,-117,0,0,-164,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-104,0,0,-138,0,0, + -150,0,0,0,0,0,0,-169,-240,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,0,0,0,0,0,-258, + 0,0,-245,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -171,0,-182,0,-198,-199,0,0,0,0, + -233,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-305,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-14,0,0,0,-76,0,-236,0, + 0,0,0,0,0,0,0,0,0,0, + -6,0,0,-238,-139,0,0,0,0,0, + -206,0,0,0,-175,0,-239,0,0,0, + 0,0,0,0,0,-243,-259,-228,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-260,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -261,0,0,0,0,-74,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-280,0,-307,-312,0,0,-314,0,0, + 0,0,0,0,0,-111,0,0,0,0, + 0,0,0,0,0,-295,0,0,-319,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,0,-19,0,0,0,0, + 0,0,0,0,-180,0,0,0,0,0, + 0,0,0,-40,0,0,0,-326,-338,-52, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-71,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,0, + 0,-80,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-9,0,0,0,0,0,0,0,-92, + 0,0,0,0,0,0,0,0,-125,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-161,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-42,0,0,0,0,0, + 0,-163,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -44,-241,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,0,0,0, + -286,0,0,0,0,-281,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, -288,0,0,0,0,0,0,0,0,0, - 0,-240,-123,0,0,0,0,0,0,0, - 0,0,0,-299,0,0,0,0,0,0, - 0,0,0,0,0,0,-241,0,0,0, - 0,0,0,0,0,0,0,0,-320,-124, - 0,0,0,0,0,0,0,0,0,-270, - -295,-110,0,0,0,0,0,0,0,0, - 0,0,0,-212,-316,0,0,0,0,0, - 0,0,0,-125,0,-300,0,0,0,0, - 0,0,-311,0,0,0,-116,0,0,0, - 0,0,0,0,0,0,0,-170,0,0, - -199,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-281,-126,0,0,0, - 0,0,0,0,0,-307,-314,0,0,0, - 0,0,0,0,0,0,0,0,-303,-127, - 0,0,0,0,0,0,0,0,-326,0, - 0,-128,0,0,0,0,0,0,0,0, - 0,-312,0,0,0,0,0,0,0,0, - 0,-132,0,-136,0,0,0,0,0,0, - 0,0,0,0,-324,-319,0,0,0,0, - 0,0,0,0,-138,-139,-308,0,0,0, - 0,0,0,0,0,0,0,-140,-146,-175, - -200,-19,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-153,0,-111,-151,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-7,-117,0,0,0,0, - 0,0,0,-323,0,0,0,0,0,0, - 0,0,-154,-155,-322,0,0,0,0,0, - 0,0,0,-238,0,0,0,-156,0,-167, - 0,0,-233,0,-327,-168,0,0,0,0, - 0,-328,0,0,0,0,-225,-239,0,0, - 0,0,-251,0,0,-252,-253,-54,0,0, - -48,0,0,0,0,0,0,0,0,-254, - 0,0,0,0,-255,0,0,0,0,0, - 0,-256,0,0,0,0,0,0,-257,0, - 0,-258,-71,0,0,0,0,0,0,0, - 0,-259,0,0,0,0,-260,-261,-262,-203, - 0,0,0,0,0,0,0,0,0,0, - -263,-76,0,0,0,0,0,0,0,-264, - -265,0,-266,-282,-291,0,0,0,0,0, - -292,-130,0,0,0,-301,0,-147,0,0, - 0,0,-310,0,0,0,0,-17,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-169,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-149,0,0,0, - -13,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-217,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-73,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,0,0, - 0,0,0,0,0,-228,0,0,0,-112, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-70,0,-100,0,0,0, - 0,0,0,0,0,0,0,0,0,-302, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-148,0,0,-283, - 0,0,0,-246,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,-15, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-98,0,0, - 0,-49,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,0,-66,-195, - 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,0,-75,0,-165,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-83,0,0,-20,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-150,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-32,0,-152,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,-229,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-36,0,-274,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,-276,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -39,0,-277,0,0,0,0,0,0,0, - 0,0,0,0,0,-189,0,0,0,0, - 0,0,0,0,0,0,0,0,-213,0, - 0,-317,0,0,0,0,-290,0,0,0, + 0,0,0,0,0,0,-289,0,0,-306, 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,0,0,0,0,0, - 0,0,0,0,0,-325,0,0,0,0, - 0,0,0,0,-201,0,0,0,0,0, + -302,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-329,0,-216,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-329,0,0,0,0,0,0,0,-289, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-5,0,0, - 0,0,0,0,0,-16,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-275,0,0,-222,0,0,-18,0,0, + 0,0,0,-77,-1,0,-337,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-1,0,0,0,0,0,0,0,0, - 0,0,0,-204,0,0,0,0,0,0, - 0,0,0,0,0,-37,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-205, + 0,0,0,0,0,-341,0,0,0,0, + -15,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-18,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-20, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-123,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-23,0,0,-16,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,-206,0,0,0,0,0,0,0, - 0,0,0,0,0,-207,0,0,0,0, - 0,0,0,0,0,0,0,0,-208,0, + 0,0,-106,0,0,0,0,0,0,0, + -200,0,0,0,0,0,0,0,0,0, + 0,0,0,-217,0,0,0,0,0,0, + 0,0,0,0,0,0,-218,0,0,0, + 0,0,0,0,0,0,0,0,0,-219, + 0,0,0,0,0,0,0,0,0,-55, + 0,0,0,0,-155,0,0,0,0,0, + 0,0,0,0,0,0,0,-213,0,0, + 0,0,0,0,0,0,0,-229,0,0, + -112,0,0,0,0,0,0,0,0,0, + 0,-126,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-41,0,0,0,0,0,-52,0,0, + 0,-255,0,0,0,0,0,0,0,-257, + 0,0,0,0,0,0,0,-17,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-103,0,0,0,0,0,0,0, - 0,0,0,-202,0,0,0,0,0,0, - 0,0,-218,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-108,0,0, - -245,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-113,0,0,0,0,0, + 0,0,0,0,0,-65,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-144,0,-190,0,0,-115, - 0,0,0,0,0,0,0,0,-137,0, + -120,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-121,0,0, + 0,0,0,0,0,-122,0,0,0,0, + 0,0,0,-124,0,0,0,0,0,0, + 0,-201,0,-146,0,0,0,0,0,0, + 0,-202,0,0,0,0,0,0,-207,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-191, - 0,-196,0,0,0,0,0,0,0,0, - 0,-232,0,0,-69,0,-197,0,0,0, + 0,-244,0,0,0,0,0,0,-224,0, + 0,0,-208,0,0,0,0,0,0,0, + -209,0,0,0,0,0,0,0,-287,0, + 0,0,0,0,0,0,0,0,0,-51, + 0,-256,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-78,-142,0, + 0,-296,0,0,0,-316,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-198,0,0,0,0,0,0,0, - 0,0,0,0,0,-284,0,-244,0,0, + 0,-234,0,0,0,-143,0,0,0,-285, + 0,0,0,0,0,0,0,0,0,-310, + 0,-327,0,0,0,0,0,-317,0,0, 0,0,0,0,0,0,0,0,0,0, - -294,0,0,-273,0,0,-304,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-72,0,0,0, - -298,0,0,0,-97,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-134,0,-315,0,0,0, - 0,0,0,-305,0,0,0,0,0,0, - 0,0,-318,0,0,0,0,0,0,0, + 0,0,0,0,0,-330,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,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,0,0,0,0,0,0,0,0 }; }; public final static short baseCheck[] = BaseCheck.baseCheck; @@ -324,298 +324,299 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface BaseAction { public final static char baseAction[] = { - 115,1,48,48,24,24,50,50,23,23, + 118,1,48,48,20,20,50,50,24,24, 2,2,2,2,3,3,3,4,4,5, - 5,5,5,5,5,5,5,73,73,96, - 96,6,6,6,6,6,6,6,6,6, + 5,5,5,5,5,5,5,74,74,98, + 98,6,6,6,6,6,6,6,6,6, 6,6,7,7,8,8,8,8,9,9, 9,14,14,14,15,15,15,15,15,16, - 16,16,17,17,18,18,19,19,20,20, - 21,21,22,22,26,26,26,26,26,26, - 26,26,26,26,26,26,37,32,25,116, - 116,98,98,59,38,38,38,38,38,38, - 38,39,39,39,33,33,99,99,74,74, - 40,40,41,41,41,66,66,42,42,42, + 16,16,17,17,18,18,19,19,21,21, + 22,22,23,23,26,26,26,26,26,26, + 26,26,26,26,26,26,37,32,25,119, + 119,100,100,60,38,38,38,38,38,38, + 38,39,39,39,33,33,101,101,75,75, + 40,40,41,41,41,67,67,42,42,42, 42,43,43,43,43,43,53,53,29,29, - 29,29,29,54,54,54,88,88,83,83, - 83,83,84,84,84,85,85,85,86,86, - 86,87,87,87,100,100,89,89,90,55, - 57,57,57,57,57,67,69,69,69,69, - 69,69,69,69,69,69,69,69,78,78, - 28,28,75,75,117,118,79,79,76,76, - 76,91,101,101,102,102,92,92,92,60, - 119,119,103,93,93,93,77,77,120,104, - 104,105,105,94,94,30,31,31,31,56, + 29,29,29,54,54,54,89,89,84,84, + 84,84,85,85,85,86,86,86,87,87, + 87,88,88,88,102,102,90,90,91,55, + 57,57,57,57,57,68,70,70,70,70, + 70,70,70,70,70,70,70,70,79,79, + 28,28,76,76,120,121,80,80,77,77, + 77,92,103,103,104,104,93,93,93,61, + 122,122,105,94,94,94,78,78,123,106, + 106,107,107,95,95,30,31,31,31,56, 51,51,44,44,44,44,34,34,35,45, - 45,46,36,36,106,106,47,122,122,121, - 121,52,52,52,52,52,52,52,52,52, - 107,58,58,58,58,49,80,80,70,70, - 70,71,71,61,61,123,123,82,82,81, - 81,81,62,62,62,63,64,64,64,65, - 65,65,65,68,68,68,72,124,97,97, - 97,97,95,125,126,126,127,127,128,128, - 115,115,129,129,108,108,108,108,130,130, - 109,109,109,110,110,10,10,10,27,27, - 11,11,131,131,111,111,111,112,112,132, - 132,113,113,12,133,133,134,134,114,114, - 114,13,136,136,54,90,90,90,103,103, - 103,120,117,118,49,91,312,385,14,19, - 15,1084,1058,44,1234,1335,344,315,316,317, - 1259,1373,1348,1444,1410,1510,1487,1522,74,409, - 505,1678,91,444,1062,724,134,215,1552,821, - 14,19,15,1084,42,44,1234,1335,171,1905, - 713,688,1259,1373,1348,1444,1410,1510,1753,1241, - 136,133,135,159,256,215,1102,2075,845,318, - 315,316,317,138,45,165,344,315,316,317, - 313,142,145,148,151,409,517,447,1489,1615, - 596,1821,2346,2368,1582,952,134,215,1300,456, - 488,226,234,229,1633,234,1163,1602,318,315, - 316,317,321,996,1468,189,344,315,316,317, - 136,133,135,159,1041,2211,1596,1762,14,19, - 15,1084,40,138,866,165,134,215,1203,311, - 1062,142,145,148,151,409,447,648,337,1615, - 596,1821,2346,2368,1582,243,1420,1513,456,261, - 136,133,135,159,1773,484,294,1435,1421,1542, - 256,215,379,138,188,165,357,319,315,316, - 317,142,145,148,151,409,1762,1134,336,1615, - 596,1821,2346,2368,1582,1486,389,14,19,15, - 1084,1058,44,1234,1335,447,1665,763,455,1259, - 1373,1348,1444,1410,1510,1487,1522,74,262,337, - 1580,283,409,1508,389,14,19,15,1084,1058, - 44,1234,1335,1650,722,323,986,1259,1373,1348, - 1444,1410,1510,1487,1522,74,384,973,1402,283, - 14,19,15,1084,42,35,344,315,316,317, - 1197,447,295,288,1166,456,1552,1544,14,19, - 15,1084,42,44,1234,1335,134,215,171,1988, - 1259,1373,1348,1444,1410,1510,1487,1522,73,190, - 289,288,1323,887,539,1544,248,312,471,212, - 144,133,135,159,171,1907,108,1380,389,14, - 19,15,1084,1058,44,1234,1335,309,289,447, - 1556,1259,1373,1348,1444,1410,1510,1487,1522,74, - 505,1817,310,283,1260,490,14,19,15,1084, - 1058,44,1234,1335,642,384,230,1136,1259,1373, - 1348,1444,1410,1510,1487,1522,74,637,503,948, - 457,1140,1552,1283,14,19,15,1084,42,44, - 1234,1335,970,1041,1686,290,1259,1373,1729,1544, - 104,124,241,87,318,315,316,317,1759,1436, - 1112,14,19,15,1084,1058,44,1234,1335,1768, - 948,2715,291,1259,1373,1348,1444,1410,1510,1487, - 1522,74,227,1759,1640,283,14,19,15,1084, - 1058,44,1234,1335,89,1602,171,948,1259,1373, - 1348,1444,1410,1510,1487,1522,74,333,623,1552, - 331,14,19,15,1084,42,44,1234,1335,503, - 839,87,1351,1259,1373,1348,1728,157,1185,1759, - 1530,1544,14,19,15,1084,1058,44,1234,1335, - 171,2049,126,245,1259,1373,1348,1444,1410,1510, - 1487,1522,74,341,322,986,283,754,1799,838, - 2498,1402,1022,14,19,15,1084,42,35,318, - 315,316,317,1552,922,14,19,15,1084,42, - 44,1234,1335,1458,1062,1273,1992,1259,1373,1348, - 1444,1410,1741,401,226,707,1134,329,292,1459, - 558,456,1544,220,644,223,711,503,1596,249, - 1681,570,2492,1764,256,215,1212,1574,864,14, - 19,15,1084,1058,44,1234,1335,171,1173,199, - 126,1259,1373,1348,1444,1410,1510,1487,1522,74, - 629,1735,1704,775,62,401,226,231,154,656, - 318,315,316,317,1511,220,644,223,225,1036, - 1034,497,738,182,1580,572,1110,2117,1552,1310, - 14,19,15,1084,1058,44,1234,1335,339,1763, - 2635,398,1259,1373,1348,1444,1410,1510,1487,1522, - 74,1372,195,1358,91,14,19,15,1084,1058, - 44,1234,1335,233,1763,2513,1773,1259,1373,1348, - 1444,1410,1510,1487,1522,74,171,2632,1640,1237, - 14,19,15,1084,1058,44,1234,1335,233,1763, - 2681,437,1259,1373,1348,1444,1410,1510,1487,1522, - 74,242,1058,1552,331,14,19,15,1084,42, - 44,1234,1335,280,503,1653,1621,1259,1373,1348, - 1444,1410,1510,1487,1522,93,1633,1552,1171,14, - 19,15,1084,1058,44,1234,1335,197,568,127, - 1171,1259,1373,1348,1444,1410,1510,1487,1522,74, - 820,123,1552,85,14,19,15,1084,1058,44, - 1234,1335,1599,122,1662,1759,1259,1373,1348,1444, - 1410,1510,1487,1522,74,689,171,545,84,1552, - 1171,14,19,15,1084,1058,44,1234,1335,232, - 1759,330,1171,1259,1373,1348,1444,1410,1510,1487, - 1522,74,278,111,1552,83,14,19,15,1084, - 1058,44,1234,1335,320,125,1171,1759,1259,1373, - 1348,1444,1410,1510,1487,1522,74,277,1715,1552, - 82,14,19,15,1084,1058,44,1234,1335,121, - 1759,340,1759,1259,1373,1348,1444,1410,1510,1487, - 1522,74,236,1764,1552,81,14,19,15,1084, - 1058,44,1234,1335,2668,1759,16,1171,1259,1373, - 1348,1444,1410,1510,1487,1522,74,1764,1759,1552, - 80,14,19,15,1084,1058,44,1234,1335,2166, - 2684,1759,1716,1259,1373,1348,1444,1410,1510,1487, - 1522,74,2192,285,1552,79,14,19,15,1084, - 1058,44,1234,1335,346,2213,325,1602,1259,1373, - 1348,1444,1410,1510,1487,1522,74,206,1759,1552, - 78,14,19,15,1084,1058,44,1234,1335,1557, - 1759,1602,1764,1259,1373,1348,1444,1410,1510,1487, - 1522,74,1755,1759,1552,77,14,19,15,1084, - 1058,44,1234,1335,1761,244,1014,1014,1259,1373, - 1348,1444,1410,1510,1487,1522,74,21,1759,1552, - 76,14,19,15,1084,1058,44,1234,1335,20, - 1764,1171,183,1259,1373,1348,1444,1410,1510,1487, - 1522,74,275,1748,1552,75,14,19,15,1084, - 1058,44,1234,1335,2711,1172,1721,1602,1259,1373, - 1348,1444,1410,1510,1487,1522,74,1602,1330,1552, - 92,14,19,15,1084,42,44,1234,1335,196, - 207,171,573,1259,1373,1348,1444,1410,1510,1487, - 1522,93,1552,504,14,19,15,1084,1058,44, - 1234,1335,23,22,1171,246,1259,1373,1348,1444, - 1410,1510,1487,1522,74,247,1567,1552,1337,14, - 19,15,1084,1058,44,1234,1335,2737,214,295, - 109,1259,1373,1348,1444,1410,1510,1487,1522,74, - 347,1759,1552,1347,14,19,15,1084,42,39, - 318,315,316,317,1552,1171,14,19,15,1084, - 42,44,1234,1335,344,281,1759,2211,1259,1373, - 1348,1444,1750,447,401,226,231,1618,117,14, - 19,15,1084,33,221,644,223,225,1577,788, - 1435,1552,276,14,19,15,1084,42,44,1234, - 1673,297,271,1070,1095,274,1552,601,14,19, - 15,1084,42,44,1234,1335,1759,1759,257,215, - 1259,1373,1348,1444,1410,1510,1487,1522,93,1552, - 387,14,19,15,1084,42,44,1234,1335,1759, - 282,2286,1340,1259,1373,1348,1444,1410,1510,1487, - 1522,93,1552,284,14,19,15,1084,42,44, - 1234,1335,296,2312,1227,204,1259,1373,1348,1444, - 1410,1510,1487,1522,93,1552,1748,14,19,15, - 1084,42,44,1234,1335,1173,1298,1764,205,1259, - 1373,1348,1444,1410,1510,1487,1522,93,64,1269, - 1703,1552,1163,14,19,15,1084,42,44,1234, - 1676,1635,344,315,316,317,838,2492,1552,556, - 14,19,15,1084,42,38,318,315,316,317, - 257,215,134,215,1662,1202,1618,1409,14,19, - 15,1084,32,1992,447,344,315,316,317,1655, - 401,226,231,1127,1287,1602,137,133,135,159, - 220,644,223,225,1717,134,215,1681,1319,139, - 933,165,299,1238,2492,1764,1736,143,146,149, - 152,409,1602,318,315,316,317,1778,802,141, - 133,135,159,1326,257,215,1684,445,190,356, - 1940,1683,140,296,165,154,656,401,226,231, - 532,318,315,316,317,566,1036,220,644,223, - 225,110,1282,86,1754,26,941,887,2707,1579, - 298,95,1720,838,2492,1100,108,94,96,97, - 98,99,1722,318,315,316,317,1729,443,1723, - 1552,109,14,19,15,1084,42,44,1234,1335, - 1992,514,1,356,1259,1695,2666,401,226,231, - 1678,846,106,1184,953,1770,200,220,644,223, - 225,1774,1136,2533,1681,110,1303,86,171,948, - 941,887,1336,1235,2914,95,2914,1742,794,1100, - 108,94,96,97,98,99,2914,2914,318,315, - 316,317,314,87,2914,109,401,226,231,1062, - 1198,2914,155,656,2914,2164,220,644,223,225, - 2914,2914,2914,265,276,2914,107,251,356,2914, - 2914,446,2914,2914,269,1070,1095,274,2914,256, - 215,344,315,316,317,2914,2914,974,448,2914, - 110,2914,86,266,2914,941,887,2914,2914,2914, - 95,134,215,1696,1100,108,94,96,97,98, - 99,279,2914,318,315,316,317,2914,2914,611, - 109,401,226,231,2914,147,133,135,159,1644, - 2735,220,644,223,225,263,127,356,738,276, - 1552,106,14,19,15,1084,42,37,556,269, - 1070,1095,274,2914,2914,171,456,971,2914,110, - 2914,86,2914,2914,941,887,1886,2914,1298,95, - 1427,2492,2914,1100,108,94,96,97,98,99, - 318,315,316,317,887,1650,105,171,948,109, - 1238,2492,2914,2914,1294,2247,2914,1940,2914,2914, - 319,315,316,317,401,226,231,2914,308,2914, - 107,2914,87,2914,220,644,223,225,279,1211, - 751,1754,2914,2914,401,226,231,2914,2914,2914, - 318,315,316,317,220,644,223,225,495,456, - 2914,1754,838,2492,2914,2914,276,2117,2914,2914, - 2914,211,319,315,316,317,269,1070,1095,274, - 2914,537,1656,2666,2914,2914,2914,199,2914,926, - 171,948,2914,201,2914,1298,401,226,231,318, - 315,316,317,2687,2914,614,220,644,223,225, - 2914,2914,2914,1853,2914,87,2211,926,1034,971, - 2914,2914,1261,401,226,231,2914,318,315,316, - 317,496,2914,221,644,223,225,2914,788,2914, - 2914,2914,684,948,2211,1329,2914,1650,2914,2914, - 194,401,226,1566,2914,318,315,316,317,893, - 880,221,644,223,1565,110,788,86,728,948, - 941,2914,2211,2914,2914,95,2914,2914,2914,1100, - 1579,94,96,97,98,99,2914,1463,2914,772, - 948,110,2914,86,648,2914,941,319,315,316, - 317,95,2914,2416,2914,1100,103,94,96,97, - 98,99,110,211,86,816,948,941,2914,2914, - 2914,2914,95,876,1656,2914,1100,101,94,96, - 97,98,99,2914,882,2914,860,948,110,2914, - 86,2914,2914,941,319,315,316,317,95,2914, - 2914,2914,1100,102,94,96,97,98,99,110, - 2914,86,904,948,941,2914,2914,2914,2914,95, - 2914,2914,2914,1100,118,94,96,97,98,99, - 2914,1675,2914,948,948,110,2914,86,2914,2914, - 941,319,315,316,317,95,1020,2551,2914,1100, - 114,94,96,97,98,99,110,2914,86,171, - 948,941,992,948,2914,2914,95,1663,456,2914, - 1100,1766,94,96,97,98,99,318,315,316, - 317,2914,2914,2914,87,110,2914,86,2914,2914, - 941,1751,2914,2914,2211,95,1762,2914,276,1100, - 113,94,96,97,98,99,1036,948,269,1070, - 1095,274,2914,2914,2914,1552,648,14,19,15, - 1084,42,44,1677,2914,2320,2914,268,261,110, - 2914,86,1080,948,941,2914,2914,1421,1542,95, - 706,2914,2914,1100,120,94,96,97,98,99, - 318,315,316,317,2914,110,2914,86,434,416, - 941,2914,2914,2914,2914,95,507,2211,2914,1100, - 119,94,96,97,98,99,344,315,316,317, - 2914,306,171,948,2914,1533,948,799,569,788, - 2914,2914,276,2914,2914,2914,134,215,344,315, - 316,317,271,1070,1095,274,2914,87,2914,2914, - 87,305,373,416,1446,2914,2914,115,134,215, - 150,133,135,159,1552,2914,14,19,15,1084, - 42,44,1234,1335,2914,306,926,2914,1259,1702, - 2914,799,153,133,135,159,318,315,316,317, - 1552,1311,14,19,15,1084,42,44,1234,1335, - 2914,2914,2914,2211,1709,305,303,304,2914,2914, - 488,226,235,1552,2914,14,19,15,1084,42, - 44,1234,1335,2914,2914,788,1552,1712,14,19, - 15,1084,42,44,1234,1335,2914,2914,2914,1552, - 1722,14,19,15,1084,42,44,1234,1335,2914, - 2914,2914,1329,1727,2914,2914,2914,2914,1329,2914, - 302,304,318,315,316,317,2914,383,318,315, - 316,317,2914,1199,456,2914,2914,2914,2914,2211, - 2914,2338,2914,2914,1552,2211,14,19,15,1084, - 42,44,1690,1329,2914,2914,2914,2914,2914,2914, - 2914,648,1762,318,315,316,317,648,171,356, - 2019,1329,2914,2914,2914,2914,2047,2914,2914,2914, - 2211,318,315,316,317,1552,2914,14,19,15, - 1084,42,36,87,261,2914,2914,199,2211,2914, - 1162,2914,648,1085,1542,1533,356,171,356,2914, - 1552,1420,14,19,15,1084,42,34,2914,1552, - 648,14,19,15,1084,42,35,2914,2226,2320, - 87,2914,87,2914,887,2914,199,115,2914,1162, - 171,356,1552,2914,14,19,15,1084,42,47, - 1160,2914,621,456,1148,315,456,1552,2365,14, - 19,15,1084,42,46,87,2914,2226,2914,199, - 2914,1187,1162,1552,2914,14,19,15,1084,42, - 45,199,2914,2914,1762,2914,1728,2914,1464,1248, - 14,19,15,1084,42,43,318,315,316,317, - 2226,315,456,2914,1533,948,2914,1738,2914,2914, - 2914,2914,1034,2744,2914,2914,261,318,315,316, - 317,2914,1260,2914,2914,1085,1542,1693,2914,87, - 1762,1533,948,2914,2753,1705,115,319,315,316, - 317,2914,2914,2914,194,319,315,316,317,2914, - 2914,2914,2914,1262,880,1708,87,1533,948,2914, - 2914,2914,261,115,1747,319,315,316,317,2914, - 1384,1496,1542,1750,319,315,316,317,2914,2914, - 2914,2914,87,319,315,316,317,2914,2914,115, - 2914,2914,2914,2914,2914,2914,2914,1497,2914,2914, - 2914,2914,2914,2914,2914,2914,2914,2914,2914,2914, - 2914,2914,2914,2914,2914,2914,2914,2914,2914,2914, - 2914,2914,2914,1519,2914,0,1,400,0,1, - 418,0,1,445,0,400,128,0,418,128, - 0,445,128,0,400,129,0,418,129,0, - 445,129,0,400,130,0,418,130,0,445, - 130,0,445,187,0,418,187,0,400,187, - 0,187,191,0,445,186,0,418,186,0, - 400,186,0,186,191,0,400,131,0,418, - 131,0,445,131,0,400,132,0,418,132, - 0,445,132,0,179,228,0,2921,1,0, - 225,237,0,1,3153,0,225,238,0,7, - 9,0,179,17,0,178,18,0,1,3142, - 0,112,2242,0 + 45,46,36,36,108,108,47,125,125,124, + 124,52,52,52,52,52,52,52,52,52, + 109,59,59,59,59,49,81,81,71,71, + 71,72,72,62,62,126,126,83,83,82, + 82,82,63,63,63,64,65,65,65,66, + 66,66,66,69,69,69,73,127,99,99, + 99,99,96,128,129,129,130,130,131,131, + 118,118,132,132,110,110,110,110,133,133, + 111,111,111,112,112,10,10,10,27,27, + 11,11,134,134,113,113,113,114,114,135, + 135,115,115,12,12,136,136,116,116,116, + 13,58,137,137,138,138,117,117,117,97, + 97,97,53,54,91,91,91,105,105,105, + 123,120,121,49,92,317,1345,14,19,15, + 1324,1310,44,1331,1346,353,315,316,317,1335, + 1356,1348,1372,1360,1386,34,1381,1395,74,512, + 127,91,565,1166,869,134,215,1614,1329,14, + 19,15,1324,42,44,1331,1346,1166,1678,388, + 1565,1335,1356,1348,1372,1360,1386,126,1617,136, + 133,135,159,1166,649,459,1145,1647,816,503, + 487,126,906,138,512,165,353,315,316,317, + 1014,142,145,148,151,1813,243,124,87,2052, + 629,2311,2325,2340,821,1020,134,215,199,313, + 747,226,234,1158,453,1445,388,1644,1800,649, + 1614,1799,14,19,15,1324,42,44,1331,1346, + 136,133,135,159,1335,1356,1592,1207,355,1010, + 601,1463,2556,89,138,341,165,353,315,316, + 317,311,142,145,148,151,1813,63,1641,345, + 2052,629,2311,2325,2340,821,104,134,215,63, + 429,1614,194,14,19,15,1324,42,44,1331, + 1346,611,711,1845,389,1335,1356,1348,1372,1360, + 1601,136,133,135,159,1614,310,14,19,15, + 1324,42,44,1331,1346,138,1329,165,211,1335, + 1356,1348,1568,142,145,148,151,1813,359,1022, + 1468,2052,629,2311,2325,2340,821,1548,488,14, + 19,15,1324,1310,44,1331,1346,1891,321,63, + 463,1335,1356,1348,1372,1360,1386,1059,1381,1395, + 74,1166,1743,283,245,1570,488,14,19,15, + 1324,1310,44,1331,1346,174,1632,1306,294,1335, + 1356,1348,1372,1360,1386,197,1381,1395,74,390, + 1614,283,14,19,15,1324,42,44,1508,353, + 315,316,317,476,323,1297,288,1473,1926,1614, + 1397,14,19,15,1324,1310,44,1331,1346,134, + 215,63,867,1335,1356,1348,1372,1360,1386,1032, + 1381,1395,74,289,288,91,1224,1035,1397,319, + 315,316,317,144,133,135,159,319,315,316, + 317,1442,488,14,19,15,1324,1310,44,1331, + 1346,289,640,611,1273,1335,1356,1348,1372,1360, + 1386,1085,1381,1395,74,640,546,283,1323,910, + 14,19,15,1324,1310,44,1331,1346,1551,1975, + 189,515,1335,1356,1348,1372,1360,1386,988,1381, + 1395,74,284,188,398,1798,1896,1104,1614,1445, + 14,19,15,1324,42,44,1331,1346,1239,1059, + 290,182,1335,1518,1397,233,241,1499,229,14, + 19,15,1324,1310,44,1331,1346,640,334,1799, + 425,1335,1356,1348,1372,1360,1386,291,1381,1395, + 74,853,1702,283,14,19,15,1324,1310,44, + 1331,1346,640,123,1275,1463,1335,1356,1348,1372, + 1360,1386,789,1381,1395,74,322,1297,331,1639, + 1614,1207,14,19,15,1324,42,44,1331,1484, + 190,353,315,316,317,347,157,1630,561,1592, + 1397,14,19,15,1324,1310,44,1331,1346,257, + 215,134,215,1335,1356,1348,1372,1360,1386,1275, + 1381,1395,74,1329,230,283,1799,1158,1772,855, + 2460,59,212,897,335,137,133,135,159,318, + 315,316,317,319,315,316,317,1683,227,139, + 122,165,63,1110,952,1463,1990,143,146,149, + 152,1813,23,716,226,906,538,329,292,1157, + 1595,244,1397,220,812,223,909,257,215,1614, + 2680,14,19,15,1324,42,39,1856,1636,1622, + 14,19,15,1324,1310,44,1331,1346,1798,2491, + 256,215,1335,1356,1348,1372,1360,1386,1754,1381, + 1395,74,1239,699,556,63,2642,22,233,154, + 871,1614,211,14,19,15,1324,42,44,1331, + 1346,366,333,1082,1468,1335,1527,434,257,215, + 640,1420,1799,14,19,15,1324,1310,44,1331, + 1346,887,1552,487,507,1335,1356,1348,1372,1360, + 1386,1218,1381,1395,74,278,111,863,1045,1702, + 341,14,19,15,1324,1310,44,1331,1346,981, + 1799,1835,1771,1335,1356,1348,1372,1360,1386,242, + 1381,1395,74,1402,1614,331,14,19,15,1324, + 42,44,1331,1346,125,1799,63,649,1335,1356, + 1348,1372,1360,1386,262,1381,1395,93,1614,655, + 14,19,15,1324,1310,44,1331,1346,336,121, + 1015,87,1335,1356,1348,1372,1360,1386,1819,1381, + 1395,74,1771,1614,85,14,19,15,1324,1310, + 44,1331,1346,640,1439,1299,1131,1335,1356,1348, + 1372,1360,1386,577,1381,1395,74,63,577,84, + 1085,1614,1209,14,19,15,1324,1310,44,1331, + 1346,297,277,471,330,1335,1356,1348,1372,1360, + 1386,1085,1381,1395,74,1085,1614,83,14,19, + 15,1324,1310,44,1331,1346,1416,1799,1329,1799, + 1335,1356,1348,1372,1360,1386,1172,1381,1395,74, + 285,1614,82,14,19,15,1324,1310,44,1331, + 1346,2730,1085,2740,1756,1335,1356,1348,1372,1360, + 1386,206,1381,1395,74,183,1614,81,14,19, + 15,1324,1310,44,1331,1346,20,1799,196,1329, + 1335,1356,1348,1372,1360,1386,1085,1381,1395,74, + 1085,1614,80,14,19,15,1324,1310,44,1331, + 1346,2742,207,1329,1794,1335,1356,1348,1372,1360, + 1386,1468,1381,1395,74,1487,1614,79,14,19, + 15,1324,1310,44,1331,1346,1502,246,63,605, + 1335,1356,1348,1372,1360,1386,615,1381,1395,74, + 26,1614,78,14,19,15,1324,1310,44,1331, + 1346,247,1799,1794,1329,1335,1356,1348,1372,1360, + 1386,226,1381,1395,74,238,1614,77,14,19, + 15,1324,1310,44,1331,1346,117,1596,1206,1077, + 1335,1356,1348,1372,1360,1386,879,1381,1395,74, + 579,1614,76,14,19,15,1324,1310,44,1331, + 1346,640,296,1329,1724,1335,1356,1348,1372,1360, + 1386,414,1381,1395,74,815,1614,75,14,19, + 15,1324,1310,44,1331,1346,1273,1210,693,299, + 1335,1356,1348,1372,1360,1386,513,1381,1395,74, + 523,1614,92,14,19,15,1324,42,44,1331, + 1346,298,313,63,649,1335,1356,1348,1372,1360, + 1386,46,1381,1395,93,1614,953,14,19,15, + 1324,1310,44,1331,1346,858,1755,1289,87,1335, + 1356,1348,1372,1360,1386,1834,1381,1395,74,1219, + 1614,1199,14,19,15,1324,1310,44,1331,1346, + 1821,214,725,65,1335,1356,1348,1372,1360,1386, + 352,1381,1395,74,1798,2210,1223,295,1252,375, + 318,315,316,317,1614,1767,14,19,15,1324, + 42,44,1331,1346,280,1350,1384,2105,1335,1356, + 1348,1372,1613,98,716,226,231,1658,1778,14, + 19,15,1324,40,221,812,223,225,565,1095, + 1640,745,276,1614,1804,14,19,15,1324,42, + 44,1331,1346,271,953,1070,274,1335,1356,1348, + 1372,1360,1386,1806,1381,1395,93,1614,720,14, + 19,15,1324,42,44,1331,1346,765,1081,63, + 649,1335,1356,1348,1372,1360,1386,1105,1381,1395, + 93,1614,905,14,19,15,1324,42,44,1331, + 1346,1281,1300,204,87,1335,1356,1348,1372,1360, + 1386,1847,1381,1395,93,1614,1359,14,19,15, + 1324,42,44,1331,1346,193,365,205,1733,1335, + 1356,1348,1372,1360,1386,1010,1381,1395,93,1614, + 1772,14,19,15,1324,42,44,1331,1503,110, + 86,1274,1370,1285,407,344,1,365,95,644, + 340,1247,982,108,94,96,97,98,99,318, + 315,316,317,1684,1357,1323,1103,1711,109,1623, + 110,86,1595,352,1285,407,2105,1828,1832,95, + 642,423,1810,982,108,94,96,97,98,99, + 106,187,487,2923,255,365,314,990,1095,109, + 1708,276,256,215,352,2923,2923,318,315,316, + 317,2923,271,953,1070,274,1596,2923,110,86, + 407,107,1285,407,2105,63,365,95,855,2131, + 2923,982,108,94,96,97,98,99,318,315, + 316,317,2923,2923,308,1521,838,109,1772,352, + 87,1772,352,887,199,1990,1984,1766,1772,129, + 365,2923,716,226,231,338,2923,2923,232,106, + 2923,350,220,812,223,225,2923,2923,320,2680, + 2923,1385,2923,110,86,2923,2411,1285,407,2923, + 1729,2241,95,1125,2131,1709,982,108,94,96, + 97,98,99,318,315,316,317,2923,1765,105, + 279,1772,109,1368,2923,1772,1772,352,154,871, + 1936,1772,2923,2923,2699,2923,2923,716,226,231, + 366,339,2923,236,107,2682,16,220,812,223, + 225,351,276,1614,1619,14,19,15,1324,42, + 44,1331,1346,269,953,1070,274,1335,1356,1348, + 1372,1360,1386,987,1381,1395,73,855,2131,1772, + 2923,2923,1912,318,315,316,317,318,315,316, + 317,441,426,2923,1772,1183,2488,2702,2923,2161, + 669,63,649,2923,1990,567,487,1772,200,2923, + 2923,716,226,231,2181,306,1750,1772,1360,2166, + 393,220,812,223,225,1174,87,2207,2680,716, + 226,231,2923,1148,199,1772,325,1627,279,220, + 812,223,225,2923,305,2923,265,276,2923,352, + 2923,1772,716,226,231,1628,1164,487,269,953, + 1070,274,220,812,223,225,601,155,871,868, + 276,21,1772,2923,1772,1772,2923,266,1244,2131, + 2923,269,953,1070,274,1835,1595,2923,318,315, + 316,317,275,464,281,1272,1125,2131,195,1772, + 1912,303,304,2923,2923,1936,319,315,316,317, + 2923,2923,716,226,231,2923,256,215,261,282, + 2923,263,220,812,223,225,807,1698,1396,1619, + 716,226,231,2923,2923,1595,318,315,316,317, + 220,812,223,225,945,2923,2923,1619,1772,1772, + 855,2131,2923,873,318,315,316,317,2923,2923, + 319,315,316,317,945,256,215,819,2277,2306, + 2923,2105,2702,2923,318,315,316,317,747,226, + 235,2923,2923,201,716,226,231,2923,2923,2923, + 2706,2105,945,1095,220,812,223,225,716,226, + 231,2698,318,315,316,317,2923,2923,221,812, + 223,225,1265,1095,2923,2923,948,2923,802,2105, + 695,649,353,315,316,317,716,226,1420,1680, + 2923,14,19,15,1324,33,221,812,223,1409, + 2923,1095,134,215,110,86,740,649,1285,731, + 2923,2923,2923,95,2923,2923,2923,982,1438,94, + 96,97,98,99,2923,1078,141,133,135,159, + 110,86,785,649,1285,319,315,316,317,95, + 140,2923,165,982,103,94,96,97,98,99, + 2923,990,830,649,2923,2923,110,86,2923,2923, + 1285,318,315,316,317,95,2923,2923,2923,982, + 101,94,96,97,98,99,110,86,2105,2923, + 1285,875,649,2923,2923,95,1297,487,2923,982, + 102,94,96,97,98,99,318,315,316,317, + 838,920,649,2923,2923,110,86,2923,2923,1285, + 2004,2923,2923,2105,95,1835,2923,2923,982,118, + 94,96,97,98,99,110,86,965,649,1285, + 1164,487,2923,2923,95,838,2923,2923,982,114, + 94,96,97,98,99,1430,2923,2923,261,2923, + 2923,110,86,2923,2923,1285,2923,1914,1396,1835, + 95,1486,487,2923,982,1631,94,96,97,98, + 99,318,315,316,317,1010,649,1614,2923,14, + 19,15,1324,42,44,1331,1346,2923,2105,2923, + 1835,1532,261,2923,1394,379,426,1055,649,110, + 86,1939,1396,1285,319,315,316,317,95,2923, + 838,2923,982,113,94,96,97,98,99,306, + 1599,110,86,261,393,1285,1100,649,2923,2923, + 95,452,1914,1396,982,120,94,96,97,98, + 99,353,315,316,317,514,2923,2923,305,2923, + 110,86,2923,352,1285,353,315,316,317,95, + 578,134,215,982,119,94,96,97,98,99, + 353,315,316,317,2923,134,215,1464,2923,14, + 19,15,1324,42,35,147,133,135,159,2923, + 134,215,2923,2923,349,2131,2923,717,2923,150, + 133,135,159,2923,2923,302,304,318,315,316, + 317,2923,2923,385,153,133,135,159,2923,2923, + 2923,2923,2923,1730,677,248,2923,1831,716,226, + 231,1725,2530,319,315,316,317,2923,220,812, + 223,225,2923,2923,1614,868,14,19,15,1324, + 42,44,1331,1346,2923,2923,2923,1614,1541,14, + 19,15,1324,42,44,1331,1346,2923,2923,2923, + 1614,1542,14,19,15,1324,42,44,1331,1346, + 990,2923,2923,276,1556,1744,365,2923,2923,702, + 318,315,316,317,269,953,1070,274,1614,2923, + 14,19,15,1324,42,44,1517,2105,990,2923, + 87,1122,487,268,407,2923,2923,115,318,315, + 316,317,1680,2923,14,19,15,1324,32,838, + 2923,2923,2923,2923,2923,2105,2923,2923,2722,2032, + 1835,2923,1464,352,14,19,15,1324,42,35, + 990,2923,1147,2923,2923,2923,2923,838,762,2923, + 318,315,316,317,2923,2923,2923,1430,318,315, + 316,317,2923,261,2923,2923,1304,2105,2923,2923, + 2923,2923,1698,1396,2923,677,318,315,316,317, + 249,1614,2923,14,19,15,1324,42,38,838, + 2923,2923,2923,2403,2923,2923,2923,2923,1614,1599, + 14,19,15,1324,42,37,1614,2923,14,19, + 15,1324,42,36,1614,2923,14,19,15,1324, + 42,34,63,365,1614,1763,14,19,15,1324, + 42,35,63,365,2923,2923,2923,2923,2923,1614, + 715,14,19,15,1324,42,47,87,2923,2923, + 2923,199,631,487,1766,2923,2923,87,2923,63, + 649,199,2923,1614,1766,14,19,15,1324,42, + 46,1614,2923,14,19,15,1324,42,45,63, + 649,199,2923,2411,87,2923,2923,1299,2923,2923, + 1274,1614,1526,2411,14,19,15,1324,42,43, + 318,315,316,317,87,1857,2923,2923,1525,389, + 487,1915,1760,601,2923,1875,1781,2274,318,315, + 316,317,318,315,316,317,318,315,316,317, + 2923,2923,1749,649,2923,2726,1737,2923,407,2748, + 1749,649,312,2766,2923,194,319,315,316,317, + 1749,649,1749,649,2923,1135,1845,87,1784,2923, + 2923,2923,309,2923,115,87,2923,352,319,315, + 316,317,115,2923,2923,87,1791,87,2923,2923, + 2923,2923,115,2923,115,2923,319,315,316,317, + 2923,2923,2923,2923,2923,2923,2923,2923,2923,1149, + 2923,2923,2923,2923,2923,2923,2923,1197,2923,2923, + 2923,2923,2923,2923,2923,2923,2923,1988,2923,1989, + 2923,0,1,643,0,1,428,0,1,432, + 0,1,440,0,428,128,0,432,128,0, + 440,128,0,428,129,0,432,129,0,440, + 129,0,428,130,0,432,130,0,440,130, + 0,440,187,0,432,187,0,428,187,0, + 187,191,0,440,186,0,432,186,0,428, + 186,0,186,191,0,428,131,0,432,131, + 0,440,131,0,428,132,0,432,132,0, + 440,132,0,179,228,0,2930,1,0,225, + 237,0,1,3162,0,225,238,0,7,9, + 0,179,17,0,178,18,0,1,3151,0, + 112,2255,0 }; }; public final static char baseAction[] = BaseAction.baseAction; @@ -628,192 +629,197 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,0,1,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,0,62,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,0,0,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,63,62,0,1,2,3, - 4,5,6,7,8,9,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,32,33, - 34,35,36,37,38,39,40,41,42,43, - 0,64,46,47,48,49,50,51,52,53, - 54,55,56,57,58,59,60,79,62,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,0,1,46,47,48,49,50, - 51,52,53,54,55,56,57,58,59,60, - 0,1,2,3,4,5,6,7,8,9, - 10,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,0,0,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,0,1,2,0,4,5,6,7,8, - 0,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,0,26,27,28, - 29,30,31,0,0,0,0,1,2,13, - 4,5,6,8,8,12,61,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,0,1,2,3,4,5,6,7, - 8,67,0,0,0,1,0,4,5,6, - 44,7,0,9,22,23,24,25,26,27, - 28,29,30,31,32,22,23,24,0,26, - 27,28,29,30,31,70,71,9,46,47, - 48,49,50,51,52,53,54,55,56,57, - 58,59,60,0,1,2,3,4,5,6, - 7,8,0,0,0,0,0,1,76,4, - 5,6,8,7,12,22,23,24,25,26, - 27,28,29,30,31,32,80,22,23,24, - 0,26,27,28,29,30,31,0,8,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,0,1,0,3,4,5, - 6,7,0,0,0,3,0,3,0,76, - 4,5,6,0,70,71,22,23,24,76, - 26,27,28,29,30,31,32,25,22,23, - 24,0,26,27,28,29,30,31,0,8, + 30,31,32,0,34,35,36,37,38,39, + 40,41,42,43,44,0,46,47,48,49, + 50,51,52,53,54,55,56,57,0,59, + 60,61,0,63,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,0,34,35, + 36,37,38,39,40,41,42,43,44,76, 46,47,48,49,50,51,52,53,54,55, - 56,57,58,59,60,0,62,0,1,63, - 3,4,5,6,7,0,62,0,0,0, - 1,2,4,5,6,72,73,74,75,22, - 23,24,44,26,27,28,29,30,31,32, - 22,23,24,80,26,27,28,29,30,31, - 0,70,71,46,47,48,49,50,51,52, - 53,54,55,56,57,58,59,60,63,62, - 0,1,0,3,4,5,6,7,0,1, - 8,64,4,5,6,7,0,72,73,74, - 75,0,22,23,24,9,26,27,28,29, - 30,31,32,86,87,88,89,90,91,92, - 93,94,95,22,23,24,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,81,62,0,1,2,3,0,0,2, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,0,0,2,25,4, - 5,6,0,8,2,32,33,34,35,36, - 37,38,39,40,41,42,43,0,1,2, - 3,44,44,0,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,44, - 0,1,25,0,4,5,6,7,0,32, - 33,34,35,36,37,38,39,40,41,42, - 43,0,1,2,3,22,23,24,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,0,1,0,25,4,5,6, - 7,0,1,32,33,34,35,36,37,38, - 39,40,41,42,43,0,1,2,3,0, - 0,2,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,0,1,2, - 25,4,5,6,0,0,2,32,33,34, - 35,36,37,38,39,40,41,42,43,0, - 1,2,3,44,44,0,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,0,1,0,25,4,5,6,7,69, - 0,32,33,34,35,36,37,38,39,40, - 41,42,43,0,1,2,3,0,63,44, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,0,1,2,25,4, - 5,6,0,0,69,32,33,34,35,36, - 37,38,39,40,41,42,43,0,1,2, - 3,0,0,2,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,0, - 0,1,25,0,1,2,3,7,9,32, - 33,34,35,36,37,38,39,40,41,42, - 43,0,1,2,3,0,64,2,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,0,1,63,25,44,45,0, - 7,2,3,32,33,34,35,36,37,38, - 39,40,41,42,43,0,1,2,3,0, - 0,1,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,0,0,1, - 25,0,22,44,45,7,9,32,33,34, - 35,36,37,38,39,40,41,42,43,0, - 1,2,3,22,23,24,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,0,1,2,25,4,5,6,7,0, - 0,32,33,34,35,36,37,38,39,40, - 41,42,43,22,23,24,0,26,27,28, - 29,30,31,0,0,0,1,2,3,0, - 0,0,3,4,5,6,0,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,0,1,25,0,4,5,6,7, - 0,0,0,3,9,3,4,5,6,44, - 45,10,11,0,22,23,24,61,26,27, - 28,29,30,31,61,25,61,25,0,1, - 61,0,0,64,2,4,5,6,46,47, - 48,49,50,51,52,53,54,55,56,57, - 58,59,60,22,23,24,0,26,27,28, - 29,30,31,61,0,9,64,0,1,2, - 0,4,5,6,4,5,6,46,47,48, - 49,50,51,52,53,54,55,56,57,0, - 1,2,3,0,81,67,7,8,0,10, - 11,12,13,14,15,16,17,18,19,20, - 21,0,0,0,2,26,0,1,2,3, - 4,5,6,0,8,2,3,0,64,0, - 63,33,0,4,5,6,9,8,22,23, - 24,25,26,27,28,29,30,31,0,1, - 2,3,4,5,6,0,8,68,0,0, - 44,45,4,5,6,10,11,44,45,0, + 56,57,64,59,60,61,81,63,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31, - 0,0,2,72,73,74,75,0,1,2, - 3,0,44,45,7,8,67,10,11,12, - 13,14,15,16,17,18,19,20,21,0, - 1,2,3,26,82,0,7,8,9,10, + 32,64,34,35,36,37,38,39,40,41, + 42,43,44,0,46,47,48,49,50,51, + 52,53,54,55,56,57,0,59,60,61, + 4,63,0,1,2,3,4,5,6,7, + 8,9,10,11,12,13,14,15,16,17, + 18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,0,34,35,36,37, + 38,39,40,41,42,43,44,0,46,47, + 48,49,50,51,52,53,54,55,56,57, + 0,59,60,61,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,62,34,35, + 36,37,38,39,40,41,42,43,44,62, + 46,47,48,49,50,51,52,53,54,55, + 56,57,0,59,60,61,0,1,2,0, + 4,5,6,7,8,13,10,11,12,13, + 14,15,16,17,18,19,20,21,22,23, + 0,25,26,27,28,29,30,31,0,1, + 2,0,1,2,0,4,5,6,0,8, + 2,3,46,47,48,49,50,51,52,53, + 54,55,56,57,0,59,60,61,0,1, + 2,3,4,5,6,7,8,0,0,0, + 3,33,4,4,5,6,45,9,58,45, + 22,23,24,25,26,27,28,29,30,31, + 32,22,23,0,25,26,27,28,29,30, + 31,8,0,69,46,47,48,49,50,51, + 52,53,54,55,56,57,62,59,60,61, + 0,1,2,3,4,5,6,7,8,0, + 63,0,0,1,76,4,5,6,0,7, + 2,9,22,23,24,25,26,27,28,29, + 30,31,32,22,23,0,25,26,27,28, + 29,30,31,70,71,0,46,47,48,49, + 50,51,52,53,54,55,56,57,23,59, + 60,61,0,1,82,3,4,5,6,7, + 0,0,0,0,0,1,76,4,5,6, + 9,7,0,9,22,23,0,25,26,27, + 28,29,30,31,32,22,23,0,25,26, + 27,28,29,30,31,0,9,2,46,47, + 48,49,50,51,52,53,54,55,56,57, + 0,59,60,61,0,63,0,1,8,3, + 4,5,6,7,10,0,0,0,0,3, + 0,4,5,6,72,73,74,75,22,23, + 45,25,26,27,28,29,30,31,32,22, + 23,79,25,26,27,28,29,30,31,33, + 0,1,46,47,48,49,50,51,52,53, + 54,55,56,57,0,59,60,61,0,63, + 0,1,22,3,4,5,6,7,62,0, + 1,0,64,0,3,2,7,4,5,6, + 0,8,22,23,0,25,26,27,28,29, + 30,31,32,9,86,87,88,89,90,91, + 92,93,94,95,33,0,46,47,48,49, + 50,51,52,53,54,55,56,57,45,59, + 60,61,0,63,0,1,2,3,0,58, + 2,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,0,1,24,0, + 4,5,6,7,0,1,32,8,34,35, + 36,37,38,39,40,41,42,43,44,0, + 1,2,3,45,0,1,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, - 21,0,1,2,3,0,77,78,7,8, - 0,10,11,12,13,14,15,16,17,18, - 19,20,21,84,85,68,0,1,2,0, - 4,5,6,0,0,0,1,2,4,5, - 6,62,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,0,0,2, - 2,0,0,0,1,2,4,5,6,68, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,0,1,2,0,63, - 2,3,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,0,1,2, - 0,1,0,3,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,0, - 1,2,0,45,0,3,7,8,9,10, + 21,0,1,24,0,4,5,6,7,77, + 78,32,8,34,35,36,37,38,39,40, + 41,42,43,44,0,1,2,3,0,70, + 71,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,0,1,24,0, + 4,5,6,7,0,0,32,2,34,35, + 36,37,38,39,40,41,42,43,44,0, + 1,2,3,45,70,71,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, - 21,0,1,2,0,45,0,25,7,8, - 0,10,11,12,13,14,15,16,17,18, - 19,20,21,0,1,2,0,45,0,67, + 21,0,0,24,0,1,2,0,4,5, + 6,32,10,34,35,36,37,38,39,40, + 41,42,43,44,0,1,2,3,0,65, + 66,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,0,1,24,0, + 4,5,6,7,0,0,32,2,34,35, + 36,37,38,39,40,41,42,43,44,0, + 1,2,3,45,0,0,7,8,9,10, + 11,12,13,14,15,16,17,18,19,20, + 21,84,85,24,0,1,2,69,4,5, + 6,32,0,34,35,36,37,38,39,40, + 41,42,43,44,0,1,2,3,0,65, + 66,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,0,0,24,0, + 4,5,6,4,5,6,32,10,34,35, + 36,37,38,39,40,41,42,43,44,0, + 1,2,3,0,0,2,7,8,9,10, + 11,12,13,14,15,16,17,18,19,20, + 21,0,80,24,0,4,5,6,4,5, + 6,32,0,34,35,36,37,38,39,40, + 41,42,43,44,0,1,2,3,0,45, + 2,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,0,0,24,0, + 0,4,5,6,0,9,32,3,34,35, + 36,37,38,39,40,41,42,43,44,0, + 1,2,3,0,0,2,7,8,9,10, + 11,12,13,14,15,16,17,18,19,20, + 21,0,1,24,0,1,2,0,4,5, + 6,32,0,34,35,36,37,38,39,40, + 41,42,43,44,0,1,2,63,4,5, + 6,7,72,73,74,75,0,0,1,3, + 4,5,6,0,7,0,22,23,3,25, + 26,27,28,29,30,31,72,73,74,75, + 24,0,0,1,2,3,62,0,67,24, + 46,47,48,49,50,51,52,53,54,55, + 56,57,0,59,60,61,0,1,0,1, + 4,5,6,7,58,33,8,0,0,2, + 64,3,4,5,6,0,0,45,22,23, + 67,25,26,27,28,29,30,31,0,1, + 58,3,24,0,1,2,0,4,5,6, + 0,0,46,47,48,49,50,51,52,53, + 54,55,56,57,0,59,60,61,4,5, + 6,33,0,0,0,1,58,4,5,6, + 0,7,64,11,12,34,22,23,0,25, + 26,27,28,29,30,31,0,9,0,0, + 4,5,6,0,8,62,8,4,5,6, + 46,47,48,49,50,51,52,53,54,55, + 56,57,0,1,2,3,80,0,0,7, + 8,3,10,11,12,13,14,15,16,17, + 18,19,20,21,0,65,66,3,26,0, + 1,2,3,4,5,6,0,8,0,0, + 1,2,3,67,65,66,0,0,24,0, + 3,22,23,24,25,26,27,28,29,30, + 31,0,33,0,1,2,3,4,5,6, + 68,8,33,0,45,0,68,4,5,6, + 33,0,58,2,45,22,23,24,25,26, + 27,28,29,30,31,0,33,2,62,0, + 1,2,3,65,66,58,7,8,45,10, + 11,12,13,14,15,16,17,18,19,20, + 21,0,1,2,3,26,77,78,7,8, + 9,10,11,12,13,14,15,16,17,18, + 19,20,21,0,1,2,3,0,0,2, 7,8,0,10,11,12,13,14,15,16, - 17,18,19,20,21,0,1,2,22,23, - 24,0,7,8,3,10,11,12,13,14, + 17,18,19,20,21,0,0,68,2,4, + 5,6,0,8,22,23,0,25,0,1, + 2,0,0,2,63,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 0,1,0,3,0,0,1,2,4,5, + 6,68,7,8,9,10,11,12,13,14, 15,16,17,18,19,20,21,0,1,2, - 0,65,66,3,7,8,0,10,11,12, + 0,0,67,33,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,0, - 1,2,0,65,66,25,7,8,0,10, + 1,2,22,23,0,25,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, - 21,0,0,2,0,1,4,5,6,68, - 8,7,0,9,0,14,15,0,4,5, - 6,61,0,0,0,0,4,5,6,4, - 5,6,0,10,11,0,4,5,6,4, - 5,6,0,0,0,44,3,0,4,5, - 6,4,5,6,0,0,0,3,3,0, - 0,0,0,3,22,23,24,0,0,67, - 69,4,5,6,0,0,2,0,22,23, - 24,4,5,6,83,25,0,0,45,0, - 4,5,6,4,5,6,79,0,0,45, - 45,3,0,0,61,3,3,0,0,0, - 3,3,0,0,2,61,61,0,9,2, - 0,61,9,0,65,66,65,66,0,9, - 0,0,9,65,66,0,61,0,0,77, - 78,0,0,45,0,0,0,45,61,0, - 0,0,45,0,0,0,0,0,0,0, - 63,0,0,0,0,62,0,0,0,0, - 62,0,0,0,0,0,0,0,0,0, + 21,0,1,2,0,0,0,2,7,8, + 9,10,11,12,13,14,15,16,17,18, + 19,20,21,0,1,2,22,23,67,25, + 7,8,0,10,11,12,13,14,15,16, + 17,18,19,20,21,0,1,2,0,0, + 0,2,7,8,0,10,11,12,13,14, + 15,16,17,18,19,20,21,0,1,2, + 22,23,0,25,7,8,0,10,11,12, + 13,14,15,16,17,18,19,20,21,0, + 1,2,0,0,62,0,7,8,0,10, + 11,12,13,14,15,16,17,18,19,20, + 21,0,1,2,22,23,62,25,7,8, + 0,10,11,12,13,14,15,16,17,18, + 19,20,21,0,0,2,2,3,0,0, + 2,3,0,4,5,6,0,14,15,0, + 4,5,6,0,0,13,3,4,0,0, + 62,3,3,0,0,0,0,33,3,0, + 0,33,79,4,5,6,0,24,45,45, + 0,0,24,45,3,22,23,0,25,24, + 0,33,33,0,4,5,6,4,5,6, + 0,81,69,0,4,5,6,0,0,0, + 3,3,3,0,33,0,83,58,0,0, + 0,3,58,58,11,12,11,12,0,1, + 0,0,24,0,58,7,0,0,58,9, + 33,0,33,0,0,58,9,0,0,0, + 9,0,9,9,0,0,0,0,0,0, + 0,58,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,63,0,0,0,0,0,0,0,0, + 0,63,0,64,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,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,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0 }; }; public final static byte termCheck[] = TermCheck.termCheck; @@ -821,192 +827,194 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface TermAction { public final static char termAction[] = {0, - 2914,5058,1,1578,1,1,1,5027,1,680, + 2923,4976,1,1423,2812,1,1,4932,1,466, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,2922,1,1,1,1, - 1,1,3014,863,1048,1023,1060,924,2072,802, - 669,921,708,879,335,713,1,1,1,1, + 1,1,1,1,2931,1,1,1,1,1, + 1,1,3023,2923,1231,779,1034,866,1281,2060, + 1146,980,1246,423,1235,70,1,1,1,1, + 1,1,1,1,1,1,1,1,156,1, + 1,1,1,2929,7,2908,2908,2908,2908,2908, + 2908,2908,2908,2908,2908,2908,2908,2908,2908,2908, + 2908,2908,2908,2908,2908,2908,2908,2908,2908,2908, + 2908,2908,2908,2908,2908,2908,2908,213,2908,2908, + 2908,2908,2908,2908,2908,2908,2908,2908,2908,2811, + 2908,2908,2908,2908,2908,2908,2908,2908,2908,2908, + 2908,2908,767,2908,2908,2908,521,2908,2923,4976, + 1,1423,2812,1,1,4932,1,466,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,2914,2920,7,2899,2899,2899,2899,2899,2899, - 2899,2899,2899,2899,2899,2899,2899,2899,2899,2899, - 2899,2899,2899,2899,2899,2899,2899,2899,2899,2899, - 2899,2899,2899,2899,2899,2899,2899,2899,2899,2899, - 2899,2899,2899,2899,2899,2899,2899,156,66,2899, - 2899,2899,2899,2899,2899,2899,2899,2899,2899,2899, - 2899,2899,2899,2899,2098,2899,2914,5058,1,1578, - 1,1,1,5027,1,680,1,1,1,1, + 1,1,2931,1,1,1,1,1,1,1, + 3023,1361,1231,779,1034,866,1281,2060,1146,980, + 1246,423,1235,287,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,2922,1,1,1,1,1,1,3014,863, - 1048,1023,1060,924,2072,802,669,921,708,879, - 1,739,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,789,2920,2914, - 5058,1,2923,1,1,1,5027,1,680,1, + 2812,2929,2923,4976,1,2932,2812,1,1,4932, + 1,466,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2931,1,1,1, + 1,1,1,1,3023,2923,1231,779,1034,866, + 1281,2060,1146,980,1246,423,1235,2923,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,2922,1,1,1,1,1, - 1,3014,863,1048,1023,1060,924,2072,802,669, - 921,708,879,334,713,1,1,1,1,1, + 2923,1,1,1,2923,4976,1,2932,2812,1, + 1,4932,1,466,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,2931,1, + 1,1,1,1,1,1,3023,2086,1231,779, + 1034,866,1281,2060,1146,980,1246,423,1235,2112, 1,1,1,1,1,1,1,1,1,1, - 2914,5058,1,2923,1,1,1,5027,1,680, + 1,1,64,1,1,1,2923,1455,1675,2923, + 440,428,432,1456,2614,470,2936,2596,2588,2604, + 2502,2069,1467,2933,2934,2935,2571,919,3139,3141, + 346,3140,3085,3086,3084,3142,3087,3083,1,3151, + 2374,270,3151,1858,2923,440,428,432,2923,255, + 703,2928,3090,3095,3094,3092,3093,3091,3096,3097, + 3089,3098,3099,3100,2923,1966,2538,2377,2923,1, + 1,2932,2812,1,1,1,1,1,1,129, + 2896,2927,2812,2839,2833,2836,718,466,738,1531, + 1,1,2931,1,1,1,1,1,1,1, + 3230,3139,3141,48,3140,3085,3086,3084,3142,3087, + 3083,2661,112,1093,1,1,1,1,1,1, + 1,1,1,1,1,1,2132,1,1,1, + 2923,1,1,2932,2812,1,1,1,1,2923, + 2929,130,2923,3103,301,2848,2842,2845,2923,3104, + 1478,519,1,1,2931,1,1,1,1,1, + 1,1,3230,3139,3141,343,3140,3085,3086,3084, + 3142,3087,3083,2653,2629,2923,1,1,1,1, + 1,1,1,1,1,1,1,1,3265,1, + 1,1,2923,1,2920,193,1,1,1,1, + 2923,2923,59,131,2923,3103,300,2881,2875,2878, + 409,3104,66,589,1,1,2923,1,1,1, + 1,1,1,1,3121,3139,3141,231,3140,3085, + 3086,3084,3142,3087,3083,224,234,938,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,2922,1,1,1,1, - 1,1,3014,863,1048,1023,1060,924,2072,802, - 669,921,708,879,287,258,1,1,1,1, + 2923,1,1,1,348,193,2923,1,647,192, + 1,1,1,1,1001,2923,2923,132,42,2928, + 2923,2890,2884,2887,2450,2437,2424,2257,1,1, + 718,1,1,1,1,1,1,1,3121,3139, + 3141,545,3140,3085,3086,3084,3142,3087,3083,2927, + 326,3250,1,1,1,1,1,1,1,1, + 1,1,1,1,2923,1,1,1,2923,192, + 2923,1,3251,193,1,1,1,1,392,2923, + 3103,2923,1311,270,2928,1740,3104,440,428,432, + 2923,255,1,1,2923,1,1,1,1,1, + 1,1,3121,661,1286,1261,1236,1211,1186,1136, + 1161,1111,1083,1058,2927,2923,1,1,1,1, + 1,1,1,1,1,1,1,1,718,1, + 1,1,62,193,2923,4976,1,2932,272,531, + 1434,4932,1,466,1,1,1,1,1,1, + 1,1,1,1,1,1,187,2860,2931,50, + 2851,2857,2854,2860,2923,1771,3023,2661,1231,779, + 1034,866,1281,2060,1146,980,1246,423,1235,2923, + 4976,1,2932,718,2923,3163,4932,1,466,1, 1,1,1,1,1,1,1,1,1,1, - 1,2914,1634,2548,1,400,418,445,1648,2599, - 2914,2565,1890,2590,2927,1616,1457,476,2924,2925, - 2926,1598,1422,3130,3131,3132,2914,3076,3077,3075, - 3133,3078,3074,64,2914,48,270,3142,1837,809, - 400,418,445,2653,255,712,507,3081,3086,3085, - 3083,3084,3082,3087,3088,3080,3089,3090,3091,1778, - 1970,920,2914,1,1,2923,1,1,1,1, - 1,3174,2914,129,2914,3094,68,2824,2827,2830, - 684,3095,2914,628,1,1,1,2922,1,1, - 1,1,1,1,3221,3130,3131,3132,2914,3076, - 3077,3075,3133,3078,3074,2637,2622,380,1,1, + 1,186,2872,2931,49,2863,2869,2866,2872,961, + 748,3023,2661,1231,779,1034,866,1281,2060,1146, + 980,1246,423,1235,2923,4976,1,2932,222,2653, + 2629,4932,1,466,1,1,1,1,1,1, + 1,1,1,1,1,1,208,5121,2931,2923, + 440,428,432,5121,54,2923,3023,568,1231,779, + 1034,866,1281,2060,1146,980,1246,423,1235,2923, + 4976,1,2932,718,2653,2629,4932,1,466,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,2914,1,1,2923,1,1,1, - 1,1,65,2914,50,130,2914,3094,301,2833, - 2836,2839,2653,3095,712,1,1,1,2922,1, - 1,1,1,1,1,3221,1434,3130,3131,3132, - 2914,3076,3077,3075,3133,3078,3074,2914,694,1, + 1,2923,2923,2931,1,3151,2374,72,2821,2815, + 2818,3023,1580,1231,779,1034,866,1281,2060,1146, + 980,1246,423,1235,2923,4976,1,2932,293,820, + 1579,4932,1,466,1,1,1,1,1,1, + 1,1,1,1,1,1,360,5122,2931,2923, + 440,428,432,5122,58,2923,3023,758,1231,779, + 1034,866,1281,2060,1146,980,1246,423,1235,2923, + 4976,1,2932,1555,2923,2923,4932,1,466,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,2914,1,2914,193,1,1, - 1,1,1,59,1,2923,131,2887,2914,300, - 2866,2869,2872,69,2637,2622,1,1,1,2805, - 1,1,1,1,1,1,3112,2922,3130,3131, - 3132,49,3076,3077,3075,3133,3078,3074,222,2653, + 1,397,2649,2931,255,3151,2374,1321,440,428, + 432,3023,68,1231,779,1034,866,1281,2060,1146, + 980,1246,423,1235,2923,4976,1,2932,2923,820, + 1579,4932,1,466,1,1,1,1,1,1, + 1,1,1,1,1,1,184,2923,2931,255, + 440,428,432,440,428,432,3023,1001,1231,779, + 1034,866,1281,2060,1146,980,1246,423,1235,2923, + 4976,1,2932,2923,273,791,4932,1,466,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,2914,193,2914,1,2119, - 192,1,1,1,1,61,2920,42,132,1, - 3142,891,2875,2878,2881,2479,2466,2453,2430,1, - 1,1,684,1,1,1,1,1,1,3112, - 3130,3131,3132,1434,3076,3077,3075,3133,3078,3074, - 70,2637,2622,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,2145,192, - 2914,1,2914,193,1,1,1,1,187,2851, - 837,1299,2848,2845,2842,2851,231,2479,2466,2453, - 2430,251,1,1,1,234,1,1,1,1, - 1,1,3112,1274,1249,1224,1199,1174,1124,1149, - 1099,1072,1047,1,1,1,1,1,1,1, + 1,361,1444,2931,364,440,428,432,440,428, + 432,3023,2923,1231,779,1034,866,1281,2060,1146, + 980,1246,423,1235,2923,4976,1,2932,179,718, + 2893,4932,1,466,1,1,1,1,1,1, + 1,1,1,1,1,1,2923,363,2931,2923, + 61,440,428,432,2923,955,3023,2930,1231,779, + 1034,866,1281,2060,1146,980,1246,423,1235,2923, + 4976,1,2932,2923,60,745,4932,1,466,1, 1,1,1,1,1,1,1,1,1,1, - 1,853,193,2914,5058,1,2923,224,273,984, - 5027,1,680,1,1,1,1,1,1,1, - 1,1,1,1,1,270,2914,1944,2922,400, - 418,445,2914,255,438,3014,863,1048,1023,1060, - 924,2072,802,669,921,708,879,2914,5058,1, - 2923,684,684,2914,5027,1,680,1,1,1, - 1,1,1,1,1,1,1,1,1,684, - 186,2863,2922,252,2860,2857,2854,2863,2914,3014, - 863,1048,1023,1060,924,2072,802,669,921,708, - 879,2914,5058,1,2923,1,1,1,5027,1, - 680,1,1,1,1,1,1,1,1,1, - 1,1,1,208,5050,2914,2922,400,418,445, - 5050,2914,3154,3014,863,1048,1023,1060,924,2072, - 802,669,921,708,879,2914,5058,1,2923,272, - 2914,1009,5027,1,680,1,1,1,1,1, - 1,1,1,1,1,1,1,1,3142,891, - 2922,2806,2809,2812,2914,2914,424,3014,863,1048, - 1023,1060,924,2072,802,669,921,708,879,2914, - 5058,1,2923,684,1532,293,5027,1,680,1, - 1,1,1,1,1,1,1,1,1,1, - 1,351,5053,2914,2922,400,418,445,5053,1453, - 2914,3014,863,1048,1023,1060,924,2072,802,669, - 921,708,879,2914,5058,1,2923,2914,616,1555, - 5027,1,680,1,1,1,1,1,1,1, - 1,1,1,1,1,255,3142,891,2922,400, - 418,445,213,2914,1624,3014,863,1048,1023,1060, - 924,2072,802,669,921,708,879,2914,5058,1, - 2923,2914,203,498,5027,1,680,1,1,1, - 1,1,1,1,1,1,1,1,1,2914, - 210,3094,2922,1,2908,1837,2919,3095,820,3014, - 863,1048,1023,1060,924,2072,802,669,921,708, - 879,2914,5058,1,2923,179,1349,2884,5027,1, - 680,1,1,1,1,1,1,1,1,1, - 1,1,1,2914,2943,1509,2922,684,2918,1, - 2944,1944,267,3014,863,1048,1023,1060,924,2072, - 802,669,921,708,879,2914,5058,1,2923,2914, - 326,3241,5027,1,680,1,1,1,1,1, - 1,1,1,1,1,1,1,2914,209,555, - 2922,2914,3242,684,267,555,996,3014,863,1048, - 1023,1060,924,2072,802,669,921,708,879,2914, - 5058,1,2923,3130,3131,3132,5027,1,680,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,463,891,2922,2806,2809,2812,3092,2914, - 2914,3014,863,1048,1023,1060,924,2072,802,669, - 921,708,879,3130,3131,3132,88,3076,3077,3075, - 3133,3078,3074,28,2914,1,3142,1837,264,237, - 2914,2914,225,2890,2890,2890,2914,3081,3086,3085, - 3083,3084,3082,3087,3088,3080,3089,3090,3091,1778, - 1970,920,2914,3093,225,1,400,418,445,3092, - 2914,51,238,2923,680,225,2896,2896,2896,684, - 264,2524,2295,71,3130,3131,3132,1324,3076,3077, - 3075,3133,3078,3074,2941,2922,264,225,1,2893, - 225,128,2914,225,959,2815,2818,2821,3081,3086, - 3085,3083,3084,3082,3087,3088,3080,3089,3090,3091, - 1778,1970,920,3130,3131,3132,2914,3076,3077,3075, - 3133,3078,3074,225,2914,1096,225,1,3142,891, - 184,2806,2809,2812,400,418,445,3081,3086,3085, - 3083,3084,3082,3087,3088,3080,3089,3090,3091,1, - 2931,2548,2917,2914,853,3174,2932,598,2914,2565, - 1890,2590,2927,1616,1457,476,2924,2925,2926,1598, - 1422,60,338,2914,934,897,17,179,2902,2902, - 179,179,179,1,2902,1944,2919,231,810,1, - 1486,1667,112,2806,2809,2812,235,255,179,179, - 179,2902,179,179,179,179,179,179,18,178, - 2905,2905,178,178,178,53,2905,2916,255,62, - 2902,2902,400,418,445,2524,2295,684,2918,72, - 178,178,178,2905,178,178,178,178,178,178, - 2914,2914,2585,2479,2466,2453,2430,2914,2931,2548, - 2917,2914,2905,2905,2932,841,3174,2565,1890,2590, - 2927,1616,1457,476,2924,2925,2926,1598,1422,1, - 2931,2548,27,1397,2911,2914,2932,2599,5038,2565, - 1890,2590,2927,1616,1457,476,2924,2925,2926,1598, - 1422,2914,2931,2548,2917,2914,2404,1730,2932,2599, - 2914,2565,1890,2590,2927,1616,1457,476,2924,2925, - 2926,1598,1422,388,2239,2916,1,3142,891,2914, - 2806,2809,2812,2914,352,2914,2931,2548,400,418, - 445,27,2932,2599,5038,2565,1890,2590,2927,1616, - 1457,476,2924,2925,2926,1598,1422,2914,2914,776, - 1768,2914,355,2914,2931,2548,400,418,445,2916, - 2932,2599,1361,2565,1890,2590,2927,1616,1457,476, - 2924,2925,2926,1598,1422,1,2931,2548,2914,1486, - 723,2919,2932,2599,5038,2565,1890,2590,2927,1616, - 1457,476,2924,2925,2926,1598,1422,1,2931,2548, - 2914,1137,1,2919,2932,2599,5038,2565,1890,2590, - 2927,1616,1457,476,2924,2925,2926,1598,1422,2914, - 2931,2548,1,2918,2914,116,2932,2599,5038,2565, - 1890,2590,2927,1616,1457,476,2924,2925,2926,1598, - 1422,2914,2931,2548,2914,2918,54,116,2932,2599, - 2914,2565,1890,2590,2927,1616,1457,476,2924,2925, - 2926,1598,1422,1,2931,2548,253,116,58,3173, - 2932,2599,2914,2565,1890,2590,2927,1616,1457,476, - 2924,2925,2926,1598,1422,2914,2931,2587,3130,3131, - 3132,2914,2932,2599,2917,2565,1890,2590,2927,1616, - 1457,476,2924,2925,2926,1598,1422,2914,2931,2620, - 2914,1471,1581,2923,2932,2599,2914,2565,1890,2590, - 2927,1616,1457,476,2924,2925,2926,1598,1422,332, - 2931,2548,2914,1471,1581,2922,2932,2599,2914,2565, - 1890,2590,2927,1616,1457,476,2924,2925,2926,1598, - 1422,31,1,749,2914,3094,2806,2809,2812,2916, - 255,3095,2914,654,354,2938,2939,67,400,418, - 445,1713,158,52,2914,185,400,418,445,400, - 418,445,346,2524,2295,345,400,418,445,400, - 418,445,250,2914,353,2020,2919,347,400,418, - 445,400,418,445,2914,2914,254,2919,2919,57, - 2914,56,63,2923,3130,3131,3132,202,55,3174, - 1287,400,418,445,2914,209,1937,348,3130,3131, - 3132,400,418,445,1286,2922,349,28,2918,350, - 400,418,445,400,418,445,789,1,2914,2918, - 2918,2919,1,2914,474,2919,2921,1,286,41, - 90,907,324,2914,764,1668,998,2914,1361,2362, - 191,1920,1361,355,1471,1581,1471,1581,1,208, - 2914,2914,351,1471,1581,2914,4328,2914,2914,2404, - 1730,2914,2914,2918,2914,2914,2914,2918,657,2914, - 2914,2914,90,2914,2914,2914,2914,2914,2914,2914, - 3095,2914,2914,2914,2914,2920,2914,2914,2914,2914, - 907,2914,2914,2914,2914,2914,2914,2914,2914,2914, - 2914,2914,2914,2914,2914,2914,2914,2914,2914,2914, - 2914,3094 + 1,1,2902,2931,1,3151,2374,2923,2821,2815, + 2818,3023,2923,1231,779,1034,866,1281,2060,1146, + 980,1246,423,1235,1,597,2374,2929,2821,2815, + 2818,3101,2450,2437,2424,2257,237,210,3103,225, + 2899,2899,2899,1,3104,1,3139,3141,2932,3140, + 3085,3086,3084,3142,3087,3083,2450,2437,2424,2257, + 225,2923,1,3151,1858,264,1483,2923,3183,2931, + 3090,3095,3094,3092,3093,3091,3096,3097,3089,3098, + 3099,3100,2923,1966,2538,2377,2923,3102,2923,1701, + 440,428,432,3101,225,264,1422,349,238,1112, + 225,225,2905,2905,2905,2923,2923,718,3139,3141, + 3183,3140,3085,3086,3084,3142,3087,3083,2923,1033, + 264,2928,225,1,3151,2374,69,2821,2815,2818, + 2923,2923,3090,3095,3094,3092,3093,3091,3096,3097, + 3089,3098,3099,3100,128,1966,2538,2377,2830,2824, + 2827,2927,51,158,2923,2952,225,440,428,432, + 57,2953,225,2478,630,1480,3139,3141,2923,3140, + 3085,3086,3084,3142,3087,3083,1,1107,2923,56, + 2821,2815,2818,185,255,1483,728,440,428,432, + 3090,3095,3094,3092,3093,3091,3096,3097,3089,3098, + 3099,3100,1,2940,1675,2926,1444,2923,2923,2941, + 2357,2926,2936,2596,2588,2604,2502,2069,1467,2933, + 2934,2935,2571,919,2923,820,1579,2932,928,17, + 179,2911,2911,179,179,179,2923,2911,55,1, + 2917,1858,2928,3183,820,1579,2923,2923,2931,63, + 2928,179,179,2911,179,179,179,179,179,179, + 179,2923,2911,18,178,2914,2914,178,178,178, + 2925,2914,2927,355,2911,2923,2925,440,428,432, + 2927,337,1817,1695,718,178,178,2914,178,178, + 178,178,178,178,178,2923,2914,2465,1793,2923, + 2940,1675,2926,820,1579,1481,2941,2522,2914,2936, + 2596,2588,2604,2502,2069,1467,2933,2934,2935,2571, + 919,1,2940,1675,27,1410,961,748,2941,2614, + 5096,2936,2596,2588,2604,2502,2069,1467,2933,2934, + 2935,2571,919,2923,2940,1675,2926,2923,2923,1046, + 2941,2614,251,2936,2596,2588,2604,2502,2069,1467, + 2933,2934,2935,2571,919,1,2923,2925,1373,2821, + 2815,2818,2923,255,1,1,2923,1,2923,2940, + 1675,2923,2923,1519,27,2941,2614,5096,2936,2596, + 2588,2604,2502,2069,1467,2933,2934,2935,2571,919, + 2923,1761,2923,2928,354,2923,2940,1675,440,428, + 432,2925,2941,2614,1248,2936,2596,2588,2604,2502, + 2069,1467,2933,2934,2935,2571,919,1,2940,1675, + 252,1,3183,2927,2941,2614,5096,2936,2596,2588, + 2604,2502,2069,1467,2933,2934,2935,2571,919,1, + 2940,1675,1,1,2923,1,2941,2614,5096,2936, + 2596,2588,2604,2502,2069,1467,2933,2934,2935,2571, + 919,2923,2940,1675,2923,324,2923,792,2941,2614, + 5096,2936,2596,2588,2604,2502,2069,1467,2933,2934, + 2935,2571,919,2923,2940,1675,3139,3141,3182,3140, + 2941,2614,203,2936,2596,2588,2604,2502,2069,1467, + 2933,2934,2935,2571,919,1,2940,1675,253,2923, + 2923,2669,2941,2614,1,2936,2596,2588,2604,2502, + 2069,1467,2933,2934,2935,2571,919,2923,2940,2612, + 3139,3141,2923,3140,2941,2614,2923,2936,2596,2588, + 2604,2502,2069,1467,2933,2934,2935,2571,919,2923, + 2940,2622,250,67,1507,2923,2941,2614,1,2936, + 2596,2588,2604,2502,2069,1467,2933,2934,2935,2571, + 919,332,2940,1675,3139,3141,3104,3140,2941,2614, + 71,2936,2596,2588,2604,2502,2069,1467,2933,2934, + 2935,2571,919,31,1,468,1740,267,1,362, + 1740,2928,65,440,428,432,356,2947,2948,2923, + 440,428,432,1,2923,470,116,2812,1,2923, + 3103,116,2928,254,258,2923,2923,267,2932,202, + 2923,2927,545,440,428,432,88,116,1841,718, + 28,2923,116,718,2928,3139,3141,209,3140,2931, + 357,116,2927,358,440,428,432,440,428,432, + 359,521,859,28,440,428,432,1,2923,1, + 2928,2932,90,53,2927,52,804,1009,286,2923, + 2923,892,992,1918,2478,630,2478,630,209,777, + 231,2923,2931,2923,1336,777,2923,41,2950,235, + 2927,2923,90,191,364,5106,1248,2923,2923,2923, + 1248,2923,208,360,2923,2923,2923,2923,2923,2923, + 2923,691,2923,2923,2923,2923,2923,2923,2923,2923, + 2923,2923,2923,2923,2923,2923,2923,2923,2923,2923, + 2923,892,2923,839 }; }; public final static char termAction[] = TermAction.termAction; @@ -1014,39 +1022,41 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface Asb { public final static char asb[] = {0, - 590,1,353,466,590,80,387,624,624,624, - 399,75,399,75,75,399,75,399,355,470, - 468,457,624,468,325,417,231,588,139,75, - 382,379,382,139,382,75,468,473,470,315, - 470,3,4,525,355,80,518,201,468,204, - 166,470,175,326,209,315,230,231,315,77, - 82,80,115,473,407,468,525,143,527,355, - 468,201,201,125,468,325,571,519,519,382, - 624,624,558,624,624,519,325,263,573,263, - 466,341,314,266,231,80,77,82,115,115, - 407,554,527,235,163,554,280,341,573,573, - 573,573,573,147,573,573,573,271,492,497, - 495,503,499,506,505,508,507,509,315,410, - 355,314,51,201,112,80,573,175,166,323, - 519,573,519,339,573,385,573,573,326,558, - 263,558,468,311,421,421,209,315,215,315, - 82,112,255,82,115,117,475,117,554,407, - 314,554,163,146,143,573,573,573,573,573, - 573,573,573,573,573,573,315,315,412,341, - 341,382,382,216,573,573,573,573,573,573, - 573,573,573,573,573,573,573,573,573,573, - 573,573,573,573,265,10,522,470,527,112, - 123,571,519,315,624,315,315,325,558,573, - 314,82,257,117,112,573,382,407,383,573, - 573,163,147,125,470,522,315,315,315,163, - 495,495,492,492,499,499,497,497,497,497, - 505,503,507,506,263,508,525,315,15,410, - 123,519,571,558,573,558,558,215,112,518, - 573,514,257,515,112,163,163,123,412,15, - 480,80,573,527,315,117,48,216,519,315, - 324,257,573,515,515,123,315,112,121,207, - 382,573,47,315,216,519,558,515,117,318, - 125,163,382,573,558,315,112,163,558 + 570,1,200,296,375,570,504,635,472,504, + 504,504,484,630,484,630,630,484,630,484, + 298,379,377,366,504,377,389,268,502,136, + 536,75,630,325,322,325,75,325,630,377, + 382,379,263,379,85,86,439,298,635,432, + 175,377,178,140,379,149,211,209,261,269, + 79,136,135,263,632,3,635,36,382,492, + 377,439,97,441,298,377,175,175,61,377, + 389,433,603,536,268,519,433,433,325,504, + 504,506,504,504,433,268,50,521,50,375, + 284,262,204,136,635,632,3,36,36,492, + 468,441,183,117,468,228,284,521,521,521, + 521,521,101,521,521,521,219,406,411,409, + 417,413,420,419,422,421,423,263,495,298, + 262,606,175,33,635,521,149,140,326,263, + 266,433,521,433,282,521,328,521,521,269, + 506,50,506,377,259,330,330,79,263,120, + 263,3,33,42,3,36,38,384,38,468, + 492,262,468,117,100,97,521,521,521,521, + 521,521,521,521,521,521,521,263,263,497, + 284,284,325,325,121,521,521,521,521,521, + 521,521,521,521,521,521,521,521,521,521, + 521,521,521,521,521,203,92,436,379,441, + 33,59,263,519,433,263,504,263,263,268, + 506,521,262,3,44,38,33,521,325,492, + 326,521,521,117,101,61,379,436,263,263, + 263,117,409,409,406,406,413,413,411,411, + 411,411,419,417,421,420,50,422,439,263, + 538,495,59,433,519,506,521,506,506,120, + 33,432,521,428,44,429,33,117,117,59, + 497,538,394,635,521,441,263,38,216,121, + 433,263,267,44,521,429,429,59,263,33, + 57,181,325,521,215,263,121,433,506,429, + 38,52,61,117,325,521,506,263,33,117, + 506 }; }; public final static char asb[] = Asb.asb; @@ -1054,69 +1064,70 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface Asr { public final static byte asr[] = {0, - 76,0,2,63,64,25,4,5,6,3, - 61,45,44,0,8,27,46,22,47,58, - 28,48,29,49,50,30,23,51,52,26, - 59,31,60,53,54,24,55,56,57,1, - 7,67,6,5,4,0,64,44,69,0, - 27,46,22,47,58,28,48,29,49,50, - 30,23,51,52,26,59,31,60,53,54, - 24,55,56,57,1,7,4,5,6,9, - 0,27,46,22,47,58,28,48,29,49, - 50,30,23,51,52,26,59,31,60,53, - 54,24,55,56,57,1,7,4,5,6, - 32,3,62,0,1,7,3,62,61,0, - 3,62,44,69,2,17,18,19,13,14, - 15,12,8,10,11,20,21,16,1,7, - 9,0,22,23,24,26,14,15,12,8, - 10,11,20,21,16,2,1,7,17,18, - 19,13,68,3,0,9,3,64,61,25, - 4,5,6,0,47,58,28,48,29,49, - 50,30,23,51,52,26,59,31,60,53, - 54,24,55,56,57,1,7,22,46,27, - 4,5,6,3,61,25,64,0,3,61, - 45,1,22,0,61,16,17,18,19,13, - 7,14,15,12,8,10,11,20,21,2, - 3,45,1,0,22,23,24,14,15,12, - 8,10,11,20,21,16,2,1,7,17, - 18,19,13,0,25,3,8,1,2,6, - 5,4,63,0,44,3,61,45,2,0, - 4,5,6,44,2,69,83,14,15,12, - 8,10,11,70,71,65,66,72,73,74, - 75,77,78,79,80,81,84,85,62,64, - 86,87,88,89,90,92,91,93,94,95, - 63,68,25,61,45,3,0,3,61,62, - 25,0,76,82,62,35,37,9,41,43, - 38,33,39,40,36,34,42,32,3,25, - 17,18,19,13,14,15,12,10,11,20, - 21,16,8,2,58,59,60,54,46,51, - 49,50,48,47,52,53,55,56,57,31, - 28,26,27,30,22,23,24,29,4,5, - 6,7,1,0,33,0,54,46,51,49, - 50,48,47,52,53,55,56,57,63,25, - 31,28,26,27,30,29,22,23,24,61, - 1,8,4,5,6,44,45,3,2,0, - 69,83,14,15,12,10,11,70,71,65, - 66,72,73,74,75,77,78,79,80,81, - 84,85,64,86,87,88,89,90,91,92, - 93,94,95,61,44,45,27,22,28,29, - 30,23,26,31,24,25,3,2,1,4, - 5,6,8,0,3,61,62,64,0,64, - 86,87,88,89,90,91,92,93,94,95, - 9,8,70,71,10,11,66,65,72,73, - 74,75,77,78,12,79,80,81,68,45, - 62,84,85,63,4,5,6,61,25,3, - 0,8,2,44,45,3,27,46,47,58, - 28,48,29,49,50,30,51,52,26,59, - 31,60,53,54,55,56,57,1,7,4, - 5,6,67,22,23,24,0,35,37,9, - 41,43,38,33,39,40,36,34,42,32, - 25,3,14,15,12,8,10,11,20,21, - 16,2,1,7,17,18,19,13,0,76, - 27,46,22,47,58,28,48,29,49,50, - 30,23,51,52,26,59,31,60,53,54, - 24,55,56,57,1,7,8,4,5,6, - 25,3,32,2,0 + 76,0,27,46,22,47,59,28,48,29, + 49,50,30,25,51,52,26,60,31,61, + 53,54,23,55,56,57,1,7,5,6, + 4,32,3,63,0,1,7,3,63,58, + 0,24,3,8,1,2,4,6,5,62, + 0,3,58,63,24,0,3,63,45,69, + 2,17,18,19,10,14,15,13,8,11, + 12,20,21,16,1,7,9,0,3,58, + 33,1,22,0,2,62,64,24,5,6, + 4,3,58,33,45,0,22,25,23,26, + 14,15,13,8,11,12,20,21,16,2, + 1,7,17,18,19,10,68,3,0,58, + 16,17,18,19,10,7,14,15,13,8, + 11,12,20,21,2,33,3,1,0,9, + 3,64,58,24,5,6,4,0,47,59, + 28,48,29,49,50,30,25,51,52,26, + 60,31,61,53,54,23,55,56,57,1, + 7,22,46,27,5,6,4,3,58,24, + 64,0,22,25,14,15,13,8,11,12, + 20,21,16,1,7,17,18,19,10,2, + 23,0,45,3,58,33,2,0,58,2, + 33,3,62,0,64,45,69,0,5,6, + 4,45,2,69,83,14,15,13,8,11, + 12,70,71,65,66,72,73,74,75,77, + 78,79,80,81,84,85,63,64,86,87, + 88,89,90,92,91,93,94,95,68,24, + 62,58,33,3,0,76,82,63,36,38, + 9,42,44,39,34,40,41,37,35,43, + 32,3,24,17,18,19,10,14,15,13, + 11,12,20,21,16,8,2,59,60,61, + 54,46,51,49,50,48,47,52,53,55, + 56,57,31,28,26,27,30,22,25,23, + 29,5,6,4,7,1,0,34,0,69, + 83,14,15,13,11,12,70,71,65,66, + 72,73,74,75,77,78,79,80,81,84, + 85,64,86,87,88,89,90,91,92,93, + 94,95,58,45,33,27,22,28,29,30, + 25,26,31,23,24,3,2,1,5,6, + 4,8,0,3,58,63,64,0,3,62, + 33,10,0,64,86,87,88,89,90,91, + 92,93,94,95,9,8,70,71,11,12, + 66,65,72,73,74,75,77,78,13,79, + 80,81,68,33,63,84,85,62,5,6, + 4,58,24,3,0,8,2,45,33,3, + 27,46,47,59,28,48,29,49,50,30, + 51,52,26,60,31,61,53,54,55,56, + 57,1,7,5,6,4,67,22,25,23, + 0,54,46,51,49,50,48,47,52,53, + 55,56,57,62,24,31,28,26,27,30, + 29,22,25,23,58,1,8,5,6,4, + 45,33,3,2,0,36,38,9,42,44, + 39,34,40,41,37,35,43,32,24,3, + 14,15,13,8,11,12,20,21,16,2, + 1,7,17,18,19,10,0,8,27,46, + 22,47,59,28,48,29,49,50,30,25, + 51,52,26,60,31,61,53,54,23,55, + 56,57,1,7,67,4,6,5,0,76, + 27,46,22,47,59,28,48,29,49,50, + 30,25,51,52,26,60,31,61,53,54, + 23,55,56,57,7,2,5,6,24,3, + 32,4,1,8,0,27,46,22,47,59, + 28,48,29,49,50,30,25,51,52,26, + 60,31,61,53,54,23,55,56,57,1, + 7,5,6,4,9,0 }; }; public final static byte asr[] = Asr.asr; @@ -1124,39 +1135,41 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface Nasb { public final static char nasb[] = {0, - 154,31,21,60,150,10,99,31,31,31, - 100,76,100,76,76,100,76,100,94,36, - 109,31,31,71,12,134,32,31,106,143, - 106,143,106,106,106,143,158,31,143,134, - 36,19,19,133,125,10,61,76,140,31, - 31,36,31,102,63,134,31,39,134,76, - 125,31,125,31,125,74,133,55,117,127, - 108,143,76,65,72,113,59,61,61,106, - 31,31,145,31,31,61,12,31,8,31, - 60,1,134,31,134,31,143,136,125,106, - 125,15,162,52,57,15,31,166,8,8, - 8,8,8,56,8,8,8,31,31,31, - 31,31,31,31,31,31,31,31,134,121, - 24,31,45,143,125,31,8,31,31,31, - 61,8,61,170,167,31,167,167,102,145, - 31,145,108,31,31,31,63,134,8,134, - 125,13,60,78,106,43,31,31,15,92, - 134,15,57,56,92,8,8,8,8,8, - 8,8,8,8,8,8,134,134,123,166, - 166,82,82,68,167,8,8,8,8,8, + 163,29,41,19,16,127,29,10,71,29, + 29,29,72,79,72,79,79,72,79,72, + 66,160,123,29,29,74,94,12,120,56, + 29,100,151,100,151,100,100,100,151,144, + 29,151,120,160,50,50,119,140,10,17, + 79,148,29,29,160,29,120,29,29,96, + 48,81,29,120,79,140,29,140,29,140, + 77,119,52,106,109,122,151,79,59,75, + 94,17,29,94,102,15,17,17,100,29, + 29,153,29,29,17,12,29,8,29,16, + 1,120,29,120,29,151,30,140,100,140, + 142,172,45,54,142,29,113,8,8,8, + 8,8,53,8,8,8,29,29,29,29, + 29,29,29,29,29,29,29,120,136,22, + 29,176,151,140,29,8,29,29,29,120, + 29,17,8,17,167,114,29,114,114,96, + 153,29,153,122,29,29,29,48,120,8, + 120,140,13,16,131,100,84,29,29,142, + 64,120,142,54,53,64,8,8,8,8, + 8,8,8,8,8,8,8,120,120,138, + 113,113,62,62,34,114,8,8,8,8, 8,8,8,8,8,8,8,8,8,8, - 8,8,167,8,19,19,120,36,117,13, - 125,172,61,134,31,134,134,113,145,8, - 134,136,108,43,13,8,106,92,31,8, - 8,57,56,8,36,131,134,134,134,57, - 31,31,31,31,31,31,31,31,31,31, - 31,31,31,31,31,31,133,134,34,86, - 51,61,172,145,167,145,145,8,13,61, - 8,31,140,76,13,57,57,125,88,34, - 31,31,8,117,134,43,17,172,61,134, - 31,108,8,76,143,51,134,13,50,31, - 106,8,41,134,172,61,145,143,43,84, - 65,57,106,8,145,134,13,57,145 + 8,8,8,114,8,50,50,135,160,106, + 13,140,120,169,17,120,29,120,120,102, + 153,8,120,30,122,84,13,8,100,64, + 29,8,8,54,53,8,160,117,120,120, + 120,54,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,119,120, + 158,88,44,17,169,153,114,153,153,8, + 13,17,8,29,148,79,13,54,54,140, + 90,158,29,29,8,106,120,84,37,169, + 17,120,29,122,8,79,151,44,120,13, + 43,29,100,8,86,120,169,17,153,151, + 84,39,59,54,100,8,153,120,13,54, + 153 }; }; public final static char nasb[] = Nasb.nasb; @@ -1164,24 +1177,24 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface Nasr { public final static char nasr[] = {0, - 88,87,86,85,79,84,83,5,0,110, - 0,1,50,0,80,0,126,0,52,0, - 34,1,106,88,87,86,85,79,84,83, - 0,134,0,1,29,27,58,0,114,0, - 128,0,73,0,1,29,53,33,0,95, - 72,5,1,0,1,5,48,0,32,1, - 23,0,112,0,5,72,0,1,116,0, - 1,36,47,34,45,27,0,1,60,92, - 0,96,0,124,0,34,45,64,63,27, - 0,30,0,79,75,76,77,78,67,54, - 0,1,29,37,99,28,0,27,45,34, - 1,0,37,28,74,50,1,29,0,24, - 34,45,63,64,1,0,29,1,130,0, - 63,64,1,24,0,102,1,60,0,45, - 34,1,10,0,28,37,1,38,0,29, - 1,108,0,129,29,1,0,27,34,36, - 0,121,1,29,0,60,1,32,0,29, - 53,1,66,0 + 89,88,87,86,80,85,84,5,0,112, + 0,1,50,0,32,1,24,0,34,1, + 108,89,88,87,86,80,85,84,0,104, + 1,61,0,1,119,0,129,0,127,0, + 137,0,96,73,5,1,0,114,0,52, + 0,1,5,48,0,136,20,0,5,73, + 0,98,0,30,0,80,76,77,78,79, + 68,54,0,1,36,47,34,45,27,0, + 20,116,0,74,0,131,0,34,45,65, + 64,27,0,97,0,1,29,37,101,28, + 0,37,28,75,50,1,29,0,29,1, + 133,0,61,1,32,0,64,65,1,20, + 0,27,45,34,1,0,29,1,110,0, + 1,61,93,0,20,34,45,64,65,1, + 0,81,0,27,34,36,0,45,34,1, + 10,0,28,37,1,38,0,1,29,27, + 59,0,132,29,1,0,29,53,1,67, + 0,124,1,29,0,1,29,53,33,0 }; }; public final static char nasr[] = Nasr.nasr; @@ -1189,13 +1202,13 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface TerminalIndex { public final static char terminalIndex[] = {0, - 85,2,87,97,98,99,86,9,3,10, - 11,8,84,6,7,68,81,82,83,12, - 13,48,64,76,92,69,44,55,60,63, - 72,100,77,45,46,49,50,51,57,58, - 59,65,71,1,90,47,52,56,61,62, - 66,67,74,75,78,79,80,54,70,73, - 42,91,29,31,16,17,30,89,4,14, + 85,2,87,99,97,98,86,9,3,84, + 10,11,8,6,7,68,81,82,83,12, + 13,48,76,92,64,69,44,55,60,63, + 72,100,90,77,45,46,49,50,51,57, + 58,59,65,71,1,47,52,56,61,62, + 66,67,74,75,78,79,80,42,54,70, + 73,29,91,31,16,17,30,89,4,14, 15,18,19,20,21,101,22,23,24,25, 26,53,5,27,28,32,33,34,35,36, 37,38,39,40,41,88,93,94,95,96 @@ -1207,19 +1220,19 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface NonterminalIndex { public final static char nonterminalIndex[] = {0, 0,0,0,0,107,111,112,113,114,190, - 0,0,0,115,116,117,118,119,120,121, - 122,123,105,103,0,124,191,130,134,142, + 0,0,0,115,116,117,118,119,120,103, + 121,122,123,105,0,124,191,130,134,142, 0,106,129,165,0,168,125,128,0,0, 0,0,0,162,164,0,166,102,0,104, - 152,167,133,141,0,0,0,163,127,156, - 176,179,180,181,0,0,144,151,0,169, - 175,0,0,132,145,146,147,148,153,174, - 178,109,136,137,138,139,140,143,149,150, - 0,155,159,161,182,108,110,126,131,135, - 0,154,158,0,160,170,173,187,0,189, - 0,192,0,194,0,0,0,0,157,0, - 171,172,177,0,183,184,0,185,186,188, - 0,0,0,193,0,0 + 152,167,133,141,0,0,0,0,163,127, + 156,176,179,180,181,0,0,144,151,0, + 169,175,0,0,132,145,146,147,148,153, + 174,178,109,136,137,138,139,140,143,149, + 150,0,155,159,161,182,195,108,110,126, + 131,135,0,154,158,0,160,170,173,187, + 0,189,0,192,0,194,0,0,0,0, + 0,157,0,171,172,177,0,183,184,0, + 185,186,188,0,0,193,0,0,0 }; }; public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; @@ -1253,12 +1266,12 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface ScopeLhs { public final static char scopeLhs[] = { - 77,75,5,77,52,52,75,68,41,65, - 52,36,11,75,111,65,52,92,33,6, - 5,5,22,103,128,127,63,81,58,52, - 34,51,76,76,76,3,95,92,7,58, - 75,77,42,77,75,5,103,58,92,87, - 86,85,84,83,103,36,58,47,36 + 78,76,5,78,52,52,76,69,41,66, + 52,36,11,76,113,66,52,93,33,6, + 5,5,23,105,131,130,64,82,59,52, + 34,51,77,77,77,3,96,93,7,59, + 76,78,42,78,76,5,105,59,93,88, + 87,86,85,84,105,36,59,47,36 }; }; public final static char scopeLhs[] = ScopeLhs.scopeLhs; @@ -1266,12 +1279,12 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface ScopeLa { public final static byte scopeLa[] = { - 62,62,62,62,68,68,62,62,82,45, - 68,45,45,9,45,45,68,25,62,45, - 45,68,63,4,68,68,45,2,8,68, - 45,1,1,1,1,45,64,1,45,8, - 9,9,33,1,1,45,1,8,25,7, - 58,59,59,54,1,2,8,2,2 + 63,63,63,63,68,68,63,63,82,33, + 68,33,33,9,33,33,68,24,63,33, + 33,68,62,5,68,68,33,2,8,68, + 33,1,1,1,1,33,64,1,33,8, + 9,9,34,1,1,33,1,8,24,7, + 59,60,60,54,1,2,8,2,2 }; }; public final static byte scopeLa[] = ScopeLa.scopeLa; @@ -1292,35 +1305,35 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface ScopeRhs { public final static char scopeRhs[] = {0, - 193,127,0,191,0,127,0,159,191,0, - 159,0,232,2,212,0,103,0,231,2, - 2,4,0,103,103,0,159,44,0,102, - 0,225,101,0,31,151,0,173,197,101, - 9,172,0,104,0,0,170,101,2,163, - 0,170,101,2,0,181,2,0,158,101, - 0,179,0,149,158,0,9,0,174,0, - 149,0,9,0,126,26,207,101,44,0, - 126,207,101,26,44,0,126,26,44,0, - 126,207,101,44,0,126,44,0,134,0, - 2,0,171,103,0,2,103,0,170,101, + 194,127,0,191,0,127,0,159,191,0, + 159,0,235,2,214,0,103,0,234,2, + 2,5,0,103,103,0,160,45,0,102, + 0,228,101,0,31,151,0,174,199,101, + 9,173,0,104,0,0,171,101,2,164, + 0,171,101,2,0,182,2,0,159,101, + 0,179,0,149,159,0,9,0,174,0, + 149,0,9,0,126,26,209,101,45,0, + 126,209,101,26,45,0,126,26,45,0, + 126,209,101,45,0,126,45,0,134,0, + 2,0,171,103,0,2,103,0,171,101, 2,134,0,2,0,169,103,0,151,2, - 0,162,0,173,204,101,9,128,220,58, - 0,104,0,220,58,0,130,3,0,0, - 0,104,0,173,204,101,9,220,58,0, - 3,0,0,0,104,0,160,0,105,0, - 219,101,160,0,101,160,0,157,105,0, - 191,58,0,130,0,191,60,0,191,59, - 0,201,101,9,218,128,217,179,0,218, - 128,217,179,0,3,0,0,104,0,217, - 179,0,130,0,3,0,0,104,0,201, - 101,9,217,179,0,188,0,148,0,147, - 0,146,0,145,0,144,0,138,38,0, - 77,2,106,103,105,0,138,124,132,2, - 41,0,53,128,0,199,101,9,0,132, - 85,121,0,29,123,0,182,2,0,103, - 112,0,182,2,16,0,173,197,101,9, - 124,182,2,0,103,3,0,110,0,104, - 0,216,2,105,0,132,44,105,0,132, + 0,162,0,174,206,101,9,128,223,59, + 0,104,0,223,59,0,130,3,0,0, + 0,104,0,174,206,101,9,223,59,0, + 3,0,0,0,104,0,161,0,105,0, + 222,101,161,0,101,161,0,157,105,0, + 192,59,0,130,0,192,61,0,192,60, + 0,203,101,9,221,128,220,180,0,221, + 128,220,180,0,3,0,0,104,0,220, + 180,0,130,0,3,0,0,104,0,203, + 101,9,220,180,0,189,0,148,0,147, + 0,146,0,145,0,144,0,138,39,0, + 77,2,106,103,105,0,138,120,132,2, + 42,0,53,128,0,201,101,9,0,132, + 85,122,0,29,123,0,183,2,0,103, + 112,0,183,2,16,0,174,199,101,9, + 120,183,2,0,103,3,0,110,0,104, + 0,219,2,105,0,132,45,105,0,132, 2,0 }; }; @@ -1329,23 +1342,23 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface ScopeState { public final static char scopeState[] = {0, - 484,0,389,0,2632,880,1988,0,1616,1457, - 476,2668,841,388,1434,853,712,789,2479,2466, - 2453,2430,2404,1730,2524,2295,1581,1471,2653,2637, - 2622,2599,2590,598,2565,1890,1598,1422,1555,1532, - 1509,616,1486,998,1397,1372,1349,1324,1299,1274, - 1249,1224,1199,1174,1149,1124,1099,1072,1047,973, - 764,948,897,356,1023,684,810,739,657,573, - 545,0,474,723,0,614,2312,2286,2242,2213, - 2192,2166,2145,1886,2119,2098,1817,2072,1742,1678, - 0,1095,1070,644,401,2320,1420,1944,1837,2226, - 1762,0,2416,416,1420,2047,2019,1940,1837,1596, - 1762,1713,1992,839,891,1920,1653,0,1582,456, - 356,416,0,2753,2744,2687,1920,2320,2666,1940, - 1420,1653,1596,2735,456,2715,356,2047,1853,2707, - 1713,2019,724,1992,1681,2211,2416,2164,2117,517, - 839,1582,2368,1778,2346,1970,920,1821,409,596, - 1615,416,2247,448,2551,2533,2498,2492,2075,0 + 1306,0,488,0,2642,1845,429,0,2502,2069, + 1467,2682,2522,397,1444,521,470,545,2450,2437, + 2424,2257,961,748,2478,630,1579,820,2661,2653, + 2629,2614,2604,2357,2596,2588,2571,919,1555,1531, + 1507,1793,1483,1009,1410,1385,1361,1336,1311,1286, + 1261,1236,1211,1186,1161,1136,1111,1083,1058,981, + 792,649,928,365,1034,718,839,767,691,605, + 577,0,531,703,0,2699,2306,2277,2255,2207, + 2181,2161,2132,1709,2112,2086,1644,2060,1596,1565, + 0,1070,953,812,716,1599,1430,1740,1858,2411, + 1835,0,1984,426,1430,2032,2004,1936,1858,1678, + 1835,1817,1990,869,2374,1918,1743,0,821,487, + 365,426,0,2766,2748,2706,1918,1599,2702,1936, + 1430,1743,1678,2726,487,2403,365,2032,2698,2274, + 1817,2004,2556,1990,2680,2105,1984,873,677,669, + 869,821,2340,1966,2325,2538,2377,2311,1813,629, + 2052,426,2241,2166,2530,2488,2460,2131,1647,0 }; }; public final static char scopeState[] = ScopeState.scopeState; @@ -1353,39 +1366,41 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public interface InSymb { public final static char inSymb[] = {0, - 0,215,101,129,229,206,183,4,5,6, - 184,179,185,60,59,186,58,187,188,101, - 2,1,134,101,9,2,2,2,217,127, - 191,127,191,220,191,127,158,149,127,151, - 101,134,145,2,222,206,200,151,127,190, - 136,101,147,101,2,233,1,234,13,128, - 9,128,9,149,8,158,2,44,101,101, - 61,127,151,64,158,199,42,34,36,40, - 39,33,38,43,41,137,9,37,35,128, - 129,101,231,212,2,218,127,101,9,101, - 8,101,101,26,126,101,106,2,16,21, - 20,11,10,8,12,15,14,105,108,114, - 109,116,115,118,117,120,119,121,170,129, - 101,171,230,127,9,172,8,147,136,3, - 132,101,128,2,2,138,2,2,101,63, - 159,63,101,198,1,7,61,124,2,1, - 9,201,160,202,101,204,128,205,101,180, - 221,101,126,207,180,95,94,93,91,92, - 90,89,88,87,86,64,182,132,160,2, - 2,83,69,2,44,71,70,8,65,66, - 11,10,78,77,75,74,73,72,79,12, - 81,80,85,84,163,164,2,101,61,101, - 9,153,166,132,33,132,132,199,63,61, - 232,101,101,204,173,64,61,180,61,207, - 26,126,8,124,101,2,182,182,216,132, - 109,109,108,108,115,115,114,114,114,114, - 117,116,119,118,132,120,2,181,101,158, - 101,166,123,124,2,124,124,61,201,219, - 63,151,127,193,173,126,126,9,158,101, - 124,124,63,101,170,197,101,123,166,132, - 138,61,63,193,127,101,170,173,61,225, - 69,44,226,166,123,124,82,127,197,150, - 64,159,69,44,124,166,173,159,124 + 0,218,4,101,129,232,237,208,184,5, + 6,4,185,180,186,61,60,187,59,188, + 189,101,2,1,134,101,2,9,2,2, + 2,220,127,192,127,192,223,192,127,159, + 149,127,151,101,134,145,2,225,208,202, + 151,127,191,136,101,147,238,10,197,101, + 2,236,1,10,128,9,128,9,149,8, + 159,2,45,101,101,58,127,151,64,159, + 62,120,2,58,201,43,35,37,41,40, + 34,39,44,42,137,9,38,36,128,129, + 101,234,214,2,221,127,101,9,101,8, + 101,101,26,126,101,106,2,16,21,20, + 12,11,8,13,15,14,105,108,114,109, + 116,115,118,117,121,119,122,171,129,101, + 172,233,127,9,173,8,147,136,8,1, + 3,132,101,128,2,2,138,2,2,101, + 62,160,62,101,200,1,7,58,120,2, + 1,9,203,161,204,101,206,128,207,101, + 181,224,101,126,209,181,95,94,93,91, + 92,90,89,88,87,86,64,183,132,161, + 2,2,83,69,2,45,71,70,8,65, + 66,12,11,78,77,75,74,73,72,79, + 13,81,80,85,84,164,165,2,101,58, + 101,9,1,153,167,132,34,132,132,201, + 62,58,235,101,101,206,174,64,58,181, + 58,209,26,126,8,120,101,2,183,183, + 219,132,109,109,108,108,115,115,114,114, + 114,114,117,116,119,118,132,121,2,182, + 101,159,101,167,124,120,2,120,120,58, + 203,222,62,151,127,194,174,126,126,9, + 159,101,120,120,62,101,171,199,101,124, + 167,132,138,58,62,194,127,101,171,174, + 58,228,69,45,229,167,124,120,82,127, + 199,150,64,160,69,45,120,167,174,160, + 120 }; }; public final static char inSymb[] = InSymb.inSymb; @@ -1593,7 +1608,8 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym "q", "word", "extended_decl_modifier_seq", - "extended_decl_modifier" + "extended_decl_modifier", + "extended_asm_param" }; }; public final static String name[] = Name.name; @@ -1611,20 +1627,20 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym public final int getMaxNameLength() { return MAX_NAME_LENGTH; } public final static int - NUM_STATES = 329, + NUM_STATES = 341, NT_OFFSET = 100, - LA_STATE_OFFSET = 3269, + LA_STATE_OFFSET = 3287, MAX_LA = 2147483647, - NUM_RULES = 355, - NUM_NONTERMINALS = 136, - NUM_SYMBOLS = 236, + NUM_RULES = 364, + NUM_NONTERMINALS = 139, + NUM_SYMBOLS = 239, SEGMENT_SIZE = 8192, - START_STATE = 2392, + START_STATE = 2275, IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 76, EOLT_SYMBOL = 76, - ACCEPT_ACTION = 2805, - ERROR_ACTION = 2914; + ACCEPT_ACTION = 2811, + ERROR_ACTION = 2923; public final static boolean BACKTRACK = true; diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java index fa23f1ba53e..c168c6827a9 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gcc/GCCParsersym.java @@ -16,61 +16,61 @@ package org.eclipse.cdt.internal.core.dom.lrparser.gcc; public interface GCCParsersym { public final static int TK_auto = 27, - TK_break = 34, - TK_case = 35, + TK_break = 35, + TK_case = 36, TK_char = 46, TK_const = 22, - TK_continue = 36, - TK_default = 37, - TK_do = 38, + TK_continue = 37, + TK_default = 38, + TK_do = 39, TK_double = 47, TK_else = 82, - TK_enum = 58, + TK_enum = 59, TK_extern = 28, TK_float = 48, - TK_for = 39, - TK_goto = 40, - TK_if = 41, + TK_for = 40, + TK_goto = 41, + TK_if = 42, TK_inline = 29, TK_int = 49, TK_long = 50, TK_register = 30, - TK_restrict = 23, - TK_return = 42, + TK_restrict = 25, + TK_return = 43, TK_short = 51, TK_signed = 52, TK_sizeof = 16, TK_static = 26, - TK_struct = 59, - TK_switch = 43, + TK_struct = 60, + TK_switch = 44, TK_typedef = 31, - TK_union = 60, + TK_union = 61, TK_unsigned = 53, TK_void = 54, - TK_volatile = 24, - TK_while = 33, + TK_volatile = 23, + TK_while = 34, TK__Bool = 55, TK__Complex = 56, TK__Imaginary = 57, TK_integer = 17, TK_floating = 18, TK_charconst = 19, - TK_stringlit = 13, + TK_stringlit = 10, TK_identifier = 1, TK_Completion = 7, TK_EndOfCompletion = 3, TK_Invalid = 96, - TK_LeftBracket = 44, + TK_LeftBracket = 45, TK_LeftParen = 2, TK_LeftBrace = 9, TK_Dot = 69, TK_Arrow = 83, TK_PlusPlus = 14, TK_MinusMinus = 15, - TK_And = 12, + TK_And = 13, TK_Star = 8, - TK_Plus = 10, - TK_Minus = 11, + TK_Plus = 11, + TK_Minus = 12, TK_Tilde = 20, TK_Bang = 21, TK_Slash = 70, @@ -88,7 +88,7 @@ public interface GCCParsersym { TK_AndAnd = 81, TK_OrOr = 84, TK_Question = 85, - TK_Colon = 63, + TK_Colon = 62, TK_DotDotDot = 67, TK_Assign = 64, TK_StarAssign = 86, @@ -101,18 +101,18 @@ public interface GCCParsersym { TK_AndAssign = 93, TK_CaretAssign = 94, TK_OrAssign = 95, - TK_Comma = 61, + TK_Comma = 58, TK_RightBracket = 68, - TK_RightParen = 45, - TK_RightBrace = 62, - TK_SemiColon = 25, + TK_RightParen = 33, + TK_RightBrace = 63, + TK_SemiColon = 24, TK_typeof = 97, TK___alignof__ = 98, TK_MAX = 99, TK_MIN = 100, - TK___attribute__ = 4, - TK___declspec = 5, - TK_asm = 6, + TK___attribute__ = 5, + TK___declspec = 6, + TK_asm = 4, TK_ERROR_TOKEN = 32, TK_EOF_TOKEN = 76; @@ -121,16 +121,16 @@ public interface GCCParsersym { "identifier", "LeftParen", "EndOfCompletion", + "asm", "__attribute__", "__declspec", - "asm", "Completion", "Star", "LeftBrace", + "stringlit", "Plus", "Minus", "And", - "stringlit", "PlusPlus", "MinusMinus", "sizeof", @@ -140,9 +140,9 @@ public interface GCCParsersym { "Tilde", "Bang", "const", - "restrict", "volatile", "SemiColon", + "restrict", "static", "auto", "extern", @@ -150,6 +150,7 @@ public interface GCCParsersym { "register", "typedef", "ERROR_TOKEN", + "RightParen", "while", "break", "case", @@ -162,7 +163,6 @@ public interface GCCParsersym { "return", "switch", "LeftBracket", - "RightParen", "char", "double", "float", @@ -175,12 +175,12 @@ public interface GCCParsersym { "_Bool", "_Complex", "_Imaginary", + "Comma", "enum", "struct", "union", - "Comma", - "RightBrace", "Colon", + "RightBrace", "Assign", "RightShift", "LeftShift", diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java index 854eba5efd2..7927c636f9e 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -28,6 +29,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.*; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory; import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction; +import org.eclipse.cdt.core.dom.lrparser.action.gcc.GCCBuildASTParserAction; + public class GPPParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser { private static ParseTable prs = new GPPParserprs(); @@ -166,13 +169,21 @@ public class GPPParser extends PrsStream implements RuleAction , IParserActionTo private CPPBuildASTParserAction action; +private ScopedStack astStack = new ScopedStack(); public GPPParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu); + action = new CPPBuildASTParserAction ( CPPNodeFactory.getDefault() , this, tu, astStack); action.setParserOptions(options); + + + + gccAction = new GCCBuildASTParserAction( CPPNodeFactory.getDefault() , this, tu, astStack); + gccAction.setParserOptions(options); + + } @@ -200,13 +211,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -238,6 +248,8 @@ public GPPParser(String[] mapFrom) { // constructor +private GCCBuildASTParserAction gccAction; + public void ruleAction(int ruleNumber) { switch (ruleNumber) @@ -1110,127 +1122,127 @@ public GPPParser(String[] mapFrom) { // constructor // // Rule 234: no_type_declaration_specifier ::= friend // - case 234: { action. consumeDeclSpecToken(); break; + case 234: { action. consumeToken(); break; } // // Rule 235: no_type_declaration_specifier ::= typedef // - case 235: { action. consumeDeclSpecToken(); break; + case 235: { action. consumeToken(); break; } // // Rule 255: storage_class_specifier ::= auto // - case 255: { action. consumeDeclSpecToken(); break; + case 255: { action. consumeToken(); break; } // // Rule 256: storage_class_specifier ::= register // - case 256: { action. consumeDeclSpecToken(); break; + case 256: { action. consumeToken(); break; } // // Rule 257: storage_class_specifier ::= static // - case 257: { action. consumeDeclSpecToken(); break; + case 257: { action. consumeToken(); break; } // // Rule 258: storage_class_specifier ::= extern // - case 258: { action. consumeDeclSpecToken(); break; + case 258: { action. consumeToken(); break; } // // Rule 259: storage_class_specifier ::= mutable // - case 259: { action. consumeDeclSpecToken(); break; + case 259: { action. consumeToken(); break; } // // Rule 260: function_specifier ::= inline // - case 260: { action. consumeDeclSpecToken(); break; + case 260: { action. consumeToken(); break; } // // Rule 261: function_specifier ::= virtual // - case 261: { action. consumeDeclSpecToken(); break; + case 261: { action. consumeToken(); break; } // // Rule 262: function_specifier ::= explicit // - case 262: { action. consumeDeclSpecToken(); break; + case 262: { action. consumeToken(); break; } // // Rule 263: simple_type_specifier ::= char // - case 263: { action. consumeDeclSpecToken(); break; + case 263: { action. consumeToken(); break; } // // Rule 264: simple_type_specifier ::= wchar_t // - case 264: { action. consumeDeclSpecToken(); break; + case 264: { action. consumeToken(); break; } // // Rule 265: simple_type_specifier ::= bool // - case 265: { action. consumeDeclSpecToken(); break; + case 265: { action. consumeToken(); break; } // // Rule 266: simple_type_specifier ::= short // - case 266: { action. consumeDeclSpecToken(); break; + case 266: { action. consumeToken(); break; } // // Rule 267: simple_type_specifier ::= int // - case 267: { action. consumeDeclSpecToken(); break; + case 267: { action. consumeToken(); break; } // // Rule 268: simple_type_specifier ::= long // - case 268: { action. consumeDeclSpecToken(); break; + case 268: { action. consumeToken(); break; } // // Rule 269: simple_type_specifier ::= signed // - case 269: { action. consumeDeclSpecToken(); break; + case 269: { action. consumeToken(); break; } // // Rule 270: simple_type_specifier ::= unsigned // - case 270: { action. consumeDeclSpecToken(); break; + case 270: { action. consumeToken(); break; } // // Rule 271: simple_type_specifier ::= float // - case 271: { action. consumeDeclSpecToken(); break; + case 271: { action. consumeToken(); break; } // // Rule 272: simple_type_specifier ::= double // - case 272: { action. consumeDeclSpecToken(); break; + case 272: { action. consumeToken(); break; } // // Rule 273: simple_type_specifier ::= void // - case 273: { action. consumeDeclSpecToken(); break; + case 273: { action. consumeToken(); break; } // @@ -1342,640 +1354,640 @@ public GPPParser(String[] mapFrom) { // constructor } // - // Rule 304: asm_definition ::= asm ( stringlit ) ; + // Rule 304: linkage_specification ::= extern stringlit { declaration_seq_opt } // - case 304: { action. consumeDeclarationASM(); break; + case 304: { action. consumeLinkageSpecification(); break; } // - // Rule 305: linkage_specification ::= extern stringlit { declaration_seq_opt } + // Rule 305: linkage_specification ::= extern stringlit declaration // case 305: { action. consumeLinkageSpecification(); break; } // - // Rule 306: linkage_specification ::= extern stringlit declaration + // Rule 310: init_declarator_complete ::= init_declarator // - case 306: { action. consumeLinkageSpecification(); break; + case 310: { action. consumeInitDeclaratorComplete(); break; } // - // Rule 311: init_declarator_complete ::= init_declarator + // Rule 312: init_declarator ::= complete_declarator initializer // - case 311: { action. consumeInitDeclaratorComplete(); break; + case 312: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 313: init_declarator ::= complete_declarator initializer + // Rule 315: declarator ::= ptr_operator_seq direct_declarator // - case 313: { action. consumeDeclaratorWithInitializer(true); break; + case 315: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 316: declarator ::= ptr_operator_seq direct_declarator + // Rule 317: function_declarator ::= ptr_operator_seq direct_declarator // - case 316: { action. consumeDeclaratorWithPointer(true); break; + case 317: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 318: function_declarator ::= ptr_operator_seq direct_declarator + // Rule 321: basic_direct_declarator ::= declarator_id_name // - case 318: { action. consumeDeclaratorWithPointer(true); break; + case 321: { action. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 322: basic_direct_declarator ::= declarator_id_name + // Rule 322: basic_direct_declarator ::= ( declarator ) // - case 322: { action. consumeDirectDeclaratorIdentifier(); break; + case 322: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 323: basic_direct_declarator ::= ( declarator ) + // Rule 323: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 323: { action. consumeDirectDeclaratorBracketed(); break; + case 323: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 324: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 324: array_direct_declarator ::= array_direct_declarator array_modifier // - case 324: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; + case 324: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 325: array_direct_declarator ::= array_direct_declarator array_modifier + // Rule 325: array_direct_declarator ::= basic_direct_declarator array_modifier // case 325: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 326: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 326: array_modifier ::= [ constant_expression ] // - case 326: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 326: { action. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 327: array_modifier ::= [ constant_expression ] + // Rule 327: array_modifier ::= [ ] // - case 327: { action. consumeDirectDeclaratorArrayModifier(true); break; + case 327: { action. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 328: array_modifier ::= [ ] + // Rule 328: ptr_operator ::= pointer_hook * cv_qualifier_seq_opt // - case 328: { action. consumeDirectDeclaratorArrayModifier(false); break; + case 328: { action. consumePointer(); break; } // - // Rule 329: ptr_operator ::= pointer_hook * cv_qualifier_seq_opt + // Rule 329: ptr_operator ::= pointer_hook & // - case 329: { action. consumePointer(); break; + case 329: { action. consumeReferenceOperator(); break; } // - // Rule 330: ptr_operator ::= pointer_hook & + // Rule 330: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * cv_qualifier_seq_opt // - case 330: { action. consumeReferenceOperator(); break; + case 330: { action. consumePointerToMember(); break; } // - // Rule 331: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * cv_qualifier_seq_opt + // Rule 337: cv_qualifier ::= const // - case 331: { action. consumePointerToMember(); break; + case 337: { action. consumeToken(); break; } // - // Rule 338: cv_qualifier ::= const + // Rule 338: cv_qualifier ::= volatile // - case 338: { action. consumeDeclSpecToken(); break; + case 338: { action. consumeToken(); break; } // - // Rule 339: cv_qualifier ::= volatile + // Rule 340: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // - case 339: { action. consumeDeclSpecToken(); break; + case 340: { action. consumeQualifiedId(false); break; } // - // Rule 341: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 341: type_id ::= type_specifier_seq // - case 341: { action. consumeQualifiedId(false); break; + case 341: { action. consumeTypeId(false); break; } // - // Rule 342: type_id ::= type_specifier_seq + // Rule 342: type_id ::= type_specifier_seq abstract_declarator // - case 342: { action. consumeTypeId(false); break; + case 342: { action. consumeTypeId(true); break; } // - // Rule 343: type_id ::= type_specifier_seq abstract_declarator + // Rule 345: abstract_declarator ::= ptr_operator_seq // - case 343: { action. consumeTypeId(true); break; + case 345: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 346: abstract_declarator ::= ptr_operator_seq + // Rule 346: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator // - case 346: { action. consumeDeclaratorWithPointer(false); break; + case 346: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 347: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator + // Rule 350: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 347: { action. consumeDeclaratorWithPointer(true); break; + case 350: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 351: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 351: basic_direct_abstract_declarator ::= ( ) // - case 351: { action. consumeDirectDeclaratorBracketed(); break; + case 351: { action. consumeAbstractDeclaratorEmpty(); break; } // - // Rule 352: basic_direct_abstract_declarator ::= ( ) + // Rule 352: array_direct_abstract_declarator ::= array_modifier // - case 352: { action. consumeAbstractDeclaratorEmpty(); break; + case 352: { action. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 353: array_direct_abstract_declarator ::= array_modifier + // Rule 353: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // - case 353: { action. consumeDirectDeclaratorArrayDeclarator(false); break; + case 353: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 354: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // Rule 354: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // case 354: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 355: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 355: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 355: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 355: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 356: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 356: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt // - case 356: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; + case 356: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; } // - // Rule 357: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // Rule 357: parameter_declaration_clause ::= parameter_declaration_list_opt ... // - case 357: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; + case 357: { action. consumePlaceHolder(); break; } // - // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt ... + // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt // - case 358: { action. consumePlaceHolder(); break; + case 358: { action. consumeEmpty(); break; } // - // Rule 359: parameter_declaration_clause ::= parameter_declaration_list_opt + // Rule 359: parameter_declaration_clause ::= parameter_declaration_list , ... // - case 359: { action. consumeEmpty(); break; + case 359: { action. consumePlaceHolder(); break; } // - // Rule 360: parameter_declaration_clause ::= parameter_declaration_list , ... + // Rule 365: abstract_declarator_opt ::= $Empty // - case 360: { action. consumePlaceHolder(); break; + case 365: { action. consumeEmpty(); break; } // - // Rule 366: abstract_declarator_opt ::= $Empty + // Rule 366: parameter_declaration ::= declaration_specifiers parameter_init_declarator // - case 366: { action. consumeEmpty(); break; + case 366: { action. consumeParameterDeclaration(); break; } // - // Rule 367: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // Rule 367: parameter_declaration ::= declaration_specifiers // - case 367: { action. consumeParameterDeclaration(); break; + case 367: { action. consumeParameterDeclarationWithoutDeclarator(); break; } // - // Rule 368: parameter_declaration ::= declaration_specifiers + // Rule 369: parameter_init_declarator ::= declarator = parameter_initializer // - case 368: { action. consumeParameterDeclarationWithoutDeclarator(); break; + case 369: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 370: parameter_init_declarator ::= declarator = parameter_initializer + // Rule 371: parameter_init_declarator ::= abstract_declarator = parameter_initializer // - case 370: { action. consumeDeclaratorWithInitializer(true); break; + case 371: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 372: parameter_init_declarator ::= abstract_declarator = parameter_initializer + // Rule 372: parameter_init_declarator ::= = parameter_initializer // - case 372: { action. consumeDeclaratorWithInitializer(true); break; + case 372: { action. consumeDeclaratorWithInitializer(false); break; } // - // Rule 373: parameter_init_declarator ::= = parameter_initializer + // Rule 373: parameter_initializer ::= assignment_expression // - case 373: { action. consumeDeclaratorWithInitializer(false); break; + case 373: { action. consumeInitializer(); break; } // - // Rule 374: parameter_initializer ::= assignment_expression + // Rule 374: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body // - case 374: { action. consumeInitializer(); break; + case 374: { action. consumeFunctionDefinition(false); break; } // - // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body + // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq // - case 375: { action. consumeFunctionDefinition(false); break; + case 375: { action. consumeFunctionDefinition(true); break; } // - // Rule 376: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq + // Rule 378: initializer ::= ( expression_list ) // - case 376: { action. consumeFunctionDefinition(true); break; + case 378: { action. consumeInitializerConstructor(); break; } // - // Rule 379: initializer ::= ( expression_list ) + // Rule 379: initializer_clause ::= assignment_expression // - case 379: { action. consumeInitializerConstructor(); break; + case 379: { action. consumeInitializer(); break; } // - // Rule 380: initializer_clause ::= assignment_expression + // Rule 380: initializer_clause ::= start_initializer_list { initializer_list , } end_initializer_list // - case 380: { action. consumeInitializer(); break; + case 380: { action. consumeInitializerList(); break; } // - // Rule 381: initializer_clause ::= start_initializer_list { initializer_list , } end_initializer_list + // Rule 381: initializer_clause ::= start_initializer_list { initializer_list } end_initializer_list // case 381: { action. consumeInitializerList(); break; } // - // Rule 382: initializer_clause ::= start_initializer_list { initializer_list } end_initializer_list + // Rule 382: initializer_clause ::= { } // case 382: { action. consumeInitializerList(); break; } // - // Rule 383: initializer_clause ::= { } + // Rule 383: start_initializer_list ::= $Empty // - case 383: { action. consumeInitializerList(); break; + case 383: { action. initializerListStart(); break; } // - // Rule 384: start_initializer_list ::= $Empty + // Rule 384: end_initializer_list ::= $Empty // - case 384: { action. initializerListStart(); break; + case 384: { action. initializerListEnd(); break; } // - // Rule 385: end_initializer_list ::= $Empty + // Rule 389: class_specifier ::= class_head { member_declaration_list_opt } // - case 385: { action. initializerListEnd(); break; + case 389: { action. consumeClassSpecifier(); break; } // - // Rule 390: class_specifier ::= class_head { member_declaration_list_opt } + // Rule 390: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook base_clause_opt // - case 390: { action. consumeClassSpecifier(); break; + case 390: { action. consumeClassHead(false); break; } // - // Rule 391: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook base_clause_opt + // Rule 391: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook base_clause_opt // case 391: { action. consumeClassHead(false); break; } // - // Rule 392: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook base_clause_opt + // Rule 392: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook base_clause_opt // - case 392: { action. consumeClassHead(false); break; + case 392: { action. consumeClassHead(true); break; } // - // Rule 393: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook base_clause_opt + // Rule 393: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook base_clause_opt // case 393: { action. consumeClassHead(true); break; } // - // Rule 394: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook base_clause_opt + // Rule 397: identifier_name_opt ::= $Empty // - case 394: { action. consumeClassHead(true); break; - } - - // - // Rule 398: identifier_name_opt ::= $Empty - // - case 398: { action. consumeEmpty(); break; + case 397: { action. consumeEmpty(); break; } // - // Rule 402: visibility_label ::= access_specifier_keyword : + // Rule 401: visibility_label ::= access_specifier_keyword : // - case 402: { action. consumeVisibilityLabel(); break; + case 401: { action. consumeVisibilityLabel(); break; } // - // Rule 403: member_declaration ::= declaration_specifiers_opt member_declarator_list ; + // Rule 402: member_declaration ::= declaration_specifiers_opt member_declarator_list ; // - case 403: { action. consumeDeclarationSimple(true); break; + case 402: { action. consumeDeclarationSimple(true); break; } // - // Rule 404: member_declaration ::= declaration_specifiers_opt ; + // Rule 403: member_declaration ::= declaration_specifiers_opt ; // - case 404: { action. consumeDeclarationSimple(false); break; + case 403: { action. consumeDeclarationSimple(false); break; } // - // Rule 407: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // Rule 406: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // - case 407: { action. consumeMemberDeclarationQualifiedId(); break; + case 406: { action. consumeMemberDeclarationQualifiedId(); break; } // - // Rule 413: member_declaration ::= ERROR_TOKEN + // Rule 412: member_declaration ::= ERROR_TOKEN // - case 413: { action. consumeDeclarationProblem(); break; + case 412: { action. consumeDeclarationProblem(); break; } // - // Rule 422: member_declarator ::= declarator constant_initializer + // Rule 421: member_declarator ::= declarator constant_initializer // - case 422: { action. consumeMemberDeclaratorWithInitializer(); break; + case 421: { action. consumeMemberDeclaratorWithInitializer(); break; } // - // Rule 423: member_declarator ::= bit_field_declarator : constant_expression + // Rule 422: member_declarator ::= bit_field_declarator : constant_expression // - case 423: { action. consumeBitField(true); break; + case 422: { action. consumeBitField(true); break; } // - // Rule 424: member_declarator ::= : constant_expression + // Rule 423: member_declarator ::= : constant_expression // - case 424: { action. consumeBitField(false); break; + case 423: { action. consumeBitField(false); break; } // - // Rule 425: bit_field_declarator ::= identifier_name + // Rule 424: bit_field_declarator ::= identifier_name // - case 425: { action. consumeDirectDeclaratorIdentifier(); break; + case 424: { action. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 426: constant_initializer ::= = constant_expression + // Rule 425: constant_initializer ::= = constant_expression // - case 426: { action. consumeInitializer(); break; + case 425: { action. consumeInitializer(); break; } // - // Rule 432: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 431: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // - case 432: { action. consumeBaseSpecifier(false, false); break; + case 431: { action. consumeBaseSpecifier(false, false); break; } // - // Rule 433: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name + // Rule 432: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name + // + case 432: { action. consumeBaseSpecifier(true, true); break; + } + + // + // Rule 433: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // case 433: { action. consumeBaseSpecifier(true, true); break; } // - // Rule 434: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // Rule 434: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // - case 434: { action. consumeBaseSpecifier(true, true); break; + case 434: { action. consumeBaseSpecifier(true, false); break; } // - // Rule 435: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // Rule 435: access_specifier_keyword ::= private // - case 435: { action. consumeBaseSpecifier(true, false); break; + case 435: { action. consumeToken(); break; } // - // Rule 436: access_specifier_keyword ::= private + // Rule 436: access_specifier_keyword ::= protected // case 436: { action. consumeToken(); break; } // - // Rule 437: access_specifier_keyword ::= protected + // Rule 437: access_specifier_keyword ::= public // case 437: { action. consumeToken(); break; } // - // Rule 438: access_specifier_keyword ::= public + // Rule 439: access_specifier_keyword_opt ::= $Empty // - case 438: { action. consumeToken(); break; + case 439: { action. consumeEmpty(); break; } // - // Rule 440: access_specifier_keyword_opt ::= $Empty + // Rule 441: conversion_function_id_name ::= conversion_function_id < template_argument_list_opt > // - case 440: { action. consumeEmpty(); break; + case 441: { action. consumeTemplateId(); break; } // - // Rule 442: conversion_function_id_name ::= conversion_function_id < template_argument_list_opt > + // Rule 442: conversion_function_id ::= operator conversion_type_id // - case 442: { action. consumeTemplateId(); break; + case 442: { action. consumeConversionName(); break; } // - // Rule 443: conversion_function_id ::= operator conversion_type_id + // Rule 443: conversion_type_id ::= type_specifier_seq conversion_declarator // - case 443: { action. consumeConversionName(); break; + case 443: { action. consumeTypeId(true); break; } // - // Rule 444: conversion_type_id ::= type_specifier_seq conversion_declarator + // Rule 444: conversion_type_id ::= type_specifier_seq // - case 444: { action. consumeTypeId(true); break; + case 444: { action. consumeTypeId(false); break; } // - // Rule 445: conversion_type_id ::= type_specifier_seq + // Rule 445: conversion_declarator ::= ptr_operator_seq // - case 445: { action. consumeTypeId(false); break; + case 445: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 446: conversion_declarator ::= ptr_operator_seq + // Rule 451: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // - case 446: { action. consumeDeclaratorWithPointer(false); break; + case 451: { action. consumeConstructorChainInitializer(); break; } // - // Rule 452: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // Rule 452: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // - case 452: { action. consumeConstructorChainInitializer(); break; + case 452: { action. consumeQualifiedId(false); break; } // - // Rule 453: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 455: operator_function_id_name ::= operator_id_name < template_argument_list_opt > // - case 453: { action. consumeQualifiedId(false); break; + case 455: { action. consumeTemplateId(); break; } // - // Rule 456: operator_function_id_name ::= operator_id_name < template_argument_list_opt > + // Rule 456: operator_id_name ::= operator overloadable_operator // - case 456: { action. consumeTemplateId(); break; + case 456: { action. consumeOperatorName(); break; } // - // Rule 457: operator_id_name ::= operator overloadable_operator + // Rule 499: template_declaration ::= export_opt template < template_parameter_list > declaration // - case 457: { action. consumeOperatorName(); break; + case 499: { action. consumeTemplateDeclaration(); break; } // - // Rule 500: template_declaration ::= export_opt template < template_parameter_list > declaration + // Rule 500: export_opt ::= export // - case 500: { action. consumeTemplateDeclaration(); break; + case 500: { action. consumePlaceHolder(); break; } // - // Rule 501: export_opt ::= export + // Rule 501: export_opt ::= $Empty // - case 501: { action. consumePlaceHolder(); break; + case 501: { action. consumeEmpty(); break; } // - // Rule 502: export_opt ::= $Empty + // Rule 505: template_parameter ::= parameter_declaration // - case 502: { action. consumeEmpty(); break; + case 505: { action. consumeTemplateParamterDeclaration(); break; } // - // Rule 506: template_parameter ::= parameter_declaration + // Rule 506: type_parameter ::= class identifier_name_opt // - case 506: { action. consumeTemplateParamterDeclaration(); break; + case 506: { action. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 507: type_parameter ::= class identifier_name_opt + // Rule 507: type_parameter ::= class identifier_name_opt = type_id // - case 507: { action. consumeSimpleTypeTemplateParameter(false); break; + case 507: { action. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 508: type_parameter ::= class identifier_name_opt = type_id + // Rule 508: type_parameter ::= typename identifier_name_opt // - case 508: { action. consumeSimpleTypeTemplateParameter(true); break; + case 508: { action. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 509: type_parameter ::= typename identifier_name_opt + // Rule 509: type_parameter ::= typename identifier_name_opt = type_id // - case 509: { action. consumeSimpleTypeTemplateParameter(false); break; + case 509: { action. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 510: type_parameter ::= typename identifier_name_opt = type_id + // Rule 510: type_parameter ::= template < template_parameter_list > class identifier_name_opt // - case 510: { action. consumeSimpleTypeTemplateParameter(true); break; + case 510: { action. consumeTemplatedTypeTemplateParameter(false); break; } // - // Rule 511: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // Rule 511: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression // - case 511: { action. consumeTemplatedTypeTemplateParameter(false); break; + case 511: { action. consumeTemplatedTypeTemplateParameter(true); break; } // - // Rule 512: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression + // Rule 512: template_id_name ::= identifier_name < template_argument_list_opt > // - case 512: { action. consumeTemplatedTypeTemplateParameter(true); break; + case 512: { action. consumeTemplateId(); break; } // - // Rule 513: template_id_name ::= identifier_name < template_argument_list_opt > + // Rule 517: template_argument ::= assignment_expression // - case 513: { action. consumeTemplateId(); break; + case 517: { action. consumeTemplateArgumentExpression(); break; } // - // Rule 518: template_argument ::= assignment_expression + // Rule 518: template_argument ::= type_id // - case 518: { action. consumeTemplateArgumentExpression(); break; + case 518: { action. consumeTemplateArgumentTypeId(); break; } // - // Rule 519: template_argument ::= type_id + // Rule 519: explicit_instantiation ::= template declaration // - case 519: { action. consumeTemplateArgumentTypeId(); break; + case 519: { action. consumeTemplateExplicitInstantiation(); break; } // - // Rule 520: explicit_instantiation ::= template declaration + // Rule 520: explicit_specialization ::= template < > declaration // - case 520: { action. consumeTemplateExplicitInstantiation(); break; + case 520: { action. consumeTemplateExplicitSpecialization(); break; } // - // Rule 521: explicit_specialization ::= template < > declaration + // Rule 521: try_block ::= try compound_statement handler_seq // - case 521: { action. consumeTemplateExplicitSpecialization(); break; + case 521: { action. consumeStatementTryBlock(); break; } // - // Rule 522: try_block ::= try compound_statement handler_seq + // Rule 524: handler ::= catch ( exception_declaration ) compound_statement // - case 522: { action. consumeStatementTryBlock(); break; + case 524: { action. consumeStatementCatchHandler(false); break; } // - // Rule 525: handler ::= catch ( exception_declaration ) compound_statement + // Rule 525: handler ::= catch ( ... ) compound_statement // - case 525: { action. consumeStatementCatchHandler(false); break; + case 525: { action. consumeStatementCatchHandler(true); break; } // - // Rule 526: handler ::= catch ( ... ) compound_statement + // Rule 526: exception_declaration ::= type_specifier_seq declarator // - case 526: { action. consumeStatementCatchHandler(true); break; + case 526: { action. consumeDeclarationSimple(true); break; } // - // Rule 527: exception_declaration ::= type_specifier_seq declarator + // Rule 527: exception_declaration ::= type_specifier_seq abstract_declarator // case 527: { action. consumeDeclarationSimple(true); break; } // - // Rule 528: exception_declaration ::= type_specifier_seq abstract_declarator + // Rule 528: exception_declaration ::= type_specifier_seq // - case 528: { action. consumeDeclarationSimple(true); break; + case 528: { action. consumeDeclarationSimple(false); break; } // - // Rule 529: exception_declaration ::= type_specifier_seq + // Rule 530: exception_specification ::= throw ( ) // - case 529: { action. consumeDeclarationSimple(false); break; + case 530: { action. consumePlaceHolder(); break; } // - // Rule 531: exception_specification ::= throw ( ) + // Rule 551: attribute_parameter ::= assignment_expression // - case 531: { action. consumePlaceHolder(); break; + case 551: { action. consumeIgnore(); break; } - + // - // Rule 552: attribute_parameter ::= assignment_expression + // Rule 561: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ; // - case 552: { action. consumeIgnore(); break; - } + case 561: { gccAction.consumeDeclarationASM(); break; + } default: diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java index 63e98fbcbad..27929ad52c0 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParserprs.java @@ -67,553 +67,560 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 1,1,1,1,1,3,4,4,5,2, 5,6,5,0,6,7,0,1,3,1, 0,1,3,1,1,1,6,5,7,6, - 1,0,6,5,6,4,1,3,1,0, - 1,1,2,1,1,3,1,3,1,1, - 1,1,3,9,2,2,3,2,4,2, - 6,0,1,2,2,1,0,1,1,1, - 3,1,2,1,1,2,3,1,1,1, - 3,2,1,2,2,9,8,2,1,3, - 1,3,1,0,1,0,2,1,1,3, - 1,3,2,1,5,8,1,2,3,1, - 7,6,3,0,0,1,3,1,1,5, - 6,6,7,7,0,0,1,0,1,1, - 1,2,4,2,2,1,5,1,1,1, - 1,1,1,1,2,1,0,1,3,1, - 1,2,3,2,1,2,2,1,0,1, - 3,3,5,5,4,1,1,1,1,0, - 1,5,2,2,1,2,2,1,0,1, - 3,4,3,1,1,5,2,1,1,3, - 3,1,1,1,1,1,1,1,1,1, + 1,0,6,6,4,1,3,1,0,1, + 1,2,1,1,3,1,3,1,1,1, + 1,3,9,2,2,3,2,4,2,6, + 0,1,2,2,1,0,1,1,1,3, + 1,2,1,1,2,3,1,1,1,3, + 2,1,2,2,9,8,2,1,3,1, + 3,1,0,1,0,2,1,1,3,1, + 3,2,1,5,8,1,2,3,1,7, + 6,3,0,0,1,3,1,1,5,6, + 6,7,7,0,0,1,0,1,1,1, + 2,4,2,2,1,5,1,1,1,1, + 1,1,1,2,1,0,1,3,1,1, + 2,3,2,1,2,2,1,0,1,3, + 3,5,5,4,1,1,1,1,0,1, + 5,2,2,1,2,2,1,0,1,3, + 4,3,1,1,5,2,1,1,3,3, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,2,2,7, - 1,0,1,3,1,1,2,4,2,4, - 7,9,5,1,3,1,0,1,1,2, - 4,4,1,2,5,5,3,3,1,4, - 3,1,0,1,3,1,1,1,1,2, - 6,3,1,3,1,4,0,1,1,1, - 3,1,0,4,1,0,1,2,1,3, - 4,4,1,0,1,2,2,3,2,2, - 3,1,1,1,1,1,-263,0,0,0, - -2,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-4, - 0,0,0,0,0,0,0,-66,0,0, - 0,0,0,-56,0,0,0,0,-28,0, - 0,0,0,0,-157,0,0,0,0,0, - 0,0,0,0,0,0,0,-7,0,0, - 0,0,-505,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,2,2,7,1, + 0,1,3,1,1,2,4,2,4,7, + 9,5,1,3,1,0,1,1,2,4, + 4,1,2,5,5,3,3,1,4,3, + 1,0,1,3,1,1,1,1,2,6, + 3,1,3,1,4,0,1,1,1,3, + 1,0,4,3,1,2,1,3,4,4, + 6,1,0,1,3,1,3,0,1,4, + 5,1,1,2,2,3,2,2,3,1, + 1,1,1,1,-270,0,0,0,-2,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-453,0,0,0,0, - 0,0,0,-432,0,0,0,0,0,0, - 0,0,0,0,0,0,-9,0,0,0, - -33,0,0,0,-3,-14,0,0,0,0, - 0,0,0,0,0,0,-37,0,0,0, - -107,0,0,0,0,0,-269,0,0,0, - -16,0,0,0,0,0,0,0,0,0, - -72,0,0,0,0,0,0,-115,0,0, + 0,0,0,0,0,0,0,-67,0,0, + 0,0,0,0,-7,0,0,0,0,0, + 0,-56,0,0,0,0,-122,0,0,0, + 0,0,-9,-162,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-513,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-50,0,0,0,0,0, + 0,-103,0,0,0,0,0,0,0,0, + 0,0,-59,0,0,0,0,0,0,-33, + 0,0,0,-3,0,0,0,0,0,0, + 0,0,0,0,0,-14,-12,0,0,0, + 0,0,-16,0,-72,0,-276,0,0,0, + -17,0,0,0,0,0,0,0,0,0, + -18,0,0,0,0,0,0,-116,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-51,-121,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-361,0,0,0,0,0, - 0,-99,0,0,0,-403,0,0,0,0, - 0,0,0,-133,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-17,-59, - -43,-20,0,0,0,0,0,0,0,0, - -18,0,0,0,-117,0,0,0,0,0, - -167,0,0,0,0,0,0,0,0,0, - -27,-57,0,0,-138,0,0,0,0,-67, - 0,0,0,0,0,0,0,0,0,0, - -34,-134,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-35,-122,0,-38, - 0,0,0,0,0,0,0,0,-206,0, - 0,0,0,0,-355,0,0,0,-120,-407, - 0,0,0,0,0,0,-166,0,0,0, - 0,-82,0,-45,0,0,0,-305,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,0,-447,0,0,0,0,0, - 0,0,0,0,-127,0,0,0,0,-125, - 0,0,0,0,0,0,-235,0,-101,-574, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-30,-12, - 0,0,0,0,0,-411,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-40,0, - -202,0,0,0,0,0,-41,0,0,0, - 0,0,-13,0,0,0,0,0,0,0, - 0,0,0,-128,0,0,0,-42,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -81,-335,0,0,0,0,0,0,0,0, - -46,0,0,0,-245,0,0,0,0,0, - 0,-367,0,0,0,-52,0,0,0,0, - 0,0,0,0,-237,0,0,0,-63,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-521,0,-64, - 0,0,0,0,0,-100,0,0,0,0, - 0,-145,0,0,0,0,0,0,0,0, - 0,-69,-104,-214,0,0,0,-408,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-391,0,0,0,0,0,0,0,0, - 0,0,0,0,-10,0,0,-73,0,0, - -318,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-77,-154,0,0,0, - 0,-489,0,0,0,0,0,0,0,0, - 0,0,-98,0,0,0,0,-55,-414,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,0,-162,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-331, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-70,-142,-415, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-44,0,0,0,0,0,0,0, - -112,0,0,0,0,0,-58,0,0,0, - 0,0,-84,0,0,0,-421,0,0,0, - -555,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-216,0,0,0,0,0, - 0,0,0,0,0,0,0,-440,0,0, - 0,0,0,-123,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-234,0, - 0,0,0,0,-85,0,0,0,0,0, - -341,0,0,0,0,0,-97,-199,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -175,0,-230,0,0,0,0,0,-86,0, - 0,0,0,0,-260,0,0,0,0,-87, - -365,0,0,0,0,-146,-292,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-556, - 0,0,-441,0,0,0,0,0,0,0, - 0,0,0,-136,0,0,0,0,0,0, - -504,0,0,-293,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-487,0, - 0,0,0,0,-252,0,0,0,0,0, - -53,0,0,0,0,0,0,0,0,0, - -294,0,0,0,-243,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-492,0,0,0,0, - 0,0,0,0,0,0,0,-103,0,0, - 0,-493,0,0,0,0,0,-295,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-519,0,0,0,0,0,-110,0, - 0,0,0,0,-148,0,0,0,-49,-344, - 0,-503,0,0,-296,0,0,0,-205,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-431,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-153,0,0,0,-50,-78,-155,-83,0, - 0,-297,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,0,-60,0, - 0,0,0,0,0,0,0,0,-65,0, - 0,0,0,-168,-170,-102,0,0,-298,0, - 0,0,-244,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-79,0,-171,0,0,0,0,0,0, - 0,0,0,0,0,-80,0,0,0,0, - -105,-172,-147,0,0,-299,0,0,0,-339, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-173,0, - 0,0,-89,0,0,0,0,0,0,0, - 0,0,-90,0,0,0,0,-149,-538,-150, - 0,0,-300,0,0,0,-340,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-174,0,-232,0,0, - -156,0,0,0,0,0,0,0,0,-91, - 0,0,0,0,-213,-176,-224,0,0,-301, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-233,0,0,0,0,0, - 0,0,0,0,0,0,-94,0,0,0, - 0,-236,-188,-238,0,0,-302,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-189, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-96,0,0,0,0,-261,-190, - -247,0,0,-410,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-113,0,-313,0, - 0,-191,0,0,-137,0,0,0,0,0, - -132,0,0,0,0,-262,-192,-330,0,0, - -452,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-342,0,-152,0,0, - 0,-253,0,0,0,0,0,-271,0,0, - 0,0,-346,-210,-349,0,0,-558,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,0,0,0,0,0,-363,0, - 0,0,0,0,-161,0,0,0,0,-193, - -239,-194,0,0,-333,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-310, - 0,0,0,0,0,-195,0,0,0,0, - 0,0,0,0,0,-343,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-139,0, - 0,0,0,-196,0,0,0,0,0,0, - 0,0,-163,0,0,0,0,-477,0,0, - 0,0,-539,-508,0,0,0,-394,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -197,0,-543,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-424,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-218,0,0,0,-165,-198,0,0,0, - 0,0,0,0,0,-215,0,0,0,0, - 0,0,0,-116,0,0,0,0,0,0, - -425,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-200,0,-265,-246,0,-550,0, - 0,-525,0,0,0,0,0,-201,0,0, - 0,-552,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-231,0,0,-203, - 0,0,0,0,0,0,0,0,-426,0, - 0,0,-31,0,0,0,0,0,0,0, - 0,0,0,0,0,-207,-329,0,-350,-61, - 0,0,0,0,0,0,0,0,0,0, - 0,-32,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-270,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-404, - 0,0,-209,0,-211,0,0,-240,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-468,0,0,-219,0, - 0,0,0,0,0,0,0,-392,0,0, - -241,0,0,0,0,-369,0,0,0,0, - 0,0,0,0,0,0,0,0,-242,0, - 0,-266,0,0,0,0,0,0,0,0, - 0,0,-221,-364,0,0,0,0,-307,-108, - 0,0,0,-314,0,-222,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-119, - -443,-225,0,0,0,0,0,0,-332,0, - 0,0,0,0,0,0,0,0,-227,-118, - -315,0,0,0,0,0,0,0,-304,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-62,0,0,0,0,0,-554, - 0,0,0,0,0,-228,0,-291,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-451,-229,0,0,0,0,-356,0, - 0,0,0,0,-248,0,-289,0,0,0, - -249,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-126,0,0,0,0,0,-268,0,0, - 0,0,-417,0,0,0,-312,0,0,0, - 0,0,0,0,0,-366,0,-220,0,-29, - 0,0,0,0,0,0,0,0,0,0, - 0,-319,0,0,-320,-151,0,0,0,0, - 0,-560,-306,0,0,0,0,-535,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-327, - 0,-396,0,0,0,0,0,-371,0,-542, - 0,0,-328,0,0,0,0,0,0,0, - -334,-475,-5,0,0,0,0,0,-336,-15, + 0,0,-316,0,0,-161,0,0,0,0, 0,0,0,0,-19,0,0,0,0,0, - 0,-317,0,0,0,0,0,0,0,0, - 0,0,0,-476,0,0,0,0,0,0, - 0,0,0,0,-290,0,0,0,-405,0, + -352,0,0,0,-28,0,0,0,-211,0, + -27,0,0,0,0,0,-98,0,0,0, + 0,0,0,0,-134,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-326,0,-316, - -351,0,0,0,0,0,0,0,0,0, - -544,0,0,0,0,-370,-352,-472,0,0, - 0,0,-24,-353,0,0,0,0,0,-354, - -358,0,0,0,0,0,0,0,0,-359, - -360,0,0,0,0,0,0,0,0,0, - 0,0,0,-178,0,0,0,0,0,0, - 0,0,-348,-272,0,-506,0,0,0,0, - 0,-129,0,0,0,0,0,0,0,0, - 0,0,0,0,-372,-567,-373,0,0,0, - 0,0,0,-374,0,-375,0,0,0,0, - 0,0,0,0,0,-376,-553,0,-377,-179, + 0,0,0,0,0,0,0,0,0,-13, + -24,-57,0,0,0,0,0,0,0,0, + 0,-78,0,0,0,0,-66,-30,-123,0, 0,0,0,0,0,0,0,0,0,0, + 0,-34,0,-171,0,0,-20,0,0,0, + 0,0,0,0,0,0,0,0,0,-416, + 0,-35,0,-135,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-378,-286,0,0,0, + 0,0,0,0,0,0,0,0,0,-126, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-379, - 0,-380,-406,-303,-381,0,0,0,0,0, - -338,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-382,-569,-383,-54,0,0, - 0,-164,0,0,0,0,0,0,0,0, - 0,-384,0,0,0,0,-446,0,0,-467, - 0,-385,0,0,0,-423,0,0,0,0, + -330,0,0,0,0,-349,0,0,0,0, + 0,0,-38,0,0,0,0,0,-120,0, + 0,0,-40,0,0,-45,0,0,-4,0, + -312,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,0,0,-21,0, - 0,0,0,0,-428,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-88,0, - 0,0,0,0,0,0,0,-565,-422,0, - 0,0,0,0,0,0,0,0,0,-409, - -386,-251,-387,-469,0,0,0,0,0,0, - 0,-478,-169,-388,-389,0,0,-434,-448,0, - -390,-393,0,0,0,0,0,0,0,-479, - 0,0,0,0,-226,0,0,0,0,0, - 0,0,0,0,0,0,0,-395,0,0, - 0,0,0,0,0,0,-287,0,0,0, + 0,0,0,0,0,-37,0,0,0,0, + -89,0,0,0,0,0,0,-128,0,0, + 0,0,0,0,0,0,0,-172,0,0, + 0,-41,-277,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-209,0, + 0,0,0,0,0,0,0,0,0,-419, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-397, - 0,0,0,0,0,0,0,0,0,-68, - -486,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-575,-500,-398,0,-399,0, - 0,0,0,0,0,0,0,0,0,-400, - 0,0,-309,0,0,-480,-402,0,-429,0, - 0,0,0,0,0,0,-288,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-311, - 0,0,0,0,-430,0,0,-436,0,0, - -321,0,0,0,0,0,0,0,0,0, - 0,0,0,-497,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-280,0,0, + 0,0,0,0,-108,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -449,0,0,0,0,0,0,-129,0,0, + 0,-69,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -488,0,-496,-464,-465,-437,0,0,0,0, - 0,0,0,0,0,-438,-512,-23,0,0, - 0,-439,0,0,0,0,0,0,-454,-455, - -520,0,0,0,0,-473,0,-534,-457,-462, + 0,0,-118,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-207,0, + 0,0,0,0,0,-244,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-281,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-498,0,0,0,0, - 0,0,0,-282,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-502,0, - 0,0,0,0,-283,0,0,0,-466,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-308,0,0, - -561,0,0,0,0,-6,0,0,0,0, - 0,0,0,0,0,0,0,0,-470,-572, - 0,-557,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-255,-513,-484,-530,0, - 0,0,0,0,0,-485,-491,-514,0,0, - 0,0,0,0,0,0,-545,-566,0,-501, - 0,0,0,0,0,0,0,0,0,0, - -515,0,0,0,0,0,0,0,0,-516, - 0,0,0,0,0,0,-74,0,0,0, - 0,0,0,0,0,0,0,0,0,-507, - 0,0,-522,-39,0,0,0,0,-526,-527, - 0,0,0,0,0,-532,-540,-541,-549,0, - 0,0,0,-559,-564,0,0,0,0,0, - -124,0,0,0,-22,0,0,0,0,0, - 0,0,0,-528,0,0,0,0,0,0, - 0,0,0,-109,0,0,0,0,0,0, - 0,0,0,-435,0,-323,-529,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,0,0,0,0,0,0,0,-284, - 0,0,0,-412,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-285,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-401,0,0, - 0,0,0,0,0,-130,0,0,-547,0, - -25,0,-548,0,0,0,0,0,0,0, - 0,0,0,0,-481,0,0,0,0,-562, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-456,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-413,0,0, - 0,0,0,0,0,0,0,0,-36,0, - 0,0,0,0,0,0,0,-458,-511,0, - -546,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-517,0,0,0,0,0,0,0,0, - 0,0,0,-324,0,-568,-571,0,0,0, - 0,0,-495,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-494,0,-573, - 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,0,0,-531,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-518,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-533,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,0,0, - 0,0,0,0,0,0,0,0,-551,0, - 0,0,0,0,0,0,0,-537,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,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-570,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,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-576,-482,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,0,0,0,0,0,0, - 0,0,0,-1,0,0,0,0,0,-337, - 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,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, - 0,0,0,0,-204,0,0,0,0,0, - -75,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,0,0,0,0, - 0,0,0,0,0,0,0,-450,0,0, - 0,0,0,0,0,-217,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,0,0,0,-275,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, - 0,0,0,0,0,0,0,0,0,-47, - 0,0,0,0,0,0,0,-276,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-26,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,0,0, - 0,-95,0,0,0,0,0,-483,0,0, - 0,0,0,0,0,0,0,0,0,0, - -180,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,-48,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -141,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,0,0,0,0, - 0,0,0,0,0,-159,0,0,0,0, - 0,0,-143,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,-76,0, - 0,0,-111,0,0,0,-131,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,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,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,0,-277,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-278,0,0,0, + 0,0,0,0,0,0,0,0,-43,0, + -55,0,0,-512,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-113, + 0,0,-219,0,0,0,-250,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-58,-117,0, 0,0,0,0,0,0,0,0,0,-279, + 0,0,0,0,0,0,0,0,0,-62, + 0,0,0,-325,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-42,-10, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-239,0,0,-82,0,0, + 0,-422,0,0,0,-46,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-44,0,-52, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-99,0,0,0,0,0,0,0, + 0,0,0,0,-53,0,-399,0,0,-317, + 0,0,0,-423,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-97,0, + -440,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-146,-83,0,-70,0,0, + -429,0,0,0,-259,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-180,0,0,-148,0,0,0, + -221,0,0,0,0,0,0,0,0,0, + 0,-252,0,0,0,0,0,-124,0,0, + 0,-137,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-159,0,0,-63,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -100,0,-204,0,0,0,-64,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-73,0,0,-81,0, + 0,0,0,0,0,0,0,0,0,-267, + 0,0,0,0,-511,-77,0,0,0,-51, + 0,-299,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-60,0,0,-151,0,0, + 0,0,0,0,0,0,0,0,-65,0, + 0,0,0,0,0,0,0,0,-300,0, + 0,0,-84,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-439,-169,0,0,0,0,0, + 0,0,0,0,0,-79,0,0,0,0, + -138,-85,0,0,0,-301,0,0,0,-260, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-181,0,0,0,0,0,0,0, + -369,0,0,-86,0,0,0,0,0,0, + 0,0,-87,0,0,0,-448,0,0,0, + 0,0,-302,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-182,0,0,0,0,0, + 0,0,0,0,0,0,0,-495,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-183,0,0,0, + 0,0,0,0,-101,0,0,0,0,-303, + 0,0,0,-102,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-184,0, + 0,0,0,0,-500,0,0,0,0,-105, + 0,0,0,0,0,0,-111,0,0,0, + -501,0,0,0,0,0,-304,0,0,0, + -150,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-563, + 0,-527,0,0,0,0,-153,0,0,0, + 0,0,0,-373,0,0,0,0,-106,-411, + 0,0,0,-305,0,0,0,-158,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-455, + 0,-160,0,0,0,0,0,0,0,0, + -80,0,0,0,0,-152,0,-154,0,0, + -306,0,0,0,-173,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-564,0,0,-90,0,-343,0, + 0,0,0,0,0,0,0,-91,0,0, + 0,0,-215,-175,-218,0,0,-307,0,0, + 0,-176,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-177,-94,0,-371,0,0,0,0, + 0,0,0,0,-96,0,0,0,0,-229, + 0,-533,0,0,-308,0,0,0,-178,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-114,0,0, + -133,0,-179,0,0,0,0,0,0,0, + 0,0,0,0,0,-147,-241,-143,-272,0, + 0,-309,0,0,0,-181,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-246,0,-193, + 0,-149,0,0,0,0,0,0,0,0, + 0,0,-157,-243,-155,-562,0,0,-418,0, + 0,0,-194,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-242,0,0,-379,0, + 0,0,0,0,0,0,0,0,0,-195, + -245,0,-196,0,0,-460,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -185,0,0,0,0,0,0,0,0,0, + 0,-494,0,0,0,-197,0,0,0,0, + 0,0,-166,0,0,0,0,-235,0,0, + 0,0,-566,0,0,0,-198,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-186,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-187,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-264,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-273,0, + 0,0,0,0,0,-168,0,0,-170,0, + 0,0,0,0,0,0,0,0,0,-220, + 0,0,0,0,-237,0,-238,0,0,-341, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -274,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-357,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-444,0,0,0,-212,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-8,0,-160,0, - 0,0,0,0,0,0,0,-11,-140,0, - 0,0,0,0,0,0,0,0,-92,0, + 0,0,-199,0,-485,0,0,0,0,-200, + 0,0,0,0,0,0,-201,0,0,0, + -351,0,0,0,-273,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, 0,0,0,0,0,0,0,0,0,0, + 0,-139,0,0,0,-202,-254,0,0,0, + 0,0,-203,-402,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-516,0, + 0,0,0,-205,0,0,0,0,0,0, + -206,0,0,0,-432,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-248,0,0, + 0,0,-208,0,-251,0,0,0,0,0, + 0,-212,0,0,0,-339,0,0,0,-214, + -104,0,0,0,0,0,-216,-433,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-551,0,0,0,0,-224,0,0, + 0,0,0,0,-226,0,0,0,-560,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-249,0,0,-278,0,-227,0,0,0, + 0,0,0,0,0,-547,0,0,0,-31, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-415,0,0,0,-61,0,0, + 0,0,-529,-347,0,0,0,0,-32,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-483,-582,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-268,0,0, + -88,0,0,0,-247,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-363,0,0,-451,0,0,0, + 0,0,0,-182,-121,-400,-314,0,-497,0, + 0,0,-375,0,0,0,0,0,0,0, + 0,0,0,0,0,-321,0,-230,0,0, + -232,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-322,0,0,0, + 0,0,0,0,-459,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-233,0,-234,0,0, + 0,0,0,0,0,0,0,-240,-119,-269, + -236,0,0,0,0,0,-311,0,0,0, + -255,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-552,0,0,0,0,0,0,0,0, + 0,0,0,-337,0,-298,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,0,0,0,0,-461,0,0,0,0, + 0,0,-338,-354,0,0,-296,0,0,0, + -256,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-514, + 0,-167,0,0,-357,0,0,0,0,0, + 0,0,-425,0,0,0,-320,0,0,0, + 0,0,0,0,0,-313,0,0,0,0, + -29,0,0,0,0,0,0,0,0,0, + 0,-6,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-561,-275,-319,-543,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -358,0,-326,0,0,0,0,-174,-558,0, + 0,0,-127,0,0,0,-327,0,0,0, + 0,0,0,0,-5,0,0,0,-336,0, + 0,0,0,0,0,-334,-335,0,0,0, + 0,0,0,-550,0,0,-575,-340,0,0, + 0,0,0,0,0,-546,-39,0,0,0, + 0,0,-324,0,0,0,0,-297,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,0,0,0,0,0,0,0, + 0,0,-342,-350,0,0,0,0,0,0, + 0,0,0,-210,0,-344,-333,0,0,0, + 0,-356,-476,-359,0,0,-364,-374,0,0, + -377,0,0,0,0,0,0,0,0,0, + 0,0,0,-360,-361,0,-156,0,0,0, + 0,0,0,0,0,-362,0,0,0,0, + 0,0,-366,0,-130,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-367,0, + 0,0,0,0,0,0,0,0,-573,0, + 0,0,0,-577,0,0,0,0,-253,0, + 0,-368,-185,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,0,-380, + -293,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-68,0,-381,-404,-382,-413,0, + -21,0,0,0,-346,0,0,0,0,0, + 0,0,0,0,0,0,0,-223,0,0, + 0,0,0,0,-383,0,0,0,0,0, + 0,0,0,-384,-385,0,0,0,0,0, + -378,0,0,0,0,0,0,-225,-386,-387, + -431,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-131,0,0,0,0,0,-436, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-388,-323,0,0, + 0,0,0,0,0,0,0,0,-414,-389, + 0,0,0,0,0,0,-430,-484,0,-390, + 0,0,0,0,0,0,-231,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-47,0,0,0,-434,0, + -391,0,0,0,-417,-74,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-392,0,0,0,0,-583,-442,-109, + 0,0,0,0,0,0,0,0,0,0, + 0,-454,0,0,-393,0,0,0,0,0, + 0,-49,0,0,0,0,0,0,0,-394, + -475,-395,0,0,0,0,0,0,0,0, + 0,0,-456,-472,0,0,0,0,0,-294, 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,0,-93,0,0,0, - 0,0,0,0,0,0,0,-325,-418,0, - 0,0,0,0,0,0,0,0,-106,0, - 0,0,0,0,0,0,-114,0,0,0, + 0,0,0,0,-183,0,0,0,0,-396, + 0,0,-295,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-315,0,-473,-15,0, + -542,0,-217,0,0,0,0,-397,-398,-480, + -477,0,0,0,0,-486,-508,-520,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-528,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-538,0,-412,-401,0, + -420,0,0,-348,-403,-421,-405,0,0,0, + 0,0,0,0,0,0,0,-328,0,0, + 0,0,0,0,0,0,0,0,0,0, + -569,0,0,0,0,-406,0,-407,-310,-487, + 0,0,0,-287,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-408,0, + -580,0,0,0,0,0,0,0,0,0, + 0,0,0,-184,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-410,-553,-481, + 0,0,0,0,0,-437,0,0,0,0, + -496,0,-504,-506,0,0,0,-288,0,0, + 0,-438,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-444,-445,0,-446,0,-289, + 0,0,0,-447,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-462,0,-54,0,0,0,0,-510, + 0,-290,0,0,0,-463,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-409,0,-521,0,0,0, + 0,-465,0,-470,-372,0,-522,-23,0,-474, + -523,-574,0,0,-524,0,-478,0,-519,-492, + -493,-499,-458,0,0,0,0,0,-536,-537, + -509,0,0,0,0,0,0,0,0,-464, + 0,0,-515,0,0,0,0,0,0,0, + 0,0,0,0,0,-555,-140,-556,0,0, + 0,0,0,0,0,-530,-534,0,-535,0, + 0,0,0,0,0,0,0,-540,0,0, + 0,-570,0,0,-466,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-548, + 0,0,0,-549,-576,-557,0,0,-554,-318, + -567,0,0,0,0,0,0,0,0,0, + 0,0,-572,0,0,-579,0,0,0,-503, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-581,0,0,0,0, + 0,0,0,0,-488,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-539,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-489, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-541, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-568,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-545,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, 0,0,0,0,0,0,0,0,0,0, + 0,0,-141,0,0,0,0,0,0,-502, + -1,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,0,0,0,0, + 0,0,0,0,0,0,-565,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -186,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,0,0,0,0, + 0,0,0,0,-25,0,0,0,0,0, + 0,0,-132,-578,0,0,0,0,-525,0, + 0,0,0,0,-526,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, + 0,0,0,0,0,0,0,0,-584,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-443,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-8,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,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,0,0,-459,0,0,0, - 0,-158,0,-347,0,0,0,0,0,0, - 0,0,-177,0,0,0,0,0,0,0, - -144,0,0,0,0,0,0,0,0,0, - 0,0,-416,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,0,0, - 0,0,0,0,0,0,-523,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,0,0,0,0,0,-345,0,0, - 0,0,0,0,0,0,-71,0,0,0, - 0,0,0,0,-461,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, - 0,0,0,0,0,0,0,0,0,0, - -135,0,0,0,0,0,-536,0,0,-256, - 0,0,-250,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -322,0,0,0,0,0,0,0,0,0, + -125,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,0,0,0,0, -490,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-499,-524,0, - 0,0,0,0,-223,0,0,0,0,0, - -208,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-362,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-368,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-563,0,0, - 0,0,0,0,0,0,0,0,0,-433, - 0,0,0,0,0,-474,0,0,0,0, - 0,0,0,0,-509,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-510,0, - 0,0,0,0,-254,0,0,0,0,0, - 0,-259,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -267,0,0,0,0,0,0,0,0,0, + -291,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-442,0,0,0,0, - 0,-449,0,0,0,0,-257,0,-460,0, - 0,-463,0,0,0,0,0,0,0,0, - 0,0,0,-258,-419,0,0,0,0,0, - 0,0,0,0,0,0,0,-427,0,0, - 0,-471,0,0,0,0,0,0,0,0, - 0,0,0,-420,0,0,0,0,0,0, + 0,0,0,0,0,-292,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-445,-577,0, + 0,0,0,0,0,0,0,0,-95,0, + 0,-22,0,0,0,-75,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -110,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-258,-262,0,-559,0,0, + -142,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,0,0,0,0, + -48,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-164,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-144,0,0,0,0,0, + 0,0,0,0,0,0,-36,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,0,-498,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,0, + 0,0,-222,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,0,0, + 0,0,0,0,0,0,0,-331,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,0,0,0,0,0,-282,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-283,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-26,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,0,0,0,0,0,0, + 0,0,0,0,0,-284,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,0,0,0,0,-285,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,0,0,0,-76,0,0,0,-286,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-345,0,0,0,0,0,0,-11, + 0,-165,-491,0,-531,0,0,0,0,0, + -92,0,0,0,0,0,0,0,0,0, + 0,-93,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,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,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,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-187,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-188,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-189,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -190,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-191,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-192,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-271,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-280,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -281,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-332,0,0,0,0,-544,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-365,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,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-452,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,0,0, + 0,0,0,0,0,-505,0,0,0,0, + 0,0,0,0,0,0,0,0,-435,-107, + 0,0,0,0,0,0,-163,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,0,0,0,0,0,-355,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,0,0,0,0,0,0,0, + -424,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,0,0,0,-71, + 0,0,0,0,0,0,0,0,-266,0, + 0,0,0,0,0,0,0,-353,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-469,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,0,0, + 0,0,0,0,0,-136,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,0,0,0,0,0,0,-257,0,0, + 0,0,0,0,0,0,0,0,0,0, + -329,0,0,0,0,0,0,0,0,0, + 0,-532,0,0,0,0,0,0,0,0, + 0,0,-479,0,0,0,0,0,0,0, + -112,0,0,0,0,-228,0,0,0,0, + 0,0,0,-115,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,0, + 0,0,-145,0,0,0,0,0,0,0, + 0,0,0,0,0,-213,0,0,0,-426, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-370,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-376,0,0, + 0,0,0,0,0,0,-441,0,0,0, + 0,-482,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-507,-261,0,0, + 0,0,0,0,-517,0,0,0,0,-518, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-274,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,0,-450, + 0,0,0,0,-457,0,0,0,0,0, + 0,0,0,0,-467,0,0,0,0,-468, + -571,-263,0,0,0,0,0,0,0,0, + 0,-471,-264,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-265,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-427,0,0,0,0,0,0,0, + 0,0,0,0,0,-428,0,0,0,0, + -453,0,-585,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,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,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,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,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,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0 }; }; public final static short baseCheck[] = BaseCheck.baseCheck; @@ -623,634 +630,641 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface BaseAction { public final static char baseAction[] = { - 183,4,144,88,88,31,31,73,73,43, - 43,47,47,183,1,1,15,15,15,15, + 186,4,146,89,89,30,30,74,74,43, + 43,47,47,186,1,1,15,15,15,15, 15,15,15,15,16,16,16,14,11,11, - 6,6,6,6,6,6,2,71,71,5, - 5,12,12,49,49,145,145,146,67,67, + 6,6,6,6,6,6,2,72,72,5, + 5,12,12,49,49,147,147,148,68,68, 48,17,17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,17,17, - 17,147,147,147,124,124,18,18,18,18, + 17,149,149,149,125,125,18,18,18,18, 18,18,18,18,18,18,18,18,18,19, - 19,184,184,185,185,186,150,150,151,151, - 148,148,152,149,149,20,20,21,21,22, - 22,22,24,24,24,24,29,29,29,30, - 30,30,32,32,32,32,32,33,33,33, + 19,187,187,188,188,189,152,152,153,153, + 150,150,154,151,151,20,20,21,21,22, + 22,22,24,24,24,24,29,29,29,31, + 31,31,32,32,32,32,32,33,33,33, 34,34,35,35,36,36,38,38,39,39, 40,40,46,46,45,45,45,45,45,45, - 45,45,45,45,45,45,45,44,37,153, - 153,102,102,187,187,97,213,213,74,74, - 74,74,74,74,74,74,74,75,75,75, - 72,72,66,66,188,188,76,76,76,109, - 109,189,189,77,77,77,190,190,78,78, - 78,78,78,79,79,89,89,89,89,89, - 89,89,89,54,54,54,54,54,110,110, - 108,108,55,191,23,23,23,23,23,53, - 53,92,92,92,92,92,160,160,155,155, - 155,155,155,156,156,156,157,157,157,158, - 158,158,159,159,159,93,93,93,93,93, - 94,94,94,13,13,13,13,13,13,13, - 13,13,13,13,103,128,128,128,128,128, - 128,126,126,126,161,127,127,192,163,163, - 162,162,130,130,111,83,83,84,85,57, - 52,164,164,58,56,91,91,165,165,154, - 154,131,132,132,133,69,69,166,166,62, - 62,62,60,60,59,63,63,86,86,68, - 68,68,64,95,95,105,104,104,70,70, - 61,61,65,65,50,106,106,106,98,98, - 98,99,99,100,100,100,101,101,112,112, - 112,114,114,113,113,214,214,96,96,194, - 194,194,194,194,135,51,51,168,193,193, - 136,136,136,136,137,170,195,195,41,41, - 125,138,138,138,138,197,116,115,115,129, - 129,129,171,172,172,172,172,172,172,172, - 172,172,172,172,199,199,196,196,198,198, - 118,119,119,119,119,120,200,121,117,117, - 201,201,173,173,173,173,107,107,107,202, - 202,8,8,9,203,203,204,174,167,167, - 175,175,176,177,177,7,7,10,205,205, - 205,205,205,205,205,205,205,205,205,205, - 205,205,205,205,205,205,205,205,205,205, - 205,205,205,205,205,205,205,205,205,205, - 205,205,205,205,205,205,205,205,205,205, - 81,87,87,178,178,140,140,141,141,141, - 141,141,141,3,142,142,139,139,122,122, - 90,82,80,169,169,123,123,206,206,206, - 143,143,134,134,207,207,25,25,25,42, - 42,26,26,208,208,179,179,179,180,180, - 209,209,181,181,27,210,210,211,211,182, - 182,182,28,215,215,92,133,133,133,118, - 118,118,192,197,116,64,161,1158,36,2961, - 2960,1139,5486,28,31,32,907,881,27,29, - 2951,26,24,51,1993,107,77,78,109,2020, - 513,2072,565,536,537,538,2040,2180,1507,2087, - 2216,2182,2301,2254,2584,2347,2394,144,274,71, - 36,280,159,145,2470,3597,36,910,33,2528, - 3664,28,31,32,907,881,340,29,1220,540, - 536,537,538,2557,36,910,33,233,2974,28, - 31,32,907,881,27,29,1946,26,24,51, - 1993,107,77,78,109,2020,3129,2072,404,236, - 231,232,2040,2180,2761,2087,2216,2182,2301,2254, - 275,2347,2394,144,317,1049,322,1145,380,145, - 2356,1401,36,910,33,1433,1615,42,31,32, - 907,881,243,246,249,252,3695,338,1520,1509, - 35,338,36,4999,4546,832,2273,3180,36,910, - 33,1293,5503,28,31,32,907,881,58,29, - 2767,1323,2860,2865,3159,3438,3821,4413,2484,36, - 910,33,2853,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,344,2072,1054,71,36,454,2040,2180,5461, - 2087,2216,2182,2301,2254,929,2347,2394,144,387, - 1415,439,448,518,145,160,36,280,3213,524, - 5616,1019,2592,36,910,33,338,3424,1526,31, - 32,907,881,519,2484,36,910,33,2853,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,2020,344,2072,1672, - 2035,2734,1406,2040,2180,5107,2087,2216,2182,2301, - 2254,2084,2347,2394,144,338,36,1509,277,518, - 145,338,36,283,3213,540,536,537,538,1063, - 514,1372,2622,1371,62,2592,36,910,33,519, - 2189,41,31,32,907,881,2884,1804,1987,1611, - 2408,1441,2484,36,910,33,2853,2974,28,31, - 32,907,881,27,29,1946,26,24,51,1993, - 107,77,78,109,2020,344,2072,1539,2006,2067, - 1779,2040,2180,222,2087,2216,2182,2301,2254,2009, - 2347,2394,144,3558,313,2969,514,518,145,1406, - 338,3539,3213,540,536,537,538,694,2725,447, - 2466,2523,1442,2593,1406,557,2408,519,2840,36, - 910,33,2853,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,344,2072,1806,1183,2090,919,2040,2180,5431, - 2087,2216,2182,2301,2254,45,2347,2394,144,1184, - 2275,2034,183,518,145,377,1428,1143,3213,1143, - 2363,36,910,33,514,5622,28,31,32,907, - 881,27,29,519,512,540,536,537,538,253, - 607,2606,1945,608,2408,4380,2910,36,910,33, - 499,2974,28,31,32,907,881,27,29,1946, - 26,24,51,1993,107,77,78,109,2020,2100, - 2072,338,36,1509,279,2040,2180,1780,2087,2216, - 2182,2301,2254,607,2347,2394,144,288,4487,1553, - 515,380,145,2356,2634,36,910,33,2043,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,2020,375,2072,2041, - 2731,1417,3361,2040,2180,5371,2087,2216,2182,2301, - 2254,967,2347,2394,144,338,36,1509,282,380, - 145,2356,1550,36,910,33,2183,5622,28,31, - 32,907,881,60,29,2770,36,910,33,1395, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,109,2020,3555,2072, - 2116,94,386,1415,2040,2180,2189,2087,2216,2182, - 2301,2254,2189,2347,2394,144,544,1705,543,1705, - 552,145,2710,1599,3155,36,910,33,1406,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,2020,1853,2072,304, - 378,1415,2519,2040,2180,303,2087,2216,2182,2301, - 2254,2546,2347,2394,144,2622,1111,294,1940,159, - 145,3155,36,910,33,919,2974,28,31,32, - 907,881,27,29,1946,26,24,51,1993,107, - 77,78,109,2020,3130,2072,1939,2622,36,294, - 2040,2180,3301,2087,2216,2182,2301,2254,325,2347, - 2394,144,1363,338,36,294,374,145,607,3155, - 36,910,33,4583,2974,28,31,32,907,881, - 27,29,1946,26,24,51,1993,107,77,78, - 109,2020,422,2072,1363,444,2620,89,2040,2180, - 103,2087,2216,2182,2301,2254,550,2347,2394,144, - 2592,36,910,33,374,145,3189,31,32,907, - 881,540,536,537,538,523,944,2767,2310,2007, - 3155,36,910,33,2088,2974,28,31,32,907, - 881,27,29,1946,26,24,51,1993,107,77, - 78,109,2020,45,2072,558,373,4442,944,2040, - 2180,1406,2087,2216,2182,2301,2254,607,2347,2394, - 144,666,5137,2729,1172,374,145,2770,36,910, - 33,1406,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,2020, - 1158,2072,298,3663,372,1406,2040,2180,2346,2087, - 2216,2182,2301,2254,326,2347,2394,144,338,36, - 1509,3598,552,145,2976,36,910,33,919,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,2020,526,2072,338, - 36,294,2604,2040,2180,2735,2087,2216,2182,2301, - 2254,2457,2347,2525,165,370,5530,607,2700,36, - 910,33,5241,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,607,2072,431,36,397,5572,2040,2180,2311, - 2087,2216,2182,2301,2254,775,2347,2394,144,1184, - 1373,45,328,143,145,1184,2189,3155,36,910, - 33,2134,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,2020, - 1406,2072,161,338,36,3606,2040,2180,3219,2087, - 2216,2182,2301,2254,1442,2347,2394,144,551,300, - 2467,68,156,145,3155,36,910,33,1738,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,2020,919,2072,787, - 36,1509,277,2040,2180,2762,2087,2216,2182,2301, - 2254,45,2347,2394,144,5129,525,2719,2830,155, - 145,3155,36,910,33,2202,2974,28,31,32, - 907,881,27,29,1946,26,24,51,1993,107, - 77,78,109,2020,430,2072,338,3669,1509,75, - 2040,2180,461,2087,2216,2182,2301,2254,2190,2347, - 2394,144,787,36,1509,3670,154,145,3155,36, - 910,33,3365,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,354,2072,338,36,1509,3679,2040,2180,606, - 2087,2216,2182,2301,2254,2398,2347,2394,144,508, - 338,2725,2519,153,145,3155,36,910,33,1406, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,109,2020,1261,2072, - 1166,382,391,5536,2040,2180,428,2087,2216,2182, - 2301,2254,2099,2347,2394,144,2696,508,2554,508, - 152,145,3155,36,910,33,919,2974,28,31, - 32,907,881,27,29,1946,26,24,51,1993, - 107,77,78,109,2020,377,2072,542,323,45, - 498,2040,2180,738,2087,2216,2182,2301,2254,45, - 2347,2394,144,2620,2397,2450,508,151,145,3155, - 36,910,33,2202,2974,28,31,32,907,881, - 27,29,1946,26,24,51,1993,107,77,78, - 109,2020,45,2072,2697,523,804,554,2040,2180, - 289,2087,2216,2182,2301,2254,45,2347,2394,144, - 882,508,2813,2283,150,145,3155,36,910,33, - 2202,2974,28,31,32,907,881,27,29,1946, - 26,24,51,1993,107,77,78,109,2020,2884, - 2072,1899,562,1905,1992,2040,2180,2599,2087,2216, - 2182,2301,2254,45,2347,2394,144,2249,2727,3487, - 2007,149,145,3155,36,910,33,2202,2974,28, - 31,32,907,881,27,29,1946,26,24,51, - 1993,107,77,78,109,2020,2942,2072,2007,560, - 392,63,2040,2180,428,2087,2216,2182,2301,2254, - 45,2347,2394,144,5009,508,2455,508,148,145, - 3155,36,910,33,865,2974,28,31,32,907, - 881,27,29,1946,26,24,51,1993,107,77, - 78,109,2020,390,2072,2007,379,394,2872,2040, - 2180,428,2087,2216,2182,2301,2254,45,2347,2394, - 144,4511,508,2832,508,147,145,3155,36,910, - 33,305,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,2020, - 605,2072,524,541,393,561,2040,2180,428,2087, - 2216,2182,2301,2254,45,2347,2394,144,4553,508, - 1824,2007,146,145,3155,36,910,33,297,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,2020,45,2072,2007, - 4953,937,2122,2040,2180,1442,2087,2216,2182,2301, - 2254,45,2347,2394,144,2778,508,3422,2766,160, - 145,3155,36,910,33,1063,2974,28,31,32, - 907,881,27,29,1946,26,24,51,1993,107, - 77,78,109,2020,285,2072,2007,25,2369,546, - 2040,2180,2400,2087,2216,2182,2301,2254,775,2347, - 2394,144,1184,508,1442,508,141,145,3274,36, - 910,33,383,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,405,2072,460,351,161,70,2040,2180,1442, - 2087,2216,2182,2301,2254,45,2347,2394,144,1625, - 783,2265,597,190,145,3392,36,910,33,286, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,109,2020,355,2072, - 338,36,861,389,2040,2180,1327,2087,2216,2182, - 2301,2254,327,2347,2525,165,3392,36,910,33, - 2936,2974,28,31,32,907,881,27,29,1946, - 26,24,51,1993,107,77,78,109,2020,3069, - 2072,453,1320,2853,152,2040,2180,4975,2087,2216, - 2182,2301,2254,45,2347,2525,165,1813,338,36, - 861,389,3235,68,338,36,861,389,3392,36, - 910,33,424,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,1555,2072,338,36,861,389,2040,2180,432, - 2087,2216,2182,2301,2254,435,2347,2525,165,3392, - 36,910,33,293,2974,28,31,32,907,881, - 27,29,1946,26,24,51,1993,107,77,78, - 109,2020,2865,2072,434,361,45,953,2040,2180, - 2397,2087,2216,2182,2301,2254,45,2347,2525,165, - 2069,1947,2622,2639,2175,36,278,540,536,537, - 538,3392,36,910,33,3459,2974,28,31,32, - 907,881,27,29,1946,26,24,51,1993,107, - 77,78,109,2020,2188,2072,3075,694,2725,3301, - 2040,2180,157,2087,2216,2182,2301,2254,2705,2347, - 2525,165,3451,36,910,33,423,2974,28,31, - 32,907,881,27,29,1946,26,24,51,1993, - 107,77,78,109,2020,1051,2072,431,36,397, - 2795,2040,2180,381,2087,2216,2182,2301,2254,3003, - 2347,2525,165,1268,36,910,33,5327,4579,28, - 31,32,907,881,340,29,2760,2189,426,508, - 338,36,861,389,540,536,537,538,539,536, - 537,538,1993,36,910,33,5327,3664,28,31, - 32,907,881,340,29,4271,3240,36,910,33, - 69,5503,28,31,32,907,881,57,29,3106, - 299,50,320,1338,322,315,1182,1256,1160,2364, - 3604,333,3290,2847,1184,1295,71,288,1662,36, - 2859,33,5327,4579,28,31,32,907,881,340, - 29,320,1338,322,315,1182,3300,3006,3647,1681, - 3663,1757,2843,539,536,537,538,157,1,2116, - 2731,45,577,201,3425,1860,1550,36,910,33, - 3091,5622,28,31,32,907,881,59,29,45, - 2594,229,2265,1907,307,311,731,320,1338,322, - 315,1182,1256,2547,3162,157,333,1102,2853,45, - 1732,181,2832,1212,45,919,2797,870,1026,204, - 216,3566,203,213,214,215,217,344,1228,1571, - 1507,3116,1707,3647,170,539,536,537,538,3045, - 169,182,185,168,171,172,173,174,175,2831, - 2220,45,1306,61,975,3764,4210,420,2851,3392, - 36,910,33,865,2974,28,31,32,907,881, - 27,29,1946,26,24,51,1993,107,77,78, - 109,2020,403,2072,338,36,861,389,2040,2180, - 157,2087,2216,2182,2301,2254,1408,3221,3392,36, - 910,33,865,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,4265,2072,1369,2975,274,2175,2040,2180,508, - 2087,2216,2182,2301,3214,3036,2629,3392,36,910, - 33,2845,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,2020, - 54,2072,338,36,861,389,2040,2180,1494,2087, - 2216,2182,3201,2659,36,910,33,2883,4579,28, - 31,32,907,881,340,29,508,276,1904,3127, - 249,36,861,389,865,43,2440,1719,539,536, - 537,538,3124,50,448,3198,338,36,861,389, - 1160,4979,3417,2543,72,990,1184,88,1911,36, - 910,33,5327,3664,28,31,32,907,881,340, - 29,50,320,1338,322,316,1182,1256,1160,1139, - 3302,334,2189,539,536,537,538,50,1442,157, - 431,36,397,3343,1160,2181,163,2674,2920,353, - 4316,2555,607,3510,36,861,389,5545,2780,1659, - 1694,347,2122,1605,350,1285,238,320,1338,322, - 315,1182,45,240,4265,180,3878,3290,565,536, - 537,538,329,336,607,565,536,537,538,5559, - 565,536,537,538,274,3392,36,910,33,2189, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,109,2020,45,2072, - 1904,2947,5119,233,2040,2180,52,2087,2216,3203, - 233,338,36,861,389,233,508,2981,3044,307, - 311,731,199,1854,3070,236,231,232,45,2440, - 3120,3141,241,231,232,3685,275,245,231,232, - 3056,1786,3561,540,536,537,538,53,539,536, - 537,538,433,1228,1781,36,861,389,243,246, - 249,252,3695,45,45,830,3187,3724,1184,3937, - 2920,832,1522,36,910,33,5327,3664,28,31, - 32,907,881,340,29,3095,3555,3537,2860,2865, - 3159,3438,3821,4413,784,50,869,539,536,537, - 538,157,1160,2582,335,336,872,1442,2838,961, - 3333,36,910,33,4316,2974,28,31,32,907, - 881,27,29,1946,26,24,51,1993,87,77, - 78,320,1338,322,315,1182,1050,3392,36,910, - 33,3290,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,2020, - 1567,2072,1735,2189,45,2489,2040,2180,1184,2087, - 3107,2382,36,2859,33,5327,3664,28,31,32, - 907,881,340,29,1377,2639,1442,2113,431,36, - 1699,3714,2175,36,281,98,3329,536,537,538, - 324,157,3549,308,311,731,198,45,3215,532, - 45,1262,3551,3165,1712,862,2123,36,2859,33, - 5327,3664,28,31,32,907,881,340,29,50, - 320,1338,322,315,1182,90,1160,711,103,1425, - 1102,539,536,537,538,2472,36,2859,33,5327, - 3664,28,31,32,907,881,340,29,3165,338, - 36,861,389,1115,565,536,537,538,3187,2189, - 3329,536,537,538,99,320,1338,322,315,1182, - 508,2801,2392,864,45,1102,5224,3165,2986,5658, - 420,2851,45,2733,2814,3039,3899,5383,508,508, - 274,1278,3476,2600,320,1338,322,315,1182,233, - 508,452,407,352,1102,1933,36,910,33,5401, - 3664,28,31,32,907,881,340,29,3478,3212, - 91,248,231,232,5662,420,2851,3392,36,910, - 33,3437,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,2020, - 90,2072,341,5658,420,2851,2040,2180,353,3122, - 1697,3358,36,278,320,1338,322,315,1182,353, - 345,2122,1605,350,2795,3187,45,3243,2133,3308, - 2808,345,2122,1605,350,539,536,537,538,343, - 3362,353,357,71,36,454,45,3363,5461,2509, - 1184,532,908,345,2122,1605,350,3392,36,910, - 33,2792,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,2020, - 775,2072,1693,157,1184,2903,2040,2180,3364,3132, - 3597,2935,36,910,33,5253,3664,28,31,32, - 907,881,340,29,2443,36,910,33,5327,3664, - 28,31,32,907,881,340,29,161,3392,36, - 910,33,352,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,508,2072,508,2189,2189,3420,2040,3029,367, - 320,1338,322,315,1182,1553,3421,45,1512,356, - 1757,3901,3425,320,1338,322,315,1182,532,3426, - 179,45,3451,3676,3988,2399,2457,353,2189,3480, - 3020,5530,3200,565,536,537,538,202,200,345, - 2122,1605,350,3392,36,910,33,2133,2974,28, - 31,32,907,881,27,29,1946,26,24,51, - 1993,107,77,78,109,2020,508,2072,451,2466, - 2523,2802,2040,3056,3392,36,910,33,233,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,2020,4033,2072,508, - 251,231,232,2040,3080,3392,36,910,33,3482, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,109,2020,268,2072, - 4078,2189,577,1738,2040,3082,1944,36,910,33, - 2453,3664,28,31,32,907,881,340,29,2693, - 2189,229,1843,36,910,33,5401,3664,28,31, - 32,907,881,340,29,157,45,508,3458,3112, - 2853,181,2832,3582,223,919,3483,3001,508,204, - 216,3566,203,213,214,215,217,45,45,344, - 3518,3188,3305,194,170,317,1049,322,68,431, - 169,508,184,168,171,172,173,174,175,67, - 508,320,1338,322,315,1182,3213,1300,36,910, - 33,527,4579,28,31,32,907,881,340,29, - 1520,2921,66,3562,249,36,861,389,353,3245, - 3007,65,539,536,537,538,3567,3109,3625,3627, - 345,2122,1605,350,3398,3568,6279,6279,528,990, - 6279,1300,36,910,33,1509,4579,28,31,32, - 907,881,340,29,508,50,320,1338,322,318, - 1182,1256,1160,1883,1382,334,539,536,537,538, - 539,536,537,538,3069,6279,2368,508,2853,6279, - 2853,3179,1019,990,6279,1391,6279,614,6279,539, - 536,537,538,6279,6279,6279,2558,3235,6279,3235, - 320,1338,322,316,1182,1256,1306,6279,1550,334, - 3392,36,910,33,1904,2974,28,31,32,907, - 881,27,29,1946,26,24,51,1993,107,77, - 78,109,2020,6279,2072,3392,36,910,33,3085, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,109,2020,357,2072, - 6279,6279,577,6279,3105,6279,2289,6279,6279,508, - 361,1803,362,508,6279,6279,6279,6279,6279,6279, - 2263,229,6279,6279,2920,45,3230,2622,2639,1184, - 508,539,536,537,538,157,565,536,537,538, - 56,181,2832,446,55,919,1278,577,2342,204, - 216,3566,203,213,214,215,217,6279,331,336, - 6279,3580,157,6279,170,6279,229,6279,1904,3608, - 169,6279,3460,168,171,172,173,174,175,3035, - 157,233,3108,2853,6279,6279,181,2832,535,1904, - 919,1904,577,6279,204,216,3566,203,213,214, - 215,217,344,254,231,232,6279,6279,6279,170, - 6279,229,775,6279,6279,169,1184,179,168,171, - 172,173,174,175,1281,157,508,508,2853,1101, - 6279,181,2832,624,6279,919,6279,577,2920,204, - 216,3566,203,213,214,215,217,3235,2490,161, - 3247,6279,2853,6279,170,6279,229,102,4168,2920, - 169,2920,177,168,171,172,173,174,175,6279, - 157,344,3204,336,6279,6279,181,2832,713,6279, - 919,530,577,6279,204,216,3566,203,213,214, - 215,217,6279,3617,336,3618,336,6279,3599,170, - 6279,229,775,6279,6279,169,1184,178,168,171, - 172,173,174,175,3819,157,6279,6279,6279,6279, - 506,181,2832,802,6279,919,6279,577,6279,204, - 216,3566,203,213,214,215,217,6279,6279,161, - 6279,6279,6279,6279,170,6279,229,6279,6279,6279, - 169,6279,188,168,171,172,173,174,175,775, - 157,6279,6279,1184,504,505,181,2832,891,6279, - 919,6279,577,6279,204,216,3566,203,213,214, - 215,217,443,6279,457,6279,6279,6279,6279,170, - 6279,229,6279,6279,6279,169,161,3684,168,171, - 172,173,174,175,3823,157,6279,6279,6279,6279, - 6279,181,2832,980,6279,919,6279,577,6279,204, - 216,3566,203,213,214,215,217,6279,6279,6279, - 6279,6279,6279,6279,170,6279,229,6279,6279,6279, - 169,6279,193,168,171,172,173,174,175,6279, - 157,6279,6279,6279,3727,6279,181,2832,1069,45, - 919,3936,577,1184,204,216,3566,203,213,214, - 215,217,6279,6279,6279,6279,6279,6279,6279,170, - 6279,229,6279,6279,6279,169,6279,187,168,171, - 172,173,174,175,1741,157,157,6279,2853,6279, - 2900,181,2832,3631,6279,919,6279,6279,6279,204, - 216,3566,203,213,214,215,217,229,6279,6279, - 6279,6279,6279,6279,170,539,536,537,538,6279, - 169,6279,195,168,171,172,173,174,175,6279, - 6279,6279,2449,6279,6279,206,216,3566,205,213, - 214,215,217,6279,6279,338,36,861,389,6279, - 6279,1571,36,910,33,5327,3664,28,31,32, - 907,881,340,29,6279,207,209,211,295,296, - 6279,638,6279,218,208,210,540,536,537,538, - 6279,6279,6279,6279,6279,6279,50,6279,3040,36, - 861,389,13,47,5008,6279,1522,36,910,33, - 5327,3664,28,31,32,907,881,340,29,6279, - 320,1338,322,315,1182,6279,6279,6279,6279,6279, - 3816,540,536,537,538,3392,36,910,33,274, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,109,2020,6279,3005, - 6279,6279,6279,6279,6279,320,1338,322,315,1182, - 342,36,861,389,6279,3816,6279,581,3392,36, - 910,33,6279,2974,28,31,32,907,881,27, - 29,1946,26,24,51,1993,107,77,78,109, - 2020,3607,3007,3559,36,861,389,6279,2780,6279, - 6279,50,6279,6279,6279,6279,239,6279,1160,48, - 6279,6279,73,6279,6279,6279,6279,6279,565,536, - 537,538,1955,6279,6279,6279,2853,1273,45,6279, - 6279,6279,1184,6279,274,6279,6279,6279,6279,6279, - 6279,3392,36,910,33,229,2974,28,31,32, - 907,881,27,29,1946,26,24,51,1993,107, - 77,78,86,233,6279,157,6279,427,36,861, - 389,6279,3640,206,216,3566,205,213,214,215, - 217,6279,6279,6279,6279,237,231,232,6279,6279, - 6279,2045,6279,6279,6279,2853,275,6279,6279,6279, - 6279,6279,6279,207,209,211,295,296,50,638, - 6279,218,208,210,229,1160,48,6279,244,247, - 250,253,3695,6279,6279,6279,1732,6279,6279,6279, - 1339,832,5008,2135,792,6279,6279,2853,6279,6279, - 6279,6279,206,216,3566,205,213,214,215,217, - 6279,539,536,537,538,6279,229,6279,6279,249, - 36,861,389,427,36,861,389,2355,1306,6279, - 6279,6279,207,209,211,295,296,6279,638,6279, - 218,208,210,6279,206,216,3566,205,213,214, - 215,217,539,536,537,538,6279,6279,6279,1928, - 50,5008,6279,6279,50,6279,6279,1160,4587,990, - 6279,1160,48,6279,207,209,211,295,296,6279, - 638,6279,218,208,210,6279,3179,6279,6279,6279, - 3112,2549,6279,6279,6279,6279,6279,6279,865,6279, - 6279,1975,2561,5008,3392,36,910,33,6279,2974, - 28,31,32,907,881,27,29,1946,26,24, - 51,1993,107,77,78,109,3014,3392,36,910, - 33,6279,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,109,3016, - 3392,36,910,33,6279,2974,28,31,32,907, - 881,27,29,1946,26,24,51,1993,107,77, - 78,109,3026,3392,1520,910,2758,6279,2974,28, - 31,32,907,881,27,29,1946,26,24,51, - 1993,107,77,78,85,3392,36,910,33,6279, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,84,3392,36,910, - 33,6279,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,83,3392, - 36,910,33,6279,2974,28,31,32,907,881, - 27,29,1946,26,24,51,1993,107,77,78, - 82,3392,36,910,33,6279,2974,28,31,32, - 907,881,27,29,1946,26,24,51,1993,107, - 77,78,81,3392,36,910,33,6279,2974,28, - 31,32,907,881,27,29,1946,26,24,51, - 1993,107,77,78,80,3392,36,910,33,6279, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,79,3214,36,910, - 33,6279,2974,28,31,32,907,881,27,29, - 1946,26,24,51,1993,107,77,78,105,3392, - 36,910,33,6279,2974,28,31,32,907,881, - 27,29,1946,26,24,51,1993,107,77,78, - 111,3392,36,910,33,6279,2974,28,31,32, - 907,881,27,29,1946,26,24,51,1993,107, - 77,78,110,3392,36,910,33,6279,2974,28, - 31,32,907,881,27,29,1946,26,24,51, - 1993,107,77,78,108,3392,36,910,33,2725, - 2974,28,31,32,907,881,27,29,1946,26, - 24,51,1993,107,77,78,106,1865,6279,2112, - 6279,2853,6279,6279,539,536,537,538,1617,1281, - 6279,6279,2853,2853,6279,6279,6279,6279,6279,2225, - 229,990,6279,2853,539,536,537,538,6279,6279, - 6279,229,3235,6279,6279,6279,6279,6279,6279,6279, - 6279,1306,229,2549,6279,6279,6279,6279,206,216, - 3566,205,213,214,215,217,6279,6279,6279,206, - 216,3566,205,213,214,215,217,6279,6279,6279, - 206,216,3566,205,213,214,215,217,207,209, - 211,295,296,6279,638,6279,520,208,210,207, - 209,211,295,296,6279,638,6279,219,208,210, - 207,209,211,295,296,506,638,2315,521,208, - 210,2853,6279,6279,6279,2579,6279,6279,2405,2833, - 6279,6279,2853,2853,6279,6279,6279,6279,6279,1223, - 229,6279,6279,2853,2796,6279,6279,249,36,861, - 389,229,3235,6279,6279,6279,6279,6279,6279,503, - 505,6279,229,6279,6279,6279,6279,6279,206,216, - 3566,205,213,214,215,217,6279,6279,6279,206, - 216,3566,205,213,214,215,217,6279,50,6279, - 2118,408,625,6279,6279,1160,48,2686,207,209, - 211,295,296,6279,638,6279,306,208,210,207, - 209,211,295,296,851,638,6279,500,208,210, - 409,410,411,295,296,506,638,45,6279,6279, - 6279,577,1331,6279,2022,6279,2853,2796,2853,2752, - 6279,6279,6279,45,6279,6279,1752,577,6279,6279, - 344,520,36,861,389,229,6279,3235,6279,539, - 536,537,538,2022,157,6279,344,2853,2752,503, - 505,189,6279,6279,6279,6279,990,3384,6279,6279, - 157,6279,6279,2118,408,625,3235,2086,539,536, - 537,538,50,3213,6279,6279,6279,45,1256,1160, - 48,1184,333,6279,6279,990,6279,3579,2039,6279, - 412,414,6279,409,410,411,295,296,1459,638, - 6279,6279,6279,6279,6279,6279,6279,1256,2203,5318, - 361,333,6279,2752,157,1900,3423,2267,5222,1752, - 6279,3027,2752,6279,6279,3604,3218,2622,2639,577, - 6279,6279,6279,539,536,537,538,6279,2763,361, - 6279,6279,539,536,537,538,6279,6279,3306,6279, - 990,6279,6279,6279,6279,3218,2622,2639,6279,990, - 6279,2267,157,6279,6279,6279,2752,45,181,2832, - 45,1184,1256,2267,2853,6279,334,6279,2752,6279, - 6279,1256,6279,412,415,333,539,536,537,538, - 6279,2267,6279,344,353,6279,2752,196,539,536, - 537,538,6279,990,157,6279,347,2122,1605,350, - 6279,3840,3691,6279,6279,990,539,536,537,538, - 3213,2267,6279,6279,6279,1256,2752,6279,6279,333, - 6279,6279,6279,990,6279,2937,6279,1256,3612,2180, - 6279,333,577,6279,2752,1684,539,536,537,538, - 2752,249,36,861,389,1256,5455,6279,6279,333, - 6279,344,6279,990,539,536,537,538,5318,6279, - 539,536,537,538,6279,157,2549,36,861,389, - 6279,990,189,6279,6279,1256,2763,990,3384,5449, - 6279,6279,50,427,36,861,389,6279,6279,1160, - 48,6279,6279,1256,6279,6279,6279,5449,3485,1256, - 6279,6279,2853,334,6279,5448,197,50,2210,6279, - 249,36,861,389,1160,2621,249,36,861,389, - 6279,344,6279,6279,50,249,36,861,389,531, - 6279,1160,2713,2674,6279,6279,6279,191,6279,249, - 36,861,389,6279,6279,45,6279,6279,3213,577, - 4308,50,338,36,861,389,6279,50,1160,48, - 6279,95,6279,534,1160,48,50,6279,344,6279, - 6279,45,6279,1160,48,577,6279,2268,6279,97, - 50,6279,157,2274,6279,6279,6279,1160,48,2469, - 6279,6279,2303,50,344,3213,338,36,861,389, - 1160,925,338,36,861,389,2931,45,157,45, - 2135,2853,45,577,6279,2086,577,3458,6279,6279, - 6279,3213,6279,6279,45,45,6279,6279,2853,2853, - 344,6279,344,6279,6279,344,2776,50,3094,6279, - 6279,6279,3299,50,1160,3291,157,344,344,157, - 1160,2582,6279,189,45,6279,189,3213,2853,3384, - 6279,6279,3384,539,536,537,538,539,536,537, - 538,6279,2944,6279,3213,3213,6279,344,45,45, - 2938,6279,2853,2853,2449,6279,6279,6279,6279,2950, - 510,6279,6279,6279,6279,6279,6279,6279,6279,6279, - 6279,344,344,6279,3213,3960,6279,6279,6279,6279, - 6279,6279,6279,6279,6279,6279,6279,6279,3496,508, - 6279,3529,6279,6279,6279,6279,6279,6279,3213,3213, - 6279,6279,6279,6279,6279,6279,6279,6279,6279,6279, - 6279,6279,6279,3421,535,6279,0,1,230,600, - 0,502,4997,0,1,230,0,40,6294,0, - 40,6293,0,1,2482,0,691,1,0,40, - 1,6294,0,40,1,6293,0,1,3889,0, - 1,707,0,230,220,0,721,224,0,829, - 224,0,841,224,0,721,225,0,829,225, - 0,841,225,0,721,226,0,829,226,0, - 841,226,0,841,395,0,829,395,0,721, - 395,0,284,395,0,721,227,0,829,227, - 0,841,227,0,284,287,0,721,228,0, - 829,228,0,841,228,0,6514,242,0,6513, - 242,0,721,242,0,829,242,0,841,242, - 0,6618,242,0,6617,242,0,6541,242,0, - 6540,242,0,6539,242,0,6538,242,0,6537, - 242,0,6536,242,0,6535,242,0,6534,242, - 0,6552,242,0,6551,242,0,6550,242,0, - 6549,242,0,6548,242,0,6547,242,0,6546, - 242,0,6545,242,0,6544,242,0,6543,242, - 0,6542,242,0,40,242,6294,0,40,242, - 6293,0,6318,242,0,1789,388,0,6294,49, - 0,6293,49,0,1,841,0,1,829,0, - 1,721,0,1,332,0,39,707,0,39, - 6294,0,39,6293,0,455,1832,0,441,1846, - 0,1789,30,0,6291,1,0,841,573,0, - 829,573,0,721,573,0,576,573,0,576, - 572,0,1893,319,0,1,575,0,1,445, - 0,459,1564,0,458,2075,0,36,34,0, - 48,38,0,230,221,0,502,1758,0,6318, - 1,230,0,40,1,230,0,230,417,0, - 1,1501,0,1,6552,0,1,6551,0,1, - 6550,0,1,6549,0,1,6548,0,1,6547, - 0,1,6546,0,1,6545,0,1,6544,0, - 1,6543,0,1,6542,0,6294,38,0,6293, - 38,0,44,6316,0,44,38,0,6291,384, - 0,6290,384,0,1,1503,0,1,2437,0, - 6289,406,0,6288,406,0,230,416,0,3504, - 127,0,6287,1,0,841,446,0,829,446, - 0,721,446,0,332,446,0,6285,1,0, - 6284,1,0,1521,92,0,33,35,0,40, - 707,0,6316,46,0,38,46,0,1,230, - 3248,0,6288,230,0,3280,230,0,6318,1, - 0,40,1,0,238,1515,0,389,33,0, - 388,30,0,3504,129,0,3504,128,0,3450, - 230,0,10,12,0,841,570,0,829,570, - 0,721,570,0,841,569,0,829,569,0, - 721,569,0,539,540,0,1,93,0,8, - 10,12,0,841,570,571,0,829,570,571, - 0,721,570,571,0,570,571,0,6294,2, - 38,0,6293,2,38,0,6294,37,0,6293, - 37,0,3677,384,0,841,96,0,829,96, - 0,721,96,0,332,96,0,36,74,0, - 8,12,0,279,3922,0,186,4123,0 + 45,45,45,45,45,45,45,44,37,155, + 155,103,103,190,190,98,217,217,75,75, + 75,75,75,75,75,75,75,76,76,76, + 73,73,67,67,191,191,77,77,77,110, + 110,192,192,78,78,78,193,193,79,79, + 79,79,79,80,80,90,90,90,90,90, + 90,90,90,54,54,54,54,54,111,111, + 109,109,55,194,23,23,23,23,23,53, + 53,93,93,93,93,93,162,162,157,157, + 157,157,157,158,158,158,159,159,159,160, + 160,160,161,161,161,94,94,94,94,94, + 95,95,95,13,13,13,13,13,13,13, + 13,13,13,13,104,129,129,129,129,129, + 129,127,127,127,163,128,128,195,165,165, + 164,164,131,131,112,84,84,85,86,57, + 52,166,166,58,92,92,167,167,156,156, + 132,133,133,134,70,70,168,168,63,63, + 63,61,61,60,64,64,87,87,69,69, + 69,65,96,96,106,105,105,71,71,62, + 62,66,66,50,107,107,107,99,99,99, + 100,100,101,101,101,102,102,113,113,113, + 115,115,114,114,218,218,97,97,197,197, + 197,197,197,136,51,51,170,196,196,137, + 137,137,137,138,172,198,198,41,41,126, + 139,139,139,139,200,117,116,116,130,130, + 130,173,174,174,174,174,174,174,174,174, + 174,174,174,202,202,199,199,201,201,119, + 120,120,120,120,121,203,122,118,118,204, + 204,175,175,175,175,108,108,108,205,205, + 8,8,9,206,206,207,176,169,169,177, + 177,178,179,179,7,7,10,208,208,208, + 208,208,208,208,208,208,208,208,208,208, + 208,208,208,208,208,208,208,208,208,208, + 208,208,208,208,208,208,208,208,208,208, + 208,208,208,208,208,208,208,208,208,82, + 88,88,180,180,141,141,142,142,142,142, + 142,142,3,143,143,140,140,123,123,91, + 83,81,171,171,124,124,209,209,209,144, + 144,135,135,210,210,25,25,25,42,42, + 26,26,211,211,181,181,181,182,182,212, + 212,183,183,27,27,213,213,184,184,184, + 28,59,214,214,215,215,185,185,185,145, + 145,145,56,93,134,134,134,119,119,119, + 195,200,117,65,163,1158,36,3042,3019,1997, + 5487,28,31,32,892,872,27,29,3003,26, + 24,51,2030,107,77,78,109,2053,1281,2093, + 573,535,536,537,2090,1142,2147,2126,2220,2213, + 2276,2227,2611,2283,2314,144,274,1261,36,453, + 159,145,5466,1540,1824,36,943,33,2535,2897, + 28,31,32,892,872,339,29,539,535,536, + 537,222,2550,36,943,33,233,3355,28,31, + 32,892,872,27,29,2006,26,24,51,2030, + 107,77,78,109,2053,2653,2093,403,236,231, + 232,2090,1297,2147,2126,2220,2213,2276,2227,275, + 2283,2314,144,1855,316,953,321,379,145,2180, + 1994,36,943,33,1264,541,42,31,32,892, + 872,243,246,249,252,4332,73,340,539,535, + 536,537,3245,162,877,2293,2456,3209,36,943, + 33,251,5508,28,31,32,892,872,58,29, + 2818,429,3389,785,3101,3678,4075,4619,2485,36, + 943,33,2865,3355,28,31,32,892,872,27, + 29,2006,26,24,51,2030,107,77,78,109, + 2053,343,2093,1261,36,453,1658,2090,5466,2147, + 2126,2220,2213,2276,2227,1425,2283,2314,144,386, + 1421,1387,2661,517,145,1261,36,280,2848,3330, + 2478,2395,858,3386,446,2362,2370,1387,36,294, + 573,535,536,537,518,2485,36,943,33,2865, + 3355,28,31,32,892,872,27,29,2006,26, + 24,51,2030,107,77,78,109,2053,343,2093, + 340,1732,2774,1180,2090,4401,2147,2126,2220,2213, + 2276,2227,2980,2283,2314,144,233,1946,1144,241, + 517,145,857,542,1797,2848,538,535,536,537, + 840,513,2484,183,2363,2661,62,2013,245,231, + 232,518,322,693,539,535,536,537,1865,1978, + 2013,2321,2811,1856,2485,36,943,33,2865,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,107,77,78,109,2053,343,2093,1385, + 330,312,289,2090,1335,2147,2126,2220,2213,2276, + 2227,3022,2283,2314,144,2865,2086,799,513,517, + 145,5517,840,2977,2848,539,535,536,537,1946, + 450,2362,2370,430,3227,2415,2013,3311,2321,1383, + 518,2814,36,943,33,2865,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,109,2053,343,2093,1387,1663,1654,35, + 2090,1903,2147,2126,2220,2213,2276,2227,45,2283, + 2314,144,1183,1945,1208,288,517,145,1387,36, + 283,2848,2978,3446,36,943,33,513,5508,28, + 31,32,892,872,57,29,2565,518,361,1387, + 36,801,388,447,2447,1905,842,2321,2277,2741, + 2879,36,943,33,1604,3355,28,31,32,892, + 872,27,29,2006,26,24,51,2030,107,77, + 78,109,2053,2272,2093,1387,36,4752,4418,2090, + 50,2147,2126,2220,2213,2276,2227,47,2283,2314, + 144,1387,36,3691,514,379,145,2180,2619,36, + 943,33,1326,3355,28,31,32,892,872,27, + 29,2006,26,24,51,2030,107,77,78,109, + 2053,429,2093,1387,36,1654,277,2090,2954,2147, + 2126,2220,2213,2276,2227,447,2283,2314,144,1387, + 36,1654,279,379,145,2180,2749,36,943,33, + 3582,3355,28,31,32,892,872,27,29,2006, + 26,24,51,2030,107,77,78,109,2053,2682, + 2093,340,61,4772,74,2090,5411,2147,2126,2220, + 2213,2276,2227,716,2283,2314,144,385,1421,324, + 2013,551,145,3125,36,943,33,3088,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,109,2053,1934,2093,340,2041, + 36,278,2090,5424,2147,2126,2220,2213,2276,2227, + 45,2283,2314,144,1183,377,1421,2169,159,145, + 1387,36,801,388,3125,36,943,33,2963,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,107,77,78,109,2053,157,2093,1426, + 2774,1286,294,2090,2079,2147,2126,2220,2213,2276, + 2227,274,2283,2314,144,1387,36,294,3070,373, + 145,1129,3125,36,943,33,1056,3355,28,31, + 32,892,872,27,29,2006,26,24,51,2030, + 107,77,78,109,2053,390,2093,1308,45,427, + 3024,2090,4329,2147,2126,2220,2213,2276,2227,549, + 2283,2314,144,3089,36,943,33,373,145,1996, + 31,32,892,872,276,45,381,3273,2818,5170, + 1387,36,801,388,3125,36,943,33,2733,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,107,77,78,109,2053,498,2093,340, + 372,1919,956,2090,5453,2147,2126,2220,2213,2276, + 2227,452,2283,2314,144,1281,2980,2869,2216,373, + 145,2749,36,943,33,2745,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,109,2053,340,2093,497,2544,371,5279, + 2090,2013,2147,2126,2220,2213,2276,2227,303,2283, + 2314,144,1387,36,1654,282,551,145,2946,36, + 943,33,3070,3355,28,31,32,892,872,27, + 29,2006,26,24,51,2030,107,77,78,109, + 2053,522,2093,2774,36,294,1372,2090,2586,2147, + 2126,2220,2213,2276,2227,325,2283,2377,165,438, + 369,3528,353,2684,36,943,33,518,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,109,2053,2133,2093,2726,1417, + 1308,2032,2090,5336,2147,2126,2220,2213,2276,2227, + 3279,2283,2314,144,1183,3273,1496,327,143,145, + 2519,460,3125,36,943,33,1903,3355,28,31, + 32,892,872,27,29,2006,26,24,51,2030, + 107,77,78,109,2053,45,2093,161,3025,748, + 554,2090,1724,2147,2126,2220,2213,2276,2227,45, + 2283,2314,144,949,550,956,3218,156,145,3125, + 36,943,33,2113,3355,28,31,32,892,872, + 27,29,2006,26,24,51,2030,107,77,78, + 109,2053,565,2093,1141,2041,36,281,2090,5522, + 2147,2126,2220,2213,2276,2227,45,2283,2314,144, + 815,3070,2132,2967,155,145,3125,36,943,33, + 2743,3355,28,31,32,892,872,27,29,2006, + 26,24,51,2030,107,77,78,109,2053,522, + 2093,1655,36,280,2983,2090,5600,2147,2126,2220, + 2213,2276,2227,1373,2283,2314,144,1387,36,1654, + 3690,154,145,3125,36,943,33,1432,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,109,2053,2896,2093,2938,36, + 1654,277,2090,567,2147,2126,2220,2213,2276,2227, + 459,2283,2314,144,555,696,443,354,153,145, + 3125,36,943,33,2594,3355,28,31,32,892, + 872,27,29,2006,26,24,51,2030,107,77, + 78,109,2053,2371,2093,1387,3737,1654,75,2090, + 697,2147,2126,2220,2213,2276,2227,1949,2283,2314, + 144,2938,36,1654,3739,152,145,3125,36,943, + 33,1433,3355,28,31,32,892,872,27,29, + 2006,26,24,51,2030,107,77,78,109,2053, + 2013,2093,1387,36,1654,3776,2090,874,2147,2126, + 2220,2213,2276,2227,45,2283,2314,144,1183,2980, + 1387,3324,151,145,3125,36,943,33,3011,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,107,77,78,109,2053,799,2093,560, + 1553,3323,3131,2090,4474,2147,2126,2220,2213,2276, + 2227,45,2283,2314,144,894,3159,525,3269,150, + 145,3125,36,943,33,1863,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,109,2053,2013,2093,2044,45,558,3457, + 2090,3727,2147,2126,2220,2213,2276,2227,45,2283, + 2314,144,3973,3070,875,2980,149,145,3125,36, + 943,33,3153,3355,28,31,32,892,872,27, + 29,2006,26,24,51,2030,107,77,78,109, + 2053,799,2093,3156,45,378,3070,2090,4371,2147, + 2126,2220,2213,2276,2227,45,2283,2314,144,4435, + 2980,524,3387,148,145,3125,36,943,33,3250, + 3355,28,31,32,892,872,27,29,2006,26, + 24,51,2030,107,77,78,109,2053,45,2093, + 2903,45,874,3271,2090,3148,2147,2126,2220,2213, + 2276,2227,326,2283,2314,144,1281,2980,3006,1052, + 147,145,3125,36,943,33,963,3355,28,31, + 32,892,872,27,29,2006,26,24,51,2030, + 107,77,78,109,2053,5123,2093,570,2779,94, + 3567,2090,1281,2147,2126,2220,2213,2276,2227,300, + 2283,2314,144,1920,2980,3006,3387,146,145,3125, + 36,943,33,2454,3355,28,31,32,892,872, + 27,29,2006,26,24,51,2030,107,77,78, + 109,2053,298,2093,540,561,1297,71,2090,3070, + 2147,2126,2220,2213,2276,2227,404,2283,2314,144, + 2452,2980,421,597,160,145,3125,36,943,33, + 2366,3355,28,31,32,892,872,27,29,2006, + 26,24,51,2030,107,77,78,109,2053,389, + 2093,559,2581,36,278,2090,1381,2147,2126,2220, + 2213,2276,2227,45,2283,2314,144,1187,1779,36, + 396,141,145,3244,36,943,33,1910,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,109,2053,45,2093,52,45, + 2355,72,2090,3039,2147,2126,2220,2213,2276,2227, + 45,2283,2314,144,2777,3006,3675,3006,190,145, + 3362,36,943,33,1792,3355,28,31,32,892, + 872,27,29,2006,26,24,51,2030,107,77, + 78,109,2053,1427,2093,1387,36,801,388,2090, + 686,2147,2126,2220,2213,2276,2227,1921,2283,2377, + 165,3362,36,943,33,2779,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,109,2053,2876,2093,431,543,1797,304, + 2090,297,2147,2126,2220,2213,2276,2227,1081,2283, + 2377,165,3089,36,943,33,1403,3006,41,31, + 32,892,872,2006,3362,36,943,33,423,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,107,77,78,109,2053,2272,2093,1387, + 36,801,388,2090,2188,2147,2126,2220,2213,2276, + 2227,3012,2283,2377,165,3362,36,943,33,293, + 3355,28,31,32,892,872,27,29,2006,26, + 24,51,2030,107,77,78,109,2053,45,2093, + 434,285,2484,607,2090,3088,2147,2126,2220,2213, + 2276,2227,3018,2283,2377,165,3089,36,943,33, + 964,2519,3217,31,32,892,872,2185,3362,36, + 943,33,3672,3355,28,31,32,892,872,27, + 29,2006,26,24,51,2030,107,77,78,109, + 2053,553,2093,1387,36,801,388,2090,1523,2147, + 2126,2220,2213,2276,2227,3085,2283,2377,165,3421, + 36,943,33,422,3355,28,31,32,892,872, + 27,29,2006,26,24,51,2030,107,77,78, + 109,2053,45,2093,433,3279,3454,3274,2090,1183, + 2147,2126,2220,2213,2276,2227,74,2283,2377,165, + 1268,36,943,33,5270,4715,28,31,32,892, + 872,339,29,391,1387,3680,425,427,1387,36, + 801,388,161,3599,3088,538,535,536,537,2443, + 36,943,33,5270,2897,28,31,32,892,872, + 339,29,4336,340,3150,36,943,33,5545,5605, + 28,31,32,892,872,27,29,3034,511,50, + 319,1388,321,314,1092,1526,1487,1209,2980,332, + 3094,1387,36,801,388,1313,36,2956,33,5270, + 4715,28,31,32,892,872,339,29,3141,319, + 1388,321,314,1092,2264,556,3256,2309,5082,852, + 538,535,536,537,45,2013,1,45,585,3243, + 585,1337,274,1398,36,943,33,3105,5605,28, + 31,32,892,872,60,29,45,343,1615,229, + 1040,3041,306,310,725,319,1388,321,314,1092, + 1526,157,393,157,332,1889,427,45,2650,181, + 3097,3451,799,799,2848,1369,608,204,216,2802, + 203,213,214,215,217,572,1667,1506,380,2272, + 2528,3256,376,170,89,340,2609,103,3272,169, + 182,185,168,171,172,173,174,175,788,2129, + 2980,1779,36,396,4743,419,2943,3362,36,943, + 33,1220,3355,28,31,32,892,872,27,29, + 2006,26,24,51,2030,107,77,78,109,2053, + 25,2093,1387,36,801,388,2090,2272,2147,2126, + 2220,2213,2276,2227,2980,3399,3362,36,943,33, + 1081,3355,28,31,32,892,872,27,29,2006, + 26,24,51,2030,107,77,78,109,2053,2483, + 2093,1029,3736,432,571,2090,3309,2147,2126,2220, + 2213,2276,3360,3212,2980,374,2888,3362,36,943, + 33,3086,3355,28,31,32,892,872,27,29, + 2006,26,24,51,2030,107,77,78,109,2053, + 2217,2093,508,545,350,2980,2090,2877,2147,2126, + 2220,2213,3310,1839,36,943,33,3006,4715,28, + 31,32,892,872,339,29,2174,539,535,536, + 537,1047,36,801,388,70,43,2353,538,535, + 536,537,2369,36,943,33,2460,2897,28,31, + 32,892,872,339,29,920,3070,1494,3328,2091, + 36,943,33,5270,2897,28,31,32,892,872, + 339,29,50,319,1388,321,315,1092,1526,1487, + 1466,2980,333,1405,538,535,536,537,2904,3243, + 523,382,5368,1387,36,801,388,2518,1029,1230, + 352,4503,316,953,321,3480,36,801,388,1281, + 2791,69,346,1630,1395,349,3390,3451,238,319, + 1388,321,314,1092,1779,36,396,3599,3455,3094, + 573,535,536,537,50,323,3600,1047,36,801, + 388,1487,3393,45,531,98,274,3456,3362,36, + 943,33,299,3355,28,31,32,892,872,27, + 29,2006,26,24,51,2030,107,77,78,109, + 2053,402,2093,45,2353,352,233,2090,50,2147, + 2126,2220,3312,3520,3006,1487,991,344,1630,1395, + 349,306,310,725,2013,342,3214,45,236,231, + 232,5470,45,3329,3522,2531,4154,2980,2980,275, + 858,1398,36,943,33,3481,5605,28,31,32, + 892,872,59,29,3538,3557,1506,1387,36,801, + 388,243,246,249,252,4332,3573,54,88,2887, + 3793,799,3736,2267,877,2272,36,943,33,5270, + 2897,28,31,32,892,872,339,29,286,3026, + 523,376,3389,785,3101,3678,4075,4619,50,2217, + 538,535,536,537,3070,1487,2028,1164,90,2363, + 2661,103,1786,3362,36,943,33,4503,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,86,319,1388,321,314,1092, + 1042,3362,36,943,33,3094,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,109,2053,63,2093,1687,1281,2492,1281, + 2090,1512,2147,2126,3251,1662,36,2956,33,5270, + 2897,28,31,32,892,872,339,29,864,538, + 535,536,537,99,2567,2715,573,535,536,537, + 3566,535,536,537,2975,1993,859,307,310,725, + 180,2980,199,539,535,536,537,3180,2456,2012, + 2312,2472,36,2956,33,5270,2897,28,31,32, + 892,872,339,29,356,319,1388,321,314,1092, + 288,53,233,531,419,1889,538,535,536,537, + 2644,36,2956,33,5270,2897,28,31,32,892, + 872,339,29,3180,248,231,232,2784,2456,538, + 535,536,537,2944,2741,3566,535,536,537,1281, + 2689,319,1388,321,314,1092,3118,1281,340,3198, + 2747,1889,3180,5550,5169,419,2943,2114,36,943, + 33,5381,2897,28,31,32,892,872,339,29, + 319,1388,321,314,1092,1550,36,801,388,1697, + 1889,2580,198,328,335,2980,1300,36,943,33, + 406,4715,28,31,32,892,872,339,29,3198, + 5403,419,2943,2125,539,535,536,537,2217,2980, + 152,538,535,536,537,451,50,319,1388,321, + 314,1092,45,1487,48,3519,2569,2857,920,5169, + 419,2943,2544,334,335,538,535,536,537,3406, + 2821,45,2005,807,352,1525,319,1388,321,317, + 1092,1526,2762,2980,1281,333,344,1630,1395,349, + 3362,36,943,33,2843,3355,28,31,32,892, + 872,27,29,2006,26,24,51,2030,107,77, + 78,109,2053,91,2093,2780,36,801,388,2090, + 2690,2147,3273,3362,36,943,33,202,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,109,2053,268,2093,1281,1694, + 585,1281,2090,775,2147,3295,50,2133,3574,2184, + 3014,45,240,1487,2235,2760,45,45,45,229, + 3689,2819,3779,355,573,535,536,537,538,535, + 536,537,531,157,366,539,535,536,537,181, + 3097,200,45,799,3915,920,2849,204,216,2802, + 203,213,214,215,217,572,3331,1724,2877,3575, + 4017,2456,1183,170,3088,3576,2456,90,2408,169, + 233,184,168,171,172,173,174,175,2710,36, + 943,33,5241,2897,28,31,32,892,872,339, + 29,1281,241,231,232,157,2576,564,2908,45, + 2980,201,3388,1183,3362,36,943,33,351,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,107,77,78,109,2053,1481,2093,2941, + 3408,1281,3198,2090,223,3135,157,3198,319,1388, + 321,314,1092,3398,3303,36,943,33,852,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,87,77,78,352,330,335,3332,45, + 2086,3401,335,3029,194,5517,2382,344,1630,1395, + 349,2980,392,2980,2980,2734,427,2566,3362,36, + 943,33,3452,3355,28,31,32,892,872,27, + 29,2006,26,24,51,2030,107,77,78,109, + 2053,3432,2093,3845,3890,3368,3388,2090,3389,3149, + 3362,36,943,33,3393,3355,28,31,32,892, + 872,27,29,2006,26,24,51,2030,107,77, + 78,109,2053,3488,2093,1779,36,1757,4351,2090, + 2980,3150,3362,36,943,33,179,3355,28,31, + 32,892,872,27,29,2006,26,24,51,2030, + 107,77,78,109,2053,357,2093,2980,1604,585, + 3935,2090,3579,3197,2313,2575,50,2980,1907,2865, + 3508,2980,45,1487,1065,2980,3278,2910,229,2456, + 3489,3582,1675,602,36,801,388,68,343,2980, + 2980,3592,157,573,535,536,537,67,181,3097, + 446,66,799,2909,585,65,204,216,2802,203, + 213,214,215,217,572,1840,2980,2981,2980,1790, + 1884,2865,170,229,274,430,3584,3598,169,3130, + 3674,168,171,172,173,174,175,157,3603,233, + 3227,3280,2980,181,3097,535,56,799,55,585, + 3198,204,216,2802,203,213,214,215,217,572, + 3449,251,231,232,3604,2980,3611,170,229,2456, + 3279,1285,3521,169,1183,179,168,171,172,173, + 174,175,157,3605,3559,335,2980,3692,181,3097, + 624,6346,799,6346,585,102,204,216,2802,203, + 213,214,215,217,572,6346,3518,161,73,6346, + 6346,6346,170,229,360,45,4129,6346,169,1183, + 177,168,171,172,173,174,175,157,6346,6346, + 1950,2588,2591,181,3097,713,529,799,6346,585, + 3198,204,216,2802,203,213,214,215,217,572, + 6346,6346,157,3292,6346,6346,6346,170,229,3667, + 45,6346,6346,169,1183,178,168,171,172,173, + 174,175,157,3255,3682,335,6346,6346,181,3097, + 802,6346,799,6346,585,6346,204,216,2802,203, + 213,214,215,217,572,6346,6346,157,6346,6346, + 6346,6346,170,229,3677,3568,6346,6346,169,1183, + 188,168,171,172,173,174,175,157,6346,6346, + 6346,6346,6346,181,3097,891,6346,799,6346,585, + 6346,204,216,2802,203,213,214,215,217,572, + 6346,6346,157,6346,6346,6346,6346,170,229,163, + 6346,6346,6346,169,6346,3781,168,171,172,173, + 174,175,157,2177,6346,6346,6346,2865,181,3097, + 3275,1741,799,6346,2865,2865,204,216,2802,203, + 213,214,215,217,572,6346,3227,6346,6346,6346, + 6346,6346,170,343,229,6346,6346,6346,169,6346, + 193,168,171,172,173,174,175,2839,36,943, + 33,5381,2897,28,31,32,892,872,339,29, + 3446,6346,206,216,2802,205,213,214,215,217, + 572,3362,1663,943,2817,6346,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,85,207,209,211,295,296,6346,615, + 505,218,208,210,6346,2003,6346,319,1388,321, + 314,1092,6346,2355,980,6346,6346,526,585,3279, + 13,6346,4750,1183,6346,3279,6346,6346,6346,1183, + 573,535,536,537,352,3796,6346,229,538,535, + 536,537,6346,6346,502,504,344,1630,1395,349, + 6346,157,6346,6346,527,920,161,181,3097,1069, + 6346,799,161,585,6346,204,216,2802,203,213, + 214,215,217,572,6346,6346,233,6346,2408,6346, + 6346,170,229,2636,2981,2272,6346,169,2865,187, + 168,171,172,173,174,175,157,589,254,231, + 232,6346,181,3097,1865,6346,799,3227,2865,6346, + 204,216,2802,203,213,214,215,217,572,3700, + 6346,6346,3726,6346,6346,6346,170,229,3728,6346, + 6346,6346,169,6346,195,168,171,172,173,174, + 175,1300,36,943,33,6346,4715,28,31,32, + 892,872,339,29,6346,206,216,2802,205,213, + 214,215,217,572,6346,6346,538,535,536,537, + 6346,45,6346,6346,6346,1183,6346,6346,6346,6346, + 6346,360,6346,920,6346,6346,207,209,211,295, + 296,6346,615,6346,519,208,210,3490,2588,2591, + 6346,319,1388,321,315,1092,1526,6346,157,6346, + 333,3362,36,943,33,3681,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,109,2053,6346,2093,3362,36,943,33, + 3210,3355,28,31,32,892,872,27,29,2006, + 26,24,51,2030,107,77,78,109,2053,1955, + 2093,6346,1524,2865,6346,3220,1571,36,943,33, + 5270,2897,28,31,32,892,872,339,29,6346, + 6346,1287,229,6346,6346,6346,6346,538,535,536, + 537,539,535,536,537,2942,45,6346,3279,5208, + 2865,2045,1183,6346,622,2865,538,535,536,537, + 206,216,2802,205,213,214,215,217,572,343, + 6346,6346,6346,2762,229,351,319,1388,321,314, + 1092,1599,36,801,388,161,3174,6346,6346,6346, + 6346,207,209,211,295,296,2848,615,152,218, + 208,210,206,216,2802,205,213,214,215,217, + 572,6346,2964,6346,6346,2135,6346,6346,1998,2865, + 4750,6346,50,538,535,536,537,3005,6346,1487, + 48,2865,352,207,209,211,295,296,229,615, + 2762,218,208,210,344,1630,1395,349,2166,1323, + 343,3775,2734,6346,1911,6346,6346,6346,6346,2853, + 2185,6346,4750,6346,6346,6346,206,216,2802,205, + 213,214,215,217,572,1161,6346,1509,6346,538, + 535,536,537,2272,36,943,33,5270,2897,28, + 31,32,892,872,339,29,920,207,209,211, + 295,296,6346,615,6346,218,208,210,539,535, + 536,537,3635,6346,6346,2348,6346,6346,2177,1526, + 6346,6346,2865,5392,2187,6346,4750,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,3227,6346,319,1388,321,314,1092,6346,3362, + 36,943,33,3174,3355,28,31,32,892,872, + 27,29,2006,26,24,51,2030,107,77,78, + 109,2053,6346,3070,3362,36,943,33,6346,3355, + 28,31,32,892,872,27,29,2006,26,24, + 51,2030,107,77,78,109,2053,6346,3096,3529, + 36,801,388,6346,2791,6346,95,6346,6346,6346, + 6346,6346,239,6346,6346,505,6346,6346,6346,6346, + 6346,6346,6346,6346,573,535,536,537,6346,6346, + 6346,6346,6346,442,6346,456,3362,36,943,33, + 274,3355,28,31,32,892,872,27,29,2006, + 26,24,51,2030,107,77,78,109,3098,503, + 504,6346,6346,6346,6346,6346,3362,36,943,33, + 233,3355,28,31,32,892,872,27,29,2006, + 26,24,51,2030,107,77,78,109,3125,6346, + 6346,6346,237,231,232,1047,36,801,388,3362, + 36,943,33,275,3355,28,31,32,892,872, + 27,29,2006,26,24,51,2030,107,77,78, + 109,3134,6346,953,6346,244,247,250,253,4332, + 1617,6346,1945,45,2865,45,50,1183,877,1183, + 6346,2225,6346,1487,4083,2865,6346,6346,538,535, + 536,537,2315,229,6346,6346,2865,538,535,536, + 537,6346,6346,2531,229,3249,6346,6346,6346,6346, + 157,6346,157,6346,2762,229,6346,3685,6346,2816, + 6346,206,216,2802,205,213,214,215,217,572, + 6346,6346,206,216,2802,205,213,214,215,217, + 572,6346,6346,206,216,2802,205,213,214,215, + 217,572,207,209,211,295,296,6346,615,6346, + 219,208,210,207,209,211,295,296,6346,615, + 6346,520,208,210,207,209,211,295,296,6346, + 615,6346,305,208,210,3362,36,943,33,2442, + 3355,28,31,32,892,872,27,29,2006,26, + 24,51,2030,107,77,78,84,3362,36,943, + 33,6346,3355,28,31,32,892,872,27,29, + 2006,26,24,51,2030,107,77,78,83,3362, + 36,943,33,6346,3355,28,31,32,892,872, + 27,29,2006,26,24,51,2030,107,77,78, + 82,3362,36,943,33,6346,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,81,3362,36,943,33,6346,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,80,3362,36,943,33,6346, + 3355,28,31,32,892,872,27,29,2006,26, + 24,51,2030,107,77,78,79,3184,36,943, + 33,6346,3355,28,31,32,892,872,27,29, + 2006,26,24,51,2030,107,77,78,105,3362, + 36,943,33,6346,3355,28,31,32,892,872, + 27,29,2006,26,24,51,2030,107,77,78, + 111,3362,36,943,33,6346,3355,28,31,32, + 892,872,27,29,2006,26,24,51,2030,107, + 77,78,110,2405,6346,6346,6346,2865,45,6346, + 6346,6346,1183,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,3362,36,943,33,229,3355,28,31, + 32,892,872,27,29,2006,26,24,51,2030, + 107,77,78,108,6346,157,6346,6346,6346,6346, + 6346,6346,3752,6346,206,216,2802,205,213,214, + 215,217,572,3362,36,943,33,6346,3355,28, + 31,32,892,872,27,29,2006,26,24,51, + 2030,107,77,78,106,207,209,211,295,296, + 6346,615,6346,499,208,210,2459,36,943,33, + 5270,2897,28,31,32,892,872,339,29,1803, + 1223,6346,6346,6346,2865,2987,6346,1331,6346,6346, + 6346,2865,2987,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,229,538,535,536,537,6346,6346, + 229,6346,6346,6346,6346,6346,6346,6346,2203,6346, + 6346,3400,2865,2853,6346,6346,319,1388,321,314, + 1092,2043,407,634,6346,6346,3748,6346,2043,407, + 634,3227,6346,538,535,536,537,6346,6346,6346, + 6346,2203,6346,6346,6346,2865,2853,6346,6346,6346, + 920,6346,408,409,410,295,296,6346,615,408, + 409,410,295,296,3227,615,538,535,536,537, + 1911,6346,6346,1526,6346,2853,6346,332,1818,1387, + 36,801,388,920,6346,1818,6346,6346,2510,6346, + 6346,6346,6346,2853,6346,538,535,536,537,6346, + 6346,6346,6346,2877,5288,360,1526,585,6346,6346, + 332,6346,920,538,535,536,537,6346,6346,6346, + 50,3279,2588,2591,6346,6346,3407,1487,2554,6346, + 920,6346,6346,6346,6346,1526,1911,2773,360,332, + 157,2853,6346,411,413,6346,181,3097,6346,6346, + 411,414,6346,1526,3279,2588,2591,333,6346,6346, + 6346,538,535,536,537,6346,4211,6346,1911,2045, + 6346,6346,5177,2853,6346,352,196,6346,920,6346, + 6346,1911,6346,6346,6346,6346,2853,346,1630,1395, + 349,6346,1684,538,535,536,537,2853,6346,6346, + 6346,1526,6346,1831,6346,332,538,535,536,537, + 920,1599,36,801,388,6346,1509,538,535,536, + 537,2853,6346,920,1047,36,801,388,538,535, + 536,537,5416,1526,920,6346,6346,332,6346,6346, + 6346,538,535,536,537,3249,1526,6346,6346,6346, + 332,6346,50,2126,36,801,388,1526,920,1487, + 48,5392,6346,6346,5288,50,1047,36,801,388, + 2354,6346,1487,48,2865,6346,6346,2773,6346,1605, + 6346,1526,6346,6346,6346,333,6346,2844,36,801, + 388,6346,1008,3227,50,6346,5537,197,6346,6346, + 6346,1487,48,6346,6346,6346,6346,50,1599,36, + 801,388,6346,6346,1487,48,6346,1047,36,801, + 388,1275,1047,36,801,388,6346,6346,50,6346, + 6346,6346,6346,6346,1340,1487,2557,3569,45,6346, + 6346,585,585,6346,97,1047,36,801,388,50, + 1047,36,801,388,6346,1230,1487,2615,50,6346, + 343,343,6346,50,6346,1487,48,505,6346,6346, + 1487,48,6346,45,157,157,3693,585,6346,6346, + 6346,189,2841,6346,6346,2215,50,5156,2848,6346, + 2309,50,6346,1487,48,6346,343,6346,1487,48, + 1387,36,801,388,2765,1387,36,801,388,6346, + 157,502,504,2403,6346,45,6346,2650,2682,585, + 45,3571,45,2848,585,2865,2865,6346,6346,6346, + 6346,6346,45,45,6346,6346,585,2865,343,2968, + 6346,50,6346,343,343,343,50,191,1487,2122, + 3687,530,157,1487,2235,343,343,157,45,189, + 6346,6346,2865,6346,189,5156,6346,6346,6346,157, + 5156,2848,2848,45,6346,6346,189,2865,6346,6346, + 6346,343,5156,2848,6346,6346,45,533,2984,6346, + 2865,45,6346,45,6346,2865,343,2865,6346,2985, + 6346,6346,6346,6346,6346,6346,6346,6346,2848,343, + 6346,6346,6346,6346,343,6346,343,6346,6346,6346, + 6346,6346,6346,2848,2996,3573,6346,6346,6346,3391, + 3574,6346,6346,6346,6346,6346,2848,6346,6346,509, + 6346,2848,3640,2848,6346,6346,6346,6346,6346,6346, + 6346,6346,507,6346,6346,6346,6346,3571,6346,534, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,3816,6346,0,1,230,959,0,501,4174, + 0,1,230,0,40,6361,0,40,6360,0, + 1,2489,0,700,1,0,40,1,6361,0, + 40,1,6360,0,1,4447,0,1,986,0, + 230,220,0,723,224,0,731,224,0,741, + 224,0,723,225,0,731,225,0,741,225, + 0,723,226,0,731,226,0,741,226,0, + 741,394,0,731,394,0,723,394,0,284, + 394,0,723,227,0,731,227,0,741,227, + 0,284,287,0,723,228,0,731,228,0, + 741,228,0,6581,242,0,6580,242,0,723, + 242,0,731,242,0,741,242,0,6684,242, + 0,6683,242,0,6608,242,0,6607,242,0, + 6606,242,0,6605,242,0,6604,242,0,6603, + 242,0,6602,242,0,6601,242,0,6619,242, + 0,6618,242,0,6617,242,0,6616,242,0, + 6615,242,0,6614,242,0,6613,242,0,6612, + 242,0,6611,242,0,6610,242,0,6609,242, + 0,40,242,6361,0,40,242,6360,0,6385, + 242,0,1555,387,0,6361,49,0,6360,49, + 0,1,741,0,1,731,0,1,723,0, + 1,331,0,39,986,0,39,6361,0,39, + 6360,0,454,1616,0,440,1851,0,1555,30, + 0,6358,1,0,741,581,0,731,581,0, + 723,581,0,584,581,0,584,580,0,1887, + 318,0,1,583,0,1,444,0,458,1442, + 0,457,1621,0,36,34,0,48,38,0, + 230,221,0,501,1842,0,6385,1,230,0, + 40,1,230,0,230,416,0,1,1414,0, + 1,6619,0,1,6618,0,1,6617,0,1, + 6616,0,1,6615,0,1,6614,0,1,6613, + 0,1,6612,0,1,6611,0,1,6610,0, + 1,6609,0,6361,38,0,6360,38,0,44, + 6383,0,44,38,0,6358,383,0,6357,383, + 0,1,2138,0,1,2651,0,6356,405,0, + 6355,405,0,230,415,0,3610,127,0,6354, + 1,0,741,445,0,731,445,0,723,445, + 0,331,445,0,6352,1,0,6351,1,0, + 1804,92,0,33,35,0,40,986,0,6383, + 46,0,38,46,0,1,230,3455,0,6355, + 230,0,3457,230,0,6385,1,0,40,1, + 0,238,1520,0,388,33,0,387,30,0, + 3610,129,0,3610,128,0,3646,230,0,10, + 12,0,741,578,0,731,578,0,723,578, + 0,741,577,0,731,577,0,723,577,0, + 538,539,0,1,93,0,8,10,12,0, + 741,578,579,0,731,578,579,0,723,578, + 579,0,578,579,0,6361,2,38,0,6360, + 2,38,0,6361,37,0,6360,37,0,3770, + 383,0,741,96,0,731,96,0,723,96, + 0,331,96,0,36,74,0,8,12,0, + 279,4089,0,186,4084,0 }; }; public final static char baseAction[] = BaseAction.baseAction; @@ -1266,8 +1280,8 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 30,31,32,33,34,35,36,37,38,39, 40,41,42,43,0,45,46,47,48,49, 50,51,52,53,54,55,56,57,58,59, - 60,61,0,63,64,65,66,0,68,69, - 0,1,2,73,4,13,76,77,78,79, + 60,61,0,63,64,65,66,5,6,7, + 70,71,0,0,74,3,76,77,78,79, 80,81,82,83,84,85,86,87,88,0, 1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, @@ -1275,8 +1289,8 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 31,32,33,34,35,36,37,38,39,40, 41,42,43,0,45,46,47,48,49,50, 51,52,53,54,55,56,57,58,59,60, - 61,0,63,64,65,66,0,68,69,0, - 1,2,73,4,8,76,77,78,79,80, + 61,0,63,64,65,66,5,6,7,70, + 71,0,0,74,3,76,77,78,79,80, 81,82,83,84,85,86,87,88,0,1, 2,3,4,5,6,7,8,9,10,11, 12,13,14,15,16,17,18,19,20,21, @@ -1284,17 +1298,17 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 32,33,34,35,36,37,38,39,40,41, 42,43,0,45,46,47,48,49,50,51, 52,53,54,55,56,57,58,59,60,61, - 0,63,64,65,66,0,68,69,0,1, - 2,73,0,102,76,77,78,79,80,81, + 0,63,64,65,66,5,6,7,70,71, + 0,0,74,3,76,77,78,79,80,81, 82,83,84,85,86,87,88,0,1,2, 3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,22, 23,24,25,26,27,28,29,30,31,32, 33,34,35,36,37,38,39,40,41,42, 43,0,45,46,47,48,49,50,51,52, - 53,54,55,56,57,58,59,60,61,77, - 63,64,65,66,0,68,69,0,1,2, - 73,0,1,2,77,78,79,80,81,82, + 53,54,55,56,57,58,59,60,61,0, + 63,64,65,66,5,6,7,70,71,0, + 0,74,0,4,77,78,79,80,81,82, 83,84,85,86,87,88,0,1,2,3, 4,5,6,7,8,9,10,11,12,13, 14,15,16,17,18,19,20,21,22,23, @@ -1302,8 +1316,8 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 34,35,36,37,38,39,40,41,42,43, 0,45,46,47,48,49,50,51,52,53, 54,55,56,57,58,59,60,61,0,63, - 64,65,66,0,68,69,0,1,2,73, - 0,1,2,77,78,79,80,81,82,83, + 64,65,66,5,6,7,70,71,0,0, + 74,3,3,77,78,79,80,81,82,83, 84,85,86,87,88,0,1,2,3,4, 5,6,7,8,9,10,11,12,13,14, 15,16,17,18,19,20,21,22,23,24, @@ -1311,25 +1325,25 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 35,36,37,38,39,40,41,42,43,0, 45,46,47,48,49,50,51,52,53,54, 55,56,57,58,59,60,61,0,63,64, - 65,66,0,68,69,3,0,10,73,0, - 1,2,77,78,79,80,81,82,83,84, + 65,66,5,6,7,70,71,0,0,74, + 0,4,77,78,79,80,81,82,83,84, 85,86,87,88,0,1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35, - 36,37,38,39,40,41,42,43,71,45, + 36,37,38,39,40,41,42,43,0,45, 46,47,48,49,50,51,52,53,54,55, 56,57,58,59,60,61,0,63,64,65, - 66,0,68,69,0,0,0,73,12,4, + 66,0,1,2,70,71,0,11,74,8, 4,77,78,79,80,81,82,83,84,85, 86,87,88,0,1,2,3,4,5,6, 7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24,25,26, 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,62,45,46, + 37,38,39,40,41,42,43,0,45,46, 47,48,49,50,51,52,53,54,55,56, 57,58,59,60,61,0,63,64,65,66, - 0,68,69,0,1,2,73,93,94,0, + 0,95,96,70,71,0,0,74,3,3, 77,78,79,80,81,82,83,84,85,86, 87,88,0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,16,17, @@ -1337,17 +1351,17 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 28,29,30,31,32,33,34,35,36,37, 38,39,40,41,42,43,0,45,46,47, 48,49,50,51,52,53,54,55,56,57, - 58,59,60,61,0,63,64,65,66,0, - 68,69,0,0,10,73,0,1,2,77, + 58,59,60,61,0,63,64,65,66,5, + 6,7,70,71,99,100,74,0,1,77, 78,79,80,81,82,83,84,85,86,87, 88,0,1,2,3,4,5,6,7,8, 9,10,11,12,13,14,15,16,17,18, 19,20,21,22,23,24,25,26,27,28, 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,71,45,46,47,48, + 39,40,41,42,43,0,45,46,47,48, 49,50,51,52,53,54,55,56,57,58, - 59,60,61,0,63,64,65,66,0,68, - 69,0,90,91,73,12,93,94,77,78, + 59,60,61,0,63,64,65,66,5,6, + 7,70,71,0,0,74,3,3,77,78, 79,80,81,82,83,84,85,86,87,88, 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19, @@ -1355,8 +1369,8 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 30,31,32,33,34,35,36,37,38,39, 40,41,42,43,0,45,46,47,48,49, 50,51,52,53,54,55,56,57,58,59, - 60,61,0,63,64,65,66,0,68,69, - 0,93,94,73,93,94,0,77,78,79, + 60,61,0,63,64,65,66,5,6,7, + 70,71,0,0,74,3,3,77,78,79, 80,81,82,83,84,85,86,87,88,0, 1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, @@ -1364,8 +1378,8 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 31,32,33,34,35,36,37,38,39,40, 41,42,43,0,45,46,47,48,49,50, 51,52,53,54,55,56,57,58,59,60, - 61,75,63,64,65,66,0,68,69,0, - 90,91,73,0,1,103,77,78,79,80, + 61,0,63,64,65,66,0,1,2,70, + 71,0,11,74,3,0,77,78,79,80, 81,82,83,84,85,86,87,88,0,1, 2,3,4,5,6,7,8,9,10,11, 12,13,14,15,16,17,18,19,20,21, @@ -1373,269 +1387,267 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym 32,33,34,35,36,37,38,39,40,41, 42,43,0,45,46,47,48,49,50,51, 52,53,54,55,56,57,58,59,60,61, - 0,63,64,65,66,0,68,69,0,90, - 91,73,0,1,0,77,78,79,80,81, + 75,63,64,65,66,0,95,96,70,71, + 0,0,74,0,4,77,78,79,80,81, 82,83,84,85,86,87,88,0,1,2, - 3,4,5,6,7,8,9,25,11,12, + 3,4,5,6,7,8,26,10,11,12, 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,40,28,29,30,31,32, + 23,24,25,26,27,44,29,30,31,32, 33,34,35,36,37,38,39,40,41,42, 43,0,45,46,47,48,49,50,51,52, 53,54,55,56,57,58,59,60,61,0, - 0,64,0,1,2,3,4,5,6,7, + 77,64,0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36,37, - 0,123,0,44,4,43,44,0,1,2, - 3,4,5,6,7,8,9,0,11,12, - 0,59,60,61,0,63,26,65,66,5, - 6,7,0,13,0,3,74,0,76,0, - 1,2,3,4,5,6,7,8,9,25, - 26,89,28,29,30,31,32,33,34,35, - 36,37,0,43,44,3,0,105,106,107, + 0,1,2,0,4,43,44,0,1,2, + 3,4,5,6,7,8,13,10,11,12, + 0,59,60,61,0,63,0,65,66,9, + 4,5,6,7,75,73,0,1,76,0, + 1,2,3,4,5,6,7,8,28,10, + 0,89,0,1,2,3,4,5,6,7, + 8,25,10,11,12,0,63,105,106,107, 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,0,1, 2,0,0,43,44,3,8,5,6,7, - 103,0,10,11,12,4,5,6,7,59, - 60,61,0,63,0,65,66,75,104,27, - 0,1,2,109,74,0,76,0,8,9, - 38,39,44,41,42,10,0,1,2,89, - 4,5,6,7,0,99,100,11,12,5, - 6,7,0,62,62,105,106,107,44,67, - 0,0,70,71,72,13,74,75,76,25, - 26,10,28,29,30,31,32,33,34,35, + 0,9,0,11,12,73,0,1,2,59, + 60,61,67,63,0,65,66,0,1,2, + 28,4,0,73,0,8,76,10,124,27, + 38,39,44,41,42,44,0,1,2,89, + 4,5,6,7,0,0,0,11,12,5, + 6,7,0,1,62,105,106,107,12,67, + 68,69,62,11,72,73,0,75,76,25, + 26,27,72,29,30,31,32,33,34,35, 36,37,90,91,92,93,94,95,96,97, - 98,99,100,101,102,103,104,70,73,72, + 98,99,100,101,102,103,104,97,98,75, 108,109,110,111,112,113,114,115,116,117, - 118,119,120,0,122,63,3,0,5,6, - 7,4,62,10,11,12,0,0,0,1, - 2,0,4,5,6,7,5,6,7,0, - 27,0,1,2,3,4,5,6,7,8, - 9,38,39,0,41,42,25,26,0,28, + 118,119,120,0,122,0,3,72,5,6, + 7,0,9,101,11,12,11,12,0,1, + 2,0,4,5,6,7,5,6,7,11, + 12,28,0,0,1,2,0,4,5,6, + 7,38,39,11,41,42,25,26,27,0, 29,30,31,32,33,34,35,36,37,0, - 1,2,44,4,0,62,0,8,9,62, - 67,120,43,70,71,72,0,74,75,76, - 0,1,2,3,4,5,6,7,8,9, - 74,11,12,90,91,92,93,94,95,96, + 1,2,0,1,2,62,4,5,6,7, + 67,68,69,11,12,72,73,44,75,76, + 0,1,2,3,4,5,6,7,8,40, + 10,11,12,90,91,92,93,94,95,96, 97,98,99,100,101,102,103,104,0,1, - 62,108,109,110,111,112,113,114,115,116, + 2,108,109,110,111,112,113,114,115,116, 117,118,119,120,0,122,0,1,2,3, 4,5,6,7,8,9,10,11,12,13, 14,15,16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31,32,33, - 34,35,36,37,40,101,90,91,0,43, + 34,35,36,37,0,1,2,0,4,43, 44,0,1,2,3,4,5,6,7,8, - 9,0,11,12,3,59,60,61,0,63, + 13,10,11,12,0,59,60,61,4,63, 0,65,66,0,1,2,0,4,5,6, - 7,11,76,0,11,12,0,0,5,6, - 7,5,6,7,0,89,0,14,15,16, + 7,0,76,0,11,12,0,11,5,6, + 7,5,6,7,0,89,92,14,15,16, 17,18,19,20,21,22,23,24,25,26, - 62,28,29,30,31,32,33,34,35,36, - 37,0,74,0,0,74,5,6,7,123, + 27,0,29,30,31,32,33,34,35,36, + 37,0,1,2,73,4,5,6,7,123, 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,0,0, - 0,1,2,43,44,0,1,2,3,4, - 5,6,7,8,9,10,11,12,92,59, + 30,31,32,33,34,35,36,37,0,1, + 2,95,96,43,44,0,1,2,3,4, + 5,6,7,8,9,10,11,12,0,59, 60,61,0,63,0,65,66,5,6,7, 25,26,27,28,29,30,31,32,33,34, - 35,36,37,0,90,91,0,25,26,89, - 28,29,30,31,32,33,34,35,36,37, - 62,62,0,1,2,3,4,62,68,69, - 8,9,67,0,1,2,71,4,5,6, - 7,38,39,123,0,1,2,3,4,5, + 35,36,37,0,1,2,3,4,0,89, + 0,8,9,10,0,5,6,7,0,1, + 2,3,4,5,6,7,8,62,10,11, + 12,28,67,68,0,1,2,0,4,5, + 6,7,0,123,0,1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35, - 36,37,0,0,0,1,2,43,44,67, + 36,37,0,1,2,67,0,43,44,0, + 0,5,6,7,4,5,6,7,0,0, + 0,11,12,59,60,61,62,63,9,65, + 66,25,26,27,72,29,30,31,32,33, + 34,35,36,37,0,0,44,28,0,5, + 6,7,4,89,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,0,0,1,2,0,43,44,90, + 91,8,0,10,0,0,62,5,6,7, + 62,0,0,59,60,61,12,63,73,65, + 66,9,102,105,106,107,0,25,26,27, + 76,29,30,31,32,33,34,35,36,37, + 0,1,2,89,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,90,91,44,0,74,43,44,4, 0,1,2,3,4,5,6,7,8,9, - 10,0,0,59,60,61,62,63,25,65, - 66,28,0,1,2,3,4,27,0,0, - 8,9,10,0,1,2,3,4,44,11, - 12,8,9,89,0,1,2,3,4,5, + 10,90,91,59,60,61,0,63,103,65, + 66,26,0,0,1,2,3,4,28,123, + 76,8,9,10,0,0,1,2,0,1, + 2,0,0,89,0,1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35, - 36,37,0,1,2,3,4,43,44,67, - 8,9,70,71,72,0,0,75,0,70, - 5,6,7,59,60,61,10,63,10,65, - 66,0,1,2,92,4,5,6,7,0, - 76,10,11,12,0,1,2,0,4,5, - 6,7,0,89,0,1,2,3,4,5, + 36,37,44,0,1,2,0,43,44,67, + 67,68,69,0,0,72,62,0,75,13, + 105,106,107,59,60,61,72,63,67,65, + 66,69,0,1,2,92,4,5,6,7, + 76,9,0,11,12,0,0,44,3,43, + 44,97,98,89,0,1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35, - 36,37,76,0,76,0,3,43,44,0, - 1,2,71,4,5,6,7,0,0,0, - 11,12,3,59,60,61,0,63,0,65, - 66,0,0,92,72,0,5,6,7,4, - 76,0,0,1,2,3,4,5,6,7, - 8,9,11,89,0,1,2,3,4,5, + 36,37,75,0,1,2,0,43,44,3, + 68,0,1,2,3,4,5,6,7,8, + 64,10,67,59,60,61,103,63,104,65, + 66,104,0,109,92,3,109,110,111,112, + 113,114,115,116,117,118,119,44,0,1, + 2,0,0,89,0,1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35, - 36,37,74,62,0,1,2,43,44,0, - 1,2,0,4,5,6,7,0,0,0, - 11,12,3,59,60,61,74,63,10,65, - 66,0,0,1,2,3,4,5,6,7, - 76,99,100,11,12,27,95,96,44,0, - 1,2,40,89,0,1,2,3,4,5, - 6,7,8,9,10,11,12,13,14,15, - 16,17,18,19,20,21,22,23,24,25, - 26,27,28,29,30,31,32,33,34,35, - 36,37,75,44,0,0,0,43,44,67, - 4,5,6,7,0,74,0,11,12,5, - 6,7,0,59,60,61,0,63,0,65, - 66,104,10,5,6,7,109,110,111,112, - 113,114,115,116,117,118,119,0,44,0, - 0,4,3,89,0,1,2,3,4,5, - 6,7,8,9,10,11,12,13,14,15, - 16,17,18,19,20,21,22,23,24,25, - 26,27,28,29,30,31,32,33,34,35, - 36,37,70,71,0,1,2,43,44,5, - 6,7,0,1,2,11,4,0,0,62, - 8,9,62,59,60,61,67,63,10,65, + 36,37,44,0,0,1,2,43,44,5, + 6,7,0,1,2,11,13,75,0,1, + 2,3,4,59,60,61,8,63,10,65, 66,0,1,2,3,4,5,6,7,8, - 9,0,11,12,3,27,0,0,44,0, - 3,10,3,89,0,1,2,3,4,5, + 78,10,11,12,0,0,43,44,44,4, + 0,90,91,89,0,1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35, 36,37,0,1,2,3,4,43,44,0, - 8,9,3,0,0,74,0,3,67,92, - 4,0,71,59,60,61,67,63,72,65, + 8,0,10,0,73,0,62,62,0,1, + 2,3,4,59,60,61,8,63,10,65, 66,0,1,2,3,4,5,6,7,8, - 9,0,26,0,1,2,3,4,0,0, - 0,8,9,89,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,0,1, - 2,3,4,5,6,7,8,9,0,11, - 12,38,39,40,41,42,38,39,45,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,0,1,2,74,0,64,0,1, - 2,68,69,0,0,72,0,1,2,3, - 4,105,106,107,8,9,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,92,74,0,1,2,44,4,5,6, - 7,0,1,2,38,39,40,41,42,8, - 9,45,46,47,48,49,50,51,52,53, - 54,55,56,57,58,62,68,69,72,0, - 64,0,1,2,5,6,7,44,74,73, - 0,10,76,0,1,2,3,4,0,121, - 0,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,0,1, - 2,3,4,5,6,7,8,9,0,11, - 12,38,39,40,41,42,38,39,45,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,0,0,73,0,0,64,3,0, - 1,2,3,4,0,10,73,8,9,0, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,0,67,0,1,0,5, - 6,7,0,0,0,3,10,38,39,40, - 41,42,10,10,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,62,0, - 0,0,70,64,72,0,71,68,69,0, - 1,2,3,4,70,10,67,8,9,0, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,0,67,0,71,4,67, - 0,67,70,71,72,0,73,38,39,40, - 41,42,0,0,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,67,70, - 0,0,0,64,3,70,71,68,69,0, - 1,2,3,4,0,13,0,8,9,3, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,0,105,106,107,72,5, - 6,7,41,42,62,43,44,38,39,40, - 41,42,0,0,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,67,0, - 70,101,0,64,5,6,7,68,69,0, - 1,2,3,4,70,102,0,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,0,1,2,3,4,108, - 0,0,8,9,10,62,0,38,39,40, - 41,42,70,122,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,0,1, - 2,0,70,64,0,0,1,2,3,4, - 0,0,73,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 0,67,0,62,4,71,0,5,6,7, - 4,40,44,38,39,40,41,42,72,0, - 45,46,47,48,49,50,51,52,53,54, - 55,56,57,58,0,0,62,3,0,0, - 1,2,8,0,0,11,12,8,5,6, - 7,0,72,10,10,0,1,2,3,4, - 5,6,7,8,9,10,11,12,0,0, - 27,27,38,39,0,41,42,3,10,45, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,0,0,120,62,78,5,6, - 7,67,68,69,70,11,72,0,0,75, - 75,0,74,70,70,0,1,2,10,0, - 0,10,67,0,90,91,71,93,0,95, - 96,97,98,99,100,101,102,103,104,71, - 0,72,108,3,110,111,112,113,114,115, - 116,117,118,119,0,1,2,3,4,44, - 92,0,8,9,3,11,12,13,14,15, + 25,10,27,0,0,1,2,3,4,38, + 39,0,8,89,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,0, - 1,2,71,4,76,0,0,8,9,95, - 96,72,38,39,40,41,42,0,75,45, + 1,2,3,4,5,6,7,0,0,1, + 11,12,38,39,40,41,42,9,0,45, 46,47,48,49,50,51,52,53,54,55, - 56,57,58,0,1,2,3,4,64,0, - 0,8,9,44,11,12,13,14,15,16, + 56,57,58,0,73,62,93,94,64,0, + 1,2,3,4,70,71,72,8,9,10, + 11,12,13,14,15,16,17,18,19,20, + 21,22,23,24,0,0,67,3,3,0, + 0,1,2,40,93,94,68,38,39,40, + 41,42,75,0,45,46,47,48,49,50, + 51,52,53,54,55,56,57,58,0,0, + 0,1,2,64,4,5,6,7,0,1, + 2,3,4,74,44,76,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,0,1,2,3,4,5,6, + 7,8,0,10,44,3,38,39,40,41, + 42,9,69,45,46,47,48,49,50,51, + 52,53,54,55,56,57,58,69,99,100, + 72,0,64,0,1,2,3,4,0,0, + 9,8,74,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24,0,0, - 1,2,0,4,0,3,0,8,9,121, - 64,38,39,40,41,42,10,0,45,46, + 1,2,3,4,0,0,73,8,9,10, + 68,38,39,40,41,42,38,39,45,46, 47,48,49,50,51,52,53,54,55,56, - 57,58,75,0,1,2,3,4,0,0, - 67,8,9,44,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,0,0, - 0,0,0,5,6,7,62,0,0,10, - 3,38,39,40,41,42,70,71,45,46, + 57,58,0,0,0,3,0,64,0,1, + 2,3,4,70,71,74,8,0,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,0,1,2,67,68,0,0, + 1,2,9,0,38,39,38,39,40,41, + 42,102,0,45,46,47,48,49,50,51, + 52,53,54,55,56,57,58,93,94,67, + 0,67,64,0,1,2,3,4,70,71, + 0,8,44,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,0,1, + 2,3,4,0,1,2,8,74,10,70, + 71,38,39,40,41,42,0,0,45,46, 47,48,49,50,51,52,53,54,55,56, - 57,58,0,1,2,3,4,64,0,0, - 8,9,0,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,0,1,2, - 0,0,0,0,3,3,3,67,0,70, - 38,39,40,41,42,76,75,45,46,47, + 57,58,62,90,91,0,0,64,0,1, + 2,3,4,70,71,9,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,0,28,67,3,0,0,0, + 3,0,9,70,71,4,38,39,40,41, + 42,101,0,45,46,47,48,49,50,51, + 52,53,54,55,56,57,58,0,1,2, + 0,0,64,3,3,0,1,2,3,4, + 9,43,74,8,9,10,11,12,13,14, + 15,16,17,18,19,20,21,22,23,24, + 67,68,69,62,0,72,0,0,69,0, + 0,72,0,38,39,40,41,42,9,9, + 45,46,47,48,49,50,51,52,53,54, + 55,56,57,58,0,0,0,3,67,68, + 0,0,8,0,9,11,12,0,5,6, + 7,0,9,0,0,0,1,2,3,4, + 5,6,7,8,9,10,11,12,62,62, + 0,28,38,39,62,41,42,68,68,45, + 25,26,27,28,29,30,31,32,33,34, + 35,36,37,40,40,120,62,93,94,0, + 0,67,92,69,70,71,72,0,9,75, + 69,76,69,73,0,0,69,0,0,1, + 2,0,67,68,90,91,8,93,10,95, + 96,97,98,99,100,101,102,103,104,69, + 40,0,108,92,110,111,112,113,114,115, + 116,117,118,119,0,1,2,3,4,0, + 0,0,8,4,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,0, + 1,2,0,4,69,0,72,8,0,10, + 73,0,38,39,40,41,42,9,0,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,0,1,2,3,4,64,120, + 0,8,62,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,0,1, + 2,0,4,0,62,0,8,62,10,0, + 9,38,39,40,41,42,68,69,45,46, + 47,48,49,50,51,52,53,54,55,56, + 57,58,0,0,1,2,3,4,0,0, + 67,8,44,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,0,1, + 0,0,0,0,0,62,0,9,0,68, + 69,38,39,40,41,42,73,9,45,46, + 47,48,49,50,51,52,53,54,55,56, + 57,58,0,1,2,3,4,64,0,67, + 8,62,10,11,12,13,14,15,16,17, + 18,19,20,21,22,23,24,0,0,0, + 0,0,62,62,3,0,68,9,9,9, + 38,39,40,41,42,72,68,45,46,47, 48,49,50,51,52,53,54,55,56,57, - 58,0,1,2,3,4,0,0,0,8, - 9,44,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,0,75,0,0, - 0,0,3,3,0,0,10,3,3,38, - 39,40,41,42,0,75,45,46,47,48, + 58,0,1,2,3,4,92,0,0,8, + 3,10,11,12,13,14,15,16,17,18, + 19,20,21,22,23,24,0,0,0,0, + 3,3,0,121,8,3,69,69,68,38, + 39,40,41,42,76,76,45,46,47,48, 49,50,51,52,53,54,55,56,57,58, - 0,1,2,3,4,0,0,0,8,9, - 3,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,0,0,0,0,0, - 62,0,0,62,0,3,0,71,38,39, - 40,41,42,72,10,45,46,47,48,49, + 0,1,2,3,4,0,0,0,8,121, + 10,11,12,13,14,15,16,17,18,19, + 20,21,22,23,24,0,1,2,0,4, + 0,0,0,8,0,10,0,9,38,39, + 40,41,42,9,75,45,46,47,48,49, 50,51,52,53,54,55,56,57,58,0, - 1,2,0,4,5,6,7,0,97,98, - 3,124,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,0,28,29,30, - 31,32,33,34,35,36,37,11,0,74, - 0,74,43,74,0,71,75,3,0,1, - 2,0,4,5,6,7,0,0,59,60, + 1,2,28,4,5,6,7,0,0,44, + 3,3,13,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,0,29,30, + 31,32,33,34,35,36,37,0,0,0, + 69,0,43,69,76,75,9,0,0,1, + 2,75,4,5,6,7,9,0,59,60, 61,13,14,15,16,17,18,19,20,21, - 22,23,24,25,26,0,28,29,30,31, - 32,33,34,35,36,37,0,1,2,3, - 4,43,0,0,8,9,10,121,0,0, - 62,0,62,10,0,0,0,59,60,61, - 72,10,72,27,0,0,0,3,67,3, - 27,95,96,0,0,0,0,0,27,0, - 0,75,75,0,0,97,98,97,98,0, + 22,23,24,25,26,27,0,29,30,31, + 32,33,34,35,36,37,0,0,0,3, + 0,43,0,0,0,0,9,9,0,9, + 62,0,75,0,3,68,69,59,60,61, + 72,0,73,72,3,68,28,0,0,0, + 73,3,0,0,0,0,3,41,42,72, + 0,0,0,3,0,97,98,0,0,0, + 0,0,0,0,0,0,0,0,72,0, + 0,0,0,67,0,68,0,0,68,0, + 0,0,0,0,72,0,73,73,73,0, + 67,73,0,0,0,0,0,0,0,62, + 0,0,0,0,0,0,0,62,0,0, + 0,0,0,0,108,0,0,75,0,75, + 0,0,0,0,0,0,0,0,122,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,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,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,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,0, - 0,0,0,0,0,0 + 121,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0 }; }; public final static char termCheck[] = TermCheck.termCheck; @@ -1643,371 +1655,379 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface TermAction { public final static char termAction[] = {0, - 6279,6158,5774,5774,5774,5767,5774,5774,5774,5774, - 6189,5774,5774,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,6162,1,1, + 6346,6225,5841,5841,5841,5834,5841,5841,5841,6256, + 5841,5841,5841,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,6229,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,302,930,1,695,6455,385,1,1, - 6279,5780,5777,6290,6318,6580,6286,1188,3327,3083, - 2278,2899,3222,3808,3320,796,3309,2520,3307,10, - 6192,6192,6192,6192,6192,6192,6192,6192,6192,6192, - 6192,6192,6192,6192,6192,6192,6192,6192,6192,6192, - 6192,6192,6192,6192,6192,6192,6192,6192,6192,6192, - 6192,6192,6192,6192,6192,6192,6192,6192,6192,6192, - 6192,6192,6192,6279,6192,6192,6192,6192,6192,6192, - 6192,6192,6192,6192,6192,6192,6192,6192,6192,6192, - 6192,136,6192,6192,6192,6192,6279,6192,6192,6279, - 5780,5777,6192,6318,1646,6192,6192,6192,6192,6192, - 6192,6192,6192,6192,6192,6192,6192,6192,8,6219, - 6219,6219,6219,6219,6219,6219,6219,6219,6219,6219, - 6219,6219,6219,6219,6219,6219,6219,6219,6219,6219, - 6219,6219,6219,6219,6219,6219,6219,6219,6219,6219, - 6219,6219,6219,6219,6219,6219,6219,6219,6219,6219, - 6219,6219,6279,6219,6219,6219,6219,6219,6219,6219, - 6219,6219,6219,6219,6219,6219,6219,6219,6219,6219, - 6279,6219,6219,6219,6219,6279,6219,6219,6279,5961, - 5958,6219,1,2727,6219,6219,6219,6219,6219,6219, - 6219,6219,6219,6219,6219,6219,6219,6279,6158,5774, - 5774,5774,5767,5774,5774,5774,5774,6165,5774,5774, + 1,1,313,2474,1,704,6522,741,723,731, + 1,1,6346,384,6357,3302,6353,890,3558,3209, + 2284,3099,3449,3665,3519,1810,3488,3448,3486,10, + 6259,6259,6259,6259,6259,6259,6259,6259,6259,6259, + 6259,6259,6259,6259,6259,6259,6259,6259,6259,6259, + 6259,6259,6259,6259,6259,6259,6259,6259,6259,6259, + 6259,6259,6259,6259,6259,6259,6259,6259,6259,6259, + 6259,6259,6259,6346,6259,6259,6259,6259,6259,6259, + 6259,6259,6259,6259,6259,6259,6259,6259,6259,6259, + 6259,395,6259,6259,6259,6259,741,723,731,6259, + 6259,6346,6346,6259,675,6259,6259,6259,6259,6259, + 6259,6259,6259,6259,6259,6259,6259,6259,8,6286, + 6286,6286,6286,6286,6286,6286,6286,6286,6286,6286, + 6286,6286,6286,6286,6286,6286,6286,6286,6286,6286, + 6286,6286,6286,6286,6286,6286,6286,6286,6286,6286, + 6286,6286,6286,6286,6286,6286,6286,6286,6286,6286, + 6286,6286,6346,6286,6286,6286,6286,6286,6286,6286, + 6286,6286,6286,6286,6286,6286,6286,6286,6286,6286, + 575,6286,6286,6286,6286,741,723,731,6286,6286, + 6346,6346,6286,1530,6286,6286,6286,6286,6286,6286, + 6286,6286,6286,6286,6286,6286,6286,6346,6225,5841, + 5841,5841,5834,5841,5841,5841,6232,5841,5841,5841, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,6162,1,1,1,1,1, + 1,1,1,1,1,6229,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,6279,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1799, - 930,1,695,6455,6279,1,1,6279,6293,6294, - 6290,6279,9163,8353,1188,3327,3083,2278,2899,3222, - 3808,3320,796,3309,2520,3307,6279,6158,5774,5774, - 5774,5767,5774,5774,5774,5774,6165,5774,5774,1, + 1,6346,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,583, + 2474,1,704,6522,741,723,731,1,1,40, + 6346,6357,6346,6385,890,3558,3209,2284,3099,3449, + 3665,3519,1810,3488,3448,3486,6346,6225,5841,5841, + 5841,5834,5841,5841,5841,6232,5841,5841,5841,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,6162,1,1,1,1,1,1, + 1,1,1,1,6229,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 6279,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,6279,930, - 1,695,6455,6279,1,1,49,5961,5958,6290, - 398,6293,6294,1188,3327,3083,2278,2899,3222,3808, - 3320,796,3309,2520,3307,6279,6158,5774,5774,5774, - 5767,5774,5774,5774,5774,6165,5774,5774,1,1, + 6346,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,574,2474, + 1,704,6522,741,723,731,1,1,6346,6346, + 6357,1310,1887,890,3558,3209,2284,3099,3449,3665, + 3519,1810,3488,3448,3486,6346,6225,5841,5841,5841, + 5834,5841,5841,5841,6232,5841,5841,5841,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,6162,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,6279, + 1,1,1,6229,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,6346, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,6279,930,1, - 695,6455,6279,1,1,696,6279,6285,6290,6279, - 9163,8353,1188,3327,3083,2278,2899,3222,3808,3320, - 796,3309,2520,3307,6279,6158,5774,5774,5774,5767, - 5774,5774,5774,5774,6165,5774,5774,1,1,1, + 1,1,1,1,1,1,1,582,2474,1, + 704,6522,741,723,731,1,1,6346,6346,6357, + 6346,2649,890,3558,3209,2284,3099,3449,3665,3519, + 1810,3488,3448,3486,6346,6225,5841,5841,5841,5834, + 5841,5841,5841,6232,5841,5841,5841,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,6162,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,6284,1, + 1,1,6229,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,6346,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,132,930,1,695, - 6455,6279,1,1,112,397,40,6290,3057,388, - 6318,1188,3327,3083,2278,2899,3222,3808,3320,796, - 3309,2520,3307,6279,6158,5774,5774,5774,5767,5774, - 5774,5774,5774,6165,5774,5774,1,1,1,1, + 1,1,1,1,1,1,116,2474,1,704, + 6522,6346,6360,6361,1,1,6346,4719,6357,1745, + 2786,890,3558,3209,2284,3099,3449,3665,3519,1810, + 3488,3448,3486,6346,6225,5841,5841,5841,5834,5841, + 5841,5841,6232,5841,5841,5841,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 6162,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1789,1,1, + 1,6229,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,6346,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,6279,930,1,695,6455, - 6279,1,1,291,6293,6294,6290,4909,4931,6279, - 1188,3327,3083,2278,2899,3222,3808,3320,796,3309, - 2520,3307,6279,6158,5774,5774,5774,5767,5774,5774, - 5774,5774,6165,5774,5774,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,6162, + 1,1,1,1,1,130,2474,1,704,6522, + 6346,4686,4656,1,1,569,557,6357,1771,1858, + 890,3558,3209,2284,3099,3449,3665,3519,1810,3488, + 3448,3486,6346,6225,5841,5841,5841,5834,5841,5841, + 5841,6232,5841,5841,5841,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,6279,1,1,1, + 6229,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,6346,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,930,1,695,6455,6279, - 1,1,122,115,162,6290,37,6249,6246,1188, - 3327,3083,2278,2899,3222,3808,3320,796,3309,2520, - 3307,6279,6158,5774,5774,5774,5767,5774,5774,5774, - 5774,6165,5774,5774,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,6162,1, + 1,1,1,1,331,2474,1,704,6522,741, + 723,731,1,1,3363,3330,6357,6346,2694,890, + 3558,3209,2284,3099,3449,3665,3519,1810,3488,3448, + 3486,6346,6225,5841,5841,5841,5834,5841,5841,5841, + 6232,5841,5841,5841,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,6229, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,162,1,1,1,1, + 1,1,1,1,1,6346,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,133,930,1,695,6455,114,1, - 1,113,3760,3785,6290,3057,4909,4931,1188,3327, - 3083,2278,2899,3222,3808,3320,796,3309,2520,3307, - 6279,6158,5774,5774,5774,5767,5774,5774,5774,5774, - 6165,5774,5774,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,6162,1,1, + 1,1,1,576,2474,1,704,6522,741,723, + 731,1,1,544,6346,6357,1136,5538,890,3558, + 3209,2284,3099,3449,3665,3519,1810,3488,3448,3486, + 6346,6225,5841,5841,5841,5834,5841,5841,5841,6232, + 5841,5841,5841,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,6229,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,6279,1,1,1,1,1, + 1,1,1,1,6346,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,138,930,1,695,6455,6279,1,1, - 126,4909,4931,6290,4909,4931,36,1188,3327,3083, - 2278,2899,3222,3808,3320,796,3309,2520,3307,6279, - 6158,5774,5774,5774,5767,5774,5774,5774,5774,6165, - 5774,5774,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,6162,1,1,1, + 1,1,417,2474,1,704,6522,741,723,731, + 1,1,6346,6346,6357,1520,3780,890,3558,3209, + 2284,3099,3449,3665,3519,1810,3488,3448,3486,6346, + 6225,5841,5841,5841,5834,5841,5841,5841,6232,5841, + 5841,5841,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,6229,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,6279,1,1,1,1,1,1, + 1,1,1,6346,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1477,930,1,695,6455,6279,1,1,125, - 3760,3785,6290,556,1658,2688,1188,3327,3083,2278, - 2899,3222,3808,3320,796,3309,2520,3307,6279,6158, - 5774,5774,5774,5767,5774,5774,5774,5774,6165,5774, - 5774,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,6162,1,1,1,1, + 1,118,2474,1,704,6522,6346,6028,6025,1, + 1,92,4719,6357,6210,36,890,3558,3209,2284, + 3099,3449,3665,3519,1810,3488,3448,3486,6346,6225, + 5841,5841,5841,5834,5841,5841,5841,6232,5841,5841, + 5841,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,6229,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,6279,1,1,1,1,1,1,1, + 1,1,6346,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 6279,930,1,695,6455,6279,1,1,6279,3760, - 3785,6290,547,6827,6279,1188,3327,3083,2278,2899, - 3222,3808,3320,796,3309,2520,3307,40,5780,5777, - 5233,691,841,721,829,4733,3889,6828,4799,4821, - 785,6544,6542,6551,6550,6546,6547,6545,6548,6549, - 6552,6543,6617,6540,831,6618,6534,6541,6537,6513, - 6539,6538,6535,6536,6514,4777,4755,6299,4865,4843, - 6678,6279,4461,1834,1926,6301,1852,3030,1879,6302, - 6300,1805,6295,6297,6298,6296,2943,6679,6680,6279, - 6279,1478,6279,6043,6043,230,6039,5774,5774,5774, - 230,230,6047,230,230,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,230, + 1369,2474,1,704,6522,6346,4686,4656,1,1, + 40,6346,6357,1,6385,890,3558,3209,2284,3099, + 3449,3665,3519,1810,3488,3448,3486,40,5847,5844, + 2564,700,741,723,731,4041,2503,4447,4909,4931, + 1651,6611,6609,6618,6617,6613,6614,6612,6615,6616, + 6619,6610,6683,6607,6684,1012,6601,6608,6604,6580, + 6606,6605,6602,6603,6581,4887,4865,6366,4975,4953, + 6744,6346,3043,1912,1983,6368,1933,3534,1959,6369, + 6367,1904,6362,6364,6365,6363,841,6745,6746,292, + 1569,1483,6346,6110,6110,230,6106,5841,5841,5841, + 230,6114,230,230,230,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 40,5766,6279,1057,6318,1,6036,310,5793,5789, - 2482,5786,5964,5970,5967,707,3889,139,5973,5973, - 1,1,1,1,225,1257,2852,1931,6692,5821, - 5815,5818,6279,6104,140,1756,230,6279,417,332, - 5780,5777,2482,691,841,721,829,707,3889,6617, - 6540,6780,6618,6534,6541,6537,6513,6539,6538,6535, - 6536,6514,312,6107,2714,985,130,6715,6716,6717, - 6279,6043,6043,230,6039,5774,5774,5774,230,230, - 6116,230,230,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,230,1,1, - 1,1,1,1,1,1,1,1,38,6030, - 6030,388,34,1,6036,6027,6030,6027,6027,6027, - 2688,396,6027,6027,6027,389,841,721,829,1, - 1,1,6279,1257,48,1931,6692,1074,2649,6027, - 39,5982,5979,3084,230,6279,416,6279,5976,3889, - 6027,6027,1662,6027,6027,6291,445,1,1,6780, - 1,6018,6018,6018,226,3337,3257,6018,6018,5830, - 5824,5827,302,5955,6027,6715,6716,6717,845,6027, - 455,6279,6027,6027,6027,6580,6027,6027,6027,6617, - 6540,6283,6618,6534,6541,6537,6513,6539,6538,6535, - 6536,6514,6027,6027,6027,6027,6027,6027,6027,6027, - 6027,6027,6027,6027,6027,6027,6027,3934,6290,5118, - 6027,6027,6027,6027,6027,6027,6027,6027,6027,6027, - 6027,6027,6027,6279,6027,1020,6146,49,6146,6146, - 6146,6294,5985,6146,6146,6146,449,6279,395,5842, - 5842,227,284,5833,5839,5836,5851,5845,5848,6279, - 6146,1,5793,5789,2482,5786,5964,5970,5967,707, - 3889,6146,6146,6279,6146,6146,6617,6540,441,6618, - 6534,6541,6537,6513,6539,6538,6535,6536,6514,6279, - 5780,5777,284,691,134,6146,6279,707,3889,6294, - 6146,6282,2840,6146,6146,6146,124,6146,6146,6146, - 6279,5793,5789,2482,5786,5964,5970,5967,707,3889, - 764,6015,6015,6146,6146,6146,6146,6146,6146,6146, - 6146,6146,6146,6146,6146,6146,6146,6146,555,1658, - 5988,6146,6146,6146,6146,6146,6146,6146,6146,6146, - 6146,6146,6146,6146,6279,6146,6279,5774,5774,230, - 5774,5767,5774,5774,230,230,5803,230,230,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,230,1,1,1,9827,1,1, - 1,1,1,1,1709,2895,3760,3785,30,1, - 5771,6279,5793,5789,2482,5786,5964,5970,5967,707, - 3889,6279,5973,5973,763,1,1,1,6279,1225, - 6279,695,6491,446,40,40,6279,6318,6125,6131, - 6128,2641,220,224,6134,6134,314,6279,5812,5806, - 5809,841,721,829,6279,6780,359,6544,6542,6551, - 6550,6546,6547,6545,6548,6549,6552,6543,6617,6540, - 1789,6618,6534,6541,6537,6513,6539,6538,6535,6536, - 6514,396,425,6279,123,2185,841,721,829,220, - 6279,5774,5774,230,5774,5767,5774,5774,230,230, + 230,1,1,1,1,1,1,1,1,1, + 6346,5847,5844,302,6385,1,6103,309,5860,5856, + 2489,5853,6031,6037,6034,986,6647,4447,6040,6040, + 6346,1,1,1,186,1463,395,776,6758,6356, + 388,741,723,731,2231,230,546,6893,416,331, + 5847,5844,2489,700,741,723,731,986,6355,4447, + 6346,6846,6346,5860,5856,2489,5853,6031,6037,6034, + 986,6894,4447,6040,6040,320,717,6781,6782,6783, + 6346,6110,6110,230,6106,5841,5841,5841,230,6183, 230,230,230,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,230,1,1, - 1,9827,1,1,1,1,1,1,30,6279, - 6279,6293,6294,1,5771,30,388,388,6180,388, - 388,388,388,388,388,6180,6180,6180,6637,1, - 1,1,228,1225,6279,695,6491,5863,5857,5860, - 388,388,6180,388,388,388,388,388,388,388, - 388,388,388,119,3760,3785,6279,6617,6540,6780, - 6618,6534,6541,6537,6513,6539,6538,6535,6536,6514, - 5991,1940,1,5793,5789,3371,5786,5991,4887,2396, - 707,3889,6180,287,5854,5854,6180,284,841,721, - 829,4388,4345,221,6279,5774,5774,230,5774,5767, - 5774,5774,230,230,230,230,230,1,1,1, + 1,1,1,1,1,1,1,1,230,1, + 1,1,1,1,1,1,1,1,38,6097, + 6097,48,34,1,6103,6094,6097,6094,6094,6094, + 127,6094,563,6094,6094,2190,6346,6360,6361,1, + 1,1,1438,1463,6346,776,6758,6346,5847,5844, + 6094,700,134,230,370,986,415,4447,6343,6908, + 6094,6094,1761,6094,6094,1113,444,1,1,6846, + 1,6085,6085,6085,225,6346,132,6085,6085,5888, + 5882,5885,6346,1997,6094,6781,6782,6783,3071,6094, + 6094,6094,3642,2648,6094,6094,6346,6094,6094,6683, + 6607,6684,6186,6601,6608,6604,6580,6606,6605,6602, + 6603,6581,6094,6094,6094,6094,6094,6094,6094,6094, + 6094,6094,6094,6094,6094,6094,6094,3578,3494,1282, + 6094,6094,6094,6094,6094,6094,6094,6094,6094,6094, + 6094,6094,6094,6346,6094,6346,6213,4761,6213,6213, + 6213,6346,6213,2908,6213,6213,1981,6675,445,40, + 40,226,6385,6192,6198,6195,5897,5891,5894,6201, + 6201,6213,6346,394,5909,5909,6346,284,5900,5906, + 5903,6213,6213,2607,6213,6213,6683,6607,6684,6346, + 6601,6608,6604,6580,6606,6605,6602,6603,6581,6346, + 9842,9326,93,1,1,6213,1,6283,6283,6283, + 6213,6213,6213,6283,6283,6213,6213,284,6213,6213, + 6346,5860,5856,2489,5853,6031,6037,6034,986,1159, + 4447,6082,6082,6213,6213,6213,6213,6213,6213,6213, + 6213,6213,6213,6213,6213,6213,6213,6213,49,6028, + 6025,6213,6213,6213,6213,6213,6213,6213,6213,6213, + 6213,6213,6213,6213,358,6213,6346,5841,5841,230, + 5841,5834,5841,5841,230,5870,230,230,230,1, 1,1,1,1,1,1,1,1,1,1, - 1,230,1,1,1,9827,1,1,1,1, - 1,1,6279,337,38,6030,6030,1,5771,1434, - 1,5793,5789,2482,5786,5964,5970,5967,707,3889, - 310,6279,6279,1,1,1,1078,1225,6617,695, - 6491,6618,1,5793,5789,3371,5786,310,6279,309, - 707,3889,368,1,5793,5789,5783,5786,6316,2081, - 6609,5800,5797,6780,6279,5774,5774,230,5774,5767, - 5774,5774,230,230,6033,230,230,1,1,1, + 1,1,1,1,230,1,1,10001,1,1, + 1,1,1,1,6346,5847,5844,302,6385,1, + 5838,6346,5860,5856,2489,5853,6031,6037,6034,986, + 6647,4447,6082,6082,6346,1,1,1,1952,1260, + 6346,704,6558,96,40,40,117,6385,6322,6328, + 6325,6346,220,224,6331,6331,578,4719,5879,5873, + 5876,6262,6268,6265,6346,6846,6703,6611,6609,6618, + 6617,6613,6614,6612,6615,6616,6619,6610,6683,6607, + 6684,6346,6601,6608,6604,6580,6606,6605,6602,6603, + 6581,287,5921,5921,2190,284,741,723,731,220, + 6346,5841,5841,230,5841,5834,5841,5841,230,230, + 230,230,230,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,230,1, + 1,10001,1,1,1,1,1,1,397,6360, + 6361,4686,4656,1,5838,30,387,387,6247,387, + 387,387,387,387,6247,387,6247,6247,6346,1, + 1,1,577,1260,6346,704,6558,6271,6277,6274, + 387,387,387,6247,387,387,387,387,387,387, + 387,387,387,1,5860,5856,5850,5853,6346,6846, + 418,5867,6356,5864,6346,741,723,731,345,5847, + 5844,3468,700,741,723,731,986,6058,4447,331, + 331,6355,6247,6247,580,6076,6076,6346,584,741, + 723,731,6346,221,6346,5841,5841,230,5841,5834, + 5841,5841,230,230,230,230,230,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,230,1,1,1,9827,1,1,1,1, - 1,1,1,5793,5789,2482,5786,1,5771,1434, - 707,3889,368,368,368,567,6279,1231,1,2992, - 841,721,829,1,1,1,6287,1225,6122,695, - 6491,1,6171,6171,368,6168,5964,5970,5967,6279, - 221,364,332,332,572,6009,6009,6279,576,841, - 721,829,6279,6780,6279,5774,5774,230,5774,5767, - 5774,5774,230,230,6033,230,230,1,1,1, + 1,1,230,1,1,10001,1,1,1,1, + 1,1,38,6097,6097,1438,227,1,5838,122, + 40,5918,5912,5915,6385,741,723,731,439,405, + 136,331,331,1,1,1,1259,1260,6177,704, + 6558,6683,6607,6684,6858,6601,6608,6604,6580,6606, + 6605,6602,6603,6581,395,448,6383,6180,396,741, + 723,731,387,6846,6346,5841,5841,230,5841,5834, + 5841,5841,230,6100,230,230,230,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,230,1,1,1,9827,1,1,1,1, - 1,1,6286,6279,6286,6279,1126,1,5771,93, - 1,1,364,1,6216,6216,6216,6279,6279,6279, - 6216,6216,1893,1,1,1,6279,1225,6279,695, - 6491,396,131,364,5019,6279,841,721,829,2640, - 221,116,1,5793,5789,2482,5786,5964,5970,5967, - 707,3889,4710,6780,6279,5774,5774,230,5774,5767, - 5774,5774,230,230,6033,230,230,1,1,1, + 1,1,230,1,1,10001,1,1,1,1, + 1,1,126,39,6049,6046,6346,1,5838,4281, + 4306,6043,228,4447,133,138,1555,5930,5924,5927, + 1555,125,6346,1,1,1,3071,1260,627,704, + 6558,6358,2737,6781,6782,6783,6346,6683,6607,6684, + 221,6601,6608,6604,6580,6606,6605,6602,6603,6581, + 6346,6156,6153,6846,6346,5841,5841,230,5841,5834, + 5841,5841,230,6100,230,230,230,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,230,1,1,1,9827,1,1,1,1, - 1,1,6681,1789,6279,6089,6086,1,5771,96, - 40,40,6279,6318,6255,6261,6258,140,6279,559, - 6264,6264,1898,1,1,1,2185,1225,6289,695, - 6491,429,346,40,40,3202,6318,841,721,829, - 221,3337,3257,332,332,6288,4687,4664,6316,44, - 6095,6095,1851,6780,6279,5774,5774,230,5774,5767, - 5774,5774,230,230,230,230,230,1,1,1, + 1,1,230,1,1,10001,1,1,1,1, + 1,1,4281,4306,6383,40,6357,1,5838,6385, + 1,5860,5856,2489,5853,6031,6037,6034,986,309, + 4447,4281,4306,1,1,1,6346,1260,2696,704, + 6558,1371,458,1,5860,5856,3468,5853,309,5833, + 221,986,367,4447,129,6346,9842,9326,44,6162, + 6162,457,308,6846,6346,5841,5841,230,5841,5834, + 5841,5841,230,6100,230,230,230,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,230,1,1,1,9827,1,1,1,1, - 1,1,1997,6092,38,6279,40,1,5771,1434, - 6318,841,721,829,575,1471,6279,332,332,841, - 721,829,6279,1,1,1,6279,1225,566,695, - 6491,2649,6285,841,721,829,3084,1950,1903,1856, - 1809,1762,1715,1668,1621,1574,1527,49,6316,319, - 6279,6293,6012,6780,6279,5774,5774,230,5774,5767, - 5774,5774,230,230,230,230,230,1,1,1, + 1,1,230,1,1,10001,1,1,1,1, + 1,1,6159,46,6222,6222,1,1,5838,6088, + 1438,367,367,139,140,367,3642,140,1234,6171, + 6781,6782,6783,1,1,1,6250,1260,6091,704, + 6558,3005,1,6238,6238,367,6235,6031,6037,6034, + 221,363,6346,331,331,318,532,6219,6079,6174, + 2638,3578,3494,6846,6346,5841,5841,230,5841,5834, + 5841,5841,230,230,230,230,230,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,230,1,1,1,9827,1,1,1,1, - 1,1,997,6284,38,6030,6030,1,5771,841, - 721,829,6279,5780,5777,332,691,1,406,6293, - 707,3889,1789,1,1,1,1434,1225,6110,695, - 6491,6279,5793,5789,2482,5786,5964,5970,5967,707, - 3889,1,6015,6015,3202,6113,6279,545,6316,348, - 1135,6137,2983,6780,6279,5774,5774,230,5774,5767, - 5774,5774,230,230,230,230,230,1,1,1, + 1,1,230,1,1,10001,1,1,1,1, + 1,1,2002,6346,10536,10536,238,1,5838,6241, + 363,1,5860,5856,2489,5853,6031,6037,6034,986, + 3774,4447,1438,1,1,1,2696,1260,2657,704, + 6558,2657,311,3489,363,998,3489,1955,1908,1861, + 1814,1767,1720,1673,1626,1579,1532,6383,38,6097, + 6097,124,6346,6846,6346,5841,5841,230,5841,5834, + 5841,5841,230,230,230,230,230,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,230,1,1,1,9827,1,1,1,1, - 1,1,1,5793,5789,2482,5786,1,5771,6279, - 707,3889,5565,6279,6279,2185,40,1515,1434,6639, - 6318,6279,6140,1,1,1,1434,1225,6792,695, - 6491,1,5793,5789,2482,5786,5964,5970,5967,707, - 3889,6279,674,1,5793,5789,5233,5786,121,1, - 6279,4733,3889,6780,4799,4821,6050,6077,6083,6056, - 6059,6071,6068,6074,6065,6062,6053,6080,6279,6213, - 6213,6213,6213,6213,6213,6213,6213,6213,6279,6213, - 6213,4777,4755,6299,4865,4843,4388,4345,4461,1834, - 1926,6301,1852,3030,1879,6302,6300,1805,6295,6297, - 6298,6296,46,6155,6155,2185,6279,1478,6279,5961, - 5958,40,40,6279,6279,517,40,5780,5777,5233, - 691,6715,6716,6717,4733,3889,6252,4799,4821,1501, - 6544,6542,6551,6550,6546,6547,6545,6548,6549,6552, - 6543,3704,6213,573,6006,6006,6152,576,5997,6003, - 6000,6279,6293,6294,4777,4755,6299,4865,4843,707, - 3889,4461,1834,1926,6301,1852,3030,1879,6302,6300, - 1805,6295,6297,6298,6296,1078,4887,2396,6735,574, - 1478,6279,6293,6294,841,721,829,576,2319,6101, - 6279,6291,6286,40,5780,5777,5233,691,120,3449, - 6279,4733,3889,6098,4799,4821,1501,6544,6542,6551, - 6550,6546,6547,6545,6548,6549,6552,6543,346,5780, - 5777,3371,691,841,721,829,707,3889,6279,332, - 332,4777,4755,6299,4865,4843,4388,4345,4461,1834, - 1926,6301,1852,3030,1879,6302,6300,1805,6295,6297, - 6298,6296,6279,6279,6290,6279,6279,1478,999,142, - 5780,5777,5233,691,516,6285,6101,4733,3889,321, - 4799,4821,1501,6544,6542,6551,6550,6546,6547,6545, - 6548,6549,6552,6543,332,1434,6279,1994,459,841, - 721,829,1,1,458,3202,6285,4777,4755,6299, - 4865,4843,342,5994,4461,1834,1926,6301,1852,3030, - 1879,6302,6300,1805,6295,6297,6298,6296,3596,450, - 440,349,3934,1478,3660,6279,6284,40,40,553, - 5780,5777,5233,691,948,6285,1434,4733,3889,6279, - 4799,4821,1501,6544,6542,6551,6550,6546,6547,6545, - 6548,6549,6552,6543,6279,6021,6279,6284,2803,1434, - 135,6024,342,342,342,6279,6290,4777,4755,6299, - 4865,4843,6279,137,4461,1834,1926,6301,1852,3030, - 1879,6302,6300,1805,6295,6297,6298,6296,1434,3323, - 363,76,1,1478,2128,1387,6284,40,40,1, - 5793,5789,5233,5786,290,6104,6279,4733,3889,3360, - 4799,4821,6050,6077,6083,6056,6059,6071,6068,6074, - 6065,6062,6053,6080,568,6715,6716,6717,6721,841, - 721,829,6342,6343,5380,6107,2714,4777,4755,6299, - 4865,4843,158,6279,4461,1834,1926,6301,1852,3030, - 1879,6302,6300,1805,6295,6297,6298,6296,2984,418, - 3726,2895,427,1478,841,721,829,40,40,40, - 5780,5777,5233,691,1710,2727,6279,4733,3889,6098, - 4799,4821,1501,6544,6542,6551,6550,6546,6547,6545, - 6548,6549,6552,6543,1,5793,5789,3371,5786,717, - 6279,6279,707,3889,6137,5627,6279,4777,4755,6299, - 4865,4843,2044,2496,4461,1834,1926,6301,1852,3030, - 1879,6302,6300,1805,6295,6297,6298,6296,6279,10274, - 10274,1,3456,1478,6279,40,5780,5777,5233,691, - 6279,6279,6101,4733,3889,6283,4799,4821,1501,6544, - 6542,6551,6550,6546,6547,6545,6548,6549,6552,6543, - 6279,1434,570,5644,2402,6140,6279,6195,6201,6198, - 2680,687,6316,4777,4755,6299,4865,4843,3368,6279, - 4461,1834,1926,6301,1852,3030,1879,6302,6300,1805, - 6295,6297,6298,6296,1,292,2918,1759,6279,6279, - 6293,6294,6749,6279,6279,6743,6747,1646,6223,6231, - 6227,6279,3426,6235,6289,33,389,389,6177,389, - 389,389,389,389,389,6177,6177,6177,1,6279, - 6235,6288,6741,6742,92,6772,6773,6143,364,6750, - 389,389,6177,389,389,389,389,389,389,389, - 389,389,389,569,118,6282,6752,3620,6204,6210, - 6207,942,1383,1465,6774,4710,6753,6279,8,6751, - 2226,1,2091,6235,3136,38,6030,6030,6270,6279, - 6279,529,6177,371,6763,6762,6177,6775,376,6744, - 6745,6768,6769,6766,6767,6746,6748,6770,6771,364, - 238,3436,6776,6174,6756,6757,6758,6754,6755,6764, - 6765,6760,6759,6761,40,5780,5777,5233,691,1599, - 364,1,4733,3889,5698,4799,4821,1501,6544,6542, - 6551,6550,6546,6547,6545,6548,6549,6552,6543,6279, - 5780,5777,529,691,6270,6279,533,6149,3889,4687, - 4664,3442,4777,4755,6299,4865,4843,369,1279,4461, - 1834,1926,6301,1852,3030,1879,6302,6300,1805,6295, - 6297,6298,6296,40,5780,5777,5233,691,1478,6279, - 6279,4733,3889,1122,4799,4821,1501,6544,6542,6551, - 6550,6546,6547,6545,6548,6549,6552,6543,6279,6279, - 5780,5777,6279,691,74,5217,6279,6149,3889,3449, - 3678,4777,4755,6299,4865,4843,6285,6279,4461,1834, - 1926,6301,1852,3030,1879,6302,6300,1805,6295,6297, - 6298,6296,1340,40,5780,5777,5233,691,6279,6279, - 2169,4733,3889,2566,4799,4821,1501,6544,6542,6551, - 6550,6546,6547,6545,6548,6549,6552,6543,419,6279, - 101,509,6279,841,721,829,6267,6279,6279,6287, - 5629,4777,4755,6299,4865,4843,5699,6284,4461,1834, - 1926,6301,1852,3030,1879,6302,6300,1805,6295,6297, - 6298,6296,40,5780,5777,5591,691,1478,6279,6279, - 4733,3889,507,4799,4821,1501,6544,6542,6551,6550, - 6546,6547,6545,6548,6549,6552,6543,6279,6242,6238, - 421,6279,6279,6279,5335,5632,3326,5287,6279,643, - 4777,4755,6299,4865,4843,6286,5645,4461,1834,1926, - 6301,1852,3030,1879,6302,6300,1805,6295,6297,6298, - 6296,40,5780,5777,5233,691,6279,186,6279,4733, - 3889,6316,4799,4821,1501,6544,6542,6551,6550,6546, - 6547,6545,6548,6549,6552,6543,1,5674,2,6279, - 6279,127,3835,4169,6279,6279,164,4448,3958,4777, - 4755,6299,4865,4843,6279,2371,4461,1834,1926,6301, - 1852,3030,1879,6302,6300,1805,6295,6297,6298,6296, - 40,5780,5777,5233,691,6279,6279,6279,4733,3889, - 3922,4799,4821,1501,6544,6542,6551,6550,6546,6547, - 6545,6548,6549,6552,6543,6279,6279,6279,6279,6279, - 38,6279,6279,3535,1,4012,522,164,4777,4755, - 6299,4865,4843,6119,6285,4461,1834,1926,6301,1852, - 3030,1879,6302,6300,1805,6295,6297,6298,6296,6279, - 5780,5777,6279,6318,841,721,829,6279,3473,3398, - 5377,6276,619,6544,6542,6551,6550,6546,6547,6545, - 6548,6549,6552,6543,6617,6540,117,6618,6534,6541, - 6537,6513,6539,6538,6535,6536,6514,4710,129,3853, - 128,3898,6678,3943,104,6284,1477,4069,242,5948, - 5944,100,5952,5878,5872,5875,6279,511,2943,6679, - 6680,619,5935,5941,5914,5917,5929,5926,5932,5923, - 5920,5911,5938,5884,5890,6279,5881,5908,5887,5899, - 5869,5893,5896,5905,5902,5866,1,5793,5789,5783, - 5786,6678,6279,1,5800,5797,6289,3449,6279,6279, - 3535,1,3535,6289,6279,6279,6279,2943,6679,6680, - 6183,192,6186,6288,6279,6279,279,5518,2412,6273, - 6288,4687,4664,6279,6279,6279,6279,6279,192,6279, - 6279,2138,1000,6279,6279,3473,3398,3473,3398 + 1,1,230,1,1,10001,1,1,1,1, + 1,1,1698,1,38,6097,6097,1,5838,741, + 723,731,291,6360,6361,331,6171,1088,1,5860, + 5856,5850,5853,1,1,1,5867,1260,5864,704, + 6558,6346,6280,6280,6280,6280,6280,6280,6280,6280, + 3701,6280,6280,6280,387,49,6174,2638,6383,6361, + 6346,4281,4306,6846,6346,5841,5841,230,5841,5834, + 5841,5841,230,230,230,230,230,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,230,1,1,10001,1,1,1,1, + 1,1,1,5860,5856,2489,5853,1,5838,6346, + 986,119,4447,112,6280,336,6022,6361,1,5860, + 5856,2489,5853,1,1,1,986,1260,4447,704, + 6558,1,5860,5856,2489,5853,6031,6037,6034,986, + 6683,4447,6684,454,1,5860,5856,2564,5853,4594, + 4569,115,4041,6846,4447,4909,4931,6117,6144,6150, + 6123,6126,6138,6135,6141,6132,6129,6120,6147,345, + 40,40,4365,6385,741,723,731,368,6346,1750, + 331,331,4887,4865,6366,4975,4953,6352,6346,3043, + 1912,1983,6368,1933,3534,1959,6369,6367,1904,6362, + 6364,6365,6363,568,2190,6052,5019,5041,1483,40, + 5847,5844,2564,700,40,40,516,4041,6319,4447, + 4909,4931,1414,6611,6609,6618,6617,6613,6614,6612, + 6615,6616,6619,6610,1,6346,1438,5691,5615,131, + 6346,6309,6305,1715,5019,5041,6351,4887,4865,6366, + 4975,4953,1344,566,3043,1912,1983,6368,1933,3534, + 1959,6369,6367,1904,6362,6364,6365,6363,6346,6346, + 581,6073,6073,1483,584,6064,6070,6067,40,5847, + 5844,2564,700,6168,6383,6353,4041,6165,4447,4909, + 4931,1414,6611,6609,6618,6617,6613,6614,6612,6615, + 6616,6619,6610,1,5860,5856,2489,5853,6031,6037, + 6034,986,6346,4447,584,682,4887,4865,6366,4975, + 4953,6352,1558,3043,1912,1983,6368,1933,3534,1959, + 6369,6367,1904,6362,6364,6365,6363,4538,3363,3330, + 5063,1,1483,142,5847,5844,2564,700,121,137, + 6061,4041,6168,4447,4909,4931,1414,6611,6609,6618, + 6617,6613,6614,6612,6615,6616,6619,6610,6346,1, + 5860,5856,3468,5853,114,6346,2190,986,6204,4447, + 6351,4887,4865,6366,4975,4953,4594,4569,3043,1912, + 1983,6368,1933,3534,1959,6369,6367,1904,6362,6364, + 6365,6363,347,6346,348,2962,120,1483,552,5847, + 5844,2564,700,40,40,6357,4041,6346,4447,4909, + 4931,1414,6611,6609,6618,6617,6613,6614,6612,6615, + 6616,6619,6610,6346,6360,6361,1438,6207,38,6346, + 6360,6361,6358,123,4594,4569,4887,4865,6366,4975, + 4953,2737,6346,3043,1912,1983,6368,1933,3534,1959, + 6369,6367,1904,6362,6364,6365,6363,5019,5041,1438, + 440,1438,1483,1,5860,5856,2564,5853,40,40, + 135,4041,6383,4447,4909,4931,6117,6144,6150,6123, + 6126,6138,6135,6141,6132,6129,6120,6147,1,5860, + 5856,3468,5853,6346,6028,6025,986,6357,4447,4997, + 1999,4887,4865,6366,4975,4953,6346,6346,3043,1912, + 1983,6368,1933,3534,1959,6369,6367,1904,6362,6364, + 6365,6363,6055,4281,4306,6346,1,1483,40,5847, + 5844,2564,700,40,40,6356,4041,6165,4447,4909, + 4931,1414,6611,6609,6618,6617,6613,6614,6612,6615, + 6616,6619,6610,1,6355,1438,4365,6346,6346,6346, + 5620,49,341,4997,1999,6360,4887,4865,6366,4975, + 4953,2908,6346,3043,1912,1983,6368,1933,3534,1959, + 6369,6367,1904,6362,6364,6365,6363,37,6316,6313, + 6346,1,1483,5303,4365,40,5847,5844,2564,700, + 6204,2884,6168,4041,6350,4447,4909,4931,1414,6611, + 6609,6618,6617,6613,6614,6612,6615,6616,6619,6610, + 1438,341,341,6360,113,341,30,6346,4538,6346, + 1,3713,6346,4887,4865,6366,4975,4953,6352,363, + 3043,1912,1983,6368,1933,3534,1959,6369,6367,1904, + 6362,6364,6365,6363,1,6346,6346,1386,1438,6207, + 6346,515,6815,6346,6354,6809,6813,449,6290,6298, + 6294,1,6302,6346,6346,33,388,388,6244,388, + 388,388,388,388,6244,388,6244,6244,6058,1898, + 362,6302,6807,6808,1555,6838,6839,6351,363,6816, + 388,388,388,6244,388,388,388,388,388,388, + 388,388,388,1809,1715,6349,6818,5019,5041,6346, + 1,1278,363,6840,1583,1622,6819,6346,6350,6817, + 961,6353,6302,6747,6346,290,773,428,6346,6360, + 6361,6346,6244,6244,6829,6828,986,6841,4447,6810, + 6811,6834,6835,6832,6833,6812,6814,6836,6837,931, + 633,6346,6842,6705,6822,6823,6824,6820,6821,6830, + 6831,6826,6825,6827,40,5847,5844,2564,700,6346, + 6346,6346,4041,2046,4447,4909,4931,1414,6611,6609, + 6618,6617,6613,6614,6612,6615,6616,6619,6610,6346, + 5847,5844,6346,700,791,6346,6801,986,6346,4447, + 936,6346,4887,4865,6366,4975,4953,6352,6346,3043, + 1912,1983,6368,1933,3534,1959,6369,6367,1904,6362, + 6364,6365,6363,40,5847,5844,2564,700,1483,6349, + 6346,4041,1259,4447,4909,4931,1414,6611,6609,6618, + 6617,6613,6614,6612,6615,6616,6619,6610,6346,5847, + 5844,6346,700,30,4366,6346,6216,5622,4447,6346, + 6352,4887,4865,6366,4975,4953,6351,2076,3043,1912, + 1983,6368,1933,3534,1959,6369,6367,1904,6362,6364, + 6365,6363,101,40,5847,5844,2564,700,6346,6346, + 1936,4041,2573,4447,4909,4931,1414,6611,6609,6618, + 6617,6613,6614,6612,6615,6616,6619,6610,6346,2091, + 6346,6346,6346,6346,1,1555,6346,6352,1,6351, + 1391,4887,4865,6366,4975,4953,424,162,3043,1912, + 1983,6368,1933,3534,1959,6369,6367,1904,6362,6364, + 6365,6363,40,5847,5844,5573,700,1483,375,4755, + 4041,5633,4447,4909,4931,1414,6611,6609,6618,6617, + 6613,6614,6612,6615,6616,6619,6610,158,6346,1, + 1,6346,5658,2957,5632,6346,6351,6354,6189,528, + 4887,4865,6366,4975,4953,6787,162,3043,1912,1983, + 6368,1933,3534,1959,6369,6367,1904,6362,6364,6365, + 6363,40,5847,5844,2564,700,3699,6346,6346,4041, + 3825,4447,4909,4931,1414,6611,6609,6618,6617,6613, + 6614,6612,6615,6616,6619,6610,6346,6346,6346,508, + 3870,4241,6346,3633,1745,4753,2049,652,528,4887, + 4865,6366,4975,4953,6353,6353,3043,1912,1983,6368, + 1933,3534,1959,6369,6367,1904,6362,6364,6365,6363, + 40,5847,5844,2564,700,6346,6346,6346,4041,3633, + 4447,4909,4931,1414,6611,6609,6618,6617,6613,6614, + 6612,6615,6616,6619,6610,6346,5847,5844,8,700, + 506,426,6346,6216,6346,4447,420,6337,4887,4865, + 6366,4975,4953,6356,5673,3043,1912,1983,6368,1933, + 3534,1959,6369,6367,1904,6362,6364,6365,6363,6346, + 5847,5844,6355,6385,741,723,731,6346,6346,2971, + 3980,4089,795,6611,6609,6618,6617,6613,6614,6612, + 6615,6616,6619,6610,6683,6607,6684,6346,6601,6608, + 6604,6580,6606,6605,6602,6603,6581,6346,128,6346, + 3560,6346,6744,3151,6337,5686,6352,6346,242,6015, + 6011,2378,6019,5945,5939,5942,6352,6346,841,6745, + 6746,795,6002,6008,5981,5984,5996,5993,5999,5990, + 5987,5978,6005,5951,5957,5948,6346,5975,5954,5966, + 5936,5960,5963,5972,5969,5933,76,1,1,2445, + 1,6744,6346,6346,6346,6346,164,192,6346,6352, + 3642,6346,1369,100,4095,6351,5693,841,6745,6746, + 6253,6346,2325,3605,5068,6351,192,74,104,521, + 1417,4368,6346,6346,510,2,5621,6409,6410,3606, + 279,6346,6346,6340,6346,3578,3494,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,3608,6346, + 6346,6346,6346,1220,6346,164,6346,6346,6351,6346, + 6346,6346,6346,6346,3614,6346,2096,3710,3755,6346, + 2419,3800,6346,6346,6346,6346,6346,6346,6346,6334, + 6346,6346,6346,6346,6346,6346,6346,38,6346,6346, + 6346,6346,6346,6346,727,6346,6346,2143,6346,2504, + 6346,6346,6346,6346,6346,6346,6346,6346,1013,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 6346,6346,6346,6346,6346,6346,6346,6346,6346,6346, + 3633 }; }; public final static char termAction[] = TermAction.termAction; @@ -2015,64 +2035,65 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface Asb { public final static char asb[] = {0, - 1119,1,1110,1068,907,1153,457,1070,583,59, - 1118,938,148,583,947,1068,1068,1068,958,61, - 958,812,958,689,958,942,958,938,151,264, - 1153,1015,524,637,637,867,151,637,151,1068, - 466,745,161,411,61,269,151,149,393,733, - 392,583,407,814,454,812,59,938,689,468, - 151,151,455,940,285,285,686,620,273,273, - 1018,605,685,1015,1015,151,1164,393,468,468, - 634,330,393,637,637,466,637,151,203,772, - 423,412,412,411,411,411,938,151,149,686, - 258,393,391,392,393,407,151,282,823,459, - 455,61,531,151,468,455,151,199,285,61, - 938,620,289,1015,1021,151,111,19,1015,620, - 199,630,468,468,1018,330,330,149,772,423, - 411,404,411,151,686,686,254,253,392,404, - 151,407,287,59,466,147,3,407,282,460, - 285,282,285,455,531,531,151,745,243,1068, - 466,466,466,466,938,1068,92,526,112,112, - 112,112,112,112,112,112,112,639,645,650, - 647,654,652,659,657,661,660,662,341,663, - 744,151,940,151,61,73,536,151,1068,330, - 677,1022,393,111,404,61,1015,620,1025,630, - 745,745,634,393,762,747,761,744,466,396, - 396,404,404,151,258,393,350,393,203,5, - 285,285,285,285,151,531,404,587,403,1018, - 768,758,757,92,907,907,907,907,151,351, - 393,393,92,1027,906,203,92,639,154,154, - 351,111,112,112,112,112,112,112,112,112, - 112,112,112,112,112,112,112,112,112,112, - 112,111,111,111,111,111,111,111,111,111, - 111,111,111,112,92,199,585,74,938,151, - 351,592,404,19,630,629,611,111,759,759, - 766,1018,831,423,412,423,743,743,686,254, - 149,685,112,287,621,599,682,5,285,285, - 333,404,112,151,243,393,770,772,393,393, - 745,745,745,745,455,393,112,698,964,964, - 938,526,330,906,111,393,148,150,148,393, - 330,647,647,645,645,645,652,652,652,652, - 650,650,657,654,654,660,659,661,287,662, - 585,73,287,112,287,686,72,1068,1068,1068, - 74,1068,151,540,686,686,151,61,393,111, - 19,630,611,111,111,770,747,423,907,907, - 350,686,5,112,112,682,682,5,5,536, - 937,334,151,393,772,1068,1068,1068,1068,151, - 151,151,203,112,907,643,209,393,151,150, - 203,111,64,1068,64,74,287,74,92,92, - 90,810,92,686,686,627,585,403,613,744, - 682,682,333,151,938,938,151,737,393,111, - 111,111,111,1068,1068,455,149,393,643,1018, - 940,151,149,831,74,393,1015,393,90,1153, - 1068,393,585,402,18,613,808,151,151,151, - 737,737,393,393,393,393,351,351,151,643, - 644,643,111,209,207,639,940,393,393,1012, - 74,627,74,686,1153,111,74,71,402,402, - 1068,396,151,151,739,737,393,393,999,643, - 351,112,330,207,61,61,1014,111,72,351, - 686,393,773,743,739,739,644,393,330,74, - 393,686,254,148,739,74,907 + 1090,1,902,135,969,1124,261,862,759,59, + 1089,1000,595,1179,1009,1179,1179,1179,1020,61, + 1020,910,1020,77,1020,1004,1020,1000,598,86, + 1124,1077,418,685,685,929,598,685,598,1179, + 438,769,154,215,61,207,598,596,756,673, + 358,759,211,912,258,910,59,1000,77,362, + 598,598,259,1002,150,150,734,617,138,138, + 1080,632,733,1077,1077,598,813,359,362,362, + 682,304,359,685,685,438,685,598,196,822, + 227,216,216,215,215,215,1000,598,596,604, + 425,603,64,358,357,359,211,598,147,921, + 431,259,61,489,598,362,259,598,192,150, + 61,1000,617,263,1077,1083,598,558,19,1077, + 617,192,678,362,362,1080,304,304,596,822, + 227,215,204,215,598,734,734,756,734,1135, + 759,485,484,358,204,598,211,152,59,438, + 594,3,211,147,432,150,147,150,259,489, + 489,598,769,474,1179,438,438,438,438,1000, + 1179,539,420,559,559,559,559,559,559,559, + 559,559,687,693,698,695,702,700,707,705, + 709,708,710,307,711,768,598,1002,598,61, + 520,500,598,1179,304,725,1084,359,558,204, + 61,1077,617,1087,678,769,769,682,359,752, + 737,751,768,438,494,494,204,204,598,599, + 359,64,359,316,359,196,5,150,150,150, + 150,598,489,204,506,203,1080,818,748,747, + 539,969,969,969,969,598,317,359,359,539, + 1138,968,196,539,687,70,70,317,558,559, + 559,559,559,559,559,559,559,559,559,559, + 559,559,559,559,559,559,559,559,558,558, + 558,558,558,558,558,558,558,558,558,558, + 559,539,192,504,521,1000,598,317,601,204, + 19,678,677,608,558,749,749,816,1080,91, + 227,216,227,767,767,734,359,485,596,733, + 559,152,618,626,730,5,150,150,127,204, + 559,598,474,359,820,822,359,359,769,769, + 769,769,259,359,559,638,1026,1026,1000,420, + 304,968,558,359,595,597,595,359,304,695, + 695,693,693,693,700,700,700,700,698,698, + 705,702,702,708,707,709,152,710,504,520, + 152,559,152,734,519,1179,1179,1179,521,1179, + 598,771,734,734,598,61,359,558,19,678, + 608,558,558,820,737,227,969,969,316,734, + 5,559,559,730,730,5,5,500,999,128, + 598,359,822,1179,1179,1179,1179,598,598,598, + 196,559,969,691,440,359,598,597,196,558, + 511,1179,511,521,152,521,539,539,537,860, + 539,734,734,624,504,203,610,768,730,730, + 127,598,1000,1000,598,761,359,558,558,558, + 558,1179,1179,259,596,359,691,1080,1002,598, + 596,91,521,359,1077,359,537,1124,1179,359, + 504,202,18,610,858,598,598,598,761,761, + 359,359,359,359,317,317,598,691,692,691, + 558,440,200,687,1002,359,359,1074,521,624, + 521,734,1124,558,521,518,202,202,1179,494, + 598,598,763,761,359,359,1061,691,317,559, + 304,200,61,61,1076,558,519,317,734,359, + 823,767,763,763,692,359,304,521,359,734, + 485,595,763,521,969 }; }; public final static char asb[] = Asb.asb; @@ -2080,123 +2101,124 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface Asr { public final static char asr[] = {0, - 123,0,27,10,3,9,8,74,12,11, - 4,1,2,6,7,5,0,76,68,69, + 123,0,28,9,3,10,8,73,12,11, + 4,1,2,6,7,5,0,76,70,71, 64,41,42,12,11,38,39,8,45,50, - 3,4,9,55,58,56,57,40,53,48, + 3,4,10,55,58,56,57,40,53,48, 52,15,24,14,20,18,19,21,22,17, 16,23,13,47,51,49,46,54,1,2, - 73,10,0,89,105,106,107,44,74,123, - 121,124,76,66,77,65,63,79,81,87, - 85,78,83,84,86,88,73,80,82,27, - 10,5,29,43,25,59,30,31,32,33, - 34,35,36,60,37,61,26,28,6,7, - 64,68,69,47,51,49,46,54,15,24, - 14,20,18,19,21,22,17,16,23,55, - 58,56,57,40,53,48,52,3,41,42, - 12,11,38,39,45,50,13,4,9,8, - 1,2,0,9,4,44,8,1,2,0, - 29,14,15,43,25,16,59,30,89,31, - 17,32,33,18,19,34,63,35,20,21, - 36,60,37,13,61,22,65,26,23,28, - 24,3,12,4,27,66,73,10,5,11, - 6,7,9,44,1,2,8,0,93,38, - 39,95,96,90,91,62,97,98,99,100, - 101,102,103,104,109,74,92,75,110,111, - 112,113,114,115,116,117,118,119,120,76, - 27,94,72,5,1,2,12,11,4,6, - 7,67,3,71,10,70,0,10,70,71, - 1,25,0,10,74,73,77,0,10,73, - 75,0,77,3,72,92,75,70,71,27, - 67,6,7,5,10,73,74,0,68,69, - 3,13,47,51,49,46,54,15,24,14, - 20,18,19,21,22,17,16,23,55,58, - 56,57,40,53,48,52,8,9,4,41, - 42,12,11,38,39,45,50,1,2,120, - 10,0,26,1,2,4,105,106,107,0, - 5,72,74,92,120,76,27,6,7,70, - 14,15,46,68,16,47,48,17,18,19, - 69,9,49,20,21,50,51,52,64,53, - 54,13,22,23,24,55,56,57,40,2, - 41,42,12,11,38,39,8,45,4,58, - 3,1,71,10,0,72,75,70,1,2, - 0,27,70,76,10,0,105,106,107,74, - 76,9,10,3,12,11,8,27,66,63, - 89,65,5,29,14,15,43,25,16,59, - 30,31,17,32,33,18,19,34,35,20, - 21,36,60,37,13,61,22,26,23,28, - 24,6,7,4,1,2,44,0,4,10, - 74,73,6,7,5,62,0,5,29,14, - 15,43,25,46,16,47,59,30,31,48, - 17,32,33,18,19,34,35,49,20,21, - 50,36,51,60,52,64,53,37,54,13, - 61,22,26,23,28,24,55,56,57,40, - 3,41,42,12,11,38,39,45,72,4, - 6,7,58,9,8,1,2,69,68,0, - 1,2,10,76,0,10,73,70,0,14, - 15,46,68,16,47,48,17,18,19,69, - 9,49,20,21,50,51,52,64,53,54, - 13,22,23,24,55,56,57,1,2,3, - 41,42,12,11,38,39,8,45,4,58, - 27,10,40,0,121,0,10,70,76,75, - 0,10,74,120,71,27,70,0,74,5, - 67,6,7,62,10,70,27,75,3,0, - 25,28,64,77,72,74,92,71,73,3, - 5,10,70,27,6,7,75,0,64,25, - 9,28,8,1,2,4,77,73,122,108, - 41,42,67,3,94,93,11,95,96,38, - 39,91,90,62,97,98,99,100,12,101, - 102,103,72,92,71,75,110,111,112,113, - 114,115,116,117,118,119,74,120,76,104, - 109,6,7,5,70,27,10,0,4,10, - 73,6,7,5,1,2,0,5,29,14, - 15,25,16,30,31,17,32,33,18,19, - 34,9,35,20,21,36,37,22,26,23, - 28,24,1,2,67,12,11,8,4,27, - 6,7,71,10,3,0,25,28,64,10, - 92,71,75,70,72,0,5,12,11,6, - 7,9,8,4,1,2,3,67,72,75, - 70,10,71,92,0,8,9,3,67,11, - 12,92,5,29,14,15,25,16,59,30, - 31,17,32,33,18,19,34,35,20,21, - 36,60,37,13,61,22,26,23,28,24, - 1,2,4,6,7,71,10,43,0,78, - 0,44,4,5,10,74,73,6,7,1, - 2,0,4,10,74,73,6,7,5,0, + 74,9,0,9,69,68,1,25,0,10, + 4,44,8,1,2,0,4,9,74,6, + 7,5,1,2,0,9,73,74,77,0, 5,29,14,15,43,25,16,59,30,31, 17,32,33,18,19,34,35,20,21,36, - 60,37,13,61,22,26,23,28,24,1, - 2,4,6,7,92,0,69,68,38,39, - 11,95,96,101,12,102,8,45,75,62, - 72,113,114,110,111,112,118,117,119,91, - 90,115,116,99,100,97,98,103,104,41, - 42,70,93,108,67,3,13,59,43,60, - 61,15,24,14,20,18,19,21,22,17, - 16,23,29,35,36,31,34,33,30,25, - 28,5,7,6,32,37,26,1,2,4, - 0,13,59,43,60,61,15,24,14,20, - 18,19,21,22,17,16,23,77,74,92, - 120,76,73,122,94,108,93,41,42,38, - 39,95,96,90,91,62,72,97,98,99, - 100,101,102,103,104,109,75,110,111,112, - 113,114,115,116,117,118,119,70,29,25, - 30,31,32,33,34,35,36,37,26,28, - 27,10,71,67,8,9,3,1,2,4, - 12,6,7,5,11,0,68,69,41,42, - 12,11,38,39,8,45,50,4,9,55, - 58,56,57,40,53,48,52,15,24,14, - 20,18,19,21,22,17,16,23,13,47, - 51,49,46,54,67,1,2,3,0,16, - 59,30,17,32,33,18,19,34,35,20, - 21,36,60,37,61,22,26,23,28,24, - 25,43,15,14,29,10,3,12,11,27, - 65,89,31,66,62,6,7,5,44,9, - 1,2,8,4,13,63,0,76,29,14, - 15,43,25,16,59,30,17,32,33,18, + 60,37,13,61,22,26,23,27,24,1, + 2,4,6,7,92,0,26,1,2,4, + 105,106,107,0,3,27,0,77,3,72, + 92,75,69,68,28,67,6,7,5,9, + 74,73,0,29,14,15,43,25,16,59, + 30,89,31,17,32,33,18,19,34,63, + 35,20,21,36,60,37,13,61,22,65, + 26,23,27,24,3,12,4,28,66,74, + 9,5,11,6,7,10,44,1,2,8, + 0,28,69,76,9,0,9,74,75,0, + 105,106,107,73,76,10,9,3,12,11, + 8,28,66,63,89,65,5,29,14,15, + 43,25,16,59,30,31,17,32,33,18, 19,34,35,20,21,36,60,37,13,61, - 22,26,23,28,24,123,66,63,31,89, - 65,44,5,10,27,6,7,8,9,1, - 2,4,3,11,12,0 + 22,26,23,27,24,6,7,4,1,2, + 44,0,70,71,3,13,47,51,49,46, + 54,15,24,14,20,18,19,21,22,17, + 16,23,55,58,56,57,40,53,48,52, + 8,10,4,41,42,12,11,38,39,45, + 50,1,2,120,9,0,5,72,73,92, + 120,76,28,6,7,69,14,15,46,70, + 16,47,48,17,18,19,71,10,49,20, + 21,50,51,52,64,53,54,13,22,23, + 24,55,56,57,40,2,41,42,12,11, + 38,39,8,45,4,58,3,1,68,9, + 0,5,29,14,15,43,25,46,16,47, + 59,30,31,48,17,32,33,18,19,34, + 35,49,20,21,50,36,51,60,52,64, + 53,37,54,13,61,22,26,23,27,24, + 55,56,57,40,3,41,42,12,11,38, + 39,45,72,4,6,7,58,10,8,1, + 2,71,70,0,9,73,69,68,3,0, + 4,9,73,74,6,7,5,62,0,93, + 38,39,95,96,90,91,62,97,98,99, + 100,101,102,103,104,109,73,92,75,110, + 111,112,113,114,115,116,117,118,119,120, + 76,28,94,72,5,1,2,12,11,4, + 6,7,67,3,68,9,69,0,1,2, + 9,76,0,72,75,69,1,2,0,9, + 74,69,0,121,0,9,69,76,75,0, + 89,105,106,107,44,73,123,121,124,76, + 66,77,65,63,79,81,87,85,78,83, + 84,86,88,74,80,82,28,9,5,29, + 43,25,59,30,31,32,33,34,35,36, + 60,37,61,26,27,6,7,64,70,71, + 47,51,49,46,54,15,24,14,20,18, + 19,21,22,17,16,23,55,58,56,57, + 40,53,48,52,3,41,42,12,11,38, + 39,45,50,13,4,10,8,2,1,0, + 120,28,69,68,9,73,0,25,27,64, + 77,72,73,92,68,74,3,5,9,69, + 28,6,7,75,0,73,5,67,6,7, + 62,9,69,28,75,3,0,5,29,14, + 15,25,16,30,31,17,32,33,18,19, + 34,10,35,20,21,36,37,22,26,23, + 27,24,1,2,67,12,11,8,4,28, + 6,7,68,9,3,0,64,25,10,27, + 8,1,2,4,77,74,122,108,41,42, + 67,3,94,93,11,95,96,38,39,91, + 90,62,97,98,99,100,12,101,102,103, + 72,92,68,75,110,111,112,113,114,115, + 116,117,118,119,73,120,76,104,109,6, + 7,5,69,28,9,0,5,12,11,6, + 7,10,8,4,1,2,3,67,72,75, + 69,9,68,92,0,9,73,68,40,0, + 25,27,64,9,92,68,75,69,72,0, + 14,15,46,70,16,47,48,17,18,19, + 71,10,49,20,21,50,51,52,64,53, + 54,13,22,23,24,55,56,57,40,1, + 2,3,41,42,38,39,8,45,4,58, + 28,9,11,12,0,8,10,3,67,11, + 12,92,5,29,14,15,25,16,59,30, + 31,17,32,33,18,19,34,35,20,21, + 36,60,37,13,61,22,26,23,27,24, + 1,2,4,6,7,68,9,43,0,78, + 0,16,59,30,17,32,33,18,19,34, + 35,20,21,36,60,37,61,22,26,23, + 27,24,25,43,15,14,29,9,3,12, + 11,28,65,89,31,66,62,6,7,5, + 44,10,1,2,8,4,13,63,0,44, + 4,5,9,73,74,6,7,1,2,0, + 4,9,73,74,6,7,5,0,71,70, + 38,39,11,95,96,101,12,102,8,45, + 75,62,72,113,114,110,111,112,118,117, + 119,91,90,115,116,99,100,97,98,103, + 104,41,42,69,93,108,67,3,13,59, + 43,60,61,15,24,14,20,18,19,21, + 22,17,16,23,29,35,36,31,34,33, + 30,25,27,5,7,6,32,37,26,1, + 2,4,0,13,59,43,60,61,15,24, + 14,20,18,19,21,22,17,16,23,77, + 73,92,120,76,74,122,94,108,93,41, + 42,38,39,95,96,90,91,62,72,97, + 98,99,100,101,102,103,104,109,75,110, + 111,112,113,114,115,116,117,118,119,69, + 29,25,30,31,32,33,34,35,36,37, + 26,27,28,9,68,67,8,10,3,1, + 2,4,12,6,7,5,11,0,76,29, + 14,15,43,25,16,59,30,17,32,33, + 18,19,34,35,20,21,36,60,37,13, + 61,22,26,23,27,24,123,66,63,31, + 89,65,44,5,9,12,28,6,7,8, + 10,2,4,3,1,11,0,70,71,41, + 42,12,11,38,39,8,45,50,4,10, + 55,58,56,57,40,53,48,52,15,24, + 14,20,18,19,21,22,17,16,23,13, + 47,51,49,46,54,67,1,2,3,0 }; }; public final static char asr[] = Asr.asr; @@ -2204,64 +2226,65 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface Nasb { public final static char nasb[] = {0, - 204,12,36,12,5,16,12,242,12,90, - 242,30,30,12,229,12,12,12,230,198, - 230,130,230,130,230,223,12,10,159,188, - 123,183,153,12,12,200,239,12,159,12, - 12,12,197,188,198,12,220,220,285,285, - 54,12,188,167,30,215,90,30,215,188, - 159,11,12,12,188,13,134,130,81,81, - 260,44,12,149,209,159,12,285,188,188, - 74,103,285,12,12,12,12,11,178,188, - 188,242,242,188,204,188,30,94,153,134, - 72,285,12,83,285,247,168,130,130,12, - 220,198,188,220,46,118,168,143,13,63, - 56,215,98,149,215,159,69,24,124,130, - 232,188,46,46,260,103,103,153,276,276, - 204,61,204,220,134,134,285,12,285,61, - 159,134,12,93,12,36,15,247,130,130, - 188,215,188,118,188,240,11,12,172,12, - 12,12,12,12,30,12,264,159,26,26, - 235,26,26,26,26,26,26,12,12,12, - 12,12,12,12,12,12,12,12,26,12, - 12,168,12,11,63,60,12,220,12,103, - 12,130,285,26,188,198,209,215,12,157, - 12,12,270,285,12,181,12,12,12,109, - 109,61,61,94,72,285,26,285,178,123, - 188,188,116,116,168,240,61,12,12,260, - 171,81,81,264,51,51,51,51,159,111, - 285,285,1,26,121,178,264,12,38,38, - 111,140,26,26,26,26,26,26,26,26, - 26,26,26,26,26,26,26,26,26,26, - 26,26,26,26,26,26,26,26,26,26, - 26,26,140,26,46,143,188,194,56,11, - 111,12,61,188,188,157,188,26,12,12, - 180,260,276,276,242,188,12,12,134,285, - 153,134,26,12,77,12,130,209,116,116, - 105,61,26,240,268,285,258,188,285,285, - 12,12,12,12,177,285,26,12,12,12, - 10,159,103,51,69,285,152,159,152,285, - 103,12,12,12,12,12,12,12,12,12, + 211,12,36,66,5,18,12,226,12,80, + 226,32,32,12,254,12,12,12,255,181, + 255,129,255,129,255,248,12,10,167,195, + 122,190,163,12,12,244,220,12,167,12, + 12,12,180,195,181,12,172,172,175,291, + 103,12,195,201,32,237,80,32,237,195, + 167,11,12,12,195,57,185,129,71,71, + 266,38,12,159,231,167,12,291,195,195, + 97,92,291,12,12,12,12,11,115,195, + 195,226,226,195,211,195,32,95,163,291, + 12,12,34,119,12,291,257,202,129,129, + 12,172,181,195,172,46,77,202,149,57, + 137,13,237,87,159,237,167,68,26,123, + 129,223,195,46,46,266,92,92,163,278, + 278,211,55,211,172,185,185,175,185,12, + 175,291,12,291,55,167,185,12,94,12, + 36,17,257,129,129,195,237,195,77,195, + 221,11,12,240,12,12,12,12,12,32, + 12,133,167,28,28,216,28,28,28,28, + 28,28,12,12,12,12,12,12,12,12, + 12,12,12,28,12,12,202,12,11,137, + 54,12,172,12,92,12,129,291,28,195, + 181,231,237,12,170,12,12,272,291,12, + 188,12,12,12,117,117,55,55,95,12, + 291,34,291,28,291,115,122,195,195,75, + 75,202,221,55,12,12,266,239,71,71, + 133,51,51,51,51,167,100,291,291,1, + 28,111,115,133,12,40,40,100,144,28, + 28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,144, + 28,46,149,195,177,13,11,100,12,55, + 195,195,170,195,28,12,12,187,266,278, + 278,226,195,12,12,185,291,291,163,185, + 28,12,109,12,129,231,75,75,62,55, + 28,221,270,291,264,195,291,291,12,12, + 12,12,114,291,28,12,12,12,10,167, + 92,51,68,291,162,167,162,291,92,12, 12,12,12,12,12,12,12,12,12,12, - 88,136,12,26,12,134,12,12,12,12, - 137,12,240,132,134,134,240,85,285,26, - 24,157,157,26,26,258,147,276,51,51, - 26,134,124,26,26,215,130,209,12,12, - 30,34,220,285,276,12,12,12,12,168, - 11,159,178,26,51,188,66,285,159,217, - 178,26,32,12,12,137,12,137,254,254, - 274,12,254,134,134,12,188,61,188,12, - 130,215,190,220,30,30,11,188,285,140, - 140,140,140,12,12,176,168,285,96,270, - 12,239,168,51,137,285,183,285,279,188, - 12,285,88,114,23,165,12,11,220,220, - 157,188,285,285,285,285,111,111,168,188, - 79,12,140,270,218,12,12,285,285,188, - 137,12,137,134,124,140,137,32,114,12, - 12,109,11,11,188,157,285,285,12,96, - 111,26,103,218,85,85,181,26,12,162, - 134,285,283,12,165,188,79,285,103,137, - 285,134,285,152,165,137,51 + 12,12,12,12,12,12,12,12,83,140, + 12,28,12,185,12,12,12,12,141,12, + 221,183,185,185,221,59,291,28,26,170, + 170,28,28,264,157,278,51,51,28,185, + 123,28,28,237,129,231,12,12,32,85, + 172,291,278,12,12,12,12,202,11,167, + 115,28,51,195,106,291,167,205,115,28, + 153,12,12,141,12,141,285,285,276,12, + 285,185,185,12,195,55,195,12,129,237, + 197,172,32,32,11,195,291,144,144,144, + 144,12,12,113,202,291,147,272,12,220, + 202,51,141,291,190,291,281,195,12,291, + 83,73,25,155,12,11,172,172,170,195, + 291,291,291,291,100,100,202,195,131,12, + 144,272,206,12,12,291,291,195,141,12, + 141,185,123,144,141,153,73,12,12,117, + 11,11,195,170,291,291,12,147,100,28, + 92,206,59,59,188,28,12,208,185,291, + 289,12,155,195,131,291,92,141,291,185, + 291,162,155,141,51 }; }; public final static char nasb[] = Nasb.nasb; @@ -2269,35 +2292,36 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface Nasr { public final static char nasr[] = {0, - 3,13,10,9,160,158,129,157,156,5, - 2,0,167,0,43,5,2,9,10,4, - 166,0,73,137,47,13,2,9,10,5, - 0,123,0,202,0,164,0,5,2,9, - 10,147,0,193,0,5,10,9,2,13, - 4,50,0,211,0,177,5,176,0,4, - 73,0,47,168,0,4,186,0,4,37, - 0,180,0,4,204,0,200,0,149,0, - 86,0,182,0,47,66,0,169,0,1, - 47,0,47,111,0,151,0,13,2,9, - 10,5,88,0,5,107,201,0,115,0, - 4,102,0,170,0,117,0,2,71,0, - 184,0,95,4,5,10,9,2,63,42, - 0,4,44,43,0,73,47,53,74,4, - 44,0,71,146,145,0,100,99,42,63, - 68,5,10,9,2,0,70,0,2,49, - 0,4,187,0,134,0,49,2,3,0, - 31,99,100,4,0,2,144,71,0,31, - 100,99,63,5,2,9,10,4,0,5, - 107,173,0,53,44,188,4,47,0,4, - 50,205,0,110,87,53,4,0,63,5, - 2,9,10,4,25,0,2,124,0,2, - 67,0,2,5,129,125,126,127,13,92, - 0,42,71,0,5,10,9,13,3,1, - 0,4,53,87,89,0,4,53,87,107, - 51,5,0,4,50,109,0,23,4,5, - 42,95,0,4,50,44,0,100,99,42, - 5,68,0,44,190,23,4,0,50,4, - 189,0,50,4,31,0 + 3,13,10,9,162,160,130,159,158,5, + 2,0,179,5,178,0,43,5,2,9, + 10,4,168,0,74,138,47,13,2,9, + 10,5,0,182,0,166,0,196,0,5, + 2,9,10,149,0,5,10,9,2,13, + 4,50,0,4,74,0,169,0,47,67, + 0,5,108,204,0,214,0,4,37,0, + 87,0,172,0,118,0,2,72,0,1, + 47,0,171,0,205,0,13,2,9,10, + 5,89,0,47,112,0,4,207,0,4, + 103,0,213,30,0,4,189,0,203,0, + 187,0,2,146,72,0,116,0,30,184, + 0,96,4,5,10,9,2,64,42,0, + 151,0,4,50,44,0,47,170,0,74, + 47,53,75,4,44,0,153,0,72,148, + 147,0,124,0,135,0,101,100,42,64, + 69,5,10,9,2,0,2,49,0,71, + 0,2,68,0,145,0,53,44,191,4, + 47,0,4,44,43,0,30,101,100,64, + 5,2,9,10,4,0,5,108,175,0, + 49,2,3,0,2,125,0,4,190,0, + 111,88,53,4,0,5,10,9,13,3, + 1,0,42,72,0,4,53,88,90,0, + 64,5,2,9,10,4,25,0,30,100, + 101,4,0,4,50,208,0,2,5,130, + 126,127,128,13,93,0,4,53,88,108, + 51,5,0,23,4,5,42,96,0,101, + 100,42,5,69,0,44,193,23,4,0, + 50,4,192,0,4,50,110,0,50,4, + 30,0 }; }; public final static char nasr[] = Nasr.nasr; @@ -2305,14 +2329,14 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface TerminalIndex { public final static char terminalIndex[] = {0, - 113,114,2,31,46,126,127,13,79,115, + 113,114,2,31,46,126,127,13,115,79, 10,9,100,48,52,60,68,74,75,86, - 87,102,105,107,54,104,120,106,47,64, + 87,102,105,107,54,104,106,120,47,64, 66,70,73,76,83,89,98,11,12,112, 7,8,53,93,14,55,61,67,84,88, 90,94,97,99,109,110,111,129,63,91, - 101,19,77,95,103,128,1,58,78,44, - 118,20,121,30,33,119,96,108,49,50, + 101,19,77,95,103,128,1,118,44,58, + 78,20,30,121,33,119,96,108,49,50, 56,57,59,69,71,72,85,92,65,17, 18,32,6,4,15,16,21,22,23,24, 25,26,27,28,80,81,82,5,29,34, @@ -2327,26 +2351,26 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public final static char nonterminalIndex[] = {0, 136,141,142,0,0,140,0,0,235,241, 139,0,149,138,0,0,148,154,0,0, - 155,164,186,165,250,0,0,0,166,167, - 132,168,169,170,171,172,157,173,174,0, + 155,164,186,165,250,0,0,0,166,132, + 167,168,169,170,171,172,157,173,174,0, 147,251,134,137,175,0,135,144,143,158, - 183,0,0,0,0,0,0,0,0,210, - 0,207,211,0,151,178,0,161,181,193, - 0,0,133,177,0,0,0,0,0,0, - 0,0,0,0,0,212,0,131,184,0, - 0,192,0,0,208,218,163,214,215,216, - 0,0,152,0,0,213,226,0,180,185, - 202,0,0,217,0,0,0,230,0,232, - 0,246,247,153,195,196,197,198,199,201, - 204,0,205,0,220,223,0,225,0,244, - 0,245,0,0,145,146,150,0,0,160, - 162,0,176,0,187,188,189,190,191,194, - 0,0,200,0,203,209,0,221,222,0, - 0,227,234,0,238,239,240,243,0,252, - 0,254,0,0,156,159,0,179,0,182, - 0,0,206,219,224,0,0,228,229,231, - 233,0,236,237,242,248,249,0,0,0, - 253,0,0,0,0 + 183,0,0,0,0,0,0,0,0,0, + 210,0,207,211,0,151,178,0,161,181, + 193,0,0,133,177,0,0,0,0,0, + 0,0,0,0,0,0,212,0,131,184, + 0,0,192,0,0,208,218,163,214,215, + 216,0,0,152,0,0,213,226,0,180, + 185,202,0,0,217,0,0,0,230,0, + 232,0,246,247,153,195,196,197,198,199, + 201,204,0,205,0,220,223,0,225,0, + 244,0,245,0,255,0,145,146,150,0, + 0,160,162,0,176,0,187,188,189,190, + 191,194,0,0,200,0,203,209,0,221, + 222,0,0,227,234,0,238,239,240,243, + 0,252,0,254,0,0,0,156,159,0, + 179,0,182,0,0,206,219,224,0,0, + 228,229,231,233,0,236,237,242,248,249, + 0,0,253,0,0,0,0,0 }; }; public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; @@ -2396,20 +2420,20 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface ScopeLhs { public final static char scopeLhs[] = { - 51,17,17,127,17,17,17,17,77,91, - 52,84,127,126,81,57,77,76,51,17, - 19,3,7,8,173,173,172,125,51,85, - 126,126,128,26,136,58,52,147,141,136, - 77,17,17,141,101,59,179,143,80,176, - 173,172,128,191,55,66,151,18,17,17, - 17,17,17,12,123,172,77,76,76,40, - 147,68,138,138,76,17,17,17,17,101, - 19,118,133,177,173,193,99,106,61,86, - 60,166,69,128,78,152,151,184,147,16, - 172,128,109,75,21,147,138,127,147,138, - 138,127,77,51,118,133,172,68,159,158, - 157,156,72,145,49,118,133,145,49,176, - 68,109,125,51,51,59 + 51,17,17,128,17,17,17,17,78,92, + 52,85,128,127,82,57,78,77,51,17, + 19,3,7,8,175,175,174,126,51,86, + 127,127,129,26,137,58,52,149,142,137, + 78,17,17,142,102,60,181,144,81,178, + 175,174,129,194,55,67,153,18,17,17, + 17,17,17,12,124,174,78,77,77,40, + 149,69,139,139,77,17,17,17,17,102, + 19,119,134,179,175,196,100,107,62,87, + 61,168,70,129,79,154,153,187,149,16, + 174,129,110,76,21,149,139,128,149,139, + 139,128,78,51,119,134,174,69,161,160, + 159,158,73,147,49,119,134,147,49,178, + 69,110,126,51,51,60 }; }; public final static char scopeLhs[] = ScopeLhs.scopeLhs; @@ -2417,20 +2441,20 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface ScopeLa { public final static char scopeLa[] = { - 121,71,71,76,71,71,71,71,71,76, - 27,76,76,1,72,1,71,124,73,3, - 71,72,72,72,1,1,27,76,73,76, - 1,1,1,71,76,1,1,4,72,70, - 27,1,1,72,71,71,71,71,121,71, - 1,27,1,27,27,76,120,71,71,71, - 71,71,120,1,71,1,71,71,71,74, - 4,11,1,1,71,72,72,72,72,71, - 3,6,6,1,1,71,71,3,1,120, - 71,1,1,1,27,71,120,71,8,71, - 1,44,75,74,71,1,1,73,44,1, - 1,1,78,77,1,1,27,12,1,59, - 43,43,27,4,4,1,1,4,4,3, - 11,1,73,1,1,3 + 121,68,68,76,68,68,68,68,68,76, + 28,76,76,1,72,1,68,124,74,3, + 68,72,72,72,1,1,28,76,74,76, + 1,1,1,68,76,1,1,4,72,69, + 28,1,1,72,68,68,68,68,121,68, + 1,28,1,28,28,76,120,68,68,68, + 68,68,120,1,68,1,68,68,68,73, + 4,11,1,1,68,72,72,72,72,68, + 3,6,6,1,1,68,68,3,1,120, + 68,1,1,1,28,68,120,68,8,68, + 1,44,75,73,68,1,1,74,44,1, + 1,1,78,77,1,1,28,12,1,59, + 43,43,28,4,4,1,1,4,4,3, + 11,1,74,1,1,3 }; }; public final static char scopeLa[] = ScopeLa.scopeLa; @@ -2459,77 +2483,77 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface ScopeRhs { public final static char scopeRhs[] = {0, - 247,171,0,251,0,171,0,230,251,0, - 230,0,198,171,0,181,251,0,181,0, - 338,3,309,0,132,0,337,3,3,6, - 0,132,132,0,336,3,64,0,335,3, - 121,0,132,178,0,133,195,77,0,222, - 0,268,133,62,131,0,20,0,307,133, + 248,171,0,251,0,171,0,230,251,0, + 230,0,199,171,0,181,251,0,181,0, + 341,3,311,0,132,0,340,3,3,6, + 0,132,132,0,339,3,64,0,338,3, + 121,0,132,178,0,133,196,77,0,222, + 0,269,133,62,131,0,20,0,309,133, 62,44,0,20,53,0,33,138,0,20, - 53,0,0,307,133,62,44,216,0,20, - 184,0,268,133,62,139,0,196,134,0, - 147,0,231,3,306,0,306,0,2,0, - 132,0,268,133,62,138,0,196,134,236, - 0,196,134,26,236,0,196,134,331,26, - 0,135,200,178,134,0,134,0,200,178, - 134,0,140,134,0,182,0,327,133,182, - 0,133,182,0,228,134,0,178,326,258, - 0,142,0,0,0,0,326,258,0,143, + 53,0,0,309,133,62,44,217,0,20, + 184,0,269,133,62,139,0,197,134,0, + 147,0,232,3,308,0,308,0,2,0, + 132,0,269,133,62,138,0,197,134,237, + 0,197,134,26,237,0,197,134,334,26, + 0,135,201,178,134,0,134,0,201,178, + 134,0,140,134,0,182,0,330,133,182, + 0,133,182,0,228,134,0,178,329,259, + 0,142,0,0,0,0,329,259,0,143, 142,0,0,0,0,141,0,0,0,0, - 143,141,0,0,0,0,325,133,176,267, - 0,133,0,267,0,135,0,0,133,0, - 324,133,176,266,0,133,0,0,44,133, - 0,0,166,3,0,133,297,296,133,77, - 295,182,0,296,133,77,295,182,0,221, - 0,222,0,295,182,0,96,0,0,221, + 143,141,0,0,0,0,328,133,176,268, + 0,133,0,268,0,135,0,0,133,0, + 327,133,176,267,0,133,0,0,44,133, + 0,0,166,3,0,133,299,298,133,77, + 297,182,0,298,133,77,297,182,0,221, + 0,222,0,297,182,0,96,0,0,221, 0,222,0,209,96,0,0,221,0,222, - 0,296,133,295,182,0,221,0,209,0, - 0,221,0,241,133,3,0,132,0,0, - 0,0,0,241,133,3,228,0,235,3, - 0,224,133,0,214,0,152,0,193,178, - 134,0,10,0,0,0,193,0,9,0, - 226,67,0,131,0,241,133,3,189,0, - 189,0,2,0,0,132,0,0,0,0, - 0,198,3,0,207,0,237,133,176,40, - 31,0,196,134,63,65,0,202,134,0, - 135,196,134,293,65,0,196,134,293,65, - 0,196,134,75,130,63,0,237,133,176, - 63,0,237,133,176,240,63,0,291,133, - 176,130,321,59,0,321,59,0,136,135, - 0,0,133,0,291,133,176,321,59,0, - 135,0,0,133,0,196,134,290,59,0, - 141,0,200,196,134,290,258,0,142,0, - 196,134,290,258,0,200,178,134,13,0, + 0,298,133,297,182,0,221,0,209,0, + 0,221,0,242,133,3,0,132,0,0, + 0,0,0,242,133,3,229,0,236,3, + 0,225,133,0,214,0,152,0,194,178, + 134,0,10,0,0,0,194,0,9,0, + 227,67,0,131,0,242,133,3,190,0, + 190,0,2,0,0,132,0,0,0,0, + 0,199,3,0,207,0,238,133,176,40, + 31,0,197,134,63,65,0,202,134,0, + 135,197,134,295,65,0,197,134,295,65, + 0,197,134,75,130,63,0,238,133,176, + 63,0,238,133,176,241,63,0,293,133, + 176,130,324,59,0,324,59,0,136,135, + 0,0,133,0,293,133,176,324,59,0, + 135,0,0,133,0,197,134,292,59,0, + 141,0,201,197,134,292,259,0,142,0, + 197,134,292,259,0,201,178,134,13,0, 178,134,13,0,178,134,0,93,142,0, - 289,0,198,0,197,0,196,0,195,0, - 283,133,152,0,283,133,182,0,173,87, - 0,316,172,318,319,3,84,0,132,177, - 0,318,319,3,84,0,134,0,132,177, - 0,173,3,78,203,83,0,132,134,0, - 203,83,0,108,2,137,132,134,0,238, - 3,78,0,198,179,0,33,175,0,179, - 0,181,33,175,0,238,3,88,0,203, - 160,238,3,86,0,62,177,0,238,3, - 86,0,132,177,62,177,0,317,133,176, - 0,173,0,226,80,0,30,177,0,173, - 109,168,0,30,175,0,194,3,0,132, - 155,0,231,3,0,226,67,280,0,173, - 67,0,194,3,313,69,134,0,132,0, - 0,0,0,313,69,134,0,2,151,132, - 0,0,0,0,194,3,50,0,153,0, + 291,0,198,0,197,0,196,0,195,0, + 285,133,152,0,285,133,182,0,173,87, + 0,319,172,321,322,3,84,0,132,177, + 0,321,322,3,84,0,134,0,132,177, + 0,173,3,78,204,83,0,132,134,0, + 204,83,0,108,2,137,132,134,0,239, + 3,78,0,199,179,0,33,175,0,179, + 0,181,33,175,0,239,3,88,0,204, + 159,239,3,86,0,62,177,0,239,3, + 86,0,132,177,62,177,0,320,133,176, + 0,173,0,227,80,0,30,177,0,173, + 109,168,0,30,175,0,195,3,0,132, + 155,0,232,3,0,227,67,282,0,173, + 67,0,195,3,316,71,134,0,132,0, + 0,0,0,316,71,134,0,2,151,132, + 0,0,0,0,195,3,50,0,153,0, 132,44,178,134,0,31,153,0,93,142, - 31,153,0,232,196,134,0,152,31,153, - 0,194,3,54,0,173,3,54,0,173, - 3,72,194,62,46,0,194,62,46,0, - 20,2,137,132,0,173,3,72,194,62, - 49,0,194,62,49,0,173,3,72,194, - 62,51,0,194,62,51,0,173,3,72, - 194,62,47,0,194,62,47,0,231,3, - 132,200,178,134,13,0,132,200,178,134, - 13,0,142,2,0,132,0,231,3,131, - 273,178,134,13,0,273,178,134,13,0, - 141,2,0,132,0,231,3,142,0,231, - 3,146,0,173,67,146,0,275,0,31, + 31,153,0,233,197,134,0,152,31,153, + 0,195,3,54,0,173,3,54,0,173, + 3,72,195,62,46,0,195,62,46,0, + 20,2,137,132,0,173,3,72,195,62, + 49,0,195,62,49,0,173,3,72,195, + 62,51,0,195,62,51,0,173,3,72, + 195,62,47,0,195,62,47,0,232,3, + 132,201,178,134,13,0,132,201,178,134, + 13,0,142,2,0,132,0,232,3,131, + 275,178,134,13,0,275,178,134,13,0, + 141,2,0,132,0,232,3,142,0,232, + 3,146,0,173,67,146,0,277,0,31, 0,31,145,0,177,0,140,0,173,3, 0 }; @@ -2539,43 +2563,43 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface ScopeState { public final static char scopeState[] = {0, - 3006,1158,0,3305,3188,2986,0,2399,1262,0, - 5448,5632,5629,5217,0,1899,1712,666,1212,0, - 3456,1471,0,4168,4123,4078,4033,3988,3943,3898, - 3853,3808,2558,3558,5335,0,2496,717,0,2396, - 0,5119,3934,5009,0,3323,764,0,4168,4123, - 1550,1391,4078,4033,3988,3943,3898,3853,1188,3808, - 2558,3558,1719,929,0,2803,2640,0,5222,5129, - 0,997,999,0,731,0,2122,1605,1338,1182, - 2763,5318,3582,3371,3202,3235,3213,0,2808,2992, - 2453,0,5559,5545,5536,5622,5616,5530,5503,5486, - 5572,5461,2974,2796,5241,2752,5137,4583,4579,2470, - 3108,4487,4380,3664,2780,0,2763,625,3691,3647, - 3566,3582,2808,3384,3371,3235,4316,2992,4271,2482, - 2453,3165,3136,3091,2528,0,625,3566,0,2931, - 2303,1693,5559,5545,2274,1662,1646,1599,2268,5536, - 4308,5622,5616,1428,5530,5503,5486,2210,5572,1115, - 5461,4265,1051,2974,2796,5241,2752,845,5137,4583, - 711,3179,4579,2674,2470,3108,4487,4380,3664,707, - 2780,4413,2853,1320,865,792,691,1000,3582,2808, - 3384,3165,3136,2763,2566,1122,3091,3371,2496,717, - 2528,3235,4316,625,2992,3691,4271,3647,2482,2453, - 3566,3030,4975,4953,2649,2688,2895,2727,3337,3257, - 3057,3785,3760,3535,3504,3473,3398,4710,4687,4664, - 4388,4345,4931,4909,4887,4865,4843,4821,4799,4777, - 4755,4733,4461,2138,2412,2091,2371,2319,1387,1340, - 1279,2044,2278,2226,2185,1231,948,1997,1950,1903, - 1856,1809,1762,1715,1668,1621,1574,1527,577,1135, - 1184,1478,882,804,1434,738,643,1026,1074,0, - 4413,577,2853,0,2808,2938,5662,3165,5658,2449, - 3136,3091,4210,577,2342,4316,4979,1306,4999,4546, - 4587,3816,2992,990,908,3714,2600,4271,3290,830, - 614,4413,3821,2943,3438,3695,3159,2865,2860,2853, - 5449,5431,2763,5253,5224,5318,5401,5383,2528,5455, - 5371,3691,3647,5327,2453,0,5222,5129,5118,4553, - 4511,4442,5107,5019,5008,4997,4204,4168,4123,4078, - 4033,3988,3943,3898,3853,3808,2558,3558,0,5222, - 5129,5118,4553,4511,4442,5107,5019,5008,4997,4204, + 2887,2483,0,3278,3029,2760,0,2849,2569,0, + 5537,5632,5620,5615,0,2896,1525,2726,1337,0, + 3560,936,0,4129,4084,3935,3890,3845,3800,3755, + 3710,3665,2566,3386,5303,0,1013,727,0,1999, + 0,5470,4538,3973,0,773,627,0,4129,4084, + 1884,1790,3935,3890,3845,3800,3755,3710,890,3665, + 2566,3386,2954,2565,0,2786,2649,0,5177,5170, + 0,2076,682,0,725,0,1630,1395,1388,1092, + 2773,5288,4017,3468,4365,3227,2848,0,2819,3005, + 2460,0,5550,5545,5522,5605,5600,5517,5508,5487, + 5279,5466,3355,2987,5453,2853,5424,5411,4715,2478, + 3635,4401,3245,2897,2791,0,2773,634,4211,3256, + 2802,4017,2819,5156,3468,3227,4503,3005,4336,2489, + 2460,3180,3151,3105,2535,0,634,2802,0,2682, + 2403,1792,5550,5545,2309,1761,1745,1698,2215,5522, + 3693,5605,5600,1667,5517,5508,5487,1340,5279,1432, + 5466,1029,1129,3355,2987,5453,2853,1113,5424,5411, + 1065,2531,4715,1230,2478,3635,4401,3245,2897,986, + 2791,4619,2865,2366,2272,1323,700,2504,4017,2819, + 5156,3180,3151,2773,2971,2573,3105,3468,1013,727, + 2535,3227,4503,634,3005,4211,4336,3256,2489,2460, + 2802,3534,5123,5082,2657,2696,2908,2737,3363,3330, + 3071,4306,4281,3642,3610,3578,3494,4719,4686,4656, + 4594,4569,5041,5019,4997,4975,4953,4931,4909,4887, + 4865,4041,3043,2143,2419,2096,2378,2325,1391,1344, + 1282,2049,2284,2231,2190,1234,961,2002,1955,1908, + 1861,1814,1767,1720,1673,1626,1579,1532,585,1136, + 1183,1483,894,815,1438,748,652,1040,1088,0, + 4619,585,2865,0,2819,3400,5403,3180,5169,3249, + 3151,3105,4743,585,3118,4503,3393,2762,4752,4418, + 4083,3174,3005,920,859,4351,3280,4336,3094,693, + 622,4619,4075,841,3678,4332,3101,785,3389,2865, + 5392,4474,2773,5241,5208,5288,5381,5368,2535,5416, + 5336,4211,3256,5270,2460,0,5177,5170,5063,4435, + 4371,4329,4772,4761,4750,4174,3981,4129,4084,3935, + 3890,3845,3800,3755,3710,3665,2566,3386,0,5177, + 5170,5063,4435,4371,4329,4772,4761,4750,4174,3981, 0 }; }; @@ -2584,64 +2608,65 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public interface InSymb { public final static char inSymb[] = {0, - 0,312,65,5,133,182,216,44,31,63, - 239,63,293,3,284,6,7,5,285,267, - 286,258,287,59,288,289,131,13,134,295, - 133,3,4,139,138,9,8,131,134,189, - 44,62,40,176,240,130,134,134,40,3, - 3,3,176,326,290,171,321,290,171,62, - 134,196,178,177,77,133,283,198,192,189, - 133,262,294,224,171,134,193,198,62,62, - 179,67,3,68,69,131,130,196,178,3, - 62,72,133,176,133,176,75,196,196,160, - 3,339,1,340,40,133,178,244,132,131, - 134,130,176,134,133,178,44,4,133,296, - 74,171,67,224,171,134,3,75,70,198, - 178,11,133,133,133,67,67,200,133,133, - 133,237,133,134,240,135,337,309,3,325, - 134,180,236,63,44,65,182,328,132,131, - 245,171,245,196,176,133,196,268,179,54, - 46,49,51,47,13,142,3,134,50,45, - 8,39,38,11,12,42,41,146,151,158, - 153,161,159,163,162,165,164,167,64,168, - 271,200,275,200,296,176,305,134,306,226, - 168,178,166,133,176,266,171,171,193,133, - 268,268,224,241,242,152,243,307,44,13, - 43,237,237,196,70,160,3,1,178,133, - 245,245,133,133,200,133,291,130,292,133, - 3,229,228,3,62,62,62,62,134,3, - 194,173,133,68,69,178,3,132,108,122, - 3,67,93,94,39,38,96,95,11,98, - 97,72,62,90,91,12,100,99,102,101, - 103,119,118,117,116,115,114,113,112,111, - 110,75,109,104,70,4,297,133,70,196, - 3,282,133,176,11,199,160,75,235,198, - 3,133,70,70,72,62,244,244,240,338, - 200,327,74,249,198,131,247,171,133,133, - 74,291,75,70,224,235,133,3,194,173, - 194,194,194,194,178,231,160,142,132,131, - 13,134,67,313,3,194,44,134,44,231, - 173,153,153,151,151,151,159,159,159,159, - 158,158,162,161,161,164,163,165,173,167, - 133,317,82,80,1,173,10,88,86,84, - 83,78,85,87,81,79,63,77,231,70, - 133,133,133,75,75,133,224,133,75,75, - 70,135,70,74,75,171,247,171,154,330, - 236,26,134,241,133,72,72,72,72,200, - 273,134,178,217,3,314,179,166,134,196, - 178,74,298,121,10,74,226,74,3,3, - 3,203,3,130,173,130,195,324,233,307, - 247,171,70,134,26,331,196,160,241,3, - 3,3,3,132,131,178,44,194,133,133, - 232,8,44,3,74,238,179,238,319,152, - 78,238,133,202,70,133,72,196,134,134, - 133,160,173,173,173,173,3,3,200,160, - 277,280,67,197,4,130,132,92,335,179, - 160,198,160,318,133,3,160,298,202,10, - 64,43,196,196,233,133,231,231,132,133, - 3,67,173,4,160,160,133,75,203,172, - 283,173,3,244,133,233,277,231,226,124, - 316,160,336,75,133,160,70 + 0,315,65,5,133,182,217,44,31,63, + 240,63,295,343,286,6,7,5,287,268, + 288,259,289,59,290,291,131,13,134,297, + 133,3,4,139,138,10,8,131,134,190, + 44,62,40,176,241,130,134,134,3,3, + 3,3,176,329,292,171,324,292,171,62, + 134,197,178,177,77,133,285,199,193,190, + 133,263,296,225,171,134,194,199,62,62, + 179,67,3,70,71,131,130,197,178,3, + 62,72,133,176,133,176,75,197,197,344, + 40,274,3,342,1,40,133,178,245,132, + 131,134,130,176,134,133,178,44,4,133, + 298,73,171,67,225,171,134,3,75,69, + 199,178,11,133,133,133,67,67,201,133, + 133,133,238,133,134,241,135,73,159,3, + 69,340,311,3,328,134,180,237,63,44, + 65,182,331,132,131,246,171,246,197,176, + 133,197,269,179,54,46,49,51,47,13, + 142,3,134,50,45,8,39,38,11,12, + 42,41,146,151,158,153,161,160,163,162, + 165,164,167,64,168,272,201,277,201,298, + 176,307,134,308,227,168,178,166,133,176, + 267,171,171,194,133,269,269,225,242,243, + 152,244,309,44,13,43,238,238,197,11, + 1,69,159,3,1,178,133,246,246,133, + 133,201,133,293,130,294,133,3,230,229, + 3,62,62,62,62,134,3,195,173,133, + 70,71,178,3,132,108,122,3,67,93, + 94,39,38,96,95,11,98,97,72,62, + 90,91,12,100,99,102,101,103,119,118, + 117,116,115,114,113,112,111,110,75,109, + 104,69,4,299,133,69,197,3,284,133, + 176,11,200,159,75,236,199,3,133,69, + 69,72,62,245,245,241,1,341,201,330, + 73,250,199,131,248,171,133,133,73,293, + 75,69,225,236,133,3,195,173,195,195, + 195,195,178,232,159,142,132,131,13,134, + 67,316,3,195,44,134,44,232,173,153, + 153,151,151,151,160,160,160,160,158,158, + 162,161,161,164,163,165,173,167,133,320, + 82,80,1,173,9,88,86,84,83,78, + 85,87,81,79,63,77,232,69,133,133, + 133,75,75,133,225,133,75,75,69,135, + 69,73,75,171,248,171,154,333,237,26, + 134,242,133,72,72,72,72,201,275,134, + 178,218,3,317,179,166,134,197,178,73, + 300,121,9,73,227,73,3,3,3,204, + 3,130,173,130,196,327,234,309,248,171, + 69,134,26,334,197,159,242,3,3,3, + 3,132,131,178,44,195,133,133,233,8, + 44,3,73,239,179,239,322,152,78,239, + 133,203,69,133,72,197,134,134,133,159, + 173,173,173,173,3,3,201,159,279,282, + 67,198,4,130,132,92,338,179,159,199, + 159,321,133,3,159,300,203,9,64,43, + 197,197,234,133,232,232,132,133,3,67, + 173,4,159,159,133,75,204,172,285,173, + 3,245,133,234,279,232,227,124,319,159, + 339,75,133,159,69 }; }; public final static char inSymb[] = InSymb.inSymb; @@ -2910,7 +2935,8 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym "q", "word", "extended_decl_modifier_seq", - "extended_decl_modifier" + "extended_decl_modifier", + "extended_asm_param" }; }; public final static String name[] = Name.name; @@ -2928,20 +2954,20 @@ public class GPPParserprs implements lpg.lpgjavaruntime.ParseTable, GPPParsersym public final int getMaxNameLength() { return MAX_NAME_LENGTH; } public final static int - NUM_STATES = 577, + NUM_STATES = 585, NT_OFFSET = 129, - LA_STATE_OFFSET = 6855, + LA_STATE_OFFSET = 6930, MAX_LA = 2147483647, - NUM_RULES = 576, - NUM_NONTERMINALS = 215, - NUM_SYMBOLS = 344, + NUM_RULES = 584, + NUM_NONTERMINALS = 218, + NUM_SYMBOLS = 347, SEGMENT_SIZE = 8192, - START_STATE = 4204, + START_STATE = 3981, IDENTIFIER_SYMBOL = 0, EOFT_SYMBOL = 123, EOLT_SYMBOL = 123, - ACCEPT_ACTION = 5766, - ERROR_ACTION = 6279; + ACCEPT_ACTION = 5833, + ERROR_ACTION = 6346; public final static boolean BACKTRACK = true; diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java index 69e2d757d76..07d5ea5d158 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParsersym.java @@ -27,7 +27,7 @@ public interface GPPParsersym { TK_const_cast = 46, TK_continue = 81, TK_default = 82, - TK_delete = 68, + TK_delete = 70, TK_do = 83, TK_double = 16, TK_dynamic_cast = 47, @@ -47,8 +47,8 @@ public interface GPPParsersym { TK_long = 19, TK_mutable = 34, TK_namespace = 63, - TK_new = 69, - TK_operator = 9, + TK_new = 71, + TK_operator = 10, TK_private = 105, TK_protected = 106, TK_public = 107, @@ -75,7 +75,7 @@ public interface GPPParsersym { TK_using = 65, TK_virtual = 26, TK_void = 23, - TK_volatile = 28, + TK_volatile = 27, TK_wchar_t = 24, TK_while = 78, TK_integer = 55, @@ -84,7 +84,7 @@ public interface GPPParsersym { TK_stringlit = 40, TK_identifier = 1, TK_Completion = 2, - TK_EndOfCompletion = 10, + TK_EndOfCompletion = 9, TK_Invalid = 125, TK_LeftBracket = 67, TK_LeftParen = 3, @@ -115,7 +115,7 @@ public interface GPPParsersym { TK_AndAnd = 103, TK_OrOr = 104, TK_Question = 109, - TK_Colon = 74, + TK_Colon = 73, TK_ColonColon = 4, TK_DotDotDot = 92, TK_Assign = 75, @@ -129,12 +129,12 @@ public interface GPPParsersym { TK_AndAssign = 117, TK_CaretAssign = 118, TK_OrAssign = 119, - TK_Comma = 70, + TK_Comma = 69, TK_RightBracket = 120, - TK_RightParen = 71, + TK_RightParen = 68, TK_RightBrace = 76, - TK_SemiColon = 27, - TK_LeftBrace = 73, + TK_SemiColon = 28, + TK_LeftBrace = 74, TK_typeof = 126, TK___alignof__ = 127, TK_MAX = 128, @@ -155,8 +155,8 @@ public interface GPPParsersym { "__attribute__", "__declspec", "Tilde", - "operator", "EndOfCompletion", + "operator", "Star", "And", "typename", @@ -173,8 +173,8 @@ public interface GPPParsersym { "wchar_t", "const", "virtual", - "SemiColon", "volatile", + "SemiColon", "auto", "explicit", "extern", @@ -214,13 +214,13 @@ public interface GPPParsersym { "using", "ERROR_TOKEN", "LeftBracket", + "RightParen", + "Comma", "delete", "new", - "Comma", - "RightParen", "GT", - "LeftBrace", "Colon", + "LeftBrace", "Assign", "RightBrace", "try", diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java index 1c7ed626755..142b48121ab 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java @@ -23,6 +23,7 @@ import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression; import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; import org.eclipse.cdt.core.dom.upc.ast.IUPCASTDeclSpecifier; import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement; @@ -48,8 +49,8 @@ public class UPCParserAction extends C99BuildASTParserAction { * @param parser * @param tu */ - public UPCParserAction(UPCASTNodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu) { - super(nodeFactory, parser, tu); + public UPCParserAction(UPCASTNodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu, ScopedStack astStack) { + super(nodeFactory, parser, tu, astStack); this.nodeFactory = nodeFactory; nodeFactory.setUseC99SizeofExpressions(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java index f49d2432037..24d399d1dd7 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -172,13 +173,16 @@ public class UPCExpressionParser extends PrsStream implements RuleAction , IPars private UPCParserAction action; +private ScopedStack astStack = new ScopedStack(); public UPCExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu); + action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu, astStack); action.setParserOptions(options); + + } @@ -206,13 +210,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -774,25 +777,25 @@ public UPCExpressionParser(String[] mapFrom) { // constructor // // Rule 159: storage_class_specifier ::= storage_class_specifier_token // - case 159: { action. consumeDeclSpecToken(); break; + case 159: { action. consumeToken(); break; } // // Rule 165: simple_type_specifier ::= simple_type_specifier_token // - case 165: { action. consumeDeclSpecToken(); break; + case 165: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= Completion // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // // Rule 179: typedef_name_in_declspec ::= identifier // - case 179: { action. consumeDeclSpecToken(); break; + case 179: { action. consumeToken(); break; } // @@ -882,13 +885,13 @@ public UPCExpressionParser(String[] mapFrom) { // constructor // // Rule 215: type_qualifier ::= type_qualifier_token // - case 215: { action. consumeDeclSpecToken(); break; + case 215: { action. consumeToken(); break; } // // Rule 219: function_specifier ::= inline // - case 219: { action. consumeDeclSpecToken(); break; + case 219: { action. consumeToken(); break; } // diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java index f62dca50f70..934912c4166 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -172,13 +173,16 @@ public class UPCNoCastExpressionParser extends PrsStream implements RuleAction , private UPCParserAction action; +private ScopedStack astStack = new ScopedStack(); public UPCNoCastExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu); + action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu, astStack); action.setParserOptions(options); + + } @@ -206,13 +210,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -768,25 +771,25 @@ public UPCNoCastExpressionParser(String[] mapFrom) { // constructor // // Rule 158: storage_class_specifier ::= storage_class_specifier_token // - case 158: { action. consumeDeclSpecToken(); break; + case 158: { action. consumeToken(); break; } // // Rule 164: simple_type_specifier ::= simple_type_specifier_token // - case 164: { action. consumeDeclSpecToken(); break; + case 164: { action. consumeToken(); break; } // // Rule 177: typedef_name_in_declspec ::= Completion // - case 177: { action. consumeDeclSpecToken(); break; + case 177: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= identifier // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // @@ -876,13 +879,13 @@ public UPCNoCastExpressionParser(String[] mapFrom) { // constructor // // Rule 214: type_qualifier ::= type_qualifier_token // - case 214: { action. consumeDeclSpecToken(); break; + case 214: { action. consumeToken(); break; } // // Rule 218: function_specifier ::= inline // - case 218: { action. consumeDeclSpecToken(); break; + case 218: { action. consumeToken(); break; } // diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java index 625c6931b5c..c04af564cc3 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -172,13 +173,16 @@ public class UPCParser extends PrsStream implements RuleAction , IParserActionTo private UPCParserAction action; +private ScopedStack astStack = new ScopedStack(); public UPCParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu); + action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu, astStack); action.setParserOptions(options); + + } @@ -206,13 +210,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -774,25 +777,25 @@ public UPCParser(String[] mapFrom) { // constructor // // Rule 159: storage_class_specifier ::= storage_class_specifier_token // - case 159: { action. consumeDeclSpecToken(); break; + case 159: { action. consumeToken(); break; } // // Rule 165: simple_type_specifier ::= simple_type_specifier_token // - case 165: { action. consumeDeclSpecToken(); break; + case 165: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= Completion // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // // Rule 179: typedef_name_in_declspec ::= identifier // - case 179: { action. consumeDeclSpecToken(); break; + case 179: { action. consumeToken(); break; } // @@ -882,13 +885,13 @@ public UPCParser(String[] mapFrom) { // constructor // // Rule 215: type_qualifier ::= type_qualifier_token // - case 215: { action. consumeDeclSpecToken(); break; + case 215: { action. consumeToken(); break; } // // Rule 219: function_specifier ::= inline // - case 219: { action. consumeDeclSpecToken(); break; + case 219: { action. consumeToken(); break; } // diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java index b8f1bd78ba1..a5d9262e76e 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.*; import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; +import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; @@ -172,13 +173,16 @@ public class UPCSizeofExpressionParser extends PrsStream implements RuleAction , private UPCParserAction action; +private ScopedStack astStack = new ScopedStack(); public UPCSizeofExpressionParser() { // constructor } private void initActions(IASTTranslationUnit tu, Set options) { - action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu); + action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu, astStack); action.setParserOptions(options); + + } @@ -206,13 +210,12 @@ public IASTCompletionNode parse(IASTTranslationUnit tu, Set opt } // uncomment this method to use with backtracking parser -public List getRuleTokens() { - return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); } - public IASTNode getSecondaryParseResult() { - return action.getSecondaryParseResult(); + return (IASTNode) astStack.pop(); } public String[] getOrderedTerminalSymbols() { @@ -768,25 +771,25 @@ public UPCSizeofExpressionParser(String[] mapFrom) { // constructor // // Rule 158: storage_class_specifier ::= storage_class_specifier_token // - case 158: { action. consumeDeclSpecToken(); break; + case 158: { action. consumeToken(); break; } // // Rule 164: simple_type_specifier ::= simple_type_specifier_token // - case 164: { action. consumeDeclSpecToken(); break; + case 164: { action. consumeToken(); break; } // // Rule 177: typedef_name_in_declspec ::= Completion // - case 177: { action. consumeDeclSpecToken(); break; + case 177: { action. consumeToken(); break; } // // Rule 178: typedef_name_in_declspec ::= identifier // - case 178: { action. consumeDeclSpecToken(); break; + case 178: { action. consumeToken(); break; } // @@ -876,13 +879,13 @@ public UPCSizeofExpressionParser(String[] mapFrom) { // constructor // // Rule 214: type_qualifier ::= type_qualifier_token // - case 214: { action. consumeDeclSpecToken(); break; + case 214: { action. consumeToken(); break; } // // Rule 218: function_specifier ::= inline // - case 218: { action. consumeDeclSpecToken(); break; + case 218: { action. consumeToken(); break; } //