diff options
author | Pierre-Antoine LaFayette <plafayet@codeaurora.org> | 2011-12-29 15:13:33 +0100 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2013-01-20 18:38:26 -0800 |
commit | 70f026a42cf1bee061389fa6ce790ea1186f0703 (patch) | |
tree | b0de5b5676433d2382e7cf1307b54edc19fc42a5 /Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp | |
parent | a815c626d7df7e24ba9e0df27c27735d4e069ffd (diff) | |
download | external_webkit-70f026a42cf1bee061389fa6ce790ea1186f0703.zip external_webkit-70f026a42cf1bee061389fa6ce790ea1186f0703.tar.gz external_webkit-70f026a42cf1bee061389fa6ce790ea1186f0703.tar.bz2 |
WebGL implementation for Android
Implementation of WebGL in Android WebKit. Exposes a low level 3D
graphics API based on OpenGL ES 2.0 to JavaScript. WebGL is not compiled
by default. It can be enabled by setting ENABLE_WEBGL = true in your
device BoardConfig.mk or directly in external/webkit/Android.mk.
Includes runtime enablement through Browser Settings -> Labs menu.
Enable WebGL debug logs and FPS timing with: adb shell setprop debug.webgl 1
Includes Cross-origin resource sharing support.
Includes fixes for the following Khronos WebGL 1.0.1. tests:
- premultiplyalpha-test.html
- struct-nesting-exceeds-maximum.html
- index-validation.html
- context-attributes-alpha-depth-stencil-antialias.html
- program-test.html
- object-deletion-behaviour.html
Squashed patches:
-----------------------------------------------------------
WebGL implementation for Android
Implementation of WebGL in Android WebKit. Exposes a low level 3D
graphics API based on OpenGL ES 2.0 to JavaScript. WebGL is not compiled
by default. It can be enabled by setting ENABLE_WEBGL = true in your
device BoardConfig.mk or directly in external/webkit/Android.mk. It is
also disabled by default (in WebSettings.cpp) as required by Khronos
until it reaches 100% conformance.
--
From: Anders Edenbrandt <anders.edenbrandt@sonyericsson.com>
Date: Thu, 26 Jan 2012 11:48:41 +0100
WebGL bug fixes and updates
Some updates:
- stability fixes
- image decoder
- redesign of how the FBOs are used
- other bug fixes
--
From: Anders Edenbrandt <anders.edenbrandt@sonyericsson.com>
Date: Tue, 31 Jan 2012 17:20:13 +0100
WebGL code cleanup and bug fixes
--
From: Anders Edenbrandt <anders.edenbrandt@sonyericsson.com>
Date: Thu Mar 15 10:15:33 2012 +0100
More improvements and bug fixes
Updates:
- cleaned up buffer handling, allowing for arbitrary number of buffers
- removed rect from invalidation
- removed screen update request from drawGL
- releasing buffers when the browser is paused
- added missing method 'slice' for typed arrays
- fixed bug in bindFramebuffer
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=c72ff2aa562941d94ceb51ba685d60809ca882a6
Updates to fix some test failures in Khronos Conformance Test Suite:
- Increase max identifier length in shaders to 256
- Add length check on uniforms and attributes
- Add minimal support for compressed textures
(that is, just return the correct error codes)
- Add support for Uint8ClampedByteArray
- Modify how error checking is done on framebuffer operations
- Activate the GL_OES_packed_depth_stencil extension
- Activate the GL_OES_texture_float extension
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=5bfe05848c12a2894697fbb503cfa79981eb96bd
Fix WebGL 1.0.1 premultiplyalpha-test conformance test
Fixing bug with toDataURL when called against a Canvas in which WebGL
content is being rendered and make sure paintRenderingResultsToImageData
isn't used for the premultiplied case.
ihttps://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=5834a1e00f89d898a7a0039d47916b196e40a2c8
Update ANGLE to r1009 to fix WebGL 1.0.1 conformance test
Fixes struct-nesting-exceeds-maximum Khronos WebGL conformance test.
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=ae2392db6360b41a5717f3770a9e63b1bcea45d6
vertexAttribPointer needs to reject large negative offsets
https://bugs.webkit.org/show_bug.cgi?id=85117
Reviewed by Kenneth Russell.
Source/WebCore:
* html/canvas/WebGLRenderingContext.cpp: Use long long for GLsizeiptr and GLintptr
(WebCore):
(WebCore::WebGLRenderingContext::bufferData):
(WebCore::WebGLRenderingContext::bufferSubData):
(WebCore::WebGLRenderingContext::drawElements):
(WebCore::WebGLRenderingContext::getVertexAttribOffset):
(WebCore::WebGLRenderingContext::vertexAttribPointer):
* html/canvas/WebGLRenderingContext.h: Ditto
(WebGLRenderingContext):
* html/canvas/WebGLRenderingContext.idl: Ditto
LayoutTests:
* fast/canvas/webgl/index-validation-expected.txt:
* fast/canvas/webgl/index-validation.html: Add a test case for large negative offset.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@116374 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=b3a02a0942a0e2c44d23961382145fad6016b2ef
Fix for context-attributes-alpha-depth-stencil-antialias
Support for alpha, depth and stencil to fix WebGL Khronos 1.0.1
conformance test. Report back that antialiasing is not supported on our
platform.
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=22e98195ac73e7e12a59d5b9a42dfc4e2252b475
WebGLRenderingContext should defer caching program info
https://bugs.webkit.org/show_bug.cgi?id=83513
Reviewed by Kenneth Russell.
* html/canvas/WebGLProgram.cpp:
(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::numActiveAttribLocations): call cacheInfoIfNeeded();
(WebCore::WebGLProgram::getActiveAttribLocation): Ditto.
(WebCore::WebGLProgram::isUsingVertexAttrib0): Ditto.
(WebCore::WebGLProgram::getLinkStatus): Ditto.
(WebCore):
(WebCore::WebGLProgram::cacheActiveAttribLocations):
(WebCore::WebGLProgram::cacheInfoIfNeeded): Cache link status, active attire locations, etc if needed.
(WebCore::WebGLProgram::increaseLinkCount): also invalidate cached info.
* html/canvas/WebGLProgram.h:
(WebGLProgram):
* html/canvas/WebGLRenderingContext.cpp:
(WebCore):
(WebCore::WebGLRenderingContext::linkProgram): Do not cache program info immediately.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113915 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=66bc9c1b9eb5151b1b236199d0eeb17df0557b47
Runtime enablement of WebGL
Hooks up with the Java side to enable/disable WebGL through the debug
menu.
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=75aab57859de45a0aaec5a7cad41a12111e9a82e
Support the usage of CORS for WebGL and the 2D canvas
Factor CORS request preparation out of DocumentThreadableLoader
https://bugs.webkit.org/show_bug.cgi?id=61209
2011-05-20 Adam Barth <abarth@webkit.org>
Reviewed by Alexey Proskuryakov.
Factor CORS request preparation out of DocumentThreadableLoader
https://bugs.webkit.org/show_bug.cgi?id=61209
DocumentThreadableLoader has two jobs:
1) Proxy loads between threads.
2) Run the CORS state machine.
This patch begins the work of separating those concerns, allowing CORS
to be used elsewhere in the loading pipeline. In particular, this
patch moves knowledge of how to prepare CORS requests out of
DocumentThreadableLoder.
* loader/CrossOriginAccessControl.cpp:
(WebCore::isOnAccessControlSimpleRequestHeaderWhitelist):
(WebCore::updateRequestForAccessControl):
(WebCore::createAccessControlPreflightRequest):
* loader/CrossOriginAccessControl.h:
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
(WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest):
(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@86980 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add rel type prerender to distinguish prerender from prefetch
https://bugs.webkit.org/show_bug.cgi?id=61079
2011-05-21 Gavin Peters <gavinp@chromium.org>
Reviewed by Adam Barth.
Add rel type prerender to distinguish prerender from prefetch
https://bugs.webkit.org/show_bug.cgi?id=61079
Chrome right now uses <link rel=prefetch ...> for one of two things,
to warm the cache in the same way as firefox, or to launch a speculative
rendering of a web page, for faster "loading" when the user navigates to it.
This new rel type will let us distinguish the two cases; the rel type prerender
isn't used on the web today, but the Google Web Search example prerendering application
is ready to experiment with it.
* fast/dom/HTMLLinkElement/prerender-expected.txt: Added.
* fast/dom/HTMLLinkElement/prerender.html: Added.
* platform/gtk/Skipped:
* platform/mac/Skipped:
* platform/qt/Skipped:
* platform/win/Skipped:
2011-05-21 Gavin Peters <gavinp@chromium.org>
Reviewed by Adam Barth.
Add rel type prerender to distinguish prerender from prefetch
https://bugs.webkit.org/show_bug.cgi?id=61079
Chrome right now uses <link rel=prefetch ...> for one of two things,
to warm the cache in the same way as firefox, or to launch a speculative
rendering of a web page, for faster "loading" when the user navigates to it.
This new rel type will let us distinguish the two cases; the rel type prerender
isn't used on the web today, but the Google Web Search example prerendering application
is ready to experiment with it.
Test: fast/dom/HTMLLinkElement/prerender.html
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::tokenizeRelAttribute):
(WebCore::HTMLLinkElement::process):
* html/HTMLLinkElement.h:
(WebCore::HTMLLinkElement::RelAttribute::RelAttribute):
* loader/cache/CachedResource.cpp:
(WebCore::defaultPriorityForResourceType):
* loader/cache/CachedResource.h:
(WebCore::CachedResource::isLinkResource):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::createResource):
(WebCore::CachedResourceLoader::requestLinkResource):
(WebCore::CachedResourceLoader::canRequest):
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedResourceRequest.cpp:
(WebCore::cachedResourceTypeToTargetType):
(WebCore::CachedResourceRequest::load):
* platform/network/ResourceRequestBase.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87020 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make CachedResource take a ResourceRequest instead of just a url string.
2011-05-24 Nate Chapin <japhet@chromium.org>
Reviewed by Adam Barth.
Change CachedResources to take a ResourceRequest instead of
a url in their constructors and provide a very minimal set of
cases for avoiding reusing a CachedResource. The ResourceRequest
part of this change requires pushing responsibility
for calling Document::completeURL() to the caller, instead of
CachedResourceLoader, since ResourceRequest ASSERTs if it
is constructed with an invalid url.
https://bugs.webkit.org/show_bug.cgi?id=61318
Refactor, no new tests.
* css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::addFontFaceRule):
* css/CSSImageValue.cpp:
(WebCore::CSSImageValue::cachedImage):
* css/CSSImportRule.cpp:
(WebCore::CSSImportRule::insertedIntoParent):
* dom/ProcessingInstruction.cpp:
(WebCore::ProcessingInstruction::checkStyleSheet):
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::requestScript):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::process):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::updateFromElement):
* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet):
(WebCore::CachedCSSStyleSheet::didAddClient):
(WebCore::CachedCSSStyleSheet::checkNotify):
* loader/cache/CachedCSSStyleSheet.h:
* loader/cache/CachedFont.cpp:
(WebCore::CachedFont::CachedFont):
* loader/cache/CachedFont.h:
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::CachedImage):
(WebCore::CachedImage::checkShouldPaintBrokenImage):
* loader/cache/CachedImage.h:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::CachedResource):
(WebCore::reuseRequest):
(WebCore::CachedResource::allowReuseOfRequest):
(WebCore::CachedResource::removeClient):
(WebCore::CachedResource::canUseCacheValidator):
* loader/cache/CachedResource.h:
(WebCore::CachedResource::resourceRequest):
(WebCore::CachedResource::url):
* loader/cache/CachedResourceLoader.cpp:
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::load):
* loader/cache/CachedScript.cpp:
(WebCore::CachedScript::CachedScript):
* loader/cache/CachedScript.h:
* loader/cache/CachedXSLStyleSheet.cpp:
(WebCore::CachedXSLStyleSheet::CachedXSLStyleSheet):
(WebCore::CachedXSLStyleSheet::didAddClient):
(WebCore::CachedXSLStyleSheet::checkNotify):
* loader/cache/CachedXSLStyleSheet.h:
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::requestImageResource):
* svg/SVGFontFaceUriElement.cpp:
(WebCore::SVGFontFaceUriElement::loadFont):
* xml/XSLImportRule.cpp:
(WebCore::XSLImportRule::loadSheet):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87239 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Support cross-origin property for images
2011-05-26 Adam Barth <abarth@webkit.org>
Reviewed by Eric Seidel.
Support cross-origin property for images
https://bugs.webkit.org/show_bug.cgi?id=61015
Test various cases involving CORS requests and canvas tainting.
* http/tests/security/canvas-remote-read-remote-image-allowed-expected.txt: Added.
* http/tests/security/canvas-remote-read-remote-image-allowed-with-credentials-expected.txt: Added.
* http/tests/security/canvas-remote-read-remote-image-allowed-with-credentials.html: Added.
* http/tests/security/canvas-remote-read-remote-image-allowed.html: Added.
* http/tests/security/canvas-remote-read-remote-image-blocked-no-crossorigin-expected.txt: Added.
* http/tests/security/canvas-remote-read-remote-image-blocked-no-crossorigin.html: Added.
* http/tests/security/resources/abe-allow-credentials.php: Added.
* http/tests/security/resources/abe-allow-star.php: Added.
2011-05-26 Adam Barth <abarth@webkit.org>
Reviewed by Eric Seidel.
Support cross-origin property for images
https://bugs.webkit.org/show_bug.cgi?id=61015
This patch add support for the crossorigin attribute of images and
teaches 2D canvas to respect that flag and not taint a canvas if the
image drawn on the canvas is allowed by CORS.
While I was editing this code, I couldn't resist a couple touch-up
changes.
Tests: http/tests/security/canvas-remote-read-remote-image-allowed-with-credentials.html
http/tests/security/canvas-remote-read-remote-image-allowed.html
http/tests/security/canvas-remote-read-remote-image-blocked-no-crossorigin.html
* html/HTMLAttributeNames.in:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::securityOrigin):
* html/HTMLCanvasElement.h:
* html/HTMLImageElement.idl:
* html/canvas/CanvasRenderingContext.cpp:
(WebCore::CanvasRenderingContext::checkOrigin):
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::createPattern):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::updateFromElement):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::passesAccessControlCheck):
* loader/cache/CachedResource.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87473 268f45cc-cd09-0410-ab3c-d52691b4dbfc
HTMLVideoElement::currentSrc() should return a KURL
2011-05-27 Adam Barth <abarth@webkit.org>
Reviewed by Eric Seidel.
HTMLVideoElement::currentSrc() should return a KURL
https://bugs.webkit.org/show_bug.cgi?id=61578
I suspect we got into this mess because the author of this code didn't
know about the URL attribute in WebKit IDL, which is super useful!
Bad news: The line of code in question seems to have another bug, which
I've documented in a FIXME. Let the yak shaving continue!
* html/HTMLMediaElement.cpp:
(WebCore::urlForLogging):
(WebCore::HTMLMediaElement::loadResource):
(WebCore::HTMLMediaElement::isSafeToLoadURL):
(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::HTMLMediaElement::getPluginProxyParams):
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::currentSrc):
(WebCore::HTMLMediaElement::currentURL):
* html/canvas/CanvasRenderingContext.cpp:
(WebCore::CanvasRenderingContext::checkOrigin):
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::absoluteMediaURL):
- This complete URL call was unnecessary because currentSrc is
already absolute.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87539 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Disallow use of cross-domain media (images, video) in WebGL
2011-06-09 Kenneth Russell <kbr@google.com>
Reviewed by Adam Barth.
Disallow use of cross-domain media (images, video) in WebGL
https://bugs.webkit.org/show_bug.cgi?id=62257
Updated WebGL implementation to track recent spec updates in this area.
Tests: http/tests/security/webgl-remote-read-remote-image-allowed-with-credentials.html
http/tests/security/webgl-remote-read-remote-image-allowed.html
http/tests/security/webgl-remote-read-remote-image-blocked-no-crossorigin.html
* html/canvas/CanvasRenderingContext.cpp:
(WebCore::CanvasRenderingContext::wouldTaintOrigin):
(WebCore::CanvasRenderingContext::checkOrigin):
* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::checkOrigin):
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::readPixels):
(WebCore::WebGLRenderingContext::texImage2D):
(WebCore::WebGLRenderingContext::videoFrameToImage):
(WebCore::WebGLRenderingContext::texSubImage2D):
* html/canvas/WebGLRenderingContext.h:
2011-06-09 Kenneth Russell <kbr@google.com>
Reviewed by Adam Barth.
Disallow use of cross-domain media (images, video) in WebGL
https://bugs.webkit.org/show_bug.cgi?id=62257
Updated origin-clean-conformance.html to track upstream version in
Khronos repository. Added new layout tests mirroring those added
in bug 61015 which verify that new CORS support for images is
working in the context of WebGL.
Verified new tests in WebKit and Chromium. Skipped tests on
platforms where WebGL is disabled.
* http/tests/canvas/webgl/origin-clean-conformance-expected.txt:
* http/tests/canvas/webgl/origin-clean-conformance.html:
* http/tests/security/webgl-remote-read-remote-image-allowed-expected.txt: Added.
* http/tests/security/webgl-remote-read-remote-image-allowed-with-credentials-expected.txt: Added.
* http/tests/security/webgl-remote-read-remote-image-allowed-with-credentials.html: Added.
* http/tests/security/webgl-remote-read-remote-image-allowed.html: Added.
* http/tests/security/webgl-remote-read-remote-image-blocked-no-crossorigin-expected.txt: Added.
* http/tests/security/webgl-remote-read-remote-image-blocked-no-crossorigin.html: Added.
* platform/gtk/Skipped:
* platform/mac-leopard/Skipped:
* platform/mac-wk2/Skipped:
* platform/qt/Skipped:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@88489 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=0ddd7c1d91c08fbee6c99b79fa9971a7ac914384
Runtime enablement of WebGL logs
Allows enabling WebGL method level logging using:
adb shell setprop debug.webgl 1
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=307d4a2b5b20f2609497ceaea1eca2e29a8a781f
Adding WebGL FPS timing to logs
Samples WebGL average FPS every 15 frames and outputs to WebGL debug log.
TODO: Add setting to browser debug settings that overlays FPS on web
pages.
Postpone deleteRenderbuffer/deleteTexture until all framebuffer attachment points are removed.
https://bugs.webkit.org/show_bug.cgi?id=74741
Reviewed by Kenneth Russell.
Source/WebCore:
Use WebGLObject's attachment count mechanism to track if a renderbuffer/texture
is still attached to framebuffers, and if its deletion should be delated or not.
* html/canvas/WebGLFramebuffer.cpp:
(WebCore::WebGLFramebuffer::setAttachmentForBoundFramebuffer):
(WebCore::WebGLFramebuffer::getAttachment):
(WebCore::WebGLFramebuffer::removeAttachmentFromBoundFramebuffer):
(WebCore::WebGLFramebuffer::deleteObjectImpl):
(WebCore::WebGLFramebuffer::isBound):
* html/canvas/WebGLFramebuffer.h:
LayoutTests:
* fast/canvas/webgl/object-deletion-behaviour-expected.txt:
* fast/canvas/webgl/object-deletion-behaviour.html: synced with khronos side.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@103272 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://www.codeaurora.org/gitweb/quic/la/?p=platform/external/webkit.git;a=commit;h=9def386340c74f2a745fb041b1cb11daa30d1a82
-----------------------------------------------------------
(cherry-picked from commit 6d9d732ff06a6b265d02b18d7034068a68ef0fde)
Conflicts:
Android.mk
Source/WebCore/ChangeLog
Change-Id: I3bbf993fe5a3d6cea53e019c8fa3912ecd2bd429
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp | 1503 |
1 files changed, 815 insertions, 688 deletions
diff --git a/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp b/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp index d00c7a3..37a0f05 100644 --- a/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp +++ b/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp @@ -106,57 +106,59 @@ WHILE = 295, SAMPLER2D = 296, SAMPLERCUBE = 297, - IDENTIFIER = 298, - TYPE_NAME = 299, - FLOATCONSTANT = 300, - INTCONSTANT = 301, - BOOLCONSTANT = 302, - FIELD_SELECTION = 303, - LEFT_OP = 304, - RIGHT_OP = 305, - INC_OP = 306, - DEC_OP = 307, - LE_OP = 308, - GE_OP = 309, - EQ_OP = 310, - NE_OP = 311, - AND_OP = 312, - OR_OP = 313, - XOR_OP = 314, - MUL_ASSIGN = 315, - DIV_ASSIGN = 316, - ADD_ASSIGN = 317, - MOD_ASSIGN = 318, - LEFT_ASSIGN = 319, - RIGHT_ASSIGN = 320, - AND_ASSIGN = 321, - XOR_ASSIGN = 322, - OR_ASSIGN = 323, - SUB_ASSIGN = 324, - LEFT_PAREN = 325, - RIGHT_PAREN = 326, - LEFT_BRACKET = 327, - RIGHT_BRACKET = 328, - LEFT_BRACE = 329, - RIGHT_BRACE = 330, - DOT = 331, - COMMA = 332, - COLON = 333, - EQUAL = 334, - SEMICOLON = 335, - BANG = 336, - DASH = 337, - TILDE = 338, - PLUS = 339, - STAR = 340, - SLASH = 341, - PERCENT = 342, - LEFT_ANGLE = 343, - RIGHT_ANGLE = 344, - VERTICAL_BAR = 345, - CARET = 346, - AMPERSAND = 347, - QUESTION = 348 + SAMPLER_EXTERNAL_OES = 298, + SAMPLER2DRECT = 299, + IDENTIFIER = 300, + TYPE_NAME = 301, + FLOATCONSTANT = 302, + INTCONSTANT = 303, + BOOLCONSTANT = 304, + FIELD_SELECTION = 305, + LEFT_OP = 306, + RIGHT_OP = 307, + INC_OP = 308, + DEC_OP = 309, + LE_OP = 310, + GE_OP = 311, + EQ_OP = 312, + NE_OP = 313, + AND_OP = 314, + OR_OP = 315, + XOR_OP = 316, + MUL_ASSIGN = 317, + DIV_ASSIGN = 318, + ADD_ASSIGN = 319, + MOD_ASSIGN = 320, + LEFT_ASSIGN = 321, + RIGHT_ASSIGN = 322, + AND_ASSIGN = 323, + XOR_ASSIGN = 324, + OR_ASSIGN = 325, + SUB_ASSIGN = 326, + LEFT_PAREN = 327, + RIGHT_PAREN = 328, + LEFT_BRACKET = 329, + RIGHT_BRACKET = 330, + LEFT_BRACE = 331, + RIGHT_BRACE = 332, + DOT = 333, + COMMA = 334, + COLON = 335, + EQUAL = 336, + SEMICOLON = 337, + BANG = 338, + DASH = 339, + TILDE = 340, + PLUS = 341, + STAR = 342, + SLASH = 343, + PERCENT = 344, + LEFT_ANGLE = 345, + RIGHT_ANGLE = 346, + VERTICAL_BAR = 347, + CARET = 348, + AMPERSAND = 349, + QUESTION = 350 }; #endif /* Tokens. */ @@ -200,57 +202,59 @@ #define WHILE 295 #define SAMPLER2D 296 #define SAMPLERCUBE 297 -#define IDENTIFIER 298 -#define TYPE_NAME 299 -#define FLOATCONSTANT 300 -#define INTCONSTANT 301 -#define BOOLCONSTANT 302 -#define FIELD_SELECTION 303 -#define LEFT_OP 304 -#define RIGHT_OP 305 -#define INC_OP 306 -#define DEC_OP 307 -#define LE_OP 308 -#define GE_OP 309 -#define EQ_OP 310 -#define NE_OP 311 -#define AND_OP 312 -#define OR_OP 313 -#define XOR_OP 314 -#define MUL_ASSIGN 315 -#define DIV_ASSIGN 316 -#define ADD_ASSIGN 317 -#define MOD_ASSIGN 318 -#define LEFT_ASSIGN 319 -#define RIGHT_ASSIGN 320 -#define AND_ASSIGN 321 -#define XOR_ASSIGN 322 -#define OR_ASSIGN 323 -#define SUB_ASSIGN 324 -#define LEFT_PAREN 325 -#define RIGHT_PAREN 326 -#define LEFT_BRACKET 327 -#define RIGHT_BRACKET 328 -#define LEFT_BRACE 329 -#define RIGHT_BRACE 330 -#define DOT 331 -#define COMMA 332 -#define COLON 333 -#define EQUAL 334 -#define SEMICOLON 335 -#define BANG 336 -#define DASH 337 -#define TILDE 338 -#define PLUS 339 -#define STAR 340 -#define SLASH 341 -#define PERCENT 342 -#define LEFT_ANGLE 343 -#define RIGHT_ANGLE 344 -#define VERTICAL_BAR 345 -#define CARET 346 -#define AMPERSAND 347 -#define QUESTION 348 +#define SAMPLER_EXTERNAL_OES 298 +#define SAMPLER2DRECT 299 +#define IDENTIFIER 300 +#define TYPE_NAME 301 +#define FLOATCONSTANT 302 +#define INTCONSTANT 303 +#define BOOLCONSTANT 304 +#define FIELD_SELECTION 305 +#define LEFT_OP 306 +#define RIGHT_OP 307 +#define INC_OP 308 +#define DEC_OP 309 +#define LE_OP 310 +#define GE_OP 311 +#define EQ_OP 312 +#define NE_OP 313 +#define AND_OP 314 +#define OR_OP 315 +#define XOR_OP 316 +#define MUL_ASSIGN 317 +#define DIV_ASSIGN 318 +#define ADD_ASSIGN 319 +#define MOD_ASSIGN 320 +#define LEFT_ASSIGN 321 +#define RIGHT_ASSIGN 322 +#define AND_ASSIGN 323 +#define XOR_ASSIGN 324 +#define OR_ASSIGN 325 +#define SUB_ASSIGN 326 +#define LEFT_PAREN 327 +#define RIGHT_PAREN 328 +#define LEFT_BRACKET 329 +#define RIGHT_BRACKET 330 +#define LEFT_BRACE 331 +#define RIGHT_BRACE 332 +#define DOT 333 +#define COMMA 334 +#define COLON 335 +#define EQUAL 336 +#define SEMICOLON 337 +#define BANG 338 +#define DASH 339 +#define TILDE 340 +#define PLUS 341 +#define STAR 342 +#define SLASH 343 +#define PERCENT 344 +#define LEFT_ANGLE 345 +#define RIGHT_ANGLE 346 +#define VERTICAL_BAR 347 +#define CARET 348 +#define AMPERSAND 349 +#define QUESTION 350 @@ -259,12 +263,24 @@ // -// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// This file is auto-generated by generate_glslang_parser.sh. DO NOT EDIT! +// This file is auto-generated by generate_parser.sh. DO NOT EDIT! + +// Ignore errors in auto-generated code. +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wswitch-enum" +#elif defined(_MSC_VER) +#pragma warning(disable: 4065) +#pragma warning(disable: 4189) +#pragma warning(disable: 4505) +#pragma warning(disable: 4701) +#endif #include "compiler/SymbolTable.h" #include "compiler/ParseHelper.h" @@ -325,7 +341,7 @@ typedef union YYSTYPE }; } interm; } -/* Line 187 of yacc.c. */ +/* Line 193 of yacc.c. */ YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -415,7 +431,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if YYENABLE_NLS +# if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -578,22 +594,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 69 +#define YYFINAL 71 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1334 +#define YYLAST 1416 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 94 +#define YYNTOKENS 96 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 78 +#define YYNNTS 83 /* YYNRULES -- Number of rules. */ -#define YYNRULES 193 +#define YYNRULES 201 /* YYNRULES -- Number of states. */ -#define YYNSTATES 296 +#define YYNSTATES 304 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 348 +#define YYMAXUTOK 350 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -635,7 +651,8 @@ static const yytype_uint8 yytranslate[] = 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93 + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95 }; #if YYDEBUG @@ -656,99 +673,102 @@ static const yytype_uint16 yyprhs[] = 298, 303, 306, 308, 311, 313, 315, 317, 320, 322, 324, 327, 329, 331, 333, 335, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, - 368, 370, 372, 374, 376, 378, 380, 386, 391, 393, - 396, 400, 402, 406, 408, 413, 415, 417, 419, 421, - 423, 425, 427, 429, 431, 434, 435, 436, 442, 444, - 446, 449, 453, 455, 458, 460, 463, 469, 473, 475, - 477, 482, 483, 490, 491, 500, 501, 509, 511, 513, - 515, 516, 519, 523, 526, 529, 532, 536, 539, 541, - 544, 546, 548, 549 + 368, 370, 372, 374, 376, 378, 380, 382, 384, 385, + 392, 393, 399, 401, 404, 408, 410, 414, 416, 421, + 423, 425, 427, 429, 431, 433, 435, 437, 439, 442, + 443, 444, 450, 452, 454, 455, 458, 459, 462, 465, + 469, 471, 474, 476, 479, 485, 489, 491, 493, 498, + 499, 506, 507, 516, 517, 525, 527, 529, 531, 532, + 535, 539, 542, 545, 548, 552, 555, 557, 560, 562, + 564, 565 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 168, 0, -1, 43, -1, 95, -1, 46, -1, 45, - -1, 47, -1, 70, 122, 71, -1, 96, -1, 97, - 72, 98, 73, -1, 99, -1, 97, 76, 48, -1, - 97, 51, -1, 97, 52, -1, 122, -1, 100, -1, - 101, -1, 97, 76, 101, -1, 103, 71, -1, 102, - 71, -1, 104, 39, -1, 104, -1, 104, 120, -1, - 103, 77, 120, -1, 105, 70, -1, 137, -1, 43, - -1, 48, -1, 97, -1, 51, 106, -1, 52, 106, - -1, 107, 106, -1, 84, -1, 82, -1, 81, -1, - 106, -1, 108, 85, 106, -1, 108, 86, 106, -1, - 108, -1, 109, 84, 108, -1, 109, 82, 108, -1, - 109, -1, 110, -1, 111, 88, 110, -1, 111, 89, - 110, -1, 111, 53, 110, -1, 111, 54, 110, -1, - 111, -1, 112, 55, 111, -1, 112, 56, 111, -1, - 112, -1, 113, -1, 114, -1, 115, -1, 116, 57, - 115, -1, 116, -1, 117, 59, 116, -1, 117, -1, - 118, 58, 117, -1, 118, -1, 118, 93, 122, 78, - 120, -1, 119, -1, 106, 121, 120, -1, 79, -1, - 60, -1, 61, -1, 62, -1, 69, -1, 120, -1, - 122, 77, 120, -1, 119, -1, 125, 80, -1, 133, - 80, -1, 7, 138, 139, 80, -1, 126, 71, -1, - 128, -1, 127, -1, 128, 130, -1, 127, 77, 130, - -1, 135, 43, 70, -1, 137, 43, -1, 137, 43, - 72, 123, 73, -1, 136, 131, 129, -1, 131, 129, - -1, 136, 131, 132, -1, 131, 132, -1, -1, 33, - -1, 34, -1, 35, -1, 137, -1, 134, -1, 133, - 77, 43, -1, 133, 77, 43, 72, 73, -1, 133, - 77, 43, 72, 123, 73, -1, 133, 77, 43, 79, - 146, -1, 135, -1, 135, 43, -1, 135, 43, 72, - 73, -1, 135, 43, 72, 123, 73, -1, 135, 43, - 79, 146, -1, 3, 43, -1, 137, -1, 136, 137, + 175, 0, -1, 45, -1, 97, -1, 48, -1, 47, + -1, 49, -1, 72, 124, 73, -1, 98, -1, 99, + 74, 100, 75, -1, 101, -1, 99, 78, 50, -1, + 99, 53, -1, 99, 54, -1, 124, -1, 102, -1, + 103, -1, 99, 78, 103, -1, 105, 73, -1, 104, + 73, -1, 106, 39, -1, 106, -1, 106, 122, -1, + 105, 79, 122, -1, 107, 72, -1, 142, -1, 45, + -1, 50, -1, 99, -1, 53, 108, -1, 54, 108, + -1, 109, 108, -1, 86, -1, 84, -1, 83, -1, + 108, -1, 110, 87, 108, -1, 110, 88, 108, -1, + 110, -1, 111, 86, 110, -1, 111, 84, 110, -1, + 111, -1, 112, -1, 113, 90, 112, -1, 113, 91, + 112, -1, 113, 55, 112, -1, 113, 56, 112, -1, + 113, -1, 114, 57, 113, -1, 114, 58, 113, -1, + 114, -1, 115, -1, 116, -1, 117, -1, 118, 59, + 117, -1, 118, -1, 119, 61, 118, -1, 119, -1, + 120, 60, 119, -1, 120, -1, 120, 95, 124, 80, + 122, -1, 121, -1, 108, 123, 122, -1, 81, -1, + 62, -1, 63, -1, 64, -1, 71, -1, 122, -1, + 124, 79, 122, -1, 121, -1, 127, 82, -1, 135, + 82, -1, 7, 140, 141, 82, -1, 128, 73, -1, + 130, -1, 129, -1, 130, 132, -1, 129, 79, 132, + -1, 137, 45, 72, -1, 139, 45, -1, 139, 45, + 74, 125, 75, -1, 138, 133, 131, -1, 133, 131, + -1, 138, 133, 134, -1, 133, 134, -1, -1, 33, + -1, 34, -1, 35, -1, 139, -1, 136, -1, 135, + 79, 45, -1, 135, 79, 45, 74, 75, -1, 135, + 79, 45, 74, 125, 75, -1, 135, 79, 45, 81, + 150, -1, 137, -1, 137, 45, -1, 137, 45, 74, + 75, -1, 137, 45, 74, 125, 75, -1, 137, 45, + 81, 150, -1, 3, 45, -1, 139, -1, 138, 139, -1, 9, -1, 8, -1, 37, -1, 3, 37, -1, - 36, -1, 139, -1, 138, 139, -1, 4, -1, 5, - -1, 6, -1, 140, -1, 140, 72, 123, 73, -1, + 36, -1, 141, -1, 140, 141, -1, 4, -1, 5, + -1, 6, -1, 142, -1, 142, 74, 125, 75, -1, 39, -1, 11, -1, 12, -1, 10, -1, 27, -1, 28, -1, 29, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 30, -1, 31, -1, - 32, -1, 41, -1, 42, -1, 141, -1, 44, -1, - 38, 43, 74, 142, 75, -1, 38, 74, 142, 75, - -1, 143, -1, 142, 143, -1, 137, 144, 80, -1, - 145, -1, 144, 77, 145, -1, 43, -1, 43, 72, - 123, 73, -1, 120, -1, 124, -1, 150, -1, 149, - -1, 147, -1, 156, -1, 157, -1, 160, -1, 167, - -1, 74, 75, -1, -1, -1, 74, 151, 155, 152, - 75, -1, 154, -1, 149, -1, 74, 75, -1, 74, - 155, 75, -1, 148, -1, 155, 148, -1, 80, -1, - 122, 80, -1, 18, 70, 122, 71, 158, -1, 148, - 16, 148, -1, 148, -1, 122, -1, 135, 43, 79, - 146, -1, -1, 40, 70, 161, 159, 71, 153, -1, - -1, 15, 162, 148, 40, 70, 122, 71, 80, -1, - -1, 17, 70, 163, 164, 166, 71, 153, -1, 156, - -1, 147, -1, 159, -1, -1, 165, 80, -1, 165, - 80, 122, -1, 14, 80, -1, 13, 80, -1, 20, - 80, -1, 20, 122, 80, -1, 19, 80, -1, 169, - -1, 168, 169, -1, 170, -1, 124, -1, -1, 125, - 171, 154, -1 + 32, -1, 41, -1, 42, -1, 43, -1, 44, -1, + 143, -1, 46, -1, -1, 38, 45, 76, 144, 146, + 77, -1, -1, 38, 76, 145, 146, 77, -1, 147, + -1, 146, 147, -1, 139, 148, 82, -1, 149, -1, + 148, 79, 149, -1, 45, -1, 45, 74, 125, 75, + -1, 122, -1, 126, -1, 154, -1, 153, -1, 151, + -1, 163, -1, 164, -1, 167, -1, 174, -1, 76, + 77, -1, -1, -1, 76, 155, 162, 156, 77, -1, + 161, -1, 153, -1, -1, 159, 161, -1, -1, 160, + 153, -1, 76, 77, -1, 76, 162, 77, -1, 152, + -1, 162, 152, -1, 82, -1, 124, 82, -1, 18, + 72, 124, 73, 165, -1, 158, 16, 158, -1, 158, + -1, 124, -1, 137, 45, 81, 150, -1, -1, 40, + 72, 168, 166, 73, 157, -1, -1, 15, 169, 158, + 40, 72, 124, 73, 82, -1, -1, 17, 72, 170, + 171, 173, 73, 157, -1, 163, -1, 151, -1, 166, + -1, -1, 172, 82, -1, 172, 82, 124, -1, 14, + 82, -1, 13, 82, -1, 20, 82, -1, 20, 124, + 82, -1, 19, 82, -1, 176, -1, 175, 176, -1, + 177, -1, 126, -1, -1, 127, 178, 161, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 153, 153, 188, 191, 204, 209, 214, 220, 223, - 296, 299, 408, 418, 431, 439, 538, 541, 549, 553, - 560, 564, 571, 577, 586, 594, 656, 663, 673, 676, - 686, 696, 717, 718, 719, 724, 725, 734, 746, 747, - 755, 766, 770, 771, 781, 791, 801, 814, 815, 825, - 838, 842, 846, 850, 851, 864, 865, 878, 879, 892, - 893, 910, 911, 924, 925, 926, 927, 928, 932, 935, - 946, 954, 979, 984, 991, 1027, 1030, 1037, 1045, 1066, - 1085, 1096, 1125, 1130, 1140, 1145, 1155, 1158, 1161, 1164, - 1170, 1177, 1187, 1199, 1217, 1241, 1264, 1268, 1282, 1302, - 1331, 1351, 1427, 1436, 1459, 1462, 1468, 1476, 1484, 1492, - 1495, 1502, 1505, 1508, 1514, 1517, 1532, 1536, 1540, 1544, - 1553, 1558, 1563, 1568, 1573, 1578, 1583, 1588, 1593, 1598, - 1604, 1610, 1616, 1621, 1626, 1631, 1644, 1657, 1665, 1668, - 1683, 1714, 1718, 1724, 1732, 1748, 1752, 1756, 1757, 1763, - 1764, 1765, 1766, 1767, 1771, 1772, 1772, 1772, 1780, 1781, - 1786, 1789, 1797, 1800, 1806, 1807, 1811, 1819, 1823, 1833, - 1838, 1855, 1855, 1860, 1860, 1867, 1867, 1875, 1878, 1884, - 1887, 1893, 1897, 1904, 1911, 1918, 1925, 1936, 1945, 1949, - 1956, 1959, 1965, 1965 + 0, 165, 165, 200, 203, 216, 221, 226, 232, 235, + 308, 311, 420, 430, 443, 451, 550, 553, 561, 565, + 572, 576, 583, 589, 598, 606, 661, 668, 678, 681, + 691, 701, 722, 723, 724, 729, 730, 739, 751, 752, + 760, 771, 775, 776, 786, 796, 806, 819, 820, 830, + 843, 847, 851, 855, 856, 869, 870, 883, 884, 897, + 898, 915, 916, 929, 930, 931, 932, 933, 937, 940, + 951, 959, 986, 991, 998, 1036, 1039, 1046, 1054, 1075, + 1096, 1107, 1136, 1141, 1151, 1156, 1166, 1169, 1172, 1175, + 1181, 1188, 1191, 1213, 1231, 1255, 1278, 1282, 1300, 1308, + 1340, 1360, 1449, 1458, 1481, 1484, 1490, 1498, 1506, 1514, + 1524, 1531, 1534, 1537, 1543, 1546, 1561, 1565, 1569, 1573, + 1582, 1587, 1592, 1597, 1602, 1607, 1612, 1617, 1622, 1627, + 1633, 1639, 1645, 1650, 1655, 1664, 1673, 1678, 1691, 1691, + 1705, 1705, 1714, 1717, 1732, 1768, 1772, 1778, 1786, 1802, + 1806, 1810, 1811, 1817, 1818, 1819, 1820, 1821, 1825, 1826, + 1826, 1826, 1836, 1837, 1841, 1841, 1842, 1842, 1847, 1850, + 1860, 1863, 1869, 1870, 1874, 1882, 1886, 1896, 1901, 1918, + 1918, 1923, 1923, 1930, 1930, 1938, 1941, 1947, 1950, 1956, + 1960, 1967, 1974, 1981, 1988, 1999, 2008, 2012, 2019, 2022, + 2028, 2028 }; #endif @@ -764,16 +784,16 @@ static const char *const yytname[] = "BVEC4", "IVEC2", "IVEC3", "IVEC4", "VEC2", "VEC3", "VEC4", "MATRIX2", "MATRIX3", "MATRIX4", "IN_QUAL", "OUT_QUAL", "INOUT_QUAL", "UNIFORM", "VARYING", "STRUCT", "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE", - "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "INTCONSTANT", - "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", "INC_OP", - "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", - "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", - "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", - "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", - "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", - "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", - "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", - "AMPERSAND", "QUESTION", "$accept", "variable_identifier", + "SAMPLER_EXTERNAL_OES", "SAMPLER2DRECT", "IDENTIFIER", "TYPE_NAME", + "FLOATCONSTANT", "INTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", + "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", + "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", + "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", + "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", + "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", + "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", + "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", + "CARET", "AMPERSAND", "QUESTION", "$accept", "variable_identifier", "primary_expression", "postfix_expression", "integer_expression", "function_call", "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", @@ -792,16 +812,16 @@ static const char *const yytname[] = "init_declarator_list", "single_declaration", "fully_specified_type", "type_qualifier", "type_specifier", "precision_qualifier", "type_specifier_no_prec", "type_specifier_nonarray", "struct_specifier", - "struct_declaration_list", "struct_declaration", + "@1", "@2", "struct_declaration_list", "struct_declaration", "struct_declarator_list", "struct_declarator", "initializer", "declaration_statement", "statement", "simple_statement", - "compound_statement", "@1", "@2", "statement_no_new_scope", - "compound_statement_no_new_scope", "statement_list", - "expression_statement", "selection_statement", - "selection_rest_statement", "condition", "iteration_statement", "@3", - "@4", "@5", "for_init_statement", "conditionopt", "for_rest_statement", + "compound_statement", "@3", "@4", "statement_no_new_scope", + "statement_with_scope", "@5", "@6", "compound_statement_no_new_scope", + "statement_list", "expression_statement", "selection_statement", + "selection_rest_statement", "condition", "iteration_statement", "@7", + "@8", "@9", "for_init_statement", "conditionopt", "for_rest_statement", "jump_statement", "translation_unit", "external_declaration", - "function_definition", "@6", 0 + "function_definition", "@10", 0 }; #endif @@ -819,33 +839,34 @@ static const yytype_uint16 yytoknum[] = 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348 + 345, 346, 347, 348, 349, 350 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 94, 95, 96, 96, 96, 96, 96, 97, 97, - 97, 97, 97, 97, 98, 99, 100, 100, 101, 101, - 102, 102, 103, 103, 104, 105, 105, 105, 106, 106, - 106, 106, 107, 107, 107, 108, 108, 108, 109, 109, - 109, 110, 111, 111, 111, 111, 111, 112, 112, 112, - 113, 114, 115, 116, 116, 117, 117, 118, 118, 119, - 119, 120, 120, 121, 121, 121, 121, 121, 122, 122, - 123, 124, 124, 124, 125, 126, 126, 127, 127, 128, - 129, 129, 130, 130, 130, 130, 131, 131, 131, 131, - 132, 133, 133, 133, 133, 133, 134, 134, 134, 134, - 134, 134, 135, 135, 136, 136, 136, 136, 136, 137, - 137, 138, 138, 138, 139, 139, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 141, 141, 142, 142, - 143, 144, 144, 145, 145, 146, 147, 148, 148, 149, - 149, 149, 149, 149, 150, 151, 152, 150, 153, 153, - 154, 154, 155, 155, 156, 156, 157, 158, 158, 159, - 159, 161, 160, 162, 160, 163, 160, 164, 164, 165, - 165, 166, 166, 167, 167, 167, 167, 167, 168, 168, - 169, 169, 171, 170 + 0, 96, 97, 98, 98, 98, 98, 98, 99, 99, + 99, 99, 99, 99, 100, 101, 102, 102, 103, 103, + 104, 104, 105, 105, 106, 107, 107, 107, 108, 108, + 108, 108, 109, 109, 109, 110, 110, 110, 111, 111, + 111, 112, 113, 113, 113, 113, 113, 114, 114, 114, + 115, 116, 117, 118, 118, 119, 119, 120, 120, 121, + 121, 122, 122, 123, 123, 123, 123, 123, 124, 124, + 125, 126, 126, 126, 127, 128, 128, 129, 129, 130, + 131, 131, 132, 132, 132, 132, 133, 133, 133, 133, + 134, 135, 135, 135, 135, 135, 136, 136, 136, 136, + 136, 136, 137, 137, 138, 138, 138, 138, 138, 139, + 139, 140, 140, 140, 141, 141, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 144, 143, + 145, 143, 146, 146, 147, 148, 148, 149, 149, 150, + 151, 152, 152, 153, 153, 153, 153, 153, 154, 155, + 156, 154, 157, 157, 159, 158, 160, 158, 161, 161, + 162, 162, 163, 163, 164, 165, 165, 166, 166, 168, + 167, 169, 167, 170, 167, 171, 171, 172, 172, 173, + 173, 174, 174, 174, 174, 174, 175, 175, 176, 176, + 178, 177 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -864,13 +885,14 @@ static const yytype_uint8 yyr2[] = 4, 2, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 5, 4, 1, 2, - 3, 1, 3, 1, 4, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 0, 5, 1, 1, - 2, 3, 1, 2, 1, 2, 5, 3, 1, 1, - 4, 0, 6, 0, 8, 0, 7, 1, 1, 1, - 0, 2, 3, 2, 2, 2, 3, 2, 1, 2, - 1, 1, 0, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, + 0, 5, 1, 2, 3, 1, 3, 1, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 0, 5, 1, 1, 0, 2, 0, 2, 2, 3, + 1, 2, 1, 2, 5, 3, 1, 1, 4, 0, + 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, + 3, 2, 2, 2, 3, 2, 1, 2, 1, 1, + 0, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -880,378 +902,398 @@ static const yytype_uint8 yydefact[] = { 0, 0, 111, 112, 113, 0, 105, 104, 119, 117, 118, 123, 124, 125, 126, 127, 128, 120, 121, 122, - 129, 130, 131, 108, 106, 0, 116, 132, 133, 135, - 191, 192, 0, 76, 86, 0, 91, 96, 0, 102, - 0, 109, 114, 134, 0, 188, 190, 107, 101, 0, - 0, 0, 71, 0, 74, 86, 0, 87, 88, 89, - 77, 0, 86, 0, 72, 97, 103, 110, 0, 1, - 189, 0, 0, 0, 0, 138, 0, 193, 78, 83, + 129, 130, 131, 108, 106, 0, 116, 132, 133, 134, + 135, 137, 199, 200, 0, 76, 86, 0, 91, 96, + 0, 102, 0, 109, 114, 136, 0, 196, 198, 107, + 101, 0, 0, 140, 71, 0, 74, 86, 0, 87, + 88, 89, 77, 0, 86, 0, 72, 97, 103, 110, + 0, 1, 197, 0, 138, 0, 0, 201, 78, 83, 85, 90, 0, 92, 79, 0, 0, 2, 5, 4, 6, 27, 0, 0, 0, 34, 33, 32, 3, 8, 28, 10, 15, 16, 0, 0, 21, 0, 35, 0, 38, 41, 42, 47, 50, 51, 52, 53, 55, 57, - 59, 70, 0, 25, 73, 0, 143, 0, 141, 137, - 139, 0, 0, 173, 0, 0, 0, 0, 0, 155, - 160, 164, 35, 61, 68, 0, 146, 0, 102, 149, - 162, 148, 147, 0, 150, 151, 152, 153, 80, 82, - 84, 0, 0, 98, 0, 145, 100, 29, 30, 0, - 12, 13, 0, 0, 19, 18, 0, 116, 22, 24, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 115, 136, 0, 0, 140, - 184, 183, 0, 175, 0, 187, 185, 0, 171, 154, - 0, 64, 65, 66, 67, 63, 0, 0, 165, 161, - 163, 0, 93, 0, 95, 99, 7, 0, 14, 26, + 59, 70, 0, 25, 73, 0, 0, 0, 142, 0, + 0, 181, 0, 0, 0, 0, 0, 159, 168, 172, + 35, 61, 68, 0, 150, 0, 114, 153, 170, 152, + 151, 0, 154, 155, 156, 157, 80, 82, 84, 0, + 0, 98, 0, 149, 100, 29, 30, 0, 12, 13, + 0, 0, 19, 18, 0, 20, 22, 24, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 115, 0, 147, 0, 145, 141, 143, + 192, 191, 166, 183, 0, 195, 193, 0, 179, 158, + 0, 64, 65, 66, 67, 63, 0, 0, 173, 169, + 171, 0, 93, 0, 95, 99, 7, 0, 14, 26, 11, 17, 23, 36, 37, 40, 39, 45, 46, 43, - 44, 48, 49, 54, 56, 58, 0, 0, 142, 0, - 0, 0, 186, 0, 156, 62, 69, 0, 94, 9, - 0, 144, 0, 178, 177, 180, 0, 169, 0, 0, - 0, 81, 60, 0, 179, 0, 0, 168, 166, 0, - 0, 157, 0, 181, 0, 0, 0, 159, 172, 158, - 0, 182, 176, 167, 170, 174 + 44, 48, 49, 54, 56, 58, 0, 139, 0, 0, + 144, 0, 0, 0, 0, 0, 194, 0, 160, 62, + 69, 0, 94, 9, 0, 0, 146, 0, 165, 167, + 186, 185, 188, 166, 177, 0, 0, 0, 81, 60, + 148, 0, 187, 0, 0, 176, 174, 0, 0, 161, + 0, 189, 0, 166, 0, 163, 180, 162, 0, 190, + 184, 175, 178, 182 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 98, 99, 100, 227, 101, 102, 103, 104, 105, - 106, 107, 142, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 143, 144, 216, 145, 122, - 146, 147, 32, 33, 34, 79, 60, 61, 80, 35, - 36, 37, 38, 123, 40, 41, 42, 43, 74, 75, - 127, 128, 166, 149, 150, 151, 152, 210, 270, 288, - 289, 153, 154, 155, 278, 269, 156, 253, 202, 250, - 265, 275, 276, 157, 44, 45, 46, 53 + 106, 107, 140, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 141, 142, 216, 143, 122, + 144, 145, 34, 35, 36, 79, 62, 63, 80, 37, + 38, 39, 40, 41, 42, 43, 123, 45, 125, 75, + 127, 128, 196, 197, 164, 147, 148, 149, 150, 210, + 277, 296, 251, 252, 253, 297, 151, 152, 153, 286, + 276, 154, 257, 202, 254, 272, 283, 284, 155, 46, + 47, 48, 55 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -250 +#define YYPACT_NINF -266 static const yytype_int16 yypact[] = { - 1225, 36, -250, -250, -250, 150, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, - -250, -250, -250, -250, -250, -33, -250, -250, -250, -250, - -250, -60, -22, -17, 21, -62, -250, 22, 1266, -250, - 1290, -250, 11, -250, 1138, -250, -250, -250, -250, 1290, - 14, 1266, -250, 27, -250, 34, 41, -250, -250, -250, - -250, 1266, 129, 61, -250, 17, -250, -250, 908, -250, - -250, 31, 1266, 72, 1042, -250, 283, -250, -250, -250, - -250, 90, 1266, -46, -250, 194, 908, 65, -250, -250, - -250, -250, 908, 908, 908, -250, -250, -250, -250, -250, - -40, -250, -250, -250, 80, -25, 975, 87, -250, 908, - 35, 13, -250, -26, 68, -250, -250, -250, 110, 109, - -54, -250, 96, -250, -250, 1083, 98, 33, -250, -250, - -250, 91, 92, -250, 104, 107, 99, 760, 108, 105, - -250, -250, 24, -250, -250, 37, -250, -60, 112, -250, - -250, -250, -250, 365, -250, -250, -250, -250, 111, -250, - -250, 827, 908, -250, 113, -250, -250, -250, -250, 4, - -250, -250, 908, 1179, -250, -250, 908, 114, -250, -250, - -250, 908, 908, 908, 908, 908, 908, 908, 908, 908, - 908, 908, 908, 908, 908, -250, -250, 908, 72, -250, - -250, -250, 447, -250, 908, -250, -250, 42, -250, -250, - 447, -250, -250, -250, -250, -250, 908, 908, -250, -250, - -250, 908, -250, 115, -250, -250, -250, 116, 117, -250, - 120, -250, -250, -250, -250, 35, 35, -250, -250, -250, - -250, -26, -26, -250, 110, 109, 51, 119, -250, 144, - 611, 23, -250, 693, 447, -250, -250, 122, -250, -250, - 908, -250, 123, -250, -250, 693, 447, 117, 153, 126, - 128, -250, -250, 908, -250, 127, 137, 171, -250, 130, - 529, -250, 28, 908, 529, 447, 908, -250, -250, -250, - 131, 117, -250, -250, -250, -250 + 1253, -20, -266, -266, -266, 148, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -39, -266, -266, -266, -266, + -266, -266, -266, -18, -2, 6, 21, -61, -266, 51, + 1296, -266, 1370, -266, 25, -266, 1209, -266, -266, -266, + -266, 1370, 42, -266, -266, 50, -266, 71, 95, -266, + -266, -266, -266, 1296, 123, 105, -266, 9, -266, -266, + 974, -266, -266, 81, -266, 1296, 290, -266, -266, -266, + -266, 125, 1296, -13, -266, 776, 974, 99, -266, -266, + -266, -266, 974, 974, 974, -266, -266, -266, -266, -266, + 35, -266, -266, -266, 100, -6, 1040, 104, -266, 974, + 36, -64, -266, -21, 102, -266, -266, -266, 113, 117, + -51, -266, 108, -266, -266, 1296, 129, 1109, -266, 97, + 103, -266, 112, 114, 106, 842, 115, 116, -266, -266, + 39, -266, -266, -43, -266, -18, 47, -266, -266, -266, + -266, 374, -266, -266, -266, -266, 118, -266, -266, 908, + 974, -266, 120, -266, -266, -266, -266, 19, -266, -266, + 974, 1333, -266, -266, 974, 119, -266, -266, -266, 974, + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, -266, 1152, 122, -29, -266, -266, -266, + -266, -266, 121, -266, 974, -266, -266, 5, -266, -266, + 458, -266, -266, -266, -266, -266, 974, 974, -266, -266, + -266, 974, -266, 137, -266, -266, -266, 138, 111, -266, + 142, -266, -266, -266, -266, 36, 36, -266, -266, -266, + -266, -21, -21, -266, 113, 117, 82, -266, 974, 129, + -266, 175, 50, 626, 710, 38, -266, 197, 458, -266, + -266, 141, -266, -266, 974, 155, -266, 145, -266, -266, + -266, -266, 197, 121, 111, 186, 159, 160, -266, -266, + -266, 974, -266, 166, 176, 236, -266, 174, 542, -266, + 43, 974, 542, 121, 974, -266, -266, -266, 177, 111, + -266, -266, -266, -266 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -250, -250, -250, -250, -250, -250, -250, 39, -250, -250, - -250, -250, -45, -250, -18, -250, -79, -30, -250, -250, - -250, 38, 52, 20, -250, -63, -85, -250, -92, -71, - 6, 9, -250, -250, -250, 132, 172, 166, 148, -250, - -250, -246, -21, 0, 226, -24, -250, -250, 162, -66, - -250, 45, -159, -3, -136, -249, -250, -250, -250, -36, - 196, 46, 1, -250, -250, -13, -250, -250, -250, -250, - -250, -250, -250, -250, -250, 211, -250, -250 + -266, -266, -266, -266, -266, -266, -266, 85, -266, -266, + -266, -266, -44, -266, -15, -266, -55, -19, -266, -266, + -266, 72, 70, 73, -266, -66, -83, -266, -92, -73, + 13, 14, -266, -266, -266, 180, 206, 201, 184, -266, + -266, -241, -25, -30, 262, -4, 0, -266, -266, -266, + 143, -122, -266, 22, -145, 16, -144, -226, -266, -266, + -266, -17, -265, -266, -266, -54, 63, 20, -266, -266, + 4, -266, -266, -266, -266, -266, -266, -266, -266, -266, + 231, -266, -266 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -76 +#define YYTABLE_NINF -165 static const yytype_int16 yytable[] = { - 39, 165, 169, 224, 193, 121, 30, 268, 130, 31, - 50, 170, 171, 62, 164, 63, 67, 220, 64, 268, - 52, 178, 121, 108, 56, 71, 161, 185, 186, 6, - 7, 287, 172, 162, 62, 287, 173, 56, 66, 194, - 108, 51, 6, 7, 39, 207, 175, 167, 168, 54, - 30, 73, 176, 31, 57, 58, 59, 23, 24, 130, - 55, 81, 187, 188, 180, 65, 249, 57, 58, 59, - 23, 24, 73, 47, 73, 226, 148, 165, 47, 48, - 228, 217, 81, 68, 211, 212, 213, 84, 72, 85, - 223, 232, -75, 214, 266, 183, 86, 184, 121, 290, - 217, 76, 246, 215, 83, 217, 237, 238, 239, 240, - 198, 124, 251, 199, 217, 126, 108, 218, 220, 217, - 181, 182, 252, 189, 190, 73, 247, 294, 217, 260, - 277, 255, 256, 158, 121, -26, 233, 234, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 293, - 257, 174, 108, 148, 2, 3, 4, 179, 121, 241, - 242, 267, 57, 58, 59, 235, 236, 191, 192, 195, - 197, 200, 201, 267, 203, 272, 108, 204, 208, 205, - 209, 282, -25, 221, 262, -20, 225, 285, 258, 259, - -27, 291, 261, 273, 217, 271, 279, 280, 2, 3, - 4, 165, 148, 281, 8, 9, 10, 283, 284, 286, - 148, 295, 231, 245, 159, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 78, 82, 243, - 160, 49, 25, 26, 125, 27, 28, 87, 29, 88, - 89, 90, 91, 248, 244, 92, 93, 263, 292, 77, - 148, 264, 274, 148, 148, 70, 254, 0, 0, 0, - 0, 0, 0, 0, 94, 148, 148, 163, 0, 0, - 0, 0, 0, 0, 0, 95, 96, 0, 97, 0, - 148, 0, 0, 0, 148, 148, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 131, 132, 133, 0, - 134, 135, 136, 137, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 0, 0, 0, 23, - 24, 25, 26, 138, 27, 28, 87, 29, 88, 89, - 90, 91, 0, 0, 92, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 94, 0, 0, 0, 139, 140, 0, - 0, 0, 0, 141, 95, 96, 0, 97, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 131, 132, - 133, 0, 134, 135, 136, 137, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 138, 27, 28, 87, 29, - 88, 89, 90, 91, 0, 0, 92, 93, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 94, 0, 0, 0, 139, - 219, 0, 0, 0, 0, 141, 95, 96, 0, 97, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 131, 132, 133, 0, 134, 135, 136, 137, 11, 12, + 44, 77, 167, 163, 121, 199, 52, 220, 285, 191, + 68, 64, 162, 32, 33, 224, 275, 49, 65, 121, + 181, 66, 182, 176, 58, 50, 108, 269, 301, 6, + 7, 275, 64, 81, 183, 184, 217, 53, 69, 218, + 44, 108, 44, 207, 192, 126, 44, 73, 165, 166, + 249, 44, 81, 250, 59, 60, 61, 23, 24, 32, + 33, 159, 295, 44, 54, 178, 295, 173, 160, 185, + 186, 56, 199, 174, 58, 44, 146, 163, 228, 6, + 7, 84, 44, 85, 217, 57, 223, 256, 168, 169, + 86, 232, 226, 121, -75, 126, 67, 126, 217, 70, + 246, 211, 212, 213, 59, 60, 61, 23, 24, 170, + 214, 273, 255, 171, 220, 108, 298, 217, 74, -25, + 215, 70, 217, 179, 180, 44, 76, 44, 237, 238, + 239, 240, 49, 259, 260, 233, 234, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, 261, 302, + 83, 146, 2, 3, 4, 121, 59, 60, 61, 187, + 188, 217, 264, 124, 126, 274, 235, 236, 241, 242, + 156, -26, 189, 172, 195, 265, 177, 108, 190, 200, + 274, 279, 121, 193, 203, 201, 204, 208, 205, 290, + 217, -116, 221, 209, 44, 225, 248, -164, 268, 299, + 58, 2, 3, 4, 108, 6, 7, 8, 9, 10, + 146, 163, 262, 263, -27, 267, 278, 281, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 0, 0, 0, 23, 24, 25, 26, 138, 27, 28, - 87, 29, 88, 89, 90, 91, 0, 0, 92, 93, + 280, 287, 288, 23, 24, 25, 26, 289, 27, 28, + 29, 30, 87, 31, 88, 89, 90, 91, 291, 292, + 92, 93, 293, 146, 146, 294, 231, 146, 146, 303, + 244, 243, 157, 78, 245, 82, 158, 51, 194, 94, + 270, 266, 146, 258, 271, 300, 282, 72, 0, 0, + 95, 96, 0, 97, 0, 0, 0, 0, 146, 0, + 0, 0, 146, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 129, 130, 131, 0, 132, 133, 134, + 135, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, + 136, 27, 28, 29, 30, 87, 31, 88, 89, 90, + 91, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, - 0, 139, 0, 0, 0, 0, 0, 141, 95, 96, - 0, 97, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 131, 132, 133, 0, 134, 135, 136, 137, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 0, 0, 0, 23, 24, 25, 26, 138, - 27, 28, 87, 29, 88, 89, 90, 91, 0, 0, - 92, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, - 0, 0, 0, 76, 0, 0, 0, 0, 0, 141, - 95, 96, 0, 97, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 0, 0, 0, 23, 24, 25, - 26, 0, 27, 28, 87, 29, 88, 89, 90, 91, - 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 141, 95, 96, 0, 97, 56, 2, 3, 4, - 0, 6, 7, 8, 9, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 0, 0, 0, 23, - 24, 25, 26, 0, 27, 28, 87, 29, 88, 89, - 90, 91, 0, 0, 92, 93, 0, 0, 0, 0, + 0, 0, 94, 0, 0, 0, 137, 138, 0, 0, + 0, 0, 139, 95, 96, 0, 97, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 129, 130, 131, + 0, 132, 133, 134, 135, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, + 23, 24, 25, 26, 136, 27, 28, 29, 30, 87, + 31, 88, 89, 90, 91, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 94, 2, 3, 4, 0, 0, 0, - 8, 9, 10, 0, 95, 96, 0, 97, 0, 0, - 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 0, 0, 0, 0, 0, 25, 26, - 0, 27, 28, 87, 29, 88, 89, 90, 91, 0, + 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, + 137, 219, 0, 0, 0, 0, 139, 95, 96, 0, + 97, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 129, 130, 131, 0, 132, 133, 134, 135, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 0, 0, 0, 23, 24, 25, 26, 136, 27, + 28, 29, 30, 87, 31, 88, 89, 90, 91, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 94, 2, 3, 4, 0, 0, 0, 8, 9, 10, - 206, 95, 96, 0, 97, 0, 0, 0, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 0, 0, 0, 0, 0, 25, 26, 0, 27, 28, - 87, 29, 88, 89, 90, 91, 0, 0, 92, 93, + 94, 0, 0, 0, 137, 0, 0, 0, 0, 0, + 139, 95, 96, 0, 97, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 129, 130, 131, 0, 132, + 133, 134, 135, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 0, 0, 0, 23, 24, + 25, 26, 136, 27, 28, 29, 30, 87, 31, 88, + 89, 90, 91, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, - 222, 0, 0, 0, 0, 0, 0, 0, 95, 96, - 0, 97, 2, 3, 4, 0, 0, 0, 8, 9, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 0, 0, 0, 0, 0, 25, 26, 0, 27, - 28, 87, 29, 88, 89, 90, 91, 0, 0, 92, + 0, 0, 0, 0, 94, 0, 0, 0, 76, 0, + 0, 0, 0, 0, 139, 95, 96, 0, 97, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 129, + 130, 131, 0, 132, 133, 134, 135, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 0, 0, 23, 24, 25, 26, 136, 27, 28, 29, + 30, 87, 31, 88, 89, 90, 91, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, - 3, 4, 0, 0, 0, 8, 9, 10, 0, 95, - 96, 0, 97, 0, 0, 0, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, - 0, 0, 0, 25, 177, 0, 27, 28, 87, 29, - 88, 89, 90, 91, 0, 0, 92, 93, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 139, 95, + 96, 0, 97, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 0, 0, 0, 23, 24, 25, 26, + 0, 27, 28, 29, 30, 87, 31, 88, 89, 90, + 91, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 94, 2, 3, 4, 0, - 0, 0, 8, 9, 10, 0, 95, 96, 0, 97, - 0, 0, 0, 11, 12, 13, 14, 15, 16, 17, + 0, 0, 94, 0, 0, 0, 8, 9, 10, 0, + 0, 0, 139, 95, 96, 0, 97, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 25, 26, 0, 27, 28, 29, + 30, 87, 31, 88, 89, 90, 91, 0, 0, 92, + 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, + 0, 161, 8, 9, 10, 0, 0, 0, 0, 95, + 96, 0, 97, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, - 25, 26, 0, 27, 28, 0, 29, 2, 3, 4, - 0, 0, 0, 8, 9, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 0, 129, 0, 0, - 0, 25, 26, 0, 27, 28, 0, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 0, 0, 0, 0, 0, 0, 0, 196, 11, + 25, 26, 0, 27, 28, 29, 30, 87, 31, 88, + 89, 90, 91, 0, 0, 92, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 0, 0, 0, 8, 9, + 10, 0, 0, 0, 206, 95, 96, 0, 97, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 0, 0, 0, 23, 24, 25, 26, 0, 27, - 28, 0, 29, 2, 3, 4, 0, 0, 0, 8, - 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 25, 26, 0, 27, + 28, 29, 30, 87, 31, 88, 89, 90, 91, 0, + 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 94, 0, 0, 222, 8, 9, 10, 0, 0, 0, + 0, 95, 96, 0, 97, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, + 0, 0, 25, 26, 0, 27, 28, 29, 30, 87, + 31, 88, 89, 90, 91, 0, 0, 92, 93, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, + 8, 9, 10, 0, 0, 0, 0, 95, 96, 0, + 97, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 0, 0, 0, 0, 0, 25, 175, + 0, 27, 28, 29, 30, 87, 31, 88, 89, 90, + 91, 0, 0, 92, 93, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 2, 3, 4, 0, 0, 0, 8, + 9, 10, 0, 95, 96, 0, 97, 0, 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 25, 26, 0, - 27, 28, 229, 29, 0, 0, 0, 230, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 0, 27, 28, 0, 29, + 27, 28, 29, 30, 0, 31, 2, 3, 4, 0, + 0, 0, 8, 9, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 0, 198, 0, 0, 0, + 25, 26, 0, 27, 28, 29, 30, 0, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 0, 0, 0, 0, 0, 0, 0, 247, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 0, 0, 0, 23, 24, 25, 26, 0, + 27, 28, 29, 30, 0, 31, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 0, 27, 28, 29, 30, 0, 31, 2, 3, 4, 0, 0, 0, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, - 8, 9, 10, 0, 25, 26, 0, 27, 28, 0, - 29, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 0, 0, 0, 25, 26, 0, 27, 28, 29, + 30, 0, 31, 8, 9, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, + 0, 25, 26, 0, 27, 28, 29, 30, 229, 31, + 8, 9, 10, 230, 0, 0, 0, 0, 0, 0, + 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 25, 26, - 0, 27, 28, 0, 29 + 0, 27, 28, 29, 30, 0, 31 }; static const yytype_int16 yycheck[] = { - 0, 86, 94, 162, 58, 68, 0, 253, 74, 0, - 43, 51, 52, 34, 85, 77, 40, 153, 80, 265, - 80, 106, 85, 68, 3, 49, 72, 53, 54, 8, - 9, 280, 72, 79, 55, 284, 76, 3, 38, 93, - 85, 74, 8, 9, 44, 137, 71, 92, 93, 71, - 44, 51, 77, 44, 33, 34, 35, 36, 37, 125, - 77, 61, 88, 89, 109, 43, 202, 33, 34, 35, - 36, 37, 72, 37, 74, 71, 76, 162, 37, 43, - 172, 77, 82, 72, 60, 61, 62, 70, 74, 72, - 161, 176, 71, 69, 71, 82, 79, 84, 161, 71, - 77, 74, 194, 79, 43, 77, 185, 186, 187, 188, - 77, 80, 204, 80, 77, 43, 161, 80, 254, 77, - 85, 86, 80, 55, 56, 125, 197, 286, 77, 78, - 266, 216, 217, 43, 197, 70, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 285, - 221, 71, 197, 153, 4, 5, 6, 70, 221, 189, - 190, 253, 33, 34, 35, 183, 184, 57, 59, 73, - 72, 80, 80, 265, 70, 260, 221, 70, 70, 80, - 75, 273, 70, 72, 40, 71, 73, 16, 73, 73, - 70, 283, 73, 70, 77, 73, 43, 71, 4, 5, - 6, 286, 202, 75, 10, 11, 12, 80, 71, 79, - 210, 80, 173, 193, 82, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 55, 62, 191, - 82, 5, 38, 39, 72, 41, 42, 43, 44, 45, - 46, 47, 48, 198, 192, 51, 52, 250, 284, 53, - 250, 250, 265, 253, 254, 44, 210, -1, -1, -1, - -1, -1, -1, -1, 70, 265, 266, 73, -1, -1, - -1, -1, -1, -1, -1, 81, 82, -1, 84, -1, - 280, -1, -1, -1, 284, 285, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, -1, -1, 51, 52, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, -1, -1, -1, 74, 75, -1, - -1, -1, -1, 80, 81, 82, -1, 84, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, - -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, -1, -1, 51, 52, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 70, -1, -1, -1, 74, - 75, -1, -1, -1, -1, 80, 81, 82, -1, 84, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, -1, 17, 18, 19, 20, 21, 22, + 0, 55, 94, 86, 70, 127, 45, 151, 273, 60, + 40, 36, 85, 0, 0, 160, 257, 37, 79, 85, + 84, 82, 86, 106, 3, 45, 70, 253, 293, 8, + 9, 272, 57, 63, 55, 56, 79, 76, 42, 82, + 40, 85, 42, 135, 95, 75, 46, 51, 92, 93, + 79, 51, 82, 82, 33, 34, 35, 36, 37, 46, + 46, 74, 288, 63, 82, 109, 292, 73, 81, 90, + 91, 73, 194, 79, 3, 75, 76, 160, 170, 8, + 9, 72, 82, 74, 79, 79, 159, 82, 53, 54, + 81, 174, 73, 159, 73, 125, 45, 127, 79, 74, + 192, 62, 63, 64, 33, 34, 35, 36, 37, 74, + 71, 73, 204, 78, 258, 159, 73, 79, 76, 72, + 81, 74, 79, 87, 88, 125, 76, 127, 183, 184, + 185, 186, 37, 216, 217, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 221, 294, + 45, 151, 4, 5, 6, 221, 33, 34, 35, 57, + 58, 79, 80, 82, 194, 257, 181, 182, 187, 188, + 45, 72, 59, 73, 45, 248, 72, 221, 61, 82, + 272, 264, 248, 75, 72, 82, 72, 72, 82, 281, + 79, 72, 74, 77, 194, 75, 74, 76, 252, 291, + 3, 4, 5, 6, 248, 8, 9, 10, 11, 12, + 210, 294, 75, 75, 72, 40, 75, 72, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - -1, -1, -1, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, -1, -1, 51, 52, + 75, 45, 73, 36, 37, 38, 39, 77, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 82, 73, + 53, 54, 16, 253, 254, 81, 171, 257, 258, 82, + 190, 189, 82, 57, 191, 64, 82, 5, 125, 72, + 254, 249, 272, 210, 254, 292, 272, 46, -1, -1, + 83, 84, -1, 86, -1, -1, -1, -1, 288, -1, + -1, -1, 292, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, -1, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, -1, -1, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, -1, -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, - -1, 74, -1, -1, -1, -1, -1, 80, 81, 82, - -1, 84, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, -1, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, -1, -1, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, -1, -1, - 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - -1, -1, -1, 74, -1, -1, -1, -1, -1, 80, - 81, 82, -1, 84, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, -1, -1, 36, 37, 38, - 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, - -1, -1, 51, 52, -1, -1, -1, -1, -1, -1, + -1, -1, 72, -1, -1, -1, 76, 77, -1, -1, + -1, -1, 82, 83, 84, -1, 86, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, -1, -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 80, 81, 82, -1, 84, 3, 4, 5, 6, - -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, - -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, - 37, 38, 39, -1, 41, 42, 43, 44, 45, 46, - 47, 48, -1, -1, 51, 52, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, + 76, 77, -1, -1, -1, -1, 82, 83, 84, -1, + 86, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, -1, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, -1, -1, -1, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, + -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, + 82, 83, 84, -1, 86, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, -1, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, -1, -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 4, 5, 6, -1, -1, -1, - 10, 11, 12, -1, 81, 82, -1, 84, -1, -1, + -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, + -1, -1, -1, -1, 82, 83, 84, -1, 86, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, -1, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + -1, -1, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, -1, -1, 53, + 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, + 84, -1, 86, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, - -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, - -1, 51, 52, -1, -1, -1, -1, -1, -1, -1, + 30, 31, 32, -1, -1, -1, 36, 37, 38, 39, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, -1, -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 4, 5, 6, -1, -1, -1, 10, 11, 12, - 80, 81, 82, -1, 84, -1, -1, -1, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - -1, -1, -1, -1, -1, 38, 39, -1, 41, 42, - 43, 44, 45, 46, 47, 48, -1, -1, 51, 52, + -1, -1, 72, -1, -1, -1, 10, 11, 12, -1, + -1, -1, 82, 83, 84, -1, 86, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, -1, -1, 53, + 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, + -1, 75, 10, 11, 12, -1, -1, -1, -1, 83, + 84, -1, 86, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, + 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, -1, -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, - 73, -1, -1, -1, -1, -1, -1, -1, 81, 82, - -1, 84, 4, 5, 6, -1, -1, -1, 10, 11, - 12, -1, -1, -1, -1, -1, -1, -1, -1, 21, + -1, -1, -1, -1, 72, -1, -1, -1, 10, 11, + 12, -1, -1, -1, 82, 83, 84, -1, 86, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, -1, 41, - 42, 43, 44, 45, 46, 47, 48, -1, -1, 51, - 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 4, - 5, 6, -1, -1, -1, 10, 11, 12, -1, 81, - 82, -1, 84, -1, -1, -1, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, - -1, -1, -1, 38, 39, -1, 41, 42, 43, 44, - 45, 46, 47, 48, -1, -1, 51, 52, -1, -1, + 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, + -1, 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 70, 4, 5, 6, -1, - -1, -1, 10, 11, 12, -1, 81, 82, -1, 84, - -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, - 38, 39, -1, 41, 42, -1, 44, 4, 5, 6, - -1, -1, -1, 10, 11, 12, -1, -1, -1, -1, - -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 75, -1, -1, - -1, 38, 39, -1, 41, 42, -1, 44, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, -1, -1, -1, -1, -1, -1, -1, 75, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, -1, -1, 36, 37, 38, 39, -1, 41, - 42, -1, 44, 4, 5, 6, -1, -1, -1, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + 72, -1, -1, 75, 10, 11, 12, -1, -1, -1, + -1, 83, 84, -1, 86, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, -1, -1, 53, 54, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, + 10, 11, 12, -1, -1, -1, -1, 83, 84, -1, + 86, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, -1, -1, 53, 54, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 72, 4, 5, 6, -1, -1, -1, 10, + 11, 12, -1, 83, 84, -1, 86, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, -1, - 41, 42, 43, 44, -1, -1, -1, 48, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, - -1, 36, 37, 38, 39, -1, 41, 42, -1, 44, + 41, 42, 43, 44, -1, 46, 4, 5, 6, -1, + -1, -1, 10, 11, 12, -1, -1, -1, -1, -1, + -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, 77, -1, -1, -1, + 38, 39, -1, 41, 42, 43, 44, -1, 46, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, -1, 77, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, -1, -1, 36, 37, 38, 39, -1, + 41, 42, 43, 44, -1, 46, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, + 37, 38, 39, -1, 41, 42, 43, 44, -1, 46, 4, 5, 6, -1, -1, -1, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 10, 11, 12, -1, 38, 39, -1, 41, 42, -1, - 44, 21, 22, 23, 24, 25, 26, 27, 28, 29, + -1, -1, -1, -1, 38, 39, -1, 41, 42, 43, + 44, -1, 46, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, + -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, + 10, 11, 12, 50, -1, -1, -1, -1, -1, -1, + -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, 38, 39, - -1, 41, 42, -1, 44 + -1, 41, 42, 43, 44, -1, 46 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1260,34 +1302,35 @@ static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 36, 37, 38, 39, 41, 42, 44, - 124, 125, 126, 127, 128, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 168, 169, 170, 37, 43, 138, - 43, 74, 80, 171, 71, 77, 3, 33, 34, 35, - 130, 131, 136, 77, 80, 43, 137, 139, 72, 0, - 169, 139, 74, 137, 142, 143, 74, 154, 130, 129, - 132, 137, 131, 43, 70, 72, 79, 43, 45, 46, - 47, 48, 51, 52, 70, 81, 82, 84, 95, 96, - 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 123, 137, 80, 142, 43, 144, 145, 75, - 143, 13, 14, 15, 17, 18, 19, 20, 40, 74, - 75, 80, 106, 119, 120, 122, 124, 125, 137, 147, - 148, 149, 150, 155, 156, 157, 160, 167, 43, 129, - 132, 72, 79, 73, 123, 120, 146, 106, 106, 122, - 51, 52, 72, 76, 71, 71, 77, 39, 120, 70, - 106, 85, 86, 82, 84, 53, 54, 88, 89, 55, - 56, 57, 59, 58, 93, 73, 75, 72, 77, 80, - 80, 80, 162, 70, 70, 80, 80, 122, 70, 75, - 151, 60, 61, 62, 69, 79, 121, 77, 80, 75, - 148, 72, 73, 123, 146, 73, 71, 98, 122, 43, - 48, 101, 120, 106, 106, 108, 108, 110, 110, 110, - 110, 111, 111, 115, 116, 117, 122, 123, 145, 148, - 163, 122, 80, 161, 155, 120, 120, 123, 73, 73, - 78, 73, 40, 147, 156, 164, 71, 122, 135, 159, - 152, 73, 120, 70, 159, 165, 166, 148, 158, 43, - 71, 75, 122, 80, 71, 16, 79, 149, 153, 154, - 71, 122, 153, 148, 146, 80 + 30, 31, 32, 36, 37, 38, 39, 41, 42, 43, + 44, 46, 126, 127, 128, 129, 130, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 175, 176, 177, 37, + 45, 140, 45, 76, 82, 178, 73, 79, 3, 33, + 34, 35, 132, 133, 138, 79, 82, 45, 139, 141, + 74, 0, 176, 141, 76, 145, 76, 161, 132, 131, + 134, 139, 133, 45, 72, 74, 81, 45, 47, 48, + 49, 50, 53, 54, 72, 83, 84, 86, 97, 98, + 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 125, 142, 82, 144, 139, 146, 147, 13, + 14, 15, 17, 18, 19, 20, 40, 76, 77, 82, + 108, 121, 122, 124, 126, 127, 142, 151, 152, 153, + 154, 162, 163, 164, 167, 174, 45, 131, 134, 74, + 81, 75, 125, 122, 150, 108, 108, 124, 53, 54, + 74, 78, 73, 73, 79, 39, 122, 72, 108, 87, + 88, 84, 86, 55, 56, 90, 91, 57, 58, 59, + 61, 60, 95, 75, 146, 45, 148, 149, 77, 147, + 82, 82, 169, 72, 72, 82, 82, 124, 72, 77, + 155, 62, 63, 64, 71, 81, 123, 79, 82, 77, + 152, 74, 75, 125, 150, 75, 73, 100, 124, 45, + 50, 103, 122, 108, 108, 110, 110, 112, 112, 112, + 112, 113, 113, 117, 118, 119, 124, 77, 74, 79, + 82, 158, 159, 160, 170, 124, 82, 168, 162, 122, + 122, 125, 75, 75, 80, 125, 149, 40, 161, 153, + 151, 163, 171, 73, 124, 137, 166, 156, 75, 122, + 75, 72, 166, 172, 173, 158, 165, 45, 73, 77, + 124, 82, 73, 16, 81, 153, 157, 161, 73, 124, + 157, 158, 150, 82 }; #define yyerrok (yyerrstatus = 0) @@ -1361,7 +1404,7 @@ while (YYID (0)) we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ @@ -2614,13 +2657,6 @@ yyreduce: // // Constructor // - if ((yyvsp[(1) - (1)].interm.type).array) { - // Constructors for arrays are not allowed. - context->error((yyvsp[(1) - (1)].interm.type).line, "cannot construct this type", "array", ""); - context->recover(); - (yyvsp[(1) - (1)].interm.type).setArray(false); - } - TOperator op = EOpNull; if ((yyvsp[(1) - (1)].interm.type).userDef) { op = EOpConstructStruct; @@ -3119,6 +3155,8 @@ yyreduce: prototype->setOp(EOpPrototype); (yyval.interm.intermNode) = prototype; + + context->symbolTable.pop(); ;} break; @@ -3172,7 +3210,9 @@ yyreduce: (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); (yyval.interm).line = (yyvsp[(2) - (2)].lex).line; - context->symbolTable.insert(*(yyval.interm).function); + // We're at the inner scope level of the function's arguments and body statement. + // Add the function prototype to the surrounding scope instead. + context->symbolTable.getOuterLevel()->insert(*(yyval.interm).function); ;} break; @@ -3240,6 +3280,8 @@ yyreduce: TType type((yyvsp[(1) - (3)].interm.type)); function = new TFunction((yyvsp[(2) - (3)].lex).string, type); (yyval.interm.function) = function; + + context->symbolTable.push(); ;} break; @@ -3360,20 +3402,20 @@ yyreduce: { (yyval.interm) = (yyvsp[(1) - (1)].interm); - - if ((yyval.interm).type.precision == EbpUndefined) { - (yyval.interm).type.precision = context->symbolTable.getDefaultPrecision((yyvsp[(1) - (1)].interm).type.type); - if (context->precisionErrorCheck((yyvsp[(1) - (1)].interm).line, (yyval.interm).type.precision, (yyvsp[(1) - (1)].interm).type.type)) { - context->recover(); - } - } ;} break; case 92: { - (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, context->intermediate.addSymbol(0, *(yyvsp[(3) - (3)].lex).string, TType((yyvsp[(1) - (3)].interm).type), (yyvsp[(3) - (3)].lex).line), (yyvsp[(3) - (3)].lex).line); + if ((yyvsp[(1) - (3)].interm).type.type == EbtInvariant && !(yyvsp[(3) - (3)].lex).symbol) + { + context->error((yyvsp[(3) - (3)].lex).line, "undeclared identifier declared as invariant", (yyvsp[(3) - (3)].lex).string->c_str(), ""); + context->recover(); + } + + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(3) - (3)].lex).string, TType((yyvsp[(1) - (3)].interm).type), (yyvsp[(3) - (3)].lex).line); + (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, symbol, (yyvsp[(3) - (3)].lex).line); if (context->structQualifierErrorCheck((yyvsp[(3) - (3)].lex).line, (yyval.interm).type)) context->recover(); @@ -3381,8 +3423,11 @@ yyreduce: if (context->nonInitConstErrorCheck((yyvsp[(3) - (3)].lex).line, *(yyvsp[(3) - (3)].lex).string, (yyval.interm).type)) context->recover(); - if (context->nonInitErrorCheck((yyvsp[(3) - (3)].lex).line, *(yyvsp[(3) - (3)].lex).string, (yyval.interm).type)) + TVariable* variable = 0; + if (context->nonInitErrorCheck((yyvsp[(3) - (3)].lex).line, *(yyvsp[(3) - (3)].lex).string, (yyval.interm).type, variable)) context->recover(); + if (symbol && variable) + symbol->setId(variable->getUniqueId()); ;} break; @@ -3426,12 +3471,12 @@ yyreduce: if (context->arraySizeErrorCheck((yyvsp[(4) - (6)].lex).line, (yyvsp[(5) - (6)].interm.intermTypedNode), size)) context->recover(); (yyvsp[(1) - (6)].interm).type.setArray(true, size); - TVariable* variable; + TVariable* variable = 0; if (context->arrayErrorCheck((yyvsp[(4) - (6)].lex).line, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, variable)) context->recover(); TType type = TType((yyvsp[(1) - (6)].interm).type); type.setArraySize(size); - (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, context->intermediate.addSymbol(0, *(yyvsp[(3) - (6)].lex).string, type, (yyvsp[(3) - (6)].lex).line), (yyvsp[(3) - (6)].lex).line); + (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, context->intermediate.addSymbol(variable ? variable->getUniqueId() : 0, *(yyvsp[(3) - (6)].lex).string, type, (yyvsp[(3) - (6)].lex).line), (yyvsp[(3) - (6)].lex).line); } ;} break; @@ -3471,7 +3516,8 @@ yyreduce: case 97: { - (yyval.interm).intermAggregate = context->intermediate.makeAggregate(context->intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyvsp[(1) - (2)].interm.type)), (yyvsp[(2) - (2)].lex).line), (yyvsp[(2) - (2)].lex).line); + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyvsp[(1) - (2)].interm.type)), (yyvsp[(2) - (2)].lex).line); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yyvsp[(2) - (2)].lex).line); if (context->structQualifierErrorCheck((yyvsp[(2) - (2)].lex).line, (yyval.interm).type)) context->recover(); @@ -3481,32 +3527,23 @@ yyreduce: (yyval.interm).type = (yyvsp[(1) - (2)].interm.type); - if (context->nonInitErrorCheck((yyvsp[(2) - (2)].lex).line, *(yyvsp[(2) - (2)].lex).string, (yyval.interm).type)) + TVariable* variable = 0; + if (context->nonInitErrorCheck((yyvsp[(2) - (2)].lex).line, *(yyvsp[(2) - (2)].lex).string, (yyval.interm).type, variable)) context->recover(); + if (variable && symbol) + symbol->setId(variable->getUniqueId()); ;} break; case 98: { - (yyval.interm).intermAggregate = context->intermediate.makeAggregate(context->intermediate.addSymbol(0, *(yyvsp[(2) - (4)].lex).string, TType((yyvsp[(1) - (4)].interm.type)), (yyvsp[(2) - (4)].lex).line), (yyvsp[(2) - (4)].lex).line); - - if (context->structQualifierErrorCheck((yyvsp[(2) - (4)].lex).line, (yyvsp[(1) - (4)].interm.type))) - context->recover(); - - if (context->nonInitConstErrorCheck((yyvsp[(2) - (4)].lex).line, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type))) - context->recover(); + context->error((yyvsp[(2) - (4)].lex).line, "unsized array declarations not supported", (yyvsp[(2) - (4)].lex).string->c_str(), ""); + context->recover(); + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (4)].lex).string, TType((yyvsp[(1) - (4)].interm.type)), (yyvsp[(2) - (4)].lex).line); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yyvsp[(2) - (4)].lex).line); (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); - - if (context->arrayTypeErrorCheck((yyvsp[(3) - (4)].lex).line, (yyvsp[(1) - (4)].interm.type)) || context->arrayQualifierErrorCheck((yyvsp[(3) - (4)].lex).line, (yyvsp[(1) - (4)].interm.type))) - context->recover(); - else { - (yyvsp[(1) - (4)].interm.type).setArray(true); - TVariable* variable; - if (context->arrayErrorCheck((yyvsp[(3) - (4)].lex).line, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), variable)) - context->recover(); - } ;} break; @@ -3518,7 +3555,8 @@ yyreduce: if (context->arraySizeErrorCheck((yyvsp[(2) - (5)].lex).line, (yyvsp[(4) - (5)].interm.intermTypedNode), size)) context->recover(); type.setArraySize(size); - (yyval.interm).intermAggregate = context->intermediate.makeAggregate(context->intermediate.addSymbol(0, *(yyvsp[(2) - (5)].lex).string, type, (yyvsp[(2) - (5)].lex).line), (yyvsp[(2) - (5)].lex).line); + TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (5)].lex).string, type, (yyvsp[(2) - (5)].lex).line); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yyvsp[(2) - (5)].lex).line); if (context->structQualifierErrorCheck((yyvsp[(2) - (5)].lex).line, (yyvsp[(1) - (5)].interm.type))) context->recover(); @@ -3536,9 +3574,11 @@ yyreduce: context->recover(); (yyvsp[(1) - (5)].interm.type).setArray(true, size); - TVariable* variable; + TVariable* variable = 0; if (context->arrayErrorCheck((yyvsp[(3) - (5)].lex).line, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), variable)) context->recover(); + if (variable && symbol) + symbol->setId(variable->getUniqueId()); } ;} break; @@ -3571,8 +3611,21 @@ yyreduce: { VERTEX_ONLY("invariant declaration", (yyvsp[(1) - (2)].lex).line); - (yyval.interm).qualifier = EvqInvariantVaryingOut; - (yyval.interm).intermAggregate = 0; + if (context->globalErrorCheck((yyvsp[(1) - (2)].lex).line, context->symbolTable.atGlobalLevel(), "invariant varying")) + context->recover(); + (yyval.interm).type.setBasic(EbtInvariant, EvqInvariantVaryingOut, (yyvsp[(2) - (2)].lex).line); + if (!(yyvsp[(2) - (2)].lex).symbol) + { + context->error((yyvsp[(2) - (2)].lex).line, "undeclared identifier declared as invariant", (yyvsp[(2) - (2)].lex).string->c_str(), ""); + context->recover(); + + (yyval.interm).intermAggregate = 0; + } + else + { + TIntermSymbol *symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyval.interm).type), (yyvsp[(2) - (2)].lex).line); + (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yyvsp[(2) - (2)].lex).line); + } ;} break; @@ -3667,6 +3720,13 @@ yyreduce: { (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + + if ((yyval.interm.type).precision == EbpUndefined) { + (yyval.interm.type).precision = context->symbolTable.getDefaultPrecision((yyvsp[(1) - (1)].interm.type).type); + if (context->precisionErrorCheck((yyvsp[(1) - (1)].interm.type).line, (yyval.interm.type).precision, (yyvsp[(1) - (1)].interm.type).type)) { + context->recover(); + } + } ;} break; @@ -3886,13 +3946,39 @@ yyreduce: case 134: { + if (!context->supportsExtension("GL_OES_EGL_image_external")) { + context->error((yyvsp[(1) - (1)].lex).line, "unsupported type", "samplerExternalOES", ""); + context->recover(); + } + FRAG_VERT_ONLY("samplerExternalOES", (yyvsp[(1) - (1)].lex).line); + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtSamplerExternalOES, qual, (yyvsp[(1) - (1)].lex).line); + ;} + break; + + case 135: + + { + if (!context->supportsExtension("GL_ARB_texture_rectangle")) { + context->error((yyvsp[(1) - (1)].lex).line, "unsupported type", "sampler2DRect", ""); + context->recover(); + } + FRAG_VERT_ONLY("sampler2DRect", (yyvsp[(1) - (1)].lex).line); + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtSampler2DRect, qual, (yyvsp[(1) - (1)].lex).line); + ;} + break; + + case 136: + + { FRAG_VERT_ONLY("struct", (yyvsp[(1) - (1)].interm.type).line); (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; ;} break; - case 135: + case 137: { // @@ -3906,40 +3992,52 @@ yyreduce: ;} break; - case 136: + case 138: + + { if (context->enterStructDeclaration((yyvsp[(2) - (3)].lex).line, *(yyvsp[(2) - (3)].lex).string)) context->recover(); ;} + break; + + case 139: { - if (context->reservedErrorCheck((yyvsp[(2) - (5)].lex).line, *(yyvsp[(2) - (5)].lex).string)) + if (context->reservedErrorCheck((yyvsp[(2) - (6)].lex).line, *(yyvsp[(2) - (6)].lex).string)) context->recover(); - TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), *(yyvsp[(2) - (5)].lex).string); - TVariable* userTypeDef = new TVariable((yyvsp[(2) - (5)].lex).string, *structure, true); + TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string); + TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true); if (! context->symbolTable.insert(*userTypeDef)) { - context->error((yyvsp[(2) - (5)].lex).line, "redefinition", (yyvsp[(2) - (5)].lex).string->c_str(), "struct"); + context->error((yyvsp[(2) - (6)].lex).line, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct"); context->recover(); } - (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yyvsp[(1) - (5)].lex).line); + (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yyvsp[(1) - (6)].lex).line); (yyval.interm.type).userDef = structure; + context->exitStructDeclaration(); ;} break; - case 137: + case 140: + + { if (context->enterStructDeclaration((yyvsp[(2) - (2)].lex).line, *(yyvsp[(2) - (2)].lex).string)) context->recover(); ;} + break; + + case 141: { - TType* structure = new TType((yyvsp[(3) - (4)].interm.typeList), TString("")); - (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yyvsp[(1) - (4)].lex).line); + TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString("")); + (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yyvsp[(1) - (5)].lex).line); (yyval.interm.type).userDef = structure; + context->exitStructDeclaration(); ;} break; - case 138: + case 142: { (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList); ;} break; - case 139: + case 143: { (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList); @@ -3955,7 +4053,7 @@ yyreduce: ;} break; - case 140: + case 144: { (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList); @@ -3971,6 +4069,7 @@ yyreduce: type->setBasicType((yyvsp[(1) - (3)].interm.type).type); type->setNominalSize((yyvsp[(1) - (3)].interm.type).size); type->setMatrix((yyvsp[(1) - (3)].interm.type).matrix); + type->setPrecision((yyvsp[(1) - (3)].interm.type).precision); // don't allow arrays of arrays if (type->isArray()) { @@ -3983,11 +4082,15 @@ yyreduce: type->setStruct((yyvsp[(1) - (3)].interm.type).userDef->getStruct()); type->setTypeName((yyvsp[(1) - (3)].interm.type).userDef->getTypeName()); } + + if (context->structNestingErrorCheck((yyvsp[(1) - (3)].interm.type).line, *type)) { + context->recover(); + } } ;} break; - case 141: + case 145: { (yyval.interm.typeList) = NewPoolTTypeList(); @@ -3995,14 +4098,14 @@ yyreduce: ;} break; - case 142: + case 146: { (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine)); ;} break; - case 143: + case 147: { if (context->reservedErrorCheck((yyvsp[(1) - (1)].lex).line, *(yyvsp[(1) - (1)].lex).string)) @@ -4014,7 +4117,7 @@ yyreduce: ;} break; - case 144: + case 148: { if (context->reservedErrorCheck((yyvsp[(1) - (4)].lex).line, *(yyvsp[(1) - (4)].lex).string)) @@ -4031,126 +4134,150 @@ yyreduce: ;} break; - case 145: + case 149: { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} break; - case 146: + case 150: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 147: + case 151: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); ;} break; - case 148: + case 152: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 149: + case 153: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 150: + case 154: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 151: + case 155: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 152: + case 156: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 153: + case 157: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 154: + case 158: { (yyval.interm.intermAggregate) = 0; ;} break; - case 155: + case 159: { context->symbolTable.push(); ;} break; - case 156: + case 160: { context->symbolTable.pop(); ;} break; - case 157: + case 161: { - if ((yyvsp[(3) - (5)].interm.intermAggregate) != 0) + if ((yyvsp[(3) - (5)].interm.intermAggregate) != 0) { (yyvsp[(3) - (5)].interm.intermAggregate)->setOp(EOpSequence); + (yyvsp[(3) - (5)].interm.intermAggregate)->setEndLine((yyvsp[(5) - (5)].lex).line); + } (yyval.interm.intermAggregate) = (yyvsp[(3) - (5)].interm.intermAggregate); ;} break; - case 158: + case 162: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 159: + case 163: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 160: + case 164: + + { context->symbolTable.push(); ;} + break; + + case 165: + + { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;} + break; + + case 166: + + { context->symbolTable.push(); ;} + break; + + case 167: + + { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;} + break; + + case 168: { (yyval.interm.intermNode) = 0; ;} break; - case 161: + case 169: { - if ((yyvsp[(2) - (3)].interm.intermAggregate)) + if ((yyvsp[(2) - (3)].interm.intermAggregate)) { (yyvsp[(2) - (3)].interm.intermAggregate)->setOp(EOpSequence); + (yyvsp[(2) - (3)].interm.intermAggregate)->setEndLine((yyvsp[(3) - (3)].lex).line); + } (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermAggregate); ;} break; - case 162: + case 170: { (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), 0); ;} break; - case 163: + case 171: { (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), 0); ;} break; - case 164: + case 172: { (yyval.interm.intermNode) = 0; ;} break; - case 165: + case 173: { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); ;} break; - case 166: + case 174: { if (context->boolErrorCheck((yyvsp[(1) - (5)].lex).line, (yyvsp[(3) - (5)].interm.intermTypedNode))) @@ -4159,7 +4286,7 @@ yyreduce: ;} break; - case 167: + case 175: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode); @@ -4167,7 +4294,7 @@ yyreduce: ;} break; - case 168: + case 176: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode); @@ -4175,7 +4302,7 @@ yyreduce: ;} break; - case 169: + case 177: { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); @@ -4184,7 +4311,7 @@ yyreduce: ;} break; - case 170: + case 178: { TIntermNode* intermNode; @@ -4202,12 +4329,12 @@ yyreduce: ;} break; - case 171: + case 179: { context->symbolTable.push(); ++context->loopNestingLevel; ;} break; - case 172: + case 180: { context->symbolTable.pop(); @@ -4216,12 +4343,12 @@ yyreduce: ;} break; - case 173: + case 181: { ++context->loopNestingLevel; ;} break; - case 174: + case 182: { if (context->boolErrorCheck((yyvsp[(8) - (8)].lex).line, (yyvsp[(6) - (8)].interm.intermTypedNode))) @@ -4232,12 +4359,12 @@ yyreduce: ;} break; - case 175: + case 183: { context->symbolTable.push(); ++context->loopNestingLevel; ;} break; - case 176: + case 184: { context->symbolTable.pop(); @@ -4246,35 +4373,35 @@ yyreduce: ;} break; - case 177: + case 185: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 178: + case 186: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 179: + case 187: { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;} break; - case 180: + case 188: { (yyval.interm.intermTypedNode) = 0; ;} break; - case 181: + case 189: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode); @@ -4282,7 +4409,7 @@ yyreduce: ;} break; - case 182: + case 190: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode); @@ -4290,7 +4417,7 @@ yyreduce: ;} break; - case 183: + case 191: { if (context->loopNestingLevel <= 0) { @@ -4301,7 +4428,7 @@ yyreduce: ;} break; - case 184: + case 192: { if (context->loopNestingLevel <= 0) { @@ -4312,7 +4439,7 @@ yyreduce: ;} break; - case 185: + case 193: { (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).line); @@ -4323,7 +4450,7 @@ yyreduce: ;} break; - case 186: + case 194: { (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).line); @@ -4338,7 +4465,7 @@ yyreduce: ;} break; - case 187: + case 195: { FRAG_ONLY("discard", (yyvsp[(1) - (2)].lex).line); @@ -4346,7 +4473,7 @@ yyreduce: ;} break; - case 188: + case 196: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); @@ -4354,7 +4481,7 @@ yyreduce: ;} break; - case 189: + case 197: { (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0); @@ -4362,21 +4489,21 @@ yyreduce: ;} break; - case 190: + case 198: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 191: + case 199: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;} break; - case 192: + case 200: { TFunction* function = (yyvsp[(1) - (1)].interm).function; @@ -4410,11 +4537,6 @@ yyreduce: } // - // New symbol table scope for body of function plus its arguments - // - context->symbolTable.push(); - - // // Remember the return type for later checking for RETURN statements. // context->currentFunctionType = &(prevDec->getReturnType()); @@ -4461,7 +4583,7 @@ yyreduce: ;} break; - case 193: + case 201: { //?? Check that all paths return a value if return type != void ? @@ -4470,7 +4592,7 @@ yyreduce: context->error((yyvsp[(1) - (3)].interm).line, "function does not return a value:", "", (yyvsp[(1) - (3)].interm).function->getName().c_str()); context->recover(); } - context->symbolTable.pop(); + (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermAggregate, (yyvsp[(3) - (3)].interm.intermNode), 0); context->intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[(1) - (3)].interm).line); (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).function->getMangledName().c_str()); @@ -4481,6 +4603,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setOptimize(context->contextPragma.optimize); (yyval.interm.intermNode)->getAsAggregate()->setDebug(context->contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(context->contextPragma.pragmaTable); + + if ((yyvsp[(3) - (3)].interm.intermNode) && (yyvsp[(3) - (3)].interm.intermNode)->getAsAggregate()) + (yyval.interm.intermNode)->getAsAggregate()->setEndLine((yyvsp[(3) - (3)].interm.intermNode)->getAsAggregate()->getEndLine()); + + context->symbolTable.pop(); ;} break; |