diff --git a/RetailCoder.VBE/Common/DeclarationExtensions.cs b/RetailCoder.VBE/Common/DeclarationExtensions.cs index 772cc51e64..fb95892230 100644 --- a/RetailCoder.VBE/Common/DeclarationExtensions.cs +++ b/RetailCoder.VBE/Common/DeclarationExtensions.cs @@ -415,9 +415,11 @@ public static Declaration FindTarget(this IEnumerable declarations, { var items = declarations.ToList(); + // TODO: Due to the new binding mechanism this can have more than one match (e.g. in the case of index expressions + simple name expressions) + // Left as is for now because the binding is not fully integrated yet. var target = items .Where(item => !item.IsBuiltIn && validDeclarationTypes.Contains(item.DeclarationType)) - .SingleOrDefault(item => item.IsSelected(selection) + .FirstOrDefault(item => item.IsSelected(selection) || item.References.Any(r => r.IsSelected(selection))); if (target != null) diff --git a/RetailCoder.VBE/Common/DeclarationIconCache.cs b/RetailCoder.VBE/Common/DeclarationIconCache.cs index 18f0c11b8e..203b831f57 100644 --- a/RetailCoder.VBE/Common/DeclarationIconCache.cs +++ b/RetailCoder.VBE/Common/DeclarationIconCache.cs @@ -159,7 +159,7 @@ private static Uri GetIconUri(DeclarationType declarationType, Accessibility acc path = "VSObject_Enum.png"; break; - case DeclarationType.EnumerationMember | DeclarationType.Constant: + case DeclarationType.EnumerationMember: path = "VSObject_EnumItem.png"; break; @@ -193,7 +193,7 @@ private static Uri GetIconUri(DeclarationType declarationType, Accessibility acc path = "VSObject_ValueType.png"; break; - case DeclarationType.UserDefinedTypeMember | DeclarationType.Variable: + case DeclarationType.UserDefinedTypeMember: path = "VSObject_Field.png"; break; diff --git a/RetailCoder.VBE/Common/RubberduckHooks.cs b/RetailCoder.VBE/Common/RubberduckHooks.cs index c57c8c432e..c68fc89bd1 100644 --- a/RetailCoder.VBE/Common/RubberduckHooks.cs +++ b/RetailCoder.VBE/Common/RubberduckHooks.cs @@ -45,8 +45,7 @@ public void HookHotkeys() var config = _config.LoadConfiguration(); var settings = config.UserSettings.GeneralSettings.HotkeySettings; - _rawinput = new RawInput(_mainWindowHandle, true); - _rawinput.AddMessageFilter(); + _rawinput = new RawInput(_mainWindowHandle); var kb = (RawKeyboard)_rawinput.CreateKeyboard(); _rawinput.AddDevice(kb); @@ -69,7 +68,7 @@ private void Mouse_RawMouseInputReceived(object sender, RawMouseEventArgs e) { if (e.UlButtons.HasFlag(UsButtonFlags.RI_MOUSE_LEFT_BUTTON_UP) || e.UlButtons.HasFlag(UsButtonFlags.RI_MOUSE_RIGHT_BUTTON_UP)) { - MessageReceived(this, HookEventArgs.Empty); + OnMessageReceived(this, HookEventArgs.Empty); } } @@ -77,7 +76,7 @@ private void Keyboard_RawKeyboardInputReceived(object sender, RawKeyEventArgs e) { if (e.Message == WM.KEYUP) { - MessageReceived(this, HookEventArgs.Empty); + OnMessageReceived(this, HookEventArgs.Empty); } } diff --git a/RetailCoder.VBE/Common/WinAPI/BroadcastDeviceInterface.cs b/RetailCoder.VBE/Common/WinAPI/BroadcastDeviceInterface.cs deleted file mode 100644 index b94105a439..0000000000 --- a/RetailCoder.VBE/Common/WinAPI/BroadcastDeviceInterface.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; - -namespace Rubberduck.Common.WinAPI -{ - struct BroadcastDeviceInterface - { - public Int32 DbccSize; - public BroadcastDeviceType BroadcastDeviceType; - public Int32 DbccReserved; - public Guid DbccClassguid; - public char DbccName; - } -} diff --git a/RetailCoder.VBE/Common/WinAPI/BroadcastDeviceType.cs b/RetailCoder.VBE/Common/WinAPI/BroadcastDeviceType.cs deleted file mode 100644 index d204284332..0000000000 --- a/RetailCoder.VBE/Common/WinAPI/BroadcastDeviceType.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Rubberduck.Common.WinAPI -{ - enum BroadcastDeviceType - { - DBT_DEVTYP_OEM = 0, - DBT_DEVTYP_DEVNODE = 1, - DBT_DEVTYP_VOLUME = 2, - DBT_DEVTYP_PORT = 3, - DBT_DEVTYP_NET = 4, - DBT_DEVTYP_DEVICEINTERFACE = 5, - DBT_DEVTYP_HANDLE = 6, - } -} diff --git a/RetailCoder.VBE/Common/WinAPI/EnumeratedDevice.cs b/RetailCoder.VBE/Common/WinAPI/EnumeratedDevice.cs deleted file mode 100644 index 93cf3703ad..0000000000 --- a/RetailCoder.VBE/Common/WinAPI/EnumeratedDevice.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; - -namespace Rubberduck.Common.WinAPI -{ - public sealed class EnumeratedDevice - { - public string DeviceName { get; set; } - public IntPtr DeviceHandle { get; set; } - public string DeviceType { get; set; } - public string Name { get; set; } - public string Source { get; set; } - } -} diff --git a/RetailCoder.VBE/Common/WinAPI/IRawDevice.cs b/RetailCoder.VBE/Common/WinAPI/IRawDevice.cs index 9426a78263..c76c71d1d7 100644 --- a/RetailCoder.VBE/Common/WinAPI/IRawDevice.cs +++ b/RetailCoder.VBE/Common/WinAPI/IRawDevice.cs @@ -4,7 +4,6 @@ namespace Rubberduck.Common.WinAPI { public interface IRawDevice { - void ProcessRawInput(IntPtr hdevice); - void EnumerateDevices(); + void ProcessRawInput(InputData _rawBuffer); } } diff --git a/RetailCoder.VBE/Common/WinAPI/PreMessageFilter.cs b/RetailCoder.VBE/Common/WinAPI/PreMessageFilter.cs deleted file mode 100644 index 97f3b874c3..0000000000 --- a/RetailCoder.VBE/Common/WinAPI/PreMessageFilter.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Windows.Forms; - -namespace Rubberduck.Common.WinAPI -{ - public class PreMessageFilter : IMessageFilter - { - // true to filter the message and stop it from being dispatched - // false to allow the message to continue to the next filter or control. - public bool PreFilterMessage(ref Message m) - { - return false; - } - } -} diff --git a/RetailCoder.VBE/Common/WinAPI/RawDevice.cs b/RetailCoder.VBE/Common/WinAPI/RawDevice.cs deleted file mode 100644 index b1c4af1f6a..0000000000 --- a/RetailCoder.VBE/Common/WinAPI/RawDevice.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Globalization; -using System.Runtime.InteropServices; - -namespace Rubberduck.Common.WinAPI -{ - public abstract class RawDevice : IRawDevice - { - private readonly Dictionary _deviceList = new Dictionary(); - private readonly object _padLock = new object(); - - protected Dictionary DeviceList - { - get - { - return _deviceList; - } - } - - protected object PadLock - { - get - { - return _padLock; - } - } - - protected void EnumerateDevices(DeviceType deviceType) - { - lock (_padLock) - { - _deviceList.Clear(); - var deviceNumber = 0; - var globalDevice = new EnumeratedDevice - { - DeviceName = "Global Device", - DeviceHandle = IntPtr.Zero, - DeviceType = Win32.GetDeviceType(deviceType), - Name = "Fake Device", - Source = deviceNumber++.ToString(CultureInfo.InvariantCulture) - }; - - _deviceList.Add(globalDevice.DeviceHandle, globalDevice); - - uint deviceCount = 0; - var dwSize = (Marshal.SizeOf(typeof(RawInputDeviceList))); - if (User32.GetRawInputDeviceList(IntPtr.Zero, ref deviceCount, (uint)dwSize) == 0) - { - var pRawInputDeviceList = Marshal.AllocHGlobal((int)(dwSize * deviceCount)); - User32.GetRawInputDeviceList(pRawInputDeviceList, ref deviceCount, (uint)dwSize); - for (var i = 0; i < deviceCount; i++) - { - uint pcbSize = 0; - - // On Window 8 64bit when compiling against .Net > 3.5 using .ToInt32 you will generate an arithmetic overflow. Leave as it is for 32bit/64bit applications - var rid = (RawInputDeviceList)Marshal.PtrToStructure(new IntPtr((pRawInputDeviceList.ToInt64() + (dwSize * i))), typeof(RawInputDeviceList)); - - User32.GetRawInputDeviceInfo(rid.hDevice, RawInputDeviceInfo.RIDI_DEVICENAME, IntPtr.Zero, ref pcbSize); - - if (pcbSize <= 0) continue; - - var pData = Marshal.AllocHGlobal((int)pcbSize); - User32.GetRawInputDeviceInfo(rid.hDevice, RawInputDeviceInfo.RIDI_DEVICENAME, pData, ref pcbSize); - var deviceName = Marshal.PtrToStringAnsi(pData); - - if (rid.dwType == (uint)deviceType || rid.dwType == (uint)DeviceType.RIM_TYPE_HID) - { - var deviceDesc = Win32.GetDeviceDescription(deviceName); - - var dInfo = new EnumeratedDevice - { - DeviceName = Marshal.PtrToStringAnsi(pData), - DeviceHandle = rid.hDevice, - DeviceType = Win32.GetDeviceType((DeviceType)rid.dwType), - Name = deviceDesc, - Source = deviceNumber++.ToString(CultureInfo.InvariantCulture) - }; - - if (!_deviceList.ContainsKey(rid.hDevice)) - { - _deviceList.Add(rid.hDevice, dInfo); - } - } - - Marshal.FreeHGlobal(pData); - } - Marshal.FreeHGlobal(pRawInputDeviceList); - return; - } - } - throw new Win32Exception(Marshal.GetLastWin32Error()); - } - - public abstract void ProcessRawInput(IntPtr hdevice); - public abstract void EnumerateDevices(); - } -} diff --git a/RetailCoder.VBE/Common/WinAPI/RawInput.cs b/RetailCoder.VBE/Common/WinAPI/RawInput.cs index b6302a29ba..fcd65d03cf 100644 --- a/RetailCoder.VBE/Common/WinAPI/RawInput.cs +++ b/RetailCoder.VBE/Common/WinAPI/RawInput.cs @@ -1,30 +1,26 @@ using System; +using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics; -using System.Windows.Forms; using System.Runtime.InteropServices; -using System.Collections.Generic; -using Rubberduck.Common.WinAPI; +using System.Windows.Forms; namespace Rubberduck.Common.WinAPI { public class RawInput : NativeWindow { - readonly IntPtr _devNotifyHandle; static readonly Guid DeviceInterfaceHid = new Guid("4D1E55B2-F16F-11CF-88CB-001111000030"); - private PreMessageFilter _filter; private readonly List _devices; - public RawInput(IntPtr parentHandle, bool captureOnlyInForeground) + public RawInput(IntPtr parentHandle) { AssignHandle(parentHandle); - _devNotifyHandle = RegisterForDeviceNotifications(parentHandle); _devices = new List(); } public void AddDevice(IRawDevice device) { _devices.Add(device); - device.EnumerateDevices(); } public IRawDevice CreateKeyboard() @@ -35,58 +31,7 @@ public IRawDevice CreateKeyboard() public IRawDevice CreateMouse() { return new RawMouse(Handle, true); - } - - public void AddMessageFilter() - { - if (null != _filter) - { - return; - } - _filter = new PreMessageFilter(); - Application.AddMessageFilter(_filter); - } - - private void RemoveMessageFilter() - { - if (null == _filter) - { - return; - } - Application.RemoveMessageFilter(_filter); - } - - static IntPtr RegisterForDeviceNotifications(IntPtr parent) - { - var usbNotifyHandle = IntPtr.Zero; - var bdi = new BroadcastDeviceInterface(); - bdi.DbccSize = Marshal.SizeOf(bdi); - bdi.BroadcastDeviceType = BroadcastDeviceType.DBT_DEVTYP_DEVICEINTERFACE; - bdi.DbccClassguid = DeviceInterfaceHid; - var mem = IntPtr.Zero; - try - { - mem = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(BroadcastDeviceInterface))); - Marshal.StructureToPtr(bdi, mem, false); - usbNotifyHandle = User32.RegisterDeviceNotification(parent, mem, DeviceNotification.DEVICE_NOTIFY_WINDOW_HANDLE); - } - catch (Exception e) - { - Debug.Print("Registration for device notifications Failed. Error: {0}", Marshal.GetLastWin32Error()); - Debug.Print(e.StackTrace); - } - finally - { - Marshal.FreeHGlobal(mem); - } - - if (usbNotifyHandle == IntPtr.Zero) - { - Debug.Print("Registration for device notifications Failed. Error: {0}", Marshal.GetLastWin32Error()); - } - - return usbNotifyHandle; - } + } protected override void WndProc(ref Message message) { @@ -94,31 +39,24 @@ protected override void WndProc(ref Message message) { case WM.INPUT: { - foreach (var device in _devices) + InputData _rawBuffer; + var dwSize = 0; + User32.GetRawInputData(message.LParam, DataCommand.RID_INPUT, IntPtr.Zero, ref dwSize, Marshal.SizeOf(typeof(RawInputHeader))); + int res = User32.GetRawInputData(message.LParam, DataCommand.RID_INPUT, out _rawBuffer, ref dwSize, Marshal.SizeOf(typeof(RawInputHeader))); + if (dwSize != res) { - device.ProcessRawInput(message.LParam); + var ex = new Win32Exception(Marshal.GetLastWin32Error()); + Debug.WriteLine("Error getting the rawinput buffer: {0}", ex.Message); + return; } - } - break; - - case WM.DEVICECHANGE: - { - Debug.WriteLine("USB Device Arrival / Removal"); foreach (var device in _devices) { - device.EnumerateDevices(); + device.ProcessRawInput(_rawBuffer); } } break; } - base.WndProc(ref message); } - - ~RawInput() - { - User32.UnregisterDeviceNotification(_devNotifyHandle); - RemoveMessageFilter(); - } } } diff --git a/RetailCoder.VBE/Common/WinAPI/RawKeyEventArgs.cs b/RetailCoder.VBE/Common/WinAPI/RawKeyEventArgs.cs index bf671053d2..9836294ec4 100644 --- a/RetailCoder.VBE/Common/WinAPI/RawKeyEventArgs.cs +++ b/RetailCoder.VBE/Common/WinAPI/RawKeyEventArgs.cs @@ -4,50 +4,23 @@ namespace Rubberduck.Common.WinAPI { public sealed class RawKeyEventArgs : EventArgs { - private string _deviceName; // i.e. \\?\HID#VID_045E&PID_00DD&MI_00#8&1eb402&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd} - private string _deviceType; // KEYBOARD or HID - private IntPtr _deviceHandle; // Handle to the device that send the input - private string _name; // i.e. Microsoft USB Comfort Curve Keyboard 2000 (Mouse and Keyboard Center) - private string _source; // Keyboard_XX private int _vKey; // Virtual Key. Corrected for L/R keys(i.e. LSHIFT/RSHIFT) and Zoom private string _vKeyName; // Virtual Key Name. Corrected for L/R keys(i.e. LSHIFT/RSHIFT) and Zoom - private WM _message; // WM_KEYDOWN or WM_KEYUP + private WM _message; // WM_KEYDOWN or WM_KEYUP private string _keyPressState; // MAKE or BREAK public RawKeyEventArgs( - string deviceName, - string deviceType, - IntPtr deviceHandle, - string name, - string source, int vKey, string vKeyName, WM message, string keyPressState) { - _deviceName = deviceName; - _deviceType = deviceType; - _deviceHandle = deviceHandle; - _name = name; - _source = source; _vKey = vKey; _vKeyName = vKeyName; _message = message; _keyPressState = keyPressState; } - public string Source - { - get - { - return _source; - } - set - { - _source = string.Format("Keyboard_{0}", value.PadLeft(2, '0')); - } - } - public string KeyPressState { get @@ -99,63 +72,6 @@ public int VKey _vKey = value; } } - - public string Name - { - get - { - return _name; - } - - set - { - _name = value; - } - } - - public IntPtr DeviceHandle - { - get - { - return _deviceHandle; - } - - set - { - _deviceHandle = value; - } - } - - public string DeviceType - { - get - { - return _deviceType; - } - - set - { - _deviceType = value; - } - } - - public string DeviceName - { - get - { - return _deviceName; - } - - set - { - _deviceName = value; - } - } - - public override string ToString() - { - return string.Format("Device\n DeviceName: {0}\n DeviceType: {1}\n DeviceHandle: {2}\n Name: {3}\n", _deviceName, _deviceType, _deviceHandle.ToInt64().ToString("X"), _name); - } } } diff --git a/RetailCoder.VBE/Common/WinAPI/RawKeyboard.cs b/RetailCoder.VBE/Common/WinAPI/RawKeyboard.cs index 3e64675c39..92835742c8 100644 --- a/RetailCoder.VBE/Common/WinAPI/RawKeyboard.cs +++ b/RetailCoder.VBE/Common/WinAPI/RawKeyboard.cs @@ -1,13 +1,10 @@ using System; -using System.Diagnostics; using System.Runtime.InteropServices; namespace Rubberduck.Common.WinAPI { - public sealed class RawKeyboard : RawDevice + public sealed class RawKeyboard : IRawDevice { - private InputData _rawBuffer; - public RawKeyboard(IntPtr hwnd, bool captureOnlyInForeground) { var rid = new RawInputDevice[1]; @@ -23,49 +20,24 @@ public RawKeyboard(IntPtr hwnd, bool captureOnlyInForeground) public event EventHandler RawKeyInputReceived; - public override void EnumerateDevices() - { - EnumerateDevices(DeviceType.RIM_TYPE_KEYBOARD); - } - - public override void ProcessRawInput(IntPtr hdevice) + public void ProcessRawInput(InputData _rawBuffer) { - if (DeviceList.Count == 0) return; - - var dwSize = 0; - User32.GetRawInputData(hdevice, DataCommand.RID_INPUT, IntPtr.Zero, ref dwSize, Marshal.SizeOf(typeof(RawInputHeader))); - - if (dwSize != User32.GetRawInputData(hdevice, DataCommand.RID_INPUT, out _rawBuffer, ref dwSize, Marshal.SizeOf(typeof(RawInputHeader)))) + if (_rawBuffer.header.dwType != (uint)DeviceType.RIM_TYPE_KEYBOARD) { - Debug.WriteLine("Error getting the rawinput buffer"); return; } int virtualKey = _rawBuffer.data.keyboard.VKey; int makeCode = _rawBuffer.data.keyboard.Makecode; int flags = _rawBuffer.data.keyboard.Flags; - if (virtualKey == Win32.KEYBOARD_OVERRUN_MAKE_CODE) return; - var isE0BitSet = ((flags & Win32.RI_KEY_E0) != 0); - EnumeratedDevice enumeratedDevice; - if (DeviceList.ContainsKey(_rawBuffer.header.hDevice)) - { - lock (PadLock) - { - enumeratedDevice = DeviceList[_rawBuffer.header.hDevice]; - } - } - else + if (virtualKey == Win32.KEYBOARD_OVERRUN_MAKE_CODE) { return; } + var isE0BitSet = ((flags & Win32.RI_KEY_E0) != 0); var isBreakBitSet = ((flags & Win32.RI_KEY_BREAK) != 0); var args = new RawKeyEventArgs( - enumeratedDevice.DeviceName, - enumeratedDevice.DeviceType, - enumeratedDevice.DeviceHandle, - enumeratedDevice.Name, - enumeratedDevice.Source, virtualKey, - KeyMap.GetKeyName(VirtualKeyCorrection(virtualKey, isE0BitSet, makeCode)).ToUpper(), + KeyMap.GetKeyName(VirtualKeyCorrection(virtualKey, isE0BitSet, makeCode, _rawBuffer)).ToUpper(), (WM)_rawBuffer.data.keyboard.Message, isBreakBitSet ? "BREAK" : "MAKE"); if (RawKeyInputReceived != null) @@ -74,7 +46,7 @@ public override void ProcessRawInput(IntPtr hdevice) } } - private int VirtualKeyCorrection(int virtualKey, bool isE0BitSet, int makeCode) + private int VirtualKeyCorrection(int virtualKey, bool isE0BitSet, int makeCode, InputData _rawBuffer) { var correctedVKey = virtualKey; diff --git a/RetailCoder.VBE/Common/WinAPI/RawMouse.cs b/RetailCoder.VBE/Common/WinAPI/RawMouse.cs index fcc6bd10d4..aa925c72fb 100644 --- a/RetailCoder.VBE/Common/WinAPI/RawMouse.cs +++ b/RetailCoder.VBE/Common/WinAPI/RawMouse.cs @@ -1,13 +1,10 @@ using System; -using System.Diagnostics; using System.Runtime.InteropServices; namespace Rubberduck.Common.WinAPI { - public sealed class RawMouse : RawDevice + public sealed class RawMouse : IRawDevice { - private InputData _rawBuffer; - public RawMouse(IntPtr hwnd, bool captureOnlyInForeground) { var rid = new RawInputDevice[1]; @@ -23,40 +20,13 @@ public RawMouse(IntPtr hwnd, bool captureOnlyInForeground) public event EventHandler RawMouseInputReceived; - public override void EnumerateDevices() + public void ProcessRawInput(InputData _rawBuffer) { - EnumerateDevices(DeviceType.RIM_TYPE_MOUSE); - } - - public override void ProcessRawInput(IntPtr hdevice) - { - if (DeviceList.Count == 0) return; - var dwSize = 0; - User32.GetRawInputData(hdevice, DataCommand.RID_INPUT, IntPtr.Zero, ref dwSize, Marshal.SizeOf(typeof(RawInputHeader))); - if (dwSize != User32.GetRawInputData(hdevice, DataCommand.RID_INPUT, out _rawBuffer, ref dwSize, Marshal.SizeOf(typeof(RawInputHeader)))) - { - Debug.WriteLine("Error getting the rawinput buffer"); - return; - } - EnumeratedDevice enumeratedDevice; - if (DeviceList.ContainsKey(_rawBuffer.header.hDevice)) - { - lock (PadLock) - { - enumeratedDevice = DeviceList[_rawBuffer.header.hDevice]; - } - } - else + if (_rawBuffer.header.dwType != (uint)DeviceType.RIM_TYPE_MOUSE) { return; } - var args = new RawMouseEventArgs( - enumeratedDevice.DeviceName, - enumeratedDevice.DeviceType, - enumeratedDevice.DeviceHandle, - enumeratedDevice.Name, - enumeratedDevice.Source, _rawBuffer.data.keyboard.Message, (UsButtonFlags)_rawBuffer.data.mouse.ulButtons); diff --git a/RetailCoder.VBE/Common/WinAPI/RawMouseEventArgs.cs b/RetailCoder.VBE/Common/WinAPI/RawMouseEventArgs.cs index 172c4586ab..19584c5bc3 100644 --- a/RetailCoder.VBE/Common/WinAPI/RawMouseEventArgs.cs +++ b/RetailCoder.VBE/Common/WinAPI/RawMouseEventArgs.cs @@ -4,96 +4,17 @@ namespace Rubberduck.Common.WinAPI { public sealed class RawMouseEventArgs : EventArgs { - private string _deviceName; // i.e. \\?\HID#VID_045E&PID_00DD&MI_00#8&1eb402&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd} - private string _deviceType; // MOUSE or HID - private IntPtr _deviceHandle; // Handle to the device that send the input - private string _name; - private string _source; private uint _message; private UsButtonFlags _ulButtons; public RawMouseEventArgs( - string deviceName, - string deviceType, - IntPtr deviceHandle, - string name, - string source, uint message, UsButtonFlags ulButtons) { - _deviceName = deviceName; - _deviceType = deviceType; - _deviceHandle = deviceHandle; - _name = name; - _source = source; _message = message; _ulButtons = ulButtons; } - public string Source - { - get - { - return _source; - } - set - { - _source = string.Format("Keyboard_{0}", value.PadLeft(2, '0')); - } - } - - public string DeviceName - { - get - { - return _deviceName; - } - - set - { - _deviceName = value; - } - } - - public string DeviceType - { - get - { - return _deviceType; - } - - set - { - _deviceType = value; - } - } - - public IntPtr DeviceHandle - { - get - { - return _deviceHandle; - } - - set - { - _deviceHandle = value; - } - } - - public string Name - { - get - { - return _name; - } - - set - { - _name = value; - } - } - public uint Message { get @@ -119,11 +40,6 @@ public UsButtonFlags UlButtons _ulButtons = value; } } - - public override string ToString() - { - return string.Format("Device\n DeviceName: {0}\n DeviceType: {1}\n DeviceHandle: {2}\n Name: {3}\n", _deviceName, _deviceType, _deviceHandle.ToInt64().ToString("X"), _name); - } } } diff --git a/RetailCoder.VBE/Inspections/ConvertToProcedureQuickFix.cs b/RetailCoder.VBE/Inspections/ConvertToProcedureQuickFix.cs index b678094b2a..c8daac6da7 100644 --- a/RetailCoder.VBE/Inspections/ConvertToProcedureQuickFix.cs +++ b/RetailCoder.VBE/Inspections/ConvertToProcedureQuickFix.cs @@ -44,7 +44,7 @@ public override void Fix() : Tokens.Property; string visibility = context.visibility() == null ? string.Empty : context.visibility().GetText() + ' '; - string name = ' ' + context.identifier().GetText(); + string name = ' ' + context.functionName().GetText(); bool hasTypeHint = context.typeHint() != null; string args = context.argList().GetText(); diff --git a/RetailCoder.VBE/Inspections/FunctionReturnValueNotUsedInspection.cs b/RetailCoder.VBE/Inspections/FunctionReturnValueNotUsedInspection.cs index 47749b2d7b..de9a07dde7 100644 --- a/RetailCoder.VBE/Inspections/FunctionReturnValueNotUsedInspection.cs +++ b/RetailCoder.VBE/Inspections/FunctionReturnValueNotUsedInspection.cs @@ -25,13 +25,15 @@ public override IEnumerable GetInspectionResults() { // Note: This inspection does not find dictionary calls (e.g. foo!bar) since we do not know what the // default member is of a class. - var interfaceMembers = UserDeclarations.FindInterfaceMembers().ToList(); - var interfaceImplementationMembers = UserDeclarations.FindInterfaceImplementationMembers(); - var functions = UserDeclarations.Where(function => function.DeclarationType == DeclarationType.Function).ToList(); - var interfaceMemberIssues = GetInterfaceMemberIssues(interfaceMembers); - var nonInterfaceFunctions = functions.Except(interfaceMembers.Union(interfaceImplementationMembers)); - var nonInterfaceIssues = GetNonInterfaceIssues(nonInterfaceFunctions); - return interfaceMemberIssues.Union(nonInterfaceIssues); + //var interfaceMembers = UserDeclarations.FindInterfaceMembers().ToList(); + //var interfaceImplementationMembers = UserDeclarations.FindInterfaceImplementationMembers(); + //var functions = UserDeclarations.Where(function => function.DeclarationType == DeclarationType.Function).ToList(); + //var interfaceMemberIssues = GetInterfaceMemberIssues(interfaceMembers); + //var nonInterfaceFunctions = functions.Except(interfaceMembers.Union(interfaceImplementationMembers)); + //var nonInterfaceIssues = GetNonInterfaceIssues(nonInterfaceFunctions); + //return interfaceMemberIssues.Union(nonInterfaceIssues); + // Temporarily disabled until fix for lack of context because of new resolver is found... + return new List(); } private IEnumerable GetInterfaceMemberIssues(IEnumerable interfaceMembers) @@ -77,25 +79,85 @@ private IEnumerable GetReturnStatements(Declaration function) private bool IsReturnValueUsed(Declaration function) { - return function.References.Any(usage => - !IsReturnStatement(function, usage) && !IsAddressOfCall(usage) && !IsCallWithoutAssignment(usage)); + foreach (var usage in function.References) + { + if (IsReturnStatement(function, usage)) + { + continue; + } + if (IsAddressOfCall(usage)) + { + continue; + } + if (IsTypeOfExpression(usage)) + { + continue; + } + if (IsExplicitCall(usage)) + { + continue; + } + if (IsImplicitCall(usage)) + { + continue; + } + if (IsLet(usage)) + { + continue; + } + if (IsSet(usage)) + { + continue; + } + return true; + } + return false; } private bool IsAddressOfCall(IdentifierReference usage) { - RuleContext current = usage.Context; - while (current != null && !(current is VBAParser.VsAddressOfContext)) current = current.Parent; - return current != null; + var what = usage.Context.GetType(); + return ParserRuleContextHelper.HasParent(usage.Context); + } + + private bool IsTypeOfExpression(IdentifierReference usage) + { + return ParserRuleContextHelper.HasParent(usage.Context); } private bool IsReturnStatement(Declaration function, IdentifierReference assignment) { - return assignment.ParentScoping.Equals(function); + return assignment.ParentScoping.Equals(function) && assignment.Declaration.Equals(function); + } + + private bool IsExplicitCall(IdentifierReference usage) + { + return usage.Context.Parent is VBAParser.ExplicitCallStmtContext; + } + + private bool IsImplicitCall(IdentifierReference usage) + { + var a = usage.Context.Parent.GetType(); + var b = usage.Context.Parent.Parent.GetType(); + return usage.Context.Parent is VBAParser.ImplicitCallStmt_InBlockContext; + } + + private bool IsLet(IdentifierReference usage) + { + if (!(usage.Context.Parent is VBAParser.LetStmtContext)) + { + return false; + } + return ((VBAParser.LetStmtContext)usage.Context.Parent).valueStmt()[0] == usage.Context; } - private bool IsCallWithoutAssignment(IdentifierReference usage) + private bool IsSet(IdentifierReference usage) { - return usage.Context.Parent != null && usage.Context.Parent.Parent is VBAParser.ImplicitCallStmt_InBlockContext; + if (!(usage.Context.Parent is VBAParser.SetStmtContext)) + { + return false; + } + return ((VBAParser.SetStmtContext)usage.Context.Parent).valueStmt()[0] == usage.Context; } } } diff --git a/RetailCoder.VBE/Inspections/ImplicitByRefParameterInspection.cs b/RetailCoder.VBE/Inspections/ImplicitByRefParameterInspection.cs index 32e4ee9158..5f010b4db7 100644 --- a/RetailCoder.VBE/Inspections/ImplicitByRefParameterInspection.cs +++ b/RetailCoder.VBE/Inspections/ImplicitByRefParameterInspection.cs @@ -33,7 +33,7 @@ public override IEnumerable GetInspectionResults() let arg = item.Context as VBAParser.ArgContext where arg != null && arg.BYREF() == null && arg.BYVAL() == null select new QualifiedContext(item.QualifiedName, arg)) - .Select(issue => new ImplicitByRefParameterInspectionResult(this, issue.Context.identifier().GetText(), issue)); + .Select(issue => new ImplicitByRefParameterInspectionResult(this, issue.Context.unrestrictedIdentifier().GetText(), issue)); return issues; diff --git a/RetailCoder.VBE/Inspections/ImplicitVariantReturnTypeInspectionResult.cs b/RetailCoder.VBE/Inspections/ImplicitVariantReturnTypeInspectionResult.cs index 03d7675f7b..81cd069adb 100644 --- a/RetailCoder.VBE/Inspections/ImplicitVariantReturnTypeInspectionResult.cs +++ b/RetailCoder.VBE/Inspections/ImplicitVariantReturnTypeInspectionResult.cs @@ -70,7 +70,7 @@ private ProcedureNode GetNode(VBAParser.FunctionStmtContext context) } var scope = Selection.QualifiedName.ToString(); - var localScope = scope + "." + context.identifier().GetText(); + var localScope = scope + "." + context.functionName().identifier().GetText(); return new ProcedureNode(context, scope, localScope); } @@ -82,7 +82,7 @@ private ProcedureNode GetNode(VBAParser.PropertyGetStmtContext context) } var scope = Selection.QualifiedName.ToString(); - var localScope = scope + "." + context.identifier().GetText(); + var localScope = scope + "." + context.functionName().identifier().GetText(); return new ProcedureNode(context, scope, localScope); } } diff --git a/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs b/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs index 5b65ffc092..55fb25de2f 100644 --- a/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs +++ b/RetailCoder.VBE/Inspections/ObjectVariableNotSetInspection.cs @@ -94,7 +94,8 @@ public override IEnumerable GetInspectionResults() .SelectMany(declaration => declaration.References.Where(reference => { - var setStmtContext = reference.Context.Parent.Parent.Parent as VBAParser.LetStmtContext; + var k = reference.Context.parent.GetType(); + var setStmtContext = ParserRuleContextHelper.GetParent(reference.Context); return setStmtContext != null && setStmtContext.LET() == null; })) .Select(reference => new ObjectVariableNotSetInspectionResult(this, reference)); diff --git a/RetailCoder.VBE/Inspections/ObsoleteLetStatementUsageInspectionResult.cs b/RetailCoder.VBE/Inspections/ObsoleteLetStatementUsageInspectionResult.cs index 66c19bef57..c622e62cb1 100644 --- a/RetailCoder.VBE/Inspections/ObsoleteLetStatementUsageInspectionResult.cs +++ b/RetailCoder.VBE/Inspections/ObsoleteLetStatementUsageInspectionResult.cs @@ -52,8 +52,8 @@ public override void Fix() .Replace("_", string.Empty); var originalInstruction = Context.GetText(); - var identifier = context.implicitCallStmt_InStmt().GetText(); - var value = context.valueStmt().GetText(); + var identifier = context.valueStmt()[0].GetText(); + var value = context.valueStmt()[1].GetText(); module.DeleteLines(selection.StartLine, selection.LineCount); diff --git a/RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs b/RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs index c58077a32f..06e52b72c3 100644 --- a/RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs +++ b/RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs @@ -51,12 +51,12 @@ public override IEnumerable GetInspectionResults() var formEventHandlerScopes = declarations.FindFormEventHandlers() .Select(handler => handler.Scope); - var eventScopes = declarations.Where(item => + var eventScopes = declarations.Where(item => !item.IsBuiltIn && item.DeclarationType == DeclarationType.Event) .Select(e => e.Scope); - var declareScopes = declarations.Where(item => - item.DeclarationType == DeclarationType.LibraryFunction + var declareScopes = declarations.Where(item => + item.DeclarationType == DeclarationType.LibraryFunction || item.DeclarationType == DeclarationType.LibraryProcedure) .Select(e => e.Scope); @@ -67,10 +67,10 @@ public override IEnumerable GetInspectionResults() && !ignoredScopes.Contains(declaration.ParentScope) && declaration.DeclarationType == DeclarationType.Parameter && !interfaceMembers.Select(m => m.Scope).Contains(declaration.ParentScope) - && ((VBAParser.ArgContext) declaration.Context).BYVAL() == null + && ((VBAParser.ArgContext)declaration.Context).BYVAL() == null && !IsUsedAsByRefParam(declarations, declaration) && !declaration.References.Any(reference => reference.IsAssignment)) - .Select(issue => new ParameterCanBeByValInspectionResult(this, issue, ((dynamic)issue.Context).identifier(), issue.QualifiedName)); + .Select(issue => new ParameterCanBeByValInspectionResult(this, issue, ((dynamic)issue.Context).unrestrictedIdentifier(), issue.QualifiedName)); return issues; } @@ -97,7 +97,7 @@ private static bool IsUsedAsByRefParam(IEnumerable declarations, De for (var i = 0; i < calledProcedureArgs.Count(); i++) { - if (((VBAParser.ArgContext) calledProcedureArgs[i].Context).BYVAL() != null) + if (((VBAParser.ArgContext)calledProcedureArgs[i].Context).BYVAL() != null) { continue; } @@ -110,6 +110,10 @@ private static bool IsUsedAsByRefParam(IEnumerable declarations, De continue; } + if (!(reference.Context is VBAParser.ArgCallContext)) + { + continue; + } var context = ((dynamic)reference.Context.Parent).argsCall() as VBAParser.ArgsCallContext; if (context == null) { diff --git a/RetailCoder.VBE/Inspections/ParameterNotUsedInspection.cs b/RetailCoder.VBE/Inspections/ParameterNotUsedInspection.cs index 51e37d8993..5d65b66a4b 100644 --- a/RetailCoder.VBE/Inspections/ParameterNotUsedInspection.cs +++ b/RetailCoder.VBE/Inspections/ParameterNotUsedInspection.cs @@ -52,7 +52,7 @@ public override IEnumerable GetInspectionResults() && !builtInHandlers.Contains(parameter.ParentDeclaration)) let isInterfaceImplementationMember = IsInterfaceMemberImplementationParameter(issue, interfaceImplementationMemberScopes) select new ParameterNotUsedInspectionResult(this, issue, - ((dynamic) issue.Context).identifier(), issue.QualifiedName, + ((dynamic) issue.Context).unrestrictedIdentifier(), issue.QualifiedName, isInterfaceImplementationMember, quickFixRefactoring, State); return issues.ToList(); diff --git a/RetailCoder.VBE/Inspections/ProcedureCanBeWrittenAsFunctionInspection.cs b/RetailCoder.VBE/Inspections/ProcedureCanBeWrittenAsFunctionInspection.cs index 75cf72db59..510846d3f5 100644 --- a/RetailCoder.VBE/Inspections/ProcedureCanBeWrittenAsFunctionInspection.cs +++ b/RetailCoder.VBE/Inspections/ProcedureCanBeWrittenAsFunctionInspection.cs @@ -31,14 +31,22 @@ public override IEnumerable GetInspectionResults() { var declaration = UserDeclarations.SingleOrDefault(d => d.DeclarationType == DeclarationType.Procedure && - d.IdentifierName == c.identifier().GetText() && + d.IdentifierName == c.subroutineName().GetText() && d.Context.GetSelection().Equals(c.GetSelection())); - var interfaceImplementation = UserDeclarations.FindInterfaceImplementationMembers().SingleOrDefault(m => m.Equals(declaration)); + if (UserDeclarations.FindInterfaceMembers().Contains(declaration)) + { + return false; + } - if (interfaceImplementation == null) { return true; } + var interfaceImplementation = UserDeclarations.FindInterfaceImplementationMembers().SingleOrDefault(m => m.Equals(declaration)); + if (interfaceImplementation == null) + { + return true; + } var interfaceMember = UserDeclarations.FindInterfaceMember(interfaceImplementation); + return interfaceMember == null; }); @@ -46,7 +54,7 @@ public override IEnumerable GetInspectionResults() .Where(c => { var declaration = UserDeclarations.SingleOrDefault(d => d.DeclarationType == DeclarationType.Procedure && - d.IdentifierName == c.identifier().GetText() && + d.IdentifierName == c.subroutineName().GetText() && d.Context.GetSelection().Equals(c.GetSelection())); if (declaration == null) { return false; } // rather be safe than sorry @@ -66,15 +74,5 @@ public override IEnumerable GetInspectionResults() new QualifiedContext(context.ModuleName, context.Context.Parent as VBAParser.SubStmtContext))); } - - private bool IsInterfaceImplementation(Declaration target) - { - var interfaceImplementation = State.AllUserDeclarations.FindInterfaceImplementationMembers().SingleOrDefault(m => m.Equals(target)); - - if (interfaceImplementation == null) { return false; } - - var interfaceMember = State.AllUserDeclarations.FindInterfaceMember(interfaceImplementation); - return interfaceMember != null; - } } } diff --git a/RetailCoder.VBE/Inspections/ProcedureShouldBeFunctionInspectionResult.cs b/RetailCoder.VBE/Inspections/ProcedureShouldBeFunctionInspectionResult.cs index b873160bd0..521a0d6436 100644 --- a/RetailCoder.VBE/Inspections/ProcedureShouldBeFunctionInspectionResult.cs +++ b/RetailCoder.VBE/Inspections/ProcedureShouldBeFunctionInspectionResult.cs @@ -16,7 +16,7 @@ public class ProcedureShouldBeFunctionInspectionResult : InspectionResultBase public ProcedureShouldBeFunctionInspectionResult(IInspection inspection, RubberduckParserState state, QualifiedContext argListQualifiedContext, QualifiedContext subStmtQualifiedContext) : base(inspection, subStmtQualifiedContext.ModuleName, - subStmtQualifiedContext.Context.identifier()) + subStmtQualifiedContext.Context.subroutineName()) { _target = state.AllUserDeclarations.Single(declaration => declaration.DeclarationType == DeclarationType.Procedure @@ -100,8 +100,8 @@ private void UpdateSignature() var newfunctionWithReturn = newFunctionWithoutReturn .Insert(newFunctionWithoutReturn.LastIndexOf(Environment.NewLine, StringComparison.Ordinal), - Environment.NewLine + " " + _subStmtQualifiedContext.Context.identifier().GetText() + - " = " + _argQualifiedContext.Context.identifier().GetText()); + Environment.NewLine + " " + _subStmtQualifiedContext.Context.subroutineName().GetText() + + " = " + _argQualifiedContext.Context.unrestrictedIdentifier().GetText()); _lineOffset = newfunctionWithReturn.Split(new[] {Environment.NewLine}, StringSplitOptions.None).Length - subStmtText.Split(new[] {Environment.NewLine}, StringSplitOptions.None).Length; @@ -115,7 +115,7 @@ private void UpdateSignature() private void UpdateCalls() { - var procedureName = _subStmtQualifiedContext.Context.identifier().GetText(); + var procedureName = _subStmtQualifiedContext.Context.subroutineName().GetText(); var procedure = _state.AllDeclarations.SingleOrDefault(d => @@ -137,12 +137,12 @@ d.Context is VBAParser.SubStmtContext && var module = reference.QualifiedModuleName.Component.CodeModule; - var referenceParent = reference.Context.Parent as VBAParser.ICS_B_ProcedureCallContext; + var referenceParent = reference.Context as VBAParser.ICS_B_ProcedureCallContext; if (referenceParent == null) { continue; } - var referenceText = reference.Context.Parent.GetText(); + var referenceText = reference.Context.GetText(); var newCall = referenceParent.argsCall().argCall().ToList().ElementAt(_argListQualifiedContext.Context.arg().ToList().IndexOf(_argQualifiedContext.Context)).GetText() + - " = " + _subStmtQualifiedContext.Context.identifier().GetText() + + " = " + _subStmtQualifiedContext.Context.subroutineName().GetText() + "(" + referenceParent.argsCall().GetText() + ")"; var oldLines = module.Lines[startLine, reference.Selection.LineCount]; diff --git a/RetailCoder.VBE/Inspections/RemoveExplicitCallStatmentQuickFix.cs b/RetailCoder.VBE/Inspections/RemoveExplicitCallStatmentQuickFix.cs index 2ed327e85a..58a5e17c2a 100644 --- a/RetailCoder.VBE/Inspections/RemoveExplicitCallStatmentQuickFix.cs +++ b/RetailCoder.VBE/Inspections/RemoveExplicitCallStatmentQuickFix.cs @@ -25,15 +25,15 @@ public override void Fix() string procedure; VBAParser.ArgsCallContext arguments; - if (context.eCS_MemberProcedureCall() != null) + if (context.explicitCallStmtExpression() is VBAParser.ECS_MemberCallContext) { - procedure = context.eCS_MemberProcedureCall().identifier().GetText(); - arguments = context.eCS_MemberProcedureCall().argsCall(); + procedure = ((VBAParser.ECS_MemberCallContext)context.explicitCallStmtExpression()).identifier().GetText(); + arguments = ((VBAParser.ECS_MemberCallContext)context.explicitCallStmtExpression()).argsCall(); } else { - procedure = context.eCS_ProcedureCall().identifier().GetText(); - arguments = context.eCS_ProcedureCall().argsCall(); + procedure = ((VBAParser.ECS_ProcedureCallContext)context.explicitCallStmtExpression()).identifier().GetText(); + arguments = ((VBAParser.ECS_ProcedureCallContext)context.explicitCallStmtExpression()).argsCall(); } module.DeleteLines(selection.StartLine, selection.LineCount); diff --git a/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerCustomFolderViewModel.cs b/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerCustomFolderViewModel.cs index ebcac8b37c..707620a76a 100644 --- a/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerCustomFolderViewModel.cs +++ b/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerCustomFolderViewModel.cs @@ -10,6 +10,7 @@ namespace Rubberduck.Navigation.CodeExplorer { public class CodeExplorerCustomFolderViewModel : CodeExplorerItemViewModel { + private readonly string _fullPath; private readonly string _name; private readonly string _folderAttribute; private static readonly DeclarationType[] ComponentTypes = @@ -20,25 +21,27 @@ public class CodeExplorerCustomFolderViewModel : CodeExplorerItemViewModel DeclarationType.UserForm, }; - public CodeExplorerCustomFolderViewModel(string name, string fullPath, IEnumerable declarations) + public CodeExplorerCustomFolderViewModel(string name, string fullPath) { + _fullPath = fullPath; _name = name.Replace("\"", string.Empty); _folderAttribute = string.Format("@Folder(\"{0}\")", fullPath.Replace("\"", string.Empty)); _collapsedIcon = GetImageSource(resx.folder_horizontal); _expandedIcon = GetImageSource(resx.folder_horizontal_open); + } - var items = declarations.ToList(); - - var parents = items.GroupBy(item => item.ComponentName).OrderBy(item => item.Key).ToList(); + public void AddNodes(List declarations) + { + var parents = declarations.GroupBy(item => item.ComponentName).OrderBy(item => item.Key).ToList(); foreach (var component in parents) { try { var moduleName = component.Key; - var parent = items.Single(item => + var parent = declarations.Single(item => ComponentTypes.Contains(item.DeclarationType) && item.ComponentName == moduleName); - var members = items.Where(item => + var members = declarations.Where(item => !ComponentTypes.Contains(item.DeclarationType) && item.ComponentName == moduleName); AddChild(new CodeExplorerComponentViewModel(parent, members)); @@ -52,6 +55,8 @@ public CodeExplorerCustomFolderViewModel(string name, string fullPath, IEnumerab public string FolderAttribute { get { return _folderAttribute; } } + public string FullPath { get { return _fullPath; } } + public override string Name { get { return _name; } } public override string NameWithSignature { get { return Name; } } diff --git a/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerProjectViewModel.cs b/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerProjectViewModel.cs index 3f92f9966d..30b3e49b9b 100644 --- a/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerProjectViewModel.cs +++ b/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerProjectViewModel.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Windows.Media.Imaging; using Microsoft.Vbe.Interop; +using Rubberduck.Navigation.Folders; using Rubberduck.Parsing.Symbols; using Rubberduck.VBEditor; using resx = Rubberduck.UI.CodeExplorer.CodeExplorer; @@ -14,6 +14,7 @@ public class CodeExplorerProjectViewModel : CodeExplorerItemViewModel { private readonly Declaration _declaration; public Declaration Declaration { get { return _declaration; } } + private readonly CodeExplorerCustomFolderViewModel _folderTree; private static readonly DeclarationType[] ComponentTypes = { @@ -23,14 +24,16 @@ public class CodeExplorerProjectViewModel : CodeExplorerItemViewModel DeclarationType.UserForm, }; - public CodeExplorerProjectViewModel(Declaration declaration, IEnumerable declarations) + public CodeExplorerProjectViewModel(FolderHelper folderHelper, Declaration declaration, IEnumerable declarations) { _declaration = declaration; IsExpanded = true; + _folderTree = folderHelper.GetFolderTree(declaration); try { - Items = FindFolders(declarations.ToList(), '.').ToList(); + FillFolders(declarations.ToList()); + Items = _folderTree.Items.ToList(); _icon = _declaration.Project.Protection == vbext_ProjectProtection.vbext_pp_locked ? GetImageSource(resx.lock__exclamation) @@ -42,44 +45,41 @@ public CodeExplorerProjectViewModel(Declaration declaration, IEnumerable FindFolders(IEnumerable declarations, char delimiter) + private void FillFolders(IEnumerable declarations) { - var root = new CodeExplorerCustomFolderViewModel(string.Empty, string.Empty, new List()); - var items = declarations.ToList(); - var folders = items.Where(item => ComponentTypes.Contains(item.DeclarationType)) + var groupedItems = items.Where(item => ComponentTypes.Contains(item.DeclarationType)) .GroupBy(item => item.CustomFolder) .OrderBy(item => item.Key); - foreach (var grouping in folders) + + foreach (var grouping in groupedItems) { - CodeExplorerItemViewModel node = root; - var parts = grouping.Key.Split(delimiter); - var path = new StringBuilder(); - foreach (var part in parts) + AddNodesToTree(_folderTree, items, grouping); + } + } + + private bool AddNodesToTree(CodeExplorerCustomFolderViewModel tree, List items, IGrouping grouping) + { + foreach (var folder in tree.Items.OfType()) + { + if (grouping.Key.Replace("\"", string.Empty) != folder.FullPath) { - if (path.Length != 0) - { - path.Append(delimiter); - } + continue; + } - path.Append(part); - var next = node.GetChild(part); - if (next == null) - { - var currentPath = path.ToString(); - var parents = grouping.Where(item => ComponentTypes.Contains(item.DeclarationType) && item.CustomFolder == currentPath).ToList(); + var parents = grouping.Where( + item => ComponentTypes.Contains(item.DeclarationType) && + item.CustomFolder.Replace("\"", string.Empty) == folder.FullPath) + .ToList(); - next = new CodeExplorerCustomFolderViewModel(part, currentPath, items.Where(item => - parents.Contains(item) || parents.Any(parent => - (item.ParentDeclaration != null && item.ParentDeclaration.Equals(parent)) || item.ComponentName == parent.ComponentName))); - node.AddChild(next); - } + folder.AddNodes(items.Where(item => parents.Contains(item) || parents.Any(parent => + (item.ParentDeclaration != null && item.ParentDeclaration.Equals(parent)) || + item.ComponentName == parent.ComponentName)).ToList()); - node = next; - } + return true; } - return root.Items; + return tree.Items.OfType().Any(node => AddNodesToTree(node, items, grouping)); } private readonly BitmapImage _icon; diff --git a/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerViewModel.cs b/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerViewModel.cs index 663a12ea6a..6004c8f576 100644 --- a/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerViewModel.cs +++ b/RetailCoder.VBE/Navigation/CodeExplorer/CodeExplorerViewModel.cs @@ -4,134 +4,58 @@ using System.Linq; using System.Windows.Input; using System.Windows.Threading; -using Microsoft.Vbe.Interop; +using Rubberduck.Navigation.Folders; using Rubberduck.Parsing.Symbols; using Rubberduck.Parsing.VBA; -using Rubberduck.Refactorings.Rename; -using Rubberduck.SmartIndenter; using Rubberduck.UI; +using Rubberduck.UI.CodeExplorer.Commands; using Rubberduck.UI.Command; -using Rubberduck.UI.Refactorings; -using Rubberduck.UnitTesting; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; + // ReSharper disable CanBeReplacedWithTryCastAndCheckForNull namespace Rubberduck.Navigation.CodeExplorer { - public class CodeExplorerViewModel : ViewModelBase + public class CodeExplorerViewModel : ViewModelBase, IDisposable { - private readonly VBE _vbe; + private readonly FolderHelper _folderHelper; private readonly RubberduckParserState _state; - private readonly NewUnitTestModuleCommand _newUnitTestModuleCommand; - private readonly Indenter _indenter; - private readonly ICodePaneWrapperFactory _wrapperFactory; - private readonly FindAllReferencesCommand _findAllReferences; - private readonly FindAllImplementationsCommand _findAllImplementations; + private readonly List _commands; private readonly Dispatcher _dispatcher; - public CodeExplorerViewModel(VBE vbe, - RubberduckParserState state, - INavigateCommand navigateCommand, - NewUnitTestModuleCommand newUnitTestModuleCommand, - Indenter indenter, - ICodePaneWrapperFactory wrapperFactory, - FindAllReferencesCommand findAllReferences, - FindAllImplementationsCommand findAllImplementations) + public CodeExplorerViewModel(FolderHelper folderHelper, RubberduckParserState state, List commands) { _dispatcher = Dispatcher.CurrentDispatcher; - _vbe = vbe; + _folderHelper = folderHelper; _state = state; - _newUnitTestModuleCommand = newUnitTestModuleCommand; - _indenter = indenter; - _wrapperFactory = wrapperFactory; - _findAllReferences = findAllReferences; - _findAllImplementations = findAllImplementations; + _commands = commands; _state.StateChanged += ParserState_StateChanged; _state.ModuleStateChanged += ParserState_ModuleStateChanged; - _navigateCommand = navigateCommand; - _contextMenuNavigateCommand = new DelegateCommand(ExecuteContextMenuNavigateCommand, CanExecuteContextMenuNavigateCommand); - _refreshCommand = new DelegateCommand(ExecuteRefreshCommand, _ => CanRefresh); - _addTestModuleCommand = new DelegateCommand(ExecuteAddTestModuleCommand); - _addStdModuleCommand = new DelegateCommand(ExecuteAddStdModuleCommand, CanAddModule); - _addClsModuleCommand = new DelegateCommand(ExecuteAddClsModuleCommand, CanAddModule); - _addFormCommand = new DelegateCommand(ExecuteAddFormCommand, CanAddModule); - - _openDesignerCommand = new DelegateCommand(ExecuteOpenDesignerCommand, _ => CanExecuteShowDesignerCommand); - _indenterCommand = new DelegateCommand(ExecuteIndenterCommand, _ => CanExecuteIndenterCommand); - _renameCommand = new DelegateCommand(ExecuteRenameCommand, _ => CanExecuteRenameCommand); - _findAllReferencesCommand = new DelegateCommand(ExecuteFindAllReferencesCommand, _ => CanExecuteFindAllReferencesCommand); - _findAllImplementationsCommand = new DelegateCommand(ExecuteFindAllImplementationsCommand, _ => CanExecuteFindAllImplementationsCommand); - } - - private readonly ICommand _refreshCommand; - public ICommand RefreshCommand { get { return _refreshCommand; } } - - private readonly ICommand _addTestModuleCommand; - public ICommand AddTestModuleCommand { get { return _addTestModuleCommand; } } - - private readonly ICommand _addStdModuleCommand; - public ICommand AddStdModuleCommand { get { return _addStdModuleCommand; } } - - private readonly ICommand _addClsModuleCommand; - public ICommand AddClsModuleCommand { get { return _addClsModuleCommand; } } - - private readonly ICommand _addFormCommand; - public ICommand AddFormCommand { get { return _addFormCommand; } } - - private readonly ICommand _openDesignerCommand; - public ICommand OpenDesignerCommand { get { return _openDesignerCommand; } } - - private readonly ICommand _indenterCommand; - public ICommand IndenterCommand { get { return _indenterCommand; } } - - private readonly ICommand _renameCommand; - public ICommand RenameCommand { get { return _renameCommand; } } - - private readonly ICommand _findAllReferencesCommand; - public ICommand FindAllReferencesCommand { get { return _findAllReferencesCommand; } } + _refreshCommand = commands.OfType().FirstOrDefault(); + _navigateCommand = commands.OfType().FirstOrDefault(); - private readonly ICommand _findAllImplementationsCommand; - public ICommand FindAllImplementationsCommand { get { return _findAllImplementationsCommand; } } + _addTestModuleCommand = commands.OfType().FirstOrDefault(); + _addStdModuleCommand = commands.OfType().FirstOrDefault(); + _addClassModuleCommand = commands.OfType().FirstOrDefault(); + _addUserFormCommand = commands.OfType().FirstOrDefault(); - private readonly INavigateCommand _navigateCommand; - public ICommand NavigateCommand { get { return _navigateCommand; } } + _openDesignerCommand = commands.OfType().FirstOrDefault(); + _renameCommand = commands.OfType().FirstOrDefault(); + _indenterCommand = commands.OfType().FirstOrDefault(); - private readonly ICommand _contextMenuNavigateCommand; - public ICommand ContextMenuNavigateCommand { get { return _contextMenuNavigateCommand; } } + _findAllReferencesCommand = commands.OfType().FirstOrDefault(); + _findAllImplementationsCommand = commands.OfType().FirstOrDefault(); - public string Description - { - get + _importCommand = commands.OfType().FirstOrDefault(); + _exportCommand = commands.OfType().FirstOrDefault(); + _externalRemoveCommand = commands.OfType().FirstOrDefault(); + if (_externalRemoveCommand != null) { - if (SelectedItem is CodeExplorerProjectViewModel) - { - return ((CodeExplorerProjectViewModel)SelectedItem).Declaration.DescriptionString; - } - - if (SelectedItem is CodeExplorerComponentViewModel) - { - return ((CodeExplorerComponentViewModel)SelectedItem).Declaration.DescriptionString; - } - - if (SelectedItem is CodeExplorerMemberViewModel) - { - return ((CodeExplorerMemberViewModel)SelectedItem).Declaration.DescriptionString; - } - - if (SelectedItem is CodeExplorerCustomFolderViewModel) - { - return ((CodeExplorerCustomFolderViewModel)SelectedItem).FolderAttribute; - } - - if (SelectedItem is CodeExplorerErrorNodeViewModel) - { - return ((CodeExplorerErrorNodeViewModel)SelectedItem).Name; - } - - return string.Empty; + _removeCommand = new DelegateCommand(ExecuteRemoveComand, _externalRemoveCommand.CanExecute); } + + _printCommand = commands.OfType().FirstOrDefault(); } private CodeExplorerItemViewModel _selectedItem; @@ -140,13 +64,12 @@ public CodeExplorerItemViewModel SelectedItem get { return _selectedItem; } set { - _selectedItem = value; + _selectedItem = value; OnPropertyChanged(); // ReSharper disable ExplicitCallerInfoArgument OnPropertyChanged("CanExecuteIndenterCommand"); OnPropertyChanged("CanExecuteRenameCommand"); OnPropertyChanged("CanExecuteFindAllReferencesCommand"); - OnPropertyChanged("CanExecuteShowDesignerCommand"); OnPropertyChanged("PanelTitle"); OnPropertyChanged("Description"); // ReSharper restore ExplicitCallerInfoArgument @@ -159,7 +82,7 @@ public bool IsBusy get { return _isBusy; } set { - _isBusy = value; + _isBusy = value; OnPropertyChanged(); CanRefresh = !_isBusy; } @@ -187,90 +110,70 @@ public string PanelTitle if (SelectedItem is CodeExplorerProjectViewModel) { - var node = (CodeExplorerProjectViewModel)SelectedItem; + var node = (CodeExplorerProjectViewModel) SelectedItem; return node.Declaration.IdentifierName + string.Format(" - ({0})", node.Declaration.DeclarationType); } if (SelectedItem is CodeExplorerComponentViewModel) { - var node = (CodeExplorerComponentViewModel)SelectedItem; + var node = (CodeExplorerComponentViewModel) SelectedItem; return node.Declaration.IdentifierName + string.Format(" - ({0})", node.Declaration.DeclarationType); } if (SelectedItem is CodeExplorerMemberViewModel) { - var node = (CodeExplorerMemberViewModel)SelectedItem; + var node = (CodeExplorerMemberViewModel) SelectedItem; return node.Declaration.IdentifierName + string.Format(" - ({0})", node.Declaration.DeclarationType); } return SelectedItem.Name; } } - - private bool CanAddModule(object param) - { - return _vbe.ActiveVBProject != null; - } - - private bool CanExecuteContextMenuNavigateCommand(object param) - { - return SelectedItem != null && SelectedItem.QualifiedSelection.HasValue; - } - - private bool CanExecuteShowDesignerCommand + + public string Description { get { - var declaration = GetSelectedDeclaration(); - return declaration != null && declaration.DeclarationType == DeclarationType.ClassModule && - declaration.QualifiedName.QualifiedModuleName.Component.Designer != null; - } - } + if (SelectedItem is CodeExplorerProjectViewModel) + { + return ((CodeExplorerProjectViewModel) SelectedItem).Declaration.DescriptionString; + } - public bool CanExecuteIndenterCommand - { - get - { - return _state.Status == ParserState.Ready && !(SelectedItem is CodeExplorerCustomFolderViewModel) && - !(SelectedItem is CodeExplorerErrorNodeViewModel); - } - } + if (SelectedItem is CodeExplorerComponentViewModel) + { + return ((CodeExplorerComponentViewModel) SelectedItem).Declaration.DescriptionString; + } - public bool CanExecuteRenameCommand - { - get - { - return _state.Status == ParserState.Ready && !(SelectedItem is CodeExplorerCustomFolderViewModel) && - !(SelectedItem is CodeExplorerErrorNodeViewModel); - } - } + if (SelectedItem is CodeExplorerMemberViewModel) + { + return ((CodeExplorerMemberViewModel) SelectedItem).Declaration.DescriptionString; + } - public bool CanExecuteFindAllReferencesCommand - { - get - { - return _state.Status == ParserState.Ready && !(SelectedItem is CodeExplorerCustomFolderViewModel) && - !(SelectedItem is CodeExplorerErrorNodeViewModel); - } - } + if (SelectedItem is CodeExplorerCustomFolderViewModel) + { + return ((CodeExplorerCustomFolderViewModel) SelectedItem).FolderAttribute; + } - private bool CanExecuteFindAllImplementationsCommand - { - get - { - return _state.Status == ParserState.Ready && - (SelectedItem is CodeExplorerComponentViewModel || - SelectedItem is CodeExplorerMemberViewModel); + if (SelectedItem is CodeExplorerErrorNodeViewModel) + { + return ((CodeExplorerErrorNodeViewModel) SelectedItem).Name; + } + + return string.Empty; } } + public bool CanExecuteIndenterCommand { get { return IndenterCommand.CanExecute(SelectedItem); } } + public bool CanExecuteRenameCommand { get { return RenameCommand.CanExecute(SelectedItem); } } + public bool CanExecuteFindAllReferencesCommand { get { return FindAllReferencesCommand.CanExecute(SelectedItem); } } + private ObservableCollection _projects; public ObservableCollection Projects { get { return _projects; } set { - _projects = value; + _projects = value; OnPropertyChanged(); } } @@ -293,13 +196,16 @@ private void ParserState_StateChanged(object sender, EventArgs e) .Where(grouping => grouping.Key != null) .ToList(); - if (userDeclarations.Any(grouping => grouping.All(declaration => declaration.DeclarationType != DeclarationType.Project))) + if (userDeclarations.Any( + grouping => grouping.All(declaration => declaration.DeclarationType != DeclarationType.Project))) { return; } var newProjects = new ObservableCollection(userDeclarations.Select(grouping => - new CodeExplorerProjectViewModel(grouping.SingleOrDefault(declaration => declaration.DeclarationType == DeclarationType.Project), grouping))); + new CodeExplorerProjectViewModel(_folderHelper, + grouping.SingleOrDefault(declaration => declaration.DeclarationType == DeclarationType.Project), + grouping))); UpdateNodes(Projects, newProjects); Projects = newProjects; @@ -348,7 +254,7 @@ private void ParserState_ModuleStateChanged(object sender, Parsing.ParseProgress var componentProject = e.Component.Collection.Parent; var node = Projects.OfType() - .FirstOrDefault(p => p.Declaration.Project == componentProject); + .FirstOrDefault(p => p.Declaration.Project == componentProject); if (node == null) { @@ -362,11 +268,12 @@ private void ParserState_ModuleStateChanged(object sender, Parsing.ParseProgress } private delegate void AddErrorNode(CodeExplorerItemViewModel projectNode, CodeExplorerItemViewModel folderNode, string componentName); - private void AddComponentErrorNode(CodeExplorerItemViewModel projectNode, CodeExplorerItemViewModel folderNode, string componentName) + private void AddComponentErrorNode(CodeExplorerItemViewModel projectNode, CodeExplorerItemViewModel folderNode, + string componentName) { Projects.Remove(projectNode); RemoveFailingComponent(projectNode, componentName); - + folderNode.AddChild(new CodeExplorerErrorNodeViewModel(componentName)); Projects.Add(projectNode); } @@ -388,7 +295,7 @@ private void RemoveFailingComponent(CodeExplorerItemViewModel itemNode, string c if (node is CodeExplorerComponentViewModel) { - var component = (CodeExplorerComponentViewModel)node; + var component = (CodeExplorerComponentViewModel) node; if (component.Name == componentName) { itemNode.Items.Remove(node); @@ -400,110 +307,71 @@ private void RemoveFailingComponent(CodeExplorerItemViewModel itemNode, string c } } - private void ExecuteRefreshCommand(object param) - { - _state.OnParseRequested(this); - } + private readonly ICommand _refreshCommand; + public ICommand RefreshCommand { get { return _refreshCommand; } } - private void ExecuteAddTestModuleCommand(object param) - { - _newUnitTestModuleCommand.NewUnitTestModule(); - } + private readonly ICommand _navigateCommand; + public ICommand NavigateCommand { get { return _navigateCommand; } } - private void ExecuteAddStdModuleCommand(object param) - { - _vbe.ActiveVBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule); - } + private readonly ICommand _addTestModuleCommand; + public ICommand AddTestModuleCommand { get { return _addTestModuleCommand; } } - private void ExecuteAddClsModuleCommand(object param) - { - _vbe.ActiveVBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_ClassModule); - } + private readonly ICommand _addStdModuleCommand; + public ICommand AddStdModuleCommand { get { return _addStdModuleCommand; } } - private void ExecuteAddFormCommand(object param) - { - _vbe.ActiveVBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_MSForm); - } + private readonly ICommand _addClassModuleCommand; + public ICommand AddClassModuleCommand { get { return _addClassModuleCommand; } } - private void ExecuteOpenDesignerCommand(object param) - { - GetSelectedDeclaration().QualifiedName.QualifiedModuleName.Component.DesignerWindow().Visible = true; - } + private readonly ICommand _addUserFormCommand; + public ICommand AddUserFormCommand { get { return _addUserFormCommand; } } - private void ExecuteIndenterCommand(object param) - { - if (!SelectedItem.QualifiedSelection.HasValue) - { - return; - } + private readonly ICommand _openDesignerCommand; + public ICommand OpenDesignerCommand { get { return _openDesignerCommand; } } - if (SelectedItem is CodeExplorerProjectViewModel) - { - _indenter.Indent(SelectedItem.QualifiedSelection.Value.QualifiedName.Project); - } + private readonly ICommand _renameCommand; + public ICommand RenameCommand { get { return _renameCommand; } } - if (SelectedItem is CodeExplorerComponentViewModel) - { - _indenter.Indent(SelectedItem.QualifiedSelection.Value.QualifiedName.Component); - } + private readonly ICommand _indenterCommand; + public ICommand IndenterCommand { get { return _indenterCommand; } } - if (SelectedItem is CodeExplorerMemberViewModel) - { - var arg = new NavigateCodeEventArgs(SelectedItem.QualifiedSelection.Value); - NavigateCommand.Execute(arg); + private readonly ICommand _findAllReferencesCommand; + public ICommand FindAllReferencesCommand { get { return _findAllReferencesCommand; } } - _indenter.IndentCurrentProcedure(); - } - } + private readonly ICommand _findAllImplementationsCommand; + public ICommand FindAllImplementationsCommand { get { return _findAllImplementationsCommand; } } - private void ExecuteRenameCommand(object obj) - { - using (var view = new RenameDialog()) - { - var factory = new RenamePresenterFactory(_vbe, view, _state, new MessageBox(), _wrapperFactory); - var refactoring = new RenameRefactoring(_vbe, factory, new MessageBox(), _state); + private readonly ICommand _importCommand; + public ICommand ImportCommand { get { return _importCommand; } } - refactoring.Refactor(GetSelectedDeclaration()); - } - } + private readonly ICommand _exportCommand; + public ICommand ExportCommand { get { return _exportCommand; } } - private void ExecuteFindAllReferencesCommand(object obj) - { - _findAllReferences.Execute(GetSelectedDeclaration()); - } + private readonly ICommand _removeCommand; + public ICommand RemoveCommand { get { return _removeCommand; } } - private void ExecuteFindAllImplementationsCommand(object obj) - { - _findAllImplementations.Execute(GetSelectedDeclaration()); - } + private readonly ICommand _printCommand; + public ICommand PrintCommand { get { return _printCommand; } } + + private readonly ICommand _externalRemoveCommand; - private void ExecuteContextMenuNavigateCommand(object obj) + // this is a special case--we have to reset SelectedItem to prevent a crash + private void ExecuteRemoveComand(object param) { - // ReSharper disable once PossibleInvalidOperationException - // CanExecute protects against this - var arg = new NavigateCodeEventArgs(SelectedItem.QualifiedSelection.Value); + var node = (CodeExplorerComponentViewModel) SelectedItem; + SelectedItem = Projects.First(p => ((CodeExplorerProjectViewModel) p).Declaration.Project == node.Declaration.Project); - NavigateCommand.Execute(arg); + _externalRemoveCommand.Execute(param); } - private Declaration GetSelectedDeclaration() + public void Dispose() { - if (SelectedItem is CodeExplorerProjectViewModel) + foreach (var command in _commands) { - return ((CodeExplorerProjectViewModel) SelectedItem).Declaration; - } - - if (SelectedItem is CodeExplorerComponentViewModel) - { - return ((CodeExplorerComponentViewModel) SelectedItem).Declaration; - } - - if (SelectedItem is CodeExplorerMemberViewModel) - { - return ((CodeExplorerMemberViewModel) SelectedItem).Declaration; + if (command is IDisposable) + { + ((IDisposable) command).Dispose(); + } } - - return null; } } } diff --git a/RetailCoder.VBE/Navigation/Folders/FolderHelper.cs b/RetailCoder.VBE/Navigation/Folders/FolderHelper.cs new file mode 100644 index 0000000000..ef9b783a51 --- /dev/null +++ b/RetailCoder.VBE/Navigation/Folders/FolderHelper.cs @@ -0,0 +1,72 @@ +using System.Linq; +using Rubberduck.Navigation.CodeExplorer; +using Rubberduck.Parsing.Symbols; +using Rubberduck.Parsing.VBA; +using Rubberduck.Settings; + +namespace Rubberduck.Navigation.Folders +{ + public class FolderHelper + { + private readonly RubberduckParserState _state; + private readonly ConfigurationLoader _configLoader; + + private static readonly DeclarationType[] ComponentTypes = + { + DeclarationType.ClassModule, + DeclarationType.Document, + DeclarationType.ProceduralModule, + DeclarationType.UserForm, + }; + + public FolderHelper(RubberduckParserState state, ConfigurationLoader configLoader) + { + _state = state; + _configLoader = configLoader; + } + + public CodeExplorerCustomFolderViewModel GetFolderTree(Declaration declaration = null) + { + var delimiter = GetDelimiter(); + + var root = new CodeExplorerCustomFolderViewModel(string.Empty, string.Empty); + + var items = declaration == null + ? _state.AllUserDeclarations.ToList() + : _state.AllUserDeclarations.Where(d => d.ProjectId == declaration.ProjectId).ToList(); + + var folders = items.Where(item => ComponentTypes.Contains(item.DeclarationType)) + .Select(item => item.CustomFolder.Replace("\"", string.Empty)) + .Distinct() + .Select(item => item.Split(delimiter)); + + foreach (var folder in folders) + { + var currentNode = root; + var fullPath = string.Empty; + + foreach (var section in folder) + { + fullPath += string.IsNullOrEmpty(fullPath) ? section : delimiter + section; + + var node = currentNode.Items.FirstOrDefault(i => i.Name == section); + if (node == null) + { + node = new CodeExplorerCustomFolderViewModel(section, fullPath); + currentNode.AddChild(node); + } + + currentNode = (CodeExplorerCustomFolderViewModel)node; + } + } + + return root; + } + + private char GetDelimiter() + { + var settings = _configLoader.LoadConfiguration(); + return settings.UserSettings.GeneralSettings.Delimiter; + } + } +} \ No newline at end of file diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs index 5c2f7d870d..a2b6739685 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs @@ -12,10 +12,10 @@ public interface IEncapsulateFieldPresenter public class EncapsulateFieldPresenter : IEncapsulateFieldPresenter { - private readonly IEncapsulateFieldView _view; + private readonly IEncapsulateFieldDialog _view; private readonly EncapsulateFieldModel _model; - public EncapsulateFieldPresenter(IEncapsulateFieldView view, EncapsulateFieldModel model) + public EncapsulateFieldPresenter(IEncapsulateFieldDialog view, EncapsulateFieldModel model) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs index 579d36cf16..d1a1352ccb 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs @@ -7,10 +7,10 @@ namespace Rubberduck.Refactorings.EncapsulateField public class EncapsulateFieldPresenterFactory : IRefactoringPresenterFactory { private readonly VBE _vbe; - private readonly IEncapsulateFieldView _view; + private readonly IEncapsulateFieldDialog _view; private readonly RubberduckParserState _parseResult; - public EncapsulateFieldPresenterFactory(VBE vbe, RubberduckParserState parseResult, IEncapsulateFieldView view) + public EncapsulateFieldPresenterFactory(VBE vbe, RubberduckParserState parseResult, IEncapsulateFieldDialog view) { _vbe = vbe; _view = view; diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/IEncapsulateFieldView.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/IEncapsulateFieldDialog.cs similarity index 89% rename from RetailCoder.VBE/Refactorings/EncapsulateField/IEncapsulateFieldView.cs rename to RetailCoder.VBE/Refactorings/EncapsulateField/IEncapsulateFieldDialog.cs index 5187fb15d7..34b27cca6d 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/IEncapsulateFieldView.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/IEncapsulateFieldDialog.cs @@ -3,7 +3,7 @@ namespace Rubberduck.Refactorings.EncapsulateField { - public interface IEncapsulateFieldView :IDialogView + public interface IEncapsulateFieldDialog :IDialogView { Declaration TargetDeclaration { get; set; } diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs index cda3f85200..35fb577d1f 100644 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs +++ b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs @@ -11,10 +11,10 @@ public interface IExtractInterfacePresenter public class ExtractInterfacePresenter : IExtractInterfacePresenter { - private readonly IExtractInterfaceView _view; + private readonly IExtractInterfaceDialog _view; private readonly ExtractInterfaceModel _model; - public ExtractInterfacePresenter(IExtractInterfaceView view, ExtractInterfaceModel model) + public ExtractInterfacePresenter(IExtractInterfaceDialog view, ExtractInterfaceModel model) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs index 64d9622c3b..352836f105 100644 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs @@ -8,10 +8,10 @@ namespace Rubberduck.Refactorings.ExtractInterface public class ExtractInterfacePresenterFactory : IRefactoringPresenterFactory { private readonly VBE _vbe; - private readonly IExtractInterfaceView _view; + private readonly IExtractInterfaceDialog _view; private readonly RubberduckParserState _state; - public ExtractInterfacePresenterFactory(VBE vbe, RubberduckParserState state, IExtractInterfaceView view) + public ExtractInterfacePresenterFactory(VBE vbe, RubberduckParserState state, IExtractInterfaceDialog view) { _vbe = vbe; _view = view; diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceView.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceDialog.cs similarity index 82% rename from RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceView.cs rename to RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceDialog.cs index 2a3e3c669c..efc159a9d6 100644 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceView.cs +++ b/RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceDialog.cs @@ -3,7 +3,7 @@ namespace Rubberduck.Refactorings.ExtractInterface { - public interface IExtractInterfaceView : IDialogView + public interface IExtractInterfaceDialog : IDialogView { string InterfaceName { get; set; } IEnumerable Members { get; set; } diff --git a/RetailCoder.VBE/Refactorings/ImplementInterface/ImplementInterfaceRefactoring.cs b/RetailCoder.VBE/Refactorings/ImplementInterface/ImplementInterfaceRefactoring.cs index 763b3e8a4e..f71bafd1b9 100644 --- a/RetailCoder.VBE/Refactorings/ImplementInterface/ImplementInterfaceRefactoring.cs +++ b/RetailCoder.VBE/Refactorings/ImplementInterface/ImplementInterfaceRefactoring.cs @@ -14,7 +14,6 @@ namespace Rubberduck.Refactorings.ImplementInterface public class ImplementInterfaceRefactoring : IRefactoring { private readonly VBE _vbe; - private readonly RubberduckParserState _state; private readonly IMessageBox _messageBox; private List _declarations; @@ -26,18 +25,10 @@ public class ImplementInterfaceRefactoring : IRefactoring public ImplementInterfaceRefactoring(VBE vbe, RubberduckParserState state, IMessageBox messageBox) { _vbe = vbe; - _state = state; _declarations = state.AllUserDeclarations.ToList(); _messageBox = messageBox; } - public bool CanExecute(QualifiedSelection selection) - { - CalculateTargets(selection); - - return _targetClass != null && _targetInterface != null; - } - public void Refactor() { if (_vbe.ActiveCodePane == null) @@ -60,7 +51,11 @@ public void Refactor() public void Refactor(QualifiedSelection selection) { - CalculateTargets(selection); + _targetInterface = _declarations.FindInterface(selection); + + _targetClass = _declarations.SingleOrDefault(d => + !d.IsBuiltIn && d.DeclarationType == DeclarationType.ClassModule && + d.QualifiedSelection.QualifiedName.Equals(selection.QualifiedName)); if (_targetClass == null || _targetInterface == null) { @@ -77,17 +72,6 @@ public void Refactor(Declaration target) throw new NotImplementedException(); } - private void CalculateTargets(QualifiedSelection selection) - { - _declarations = _state.AllUserDeclarations.ToList(); - - _targetInterface = _declarations.FindInterface(selection); - - _targetClass = _declarations.SingleOrDefault(d => - !d.IsBuiltIn && d.DeclarationType == DeclarationType.ClassModule && - d.QualifiedSelection.QualifiedName.Equals(selection.QualifiedName)); - } - private void ImplementMissingMembers() { var interfaceMembers = GetInterfaceMembers(); diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/IRemoveParametersView.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/IRemoveParametersDialog.cs similarity index 78% rename from RetailCoder.VBE/Refactorings/RemoveParameters/IRemoveParametersView.cs rename to RetailCoder.VBE/Refactorings/RemoveParameters/IRemoveParametersDialog.cs index 6d1fa54966..76b3b3d676 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/IRemoveParametersView.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/IRemoveParametersDialog.cs @@ -3,7 +3,7 @@ namespace Rubberduck.Refactorings.RemoveParameters { - public interface IRemoveParametersView : IDialogView + public interface IRemoveParametersDialog : IDialogView { List Parameters { get; set; } void InitializeParameterGrid(); diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs index 08a27bdf08..380279876f 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs @@ -10,11 +10,11 @@ public interface IRemoveParametersPresenter public class RemoveParametersPresenter : IRemoveParametersPresenter { - private readonly IRemoveParametersView _view; + private readonly IRemoveParametersDialog _view; private readonly RemoveParametersModel _model; private readonly IMessageBox _messageBox; - public RemoveParametersPresenter(IRemoveParametersView view, RemoveParametersModel model, IMessageBox messageBox) + public RemoveParametersPresenter(IRemoveParametersDialog view, RemoveParametersModel model, IMessageBox messageBox) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs index 47419336da..ba8e94d66a 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs @@ -7,11 +7,11 @@ namespace Rubberduck.Refactorings.RemoveParameters public class RemoveParametersPresenterFactory : IRefactoringPresenterFactory { private readonly VBE _vbe; - private readonly IRemoveParametersView _view; + private readonly IRemoveParametersDialog _view; private readonly RubberduckParserState _parseResult; private readonly IMessageBox _messageBox; - public RemoveParametersPresenterFactory(VBE vbe, IRemoveParametersView view, + public RemoveParametersPresenterFactory(VBE vbe, IRemoveParametersDialog view, RubberduckParserState parseResult, IMessageBox messageBox) { _vbe = vbe; diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersRefactoring.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersRefactoring.cs index 34e3c68c57..9df5a59cce 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersRefactoring.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersRefactoring.cs @@ -82,7 +82,7 @@ private void AdjustReferences(IEnumerable references, Decla { foreach (var reference in references.Where(item => item.Context != method.Context)) { - var proc = (dynamic)reference.Context.Parent; + var proc = (dynamic)reference.Context; var module = reference.QualifiedModuleName.Component.CodeModule; VBAParser.ArgsCallContext paramList; diff --git a/RetailCoder.VBE/Refactorings/Rename/IRenameView.cs b/RetailCoder.VBE/Refactorings/Rename/IRenameDialog.cs similarity index 79% rename from RetailCoder.VBE/Refactorings/Rename/IRenameView.cs rename to RetailCoder.VBE/Refactorings/Rename/IRenameDialog.cs index 93e7ded447..6db2d2daa0 100644 --- a/RetailCoder.VBE/Refactorings/Rename/IRenameView.cs +++ b/RetailCoder.VBE/Refactorings/Rename/IRenameDialog.cs @@ -3,7 +3,7 @@ namespace Rubberduck.Refactorings.Rename { - public interface IRenameView : IDialogView + public interface IRenameDialog : IDialogView { Declaration Target { get; set; } string NewName { get; set; } diff --git a/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs b/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs index 87aa02dd19..e41201f8eb 100644 --- a/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs +++ b/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs @@ -11,10 +11,10 @@ public interface IRenamePresenter public class RenamePresenter : IRenamePresenter { - private readonly IRenameView _view; + private readonly IRenameDialog _view; private readonly RenameModel _model; - public RenamePresenter(IRenameView view, RenameModel model) + public RenamePresenter(IRenameDialog view, RenameModel model) { _view = view; diff --git a/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs b/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs index e823f28013..070db4bdbd 100644 --- a/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs @@ -9,12 +9,12 @@ namespace Rubberduck.Refactorings.Rename public class RenamePresenterFactory : IRefactoringPresenterFactory { private readonly VBE _vbe; - private readonly IRenameView _view; + private readonly IRenameDialog _view; private readonly RubberduckParserState _parseResult; private readonly IMessageBox _messageBox; private readonly ICodePaneWrapperFactory _wrapperFactory; - public RenamePresenterFactory(VBE vbe, IRenameView view, RubberduckParserState parseResult, IMessageBox messageBox, ICodePaneWrapperFactory wrapperFactory) + public RenamePresenterFactory(VBE vbe, IRenameDialog view, RubberduckParserState parseResult, IMessageBox messageBox, ICodePaneWrapperFactory wrapperFactory) { _vbe = vbe; _view = view; diff --git a/RetailCoder.VBE/Refactorings/Rename/RenameRefactoring.cs b/RetailCoder.VBE/Refactorings/Rename/RenameRefactoring.cs index 4169d6ac89..48283ddd3c 100644 --- a/RetailCoder.VBE/Refactorings/Rename/RenameRefactoring.cs +++ b/RetailCoder.VBE/Refactorings/Rename/RenameRefactoring.cs @@ -394,7 +394,7 @@ private string GetReplacementLine(CodeModule module, Declaration target, string { var argContext = (VBAParser.ArgContext)target.Context; var rewriter = _model.ParseResult.GetRewriter(target.QualifiedName.QualifiedModuleName.Component); - rewriter.Replace(argContext.identifier().Start.TokenIndex, _model.NewName); + rewriter.Replace(argContext.unrestrictedIdentifier().Start.TokenIndex, _model.NewName); // Target.Context is an ArgContext, its parent is an ArgsListContext; // the ArgsListContext's parent is the procedure context and it includes the body. diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/IReorderParametersView.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/IReorderParametersDialog.cs similarity index 78% rename from RetailCoder.VBE/Refactorings/ReorderParameters/IReorderParametersView.cs rename to RetailCoder.VBE/Refactorings/ReorderParameters/IReorderParametersDialog.cs index 86c9f10d2a..b98d7c5794 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/IReorderParametersView.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/IReorderParametersDialog.cs @@ -3,7 +3,7 @@ namespace Rubberduck.Refactorings.ReorderParameters { - public interface IReorderParametersView : IDialogView + public interface IReorderParametersDialog : IDialogView { List Parameters { get; set; } void InitializeParameterGrid(); diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs index f64cb8df00..932ea239db 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs @@ -10,11 +10,11 @@ public interface IReorderParametersPresenter public class ReorderParametersPresenter : IReorderParametersPresenter { - private readonly IReorderParametersView _view; + private readonly IReorderParametersDialog _view; private readonly ReorderParametersModel _model; private readonly IMessageBox _messageBox; - public ReorderParametersPresenter(IReorderParametersView view, ReorderParametersModel model, IMessageBox messageBox) + public ReorderParametersPresenter(IReorderParametersDialog view, ReorderParametersModel model, IMessageBox messageBox) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs index 179b49f220..83b905a928 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs @@ -7,11 +7,11 @@ namespace Rubberduck.Refactorings.ReorderParameters public class ReorderParametersPresenterFactory : IRefactoringPresenterFactory { private readonly VBE _vbe; - private readonly IReorderParametersView _view; + private readonly IReorderParametersDialog _view; private readonly RubberduckParserState _parseResult; private readonly IMessageBox _messageBox; - public ReorderParametersPresenterFactory(VBE vbe, IReorderParametersView view, + public ReorderParametersPresenterFactory(VBE vbe, IReorderParametersDialog view, RubberduckParserState parseResult, IMessageBox messageBox) { _vbe = vbe; diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersRefactoring.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersRefactoring.cs index 0161a7efe3..591db95e69 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersRefactoring.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersRefactoring.cs @@ -92,7 +92,7 @@ private void AdjustReferences(IEnumerable references) { foreach (var reference in references.Where(item => item.Context != _model.TargetDeclaration.Context)) { - var proc = (dynamic)reference.Context.Parent; + dynamic proc = reference.Context; var module = reference.QualifiedModuleName.Component.CodeModule; VBAParser.ArgsCallContext paramList; diff --git a/RetailCoder.VBE/Root/RubberduckModule.cs b/RetailCoder.VBE/Root/RubberduckModule.cs index 6bb9bc6660..d976dd77fc 100644 --- a/RetailCoder.VBE/Root/RubberduckModule.cs +++ b/RetailCoder.VBE/Root/RubberduckModule.cs @@ -80,6 +80,7 @@ public override void Load() ApplyAbstractFactoryConvention(assemblies); BindCommandsToMenuItems(); + BindCommandsToCodeExplorer(); Rebind().To().InSingletonScope(); Rebind().To(); @@ -313,6 +314,20 @@ private void BindCommandsToMenuItems() } } + private void BindCommandsToCodeExplorer() + { + var commands = Assembly.GetExecutingAssembly().GetTypes() + .Where(type => type.IsClass && type.Namespace != null && + type.Namespace == "Rubberduck.UI.CodeExplorer.Commands" && + type.Name.StartsWith("CodeExplorer_") && + type.Name.EndsWith("Command")); + + foreach (var command in commands) + { + _kernel.Bind().To(command).InSingletonScope(); + } + } + private IEnumerable GetRubberduckMenuItems() { return new IMenuItem[] diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index ad50988ac3..1f561ff70e 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -247,6 +247,7 @@ + False @@ -254,6 +255,7 @@ + @@ -298,13 +300,10 @@ - - - @@ -312,8 +311,6 @@ - - @@ -368,6 +365,7 @@ + AboutControl.xaml @@ -379,7 +377,22 @@ AboutDialog.cs - + + + + + + + + + + + + + + + + @@ -441,26 +454,26 @@ - + - + - + - + @@ -617,6 +630,8 @@ + + Form @@ -645,10 +660,12 @@ True RubberduckUI.sv.resx + + - + @@ -774,7 +791,7 @@ - + Form diff --git a/RetailCoder.VBE/Settings/ConfigurationLoader.cs b/RetailCoder.VBE/Settings/ConfigurationLoader.cs index d7dd1caf52..5545558fe6 100644 --- a/RetailCoder.VBE/Settings/ConfigurationLoader.cs +++ b/RetailCoder.VBE/Settings/ConfigurationLoader.cs @@ -57,6 +57,12 @@ public override Configuration LoadConfiguration() AssociateHotkeyCommands(config); } + // 0 is the default, and parses just fine into a `char`. We require '.' or '/'. + if (!new[] {',', '/'}.Contains(config.UserSettings.GeneralSettings.Delimiter)) + { + config.UserSettings.GeneralSettings.Delimiter = '.'; + } + if (config.UserSettings.ToDoListSettings == null) { config.UserSettings.ToDoListSettings = new ToDoListSettings(GetDefaultTodoMarkers()); @@ -195,7 +201,7 @@ private GeneralSettings GetDefaultGeneralSettings() new HotkeySetting{Name=RubberduckHotkey.RefactorRename.ToString(), IsEnabled=true, HasCtrlModifier = true, HasShiftModifier = true, Key1="R", Command = commandMappings[RubberduckHotkey.RefactorRename]}, new HotkeySetting{Name=RubberduckHotkey.RefactorExtractMethod.ToString(), IsEnabled=true, HasCtrlModifier = true, HasShiftModifier = true, Key1="M", Command = commandMappings[RubberduckHotkey.RefactorExtractMethod]} }, - false, 10); + false, 10, '.'); } public ToDoMarker[] GetDefaultTodoMarkers() diff --git a/RetailCoder.VBE/Settings/GeneralSettings.cs b/RetailCoder.VBE/Settings/GeneralSettings.cs index 338a5adb82..492d245498 100644 --- a/RetailCoder.VBE/Settings/GeneralSettings.cs +++ b/RetailCoder.VBE/Settings/GeneralSettings.cs @@ -8,6 +8,7 @@ interface IGeneralSettings HotkeySetting[] HotkeySettings { get; set; } bool AutoSaveEnabled { get; set; } int AutoSavePeriod { get; set; } + char Delimiter { get; set; } } [XmlType(AnonymousType = true)] @@ -21,17 +22,20 @@ public class GeneralSettings : IGeneralSettings public bool AutoSaveEnabled { get; set; } public int AutoSavePeriod { get; set; } + public char Delimiter { get; set; } + public GeneralSettings() { //empty constructor needed for serialization } - public GeneralSettings(DisplayLanguageSetting language, HotkeySetting[] hotkeySettings, bool autoSaveEnabled, int autoSavePeriod) + public GeneralSettings(DisplayLanguageSetting language, HotkeySetting[] hotkeySettings, bool autoSaveEnabled, int autoSavePeriod, char delimiter) { Language = language; HotkeySettings = hotkeySettings; AutoSaveEnabled = autoSaveEnabled; AutoSavePeriod = autoSavePeriod; + Delimiter = '.'; } } } \ No newline at end of file diff --git a/RetailCoder.VBE/UI/CodeExplorer/CodeExplorerControl.xaml b/RetailCoder.VBE/UI/CodeExplorer/CodeExplorerControl.xaml index 3f599f5381..e5a095b169 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/CodeExplorerControl.xaml +++ b/RetailCoder.VBE/UI/CodeExplorer/CodeExplorerControl.xaml @@ -6,8 +6,8 @@ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:codeExplorer="clr-namespace:Rubberduck.Navigation.CodeExplorer" xmlns:controls="clr-namespace:Rubberduck.UI.Controls" - xmlns:converter="clr-namespace:Rubberduck.UI.CodeExplorer" xmlns:themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" + xmlns:converters="clr-namespace:Rubberduck.UI.CodeExplorer.Converters" ResxExtension.DefaultResxName="Rubberduck.UI.RubberduckUI" Language="{UICulture}" Name="CodeExplorer" @@ -15,7 +15,7 @@ d:DesignHeight="300" d:DesignWidth="300" d:DataContext="{d:DesignInstance codeExplorer:CodeExplorerViewModel}"> - + + + + + + + + - - - - - - - - - + + diff --git a/RetailCoder.VBE/UI/Settings/GeneralSettingsViewModel.cs b/RetailCoder.VBE/UI/Settings/GeneralSettingsViewModel.cs index 8163bacf7a..968cb4e596 100644 --- a/RetailCoder.VBE/UI/Settings/GeneralSettingsViewModel.cs +++ b/RetailCoder.VBE/UI/Settings/GeneralSettingsViewModel.cs @@ -4,6 +4,12 @@ namespace Rubberduck.UI.Settings { + public enum DelimiterOptions + { + Period = 46, + Slash = 47 + } + public class GeneralSettingsViewModel : ViewModelBase, ISettingsViewModel { public GeneralSettingsViewModel(Configuration config) @@ -23,6 +29,8 @@ public GeneralSettingsViewModel(Configuration config) Hotkeys = new ObservableCollection(config.UserSettings.GeneralSettings.HotkeySettings); AutoSaveEnabled = config.UserSettings.GeneralSettings.AutoSaveEnabled; AutoSavePeriod = config.UserSettings.GeneralSettings.AutoSavePeriod; + + Delimiter = (DelimiterOptions)config.UserSettings.GeneralSettings.Delimiter; } public ObservableCollection Languages { get; set; } @@ -83,12 +91,27 @@ public int AutoSavePeriod } } + private DelimiterOptions _delimiter; + public DelimiterOptions Delimiter + { + get { return _delimiter; } + set + { + if (_delimiter != value) + { + _delimiter = value; + OnPropertyChanged(); + } + } + } + public void UpdateConfig(Configuration config) { config.UserSettings.GeneralSettings.Language = SelectedLanguage; config.UserSettings.GeneralSettings.HotkeySettings = Hotkeys.ToArray(); config.UserSettings.GeneralSettings.AutoSaveEnabled = AutoSaveEnabled; config.UserSettings.GeneralSettings.AutoSavePeriod = AutoSavePeriod; + config.UserSettings.GeneralSettings.Delimiter = (char)Delimiter; } public void SetToDefaults(Configuration config) @@ -97,6 +120,7 @@ public void SetToDefaults(Configuration config) Hotkeys = new ObservableCollection(config.UserSettings.GeneralSettings.HotkeySettings); AutoSaveEnabled = config.UserSettings.GeneralSettings.AutoSaveEnabled; AutoSavePeriod = config.UserSettings.GeneralSettings.AutoSavePeriod; + Delimiter = (DelimiterOptions)config.UserSettings.GeneralSettings.Delimiter; } } } \ No newline at end of file diff --git a/Rubberduck.Parsing/Annotations/AnnotationListener.cs b/Rubberduck.Parsing/Annotations/AnnotationListener.cs index 333df5df33..f00bd414c6 100644 --- a/Rubberduck.Parsing/Annotations/AnnotationListener.cs +++ b/Rubberduck.Parsing/Annotations/AnnotationListener.cs @@ -29,7 +29,11 @@ public IEnumerable Annotations public override void ExitAnnotation([NotNull] VBAParser.AnnotationContext context) { var newAnnotation = _factory.Create(context, new QualifiedSelection(_qualifiedName, context.GetSelection())); - _annotations.Add(newAnnotation); + // It might be an annotation we don't support or a typo. + if (newAnnotation != null) + { + _annotations.Add(newAnnotation); + } } } } diff --git a/Rubberduck.Parsing/Binding/ArgumentList.cs b/Rubberduck.Parsing/Binding/ArgumentList.cs new file mode 100644 index 0000000000..d1a16c40ce --- /dev/null +++ b/Rubberduck.Parsing/Binding/ArgumentList.cs @@ -0,0 +1,54 @@ +using Rubberduck.Parsing.Symbols; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class ArgumentList + { + private readonly List _arguments; + + public ArgumentList() + { + _arguments = new List(); + } + + public void AddArgument(ArgumentListArgument argument) + { + _arguments.Add(argument); + } + + public bool HasArguments + { + get + { + return HasRequiredPositionalArgument|| HasNamedArguments; + } + } + + public bool HasNamedArguments + { + get + { + return _arguments.Any(a => a.ArgumentType == ArgumentListArgumentType.Named); + } + } + + public bool HasRequiredPositionalArgument + { + get + { + return _arguments.Any(a => a.ArgumentType == ArgumentListArgumentType.Positional); + } + } + + public IReadOnlyList Arguments + { + get + { + return _arguments; + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/ArgumentListArgument.cs b/Rubberduck.Parsing/Binding/ArgumentListArgument.cs new file mode 100644 index 0000000000..f75bbc6329 --- /dev/null +++ b/Rubberduck.Parsing/Binding/ArgumentListArgument.cs @@ -0,0 +1,59 @@ +using Rubberduck.Parsing.Symbols; +using System; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class ArgumentListArgument + { + private readonly IExpressionBinding _binding; + private IBoundExpression _expression; + private IBoundExpression _namedArgumentExpression; + private readonly ArgumentListArgumentType _argumentType; + private readonly Func _namedArgumentExpressionCreator; + + public ArgumentListArgument(IExpressionBinding binding, ArgumentListArgumentType argumentType) + : this (binding, argumentType, calledProcedure => null) + { + } + + public ArgumentListArgument(IExpressionBinding binding, ArgumentListArgumentType argumentType, Func namedArgumentExpressionCreator) + { + _binding = binding; + _argumentType = argumentType; + _namedArgumentExpressionCreator = namedArgumentExpressionCreator; + } + + public ArgumentListArgumentType ArgumentType + { + get + { + return _argumentType; + } + } + + public IBoundExpression NamedArgumentExpression + { + get + { + return _namedArgumentExpression; + } + } + + public IBoundExpression Expression + { + get + { + return _expression; + } + } + + public void Resolve(Declaration calledProcedure) + { + _expression = _binding.Resolve(); + if (calledProcedure != null) + { + _namedArgumentExpression = _namedArgumentExpressionCreator(calledProcedure); + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/ArgumentListArgumentType.cs b/Rubberduck.Parsing/Binding/ArgumentListArgumentType.cs new file mode 100644 index 0000000000..004163049d --- /dev/null +++ b/Rubberduck.Parsing/Binding/ArgumentListArgumentType.cs @@ -0,0 +1,8 @@ +namespace Rubberduck.Parsing.Binding +{ + public enum ArgumentListArgumentType + { + Positional, + Named + } +} diff --git a/Rubberduck.Parsing/Binding/BinaryOpDefaultBinding.cs b/Rubberduck.Parsing/Binding/BinaryOpDefaultBinding.cs new file mode 100644 index 0000000000..bf3ddad183 --- /dev/null +++ b/Rubberduck.Parsing/Binding/BinaryOpDefaultBinding.cs @@ -0,0 +1,37 @@ +using Antlr4.Runtime; +using System.Diagnostics; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class BinaryOpDefaultBinding : IExpressionBinding + { + private readonly ParserRuleContext _context; + private readonly IExpressionBinding _left; + private readonly IExpressionBinding _right; + + public BinaryOpDefaultBinding( + ParserRuleContext context, + IExpressionBinding left, + IExpressionBinding right) + { + _context = context; + _left = left; + _right = right; + } + + public IBoundExpression Resolve() + { + var leftExpr = _left.Resolve(); + if (leftExpr == null) + { + return null; + } + var rightExpr = _right.Resolve(); + if (rightExpr == null) + { + return null; + } + return new BinaryOpExpression(null, _context, leftExpr, rightExpr); + } + } +} diff --git a/Rubberduck.Parsing/Binding/BinaryOpExpression.cs b/Rubberduck.Parsing/Binding/BinaryOpExpression.cs new file mode 100644 index 0000000000..ec37184ee9 --- /dev/null +++ b/Rubberduck.Parsing/Binding/BinaryOpExpression.cs @@ -0,0 +1,38 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class BinaryOpExpression : BoundExpression + { + private readonly IBoundExpression _left; + private readonly IBoundExpression _right; + + public BinaryOpExpression( + Declaration referencedDeclaration, + ParserRuleContext context, + IBoundExpression left, + IBoundExpression right) + : base(referencedDeclaration, ExpressionClassification.Value, context) + { + _left = left; + _right = right; + } + + public IBoundExpression Left + { + get + { + return _left; + } + } + + public IBoundExpression Right + { + get + { + return _right; + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/BindingService.cs b/Rubberduck.Parsing/Binding/BindingService.cs index 51d4e625fd..da2572540f 100644 --- a/Rubberduck.Parsing/Binding/BindingService.cs +++ b/Rubberduck.Parsing/Binding/BindingService.cs @@ -1,44 +1,59 @@ using Antlr4.Runtime; using Rubberduck.Parsing.Grammar; using Rubberduck.Parsing.Symbols; +using System; +using System.Diagnostics; namespace Rubberduck.Parsing.Binding { public sealed class BindingService { + private readonly DeclarationFinder _declarationFinder; private readonly IBindingContext _defaultBindingContext; private readonly IBindingContext _typedBindingContext; private readonly IBindingContext _procedurePointerBindingContext; public BindingService( + DeclarationFinder declarationFinder, IBindingContext defaultBindingContext, - IBindingContext typedBindingContext, + IBindingContext typedBindingContext, IBindingContext procedurePointerBindingContext) { + _declarationFinder = declarationFinder; _defaultBindingContext = defaultBindingContext; _typedBindingContext = typedBindingContext; _procedurePointerBindingContext = procedurePointerBindingContext; } - public IBoundExpression ResolveDefault(Declaration module, Declaration parent, string expression) + public Declaration ResolveEvent(Declaration module, string identifier) { - var expr = Parse(expression); - return _defaultBindingContext.Resolve(module, parent, expr); + return _declarationFinder.FindEvent(module, identifier); + } + + public Declaration ResolveGoTo(Declaration procedure, string label) + { + return _declarationFinder.FindLabel(procedure, label); + } + + public IBoundExpression ResolveDefault(Declaration module, Declaration parent, string expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + var expr = Parse(expression.Trim()); + return _defaultBindingContext.Resolve(module, parent, expr, withBlockVariable, statementContext); } public IBoundExpression ResolveType(Declaration module, Declaration parent, string expression) { - var expr = Parse(expression); - return _typedBindingContext.Resolve(module, parent, expr); + var expr = Parse(expression.Trim()); + return _typedBindingContext.Resolve(module, parent, expr, null, ResolutionStatementContext.Undefined); } public IBoundExpression ResolveProcedurePointer(Declaration module, Declaration parent, string expression) { - var expr = Parse(expression); - return _procedurePointerBindingContext.Resolve(module, parent, expr); + var expr = Parse(expression.Trim()); + return _procedurePointerBindingContext.Resolve(module, parent, expr, null, ResolutionStatementContext.Undefined); } - private VBAExpressionParser.ExpressionContext Parse(string expression) + private ParserRuleContext Parse(string expression) { var stream = new AntlrInputStream(expression); var lexer = new VBALexer(stream); @@ -46,7 +61,8 @@ private VBAExpressionParser.ExpressionContext Parse(string expression) var parser = new VBAExpressionParser(tokens); parser.AddErrorListener(new ExceptionErrorListener()); var tree = parser.startRule(); - return tree.expression(); + var prettyTree = tree.ToStringTree(parser); + return tree; } } } diff --git a/Rubberduck.Parsing/Binding/DefaultBindingContext.cs b/Rubberduck.Parsing/Binding/DefaultBindingContext.cs index 05c4523e5b..f87074d764 100644 --- a/Rubberduck.Parsing/Binding/DefaultBindingContext.cs +++ b/Rubberduck.Parsing/Binding/DefaultBindingContext.cs @@ -1,21 +1,28 @@ using Antlr4.Runtime; using Rubberduck.Parsing.Symbols; +using System; namespace Rubberduck.Parsing.Binding { public sealed class DefaultBindingContext : IBindingContext { private readonly DeclarationFinder _declarationFinder; + private readonly IBindingContext _typeBindingContext; + private readonly IBindingContext _procedurePointerBindingContext; - public DefaultBindingContext(DeclarationFinder declarationFinder) + public DefaultBindingContext( + DeclarationFinder declarationFinder, + IBindingContext typeBindingContext, + IBindingContext procedurePointerBindingContext) { _declarationFinder = declarationFinder; + _typeBindingContext = typeBindingContext; + _procedurePointerBindingContext = procedurePointerBindingContext; } - public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression) + public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { - dynamic dynamicExpression = expression; - IExpressionBinding bindingTree = Visit(module, parent, dynamicExpression); + IExpressionBinding bindingTree = BuildTree(module, parent, expression, withBlockVariable, statementContext); if (bindingTree != null) { return bindingTree.Resolve(); @@ -23,14 +30,79 @@ public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRu return null; } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.NewExprContext expression) + public IExpressionBinding BuildTree(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic dynamicExpression = expression; + return Visit(module, parent, dynamicExpression, withBlockVariable, statementContext); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.StartRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + // Call statements always have an argument list + if (statementContext == ResolutionStatementContext.CallStatement) + { + if (expression.callStmt() != null) + { + return VisitCallStmt(module, parent, expression.callStmt(), withBlockVariable, statementContext); + } + else + { + return VisitCallStmt(module, parent, expression.expression(), withBlockVariable, statementContext); + } + } + return Visit(module, parent, (dynamic)expression.expression(), withBlockVariable, statementContext); + } + + private IExpressionBinding VisitCallStmt(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + if (expression is VBAExpressionParser.CallStmtContext) + { + var callStmtExpression = (VBAExpressionParser.CallStmtContext)expression; + dynamic lexpr; + if (callStmtExpression.simpleNameExpression() != null) + { + lexpr = callStmtExpression.simpleNameExpression(); + } + else if (callStmtExpression.memberAccessExpression() != null) + { + lexpr = callStmtExpression.memberAccessExpression(); + } + else + { + lexpr = callStmtExpression.withExpression(); + } + var lexprBinding = Visit(module, parent, lexpr, withBlockVariable, ResolutionStatementContext.Undefined); + var argList = VisitArgumentList(module, parent, callStmtExpression.argumentList(), withBlockVariable, ResolutionStatementContext.Undefined); + return new IndexDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lexprBinding, argList); + } + else + { + var lexprBinding = Visit(module, parent, (dynamic)expression, withBlockVariable, ResolutionStatementContext.Undefined); + if (!(lexprBinding is IndexDefaultBinding)) + { + return new IndexDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lexprBinding, new ArgumentList()); + } + else + { + return lexprBinding; + } + } + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic lexpr = expression.lExpression(); + return Visit(module, parent, lexpr, withBlockVariable, statementContext); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.NewExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { - return Visit(module, parent, expression.newExpression()); + return Visit(module, parent, expression.newExpression(), withBlockVariable, ResolutionStatementContext.Undefined); } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.NewExpressionContext expression) + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.NewExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { - var typeExpressionBinding = Visit(module, parent, expression.typeExpression()); + var typeExpressionBinding = Visit(module, parent, expression.typeExpression(), withBlockVariable, ResolutionStatementContext.Undefined); if (typeExpressionBinding == null) { return null; @@ -38,46 +110,344 @@ private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpr return new NewTypeBinding(_declarationFinder, module, parent, expression, typeExpressionBinding); } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.TypeExpressionContext expression) + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.TypeExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { if (expression.builtInType() != null) { return null; } - return Visit(module, parent, expression.definedTypeExpression()); + return Visit(module, parent, expression.definedTypeExpression(), withBlockVariable, ResolutionStatementContext.Undefined); } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.DefinedTypeExpressionContext expression) + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.DefinedTypeExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { if (expression.simpleNameExpression() != null) { - return Visit(module, parent, expression.simpleNameExpression()); + return _typeBindingContext.BuildTree(module, parent, expression.simpleNameExpression(), withBlockVariable, ResolutionStatementContext.Undefined); } - return Visit(module, parent, expression.memberAccessExpression()); + return _typeBindingContext.BuildTree(module, parent, expression.memberAccessExpression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return Visit(module, parent, expression.simpleNameExpression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return new SimpleNameDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, statementContext); } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExprContext expression) + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { - return Visit(module, parent, expression.simpleNameExpression()); + dynamic lExpression = expression.lExpression(); + var lExpressionBinding = Visit(module, parent, lExpression, withBlockVariable, ResolutionStatementContext.Undefined); + return new MemberAccessDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lExpressionBinding, statementContext, expression.unrestrictedName()); } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExpressionContext expression) + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { - return new SimpleNameTypeBinding(_declarationFinder, module, parent, expression); + dynamic lExpression = expression.lExpression(); + var lExpressionBinding = Visit(module, parent, lExpression, withBlockVariable, ResolutionStatementContext.Undefined); + return new MemberAccessDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lExpressionBinding, statementContext, expression.unrestrictedName()); } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExprContext expression) + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.IndexExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { dynamic lExpression = expression.lExpression(); - var lExpressionBinding = Visit(module, parent, lExpression); - return new MemberAccessTypeBinding(_declarationFinder, module, parent, expression, lExpressionBinding); + var lExpressionBinding = Visit(module, parent, lExpression, withBlockVariable, ResolutionStatementContext.Undefined); + var argumentListBinding = VisitArgumentList(module, parent, expression.argumentList(), withBlockVariable, ResolutionStatementContext.Undefined); + return new IndexDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lExpressionBinding, argumentListBinding); } - private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExpressionContext expression) + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.IndexExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { dynamic lExpression = expression.lExpression(); - var lExpressionBinding = Visit(module, parent, lExpression); - return new MemberAccessTypeBinding(_declarationFinder, module, parent, expression, lExpressionBinding); + var lExpressionBinding = Visit(module, parent, lExpression, withBlockVariable, ResolutionStatementContext.Undefined); + var argumentListBinding = VisitArgumentList(module, parent, expression.argumentList(), withBlockVariable, ResolutionStatementContext.Undefined); + return new IndexDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lExpressionBinding, argumentListBinding); + } + + private ArgumentList VisitArgumentList(Declaration module, Declaration parent, VBAExpressionParser.ArgumentListContext argumentList, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + var convertedList = new ArgumentList(); + if (argumentList == null) + { + return convertedList; + } + var list = argumentList.positionalOrNamedArgumentList(); + if (list.positionalArgument() != null) + { + foreach (var expr in list.positionalArgument()) + { + convertedList.AddArgument(new ArgumentListArgument( + VisitArgumentBinding(module, parent, expr.argumentExpression(), withBlockVariable, + ResolutionStatementContext.Undefined), ArgumentListArgumentType.Positional)); + } + } + if (list.requiredPositionalArgument() != null) + { + convertedList.AddArgument(new ArgumentListArgument( + VisitArgumentBinding(module, parent, list.requiredPositionalArgument().argumentExpression(), + withBlockVariable, ResolutionStatementContext.Undefined), + ArgumentListArgumentType.Positional)); + } + if (list.namedArgumentList() != null) + { + foreach (var expr in list.namedArgumentList().namedArgument()) + { + convertedList.AddArgument(new ArgumentListArgument( + VisitArgumentBinding(module, parent, expr.argumentExpression(), + withBlockVariable, + ResolutionStatementContext.Undefined), + ArgumentListArgumentType.Named, + CreateNamedArgumentExpressionCreator(expr.unrestrictedName().GetText(), expr.unrestrictedName()))); + } + } + return convertedList; + } + + private Func CreateNamedArgumentExpressionCreator(string parameterName, ParserRuleContext context) + { + return calledProcedure => + { + ExpressionClassification classification; + if (calledProcedure.DeclarationType == DeclarationType.Procedure) + { + classification = ExpressionClassification.Subroutine; + } + else if (calledProcedure.DeclarationType == DeclarationType.Function || calledProcedure.DeclarationType == DeclarationType.LibraryFunction || calledProcedure.DeclarationType == DeclarationType.LibraryProcedure) + { + classification = ExpressionClassification.Function; + } + else + { + classification = ExpressionClassification.Property; + } + var parameter = _declarationFinder.FindParameter(calledProcedure, parameterName); + if (parameter != null) + { + return new SimpleNameExpression(parameter, classification, context); + } + else + { + return null; + } + }; + } + + private IExpressionBinding VisitArgumentBinding(Declaration module, Declaration parent, VBAExpressionParser.ArgumentExpressionContext argumentExpression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + if (argumentExpression.expression() != null) + { + dynamic expr = argumentExpression.expression(); + return Visit(module, parent, expr, withBlockVariable, ResolutionStatementContext.Undefined); + } + else + { + dynamic expr = argumentExpression.addressOfExpression(); + return Visit(module, parent, expr, withBlockVariable, ResolutionStatementContext.Undefined); + } + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.AddressOfExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return _procedurePointerBindingContext.BuildTree(module, parent, expression, withBlockVariable, statementContext); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.DictionaryAccessExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic lExpression = expression.lExpression(); + var lExpressionBinding = Visit(module, parent, lExpression, withBlockVariable, ResolutionStatementContext.Undefined); + return VisitDictionaryAccessExpression(module, parent, expression, expression.unrestrictedName(), lExpressionBinding, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.DictionaryAccessExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic lExpression = expression.lExpression(); + var lExpressionBinding = Visit(module, parent, lExpression, withBlockVariable, ResolutionStatementContext.Undefined); + return VisitDictionaryAccessExpression(module, parent, expression, expression.unrestrictedName(), lExpressionBinding, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding VisitDictionaryAccessExpression(Declaration module, Declaration parent, ParserRuleContext expression, ParserRuleContext nameContext, IExpressionBinding lExpressionBinding, ResolutionStatementContext statementContext) + { + /* + A dictionary access expression is syntactically translated into an index expression with the same + expression for and an argument list with a single positional argument with a + declared type of String and a value equal to the name value of . + */ + var fakeArgList = new ArgumentList(); + fakeArgList.AddArgument(new ArgumentListArgument(new LiteralDefaultBinding(nameContext), ArgumentListArgumentType.Positional)); + return new IndexDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lExpressionBinding, fakeArgList); + } + + private IExpressionBinding VisitDictionaryAccessExpression(Declaration module, Declaration parent, ParserRuleContext expression, ParserRuleContext nameContext, IBoundExpression lExpression, ResolutionStatementContext statementContext) + { + /* + A dictionary access expression is syntactically translated into an index expression with the same + expression for and an argument list with a single positional argument with a + declared type of String and a value equal to the name value of . + */ + var fakeArgList = new ArgumentList(); + fakeArgList.AddArgument(new ArgumentListArgument(new LiteralDefaultBinding(nameContext), ArgumentListArgumentType.Positional)); + return new IndexDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lExpression, fakeArgList); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.WithExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return Visit(module, parent, expression.withExpression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.WithExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + /* + A or is + statically resolved as a normal member access or dictionary access expression, respectively, as if + the innermost enclosing With block variable was specified for . If there is no + enclosing With block, the is invalid. + */ + if (expression.withMemberAccessExpression() != null) + { + return new MemberAccessDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, withBlockVariable, expression.withMemberAccessExpression().unrestrictedName().GetText(), statementContext, expression.withMemberAccessExpression().unrestrictedName()); + } + else + { + return VisitDictionaryAccessExpression(module, parent, expression, expression.withDictionaryAccessExpression().unrestrictedName(), withBlockVariable, ResolutionStatementContext.Undefined); + } + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.ParenthesizedExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic expressionParens = expression.expression(); + var expressionBinding = Visit(module, parent, expressionParens, withBlockVariable, ResolutionStatementContext.Undefined); + return new ParenthesizedDefaultBinding(expression, expressionBinding); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.ParenthesizedExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic expressionParens = expression.expression(); + var expressionBinding = Visit(module, parent, expressionParens, withBlockVariable, ResolutionStatementContext.Undefined); + return new ParenthesizedDefaultBinding(expression, expressionBinding); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.TypeOfIsExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return Visit(module, parent, expression.typeOfIsExpression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.TypeOfIsExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic booleanExpression = expression.expression(); + var booleanExpressionBinding = Visit(module, parent, booleanExpression, withBlockVariable, ResolutionStatementContext.Undefined); + dynamic typeExpression = expression.typeExpression(); + var typeExpressionBinding = Visit(module, parent, typeExpression, withBlockVariable, ResolutionStatementContext.Undefined); + return new TypeOfIsDefaultBinding(expression, booleanExpressionBinding, typeExpressionBinding); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.PowOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MultOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.IntDivOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.ModOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.AddOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.ConcatOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.RelationalOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LogicalAndOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LogicalOrOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LogicalXorOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LogicalEqvOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LogicalImpOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitBinaryOp(module, parent, expression, expression.expression()[0], expression.expression()[1], withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.UnaryMinusOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitUnaryOp(module, parent, expression, expression.expression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LogicalNotOpContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return VisitUnaryOp(module, parent, expression, expression.expression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LiteralExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return Visit(module, parent, expression.literalExpression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.InstanceExprContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return Visit(module, parent, expression.instanceExpression(), withBlockVariable, ResolutionStatementContext.Undefined); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.InstanceExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return new InstanceDefaultBinding(expression, module); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LiteralExpressionContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + return new LiteralDefaultBinding(expression); + } + + private IExpressionBinding VisitBinaryOp(Declaration module, Declaration parent, ParserRuleContext context, ParserRuleContext left, ParserRuleContext right, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic leftExpr = left; + var leftBinding = Visit(module, parent, leftExpr, withBlockVariable, ResolutionStatementContext.Undefined); + dynamic rightExpr = right; + var rightBinding = Visit(module, parent, rightExpr, withBlockVariable, ResolutionStatementContext.Undefined); + return new BinaryOpDefaultBinding(context, leftBinding, rightBinding); + } + + private IExpressionBinding VisitUnaryOp(Declaration module, Declaration parent, ParserRuleContext context, ParserRuleContext expr, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic exprExpr = expr; + var exprBinding = Visit(module, parent, exprExpr, withBlockVariable, ResolutionStatementContext.Undefined); + return new UnaryOpDefaultBinding(context, exprBinding); } } } diff --git a/Rubberduck.Parsing/Binding/IBindingContext.cs b/Rubberduck.Parsing/Binding/IBindingContext.cs index fe60dbcb06..0efe96761c 100644 --- a/Rubberduck.Parsing/Binding/IBindingContext.cs +++ b/Rubberduck.Parsing/Binding/IBindingContext.cs @@ -5,6 +5,7 @@ namespace Rubberduck.Parsing.Binding { public interface IBindingContext { - IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression); + IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext); + IExpressionBinding BuildTree(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext); } } diff --git a/Rubberduck.Parsing/Binding/IndexDefaultBinding.cs b/Rubberduck.Parsing/Binding/IndexDefaultBinding.cs new file mode 100644 index 0000000000..e32f826fd4 --- /dev/null +++ b/Rubberduck.Parsing/Binding/IndexDefaultBinding.cs @@ -0,0 +1,292 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; +using System.Linq; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class IndexDefaultBinding : IExpressionBinding + { + private readonly DeclarationFinder _declarationFinder; + private readonly Declaration _project; + private readonly Declaration _module; + private readonly Declaration _parent; + private readonly ParserRuleContext _expression; + private readonly IExpressionBinding _lExpressionBinding; + private IBoundExpression _lExpression; + private readonly ArgumentList _argumentList; + + private const int DEFAULT_MEMBER_RECURSION_LIMIT = 32; + private int _defaultMemberRecursionLimitCounter = 0; + + public IndexDefaultBinding( + DeclarationFinder declarationFinder, + Declaration project, + Declaration module, + Declaration parent, + ParserRuleContext expression, + IExpressionBinding lExpressionBinding, + ArgumentList argumentList) + : this( + declarationFinder, + project, + module, + parent, + expression, + (IBoundExpression)null, + argumentList) + { + _lExpressionBinding = lExpressionBinding; + } + + public IndexDefaultBinding( + DeclarationFinder declarationFinder, + Declaration project, + Declaration module, + Declaration parent, + ParserRuleContext expression, + IBoundExpression lExpression, + ArgumentList argumentList) + { + _declarationFinder = declarationFinder; + _project = project; + _module = module; + _parent = parent; + _expression = expression; + _lExpression = lExpression; + _argumentList = argumentList; + } + + private void ResolveArgumentList(Declaration calledProcedure) + { + foreach (var argument in _argumentList.Arguments) + { + argument.Resolve(calledProcedure); + } + } + + public IBoundExpression Resolve() + { + if (_lExpressionBinding != null) + { + _lExpression = _lExpressionBinding.Resolve(); + } + if (_lExpression != null) + { + ResolveArgumentList(_lExpression.ReferencedDeclaration); + } + else + { + ResolveArgumentList(null); + } + return Resolve(_lExpression); + } + + private IBoundExpression Resolve(IBoundExpression lExpression) + { + IBoundExpression boundExpression = null; + if (lExpression == null) + { + return null; + } + boundExpression = ResolveLExpressionIsVariablePropertyFunctionNoParameters(lExpression); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveLExpressionIsPropertyFunctionSubroutine(lExpression); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveLExpressionIsUnbound(lExpression); + if (boundExpression != null) + { + return boundExpression; + } + return null; + } + + private IBoundExpression ResolveLExpressionIsVariablePropertyFunctionNoParameters(IBoundExpression lExpression) + { + /* + is classified as a variable, or is classified as a property or function + with a parameter list that cannot accept any parameters and an that is not + empty, and one of the following is true (see below): + */ + bool isVariable = lExpression.Classification == ExpressionClassification.Variable; + bool propertyWithParameters = lExpression.Classification == ExpressionClassification.Property && ((IDeclarationWithParameter)lExpression.ReferencedDeclaration).Parameters.Any(); + bool functionWithParameters = lExpression.Classification == ExpressionClassification.Function && ((IDeclarationWithParameter)lExpression.ReferencedDeclaration).Parameters.Any(); + if (isVariable || + ((lExpression.Classification == ExpressionClassification.Property || lExpression.Classification == ExpressionClassification.Function) && _argumentList.HasArguments)) + { + IBoundExpression boundExpression = null; + var asTypeName = lExpression.ReferencedDeclaration.AsTypeName; + var asTypeDeclaration = lExpression.ReferencedDeclaration.AsTypeDeclaration; + boundExpression = ResolveDefaultMember(lExpression, asTypeName, asTypeDeclaration); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveLExpressionDeclaredTypeIsArray(lExpression, asTypeDeclaration); + if (boundExpression != null) + { + return boundExpression; + } + return boundExpression; + } + return null; + } + + private IBoundExpression ResolveDefaultMember(IBoundExpression lExpression, string asTypeName, Declaration asTypeDeclaration) + { + /* + The declared type of is Object or Variant, and contains no + named arguments. In this case, the index expression is classified as an unbound member with + a declared type of Variant, referencing with no member name. + */ + if (asTypeName != null && (asTypeName.ToUpperInvariant() == "VARIANT" || asTypeName.ToUpperInvariant() == "OBJECT")) + { + return new IndexExpression(null, ExpressionClassification.Unbound, _expression, lExpression, _argumentList); + } + /* + The declared type of is a specific class, which has a public default Property + Get, Property Let, function or subroutine, and one of the following is true: + */ + bool hasDefaultMember = asTypeDeclaration != null + && asTypeDeclaration.DeclarationType == DeclarationType.ClassModule + && ((ClassModuleDeclaration)asTypeDeclaration).DefaultMember != null; + if (hasDefaultMember) + { + ClassModuleDeclaration classModule = (ClassModuleDeclaration)asTypeDeclaration; + Declaration defaultMember = classModule.DefaultMember; + bool isPropertyGetLetFunctionProcedure = + defaultMember.DeclarationType == DeclarationType.PropertyGet + || defaultMember.DeclarationType == DeclarationType.PropertyLet + || defaultMember.DeclarationType == DeclarationType.Function + || defaultMember.DeclarationType == DeclarationType.Procedure; + bool isPublic = + defaultMember.Accessibility == Accessibility.Global + || defaultMember.Accessibility == Accessibility.Implicit + || defaultMember.Accessibility == Accessibility.Public; + if (isPropertyGetLetFunctionProcedure && isPublic) + { + /** + This default member cannot accept any parameters. In this case, the static analysis restarts + recursively, as if this default member was specified instead for with the + same . + */ + if (((IDeclarationWithParameter)defaultMember).Parameters.Count() == 0 && _argumentList.HasArguments) + { + // Recursion limit reached, abort. + if (DEFAULT_MEMBER_RECURSION_LIMIT == _defaultMemberRecursionLimitCounter) + { + return null; + } + _defaultMemberRecursionLimitCounter++; + ExpressionClassification classification; + if (defaultMember.DeclarationType.HasFlag(DeclarationType.Property)) + { + classification = ExpressionClassification.Property; + } + else if (defaultMember.DeclarationType == DeclarationType.Procedure) + { + classification = ExpressionClassification.Subroutine; + } + else + { + classification = ExpressionClassification.Function; + } + var defaultMemberAsLExpression = new SimpleNameExpression(defaultMember, classification, _expression); + return Resolve(defaultMemberAsLExpression); + } + else + { + /* + This default member’s parameter list is compatible with . In this case, the + index expression references this default member and takes on its classification and + declared type. + + Note: To not have to deal with implementing parameter compatibility ourselves we simply assume + that they are compatible otherwise it wouldn't have compiled in the VBE. + */ + return new IndexExpression(defaultMember, lExpression.Classification, _expression, lExpression, _argumentList); + } + } + } + return null; + } + + private IBoundExpression ResolveLExpressionDeclaredTypeIsArray(IBoundExpression lExpression, Declaration asTypeDeclaration) + { + // TODO: Test this as soon as parser has as type fixed. + + /* + The declared type of is an array type, an empty argument list has not already + been specified for it, and one of the following is true: + */ + if (lExpression.ReferencedDeclaration.IsArray()) + { + /* + represents an empty argument list. In this case, the index expression + takes on the classification and declared type of and references the same + array. + */ + if (!_argumentList.HasArguments) + { + return new IndexExpression(asTypeDeclaration, lExpression.Classification, _expression, lExpression, _argumentList); + } + else + { + /* + represents an argument list with a number of positional arguments equal + to the rank of the array, and with no named arguments. In this case, the index expression + references an individual element of the array, is classified as a variable and has the + declared type of the array’s element type. + + Note: We assume this is the case without checking, enfored by the VBE. + */ + if (!_argumentList.HasNamedArguments) + { + return new IndexExpression(asTypeDeclaration, ExpressionClassification.Variable, _expression, lExpression, _argumentList); + } + } + } + return null; + } + + private IBoundExpression ResolveLExpressionIsPropertyFunctionSubroutine(IBoundExpression lExpression) + { + /* + is classified as a property or function and its parameter list is compatible with + . In this case, the index expression references and takes on its + classification and declared type. + + is classified as a subroutine and its parameter list is compatible with . In this case, the index expression references and takes on its classification + and declared type. + + Note: We assume compatibility through enforcement by the VBE. + */ + if (lExpression.Classification == ExpressionClassification.Property + || lExpression.Classification == ExpressionClassification.Function + || lExpression.Classification == ExpressionClassification.Subroutine) + { + return new IndexExpression(lExpression.ReferencedDeclaration, lExpression.Classification, _expression, lExpression, _argumentList); + } + return null; + } + + private IBoundExpression ResolveLExpressionIsUnbound(IBoundExpression lExpression) + { + /* + is classified as an unbound member. In this case, the index expression references + , is classified as an unbound member and its declared type is Variant. + */ + if (lExpression.Classification == ExpressionClassification.Unbound) + { + return new IndexExpression(lExpression.ReferencedDeclaration, ExpressionClassification.Unbound, _expression, lExpression, _argumentList); + } + return null; + } + } +} diff --git a/Rubberduck.Parsing/Binding/IndexExpression.cs b/Rubberduck.Parsing/Binding/IndexExpression.cs new file mode 100644 index 0000000000..30306159e4 --- /dev/null +++ b/Rubberduck.Parsing/Binding/IndexExpression.cs @@ -0,0 +1,39 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class IndexExpression : BoundExpression + { + private readonly IBoundExpression _lExpression; + private readonly ArgumentList _argumentList; + + public IndexExpression( + Declaration referencedDeclaration, + ExpressionClassification classification, + ParserRuleContext context, + IBoundExpression lExpression, + ArgumentList argumentList) + : base(referencedDeclaration, classification, context) + { + _lExpression = lExpression; + _argumentList = argumentList; + } + + public IBoundExpression LExpression + { + get + { + return _lExpression; + } + } + + public ArgumentList ArgumentList + { + get + { + return _argumentList; + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/InstanceDefaultBinding.cs b/Rubberduck.Parsing/Binding/InstanceDefaultBinding.cs new file mode 100644 index 0000000000..8d08e98cff --- /dev/null +++ b/Rubberduck.Parsing/Binding/InstanceDefaultBinding.cs @@ -0,0 +1,24 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class InstanceDefaultBinding : IExpressionBinding + { + private readonly ParserRuleContext _context; + private readonly Declaration _module; + + public InstanceDefaultBinding( + ParserRuleContext context, + Declaration module) + { + _context = context; + _module = module; + } + + public IBoundExpression Resolve() + { + return new InstanceExpression(_module, _context); + } + } +} diff --git a/Rubberduck.Parsing/Binding/InstanceExpression.cs b/Rubberduck.Parsing/Binding/InstanceExpression.cs new file mode 100644 index 0000000000..8b694ae403 --- /dev/null +++ b/Rubberduck.Parsing/Binding/InstanceExpression.cs @@ -0,0 +1,16 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class InstanceExpression : BoundExpression + { + public InstanceExpression( + Declaration referencedDeclaration, + ParserRuleContext context) + // Note: According to MS VBAL actually a value(?) but we reclassify to bring it more in line with the rest of the binding process. + : base(referencedDeclaration, ExpressionClassification.Variable, context) + { + } + } +} diff --git a/Rubberduck.Parsing/Binding/LiteralDefaultBinding.cs b/Rubberduck.Parsing/Binding/LiteralDefaultBinding.cs new file mode 100644 index 0000000000..ea856e0c3b --- /dev/null +++ b/Rubberduck.Parsing/Binding/LiteralDefaultBinding.cs @@ -0,0 +1,19 @@ +using Antlr4.Runtime; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class LiteralDefaultBinding : IExpressionBinding + { + private readonly ParserRuleContext _context; + + public LiteralDefaultBinding(ParserRuleContext context) + { + _context = context; + } + + public IBoundExpression Resolve() + { + return new LiteralExpression(_context); + } + } +} diff --git a/Rubberduck.Parsing/Binding/LiteralExpression.cs b/Rubberduck.Parsing/Binding/LiteralExpression.cs new file mode 100644 index 0000000000..45cd18366d --- /dev/null +++ b/Rubberduck.Parsing/Binding/LiteralExpression.cs @@ -0,0 +1,12 @@ +using Antlr4.Runtime; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class LiteralExpression : BoundExpression + { + public LiteralExpression(ParserRuleContext context) + : base(null, ExpressionClassification.Value, context) + { + } + } +} diff --git a/Rubberduck.Parsing/Binding/MemberAccessDefaultBinding.cs b/Rubberduck.Parsing/Binding/MemberAccessDefaultBinding.cs new file mode 100644 index 0000000000..c63671f120 --- /dev/null +++ b/Rubberduck.Parsing/Binding/MemberAccessDefaultBinding.cs @@ -0,0 +1,461 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class MemberAccessDefaultBinding : IExpressionBinding + { + private readonly DeclarationFinder _declarationFinder; + private readonly Declaration _project; + private readonly Declaration _module; + private readonly Declaration _parent; + private readonly ParserRuleContext _context; + private ParserRuleContext _unrestrictedNameContext; + private readonly string _name; + private readonly IExpressionBinding _lExpressionBinding; + private IBoundExpression _lExpression; + private readonly DeclarationType _propertySearchType; + + public MemberAccessDefaultBinding( + DeclarationFinder declarationFinder, + Declaration project, + Declaration module, + Declaration parent, + VBAExpressionParser.MemberAccessExpressionContext expression, + IExpressionBinding lExpressionBinding, + ResolutionStatementContext statementContext, + ParserRuleContext unrestrictedNameContext) + : this( + declarationFinder, + project, + module, + parent, + expression, + null, + ExpressionName.GetName(expression.unrestrictedName()), + statementContext, + unrestrictedNameContext) + { + _lExpressionBinding = lExpressionBinding; + } + + public MemberAccessDefaultBinding( + DeclarationFinder declarationFinder, + Declaration project, + Declaration module, + Declaration parent, + VBAExpressionParser.MemberAccessExprContext expression, + IExpressionBinding lExpressionBinding, + ResolutionStatementContext statementContext, + ParserRuleContext unrestrictedNameContext) + : this( + declarationFinder, + project, + module, + parent, + expression, + null, + ExpressionName.GetName(expression.unrestrictedName()), + statementContext, + unrestrictedNameContext) + { + _lExpressionBinding = lExpressionBinding; + } + + public MemberAccessDefaultBinding( + DeclarationFinder declarationFinder, + Declaration project, + Declaration module, + Declaration parent, + ParserRuleContext expression, + IBoundExpression lExpression, + string name, + ResolutionStatementContext statementContext, + ParserRuleContext unrestrictedNameContext) + { + _declarationFinder = declarationFinder; + _project = project; + _module = module; + _parent = parent; + _context = expression; + _lExpression = lExpression; + _name = name; + _propertySearchType = StatementContext.GetSearchDeclarationType(statementContext); + _unrestrictedNameContext = unrestrictedNameContext; + } + + public IBoundExpression Resolve() + { + IBoundExpression boundExpression = null; + if (_lExpressionBinding != null) + { + _lExpression = _lExpressionBinding.Resolve(); + } + if (_lExpression == null) + { + return null; + } + boundExpression = ResolveLExpressionIsVariablePropertyOrFunction(); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveLExpressionIsUnbound(); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveLExpressionIsProject(); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveLExpressionIsProceduralModule(); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveLExpressionIsEnum(); + if (boundExpression != null) + { + return boundExpression; + } + return null; + } + + private IBoundExpression ResolveLExpressionIsVariablePropertyOrFunction() + { + /* + + is classified as a variable, a property or a function and one of the following is + true: + 1. The declared type of is a UDT type or specific class, this type has an accessible + member named , either does not specify a type + character or specifies a type character whose associated type matches the declared type of + the member, and one of the following is true: + + 1.1 The member is a variable, property or function. In this case, the member access expression + is classified as a variable, property or function, respectively, refers to the member, and has + the same declared type as the member. + + 1.2 The member is a subroutine. In this case, the member access expression is classified as a + subroutine and refers to the member. + + + 2. The declared type of is Object or Variant. In this case, the member access + expression is classified as an unbound member and has a declared type of Variant. + */ + if ( + _lExpression.Classification != ExpressionClassification.Variable + && _lExpression.Classification != ExpressionClassification.Property + && _lExpression.Classification != ExpressionClassification.Function) + { + return null; + } + var lExpressionDeclaration = _lExpression.ReferencedDeclaration; + var referencedType = lExpressionDeclaration.AsTypeDeclaration; + if (referencedType == null) + { + return null; + } + if (referencedType.DeclarationType != DeclarationType.UserDefinedType && referencedType.DeclarationType != DeclarationType.ClassModule) + { + return null; + } + var udtMember = _declarationFinder.FindMemberWithParent(_project, _module, _parent, referencedType, _name, DeclarationType.UserDefinedTypeMember); + if (udtMember != null) + { + return new MemberAccessExpression(udtMember, ExpressionClassification.Variable, _context, _unrestrictedNameContext, _lExpression); + } + var variable = _declarationFinder.FindMemberWithParent(_project, _module, _parent, referencedType, _name, DeclarationType.Variable); + if (variable != null) + { + return new MemberAccessExpression(variable, ExpressionClassification.Variable, _context, _unrestrictedNameContext, _lExpression); + } + var property = _declarationFinder.FindMemberWithParent(_project, _module, _parent, referencedType, _name, _propertySearchType); + if (property != null) + { + return new MemberAccessExpression(property, ExpressionClassification.Property, _context, _unrestrictedNameContext, _lExpression); + } + var function = _declarationFinder.FindMemberWithParent(_project, _module, _parent, referencedType, _name, DeclarationType.Function); + if (function != null) + { + return new MemberAccessExpression(function, ExpressionClassification.Function, _context, _unrestrictedNameContext, _lExpression); + } + var subroutine = _declarationFinder.FindMemberWithParent(_project, _module, _parent, referencedType, _name, DeclarationType.Procedure); + if (subroutine != null) + { + return new MemberAccessExpression(subroutine, ExpressionClassification.Subroutine, _context, _unrestrictedNameContext, _lExpression); + } + // Note: To not have to deal with declared types we simply assume that no match means unbound member. + // This way the rest of the member access expression can still be bound. + return new MemberAccessExpression(null, ExpressionClassification.Unbound, _context, _unrestrictedNameContext, _lExpression); + } + + private IBoundExpression ResolveLExpressionIsUnbound() + { + if (_lExpression.Classification != ExpressionClassification.Unbound) + { + return null; + } + return new MemberAccessExpression(null, ExpressionClassification.Unbound, _context, _unrestrictedNameContext, _lExpression); + } + + private IBoundExpression ResolveLExpressionIsProject() + { + /* + is classified as a project, this project is either the enclosing project or a + referenced project, and one of the following is true: + - refers to the enclosing project and is either the name of + the enclosing project or a referenced project. In this case, the member access expression is + classified as a project and refers to the specified project. + - The project has an accessible procedural module named . In this case, the + member access expression is classified as a procedural module and refers to the specified + procedural module. + - The project does not have an accessible procedural module named and + exactly one of the procedural modules within the project has an accessible member named + , either does not specify a type character or + specifies a type character whose associated type matches the declared type of the member, + and one of the following is true: + - The member is a variable, property or function. In this case, the member access expression + is classified as a variable, property or function, respectively, refers to the member, and has + the same declared type as the member. + - The member is a subroutine. In this case, the member access expression is classified as a + subroutine and refers to the member. + - The member is a value. In this case, the member access expression is classified as a value + with the same declared type as the member. + */ + if (_lExpression.Classification != ExpressionClassification.Project) + { + return null; + } + IBoundExpression boundExpression = null; + var referencedProject = _lExpression.ReferencedDeclaration; + bool lExpressionIsEnclosingProject = _project.Equals(referencedProject); + boundExpression = ResolveProject(); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveProceduralModule(lExpressionIsEnclosingProject, referencedProject); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveDefaultInstanceVariableClass(lExpressionIsEnclosingProject, referencedProject); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInReferencedProject(lExpressionIsEnclosingProject, referencedProject, DeclarationType.Variable, ExpressionClassification.Variable); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInReferencedProject(lExpressionIsEnclosingProject, referencedProject, _propertySearchType, ExpressionClassification.Property); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInReferencedProject(lExpressionIsEnclosingProject, referencedProject, DeclarationType.Function, ExpressionClassification.Function); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInReferencedProject(lExpressionIsEnclosingProject, referencedProject, DeclarationType.Procedure, ExpressionClassification.Subroutine); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInReferencedProject(lExpressionIsEnclosingProject, referencedProject, DeclarationType.Constant, ExpressionClassification.Value); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInReferencedProject(lExpressionIsEnclosingProject, referencedProject, DeclarationType.Enumeration, ExpressionClassification.Value); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInReferencedProject(lExpressionIsEnclosingProject, referencedProject, DeclarationType.EnumerationMember, ExpressionClassification.Value); + if (boundExpression != null) + { + return boundExpression; + } + return boundExpression; + } + + private IBoundExpression ResolveProject() + { + if (_declarationFinder.IsMatch(_project.ProjectName, _name)) + { + return new MemberAccessExpression(_project, ExpressionClassification.Project, _context, _unrestrictedNameContext, _lExpression); + } + var referencedProjectRightOfDot = _declarationFinder.FindReferencedProject(_project, _name); + if (referencedProjectRightOfDot != null) + { + return new MemberAccessExpression(referencedProjectRightOfDot, ExpressionClassification.Project, _context, _unrestrictedNameContext, _lExpression); + } + return null; + } + + private IBoundExpression ResolveProceduralModule(bool lExpressionIsEnclosingProject, Declaration referencedProject) + { + if (lExpressionIsEnclosingProject) + { + if (_module.DeclarationType == DeclarationType.ProceduralModule && _declarationFinder.IsMatch(_module.IdentifierName, _name)) + { + return new MemberAccessExpression(_module, ExpressionClassification.ProceduralModule, _context, _unrestrictedNameContext, _lExpression); + } + var proceduralModuleEnclosingProject = _declarationFinder.FindModuleEnclosingProjectWithoutEnclosingModule(_project, _module, _name, DeclarationType.ProceduralModule); + if (proceduralModuleEnclosingProject != null) + { + return new MemberAccessExpression(proceduralModuleEnclosingProject, ExpressionClassification.ProceduralModule, _context, _unrestrictedNameContext, _lExpression); + } + } + else + { + var proceduralModuleInReferencedProject = _declarationFinder.FindModuleReferencedProject(_project, _module, referencedProject, _name, DeclarationType.ProceduralModule); + if (proceduralModuleInReferencedProject != null) + { + return new MemberAccessExpression(proceduralModuleInReferencedProject, ExpressionClassification.ProceduralModule, _context, _unrestrictedNameContext, _lExpression); + } + } + return null; + } + + private IBoundExpression ResolveDefaultInstanceVariableClass(bool lExpressionIsEnclosingProject, Declaration referencedProject) + { + if (!lExpressionIsEnclosingProject) + { + return null; + } + var defaultInstanceVariableClass = _declarationFinder.FindDefaultInstanceVariableClassEnclosingProject(_project, _module, _name); + if (defaultInstanceVariableClass != null) + { + return new MemberAccessExpression(defaultInstanceVariableClass, ExpressionClassification.Type, _context, _unrestrictedNameContext, _lExpression); + } + return null; + } + + private IBoundExpression ResolveMemberInReferencedProject(bool lExpressionIsEnclosingProject, Declaration referencedProject, DeclarationType memberType, ExpressionClassification classification) + { + if (lExpressionIsEnclosingProject) + { + var foundType = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, _name, memberType); + if (foundType != null) + { + return new MemberAccessExpression(foundType, classification, _context, _unrestrictedNameContext, _lExpression); + } + var accessibleType = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, _name, memberType); + if (accessibleType != null) + { + return new MemberAccessExpression(accessibleType, classification, _context, _unrestrictedNameContext, _lExpression); + } + } + else + { + var referencedProjectType = _declarationFinder.FindMemberReferencedProject(_project, _module, _parent, referencedProject, _name, memberType); + if (referencedProjectType != null) + { + return new MemberAccessExpression(referencedProjectType, classification, _context, _unrestrictedNameContext, _lExpression); + } + } + return null; + } + + private IBoundExpression ResolveLExpressionIsProceduralModule() + { + /* + is classified as a procedural module, this procedural module has an accessible + member named , either does not specify a type + character or specifies a type character whose associated type matches the declared type of the + member, and one of the following is true: + - The member is a variable, property or function. In this case, the member access expression is + classified as a variable, property or function, respectively, and has the same declared type as + the member. + - The member is a subroutine. In this case, the member access expression is classified as a + subroutine. + - The member is a value. In this case, the member access expression is classified as a value with + the same declared type as the member. + */ + bool isDefaultInstanceVariableClass = _lExpression.Classification == ExpressionClassification.Type && _lExpression.ReferencedDeclaration.DeclarationType == DeclarationType.ClassModule && ((ClassModuleDeclaration)_lExpression.ReferencedDeclaration).HasDefaultInstanceVariable; + if (_lExpression.Classification != ExpressionClassification.ProceduralModule && !isDefaultInstanceVariableClass) + { + return null; + } + IBoundExpression boundExpression = null; + boundExpression = ResolveMemberInModule(_lExpression.ReferencedDeclaration, DeclarationType.Variable, ExpressionClassification.Variable); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInModule(_lExpression.ReferencedDeclaration, _propertySearchType, ExpressionClassification.Property); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInModule(_lExpression.ReferencedDeclaration, DeclarationType.Function, ExpressionClassification.Function); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInModule(_lExpression.ReferencedDeclaration, DeclarationType.Procedure, ExpressionClassification.Subroutine); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInModule(_lExpression.ReferencedDeclaration, DeclarationType.Constant, ExpressionClassification.Value); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInModule(_lExpression.ReferencedDeclaration, DeclarationType.Enumeration, ExpressionClassification.Value); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveMemberInModule(_lExpression.ReferencedDeclaration, DeclarationType.EnumerationMember, ExpressionClassification.Value); + if (boundExpression != null) + { + return boundExpression; + } + return boundExpression; + } + + private IBoundExpression ResolveMemberInModule(Declaration module, DeclarationType memberType, ExpressionClassification classification) + { + var enclosingProjectType = _declarationFinder.FindMemberEnclosedProjectInModule(_project, _module, _parent, module, _name, memberType); + if (enclosingProjectType != null) + { + return new MemberAccessExpression(enclosingProjectType, classification, _context, _unrestrictedNameContext, _lExpression); + } + + var referencedProjectType = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, module, _name, memberType); + if (referencedProjectType != null) + { + return new MemberAccessExpression(referencedProjectType, classification, _context, _unrestrictedNameContext, _lExpression); + } + return null; + } + + private IBoundExpression ResolveLExpressionIsEnum() + { + /* + is classified as a type, this type is an Enum type, and this type has an enum + member named . In this case, the member access expression is classified + as a value with the same declared type as the enum member. + */ + if (_lExpression.Classification != ExpressionClassification.Type && _lExpression.ReferencedDeclaration.DeclarationType != DeclarationType.Enumeration) + { + return null; + } + var enumMember = _declarationFinder.FindMemberWithParent(_project, _module, _parent, _lExpression.ReferencedDeclaration, _name, DeclarationType.EnumerationMember); + if (enumMember != null) + { + return new MemberAccessExpression(enumMember, ExpressionClassification.Value, _context, _unrestrictedNameContext, _lExpression); + } + return null; + } + } +} diff --git a/Rubberduck.Parsing/Binding/MemberAccessExpression.cs b/Rubberduck.Parsing/Binding/MemberAccessExpression.cs index 09cc7de055..a1eb0ade22 100644 --- a/Rubberduck.Parsing/Binding/MemberAccessExpression.cs +++ b/Rubberduck.Parsing/Binding/MemberAccessExpression.cs @@ -6,15 +6,18 @@ namespace Rubberduck.Parsing.Binding public sealed class MemberAccessExpression : BoundExpression { private readonly IBoundExpression _lExpression; + private readonly ParserRuleContext _unrestrictedNameContext; public MemberAccessExpression( Declaration referencedDeclaration, ExpressionClassification classification, ParserRuleContext context, + ParserRuleContext unrestrictedNameContext, IBoundExpression lExpression) : base(referencedDeclaration, classification, context) { _lExpression = lExpression; + _unrestrictedNameContext = unrestrictedNameContext; } public IBoundExpression LExpression @@ -24,5 +27,13 @@ public IBoundExpression LExpression return _lExpression; } } + + public ParserRuleContext UnrestrictedNameContext + { + get + { + return _unrestrictedNameContext; + } + } } } diff --git a/Rubberduck.Parsing/Binding/MemberAccessProcedurePointerBinding.cs b/Rubberduck.Parsing/Binding/MemberAccessProcedurePointerBinding.cs index 27e7af82ac..cf6c15b411 100644 --- a/Rubberduck.Parsing/Binding/MemberAccessProcedurePointerBinding.cs +++ b/Rubberduck.Parsing/Binding/MemberAccessProcedurePointerBinding.cs @@ -11,36 +11,43 @@ public sealed class MemberAccessProcedurePointerBinding : IExpressionBinding private readonly Declaration _parent; private readonly VBAExpressionParser.MemberAccessExpressionContext _memberAccessExpression; private readonly VBAExpressionParser.MemberAccessExprContext _memberAccessExpr; + private ParserRuleContext _unrestrictedNameContext; private readonly IExpressionBinding _lExpressionBinding; public MemberAccessProcedurePointerBinding( DeclarationFinder declarationFinder, + Declaration project, Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExpressionContext expression, + ParserRuleContext unrestrictedNameContext, IExpressionBinding lExpressionBinding) { _declarationFinder = declarationFinder; - _project = module.ParentDeclaration; + _project = project; _module = module; _parent = parent; _memberAccessExpression = expression; _lExpressionBinding = lExpressionBinding; + _unrestrictedNameContext = unrestrictedNameContext; } public MemberAccessProcedurePointerBinding( DeclarationFinder declarationFinder, + Declaration project, Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExprContext expression, + ParserRuleContext unrestrictedNameContext, IExpressionBinding lExpressionBinding) { _declarationFinder = declarationFinder; - _project = module.ParentDeclaration; + _project = project; _module = module; _parent = parent; _memberAccessExpr = expression; _lExpressionBinding = lExpressionBinding; + _unrestrictedNameContext = unrestrictedNameContext; } private ParserRuleContext GetExpressionContext() @@ -101,7 +108,7 @@ does not specify a type character or specifies a type character whose associated var enclosingProjectType = _declarationFinder.FindMemberEnclosedProjectInModule(_project, _module, _parent, module, name, memberType); if (enclosingProjectType != null) { - return new MemberAccessExpression(enclosingProjectType, classification, GetExpressionContext(), lExpression); + return new MemberAccessExpression(enclosingProjectType, classification, GetExpressionContext(), _unrestrictedNameContext, lExpression); } return null; } diff --git a/Rubberduck.Parsing/Binding/MemberAccessTypeBinding.cs b/Rubberduck.Parsing/Binding/MemberAccessTypeBinding.cs index 7ff9d8adf4..335cca72cb 100644 --- a/Rubberduck.Parsing/Binding/MemberAccessTypeBinding.cs +++ b/Rubberduck.Parsing/Binding/MemberAccessTypeBinding.cs @@ -11,36 +11,43 @@ public sealed class MemberAccessTypeBinding : IExpressionBinding private readonly Declaration _parent; private readonly VBAExpressionParser.MemberAccessExpressionContext _memberAccessExpression; private readonly VBAExpressionParser.MemberAccessExprContext _memberAccessExpr; + private ParserRuleContext _unrestrictedNameContext; private readonly IExpressionBinding _lExpressionBinding; public MemberAccessTypeBinding( DeclarationFinder declarationFinder, + Declaration project, Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExpressionContext expression, + ParserRuleContext unrestrictedNameContext, IExpressionBinding lExpressionBinding) { _declarationFinder = declarationFinder; - _project = module.ParentDeclaration; + _project = project; _module = module; _parent = parent; _memberAccessExpression = expression; _lExpressionBinding = lExpressionBinding; + _unrestrictedNameContext = unrestrictedNameContext; } public MemberAccessTypeBinding( DeclarationFinder declarationFinder, + Declaration project, Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExprContext expression, + ParserRuleContext unrestrictedNameContext, IExpressionBinding lExpressionBinding) { _declarationFinder = declarationFinder; - _project = module.ParentDeclaration; + _project = project; _module = module; _parent = parent; _memberAccessExpr = expression; _lExpressionBinding = lExpressionBinding; + _unrestrictedNameContext = unrestrictedNameContext; } private ParserRuleContext GetExpressionContext() @@ -123,14 +130,14 @@ private IBoundExpression ResolveProject(IBoundExpression lExpression, string nam the enclosing project or a referenced project. In this case, the member access expression is classified as a project and refers to the specified project. */ - if (_declarationFinder.IsMatch(_project.Project.Name, name)) + if (_declarationFinder.IsMatch(_project.ProjectName, name)) { - return new MemberAccessExpression(_project, ExpressionClassification.Project, GetExpressionContext(), lExpression); + return new MemberAccessExpression(_project, ExpressionClassification.Project, GetExpressionContext(), _unrestrictedNameContext, lExpression); } var referencedProjectRightOfDot = _declarationFinder.FindReferencedProject(_project, name); if (referencedProjectRightOfDot != null) { - return new MemberAccessExpression(referencedProjectRightOfDot, ExpressionClassification.Project, GetExpressionContext(), lExpression); + return new MemberAccessExpression(referencedProjectRightOfDot, ExpressionClassification.Project, GetExpressionContext(), _unrestrictedNameContext, lExpression); } return null; } @@ -146,12 +153,12 @@ procedural module. { if (_module.DeclarationType == DeclarationType.ProceduralModule && _declarationFinder.IsMatch(_module.IdentifierName, name)) { - return new MemberAccessExpression(_module, ExpressionClassification.ProceduralModule, GetExpressionContext(), lExpression); + return new MemberAccessExpression(_module, ExpressionClassification.ProceduralModule, GetExpressionContext(), _unrestrictedNameContext, lExpression); } var proceduralModuleEnclosingProject = _declarationFinder.FindModuleEnclosingProjectWithoutEnclosingModule(_project, _module, name, DeclarationType.ProceduralModule); if (proceduralModuleEnclosingProject != null) { - return new MemberAccessExpression(proceduralModuleEnclosingProject, ExpressionClassification.ProceduralModule, GetExpressionContext(), lExpression); + return new MemberAccessExpression(proceduralModuleEnclosingProject, ExpressionClassification.ProceduralModule, GetExpressionContext(), _unrestrictedNameContext, lExpression); } } else @@ -159,7 +166,7 @@ procedural module. var proceduralModuleInReferencedProject = _declarationFinder.FindModuleReferencedProject(_project, _module, referencedProject, name, DeclarationType.ProceduralModule); if (proceduralModuleInReferencedProject != null) { - return new MemberAccessExpression(proceduralModuleInReferencedProject, ExpressionClassification.ProceduralModule, GetExpressionContext(), lExpression); + return new MemberAccessExpression(proceduralModuleInReferencedProject, ExpressionClassification.ProceduralModule, GetExpressionContext(), _unrestrictedNameContext, lExpression); } } return null; @@ -175,12 +182,12 @@ member access expression is classified as a type and refers to the specified cla { if (_module.DeclarationType == DeclarationType.ClassModule && _declarationFinder.IsMatch(_module.IdentifierName, name)) { - return new MemberAccessExpression(_module, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(_module, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } var classModuleEnclosingProject = _declarationFinder.FindModuleEnclosingProjectWithoutEnclosingModule(_project, _module, name, DeclarationType.ClassModule); if (classModuleEnclosingProject != null) { - return new MemberAccessExpression(classModuleEnclosingProject, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(classModuleEnclosingProject, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } } else @@ -188,7 +195,7 @@ member access expression is classified as a type and refers to the specified cla var classModuleInReferencedProject = _declarationFinder.FindModuleReferencedProject(_project, _module, referencedProject, name, DeclarationType.ClassModule); if (classModuleInReferencedProject != null) { - return new MemberAccessExpression(classModuleInReferencedProject, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(classModuleInReferencedProject, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } } return null; @@ -207,12 +214,12 @@ refers to the specified UDT or enum. var foundType = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, memberType); if (foundType != null) { - return new MemberAccessExpression(foundType, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(foundType, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } var accessibleType = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, memberType); if (accessibleType != null) { - return new MemberAccessExpression(accessibleType, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(accessibleType, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } } else @@ -220,7 +227,7 @@ refers to the specified UDT or enum. var referencedProjectType = _declarationFinder.FindMemberReferencedProject(_project, _module, _parent, referencedProject, name, memberType); if (referencedProjectType != null) { - return new MemberAccessExpression(referencedProjectType, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(referencedProjectType, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } } return null; @@ -259,13 +266,13 @@ Enum type. var enclosingProjectType = _declarationFinder.FindMemberEnclosedProjectInModule(_project, _module, _parent, module, name, memberType); if (enclosingProjectType != null) { - return new MemberAccessExpression(enclosingProjectType, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(enclosingProjectType, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } var referencedProjectType = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, module, name, memberType); if (referencedProjectType != null) { - return new MemberAccessExpression(referencedProjectType, ExpressionClassification.Type, GetExpressionContext(), lExpression); + return new MemberAccessExpression(referencedProjectType, ExpressionClassification.Type, GetExpressionContext(), _unrestrictedNameContext, lExpression); } return null; } diff --git a/Rubberduck.Parsing/Binding/NewExpression.cs b/Rubberduck.Parsing/Binding/NewExpression.cs index 8447b14f37..32f479e040 100644 --- a/Rubberduck.Parsing/Binding/NewExpression.cs +++ b/Rubberduck.Parsing/Binding/NewExpression.cs @@ -11,7 +11,8 @@ public NewExpression( Declaration referencedDeclaration, ParserRuleContext context, IBoundExpression typeExpression) - : base(referencedDeclaration, ExpressionClassification.Value, context) + // Marked as Variable instead of Value to integrate into rest of binding process. + : base(referencedDeclaration, ExpressionClassification.Variable, context) { _typeExpression = typeExpression; } diff --git a/Rubberduck.Parsing/Binding/ParenthesizedDefaultBinding.cs b/Rubberduck.Parsing/Binding/ParenthesizedDefaultBinding.cs new file mode 100644 index 0000000000..1743dd41a6 --- /dev/null +++ b/Rubberduck.Parsing/Binding/ParenthesizedDefaultBinding.cs @@ -0,0 +1,29 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class ParenthesizedDefaultBinding : IExpressionBinding + { + private readonly ParserRuleContext _context; + private readonly IExpressionBinding _expressionBinding; + + public ParenthesizedDefaultBinding( + ParserRuleContext context, + IExpressionBinding expressionBinding) + { + _context = context; + _expressionBinding = expressionBinding; + } + + public IBoundExpression Resolve() + { + var expr = _expressionBinding.Resolve(); + if (expr == null) + { + return null; + } + return new ParenthesizedExpression(expr.ReferencedDeclaration, _context, expr); + } + } +} diff --git a/Rubberduck.Parsing/Binding/ParenthesizedExpression.cs b/Rubberduck.Parsing/Binding/ParenthesizedExpression.cs new file mode 100644 index 0000000000..5d600db14b --- /dev/null +++ b/Rubberduck.Parsing/Binding/ParenthesizedExpression.cs @@ -0,0 +1,27 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class ParenthesizedExpression : BoundExpression + { + private readonly IBoundExpression _expression; + + public ParenthesizedExpression( + Declaration referencedDeclaration, + ParserRuleContext context, + IBoundExpression expression) + : base(referencedDeclaration, ExpressionClassification.Value, context) + { + _expression = expression; + } + + public IBoundExpression Expression + { + get + { + return _expression; + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/ProcedurePointerBindingContext.cs b/Rubberduck.Parsing/Binding/ProcedurePointerBindingContext.cs index 31984893dc..694597aa90 100644 --- a/Rubberduck.Parsing/Binding/ProcedurePointerBindingContext.cs +++ b/Rubberduck.Parsing/Binding/ProcedurePointerBindingContext.cs @@ -12,10 +12,9 @@ public ProcedurePointerBindingContext(DeclarationFinder declarationFinder) _declarationFinder = declarationFinder; } - public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression) + public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { - dynamic dynamicExpression = expression; - IExpressionBinding bindingTree = Visit(module, parent, dynamicExpression); + IExpressionBinding bindingTree = BuildTree(module, parent, expression, withBlockVariable, statementContext); if (bindingTree != null) { return bindingTree.Resolve(); @@ -23,6 +22,34 @@ public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRu return null; } + public IExpressionBinding BuildTree(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic dynamicExpression = expression; + return Visit(module, parent, dynamicExpression); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.StartRuleContext expression) + { + return Visit(module, parent, (dynamic)expression.expression()); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.AddressOfExpressionContext expression) + { + return Visit(module, parent, expression.procedurePointerExpression()); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.ProcedurePointerExpressionContext expression) + { + if (expression.memberAccessExpression() != null) + { + return Visit(module, parent, expression.memberAccessExpression()); + } + else + { + return Visit(module, parent, expression.simpleNameExpression()); + } + } + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LExprContext expression) { dynamic lexpr = expression.lExpression(); @@ -37,21 +64,21 @@ private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpr private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExpressionContext expression) { - return new SimpleNameProcedurePointerBinding(_declarationFinder, module, parent, expression); + return new SimpleNameProcedurePointerBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression); } private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExprContext expression) { dynamic lExpression = expression.lExpression(); var lExpressionBinding = Visit(module, parent, lExpression); - return new MemberAccessProcedurePointerBinding(_declarationFinder, module, parent, expression, lExpressionBinding); + return new MemberAccessProcedurePointerBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, expression.unrestrictedName(), lExpressionBinding); } private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExpressionContext expression) { dynamic lExpression = expression.lExpression(); var lExpressionBinding = Visit(module, parent, lExpression); - return new MemberAccessProcedurePointerBinding(_declarationFinder, module, parent, expression, lExpressionBinding); + return new MemberAccessProcedurePointerBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, expression.unrestrictedName(), lExpressionBinding); } } } diff --git a/Rubberduck.Parsing/Binding/ResolutionStatementContext.cs b/Rubberduck.Parsing/Binding/ResolutionStatementContext.cs new file mode 100644 index 0000000000..49ecbb0376 --- /dev/null +++ b/Rubberduck.Parsing/Binding/ResolutionStatementContext.cs @@ -0,0 +1,10 @@ +namespace Rubberduck.Parsing.Binding +{ + public enum ResolutionStatementContext + { + Undefined, + CallStatement, + SetStatement, + LetStatement + } +} diff --git a/Rubberduck.Parsing/Binding/SimpleNameDefaultBinding.cs b/Rubberduck.Parsing/Binding/SimpleNameDefaultBinding.cs new file mode 100644 index 0000000000..9642210948 --- /dev/null +++ b/Rubberduck.Parsing/Binding/SimpleNameDefaultBinding.cs @@ -0,0 +1,311 @@ +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class SimpleNameDefaultBinding : IExpressionBinding + { + private readonly DeclarationFinder _declarationFinder; + private readonly Declaration _project; + private readonly Declaration _module; + private readonly Declaration _parent; + private readonly VBAExpressionParser.SimpleNameExpressionContext _expression; + private readonly DeclarationType _propertySearchType; + + public SimpleNameDefaultBinding( + DeclarationFinder declarationFinder, + Declaration project, + Declaration module, + Declaration parent, + VBAExpressionParser.SimpleNameExpressionContext expression, + ResolutionStatementContext statementContext) + { + _declarationFinder = declarationFinder; + _project = project; + _module = module; + _parent = parent; + _expression = expression; + _propertySearchType = StatementContext.GetSearchDeclarationType(statementContext); + } + + public IBoundExpression Resolve() + { + string name = ExpressionName.GetName(_expression.name()); + IBoundExpression boundExpression = null; + boundExpression = ResolveProcedureNamespace(name); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveEnclosingModuleNamespace(name); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveEnclosingProjectNamespace(name); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveOtherProceduralModuleEnclosingProjectNamespace(name); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveReferencedProjectNamespace(name); + if (boundExpression != null) + { + return boundExpression; + } + boundExpression = ResolveModuleReferencedProjectNamespace(name); + if (boundExpression != null) + { + return boundExpression; + } + return null; + } + + private IBoundExpression ResolveProcedureNamespace(string name) + { + /* Namespace tier 1: + Procedure namespace: A local variable, reference parameter binding or constant whose implicit + or explicit definition precedes this expression in an enclosing procedure. + */ + if (_parent.DeclarationType != DeclarationType.Function && _parent.DeclarationType != DeclarationType.Procedure) + { + return null; + } + var localVariable = _declarationFinder.FindMemberEnclosingProcedure(_parent, name, DeclarationType.Variable); + if (localVariable != null) + { + return new SimpleNameExpression(localVariable, ExpressionClassification.Variable, _expression); + } + // + var parameter = _declarationFinder.FindMemberEnclosingProcedure(_parent, name, DeclarationType.Parameter); + if (parameter != null) + { + return new SimpleNameExpression(parameter, ExpressionClassification.Variable, _expression); + } + var constant = _declarationFinder.FindMemberEnclosingProcedure(_parent, name, DeclarationType.Constant); + if (constant != null) + { + return new SimpleNameExpression(constant, ExpressionClassification.Value, _expression); + } + return null; + } + + private IBoundExpression ResolveEnclosingModuleNamespace(string name) + { + /* Namespace tier 2: + Enclosing Module namespace: A variable, constant, Enum type, Enum member, property, + function or subroutine defined at the module-level in the enclosing module. + */ + var moduleVariable = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, DeclarationType.Variable); + if (moduleVariable != null) + { + return new SimpleNameExpression(moduleVariable, ExpressionClassification.Variable, _expression); + } + var moduleConstant = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, DeclarationType.Constant); + if (moduleConstant != null) + { + return new SimpleNameExpression(moduleConstant, ExpressionClassification.Variable, _expression); + } + var enumType = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, DeclarationType.Enumeration); + if (enumType != null) + { + return new SimpleNameExpression(enumType, ExpressionClassification.Type, _expression); + } + var enumMember = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, DeclarationType.EnumerationMember); + if (enumMember != null) + { + return new SimpleNameExpression(enumMember, ExpressionClassification.Value, _expression); + } + var property = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, _propertySearchType); + if (property != null) + { + return new SimpleNameExpression(property, ExpressionClassification.Property, _expression); + } + var function = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, DeclarationType.Function); + if (function != null) + { + return new SimpleNameExpression(function, ExpressionClassification.Function, _expression); + } + var subroutine = _declarationFinder.FindMemberEnclosingModule(_project, _module, _parent, name, DeclarationType.Procedure); + if (subroutine != null) + { + return new SimpleNameExpression(subroutine, ExpressionClassification.Subroutine, _expression); + } + return null; + } + + private IBoundExpression ResolveEnclosingProjectNamespace(string name) + { + /* Namespace tier 3: + Enclosing Project namespace: The enclosing project itself, a referenced project, or a + procedural module contained in the enclosing project. + */ + if (_declarationFinder.IsMatch(_project.ProjectName, name)) + { + return new SimpleNameExpression(_project, ExpressionClassification.Project, _expression); + } + var referencedProject = _declarationFinder.FindReferencedProject(_project, name); + if (referencedProject != null) + { + return new SimpleNameExpression(referencedProject, ExpressionClassification.Project, _expression); + } + var proceduralModuleEnclosingProject = _declarationFinder.FindModuleEnclosingProjectWithoutEnclosingModule(_project, _module, name, DeclarationType.ProceduralModule); + if (proceduralModuleEnclosingProject != null) + { + return new SimpleNameExpression(proceduralModuleEnclosingProject, ExpressionClassification.ProceduralModule, _expression); + } + var defaultInstanceVariableClass = _declarationFinder.FindDefaultInstanceVariableClassEnclosingProject(_project, _module, name); + if (defaultInstanceVariableClass != null) + { + return new SimpleNameExpression(defaultInstanceVariableClass, ExpressionClassification.Type, _expression); + } + return null; + } + + private IBoundExpression ResolveOtherProceduralModuleEnclosingProjectNamespace(string name) + { + /* Namespace tier 4: + Other Procedural Module in Enclosing Project namespace: An accessible variable, constant, + Enum type, Enum member, property, function or subroutine defined in a procedural module + within the enclosing project other than the enclosing module. + */ + var accessibleVariable = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Variable); + if (accessibleVariable != null) + { + return new SimpleNameExpression(accessibleVariable, ExpressionClassification.Variable, _expression); + } + var accessibleConstant = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Constant); + if (accessibleConstant != null) + { + return new SimpleNameExpression(accessibleConstant, ExpressionClassification.Variable, _expression); + } + var accessibleType = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Enumeration); + if (accessibleType != null) + { + return new SimpleNameExpression(accessibleType, ExpressionClassification.Type, _expression); + } + var accessibleMember = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.EnumerationMember); + if (accessibleMember != null) + { + return new SimpleNameExpression(accessibleMember, ExpressionClassification.Value, _expression); + } + var accessibleProperty = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, _propertySearchType); + if (accessibleProperty != null) + { + return new SimpleNameExpression(accessibleProperty, ExpressionClassification.Property, _expression); + } + var accessibleFunction = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Function); + if (accessibleFunction != null) + { + return new SimpleNameExpression(accessibleFunction, ExpressionClassification.Function, _expression); + } + var accessibleSubroutine = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Procedure); + if (accessibleSubroutine != null) + { + return new SimpleNameExpression(accessibleSubroutine, ExpressionClassification.Subroutine, _expression); + } + return null; + } + + private IBoundExpression ResolveReferencedProjectNamespace(string name) + { + /* Namespace tier 5: + Referenced Project namespace: An accessible procedural module contained in a referenced + project. + */ + var accessibleModule = _declarationFinder.FindModuleReferencedProject(_project, _module, name, DeclarationType.ProceduralModule); + if (accessibleModule != null) + { + return new SimpleNameExpression(accessibleModule, ExpressionClassification.ProceduralModule, _expression); + } + return null; + } + + private IBoundExpression ResolveModuleReferencedProjectNamespace(string name) + { + /* Namespace tier 6: + Module in Referenced Project namespace: An accessible variable, constant, Enum type, + Enum member, property, function or subroutine defined in a procedural module or as a member + of the default instance of a global class module within a referenced project. + */ + + // Part 1: Procedural module as parent + var accessibleVariable = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, DeclarationType.ProceduralModule, name, DeclarationType.Variable); + if (accessibleVariable != null) + { + return new SimpleNameExpression(accessibleVariable, ExpressionClassification.Variable, _expression); + } + var accessibleConstant = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, DeclarationType.ProceduralModule, name, DeclarationType.Constant); + if (accessibleConstant != null) + { + return new SimpleNameExpression(accessibleConstant, ExpressionClassification.Variable, _expression); + } + var accessibleType = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, DeclarationType.ProceduralModule, name, DeclarationType.Enumeration); + if (accessibleType != null) + { + return new SimpleNameExpression(accessibleType, ExpressionClassification.Type, _expression); + } + var accessibleMember = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, DeclarationType.ProceduralModule, name, DeclarationType.EnumerationMember); + if (accessibleMember != null) + { + return new SimpleNameExpression(accessibleMember, ExpressionClassification.Value, _expression); + } + var accessibleProperty = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, DeclarationType.ProceduralModule, name, _propertySearchType); + if (accessibleProperty != null) + { + return new SimpleNameExpression(accessibleProperty, ExpressionClassification.Property, _expression); + } + var accessibleFunction = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, DeclarationType.ProceduralModule, name, DeclarationType.Function); + if (accessibleFunction != null) + { + return new SimpleNameExpression(accessibleFunction, ExpressionClassification.Function, _expression); + } + var accessibleSubroutine = _declarationFinder.FindMemberReferencedProjectInModule(_project, _module, _parent, DeclarationType.ProceduralModule, name, DeclarationType.Procedure); + if (accessibleSubroutine != null) + { + return new SimpleNameExpression(accessibleSubroutine, ExpressionClassification.Subroutine, _expression); + } + + // Part 2: Global class module as parent + var globalClassModuleVariable = _declarationFinder.FindMemberReferencedProjectInGlobalClassModule(_project, _module, _parent, name, DeclarationType.Variable); + if (globalClassModuleVariable != null) + { + return new SimpleNameExpression(globalClassModuleVariable, ExpressionClassification.Variable, _expression); + } + var globalClassModuleConstant = _declarationFinder.FindMemberReferencedProjectInGlobalClassModule(_project, _module, _parent, name, DeclarationType.Constant); + if (globalClassModuleConstant != null) + { + return new SimpleNameExpression(globalClassModuleConstant, ExpressionClassification.Variable, _expression); + } + var globalClassModuleType = _declarationFinder.FindMemberReferencedProjectInGlobalClassModule(_project, _module, _parent, name, DeclarationType.Enumeration); + if (globalClassModuleType != null) + { + return new SimpleNameExpression(globalClassModuleType, ExpressionClassification.Type, _expression); + } + var globalClassModuleMember = _declarationFinder.FindMemberReferencedProjectInGlobalClassModule(_project, _module, _parent, name, DeclarationType.EnumerationMember); + if (globalClassModuleMember != null) + { + return new SimpleNameExpression(globalClassModuleMember, ExpressionClassification.Value, _expression); + } + var globalClassModuleProperty = _declarationFinder.FindMemberReferencedProjectInGlobalClassModule(_project, _module, _parent, name, _propertySearchType); + if (globalClassModuleProperty != null) + { + return new SimpleNameExpression(globalClassModuleProperty, ExpressionClassification.Property, _expression); + } + var globalClassModuleFunction = _declarationFinder.FindMemberReferencedProjectInGlobalClassModule(_project, _module, _parent, name, DeclarationType.Function); + if (globalClassModuleFunction != null) + { + return new SimpleNameExpression(globalClassModuleFunction, ExpressionClassification.Function, _expression); + } + var globalClassModuleSubroutine = _declarationFinder.FindMemberReferencedProjectInGlobalClassModule(_project, _module, _parent, name, DeclarationType.Procedure); + if (globalClassModuleSubroutine != null) + { + return new SimpleNameExpression(globalClassModuleSubroutine, ExpressionClassification.Subroutine, _expression); + } + return null; + } + } +} diff --git a/Rubberduck.Parsing/Binding/SimpleNameProcedurePointerBinding.cs b/Rubberduck.Parsing/Binding/SimpleNameProcedurePointerBinding.cs index 7a97af24b4..71951f971c 100644 --- a/Rubberduck.Parsing/Binding/SimpleNameProcedurePointerBinding.cs +++ b/Rubberduck.Parsing/Binding/SimpleNameProcedurePointerBinding.cs @@ -11,13 +11,14 @@ public sealed class SimpleNameProcedurePointerBinding : IExpressionBinding private readonly VBAExpressionParser.SimpleNameExpressionContext _expression; public SimpleNameProcedurePointerBinding( - DeclarationFinder declarationFinder, + DeclarationFinder declarationFinder, + Declaration project, Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExpressionContext expression) { _declarationFinder = declarationFinder; - _project = module.ParentDeclaration; + _project = project; _module = module; _parent = parent; _expression = expression; @@ -71,7 +72,7 @@ private IBoundExpression ResolveEnclosingProject(string name) Enclosing Project namespace: The enclosing project itself or a procedural module contained in the enclosing project. */ - if (_declarationFinder.IsMatch(_project.Project.Name, name)) + if (_declarationFinder.IsMatch(_project.ProjectName, name)) { return new SimpleNameExpression(_project, ExpressionClassification.Project, _expression); } @@ -94,17 +95,17 @@ private IBoundExpression ResolveOtherModuleInEnclosingProject(string name) subroutine or property with a Property Get defined in a procedural module within the enclosing project other than the enclosing module. */ - var function = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Function, DeclarationType.ProceduralModule); + var function = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Function); if (function != null) { return new SimpleNameExpression(function, ExpressionClassification.Function, _expression); } - var subroutine = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Procedure, DeclarationType.ProceduralModule); + var subroutine = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.Procedure); if (subroutine != null) { return new SimpleNameExpression(subroutine, ExpressionClassification.Subroutine, _expression); } - var propertyGet = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.PropertyGet, DeclarationType.ProceduralModule); + var propertyGet = _declarationFinder.FindMemberEnclosedProjectWithoutEnclosingModule(_project, _module, _parent, name, DeclarationType.PropertyGet); if (propertyGet != null) { return new SimpleNameExpression(propertyGet, ExpressionClassification.Property, _expression); diff --git a/Rubberduck.Parsing/Binding/SimpleNameTypeBinding.cs b/Rubberduck.Parsing/Binding/SimpleNameTypeBinding.cs index eea6d04771..35b6fc6042 100644 --- a/Rubberduck.Parsing/Binding/SimpleNameTypeBinding.cs +++ b/Rubberduck.Parsing/Binding/SimpleNameTypeBinding.cs @@ -11,13 +11,14 @@ public sealed class SimpleNameTypeBinding : IExpressionBinding private readonly VBAExpressionParser.SimpleNameExpressionContext _expression; public SimpleNameTypeBinding( - DeclarationFinder declarationFinder, + DeclarationFinder declarationFinder, + Declaration project, Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExpressionContext expression) { _declarationFinder = declarationFinder; - _project = module.ParentDeclaration; + _project = project; _module = module; _parent = parent; _expression = expression; @@ -76,7 +77,7 @@ private IBoundExpression ResolveEnclosingProject(string name) Enclosing Project namespace: The enclosing project itself, a referenced project, or a procedural module or class module contained in the enclosing project. */ - if (_declarationFinder.IsMatch(_project.Project.Name, name)) + if (_declarationFinder.IsMatch(_project.ProjectName, name)) { return new SimpleNameExpression(_project, ExpressionClassification.Project, _expression); } diff --git a/Rubberduck.Parsing/Binding/StatementContext.cs b/Rubberduck.Parsing/Binding/StatementContext.cs new file mode 100644 index 0000000000..97d64a33db --- /dev/null +++ b/Rubberduck.Parsing/Binding/StatementContext.cs @@ -0,0 +1,20 @@ +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public static class StatementContext + { + public static DeclarationType GetSearchDeclarationType(ResolutionStatementContext statementContext) + { + switch(statementContext) + { + case ResolutionStatementContext.LetStatement: + return DeclarationType.PropertyLet; + case ResolutionStatementContext.SetStatement: + return DeclarationType.PropertySet; + default: + return DeclarationType.PropertyGet; + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/TypeBindingContext.cs b/Rubberduck.Parsing/Binding/TypeBindingContext.cs index 5abd225ad7..1f45509b7a 100644 --- a/Rubberduck.Parsing/Binding/TypeBindingContext.cs +++ b/Rubberduck.Parsing/Binding/TypeBindingContext.cs @@ -1,5 +1,6 @@ using Antlr4.Runtime; using Rubberduck.Parsing.Symbols; +using System; namespace Rubberduck.Parsing.Binding { @@ -12,10 +13,9 @@ public TypeBindingContext(DeclarationFinder declarationFinder) _declarationFinder = declarationFinder; } - public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression) + public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) { - dynamic dynamicExpression = expression; - IExpressionBinding bindingTree = Visit(module, parent, dynamicExpression); + IExpressionBinding bindingTree = BuildTree(module, parent, expression, withBlockVariable, statementContext); if (bindingTree != null) { return bindingTree.Resolve(); @@ -23,6 +23,17 @@ public IBoundExpression Resolve(Declaration module, Declaration parent, ParserRu return null; } + public IExpressionBinding BuildTree(Declaration module, Declaration parent, ParserRuleContext expression, IBoundExpression withBlockVariable, ResolutionStatementContext statementContext) + { + dynamic dynamicExpression = expression; + return Visit(module, parent, dynamicExpression); + } + + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.StartRuleContext expression) + { + return Visit(module, parent, (dynamic)expression.expression()); + } + private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.LExprContext expression) { dynamic lexpr = expression.lExpression(); @@ -37,21 +48,21 @@ private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpr private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.SimpleNameExpressionContext expression) { - return new SimpleNameTypeBinding(_declarationFinder, module, parent, expression); + return new SimpleNameTypeBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression); } private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExprContext expression) { dynamic lExpression = expression.lExpression(); var lExpressionBinding = Visit(module, parent, lExpression); - return new MemberAccessTypeBinding(_declarationFinder, module, parent, expression, lExpressionBinding); + return new MemberAccessTypeBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, expression.unrestrictedName(), lExpressionBinding); } private IExpressionBinding Visit(Declaration module, Declaration parent, VBAExpressionParser.MemberAccessExpressionContext expression) { dynamic lExpression = expression.lExpression(); var lExpressionBinding = Visit(module, parent, lExpression); - return new MemberAccessTypeBinding(_declarationFinder, module, parent, expression, lExpressionBinding); + return new MemberAccessTypeBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, expression.unrestrictedName() , lExpressionBinding); } } } diff --git a/Rubberduck.Parsing/Binding/TypeOfIsDefaultBinding.cs b/Rubberduck.Parsing/Binding/TypeOfIsDefaultBinding.cs new file mode 100644 index 0000000000..528318f124 --- /dev/null +++ b/Rubberduck.Parsing/Binding/TypeOfIsDefaultBinding.cs @@ -0,0 +1,36 @@ +using Antlr4.Runtime; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class TypeOfIsDefaultBinding : IExpressionBinding + { + private readonly ParserRuleContext _context; + private readonly IExpressionBinding _expressionBinding; + private readonly IExpressionBinding _typeExpressionBinding; + + public TypeOfIsDefaultBinding( + ParserRuleContext context, + IExpressionBinding expressionBinding, + IExpressionBinding typeExpressionBinding) + { + _context = context; + _expressionBinding = expressionBinding; + _typeExpressionBinding = typeExpressionBinding; + } + + public IBoundExpression Resolve() + { + var expr = _expressionBinding.Resolve(); + if (expr == null) + { + return null; + } + var typeExpr = _typeExpressionBinding.Resolve(); + if (typeExpr == null) + { + return null; + } + return new TypeOfIsExpression(null, _context, expr, typeExpr); + } + } +} diff --git a/Rubberduck.Parsing/Binding/TypeOfIsExpression.cs b/Rubberduck.Parsing/Binding/TypeOfIsExpression.cs new file mode 100644 index 0000000000..0a48fc3664 --- /dev/null +++ b/Rubberduck.Parsing/Binding/TypeOfIsExpression.cs @@ -0,0 +1,38 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class TypeOfIsExpression : BoundExpression + { + private readonly IBoundExpression _expression; + private readonly IBoundExpression _typeExpression; + + public TypeOfIsExpression( + Declaration referencedDeclaration, + ParserRuleContext context, + IBoundExpression expression, + IBoundExpression typeExpression) + : base(referencedDeclaration, ExpressionClassification.Value, context) + { + _expression = expression; + _typeExpression = typeExpression; + } + + public IBoundExpression Expression + { + get + { + return _expression; + } + } + + public IBoundExpression TypeExpression + { + get + { + return _typeExpression; + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/UnaryOpDefaultBinding.cs b/Rubberduck.Parsing/Binding/UnaryOpDefaultBinding.cs new file mode 100644 index 0000000000..c8966e3126 --- /dev/null +++ b/Rubberduck.Parsing/Binding/UnaryOpDefaultBinding.cs @@ -0,0 +1,29 @@ +using Antlr4.Runtime; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class UnaryOpDefaultBinding : IExpressionBinding + { + private readonly ParserRuleContext _context; + private readonly IExpressionBinding _expr; + + public UnaryOpDefaultBinding( + ParserRuleContext context, + IExpressionBinding expr) + { + _context = context; + _expr = expr; + } + + public IBoundExpression Resolve() + { + // TODO: Allow broken trees? + var expr = _expr.Resolve(); + if (expr == null) + { + return null; + } + return new UnaryOpExpression(expr.ReferencedDeclaration, _context, expr); + } + } +} diff --git a/Rubberduck.Parsing/Binding/UnaryOpExpression.cs b/Rubberduck.Parsing/Binding/UnaryOpExpression.cs new file mode 100644 index 0000000000..bc7db1a2ad --- /dev/null +++ b/Rubberduck.Parsing/Binding/UnaryOpExpression.cs @@ -0,0 +1,27 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Symbols; + +namespace Rubberduck.Parsing.Binding +{ + public sealed class UnaryOpExpression : BoundExpression + { + private readonly IBoundExpression _expr; + + public UnaryOpExpression( + Declaration referencedDeclaration, + ParserRuleContext context, + IBoundExpression expr) + : base(referencedDeclaration, ExpressionClassification.Value, context) + { + _expr = expr; + } + + public IBoundExpression Expr + { + get + { + return _expr; + } + } + } +} diff --git a/Rubberduck.Parsing/Binding/VBAExpressionParser.cs b/Rubberduck.Parsing/Binding/VBAExpressionParser.cs index 5c822103d0..163d5435d6 100644 --- a/Rubberduck.Parsing/Binding/VBAExpressionParser.cs +++ b/Rubberduck.Parsing/Binding/VBAExpressionParser.cs @@ -29,47 +29,44 @@ namespace Rubberduck.Parsing.Binding { [System.CLSCompliant(false)] public partial class VBAExpressionParser : Parser { public const int - PRINT=166, ELSEIF=93, CBYTE=5, CLOSE=69, STATIC=196, MINUS=230, OPTION_EXPLICIT=159, - L_SQUARE_BRACKET=241, SETATTR=192, DOEVENTS=21, HASHENDIF=240, DATELITERAL=248, - ERROR=107, NOTHING=151, EACH=91, SUB=200, FILECOPY=115, STOP=198, LPAREN=228, - MID=144, CVERR=19, BEEP=58, AS=56, END_PROPERTY=98, AT=45, DATABASE=71, - GOSUB=121, CSNG=15, HASHCONST=236, CHDIR=66, POW=234, DOLLAR=47, PROPERTY_LET=169, - THEN=203, XOR=220, EXIT_FOR=110, DEFINT=79, HASHIF=237, UNLOCK=210, CALL=64, - LOCK_READ=139, SET=191, LOCK_READ_WRITE=141, ABS=1, LSET=142, RAISEEVENT=176, - MIDBTYPESUFFIX=32, SEEK=188, LONG=133, CBOOL=4, LIB=136, DIM=88, APPEND=55, - MKDIR=145, OPEN=156, DIV=222, PROPERTY_SET=170, CDBL=8, PERCENT=46, SENDKEYS=190, - END_SELECT=99, STRING=199, HASHELSEIF=238, SGN=37, REM=180, TO=205, DEFDBL=77, - BYVAL=61, FRIEND=116, LOOP=134, DELETESETTING=87, CLASS=68, DO=89, VARIANT=212, - END_WITH=102, DEFBOOL=74, OPTIONAL=157, ADDRESSOF=50, CONST=70, RSET=185, - INTEGER=129, CDEC=9, REMCOMMENT=250, ATTRIBUTE=53, OUTPUT=163, FOR=117, - PTRSAFE=171, EQ=224, BOOLEAN=60, CIRCLE=11, NAME=147, END_FUNCTION=96, - DEFSNG=84, DEFBYTE=75, NOT=150, CINT=10, SAVESETTING=187, END=103, PRESERVE=165, - ON_LOCAL_ERROR=155, FLOATLITERAL=246, HASHELSE=239, LOAD=131, BINARY=59, - LENB=28, RETURN=183, EXCLAMATIONPOINT=42, NEXT=148, GLOBAL=120, INPUTB=24, - IDENTIFIER=255, WS=254, EMPTY=94, CURRENCY=17, CCUR=6, MOD=146, WITHEVENTS=218, - COLON=40, DEFLNGLNG=81, STEP=197, TIME=204, OPTION_BASE=158, GT=226, PUT=173, - WITH=217, CSTR=16, LOCK_WRITE=140, LINE_CONTINUATION=256, TYPEOF=208, - DEFVAR=86, RMDIR=184, DEFLNG=80, UBOUND=38, FALSE=114, ERRORCHAR=258, - UNDERSCORE=253, INTEGERLITERAL=247, END_IF=97, LOCK=132, TEXT=202, SINGLEQUOTE=252, - SAVEPICTURE=186, MULT=231, SEMICOLON=41, BYTE=63, HEXLITERAL=245, ELSE=92, - IF=123, TYPE=207, AMPERSAND=48, DEFLNGPTR=82, ENUM=104, DEFOBJ=83, IN=126, - CHDRIVE=67, OPTION=34, DOT=43, EXIT_DO=109, GUIDLITERAL=257, IS=128, EQV=105, - WEND=214, FUNCTION=118, HASH=44, CASE=65, GEQ=225, GET=119, PUBLIC=172, - ON_ERROR=154, EXIT=22, MIDB=31, END_ENUM=95, GOTO=122, INTDIV=223, LONGPTR=30, - WIDTH=216, BEGIN=57, EXIT_SUB=113, ASSIGN=221, COMMENT=251, WRITE=219, - RANDOMIZE=175, DOUBLE=90, EXIT_PROPERTY=112, COMMA=39, RANDOM=174, PROPERTY_GET=168, - SELECT=189, PRIVATE=167, ERASE=106, TAB=201, BYREF=62, VERSION=213, NEQ=232, - END_TYPE=101, KILL=130, NEW=149, ARRAY=3, INPUT=127, SINGLE=194, UNLOAD=209, - ALIAS=51, SPC=195, LT=229, RESET=181, END_SUB=100, EVENT=108, READ_WRITE=178, - OPTION_COMPARE=160, ME=143, SCALE=36, CDATE=7, MIDTYPESUFFIX=33, NULL=152, - NEWLINE=249, TRUE=206, RPAREN=235, APPACTIVATE=54, IMP=124, STRINGLITERAL=243, - OCTLITERAL=244, READ=177, DATE=72, LIKE=137, AND=52, OPTION_PRIVATE_MODULE=161, - CLNGLNG=13, PLUS=233, ANY=2, RESUME=182, INT=25, SHARED=193, EXIT_FUNCTION=111, - PSET=35, ACCESS=49, LINE_INPUT=138, ON=153, OR=162, PARAMARRAY=164, LBOUND=26, - R_SQUARE_BRACKET=242, IMPLEMENTS=125, UNTIL=211, DEBUG=20, DEFCUR=78, - CLNGPTR=14, LONGLONG=29, DECLARE=73, DEFDATE=76, FIX=23, LEN=27, REDIM=179, - LEQ=227, DEFSTR=85, LET=135, WHILE=215, CVAR=18, CLNG=12, FOREIGNNAME=259, - OBJECT=260; + PRINT=156, ELSEIF=88, CBYTE=5, CLOSE=65, STATIC=180, MINUS=212, OPTION_EXPLICIT=149, + L_SQUARE_BRACKET=223, DOEVENTS=21, HASHENDIF=222, DATELITERAL=230, ERROR=102, + NOTHING=141, EACH=86, SUB=184, STOP=182, LPAREN=210, MID=136, CVERR=19, + AS=55, END_PROPERTY=93, AT=45, DATABASE=67, GOSUB=115, CSNG=15, HASHCONST=218, + POW=216, DOLLAR=47, PROPERTY_LET=159, THEN=187, XOR=202, EXIT_FOR=105, + DEFINT=75, HASHIF=219, UNLOCK=192, CALL=62, LOCK_READ=131, SET=176, LOCK_READ_WRITE=133, + ABS=1, LSET=134, RAISEEVENT=165, MIDBTYPESUFFIX=32, SEEK=174, LONG=125, + CBOOL=4, LIB=128, DIM=83, APPEND=54, OPEN=146, DIV=204, PROPERTY_SET=160, + CDBL=8, PERCENT=46, END_SELECT=94, STRING=183, HASHELSEIF=220, SGN=37, + REM=169, TO=188, DEFDBL=73, BYVAL=59, FRIEND=110, LOOP=126, CLASS=64, + DO=84, VARIANT=194, END_WITH=97, DEFBOOL=70, OPTIONAL=147, ADDRESSOF=50, + CONST=66, RSET=173, INTEGER=123, CDEC=9, ATTRIBUTE=53, OUTPUT=153, FOR=111, + PTRSAFE=161, EQ=206, BOOLEAN=58, CIRCLE=11, END_FUNCTION=91, DEFSNG=80, + DEFBYTE=71, NOT=140, CINT=10, END=98, PRESERVE=155, ON_LOCAL_ERROR=145, + FLOATLITERAL=228, HASHELSE=221, BINARY=57, LENB=28, RETURN=172, EXCLAMATIONPOINT=42, + NEXT=138, GLOBAL=114, INPUTB=24, IDENTIFIER=236, WS=234, EMPTY=89, CURRENCY=17, + CCUR=6, MOD=137, WITHEVENTS=200, COLON=40, DEFLNGLNG=77, STEP=181, OPTION_BASE=148, + GT=208, PUT=163, WITH=199, CSTR=16, LOCK_WRITE=132, LINE_CONTINUATION=237, + TYPEOF=191, DEFVAR=82, DEFLNG=76, UBOUND=38, FALSE=109, ERRORCHAR=238, + UNDERSCORE=233, INTEGERLITERAL=229, END_IF=92, LOCK=124, TEXT=186, SINGLEQUOTE=232, + MULT=213, SEMICOLON=41, BYTE=61, HEXLITERAL=227, ELSE=87, IF=117, TYPE=190, + AMPERSAND=48, DEFLNGPTR=78, ENUM=99, DEFOBJ=79, IN=120, OPTION=34, DOT=43, + EXIT_DO=104, GUIDLITERAL=235, IS=122, EQV=100, WEND=196, FUNCTION=112, + HASH=44, CASE=63, GEQ=207, GET=113, PUBLIC=162, ON_ERROR=144, EXIT=22, + MIDB=31, END_ENUM=90, GOTO=116, INTDIV=205, LONGPTR=30, WIDTH=198, BEGIN=56, + EXIT_SUB=108, ASSIGN=203, WRITE=201, DOUBLE=85, EXIT_PROPERTY=107, COMMA=39, + RANDOM=164, PROPERTY_GET=158, SELECT=175, PRIVATE=157, ERASE=101, TAB=185, + BYREF=60, VERSION=195, NEQ=214, END_TYPE=96, NEW=139, ARRAY=3, INPUT=121, + SINGLE=178, ALIAS=51, SPC=179, LT=211, RESET=170, END_SUB=95, EVENT=103, + READ_WRITE=167, OPTION_COMPARE=150, ME=135, SCALE=36, CDATE=7, MIDTYPESUFFIX=33, + NULL=142, NEWLINE=231, TRUE=189, RPAREN=217, IMP=118, STRINGLITERAL=225, + OCTLITERAL=226, READ=166, DATE=68, LIKE=129, AND=52, OPTION_PRIVATE_MODULE=151, + CLNGLNG=13, PLUS=215, ANY=2, RESUME=171, INT=25, SHARED=177, EXIT_FUNCTION=106, + PSET=35, ACCESS=49, LINE_INPUT=130, ON=143, OR=152, PARAMARRAY=154, LBOUND=26, + R_SQUARE_BRACKET=224, IMPLEMENTS=119, UNTIL=193, DEBUG=20, DEFCUR=74, + CLNGPTR=14, LONGLONG=29, DECLARE=69, DEFDATE=72, FIX=23, LEN=27, REDIM=168, + LEQ=209, DEFSTR=81, LET=127, WHILE=197, CVAR=18, CLNG=12, FOREIGNNAME=239, + OBJECT=240, COLLECTION=241; public static readonly string[] tokenNames = { "", "ABS", "ANY", "ARRAY", "CBOOL", "CBYTE", "CCUR", "CDATE", "CDBL", "CDEC", "CINT", "CIRCLE", "CLNG", "CLNGLNG", "CLNGPTR", "CSNG", @@ -77,70 +74,68 @@ public const int "INPUTB", "INT", "LBOUND", "LEN", "LENB", "LONGLONG", "LONGPTR", "MIDB", "MIDBTYPESUFFIX", "MIDTYPESUFFIX", "OPTION", "PSET", "SCALE", "SGN", "UBOUND", "','", "':'", "';'", "'!'", "'.'", "'#'", "'@'", "'%'", "'$'", "'&'", - "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPACTIVATE", "APPEND", - "AS", "BEGIN", "BEEP", "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", - "CALL", "CASE", "CHDIR", "CHDRIVE", "CLASS", "CLOSE", "CONST", "DATABASE", - "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", - "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", - "DEFVAR", "DELETESETTING", "DIM", "DO", "DOUBLE", "EACH", "ELSE", "ELSEIF", - "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", "END_SELECT", - "END_SUB", "END_TYPE", "END_WITH", "END", "ENUM", "EQV", "ERASE", "ERROR", - "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", - "FALSE", "FILECOPY", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", - "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "KILL", - "LOAD", "LOCK", "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", - "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", "ME", "MID", "MKDIR", "MOD", - "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "ON", "ON_ERROR", "ON_LOCAL_ERROR", - "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", "OPTION_COMPARE", - "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", "PRESERVE", "PRINT", - "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", "PTRSAFE", - "PUBLIC", "PUT", "RANDOM", "RANDOMIZE", "RAISEEVENT", "READ", "READ_WRITE", - "REDIM", "REM", "RESET", "RESUME", "RETURN", "RMDIR", "RSET", "SAVEPICTURE", - "SAVESETTING", "SEEK", "SELECT", "SENDKEYS", "SET", "SETATTR", "SHARED", - "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", "SUB", "TAB", "TEXT", - "THEN", "TIME", "TO", "TRUE", "TYPE", "TYPEOF", "UNLOAD", "UNLOCK", "UNTIL", - "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", - "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", "LEQ", "'('", - "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "HASHCONST", "HASHIF", - "HASHELSEIF", "HASHELSE", "HASHENDIF", "'['", "']'", "STRINGLITERAL", + "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPEND", "AS", "BEGIN", + "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CLASS", + "CLOSE", "CONST", "DATABASE", "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", + "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", + "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", "DIM", "DO", "DOUBLE", "EACH", + "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", + "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", "ENUM", "EQV", + "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", + "EXIT_SUB", "FALSE", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", + "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "LOCK", + "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", + "LOCK_READ_WRITE", "LSET", "ME", "MID", "MOD", "NEXT", "NEW", "NOT", "NOTHING", + "NULL", "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", + "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", + "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", + "PROPERTY_SET", "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", + "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", + "SELECT", "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", + "STRING", "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", + "UNLOCK", "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", + "WITHEVENTS", "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", + "LEQ", "'('", "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "HASHCONST", + "HASHIF", "HASHELSEIF", "HASHELSE", "HASHENDIF", "'['", "']'", "STRINGLITERAL", "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "INTEGERLITERAL", "DATELITERAL", - "NEWLINE", "REMCOMMENT", "COMMENT", "'''", "'_'", "WS", "IDENTIFIER", - "LINE_CONTINUATION", "GUIDLITERAL", "ERRORCHAR", "FOREIGNNAME", "OBJECT" + "NEWLINE", "'''", "'_'", "WS", "GUIDLITERAL", "IDENTIFIER", "LINE_CONTINUATION", + "ERRORCHAR", "FOREIGNNAME", "OBJECT", "COLLECTION" }; public const int - RULE_startRule = 0, RULE_unrestrictedName = 1, RULE_name = 2, RULE_reservedIdentifierName = 3, - RULE_reservedUntypedName = 4, RULE_reservedTypedName = 5, RULE_untypedName = 6, - RULE_typedName = 7, RULE_typedNameValue = 8, RULE_typeSuffix = 9, RULE_optionCompareArgument = 10, - RULE_builtInType = 11, RULE_expression = 12, RULE_literalExpression = 13, - RULE_numberLiteral = 14, RULE_parenthesizedExpression = 15, RULE_typeOfIsExpression = 16, - RULE_newExpression = 17, RULE_lExpression = 18, RULE_memberAccessExpression = 19, - RULE_indexExpression = 20, RULE_dictionaryAccessExpression = 21, RULE_argumentList = 22, - RULE_positionalOrNamedArgumentList = 23, RULE_positionalArgument = 24, - RULE_requiredPositionalArgument = 25, RULE_namedArgumentList = 26, RULE_namedArgument = 27, - RULE_argumentExpression = 28, RULE_simpleNameExpression = 29, RULE_instanceExpression = 30, - RULE_withExpression = 31, RULE_withMemberAccessExpression = 32, RULE_withDictionaryAccessExpression = 33, - RULE_constantExpression = 34, RULE_typeExpression = 35, RULE_definedTypeExpression = 36, - RULE_addressOfExpression = 37, RULE_procedurePointerExpression = 38, RULE_reservedIdentifier = 39, - RULE_statementKeyword = 40, RULE_remKeyword = 41, RULE_markerKeyword = 42, - RULE_operatorIdentifier = 43, RULE_reservedName = 44, RULE_reservedProcedureName = 45, - RULE_specialForm = 46, RULE_reservedTypeIdentifier = 47, RULE_literalIdentifier = 48, - RULE_booleanLiteralIdentifier = 49, RULE_objectLiteralIdentifier = 50, - RULE_variantLiteralIdentifier = 51, RULE_whiteSpace = 52; + RULE_startRule = 0, RULE_callStmt = 1, RULE_unrestrictedName = 2, RULE_name = 3, + RULE_reservedIdentifierName = 4, RULE_reservedUntypedName = 5, RULE_reservedTypedName = 6, + RULE_untypedName = 7, RULE_typedName = 8, RULE_typedNameValue = 9, RULE_typeSuffix = 10, + RULE_optionCompareArgument = 11, RULE_builtInType = 12, RULE_expression = 13, + RULE_literalExpression = 14, RULE_numberLiteral = 15, RULE_parenthesizedExpression = 16, + RULE_typeOfIsExpression = 17, RULE_newExpression = 18, RULE_lExpression = 19, + RULE_memberAccessExpression = 20, RULE_indexExpression = 21, RULE_dictionaryAccessExpression = 22, + RULE_argumentList = 23, RULE_positionalOrNamedArgumentList = 24, RULE_positionalArgument = 25, + RULE_requiredPositionalArgument = 26, RULE_namedArgumentList = 27, RULE_namedArgument = 28, + RULE_argumentExpression = 29, RULE_simpleNameExpression = 30, RULE_instanceExpression = 31, + RULE_withExpression = 32, RULE_withMemberAccessExpression = 33, RULE_withDictionaryAccessExpression = 34, + RULE_constantExpression = 35, RULE_typeExpression = 36, RULE_definedTypeExpression = 37, + RULE_addressOfExpression = 38, RULE_procedurePointerExpression = 39, RULE_reservedIdentifier = 40, + RULE_statementKeyword = 41, RULE_remKeyword = 42, RULE_markerKeyword = 43, + RULE_operatorIdentifier = 44, RULE_reservedName = 45, RULE_reservedProcedureName = 46, + RULE_specialForm = 47, RULE_reservedTypeIdentifier = 48, RULE_uncategorizedKeyword = 49, + RULE_literalIdentifier = 50, RULE_booleanLiteralIdentifier = 51, RULE_objectLiteralIdentifier = 52, + RULE_variantLiteralIdentifier = 53, RULE_whiteSpace = 54; public static readonly string[] ruleNames = { - "startRule", "unrestrictedName", "name", "reservedIdentifierName", "reservedUntypedName", - "reservedTypedName", "untypedName", "typedName", "typedNameValue", "typeSuffix", - "optionCompareArgument", "builtInType", "expression", "literalExpression", - "numberLiteral", "parenthesizedExpression", "typeOfIsExpression", "newExpression", - "lExpression", "memberAccessExpression", "indexExpression", "dictionaryAccessExpression", - "argumentList", "positionalOrNamedArgumentList", "positionalArgument", - "requiredPositionalArgument", "namedArgumentList", "namedArgument", "argumentExpression", - "simpleNameExpression", "instanceExpression", "withExpression", "withMemberAccessExpression", - "withDictionaryAccessExpression", "constantExpression", "typeExpression", - "definedTypeExpression", "addressOfExpression", "procedurePointerExpression", - "reservedIdentifier", "statementKeyword", "remKeyword", "markerKeyword", - "operatorIdentifier", "reservedName", "reservedProcedureName", "specialForm", - "reservedTypeIdentifier", "literalIdentifier", "booleanLiteralIdentifier", - "objectLiteralIdentifier", "variantLiteralIdentifier", "whiteSpace" + "startRule", "callStmt", "unrestrictedName", "name", "reservedIdentifierName", + "reservedUntypedName", "reservedTypedName", "untypedName", "typedName", + "typedNameValue", "typeSuffix", "optionCompareArgument", "builtInType", + "expression", "literalExpression", "numberLiteral", "parenthesizedExpression", + "typeOfIsExpression", "newExpression", "lExpression", "memberAccessExpression", + "indexExpression", "dictionaryAccessExpression", "argumentList", "positionalOrNamedArgumentList", + "positionalArgument", "requiredPositionalArgument", "namedArgumentList", + "namedArgument", "argumentExpression", "simpleNameExpression", "instanceExpression", + "withExpression", "withMemberAccessExpression", "withDictionaryAccessExpression", + "constantExpression", "typeExpression", "definedTypeExpression", "addressOfExpression", + "procedurePointerExpression", "reservedIdentifier", "statementKeyword", + "remKeyword", "markerKeyword", "operatorIdentifier", "reservedName", "reservedProcedureName", + "specialForm", "reservedTypeIdentifier", "uncategorizedKeyword", "literalIdentifier", + "booleanLiteralIdentifier", "objectLiteralIdentifier", "variantLiteralIdentifier", + "whiteSpace" }; public override string GrammarFileName { get { return "VBAExpressionParser.g4"; } } @@ -157,6 +152,9 @@ public VBAExpressionParser(ITokenStream input) _interp = new ParserATNSimulator(this,_ATN); } public partial class StartRuleContext : ParserRuleContext { + public CallStmtContext callStmt() { + return GetRuleContext(0); + } public ITerminalNode Eof() { return GetToken(VBAExpressionParser.Eof, 0); } public ExpressionContext expression() { return GetRuleContext(0); @@ -188,8 +186,107 @@ public StartRuleContext startRule() { try { EnterOuterAlt(_localctx, 1); { - State = 106; expression(0); - State = 107; Match(Eof); + State = 112; + switch ( Interpreter.AdaptivePredict(_input,0,_ctx) ) { + case 1: + { + State = 110; expression(0); + } + break; + + case 2: + { + State = 111; callStmt(); + } + break; + } + State = 114; Match(Eof); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CallStmtContext : ParserRuleContext { + public MemberAccessExpressionContext memberAccessExpression() { + return GetRuleContext(0); + } + public WithExpressionContext withExpression() { + return GetRuleContext(0); + } + public SimpleNameExpressionContext simpleNameExpression() { + return GetRuleContext(0); + } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); + } + public ArgumentListContext argumentList() { + return GetRuleContext(0); + } + public CallStmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_callStmt; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAExpressionParserListener typedListener = listener as IVBAExpressionParserListener; + if (typedListener != null) typedListener.EnterCallStmt(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAExpressionParserListener typedListener = listener as IVBAExpressionParserListener; + if (typedListener != null) typedListener.ExitCallStmt(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAExpressionParserVisitor typedVisitor = visitor as IVBAExpressionParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCallStmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CallStmtContext callStmt() { + CallStmtContext _localctx = new CallStmtContext(_ctx, State); + EnterRule(_localctx, 2, RULE_callStmt); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 119; + switch ( Interpreter.AdaptivePredict(_input,1,_ctx) ) { + case 1: + { + State = 116; memberAccessExpression(); + } + break; + + case 2: + { + State = 117; simpleNameExpression(); + } + break; + + case 3: + { + State = 118; withExpression(); + } + break; + } + State = 124; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 121; whiteSpace(); + State = 122; argumentList(); + } + } + } } catch (RecognitionException re) { @@ -233,21 +330,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public UnrestrictedNameContext unrestrictedName() { UnrestrictedNameContext _localctx = new UnrestrictedNameContext(_ctx, State); - EnterRule(_localctx, 2, RULE_unrestrictedName); + EnterRule(_localctx, 4, RULE_unrestrictedName); try { - State = 111; - switch ( Interpreter.AdaptivePredict(_input,0,_ctx) ) { + State = 128; + switch ( Interpreter.AdaptivePredict(_input,3,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 109; name(); + State = 126; name(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 110; reservedIdentifierName(); + State = 127; reservedIdentifierName(); } break; } @@ -293,21 +390,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NameContext name() { NameContext _localctx = new NameContext(_ctx, State); - EnterRule(_localctx, 4, RULE_name); + EnterRule(_localctx, 6, RULE_name); try { - State = 115; - switch ( Interpreter.AdaptivePredict(_input,1,_ctx) ) { + State = 132; + switch ( Interpreter.AdaptivePredict(_input,4,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 113; untypedName(); + State = 130; untypedName(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 114; typedName(); + State = 131; typedName(); } break; } @@ -353,21 +450,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReservedIdentifierNameContext reservedIdentifierName() { ReservedIdentifierNameContext _localctx = new ReservedIdentifierNameContext(_ctx, State); - EnterRule(_localctx, 6, RULE_reservedIdentifierName); + EnterRule(_localctx, 8, RULE_reservedIdentifierName); try { - State = 119; - switch ( Interpreter.AdaptivePredict(_input,2,_ctx) ) { + State = 136; + switch ( Interpreter.AdaptivePredict(_input,5,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 117; reservedUntypedName(); + State = 134; reservedUntypedName(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 118; reservedTypedName(); + State = 135; reservedTypedName(); } break; } @@ -410,11 +507,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReservedUntypedNameContext reservedUntypedName() { ReservedUntypedNameContext _localctx = new ReservedUntypedNameContext(_ctx, State); - EnterRule(_localctx, 8, RULE_reservedUntypedName); + EnterRule(_localctx, 10, RULE_reservedUntypedName); try { EnterOuterAlt(_localctx, 1); { - State = 121; reservedIdentifier(); + State = 138; reservedIdentifier(); } } catch (RecognitionException re) { @@ -458,12 +555,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReservedTypedNameContext reservedTypedName() { ReservedTypedNameContext _localctx = new ReservedTypedNameContext(_ctx, State); - EnterRule(_localctx, 10, RULE_reservedTypedName); + EnterRule(_localctx, 12, RULE_reservedTypedName); try { EnterOuterAlt(_localctx, 1); { - State = 123; reservedIdentifier(); - State = 124; typeSuffix(); + State = 140; reservedIdentifier(); + State = 141; typeSuffix(); } } catch (RecognitionException re) { @@ -478,11 +575,15 @@ public ReservedTypedNameContext reservedTypedName() { } public partial class UntypedNameContext : ParserRuleContext { + public UncategorizedKeywordContext uncategorizedKeyword() { + return GetRuleContext(0); + } public ITerminalNode FOREIGNNAME() { return GetToken(VBAExpressionParser.FOREIGNNAME, 0); } public SpecialFormContext specialForm() { return GetRuleContext(0); } public ITerminalNode OBJECT() { return GetToken(VBAExpressionParser.OBJECT, 0); } + public ITerminalNode ERROR() { return GetToken(VBAExpressionParser.ERROR, 0); } public OptionCompareArgumentContext optionCompareArgument() { return GetRuleContext(0); } @@ -513,49 +614,63 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public UntypedNameContext untypedName() { UntypedNameContext _localctx = new UntypedNameContext(_ctx, State); - EnterRule(_localctx, 12, RULE_untypedName); + EnterRule(_localctx, 14, RULE_untypedName); try { - State = 132; - switch ( Interpreter.AdaptivePredict(_input,3,_ctx) ) { + State = 151; + switch ( Interpreter.AdaptivePredict(_input,6,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 126; Match(IDENTIFIER); + State = 143; Match(IDENTIFIER); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 127; Match(FOREIGNNAME); + State = 144; Match(FOREIGNNAME); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 128; reservedProcedureName(); + State = 145; reservedProcedureName(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 129; specialForm(); + State = 146; specialForm(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 130; optionCompareArgument(); + State = 147; optionCompareArgument(); } break; case 6: EnterOuterAlt(_localctx, 6); { - State = 131; Match(OBJECT); + State = 148; Match(OBJECT); + } + break; + + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 149; uncategorizedKeyword(); + } + break; + + case 8: + EnterOuterAlt(_localctx, 8); + { + State = 150; Match(ERROR); } break; } @@ -601,12 +716,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypedNameContext typedName() { TypedNameContext _localctx = new TypedNameContext(_ctx, State); - EnterRule(_localctx, 14, RULE_typedName); + EnterRule(_localctx, 16, RULE_typedName); try { EnterOuterAlt(_localctx, 1); { - State = 134; typedNameValue(); - State = 135; typeSuffix(); + State = 153; typedNameValue(); + State = 154; typeSuffix(); } } catch (RecognitionException re) { @@ -621,10 +736,14 @@ public TypedNameContext typedName() { } public partial class TypedNameValueContext : ParserRuleContext { + public UncategorizedKeywordContext uncategorizedKeyword() { + return GetRuleContext(0); + } public SpecialFormContext specialForm() { return GetRuleContext(0); } public ITerminalNode OBJECT() { return GetToken(VBAExpressionParser.OBJECT, 0); } + public ITerminalNode ERROR() { return GetToken(VBAExpressionParser.ERROR, 0); } public OptionCompareArgumentContext optionCompareArgument() { return GetRuleContext(0); } @@ -655,42 +774,56 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypedNameValueContext typedNameValue() { TypedNameValueContext _localctx = new TypedNameValueContext(_ctx, State); - EnterRule(_localctx, 16, RULE_typedNameValue); + EnterRule(_localctx, 18, RULE_typedNameValue); try { - State = 142; - switch ( Interpreter.AdaptivePredict(_input,4,_ctx) ) { + State = 163; + switch ( Interpreter.AdaptivePredict(_input,7,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 137; Match(IDENTIFIER); + State = 156; Match(IDENTIFIER); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 138; reservedProcedureName(); + State = 157; reservedProcedureName(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 139; specialForm(); + State = 158; specialForm(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 140; optionCompareArgument(); + State = 159; optionCompareArgument(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 141; Match(OBJECT); + State = 160; Match(OBJECT); + } + break; + + case 6: + EnterOuterAlt(_localctx, 6); + { + State = 161; uncategorizedKeyword(); + } + break; + + case 7: + EnterOuterAlt(_localctx, 7); + { + State = 162; Match(ERROR); } break; } @@ -737,12 +870,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypeSuffixContext typeSuffix() { TypeSuffixContext _localctx = new TypeSuffixContext(_ctx, State); - EnterRule(_localctx, 18, RULE_typeSuffix); + EnterRule(_localctx, 20, RULE_typeSuffix); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 144; + State = 165; _la = _input.La(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) ) { _errHandler.RecoverInline(this); @@ -788,12 +921,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public OptionCompareArgumentContext optionCompareArgument() { OptionCompareArgumentContext _localctx = new OptionCompareArgumentContext(_ctx, State); - EnterRule(_localctx, 20, RULE_optionCompareArgument); + EnterRule(_localctx, 22, RULE_optionCompareArgument); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 146; + State = 167; _la = _input.La(1); if ( !(_la==BINARY || _la==DATABASE || _la==TEXT) ) { _errHandler.RecoverInline(this); @@ -848,72 +981,72 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public BuiltInTypeContext builtInType() { BuiltInTypeContext _localctx = new BuiltInTypeContext(_ctx, State); - EnterRule(_localctx, 22, RULE_builtInType); + EnterRule(_localctx, 24, RULE_builtInType); int _la; try { - State = 169; - switch ( Interpreter.AdaptivePredict(_input,9,_ctx) ) { + State = 190; + switch ( Interpreter.AdaptivePredict(_input,12,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 148; reservedTypeIdentifier(); + State = 169; reservedTypeIdentifier(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 149; Match(L_SQUARE_BRACKET); - State = 151; + State = 170; Match(L_SQUARE_BRACKET); + State = 172; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 150; whiteSpace(); + State = 171; whiteSpace(); } } - State = 153; reservedTypeIdentifier(); - State = 155; + State = 174; reservedTypeIdentifier(); + State = 176; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 154; whiteSpace(); + State = 175; whiteSpace(); } } - State = 157; Match(R_SQUARE_BRACKET); + State = 178; Match(R_SQUARE_BRACKET); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 159; Match(OBJECT); + State = 180; Match(OBJECT); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 160; Match(L_SQUARE_BRACKET); - State = 162; + State = 181; Match(L_SQUARE_BRACKET); + State = 183; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 161; whiteSpace(); + State = 182; whiteSpace(); } } - State = 164; Match(OBJECT); - State = 166; + State = 185; Match(OBJECT); + State = 187; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 165; whiteSpace(); + State = 186; whiteSpace(); } } - State = 168; Match(R_SQUARE_BRACKET); + State = 189; Match(R_SQUARE_BRACKET); } break; } @@ -1458,14 +1591,14 @@ private ExpressionContext expression(int _p) { int _parentState = State; ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); ExpressionContext _prevctx = _localctx; - int _startState = 24; - EnterRecursionRule(_localctx, 24, RULE_expression, _p); + int _startState = 26; + EnterRecursionRule(_localctx, 26, RULE_expression, _p); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 196; + State = 217; switch (_input.La(1)) { case MINUS: { @@ -1473,16 +1606,16 @@ private ExpressionContext expression(int _p) { _ctx = _localctx; _prevctx = _localctx; - State = 172; Match(MINUS); - State = 174; + State = 193; Match(MINUS); + State = 195; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 173; whiteSpace(); + State = 194; whiteSpace(); } } - State = 176; expression(14); + State = 197; expression(14); } break; case NOT: @@ -1490,16 +1623,16 @@ private ExpressionContext expression(int _p) { _localctx = new LogicalNotOpContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 177; Match(NOT); - State = 179; + State = 198; Match(NOT); + State = 200; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 178; whiteSpace(); + State = 199; whiteSpace(); } } - State = 181; expression(7); + State = 202; expression(7); } break; case ABS: @@ -1536,20 +1669,30 @@ private ExpressionContext expression(int _p) { case UBOUND: case EXCLAMATIONPOINT: case DOT: + case ALIAS: + case ATTRIBUTE: + case BEGIN: case BINARY: + case CLASS: case DATABASE: + case ERROR: case INPUT: + case LIB: case ME: case MID: + case ON: + case TAB: case TEXT: + case VERSION: case IDENTIFIER: case FOREIGNNAME: case OBJECT: + case COLLECTION: { _localctx = new LExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 182; lExpression(0); + State = 203; lExpression(0); } break; case LPAREN: @@ -1557,25 +1700,25 @@ private ExpressionContext expression(int _p) { _localctx = new ParenthesizedExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 183; Match(LPAREN); - State = 185; + State = 204; Match(LPAREN); + State = 206; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 184; whiteSpace(); + State = 205; whiteSpace(); } } - State = 187; expression(0); - State = 189; + State = 208; expression(0); + State = 210; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 188; whiteSpace(); + State = 209; whiteSpace(); } } - State = 191; Match(RPAREN); + State = 212; Match(RPAREN); } break; case TYPEOF: @@ -1583,7 +1726,7 @@ private ExpressionContext expression(int _p) { _localctx = new TypeOfIsExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 193; typeOfIsExpression(); + State = 214; typeOfIsExpression(); } break; case NEW: @@ -1591,7 +1734,7 @@ private ExpressionContext expression(int _p) { _localctx = new NewExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 194; newExpression(); + State = 215; newExpression(); } break; case EMPTY: @@ -1609,47 +1752,47 @@ private ExpressionContext expression(int _p) { _localctx = new LiteralExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 195; literalExpression(); + State = 216; literalExpression(); } break; default: throw new NoViableAltException(this); } _ctx.stop = _input.Lt(-1); - State = 308; + State = 329; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,40,_ctx); + _alt = Interpreter.AdaptivePredict(_input,43,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { if ( _parseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 306; - switch ( Interpreter.AdaptivePredict(_input,39,_ctx) ) { + State = 327; + switch ( Interpreter.AdaptivePredict(_input,42,_ctx) ) { case 1: { _localctx = new PowOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 198; + State = 219; if (!(Precpred(_ctx, 15))) throw new FailedPredicateException(this, "Precpred(_ctx, 15)"); - State = 200; + State = 221; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 199; whiteSpace(); + State = 220; whiteSpace(); } } - State = 202; Match(POW); - State = 204; + State = 223; Match(POW); + State = 225; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 203; whiteSpace(); + State = 224; whiteSpace(); } } - State = 206; expression(16); + State = 227; expression(16); } break; @@ -1657,31 +1800,31 @@ private ExpressionContext expression(int _p) { { _localctx = new MultOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 207; + State = 228; if (!(Precpred(_ctx, 13))) throw new FailedPredicateException(this, "Precpred(_ctx, 13)"); - State = 209; + State = 230; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 208; whiteSpace(); + State = 229; whiteSpace(); } } - State = 211; + State = 232; _la = _input.La(1); if ( !(_la==DIV || _la==MULT) ) { _errHandler.RecoverInline(this); } Consume(); - State = 213; + State = 234; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 212; whiteSpace(); + State = 233; whiteSpace(); } } - State = 215; expression(14); + State = 236; expression(14); } break; @@ -1689,26 +1832,26 @@ private ExpressionContext expression(int _p) { { _localctx = new IntDivOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 216; + State = 237; if (!(Precpred(_ctx, 12))) throw new FailedPredicateException(this, "Precpred(_ctx, 12)"); - State = 218; + State = 239; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 217; whiteSpace(); + State = 238; whiteSpace(); } } - State = 220; Match(INTDIV); - State = 222; + State = 241; Match(INTDIV); + State = 243; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 221; whiteSpace(); + State = 242; whiteSpace(); } } - State = 224; expression(13); + State = 245; expression(13); } break; @@ -1716,26 +1859,26 @@ private ExpressionContext expression(int _p) { { _localctx = new ModOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 225; + State = 246; if (!(Precpred(_ctx, 11))) throw new FailedPredicateException(this, "Precpred(_ctx, 11)"); - State = 227; + State = 248; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 226; whiteSpace(); + State = 247; whiteSpace(); } } - State = 229; Match(MOD); - State = 231; + State = 250; Match(MOD); + State = 252; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 230; whiteSpace(); + State = 251; whiteSpace(); } } - State = 233; expression(12); + State = 254; expression(12); } break; @@ -1743,31 +1886,31 @@ private ExpressionContext expression(int _p) { { _localctx = new AddOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 234; + State = 255; if (!(Precpred(_ctx, 10))) throw new FailedPredicateException(this, "Precpred(_ctx, 10)"); - State = 236; + State = 257; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 235; whiteSpace(); + State = 256; whiteSpace(); } } - State = 238; + State = 259; _la = _input.La(1); if ( !(_la==MINUS || _la==PLUS) ) { _errHandler.RecoverInline(this); } Consume(); - State = 240; + State = 261; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 239; whiteSpace(); + State = 260; whiteSpace(); } } - State = 242; expression(11); + State = 263; expression(11); } break; @@ -1775,26 +1918,26 @@ private ExpressionContext expression(int _p) { { _localctx = new ConcatOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 243; + State = 264; if (!(Precpred(_ctx, 9))) throw new FailedPredicateException(this, "Precpred(_ctx, 9)"); - State = 245; + State = 266; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 244; whiteSpace(); + State = 265; whiteSpace(); } } - State = 247; Match(AMPERSAND); - State = 249; + State = 268; Match(AMPERSAND); + State = 270; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 248; whiteSpace(); + State = 269; whiteSpace(); } } - State = 251; expression(10); + State = 272; expression(10); } break; @@ -1802,31 +1945,31 @@ private ExpressionContext expression(int _p) { { _localctx = new RelationalOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 252; + State = 273; if (!(Precpred(_ctx, 8))) throw new FailedPredicateException(this, "Precpred(_ctx, 8)"); - State = 254; + State = 275; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 253; whiteSpace(); + State = 274; whiteSpace(); } } - State = 256; + State = 277; _la = _input.La(1); - if ( !(_la==IS || _la==LIKE || ((((_la - 224)) & ~0x3f) == 0 && ((1L << (_la - 224)) & ((1L << (EQ - 224)) | (1L << (GEQ - 224)) | (1L << (GT - 224)) | (1L << (LEQ - 224)) | (1L << (LT - 224)) | (1L << (NEQ - 224)))) != 0)) ) { + if ( !(_la==IS || _la==LIKE || ((((_la - 206)) & ~0x3f) == 0 && ((1L << (_la - 206)) & ((1L << (EQ - 206)) | (1L << (GEQ - 206)) | (1L << (GT - 206)) | (1L << (LEQ - 206)) | (1L << (LT - 206)) | (1L << (NEQ - 206)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); - State = 258; + State = 279; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 257; whiteSpace(); + State = 278; whiteSpace(); } } - State = 260; expression(9); + State = 281; expression(9); } break; @@ -1834,26 +1977,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalAndOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 261; + State = 282; if (!(Precpred(_ctx, 6))) throw new FailedPredicateException(this, "Precpred(_ctx, 6)"); - State = 263; + State = 284; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 262; whiteSpace(); + State = 283; whiteSpace(); } } - State = 265; Match(AND); - State = 267; + State = 286; Match(AND); + State = 288; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 266; whiteSpace(); + State = 287; whiteSpace(); } } - State = 269; expression(7); + State = 290; expression(7); } break; @@ -1861,26 +2004,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalOrOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 270; + State = 291; if (!(Precpred(_ctx, 5))) throw new FailedPredicateException(this, "Precpred(_ctx, 5)"); - State = 272; + State = 293; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 271; whiteSpace(); + State = 292; whiteSpace(); } } - State = 274; Match(OR); - State = 276; + State = 295; Match(OR); + State = 297; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 275; whiteSpace(); + State = 296; whiteSpace(); } } - State = 278; expression(6); + State = 299; expression(6); } break; @@ -1888,26 +2031,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalXorOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 279; + State = 300; if (!(Precpred(_ctx, 4))) throw new FailedPredicateException(this, "Precpred(_ctx, 4)"); - State = 281; + State = 302; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 280; whiteSpace(); + State = 301; whiteSpace(); } } - State = 283; Match(XOR); - State = 285; + State = 304; Match(XOR); + State = 306; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 284; whiteSpace(); + State = 305; whiteSpace(); } } - State = 287; expression(5); + State = 308; expression(5); } break; @@ -1915,26 +2058,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalEqvOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 288; + State = 309; if (!(Precpred(_ctx, 3))) throw new FailedPredicateException(this, "Precpred(_ctx, 3)"); - State = 290; + State = 311; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 289; whiteSpace(); + State = 310; whiteSpace(); } } - State = 292; Match(EQV); - State = 294; + State = 313; Match(EQV); + State = 315; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 293; whiteSpace(); + State = 314; whiteSpace(); } } - State = 296; expression(4); + State = 317; expression(4); } break; @@ -1942,34 +2085,34 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalImpOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 297; + State = 318; if (!(Precpred(_ctx, 2))) throw new FailedPredicateException(this, "Precpred(_ctx, 2)"); - State = 299; + State = 320; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 298; whiteSpace(); + State = 319; whiteSpace(); } } - State = 301; Match(IMP); - State = 303; + State = 322; Match(IMP); + State = 324; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 302; whiteSpace(); + State = 323; whiteSpace(); } } - State = 305; expression(3); + State = 326; expression(3); } break; } } } - State = 310; + State = 331; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,40,_ctx); + _alt = Interpreter.AdaptivePredict(_input,43,_ctx); } } } @@ -2019,9 +2162,9 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public LiteralExpressionContext literalExpression() { LiteralExpressionContext _localctx = new LiteralExpressionContext(_ctx, State); - EnterRule(_localctx, 26, RULE_literalExpression); + EnterRule(_localctx, 28, RULE_literalExpression); try { - State = 318; + State = 339; switch (_input.La(1)) { case OCTLITERAL: case HEXLITERAL: @@ -2029,19 +2172,19 @@ public LiteralExpressionContext literalExpression() { case INTEGERLITERAL: EnterOuterAlt(_localctx, 1); { - State = 311; numberLiteral(); + State = 332; numberLiteral(); } break; case DATELITERAL: EnterOuterAlt(_localctx, 2); { - State = 312; Match(DATELITERAL); + State = 333; Match(DATELITERAL); } break; case STRINGLITERAL: EnterOuterAlt(_localctx, 3); { - State = 313; Match(STRINGLITERAL); + State = 334; Match(STRINGLITERAL); } break; case EMPTY: @@ -2051,12 +2194,12 @@ public LiteralExpressionContext literalExpression() { case TRUE: EnterOuterAlt(_localctx, 4); { - State = 314; literalIdentifier(); - State = 316; - switch ( Interpreter.AdaptivePredict(_input,41,_ctx) ) { + State = 335; literalIdentifier(); + State = 337; + switch ( Interpreter.AdaptivePredict(_input,44,_ctx) ) { case 1: { - State = 315; typeSuffix(); + State = 336; typeSuffix(); } break; } @@ -2105,14 +2248,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NumberLiteralContext numberLiteral() { NumberLiteralContext _localctx = new NumberLiteralContext(_ctx, State); - EnterRule(_localctx, 28, RULE_numberLiteral); + EnterRule(_localctx, 30, RULE_numberLiteral); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 320; + State = 341; _la = _input.La(1); - if ( !(((((_la - 244)) & ~0x3f) == 0 && ((1L << (_la - 244)) & ((1L << (OCTLITERAL - 244)) | (1L << (HEXLITERAL - 244)) | (1L << (FLOATLITERAL - 244)) | (1L << (INTEGERLITERAL - 244)))) != 0)) ) { + if ( !(((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OCTLITERAL - 226)) | (1L << (HEXLITERAL - 226)) | (1L << (FLOATLITERAL - 226)) | (1L << (INTEGERLITERAL - 226)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -2164,30 +2307,30 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ParenthesizedExpressionContext parenthesizedExpression() { ParenthesizedExpressionContext _localctx = new ParenthesizedExpressionContext(_ctx, State); - EnterRule(_localctx, 30, RULE_parenthesizedExpression); + EnterRule(_localctx, 32, RULE_parenthesizedExpression); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 322; Match(LPAREN); - State = 324; + State = 343; Match(LPAREN); + State = 345; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 323; whiteSpace(); + State = 344; whiteSpace(); } } - State = 326; expression(0); - State = 328; + State = 347; expression(0); + State = 349; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 327; whiteSpace(); + State = 348; whiteSpace(); } } - State = 330; Match(RPAREN); + State = 351; Match(RPAREN); } } catch (RecognitionException re) { @@ -2239,17 +2382,17 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypeOfIsExpressionContext typeOfIsExpression() { TypeOfIsExpressionContext _localctx = new TypeOfIsExpressionContext(_ctx, State); - EnterRule(_localctx, 32, RULE_typeOfIsExpression); + EnterRule(_localctx, 34, RULE_typeOfIsExpression); try { EnterOuterAlt(_localctx, 1); { - State = 332; Match(TYPEOF); - State = 333; whiteSpace(); - State = 334; expression(0); - State = 335; whiteSpace(); - State = 336; Match(IS); - State = 337; whiteSpace(); - State = 338; typeExpression(); + State = 353; Match(TYPEOF); + State = 354; whiteSpace(); + State = 355; expression(0); + State = 356; whiteSpace(); + State = 357; Match(IS); + State = 358; whiteSpace(); + State = 359; typeExpression(); } } catch (RecognitionException re) { @@ -2294,13 +2437,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewExpressionContext newExpression() { NewExpressionContext _localctx = new NewExpressionContext(_ctx, State); - EnterRule(_localctx, 34, RULE_newExpression); + EnterRule(_localctx, 36, RULE_newExpression); try { EnterOuterAlt(_localctx, 1); { - State = 340; Match(NEW); - State = 341; whiteSpace(); - State = 342; typeExpression(); + State = 361; Match(NEW); + State = 362; whiteSpace(); + State = 363; typeExpression(); } } catch (RecognitionException re) { @@ -2478,14 +2621,14 @@ private LExpressionContext lExpression(int _p) { int _parentState = State; LExpressionContext _localctx = new LExpressionContext(_ctx, _parentState); LExpressionContext _prevctx = _localctx; - int _startState = 36; - EnterRecursionRule(_localctx, 36, RULE_lExpression, _p); + int _startState = 38; + EnterRecursionRule(_localctx, 38, RULE_lExpression, _p); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 348; + State = 369; switch (_input.La(1)) { case ME: { @@ -2493,7 +2636,7 @@ private LExpressionContext lExpression(int _p) { _ctx = _localctx; _prevctx = _localctx; - State = 345; instanceExpression(); + State = 366; instanceExpression(); } break; case ABS: @@ -2528,19 +2671,29 @@ private LExpressionContext lExpression(int _p) { case SCALE: case SGN: case UBOUND: + case ALIAS: + case ATTRIBUTE: + case BEGIN: case BINARY: + case CLASS: case DATABASE: + case ERROR: case INPUT: + case LIB: case MID: + case ON: + case TAB: case TEXT: + case VERSION: case IDENTIFIER: case FOREIGNNAME: case OBJECT: + case COLLECTION: { _localctx = new SimpleNameExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 346; simpleNameExpression(); + State = 367; simpleNameExpression(); } break; case EXCLAMATIONPOINT: @@ -2549,63 +2702,63 @@ private LExpressionContext lExpression(int _p) { _localctx = new WithExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 347; withExpression(); + State = 368; withExpression(); } break; default: throw new NoViableAltException(this); } _ctx.stop = _input.Lt(-1); - State = 389; + State = 410; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,52,_ctx); + _alt = Interpreter.AdaptivePredict(_input,55,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { if ( _parseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 387; - switch ( Interpreter.AdaptivePredict(_input,51,_ctx) ) { + State = 408; + switch ( Interpreter.AdaptivePredict(_input,54,_ctx) ) { case 1: { _localctx = new IndexExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 350; + State = 371; if (!(Precpred(_ctx, 9))) throw new FailedPredicateException(this, "Precpred(_ctx, 9)"); - State = 352; + State = 373; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 351; whiteSpace(); + State = 372; whiteSpace(); } } - State = 354; Match(LPAREN); - State = 356; - switch ( Interpreter.AdaptivePredict(_input,47,_ctx) ) { + State = 375; Match(LPAREN); + State = 377; + switch ( Interpreter.AdaptivePredict(_input,50,_ctx) ) { case 1: { - State = 355; whiteSpace(); + State = 376; whiteSpace(); } break; } - State = 359; - switch ( Interpreter.AdaptivePredict(_input,48,_ctx) ) { + State = 380; + switch ( Interpreter.AdaptivePredict(_input,51,_ctx) ) { case 1: { - State = 358; argumentList(); + State = 379; argumentList(); } break; } - State = 362; + State = 383; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 361; whiteSpace(); + State = 382; whiteSpace(); } } - State = 364; Match(RPAREN); + State = 385; Match(RPAREN); } break; @@ -2613,10 +2766,10 @@ private LExpressionContext lExpression(int _p) { { _localctx = new MemberAccessExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 365; + State = 386; if (!(Precpred(_ctx, 8))) throw new FailedPredicateException(this, "Precpred(_ctx, 8)"); - State = 366; Match(DOT); - State = 367; unrestrictedName(); + State = 387; Match(DOT); + State = 388; unrestrictedName(); } break; @@ -2624,19 +2777,19 @@ private LExpressionContext lExpression(int _p) { { _localctx = new MemberAccessExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 368; + State = 389; if (!(Precpred(_ctx, 7))) throw new FailedPredicateException(this, "Precpred(_ctx, 7)"); - State = 369; Match(LINE_CONTINUATION); - State = 371; + State = 390; Match(LINE_CONTINUATION); + State = 392; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 370; whiteSpace(); + State = 391; whiteSpace(); } } - State = 373; Match(DOT); - State = 374; unrestrictedName(); + State = 394; Match(DOT); + State = 395; unrestrictedName(); } break; @@ -2644,10 +2797,10 @@ private LExpressionContext lExpression(int _p) { { _localctx = new DictionaryAccessExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 375; + State = 396; if (!(Precpred(_ctx, 6))) throw new FailedPredicateException(this, "Precpred(_ctx, 6)"); - State = 376; Match(EXCLAMATIONPOINT); - State = 377; unrestrictedName(); + State = 397; Match(EXCLAMATIONPOINT); + State = 398; unrestrictedName(); } break; @@ -2655,11 +2808,11 @@ private LExpressionContext lExpression(int _p) { { _localctx = new DictionaryAccessExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 378; + State = 399; if (!(Precpred(_ctx, 5))) throw new FailedPredicateException(this, "Precpred(_ctx, 5)"); - State = 379; Match(LINE_CONTINUATION); - State = 380; Match(EXCLAMATIONPOINT); - State = 381; unrestrictedName(); + State = 400; Match(LINE_CONTINUATION); + State = 401; Match(EXCLAMATIONPOINT); + State = 402; unrestrictedName(); } break; @@ -2667,20 +2820,20 @@ private LExpressionContext lExpression(int _p) { { _localctx = new DictionaryAccessExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 382; + State = 403; if (!(Precpred(_ctx, 4))) throw new FailedPredicateException(this, "Precpred(_ctx, 4)"); - State = 383; Match(LINE_CONTINUATION); - State = 384; Match(EXCLAMATIONPOINT); - State = 385; Match(LINE_CONTINUATION); - State = 386; unrestrictedName(); + State = 404; Match(LINE_CONTINUATION); + State = 405; Match(EXCLAMATIONPOINT); + State = 406; Match(LINE_CONTINUATION); + State = 407; unrestrictedName(); } break; } } } - State = 391; + State = 412; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,52,_ctx); + _alt = Interpreter.AdaptivePredict(_input,55,_ctx); } } } @@ -2730,35 +2883,35 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MemberAccessExpressionContext memberAccessExpression() { MemberAccessExpressionContext _localctx = new MemberAccessExpressionContext(_ctx, State); - EnterRule(_localctx, 38, RULE_memberAccessExpression); + EnterRule(_localctx, 40, RULE_memberAccessExpression); int _la; try { - State = 404; - switch ( Interpreter.AdaptivePredict(_input,54,_ctx) ) { + State = 425; + switch ( Interpreter.AdaptivePredict(_input,57,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 392; lExpression(0); - State = 393; Match(DOT); - State = 394; unrestrictedName(); + State = 413; lExpression(0); + State = 414; Match(DOT); + State = 415; unrestrictedName(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 396; lExpression(0); - State = 397; Match(LINE_CONTINUATION); - State = 399; + State = 417; lExpression(0); + State = 418; Match(LINE_CONTINUATION); + State = 420; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 398; whiteSpace(); + State = 419; whiteSpace(); } } - State = 401; Match(DOT); - State = 402; unrestrictedName(); + State = 422; Match(DOT); + State = 423; unrestrictedName(); } break; } @@ -2812,46 +2965,46 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IndexExpressionContext indexExpression() { IndexExpressionContext _localctx = new IndexExpressionContext(_ctx, State); - EnterRule(_localctx, 40, RULE_indexExpression); + EnterRule(_localctx, 42, RULE_indexExpression); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 406; lExpression(0); - State = 408; + State = 427; lExpression(0); + State = 429; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 407; whiteSpace(); + State = 428; whiteSpace(); } } - State = 410; Match(LPAREN); - State = 412; - switch ( Interpreter.AdaptivePredict(_input,56,_ctx) ) { + State = 431; Match(LPAREN); + State = 433; + switch ( Interpreter.AdaptivePredict(_input,59,_ctx) ) { case 1: { - State = 411; whiteSpace(); + State = 432; whiteSpace(); } break; } - State = 415; - switch ( Interpreter.AdaptivePredict(_input,57,_ctx) ) { + State = 436; + switch ( Interpreter.AdaptivePredict(_input,60,_ctx) ) { case 1: { - State = 414; argumentList(); + State = 435; argumentList(); } break; } - State = 418; + State = 439; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 417; whiteSpace(); + State = 438; whiteSpace(); } } - State = 420; Match(RPAREN); + State = 441; Match(RPAREN); } } catch (RecognitionException re) { @@ -2900,37 +3053,37 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public DictionaryAccessExpressionContext dictionaryAccessExpression() { DictionaryAccessExpressionContext _localctx = new DictionaryAccessExpressionContext(_ctx, State); - EnterRule(_localctx, 42, RULE_dictionaryAccessExpression); + EnterRule(_localctx, 44, RULE_dictionaryAccessExpression); try { - State = 437; - switch ( Interpreter.AdaptivePredict(_input,59,_ctx) ) { + State = 458; + switch ( Interpreter.AdaptivePredict(_input,62,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 422; lExpression(0); - State = 423; Match(EXCLAMATIONPOINT); - State = 424; unrestrictedName(); + State = 443; lExpression(0); + State = 444; Match(EXCLAMATIONPOINT); + State = 445; unrestrictedName(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 426; lExpression(0); - State = 427; Match(LINE_CONTINUATION); - State = 428; Match(EXCLAMATIONPOINT); - State = 429; unrestrictedName(); + State = 447; lExpression(0); + State = 448; Match(LINE_CONTINUATION); + State = 449; Match(EXCLAMATIONPOINT); + State = 450; unrestrictedName(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 431; lExpression(0); - State = 432; Match(LINE_CONTINUATION); - State = 433; Match(EXCLAMATIONPOINT); - State = 434; Match(LINE_CONTINUATION); - State = 435; unrestrictedName(); + State = 452; lExpression(0); + State = 453; Match(LINE_CONTINUATION); + State = 454; Match(EXCLAMATIONPOINT); + State = 455; Match(LINE_CONTINUATION); + State = 456; unrestrictedName(); } break; } @@ -2973,11 +3126,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ArgumentListContext argumentList() { ArgumentListContext _localctx = new ArgumentListContext(_ctx, State); - EnterRule(_localctx, 44, RULE_argumentList); + EnterRule(_localctx, 46, RULE_argumentList); try { EnterOuterAlt(_localctx, 1); { - State = 439; positionalOrNamedArgumentList(); + State = 460; positionalOrNamedArgumentList(); } } catch (RecognitionException re) { @@ -3037,101 +3190,101 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public PositionalOrNamedArgumentListContext positionalOrNamedArgumentList() { PositionalOrNamedArgumentListContext _localctx = new PositionalOrNamedArgumentListContext(_ctx, State); - EnterRule(_localctx, 46, RULE_positionalOrNamedArgumentList); + EnterRule(_localctx, 48, RULE_positionalOrNamedArgumentList); int _la; try { int _alt; - State = 473; - switch ( Interpreter.AdaptivePredict(_input,68,_ctx) ) { + State = 494; + switch ( Interpreter.AdaptivePredict(_input,71,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 453; + State = 474; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,63,_ctx); + _alt = Interpreter.AdaptivePredict(_input,66,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 442; + State = 463; _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ADDRESSOF) | (1L << BINARY) | (1L << BYVAL))) != 0) || ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (DATABASE - 71)) | (1L << (EMPTY - 71)) | (1L << (FALSE - 71)) | (1L << (INPUT - 71)))) != 0) || ((((_la - 143)) & ~0x3f) == 0 && ((1L << (_la - 143)) & ((1L << (ME - 143)) | (1L << (MID - 143)) | (1L << (NEW - 143)) | (1L << (NOT - 143)) | (1L << (NOTHING - 143)) | (1L << (NULL - 143)) | (1L << (TEXT - 143)) | (1L << (TRUE - 143)))) != 0) || ((((_la - 208)) & ~0x3f) == 0 && ((1L << (_la - 208)) & ((1L << (TYPEOF - 208)) | (1L << (LPAREN - 208)) | (1L << (MINUS - 208)) | (1L << (STRINGLITERAL - 208)) | (1L << (OCTLITERAL - 208)) | (1L << (HEXLITERAL - 208)) | (1L << (FLOATLITERAL - 208)) | (1L << (INTEGERLITERAL - 208)) | (1L << (DATELITERAL - 208)) | (1L << (IDENTIFIER - 208)) | (1L << (FOREIGNNAME - 208)) | (1L << (OBJECT - 208)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << ATTRIBUTE) | (1L << BEGIN) | (1L << BINARY) | (1L << BYVAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (DATABASE - 64)) | (1L << (EMPTY - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (TRUE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (VERSION - 195)) | (1L << (LPAREN - 195)) | (1L << (MINUS - 195)) | (1L << (STRINGLITERAL - 195)) | (1L << (OCTLITERAL - 195)) | (1L << (HEXLITERAL - 195)) | (1L << (FLOATLITERAL - 195)) | (1L << (INTEGERLITERAL - 195)) | (1L << (DATELITERAL - 195)) | (1L << (IDENTIFIER - 195)) | (1L << (FOREIGNNAME - 195)) | (1L << (OBJECT - 195)) | (1L << (COLLECTION - 195)))) != 0)) { { - State = 441; positionalArgument(); + State = 462; positionalArgument(); } } - State = 445; + State = 466; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 444; whiteSpace(); + State = 465; whiteSpace(); } } - State = 447; Match(COMMA); - State = 449; - switch ( Interpreter.AdaptivePredict(_input,62,_ctx) ) { + State = 468; Match(COMMA); + State = 470; + switch ( Interpreter.AdaptivePredict(_input,65,_ctx) ) { case 1: { - State = 448; whiteSpace(); + State = 469; whiteSpace(); } break; } } } } - State = 455; + State = 476; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,63,_ctx); + _alt = Interpreter.AdaptivePredict(_input,66,_ctx); } - State = 456; requiredPositionalArgument(); + State = 477; requiredPositionalArgument(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 469; + State = 490; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,67,_ctx); + _alt = Interpreter.AdaptivePredict(_input,70,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 458; + State = 479; _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ADDRESSOF) | (1L << BINARY) | (1L << BYVAL))) != 0) || ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (DATABASE - 71)) | (1L << (EMPTY - 71)) | (1L << (FALSE - 71)) | (1L << (INPUT - 71)))) != 0) || ((((_la - 143)) & ~0x3f) == 0 && ((1L << (_la - 143)) & ((1L << (ME - 143)) | (1L << (MID - 143)) | (1L << (NEW - 143)) | (1L << (NOT - 143)) | (1L << (NOTHING - 143)) | (1L << (NULL - 143)) | (1L << (TEXT - 143)) | (1L << (TRUE - 143)))) != 0) || ((((_la - 208)) & ~0x3f) == 0 && ((1L << (_la - 208)) & ((1L << (TYPEOF - 208)) | (1L << (LPAREN - 208)) | (1L << (MINUS - 208)) | (1L << (STRINGLITERAL - 208)) | (1L << (OCTLITERAL - 208)) | (1L << (HEXLITERAL - 208)) | (1L << (FLOATLITERAL - 208)) | (1L << (INTEGERLITERAL - 208)) | (1L << (DATELITERAL - 208)) | (1L << (IDENTIFIER - 208)) | (1L << (FOREIGNNAME - 208)) | (1L << (OBJECT - 208)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << ATTRIBUTE) | (1L << BEGIN) | (1L << BINARY) | (1L << BYVAL))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (DATABASE - 64)) | (1L << (EMPTY - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (TRUE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (VERSION - 195)) | (1L << (LPAREN - 195)) | (1L << (MINUS - 195)) | (1L << (STRINGLITERAL - 195)) | (1L << (OCTLITERAL - 195)) | (1L << (HEXLITERAL - 195)) | (1L << (FLOATLITERAL - 195)) | (1L << (INTEGERLITERAL - 195)) | (1L << (DATELITERAL - 195)) | (1L << (IDENTIFIER - 195)) | (1L << (FOREIGNNAME - 195)) | (1L << (OBJECT - 195)) | (1L << (COLLECTION - 195)))) != 0)) { { - State = 457; positionalArgument(); + State = 478; positionalArgument(); } } - State = 461; + State = 482; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 460; whiteSpace(); + State = 481; whiteSpace(); } } - State = 463; Match(COMMA); - State = 465; - switch ( Interpreter.AdaptivePredict(_input,66,_ctx) ) { + State = 484; Match(COMMA); + State = 486; + switch ( Interpreter.AdaptivePredict(_input,69,_ctx) ) { case 1: { - State = 464; whiteSpace(); + State = 485; whiteSpace(); } break; } } } } - State = 471; + State = 492; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,67,_ctx); + _alt = Interpreter.AdaptivePredict(_input,70,_ctx); } - State = 472; namedArgumentList(); + State = 493; namedArgumentList(); } break; } @@ -3174,11 +3327,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public PositionalArgumentContext positionalArgument() { PositionalArgumentContext _localctx = new PositionalArgumentContext(_ctx, State); - EnterRule(_localctx, 48, RULE_positionalArgument); + EnterRule(_localctx, 50, RULE_positionalArgument); try { EnterOuterAlt(_localctx, 1); { - State = 475; argumentExpression(); + State = 496; argumentExpression(); } } catch (RecognitionException re) { @@ -3219,11 +3372,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public RequiredPositionalArgumentContext requiredPositionalArgument() { RequiredPositionalArgumentContext _localctx = new RequiredPositionalArgumentContext(_ctx, State); - EnterRule(_localctx, 50, RULE_requiredPositionalArgument); + EnterRule(_localctx, 52, RULE_requiredPositionalArgument); try { EnterOuterAlt(_localctx, 1); { - State = 477; argumentExpression(); + State = 498; argumentExpression(); } } catch (RecognitionException re) { @@ -3277,44 +3430,44 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NamedArgumentListContext namedArgumentList() { NamedArgumentListContext _localctx = new NamedArgumentListContext(_ctx, State); - EnterRule(_localctx, 52, RULE_namedArgumentList); + EnterRule(_localctx, 54, RULE_namedArgumentList); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 479; namedArgument(); - State = 490; + State = 500; namedArgument(); + State = 511; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,71,_ctx); + _alt = Interpreter.AdaptivePredict(_input,74,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 481; + State = 502; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 480; whiteSpace(); + State = 501; whiteSpace(); } } - State = 483; Match(COMMA); - State = 485; + State = 504; Match(COMMA); + State = 506; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 484; whiteSpace(); + State = 505; whiteSpace(); } } - State = 487; namedArgument(); + State = 508; namedArgument(); } } } - State = 492; + State = 513; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,71,_ctx); + _alt = Interpreter.AdaptivePredict(_input,74,_ctx); } } } @@ -3366,30 +3519,30 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NamedArgumentContext namedArgument() { NamedArgumentContext _localctx = new NamedArgumentContext(_ctx, State); - EnterRule(_localctx, 54, RULE_namedArgument); + EnterRule(_localctx, 56, RULE_namedArgument); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 493; unrestrictedName(); - State = 495; + State = 514; unrestrictedName(); + State = 516; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 494; whiteSpace(); + State = 515; whiteSpace(); } } - State = 497; Match(ASSIGN); - State = 499; + State = 518; Match(ASSIGN); + State = 520; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 498; whiteSpace(); + State = 519; whiteSpace(); } } - State = 501; argumentExpression(); + State = 522; argumentExpression(); } } catch (RecognitionException re) { @@ -3437,10 +3590,10 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ArgumentExpressionContext argumentExpression() { ArgumentExpressionContext _localctx = new ArgumentExpressionContext(_ctx, State); - EnterRule(_localctx, 56, RULE_argumentExpression); + EnterRule(_localctx, 58, RULE_argumentExpression); int _la; try { - State = 509; + State = 530; switch (_input.La(1)) { case ABS: case ARRAY: @@ -3476,21 +3629,30 @@ public ArgumentExpressionContext argumentExpression() { case UBOUND: case EXCLAMATIONPOINT: case DOT: + case ALIAS: + case ATTRIBUTE: + case BEGIN: case BINARY: case BYVAL: + case CLASS: case DATABASE: case EMPTY: + case ERROR: case FALSE: case INPUT: + case LIB: case ME: case MID: case NEW: case NOT: case NOTHING: case NULL: + case ON: + case TAB: case TEXT: case TRUE: case TYPEOF: + case VERSION: case LPAREN: case MINUS: case STRINGLITERAL: @@ -3502,24 +3664,25 @@ public ArgumentExpressionContext argumentExpression() { case IDENTIFIER: case FOREIGNNAME: case OBJECT: + case COLLECTION: EnterOuterAlt(_localctx, 1); { - State = 505; + State = 526; _la = _input.La(1); if (_la==BYVAL) { { - State = 503; Match(BYVAL); - State = 504; whiteSpace(); + State = 524; Match(BYVAL); + State = 525; whiteSpace(); } } - State = 507; expression(0); + State = 528; expression(0); } break; case ADDRESSOF: EnterOuterAlt(_localctx, 2); { - State = 508; addressOfExpression(); + State = 529; addressOfExpression(); } break; default: @@ -3564,11 +3727,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public SimpleNameExpressionContext simpleNameExpression() { SimpleNameExpressionContext _localctx = new SimpleNameExpressionContext(_ctx, State); - EnterRule(_localctx, 58, RULE_simpleNameExpression); + EnterRule(_localctx, 60, RULE_simpleNameExpression); try { EnterOuterAlt(_localctx, 1); { - State = 511; name(); + State = 532; name(); } } catch (RecognitionException re) { @@ -3607,11 +3770,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public InstanceExpressionContext instanceExpression() { InstanceExpressionContext _localctx = new InstanceExpressionContext(_ctx, State); - EnterRule(_localctx, 60, RULE_instanceExpression); + EnterRule(_localctx, 62, RULE_instanceExpression); try { EnterOuterAlt(_localctx, 1); { - State = 513; Match(ME); + State = 534; Match(ME); } } catch (RecognitionException re) { @@ -3655,20 +3818,20 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WithExpressionContext withExpression() { WithExpressionContext _localctx = new WithExpressionContext(_ctx, State); - EnterRule(_localctx, 62, RULE_withExpression); + EnterRule(_localctx, 64, RULE_withExpression); try { - State = 517; + State = 538; switch (_input.La(1)) { case DOT: EnterOuterAlt(_localctx, 1); { - State = 515; withMemberAccessExpression(); + State = 536; withMemberAccessExpression(); } break; case EXCLAMATIONPOINT: EnterOuterAlt(_localctx, 2); { - State = 516; withDictionaryAccessExpression(); + State = 537; withDictionaryAccessExpression(); } break; default: @@ -3714,12 +3877,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WithMemberAccessExpressionContext withMemberAccessExpression() { WithMemberAccessExpressionContext _localctx = new WithMemberAccessExpressionContext(_ctx, State); - EnterRule(_localctx, 64, RULE_withMemberAccessExpression); + EnterRule(_localctx, 66, RULE_withMemberAccessExpression); try { EnterOuterAlt(_localctx, 1); { - State = 519; Match(DOT); - State = 520; unrestrictedName(); + State = 540; Match(DOT); + State = 541; unrestrictedName(); } } catch (RecognitionException re) { @@ -3761,12 +3924,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WithDictionaryAccessExpressionContext withDictionaryAccessExpression() { WithDictionaryAccessExpressionContext _localctx = new WithDictionaryAccessExpressionContext(_ctx, State); - EnterRule(_localctx, 66, RULE_withDictionaryAccessExpression); + EnterRule(_localctx, 68, RULE_withDictionaryAccessExpression); try { EnterOuterAlt(_localctx, 1); { - State = 522; Match(EXCLAMATIONPOINT); - State = 523; unrestrictedName(); + State = 543; Match(EXCLAMATIONPOINT); + State = 544; unrestrictedName(); } } catch (RecognitionException re) { @@ -3807,11 +3970,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ConstantExpressionContext constantExpression() { ConstantExpressionContext _localctx = new ConstantExpressionContext(_ctx, State); - EnterRule(_localctx, 68, RULE_constantExpression); + EnterRule(_localctx, 70, RULE_constantExpression); try { EnterOuterAlt(_localctx, 1); { - State = 525; expression(0); + State = 546; expression(0); } } catch (RecognitionException re) { @@ -3855,21 +4018,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypeExpressionContext typeExpression() { TypeExpressionContext _localctx = new TypeExpressionContext(_ctx, State); - EnterRule(_localctx, 70, RULE_typeExpression); + EnterRule(_localctx, 72, RULE_typeExpression); try { - State = 529; - switch ( Interpreter.AdaptivePredict(_input,77,_ctx) ) { + State = 550; + switch ( Interpreter.AdaptivePredict(_input,80,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 527; builtInType(); + State = 548; builtInType(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 528; definedTypeExpression(); + State = 549; definedTypeExpression(); } break; } @@ -3915,21 +4078,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public DefinedTypeExpressionContext definedTypeExpression() { DefinedTypeExpressionContext _localctx = new DefinedTypeExpressionContext(_ctx, State); - EnterRule(_localctx, 72, RULE_definedTypeExpression); + EnterRule(_localctx, 74, RULE_definedTypeExpression); try { - State = 533; - switch ( Interpreter.AdaptivePredict(_input,78,_ctx) ) { + State = 554; + switch ( Interpreter.AdaptivePredict(_input,81,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 531; simpleNameExpression(); + State = 552; simpleNameExpression(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 532; memberAccessExpression(); + State = 553; memberAccessExpression(); } break; } @@ -3976,13 +4139,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public AddressOfExpressionContext addressOfExpression() { AddressOfExpressionContext _localctx = new AddressOfExpressionContext(_ctx, State); - EnterRule(_localctx, 74, RULE_addressOfExpression); + EnterRule(_localctx, 76, RULE_addressOfExpression); try { EnterOuterAlt(_localctx, 1); { - State = 535; Match(ADDRESSOF); - State = 536; whiteSpace(); - State = 537; procedurePointerExpression(); + State = 556; Match(ADDRESSOF); + State = 557; whiteSpace(); + State = 558; procedurePointerExpression(); } } catch (RecognitionException re) { @@ -4026,21 +4189,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ProcedurePointerExpressionContext procedurePointerExpression() { ProcedurePointerExpressionContext _localctx = new ProcedurePointerExpressionContext(_ctx, State); - EnterRule(_localctx, 76, RULE_procedurePointerExpression); + EnterRule(_localctx, 78, RULE_procedurePointerExpression); try { - State = 541; - switch ( Interpreter.AdaptivePredict(_input,79,_ctx) ) { + State = 562; + switch ( Interpreter.AdaptivePredict(_input,82,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 539; memberAccessExpression(); + State = 560; memberAccessExpression(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 540; simpleNameExpression(); + State = 561; simpleNameExpression(); } break; } @@ -4104,63 +4267,63 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReservedIdentifierContext reservedIdentifier() { ReservedIdentifierContext _localctx = new ReservedIdentifierContext(_ctx, State); - EnterRule(_localctx, 78, RULE_reservedIdentifier); + EnterRule(_localctx, 80, RULE_reservedIdentifier); try { - State = 551; - switch ( Interpreter.AdaptivePredict(_input,80,_ctx) ) { + State = 572; + switch ( Interpreter.AdaptivePredict(_input,83,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 543; statementKeyword(); + State = 564; statementKeyword(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 544; markerKeyword(); + State = 565; markerKeyword(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 545; operatorIdentifier(); + State = 566; operatorIdentifier(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 546; specialForm(); + State = 567; specialForm(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 547; reservedName(); + State = 568; reservedName(); } break; case 6: EnterOuterAlt(_localctx, 6); { - State = 548; literalIdentifier(); + State = 569; literalIdentifier(); } break; case 7: EnterOuterAlt(_localctx, 7); { - State = 549; remKeyword(); + State = 570; remKeyword(); } break; case 8: EnterOuterAlt(_localctx, 8); { - State = 550; reservedTypeIdentifier(); + State = 571; reservedTypeIdentifier(); } break; } @@ -4294,14 +4457,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public StatementKeywordContext statementKeyword() { StatementKeywordContext _localctx = new StatementKeywordContext(_ctx, State); - EnterRule(_localctx, 80, RULE_statementKeyword); + EnterRule(_localctx, 82, RULE_statementKeyword); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 553; + State = 574; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXIT) | (1L << OPTION) | (1L << ACCESS) | (1L << APPEND) | (1L << BINARY))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 132)) & ~0x3f) == 0 && ((1L << (_la - 132)) & ((1L << (LOCK - 132)) | (1L << (LOOP - 132)) | (1L << (LET - 132)) | (1L << (LINE_INPUT - 132)) | (1L << (LOCK_READ - 132)) | (1L << (LOCK_WRITE - 132)) | (1L << (LOCK_READ_WRITE - 132)) | (1L << (LSET - 132)) | (1L << (NEXT - 132)) | (1L << (ON - 132)) | (1L << (ON_ERROR - 132)) | (1L << (OPEN - 132)) | (1L << (OUTPUT - 132)) | (1L << (PRINT - 132)) | (1L << (PRIVATE - 132)) | (1L << (PUBLIC - 132)) | (1L << (PUT - 132)) | (1L << (RANDOM - 132)) | (1L << (RAISEEVENT - 132)) | (1L << (READ - 132)) | (1L << (READ_WRITE - 132)) | (1L << (REDIM - 132)) | (1L << (RESET - 132)) | (1L << (RESUME - 132)) | (1L << (RETURN - 132)) | (1L << (RSET - 132)) | (1L << (SEEK - 132)) | (1L << (SELECT - 132)) | (1L << (SET - 132)) | (1L << (SHARED - 132)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (STATIC - 196)) | (1L << (STEP - 196)) | (1L << (STOP - 196)) | (1L << (SUB - 196)) | (1L << (TYPE - 196)) | (1L << (UNLOCK - 196)) | (1L << (WEND - 196)) | (1L << (WHILE - 196)) | (1L << (WIDTH - 196)) | (1L << (WITH - 196)) | (1L << (WRITE - 196)))) != 0)) ) { + if ( !(((((_la - 22)) & ~0x3f) == 0 && ((1L << (_la - 22)) & ((1L << (EXIT - 22)) | (1L << (OPTION - 22)) | (1L << (ACCESS - 22)) | (1L << (APPEND - 22)) | (1L << (BINARY - 22)) | (1L << (CALL - 22)) | (1L << (CASE - 22)) | (1L << (CLOSE - 22)) | (1L << (CONST - 22)) | (1L << (DECLARE - 22)) | (1L << (DEFBOOL - 22)) | (1L << (DEFBYTE - 22)) | (1L << (DEFDATE - 22)) | (1L << (DEFDBL - 22)) | (1L << (DEFCUR - 22)) | (1L << (DEFINT - 22)) | (1L << (DEFLNG - 22)) | (1L << (DEFLNGLNG - 22)) | (1L << (DEFLNGPTR - 22)) | (1L << (DEFOBJ - 22)) | (1L << (DEFSNG - 22)) | (1L << (DEFSTR - 22)) | (1L << (DEFVAR - 22)) | (1L << (DIM - 22)) | (1L << (DO - 22)))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (ELSE - 87)) | (1L << (ELSEIF - 87)) | (1L << (END_IF - 87)) | (1L << (END_SELECT - 87)) | (1L << (END_WITH - 87)) | (1L << (END - 87)) | (1L << (ENUM - 87)) | (1L << (ERASE - 87)) | (1L << (ERROR - 87)) | (1L << (EVENT - 87)) | (1L << (EXIT_DO - 87)) | (1L << (EXIT_FOR - 87)) | (1L << (EXIT_FUNCTION - 87)) | (1L << (EXIT_PROPERTY - 87)) | (1L << (EXIT_SUB - 87)) | (1L << (FRIEND - 87)) | (1L << (FOR - 87)) | (1L << (FUNCTION - 87)) | (1L << (GET - 87)) | (1L << (GLOBAL - 87)) | (1L << (GOSUB - 87)) | (1L << (GOTO - 87)) | (1L << (IF - 87)) | (1L << (IMPLEMENTS - 87)) | (1L << (INPUT - 87)) | (1L << (LOCK - 87)) | (1L << (LOOP - 87)) | (1L << (LET - 87)) | (1L << (LINE_INPUT - 87)) | (1L << (LOCK_READ - 87)) | (1L << (LOCK_WRITE - 87)) | (1L << (LOCK_READ_WRITE - 87)) | (1L << (LSET - 87)) | (1L << (NEXT - 87)) | (1L << (ON - 87)) | (1L << (ON_ERROR - 87)) | (1L << (OPEN - 87)))) != 0) || ((((_la - 153)) & ~0x3f) == 0 && ((1L << (_la - 153)) & ((1L << (OUTPUT - 153)) | (1L << (PRINT - 153)) | (1L << (PRIVATE - 153)) | (1L << (PUBLIC - 153)) | (1L << (PUT - 153)) | (1L << (RANDOM - 153)) | (1L << (RAISEEVENT - 153)) | (1L << (READ - 153)) | (1L << (READ_WRITE - 153)) | (1L << (REDIM - 153)) | (1L << (RESET - 153)) | (1L << (RESUME - 153)) | (1L << (RETURN - 153)) | (1L << (RSET - 153)) | (1L << (SEEK - 153)) | (1L << (SELECT - 153)) | (1L << (SET - 153)) | (1L << (SHARED - 153)) | (1L << (STATIC - 153)) | (1L << (STEP - 153)) | (1L << (STOP - 153)) | (1L << (SUB - 153)) | (1L << (TYPE - 153)) | (1L << (UNLOCK - 153)) | (1L << (WEND - 153)) | (1L << (WHILE - 153)) | (1L << (WIDTH - 153)) | (1L << (WITH - 153)) | (1L << (WRITE - 153)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -4343,11 +4506,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public RemKeywordContext remKeyword() { RemKeywordContext _localctx = new RemKeywordContext(_ctx, State); - EnterRule(_localctx, 82, RULE_remKeyword); + EnterRule(_localctx, 84, RULE_remKeyword); try { EnterOuterAlt(_localctx, 1); { - State = 555; Match(REM); + State = 576; Match(REM); } } catch (RecognitionException re) { @@ -4405,14 +4568,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MarkerKeywordContext markerKeyword() { MarkerKeywordContext _localctx = new MarkerKeywordContext(_ctx, State); - EnterRule(_localctx, 84, RULE_markerKeyword); + EnterRule(_localctx, 86, RULE_markerKeyword); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 557; + State = 578; _la = _input.La(1); - if ( !(((((_la - 2)) & ~0x3f) == 0 && ((1L << (_la - 2)) & ((1L << (ANY - 2)) | (1L << (AS - 2)) | (1L << (BYVAL - 2)) | (1L << (BYREF - 2)) | (1L << (CASE - 2)))) != 0) || ((((_la - 91)) & ~0x3f) == 0 && ((1L << (_la - 91)) & ((1L << (EACH - 91)) | (1L << (ELSE - 91)) | (1L << (IN - 91)) | (1L << (NEW - 91)))) != 0) || ((((_la - 157)) & ~0x3f) == 0 && ((1L << (_la - 157)) & ((1L << (OPTIONAL - 157)) | (1L << (PARAMARRAY - 157)) | (1L << (PRESERVE - 157)) | (1L << (SHARED - 157)) | (1L << (SPC - 157)) | (1L << (TAB - 157)) | (1L << (THEN - 157)) | (1L << (TO - 157)) | (1L << (UNTIL - 157)) | (1L << (WITHEVENTS - 157)) | (1L << (WRITE - 157)))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANY) | (1L << AS) | (1L << BYVAL) | (1L << BYREF) | (1L << CASE))) != 0) || ((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (EACH - 86)) | (1L << (ELSE - 86)) | (1L << (IN - 86)) | (1L << (NEW - 86)) | (1L << (OPTIONAL - 86)))) != 0) || ((((_la - 154)) & ~0x3f) == 0 && ((1L << (_la - 154)) & ((1L << (PARAMARRAY - 154)) | (1L << (PRESERVE - 154)) | (1L << (SHARED - 154)) | (1L << (SPC - 154)) | (1L << (TAB - 154)) | (1L << (THEN - 154)) | (1L << (TO - 154)) | (1L << (UNTIL - 154)) | (1L << (WITHEVENTS - 154)) | (1L << (WRITE - 154)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -4465,14 +4628,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public OperatorIdentifierContext operatorIdentifier() { OperatorIdentifierContext _localctx = new OperatorIdentifierContext(_ctx, State); - EnterRule(_localctx, 86, RULE_operatorIdentifier); + EnterRule(_localctx, 88, RULE_operatorIdentifier); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 559; + State = 580; _la = _input.La(1); - if ( !(_la==ADDRESSOF || _la==AND || ((((_la - 105)) & ~0x3f) == 0 && ((1L << (_la - 105)) & ((1L << (EQV - 105)) | (1L << (IMP - 105)) | (1L << (IS - 105)) | (1L << (LIKE - 105)) | (1L << (MOD - 105)) | (1L << (NEW - 105)) | (1L << (NOT - 105)) | (1L << (OR - 105)))) != 0) || _la==TYPEOF || _la==XOR) ) { + if ( !(_la==ADDRESSOF || _la==AND || ((((_la - 100)) & ~0x3f) == 0 && ((1L << (_la - 100)) & ((1L << (EQV - 100)) | (1L << (IMP - 100)) | (1L << (IS - 100)) | (1L << (LIKE - 100)) | (1L << (MOD - 100)) | (1L << (NEW - 100)) | (1L << (NOT - 100)) | (1L << (OR - 100)))) != 0) || _la==TYPEOF || _la==XOR) ) { _errHandler.RecoverInline(this); } Consume(); @@ -4517,14 +4680,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReservedNameContext reservedName() { ReservedNameContext _localctx = new ReservedNameContext(_ctx, State); - EnterRule(_localctx, 88, RULE_reservedName); + EnterRule(_localctx, 90, RULE_reservedName); try { - State = 563; + State = 584; switch (_input.La(1)) { case ME: EnterOuterAlt(_localctx, 1); { - State = 561; Match(ME); + State = 582; Match(ME); } break; case ABS: @@ -4557,7 +4720,7 @@ public ReservedNameContext reservedName() { case MID: EnterOuterAlt(_localctx, 2); { - State = 562; reservedProcedureName(); + State = 583; reservedProcedureName(); } break; default: @@ -4627,12 +4790,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReservedProcedureNameContext reservedProcedureName() { ReservedProcedureNameContext _localctx = new ReservedProcedureNameContext(_ctx, State); - EnterRule(_localctx, 90, RULE_reservedProcedureName); + EnterRule(_localctx, 92, RULE_reservedProcedureName); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 565; + State = 586; _la = _input.La(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INT) | (1L << LEN) | (1L << LENB) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN))) != 0) || _la==MID) ) { _errHandler.RecoverInline(this); @@ -4682,12 +4845,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public SpecialFormContext specialForm() { SpecialFormContext _localctx = new SpecialFormContext(_ctx, State); - EnterRule(_localctx, 92, RULE_specialForm); + EnterRule(_localctx, 94, RULE_specialForm); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 567; + State = 588; _la = _input.La(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << CIRCLE) | (1L << INPUTB) | (1L << LBOUND) | (1L << SCALE) | (1L << UBOUND))) != 0) || _la==INPUT) ) { _errHandler.RecoverInline(this); @@ -4742,14 +4905,71 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReservedTypeIdentifierContext reservedTypeIdentifier() { ReservedTypeIdentifierContext _localctx = new ReservedTypeIdentifierContext(_ctx, State); - EnterRule(_localctx, 94, RULE_reservedTypeIdentifier); + EnterRule(_localctx, 96, RULE_reservedTypeIdentifier); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 569; + State = 590; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENCY) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << BOOLEAN) | (1L << BYTE))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (DATE - 72)) | (1L << (DOUBLE - 72)) | (1L << (INTEGER - 72)) | (1L << (LONG - 72)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (SINGLE - 194)) | (1L << (STRING - 194)) | (1L << (VARIANT - 194)))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENCY) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << BOOLEAN) | (1L << BYTE))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (DATE - 68)) | (1L << (DOUBLE - 68)) | (1L << (INTEGER - 68)) | (1L << (LONG - 68)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (SINGLE - 178)) | (1L << (STRING - 178)) | (1L << (VARIANT - 178)))) != 0)) ) { + _errHandler.RecoverInline(this); + } + Consume(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class UncategorizedKeywordContext : ParserRuleContext { + public ITerminalNode TAB() { return GetToken(VBAExpressionParser.TAB, 0); } + public ITerminalNode LIB() { return GetToken(VBAExpressionParser.LIB, 0); } + public ITerminalNode VERSION() { return GetToken(VBAExpressionParser.VERSION, 0); } + public ITerminalNode ON() { return GetToken(VBAExpressionParser.ON, 0); } + public ITerminalNode COLLECTION() { return GetToken(VBAExpressionParser.COLLECTION, 0); } + public ITerminalNode ALIAS() { return GetToken(VBAExpressionParser.ALIAS, 0); } + public ITerminalNode ATTRIBUTE() { return GetToken(VBAExpressionParser.ATTRIBUTE, 0); } + public ITerminalNode BEGIN() { return GetToken(VBAExpressionParser.BEGIN, 0); } + public ITerminalNode CLASS() { return GetToken(VBAExpressionParser.CLASS, 0); } + public UncategorizedKeywordContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_uncategorizedKeyword; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAExpressionParserListener typedListener = listener as IVBAExpressionParserListener; + if (typedListener != null) typedListener.EnterUncategorizedKeyword(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAExpressionParserListener typedListener = listener as IVBAExpressionParserListener; + if (typedListener != null) typedListener.ExitUncategorizedKeyword(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAExpressionParserVisitor typedVisitor = visitor as IVBAExpressionParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitUncategorizedKeyword(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public UncategorizedKeywordContext uncategorizedKeyword() { + UncategorizedKeywordContext _localctx = new UncategorizedKeywordContext(_ctx, State); + EnterRule(_localctx, 98, RULE_uncategorizedKeyword); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 592; + _la = _input.La(1); + if ( !(((((_la - 51)) & ~0x3f) == 0 && ((1L << (_la - 51)) & ((1L << (ALIAS - 51)) | (1L << (ATTRIBUTE - 51)) | (1L << (BEGIN - 51)) | (1L << (CLASS - 51)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (ON - 128)) | (1L << (TAB - 128)))) != 0) || _la==VERSION || _la==COLLECTION) ) { _errHandler.RecoverInline(this); } Consume(); @@ -4799,28 +5019,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public LiteralIdentifierContext literalIdentifier() { LiteralIdentifierContext _localctx = new LiteralIdentifierContext(_ctx, State); - EnterRule(_localctx, 96, RULE_literalIdentifier); + EnterRule(_localctx, 100, RULE_literalIdentifier); try { - State = 574; + State = 597; switch (_input.La(1)) { case FALSE: case TRUE: EnterOuterAlt(_localctx, 1); { - State = 571; booleanLiteralIdentifier(); + State = 594; booleanLiteralIdentifier(); } break; case NOTHING: EnterOuterAlt(_localctx, 2); { - State = 572; objectLiteralIdentifier(); + State = 595; objectLiteralIdentifier(); } break; case EMPTY: case NULL: EnterOuterAlt(_localctx, 3); { - State = 573; variantLiteralIdentifier(); + State = 596; variantLiteralIdentifier(); } break; default: @@ -4864,12 +5084,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public BooleanLiteralIdentifierContext booleanLiteralIdentifier() { BooleanLiteralIdentifierContext _localctx = new BooleanLiteralIdentifierContext(_ctx, State); - EnterRule(_localctx, 98, RULE_booleanLiteralIdentifier); + EnterRule(_localctx, 102, RULE_booleanLiteralIdentifier); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 576; + State = 599; _la = _input.La(1); if ( !(_la==FALSE || _la==TRUE) ) { _errHandler.RecoverInline(this); @@ -4913,11 +5133,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ObjectLiteralIdentifierContext objectLiteralIdentifier() { ObjectLiteralIdentifierContext _localctx = new ObjectLiteralIdentifierContext(_ctx, State); - EnterRule(_localctx, 100, RULE_objectLiteralIdentifier); + EnterRule(_localctx, 104, RULE_objectLiteralIdentifier); try { EnterOuterAlt(_localctx, 1); { - State = 578; Match(NOTHING); + State = 601; Match(NOTHING); } } catch (RecognitionException re) { @@ -4957,12 +5177,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public VariantLiteralIdentifierContext variantLiteralIdentifier() { VariantLiteralIdentifierContext _localctx = new VariantLiteralIdentifierContext(_ctx, State); - EnterRule(_localctx, 102, RULE_variantLiteralIdentifier); + EnterRule(_localctx, 106, RULE_variantLiteralIdentifier); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 580; + State = 603; _la = _input.La(1); if ( !(_la==EMPTY || _la==NULL) ) { _errHandler.RecoverInline(this); @@ -5013,13 +5233,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WhiteSpaceContext whiteSpace() { WhiteSpaceContext _localctx = new WhiteSpaceContext(_ctx, State); - EnterRule(_localctx, 104, RULE_whiteSpace); + EnterRule(_localctx, 108, RULE_whiteSpace); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 583; + State = 606; _errHandler.Sync(this); _alt = 1; do { @@ -5027,7 +5247,7 @@ public WhiteSpaceContext whiteSpace() { case 1: { { - State = 582; + State = 605; _la = _input.La(1); if ( !(_la==WS || _la==LINE_CONTINUATION) ) { _errHandler.RecoverInline(this); @@ -5039,9 +5259,9 @@ public WhiteSpaceContext whiteSpace() { default: throw new NoViableAltException(this); } - State = 585; + State = 608; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,83,_ctx); + _alt = Interpreter.AdaptivePredict(_input,86,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } } @@ -5058,9 +5278,9 @@ public WhiteSpaceContext whiteSpace() { public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { - case 12: return expression_sempred((ExpressionContext)_localctx, predIndex); + case 13: return expression_sempred((ExpressionContext)_localctx, predIndex); - case 18: return lExpression_sempred((LExpressionContext)_localctx, predIndex); + case 19: return lExpression_sempred((LExpressionContext)_localctx, predIndex); } return true; } @@ -5110,7 +5330,7 @@ private bool lExpression_sempred(LExpressionContext _localctx, int predIndex) { } public static readonly string _serializedATN = - "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\x106\x24E\x4\x2"+ + "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\xF3\x265\x4\x2"+ "\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b\t\b\x4"+ "\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF\x4\x10"+ "\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15\t\x15"+ @@ -5118,267 +5338,278 @@ private bool lExpression_sempred(LExpressionContext _localctx, int predIndex) { "\t\x1B\x4\x1C\t\x1C\x4\x1D\t\x1D\x4\x1E\t\x1E\x4\x1F\t\x1F\x4 \t \x4!"+ "\t!\x4\"\t\"\x4#\t#\x4$\t$\x4%\t%\x4&\t&\x4\'\t\'\x4(\t(\x4)\t)\x4*\t"+ "*\x4+\t+\x4,\t,\x4-\t-\x4.\t.\x4/\t/\x4\x30\t\x30\x4\x31\t\x31\x4\x32"+ - "\t\x32\x4\x33\t\x33\x4\x34\t\x34\x4\x35\t\x35\x4\x36\t\x36\x3\x2\x3\x2"+ - "\x3\x2\x3\x3\x3\x3\x5\x3r\n\x3\x3\x4\x3\x4\x5\x4v\n\x4\x3\x5\x3\x5\x5"+ - "\x5z\n\x5\x3\x6\x3\x6\x3\a\x3\a\x3\a\x3\b\x3\b\x3\b\x3\b\x3\b\x3\b\x5"+ - "\b\x87\n\b\x3\t\x3\t\x3\t\x3\n\x3\n\x3\n\x3\n\x3\n\x5\n\x91\n\n\x3\v\x3"+ - "\v\x3\f\x3\f\x3\r\x3\r\x3\r\x5\r\x9A\n\r\x3\r\x3\r\x5\r\x9E\n\r\x3\r\x3"+ - "\r\x3\r\x3\r\x3\r\x5\r\xA5\n\r\x3\r\x3\r\x5\r\xA9\n\r\x3\r\x5\r\xAC\n"+ - "\r\x3\xE\x3\xE\x3\xE\x5\xE\xB1\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\xB6\n\xE\x3"+ - "\xE\x3\xE\x3\xE\x3\xE\x5\xE\xBC\n\xE\x3\xE\x3\xE\x5\xE\xC0\n\xE\x3\xE"+ - "\x3\xE\x3\xE\x3\xE\x3\xE\x5\xE\xC7\n\xE\x3\xE\x3\xE\x5\xE\xCB\n\xE\x3"+ - "\xE\x3\xE\x5\xE\xCF\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\xD4\n\xE\x3\xE\x3\xE"+ - "\x5\xE\xD8\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\xDD\n\xE\x3\xE\x3\xE\x5\xE\xE1"+ - "\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\xE6\n\xE\x3\xE\x3\xE\x5\xE\xEA\n\xE\x3\xE"+ - "\x3\xE\x3\xE\x5\xE\xEF\n\xE\x3\xE\x3\xE\x5\xE\xF3\n\xE\x3\xE\x3\xE\x3"+ - "\xE\x5\xE\xF8\n\xE\x3\xE\x3\xE\x5\xE\xFC\n\xE\x3\xE\x3\xE\x3\xE\x5\xE"+ - "\x101\n\xE\x3\xE\x3\xE\x5\xE\x105\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\x10A\n"+ - "\xE\x3\xE\x3\xE\x5\xE\x10E\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\x113\n\xE\x3\xE"+ - "\x3\xE\x5\xE\x117\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\x11C\n\xE\x3\xE\x3\xE\x5"+ - "\xE\x120\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\x125\n\xE\x3\xE\x3\xE\x5\xE\x129"+ - "\n\xE\x3\xE\x3\xE\x3\xE\x5\xE\x12E\n\xE\x3\xE\x3\xE\x5\xE\x132\n\xE\x3"+ - "\xE\a\xE\x135\n\xE\f\xE\xE\xE\x138\v\xE\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF"+ - "\x5\xF\x13F\n\xF\x5\xF\x141\n\xF\x3\x10\x3\x10\x3\x11\x3\x11\x5\x11\x147"+ - "\n\x11\x3\x11\x3\x11\x5\x11\x14B\n\x11\x3\x11\x3\x11\x3\x12\x3\x12\x3"+ - "\x12\x3\x12\x3\x12\x3\x12\x3\x12\x3\x12\x3\x13\x3\x13\x3\x13\x3\x13\x3"+ - "\x14\x3\x14\x3\x14\x3\x14\x5\x14\x15F\n\x14\x3\x14\x3\x14\x5\x14\x163"+ - "\n\x14\x3\x14\x3\x14\x5\x14\x167\n\x14\x3\x14\x5\x14\x16A\n\x14\x3\x14"+ - "\x5\x14\x16D\n\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x5"+ - "\x14\x176\n\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14"+ - "\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\a\x14\x186\n\x14\f\x14\xE\x14"+ - "\x189\v\x14\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x5\x15\x192"+ - "\n\x15\x3\x15\x3\x15\x3\x15\x5\x15\x197\n\x15\x3\x16\x3\x16\x5\x16\x19B"+ - "\n\x16\x3\x16\x3\x16\x5\x16\x19F\n\x16\x3\x16\x5\x16\x1A2\n\x16\x3\x16"+ - "\x5\x16\x1A5\n\x16\x3\x16\x3\x16\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3"+ - "\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x5"+ - "\x17\x1B8\n\x17\x3\x18\x3\x18\x3\x19\x5\x19\x1BD\n\x19\x3\x19\x5\x19\x1C0"+ - "\n\x19\x3\x19\x3\x19\x5\x19\x1C4\n\x19\a\x19\x1C6\n\x19\f\x19\xE\x19\x1C9"+ - "\v\x19\x3\x19\x3\x19\x5\x19\x1CD\n\x19\x3\x19\x5\x19\x1D0\n\x19\x3\x19"+ - "\x3\x19\x5\x19\x1D4\n\x19\a\x19\x1D6\n\x19\f\x19\xE\x19\x1D9\v\x19\x3"+ - "\x19\x5\x19\x1DC\n\x19\x3\x1A\x3\x1A\x3\x1B\x3\x1B\x3\x1C\x3\x1C\x5\x1C"+ - "\x1E4\n\x1C\x3\x1C\x3\x1C\x5\x1C\x1E8\n\x1C\x3\x1C\a\x1C\x1EB\n\x1C\f"+ - "\x1C\xE\x1C\x1EE\v\x1C\x3\x1D\x3\x1D\x5\x1D\x1F2\n\x1D\x3\x1D\x3\x1D\x5"+ - "\x1D\x1F6\n\x1D\x3\x1D\x3\x1D\x3\x1E\x3\x1E\x5\x1E\x1FC\n\x1E\x3\x1E\x3"+ - "\x1E\x5\x1E\x200\n\x1E\x3\x1F\x3\x1F\x3 \x3 \x3!\x3!\x5!\x208\n!\x3\""+ - "\x3\"\x3\"\x3#\x3#\x3#\x3$\x3$\x3%\x3%\x5%\x214\n%\x3&\x3&\x5&\x218\n"+ - "&\x3\'\x3\'\x3\'\x3\'\x3(\x3(\x5(\x220\n(\x3)\x3)\x3)\x3)\x3)\x3)\x3)"+ - "\x3)\x5)\x22A\n)\x3*\x3*\x3+\x3+\x3,\x3,\x3-\x3-\x3.\x3.\x5.\x236\n.\x3"+ - "/\x3/\x3\x30\x3\x30\x3\x31\x3\x31\x3\x32\x3\x32\x3\x32\x5\x32\x241\n\x32"+ - "\x3\x33\x3\x33\x3\x34\x3\x34\x3\x35\x3\x35\x3\x36\x6\x36\x24A\n\x36\r"+ - "\x36\xE\x36\x24B\x3\x36\x2\x2\x4\x1A&\x37\x2\x2\x4\x2\x6\x2\b\x2\n\x2"+ - "\f\x2\xE\x2\x10\x2\x12\x2\x14\x2\x16\x2\x18\x2\x1A\x2\x1C\x2\x1E\x2 \x2"+ - "\"\x2$\x2&\x2(\x2*\x2,\x2.\x2\x30\x2\x32\x2\x34\x2\x36\x2\x38\x2:\x2<"+ - "\x2>\x2@\x2\x42\x2\x44\x2\x46\x2H\x2J\x2L\x2N\x2P\x2R\x2T\x2V\x2X\x2Z"+ - "\x2\\\x2^\x2`\x2\x62\x2\x64\x2\x66\x2h\x2j\x2\x2\x11\x5\x2,,.\x32\xEC"+ - "\xEC\x5\x2==II\xCC\xCC\x4\x2\xE0\xE0\xE9\xE9\x4\x2\xE8\xE8\xEB\xEB\a\x2"+ - "\x82\x82\x8B\x8B\xE2\xE5\xE7\xE7\xEA\xEA\x3\x2\xF6\xF9(\x2\x18\x18$$\x33"+ - "\x33\x39\x39==\x42\x43GHKXZ[^_\x63\x63\x65\x65hjlsv}\x7F\x7F\x81\x81\x86"+ - "\x86\x88\x89\x8C\x90\x96\x96\x9B\x9C\x9E\x9E\xA5\xA5\xA8\xA9\xAE\xB0\xB2"+ - "\xB5\xB7\xB9\xBB\xBB\xBE\xBF\xC1\xC1\xC3\xC3\xC6\xC8\xCA\xCA\xD1\xD1\xD4"+ - "\xD4\xD8\xDB\xDD\xDD\x12\x2\x4\x4::?@\x43\x43]^\x80\x80\x97\x97\x9F\x9F"+ - "\xA6\xA7\xC3\xC3\xC5\xC5\xCB\xCB\xCD\xCD\xCF\xCF\xD5\xD5\xDC\xDD\r\x2"+ - "\x34\x34\x36\x36kk~~\x82\x82\x8B\x8B\x94\x94\x97\x98\xA4\xA4\xD2\xD2\xDE"+ - "\xDE\f\x2\x3\x3\x6\f\xE\x12\x14\x17\x19\x19\x1B\x1B\x1D\x1E!#%\'\x92\x92"+ - "\t\x2\x5\x5\r\r\x1A\x1A\x1C\x1C&&((\x81\x81\r\x2\x13\x13\x1F >>\x41\x41"+ - "JJ\\\\\x83\x83\x87\x87\xC4\xC4\xC9\xC9\xD6\xD6\x4\x2tt\xD0\xD0\x4\x2`"+ - "`\x9A\x9A\x4\x2\x100\x100\x102\x102\x293\x2l\x3\x2\x2\x2\x4q\x3\x2\x2"+ - "\x2\x6u\x3\x2\x2\x2\by\x3\x2\x2\x2\n{\x3\x2\x2\x2\f}\x3\x2\x2\x2\xE\x86"+ - "\x3\x2\x2\x2\x10\x88\x3\x2\x2\x2\x12\x90\x3\x2\x2\x2\x14\x92\x3\x2\x2"+ - "\x2\x16\x94\x3\x2\x2\x2\x18\xAB\x3\x2\x2\x2\x1A\xC6\x3\x2\x2\x2\x1C\x140"+ - "\x3\x2\x2\x2\x1E\x142\x3\x2\x2\x2 \x144\x3\x2\x2\x2\"\x14E\x3\x2\x2\x2"+ - "$\x156\x3\x2\x2\x2&\x15E\x3\x2\x2\x2(\x196\x3\x2\x2\x2*\x198\x3\x2\x2"+ - "\x2,\x1B7\x3\x2\x2\x2.\x1B9\x3\x2\x2\x2\x30\x1DB\x3\x2\x2\x2\x32\x1DD"+ - "\x3\x2\x2\x2\x34\x1DF\x3\x2\x2\x2\x36\x1E1\x3\x2\x2\x2\x38\x1EF\x3\x2"+ - "\x2\x2:\x1FF\x3\x2\x2\x2<\x201\x3\x2\x2\x2>\x203\x3\x2\x2\x2@\x207\x3"+ - "\x2\x2\x2\x42\x209\x3\x2\x2\x2\x44\x20C\x3\x2\x2\x2\x46\x20F\x3\x2\x2"+ - "\x2H\x213\x3\x2\x2\x2J\x217\x3\x2\x2\x2L\x219\x3\x2\x2\x2N\x21F\x3\x2"+ - "\x2\x2P\x229\x3\x2\x2\x2R\x22B\x3\x2\x2\x2T\x22D\x3\x2\x2\x2V\x22F\x3"+ - "\x2\x2\x2X\x231\x3\x2\x2\x2Z\x235\x3\x2\x2\x2\\\x237\x3\x2\x2\x2^\x239"+ - "\x3\x2\x2\x2`\x23B\x3\x2\x2\x2\x62\x240\x3\x2\x2\x2\x64\x242\x3\x2\x2"+ - "\x2\x66\x244\x3\x2\x2\x2h\x246\x3\x2\x2\x2j\x249\x3\x2\x2\x2lm\x5\x1A"+ - "\xE\x2mn\a\x2\x2\x3n\x3\x3\x2\x2\x2or\x5\x6\x4\x2pr\x5\b\x5\x2qo\x3\x2"+ - "\x2\x2qp\x3\x2\x2\x2r\x5\x3\x2\x2\x2sv\x5\xE\b\x2tv\x5\x10\t\x2us\x3\x2"+ - "\x2\x2ut\x3\x2\x2\x2v\a\x3\x2\x2\x2wz\x5\n\x6\x2xz\x5\f\a\x2yw\x3\x2\x2"+ - "\x2yx\x3\x2\x2\x2z\t\x3\x2\x2\x2{|\x5P)\x2|\v\x3\x2\x2\x2}~\x5P)\x2~\x7F"+ - "\x5\x14\v\x2\x7F\r\x3\x2\x2\x2\x80\x87\a\x101\x2\x2\x81\x87\a\x105\x2"+ - "\x2\x82\x87\x5\\/\x2\x83\x87\x5^\x30\x2\x84\x87\x5\x16\f\x2\x85\x87\a"+ - "\x106\x2\x2\x86\x80\x3\x2\x2\x2\x86\x81\x3\x2\x2\x2\x86\x82\x3\x2\x2\x2"+ - "\x86\x83\x3\x2\x2\x2\x86\x84\x3\x2\x2\x2\x86\x85\x3\x2\x2\x2\x87\xF\x3"+ - "\x2\x2\x2\x88\x89\x5\x12\n\x2\x89\x8A\x5\x14\v\x2\x8A\x11\x3\x2\x2\x2"+ - "\x8B\x91\a\x101\x2\x2\x8C\x91\x5\\/\x2\x8D\x91\x5^\x30\x2\x8E\x91\x5\x16"+ - "\f\x2\x8F\x91\a\x106\x2\x2\x90\x8B\x3\x2\x2\x2\x90\x8C\x3\x2\x2\x2\x90"+ - "\x8D\x3\x2\x2\x2\x90\x8E\x3\x2\x2\x2\x90\x8F\x3\x2\x2\x2\x91\x13\x3\x2"+ - "\x2\x2\x92\x93\t\x2\x2\x2\x93\x15\x3\x2\x2\x2\x94\x95\t\x3\x2\x2\x95\x17"+ - "\x3\x2\x2\x2\x96\xAC\x5`\x31\x2\x97\x99\a\xF3\x2\x2\x98\x9A\x5j\x36\x2"+ - "\x99\x98\x3\x2\x2\x2\x99\x9A\x3\x2\x2\x2\x9A\x9B\x3\x2\x2\x2\x9B\x9D\x5"+ - "`\x31\x2\x9C\x9E\x5j\x36\x2\x9D\x9C\x3\x2\x2\x2\x9D\x9E\x3\x2\x2\x2\x9E"+ - "\x9F\x3\x2\x2\x2\x9F\xA0\a\xF4\x2\x2\xA0\xAC\x3\x2\x2\x2\xA1\xAC\a\x106"+ - "\x2\x2\xA2\xA4\a\xF3\x2\x2\xA3\xA5\x5j\x36\x2\xA4\xA3\x3\x2\x2\x2\xA4"+ - "\xA5\x3\x2\x2\x2\xA5\xA6\x3\x2\x2\x2\xA6\xA8\a\x106\x2\x2\xA7\xA9\x5j"+ - "\x36\x2\xA8\xA7\x3\x2\x2\x2\xA8\xA9\x3\x2\x2\x2\xA9\xAA\x3\x2\x2\x2\xAA"+ - "\xAC\a\xF4\x2\x2\xAB\x96\x3\x2\x2\x2\xAB\x97\x3\x2\x2\x2\xAB\xA1\x3\x2"+ - "\x2\x2\xAB\xA2\x3\x2\x2\x2\xAC\x19\x3\x2\x2\x2\xAD\xAE\b\xE\x1\x2\xAE"+ - "\xB0\a\xE8\x2\x2\xAF\xB1\x5j\x36\x2\xB0\xAF\x3\x2\x2\x2\xB0\xB1\x3\x2"+ - "\x2\x2\xB1\xB2\x3\x2\x2\x2\xB2\xC7\x5\x1A\xE\x10\xB3\xB5\a\x98\x2\x2\xB4"+ - "\xB6\x5j\x36\x2\xB5\xB4\x3\x2\x2\x2\xB5\xB6\x3\x2\x2\x2\xB6\xB7\x3\x2"+ - "\x2\x2\xB7\xC7\x5\x1A\xE\t\xB8\xC7\x5&\x14\x2\xB9\xBB\a\xE6\x2\x2\xBA"+ - "\xBC\x5j\x36\x2\xBB\xBA\x3\x2\x2\x2\xBB\xBC\x3\x2\x2\x2\xBC\xBD\x3\x2"+ - "\x2\x2\xBD\xBF\x5\x1A\xE\x2\xBE\xC0\x5j\x36\x2\xBF\xBE\x3\x2\x2\x2\xBF"+ - "\xC0\x3\x2\x2\x2\xC0\xC1\x3\x2\x2\x2\xC1\xC2\a\xED\x2\x2\xC2\xC7\x3\x2"+ - "\x2\x2\xC3\xC7\x5\"\x12\x2\xC4\xC7\x5$\x13\x2\xC5\xC7\x5\x1C\xF\x2\xC6"+ - "\xAD\x3\x2\x2\x2\xC6\xB3\x3\x2\x2\x2\xC6\xB8\x3\x2\x2\x2\xC6\xB9\x3\x2"+ - "\x2\x2\xC6\xC3\x3\x2\x2\x2\xC6\xC4\x3\x2\x2\x2\xC6\xC5\x3\x2\x2\x2\xC7"+ - "\x136\x3\x2\x2\x2\xC8\xCA\f\x11\x2\x2\xC9\xCB\x5j\x36\x2\xCA\xC9\x3\x2"+ - "\x2\x2\xCA\xCB\x3\x2\x2\x2\xCB\xCC\x3\x2\x2\x2\xCC\xCE\a\xEC\x2\x2\xCD"+ - "\xCF\x5j\x36\x2\xCE\xCD\x3\x2\x2\x2\xCE\xCF\x3\x2\x2\x2\xCF\xD0\x3\x2"+ - "\x2\x2\xD0\x135\x5\x1A\xE\x12\xD1\xD3\f\xF\x2\x2\xD2\xD4\x5j\x36\x2\xD3"+ - "\xD2\x3\x2\x2\x2\xD3\xD4\x3\x2\x2\x2\xD4\xD5\x3\x2\x2\x2\xD5\xD7\t\x4"+ - "\x2\x2\xD6\xD8\x5j\x36\x2\xD7\xD6\x3\x2\x2\x2\xD7\xD8\x3\x2\x2\x2\xD8"+ - "\xD9\x3\x2\x2\x2\xD9\x135\x5\x1A\xE\x10\xDA\xDC\f\xE\x2\x2\xDB\xDD\x5"+ - "j\x36\x2\xDC\xDB\x3\x2\x2\x2\xDC\xDD\x3\x2\x2\x2\xDD\xDE\x3\x2\x2\x2\xDE"+ - "\xE0\a\xE1\x2\x2\xDF\xE1\x5j\x36\x2\xE0\xDF\x3\x2\x2\x2\xE0\xE1\x3\x2"+ - "\x2\x2\xE1\xE2\x3\x2\x2\x2\xE2\x135\x5\x1A\xE\xF\xE3\xE5\f\r\x2\x2\xE4"+ - "\xE6\x5j\x36\x2\xE5\xE4\x3\x2\x2\x2\xE5\xE6\x3\x2\x2\x2\xE6\xE7\x3\x2"+ - "\x2\x2\xE7\xE9\a\x94\x2\x2\xE8\xEA\x5j\x36\x2\xE9\xE8\x3\x2\x2\x2\xE9"+ - "\xEA\x3\x2\x2\x2\xEA\xEB\x3\x2\x2\x2\xEB\x135\x5\x1A\xE\xE\xEC\xEE\f\f"+ - "\x2\x2\xED\xEF\x5j\x36\x2\xEE\xED\x3\x2\x2\x2\xEE\xEF\x3\x2\x2\x2\xEF"+ - "\xF0\x3\x2\x2\x2\xF0\xF2\t\x5\x2\x2\xF1\xF3\x5j\x36\x2\xF2\xF1\x3\x2\x2"+ - "\x2\xF2\xF3\x3\x2\x2\x2\xF3\xF4\x3\x2\x2\x2\xF4\x135\x5\x1A\xE\r\xF5\xF7"+ - "\f\v\x2\x2\xF6\xF8\x5j\x36\x2\xF7\xF6\x3\x2\x2\x2\xF7\xF8\x3\x2\x2\x2"+ - "\xF8\xF9\x3\x2\x2\x2\xF9\xFB\a\x32\x2\x2\xFA\xFC\x5j\x36\x2\xFB\xFA\x3"+ - "\x2\x2\x2\xFB\xFC\x3\x2\x2\x2\xFC\xFD\x3\x2\x2\x2\xFD\x135\x5\x1A\xE\f"+ - "\xFE\x100\f\n\x2\x2\xFF\x101\x5j\x36\x2\x100\xFF\x3\x2\x2\x2\x100\x101"+ - "\x3\x2\x2\x2\x101\x102\x3\x2\x2\x2\x102\x104\t\x6\x2\x2\x103\x105\x5j"+ - "\x36\x2\x104\x103\x3\x2\x2\x2\x104\x105\x3\x2\x2\x2\x105\x106\x3\x2\x2"+ - "\x2\x106\x135\x5\x1A\xE\v\x107\x109\f\b\x2\x2\x108\x10A\x5j\x36\x2\x109"+ - "\x108\x3\x2\x2\x2\x109\x10A\x3\x2\x2\x2\x10A\x10B\x3\x2\x2\x2\x10B\x10D"+ - "\a\x36\x2\x2\x10C\x10E\x5j\x36\x2\x10D\x10C\x3\x2\x2\x2\x10D\x10E\x3\x2"+ - "\x2\x2\x10E\x10F\x3\x2\x2\x2\x10F\x135\x5\x1A\xE\t\x110\x112\f\a\x2\x2"+ - "\x111\x113\x5j\x36\x2\x112\x111\x3\x2\x2\x2\x112\x113\x3\x2\x2\x2\x113"+ - "\x114\x3\x2\x2\x2\x114\x116\a\xA4\x2\x2\x115\x117\x5j\x36\x2\x116\x115"+ - "\x3\x2\x2\x2\x116\x117\x3\x2\x2\x2\x117\x118\x3\x2\x2\x2\x118\x135\x5"+ - "\x1A\xE\b\x119\x11B\f\x6\x2\x2\x11A\x11C\x5j\x36\x2\x11B\x11A\x3\x2\x2"+ - "\x2\x11B\x11C\x3\x2\x2\x2\x11C\x11D\x3\x2\x2\x2\x11D\x11F\a\xDE\x2\x2"+ - "\x11E\x120\x5j\x36\x2\x11F\x11E\x3\x2\x2\x2\x11F\x120\x3\x2\x2\x2\x120"+ - "\x121\x3\x2\x2\x2\x121\x135\x5\x1A\xE\a\x122\x124\f\x5\x2\x2\x123\x125"+ - "\x5j\x36\x2\x124\x123\x3\x2\x2\x2\x124\x125\x3\x2\x2\x2\x125\x126\x3\x2"+ - "\x2\x2\x126\x128\ak\x2\x2\x127\x129\x5j\x36\x2\x128\x127\x3\x2\x2\x2\x128"+ - "\x129\x3\x2\x2\x2\x129\x12A\x3\x2\x2\x2\x12A\x135\x5\x1A\xE\x6\x12B\x12D"+ - "\f\x4\x2\x2\x12C\x12E\x5j\x36\x2\x12D\x12C\x3\x2\x2\x2\x12D\x12E\x3\x2"+ - "\x2\x2\x12E\x12F\x3\x2\x2\x2\x12F\x131\a~\x2\x2\x130\x132\x5j\x36\x2\x131"+ - "\x130\x3\x2\x2\x2\x131\x132\x3\x2\x2\x2\x132\x133\x3\x2\x2\x2\x133\x135"+ - "\x5\x1A\xE\x5\x134\xC8\x3\x2\x2\x2\x134\xD1\x3\x2\x2\x2\x134\xDA\x3\x2"+ - "\x2\x2\x134\xE3\x3\x2\x2\x2\x134\xEC\x3\x2\x2\x2\x134\xF5\x3\x2\x2\x2"+ - "\x134\xFE\x3\x2\x2\x2\x134\x107\x3\x2\x2\x2\x134\x110\x3\x2\x2\x2\x134"+ - "\x119\x3\x2\x2\x2\x134\x122\x3\x2\x2\x2\x134\x12B\x3\x2\x2\x2\x135\x138"+ - "\x3\x2\x2\x2\x136\x134\x3\x2\x2\x2\x136\x137\x3\x2\x2\x2\x137\x1B\x3\x2"+ - "\x2\x2\x138\x136\x3\x2\x2\x2\x139\x141\x5\x1E\x10\x2\x13A\x141\a\xFA\x2"+ - "\x2\x13B\x141\a\xF5\x2\x2\x13C\x13E\x5\x62\x32\x2\x13D\x13F\x5\x14\v\x2"+ - "\x13E\x13D\x3\x2\x2\x2\x13E\x13F\x3\x2\x2\x2\x13F\x141\x3\x2\x2\x2\x140"+ - "\x139\x3\x2\x2\x2\x140\x13A\x3\x2\x2\x2\x140\x13B\x3\x2\x2\x2\x140\x13C"+ - "\x3\x2\x2\x2\x141\x1D\x3\x2\x2\x2\x142\x143\t\a\x2\x2\x143\x1F\x3\x2\x2"+ - "\x2\x144\x146\a\xE6\x2\x2\x145\x147\x5j\x36\x2\x146\x145\x3\x2\x2\x2\x146"+ - "\x147\x3\x2\x2\x2\x147\x148\x3\x2\x2\x2\x148\x14A\x5\x1A\xE\x2\x149\x14B"+ - "\x5j\x36\x2\x14A\x149\x3\x2\x2\x2\x14A\x14B\x3\x2\x2\x2\x14B\x14C\x3\x2"+ - "\x2\x2\x14C\x14D\a\xED\x2\x2\x14D!\x3\x2\x2\x2\x14E\x14F\a\xD2\x2\x2\x14F"+ - "\x150\x5j\x36\x2\x150\x151\x5\x1A\xE\x2\x151\x152\x5j\x36\x2\x152\x153"+ - "\a\x82\x2\x2\x153\x154\x5j\x36\x2\x154\x155\x5H%\x2\x155#\x3\x2\x2\x2"+ - "\x156\x157\a\x97\x2\x2\x157\x158\x5j\x36\x2\x158\x159\x5H%\x2\x159%\x3"+ - "\x2\x2\x2\x15A\x15B\b\x14\x1\x2\x15B\x15F\x5> \x2\x15C\x15F\x5<\x1F\x2"+ - "\x15D\x15F\x5@!\x2\x15E\x15A\x3\x2\x2\x2\x15E\x15C\x3\x2\x2\x2\x15E\x15D"+ - "\x3\x2\x2\x2\x15F\x187\x3\x2\x2\x2\x160\x162\f\v\x2\x2\x161\x163\x5j\x36"+ - "\x2\x162\x161\x3\x2\x2\x2\x162\x163\x3\x2\x2\x2\x163\x164\x3\x2\x2\x2"+ - "\x164\x166\a\xE6\x2\x2\x165\x167\x5j\x36\x2\x166\x165\x3\x2\x2\x2\x166"+ - "\x167\x3\x2\x2\x2\x167\x169\x3\x2\x2\x2\x168\x16A\x5.\x18\x2\x169\x168"+ - "\x3\x2\x2\x2\x169\x16A\x3\x2\x2\x2\x16A\x16C\x3\x2\x2\x2\x16B\x16D\x5"+ - "j\x36\x2\x16C\x16B\x3\x2\x2\x2\x16C\x16D\x3\x2\x2\x2\x16D\x16E\x3\x2\x2"+ - "\x2\x16E\x186\a\xED\x2\x2\x16F\x170\f\n\x2\x2\x170\x171\a-\x2\x2\x171"+ - "\x186\x5\x4\x3\x2\x172\x173\f\t\x2\x2\x173\x175\a\x102\x2\x2\x174\x176"+ - "\x5j\x36\x2\x175\x174\x3\x2\x2\x2\x175\x176\x3\x2\x2\x2\x176\x177\x3\x2"+ - "\x2\x2\x177\x178\a-\x2\x2\x178\x186\x5\x4\x3\x2\x179\x17A\f\b\x2\x2\x17A"+ - "\x17B\a,\x2\x2\x17B\x186\x5\x4\x3\x2\x17C\x17D\f\a\x2\x2\x17D\x17E\a\x102"+ - "\x2\x2\x17E\x17F\a,\x2\x2\x17F\x186\x5\x4\x3\x2\x180\x181\f\x6\x2\x2\x181"+ - "\x182\a\x102\x2\x2\x182\x183\a,\x2\x2\x183\x184\a\x102\x2\x2\x184\x186"+ - "\x5\x4\x3\x2\x185\x160\x3\x2\x2\x2\x185\x16F\x3\x2\x2\x2\x185\x172\x3"+ - "\x2\x2\x2\x185\x179\x3\x2\x2\x2\x185\x17C\x3\x2\x2\x2\x185\x180\x3\x2"+ - "\x2\x2\x186\x189\x3\x2\x2\x2\x187\x185\x3\x2\x2\x2\x187\x188\x3\x2\x2"+ - "\x2\x188\'\x3\x2\x2\x2\x189\x187\x3\x2\x2\x2\x18A\x18B\x5&\x14\x2\x18B"+ - "\x18C\a-\x2\x2\x18C\x18D\x5\x4\x3\x2\x18D\x197\x3\x2\x2\x2\x18E\x18F\x5"+ - "&\x14\x2\x18F\x191\a\x102\x2\x2\x190\x192\x5j\x36\x2\x191\x190\x3\x2\x2"+ - "\x2\x191\x192\x3\x2\x2\x2\x192\x193\x3\x2\x2\x2\x193\x194\a-\x2\x2\x194"+ - "\x195\x5\x4\x3\x2\x195\x197\x3\x2\x2\x2\x196\x18A\x3\x2\x2\x2\x196\x18E"+ - "\x3\x2\x2\x2\x197)\x3\x2\x2\x2\x198\x19A\x5&\x14\x2\x199\x19B\x5j\x36"+ - "\x2\x19A\x199\x3\x2\x2\x2\x19A\x19B\x3\x2\x2\x2\x19B\x19C\x3\x2\x2\x2"+ - "\x19C\x19E\a\xE6\x2\x2\x19D\x19F\x5j\x36\x2\x19E\x19D\x3\x2\x2\x2\x19E"+ - "\x19F\x3\x2\x2\x2\x19F\x1A1\x3\x2\x2\x2\x1A0\x1A2\x5.\x18\x2\x1A1\x1A0"+ - "\x3\x2\x2\x2\x1A1\x1A2\x3\x2\x2\x2\x1A2\x1A4\x3\x2\x2\x2\x1A3\x1A5\x5"+ - "j\x36\x2\x1A4\x1A3\x3\x2\x2\x2\x1A4\x1A5\x3\x2\x2\x2\x1A5\x1A6\x3\x2\x2"+ - "\x2\x1A6\x1A7\a\xED\x2\x2\x1A7+\x3\x2\x2\x2\x1A8\x1A9\x5&\x14\x2\x1A9"+ - "\x1AA\a,\x2\x2\x1AA\x1AB\x5\x4\x3\x2\x1AB\x1B8\x3\x2\x2\x2\x1AC\x1AD\x5"+ - "&\x14\x2\x1AD\x1AE\a\x102\x2\x2\x1AE\x1AF\a,\x2\x2\x1AF\x1B0\x5\x4\x3"+ - "\x2\x1B0\x1B8\x3\x2\x2\x2\x1B1\x1B2\x5&\x14\x2\x1B2\x1B3\a\x102\x2\x2"+ - "\x1B3\x1B4\a,\x2\x2\x1B4\x1B5\a\x102\x2\x2\x1B5\x1B6\x5\x4\x3\x2\x1B6"+ - "\x1B8\x3\x2\x2\x2\x1B7\x1A8\x3\x2\x2\x2\x1B7\x1AC\x3\x2\x2\x2\x1B7\x1B1"+ - "\x3\x2\x2\x2\x1B8-\x3\x2\x2\x2\x1B9\x1BA\x5\x30\x19\x2\x1BA/\x3\x2\x2"+ - "\x2\x1BB\x1BD\x5\x32\x1A\x2\x1BC\x1BB\x3\x2\x2\x2\x1BC\x1BD\x3\x2\x2\x2"+ - "\x1BD\x1BF\x3\x2\x2\x2\x1BE\x1C0\x5j\x36\x2\x1BF\x1BE\x3\x2\x2\x2\x1BF"+ - "\x1C0\x3\x2\x2\x2\x1C0\x1C1\x3\x2\x2\x2\x1C1\x1C3\a)\x2\x2\x1C2\x1C4\x5"+ - "j\x36\x2\x1C3\x1C2\x3\x2\x2\x2\x1C3\x1C4\x3\x2\x2\x2\x1C4\x1C6\x3\x2\x2"+ - "\x2\x1C5\x1BC\x3\x2\x2\x2\x1C6\x1C9\x3\x2\x2\x2\x1C7\x1C5\x3\x2\x2\x2"+ - "\x1C7\x1C8\x3\x2\x2\x2\x1C8\x1CA\x3\x2\x2\x2\x1C9\x1C7\x3\x2\x2\x2\x1CA"+ - "\x1DC\x5\x34\x1B\x2\x1CB\x1CD\x5\x32\x1A\x2\x1CC\x1CB\x3\x2\x2\x2\x1CC"+ - "\x1CD\x3\x2\x2\x2\x1CD\x1CF\x3\x2\x2\x2\x1CE\x1D0\x5j\x36\x2\x1CF\x1CE"+ - "\x3\x2\x2\x2\x1CF\x1D0\x3\x2\x2\x2\x1D0\x1D1\x3\x2\x2\x2\x1D1\x1D3\a)"+ - "\x2\x2\x1D2\x1D4\x5j\x36\x2\x1D3\x1D2\x3\x2\x2\x2\x1D3\x1D4\x3\x2\x2\x2"+ - "\x1D4\x1D6\x3\x2\x2\x2\x1D5\x1CC\x3\x2\x2\x2\x1D6\x1D9\x3\x2\x2\x2\x1D7"+ - "\x1D5\x3\x2\x2\x2\x1D7\x1D8\x3\x2\x2\x2\x1D8\x1DA\x3\x2\x2\x2\x1D9\x1D7"+ - "\x3\x2\x2\x2\x1DA\x1DC\x5\x36\x1C\x2\x1DB\x1C7\x3\x2\x2\x2\x1DB\x1D7\x3"+ - "\x2\x2\x2\x1DC\x31\x3\x2\x2\x2\x1DD\x1DE\x5:\x1E\x2\x1DE\x33\x3\x2\x2"+ - "\x2\x1DF\x1E0\x5:\x1E\x2\x1E0\x35\x3\x2\x2\x2\x1E1\x1EC\x5\x38\x1D\x2"+ - "\x1E2\x1E4\x5j\x36\x2\x1E3\x1E2\x3\x2\x2\x2\x1E3\x1E4\x3\x2\x2\x2\x1E4"+ - "\x1E5\x3\x2\x2\x2\x1E5\x1E7\a)\x2\x2\x1E6\x1E8\x5j\x36\x2\x1E7\x1E6\x3"+ - "\x2\x2\x2\x1E7\x1E8\x3\x2\x2\x2\x1E8\x1E9\x3\x2\x2\x2\x1E9\x1EB\x5\x38"+ - "\x1D\x2\x1EA\x1E3\x3\x2\x2\x2\x1EB\x1EE\x3\x2\x2\x2\x1EC\x1EA\x3\x2\x2"+ - "\x2\x1EC\x1ED\x3\x2\x2\x2\x1ED\x37\x3\x2\x2\x2\x1EE\x1EC\x3\x2\x2\x2\x1EF"+ - "\x1F1\x5\x4\x3\x2\x1F0\x1F2\x5j\x36\x2\x1F1\x1F0\x3\x2\x2\x2\x1F1\x1F2"+ - "\x3\x2\x2\x2\x1F2\x1F3\x3\x2\x2\x2\x1F3\x1F5\a\xDF\x2\x2\x1F4\x1F6\x5"+ - "j\x36\x2\x1F5\x1F4\x3\x2\x2\x2\x1F5\x1F6\x3\x2\x2\x2\x1F6\x1F7\x3\x2\x2"+ - "\x2\x1F7\x1F8\x5:\x1E\x2\x1F8\x39\x3\x2\x2\x2\x1F9\x1FA\a?\x2\x2\x1FA"+ - "\x1FC\x5j\x36\x2\x1FB\x1F9\x3\x2\x2\x2\x1FB\x1FC\x3\x2\x2\x2\x1FC\x1FD"+ - "\x3\x2\x2\x2\x1FD\x200\x5\x1A\xE\x2\x1FE\x200\x5L\'\x2\x1FF\x1FB\x3\x2"+ - "\x2\x2\x1FF\x1FE\x3\x2\x2\x2\x200;\x3\x2\x2\x2\x201\x202\x5\x6\x4\x2\x202"+ - "=\x3\x2\x2\x2\x203\x204\a\x91\x2\x2\x204?\x3\x2\x2\x2\x205\x208\x5\x42"+ - "\"\x2\x206\x208\x5\x44#\x2\x207\x205\x3\x2\x2\x2\x207\x206\x3\x2\x2\x2"+ - "\x208\x41\x3\x2\x2\x2\x209\x20A\a-\x2\x2\x20A\x20B\x5\x4\x3\x2\x20B\x43"+ - "\x3\x2\x2\x2\x20C\x20D\a,\x2\x2\x20D\x20E\x5\x4\x3\x2\x20E\x45\x3\x2\x2"+ - "\x2\x20F\x210\x5\x1A\xE\x2\x210G\x3\x2\x2\x2\x211\x214\x5\x18\r\x2\x212"+ - "\x214\x5J&\x2\x213\x211\x3\x2\x2\x2\x213\x212\x3\x2\x2\x2\x214I\x3\x2"+ - "\x2\x2\x215\x218\x5<\x1F\x2\x216\x218\x5(\x15\x2\x217\x215\x3\x2\x2\x2"+ - "\x217\x216\x3\x2\x2\x2\x218K\x3\x2\x2\x2\x219\x21A\a\x34\x2\x2\x21A\x21B"+ - "\x5j\x36\x2\x21B\x21C\x5N(\x2\x21CM\x3\x2\x2\x2\x21D\x220\x5(\x15\x2\x21E"+ - "\x220\x5<\x1F\x2\x21F\x21D\x3\x2\x2\x2\x21F\x21E\x3\x2\x2\x2\x220O\x3"+ - "\x2\x2\x2\x221\x22A\x5R*\x2\x222\x22A\x5V,\x2\x223\x22A\x5X-\x2\x224\x22A"+ - "\x5^\x30\x2\x225\x22A\x5Z.\x2\x226\x22A\x5\x62\x32\x2\x227\x22A\x5T+\x2"+ - "\x228\x22A\x5`\x31\x2\x229\x221\x3\x2\x2\x2\x229\x222\x3\x2\x2\x2\x229"+ - "\x223\x3\x2\x2\x2\x229\x224\x3\x2\x2\x2\x229\x225\x3\x2\x2\x2\x229\x226"+ - "\x3\x2\x2\x2\x229\x227\x3\x2\x2\x2\x229\x228\x3\x2\x2\x2\x22AQ\x3\x2\x2"+ - "\x2\x22B\x22C\t\b\x2\x2\x22CS\x3\x2\x2\x2\x22D\x22E\a\xB6\x2\x2\x22EU"+ - "\x3\x2\x2\x2\x22F\x230\t\t\x2\x2\x230W\x3\x2\x2\x2\x231\x232\t\n\x2\x2"+ - "\x232Y\x3\x2\x2\x2\x233\x236\a\x91\x2\x2\x234\x236\x5\\/\x2\x235\x233"+ - "\x3\x2\x2\x2\x235\x234\x3\x2\x2\x2\x236[\x3\x2\x2\x2\x237\x238\t\v\x2"+ - "\x2\x238]\x3\x2\x2\x2\x239\x23A\t\f\x2\x2\x23A_\x3\x2\x2\x2\x23B\x23C"+ - "\t\r\x2\x2\x23C\x61\x3\x2\x2\x2\x23D\x241\x5\x64\x33\x2\x23E\x241\x5\x66"+ - "\x34\x2\x23F\x241\x5h\x35\x2\x240\x23D\x3\x2\x2\x2\x240\x23E\x3\x2\x2"+ - "\x2\x240\x23F\x3\x2\x2\x2\x241\x63\x3\x2\x2\x2\x242\x243\t\xE\x2\x2\x243"+ - "\x65\x3\x2\x2\x2\x244\x245\a\x99\x2\x2\x245g\x3\x2\x2\x2\x246\x247\t\xF"+ - "\x2\x2\x247i\x3\x2\x2\x2\x248\x24A\t\x10\x2\x2\x249\x248\x3\x2\x2\x2\x24A"+ - "\x24B\x3\x2\x2\x2\x24B\x249\x3\x2\x2\x2\x24B\x24C\x3\x2\x2\x2\x24Ck\x3"+ - "\x2\x2\x2Vquy\x86\x90\x99\x9D\xA4\xA8\xAB\xB0\xB5\xBB\xBF\xC6\xCA\xCE"+ - "\xD3\xD7\xDC\xE0\xE5\xE9\xEE\xF2\xF7\xFB\x100\x104\x109\x10D\x112\x116"+ - "\x11B\x11F\x124\x128\x12D\x131\x134\x136\x13E\x140\x146\x14A\x15E\x162"+ - "\x166\x169\x16C\x175\x185\x187\x191\x196\x19A\x19E\x1A1\x1A4\x1B7\x1BC"+ - "\x1BF\x1C3\x1C7\x1CC\x1CF\x1D3\x1D7\x1DB\x1E3\x1E7\x1EC\x1F1\x1F5\x1FB"+ - "\x1FF\x207\x213\x217\x21F\x229\x235\x240\x24B"; + "\t\x32\x4\x33\t\x33\x4\x34\t\x34\x4\x35\t\x35\x4\x36\t\x36\x4\x37\t\x37"+ + "\x4\x38\t\x38\x3\x2\x3\x2\x5\x2s\n\x2\x3\x2\x3\x2\x3\x3\x3\x3\x3\x3\x5"+ + "\x3z\n\x3\x3\x3\x3\x3\x3\x3\x5\x3\x7F\n\x3\x3\x4\x3\x4\x5\x4\x83\n\x4"+ + "\x3\x5\x3\x5\x5\x5\x87\n\x5\x3\x6\x3\x6\x5\x6\x8B\n\x6\x3\a\x3\a\x3\b"+ + "\x3\b\x3\b\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x5\t\x9A\n\t\x3\n\x3"+ + "\n\x3\n\x3\v\x3\v\x3\v\x3\v\x3\v\x3\v\x3\v\x5\v\xA6\n\v\x3\f\x3\f\x3\r"+ + "\x3\r\x3\xE\x3\xE\x3\xE\x5\xE\xAF\n\xE\x3\xE\x3\xE\x5\xE\xB3\n\xE\x3\xE"+ + "\x3\xE\x3\xE\x3\xE\x3\xE\x5\xE\xBA\n\xE\x3\xE\x3\xE\x5\xE\xBE\n\xE\x3"+ + "\xE\x5\xE\xC1\n\xE\x3\xF\x3\xF\x3\xF\x5\xF\xC6\n\xF\x3\xF\x3\xF\x3\xF"+ + "\x5\xF\xCB\n\xF\x3\xF\x3\xF\x3\xF\x3\xF\x5\xF\xD1\n\xF\x3\xF\x3\xF\x5"+ + "\xF\xD5\n\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x5\xF\xDC\n\xF\x3\xF\x3\xF"+ + "\x5\xF\xE0\n\xF\x3\xF\x3\xF\x5\xF\xE4\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\xE9"+ + "\n\xF\x3\xF\x3\xF\x5\xF\xED\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\xF2\n\xF\x3\xF"+ + "\x3\xF\x5\xF\xF6\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\xFB\n\xF\x3\xF\x3\xF\x5"+ + "\xF\xFF\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\x104\n\xF\x3\xF\x3\xF\x5\xF\x108"+ + "\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\x10D\n\xF\x3\xF\x3\xF\x5\xF\x111\n\xF\x3"+ + "\xF\x3\xF\x3\xF\x5\xF\x116\n\xF\x3\xF\x3\xF\x5\xF\x11A\n\xF\x3\xF\x3\xF"+ + "\x3\xF\x5\xF\x11F\n\xF\x3\xF\x3\xF\x5\xF\x123\n\xF\x3\xF\x3\xF\x3\xF\x5"+ + "\xF\x128\n\xF\x3\xF\x3\xF\x5\xF\x12C\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\x131"+ + "\n\xF\x3\xF\x3\xF\x5\xF\x135\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\x13A\n\xF\x3"+ + "\xF\x3\xF\x5\xF\x13E\n\xF\x3\xF\x3\xF\x3\xF\x5\xF\x143\n\xF\x3\xF\x3\xF"+ + "\x5\xF\x147\n\xF\x3\xF\a\xF\x14A\n\xF\f\xF\xE\xF\x14D\v\xF\x3\x10\x3\x10"+ + "\x3\x10\x3\x10\x3\x10\x5\x10\x154\n\x10\x5\x10\x156\n\x10\x3\x11\x3\x11"+ + "\x3\x12\x3\x12\x5\x12\x15C\n\x12\x3\x12\x3\x12\x5\x12\x160\n\x12\x3\x12"+ + "\x3\x12\x3\x13\x3\x13\x3\x13\x3\x13\x3\x13\x3\x13\x3\x13\x3\x13\x3\x14"+ + "\x3\x14\x3\x14\x3\x14\x3\x15\x3\x15\x3\x15\x3\x15\x5\x15\x174\n\x15\x3"+ + "\x15\x3\x15\x5\x15\x178\n\x15\x3\x15\x3\x15\x5\x15\x17C\n\x15\x3\x15\x5"+ + "\x15\x17F\n\x15\x3\x15\x5\x15\x182\n\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3"+ + "\x15\x3\x15\x3\x15\x5\x15\x18B\n\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15"+ + "\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\a\x15"+ + "\x19B\n\x15\f\x15\xE\x15\x19E\v\x15\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16"+ + "\x3\x16\x3\x16\x5\x16\x1A7\n\x16\x3\x16\x3\x16\x3\x16\x5\x16\x1AC\n\x16"+ + "\x3\x17\x3\x17\x5\x17\x1B0\n\x17\x3\x17\x3\x17\x5\x17\x1B4\n\x17\x3\x17"+ + "\x5\x17\x1B7\n\x17\x3\x17\x5\x17\x1BA\n\x17\x3\x17\x3\x17\x3\x18\x3\x18"+ + "\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18"+ + "\x3\x18\x3\x18\x3\x18\x5\x18\x1CD\n\x18\x3\x19\x3\x19\x3\x1A\x5\x1A\x1D2"+ + "\n\x1A\x3\x1A\x5\x1A\x1D5\n\x1A\x3\x1A\x3\x1A\x5\x1A\x1D9\n\x1A\a\x1A"+ + "\x1DB\n\x1A\f\x1A\xE\x1A\x1DE\v\x1A\x3\x1A\x3\x1A\x5\x1A\x1E2\n\x1A\x3"+ + "\x1A\x5\x1A\x1E5\n\x1A\x3\x1A\x3\x1A\x5\x1A\x1E9\n\x1A\a\x1A\x1EB\n\x1A"+ + "\f\x1A\xE\x1A\x1EE\v\x1A\x3\x1A\x5\x1A\x1F1\n\x1A\x3\x1B\x3\x1B\x3\x1C"+ + "\x3\x1C\x3\x1D\x3\x1D\x5\x1D\x1F9\n\x1D\x3\x1D\x3\x1D\x5\x1D\x1FD\n\x1D"+ + "\x3\x1D\a\x1D\x200\n\x1D\f\x1D\xE\x1D\x203\v\x1D\x3\x1E\x3\x1E\x5\x1E"+ + "\x207\n\x1E\x3\x1E\x3\x1E\x5\x1E\x20B\n\x1E\x3\x1E\x3\x1E\x3\x1F\x3\x1F"+ + "\x5\x1F\x211\n\x1F\x3\x1F\x3\x1F\x5\x1F\x215\n\x1F\x3 \x3 \x3!\x3!\x3"+ + "\"\x3\"\x5\"\x21D\n\"\x3#\x3#\x3#\x3$\x3$\x3$\x3%\x3%\x3&\x3&\x5&\x229"+ + "\n&\x3\'\x3\'\x5\'\x22D\n\'\x3(\x3(\x3(\x3(\x3)\x3)\x5)\x235\n)\x3*\x3"+ + "*\x3*\x3*\x3*\x3*\x3*\x3*\x5*\x23F\n*\x3+\x3+\x3,\x3,\x3-\x3-\x3.\x3."+ + "\x3/\x3/\x5/\x24B\n/\x3\x30\x3\x30\x3\x31\x3\x31\x3\x32\x3\x32\x3\x33"+ + "\x3\x33\x3\x34\x3\x34\x3\x34\x5\x34\x258\n\x34\x3\x35\x3\x35\x3\x36\x3"+ + "\x36\x3\x37\x3\x37\x3\x38\x6\x38\x261\n\x38\r\x38\xE\x38\x262\x3\x38\x2"+ + "\x2\x4\x1C(\x39\x2\x2\x4\x2\x6\x2\b\x2\n\x2\f\x2\xE\x2\x10\x2\x12\x2\x14"+ + "\x2\x16\x2\x18\x2\x1A\x2\x1C\x2\x1E\x2 \x2\"\x2$\x2&\x2(\x2*\x2,\x2.\x2"+ + "\x30\x2\x32\x2\x34\x2\x36\x2\x38\x2:\x2<\x2>\x2@\x2\x42\x2\x44\x2\x46"+ + "\x2H\x2J\x2L\x2N\x2P\x2R\x2T\x2V\x2X\x2Z\x2\\\x2^\x2`\x2\x62\x2\x64\x2"+ + "\x66\x2h\x2j\x2l\x2n\x2\x2\x12\x5\x2,,.\x32\xDA\xDA\x5\x2;;\x45\x45\xBC"+ + "\xBC\x4\x2\xCE\xCE\xD7\xD7\x4\x2\xD6\xD6\xD9\xD9\a\x2||\x83\x83\xD0\xD3"+ + "\xD5\xD5\xD8\xD8\x3\x2\xE4\xE7\"\x2\x18\x18$$\x33\x33\x38\x38;;@\x41\x43"+ + "\x44GVYZ^^``\x63\x65gnpwyy{{~~\x80\x81\x84\x88\x8C\x8C\x91\x92\x94\x94"+ + "\x9B\x9B\x9E\x9F\xA4\xAA\xAC\xB3\xB6\xB8\xBA\xBA\xC0\xC0\xC2\xC2\xC6\xC9"+ + "\xCB\xCB\x11\x2\x4\x4\x39\x39=>\x41\x41XYzz\x8D\x8D\x95\x95\x9C\x9D\xB3"+ + "\xB3\xB5\xB5\xBB\xBB\xBD\xBE\xC3\xC3\xCA\xCB\r\x2\x34\x34\x36\x36\x66"+ + "\x66xx||\x83\x83\x8B\x8B\x8D\x8E\x9A\x9A\xC1\xC1\xCC\xCC\f\x2\x3\x3\x6"+ + "\f\xE\x12\x14\x17\x19\x19\x1B\x1B\x1D\x1E!#%\'\x8A\x8A\t\x2\x5\x5\r\r"+ + "\x1A\x1A\x1C\x1C&&(({{\r\x2\x13\x13\x1F <\x216\x3\x2\x2\x2@\x218\x3\x2\x2\x2\x42\x21C\x3\x2\x2\x2"+ + "\x44\x21E\x3\x2\x2\x2\x46\x221\x3\x2\x2\x2H\x224\x3\x2\x2\x2J\x228\x3"+ + "\x2\x2\x2L\x22C\x3\x2\x2\x2N\x22E\x3\x2\x2\x2P\x234\x3\x2\x2\x2R\x23E"+ + "\x3\x2\x2\x2T\x240\x3\x2\x2\x2V\x242\x3\x2\x2\x2X\x244\x3\x2\x2\x2Z\x246"+ + "\x3\x2\x2\x2\\\x24A\x3\x2\x2\x2^\x24C\x3\x2\x2\x2`\x24E\x3\x2\x2\x2\x62"+ + "\x250\x3\x2\x2\x2\x64\x252\x3\x2\x2\x2\x66\x257\x3\x2\x2\x2h\x259\x3\x2"+ + "\x2\x2j\x25B\x3\x2\x2\x2l\x25D\x3\x2\x2\x2n\x260\x3\x2\x2\x2ps\x5\x1C"+ + "\xF\x2qs\x5\x4\x3\x2rp\x3\x2\x2\x2rq\x3\x2\x2\x2st\x3\x2\x2\x2tu\a\x2"+ + "\x2\x3u\x3\x3\x2\x2\x2vz\x5*\x16\x2wz\x5> \x2xz\x5\x42\"\x2yv\x3\x2\x2"+ + "\x2yw\x3\x2\x2\x2yx\x3\x2\x2\x2z~\x3\x2\x2\x2{|\x5n\x38\x2|}\x5\x30\x19"+ + "\x2}\x7F\x3\x2\x2\x2~{\x3\x2\x2\x2~\x7F\x3\x2\x2\x2\x7F\x5\x3\x2\x2\x2"+ + "\x80\x83\x5\b\x5\x2\x81\x83\x5\n\x6\x2\x82\x80\x3\x2\x2\x2\x82\x81\x3"+ + "\x2\x2\x2\x83\a\x3\x2\x2\x2\x84\x87\x5\x10\t\x2\x85\x87\x5\x12\n\x2\x86"+ + "\x84\x3\x2\x2\x2\x86\x85\x3\x2\x2\x2\x87\t\x3\x2\x2\x2\x88\x8B\x5\f\a"+ + "\x2\x89\x8B\x5\xE\b\x2\x8A\x88\x3\x2\x2\x2\x8A\x89\x3\x2\x2\x2\x8B\v\x3"+ + "\x2\x2\x2\x8C\x8D\x5R*\x2\x8D\r\x3\x2\x2\x2\x8E\x8F\x5R*\x2\x8F\x90\x5"+ + "\x16\f\x2\x90\xF\x3\x2\x2\x2\x91\x9A\a\xEE\x2\x2\x92\x9A\a\xF1\x2\x2\x93"+ + "\x9A\x5^\x30\x2\x94\x9A\x5`\x31\x2\x95\x9A\x5\x18\r\x2\x96\x9A\a\xF2\x2"+ + "\x2\x97\x9A\x5\x64\x33\x2\x98\x9A\ah\x2\x2\x99\x91\x3\x2\x2\x2\x99\x92"+ + "\x3\x2\x2\x2\x99\x93\x3\x2\x2\x2\x99\x94\x3\x2\x2\x2\x99\x95\x3\x2\x2"+ + "\x2\x99\x96\x3\x2\x2\x2\x99\x97\x3\x2\x2\x2\x99\x98\x3\x2\x2\x2\x9A\x11"+ + "\x3\x2\x2\x2\x9B\x9C\x5\x14\v\x2\x9C\x9D\x5\x16\f\x2\x9D\x13\x3\x2\x2"+ + "\x2\x9E\xA6\a\xEE\x2\x2\x9F\xA6\x5^\x30\x2\xA0\xA6\x5`\x31\x2\xA1\xA6"+ + "\x5\x18\r\x2\xA2\xA6\a\xF2\x2\x2\xA3\xA6\x5\x64\x33\x2\xA4\xA6\ah\x2\x2"+ + "\xA5\x9E\x3\x2\x2\x2\xA5\x9F\x3\x2\x2\x2\xA5\xA0\x3\x2\x2\x2\xA5\xA1\x3"+ + "\x2\x2\x2\xA5\xA2\x3\x2\x2\x2\xA5\xA3\x3\x2\x2\x2\xA5\xA4\x3\x2\x2\x2"+ + "\xA6\x15\x3\x2\x2\x2\xA7\xA8\t\x2\x2\x2\xA8\x17\x3\x2\x2\x2\xA9\xAA\t"+ + "\x3\x2\x2\xAA\x19\x3\x2\x2\x2\xAB\xC1\x5\x62\x32\x2\xAC\xAE\a\xE1\x2\x2"+ + "\xAD\xAF\x5n\x38\x2\xAE\xAD\x3\x2\x2\x2\xAE\xAF\x3\x2\x2\x2\xAF\xB0\x3"+ + "\x2\x2\x2\xB0\xB2\x5\x62\x32\x2\xB1\xB3\x5n\x38\x2\xB2\xB1\x3\x2\x2\x2"+ + "\xB2\xB3\x3\x2\x2\x2\xB3\xB4\x3\x2\x2\x2\xB4\xB5\a\xE2\x2\x2\xB5\xC1\x3"+ + "\x2\x2\x2\xB6\xC1\a\xF2\x2\x2\xB7\xB9\a\xE1\x2\x2\xB8\xBA\x5n\x38\x2\xB9"+ + "\xB8\x3\x2\x2\x2\xB9\xBA\x3\x2\x2\x2\xBA\xBB\x3\x2\x2\x2\xBB\xBD\a\xF2"+ + "\x2\x2\xBC\xBE\x5n\x38\x2\xBD\xBC\x3\x2\x2\x2\xBD\xBE\x3\x2\x2\x2\xBE"+ + "\xBF\x3\x2\x2\x2\xBF\xC1\a\xE2\x2\x2\xC0\xAB\x3\x2\x2\x2\xC0\xAC\x3\x2"+ + "\x2\x2\xC0\xB6\x3\x2\x2\x2\xC0\xB7\x3\x2\x2\x2\xC1\x1B\x3\x2\x2\x2\xC2"+ + "\xC3\b\xF\x1\x2\xC3\xC5\a\xD6\x2\x2\xC4\xC6\x5n\x38\x2\xC5\xC4\x3\x2\x2"+ + "\x2\xC5\xC6\x3\x2\x2\x2\xC6\xC7\x3\x2\x2\x2\xC7\xDC\x5\x1C\xF\x10\xC8"+ + "\xCA\a\x8E\x2\x2\xC9\xCB\x5n\x38\x2\xCA\xC9\x3\x2\x2\x2\xCA\xCB\x3\x2"+ + "\x2\x2\xCB\xCC\x3\x2\x2\x2\xCC\xDC\x5\x1C\xF\t\xCD\xDC\x5(\x15\x2\xCE"+ + "\xD0\a\xD4\x2\x2\xCF\xD1\x5n\x38\x2\xD0\xCF\x3\x2\x2\x2\xD0\xD1\x3\x2"+ + "\x2\x2\xD1\xD2\x3\x2\x2\x2\xD2\xD4\x5\x1C\xF\x2\xD3\xD5\x5n\x38\x2\xD4"+ + "\xD3\x3\x2\x2\x2\xD4\xD5\x3\x2\x2\x2\xD5\xD6\x3\x2\x2\x2\xD6\xD7\a\xDB"+ + "\x2\x2\xD7\xDC\x3\x2\x2\x2\xD8\xDC\x5$\x13\x2\xD9\xDC\x5&\x14\x2\xDA\xDC"+ + "\x5\x1E\x10\x2\xDB\xC2\x3\x2\x2\x2\xDB\xC8\x3\x2\x2\x2\xDB\xCD\x3\x2\x2"+ + "\x2\xDB\xCE\x3\x2\x2\x2\xDB\xD8\x3\x2\x2\x2\xDB\xD9\x3\x2\x2\x2\xDB\xDA"+ + "\x3\x2\x2\x2\xDC\x14B\x3\x2\x2\x2\xDD\xDF\f\x11\x2\x2\xDE\xE0\x5n\x38"+ + "\x2\xDF\xDE\x3\x2\x2\x2\xDF\xE0\x3\x2\x2\x2\xE0\xE1\x3\x2\x2\x2\xE1\xE3"+ + "\a\xDA\x2\x2\xE2\xE4\x5n\x38\x2\xE3\xE2\x3\x2\x2\x2\xE3\xE4\x3\x2\x2\x2"+ + "\xE4\xE5\x3\x2\x2\x2\xE5\x14A\x5\x1C\xF\x12\xE6\xE8\f\xF\x2\x2\xE7\xE9"+ + "\x5n\x38\x2\xE8\xE7\x3\x2\x2\x2\xE8\xE9\x3\x2\x2\x2\xE9\xEA\x3\x2\x2\x2"+ + "\xEA\xEC\t\x4\x2\x2\xEB\xED\x5n\x38\x2\xEC\xEB\x3\x2\x2\x2\xEC\xED\x3"+ + "\x2\x2\x2\xED\xEE\x3\x2\x2\x2\xEE\x14A\x5\x1C\xF\x10\xEF\xF1\f\xE\x2\x2"+ + "\xF0\xF2\x5n\x38\x2\xF1\xF0\x3\x2\x2\x2\xF1\xF2\x3\x2\x2\x2\xF2\xF3\x3"+ + "\x2\x2\x2\xF3\xF5\a\xCF\x2\x2\xF4\xF6\x5n\x38\x2\xF5\xF4\x3\x2\x2\x2\xF5"+ + "\xF6\x3\x2\x2\x2\xF6\xF7\x3\x2\x2\x2\xF7\x14A\x5\x1C\xF\xF\xF8\xFA\f\r"+ + "\x2\x2\xF9\xFB\x5n\x38\x2\xFA\xF9\x3\x2\x2\x2\xFA\xFB\x3\x2\x2\x2\xFB"+ + "\xFC\x3\x2\x2\x2\xFC\xFE\a\x8B\x2\x2\xFD\xFF\x5n\x38\x2\xFE\xFD\x3\x2"+ + "\x2\x2\xFE\xFF\x3\x2\x2\x2\xFF\x100\x3\x2\x2\x2\x100\x14A\x5\x1C\xF\xE"+ + "\x101\x103\f\f\x2\x2\x102\x104\x5n\x38\x2\x103\x102\x3\x2\x2\x2\x103\x104"+ + "\x3\x2\x2\x2\x104\x105\x3\x2\x2\x2\x105\x107\t\x5\x2\x2\x106\x108\x5n"+ + "\x38\x2\x107\x106\x3\x2\x2\x2\x107\x108\x3\x2\x2\x2\x108\x109\x3\x2\x2"+ + "\x2\x109\x14A\x5\x1C\xF\r\x10A\x10C\f\v\x2\x2\x10B\x10D\x5n\x38\x2\x10C"+ + "\x10B\x3\x2\x2\x2\x10C\x10D\x3\x2\x2\x2\x10D\x10E\x3\x2\x2\x2\x10E\x110"+ + "\a\x32\x2\x2\x10F\x111\x5n\x38\x2\x110\x10F\x3\x2\x2\x2\x110\x111\x3\x2"+ + "\x2\x2\x111\x112\x3\x2\x2\x2\x112\x14A\x5\x1C\xF\f\x113\x115\f\n\x2\x2"+ + "\x114\x116\x5n\x38\x2\x115\x114\x3\x2\x2\x2\x115\x116\x3\x2\x2\x2\x116"+ + "\x117\x3\x2\x2\x2\x117\x119\t\x6\x2\x2\x118\x11A\x5n\x38\x2\x119\x118"+ + "\x3\x2\x2\x2\x119\x11A\x3\x2\x2\x2\x11A\x11B\x3\x2\x2\x2\x11B\x14A\x5"+ + "\x1C\xF\v\x11C\x11E\f\b\x2\x2\x11D\x11F\x5n\x38\x2\x11E\x11D\x3\x2\x2"+ + "\x2\x11E\x11F\x3\x2\x2\x2\x11F\x120\x3\x2\x2\x2\x120\x122\a\x36\x2\x2"+ + "\x121\x123\x5n\x38\x2\x122\x121\x3\x2\x2\x2\x122\x123\x3\x2\x2\x2\x123"+ + "\x124\x3\x2\x2\x2\x124\x14A\x5\x1C\xF\t\x125\x127\f\a\x2\x2\x126\x128"+ + "\x5n\x38\x2\x127\x126\x3\x2\x2\x2\x127\x128\x3\x2\x2\x2\x128\x129\x3\x2"+ + "\x2\x2\x129\x12B\a\x9A\x2\x2\x12A\x12C\x5n\x38\x2\x12B\x12A\x3\x2\x2\x2"+ + "\x12B\x12C\x3\x2\x2\x2\x12C\x12D\x3\x2\x2\x2\x12D\x14A\x5\x1C\xF\b\x12E"+ + "\x130\f\x6\x2\x2\x12F\x131\x5n\x38\x2\x130\x12F\x3\x2\x2\x2\x130\x131"+ + "\x3\x2\x2\x2\x131\x132\x3\x2\x2\x2\x132\x134\a\xCC\x2\x2\x133\x135\x5"+ + "n\x38\x2\x134\x133\x3\x2\x2\x2\x134\x135\x3\x2\x2\x2\x135\x136\x3\x2\x2"+ + "\x2\x136\x14A\x5\x1C\xF\a\x137\x139\f\x5\x2\x2\x138\x13A\x5n\x38\x2\x139"+ + "\x138\x3\x2\x2\x2\x139\x13A\x3\x2\x2\x2\x13A\x13B\x3\x2\x2\x2\x13B\x13D"+ + "\a\x66\x2\x2\x13C\x13E\x5n\x38\x2\x13D\x13C\x3\x2\x2\x2\x13D\x13E\x3\x2"+ + "\x2\x2\x13E\x13F\x3\x2\x2\x2\x13F\x14A\x5\x1C\xF\x6\x140\x142\f\x4\x2"+ + "\x2\x141\x143\x5n\x38\x2\x142\x141\x3\x2\x2\x2\x142\x143\x3\x2\x2\x2\x143"+ + "\x144\x3\x2\x2\x2\x144\x146\ax\x2\x2\x145\x147\x5n\x38\x2\x146\x145\x3"+ + "\x2\x2\x2\x146\x147\x3\x2\x2\x2\x147\x148\x3\x2\x2\x2\x148\x14A\x5\x1C"+ + "\xF\x5\x149\xDD\x3\x2\x2\x2\x149\xE6\x3\x2\x2\x2\x149\xEF\x3\x2\x2\x2"+ + "\x149\xF8\x3\x2\x2\x2\x149\x101\x3\x2\x2\x2\x149\x10A\x3\x2\x2\x2\x149"+ + "\x113\x3\x2\x2\x2\x149\x11C\x3\x2\x2\x2\x149\x125\x3\x2\x2\x2\x149\x12E"+ + "\x3\x2\x2\x2\x149\x137\x3\x2\x2\x2\x149\x140\x3\x2\x2\x2\x14A\x14D\x3"+ + "\x2\x2\x2\x14B\x149\x3\x2\x2\x2\x14B\x14C\x3\x2\x2\x2\x14C\x1D\x3\x2\x2"+ + "\x2\x14D\x14B\x3\x2\x2\x2\x14E\x156\x5 \x11\x2\x14F\x156\a\xE8\x2\x2\x150"+ + "\x156\a\xE3\x2\x2\x151\x153\x5\x66\x34\x2\x152\x154\x5\x16\f\x2\x153\x152"+ + "\x3\x2\x2\x2\x153\x154\x3\x2\x2\x2\x154\x156\x3\x2\x2\x2\x155\x14E\x3"+ + "\x2\x2\x2\x155\x14F\x3\x2\x2\x2\x155\x150\x3\x2\x2\x2\x155\x151\x3\x2"+ + "\x2\x2\x156\x1F\x3\x2\x2\x2\x157\x158\t\a\x2\x2\x158!\x3\x2\x2\x2\x159"+ + "\x15B\a\xD4\x2\x2\x15A\x15C\x5n\x38\x2\x15B\x15A\x3\x2\x2\x2\x15B\x15C"+ + "\x3\x2\x2\x2\x15C\x15D\x3\x2\x2\x2\x15D\x15F\x5\x1C\xF\x2\x15E\x160\x5"+ + "n\x38\x2\x15F\x15E\x3\x2\x2\x2\x15F\x160\x3\x2\x2\x2\x160\x161\x3\x2\x2"+ + "\x2\x161\x162\a\xDB\x2\x2\x162#\x3\x2\x2\x2\x163\x164\a\xC1\x2\x2\x164"+ + "\x165\x5n\x38\x2\x165\x166\x5\x1C\xF\x2\x166\x167\x5n\x38\x2\x167\x168"+ + "\a|\x2\x2\x168\x169\x5n\x38\x2\x169\x16A\x5J&\x2\x16A%\x3\x2\x2\x2\x16B"+ + "\x16C\a\x8D\x2\x2\x16C\x16D\x5n\x38\x2\x16D\x16E\x5J&\x2\x16E\'\x3\x2"+ + "\x2\x2\x16F\x170\b\x15\x1\x2\x170\x174\x5@!\x2\x171\x174\x5> \x2\x172"+ + "\x174\x5\x42\"\x2\x173\x16F\x3\x2\x2\x2\x173\x171\x3\x2\x2\x2\x173\x172"+ + "\x3\x2\x2\x2\x174\x19C\x3\x2\x2\x2\x175\x177\f\v\x2\x2\x176\x178\x5n\x38"+ + "\x2\x177\x176\x3\x2\x2\x2\x177\x178\x3\x2\x2\x2\x178\x179\x3\x2\x2\x2"+ + "\x179\x17B\a\xD4\x2\x2\x17A\x17C\x5n\x38\x2\x17B\x17A\x3\x2\x2\x2\x17B"+ + "\x17C\x3\x2\x2\x2\x17C\x17E\x3\x2\x2\x2\x17D\x17F\x5\x30\x19\x2\x17E\x17D"+ + "\x3\x2\x2\x2\x17E\x17F\x3\x2\x2\x2\x17F\x181\x3\x2\x2\x2\x180\x182\x5"+ + "n\x38\x2\x181\x180\x3\x2\x2\x2\x181\x182\x3\x2\x2\x2\x182\x183\x3\x2\x2"+ + "\x2\x183\x19B\a\xDB\x2\x2\x184\x185\f\n\x2\x2\x185\x186\a-\x2\x2\x186"+ + "\x19B\x5\x6\x4\x2\x187\x188\f\t\x2\x2\x188\x18A\a\xEF\x2\x2\x189\x18B"+ + "\x5n\x38\x2\x18A\x189\x3\x2\x2\x2\x18A\x18B\x3\x2\x2\x2\x18B\x18C\x3\x2"+ + "\x2\x2\x18C\x18D\a-\x2\x2\x18D\x19B\x5\x6\x4\x2\x18E\x18F\f\b\x2\x2\x18F"+ + "\x190\a,\x2\x2\x190\x19B\x5\x6\x4\x2\x191\x192\f\a\x2\x2\x192\x193\a\xEF"+ + "\x2\x2\x193\x194\a,\x2\x2\x194\x19B\x5\x6\x4\x2\x195\x196\f\x6\x2\x2\x196"+ + "\x197\a\xEF\x2\x2\x197\x198\a,\x2\x2\x198\x199\a\xEF\x2\x2\x199\x19B\x5"+ + "\x6\x4\x2\x19A\x175\x3\x2\x2\x2\x19A\x184\x3\x2\x2\x2\x19A\x187\x3\x2"+ + "\x2\x2\x19A\x18E\x3\x2\x2\x2\x19A\x191\x3\x2\x2\x2\x19A\x195\x3\x2\x2"+ + "\x2\x19B\x19E\x3\x2\x2\x2\x19C\x19A\x3\x2\x2\x2\x19C\x19D\x3\x2\x2\x2"+ + "\x19D)\x3\x2\x2\x2\x19E\x19C\x3\x2\x2\x2\x19F\x1A0\x5(\x15\x2\x1A0\x1A1"+ + "\a-\x2\x2\x1A1\x1A2\x5\x6\x4\x2\x1A2\x1AC\x3\x2\x2\x2\x1A3\x1A4\x5(\x15"+ + "\x2\x1A4\x1A6\a\xEF\x2\x2\x1A5\x1A7\x5n\x38\x2\x1A6\x1A5\x3\x2\x2\x2\x1A6"+ + "\x1A7\x3\x2\x2\x2\x1A7\x1A8\x3\x2\x2\x2\x1A8\x1A9\a-\x2\x2\x1A9\x1AA\x5"+ + "\x6\x4\x2\x1AA\x1AC\x3\x2\x2\x2\x1AB\x19F\x3\x2\x2\x2\x1AB\x1A3\x3\x2"+ + "\x2\x2\x1AC+\x3\x2\x2\x2\x1AD\x1AF\x5(\x15\x2\x1AE\x1B0\x5n\x38\x2\x1AF"+ + "\x1AE\x3\x2\x2\x2\x1AF\x1B0\x3\x2\x2\x2\x1B0\x1B1\x3\x2\x2\x2\x1B1\x1B3"+ + "\a\xD4\x2\x2\x1B2\x1B4\x5n\x38\x2\x1B3\x1B2\x3\x2\x2\x2\x1B3\x1B4\x3\x2"+ + "\x2\x2\x1B4\x1B6\x3\x2\x2\x2\x1B5\x1B7\x5\x30\x19\x2\x1B6\x1B5\x3\x2\x2"+ + "\x2\x1B6\x1B7\x3\x2\x2\x2\x1B7\x1B9\x3\x2\x2\x2\x1B8\x1BA\x5n\x38\x2\x1B9"+ + "\x1B8\x3\x2\x2\x2\x1B9\x1BA\x3\x2\x2\x2\x1BA\x1BB\x3\x2\x2\x2\x1BB\x1BC"+ + "\a\xDB\x2\x2\x1BC-\x3\x2\x2\x2\x1BD\x1BE\x5(\x15\x2\x1BE\x1BF\a,\x2\x2"+ + "\x1BF\x1C0\x5\x6\x4\x2\x1C0\x1CD\x3\x2\x2\x2\x1C1\x1C2\x5(\x15\x2\x1C2"+ + "\x1C3\a\xEF\x2\x2\x1C3\x1C4\a,\x2\x2\x1C4\x1C5\x5\x6\x4\x2\x1C5\x1CD\x3"+ + "\x2\x2\x2\x1C6\x1C7\x5(\x15\x2\x1C7\x1C8\a\xEF\x2\x2\x1C8\x1C9\a,\x2\x2"+ + "\x1C9\x1CA\a\xEF\x2\x2\x1CA\x1CB\x5\x6\x4\x2\x1CB\x1CD\x3\x2\x2\x2\x1CC"+ + "\x1BD\x3\x2\x2\x2\x1CC\x1C1\x3\x2\x2\x2\x1CC\x1C6\x3\x2\x2\x2\x1CD/\x3"+ + "\x2\x2\x2\x1CE\x1CF\x5\x32\x1A\x2\x1CF\x31\x3\x2\x2\x2\x1D0\x1D2\x5\x34"+ + "\x1B\x2\x1D1\x1D0\x3\x2\x2\x2\x1D1\x1D2\x3\x2\x2\x2\x1D2\x1D4\x3\x2\x2"+ + "\x2\x1D3\x1D5\x5n\x38\x2\x1D4\x1D3\x3\x2\x2\x2\x1D4\x1D5\x3\x2\x2\x2\x1D5"+ + "\x1D6\x3\x2\x2\x2\x1D6\x1D8\a)\x2\x2\x1D7\x1D9\x5n\x38\x2\x1D8\x1D7\x3"+ + "\x2\x2\x2\x1D8\x1D9\x3\x2\x2\x2\x1D9\x1DB\x3\x2\x2\x2\x1DA\x1D1\x3\x2"+ + "\x2\x2\x1DB\x1DE\x3\x2\x2\x2\x1DC\x1DA\x3\x2\x2\x2\x1DC\x1DD\x3\x2\x2"+ + "\x2\x1DD\x1DF\x3\x2\x2\x2\x1DE\x1DC\x3\x2\x2\x2\x1DF\x1F1\x5\x36\x1C\x2"+ + "\x1E0\x1E2\x5\x34\x1B\x2\x1E1\x1E0\x3\x2\x2\x2\x1E1\x1E2\x3\x2\x2\x2\x1E2"+ + "\x1E4\x3\x2\x2\x2\x1E3\x1E5\x5n\x38\x2\x1E4\x1E3\x3\x2\x2\x2\x1E4\x1E5"+ + "\x3\x2\x2\x2\x1E5\x1E6\x3\x2\x2\x2\x1E6\x1E8\a)\x2\x2\x1E7\x1E9\x5n\x38"+ + "\x2\x1E8\x1E7\x3\x2\x2\x2\x1E8\x1E9\x3\x2\x2\x2\x1E9\x1EB\x3\x2\x2\x2"+ + "\x1EA\x1E1\x3\x2\x2\x2\x1EB\x1EE\x3\x2\x2\x2\x1EC\x1EA\x3\x2\x2\x2\x1EC"+ + "\x1ED\x3\x2\x2\x2\x1ED\x1EF\x3\x2\x2\x2\x1EE\x1EC\x3\x2\x2\x2\x1EF\x1F1"+ + "\x5\x38\x1D\x2\x1F0\x1DC\x3\x2\x2\x2\x1F0\x1EC\x3\x2\x2\x2\x1F1\x33\x3"+ + "\x2\x2\x2\x1F2\x1F3\x5<\x1F\x2\x1F3\x35\x3\x2\x2\x2\x1F4\x1F5\x5<\x1F"+ + "\x2\x1F5\x37\x3\x2\x2\x2\x1F6\x201\x5:\x1E\x2\x1F7\x1F9\x5n\x38\x2\x1F8"+ + "\x1F7\x3\x2\x2\x2\x1F8\x1F9\x3\x2\x2\x2\x1F9\x1FA\x3\x2\x2\x2\x1FA\x1FC"+ + "\a)\x2\x2\x1FB\x1FD\x5n\x38\x2\x1FC\x1FB\x3\x2\x2\x2\x1FC\x1FD\x3\x2\x2"+ + "\x2\x1FD\x1FE\x3\x2\x2\x2\x1FE\x200\x5:\x1E\x2\x1FF\x1F8\x3\x2\x2\x2\x200"+ + "\x203\x3\x2\x2\x2\x201\x1FF\x3\x2\x2\x2\x201\x202\x3\x2\x2\x2\x202\x39"+ + "\x3\x2\x2\x2\x203\x201\x3\x2\x2\x2\x204\x206\x5\x6\x4\x2\x205\x207\x5"+ + "n\x38\x2\x206\x205\x3\x2\x2\x2\x206\x207\x3\x2\x2\x2\x207\x208\x3\x2\x2"+ + "\x2\x208\x20A\a\xCD\x2\x2\x209\x20B\x5n\x38\x2\x20A\x209\x3\x2\x2\x2\x20A"+ + "\x20B\x3\x2\x2\x2\x20B\x20C\x3\x2\x2\x2\x20C\x20D\x5<\x1F\x2\x20D;\x3"+ + "\x2\x2\x2\x20E\x20F\a=\x2\x2\x20F\x211\x5n\x38\x2\x210\x20E\x3\x2\x2\x2"+ + "\x210\x211\x3\x2\x2\x2\x211\x212\x3\x2\x2\x2\x212\x215\x5\x1C\xF\x2\x213"+ + "\x215\x5N(\x2\x214\x210\x3\x2\x2\x2\x214\x213\x3\x2\x2\x2\x215=\x3\x2"+ + "\x2\x2\x216\x217\x5\b\x5\x2\x217?\x3\x2\x2\x2\x218\x219\a\x89\x2\x2\x219"+ + "\x41\x3\x2\x2\x2\x21A\x21D\x5\x44#\x2\x21B\x21D\x5\x46$\x2\x21C\x21A\x3"+ + "\x2\x2\x2\x21C\x21B\x3\x2\x2\x2\x21D\x43\x3\x2\x2\x2\x21E\x21F\a-\x2\x2"+ + "\x21F\x220\x5\x6\x4\x2\x220\x45\x3\x2\x2\x2\x221\x222\a,\x2\x2\x222\x223"+ + "\x5\x6\x4\x2\x223G\x3\x2\x2\x2\x224\x225\x5\x1C\xF\x2\x225I\x3\x2\x2\x2"+ + "\x226\x229\x5\x1A\xE\x2\x227\x229\x5L\'\x2\x228\x226\x3\x2\x2\x2\x228"+ + "\x227\x3\x2\x2\x2\x229K\x3\x2\x2\x2\x22A\x22D\x5> \x2\x22B\x22D\x5*\x16"+ + "\x2\x22C\x22A\x3\x2\x2\x2\x22C\x22B\x3\x2\x2\x2\x22DM\x3\x2\x2\x2\x22E"+ + "\x22F\a\x34\x2\x2\x22F\x230\x5n\x38\x2\x230\x231\x5P)\x2\x231O\x3\x2\x2"+ + "\x2\x232\x235\x5*\x16\x2\x233\x235\x5> \x2\x234\x232\x3\x2\x2\x2\x234"+ + "\x233\x3\x2\x2\x2\x235Q\x3\x2\x2\x2\x236\x23F\x5T+\x2\x237\x23F\x5X-\x2"+ + "\x238\x23F\x5Z.\x2\x239\x23F\x5`\x31\x2\x23A\x23F\x5\\/\x2\x23B\x23F\x5"+ + "\x66\x34\x2\x23C\x23F\x5V,\x2\x23D\x23F\x5\x62\x32\x2\x23E\x236\x3\x2"+ + "\x2\x2\x23E\x237\x3\x2\x2\x2\x23E\x238\x3\x2\x2\x2\x23E\x239\x3\x2\x2"+ + "\x2\x23E\x23A\x3\x2\x2\x2\x23E\x23B\x3\x2\x2\x2\x23E\x23C\x3\x2\x2\x2"+ + "\x23E\x23D\x3\x2\x2\x2\x23FS\x3\x2\x2\x2\x240\x241\t\b\x2\x2\x241U\x3"+ + "\x2\x2\x2\x242\x243\a\xAB\x2\x2\x243W\x3\x2\x2\x2\x244\x245\t\t\x2\x2"+ + "\x245Y\x3\x2\x2\x2\x246\x247\t\n\x2\x2\x247[\x3\x2\x2\x2\x248\x24B\a\x89"+ + "\x2\x2\x249\x24B\x5^\x30\x2\x24A\x248\x3\x2\x2\x2\x24A\x249\x3\x2\x2\x2"+ + "\x24B]\x3\x2\x2\x2\x24C\x24D\t\v\x2\x2\x24D_\x3\x2\x2\x2\x24E\x24F\t\f"+ + "\x2\x2\x24F\x61\x3\x2\x2\x2\x250\x251\t\r\x2\x2\x251\x63\x3\x2\x2\x2\x252"+ + "\x253\t\xE\x2\x2\x253\x65\x3\x2\x2\x2\x254\x258\x5h\x35\x2\x255\x258\x5"+ + "j\x36\x2\x256\x258\x5l\x37\x2\x257\x254\x3\x2\x2\x2\x257\x255\x3\x2\x2"+ + "\x2\x257\x256\x3\x2\x2\x2\x258g\x3\x2\x2\x2\x259\x25A\t\xF\x2\x2\x25A"+ + "i\x3\x2\x2\x2\x25B\x25C\a\x8F\x2\x2\x25Ck\x3\x2\x2\x2\x25D\x25E\t\x10"+ + "\x2\x2\x25Em\x3\x2\x2\x2\x25F\x261\t\x11\x2\x2\x260\x25F\x3\x2\x2\x2\x261"+ + "\x262\x3\x2\x2\x2\x262\x260\x3\x2\x2\x2\x262\x263\x3\x2\x2\x2\x263o\x3"+ + "\x2\x2\x2Yry~\x82\x86\x8A\x99\xA5\xAE\xB2\xB9\xBD\xC0\xC5\xCA\xD0\xD4"+ + "\xDB\xDF\xE3\xE8\xEC\xF1\xF5\xFA\xFE\x103\x107\x10C\x110\x115\x119\x11E"+ + "\x122\x127\x12B\x130\x134\x139\x13D\x142\x146\x149\x14B\x153\x155\x15B"+ + "\x15F\x173\x177\x17B\x17E\x181\x18A\x19A\x19C\x1A6\x1AB\x1AF\x1B3\x1B6"+ + "\x1B9\x1CC\x1D1\x1D4\x1D8\x1DC\x1E1\x1E4\x1E8\x1EC\x1F0\x1F8\x1FC\x201"+ + "\x206\x20A\x210\x214\x21C\x228\x22C\x234\x23E\x24A\x257\x262"; public static readonly ATN _ATN = new ATNDeserializer().Deserialize(_serializedATN.ToCharArray()); } diff --git a/Rubberduck.Parsing/Binding/VBAExpressionParser.g4 b/Rubberduck.Parsing/Binding/VBAExpressionParser.g4 index 9fc3fd52a1..f1a24818f1 100644 --- a/Rubberduck.Parsing/Binding/VBAExpressionParser.g4 +++ b/Rubberduck.Parsing/Binding/VBAExpressionParser.g4 @@ -21,7 +21,10 @@ parser grammar VBAExpressionParser; options { tokenVocab = VBALexer; } -startRule : expression EOF; +startRule : (expression | callStmt) EOF; + +// Call statement is here because its syntax is slightly different than a normal expression +callStmt : (memberAccessExpression | simpleNameExpression | withExpression) (whiteSpace argumentList)?; // 5.1 Module Body Structure unrestrictedName : name | reservedIdentifierName; @@ -30,9 +33,9 @@ name : untypedName | typedName; reservedIdentifierName : reservedUntypedName | reservedTypedName; reservedUntypedName : reservedIdentifier; reservedTypedName : reservedIdentifier typeSuffix; -untypedName : IDENTIFIER | FOREIGNNAME | reservedProcedureName | specialForm | optionCompareArgument | OBJECT; +untypedName : IDENTIFIER | FOREIGNNAME | reservedProcedureName | specialForm | optionCompareArgument | OBJECT | uncategorizedKeyword | ERROR; typedName : typedNameValue typeSuffix; -typedNameValue : IDENTIFIER | reservedProcedureName | specialForm | optionCompareArgument | OBJECT; +typedNameValue : IDENTIFIER | reservedProcedureName | specialForm | optionCompareArgument | OBJECT | uncategorizedKeyword | ERROR; typeSuffix : PERCENT | AMPERSAND | POW | EXCLAMATIONPOINT | HASH | AT | DOLLAR; optionCompareArgument : BINARY | TEXT | DATABASE; @@ -350,6 +353,13 @@ reservedTypeIdentifier : | STRING | VARIANT ; + +uncategorizedKeyword : + ALIAS | ATTRIBUTE | + BEGIN | CLASS | COLLECTION | + LIB | ON | TAB | VERSION +; + literalIdentifier : booleanLiteralIdentifier | objectLiteralIdentifier | variantLiteralIdentifier; booleanLiteralIdentifier : TRUE | FALSE; objectLiteralIdentifier : NOTHING; diff --git a/Rubberduck.Parsing/Binding/VBAExpressionParserBaseListener.cs b/Rubberduck.Parsing/Binding/VBAExpressionParserBaseListener.cs index b4b3e50f88..33f64d299f 100644 --- a/Rubberduck.Parsing/Binding/VBAExpressionParserBaseListener.cs +++ b/Rubberduck.Parsing/Binding/VBAExpressionParserBaseListener.cs @@ -813,6 +813,19 @@ public virtual void EnterTypeExpression([NotNull] VBAExpressionParser.TypeExpres /// The parse tree. public virtual void ExitTypeExpression([NotNull] VBAExpressionParser.TypeExpressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterUncategorizedKeyword([NotNull] VBAExpressionParser.UncategorizedKeywordContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitUncategorizedKeyword([NotNull] VBAExpressionParser.UncategorizedKeywordContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -930,6 +943,19 @@ public virtual void EnterArgumentExpression([NotNull] VBAExpressionParser.Argume /// The parse tree. public virtual void ExitArgumentExpression([NotNull] VBAExpressionParser.ArgumentExpressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterCallStmt([NotNull] VBAExpressionParser.CallStmtContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitCallStmt([NotNull] VBAExpressionParser.CallStmtContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. diff --git a/Rubberduck.Parsing/Binding/VBAExpressionParserBaseVisitor.cs b/Rubberduck.Parsing/Binding/VBAExpressionParserBaseVisitor.cs index 6a61a8dde9..5eac9014cc 100644 --- a/Rubberduck.Parsing/Binding/VBAExpressionParserBaseVisitor.cs +++ b/Rubberduck.Parsing/Binding/VBAExpressionParserBaseVisitor.cs @@ -692,6 +692,17 @@ public partial class VBAExpressionParserBaseVisitor : AbstractParseTreeV /// The visitor result. public virtual Result VisitTypeExpression([NotNull] VBAExpressionParser.TypeExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitUncategorizedKeyword([NotNull] VBAExpressionParser.UncategorizedKeywordContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// @@ -791,6 +802,17 @@ public partial class VBAExpressionParserBaseVisitor : AbstractParseTreeV /// The visitor result. public virtual Result VisitArgumentExpression([NotNull] VBAExpressionParser.ArgumentExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCallStmt([NotNull] VBAExpressionParser.CallStmtContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// diff --git a/Rubberduck.Parsing/Binding/VBAExpressionParserListener.cs b/Rubberduck.Parsing/Binding/VBAExpressionParserListener.cs index b4acec7383..fad6f18e3e 100644 --- a/Rubberduck.Parsing/Binding/VBAExpressionParserListener.cs +++ b/Rubberduck.Parsing/Binding/VBAExpressionParserListener.cs @@ -731,6 +731,17 @@ public interface IVBAExpressionParserListener : IParseTreeListener { /// The parse tree. void ExitTypeExpression([NotNull] VBAExpressionParser.TypeExpressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterUncategorizedKeyword([NotNull] VBAExpressionParser.UncategorizedKeywordContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitUncategorizedKeyword([NotNull] VBAExpressionParser.UncategorizedKeywordContext context); + /// /// Enter a parse tree produced by . /// @@ -836,6 +847,17 @@ public interface IVBAExpressionParserListener : IParseTreeListener { /// The parse tree. void ExitArgumentExpression([NotNull] VBAExpressionParser.ArgumentExpressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterCallStmt([NotNull] VBAExpressionParser.CallStmtContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitCallStmt([NotNull] VBAExpressionParser.CallStmtContext context); + /// /// Enter a parse tree produced by . /// diff --git a/Rubberduck.Parsing/Binding/VBAExpressionParserVisitor.cs b/Rubberduck.Parsing/Binding/VBAExpressionParserVisitor.cs index f792681152..f9880546a9 100644 --- a/Rubberduck.Parsing/Binding/VBAExpressionParserVisitor.cs +++ b/Rubberduck.Parsing/Binding/VBAExpressionParserVisitor.cs @@ -471,6 +471,13 @@ public interface IVBAExpressionParserVisitor : IParseTreeVisitor /// The visitor result. Result VisitTypeExpression([NotNull] VBAExpressionParser.TypeExpressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitUncategorizedKeyword([NotNull] VBAExpressionParser.UncategorizedKeywordContext context); + /// /// Visit a parse tree produced by . /// @@ -537,6 +544,13 @@ public interface IVBAExpressionParserVisitor : IParseTreeVisitor /// The visitor result. Result VisitArgumentExpression([NotNull] VBAExpressionParser.ArgumentExpressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCallStmt([NotNull] VBAExpressionParser.CallStmtContext context); + /// /// Visit a parse tree produced by . /// diff --git a/Rubberduck.Parsing/Grammar/VBALexer.cs b/Rubberduck.Parsing/Grammar/VBALexer.cs index e5ebd1e5c7..013374e77c 100644 --- a/Rubberduck.Parsing/Grammar/VBALexer.cs +++ b/Rubberduck.Parsing/Grammar/VBALexer.cs @@ -34,40 +34,36 @@ public const int MIDB=31, MIDBTYPESUFFIX=32, MIDTYPESUFFIX=33, OPTION=34, PSET=35, SCALE=36, SGN=37, UBOUND=38, COMMA=39, COLON=40, SEMICOLON=41, EXCLAMATIONPOINT=42, DOT=43, HASH=44, AT=45, PERCENT=46, DOLLAR=47, AMPERSAND=48, ACCESS=49, - ADDRESSOF=50, ALIAS=51, AND=52, ATTRIBUTE=53, APPACTIVATE=54, APPEND=55, - AS=56, BEGIN=57, BEEP=58, BINARY=59, BOOLEAN=60, BYVAL=61, BYREF=62, BYTE=63, - CALL=64, CASE=65, CHDIR=66, CHDRIVE=67, CLASS=68, CLOSE=69, CONST=70, - DATABASE=71, DATE=72, DECLARE=73, DEFBOOL=74, DEFBYTE=75, DEFDATE=76, - DEFDBL=77, DEFCUR=78, DEFINT=79, DEFLNG=80, DEFLNGLNG=81, DEFLNGPTR=82, - DEFOBJ=83, DEFSNG=84, DEFSTR=85, DEFVAR=86, DELETESETTING=87, DIM=88, - DO=89, DOUBLE=90, EACH=91, ELSE=92, ELSEIF=93, EMPTY=94, END_ENUM=95, - END_FUNCTION=96, END_IF=97, END_PROPERTY=98, END_SELECT=99, END_SUB=100, - END_TYPE=101, END_WITH=102, END=103, ENUM=104, EQV=105, ERASE=106, ERROR=107, - EVENT=108, EXIT_DO=109, EXIT_FOR=110, EXIT_FUNCTION=111, EXIT_PROPERTY=112, - EXIT_SUB=113, FALSE=114, FILECOPY=115, FRIEND=116, FOR=117, FUNCTION=118, - GET=119, GLOBAL=120, GOSUB=121, GOTO=122, IF=123, IMP=124, IMPLEMENTS=125, - IN=126, INPUT=127, IS=128, INTEGER=129, KILL=130, LOAD=131, LOCK=132, - LONG=133, LOOP=134, LET=135, LIB=136, LIKE=137, LINE_INPUT=138, LOCK_READ=139, - LOCK_WRITE=140, LOCK_READ_WRITE=141, LSET=142, ME=143, MID=144, MKDIR=145, - MOD=146, NAME=147, NEXT=148, NEW=149, NOT=150, NOTHING=151, NULL=152, - ON=153, ON_ERROR=154, ON_LOCAL_ERROR=155, OPEN=156, OPTIONAL=157, OPTION_BASE=158, - OPTION_EXPLICIT=159, OPTION_COMPARE=160, OPTION_PRIVATE_MODULE=161, OR=162, - OUTPUT=163, PARAMARRAY=164, PRESERVE=165, PRINT=166, PRIVATE=167, PROPERTY_GET=168, - PROPERTY_LET=169, PROPERTY_SET=170, PTRSAFE=171, PUBLIC=172, PUT=173, - RANDOM=174, RANDOMIZE=175, RAISEEVENT=176, READ=177, READ_WRITE=178, REDIM=179, - REM=180, RESET=181, RESUME=182, RETURN=183, RMDIR=184, RSET=185, SAVEPICTURE=186, - SAVESETTING=187, SEEK=188, SELECT=189, SENDKEYS=190, SET=191, SETATTR=192, - SHARED=193, SINGLE=194, SPC=195, STATIC=196, STEP=197, STOP=198, STRING=199, - SUB=200, TAB=201, TEXT=202, THEN=203, TIME=204, TO=205, TRUE=206, TYPE=207, - TYPEOF=208, UNLOAD=209, UNLOCK=210, UNTIL=211, VARIANT=212, VERSION=213, - WEND=214, WHILE=215, WIDTH=216, WITH=217, WITHEVENTS=218, WRITE=219, XOR=220, - ASSIGN=221, DIV=222, INTDIV=223, EQ=224, GEQ=225, GT=226, LEQ=227, LPAREN=228, - LT=229, MINUS=230, MULT=231, NEQ=232, PLUS=233, POW=234, RPAREN=235, HASHCONST=236, - HASHIF=237, HASHELSEIF=238, HASHELSE=239, HASHENDIF=240, L_SQUARE_BRACKET=241, - R_SQUARE_BRACKET=242, STRINGLITERAL=243, OCTLITERAL=244, HEXLITERAL=245, - FLOATLITERAL=246, INTEGERLITERAL=247, DATELITERAL=248, NEWLINE=249, REMCOMMENT=250, - COMMENT=251, SINGLEQUOTE=252, UNDERSCORE=253, WS=254, IDENTIFIER=255, - LINE_CONTINUATION=256, GUIDLITERAL=257, ERRORCHAR=258; + ADDRESSOF=50, ALIAS=51, AND=52, ATTRIBUTE=53, APPEND=54, AS=55, BEGIN=56, + BINARY=57, BOOLEAN=58, BYVAL=59, BYREF=60, BYTE=61, CALL=62, CASE=63, + CLASS=64, CLOSE=65, CONST=66, DATABASE=67, DATE=68, DECLARE=69, DEFBOOL=70, + DEFBYTE=71, DEFDATE=72, DEFDBL=73, DEFCUR=74, DEFINT=75, DEFLNG=76, DEFLNGLNG=77, + DEFLNGPTR=78, DEFOBJ=79, DEFSNG=80, DEFSTR=81, DEFVAR=82, DIM=83, DO=84, + DOUBLE=85, EACH=86, ELSE=87, ELSEIF=88, EMPTY=89, END_ENUM=90, END_FUNCTION=91, + END_IF=92, END_PROPERTY=93, END_SELECT=94, END_SUB=95, END_TYPE=96, END_WITH=97, + END=98, ENUM=99, EQV=100, ERASE=101, ERROR=102, EVENT=103, EXIT_DO=104, + EXIT_FOR=105, EXIT_FUNCTION=106, EXIT_PROPERTY=107, EXIT_SUB=108, FALSE=109, + FRIEND=110, FOR=111, FUNCTION=112, GET=113, GLOBAL=114, GOSUB=115, GOTO=116, + IF=117, IMP=118, IMPLEMENTS=119, IN=120, INPUT=121, IS=122, INTEGER=123, + LOCK=124, LONG=125, LOOP=126, LET=127, LIB=128, LIKE=129, LINE_INPUT=130, + LOCK_READ=131, LOCK_WRITE=132, LOCK_READ_WRITE=133, LSET=134, ME=135, + MID=136, MOD=137, NEXT=138, NEW=139, NOT=140, NOTHING=141, NULL=142, ON=143, + ON_ERROR=144, ON_LOCAL_ERROR=145, OPEN=146, OPTIONAL=147, OPTION_BASE=148, + OPTION_EXPLICIT=149, OPTION_COMPARE=150, OPTION_PRIVATE_MODULE=151, OR=152, + OUTPUT=153, PARAMARRAY=154, PRESERVE=155, PRINT=156, PRIVATE=157, PROPERTY_GET=158, + PROPERTY_LET=159, PROPERTY_SET=160, PTRSAFE=161, PUBLIC=162, PUT=163, + RANDOM=164, RAISEEVENT=165, READ=166, READ_WRITE=167, REDIM=168, REM=169, + RESET=170, RESUME=171, RETURN=172, RSET=173, SEEK=174, SELECT=175, SET=176, + SHARED=177, SINGLE=178, SPC=179, STATIC=180, STEP=181, STOP=182, STRING=183, + SUB=184, TAB=185, TEXT=186, THEN=187, TO=188, TRUE=189, TYPE=190, TYPEOF=191, + UNLOCK=192, UNTIL=193, VARIANT=194, VERSION=195, WEND=196, WHILE=197, + WIDTH=198, WITH=199, WITHEVENTS=200, WRITE=201, XOR=202, ASSIGN=203, DIV=204, + INTDIV=205, EQ=206, GEQ=207, GT=208, LEQ=209, LPAREN=210, LT=211, MINUS=212, + MULT=213, NEQ=214, PLUS=215, POW=216, RPAREN=217, HASHCONST=218, HASHIF=219, + HASHELSEIF=220, HASHELSE=221, HASHENDIF=222, L_SQUARE_BRACKET=223, R_SQUARE_BRACKET=224, + STRINGLITERAL=225, OCTLITERAL=226, HEXLITERAL=227, FLOATLITERAL=228, INTEGERLITERAL=229, + DATELITERAL=230, NEWLINE=231, SINGLEQUOTE=232, UNDERSCORE=233, WS=234, + GUIDLITERAL=235, IDENTIFIER=236, LINE_CONTINUATION=237, ERRORCHAR=238; public static string[] modeNames = { "DEFAULT_MODE" }; @@ -106,10 +102,7 @@ public const int "'\\u00DB'", "'\\u00DC'", "'\\u00DD'", "'\\u00DE'", "'\\u00DF'", "'\\u00E0'", "'\\u00E1'", "'\\u00E2'", "'\\u00E3'", "'\\u00E4'", "'\\u00E5'", "'\\u00E6'", "'\\u00E7'", "'\\u00E8'", "'\\u00E9'", "'\\u00EA'", "'\\u00EB'", "'\\u00EC'", - "'\\u00ED'", "'\\u00EE'", "'\\u00EF'", "'\\u00F0'", "'\\u00F1'", "'\\u00F2'", - "'\\u00F3'", "'\\u00F4'", "'\\u00F5'", "'\\u00F6'", "'\\u00F7'", "'\\u00F8'", - "'\\u00F9'", "'\\u00FA'", "'\\u00FB'", "'\\u00FC'", "'\\u00FD'", "'\\u00FE'", - "'\\u00FF'", "'\\u0100'", "'\\u0101'", "'\\u0102'" + "'\\u00ED'", "'\\u00EE'" }; public static readonly string[] ruleNames = { "ABS", "ANY", "ARRAY", "CBOOL", "CBYTE", "CCUR", "CDATE", "CDBL", "CDEC", @@ -119,41 +112,38 @@ public const int "MIDTYPESUFFIX", "OPTION", "PSET", "SCALE", "SGN", "UBOUND", "COMMA", "COLON", "SEMICOLON", "EXCLAMATIONPOINT", "DOT", "HASH", "AT", "PERCENT", "DOLLAR", "AMPERSAND", "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", - "APPACTIVATE", "APPEND", "AS", "BEGIN", "BEEP", "BINARY", "BOOLEAN", "BYVAL", - "BYREF", "BYTE", "CALL", "CASE", "CHDIR", "CHDRIVE", "CLASS", "CLOSE", - "CONST", "DATABASE", "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", - "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", - "DEFSNG", "DEFSTR", "DEFVAR", "DELETESETTING", "DIM", "DO", "DOUBLE", - "EACH", "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", - "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", - "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", - "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FILECOPY", "FRIEND", "FOR", "FUNCTION", - "GET", "GLOBAL", "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", - "IS", "INTEGER", "KILL", "LOAD", "LOCK", "LONG", "LOOP", "LET", "LIB", + "APPEND", "AS", "BEGIN", "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", + "CALL", "CASE", "CLASS", "CLOSE", "CONST", "DATABASE", "DATE", "DECLARE", + "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", + "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", "DIM", + "DO", "DOUBLE", "EACH", "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", + "END_IF", "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", + "END", "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", + "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FRIEND", "FOR", + "FUNCTION", "GET", "GLOBAL", "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", + "IN", "INPUT", "IS", "INTEGER", "LOCK", "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", - "ME", "MID", "MKDIR", "MOD", "NAME", "NEXT", "NEW", "NOT", "NOTHING", - "NULL", "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", - "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", - "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", - "PROPERTY_SET", "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RANDOMIZE", "RAISEEVENT", - "READ", "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RMDIR", - "RSET", "SAVEPICTURE", "SAVESETTING", "SEEK", "SELECT", "SENDKEYS", "SET", - "SETATTR", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", - "SUB", "TAB", "TEXT", "THEN", "TIME", "TO", "TRUE", "TYPE", "TYPEOF", - "UNLOAD", "UNLOCK", "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", - "WITH", "WITHEVENTS", "WRITE", "XOR", "ASSIGN", "DIV", "INTDIV", "EQ", - "GEQ", "GT", "LEQ", "LPAREN", "LT", "MINUS", "MULT", "NEQ", "PLUS", "POW", - "RPAREN", "HASHCONST", "HASHIF", "HASHELSEIF", "HASHELSE", "HASHENDIF", - "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", "STRINGLITERAL", "OCTLITERAL", - "HEXLITERAL", "FLOATLITERAL", "FLOATINGPOINTLITERAL", "INTEGERLITERAL", - "INTEGERTYPESUFFIX", "FLOATINGPOINTTYPESUFFIX", "EXPONENT", "EXPONENTLETTER", - "EXPONENTSIGN", "DECIMALLITERAL", "DATELITERAL", "DATEORTIME", "DATEVALUE", - "DATEVALUEPART", "DATESEPARATOR", "MONTHNAME", "ENGLISHMONTHNAME", "ENGLISHMONTHABBREVIATION", - "TIMEVALUE", "TIMESEPARATOR", "AMPM", "JANUARY", "FEBRUARY", "MARCH", - "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", - "DECEMBER", "JAN", "FEB", "MAR", "APR", "JUN", "JUL", "AUG", "SEP", "OCT", - "NOV", "DEC", "NEWLINE", "REMCOMMENT", "COMMENT", "SINGLEQUOTE", "UNDERSCORE", - "WS", "IDENTIFIER", "LINE_CONTINUATION", "GUIDLITERAL", "LETTER", "DIGIT", + "ME", "MID", "MOD", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "ON", "ON_ERROR", + "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", + "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", + "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", + "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", "READ_WRITE", + "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", "SELECT", + "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", + "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", "UNLOCK", + "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", + "WRITE", "XOR", "ASSIGN", "DIV", "INTDIV", "EQ", "GEQ", "GT", "LEQ", "LPAREN", + "LT", "MINUS", "MULT", "NEQ", "PLUS", "POW", "RPAREN", "HASHCONST", "HASHIF", + "HASHELSEIF", "HASHELSE", "HASHENDIF", "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", + "STRINGLITERAL", "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "FLOATINGPOINTLITERAL", + "INTEGERLITERAL", "INTEGERTYPESUFFIX", "FLOATINGPOINTTYPESUFFIX", "EXPONENT", + "EXPONENTLETTER", "EXPONENTSIGN", "DECIMALLITERAL", "DATELITERAL", "DATEORTIME", + "DATEVALUE", "DATEVALUEPART", "DATESEPARATOR", "MONTHNAME", "ENGLISHMONTHNAME", + "ENGLISHMONTHABBREVIATION", "TIMEVALUE", "TIMESEPARATOR", "AMPM", "JANUARY", + "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", + "OCTOBER", "NOVEMBER", "DECEMBER", "JAN", "FEB", "MAR", "APR", "JUN", + "JUL", "AUG", "SEP", "OCT", "NOV", "DEC", "NEWLINE", "SINGLEQUOTE", "UNDERSCORE", + "WS", "GUIDLITERAL", "IDENTIFIER", "LINE_CONTINUATION", "LETTER", "DIGIT", "LETTERORDIGIT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "ERRORCHAR" @@ -177,10 +167,10 @@ public VBALexer(ICharStream input) public override string SerializedAtn { get { return _serializedATN; } } public static readonly string _serializedATN = - "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x2\x104\xAB3\b\x1"+ - "\x4\x2\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b"+ - "\t\b\x4\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF"+ - "\x4\x10\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15"+ + "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x2\xF0\xA15\b\x1\x4"+ + "\x2\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b\t\b"+ + "\x4\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF\x4"+ + "\x10\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15"+ "\t\x15\x4\x16\t\x16\x4\x17\t\x17\x4\x18\t\x18\x4\x19\t\x19\x4\x1A\t\x1A"+ "\x4\x1B\t\x1B\x4\x1C\t\x1C\x4\x1D\t\x1D\x4\x1E\t\x1E\x4\x1F\t\x1F\x4 "+ "\t \x4!\t!\x4\"\t\"\x4#\t#\x4$\t$\x4%\t%\x4&\t&\x4\'\t\'\x4(\t(\x4)\t"+ @@ -229,208 +219,190 @@ public VBALexer(ICharStream input) "\t\x126\x4\x127\t\x127\x4\x128\t\x128\x4\x129\t\x129\x4\x12A\t\x12A\x4"+ "\x12B\t\x12B\x4\x12C\t\x12C\x4\x12D\t\x12D\x4\x12E\t\x12E\x4\x12F\t\x12F"+ "\x4\x130\t\x130\x4\x131\t\x131\x4\x132\t\x132\x4\x133\t\x133\x4\x134\t"+ - "\x134\x4\x135\t\x135\x4\x136\t\x136\x4\x137\t\x137\x4\x138\t\x138\x4\x139"+ - "\t\x139\x4\x13A\t\x13A\x4\x13B\t\x13B\x4\x13C\t\x13C\x4\x13D\t\x13D\x4"+ - "\x13E\t\x13E\x4\x13F\t\x13F\x4\x140\t\x140\x4\x141\t\x141\x4\x142\t\x142"+ - "\x4\x143\t\x143\x4\x144\t\x144\x4\x145\t\x145\x4\x146\t\x146\x4\x147\t"+ - "\x147\x4\x148\t\x148\x3\x2\x3\x2\x3\x2\x3\x2\x3\x3\x3\x3\x3\x3\x3\x3\x3"+ - "\x4\x3\x4\x3\x4\x3\x4\x3\x4\x3\x4\x3\x5\x3\x5\x3\x5\x3\x5\x3\x5\x3\x5"+ - "\x3\x6\x3\x6\x3\x6\x3\x6\x3\x6\x3\x6\x3\a\x3\a\x3\a\x3\a\x3\a\x3\b\x3"+ - "\b\x3\b\x3\b\x3\b\x3\b\x3\t\x3\t\x3\t\x3\t\x3\t\x3\n\x3\n\x3\n\x3\n\x3"+ - "\n\x3\v\x3\v\x3\v\x3\v\x3\v\x3\f\x3\f\x3\f\x3\f\x3\f\x3\f\x3\f\x3\r\x3"+ - "\r\x3\r\x3\r\x3\r\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xF"+ - "\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\x10\x3\x10\x3\x10\x3\x10"+ - "\x3\x10\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x12\x3\x12\x3\x12\x3\x12"+ - "\x3\x12\x3\x12\x3\x12\x3\x12\x3\x12\x3\x13\x3\x13\x3\x13\x3\x13\x3\x13"+ - "\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x15\x3\x15\x3\x15\x3\x15"+ - "\x3\x15\x3\x15\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16"+ - "\x3\x16\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x18\x3\x18\x3\x18\x3\x18"+ - "\x3\x19\x3\x19\x3\x19\x3\x19\x3\x19\x3\x19\x3\x19\x3\x1A\x3\x1A\x3\x1A"+ - "\x3\x1A\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1C\x3\x1C"+ - "\x3\x1C\x3\x1C\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1E\x3\x1E\x3\x1E"+ - "\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1F\x3\x1F\x3\x1F\x3\x1F"+ - "\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3 \x3 \x3 \x3 \x3 \x3!\x3!\x3!\x3!\x3!\x3"+ - "!\x3\"\x3\"\x3\"\x3\"\x3\"\x3#\x3#\x3#\x3#\x3#\x3#\x3#\x3$\x3$\x3$\x3"+ - "$\x3$\x3%\x3%\x3%\x3%\x3%\x3%\x3&\x3&\x3&\x3&\x3\'\x3\'\x3\'\x3\'\x3\'"+ - "\x3\'\x3\'\x3(\x3(\x3)\x3)\x3*\x3*\x3+\x3+\x3,\x3,\x3-\x3-\x3.\x3.\x3"+ - "/\x3/\x3\x30\x3\x30\x3\x31\x3\x31\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3"+ - "\x32\x3\x32\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3"+ - "\x33\x3\x33\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x35\x3\x35\x3"+ - "\x35\x3\x35\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3"+ - "\x36\x3\x36\x3\x37\x3\x37\x3\x37\x3\x37\x3\x37\x3\x37\x3\x37\x3\x37\x3"+ - "\x37\x3\x37\x3\x37\x3\x37\x3\x38\x3\x38\x3\x38\x3\x38\x3\x38\x3\x38\x3"+ - "\x38\x3\x39\x3\x39\x3\x39\x3:\x3:\x3:\x3:\x3:\x3:\x3;\x3;\x3;\x3;\x3;"+ - "\x3<\x3<\x3<\x3<\x3<\x3<\x3<\x3=\x3=\x3=\x3=\x3=\x3=\x3=\x3=\x3>\x3>\x3"+ - ">\x3>\x3>\x3>\x3?\x3?\x3?\x3?\x3?\x3?\x3@\x3@\x3@\x3@\x3@\x3\x41\x3\x41"+ - "\x3\x41\x3\x41\x3\x41\x3\x42\x3\x42\x3\x42\x3\x42\x3\x42\x3\x43\x3\x43"+ - "\x3\x43\x3\x43\x3\x43\x3\x43\x3\x44\x3\x44\x3\x44\x3\x44\x3\x44\x3\x44"+ - "\x3\x44\x3\x44\x3\x45\x3\x45\x3\x45\x3\x45\x3\x45\x3\x45\x3\x46\x3\x46"+ - "\x3\x46\x3\x46\x3\x46\x3\x46\x3G\x3G\x3G\x3G\x3G\x3G\x3H\x3H\x3H\x3H\x3"+ - "H\x3H\x3H\x3H\x3H\x3I\x3I\x3I\x3I\x3I\x3J\x3J\x3J\x3J\x3J\x3J\x3J\x3J"+ - "\x3K\x3K\x3K\x3K\x3K\x3K\x3K\x3K\x3L\x3L\x3L\x3L\x3L\x3L\x3L\x3L\x3M\x3"+ - "M\x3M\x3M\x3M\x3M\x3M\x3M\x3N\x3N\x3N\x3N\x3N\x3N\x3N\x3O\x3O\x3O\x3O"+ - "\x3O\x3O\x3O\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3"+ - "R\x3R\x3R\x3R\x3R\x3R\x3R\x3R\x3R\x3R\x3S\x3S\x3S\x3S\x3S\x3S\x3S\x3S"+ - "\x3S\x3S\x3T\x3T\x3T\x3T\x3T\x3T\x3T\x3U\x3U\x3U\x3U\x3U\x3U\x3U\x3V\x3"+ - "V\x3V\x3V\x3V\x3V\x3V\x3W\x3W\x3W\x3W\x3W\x3W\x3W\x3X\x3X\x3X\x3X\x3X"+ - "\x3X\x3X\x3X\x3X\x3X\x3X\x3X\x3X\x3X\x3Y\x3Y\x3Y\x3Y\x3Z\x3Z\x3Z\x3[\x3"+ - "[\x3[\x3[\x3[\x3[\x3[\x3\\\x3\\\x3\\\x3\\\x3\\\x3]\x3]\x3]\x3]\x3]\x3"+ - "^\x3^\x3^\x3^\x3^\x3^\x3^\x3_\x3_\x3_\x3_\x3_\x3_\x3`\x3`\x3`\x3`\x3`"+ - "\x3`\x3`\x3`\x3`\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61"+ - "\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x3\x62\x3\x62\x3\x62\x3\x62\x3\x62"+ - "\x3\x62\x3\x62\x3\x63\x3\x63\x3\x63\x3\x63\x3\x63\x3\x63\x3\x63\x3\x63"+ - "\x3\x63\x3\x63\x3\x63\x3\x63\x3\x63\x3\x64\x3\x64\x3\x64\x3\x64\x3\x64"+ - "\x3\x64\x3\x64\x3\x64\x3\x64\x3\x64\x3\x64\x3\x65\x3\x65\x3\x65\x3\x65"+ - "\x3\x65\x3\x65\x3\x65\x3\x65\x3\x66\x3\x66\x3\x66\x3\x66\x3\x66\x3\x66"+ - "\x3\x66\x3\x66\x3\x66\x3g\x3g\x3g\x3g\x3g\x3g\x3g\x3g\x3g\x3h\x3h\x3h"+ - "\x3h\x3i\x3i\x3i\x3i\x3i\x3j\x3j\x3j\x3j\x3k\x3k\x3k\x3k\x3k\x3k\x3l\x3"+ - "l\x3l\x3l\x3l\x3l\x3m\x3m\x3m\x3m\x3m\x3m\x3n\x3n\x3n\x3n\x3n\x3n\x3n"+ - "\x3n\x3o\x3o\x3o\x3o\x3o\x3o\x3o\x3o\x3o\x3p\x3p\x3p\x3p\x3p\x3p\x3p\x3"+ - "p\x3p\x3p\x3p\x3p\x3p\x3p\x3q\x3q\x3q\x3q\x3q\x3q\x3q\x3q\x3q\x3q\x3q"+ - "\x3q\x3q\x3q\x3r\x3r\x3r\x3r\x3r\x3r\x3r\x3r\x3r\x3s\x3s\x3s\x3s\x3s\x3"+ - "s\x3t\x3t\x3t\x3t\x3t\x3t\x3t\x3t\x3t\x3u\x3u\x3u\x3u\x3u\x3u\x3u\x3v"+ - "\x3v\x3v\x3v\x3w\x3w\x3w\x3w\x3w\x3w\x3w\x3w\x3w\x3x\x3x\x3x\x3x\x3y\x3"+ - "y\x3y\x3y\x3y\x3y\x3y\x3z\x3z\x3z\x3z\x3z\x3z\x3{\x3{\x3{\x3{\x3{\x3|"+ - "\x3|\x3|\x3}\x3}\x3}\x3}\x3~\x3~\x3~\x3~\x3~\x3~\x3~\x3~\x3~\x3~\x3~\x3"+ - "\x7F\x3\x7F\x3\x7F\x3\x80\x3\x80\x3\x80\x3\x80\x3\x80\x3\x80\x3\x81\x3"+ - "\x81\x3\x81\x3\x82\x3\x82\x3\x82\x3\x82\x3\x82\x3\x82\x3\x82\x3\x82\x3"+ - "\x83\x3\x83\x3\x83\x3\x83\x3\x83\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3"+ - "\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3"+ - "\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x88\x3\x88\x3\x88\x3\x88\x3\x89\x3"+ - "\x89\x3\x89\x3\x89\x3\x8A\x3\x8A\x3\x8A\x3\x8A\x3\x8A\x3\x8B\x3\x8B\x3"+ - "\x8B\x3\x8B\x3\x8B\x3\x8B\x3\x8B\x3\x8B\x3\x8B\x3\x8B\x3\x8B\x3\x8C\x3"+ - "\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8D\x3"+ - "\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3"+ - "\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3"+ - "\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8F\x3\x8F\x3\x8F\x3\x8F\x3"+ - "\x8F\x3\x90\x3\x90\x3\x90\x3\x91\x3\x91\x3\x91\x3\x91\x3\x92\x3\x92\x3"+ - "\x92\x3\x92\x3\x92\x3\x92\x3\x93\x3\x93\x3\x93\x3\x93\x3\x94\x3\x94\x3"+ - "\x94\x3\x94\x3\x94\x3\x95\x3\x95\x3\x95\x3\x95\x3\x95\x3\x96\x3\x96\x3"+ - "\x96\x3\x96\x3\x97\x3\x97\x3\x97\x3\x97\x3\x98\x3\x98\x3\x98\x3\x98\x3"+ - "\x98\x3\x98\x3\x98\x3\x98\x3\x99\x3\x99\x3\x99\x3\x99\x3\x99\x3\x9A\x3"+ - "\x9A\x3\x9A\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3"+ - "\x9B\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3"+ - "\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9D\x3\x9D\x3\x9D\x3\x9D\x3"+ - "\x9D\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3"+ - "\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3"+ - "\x9F\x3\x9F\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3"+ + "\x134\x3\x2\x3\x2\x3\x2\x3\x2\x3\x3\x3\x3\x3\x3\x3\x3\x3\x4\x3\x4\x3\x4"+ + "\x3\x4\x3\x4\x3\x4\x3\x5\x3\x5\x3\x5\x3\x5\x3\x5\x3\x5\x3\x6\x3\x6\x3"+ + "\x6\x3\x6\x3\x6\x3\x6\x3\a\x3\a\x3\a\x3\a\x3\a\x3\b\x3\b\x3\b\x3\b\x3"+ + "\b\x3\b\x3\t\x3\t\x3\t\x3\t\x3\t\x3\n\x3\n\x3\n\x3\n\x3\n\x3\v\x3\v\x3"+ + "\v\x3\v\x3\v\x3\f\x3\f\x3\f\x3\f\x3\f\x3\f\x3\f\x3\r\x3\r\x3\r\x3\r\x3"+ + "\r\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xF\x3\xF\x3\xF\x3"+ + "\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\x10\x3\x10\x3\x10\x3\x10\x3\x10\x3\x11"+ + "\x3\x11\x3\x11\x3\x11\x3\x11\x3\x12\x3\x12\x3\x12\x3\x12\x3\x12\x3\x12"+ + "\x3\x12\x3\x12\x3\x12\x3\x13\x3\x13\x3\x13\x3\x13\x3\x13\x3\x14\x3\x14"+ + "\x3\x14\x3\x14\x3\x14\x3\x14\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15"+ + "\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x17"+ + "\x3\x17\x3\x17\x3\x17\x3\x17\x3\x18\x3\x18\x3\x18\x3\x18\x3\x19\x3\x19"+ + "\x3\x19\x3\x19\x3\x19\x3\x19\x3\x19\x3\x1A\x3\x1A\x3\x1A\x3\x1A\x3\x1B"+ + "\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1C\x3\x1C\x3\x1C\x3\x1C"+ + "\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E"+ + "\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F"+ + "\x3\x1F\x3\x1F\x3 \x3 \x3 \x3 \x3 \x3!\x3!\x3!\x3!\x3!\x3!\x3\"\x3\"\x3"+ + "\"\x3\"\x3\"\x3#\x3#\x3#\x3#\x3#\x3#\x3#\x3$\x3$\x3$\x3$\x3$\x3%\x3%\x3"+ + "%\x3%\x3%\x3%\x3&\x3&\x3&\x3&\x3\'\x3\'\x3\'\x3\'\x3\'\x3\'\x3\'\x3(\x3"+ + "(\x3)\x3)\x3*\x3*\x3+\x3+\x3,\x3,\x3-\x3-\x3.\x3.\x3/\x3/\x3\x30\x3\x30"+ + "\x3\x31\x3\x31\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3\x33"+ + "\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x34"+ + "\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x35\x3\x35\x3\x35\x3\x35\x3\x36"+ + "\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x37"+ + "\x3\x37\x3\x37\x3\x37\x3\x37\x3\x37\x3\x37\x3\x38\x3\x38\x3\x38\x3\x39"+ + "\x3\x39\x3\x39\x3\x39\x3\x39\x3\x39\x3:\x3:\x3:\x3:\x3:\x3:\x3:\x3;\x3"+ + ";\x3;\x3;\x3;\x3;\x3;\x3;\x3<\x3<\x3<\x3<\x3<\x3<\x3=\x3=\x3=\x3=\x3="+ + "\x3=\x3>\x3>\x3>\x3>\x3>\x3?\x3?\x3?\x3?\x3?\x3@\x3@\x3@\x3@\x3@\x3\x41"+ + "\x3\x41\x3\x41\x3\x41\x3\x41\x3\x41\x3\x42\x3\x42\x3\x42\x3\x42\x3\x42"+ + "\x3\x42\x3\x43\x3\x43\x3\x43\x3\x43\x3\x43\x3\x43\x3\x44\x3\x44\x3\x44"+ + "\x3\x44\x3\x44\x3\x44\x3\x44\x3\x44\x3\x44\x3\x45\x3\x45\x3\x45\x3\x45"+ + "\x3\x45\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3G\x3"+ + "G\x3G\x3G\x3G\x3G\x3G\x3G\x3H\x3H\x3H\x3H\x3H\x3H\x3H\x3H\x3I\x3I\x3I"+ + "\x3I\x3I\x3I\x3I\x3I\x3J\x3J\x3J\x3J\x3J\x3J\x3J\x3K\x3K\x3K\x3K\x3K\x3"+ + "K\x3K\x3L\x3L\x3L\x3L\x3L\x3L\x3L\x3M\x3M\x3M\x3M\x3M\x3M\x3M\x3N\x3N"+ + "\x3N\x3N\x3N\x3N\x3N\x3N\x3N\x3N\x3O\x3O\x3O\x3O\x3O\x3O\x3O\x3O\x3O\x3"+ + "O\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3R\x3R\x3R"+ + "\x3R\x3R\x3R\x3R\x3S\x3S\x3S\x3S\x3S\x3S\x3S\x3T\x3T\x3T\x3T\x3U\x3U\x3"+ + "U\x3V\x3V\x3V\x3V\x3V\x3V\x3V\x3W\x3W\x3W\x3W\x3W\x3X\x3X\x3X\x3X\x3X"+ + "\x3Y\x3Y\x3Y\x3Y\x3Y\x3Y\x3Y\x3Z\x3Z\x3Z\x3Z\x3Z\x3Z\x3[\x3[\x3[\x3[\x3"+ + "[\x3[\x3[\x3[\x3[\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3"+ + "\\\x3\\\x3\\\x3]\x3]\x3]\x3]\x3]\x3]\x3]\x3^\x3^\x3^\x3^\x3^\x3^\x3^\x3"+ + "^\x3^\x3^\x3^\x3^\x3^\x3_\x3_\x3_\x3_\x3_\x3_\x3_\x3_\x3_\x3_\x3_\x3`"+ + "\x3`\x3`\x3`\x3`\x3`\x3`\x3`\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61"+ + "\x3\x61\x3\x61\x3\x61\x3\x62\x3\x62\x3\x62\x3\x62\x3\x62\x3\x62\x3\x62"+ + "\x3\x62\x3\x62\x3\x63\x3\x63\x3\x63\x3\x63\x3\x64\x3\x64\x3\x64\x3\x64"+ + "\x3\x64\x3\x65\x3\x65\x3\x65\x3\x65\x3\x66\x3\x66\x3\x66\x3\x66\x3\x66"+ + "\x3\x66\x3g\x3g\x3g\x3g\x3g\x3g\x3h\x3h\x3h\x3h\x3h\x3h\x3i\x3i\x3i\x3"+ + "i\x3i\x3i\x3i\x3i\x3j\x3j\x3j\x3j\x3j\x3j\x3j\x3j\x3j\x3k\x3k\x3k\x3k"+ + "\x3k\x3k\x3k\x3k\x3k\x3k\x3k\x3k\x3k\x3k\x3l\x3l\x3l\x3l\x3l\x3l\x3l\x3"+ + "l\x3l\x3l\x3l\x3l\x3l\x3l\x3m\x3m\x3m\x3m\x3m\x3m\x3m\x3m\x3m\x3n\x3n"+ + "\x3n\x3n\x3n\x3n\x3o\x3o\x3o\x3o\x3o\x3o\x3o\x3p\x3p\x3p\x3p\x3q\x3q\x3"+ + "q\x3q\x3q\x3q\x3q\x3q\x3q\x3r\x3r\x3r\x3r\x3s\x3s\x3s\x3s\x3s\x3s\x3s"+ + "\x3t\x3t\x3t\x3t\x3t\x3t\x3u\x3u\x3u\x3u\x3u\x3v\x3v\x3v\x3w\x3w\x3w\x3"+ + "w\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3y\x3y\x3y\x3z\x3z\x3z"+ + "\x3z\x3z\x3z\x3{\x3{\x3{\x3|\x3|\x3|\x3|\x3|\x3|\x3|\x3|\x3}\x3}\x3}\x3"+ + "}\x3}\x3~\x3~\x3~\x3~\x3~\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x80\x3"+ + "\x80\x3\x80\x3\x80\x3\x81\x3\x81\x3\x81\x3\x81\x3\x82\x3\x82\x3\x82\x3"+ + "\x82\x3\x82\x3\x83\x3\x83\x3\x83\x3\x83\x3\x83\x3\x83\x3\x83\x3\x83\x3"+ + "\x83\x3\x83\x3\x83\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3"+ + "\x84\x3\x84\x3\x84\x3\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3"+ + "\x85\x3\x85\x3\x85\x3\x85\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3"+ + "\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3"+ + "\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x88\x3\x88\x3\x88\x3\x89\x3\x89\x3"+ + "\x89\x3\x89\x3\x8A\x3\x8A\x3\x8A\x3\x8A\x3\x8B\x3\x8B\x3\x8B\x3\x8B\x3"+ + "\x8B\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8E\x3"+ + "\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8F\x3\x8F\x3\x8F\x3"+ + "\x8F\x3\x8F\x3\x90\x3\x90\x3\x90\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3"+ + "\x91\x3\x91\x3\x91\x3\x91\x3\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3"+ + "\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3\x93\x3"+ + "\x93\x3\x93\x3\x93\x3\x93\x3\x94\x3\x94\x3\x94\x3\x94\x3\x94\x3\x94\x3"+ + "\x94\x3\x94\x3\x94\x3\x95\x3\x95\x3\x95\x3\x95\x3\x95\x3\x95\x3\x95\x3"+ + "\x95\x3\x95\x3\x95\x3\x95\x3\x95\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3"+ + "\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3"+ + "\x96\x3\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3"+ + "\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3\x98\x3\x98\x3\x98\x3\x98\x3"+ + "\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3"+ + "\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x99\x3\x99\x3"+ + "\x99\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9B\x3\x9B\x3"+ + "\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9C\x3"+ + "\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9D\x3\x9D\x3"+ + "\x9D\x3\x9D\x3\x9D\x3\x9D\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3"+ + "\x9E\x3\x9E\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3"+ + "\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3"+ "\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA1\x3\xA1\x3"+ "\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3"+ - "\xA1\x3\xA1\x3\xA1\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3"+ - "\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3"+ - "\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA3\x3\xA3\x3\xA3\x3\xA4\x3\xA4\x3"+ - "\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3"+ - "\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3"+ - "\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA7\x3\xA7\x3\xA7\x3\xA7\x3\xA7\x3"+ - "\xA7\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA9\x3"+ - "\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3"+ - "\xA9\x3\xA9\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3"+ - "\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3"+ - "\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAC\x3\xAC\x3"+ - "\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAD\x3\xAD\x3\xAD\x3\xAD\x3"+ - "\xAD\x3\xAD\x3\xAD\x3\xAE\x3\xAE\x3\xAE\x3\xAE\x3\xAF\x3\xAF\x3\xAF\x3"+ + "\xA1\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA3\x3"+ + "\xA3\x3\xA3\x3\xA3\x3\xA3\x3\xA3\x3\xA3\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x3"+ + "\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA6\x3\xA6\x3\xA6\x3"+ + "\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA7\x3\xA7\x3"+ + "\xA7\x3\xA7\x3\xA7\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3"+ + "\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3"+ + "\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3"+ + "\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAD\x3\xAD\x3\xAD\x3"+ + "\xAD\x3\xAD\x3\xAD\x3\xAD\x3\xAE\x3\xAE\x3\xAE\x3\xAE\x3\xAE\x3\xAF\x3"+ "\xAF\x3\xAF\x3\xAF\x3\xAF\x3\xB0\x3\xB0\x3\xB0\x3\xB0\x3\xB0\x3\xB0\x3"+ - "\xB0\x3\xB0\x3\xB0\x3\xB0\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3"+ - "\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3"+ - "\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3"+ - "\xB3\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB5\x3\xB5\x3\xB5\x3"+ - "\xB5\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB7\x3\xB7\x3\xB7\x3"+ - "\xB7\x3\xB7\x3\xB7\x3\xB7\x3\xB8\x3\xB8\x3\xB8\x3\xB8\x3\xB8\x3\xB8\x3"+ - "\xB8\x3\xB9\x3\xB9\x3\xB9\x3\xB9\x3\xB9\x3\xB9\x3\xBA\x3\xBA\x3\xBA\x3"+ - "\xBA\x3\xBA\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3"+ - "\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3"+ - "\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBD\x3\xBD\x3\xBD\x3\xBD\x3"+ - "\xBD\x3\xBE\x3\xBE\x3\xBE\x3\xBE\x3\xBE\x3\xBE\x3\xBE\x3\xBF\x3\xBF\x3"+ - "\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xC0\x3\xC0\x3\xC0\x3"+ - "\xC0\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC2\x3"+ - "\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3"+ - "\xC3\x3\xC3\x3\xC3\x3\xC4\x3\xC4\x3\xC4\x3\xC4\x3\xC5\x3\xC5\x3\xC5\x3"+ - "\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC6\x3\xC6\x3\xC6\x3\xC6\x3\xC6\x3\xC7\x3"+ - "\xC7\x3\xC7\x3\xC7\x3\xC7\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3"+ - "\xC8\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xCA\x3\xCA\x3\xCA\x3\xCA\x3\xCB\x3"+ - "\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCC\x3\xCC\x3\xCC\x3\xCC\x3\xCC\x3\xCD\x3"+ - "\xCD\x3\xCD\x3\xCD\x3\xCD\x3\xCE\x3\xCE\x3\xCE\x3\xCF\x3\xCF\x3\xCF\x3"+ - "\xCF\x3\xCF\x3\xD0\x3\xD0\x3\xD0\x3\xD0\x3\xD0\x3\xD1\x3\xD1\x3\xD1\x3"+ - "\xD1\x3\xD1\x3\xD1\x3\xD1\x3\xD2\x3\xD2\x3\xD2\x3\xD2\x3\xD2\x3\xD2\x3"+ - "\xD2\x3\xD3\x3\xD3\x3\xD3\x3\xD3\x3\xD3\x3\xD3\x3\xD3\x3\xD4\x3\xD4\x3"+ - "\xD4\x3\xD4\x3\xD4\x3\xD4\x3\xD5\x3\xD5\x3\xD5\x3\xD5\x3\xD5\x3\xD5\x3"+ - "\xD5\x3\xD5\x3\xD6\x3\xD6\x3\xD6\x3\xD6\x3\xD6\x3\xD6\x3\xD6\x3\xD6\x3"+ - "\xD7\x3\xD7\x3\xD7\x3\xD7\x3\xD7\x3\xD8\x3\xD8\x3\xD8\x3\xD8\x3\xD8\x3"+ - "\xD8\x3\xD9\x3\xD9\x3\xD9\x3\xD9\x3\xD9\x3\xD9\x3\xDA\x3\xDA\x3\xDA\x3"+ - "\xDA\x3\xDA\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x3"+ - "\xDB\x3\xDB\x3\xDB\x3\xDC\x3\xDC\x3\xDC\x3\xDC\x3\xDC\x3\xDC\x3\xDD\x3"+ - "\xDD\x3\xDD\x3\xDD\x3\xDE\x3\xDE\x3\xDE\x3\xDF\x3\xDF\x3\xE0\x3\xE0\x3"+ - "\xE1\x3\xE1\x3\xE2\x3\xE2\x3\xE2\x3\xE2\x5\xE2\x85F\n\xE2\x3\xE3\x3\xE3"+ - "\x3\xE4\x3\xE4\x3\xE4\x3\xE4\x5\xE4\x867\n\xE4\x3\xE5\x3\xE5\x3\xE6\x3"+ - "\xE6\x3\xE7\x3\xE7\x3\xE8\x3\xE8\x3\xE9\x3\xE9\x3\xE9\x3\xE9\x5\xE9\x875"+ - "\n\xE9\x3\xEA\x3\xEA\x3\xEB\x3\xEB\x3\xEC\x3\xEC\x3\xED\a\xED\x87E\n\xED"+ - "\f\xED\xE\xED\x881\v\xED\x3\xED\x3\xED\x3\xED\x3\xEE\a\xEE\x887\n\xEE"+ - "\f\xEE\xE\xEE\x88A\v\xEE\x3\xEE\x3\xEE\x3\xEE\x3\xEE\x3\xEF\a\xEF\x891"+ - "\n\xEF\f\xEF\xE\xEF\x894\v\xEF\x3\xEF\x3\xEF\x3\xEF\x3\xEF\x3\xEF\x3\xEF"+ - "\x3\xEF\x3\xEF\x3\xF0\a\xF0\x89F\n\xF0\f\xF0\xE\xF0\x8A2\v\xF0\x3\xF0"+ - "\x3\xF0\x3\xF0\x3\xF0\x3\xF0\x3\xF0\x3\xF1\a\xF1\x8AB\n\xF1\f\xF1\xE\xF1"+ - "\x8AE\v\xF1\x3\xF1\x3\xF1\x3\xF1\x3\xF1\x3\xF1\a\xF1\x8B5\n\xF1\f\xF1"+ - "\xE\xF1\x8B8\v\xF1\x3\xF1\x3\xF1\x3\xF1\x3\xF2\x3\xF2\x3\xF3\x3\xF3\x3"+ - "\xF4\x3\xF4\x3\xF4\x3\xF4\a\xF4\x8C5\n\xF4\f\xF4\xE\xF4\x8C8\v\xF4\x3"+ - "\xF4\x3\xF4\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x6\xF5\x8D0\n\xF5\r\xF5\xE\xF5"+ - "\x8D1\x3\xF5\x5\xF5\x8D5\n\xF5\x3\xF6\x3\xF6\x3\xF6\x3\xF6\x6\xF6\x8DB"+ - "\n\xF6\r\xF6\xE\xF6\x8DC\x3\xF6\x5\xF6\x8E0\n\xF6\x3\xF7\x3\xF7\x5\xF7"+ - "\x8E4\n\xF7\x3\xF7\x3\xF7\x3\xF7\x5\xF7\x8E9\n\xF7\x3\xF8\x3\xF8\x3\xF8"+ - "\x3\xF8\x3\xF8\x3\xF8\x5\xF8\x8F1\n\xF8\x3\xF8\x5\xF8\x8F4\n\xF8\x3\xF8"+ - "\x3\xF8\x3\xF8\x5\xF8\x8F9\n\xF8\x5\xF8\x8FB\n\xF8\x3\xF9\x3\xF9\x5\xF9"+ - "\x8FF\n\xF9\x3\xFA\x3\xFA\x3\xFB\x3\xFB\x3\xFC\x3\xFC\x5\xFC\x907\n\xFC"+ - "\x3\xFC\x6\xFC\x90A\n\xFC\r\xFC\xE\xFC\x90B\x3\xFD\x3\xFD\x3\xFE\x3\xFE"+ - "\x3\xFF\x6\xFF\x913\n\xFF\r\xFF\xE\xFF\x914\x3\x100\x3\x100\x3\x100\x3"+ - "\x100\x3\x101\x3\x101\x5\x101\x91D\n\x101\x3\x101\x3\x101\x3\x101\x3\x101"+ - "\x5\x101\x923\n\x101\x3\x102\x3\x102\x3\x102\x3\x102\x3\x102\x3\x102\x5"+ - "\x102\x92B\n\x102\x3\x103\x6\x103\x92E\n\x103\r\x103\xE\x103\x92F\x3\x103"+ - "\x5\x103\x933\n\x103\x3\x104\x5\x104\x936\n\x104\x3\x104\x5\x104\x939"+ - "\n\x104\x3\x104\x5\x104\x93C\n\x104\x3\x105\x3\x105\x5\x105\x940\n\x105"+ - "\x3\x106\x3\x106\x3\x106\x3\x106\x3\x106\x3\x106\x3\x106\x3\x106\x3\x106"+ - "\x3\x106\x3\x106\x3\x106\x5\x106\x94E\n\x106\x3\x107\x3\x107\x3\x107\x3"+ - "\x107\x3\x107\x3\x107\x3\x107\x3\x107\x3\x107\x3\x107\x3\x107\x5\x107"+ - "\x95B\n\x107\x3\x108\x6\x108\x95E\n\x108\r\x108\xE\x108\x95F\x3\x108\x3"+ - "\x108\x3\x108\x6\x108\x965\n\x108\r\x108\xE\x108\x966\x3\x108\x3\x108"+ - "\x6\x108\x96B\n\x108\r\x108\xE\x108\x96C\x3\x108\x3\x108\x6\x108\x971"+ - "\n\x108\r\x108\xE\x108\x972\x5\x108\x975\n\x108\x3\x108\x5\x108\x978\n"+ - "\x108\x5\x108\x97A\n\x108\x3\x109\x5\x109\x97D\n\x109\x3\x109\x3\x109"+ - "\x5\x109\x981\n\x109\x3\x10A\x5\x10A\x984\n\x10A\x3\x10A\x3\x10A\x3\x10A"+ - "\x3\x10A\x3\x10A\x3\x10A\x3\x10A\x3\x10A\x5\x10A\x98E\n\x10A\x3\x10B\x3"+ - "\x10B\x3\x10B\x3\x10B\x3\x10B\x3\x10B\x3\x10B\x3\x10B\x3\x10C\x3\x10C"+ - "\x3\x10C\x3\x10C\x3\x10C\x3\x10C\x3\x10C\x3\x10C\x3\x10C\x3\x10D\x3\x10D"+ - "\x3\x10D\x3\x10D\x3\x10D\x3\x10D\x3\x10E\x3\x10E\x3\x10E\x3\x10E\x3\x10E"+ - "\x3\x10E\x3\x10F\x3\x10F\x3\x10F\x3\x10F\x3\x110\x3\x110\x3\x110\x3\x110"+ - "\x3\x110\x3\x111\x3\x111\x3\x111\x3\x111\x3\x111\x3\x112\x3\x112\x3\x112"+ - "\x3\x112\x3\x112\x3\x112\x3\x112\x3\x113\x3\x113\x3\x113\x3\x113\x3\x113"+ - "\x3\x113\x3\x113\x3\x113\x3\x113\x3\x113\x3\x114\x3\x114\x3\x114\x3\x114"+ - "\x3\x114\x3\x114\x3\x114\x3\x114\x3\x115\x3\x115\x3\x115\x3\x115\x3\x115"+ - "\x3\x115\x3\x115\x3\x115\x3\x115\x3\x116\x3\x116\x3\x116\x3\x116\x3\x116"+ - "\x3\x116\x3\x116\x3\x116\x3\x116\x3\x117\x3\x117\x3\x117\x3\x117\x3\x118"+ - "\x3\x118\x3\x118\x3\x118\x3\x119\x3\x119\x3\x119\x3\x119\x3\x11A\x3\x11A"+ - "\x3\x11A\x3\x11A\x3\x11B\x3\x11B\x3\x11B\x3\x11B\x3\x11C\x3\x11C\x3\x11C"+ - "\x3\x11C\x3\x11D\x3\x11D\x3\x11D\x3\x11D\x3\x11E\x3\x11E\x3\x11E\x3\x11E"+ - "\x3\x11F\x3\x11F\x3\x11F\x3\x11F\x3\x120\x3\x120\x3\x120\x3\x120\x3\x121"+ - "\x3\x121\x3\x121\x3\x121\x3\x122\x3\x122\x3\x122\x5\x122\xA15\n\x122\x3"+ - "\x123\x5\x123\xA18\n\x123\x3\x123\x3\x123\x3\x123\x3\x123\a\x123\xA1E"+ - "\n\x123\f\x123\xE\x123\xA21\v\x123\x3\x124\x3\x124\x3\x124\x5\x124\xA26"+ - "\n\x124\x3\x124\x3\x124\a\x124\xA2A\n\x124\f\x124\xE\x124\xA2D\v\x124"+ - "\x3\x125\x3\x125\x3\x126\x3\x126\x3\x127\x3\x127\x3\x128\x3\x128\a\x128"+ - "\xA37\n\x128\f\x128\xE\x128\xA3A\v\x128\x3\x128\x3\x128\x6\x128\xA3E\n"+ - "\x128\r\x128\xE\x128\xA3F\x3\x128\x3\x128\x5\x128\xA44\n\x128\x3\x129"+ - "\a\x129\xA47\n\x129\f\x129\xE\x129\xA4A\v\x129\x3\x129\x3\x129\a\x129"+ - "\xA4E\n\x129\f\x129\xE\x129\xA51\v\x129\x3\x129\x5\x129\xA54\n\x129\x3"+ - "\x129\x3\x129\x3\x12A\x3\x12A\x6\x12A\xA5A\n\x12A\r\x12A\xE\x12A\xA5B"+ - "\x3\x12A\x3\x12A\x6\x12A\xA60\n\x12A\r\x12A\xE\x12A\xA61\x3\x12A\x3\x12A"+ - "\x6\x12A\xA66\n\x12A\r\x12A\xE\x12A\xA67\x3\x12A\x3\x12A\x6\x12A\xA6C"+ - "\n\x12A\r\x12A\xE\x12A\xA6D\x3\x12A\x3\x12A\x6\x12A\xA72\n\x12A\r\x12A"+ - "\xE\x12A\xA73\x3\x12A\x3\x12A\x3\x12B\x3\x12B\x3\x12C\x3\x12C\x3\x12D"+ - "\x3\x12D\x3\x12E\x3\x12E\x3\x12F\x3\x12F\x3\x130\x3\x130\x3\x131\x3\x131"+ - "\x3\x132\x3\x132\x3\x133\x3\x133\x3\x134\x3\x134\x3\x135\x3\x135\x3\x136"+ - "\x3\x136\x3\x137\x3\x137\x3\x138\x3\x138\x3\x139\x3\x139\x3\x13A\x3\x13A"+ - "\x3\x13B\x3\x13B\x3\x13C\x3\x13C\x3\x13D\x3\x13D\x3\x13E\x3\x13E\x3\x13F"+ - "\x3\x13F\x3\x140\x3\x140\x3\x141\x3\x141\x3\x142\x3\x142\x3\x143\x3\x143"+ - "\x3\x144\x3\x144\x3\x145\x3\x145\x3\x146\x3\x146\x3\x147\x3\x147\x3\x148"+ - "\x3\x148\x2\x2\x2\x149\x3\x2\x3\x5\x2\x4\a\x2\x5\t\x2\x6\v\x2\a\r\x2\b"+ + "\xB0\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3"+ + "\xB2\x3\xB2\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB4\x3"+ + "\xB4\x3\xB4\x3\xB4\x3\xB5\x3\xB5\x3\xB5\x3\xB5\x3\xB5\x3\xB5\x3\xB5\x3"+ + "\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB7\x3\xB7\x3\xB7\x3\xB7\x3\xB7\x3"+ + "\xB8\x3\xB8\x3\xB8\x3\xB8\x3\xB8\x3\xB8\x3\xB8\x3\xB9\x3\xB9\x3\xB9\x3"+ + "\xB9\x3\xBA\x3\xBA\x3\xBA\x3\xBA\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3"+ + "\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBD\x3\xBD\x3\xBD\x3\xBE\x3\xBE\x3"+ + "\xBE\x3\xBE\x3\xBE\x3\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xC0\x3\xC0\x3"+ + "\xC0\x3\xC0\x3\xC0\x3\xC0\x3\xC0\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3"+ + "\xC1\x3\xC1\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC3\x3\xC3\x3"+ + "\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC4\x3\xC4\x3\xC4\x3\xC4\x3"+ + "\xC4\x3\xC4\x3\xC4\x3\xC4\x3\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC6\x3"+ + "\xC6\x3\xC6\x3\xC6\x3\xC6\x3\xC6\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3"+ + "\xC7\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3"+ + "\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xCA\x3\xCA\x3\xCA\x3"+ + "\xCA\x3\xCA\x3\xCA\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCC\x3\xCC\x3\xCC\x3"+ + "\xCD\x3\xCD\x3\xCE\x3\xCE\x3\xCF\x3\xCF\x3\xD0\x3\xD0\x3\xD0\x3\xD0\x5"+ + "\xD0\x7A7\n\xD0\x3\xD1\x3\xD1\x3\xD2\x3\xD2\x3\xD2\x3\xD2\x5\xD2\x7AF"+ + "\n\xD2\x3\xD3\x3\xD3\x3\xD4\x3\xD4\x3\xD5\x3\xD5\x3\xD6\x3\xD6\x3\xD7"+ + "\x3\xD7\x3\xD7\x3\xD7\x5\xD7\x7BD\n\xD7\x3\xD8\x3\xD8\x3\xD9\x3\xD9\x3"+ + "\xDA\x3\xDA\x3\xDB\a\xDB\x7C6\n\xDB\f\xDB\xE\xDB\x7C9\v\xDB\x3\xDB\x3"+ + "\xDB\x3\xDB\x6\xDB\x7CE\n\xDB\r\xDB\xE\xDB\x7CF\x3\xDC\a\xDC\x7D3\n\xDC"+ + "\f\xDC\xE\xDC\x7D6\v\xDC\x3\xDC\x3\xDC\x3\xDC\x3\xDC\x6\xDC\x7DC\n\xDC"+ + "\r\xDC\xE\xDC\x7DD\x3\xDD\a\xDD\x7E1\n\xDD\f\xDD\xE\xDD\x7E4\v\xDD\x3"+ + "\xDD\x3\xDD\x3\xDD\x3\xDD\x3\xDD\x3\xDD\x3\xDD\x3\xDD\x6\xDD\x7EE\n\xDD"+ + "\r\xDD\xE\xDD\x7EF\x3\xDE\a\xDE\x7F3\n\xDE\f\xDE\xE\xDE\x7F6\v\xDE\x3"+ + "\xDE\x3\xDE\x3\xDE\x3\xDE\x3\xDE\x3\xDE\a\xDE\x7FE\n\xDE\f\xDE\xE\xDE"+ + "\x801\v\xDE\x3\xDE\x3\xDE\x3\xDE\a\xDE\x806\n\xDE\f\xDE\xE\xDE\x809\v"+ + "\xDE\x5\xDE\x80B\n\xDE\x3\xDE\x3\xDE\x5\xDE\x80F\n\xDE\x3\xDF\a\xDF\x812"+ + "\n\xDF\f\xDF\xE\xDF\x815\v\xDF\x3\xDF\x3\xDF\x3\xDF\x3\xDF\x3\xDF\a\xDF"+ + "\x81C\n\xDF\f\xDF\xE\xDF\x81F\v\xDF\x3\xDF\x3\xDF\x3\xDF\a\xDF\x824\n"+ + "\xDF\f\xDF\xE\xDF\x827\v\xDF\x3\xDF\x3\xDF\x3\xDF\a\xDF\x82C\n\xDF\f\xDF"+ + "\xE\xDF\x82F\v\xDF\x5\xDF\x831\n\xDF\x3\xDF\x3\xDF\x5\xDF\x835\n\xDF\x3"+ + "\xE0\x3\xE0\x3\xE1\x3\xE1\x3\xE2\x3\xE2\x3\xE2\x3\xE2\a\xE2\x83F\n\xE2"+ + "\f\xE2\xE\xE2\x842\v\xE2\x3\xE2\x3\xE2\x3\xE3\x3\xE3\x3\xE3\x3\xE3\x6"+ + "\xE3\x84A\n\xE3\r\xE3\xE\xE3\x84B\x3\xE3\x5\xE3\x84F\n\xE3\x3\xE4\x3\xE4"+ + "\x3\xE4\x3\xE4\x6\xE4\x855\n\xE4\r\xE4\xE\xE4\x856\x3\xE4\x5\xE4\x85A"+ + "\n\xE4\x3\xE5\x3\xE5\x5\xE5\x85E\n\xE5\x3\xE5\x3\xE5\x3\xE5\x5\xE5\x863"+ + "\n\xE5\x3\xE6\x3\xE6\x3\xE6\x3\xE6\x3\xE6\x3\xE6\x5\xE6\x86B\n\xE6\x3"+ + "\xE6\x5\xE6\x86E\n\xE6\x3\xE6\x3\xE6\x3\xE6\x5\xE6\x873\n\xE6\x5\xE6\x875"+ + "\n\xE6\x3\xE7\x3\xE7\x5\xE7\x879\n\xE7\x3\xE8\x3\xE8\x3\xE9\x3\xE9\x3"+ + "\xEA\x3\xEA\x5\xEA\x881\n\xEA\x3\xEA\x6\xEA\x884\n\xEA\r\xEA\xE\xEA\x885"+ + "\x3\xEB\x3\xEB\x3\xEC\x3\xEC\x3\xED\x6\xED\x88D\n\xED\r\xED\xE\xED\x88E"+ + "\x3\xEE\x3\xEE\x3\xEE\x3\xEE\x3\xEF\x3\xEF\x5\xEF\x897\n\xEF\x3\xEF\x3"+ + "\xEF\x3\xEF\x3\xEF\x5\xEF\x89D\n\xEF\x3\xF0\x3\xF0\x3\xF0\x3\xF0\x3\xF0"+ + "\x3\xF0\x5\xF0\x8A5\n\xF0\x3\xF1\x6\xF1\x8A8\n\xF1\r\xF1\xE\xF1\x8A9\x3"+ + "\xF1\x5\xF1\x8AD\n\xF1\x3\xF2\x5\xF2\x8B0\n\xF2\x3\xF2\x5\xF2\x8B3\n\xF2"+ + "\x3\xF2\x5\xF2\x8B6\n\xF2\x3\xF3\x3\xF3\x5\xF3\x8BA\n\xF3\x3\xF4\x3\xF4"+ + "\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4"+ + "\x5\xF4\x8C8\n\xF4\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3"+ + "\xF5\x3\xF5\x3\xF5\x3\xF5\x5\xF5\x8D5\n\xF5\x3\xF6\x6\xF6\x8D8\n\xF6\r"+ + "\xF6\xE\xF6\x8D9\x3\xF6\x3\xF6\x3\xF6\x6\xF6\x8DF\n\xF6\r\xF6\xE\xF6\x8E0"+ + "\x3\xF6\x3\xF6\x6\xF6\x8E5\n\xF6\r\xF6\xE\xF6\x8E6\x3\xF6\x3\xF6\x6\xF6"+ + "\x8EB\n\xF6\r\xF6\xE\xF6\x8EC\x5\xF6\x8EF\n\xF6\x3\xF6\x5\xF6\x8F2\n\xF6"+ + "\x5\xF6\x8F4\n\xF6\x3\xF7\x5\xF7\x8F7\n\xF7\x3\xF7\x3\xF7\x5\xF7\x8FB"+ + "\n\xF7\x3\xF8\x5\xF8\x8FE\n\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3"+ + "\xF8\x3\xF8\x3\xF8\x5\xF8\x908\n\xF8\x3\xF9\x3\xF9\x3\xF9\x3\xF9\x3\xF9"+ + "\x3\xF9\x3\xF9\x3\xF9\x3\xFA\x3\xFA\x3\xFA\x3\xFA\x3\xFA\x3\xFA\x3\xFA"+ + "\x3\xFA\x3\xFA\x3\xFB\x3\xFB\x3\xFB\x3\xFB\x3\xFB\x3\xFB\x3\xFC\x3\xFC"+ + "\x3\xFC\x3\xFC\x3\xFC\x3\xFC\x3\xFD\x3\xFD\x3\xFD\x3\xFD\x3\xFE\x3\xFE"+ + "\x3\xFE\x3\xFE\x3\xFE\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3\x100\x3\x100"+ + "\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3\x101\x3\x101\x3\x101\x3\x101"+ + "\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101\x3\x102\x3\x102\x3\x102"+ + "\x3\x102\x3\x102\x3\x102\x3\x102\x3\x102\x3\x103\x3\x103\x3\x103\x3\x103"+ + "\x3\x103\x3\x103\x3\x103\x3\x103\x3\x103\x3\x104\x3\x104\x3\x104\x3\x104"+ + "\x3\x104\x3\x104\x3\x104\x3\x104\x3\x104\x3\x105\x3\x105\x3\x105\x3\x105"+ + "\x3\x106\x3\x106\x3\x106\x3\x106\x3\x107\x3\x107\x3\x107\x3\x107\x3\x108"+ + "\x3\x108\x3\x108\x3\x108\x3\x109\x3\x109\x3\x109\x3\x109\x3\x10A\x3\x10A"+ + "\x3\x10A\x3\x10A\x3\x10B\x3\x10B\x3\x10B\x3\x10B\x3\x10C\x3\x10C\x3\x10C"+ + "\x3\x10C\x3\x10D\x3\x10D\x3\x10D\x3\x10D\x3\x10E\x3\x10E\x3\x10E\x3\x10E"+ + "\x3\x10F\x3\x10F\x3\x10F\x3\x10F\x3\x110\x3\x110\x3\x110\x5\x110\x98F"+ + "\n\x110\x3\x111\x3\x111\x3\x112\x3\x112\x3\x113\x3\x113\x3\x114\x3\x114"+ + "\x6\x114\x999\n\x114\r\x114\xE\x114\x99A\x3\x114\x3\x114\x6\x114\x99F"+ + "\n\x114\r\x114\xE\x114\x9A0\x3\x114\x3\x114\x6\x114\x9A5\n\x114\r\x114"+ + "\xE\x114\x9A6\x3\x114\x3\x114\x6\x114\x9AB\n\x114\r\x114\xE\x114\x9AC"+ + "\x3\x114\x3\x114\x6\x114\x9B1\n\x114\r\x114\xE\x114\x9B2\x3\x114\x3\x114"+ + "\x3\x115\x3\x115\a\x115\x9B9\n\x115\f\x115\xE\x115\x9BC\v\x115\x3\x115"+ + "\x3\x115\x6\x115\x9C0\n\x115\r\x115\xE\x115\x9C1\x3\x115\x3\x115\x5\x115"+ + "\x9C6\n\x115\x3\x116\a\x116\x9C9\n\x116\f\x116\xE\x116\x9CC\v\x116\x3"+ + "\x116\x3\x116\a\x116\x9D0\n\x116\f\x116\xE\x116\x9D3\v\x116\x3\x116\x5"+ + "\x116\x9D6\n\x116\x3\x116\x3\x116\x3\x117\x3\x117\x3\x118\x3\x118\x3\x119"+ + "\x3\x119\x3\x11A\x3\x11A\x3\x11B\x3\x11B\x3\x11C\x3\x11C\x3\x11D\x3\x11D"+ + "\x3\x11E\x3\x11E\x3\x11F\x3\x11F\x3\x120\x3\x120\x3\x121\x3\x121\x3\x122"+ + "\x3\x122\x3\x123\x3\x123\x3\x124\x3\x124\x3\x125\x3\x125\x3\x126\x3\x126"+ + "\x3\x127\x3\x127\x3\x128\x3\x128\x3\x129\x3\x129\x3\x12A\x3\x12A\x3\x12B"+ + "\x3\x12B\x3\x12C\x3\x12C\x3\x12D\x3\x12D\x3\x12E\x3\x12E\x3\x12F\x3\x12F"+ + "\x3\x130\x3\x130\x3\x131\x3\x131\x3\x132\x3\x132\x3\x133\x3\x133\x3\x134"+ + "\x3\x134\x2\x2\x2\x135\x3\x2\x3\x5\x2\x4\a\x2\x5\t\x2\x6\v\x2\a\r\x2\b"+ "\xF\x2\t\x11\x2\n\x13\x2\v\x15\x2\f\x17\x2\r\x19\x2\xE\x1B\x2\xF\x1D\x2"+ "\x10\x1F\x2\x11!\x2\x12#\x2\x13%\x2\x14\'\x2\x15)\x2\x16+\x2\x17-\x2\x18"+ "/\x2\x19\x31\x2\x1A\x33\x2\x1B\x35\x2\x1C\x37\x2\x1D\x39\x2\x1E;\x2\x1F"+ @@ -462,959 +434,903 @@ public VBALexer(ICharStream input) "\x2\xD5\x1A9\x2\xD6\x1AB\x2\xD7\x1AD\x2\xD8\x1AF\x2\xD9\x1B1\x2\xDA\x1B3"+ "\x2\xDB\x1B5\x2\xDC\x1B7\x2\xDD\x1B9\x2\xDE\x1BB\x2\xDF\x1BD\x2\xE0\x1BF"+ "\x2\xE1\x1C1\x2\xE2\x1C3\x2\xE3\x1C5\x2\xE4\x1C7\x2\xE5\x1C9\x2\xE6\x1CB"+ - "\x2\xE7\x1CD\x2\xE8\x1CF\x2\xE9\x1D1\x2\xEA\x1D3\x2\xEB\x1D5\x2\xEC\x1D7"+ - "\x2\xED\x1D9\x2\xEE\x1DB\x2\xEF\x1DD\x2\xF0\x1DF\x2\xF1\x1E1\x2\xF2\x1E3"+ - "\x2\xF3\x1E5\x2\xF4\x1E7\x2\xF5\x1E9\x2\xF6\x1EB\x2\xF7\x1ED\x2\xF8\x1EF"+ - "\x2\x2\x1F1\x2\xF9\x1F3\x2\x2\x1F5\x2\x2\x1F7\x2\x2\x1F9\x2\x2\x1FB\x2"+ - "\x2\x1FD\x2\x2\x1FF\x2\xFA\x201\x2\x2\x203\x2\x2\x205\x2\x2\x207\x2\x2"+ - "\x209\x2\x2\x20B\x2\x2\x20D\x2\x2\x20F\x2\x2\x211\x2\x2\x213\x2\x2\x215"+ - "\x2\x2\x217\x2\x2\x219\x2\x2\x21B\x2\x2\x21D\x2\x2\x21F\x2\x2\x221\x2"+ - "\x2\x223\x2\x2\x225\x2\x2\x227\x2\x2\x229\x2\x2\x22B\x2\x2\x22D\x2\x2"+ - "\x22F\x2\x2\x231\x2\x2\x233\x2\x2\x235\x2\x2\x237\x2\x2\x239\x2\x2\x23B"+ - "\x2\x2\x23D\x2\x2\x23F\x2\x2\x241\x2\x2\x243\x2\xFB\x245\x2\xFC\x247\x2"+ - "\xFD\x249\x2\xFE\x24B\x2\xFF\x24D\x2\x100\x24F\x2\x101\x251\x2\x102\x253"+ - "\x2\x103\x255\x2\x2\x257\x2\x2\x259\x2\x2\x25B\x2\x2\x25D\x2\x2\x25F\x2"+ - "\x2\x261\x2\x2\x263\x2\x2\x265\x2\x2\x267\x2\x2\x269\x2\x2\x26B\x2\x2"+ - "\x26D\x2\x2\x26F\x2\x2\x271\x2\x2\x273\x2\x2\x275\x2\x2\x277\x2\x2\x279"+ - "\x2\x2\x27B\x2\x2\x27D\x2\x2\x27F\x2\x2\x281\x2\x2\x283\x2\x2\x285\x2"+ - "\x2\x287\x2\x2\x289\x2\x2\x28B\x2\x2\x28D\x2\x2\x28F\x2\x104\x3\x2.\x5"+ - "\x2\f\f\xF\xF$$\x3\x2\x32:\x4\x2\x32;\x43H\x4\x2\'(``\x5\x2##%%\x42\x42"+ - "\x4\x2\x46G\x66g\x4\x2--//\x4\x2./\x31\x31\x4\x2\x30\x30<<\x5\x2\f\f\xF"+ - "\xF\x202A\x202B\x6\x2\f\f\xF\xF\x42\x42\x202A\x202B\x4\x2\v\v\"\"\t\x2"+ - "\v\f\xF\xF\"=??\x42\x42]`~~\v\x2\v\f\xF\xF\".\x30\x30<=??\x42\x42]`~~"+ - "\x6\x2\f\f\xF\xF##^_\f\x2\x43\\\x61\x61\x63|\xA6\xA6\xB8\xB8\xBE\xBE\xC5"+ - "\xC5\x155\x155\x2015\x2015\x2020\x2020\x3\x2\x32;\r\x2\x32;\x43\\\x61"+ - "\x61\x63|\xA6\xA6\xB8\xB8\xBE\xBE\xC5\xC5\x155\x155\x2015\x2015\x2020"+ - "\x2020\x4\x2\x43\x43\x63\x63\x4\x2\x44\x44\x64\x64\x4\x2\x45\x45\x65\x65"+ - "\x4\x2\x46\x46\x66\x66\x4\x2GGgg\x4\x2HHhh\x4\x2IIii\x4\x2JJjj\x4\x2K"+ - "Kkk\x4\x2LLll\x4\x2MMmm\x4\x2NNnn\x4\x2OOoo\x4\x2PPpp\x4\x2QQqq\x4\x2"+ - "RRrr\x4\x2SSss\x4\x2TTtt\x4\x2UUuu\x4\x2VVvv\x4\x2WWww\x4\x2XXxx\x4\x2"+ - "YYyy\x4\x2ZZzz\x4\x2[[{{\x4\x2\\\\||\xAC5\x2\x3\x3\x2\x2\x2\x2\x5\x3\x2"+ - "\x2\x2\x2\a\x3\x2\x2\x2\x2\t\x3\x2\x2\x2\x2\v\x3\x2\x2\x2\x2\r\x3\x2\x2"+ - "\x2\x2\xF\x3\x2\x2\x2\x2\x11\x3\x2\x2\x2\x2\x13\x3\x2\x2\x2\x2\x15\x3"+ - "\x2\x2\x2\x2\x17\x3\x2\x2\x2\x2\x19\x3\x2\x2\x2\x2\x1B\x3\x2\x2\x2\x2"+ - "\x1D\x3\x2\x2\x2\x2\x1F\x3\x2\x2\x2\x2!\x3\x2\x2\x2\x2#\x3\x2\x2\x2\x2"+ - "%\x3\x2\x2\x2\x2\'\x3\x2\x2\x2\x2)\x3\x2\x2\x2\x2+\x3\x2\x2\x2\x2-\x3"+ - "\x2\x2\x2\x2/\x3\x2\x2\x2\x2\x31\x3\x2\x2\x2\x2\x33\x3\x2\x2\x2\x2\x35"+ - "\x3\x2\x2\x2\x2\x37\x3\x2\x2\x2\x2\x39\x3\x2\x2\x2\x2;\x3\x2\x2\x2\x2"+ - "=\x3\x2\x2\x2\x2?\x3\x2\x2\x2\x2\x41\x3\x2\x2\x2\x2\x43\x3\x2\x2\x2\x2"+ - "\x45\x3\x2\x2\x2\x2G\x3\x2\x2\x2\x2I\x3\x2\x2\x2\x2K\x3\x2\x2\x2\x2M\x3"+ - "\x2\x2\x2\x2O\x3\x2\x2\x2\x2Q\x3\x2\x2\x2\x2S\x3\x2\x2\x2\x2U\x3\x2\x2"+ - "\x2\x2W\x3\x2\x2\x2\x2Y\x3\x2\x2\x2\x2[\x3\x2\x2\x2\x2]\x3\x2\x2\x2\x2"+ - "_\x3\x2\x2\x2\x2\x61\x3\x2\x2\x2\x2\x63\x3\x2\x2\x2\x2\x65\x3\x2\x2\x2"+ - "\x2g\x3\x2\x2\x2\x2i\x3\x2\x2\x2\x2k\x3\x2\x2\x2\x2m\x3\x2\x2\x2\x2o\x3"+ - "\x2\x2\x2\x2q\x3\x2\x2\x2\x2s\x3\x2\x2\x2\x2u\x3\x2\x2\x2\x2w\x3\x2\x2"+ - "\x2\x2y\x3\x2\x2\x2\x2{\x3\x2\x2\x2\x2}\x3\x2\x2\x2\x2\x7F\x3\x2\x2\x2"+ - "\x2\x81\x3\x2\x2\x2\x2\x83\x3\x2\x2\x2\x2\x85\x3\x2\x2\x2\x2\x87\x3\x2"+ - "\x2\x2\x2\x89\x3\x2\x2\x2\x2\x8B\x3\x2\x2\x2\x2\x8D\x3\x2\x2\x2\x2\x8F"+ - "\x3\x2\x2\x2\x2\x91\x3\x2\x2\x2\x2\x93\x3\x2\x2\x2\x2\x95\x3\x2\x2\x2"+ - "\x2\x97\x3\x2\x2\x2\x2\x99\x3\x2\x2\x2\x2\x9B\x3\x2\x2\x2\x2\x9D\x3\x2"+ - "\x2\x2\x2\x9F\x3\x2\x2\x2\x2\xA1\x3\x2\x2\x2\x2\xA3\x3\x2\x2\x2\x2\xA5"+ - "\x3\x2\x2\x2\x2\xA7\x3\x2\x2\x2\x2\xA9\x3\x2\x2\x2\x2\xAB\x3\x2\x2\x2"+ - "\x2\xAD\x3\x2\x2\x2\x2\xAF\x3\x2\x2\x2\x2\xB1\x3\x2\x2\x2\x2\xB3\x3\x2"+ - "\x2\x2\x2\xB5\x3\x2\x2\x2\x2\xB7\x3\x2\x2\x2\x2\xB9\x3\x2\x2\x2\x2\xBB"+ - "\x3\x2\x2\x2\x2\xBD\x3\x2\x2\x2\x2\xBF\x3\x2\x2\x2\x2\xC1\x3\x2\x2\x2"+ - "\x2\xC3\x3\x2\x2\x2\x2\xC5\x3\x2\x2\x2\x2\xC7\x3\x2\x2\x2\x2\xC9\x3\x2"+ - "\x2\x2\x2\xCB\x3\x2\x2\x2\x2\xCD\x3\x2\x2\x2\x2\xCF\x3\x2\x2\x2\x2\xD1"+ - "\x3\x2\x2\x2\x2\xD3\x3\x2\x2\x2\x2\xD5\x3\x2\x2\x2\x2\xD7\x3\x2\x2\x2"+ - "\x2\xD9\x3\x2\x2\x2\x2\xDB\x3\x2\x2\x2\x2\xDD\x3\x2\x2\x2\x2\xDF\x3\x2"+ - "\x2\x2\x2\xE1\x3\x2\x2\x2\x2\xE3\x3\x2\x2\x2\x2\xE5\x3\x2\x2\x2\x2\xE7"+ - "\x3\x2\x2\x2\x2\xE9\x3\x2\x2\x2\x2\xEB\x3\x2\x2\x2\x2\xED\x3\x2\x2\x2"+ - "\x2\xEF\x3\x2\x2\x2\x2\xF1\x3\x2\x2\x2\x2\xF3\x3\x2\x2\x2\x2\xF5\x3\x2"+ - "\x2\x2\x2\xF7\x3\x2\x2\x2\x2\xF9\x3\x2\x2\x2\x2\xFB\x3\x2\x2\x2\x2\xFD"+ - "\x3\x2\x2\x2\x2\xFF\x3\x2\x2\x2\x2\x101\x3\x2\x2\x2\x2\x103\x3\x2\x2\x2"+ - "\x2\x105\x3\x2\x2\x2\x2\x107\x3\x2\x2\x2\x2\x109\x3\x2\x2\x2\x2\x10B\x3"+ - "\x2\x2\x2\x2\x10D\x3\x2\x2\x2\x2\x10F\x3\x2\x2\x2\x2\x111\x3\x2\x2\x2"+ - "\x2\x113\x3\x2\x2\x2\x2\x115\x3\x2\x2\x2\x2\x117\x3\x2\x2\x2\x2\x119\x3"+ - "\x2\x2\x2\x2\x11B\x3\x2\x2\x2\x2\x11D\x3\x2\x2\x2\x2\x11F\x3\x2\x2\x2"+ - "\x2\x121\x3\x2\x2\x2\x2\x123\x3\x2\x2\x2\x2\x125\x3\x2\x2\x2\x2\x127\x3"+ - "\x2\x2\x2\x2\x129\x3\x2\x2\x2\x2\x12B\x3\x2\x2\x2\x2\x12D\x3\x2\x2\x2"+ - "\x2\x12F\x3\x2\x2\x2\x2\x131\x3\x2\x2\x2\x2\x133\x3\x2\x2\x2\x2\x135\x3"+ - "\x2\x2\x2\x2\x137\x3\x2\x2\x2\x2\x139\x3\x2\x2\x2\x2\x13B\x3\x2\x2\x2"+ - "\x2\x13D\x3\x2\x2\x2\x2\x13F\x3\x2\x2\x2\x2\x141\x3\x2\x2\x2\x2\x143\x3"+ - "\x2\x2\x2\x2\x145\x3\x2\x2\x2\x2\x147\x3\x2\x2\x2\x2\x149\x3\x2\x2\x2"+ - "\x2\x14B\x3\x2\x2\x2\x2\x14D\x3\x2\x2\x2\x2\x14F\x3\x2\x2\x2\x2\x151\x3"+ - "\x2\x2\x2\x2\x153\x3\x2\x2\x2\x2\x155\x3\x2\x2\x2\x2\x157\x3\x2\x2\x2"+ - "\x2\x159\x3\x2\x2\x2\x2\x15B\x3\x2\x2\x2\x2\x15D\x3\x2\x2\x2\x2\x15F\x3"+ - "\x2\x2\x2\x2\x161\x3\x2\x2\x2\x2\x163\x3\x2\x2\x2\x2\x165\x3\x2\x2\x2"+ - "\x2\x167\x3\x2\x2\x2\x2\x169\x3\x2\x2\x2\x2\x16B\x3\x2\x2\x2\x2\x16D\x3"+ - "\x2\x2\x2\x2\x16F\x3\x2\x2\x2\x2\x171\x3\x2\x2\x2\x2\x173\x3\x2\x2\x2"+ - "\x2\x175\x3\x2\x2\x2\x2\x177\x3\x2\x2\x2\x2\x179\x3\x2\x2\x2\x2\x17B\x3"+ - "\x2\x2\x2\x2\x17D\x3\x2\x2\x2\x2\x17F\x3\x2\x2\x2\x2\x181\x3\x2\x2\x2"+ - "\x2\x183\x3\x2\x2\x2\x2\x185\x3\x2\x2\x2\x2\x187\x3\x2\x2\x2\x2\x189\x3"+ - "\x2\x2\x2\x2\x18B\x3\x2\x2\x2\x2\x18D\x3\x2\x2\x2\x2\x18F\x3\x2\x2\x2"+ - "\x2\x191\x3\x2\x2\x2\x2\x193\x3\x2\x2\x2\x2\x195\x3\x2\x2\x2\x2\x197\x3"+ - "\x2\x2\x2\x2\x199\x3\x2\x2\x2\x2\x19B\x3\x2\x2\x2\x2\x19D\x3\x2\x2\x2"+ - "\x2\x19F\x3\x2\x2\x2\x2\x1A1\x3\x2\x2\x2\x2\x1A3\x3\x2\x2\x2\x2\x1A5\x3"+ - "\x2\x2\x2\x2\x1A7\x3\x2\x2\x2\x2\x1A9\x3\x2\x2\x2\x2\x1AB\x3\x2\x2\x2"+ - "\x2\x1AD\x3\x2\x2\x2\x2\x1AF\x3\x2\x2\x2\x2\x1B1\x3\x2\x2\x2\x2\x1B3\x3"+ - "\x2\x2\x2\x2\x1B5\x3\x2\x2\x2\x2\x1B7\x3\x2\x2\x2\x2\x1B9\x3\x2\x2\x2"+ - "\x2\x1BB\x3\x2\x2\x2\x2\x1BD\x3\x2\x2\x2\x2\x1BF\x3\x2\x2\x2\x2\x1C1\x3"+ - "\x2\x2\x2\x2\x1C3\x3\x2\x2\x2\x2\x1C5\x3\x2\x2\x2\x2\x1C7\x3\x2\x2\x2"+ - "\x2\x1C9\x3\x2\x2\x2\x2\x1CB\x3\x2\x2\x2\x2\x1CD\x3\x2\x2\x2\x2\x1CF\x3"+ - "\x2\x2\x2\x2\x1D1\x3\x2\x2\x2\x2\x1D3\x3\x2\x2\x2\x2\x1D5\x3\x2\x2\x2"+ - "\x2\x1D7\x3\x2\x2\x2\x2\x1D9\x3\x2\x2\x2\x2\x1DB\x3\x2\x2\x2\x2\x1DD\x3"+ - "\x2\x2\x2\x2\x1DF\x3\x2\x2\x2\x2\x1E1\x3\x2\x2\x2\x2\x1E3\x3\x2\x2\x2"+ - "\x2\x1E5\x3\x2\x2\x2\x2\x1E7\x3\x2\x2\x2\x2\x1E9\x3\x2\x2\x2\x2\x1EB\x3"+ - "\x2\x2\x2\x2\x1ED\x3\x2\x2\x2\x2\x1F1\x3\x2\x2\x2\x2\x1FF\x3\x2\x2\x2"+ - "\x2\x243\x3\x2\x2\x2\x2\x245\x3\x2\x2\x2\x2\x247\x3\x2\x2\x2\x2\x249\x3"+ - "\x2\x2\x2\x2\x24B\x3\x2\x2\x2\x2\x24D\x3\x2\x2\x2\x2\x24F\x3\x2\x2\x2"+ - "\x2\x251\x3\x2\x2\x2\x2\x253\x3\x2\x2\x2\x2\x28F\x3\x2\x2\x2\x3\x291\x3"+ - "\x2\x2\x2\x5\x295\x3\x2\x2\x2\a\x299\x3\x2\x2\x2\t\x29F\x3\x2\x2\x2\v"+ - "\x2A5\x3\x2\x2\x2\r\x2AB\x3\x2\x2\x2\xF\x2B0\x3\x2\x2\x2\x11\x2B6\x3\x2"+ - "\x2\x2\x13\x2BB\x3\x2\x2\x2\x15\x2C0\x3\x2\x2\x2\x17\x2C5\x3\x2\x2\x2"+ - "\x19\x2CC\x3\x2\x2\x2\x1B\x2D1\x3\x2\x2\x2\x1D\x2D9\x3\x2\x2\x2\x1F\x2E1"+ - "\x3\x2\x2\x2!\x2E6\x3\x2\x2\x2#\x2EB\x3\x2\x2\x2%\x2F4\x3\x2\x2\x2\'\x2F9"+ - "\x3\x2\x2\x2)\x2FF\x3\x2\x2\x2+\x305\x3\x2\x2\x2-\x30E\x3\x2\x2\x2/\x313"+ - "\x3\x2\x2\x2\x31\x317\x3\x2\x2\x2\x33\x31E\x3\x2\x2\x2\x35\x322\x3\x2"+ - "\x2\x2\x37\x329\x3\x2\x2\x2\x39\x32D\x3\x2\x2\x2;\x332\x3\x2\x2\x2=\x33B"+ - "\x3\x2\x2\x2?\x343\x3\x2\x2\x2\x41\x348\x3\x2\x2\x2\x43\x34E\x3\x2\x2"+ - "\x2\x45\x353\x3\x2\x2\x2G\x35A\x3\x2\x2\x2I\x35F\x3\x2\x2\x2K\x365\x3"+ - "\x2\x2\x2M\x369\x3\x2\x2\x2O\x370\x3\x2\x2\x2Q\x372\x3\x2\x2\x2S\x374"+ - "\x3\x2\x2\x2U\x376\x3\x2\x2\x2W\x378\x3\x2\x2\x2Y\x37A\x3\x2\x2\x2[\x37C"+ - "\x3\x2\x2\x2]\x37E\x3\x2\x2\x2_\x380\x3\x2\x2\x2\x61\x382\x3\x2\x2\x2"+ - "\x63\x384\x3\x2\x2\x2\x65\x38B\x3\x2\x2\x2g\x395\x3\x2\x2\x2i\x39B\x3"+ - "\x2\x2\x2k\x39F\x3\x2\x2\x2m\x3A9\x3\x2\x2\x2o\x3B5\x3\x2\x2\x2q\x3BC"+ - "\x3\x2\x2\x2s\x3BF\x3\x2\x2\x2u\x3C5\x3\x2\x2\x2w\x3CA\x3\x2\x2\x2y\x3D1"+ - "\x3\x2\x2\x2{\x3D9\x3\x2\x2\x2}\x3DF\x3\x2\x2\x2\x7F\x3E5\x3\x2\x2\x2"+ - "\x81\x3EA\x3\x2\x2\x2\x83\x3EF\x3\x2\x2\x2\x85\x3F4\x3\x2\x2\x2\x87\x3FA"+ - "\x3\x2\x2\x2\x89\x402\x3\x2\x2\x2\x8B\x408\x3\x2\x2\x2\x8D\x40E\x3\x2"+ - "\x2\x2\x8F\x414\x3\x2\x2\x2\x91\x41D\x3\x2\x2\x2\x93\x422\x3\x2\x2\x2"+ - "\x95\x42A\x3\x2\x2\x2\x97\x432\x3\x2\x2\x2\x99\x43A\x3\x2\x2\x2\x9B\x442"+ - "\x3\x2\x2\x2\x9D\x449\x3\x2\x2\x2\x9F\x450\x3\x2\x2\x2\xA1\x457\x3\x2"+ - "\x2\x2\xA3\x45E\x3\x2\x2\x2\xA5\x468\x3\x2\x2\x2\xA7\x472\x3\x2\x2\x2"+ - "\xA9\x479\x3\x2\x2\x2\xAB\x480\x3\x2\x2\x2\xAD\x487\x3\x2\x2\x2\xAF\x48E"+ - "\x3\x2\x2\x2\xB1\x49C\x3\x2\x2\x2\xB3\x4A0\x3\x2\x2\x2\xB5\x4A3\x3\x2"+ - "\x2\x2\xB7\x4AA\x3\x2\x2\x2\xB9\x4AF\x3\x2\x2\x2\xBB\x4B4\x3\x2\x2\x2"+ - "\xBD\x4BB\x3\x2\x2\x2\xBF\x4C1\x3\x2\x2\x2\xC1\x4CA\x3\x2\x2\x2\xC3\x4D7"+ - "\x3\x2\x2\x2\xC5\x4DE\x3\x2\x2\x2\xC7\x4EB\x3\x2\x2\x2\xC9\x4F6\x3\x2"+ - "\x2\x2\xCB\x4FE\x3\x2\x2\x2\xCD\x507\x3\x2\x2\x2\xCF\x510\x3\x2\x2\x2"+ - "\xD1\x514\x3\x2\x2\x2\xD3\x519\x3\x2\x2\x2\xD5\x51D\x3\x2\x2\x2\xD7\x523"+ - "\x3\x2\x2\x2\xD9\x529\x3\x2\x2\x2\xDB\x52F\x3\x2\x2\x2\xDD\x537\x3\x2"+ - "\x2\x2\xDF\x540\x3\x2\x2\x2\xE1\x54E\x3\x2\x2\x2\xE3\x55C\x3\x2\x2\x2"+ - "\xE5\x565\x3\x2\x2\x2\xE7\x56B\x3\x2\x2\x2\xE9\x574\x3\x2\x2\x2\xEB\x57B"+ - "\x3\x2\x2\x2\xED\x57F\x3\x2\x2\x2\xEF\x588\x3\x2\x2\x2\xF1\x58C\x3\x2"+ - "\x2\x2\xF3\x593\x3\x2\x2\x2\xF5\x599\x3\x2\x2\x2\xF7\x59E\x3\x2\x2\x2"+ - "\xF9\x5A1\x3\x2\x2\x2\xFB\x5A5\x3\x2\x2\x2\xFD\x5B0\x3\x2\x2\x2\xFF\x5B3"+ - "\x3\x2\x2\x2\x101\x5B9\x3\x2\x2\x2\x103\x5BC\x3\x2\x2\x2\x105\x5C4\x3"+ - "\x2\x2\x2\x107\x5C9\x3\x2\x2\x2\x109\x5CE\x3\x2\x2\x2\x10B\x5D3\x3\x2"+ - "\x2\x2\x10D\x5D8\x3\x2\x2\x2\x10F\x5DD\x3\x2\x2\x2\x111\x5E1\x3\x2\x2"+ - "\x2\x113\x5E5\x3\x2\x2\x2\x115\x5EA\x3\x2\x2\x2\x117\x5F5\x3\x2\x2\x2"+ - "\x119\x5FF\x3\x2\x2\x2\x11B\x60A\x3\x2\x2\x2\x11D\x61A\x3\x2\x2\x2\x11F"+ - "\x61F\x3\x2\x2\x2\x121\x622\x3\x2\x2\x2\x123\x626\x3\x2\x2\x2\x125\x62C"+ - "\x3\x2\x2\x2\x127\x630\x3\x2\x2\x2\x129\x635\x3\x2\x2\x2\x12B\x63A\x3"+ - "\x2\x2\x2\x12D\x63E\x3\x2\x2\x2\x12F\x642\x3\x2\x2\x2\x131\x64A\x3\x2"+ - "\x2\x2\x133\x64F\x3\x2\x2\x2\x135\x652\x3\x2\x2\x2\x137\x65B\x3\x2\x2"+ - "\x2\x139\x66A\x3\x2\x2\x2\x13B\x66F\x3\x2\x2\x2\x13D\x678\x3\x2\x2\x2"+ - "\x13F\x684\x3\x2\x2\x2\x141\x694\x3\x2\x2\x2\x143\x6A3\x3\x2\x2\x2\x145"+ - "\x6B9\x3\x2\x2\x2\x147\x6BC\x3\x2\x2\x2\x149\x6C3\x3\x2\x2\x2\x14B\x6CE"+ - "\x3\x2\x2\x2\x14D\x6D7\x3\x2\x2\x2\x14F\x6DD\x3\x2\x2\x2\x151\x6E5\x3"+ - "\x2\x2\x2\x153\x6F2\x3\x2\x2\x2\x155\x6FF\x3\x2\x2\x2\x157\x70C\x3\x2"+ - "\x2\x2\x159\x714\x3\x2\x2\x2\x15B\x71B\x3\x2\x2\x2\x15D\x71F\x3\x2\x2"+ - "\x2\x15F\x726\x3\x2\x2\x2\x161\x730\x3\x2\x2\x2\x163\x73B\x3\x2\x2\x2"+ - "\x165\x740\x3\x2\x2\x2\x167\x74B\x3\x2\x2\x2\x169\x751\x3\x2\x2\x2\x16B"+ - "\x755\x3\x2\x2\x2\x16D\x75B\x3\x2\x2\x2\x16F\x762\x3\x2\x2\x2\x171\x769"+ - "\x3\x2\x2\x2\x173\x76F\x3\x2\x2\x2\x175\x774\x3\x2\x2\x2\x177\x780\x3"+ - "\x2\x2\x2\x179\x78C\x3\x2\x2\x2\x17B\x791\x3\x2\x2\x2\x17D\x798\x3\x2"+ - "\x2\x2\x17F\x7A1\x3\x2\x2\x2\x181\x7A5\x3\x2\x2\x2\x183\x7AD\x3\x2\x2"+ - "\x2\x185\x7B4\x3\x2\x2\x2\x187\x7BB\x3\x2\x2\x2\x189\x7BF\x3\x2\x2\x2"+ - "\x18B\x7C6\x3\x2\x2\x2\x18D\x7CB\x3\x2\x2\x2\x18F\x7D0\x3\x2\x2\x2\x191"+ - "\x7D7\x3\x2\x2\x2\x193\x7DB\x3\x2\x2\x2\x195\x7DF\x3\x2\x2\x2\x197\x7E4"+ - "\x3\x2\x2\x2\x199\x7E9\x3\x2\x2\x2\x19B\x7EE\x3\x2\x2\x2\x19D\x7F1\x3"+ - "\x2\x2\x2\x19F\x7F6\x3\x2\x2\x2\x1A1\x7FB\x3\x2\x2\x2\x1A3\x802\x3\x2"+ - "\x2\x2\x1A5\x809\x3\x2\x2\x2\x1A7\x810\x3\x2\x2\x2\x1A9\x816\x3\x2\x2"+ - "\x2\x1AB\x81E\x3\x2\x2\x2\x1AD\x826\x3\x2\x2\x2\x1AF\x82B\x3\x2\x2\x2"+ - "\x1B1\x831\x3\x2\x2\x2\x1B3\x837\x3\x2\x2\x2\x1B5\x83C\x3\x2\x2\x2\x1B7"+ - "\x847\x3\x2\x2\x2\x1B9\x84D\x3\x2\x2\x2\x1BB\x851\x3\x2\x2\x2\x1BD\x854"+ - "\x3\x2\x2\x2\x1BF\x856\x3\x2\x2\x2\x1C1\x858\x3\x2\x2\x2\x1C3\x85E\x3"+ - "\x2\x2\x2\x1C5\x860\x3\x2\x2\x2\x1C7\x866\x3\x2\x2\x2\x1C9\x868\x3\x2"+ - "\x2\x2\x1CB\x86A\x3\x2\x2\x2\x1CD\x86C\x3\x2\x2\x2\x1CF\x86E\x3\x2\x2"+ - "\x2\x1D1\x874\x3\x2\x2\x2\x1D3\x876\x3\x2\x2\x2\x1D5\x878\x3\x2\x2\x2"+ - "\x1D7\x87A\x3\x2\x2\x2\x1D9\x87F\x3\x2\x2\x2\x1DB\x888\x3\x2\x2\x2\x1DD"+ - "\x892\x3\x2\x2\x2\x1DF\x8A0\x3\x2\x2\x2\x1E1\x8AC\x3\x2\x2\x2\x1E3\x8BC"+ - "\x3\x2\x2\x2\x1E5\x8BE\x3\x2\x2\x2\x1E7\x8C0\x3\x2\x2\x2\x1E9\x8CB\x3"+ - "\x2\x2\x2\x1EB\x8D6\x3\x2\x2\x2\x1ED\x8E8\x3\x2\x2\x2\x1EF\x8FA\x3\x2"+ - "\x2\x2\x1F1\x8FC\x3\x2\x2\x2\x1F3\x900\x3\x2\x2\x2\x1F5\x902\x3\x2\x2"+ - "\x2\x1F7\x904\x3\x2\x2\x2\x1F9\x90D\x3\x2\x2\x2\x1FB\x90F\x3\x2\x2\x2"+ - "\x1FD\x912\x3\x2\x2\x2\x1FF\x916\x3\x2\x2\x2\x201\x922\x3\x2\x2\x2\x203"+ - "\x924\x3\x2\x2\x2\x205\x932\x3\x2\x2\x2\x207\x935\x3\x2\x2\x2\x209\x93F"+ - "\x3\x2\x2\x2\x20B\x94D\x3\x2\x2\x2\x20D\x95A\x3\x2\x2\x2\x20F\x979\x3"+ - "\x2\x2\x2\x211\x97C\x3\x2\x2\x2\x213\x983\x3\x2\x2\x2\x215\x98F\x3\x2"+ - "\x2\x2\x217\x997\x3\x2\x2\x2\x219\x9A0\x3\x2\x2\x2\x21B\x9A6\x3\x2\x2"+ - "\x2\x21D\x9AC\x3\x2\x2\x2\x21F\x9B0\x3\x2\x2\x2\x221\x9B5\x3\x2\x2\x2"+ - "\x223\x9BA\x3\x2\x2\x2\x225\x9C1\x3\x2\x2\x2\x227\x9CB\x3\x2\x2\x2\x229"+ - "\x9D3\x3\x2\x2\x2\x22B\x9DC\x3\x2\x2\x2\x22D\x9E5\x3\x2\x2\x2\x22F\x9E9"+ - "\x3\x2\x2\x2\x231\x9ED\x3\x2\x2\x2\x233\x9F1\x3\x2\x2\x2\x235\x9F5\x3"+ - "\x2\x2\x2\x237\x9F9\x3\x2\x2\x2\x239\x9FD\x3\x2\x2\x2\x23B\xA01\x3\x2"+ - "\x2\x2\x23D\xA05\x3\x2\x2\x2\x23F\xA09\x3\x2\x2\x2\x241\xA0D\x3\x2\x2"+ - "\x2\x243\xA14\x3\x2\x2\x2\x245\xA17\x3\x2\x2\x2\x247\xA22\x3\x2\x2\x2"+ - "\x249\xA2E\x3\x2\x2\x2\x24B\xA30\x3\x2\x2\x2\x24D\xA32\x3\x2\x2\x2\x24F"+ - "\xA43\x3\x2\x2\x2\x251\xA48\x3\x2\x2\x2\x253\xA57\x3\x2\x2\x2\x255\xA77"+ - "\x3\x2\x2\x2\x257\xA79\x3\x2\x2\x2\x259\xA7B\x3\x2\x2\x2\x25B\xA7D\x3"+ - "\x2\x2\x2\x25D\xA7F\x3\x2\x2\x2\x25F\xA81\x3\x2\x2\x2\x261\xA83\x3\x2"+ - "\x2\x2\x263\xA85\x3\x2\x2\x2\x265\xA87\x3\x2\x2\x2\x267\xA89\x3\x2\x2"+ - "\x2\x269\xA8B\x3\x2\x2\x2\x26B\xA8D\x3\x2\x2\x2\x26D\xA8F\x3\x2\x2\x2"+ - "\x26F\xA91\x3\x2\x2\x2\x271\xA93\x3\x2\x2\x2\x273\xA95\x3\x2\x2\x2\x275"+ - "\xA97\x3\x2\x2\x2\x277\xA99\x3\x2\x2\x2\x279\xA9B\x3\x2\x2\x2\x27B\xA9D"+ - "\x3\x2\x2\x2\x27D\xA9F\x3\x2\x2\x2\x27F\xAA1\x3\x2\x2\x2\x281\xAA3\x3"+ - "\x2\x2\x2\x283\xAA5\x3\x2\x2\x2\x285\xAA7\x3\x2\x2\x2\x287\xAA9\x3\x2"+ - "\x2\x2\x289\xAAB\x3\x2\x2\x2\x28B\xAAD\x3\x2\x2\x2\x28D\xAAF\x3\x2\x2"+ - "\x2\x28F\xAB1\x3\x2\x2\x2\x291\x292\x5\x25B\x12E\x2\x292\x293\x5\x25D"+ - "\x12F\x2\x293\x294\x5\x27F\x140\x2\x294\x4\x3\x2\x2\x2\x295\x296\x5\x25B"+ - "\x12E\x2\x296\x297\x5\x275\x13B\x2\x297\x298\x5\x28B\x146\x2\x298\x6\x3"+ - "\x2\x2\x2\x299\x29A\x5\x25B\x12E\x2\x29A\x29B\x5\x27D\x13F\x2\x29B\x29C"+ - "\x5\x27D\x13F\x2\x29C\x29D\x5\x25B\x12E\x2\x29D\x29E\x5\x28B\x146\x2\x29E"+ - "\b\x3\x2\x2\x2\x29F\x2A0\x5\x25F\x130\x2\x2A0\x2A1\x5\x25D\x12F\x2\x2A1"+ - "\x2A2\x5\x277\x13C\x2\x2A2\x2A3\x5\x277\x13C\x2\x2A3\x2A4\x5\x271\x139"+ - "\x2\x2A4\n\x3\x2\x2\x2\x2A5\x2A6\x5\x25F\x130\x2\x2A6\x2A7\x5\x25D\x12F"+ - "\x2\x2A7\x2A8\x5\x28B\x146\x2\x2A8\x2A9\x5\x281\x141\x2\x2A9\x2AA\x5\x263"+ - "\x132\x2\x2AA\f\x3\x2\x2\x2\x2AB\x2AC\x5\x25F\x130\x2\x2AC\x2AD\x5\x25F"+ - "\x130\x2\x2AD\x2AE\x5\x283\x142\x2\x2AE\x2AF\x5\x27D\x13F\x2\x2AF\xE\x3"+ - "\x2\x2\x2\x2B0\x2B1\x5\x25F\x130\x2\x2B1\x2B2\x5\x261\x131\x2\x2B2\x2B3"+ - "\x5\x25B\x12E\x2\x2B3\x2B4\x5\x281\x141\x2\x2B4\x2B5\x5\x263\x132\x2\x2B5"+ - "\x10\x3\x2\x2\x2\x2B6\x2B7\x5\x25F\x130\x2\x2B7\x2B8\x5\x261\x131\x2\x2B8"+ - "\x2B9\x5\x25D\x12F\x2\x2B9\x2BA\x5\x271\x139\x2\x2BA\x12\x3\x2\x2\x2\x2BB"+ - "\x2BC\x5\x25F\x130\x2\x2BC\x2BD\x5\x261\x131\x2\x2BD\x2BE\x5\x263\x132"+ - "\x2\x2BE\x2BF\x5\x25F\x130\x2\x2BF\x14\x3\x2\x2\x2\x2C0\x2C1\x5\x25F\x130"+ - "\x2\x2C1\x2C2\x5\x26B\x136\x2\x2C2\x2C3\x5\x275\x13B\x2\x2C3\x2C4\x5\x281"+ - "\x141\x2\x2C4\x16\x3\x2\x2\x2\x2C5\x2C6\x5\x25F\x130\x2\x2C6\x2C7\x5\x26B"+ - "\x136\x2\x2C7\x2C8\x5\x27D\x13F\x2\x2C8\x2C9\x5\x25F\x130\x2\x2C9\x2CA"+ - "\x5\x271\x139\x2\x2CA\x2CB\x5\x263\x132\x2\x2CB\x18\x3\x2\x2\x2\x2CC\x2CD"+ - "\x5\x25F\x130\x2\x2CD\x2CE\x5\x271\x139\x2\x2CE\x2CF\x5\x275\x13B\x2\x2CF"+ - "\x2D0\x5\x267\x134\x2\x2D0\x1A\x3\x2\x2\x2\x2D1\x2D2\x5\x25F\x130\x2\x2D2"+ - "\x2D3\x5\x271\x139\x2\x2D3\x2D4\x5\x275\x13B\x2\x2D4\x2D5\x5\x267\x134"+ - "\x2\x2D5\x2D6\x5\x271\x139\x2\x2D6\x2D7\x5\x275\x13B\x2\x2D7\x2D8\x5\x267"+ - "\x134\x2\x2D8\x1C\x3\x2\x2\x2\x2D9\x2DA\x5\x25F\x130\x2\x2DA\x2DB\x5\x271"+ - "\x139\x2\x2DB\x2DC\x5\x275\x13B\x2\x2DC\x2DD\x5\x267\x134\x2\x2DD\x2DE"+ - "\x5\x279\x13D\x2\x2DE\x2DF\x5\x281\x141\x2\x2DF\x2E0\x5\x27D\x13F\x2\x2E0"+ - "\x1E\x3\x2\x2\x2\x2E1\x2E2\x5\x25F\x130\x2\x2E2\x2E3\x5\x27F\x140\x2\x2E3"+ - "\x2E4\x5\x275\x13B\x2\x2E4\x2E5\x5\x267\x134\x2\x2E5 \x3\x2\x2\x2\x2E6"+ - "\x2E7\x5\x25F\x130\x2\x2E7\x2E8\x5\x27F\x140\x2\x2E8\x2E9\x5\x281\x141"+ - "\x2\x2E9\x2EA\x5\x27D\x13F\x2\x2EA\"\x3\x2\x2\x2\x2EB\x2EC\x5\x25F\x130"+ - "\x2\x2EC\x2ED\x5\x283\x142\x2\x2ED\x2EE\x5\x27D\x13F\x2\x2EE\x2EF\x5\x27D"+ - "\x13F\x2\x2EF\x2F0\x5\x263\x132\x2\x2F0\x2F1\x5\x275\x13B\x2\x2F1\x2F2"+ - "\x5\x25F\x130\x2\x2F2\x2F3\x5\x28B\x146\x2\x2F3$\x3\x2\x2\x2\x2F4\x2F5"+ - "\x5\x25F\x130\x2\x2F5\x2F6\x5\x285\x143\x2\x2F6\x2F7\x5\x25B\x12E\x2\x2F7"+ - "\x2F8\x5\x27D\x13F\x2\x2F8&\x3\x2\x2\x2\x2F9\x2FA\x5\x25F\x130\x2\x2FA"+ - "\x2FB\x5\x285\x143\x2\x2FB\x2FC\x5\x263\x132\x2\x2FC\x2FD\x5\x27D\x13F"+ - "\x2\x2FD\x2FE\x5\x27D\x13F\x2\x2FE(\x3\x2\x2\x2\x2FF\x300\x5\x261\x131"+ - "\x2\x300\x301\x5\x263\x132\x2\x301\x302\x5\x25D\x12F\x2\x302\x303\x5\x283"+ - "\x142\x2\x303\x304\x5\x267\x134\x2\x304*\x3\x2\x2\x2\x305\x306\x5\x261"+ - "\x131\x2\x306\x307\x5\x277\x13C\x2\x307\x308\x5\x263\x132\x2\x308\x309"+ - "\x5\x285\x143\x2\x309\x30A\x5\x263\x132\x2\x30A\x30B\x5\x275\x13B\x2\x30B"+ - "\x30C\x5\x281\x141\x2\x30C\x30D\x5\x27F\x140\x2\x30D,\x3\x2\x2\x2\x30E"+ - "\x30F\x5\x263\x132\x2\x30F\x310\x5\x289\x145\x2\x310\x311\x5\x26B\x136"+ - "\x2\x311\x312\x5\x281\x141\x2\x312.\x3\x2\x2\x2\x313\x314\x5\x265\x133"+ - "\x2\x314\x315\x5\x26B\x136\x2\x315\x316\x5\x289\x145\x2\x316\x30\x3\x2"+ - "\x2\x2\x317\x318\x5\x26B\x136\x2\x318\x319\x5\x275\x13B\x2\x319\x31A\x5"+ - "\x279\x13D\x2\x31A\x31B\x5\x283\x142\x2\x31B\x31C\x5\x281\x141\x2\x31C"+ - "\x31D\x5\x25D\x12F\x2\x31D\x32\x3\x2\x2\x2\x31E\x31F\x5\x26B\x136\x2\x31F"+ - "\x320\x5\x275\x13B\x2\x320\x321\x5\x281\x141\x2\x321\x34\x3\x2\x2\x2\x322"+ - "\x323\x5\x271\x139\x2\x323\x324\x5\x25D\x12F\x2\x324\x325\x5\x277\x13C"+ - "\x2\x325\x326\x5\x283\x142\x2\x326\x327\x5\x275\x13B\x2\x327\x328\x5\x261"+ - "\x131\x2\x328\x36\x3\x2\x2\x2\x329\x32A\x5\x271\x139\x2\x32A\x32B\x5\x263"+ - "\x132\x2\x32B\x32C\x5\x275\x13B\x2\x32C\x38\x3\x2\x2\x2\x32D\x32E\x5\x271"+ - "\x139\x2\x32E\x32F\x5\x263\x132\x2\x32F\x330\x5\x275\x13B\x2\x330\x331"+ - "\x5\x25D\x12F\x2\x331:\x3\x2\x2\x2\x332\x333\x5\x271\x139\x2\x333\x334"+ - "\x5\x277\x13C\x2\x334\x335\x5\x275\x13B\x2\x335\x336\x5\x267\x134\x2\x336"+ - "\x337\x5\x271\x139\x2\x337\x338\x5\x277\x13C\x2\x338\x339\x5\x275\x13B"+ - "\x2\x339\x33A\x5\x267\x134\x2\x33A<\x3\x2\x2\x2\x33B\x33C\x5\x271\x139"+ - "\x2\x33C\x33D\x5\x277\x13C\x2\x33D\x33E\x5\x275\x13B\x2\x33E\x33F\x5\x267"+ - "\x134\x2\x33F\x340\x5\x279\x13D\x2\x340\x341\x5\x281\x141\x2\x341\x342"+ - "\x5\x27D\x13F\x2\x342>\x3\x2\x2\x2\x343\x344\x5\x273\x13A\x2\x344\x345"+ - "\x5\x26B\x136\x2\x345\x346\x5\x261\x131\x2\x346\x347\x5\x25D\x12F\x2\x347"+ - "@\x3\x2\x2\x2\x348\x349\x5\x273\x13A\x2\x349\x34A\x5\x26B\x136\x2\x34A"+ - "\x34B\x5\x261\x131\x2\x34B\x34C\x5\x25D\x12F\x2\x34C\x34D\a&\x2\x2\x34D"+ - "\x42\x3\x2\x2\x2\x34E\x34F\x5\x273\x13A\x2\x34F\x350\x5\x26B\x136\x2\x350"+ - "\x351\x5\x261\x131\x2\x351\x352\a&\x2\x2\x352\x44\x3\x2\x2\x2\x353\x354"+ - "\x5\x277\x13C\x2\x354\x355\x5\x279\x13D\x2\x355\x356\x5\x281\x141\x2\x356"+ - "\x357\x5\x26B\x136\x2\x357\x358\x5\x277\x13C\x2\x358\x359\x5\x275\x13B"+ - "\x2\x359\x46\x3\x2\x2\x2\x35A\x35B\x5\x279\x13D\x2\x35B\x35C\x5\x27F\x140"+ - "\x2\x35C\x35D\x5\x263\x132\x2\x35D\x35E\x5\x281\x141\x2\x35EH\x3\x2\x2"+ - "\x2\x35F\x360\x5\x27F\x140\x2\x360\x361\x5\x25F\x130\x2\x361\x362\x5\x25B"+ - "\x12E\x2\x362\x363\x5\x271\x139\x2\x363\x364\x5\x263\x132\x2\x364J\x3"+ - "\x2\x2\x2\x365\x366\x5\x27F\x140\x2\x366\x367\x5\x267\x134\x2\x367\x368"+ - "\x5\x275\x13B\x2\x368L\x3\x2\x2\x2\x369\x36A\x5\x283\x142\x2\x36A\x36B"+ - "\x5\x25D\x12F\x2\x36B\x36C\x5\x277\x13C\x2\x36C\x36D\x5\x283\x142\x2\x36D"+ - "\x36E\x5\x275\x13B\x2\x36E\x36F\x5\x261\x131\x2\x36FN\x3\x2\x2\x2\x370"+ - "\x371\a.\x2\x2\x371P\x3\x2\x2\x2\x372\x373\a<\x2\x2\x373R\x3\x2\x2\x2"+ - "\x374\x375\a=\x2\x2\x375T\x3\x2\x2\x2\x376\x377\a#\x2\x2\x377V\x3\x2\x2"+ - "\x2\x378\x379\a\x30\x2\x2\x379X\x3\x2\x2\x2\x37A\x37B\a%\x2\x2\x37BZ\x3"+ - "\x2\x2\x2\x37C\x37D\a\x42\x2\x2\x37D\\\x3\x2\x2\x2\x37E\x37F\a\'\x2\x2"+ - "\x37F^\x3\x2\x2\x2\x380\x381\a&\x2\x2\x381`\x3\x2\x2\x2\x382\x383\a(\x2"+ - "\x2\x383\x62\x3\x2\x2\x2\x384\x385\x5\x25B\x12E\x2\x385\x386\x5\x25F\x130"+ - "\x2\x386\x387\x5\x25F\x130\x2\x387\x388\x5\x263\x132\x2\x388\x389\x5\x27F"+ - "\x140\x2\x389\x38A\x5\x27F\x140\x2\x38A\x64\x3\x2\x2\x2\x38B\x38C\x5\x25B"+ - "\x12E\x2\x38C\x38D\x5\x261\x131\x2\x38D\x38E\x5\x261\x131\x2\x38E\x38F"+ - "\x5\x27D\x13F\x2\x38F\x390\x5\x263\x132\x2\x390\x391\x5\x27F\x140\x2\x391"+ - "\x392\x5\x27F\x140\x2\x392\x393\x5\x277\x13C\x2\x393\x394\x5\x265\x133"+ - "\x2\x394\x66\x3\x2\x2\x2\x395\x396\x5\x25B\x12E\x2\x396\x397\x5\x271\x139"+ - "\x2\x397\x398\x5\x26B\x136\x2\x398\x399\x5\x25B\x12E\x2\x399\x39A\x5\x27F"+ - "\x140\x2\x39Ah\x3\x2\x2\x2\x39B\x39C\x5\x25B\x12E\x2\x39C\x39D\x5\x275"+ - "\x13B\x2\x39D\x39E\x5\x261\x131\x2\x39Ej\x3\x2\x2\x2\x39F\x3A0\x5\x25B"+ - "\x12E\x2\x3A0\x3A1\x5\x281\x141\x2\x3A1\x3A2\x5\x281\x141\x2\x3A2\x3A3"+ - "\x5\x27D\x13F\x2\x3A3\x3A4\x5\x26B\x136\x2\x3A4\x3A5\x5\x25D\x12F\x2\x3A5"+ - "\x3A6\x5\x283\x142\x2\x3A6\x3A7\x5\x281\x141\x2\x3A7\x3A8\x5\x263\x132"+ - "\x2\x3A8l\x3\x2\x2\x2\x3A9\x3AA\x5\x25B\x12E\x2\x3AA\x3AB\x5\x279\x13D"+ - "\x2\x3AB\x3AC\x5\x279\x13D\x2\x3AC\x3AD\x5\x25B\x12E\x2\x3AD\x3AE\x5\x25F"+ - "\x130\x2\x3AE\x3AF\x5\x281\x141\x2\x3AF\x3B0\x5\x26B\x136\x2\x3B0\x3B1"+ - "\x5\x285\x143\x2\x3B1\x3B2\x5\x25B\x12E\x2\x3B2\x3B3\x5\x281\x141\x2\x3B3"+ - "\x3B4\x5\x263\x132\x2\x3B4n\x3\x2\x2\x2\x3B5\x3B6\x5\x25B\x12E\x2\x3B6"+ - "\x3B7\x5\x279\x13D\x2\x3B7\x3B8\x5\x279\x13D\x2\x3B8\x3B9\x5\x263\x132"+ - "\x2\x3B9\x3BA\x5\x275\x13B\x2\x3BA\x3BB\x5\x261\x131\x2\x3BBp\x3\x2\x2"+ - "\x2\x3BC\x3BD\x5\x25B\x12E\x2\x3BD\x3BE\x5\x27F\x140\x2\x3BEr\x3\x2\x2"+ - "\x2\x3BF\x3C0\x5\x25D\x12F\x2\x3C0\x3C1\x5\x263\x132\x2\x3C1\x3C2\x5\x267"+ - "\x134\x2\x3C2\x3C3\x5\x26B\x136\x2\x3C3\x3C4\x5\x275\x13B\x2\x3C4t\x3"+ - "\x2\x2\x2\x3C5\x3C6\x5\x25D\x12F\x2\x3C6\x3C7\x5\x263\x132\x2\x3C7\x3C8"+ - "\x5\x263\x132\x2\x3C8\x3C9\x5\x279\x13D\x2\x3C9v\x3\x2\x2\x2\x3CA\x3CB"+ - "\x5\x25D\x12F\x2\x3CB\x3CC\x5\x26B\x136\x2\x3CC\x3CD\x5\x275\x13B\x2\x3CD"+ - "\x3CE\x5\x25B\x12E\x2\x3CE\x3CF\x5\x27D\x13F\x2\x3CF\x3D0\x5\x28B\x146"+ - "\x2\x3D0x\x3\x2\x2\x2\x3D1\x3D2\x5\x25D\x12F\x2\x3D2\x3D3\x5\x277\x13C"+ - "\x2\x3D3\x3D4\x5\x277\x13C\x2\x3D4\x3D5\x5\x271\x139\x2\x3D5\x3D6\x5\x263"+ - "\x132\x2\x3D6\x3D7\x5\x25B\x12E\x2\x3D7\x3D8\x5\x275\x13B\x2\x3D8z\x3"+ - "\x2\x2\x2\x3D9\x3DA\x5\x25D\x12F\x2\x3DA\x3DB\x5\x28B\x146\x2\x3DB\x3DC"+ - "\x5\x285\x143\x2\x3DC\x3DD\x5\x25B\x12E\x2\x3DD\x3DE\x5\x271\x139\x2\x3DE"+ - "|\x3\x2\x2\x2\x3DF\x3E0\x5\x25D\x12F\x2\x3E0\x3E1\x5\x28B\x146\x2\x3E1"+ - "\x3E2\x5\x27D\x13F\x2\x3E2\x3E3\x5\x263\x132\x2\x3E3\x3E4\x5\x265\x133"+ - "\x2\x3E4~\x3\x2\x2\x2\x3E5\x3E6\x5\x25D\x12F\x2\x3E6\x3E7\x5\x28B\x146"+ - "\x2\x3E7\x3E8\x5\x281\x141\x2\x3E8\x3E9\x5\x263\x132\x2\x3E9\x80\x3\x2"+ - "\x2\x2\x3EA\x3EB\x5\x25F\x130\x2\x3EB\x3EC\x5\x25B\x12E\x2\x3EC\x3ED\x5"+ - "\x271\x139\x2\x3ED\x3EE\x5\x271\x139\x2\x3EE\x82\x3\x2\x2\x2\x3EF\x3F0"+ - "\x5\x25F\x130\x2\x3F0\x3F1\x5\x25B\x12E\x2\x3F1\x3F2\x5\x27F\x140\x2\x3F2"+ - "\x3F3\x5\x263\x132\x2\x3F3\x84\x3\x2\x2\x2\x3F4\x3F5\x5\x25F\x130\x2\x3F5"+ - "\x3F6\x5\x269\x135\x2\x3F6\x3F7\x5\x261\x131\x2\x3F7\x3F8\x5\x26B\x136"+ - "\x2\x3F8\x3F9\x5\x27D\x13F\x2\x3F9\x86\x3\x2\x2\x2\x3FA\x3FB\x5\x25F\x130"+ - "\x2\x3FB\x3FC\x5\x269\x135\x2\x3FC\x3FD\x5\x261\x131\x2\x3FD\x3FE\x5\x27D"+ - "\x13F\x2\x3FE\x3FF\x5\x26B\x136\x2\x3FF\x400\x5\x285\x143\x2\x400\x401"+ - "\x5\x263\x132\x2\x401\x88\x3\x2\x2\x2\x402\x403\x5\x25F\x130\x2\x403\x404"+ - "\x5\x271\x139\x2\x404\x405\x5\x25B\x12E\x2\x405\x406\x5\x27F\x140\x2\x406"+ - "\x407\x5\x27F\x140\x2\x407\x8A\x3\x2\x2\x2\x408\x409\x5\x25F\x130\x2\x409"+ - "\x40A\x5\x271\x139\x2\x40A\x40B\x5\x277\x13C\x2\x40B\x40C\x5\x27F\x140"+ - "\x2\x40C\x40D\x5\x263\x132\x2\x40D\x8C\x3\x2\x2\x2\x40E\x40F\x5\x25F\x130"+ - "\x2\x40F\x410\x5\x277\x13C\x2\x410\x411\x5\x275\x13B\x2\x411\x412\x5\x27F"+ - "\x140\x2\x412\x413\x5\x281\x141\x2\x413\x8E\x3\x2\x2\x2\x414\x415\x5\x261"+ - "\x131\x2\x415\x416\x5\x25B\x12E\x2\x416\x417\x5\x281\x141\x2\x417\x418"+ - "\x5\x25B\x12E\x2\x418\x419\x5\x25D\x12F\x2\x419\x41A\x5\x25B\x12E\x2\x41A"+ - "\x41B\x5\x27F\x140\x2\x41B\x41C\x5\x263\x132\x2\x41C\x90\x3\x2\x2\x2\x41D"+ - "\x41E\x5\x261\x131\x2\x41E\x41F\x5\x25B\x12E\x2\x41F\x420\x5\x281\x141"+ - "\x2\x420\x421\x5\x263\x132\x2\x421\x92\x3\x2\x2\x2\x422\x423\x5\x261\x131"+ - "\x2\x423\x424\x5\x263\x132\x2\x424\x425\x5\x25F\x130\x2\x425\x426\x5\x271"+ - "\x139\x2\x426\x427\x5\x25B\x12E\x2\x427\x428\x5\x27D\x13F\x2\x428\x429"+ - "\x5\x263\x132\x2\x429\x94\x3\x2\x2\x2\x42A\x42B\x5\x261\x131\x2\x42B\x42C"+ - "\x5\x263\x132\x2\x42C\x42D\x5\x265\x133\x2\x42D\x42E\x5\x25D\x12F\x2\x42E"+ - "\x42F\x5\x277\x13C\x2\x42F\x430\x5\x277\x13C\x2\x430\x431\x5\x271\x139"+ - "\x2\x431\x96\x3\x2\x2\x2\x432\x433\x5\x261\x131\x2\x433\x434\x5\x263\x132"+ - "\x2\x434\x435\x5\x265\x133\x2\x435\x436\x5\x25D\x12F\x2\x436\x437\x5\x28B"+ - "\x146\x2\x437\x438\x5\x281\x141\x2\x438\x439\x5\x263\x132\x2\x439\x98"+ - "\x3\x2\x2\x2\x43A\x43B\x5\x261\x131\x2\x43B\x43C\x5\x263\x132\x2\x43C"+ - "\x43D\x5\x265\x133\x2\x43D\x43E\x5\x261\x131\x2\x43E\x43F\x5\x25B\x12E"+ - "\x2\x43F\x440\x5\x281\x141\x2\x440\x441\x5\x263\x132\x2\x441\x9A\x3\x2"+ - "\x2\x2\x442\x443\x5\x261\x131\x2\x443\x444\x5\x263\x132\x2\x444\x445\x5"+ - "\x265\x133\x2\x445\x446\x5\x261\x131\x2\x446\x447\x5\x25D\x12F\x2\x447"+ - "\x448\x5\x271\x139\x2\x448\x9C\x3\x2\x2\x2\x449\x44A\x5\x261\x131\x2\x44A"+ - "\x44B\x5\x263\x132\x2\x44B\x44C\x5\x265\x133\x2\x44C\x44D\x5\x25F\x130"+ - "\x2\x44D\x44E\x5\x283\x142\x2\x44E\x44F\x5\x27D\x13F\x2\x44F\x9E\x3\x2"+ - "\x2\x2\x450\x451\x5\x261\x131\x2\x451\x452\x5\x263\x132\x2\x452\x453\x5"+ - "\x265\x133\x2\x453\x454\x5\x26B\x136\x2\x454\x455\x5\x275\x13B\x2\x455"+ - "\x456\x5\x281\x141\x2\x456\xA0\x3\x2\x2\x2\x457\x458\x5\x261\x131\x2\x458"+ - "\x459\x5\x263\x132\x2\x459\x45A\x5\x265\x133\x2\x45A\x45B\x5\x271\x139"+ - "\x2\x45B\x45C\x5\x275\x13B\x2\x45C\x45D\x5\x267\x134\x2\x45D\xA2\x3\x2"+ - "\x2\x2\x45E\x45F\x5\x261\x131\x2\x45F\x460\x5\x263\x132\x2\x460\x461\x5"+ - "\x265\x133\x2\x461\x462\x5\x271\x139\x2\x462\x463\x5\x275\x13B\x2\x463"+ - "\x464\x5\x267\x134\x2\x464\x465\x5\x271\x139\x2\x465\x466\x5\x275\x13B"+ - "\x2\x466\x467\x5\x267\x134\x2\x467\xA4\x3\x2\x2\x2\x468\x469\x5\x261\x131"+ - "\x2\x469\x46A\x5\x263\x132\x2\x46A\x46B\x5\x265\x133\x2\x46B\x46C\x5\x271"+ - "\x139\x2\x46C\x46D\x5\x275\x13B\x2\x46D\x46E\x5\x267\x134\x2\x46E\x46F"+ - "\x5\x279\x13D\x2\x46F\x470\x5\x281\x141\x2\x470\x471\x5\x27D\x13F\x2\x471"+ - "\xA6\x3\x2\x2\x2\x472\x473\x5\x261\x131\x2\x473\x474\x5\x263\x132\x2\x474"+ - "\x475\x5\x265\x133\x2\x475\x476\x5\x277\x13C\x2\x476\x477\x5\x25D\x12F"+ - "\x2\x477\x478\x5\x26D\x137\x2\x478\xA8\x3\x2\x2\x2\x479\x47A\x5\x261\x131"+ - "\x2\x47A\x47B\x5\x263\x132\x2\x47B\x47C\x5\x265\x133\x2\x47C\x47D\x5\x27F"+ - "\x140\x2\x47D\x47E\x5\x275\x13B\x2\x47E\x47F\x5\x267\x134\x2\x47F\xAA"+ - "\x3\x2\x2\x2\x480\x481\x5\x261\x131\x2\x481\x482\x5\x263\x132\x2\x482"+ - "\x483\x5\x265\x133\x2\x483\x484\x5\x27F\x140\x2\x484\x485\x5\x281\x141"+ - "\x2\x485\x486\x5\x27D\x13F\x2\x486\xAC\x3\x2\x2\x2\x487\x488\x5\x261\x131"+ - "\x2\x488\x489\x5\x263\x132\x2\x489\x48A\x5\x265\x133\x2\x48A\x48B\x5\x285"+ - "\x143\x2\x48B\x48C\x5\x25B\x12E\x2\x48C\x48D\x5\x27D\x13F\x2\x48D\xAE"+ - "\x3\x2\x2\x2\x48E\x48F\x5\x261\x131\x2\x48F\x490\x5\x263\x132\x2\x490"+ - "\x491\x5\x271\x139\x2\x491\x492\x5\x263\x132\x2\x492\x493\x5\x281\x141"+ - "\x2\x493\x494\x5\x263\x132\x2\x494\x495\x5\x27F\x140\x2\x495\x496\x5\x263"+ - "\x132\x2\x496\x497\x5\x281\x141\x2\x497\x498\x5\x281\x141\x2\x498\x499"+ - "\x5\x26B\x136\x2\x499\x49A\x5\x275\x13B\x2\x49A\x49B\x5\x267\x134\x2\x49B"+ - "\xB0\x3\x2\x2\x2\x49C\x49D\x5\x261\x131\x2\x49D\x49E\x5\x26B\x136\x2\x49E"+ - "\x49F\x5\x273\x13A\x2\x49F\xB2\x3\x2\x2\x2\x4A0\x4A1\x5\x261\x131\x2\x4A1"+ - "\x4A2\x5\x277\x13C\x2\x4A2\xB4\x3\x2\x2\x2\x4A3\x4A4\x5\x261\x131\x2\x4A4"+ - "\x4A5\x5\x277\x13C\x2\x4A5\x4A6\x5\x283\x142\x2\x4A6\x4A7\x5\x25D\x12F"+ - "\x2\x4A7\x4A8\x5\x271\x139\x2\x4A8\x4A9\x5\x263\x132\x2\x4A9\xB6\x3\x2"+ - "\x2\x2\x4AA\x4AB\x5\x263\x132\x2\x4AB\x4AC\x5\x25B\x12E\x2\x4AC\x4AD\x5"+ - "\x25F\x130\x2\x4AD\x4AE\x5\x269\x135\x2\x4AE\xB8\x3\x2\x2\x2\x4AF\x4B0"+ - "\x5\x263\x132\x2\x4B0\x4B1\x5\x271\x139\x2\x4B1\x4B2\x5\x27F\x140\x2\x4B2"+ - "\x4B3\x5\x263\x132\x2\x4B3\xBA\x3\x2\x2\x2\x4B4\x4B5\x5\x263\x132\x2\x4B5"+ - "\x4B6\x5\x271\x139\x2\x4B6\x4B7\x5\x27F\x140\x2\x4B7\x4B8\x5\x263\x132"+ - "\x2\x4B8\x4B9\x5\x26B\x136\x2\x4B9\x4BA\x5\x265\x133\x2\x4BA\xBC\x3\x2"+ - "\x2\x2\x4BB\x4BC\x5\x263\x132\x2\x4BC\x4BD\x5\x273\x13A\x2\x4BD\x4BE\x5"+ - "\x279\x13D\x2\x4BE\x4BF\x5\x281\x141\x2\x4BF\x4C0\x5\x28B\x146\x2\x4C0"+ - "\xBE\x3\x2\x2\x2\x4C1\x4C2\x5\x263\x132\x2\x4C2\x4C3\x5\x275\x13B\x2\x4C3"+ - "\x4C4\x5\x261\x131\x2\x4C4\x4C5\x5\x24D\x127\x2\x4C5\x4C6\x5\x263\x132"+ - "\x2\x4C6\x4C7\x5\x275\x13B\x2\x4C7\x4C8\x5\x283\x142\x2\x4C8\x4C9\x5\x273"+ - "\x13A\x2\x4C9\xC0\x3\x2\x2\x2\x4CA\x4CB\x5\x263\x132\x2\x4CB\x4CC\x5\x275"+ - "\x13B\x2\x4CC\x4CD\x5\x261\x131\x2\x4CD\x4CE\x5\x24D\x127\x2\x4CE\x4CF"+ - "\x5\x265\x133\x2\x4CF\x4D0\x5\x283\x142\x2\x4D0\x4D1\x5\x275\x13B\x2\x4D1"+ - "\x4D2\x5\x25F\x130\x2\x4D2\x4D3\x5\x281\x141\x2\x4D3\x4D4\x5\x26B\x136"+ - "\x2\x4D4\x4D5\x5\x277\x13C\x2\x4D5\x4D6\x5\x275\x13B\x2\x4D6\xC2\x3\x2"+ - "\x2\x2\x4D7\x4D8\x5\x263\x132\x2\x4D8\x4D9\x5\x275\x13B\x2\x4D9\x4DA\x5"+ - "\x261\x131\x2\x4DA\x4DB\x5\x24D\x127\x2\x4DB\x4DC\x5\x26B\x136\x2\x4DC"+ - "\x4DD\x5\x265\x133\x2\x4DD\xC4\x3\x2\x2\x2\x4DE\x4DF\x5\x263\x132\x2\x4DF"+ - "\x4E0\x5\x275\x13B\x2\x4E0\x4E1\x5\x261\x131\x2\x4E1\x4E2\x5\x24D\x127"+ - "\x2\x4E2\x4E3\x5\x279\x13D\x2\x4E3\x4E4\x5\x27D\x13F\x2\x4E4\x4E5\x5\x277"+ - "\x13C\x2\x4E5\x4E6\x5\x279\x13D\x2\x4E6\x4E7\x5\x263\x132\x2\x4E7\x4E8"+ - "\x5\x27D\x13F\x2\x4E8\x4E9\x5\x281\x141\x2\x4E9\x4EA\x5\x28B\x146\x2\x4EA"+ - "\xC6\x3\x2\x2\x2\x4EB\x4EC\x5\x263\x132\x2\x4EC\x4ED\x5\x275\x13B\x2\x4ED"+ - "\x4EE\x5\x261\x131\x2\x4EE\x4EF\x5\x24D\x127\x2\x4EF\x4F0\x5\x27F\x140"+ - "\x2\x4F0\x4F1\x5\x263\x132\x2\x4F1\x4F2\x5\x271\x139\x2\x4F2\x4F3\x5\x263"+ - "\x132\x2\x4F3\x4F4\x5\x25F\x130\x2\x4F4\x4F5\x5\x281\x141\x2\x4F5\xC8"+ - "\x3\x2\x2\x2\x4F6\x4F7\x5\x263\x132\x2\x4F7\x4F8\x5\x275\x13B\x2\x4F8"+ - "\x4F9\x5\x261\x131\x2\x4F9\x4FA\x5\x24D\x127\x2\x4FA\x4FB\x5\x27F\x140"+ - "\x2\x4FB\x4FC\x5\x283\x142\x2\x4FC\x4FD\x5\x25D\x12F\x2\x4FD\xCA\x3\x2"+ - "\x2\x2\x4FE\x4FF\x5\x263\x132\x2\x4FF\x500\x5\x275\x13B\x2\x500\x501\x5"+ - "\x261\x131\x2\x501\x502\x5\x24D\x127\x2\x502\x503\x5\x281\x141\x2\x503"+ - "\x504\x5\x28B\x146\x2\x504\x505\x5\x279\x13D\x2\x505\x506\x5\x263\x132"+ - "\x2\x506\xCC\x3\x2\x2\x2\x507\x508\x5\x263\x132\x2\x508\x509\x5\x275\x13B"+ - "\x2\x509\x50A\x5\x261\x131\x2\x50A\x50B\x5\x24D\x127\x2\x50B\x50C\x5\x287"+ - "\x144\x2\x50C\x50D\x5\x26B\x136\x2\x50D\x50E\x5\x281\x141\x2\x50E\x50F"+ - "\x5\x269\x135\x2\x50F\xCE\x3\x2\x2\x2\x510\x511\x5\x263\x132\x2\x511\x512"+ - "\x5\x275\x13B\x2\x512\x513\x5\x261\x131\x2\x513\xD0\x3\x2\x2\x2\x514\x515"+ - "\x5\x263\x132\x2\x515\x516\x5\x275\x13B\x2\x516\x517\x5\x283\x142\x2\x517"+ - "\x518\x5\x273\x13A\x2\x518\xD2\x3\x2\x2\x2\x519\x51A\x5\x263\x132\x2\x51A"+ - "\x51B\x5\x27B\x13E\x2\x51B\x51C\x5\x285\x143\x2\x51C\xD4\x3\x2\x2\x2\x51D"+ - "\x51E\x5\x263\x132\x2\x51E\x51F\x5\x27D\x13F\x2\x51F\x520\x5\x25B\x12E"+ - "\x2\x520\x521\x5\x27F\x140\x2\x521\x522\x5\x263\x132\x2\x522\xD6\x3\x2"+ - "\x2\x2\x523\x524\x5\x263\x132\x2\x524\x525\x5\x27D\x13F\x2\x525\x526\x5"+ - "\x27D\x13F\x2\x526\x527\x5\x277\x13C\x2\x527\x528\x5\x27D\x13F\x2\x528"+ - "\xD8\x3\x2\x2\x2\x529\x52A\x5\x263\x132\x2\x52A\x52B\x5\x285\x143\x2\x52B"+ - "\x52C\x5\x263\x132\x2\x52C\x52D\x5\x275\x13B\x2\x52D\x52E\x5\x281\x141"+ - "\x2\x52E\xDA\x3\x2\x2\x2\x52F\x530\x5\x263\x132\x2\x530\x531\x5\x289\x145"+ - "\x2\x531\x532\x5\x26B\x136\x2\x532\x533\x5\x281\x141\x2\x533\x534\x5\x24D"+ - "\x127\x2\x534\x535\x5\x261\x131\x2\x535\x536\x5\x277\x13C\x2\x536\xDC"+ - "\x3\x2\x2\x2\x537\x538\x5\x263\x132\x2\x538\x539\x5\x289\x145\x2\x539"+ - "\x53A\x5\x26B\x136\x2\x53A\x53B\x5\x281\x141\x2\x53B\x53C\x5\x24D\x127"+ - "\x2\x53C\x53D\x5\x265\x133\x2\x53D\x53E\x5\x277\x13C\x2\x53E\x53F\x5\x27D"+ - "\x13F\x2\x53F\xDE\x3\x2\x2\x2\x540\x541\x5\x263\x132\x2\x541\x542\x5\x289"+ - "\x145\x2\x542\x543\x5\x26B\x136\x2\x543\x544\x5\x281\x141\x2\x544\x545"+ - "\x5\x24D\x127\x2\x545\x546\x5\x265\x133\x2\x546\x547\x5\x283\x142\x2\x547"+ - "\x548\x5\x275\x13B\x2\x548\x549\x5\x25F\x130\x2\x549\x54A\x5\x281\x141"+ - "\x2\x54A\x54B\x5\x26B\x136\x2\x54B\x54C\x5\x277\x13C\x2\x54C\x54D\x5\x275"+ - "\x13B\x2\x54D\xE0\x3\x2\x2\x2\x54E\x54F\x5\x263\x132\x2\x54F\x550\x5\x289"+ - "\x145\x2\x550\x551\x5\x26B\x136\x2\x551\x552\x5\x281\x141\x2\x552\x553"+ - "\x5\x24D\x127\x2\x553\x554\x5\x279\x13D\x2\x554\x555\x5\x27D\x13F\x2\x555"+ - "\x556\x5\x277\x13C\x2\x556\x557\x5\x279\x13D\x2\x557\x558\x5\x263\x132"+ - "\x2\x558\x559\x5\x27D\x13F\x2\x559\x55A\x5\x281\x141\x2\x55A\x55B\x5\x28B"+ - "\x146\x2\x55B\xE2\x3\x2\x2\x2\x55C\x55D\x5\x263\x132\x2\x55D\x55E\x5\x289"+ - "\x145\x2\x55E\x55F\x5\x26B\x136\x2\x55F\x560\x5\x281\x141\x2\x560\x561"+ - "\x5\x24D\x127\x2\x561\x562\x5\x27F\x140\x2\x562\x563\x5\x283\x142\x2\x563"+ - "\x564\x5\x25D\x12F\x2\x564\xE4\x3\x2\x2\x2\x565\x566\x5\x265\x133\x2\x566"+ - "\x567\x5\x25B\x12E\x2\x567\x568\x5\x271\x139\x2\x568\x569\x5\x27F\x140"+ - "\x2\x569\x56A\x5\x263\x132\x2\x56A\xE6\x3\x2\x2\x2\x56B\x56C\x5\x265\x133"+ - "\x2\x56C\x56D\x5\x26B\x136\x2\x56D\x56E\x5\x271\x139\x2\x56E\x56F\x5\x263"+ - "\x132\x2\x56F\x570\x5\x25F\x130\x2\x570\x571\x5\x277\x13C\x2\x571\x572"+ - "\x5\x279\x13D\x2\x572\x573\x5\x28B\x146\x2\x573\xE8\x3\x2\x2\x2\x574\x575"+ - "\x5\x265\x133\x2\x575\x576\x5\x27D\x13F\x2\x576\x577\x5\x26B\x136\x2\x577"+ - "\x578\x5\x263\x132\x2\x578\x579\x5\x275\x13B\x2\x579\x57A\x5\x261\x131"+ - "\x2\x57A\xEA\x3\x2\x2\x2\x57B\x57C\x5\x265\x133\x2\x57C\x57D\x5\x277\x13C"+ - "\x2\x57D\x57E\x5\x27D\x13F\x2\x57E\xEC\x3\x2\x2\x2\x57F\x580\x5\x265\x133"+ - "\x2\x580\x581\x5\x283\x142\x2\x581\x582\x5\x275\x13B\x2\x582\x583\x5\x25F"+ - "\x130\x2\x583\x584\x5\x281\x141\x2\x584\x585\x5\x26B\x136\x2\x585\x586"+ - "\x5\x277\x13C\x2\x586\x587\x5\x275\x13B\x2\x587\xEE\x3\x2\x2\x2\x588\x589"+ - "\x5\x267\x134\x2\x589\x58A\x5\x263\x132\x2\x58A\x58B\x5\x281\x141\x2\x58B"+ - "\xF0\x3\x2\x2\x2\x58C\x58D\x5\x267\x134\x2\x58D\x58E\x5\x271\x139\x2\x58E"+ - "\x58F\x5\x277\x13C\x2\x58F\x590\x5\x25D\x12F\x2\x590\x591\x5\x25B\x12E"+ - "\x2\x591\x592\x5\x271\x139\x2\x592\xF2\x3\x2\x2\x2\x593\x594\x5\x267\x134"+ - "\x2\x594\x595\x5\x277\x13C\x2\x595\x596\x5\x27F\x140\x2\x596\x597\x5\x283"+ - "\x142\x2\x597\x598\x5\x25D\x12F\x2\x598\xF4\x3\x2\x2\x2\x599\x59A\x5\x267"+ - "\x134\x2\x59A\x59B\x5\x277\x13C\x2\x59B\x59C\x5\x281\x141\x2\x59C\x59D"+ - "\x5\x277\x13C\x2\x59D\xF6\x3\x2\x2\x2\x59E\x59F\x5\x26B\x136\x2\x59F\x5A0"+ - "\x5\x265\x133\x2\x5A0\xF8\x3\x2\x2\x2\x5A1\x5A2\x5\x26B\x136\x2\x5A2\x5A3"+ - "\x5\x273\x13A\x2\x5A3\x5A4\x5\x279\x13D\x2\x5A4\xFA\x3\x2\x2\x2\x5A5\x5A6"+ - "\x5\x26B\x136\x2\x5A6\x5A7\x5\x273\x13A\x2\x5A7\x5A8\x5\x279\x13D\x2\x5A8"+ - "\x5A9\x5\x271\x139\x2\x5A9\x5AA\x5\x263\x132\x2\x5AA\x5AB\x5\x273\x13A"+ - "\x2\x5AB\x5AC\x5\x263\x132\x2\x5AC\x5AD\x5\x275\x13B\x2\x5AD\x5AE\x5\x281"+ - "\x141\x2\x5AE\x5AF\x5\x27F\x140\x2\x5AF\xFC\x3\x2\x2\x2\x5B0\x5B1\x5\x26B"+ - "\x136\x2\x5B1\x5B2\x5\x275\x13B\x2\x5B2\xFE\x3\x2\x2\x2\x5B3\x5B4\x5\x26B"+ - "\x136\x2\x5B4\x5B5\x5\x275\x13B\x2\x5B5\x5B6\x5\x279\x13D\x2\x5B6\x5B7"+ - "\x5\x283\x142\x2\x5B7\x5B8\x5\x281\x141\x2\x5B8\x100\x3\x2\x2\x2\x5B9"+ - "\x5BA\x5\x26B\x136\x2\x5BA\x5BB\x5\x27F\x140\x2\x5BB\x102\x3\x2\x2\x2"+ - "\x5BC\x5BD\x5\x26B\x136\x2\x5BD\x5BE\x5\x275\x13B\x2\x5BE\x5BF\x5\x281"+ - "\x141\x2\x5BF\x5C0\x5\x263\x132\x2\x5C0\x5C1\x5\x267\x134\x2\x5C1\x5C2"+ - "\x5\x263\x132\x2\x5C2\x5C3\x5\x27D\x13F\x2\x5C3\x104\x3\x2\x2\x2\x5C4"+ - "\x5C5\x5\x26F\x138\x2\x5C5\x5C6\x5\x26B\x136\x2\x5C6\x5C7\x5\x271\x139"+ - "\x2\x5C7\x5C8\x5\x271\x139\x2\x5C8\x106\x3\x2\x2\x2\x5C9\x5CA\x5\x271"+ - "\x139\x2\x5CA\x5CB\x5\x277\x13C\x2\x5CB\x5CC\x5\x25B\x12E\x2\x5CC\x5CD"+ - "\x5\x261\x131\x2\x5CD\x108\x3\x2\x2\x2\x5CE\x5CF\x5\x271\x139\x2\x5CF"+ - "\x5D0\x5\x277\x13C\x2\x5D0\x5D1\x5\x25F\x130\x2\x5D1\x5D2\x5\x26F\x138"+ - "\x2\x5D2\x10A\x3\x2\x2\x2\x5D3\x5D4\x5\x271\x139\x2\x5D4\x5D5\x5\x277"+ - "\x13C\x2\x5D5\x5D6\x5\x275\x13B\x2\x5D6\x5D7\x5\x267\x134\x2\x5D7\x10C"+ - "\x3\x2\x2\x2\x5D8\x5D9\x5\x271\x139\x2\x5D9\x5DA\x5\x277\x13C\x2\x5DA"+ - "\x5DB\x5\x277\x13C\x2\x5DB\x5DC\x5\x279\x13D\x2\x5DC\x10E\x3\x2\x2\x2"+ - "\x5DD\x5DE\x5\x271\x139\x2\x5DE\x5DF\x5\x263\x132\x2\x5DF\x5E0\x5\x281"+ - "\x141\x2\x5E0\x110\x3\x2\x2\x2\x5E1\x5E2\x5\x271\x139\x2\x5E2\x5E3\x5"+ - "\x26B\x136\x2\x5E3\x5E4\x5\x25D\x12F\x2\x5E4\x112\x3\x2\x2\x2\x5E5\x5E6"+ - "\x5\x271\x139\x2\x5E6\x5E7\x5\x26B\x136\x2\x5E7\x5E8\x5\x26F\x138\x2\x5E8"+ - "\x5E9\x5\x263\x132\x2\x5E9\x114\x3\x2\x2\x2\x5EA\x5EB\x5\x271\x139\x2"+ - "\x5EB\x5EC\x5\x26B\x136\x2\x5EC\x5ED\x5\x275\x13B\x2\x5ED\x5EE\x5\x263"+ - "\x132\x2\x5EE\x5EF\x5\x24D\x127\x2\x5EF\x5F0\x5\x26B\x136\x2\x5F0\x5F1"+ - "\x5\x275\x13B\x2\x5F1\x5F2\x5\x279\x13D\x2\x5F2\x5F3\x5\x283\x142\x2\x5F3"+ - "\x5F4\x5\x281\x141\x2\x5F4\x116\x3\x2\x2\x2\x5F5\x5F6\x5\x271\x139\x2"+ - "\x5F6\x5F7\x5\x277\x13C\x2\x5F7\x5F8\x5\x25F\x130\x2\x5F8\x5F9\x5\x26F"+ - "\x138\x2\x5F9\x5FA\x5\x24D\x127\x2\x5FA\x5FB\x5\x27D\x13F\x2\x5FB\x5FC"+ - "\x5\x263\x132\x2\x5FC\x5FD\x5\x25B\x12E\x2\x5FD\x5FE\x5\x261\x131\x2\x5FE"+ - "\x118\x3\x2\x2\x2\x5FF\x600\x5\x271\x139\x2\x600\x601\x5\x277\x13C\x2"+ - "\x601\x602\x5\x25F\x130\x2\x602\x603\x5\x26F\x138\x2\x603\x604\x5\x24D"+ - "\x127\x2\x604\x605\x5\x287\x144\x2\x605\x606\x5\x27D\x13F\x2\x606\x607"+ - "\x5\x26B\x136\x2\x607\x608\x5\x281\x141\x2\x608\x609\x5\x263\x132\x2\x609"+ - "\x11A\x3\x2\x2\x2\x60A\x60B\x5\x271\x139\x2\x60B\x60C\x5\x277\x13C\x2"+ - "\x60C\x60D\x5\x25F\x130\x2\x60D\x60E\x5\x26F\x138\x2\x60E\x60F\x5\x24D"+ - "\x127\x2\x60F\x610\x5\x27D\x13F\x2\x610\x611\x5\x263\x132\x2\x611\x612"+ - "\x5\x25B\x12E\x2\x612\x613\x5\x261\x131\x2\x613\x614\x5\x24D\x127\x2\x614"+ - "\x615\x5\x287\x144\x2\x615\x616\x5\x27D\x13F\x2\x616\x617\x5\x26B\x136"+ - "\x2\x617\x618\x5\x281\x141\x2\x618\x619\x5\x263\x132\x2\x619\x11C\x3\x2"+ - "\x2\x2\x61A\x61B\x5\x271\x139\x2\x61B\x61C\x5\x27F\x140\x2\x61C\x61D\x5"+ - "\x263\x132\x2\x61D\x61E\x5\x281\x141\x2\x61E\x11E\x3\x2\x2\x2\x61F\x620"+ - "\x5\x273\x13A\x2\x620\x621\x5\x263\x132\x2\x621\x120\x3\x2\x2\x2\x622"+ - "\x623\x5\x273\x13A\x2\x623\x624\x5\x26B\x136\x2\x624\x625\x5\x261\x131"+ - "\x2\x625\x122\x3\x2\x2\x2\x626\x627\x5\x273\x13A\x2\x627\x628\x5\x26F"+ - "\x138\x2\x628\x629\x5\x261\x131\x2\x629\x62A\x5\x26B\x136\x2\x62A\x62B"+ - "\x5\x27D\x13F\x2\x62B\x124\x3\x2\x2\x2\x62C\x62D\x5\x273\x13A\x2\x62D"+ - "\x62E\x5\x277\x13C\x2\x62E\x62F\x5\x261\x131\x2\x62F\x126\x3\x2\x2\x2"+ - "\x630\x631\x5\x275\x13B\x2\x631\x632\x5\x25B\x12E\x2\x632\x633\x5\x273"+ - "\x13A\x2\x633\x634\x5\x263\x132\x2\x634\x128\x3\x2\x2\x2\x635\x636\x5"+ - "\x275\x13B\x2\x636\x637\x5\x263\x132\x2\x637\x638\x5\x289\x145\x2\x638"+ - "\x639\x5\x281\x141\x2\x639\x12A\x3\x2\x2\x2\x63A\x63B\x5\x275\x13B\x2"+ - "\x63B\x63C\x5\x263\x132\x2\x63C\x63D\x5\x287\x144\x2\x63D\x12C\x3\x2\x2"+ - "\x2\x63E\x63F\x5\x275\x13B\x2\x63F\x640\x5\x277\x13C\x2\x640\x641\x5\x281"+ - "\x141\x2\x641\x12E\x3\x2\x2\x2\x642\x643\x5\x275\x13B\x2\x643\x644\x5"+ - "\x277\x13C\x2\x644\x645\x5\x281\x141\x2\x645\x646\x5\x269\x135\x2\x646"+ - "\x647\x5\x26B\x136\x2\x647\x648\x5\x275\x13B\x2\x648\x649\x5\x267\x134"+ - "\x2\x649\x130\x3\x2\x2\x2\x64A\x64B\x5\x275\x13B\x2\x64B\x64C\x5\x283"+ - "\x142\x2\x64C\x64D\x5\x271\x139\x2\x64D\x64E\x5\x271\x139\x2\x64E\x132"+ - "\x3\x2\x2\x2\x64F\x650\x5\x277\x13C\x2\x650\x651\x5\x275\x13B\x2\x651"+ - "\x134\x3\x2\x2\x2\x652\x653\x5\x277\x13C\x2\x653\x654\x5\x275\x13B\x2"+ - "\x654\x655\x5\x24D\x127\x2\x655\x656\x5\x263\x132\x2\x656\x657\x5\x27D"+ - "\x13F\x2\x657\x658\x5\x27D\x13F\x2\x658\x659\x5\x277\x13C\x2\x659\x65A"+ - "\x5\x27D\x13F\x2\x65A\x136\x3\x2\x2\x2\x65B\x65C\x5\x277\x13C\x2\x65C"+ - "\x65D\x5\x275\x13B\x2\x65D\x65E\x5\x24D\x127\x2\x65E\x65F\x5\x271\x139"+ - "\x2\x65F\x660\x5\x277\x13C\x2\x660\x661\x5\x25F\x130\x2\x661\x662\x5\x25B"+ - "\x12E\x2\x662\x663\x5\x271\x139\x2\x663\x664\x5\x24D\x127\x2\x664\x665"+ - "\x5\x263\x132\x2\x665\x666\x5\x27D\x13F\x2\x666\x667\x5\x27D\x13F\x2\x667"+ - "\x668\x5\x277\x13C\x2\x668\x669\x5\x27D\x13F\x2\x669\x138\x3\x2\x2\x2"+ - "\x66A\x66B\x5\x277\x13C\x2\x66B\x66C\x5\x279\x13D\x2\x66C\x66D\x5\x263"+ - "\x132\x2\x66D\x66E\x5\x275\x13B\x2\x66E\x13A\x3\x2\x2\x2\x66F\x670\x5"+ - "\x277\x13C\x2\x670\x671\x5\x279\x13D\x2\x671\x672\x5\x281\x141\x2\x672"+ - "\x673\x5\x26B\x136\x2\x673\x674\x5\x277\x13C\x2\x674\x675\x5\x275\x13B"+ - "\x2\x675\x676\x5\x25B\x12E\x2\x676\x677\x5\x271\x139\x2\x677\x13C\x3\x2"+ - "\x2\x2\x678\x679\x5\x277\x13C\x2\x679\x67A\x5\x279\x13D\x2\x67A\x67B\x5"+ - "\x281\x141\x2\x67B\x67C\x5\x26B\x136\x2\x67C\x67D\x5\x277\x13C\x2\x67D"+ - "\x67E\x5\x275\x13B\x2\x67E\x67F\x5\x24D\x127\x2\x67F\x680\x5\x25D\x12F"+ - "\x2\x680\x681\x5\x25B\x12E\x2\x681\x682\x5\x27F\x140\x2\x682\x683\x5\x263"+ - "\x132\x2\x683\x13E\x3\x2\x2\x2\x684\x685\x5\x277\x13C\x2\x685\x686\x5"+ - "\x279\x13D\x2\x686\x687\x5\x281\x141\x2\x687\x688\x5\x26B\x136\x2\x688"+ - "\x689\x5\x277\x13C\x2\x689\x68A\x5\x275\x13B\x2\x68A\x68B\x5\x24D\x127"+ - "\x2\x68B\x68C\x5\x263\x132\x2\x68C\x68D\x5\x289\x145\x2\x68D\x68E\x5\x279"+ - "\x13D\x2\x68E\x68F\x5\x271\x139\x2\x68F\x690\x5\x26B\x136\x2\x690\x691"+ - "\x5\x25F\x130\x2\x691\x692\x5\x26B\x136\x2\x692\x693\x5\x281\x141\x2\x693"+ - "\x140\x3\x2\x2\x2\x694\x695\x5\x277\x13C\x2\x695\x696\x5\x279\x13D\x2"+ - "\x696\x697\x5\x281\x141\x2\x697\x698\x5\x26B\x136\x2\x698\x699\x5\x277"+ - "\x13C\x2\x699\x69A\x5\x275\x13B\x2\x69A\x69B\x5\x24D\x127\x2\x69B\x69C"+ - "\x5\x25F\x130\x2\x69C\x69D\x5\x277\x13C\x2\x69D\x69E\x5\x273\x13A\x2\x69E"+ - "\x69F\x5\x279\x13D\x2\x69F\x6A0\x5\x25B\x12E\x2\x6A0\x6A1\x5\x27D\x13F"+ - "\x2\x6A1\x6A2\x5\x263\x132\x2\x6A2\x142\x3\x2\x2\x2\x6A3\x6A4\x5\x277"+ - "\x13C\x2\x6A4\x6A5\x5\x279\x13D\x2\x6A5\x6A6\x5\x281\x141\x2\x6A6\x6A7"+ - "\x5\x26B\x136\x2\x6A7\x6A8\x5\x277\x13C\x2\x6A8\x6A9\x5\x275\x13B\x2\x6A9"+ - "\x6AA\x5\x24D\x127\x2\x6AA\x6AB\x5\x279\x13D\x2\x6AB\x6AC\x5\x27D\x13F"+ - "\x2\x6AC\x6AD\x5\x26B\x136\x2\x6AD\x6AE\x5\x285\x143\x2\x6AE\x6AF\x5\x25B"+ - "\x12E\x2\x6AF\x6B0\x5\x281\x141\x2\x6B0\x6B1\x5\x263\x132\x2\x6B1\x6B2"+ - "\x5\x24D\x127\x2\x6B2\x6B3\x5\x273\x13A\x2\x6B3\x6B4\x5\x277\x13C\x2\x6B4"+ - "\x6B5\x5\x261\x131\x2\x6B5\x6B6\x5\x283\x142\x2\x6B6\x6B7\x5\x271\x139"+ - "\x2\x6B7\x6B8\x5\x263\x132\x2\x6B8\x144\x3\x2\x2\x2\x6B9\x6BA\x5\x277"+ - "\x13C\x2\x6BA\x6BB\x5\x27D\x13F\x2\x6BB\x146\x3\x2\x2\x2\x6BC\x6BD\x5"+ - "\x277\x13C\x2\x6BD\x6BE\x5\x283\x142\x2\x6BE\x6BF\x5\x281\x141\x2\x6BF"+ - "\x6C0\x5\x279\x13D\x2\x6C0\x6C1\x5\x283\x142\x2\x6C1\x6C2\x5\x281\x141"+ - "\x2\x6C2\x148\x3\x2\x2\x2\x6C3\x6C4\x5\x279\x13D\x2\x6C4\x6C5\x5\x25B"+ - "\x12E\x2\x6C5\x6C6\x5\x27D\x13F\x2\x6C6\x6C7\x5\x25B\x12E\x2\x6C7\x6C8"+ - "\x5\x273\x13A\x2\x6C8\x6C9\x5\x25B\x12E\x2\x6C9\x6CA\x5\x27D\x13F\x2\x6CA"+ - "\x6CB\x5\x27D\x13F\x2\x6CB\x6CC\x5\x25B\x12E\x2\x6CC\x6CD\x5\x28B\x146"+ - "\x2\x6CD\x14A\x3\x2\x2\x2\x6CE\x6CF\x5\x279\x13D\x2\x6CF\x6D0\x5\x27D"+ - "\x13F\x2\x6D0\x6D1\x5\x263\x132\x2\x6D1\x6D2\x5\x27F\x140\x2\x6D2\x6D3"+ - "\x5\x263\x132\x2\x6D3\x6D4\x5\x27D\x13F\x2\x6D4\x6D5\x5\x285\x143\x2\x6D5"+ - "\x6D6\x5\x263\x132\x2\x6D6\x14C\x3\x2\x2\x2\x6D7\x6D8\x5\x279\x13D\x2"+ - "\x6D8\x6D9\x5\x27D\x13F\x2\x6D9\x6DA\x5\x26B\x136\x2\x6DA\x6DB\x5\x275"+ - "\x13B\x2\x6DB\x6DC\x5\x281\x141\x2\x6DC\x14E\x3\x2\x2\x2\x6DD\x6DE\x5"+ - "\x279\x13D\x2\x6DE\x6DF\x5\x27D\x13F\x2\x6DF\x6E0\x5\x26B\x136\x2\x6E0"+ - "\x6E1\x5\x285\x143\x2\x6E1\x6E2\x5\x25B\x12E\x2\x6E2\x6E3\x5\x281\x141"+ - "\x2\x6E3\x6E4\x5\x263\x132\x2\x6E4\x150\x3\x2\x2\x2\x6E5\x6E6\x5\x279"+ - "\x13D\x2\x6E6\x6E7\x5\x27D\x13F\x2\x6E7\x6E8\x5\x277\x13C\x2\x6E8\x6E9"+ - "\x5\x279\x13D\x2\x6E9\x6EA\x5\x263\x132\x2\x6EA\x6EB\x5\x27D\x13F\x2\x6EB"+ - "\x6EC\x5\x281\x141\x2\x6EC\x6ED\x5\x28B\x146\x2\x6ED\x6EE\x5\x24D\x127"+ - "\x2\x6EE\x6EF\x5\x267\x134\x2\x6EF\x6F0\x5\x263\x132\x2\x6F0\x6F1\x5\x281"+ - "\x141\x2\x6F1\x152\x3\x2\x2\x2\x6F2\x6F3\x5\x279\x13D\x2\x6F3\x6F4\x5"+ - "\x27D\x13F\x2\x6F4\x6F5\x5\x277\x13C\x2\x6F5\x6F6\x5\x279\x13D\x2\x6F6"+ - "\x6F7\x5\x263\x132\x2\x6F7\x6F8\x5\x27D\x13F\x2\x6F8\x6F9\x5\x281\x141"+ - "\x2\x6F9\x6FA\x5\x28B\x146\x2\x6FA\x6FB\x5\x24D\x127\x2\x6FB\x6FC\x5\x271"+ - "\x139\x2\x6FC\x6FD\x5\x263\x132\x2\x6FD\x6FE\x5\x281\x141\x2\x6FE\x154"+ - "\x3\x2\x2\x2\x6FF\x700\x5\x279\x13D\x2\x700\x701\x5\x27D\x13F\x2\x701"+ - "\x702\x5\x277\x13C\x2\x702\x703\x5\x279\x13D\x2\x703\x704\x5\x263\x132"+ - "\x2\x704\x705\x5\x27D\x13F\x2\x705\x706\x5\x281\x141\x2\x706\x707\x5\x28B"+ - "\x146\x2\x707\x708\x5\x24D\x127\x2\x708\x709\x5\x27F\x140\x2\x709\x70A"+ - "\x5\x263\x132\x2\x70A\x70B\x5\x281\x141\x2\x70B\x156\x3\x2\x2\x2\x70C"+ - "\x70D\x5\x279\x13D\x2\x70D\x70E\x5\x281\x141\x2\x70E\x70F\x5\x27D\x13F"+ - "\x2\x70F\x710\x5\x27F\x140\x2\x710\x711\x5\x25B\x12E\x2\x711\x712\x5\x265"+ - "\x133\x2\x712\x713\x5\x263\x132\x2\x713\x158\x3\x2\x2\x2\x714\x715\x5"+ - "\x279\x13D\x2\x715\x716\x5\x283\x142\x2\x716\x717\x5\x25D\x12F\x2\x717"+ - "\x718\x5\x271\x139\x2\x718\x719\x5\x26B\x136\x2\x719\x71A\x5\x25F\x130"+ - "\x2\x71A\x15A\x3\x2\x2\x2\x71B\x71C\x5\x279\x13D\x2\x71C\x71D\x5\x283"+ - "\x142\x2\x71D\x71E\x5\x281\x141\x2\x71E\x15C\x3\x2\x2\x2\x71F\x720\x5"+ - "\x27D\x13F\x2\x720\x721\x5\x25B\x12E\x2\x721\x722\x5\x275\x13B\x2\x722"+ - "\x723\x5\x261\x131\x2\x723\x724\x5\x277\x13C\x2\x724\x725\x5\x273\x13A"+ - "\x2\x725\x15E\x3\x2\x2\x2\x726\x727\x5\x27D\x13F\x2\x727\x728\x5\x25B"+ - "\x12E\x2\x728\x729\x5\x275\x13B\x2\x729\x72A\x5\x261\x131\x2\x72A\x72B"+ - "\x5\x277\x13C\x2\x72B\x72C\x5\x273\x13A\x2\x72C\x72D\x5\x26B\x136\x2\x72D"+ - "\x72E\x5\x28D\x147\x2\x72E\x72F\x5\x263\x132\x2\x72F\x160\x3\x2\x2\x2"+ - "\x730\x731\x5\x27D\x13F\x2\x731\x732\x5\x25B\x12E\x2\x732\x733\x5\x26B"+ - "\x136\x2\x733\x734\x5\x27F\x140\x2\x734\x735\x5\x263\x132\x2\x735\x736"+ - "\x5\x263\x132\x2\x736\x737\x5\x285\x143\x2\x737\x738\x5\x263\x132\x2\x738"+ - "\x739\x5\x275\x13B\x2\x739\x73A\x5\x281\x141\x2\x73A\x162\x3\x2\x2\x2"+ - "\x73B\x73C\x5\x27D\x13F\x2\x73C\x73D\x5\x263\x132\x2\x73D\x73E\x5\x25B"+ - "\x12E\x2\x73E\x73F\x5\x261\x131\x2\x73F\x164\x3\x2\x2\x2\x740\x741\x5"+ - "\x27D\x13F\x2\x741\x742\x5\x263\x132\x2\x742\x743\x5\x25B\x12E\x2\x743"+ - "\x744\x5\x261\x131\x2\x744\x745\x5\x24D\x127\x2\x745\x746\x5\x287\x144"+ - "\x2\x746\x747\x5\x27D\x13F\x2\x747\x748\x5\x26B\x136\x2\x748\x749\x5\x281"+ - "\x141\x2\x749\x74A\x5\x263\x132\x2\x74A\x166\x3\x2\x2\x2\x74B\x74C\x5"+ - "\x27D\x13F\x2\x74C\x74D\x5\x263\x132\x2\x74D\x74E\x5\x261\x131\x2\x74E"+ - "\x74F\x5\x26B\x136\x2\x74F\x750\x5\x273\x13A\x2\x750\x168\x3\x2\x2\x2"+ - "\x751\x752\x5\x27D\x13F\x2\x752\x753\x5\x263\x132\x2\x753\x754\x5\x273"+ - "\x13A\x2\x754\x16A\x3\x2\x2\x2\x755\x756\x5\x27D\x13F\x2\x756\x757\x5"+ - "\x263\x132\x2\x757\x758\x5\x27F\x140\x2\x758\x759\x5\x263\x132\x2\x759"+ - "\x75A\x5\x281\x141\x2\x75A\x16C\x3\x2\x2\x2\x75B\x75C\x5\x27D\x13F\x2"+ - "\x75C\x75D\x5\x263\x132\x2\x75D\x75E\x5\x27F\x140\x2\x75E\x75F\x5\x283"+ - "\x142\x2\x75F\x760\x5\x273\x13A\x2\x760\x761\x5\x263\x132\x2\x761\x16E"+ - "\x3\x2\x2\x2\x762\x763\x5\x27D\x13F\x2\x763\x764\x5\x263\x132\x2\x764"+ - "\x765\x5\x281\x141\x2\x765\x766\x5\x283\x142\x2\x766\x767\x5\x27D\x13F"+ - "\x2\x767\x768\x5\x275\x13B\x2\x768\x170\x3\x2\x2\x2\x769\x76A\x5\x27D"+ - "\x13F\x2\x76A\x76B\x5\x273\x13A\x2\x76B\x76C\x5\x261\x131\x2\x76C\x76D"+ - "\x5\x26B\x136\x2\x76D\x76E\x5\x27D\x13F\x2\x76E\x172\x3\x2\x2\x2\x76F"+ - "\x770\x5\x27D\x13F\x2\x770\x771\x5\x27F\x140\x2\x771\x772\x5\x263\x132"+ - "\x2\x772\x773\x5\x281\x141\x2\x773\x174\x3\x2\x2\x2\x774\x775\x5\x27F"+ - "\x140\x2\x775\x776\x5\x25B\x12E\x2\x776\x777\x5\x285\x143\x2\x777\x778"+ - "\x5\x263\x132\x2\x778\x779\x5\x279\x13D\x2\x779\x77A\x5\x26B\x136\x2\x77A"+ - "\x77B\x5\x25F\x130\x2\x77B\x77C\x5\x281\x141\x2\x77C\x77D\x5\x283\x142"+ - "\x2\x77D\x77E\x5\x27D\x13F\x2\x77E\x77F\x5\x263\x132\x2\x77F\x176\x3\x2"+ - "\x2\x2\x780\x781\x5\x27F\x140\x2\x781\x782\x5\x25B\x12E\x2\x782\x783\x5"+ - "\x285\x143\x2\x783\x784\x5\x263\x132\x2\x784\x785\x5\x27F\x140\x2\x785"+ - "\x786\x5\x263\x132\x2\x786\x787\x5\x281\x141\x2\x787\x788\x5\x281\x141"+ - "\x2\x788\x789\x5\x26B\x136\x2\x789\x78A\x5\x275\x13B\x2\x78A\x78B\x5\x267"+ - "\x134\x2\x78B\x178\x3\x2\x2\x2\x78C\x78D\x5\x27F\x140\x2\x78D\x78E\x5"+ - "\x263\x132\x2\x78E\x78F\x5\x263\x132\x2\x78F\x790\x5\x26F\x138\x2\x790"+ - "\x17A\x3\x2\x2\x2\x791\x792\x5\x27F\x140\x2\x792\x793\x5\x263\x132\x2"+ - "\x793\x794\x5\x271\x139\x2\x794\x795\x5\x263\x132\x2\x795\x796\x5\x25F"+ - "\x130\x2\x796\x797\x5\x281\x141\x2\x797\x17C\x3\x2\x2\x2\x798\x799\x5"+ - "\x27F\x140\x2\x799\x79A\x5\x263\x132\x2\x79A\x79B\x5\x275\x13B\x2\x79B"+ - "\x79C\x5\x261\x131\x2\x79C\x79D\x5\x26F\x138\x2\x79D\x79E\x5\x263\x132"+ - "\x2\x79E\x79F\x5\x28B\x146\x2\x79F\x7A0\x5\x27F\x140\x2\x7A0\x17E\x3\x2"+ - "\x2\x2\x7A1\x7A2\x5\x27F\x140\x2\x7A2\x7A3\x5\x263\x132\x2\x7A3\x7A4\x5"+ - "\x281\x141\x2\x7A4\x180\x3\x2\x2\x2\x7A5\x7A6\x5\x27F\x140\x2\x7A6\x7A7"+ - "\x5\x263\x132\x2\x7A7\x7A8\x5\x281\x141\x2\x7A8\x7A9\x5\x25B\x12E\x2\x7A9"+ - "\x7AA\x5\x281\x141\x2\x7AA\x7AB\x5\x281\x141\x2\x7AB\x7AC\x5\x27D\x13F"+ - "\x2\x7AC\x182\x3\x2\x2\x2\x7AD\x7AE\x5\x27F\x140\x2\x7AE\x7AF\x5\x269"+ - "\x135\x2\x7AF\x7B0\x5\x25B\x12E\x2\x7B0\x7B1\x5\x27D\x13F\x2\x7B1\x7B2"+ - "\x5\x263\x132\x2\x7B2\x7B3\x5\x261\x131\x2\x7B3\x184\x3\x2\x2\x2\x7B4"+ - "\x7B5\x5\x27F\x140\x2\x7B5\x7B6\x5\x26B\x136\x2\x7B6\x7B7\x5\x275\x13B"+ - "\x2\x7B7\x7B8\x5\x267\x134\x2\x7B8\x7B9\x5\x271\x139\x2\x7B9\x7BA\x5\x263"+ - "\x132\x2\x7BA\x186\x3\x2\x2\x2\x7BB\x7BC\x5\x27F\x140\x2\x7BC\x7BD\x5"+ - "\x279\x13D\x2\x7BD\x7BE\x5\x25F\x130\x2\x7BE\x188\x3\x2\x2\x2\x7BF\x7C0"+ - "\x5\x27F\x140\x2\x7C0\x7C1\x5\x281\x141\x2\x7C1\x7C2\x5\x25B\x12E\x2\x7C2"+ - "\x7C3\x5\x281\x141\x2\x7C3\x7C4\x5\x26B\x136\x2\x7C4\x7C5\x5\x25F\x130"+ - "\x2\x7C5\x18A\x3\x2\x2\x2\x7C6\x7C7\x5\x27F\x140\x2\x7C7\x7C8\x5\x281"+ - "\x141\x2\x7C8\x7C9\x5\x263\x132\x2\x7C9\x7CA\x5\x279\x13D\x2\x7CA\x18C"+ - "\x3\x2\x2\x2\x7CB\x7CC\x5\x27F\x140\x2\x7CC\x7CD\x5\x281\x141\x2\x7CD"+ - "\x7CE\x5\x277\x13C\x2\x7CE\x7CF\x5\x279\x13D\x2\x7CF\x18E\x3\x2\x2\x2"+ - "\x7D0\x7D1\x5\x27F\x140\x2\x7D1\x7D2\x5\x281\x141\x2\x7D2\x7D3\x5\x27D"+ - "\x13F\x2\x7D3\x7D4\x5\x26B\x136\x2\x7D4\x7D5\x5\x275\x13B\x2\x7D5\x7D6"+ - "\x5\x267\x134\x2\x7D6\x190\x3\x2\x2\x2\x7D7\x7D8\x5\x27F\x140\x2\x7D8"+ - "\x7D9\x5\x283\x142\x2\x7D9\x7DA\x5\x25D\x12F\x2\x7DA\x192\x3\x2\x2\x2"+ - "\x7DB\x7DC\x5\x281\x141\x2\x7DC\x7DD\x5\x25B\x12E\x2\x7DD\x7DE\x5\x25D"+ - "\x12F\x2\x7DE\x194\x3\x2\x2\x2\x7DF\x7E0\x5\x281\x141\x2\x7E0\x7E1\x5"+ - "\x263\x132\x2\x7E1\x7E2\x5\x289\x145\x2\x7E2\x7E3\x5\x281\x141\x2\x7E3"+ - "\x196\x3\x2\x2\x2\x7E4\x7E5\x5\x281\x141\x2\x7E5\x7E6\x5\x269\x135\x2"+ - "\x7E6\x7E7\x5\x263\x132\x2\x7E7\x7E8\x5\x275\x13B\x2\x7E8\x198\x3\x2\x2"+ - "\x2\x7E9\x7EA\x5\x281\x141\x2\x7EA\x7EB\x5\x26B\x136\x2\x7EB\x7EC\x5\x273"+ - "\x13A\x2\x7EC\x7ED\x5\x263\x132\x2\x7ED\x19A\x3\x2\x2\x2\x7EE\x7EF\x5"+ - "\x281\x141\x2\x7EF\x7F0\x5\x277\x13C\x2\x7F0\x19C\x3\x2\x2\x2\x7F1\x7F2"+ - "\x5\x281\x141\x2\x7F2\x7F3\x5\x27D\x13F\x2\x7F3\x7F4\x5\x283\x142\x2\x7F4"+ - "\x7F5\x5\x263\x132\x2\x7F5\x19E\x3\x2\x2\x2\x7F6\x7F7\x5\x281\x141\x2"+ - "\x7F7\x7F8\x5\x28B\x146\x2\x7F8\x7F9\x5\x279\x13D\x2\x7F9\x7FA\x5\x263"+ - "\x132\x2\x7FA\x1A0\x3\x2\x2\x2\x7FB\x7FC\x5\x281\x141\x2\x7FC\x7FD\x5"+ - "\x28B\x146\x2\x7FD\x7FE\x5\x279\x13D\x2\x7FE\x7FF\x5\x263\x132\x2\x7FF"+ - "\x800\x5\x277\x13C\x2\x800\x801\x5\x265\x133\x2\x801\x1A2\x3\x2\x2\x2"+ - "\x802\x803\x5\x283\x142\x2\x803\x804\x5\x275\x13B\x2\x804\x805\x5\x271"+ - "\x139\x2\x805\x806\x5\x277\x13C\x2\x806\x807\x5\x25B\x12E\x2\x807\x808"+ - "\x5\x261\x131\x2\x808\x1A4\x3\x2\x2\x2\x809\x80A\x5\x283\x142\x2\x80A"+ - "\x80B\x5\x275\x13B\x2\x80B\x80C\x5\x271\x139\x2\x80C\x80D\x5\x277\x13C"+ - "\x2\x80D\x80E\x5\x25F\x130\x2\x80E\x80F\x5\x26F\x138\x2\x80F\x1A6\x3\x2"+ - "\x2\x2\x810\x811\x5\x283\x142\x2\x811\x812\x5\x275\x13B\x2\x812\x813\x5"+ - "\x281\x141\x2\x813\x814\x5\x26B\x136\x2\x814\x815\x5\x271\x139\x2\x815"+ - "\x1A8\x3\x2\x2\x2\x816\x817\x5\x285\x143\x2\x817\x818\x5\x25B\x12E\x2"+ - "\x818\x819\x5\x27D\x13F\x2\x819\x81A\x5\x26B\x136\x2\x81A\x81B\x5\x25B"+ - "\x12E\x2\x81B\x81C\x5\x275\x13B\x2\x81C\x81D\x5\x281\x141\x2\x81D\x1AA"+ - "\x3\x2\x2\x2\x81E\x81F\x5\x285\x143\x2\x81F\x820\x5\x263\x132\x2\x820"+ - "\x821\x5\x27D\x13F\x2\x821\x822\x5\x27F\x140\x2\x822\x823\x5\x26B\x136"+ - "\x2\x823\x824\x5\x277\x13C\x2\x824\x825\x5\x275\x13B\x2\x825\x1AC\x3\x2"+ - "\x2\x2\x826\x827\x5\x287\x144\x2\x827\x828\x5\x263\x132\x2\x828\x829\x5"+ - "\x275\x13B\x2\x829\x82A\x5\x261\x131\x2\x82A\x1AE\x3\x2\x2\x2\x82B\x82C"+ - "\x5\x287\x144\x2\x82C\x82D\x5\x269\x135\x2\x82D\x82E\x5\x26B\x136\x2\x82E"+ - "\x82F\x5\x271\x139\x2\x82F\x830\x5\x263\x132\x2\x830\x1B0\x3\x2\x2\x2"+ - "\x831\x832\x5\x287\x144\x2\x832\x833\x5\x26B\x136\x2\x833\x834\x5\x261"+ - "\x131\x2\x834\x835\x5\x281\x141\x2\x835\x836\x5\x269\x135\x2\x836\x1B2"+ - "\x3\x2\x2\x2\x837\x838\x5\x287\x144\x2\x838\x839\x5\x26B\x136\x2\x839"+ - "\x83A\x5\x281\x141\x2\x83A\x83B\x5\x269\x135\x2\x83B\x1B4\x3\x2\x2\x2"+ - "\x83C\x83D\x5\x287\x144\x2\x83D\x83E\x5\x26B\x136\x2\x83E\x83F\x5\x281"+ - "\x141\x2\x83F\x840\x5\x269\x135\x2\x840\x841\x5\x263\x132\x2\x841\x842"+ - "\x5\x285\x143\x2\x842\x843\x5\x263\x132\x2\x843\x844\x5\x275\x13B\x2\x844"+ - "\x845\x5\x281\x141\x2\x845\x846\x5\x27F\x140\x2\x846\x1B6\x3\x2\x2\x2"+ - "\x847\x848\x5\x287\x144\x2\x848\x849\x5\x27D\x13F\x2\x849\x84A\x5\x26B"+ - "\x136\x2\x84A\x84B\x5\x281\x141\x2\x84B\x84C\x5\x263\x132\x2\x84C\x1B8"+ - "\x3\x2\x2\x2\x84D\x84E\x5\x289\x145\x2\x84E\x84F\x5\x277\x13C\x2\x84F"+ - "\x850\x5\x27D\x13F\x2\x850\x1BA\x3\x2\x2\x2\x851\x852\a<\x2\x2\x852\x853"+ - "\a?\x2\x2\x853\x1BC\x3\x2\x2\x2\x854\x855\a\x31\x2\x2\x855\x1BE\x3\x2"+ - "\x2\x2\x856\x857\a^\x2\x2\x857\x1C0\x3\x2\x2\x2\x858\x859\a?\x2\x2\x859"+ - "\x1C2\x3\x2\x2\x2\x85A\x85B\a@\x2\x2\x85B\x85F\a?\x2\x2\x85C\x85D\a?\x2"+ - "\x2\x85D\x85F\a@\x2\x2\x85E\x85A\x3\x2\x2\x2\x85E\x85C\x3\x2\x2\x2\x85F"+ - "\x1C4\x3\x2\x2\x2\x860\x861\a@\x2\x2\x861\x1C6\x3\x2\x2\x2\x862\x863\a"+ - ">\x2\x2\x863\x867\a?\x2\x2\x864\x865\a?\x2\x2\x865\x867\a>\x2\x2\x866"+ - "\x862\x3\x2\x2\x2\x866\x864\x3\x2\x2\x2\x867\x1C8\x3\x2\x2\x2\x868\x869"+ - "\a*\x2\x2\x869\x1CA\x3\x2\x2\x2\x86A\x86B\a>\x2\x2\x86B\x1CC\x3\x2\x2"+ - "\x2\x86C\x86D\a/\x2\x2\x86D\x1CE\x3\x2\x2\x2\x86E\x86F\a,\x2\x2\x86F\x1D0"+ - "\x3\x2\x2\x2\x870\x871\a>\x2\x2\x871\x875\a@\x2\x2\x872\x873\a@\x2\x2"+ - "\x873\x875\a>\x2\x2\x874\x870\x3\x2\x2\x2\x874\x872\x3\x2\x2\x2\x875\x1D2"+ - "\x3\x2\x2\x2\x876\x877\a-\x2\x2\x877\x1D4\x3\x2\x2\x2\x878\x879\a`\x2"+ - "\x2\x879\x1D6\x3\x2\x2\x2\x87A\x87B\a+\x2\x2\x87B\x1D8\x3\x2\x2\x2\x87C"+ - "\x87E\x5\x24D\x127\x2\x87D\x87C\x3\x2\x2\x2\x87E\x881\x3\x2\x2\x2\x87F"+ - "\x87D\x3\x2\x2\x2\x87F\x880\x3\x2\x2\x2\x880\x882\x3\x2\x2\x2\x881\x87F"+ - "\x3\x2\x2\x2\x882\x883\x5Y-\x2\x883\x884\x5\x8DG\x2\x884\x1DA\x3\x2\x2"+ - "\x2\x885\x887\x5\x24D\x127\x2\x886\x885\x3\x2\x2\x2\x887\x88A\x3\x2\x2"+ - "\x2\x888\x886\x3\x2\x2\x2\x888\x889\x3\x2\x2\x2\x889\x88B\x3\x2\x2\x2"+ - "\x88A\x888\x3\x2\x2\x2\x88B\x88C\x5Y-\x2\x88C\x88D\x5\x26B\x136\x2\x88D"+ - "\x88E\x5\x265\x133\x2\x88E\x1DC\x3\x2\x2\x2\x88F\x891\x5\x24D\x127\x2"+ - "\x890\x88F\x3\x2\x2\x2\x891\x894\x3\x2\x2\x2\x892\x890\x3\x2\x2\x2\x892"+ - "\x893\x3\x2\x2\x2\x893\x895\x3\x2\x2\x2\x894\x892\x3\x2\x2\x2\x895\x896"+ - "\x5Y-\x2\x896\x897\x5\x263\x132\x2\x897\x898\x5\x271\x139\x2\x898\x899"+ - "\x5\x27F\x140\x2\x899\x89A\x5\x263\x132\x2\x89A\x89B\x5\x26B\x136\x2\x89B"+ - "\x89C\x5\x265\x133\x2\x89C\x1DE\x3\x2\x2\x2\x89D\x89F\x5\x24D\x127\x2"+ - "\x89E\x89D\x3\x2\x2\x2\x89F\x8A2\x3\x2\x2\x2\x8A0\x89E\x3\x2\x2\x2\x8A0"+ - "\x8A1\x3\x2\x2\x2\x8A1\x8A3\x3\x2\x2\x2\x8A2\x8A0\x3\x2\x2\x2\x8A3\x8A4"+ - "\x5Y-\x2\x8A4\x8A5\x5\x263\x132\x2\x8A5\x8A6\x5\x271\x139\x2\x8A6\x8A7"+ - "\x5\x27F\x140\x2\x8A7\x8A8\x5\x263\x132\x2\x8A8\x1E0\x3\x2\x2\x2\x8A9"+ - "\x8AB\x5\x24D\x127\x2\x8AA\x8A9\x3\x2\x2\x2\x8AB\x8AE\x3\x2\x2\x2\x8AC"+ - "\x8AA\x3\x2\x2\x2\x8AC\x8AD\x3\x2\x2\x2\x8AD\x8AF\x3\x2\x2\x2\x8AE\x8AC"+ - "\x3\x2\x2\x2\x8AF\x8B0\x5Y-\x2\x8B0\x8B1\x5\x263\x132\x2\x8B1\x8B2\x5"+ - "\x275\x13B\x2\x8B2\x8B6\x5\x261\x131\x2\x8B3\x8B5\x5\x24D\x127\x2\x8B4"+ - "\x8B3\x3\x2\x2\x2\x8B5\x8B8\x3\x2\x2\x2\x8B6\x8B4\x3\x2\x2\x2\x8B6\x8B7"+ - "\x3\x2\x2\x2\x8B7\x8B9\x3\x2\x2\x2\x8B8\x8B6\x3\x2\x2\x2\x8B9\x8BA\x5"+ - "\x26B\x136\x2\x8BA\x8BB\x5\x265\x133\x2\x8BB\x1E2\x3\x2\x2\x2\x8BC\x8BD"+ - "\a]\x2\x2\x8BD\x1E4\x3\x2\x2\x2\x8BE\x8BF\a_\x2\x2\x8BF\x1E6\x3\x2\x2"+ - "\x2\x8C0\x8C6\a$\x2\x2\x8C1\x8C5\n\x2\x2\x2\x8C2\x8C3\a$\x2\x2\x8C3\x8C5"+ - "\a$\x2\x2\x8C4\x8C1\x3\x2\x2\x2\x8C4\x8C2\x3\x2\x2\x2\x8C5\x8C8\x3\x2"+ - "\x2\x2\x8C6\x8C4\x3\x2\x2\x2\x8C6\x8C7\x3\x2\x2\x2\x8C7\x8C9\x3\x2\x2"+ - "\x2\x8C8\x8C6\x3\x2\x2\x2\x8C9\x8CA\a$\x2\x2\x8CA\x1E8\x3\x2\x2\x2\x8CB"+ - "\x8CC\a(\x2\x2\x8CC\x8CD\aQ\x2\x2\x8CD\x8CF\x3\x2\x2\x2\x8CE\x8D0\t\x3"+ - "\x2\x2\x8CF\x8CE\x3\x2\x2\x2\x8D0\x8D1\x3\x2\x2\x2\x8D1\x8CF\x3\x2\x2"+ - "\x2\x8D1\x8D2\x3\x2\x2\x2\x8D2\x8D4\x3\x2\x2\x2\x8D3\x8D5\a(\x2\x2\x8D4"+ - "\x8D3\x3\x2\x2\x2\x8D4\x8D5\x3\x2\x2\x2\x8D5\x1EA\x3\x2\x2\x2\x8D6\x8D7"+ - "\a(\x2\x2\x8D7\x8D8\aJ\x2\x2\x8D8\x8DA\x3\x2\x2\x2\x8D9\x8DB\t\x4\x2\x2"+ - "\x8DA\x8D9\x3\x2\x2\x2\x8DB\x8DC\x3\x2\x2\x2\x8DC\x8DA\x3\x2\x2\x2\x8DC"+ - "\x8DD\x3\x2\x2\x2\x8DD\x8DF\x3\x2\x2\x2\x8DE\x8E0\a(\x2\x2\x8DF\x8DE\x3"+ - "\x2\x2\x2\x8DF\x8E0\x3\x2\x2\x2\x8E0\x1EC\x3\x2\x2\x2\x8E1\x8E3\x5\x1EF"+ - "\xF8\x2\x8E2\x8E4\x5\x1F5\xFB\x2\x8E3\x8E2\x3\x2\x2\x2\x8E3\x8E4\x3\x2"+ - "\x2\x2\x8E4\x8E9\x3\x2\x2\x2\x8E5\x8E6\x5\x1FD\xFF\x2\x8E6\x8E7\x5\x1F5"+ - "\xFB\x2\x8E7\x8E9\x3\x2\x2\x2\x8E8\x8E1\x3\x2\x2\x2\x8E8\x8E5\x3\x2\x2"+ - "\x2\x8E9\x1EE\x3\x2\x2\x2\x8EA\x8EB\x5\x1FD\xFF\x2\x8EB\x8EC\x5\x1F7\xFC"+ - "\x2\x8EC\x8FB\x3\x2\x2\x2\x8ED\x8EE\x5\x1FD\xFF\x2\x8EE\x8F0\a\x30\x2"+ - "\x2\x8EF\x8F1\x5\x1FD\xFF\x2\x8F0\x8EF\x3\x2\x2\x2\x8F0\x8F1\x3\x2\x2"+ - "\x2\x8F1\x8F3\x3\x2\x2\x2\x8F2\x8F4\x5\x1F7\xFC\x2\x8F3\x8F2\x3\x2\x2"+ - "\x2\x8F3\x8F4\x3\x2\x2\x2\x8F4\x8FB\x3\x2\x2\x2\x8F5\x8F6\a\x30\x2\x2"+ - "\x8F6\x8F8\x5\x1FD\xFF\x2\x8F7\x8F9\x5\x1F7\xFC\x2\x8F8\x8F7\x3\x2\x2"+ - "\x2\x8F8\x8F9\x3\x2\x2\x2\x8F9\x8FB\x3\x2\x2\x2\x8FA\x8EA\x3\x2\x2\x2"+ - "\x8FA\x8ED\x3\x2\x2\x2\x8FA\x8F5\x3\x2\x2\x2\x8FB\x1F0\x3\x2\x2\x2\x8FC"+ - "\x8FE\x5\x1FD\xFF\x2\x8FD\x8FF\x5\x1F3\xFA\x2\x8FE\x8FD\x3\x2\x2\x2\x8FE"+ - "\x8FF\x3\x2\x2\x2\x8FF\x1F2\x3\x2\x2\x2\x900\x901\t\x5\x2\x2\x901\x1F4"+ - "\x3\x2\x2\x2\x902\x903\t\x6\x2\x2\x903\x1F6\x3\x2\x2\x2\x904\x906\x5\x1F9"+ - "\xFD\x2\x905\x907\x5\x1FB\xFE\x2\x906\x905\x3\x2\x2\x2\x906\x907\x3\x2"+ - "\x2\x2\x907\x909\x3\x2\x2\x2\x908\x90A\x5\x257\x12C\x2\x909\x908\x3\x2"+ - "\x2\x2\x90A\x90B\x3\x2\x2\x2\x90B\x909\x3\x2\x2\x2\x90B\x90C\x3\x2\x2"+ - "\x2\x90C\x1F8\x3\x2\x2\x2\x90D\x90E\t\a\x2\x2\x90E\x1FA\x3\x2\x2\x2\x90F"+ - "\x910\t\b\x2\x2\x910\x1FC\x3\x2\x2\x2\x911\x913\x5\x257\x12C\x2\x912\x911"+ - "\x3\x2\x2\x2\x913\x914\x3\x2\x2\x2\x914\x912\x3\x2\x2\x2\x914\x915\x3"+ - "\x2\x2\x2\x915\x1FE\x3\x2\x2\x2\x916\x917\a%\x2\x2\x917\x918\x5\x201\x101"+ - "\x2\x918\x919\a%\x2\x2\x919\x200\x3\x2\x2\x2\x91A\x91C\x5\x203\x102\x2"+ - "\x91B\x91D\x5\x24D\x127\x2\x91C\x91B\x3\x2\x2\x2\x91C\x91D\x3\x2\x2\x2"+ - "\x91D\x91E\x3\x2\x2\x2\x91E\x91F\x5\x20F\x108\x2\x91F\x923\x3\x2\x2\x2"+ - "\x920\x923\x5\x203\x102\x2\x921\x923\x5\x20F\x108\x2\x922\x91A\x3\x2\x2"+ - "\x2\x922\x920\x3\x2\x2\x2\x922\x921\x3\x2\x2\x2\x923\x202\x3\x2\x2\x2"+ - "\x924\x925\x5\x205\x103\x2\x925\x926\x5\x207\x104\x2\x926\x92A\x5\x205"+ - "\x103\x2\x927\x928\x5\x207\x104\x2\x928\x929\x5\x205\x103\x2\x929\x92B"+ - "\x3\x2\x2\x2\x92A\x927\x3\x2\x2\x2\x92A\x92B\x3\x2\x2\x2\x92B\x204\x3"+ - "\x2\x2\x2\x92C\x92E\x5\x257\x12C\x2\x92D\x92C\x3\x2\x2\x2\x92E\x92F\x3"+ - "\x2\x2\x2\x92F\x92D\x3\x2\x2\x2\x92F\x930\x3\x2\x2\x2\x930\x933\x3\x2"+ - "\x2\x2\x931\x933\x5\x209\x105\x2\x932\x92D\x3\x2\x2\x2\x932\x931\x3\x2"+ - "\x2\x2\x933\x206\x3\x2\x2\x2\x934\x936\x5\x24D\x127\x2\x935\x934\x3\x2"+ - "\x2\x2\x935\x936\x3\x2\x2\x2\x936\x938\x3\x2\x2\x2\x937\x939\t\t\x2\x2"+ - "\x938\x937\x3\x2\x2\x2\x938\x939\x3\x2\x2\x2\x939\x93B\x3\x2\x2\x2\x93A"+ - "\x93C\x5\x24D\x127\x2\x93B\x93A\x3\x2\x2\x2\x93B\x93C\x3\x2\x2\x2\x93C"+ - "\x208\x3\x2\x2\x2\x93D\x940\x5\x20B\x106\x2\x93E\x940\x5\x20D\x107\x2"+ - "\x93F\x93D\x3\x2\x2\x2\x93F\x93E\x3\x2\x2\x2\x940\x20A\x3\x2\x2\x2\x941"+ - "\x94E\x5\x215\x10B\x2\x942\x94E\x5\x217\x10C\x2\x943\x94E\x5\x219\x10D"+ - "\x2\x944\x94E\x5\x21B\x10E\x2\x945\x94E\x5\x21D\x10F\x2\x946\x94E\x5\x21F"+ - "\x110\x2\x947\x94E\x5\x221\x111\x2\x948\x94E\x5\x223\x112\x2\x949\x94E"+ - "\x5\x225\x113\x2\x94A\x94E\x5\x227\x114\x2\x94B\x94E\x5\x229\x115\x2\x94C"+ - "\x94E\x5\x22B\x116\x2\x94D\x941\x3\x2\x2\x2\x94D\x942\x3\x2\x2\x2\x94D"+ - "\x943\x3\x2\x2\x2\x94D\x944\x3\x2\x2\x2\x94D\x945\x3\x2\x2\x2\x94D\x946"+ - "\x3\x2\x2\x2\x94D\x947\x3\x2\x2\x2\x94D\x948\x3\x2\x2\x2\x94D\x949\x3"+ - "\x2\x2\x2\x94D\x94A\x3\x2\x2\x2\x94D\x94B\x3\x2\x2\x2\x94D\x94C\x3\x2"+ - "\x2\x2\x94E\x20C\x3\x2\x2\x2\x94F\x95B\x5\x22D\x117\x2\x950\x95B\x5\x22F"+ - "\x118\x2\x951\x95B\x5\x231\x119\x2\x952\x95B\x5\x233\x11A\x2\x953\x95B"+ - "\x5\x235\x11B\x2\x954\x95B\x5\x237\x11C\x2\x955\x95B\x5\x239\x11D\x2\x956"+ - "\x95B\x5\x23B\x11E\x2\x957\x95B\x5\x23D\x11F\x2\x958\x95B\x5\x23F\x120"+ - "\x2\x959\x95B\x5\x241\x121\x2\x95A\x94F\x3\x2\x2\x2\x95A\x950\x3\x2\x2"+ - "\x2\x95A\x951\x3\x2\x2\x2\x95A\x952\x3\x2\x2\x2\x95A\x953\x3\x2\x2\x2"+ - "\x95A\x954\x3\x2\x2\x2\x95A\x955\x3\x2\x2\x2\x95A\x956\x3\x2\x2\x2\x95A"+ - "\x957\x3\x2\x2\x2\x95A\x958\x3\x2\x2\x2\x95A\x959\x3\x2\x2\x2\x95B\x20E"+ - "\x3\x2\x2\x2\x95C\x95E\x5\x257\x12C\x2\x95D\x95C\x3\x2\x2\x2\x95E\x95F"+ - "\x3\x2\x2\x2\x95F\x95D\x3\x2\x2\x2\x95F\x960\x3\x2\x2\x2\x960\x961\x3"+ - "\x2\x2\x2\x961\x962\x5\x213\x10A\x2\x962\x97A\x3\x2\x2\x2\x963\x965\x5"+ - "\x257\x12C\x2\x964\x963\x3\x2\x2\x2\x965\x966\x3\x2\x2\x2\x966\x964\x3"+ - "\x2\x2\x2\x966\x967\x3\x2\x2\x2\x967\x968\x3\x2\x2\x2\x968\x96A\x5\x211"+ - "\x109\x2\x969\x96B\x5\x257\x12C\x2\x96A\x969\x3\x2\x2\x2\x96B\x96C\x3"+ - "\x2\x2\x2\x96C\x96A\x3\x2\x2\x2\x96C\x96D\x3\x2\x2\x2\x96D\x974\x3\x2"+ - "\x2\x2\x96E\x970\x5\x211\x109\x2\x96F\x971\x5\x257\x12C\x2\x970\x96F\x3"+ - "\x2\x2\x2\x971\x972\x3\x2\x2\x2\x972\x970\x3\x2\x2\x2\x972\x973\x3\x2"+ - "\x2\x2\x973\x975\x3\x2\x2\x2\x974\x96E\x3\x2\x2\x2\x974\x975\x3\x2\x2"+ - "\x2\x975\x977\x3\x2\x2\x2\x976\x978\x5\x213\x10A\x2\x977\x976\x3\x2\x2"+ - "\x2\x977\x978\x3\x2\x2\x2\x978\x97A\x3\x2\x2\x2\x979\x95D\x3\x2\x2\x2"+ - "\x979\x964\x3\x2\x2\x2\x97A\x210\x3\x2\x2\x2\x97B\x97D\x5\x24D\x127\x2"+ - "\x97C\x97B\x3\x2\x2\x2\x97C\x97D\x3\x2\x2\x2\x97D\x97E\x3\x2\x2\x2\x97E"+ - "\x980\t\n\x2\x2\x97F\x981\x5\x24D\x127\x2\x980\x97F\x3\x2\x2\x2\x980\x981"+ - "\x3\x2\x2\x2\x981\x212\x3\x2\x2\x2\x982\x984\x5\x24D\x127\x2\x983\x982"+ - "\x3\x2\x2\x2\x983\x984\x3\x2\x2\x2\x984\x98D\x3\x2\x2\x2\x985\x986\x5"+ - "\x25B\x12E\x2\x986\x987\x5\x273\x13A\x2\x987\x98E\x3\x2\x2\x2\x988\x989"+ - "\x5\x279\x13D\x2\x989\x98A\x5\x273\x13A\x2\x98A\x98E\x3\x2\x2\x2\x98B"+ - "\x98E\x5\x25B\x12E\x2\x98C\x98E\x5\x279\x13D\x2\x98D\x985\x3\x2\x2\x2"+ - "\x98D\x988\x3\x2\x2\x2\x98D\x98B\x3\x2\x2\x2\x98D\x98C\x3\x2\x2\x2\x98E"+ - "\x214\x3\x2\x2\x2\x98F\x990\x5\x26D\x137\x2\x990\x991\x5\x25B\x12E\x2"+ - "\x991\x992\x5\x275\x13B\x2\x992\x993\x5\x283\x142\x2\x993\x994\x5\x25B"+ - "\x12E\x2\x994\x995\x5\x27D\x13F\x2\x995\x996\x5\x28B\x146\x2\x996\x216"+ - "\x3\x2\x2\x2\x997\x998\x5\x265\x133\x2\x998\x999\x5\x263\x132\x2\x999"+ - "\x99A\x5\x25D\x12F\x2\x99A\x99B\x5\x27D\x13F\x2\x99B\x99C\x5\x283\x142"+ - "\x2\x99C\x99D\x5\x25B\x12E\x2\x99D\x99E\x5\x27D\x13F\x2\x99E\x99F\x5\x28B"+ - "\x146\x2\x99F\x218\x3\x2\x2\x2\x9A0\x9A1\x5\x273\x13A\x2\x9A1\x9A2\x5"+ - "\x25B\x12E\x2\x9A2\x9A3\x5\x27D\x13F\x2\x9A3\x9A4\x5\x25F\x130\x2\x9A4"+ - "\x9A5\x5\x269\x135\x2\x9A5\x21A\x3\x2\x2\x2\x9A6\x9A7\x5\x25B\x12E\x2"+ - "\x9A7\x9A8\x5\x279\x13D\x2\x9A8\x9A9\x5\x27D\x13F\x2\x9A9\x9AA\x5\x26B"+ - "\x136\x2\x9AA\x9AB\x5\x271\x139\x2\x9AB\x21C\x3\x2\x2\x2\x9AC\x9AD\x5"+ - "\x273\x13A\x2\x9AD\x9AE\x5\x25B\x12E\x2\x9AE\x9AF\x5\x28B\x146\x2\x9AF"+ - "\x21E\x3\x2\x2\x2\x9B0\x9B1\x5\x26D\x137\x2\x9B1\x9B2\x5\x283\x142\x2"+ - "\x9B2\x9B3\x5\x275\x13B\x2\x9B3\x9B4\x5\x263\x132\x2\x9B4\x220\x3\x2\x2"+ - "\x2\x9B5\x9B6\x5\x26D\x137\x2\x9B6\x9B7\x5\x283\x142\x2\x9B7\x9B8\x5\x271"+ - "\x139\x2\x9B8\x9B9\x5\x28B\x146\x2\x9B9\x222\x3\x2\x2\x2\x9BA\x9BB\x5"+ - "\x25B\x12E\x2\x9BB\x9BC\x5\x283\x142\x2\x9BC\x9BD\x5\x267\x134\x2\x9BD"+ - "\x9BE\x5\x283\x142\x2\x9BE\x9BF\x5\x27F\x140\x2\x9BF\x9C0\x5\x281\x141"+ - "\x2\x9C0\x224\x3\x2\x2\x2\x9C1\x9C2\x5\x27F\x140\x2\x9C2\x9C3\x5\x263"+ - "\x132\x2\x9C3\x9C4\x5\x279\x13D\x2\x9C4\x9C5\x5\x281\x141\x2\x9C5\x9C6"+ - "\x5\x263\x132\x2\x9C6\x9C7\x5\x273\x13A\x2\x9C7\x9C8\x5\x25D\x12F\x2\x9C8"+ - "\x9C9\x5\x263\x132\x2\x9C9\x9CA\x5\x27D\x13F\x2\x9CA\x226\x3\x2\x2\x2"+ - "\x9CB\x9CC\x5\x277\x13C\x2\x9CC\x9CD\x5\x25F\x130\x2\x9CD\x9CE\x5\x281"+ - "\x141\x2\x9CE\x9CF\x5\x277\x13C\x2\x9CF\x9D0\x5\x25D\x12F\x2\x9D0\x9D1"+ - "\x5\x263\x132\x2\x9D1\x9D2\x5\x27D\x13F\x2\x9D2\x228\x3\x2\x2\x2\x9D3"+ - "\x9D4\x5\x275\x13B\x2\x9D4\x9D5\x5\x277\x13C\x2\x9D5\x9D6\x5\x285\x143"+ - "\x2\x9D6\x9D7\x5\x263\x132\x2\x9D7\x9D8\x5\x273\x13A\x2\x9D8\x9D9\x5\x25D"+ - "\x12F\x2\x9D9\x9DA\x5\x263\x132\x2\x9DA\x9DB\x5\x27D\x13F\x2\x9DB\x22A"+ - "\x3\x2\x2\x2\x9DC\x9DD\x5\x261\x131\x2\x9DD\x9DE\x5\x263\x132\x2\x9DE"+ - "\x9DF\x5\x25F\x130\x2\x9DF\x9E0\x5\x263\x132\x2\x9E0\x9E1\x5\x273\x13A"+ - "\x2\x9E1\x9E2\x5\x25D\x12F\x2\x9E2\x9E3\x5\x263\x132\x2\x9E3\x9E4\x5\x27D"+ - "\x13F\x2\x9E4\x22C\x3\x2\x2\x2\x9E5\x9E6\x5\x26D\x137\x2\x9E6\x9E7\x5"+ - "\x25B\x12E\x2\x9E7\x9E8\x5\x275\x13B\x2\x9E8\x22E\x3\x2\x2\x2\x9E9\x9EA"+ - "\x5\x265\x133\x2\x9EA\x9EB\x5\x263\x132\x2\x9EB\x9EC\x5\x25D\x12F\x2\x9EC"+ - "\x230\x3\x2\x2\x2\x9ED\x9EE\x5\x273\x13A\x2\x9EE\x9EF\x5\x25B\x12E\x2"+ - "\x9EF\x9F0\x5\x27D\x13F\x2\x9F0\x232\x3\x2\x2\x2\x9F1\x9F2\x5\x25B\x12E"+ - "\x2\x9F2\x9F3\x5\x279\x13D\x2\x9F3\x9F4\x5\x27D\x13F\x2\x9F4\x234\x3\x2"+ - "\x2\x2\x9F5\x9F6\x5\x26D\x137\x2\x9F6\x9F7\x5\x283\x142\x2\x9F7\x9F8\x5"+ - "\x275\x13B\x2\x9F8\x236\x3\x2\x2\x2\x9F9\x9FA\x5\x26D\x137\x2\x9FA\x9FB"+ - "\x5\x283\x142\x2\x9FB\x9FC\x5\x271\x139\x2\x9FC\x238\x3\x2\x2\x2\x9FD"+ - "\x9FE\x5\x25B\x12E\x2\x9FE\x9FF\x5\x283\x142\x2\x9FF\xA00\x5\x267\x134"+ - "\x2\xA00\x23A\x3\x2\x2\x2\xA01\xA02\x5\x27F\x140\x2\xA02\xA03\x5\x263"+ - "\x132\x2\xA03\xA04\x5\x279\x13D\x2\xA04\x23C\x3\x2\x2\x2\xA05\xA06\x5"+ - "\x277\x13C\x2\xA06\xA07\x5\x25F\x130\x2\xA07\xA08\x5\x281\x141\x2\xA08"+ - "\x23E\x3\x2\x2\x2\xA09\xA0A\x5\x275\x13B\x2\xA0A\xA0B\x5\x277\x13C\x2"+ - "\xA0B\xA0C\x5\x285\x143\x2\xA0C\x240\x3\x2\x2\x2\xA0D\xA0E\x5\x261\x131"+ - "\x2\xA0E\xA0F\x5\x263\x132\x2\xA0F\xA10\x5\x25F\x130\x2\xA10\x242\x3\x2"+ - "\x2\x2\xA11\xA12\a\xF\x2\x2\xA12\xA15\a\f\x2\x2\xA13\xA15\t\v\x2\x2\xA14"+ - "\xA11\x3\x2\x2\x2\xA14\xA13\x3\x2\x2\x2\xA15\x244\x3\x2\x2\x2\xA16\xA18"+ - "\x5Q)\x2\xA17\xA16\x3\x2\x2\x2\xA17\xA18\x3\x2\x2\x2\xA18\xA19\x3\x2\x2"+ - "\x2\xA19\xA1A\x5\x169\xB5\x2\xA1A\xA1F\x5\x24D\x127\x2\xA1B\xA1E\x5\x251"+ - "\x129\x2\xA1C\xA1E\n\v\x2\x2\xA1D\xA1B\x3\x2\x2\x2\xA1D\xA1C\x3\x2\x2"+ - "\x2\xA1E\xA21\x3\x2\x2\x2\xA1F\xA1D\x3\x2\x2\x2\xA1F\xA20\x3\x2\x2\x2"+ - "\xA20\x246\x3\x2\x2\x2\xA21\xA1F\x3\x2\x2\x2\xA22\xA25\x5\x249\x125\x2"+ - "\xA23\xA26\x5\x251\x129\x2\xA24\xA26\n\f\x2\x2\xA25\xA23\x3\x2\x2\x2\xA25"+ - "\xA24\x3\x2\x2\x2\xA26\xA2B\x3\x2\x2\x2\xA27\xA2A\x5\x251\x129\x2\xA28"+ - "\xA2A\n\v\x2\x2\xA29\xA27\x3\x2\x2\x2\xA29\xA28\x3\x2\x2\x2\xA2A\xA2D"+ - "\x3\x2\x2\x2\xA2B\xA29\x3\x2\x2\x2\xA2B\xA2C\x3\x2\x2\x2\xA2C\x248\x3"+ - "\x2\x2\x2\xA2D\xA2B\x3\x2\x2\x2\xA2E\xA2F\a)\x2\x2\xA2F\x24A\x3\x2\x2"+ - "\x2\xA30\xA31\a\x61\x2\x2\xA31\x24C\x3\x2\x2\x2\xA32\xA33\t\r\x2\x2\xA33"+ - "\x24E\x3\x2\x2\x2\xA34\xA38\n\xE\x2\x2\xA35\xA37\n\xF\x2\x2\xA36\xA35"+ - "\x3\x2\x2\x2\xA37\xA3A\x3\x2\x2\x2\xA38\xA36\x3\x2\x2\x2\xA38\xA39\x3"+ - "\x2\x2\x2\xA39\xA44\x3\x2\x2\x2\xA3A\xA38\x3\x2\x2\x2\xA3B\xA3D\x5\x1E3"+ - "\xF2\x2\xA3C\xA3E\n\x10\x2\x2\xA3D\xA3C\x3\x2\x2\x2\xA3E\xA3F\x3\x2\x2"+ - "\x2\xA3F\xA3D\x3\x2\x2\x2\xA3F\xA40\x3\x2\x2\x2\xA40\xA41\x3\x2\x2\x2"+ - "\xA41\xA42\x5\x1E5\xF3\x2\xA42\xA44\x3\x2\x2\x2\xA43\xA34\x3\x2\x2\x2"+ - "\xA43\xA3B\x3\x2\x2\x2\xA44\x250\x3\x2\x2\x2\xA45\xA47\t\r\x2\x2\xA46"+ - "\xA45\x3\x2\x2\x2\xA47\xA4A\x3\x2\x2\x2\xA48\xA46\x3\x2\x2\x2\xA48\xA49"+ - "\x3\x2\x2\x2\xA49\xA4B\x3\x2\x2\x2\xA4A\xA48\x3\x2\x2\x2\xA4B\xA4F\x5"+ - "\x24B\x126\x2\xA4C\xA4E\t\r\x2\x2\xA4D\xA4C\x3\x2\x2\x2\xA4E\xA51\x3\x2"+ - "\x2\x2\xA4F\xA4D\x3\x2\x2\x2\xA4F\xA50\x3\x2\x2\x2\xA50\xA53\x3\x2\x2"+ - "\x2\xA51\xA4F\x3\x2\x2\x2\xA52\xA54\a\xF\x2\x2\xA53\xA52\x3\x2\x2\x2\xA53"+ - "\xA54\x3\x2\x2\x2\xA54\xA55\x3\x2\x2\x2\xA55\xA56\a\f\x2\x2\xA56\x252"+ - "\x3\x2\x2\x2\xA57\xA59\a}\x2\x2\xA58\xA5A\t\x4\x2\x2\xA59\xA58\x3\x2\x2"+ - "\x2\xA5A\xA5B\x3\x2\x2\x2\xA5B\xA59\x3\x2\x2\x2\xA5B\xA5C\x3\x2\x2\x2"+ - "\xA5C\xA5D\x3\x2\x2\x2\xA5D\xA5F\a/\x2\x2\xA5E\xA60\t\x4\x2\x2\xA5F\xA5E"+ - "\x3\x2\x2\x2\xA60\xA61\x3\x2\x2\x2\xA61\xA5F\x3\x2\x2\x2\xA61\xA62\x3"+ - "\x2\x2\x2\xA62\xA63\x3\x2\x2\x2\xA63\xA65\a/\x2\x2\xA64\xA66\t\x4\x2\x2"+ - "\xA65\xA64\x3\x2\x2\x2\xA66\xA67\x3\x2\x2\x2\xA67\xA65\x3\x2\x2\x2\xA67"+ - "\xA68\x3\x2\x2\x2\xA68\xA69\x3\x2\x2\x2\xA69\xA6B\a/\x2\x2\xA6A\xA6C\t"+ - "\x4\x2\x2\xA6B\xA6A\x3\x2\x2\x2\xA6C\xA6D\x3\x2\x2\x2\xA6D\xA6B\x3\x2"+ - "\x2\x2\xA6D\xA6E\x3\x2\x2\x2\xA6E\xA6F\x3\x2\x2\x2\xA6F\xA71\a/\x2\x2"+ - "\xA70\xA72\t\x4\x2\x2\xA71\xA70\x3\x2\x2\x2\xA72\xA73\x3\x2\x2\x2\xA73"+ - "\xA71\x3\x2\x2\x2\xA73\xA74\x3\x2\x2\x2\xA74\xA75\x3\x2\x2\x2\xA75\xA76"+ - "\a\x7F\x2\x2\xA76\x254\x3\x2\x2\x2\xA77\xA78\t\x11\x2\x2\xA78\x256\x3"+ - "\x2\x2\x2\xA79\xA7A\t\x12\x2\x2\xA7A\x258\x3\x2\x2\x2\xA7B\xA7C\t\x13"+ - "\x2\x2\xA7C\x25A\x3\x2\x2\x2\xA7D\xA7E\t\x14\x2\x2\xA7E\x25C\x3\x2\x2"+ - "\x2\xA7F\xA80\t\x15\x2\x2\xA80\x25E\x3\x2\x2\x2\xA81\xA82\t\x16\x2\x2"+ - "\xA82\x260\x3\x2\x2\x2\xA83\xA84\t\x17\x2\x2\xA84\x262\x3\x2\x2\x2\xA85"+ - "\xA86\t\x18\x2\x2\xA86\x264\x3\x2\x2\x2\xA87\xA88\t\x19\x2\x2\xA88\x266"+ - "\x3\x2\x2\x2\xA89\xA8A\t\x1A\x2\x2\xA8A\x268\x3\x2\x2\x2\xA8B\xA8C\t\x1B"+ - "\x2\x2\xA8C\x26A\x3\x2\x2\x2\xA8D\xA8E\t\x1C\x2\x2\xA8E\x26C\x3\x2\x2"+ - "\x2\xA8F\xA90\t\x1D\x2\x2\xA90\x26E\x3\x2\x2\x2\xA91\xA92\t\x1E\x2\x2"+ - "\xA92\x270\x3\x2\x2\x2\xA93\xA94\t\x1F\x2\x2\xA94\x272\x3\x2\x2\x2\xA95"+ - "\xA96\t \x2\x2\xA96\x274\x3\x2\x2\x2\xA97\xA98\t!\x2\x2\xA98\x276\x3\x2"+ - "\x2\x2\xA99\xA9A\t\"\x2\x2\xA9A\x278\x3\x2\x2\x2\xA9B\xA9C\t#\x2\x2\xA9C"+ - "\x27A\x3\x2\x2\x2\xA9D\xA9E\t$\x2\x2\xA9E\x27C\x3\x2\x2\x2\xA9F\xAA0\t"+ - "%\x2\x2\xAA0\x27E\x3\x2\x2\x2\xAA1\xAA2\t&\x2\x2\xAA2\x280\x3\x2\x2\x2"+ - "\xAA3\xAA4\t\'\x2\x2\xAA4\x282\x3\x2\x2\x2\xAA5\xAA6\t(\x2\x2\xAA6\x284"+ - "\x3\x2\x2\x2\xAA7\xAA8\t)\x2\x2\xAA8\x286\x3\x2\x2\x2\xAA9\xAAA\t*\x2"+ - "\x2\xAAA\x288\x3\x2\x2\x2\xAAB\xAAC\t+\x2\x2\xAAC\x28A\x3\x2\x2\x2\xAAD"+ - "\xAAE\t,\x2\x2\xAAE\x28C\x3\x2\x2\x2\xAAF\xAB0\t-\x2\x2\xAB0\x28E\x3\x2"+ - "\x2\x2\xAB1\xAB2\v\x2\x2\x2\xAB2\x290\x3\x2\x2\x2\x44\x2\x85E\x866\x874"+ - "\x87F\x888\x892\x8A0\x8AC\x8B6\x8C4\x8C6\x8D1\x8D4\x8DC\x8DF\x8E3\x8E8"+ - "\x8F0\x8F3\x8F8\x8FA\x8FE\x906\x90B\x914\x91C\x922\x92A\x92F\x932\x935"+ - "\x938\x93B\x93F\x94D\x95A\x95F\x966\x96C\x972\x974\x977\x979\x97C\x980"+ - "\x983\x98D\xA14\xA17\xA1D\xA1F\xA25\xA29\xA2B\xA38\xA3F\xA43\xA48\xA4F"+ - "\xA53\xA5B\xA61\xA67\xA6D\xA73\x2"; + "\x2\x2\x1CD\x2\xE7\x1CF\x2\x2\x1D1\x2\x2\x1D3\x2\x2\x1D5\x2\x2\x1D7\x2"+ + "\x2\x1D9\x2\x2\x1DB\x2\xE8\x1DD\x2\x2\x1DF\x2\x2\x1E1\x2\x2\x1E3\x2\x2"+ + "\x1E5\x2\x2\x1E7\x2\x2\x1E9\x2\x2\x1EB\x2\x2\x1ED\x2\x2\x1EF\x2\x2\x1F1"+ + "\x2\x2\x1F3\x2\x2\x1F5\x2\x2\x1F7\x2\x2\x1F9\x2\x2\x1FB\x2\x2\x1FD\x2"+ + "\x2\x1FF\x2\x2\x201\x2\x2\x203\x2\x2\x205\x2\x2\x207\x2\x2\x209\x2\x2"+ + "\x20B\x2\x2\x20D\x2\x2\x20F\x2\x2\x211\x2\x2\x213\x2\x2\x215\x2\x2\x217"+ + "\x2\x2\x219\x2\x2\x21B\x2\x2\x21D\x2\x2\x21F\x2\xE9\x221\x2\xEA\x223\x2"+ + "\xEB\x225\x2\xEC\x227\x2\xED\x229\x2\xEE\x22B\x2\xEF\x22D\x2\x2\x22F\x2"+ + "\x2\x231\x2\x2\x233\x2\x2\x235\x2\x2\x237\x2\x2\x239\x2\x2\x23B\x2\x2"+ + "\x23D\x2\x2\x23F\x2\x2\x241\x2\x2\x243\x2\x2\x245\x2\x2\x247\x2\x2\x249"+ + "\x2\x2\x24B\x2\x2\x24D\x2\x2\x24F\x2\x2\x251\x2\x2\x253\x2\x2\x255\x2"+ + "\x2\x257\x2\x2\x259\x2\x2\x25B\x2\x2\x25D\x2\x2\x25F\x2\x2\x261\x2\x2"+ + "\x263\x2\x2\x265\x2\x2\x267\x2\xF0\x3\x2-\x5\x2\f\f\xF\xF\x202A\x202B"+ + "\x5\x2\f\f\xF\xF$$\x3\x2\x32:\x4\x2\x32;\x43H\x4\x2\'(``\x5\x2##%%\x42"+ + "\x42\x4\x2\x46G\x66g\x4\x2--//\x4\x2./\x31\x31\x4\x2\x30\x30<<\x4\x2\v"+ + "\v\"\"\t\x2\v\f\xF\xF\"=??\x42\x42]`~~\v\x2\v\f\xF\xF\".\x30\x30<=??\x42"+ + "\x42]`~~\x6\x2\f\f\xF\xF##^_\f\x2\x43\\\x61\x61\x63|\xA6\xA6\xB8\xB8\xBE"+ + "\xBE\xC5\xC5\x155\x155\x2015\x2015\x2020\x2020\x3\x2\x32;\r\x2\x32;\x43"+ + "\\\x61\x61\x63|\xA6\xA6\xB8\xB8\xBE\xBE\xC5\xC5\x155\x155\x2015\x2015"+ + "\x2020\x2020\x4\x2\x43\x43\x63\x63\x4\x2\x44\x44\x64\x64\x4\x2\x45\x45"+ + "\x65\x65\x4\x2\x46\x46\x66\x66\x4\x2GGgg\x4\x2HHhh\x4\x2IIii\x4\x2JJj"+ + "j\x4\x2KKkk\x4\x2LLll\x4\x2MMmm\x4\x2NNnn\x4\x2OOoo\x4\x2PPpp\x4\x2QQ"+ + "qq\x4\x2RRrr\x4\x2SSss\x4\x2TTtt\x4\x2UUuu\x4\x2VVvv\x4\x2WWww\x4\x2X"+ + "Xxx\x4\x2YYyy\x4\x2ZZzz\x4\x2[[{{\x4\x2\\\\||\xA2E\x2\x3\x3\x2\x2\x2\x2"+ + "\x5\x3\x2\x2\x2\x2\a\x3\x2\x2\x2\x2\t\x3\x2\x2\x2\x2\v\x3\x2\x2\x2\x2"+ + "\r\x3\x2\x2\x2\x2\xF\x3\x2\x2\x2\x2\x11\x3\x2\x2\x2\x2\x13\x3\x2\x2\x2"+ + "\x2\x15\x3\x2\x2\x2\x2\x17\x3\x2\x2\x2\x2\x19\x3\x2\x2\x2\x2\x1B\x3\x2"+ + "\x2\x2\x2\x1D\x3\x2\x2\x2\x2\x1F\x3\x2\x2\x2\x2!\x3\x2\x2\x2\x2#\x3\x2"+ + "\x2\x2\x2%\x3\x2\x2\x2\x2\'\x3\x2\x2\x2\x2)\x3\x2\x2\x2\x2+\x3\x2\x2\x2"+ + "\x2-\x3\x2\x2\x2\x2/\x3\x2\x2\x2\x2\x31\x3\x2\x2\x2\x2\x33\x3\x2\x2\x2"+ + "\x2\x35\x3\x2\x2\x2\x2\x37\x3\x2\x2\x2\x2\x39\x3\x2\x2\x2\x2;\x3\x2\x2"+ + "\x2\x2=\x3\x2\x2\x2\x2?\x3\x2\x2\x2\x2\x41\x3\x2\x2\x2\x2\x43\x3\x2\x2"+ + "\x2\x2\x45\x3\x2\x2\x2\x2G\x3\x2\x2\x2\x2I\x3\x2\x2\x2\x2K\x3\x2\x2\x2"+ + "\x2M\x3\x2\x2\x2\x2O\x3\x2\x2\x2\x2Q\x3\x2\x2\x2\x2S\x3\x2\x2\x2\x2U\x3"+ + "\x2\x2\x2\x2W\x3\x2\x2\x2\x2Y\x3\x2\x2\x2\x2[\x3\x2\x2\x2\x2]\x3\x2\x2"+ + "\x2\x2_\x3\x2\x2\x2\x2\x61\x3\x2\x2\x2\x2\x63\x3\x2\x2\x2\x2\x65\x3\x2"+ + "\x2\x2\x2g\x3\x2\x2\x2\x2i\x3\x2\x2\x2\x2k\x3\x2\x2\x2\x2m\x3\x2\x2\x2"+ + "\x2o\x3\x2\x2\x2\x2q\x3\x2\x2\x2\x2s\x3\x2\x2\x2\x2u\x3\x2\x2\x2\x2w\x3"+ + "\x2\x2\x2\x2y\x3\x2\x2\x2\x2{\x3\x2\x2\x2\x2}\x3\x2\x2\x2\x2\x7F\x3\x2"+ + "\x2\x2\x2\x81\x3\x2\x2\x2\x2\x83\x3\x2\x2\x2\x2\x85\x3\x2\x2\x2\x2\x87"+ + "\x3\x2\x2\x2\x2\x89\x3\x2\x2\x2\x2\x8B\x3\x2\x2\x2\x2\x8D\x3\x2\x2\x2"+ + "\x2\x8F\x3\x2\x2\x2\x2\x91\x3\x2\x2\x2\x2\x93\x3\x2\x2\x2\x2\x95\x3\x2"+ + "\x2\x2\x2\x97\x3\x2\x2\x2\x2\x99\x3\x2\x2\x2\x2\x9B\x3\x2\x2\x2\x2\x9D"+ + "\x3\x2\x2\x2\x2\x9F\x3\x2\x2\x2\x2\xA1\x3\x2\x2\x2\x2\xA3\x3\x2\x2\x2"+ + "\x2\xA5\x3\x2\x2\x2\x2\xA7\x3\x2\x2\x2\x2\xA9\x3\x2\x2\x2\x2\xAB\x3\x2"+ + "\x2\x2\x2\xAD\x3\x2\x2\x2\x2\xAF\x3\x2\x2\x2\x2\xB1\x3\x2\x2\x2\x2\xB3"+ + "\x3\x2\x2\x2\x2\xB5\x3\x2\x2\x2\x2\xB7\x3\x2\x2\x2\x2\xB9\x3\x2\x2\x2"+ + "\x2\xBB\x3\x2\x2\x2\x2\xBD\x3\x2\x2\x2\x2\xBF\x3\x2\x2\x2\x2\xC1\x3\x2"+ + "\x2\x2\x2\xC3\x3\x2\x2\x2\x2\xC5\x3\x2\x2\x2\x2\xC7\x3\x2\x2\x2\x2\xC9"+ + "\x3\x2\x2\x2\x2\xCB\x3\x2\x2\x2\x2\xCD\x3\x2\x2\x2\x2\xCF\x3\x2\x2\x2"+ + "\x2\xD1\x3\x2\x2\x2\x2\xD3\x3\x2\x2\x2\x2\xD5\x3\x2\x2\x2\x2\xD7\x3\x2"+ + "\x2\x2\x2\xD9\x3\x2\x2\x2\x2\xDB\x3\x2\x2\x2\x2\xDD\x3\x2\x2\x2\x2\xDF"+ + "\x3\x2\x2\x2\x2\xE1\x3\x2\x2\x2\x2\xE3\x3\x2\x2\x2\x2\xE5\x3\x2\x2\x2"+ + "\x2\xE7\x3\x2\x2\x2\x2\xE9\x3\x2\x2\x2\x2\xEB\x3\x2\x2\x2\x2\xED\x3\x2"+ + "\x2\x2\x2\xEF\x3\x2\x2\x2\x2\xF1\x3\x2\x2\x2\x2\xF3\x3\x2\x2\x2\x2\xF5"+ + "\x3\x2\x2\x2\x2\xF7\x3\x2\x2\x2\x2\xF9\x3\x2\x2\x2\x2\xFB\x3\x2\x2\x2"+ + "\x2\xFD\x3\x2\x2\x2\x2\xFF\x3\x2\x2\x2\x2\x101\x3\x2\x2\x2\x2\x103\x3"+ + "\x2\x2\x2\x2\x105\x3\x2\x2\x2\x2\x107\x3\x2\x2\x2\x2\x109\x3\x2\x2\x2"+ + "\x2\x10B\x3\x2\x2\x2\x2\x10D\x3\x2\x2\x2\x2\x10F\x3\x2\x2\x2\x2\x111\x3"+ + "\x2\x2\x2\x2\x113\x3\x2\x2\x2\x2\x115\x3\x2\x2\x2\x2\x117\x3\x2\x2\x2"+ + "\x2\x119\x3\x2\x2\x2\x2\x11B\x3\x2\x2\x2\x2\x11D\x3\x2\x2\x2\x2\x11F\x3"+ + "\x2\x2\x2\x2\x121\x3\x2\x2\x2\x2\x123\x3\x2\x2\x2\x2\x125\x3\x2\x2\x2"+ + "\x2\x127\x3\x2\x2\x2\x2\x129\x3\x2\x2\x2\x2\x12B\x3\x2\x2\x2\x2\x12D\x3"+ + "\x2\x2\x2\x2\x12F\x3\x2\x2\x2\x2\x131\x3\x2\x2\x2\x2\x133\x3\x2\x2\x2"+ + "\x2\x135\x3\x2\x2\x2\x2\x137\x3\x2\x2\x2\x2\x139\x3\x2\x2\x2\x2\x13B\x3"+ + "\x2\x2\x2\x2\x13D\x3\x2\x2\x2\x2\x13F\x3\x2\x2\x2\x2\x141\x3\x2\x2\x2"+ + "\x2\x143\x3\x2\x2\x2\x2\x145\x3\x2\x2\x2\x2\x147\x3\x2\x2\x2\x2\x149\x3"+ + "\x2\x2\x2\x2\x14B\x3\x2\x2\x2\x2\x14D\x3\x2\x2\x2\x2\x14F\x3\x2\x2\x2"+ + "\x2\x151\x3\x2\x2\x2\x2\x153\x3\x2\x2\x2\x2\x155\x3\x2\x2\x2\x2\x157\x3"+ + "\x2\x2\x2\x2\x159\x3\x2\x2\x2\x2\x15B\x3\x2\x2\x2\x2\x15D\x3\x2\x2\x2"+ + "\x2\x15F\x3\x2\x2\x2\x2\x161\x3\x2\x2\x2\x2\x163\x3\x2\x2\x2\x2\x165\x3"+ + "\x2\x2\x2\x2\x167\x3\x2\x2\x2\x2\x169\x3\x2\x2\x2\x2\x16B\x3\x2\x2\x2"+ + "\x2\x16D\x3\x2\x2\x2\x2\x16F\x3\x2\x2\x2\x2\x171\x3\x2\x2\x2\x2\x173\x3"+ + "\x2\x2\x2\x2\x175\x3\x2\x2\x2\x2\x177\x3\x2\x2\x2\x2\x179\x3\x2\x2\x2"+ + "\x2\x17B\x3\x2\x2\x2\x2\x17D\x3\x2\x2\x2\x2\x17F\x3\x2\x2\x2\x2\x181\x3"+ + "\x2\x2\x2\x2\x183\x3\x2\x2\x2\x2\x185\x3\x2\x2\x2\x2\x187\x3\x2\x2\x2"+ + "\x2\x189\x3\x2\x2\x2\x2\x18B\x3\x2\x2\x2\x2\x18D\x3\x2\x2\x2\x2\x18F\x3"+ + "\x2\x2\x2\x2\x191\x3\x2\x2\x2\x2\x193\x3\x2\x2\x2\x2\x195\x3\x2\x2\x2"+ + "\x2\x197\x3\x2\x2\x2\x2\x199\x3\x2\x2\x2\x2\x19B\x3\x2\x2\x2\x2\x19D\x3"+ + "\x2\x2\x2\x2\x19F\x3\x2\x2\x2\x2\x1A1\x3\x2\x2\x2\x2\x1A3\x3\x2\x2\x2"+ + "\x2\x1A5\x3\x2\x2\x2\x2\x1A7\x3\x2\x2\x2\x2\x1A9\x3\x2\x2\x2\x2\x1AB\x3"+ + "\x2\x2\x2\x2\x1AD\x3\x2\x2\x2\x2\x1AF\x3\x2\x2\x2\x2\x1B1\x3\x2\x2\x2"+ + "\x2\x1B3\x3\x2\x2\x2\x2\x1B5\x3\x2\x2\x2\x2\x1B7\x3\x2\x2\x2\x2\x1B9\x3"+ + "\x2\x2\x2\x2\x1BB\x3\x2\x2\x2\x2\x1BD\x3\x2\x2\x2\x2\x1BF\x3\x2\x2\x2"+ + "\x2\x1C1\x3\x2\x2\x2\x2\x1C3\x3\x2\x2\x2\x2\x1C5\x3\x2\x2\x2\x2\x1C7\x3"+ + "\x2\x2\x2\x2\x1C9\x3\x2\x2\x2\x2\x1CD\x3\x2\x2\x2\x2\x1DB\x3\x2\x2\x2"+ + "\x2\x21F\x3\x2\x2\x2\x2\x221\x3\x2\x2\x2\x2\x223\x3\x2\x2\x2\x2\x225\x3"+ + "\x2\x2\x2\x2\x227\x3\x2\x2\x2\x2\x229\x3\x2\x2\x2\x2\x22B\x3\x2\x2\x2"+ + "\x2\x267\x3\x2\x2\x2\x3\x269\x3\x2\x2\x2\x5\x26D\x3\x2\x2\x2\a\x271\x3"+ + "\x2\x2\x2\t\x277\x3\x2\x2\x2\v\x27D\x3\x2\x2\x2\r\x283\x3\x2\x2\x2\xF"+ + "\x288\x3\x2\x2\x2\x11\x28E\x3\x2\x2\x2\x13\x293\x3\x2\x2\x2\x15\x298\x3"+ + "\x2\x2\x2\x17\x29D\x3\x2\x2\x2\x19\x2A4\x3\x2\x2\x2\x1B\x2A9\x3\x2\x2"+ + "\x2\x1D\x2B1\x3\x2\x2\x2\x1F\x2B9\x3\x2\x2\x2!\x2BE\x3\x2\x2\x2#\x2C3"+ + "\x3\x2\x2\x2%\x2CC\x3\x2\x2\x2\'\x2D1\x3\x2\x2\x2)\x2D7\x3\x2\x2\x2+\x2DD"+ + "\x3\x2\x2\x2-\x2E6\x3\x2\x2\x2/\x2EB\x3\x2\x2\x2\x31\x2EF\x3\x2\x2\x2"+ + "\x33\x2F6\x3\x2\x2\x2\x35\x2FA\x3\x2\x2\x2\x37\x301\x3\x2\x2\x2\x39\x305"+ + "\x3\x2\x2\x2;\x30A\x3\x2\x2\x2=\x313\x3\x2\x2\x2?\x31B\x3\x2\x2\x2\x41"+ + "\x320\x3\x2\x2\x2\x43\x326\x3\x2\x2\x2\x45\x32B\x3\x2\x2\x2G\x332\x3\x2"+ + "\x2\x2I\x337\x3\x2\x2\x2K\x33D\x3\x2\x2\x2M\x341\x3\x2\x2\x2O\x348\x3"+ + "\x2\x2\x2Q\x34A\x3\x2\x2\x2S\x34C\x3\x2\x2\x2U\x34E\x3\x2\x2\x2W\x350"+ + "\x3\x2\x2\x2Y\x352\x3\x2\x2\x2[\x354\x3\x2\x2\x2]\x356\x3\x2\x2\x2_\x358"+ + "\x3\x2\x2\x2\x61\x35A\x3\x2\x2\x2\x63\x35C\x3\x2\x2\x2\x65\x363\x3\x2"+ + "\x2\x2g\x36D\x3\x2\x2\x2i\x373\x3\x2\x2\x2k\x377\x3\x2\x2\x2m\x381\x3"+ + "\x2\x2\x2o\x388\x3\x2\x2\x2q\x38B\x3\x2\x2\x2s\x391\x3\x2\x2\x2u\x398"+ + "\x3\x2\x2\x2w\x3A0\x3\x2\x2\x2y\x3A6\x3\x2\x2\x2{\x3AC\x3\x2\x2\x2}\x3B1"+ + "\x3\x2\x2\x2\x7F\x3B6\x3\x2\x2\x2\x81\x3BB\x3\x2\x2\x2\x83\x3C1\x3\x2"+ + "\x2\x2\x85\x3C7\x3\x2\x2\x2\x87\x3CD\x3\x2\x2\x2\x89\x3D6\x3\x2\x2\x2"+ + "\x8B\x3DB\x3\x2\x2\x2\x8D\x3E3\x3\x2\x2\x2\x8F\x3EB\x3\x2\x2\x2\x91\x3F3"+ + "\x3\x2\x2\x2\x93\x3FB\x3\x2\x2\x2\x95\x402\x3\x2\x2\x2\x97\x409\x3\x2"+ + "\x2\x2\x99\x410\x3\x2\x2\x2\x9B\x417\x3\x2\x2\x2\x9D\x421\x3\x2\x2\x2"+ + "\x9F\x42B\x3\x2\x2\x2\xA1\x432\x3\x2\x2\x2\xA3\x439\x3\x2\x2\x2\xA5\x440"+ + "\x3\x2\x2\x2\xA7\x447\x3\x2\x2\x2\xA9\x44B\x3\x2\x2\x2\xAB\x44E\x3\x2"+ + "\x2\x2\xAD\x455\x3\x2\x2\x2\xAF\x45A\x3\x2\x2\x2\xB1\x45F\x3\x2\x2\x2"+ + "\xB3\x466\x3\x2\x2\x2\xB5\x46C\x3\x2\x2\x2\xB7\x475\x3\x2\x2\x2\xB9\x482"+ + "\x3\x2\x2\x2\xBB\x489\x3\x2\x2\x2\xBD\x496\x3\x2\x2\x2\xBF\x4A1\x3\x2"+ + "\x2\x2\xC1\x4A9\x3\x2\x2\x2\xC3\x4B2\x3\x2\x2\x2\xC5\x4BB\x3\x2\x2\x2"+ + "\xC7\x4BF\x3\x2\x2\x2\xC9\x4C4\x3\x2\x2\x2\xCB\x4C8\x3\x2\x2\x2\xCD\x4CE"+ + "\x3\x2\x2\x2\xCF\x4D4\x3\x2\x2\x2\xD1\x4DA\x3\x2\x2\x2\xD3\x4E2\x3\x2"+ + "\x2\x2\xD5\x4EB\x3\x2\x2\x2\xD7\x4F9\x3\x2\x2\x2\xD9\x507\x3\x2\x2\x2"+ + "\xDB\x510\x3\x2\x2\x2\xDD\x516\x3\x2\x2\x2\xDF\x51D\x3\x2\x2\x2\xE1\x521"+ + "\x3\x2\x2\x2\xE3\x52A\x3\x2\x2\x2\xE5\x52E\x3\x2\x2\x2\xE7\x535\x3\x2"+ + "\x2\x2\xE9\x53B\x3\x2\x2\x2\xEB\x540\x3\x2\x2\x2\xED\x543\x3\x2\x2\x2"+ + "\xEF\x547\x3\x2\x2\x2\xF1\x552\x3\x2\x2\x2\xF3\x555\x3\x2\x2\x2\xF5\x55B"+ + "\x3\x2\x2\x2\xF7\x55E\x3\x2\x2\x2\xF9\x566\x3\x2\x2\x2\xFB\x56B\x3\x2"+ + "\x2\x2\xFD\x570\x3\x2\x2\x2\xFF\x575\x3\x2\x2\x2\x101\x579\x3\x2\x2\x2"+ + "\x103\x57D\x3\x2\x2\x2\x105\x582\x3\x2\x2\x2\x107\x58D\x3\x2\x2\x2\x109"+ + "\x597\x3\x2\x2\x2\x10B\x5A2\x3\x2\x2\x2\x10D\x5B2\x3\x2\x2\x2\x10F\x5B7"+ + "\x3\x2\x2\x2\x111\x5BA\x3\x2\x2\x2\x113\x5BE\x3\x2\x2\x2\x115\x5C2\x3"+ + "\x2\x2\x2\x117\x5C7\x3\x2\x2\x2\x119\x5CB\x3\x2\x2\x2\x11B\x5CF\x3\x2"+ + "\x2\x2\x11D\x5D7\x3\x2\x2\x2\x11F\x5DC\x3\x2\x2\x2\x121\x5DF\x3\x2\x2"+ + "\x2\x123\x5E8\x3\x2\x2\x2\x125\x5F7\x3\x2\x2\x2\x127\x5FC\x3\x2\x2\x2"+ + "\x129\x605\x3\x2\x2\x2\x12B\x611\x3\x2\x2\x2\x12D\x621\x3\x2\x2\x2\x12F"+ + "\x630\x3\x2\x2\x2\x131\x646\x3\x2\x2\x2\x133\x649\x3\x2\x2\x2\x135\x650"+ + "\x3\x2\x2\x2\x137\x65B\x3\x2\x2\x2\x139\x664\x3\x2\x2\x2\x13B\x66A\x3"+ + "\x2\x2\x2\x13D\x672\x3\x2\x2\x2\x13F\x67F\x3\x2\x2\x2\x141\x68C\x3\x2"+ + "\x2\x2\x143\x699\x3\x2\x2\x2\x145\x6A1\x3\x2\x2\x2\x147\x6A8\x3\x2\x2"+ + "\x2\x149\x6AC\x3\x2\x2\x2\x14B\x6B3\x3\x2\x2\x2\x14D\x6BE\x3\x2\x2\x2"+ + "\x14F\x6C3\x3\x2\x2\x2\x151\x6CE\x3\x2\x2\x2\x153\x6D4\x3\x2\x2\x2\x155"+ + "\x6D8\x3\x2\x2\x2\x157\x6DE\x3\x2\x2\x2\x159\x6E5\x3\x2\x2\x2\x15B\x6EC"+ + "\x3\x2\x2\x2\x15D\x6F1\x3\x2\x2\x2\x15F\x6F6\x3\x2\x2\x2\x161\x6FD\x3"+ + "\x2\x2\x2\x163\x701\x3\x2\x2\x2\x165\x708\x3\x2\x2\x2\x167\x70F\x3\x2"+ + "\x2\x2\x169\x713\x3\x2\x2\x2\x16B\x71A\x3\x2\x2\x2\x16D\x71F\x3\x2\x2"+ + "\x2\x16F\x724\x3\x2\x2\x2\x171\x72B\x3\x2\x2\x2\x173\x72F\x3\x2\x2\x2"+ + "\x175\x733\x3\x2\x2\x2\x177\x738\x3\x2\x2\x2\x179\x73D\x3\x2\x2\x2\x17B"+ + "\x740\x3\x2\x2\x2\x17D\x745\x3\x2\x2\x2\x17F\x74A\x3\x2\x2\x2\x181\x751"+ + "\x3\x2\x2\x2\x183\x758\x3\x2\x2\x2\x185\x75E\x3\x2\x2\x2\x187\x766\x3"+ + "\x2\x2\x2\x189\x76E\x3\x2\x2\x2\x18B\x773\x3\x2\x2\x2\x18D\x779\x3\x2"+ + "\x2\x2\x18F\x77F\x3\x2\x2\x2\x191\x784\x3\x2\x2\x2\x193\x78F\x3\x2\x2"+ + "\x2\x195\x795\x3\x2\x2\x2\x197\x799\x3\x2\x2\x2\x199\x79C\x3\x2\x2\x2"+ + "\x19B\x79E\x3\x2\x2\x2\x19D\x7A0\x3\x2\x2\x2\x19F\x7A6\x3\x2\x2\x2\x1A1"+ + "\x7A8\x3\x2\x2\x2\x1A3\x7AE\x3\x2\x2\x2\x1A5\x7B0\x3\x2\x2\x2\x1A7\x7B2"+ + "\x3\x2\x2\x2\x1A9\x7B4\x3\x2\x2\x2\x1AB\x7B6\x3\x2\x2\x2\x1AD\x7BC\x3"+ + "\x2\x2\x2\x1AF\x7BE\x3\x2\x2\x2\x1B1\x7C0\x3\x2\x2\x2\x1B3\x7C2\x3\x2"+ + "\x2\x2\x1B5\x7C7\x3\x2\x2\x2\x1B7\x7D4\x3\x2\x2\x2\x1B9\x7E2\x3\x2\x2"+ + "\x2\x1BB\x7F4\x3\x2\x2\x2\x1BD\x813\x3\x2\x2\x2\x1BF\x836\x3\x2\x2\x2"+ + "\x1C1\x838\x3\x2\x2\x2\x1C3\x83A\x3\x2\x2\x2\x1C5\x845\x3\x2\x2\x2\x1C7"+ + "\x850\x3\x2\x2\x2\x1C9\x862\x3\x2\x2\x2\x1CB\x874\x3\x2\x2\x2\x1CD\x876"+ + "\x3\x2\x2\x2\x1CF\x87A\x3\x2\x2\x2\x1D1\x87C\x3\x2\x2\x2\x1D3\x87E\x3"+ + "\x2\x2\x2\x1D5\x887\x3\x2\x2\x2\x1D7\x889\x3\x2\x2\x2\x1D9\x88C\x3\x2"+ + "\x2\x2\x1DB\x890\x3\x2\x2\x2\x1DD\x89C\x3\x2\x2\x2\x1DF\x89E\x3\x2\x2"+ + "\x2\x1E1\x8AC\x3\x2\x2\x2\x1E3\x8AF\x3\x2\x2\x2\x1E5\x8B9\x3\x2\x2\x2"+ + "\x1E7\x8C7\x3\x2\x2\x2\x1E9\x8D4\x3\x2\x2\x2\x1EB\x8F3\x3\x2\x2\x2\x1ED"+ + "\x8F6\x3\x2\x2\x2\x1EF\x8FD\x3\x2\x2\x2\x1F1\x909\x3\x2\x2\x2\x1F3\x911"+ + "\x3\x2\x2\x2\x1F5\x91A\x3\x2\x2\x2\x1F7\x920\x3\x2\x2\x2\x1F9\x926\x3"+ + "\x2\x2\x2\x1FB\x92A\x3\x2\x2\x2\x1FD\x92F\x3\x2\x2\x2\x1FF\x934\x3\x2"+ + "\x2\x2\x201\x93B\x3\x2\x2\x2\x203\x945\x3\x2\x2\x2\x205\x94D\x3\x2\x2"+ + "\x2\x207\x956\x3\x2\x2\x2\x209\x95F\x3\x2\x2\x2\x20B\x963\x3\x2\x2\x2"+ + "\x20D\x967\x3\x2\x2\x2\x20F\x96B\x3\x2\x2\x2\x211\x96F\x3\x2\x2\x2\x213"+ + "\x973\x3\x2\x2\x2\x215\x977\x3\x2\x2\x2\x217\x97B\x3\x2\x2\x2\x219\x97F"+ + "\x3\x2\x2\x2\x21B\x983\x3\x2\x2\x2\x21D\x987\x3\x2\x2\x2\x21F\x98E\x3"+ + "\x2\x2\x2\x221\x990\x3\x2\x2\x2\x223\x992\x3\x2\x2\x2\x225\x994\x3\x2"+ + "\x2\x2\x227\x996\x3\x2\x2\x2\x229\x9C5\x3\x2\x2\x2\x22B\x9CA\x3\x2\x2"+ + "\x2\x22D\x9D9\x3\x2\x2\x2\x22F\x9DB\x3\x2\x2\x2\x231\x9DD\x3\x2\x2\x2"+ + "\x233\x9DF\x3\x2\x2\x2\x235\x9E1\x3\x2\x2\x2\x237\x9E3\x3\x2\x2\x2\x239"+ + "\x9E5\x3\x2\x2\x2\x23B\x9E7\x3\x2\x2\x2\x23D\x9E9\x3\x2\x2\x2\x23F\x9EB"+ + "\x3\x2\x2\x2\x241\x9ED\x3\x2\x2\x2\x243\x9EF\x3\x2\x2\x2\x245\x9F1\x3"+ + "\x2\x2\x2\x247\x9F3\x3\x2\x2\x2\x249\x9F5\x3\x2\x2\x2\x24B\x9F7\x3\x2"+ + "\x2\x2\x24D\x9F9\x3\x2\x2\x2\x24F\x9FB\x3\x2\x2\x2\x251\x9FD\x3\x2\x2"+ + "\x2\x253\x9FF\x3\x2\x2\x2\x255\xA01\x3\x2\x2\x2\x257\xA03\x3\x2\x2\x2"+ + "\x259\xA05\x3\x2\x2\x2\x25B\xA07\x3\x2\x2\x2\x25D\xA09\x3\x2\x2\x2\x25F"+ + "\xA0B\x3\x2\x2\x2\x261\xA0D\x3\x2\x2\x2\x263\xA0F\x3\x2\x2\x2\x265\xA11"+ + "\x3\x2\x2\x2\x267\xA13\x3\x2\x2\x2\x269\x26A\x5\x233\x11A\x2\x26A\x26B"+ + "\x5\x235\x11B\x2\x26B\x26C\x5\x257\x12C\x2\x26C\x4\x3\x2\x2\x2\x26D\x26E"+ + "\x5\x233\x11A\x2\x26E\x26F\x5\x24D\x127\x2\x26F\x270\x5\x263\x132\x2\x270"+ + "\x6\x3\x2\x2\x2\x271\x272\x5\x233\x11A\x2\x272\x273\x5\x255\x12B\x2\x273"+ + "\x274\x5\x255\x12B\x2\x274\x275\x5\x233\x11A\x2\x275\x276\x5\x263\x132"+ + "\x2\x276\b\x3\x2\x2\x2\x277\x278\x5\x237\x11C\x2\x278\x279\x5\x235\x11B"+ + "\x2\x279\x27A\x5\x24F\x128\x2\x27A\x27B\x5\x24F\x128\x2\x27B\x27C\x5\x249"+ + "\x125\x2\x27C\n\x3\x2\x2\x2\x27D\x27E\x5\x237\x11C\x2\x27E\x27F\x5\x235"+ + "\x11B\x2\x27F\x280\x5\x263\x132\x2\x280\x281\x5\x259\x12D\x2\x281\x282"+ + "\x5\x23B\x11E\x2\x282\f\x3\x2\x2\x2\x283\x284\x5\x237\x11C\x2\x284\x285"+ + "\x5\x237\x11C\x2\x285\x286\x5\x25B\x12E\x2\x286\x287\x5\x255\x12B\x2\x287"+ + "\xE\x3\x2\x2\x2\x288\x289\x5\x237\x11C\x2\x289\x28A\x5\x239\x11D\x2\x28A"+ + "\x28B\x5\x233\x11A\x2\x28B\x28C\x5\x259\x12D\x2\x28C\x28D\x5\x23B\x11E"+ + "\x2\x28D\x10\x3\x2\x2\x2\x28E\x28F\x5\x237\x11C\x2\x28F\x290\x5\x239\x11D"+ + "\x2\x290\x291\x5\x235\x11B\x2\x291\x292\x5\x249\x125\x2\x292\x12\x3\x2"+ + "\x2\x2\x293\x294\x5\x237\x11C\x2\x294\x295\x5\x239\x11D\x2\x295\x296\x5"+ + "\x23B\x11E\x2\x296\x297\x5\x237\x11C\x2\x297\x14\x3\x2\x2\x2\x298\x299"+ + "\x5\x237\x11C\x2\x299\x29A\x5\x243\x122\x2\x29A\x29B\x5\x24D\x127\x2\x29B"+ + "\x29C\x5\x259\x12D\x2\x29C\x16\x3\x2\x2\x2\x29D\x29E\x5\x237\x11C\x2\x29E"+ + "\x29F\x5\x243\x122\x2\x29F\x2A0\x5\x255\x12B\x2\x2A0\x2A1\x5\x237\x11C"+ + "\x2\x2A1\x2A2\x5\x249\x125\x2\x2A2\x2A3\x5\x23B\x11E\x2\x2A3\x18\x3\x2"+ + "\x2\x2\x2A4\x2A5\x5\x237\x11C\x2\x2A5\x2A6\x5\x249\x125\x2\x2A6\x2A7\x5"+ + "\x24D\x127\x2\x2A7\x2A8\x5\x23F\x120\x2\x2A8\x1A\x3\x2\x2\x2\x2A9\x2AA"+ + "\x5\x237\x11C\x2\x2AA\x2AB\x5\x249\x125\x2\x2AB\x2AC\x5\x24D\x127\x2\x2AC"+ + "\x2AD\x5\x23F\x120\x2\x2AD\x2AE\x5\x249\x125\x2\x2AE\x2AF\x5\x24D\x127"+ + "\x2\x2AF\x2B0\x5\x23F\x120\x2\x2B0\x1C\x3\x2\x2\x2\x2B1\x2B2\x5\x237\x11C"+ + "\x2\x2B2\x2B3\x5\x249\x125\x2\x2B3\x2B4\x5\x24D\x127\x2\x2B4\x2B5\x5\x23F"+ + "\x120\x2\x2B5\x2B6\x5\x251\x129\x2\x2B6\x2B7\x5\x259\x12D\x2\x2B7\x2B8"+ + "\x5\x255\x12B\x2\x2B8\x1E\x3\x2\x2\x2\x2B9\x2BA\x5\x237\x11C\x2\x2BA\x2BB"+ + "\x5\x257\x12C\x2\x2BB\x2BC\x5\x24D\x127\x2\x2BC\x2BD\x5\x23F\x120\x2\x2BD"+ + " \x3\x2\x2\x2\x2BE\x2BF\x5\x237\x11C\x2\x2BF\x2C0\x5\x257\x12C\x2\x2C0"+ + "\x2C1\x5\x259\x12D\x2\x2C1\x2C2\x5\x255\x12B\x2\x2C2\"\x3\x2\x2\x2\x2C3"+ + "\x2C4\x5\x237\x11C\x2\x2C4\x2C5\x5\x25B\x12E\x2\x2C5\x2C6\x5\x255\x12B"+ + "\x2\x2C6\x2C7\x5\x255\x12B\x2\x2C7\x2C8\x5\x23B\x11E\x2\x2C8\x2C9\x5\x24D"+ + "\x127\x2\x2C9\x2CA\x5\x237\x11C\x2\x2CA\x2CB\x5\x263\x132\x2\x2CB$\x3"+ + "\x2\x2\x2\x2CC\x2CD\x5\x237\x11C\x2\x2CD\x2CE\x5\x25D\x12F\x2\x2CE\x2CF"+ + "\x5\x233\x11A\x2\x2CF\x2D0\x5\x255\x12B\x2\x2D0&\x3\x2\x2\x2\x2D1\x2D2"+ + "\x5\x237\x11C\x2\x2D2\x2D3\x5\x25D\x12F\x2\x2D3\x2D4\x5\x23B\x11E\x2\x2D4"+ + "\x2D5\x5\x255\x12B\x2\x2D5\x2D6\x5\x255\x12B\x2\x2D6(\x3\x2\x2\x2\x2D7"+ + "\x2D8\x5\x239\x11D\x2\x2D8\x2D9\x5\x23B\x11E\x2\x2D9\x2DA\x5\x235\x11B"+ + "\x2\x2DA\x2DB\x5\x25B\x12E\x2\x2DB\x2DC\x5\x23F\x120\x2\x2DC*\x3\x2\x2"+ + "\x2\x2DD\x2DE\x5\x239\x11D\x2\x2DE\x2DF\x5\x24F\x128\x2\x2DF\x2E0\x5\x23B"+ + "\x11E\x2\x2E0\x2E1\x5\x25D\x12F\x2\x2E1\x2E2\x5\x23B\x11E\x2\x2E2\x2E3"+ + "\x5\x24D\x127\x2\x2E3\x2E4\x5\x259\x12D\x2\x2E4\x2E5\x5\x257\x12C\x2\x2E5"+ + ",\x3\x2\x2\x2\x2E6\x2E7\x5\x23B\x11E\x2\x2E7\x2E8\x5\x261\x131\x2\x2E8"+ + "\x2E9\x5\x243\x122\x2\x2E9\x2EA\x5\x259\x12D\x2\x2EA.\x3\x2\x2\x2\x2EB"+ + "\x2EC\x5\x23D\x11F\x2\x2EC\x2ED\x5\x243\x122\x2\x2ED\x2EE\x5\x261\x131"+ + "\x2\x2EE\x30\x3\x2\x2\x2\x2EF\x2F0\x5\x243\x122\x2\x2F0\x2F1\x5\x24D\x127"+ + "\x2\x2F1\x2F2\x5\x251\x129\x2\x2F2\x2F3\x5\x25B\x12E\x2\x2F3\x2F4\x5\x259"+ + "\x12D\x2\x2F4\x2F5\x5\x235\x11B\x2\x2F5\x32\x3\x2\x2\x2\x2F6\x2F7\x5\x243"+ + "\x122\x2\x2F7\x2F8\x5\x24D\x127\x2\x2F8\x2F9\x5\x259\x12D\x2\x2F9\x34"+ + "\x3\x2\x2\x2\x2FA\x2FB\x5\x249\x125\x2\x2FB\x2FC\x5\x235\x11B\x2\x2FC"+ + "\x2FD\x5\x24F\x128\x2\x2FD\x2FE\x5\x25B\x12E\x2\x2FE\x2FF\x5\x24D\x127"+ + "\x2\x2FF\x300\x5\x239\x11D\x2\x300\x36\x3\x2\x2\x2\x301\x302\x5\x249\x125"+ + "\x2\x302\x303\x5\x23B\x11E\x2\x303\x304\x5\x24D\x127\x2\x304\x38\x3\x2"+ + "\x2\x2\x305\x306\x5\x249\x125\x2\x306\x307\x5\x23B\x11E\x2\x307\x308\x5"+ + "\x24D\x127\x2\x308\x309\x5\x235\x11B\x2\x309:\x3\x2\x2\x2\x30A\x30B\x5"+ + "\x249\x125\x2\x30B\x30C\x5\x24F\x128\x2\x30C\x30D\x5\x24D\x127\x2\x30D"+ + "\x30E\x5\x23F\x120\x2\x30E\x30F\x5\x249\x125\x2\x30F\x310\x5\x24F\x128"+ + "\x2\x310\x311\x5\x24D\x127\x2\x311\x312\x5\x23F\x120\x2\x312<\x3\x2\x2"+ + "\x2\x313\x314\x5\x249\x125\x2\x314\x315\x5\x24F\x128\x2\x315\x316\x5\x24D"+ + "\x127\x2\x316\x317\x5\x23F\x120\x2\x317\x318\x5\x251\x129\x2\x318\x319"+ + "\x5\x259\x12D\x2\x319\x31A\x5\x255\x12B\x2\x31A>\x3\x2\x2\x2\x31B\x31C"+ + "\x5\x24B\x126\x2\x31C\x31D\x5\x243\x122\x2\x31D\x31E\x5\x239\x11D\x2\x31E"+ + "\x31F\x5\x235\x11B\x2\x31F@\x3\x2\x2\x2\x320\x321\x5\x24B\x126\x2\x321"+ + "\x322\x5\x243\x122\x2\x322\x323\x5\x239\x11D\x2\x323\x324\x5\x235\x11B"+ + "\x2\x324\x325\a&\x2\x2\x325\x42\x3\x2\x2\x2\x326\x327\x5\x24B\x126\x2"+ + "\x327\x328\x5\x243\x122\x2\x328\x329\x5\x239\x11D\x2\x329\x32A\a&\x2\x2"+ + "\x32A\x44\x3\x2\x2\x2\x32B\x32C\x5\x24F\x128\x2\x32C\x32D\x5\x251\x129"+ + "\x2\x32D\x32E\x5\x259\x12D\x2\x32E\x32F\x5\x243\x122\x2\x32F\x330\x5\x24F"+ + "\x128\x2\x330\x331\x5\x24D\x127\x2\x331\x46\x3\x2\x2\x2\x332\x333\x5\x251"+ + "\x129\x2\x333\x334\x5\x257\x12C\x2\x334\x335\x5\x23B\x11E\x2\x335\x336"+ + "\x5\x259\x12D\x2\x336H\x3\x2\x2\x2\x337\x338\x5\x257\x12C\x2\x338\x339"+ + "\x5\x237\x11C\x2\x339\x33A\x5\x233\x11A\x2\x33A\x33B\x5\x249\x125\x2\x33B"+ + "\x33C\x5\x23B\x11E\x2\x33CJ\x3\x2\x2\x2\x33D\x33E\x5\x257\x12C\x2\x33E"+ + "\x33F\x5\x23F\x120\x2\x33F\x340\x5\x24D\x127\x2\x340L\x3\x2\x2\x2\x341"+ + "\x342\x5\x25B\x12E\x2\x342\x343\x5\x235\x11B\x2\x343\x344\x5\x24F\x128"+ + "\x2\x344\x345\x5\x25B\x12E\x2\x345\x346\x5\x24D\x127\x2\x346\x347\x5\x239"+ + "\x11D\x2\x347N\x3\x2\x2\x2\x348\x349\a.\x2\x2\x349P\x3\x2\x2\x2\x34A\x34B"+ + "\a<\x2\x2\x34BR\x3\x2\x2\x2\x34C\x34D\a=\x2\x2\x34DT\x3\x2\x2\x2\x34E"+ + "\x34F\a#\x2\x2\x34FV\x3\x2\x2\x2\x350\x351\a\x30\x2\x2\x351X\x3\x2\x2"+ + "\x2\x352\x353\a%\x2\x2\x353Z\x3\x2\x2\x2\x354\x355\a\x42\x2\x2\x355\\"+ + "\x3\x2\x2\x2\x356\x357\a\'\x2\x2\x357^\x3\x2\x2\x2\x358\x359\a&\x2\x2"+ + "\x359`\x3\x2\x2\x2\x35A\x35B\a(\x2\x2\x35B\x62\x3\x2\x2\x2\x35C\x35D\x5"+ + "\x233\x11A\x2\x35D\x35E\x5\x237\x11C\x2\x35E\x35F\x5\x237\x11C\x2\x35F"+ + "\x360\x5\x23B\x11E\x2\x360\x361\x5\x257\x12C\x2\x361\x362\x5\x257\x12C"+ + "\x2\x362\x64\x3\x2\x2\x2\x363\x364\x5\x233\x11A\x2\x364\x365\x5\x239\x11D"+ + "\x2\x365\x366\x5\x239\x11D\x2\x366\x367\x5\x255\x12B\x2\x367\x368\x5\x23B"+ + "\x11E\x2\x368\x369\x5\x257\x12C\x2\x369\x36A\x5\x257\x12C\x2\x36A\x36B"+ + "\x5\x24F\x128\x2\x36B\x36C\x5\x23D\x11F\x2\x36C\x66\x3\x2\x2\x2\x36D\x36E"+ + "\x5\x233\x11A\x2\x36E\x36F\x5\x249\x125\x2\x36F\x370\x5\x243\x122\x2\x370"+ + "\x371\x5\x233\x11A\x2\x371\x372\x5\x257\x12C\x2\x372h\x3\x2\x2\x2\x373"+ + "\x374\x5\x233\x11A\x2\x374\x375\x5\x24D\x127\x2\x375\x376\x5\x239\x11D"+ + "\x2\x376j\x3\x2\x2\x2\x377\x378\x5\x233\x11A\x2\x378\x379\x5\x259\x12D"+ + "\x2\x379\x37A\x5\x259\x12D\x2\x37A\x37B\x5\x255\x12B\x2\x37B\x37C\x5\x243"+ + "\x122\x2\x37C\x37D\x5\x235\x11B\x2\x37D\x37E\x5\x25B\x12E\x2\x37E\x37F"+ + "\x5\x259\x12D\x2\x37F\x380\x5\x23B\x11E\x2\x380l\x3\x2\x2\x2\x381\x382"+ + "\x5\x233\x11A\x2\x382\x383\x5\x251\x129\x2\x383\x384\x5\x251\x129\x2\x384"+ + "\x385\x5\x23B\x11E\x2\x385\x386\x5\x24D\x127\x2\x386\x387\x5\x239\x11D"+ + "\x2\x387n\x3\x2\x2\x2\x388\x389\x5\x233\x11A\x2\x389\x38A\x5\x257\x12C"+ + "\x2\x38Ap\x3\x2\x2\x2\x38B\x38C\x5\x235\x11B\x2\x38C\x38D\x5\x23B\x11E"+ + "\x2\x38D\x38E\x5\x23F\x120\x2\x38E\x38F\x5\x243\x122\x2\x38F\x390\x5\x24D"+ + "\x127\x2\x390r\x3\x2\x2\x2\x391\x392\x5\x235\x11B\x2\x392\x393\x5\x243"+ + "\x122\x2\x393\x394\x5\x24D\x127\x2\x394\x395\x5\x233\x11A\x2\x395\x396"+ + "\x5\x255\x12B\x2\x396\x397\x5\x263\x132\x2\x397t\x3\x2\x2\x2\x398\x399"+ + "\x5\x235\x11B\x2\x399\x39A\x5\x24F\x128\x2\x39A\x39B\x5\x24F\x128\x2\x39B"+ + "\x39C\x5\x249\x125\x2\x39C\x39D\x5\x23B\x11E\x2\x39D\x39E\x5\x233\x11A"+ + "\x2\x39E\x39F\x5\x24D\x127\x2\x39Fv\x3\x2\x2\x2\x3A0\x3A1\x5\x235\x11B"+ + "\x2\x3A1\x3A2\x5\x263\x132\x2\x3A2\x3A3\x5\x25D\x12F\x2\x3A3\x3A4\x5\x233"+ + "\x11A\x2\x3A4\x3A5\x5\x249\x125\x2\x3A5x\x3\x2\x2\x2\x3A6\x3A7\x5\x235"+ + "\x11B\x2\x3A7\x3A8\x5\x263\x132\x2\x3A8\x3A9\x5\x255\x12B\x2\x3A9\x3AA"+ + "\x5\x23B\x11E\x2\x3AA\x3AB\x5\x23D\x11F\x2\x3ABz\x3\x2\x2\x2\x3AC\x3AD"+ + "\x5\x235\x11B\x2\x3AD\x3AE\x5\x263\x132\x2\x3AE\x3AF\x5\x259\x12D\x2\x3AF"+ + "\x3B0\x5\x23B\x11E\x2\x3B0|\x3\x2\x2\x2\x3B1\x3B2\x5\x237\x11C\x2\x3B2"+ + "\x3B3\x5\x233\x11A\x2\x3B3\x3B4\x5\x249\x125\x2\x3B4\x3B5\x5\x249\x125"+ + "\x2\x3B5~\x3\x2\x2\x2\x3B6\x3B7\x5\x237\x11C\x2\x3B7\x3B8\x5\x233\x11A"+ + "\x2\x3B8\x3B9\x5\x257\x12C\x2\x3B9\x3BA\x5\x23B\x11E\x2\x3BA\x80\x3\x2"+ + "\x2\x2\x3BB\x3BC\x5\x237\x11C\x2\x3BC\x3BD\x5\x249\x125\x2\x3BD\x3BE\x5"+ + "\x233\x11A\x2\x3BE\x3BF\x5\x257\x12C\x2\x3BF\x3C0\x5\x257\x12C\x2\x3C0"+ + "\x82\x3\x2\x2\x2\x3C1\x3C2\x5\x237\x11C\x2\x3C2\x3C3\x5\x249\x125\x2\x3C3"+ + "\x3C4\x5\x24F\x128\x2\x3C4\x3C5\x5\x257\x12C\x2\x3C5\x3C6\x5\x23B\x11E"+ + "\x2\x3C6\x84\x3\x2\x2\x2\x3C7\x3C8\x5\x237\x11C\x2\x3C8\x3C9\x5\x24F\x128"+ + "\x2\x3C9\x3CA\x5\x24D\x127\x2\x3CA\x3CB\x5\x257\x12C\x2\x3CB\x3CC\x5\x259"+ + "\x12D\x2\x3CC\x86\x3\x2\x2\x2\x3CD\x3CE\x5\x239\x11D\x2\x3CE\x3CF\x5\x233"+ + "\x11A\x2\x3CF\x3D0\x5\x259\x12D\x2\x3D0\x3D1\x5\x233\x11A\x2\x3D1\x3D2"+ + "\x5\x235\x11B\x2\x3D2\x3D3\x5\x233\x11A\x2\x3D3\x3D4\x5\x257\x12C\x2\x3D4"+ + "\x3D5\x5\x23B\x11E\x2\x3D5\x88\x3\x2\x2\x2\x3D6\x3D7\x5\x239\x11D\x2\x3D7"+ + "\x3D8\x5\x233\x11A\x2\x3D8\x3D9\x5\x259\x12D\x2\x3D9\x3DA\x5\x23B\x11E"+ + "\x2\x3DA\x8A\x3\x2\x2\x2\x3DB\x3DC\x5\x239\x11D\x2\x3DC\x3DD\x5\x23B\x11E"+ + "\x2\x3DD\x3DE\x5\x237\x11C\x2\x3DE\x3DF\x5\x249\x125\x2\x3DF\x3E0\x5\x233"+ + "\x11A\x2\x3E0\x3E1\x5\x255\x12B\x2\x3E1\x3E2\x5\x23B\x11E\x2\x3E2\x8C"+ + "\x3\x2\x2\x2\x3E3\x3E4\x5\x239\x11D\x2\x3E4\x3E5\x5\x23B\x11E\x2\x3E5"+ + "\x3E6\x5\x23D\x11F\x2\x3E6\x3E7\x5\x235\x11B\x2\x3E7\x3E8\x5\x24F\x128"+ + "\x2\x3E8\x3E9\x5\x24F\x128\x2\x3E9\x3EA\x5\x249\x125\x2\x3EA\x8E\x3\x2"+ + "\x2\x2\x3EB\x3EC\x5\x239\x11D\x2\x3EC\x3ED\x5\x23B\x11E\x2\x3ED\x3EE\x5"+ + "\x23D\x11F\x2\x3EE\x3EF\x5\x235\x11B\x2\x3EF\x3F0\x5\x263\x132\x2\x3F0"+ + "\x3F1\x5\x259\x12D\x2\x3F1\x3F2\x5\x23B\x11E\x2\x3F2\x90\x3\x2\x2\x2\x3F3"+ + "\x3F4\x5\x239\x11D\x2\x3F4\x3F5\x5\x23B\x11E\x2\x3F5\x3F6\x5\x23D\x11F"+ + "\x2\x3F6\x3F7\x5\x239\x11D\x2\x3F7\x3F8\x5\x233\x11A\x2\x3F8\x3F9\x5\x259"+ + "\x12D\x2\x3F9\x3FA\x5\x23B\x11E\x2\x3FA\x92\x3\x2\x2\x2\x3FB\x3FC\x5\x239"+ + "\x11D\x2\x3FC\x3FD\x5\x23B\x11E\x2\x3FD\x3FE\x5\x23D\x11F\x2\x3FE\x3FF"+ + "\x5\x239\x11D\x2\x3FF\x400\x5\x235\x11B\x2\x400\x401\x5\x249\x125\x2\x401"+ + "\x94\x3\x2\x2\x2\x402\x403\x5\x239\x11D\x2\x403\x404\x5\x23B\x11E\x2\x404"+ + "\x405\x5\x23D\x11F\x2\x405\x406\x5\x237\x11C\x2\x406\x407\x5\x25B\x12E"+ + "\x2\x407\x408\x5\x255\x12B\x2\x408\x96\x3\x2\x2\x2\x409\x40A\x5\x239\x11D"+ + "\x2\x40A\x40B\x5\x23B\x11E\x2\x40B\x40C\x5\x23D\x11F\x2\x40C\x40D\x5\x243"+ + "\x122\x2\x40D\x40E\x5\x24D\x127\x2\x40E\x40F\x5\x259\x12D\x2\x40F\x98"+ + "\x3\x2\x2\x2\x410\x411\x5\x239\x11D\x2\x411\x412\x5\x23B\x11E\x2\x412"+ + "\x413\x5\x23D\x11F\x2\x413\x414\x5\x249\x125\x2\x414\x415\x5\x24D\x127"+ + "\x2\x415\x416\x5\x23F\x120\x2\x416\x9A\x3\x2\x2\x2\x417\x418\x5\x239\x11D"+ + "\x2\x418\x419\x5\x23B\x11E\x2\x419\x41A\x5\x23D\x11F\x2\x41A\x41B\x5\x249"+ + "\x125\x2\x41B\x41C\x5\x24D\x127\x2\x41C\x41D\x5\x23F\x120\x2\x41D\x41E"+ + "\x5\x249\x125\x2\x41E\x41F\x5\x24D\x127\x2\x41F\x420\x5\x23F\x120\x2\x420"+ + "\x9C\x3\x2\x2\x2\x421\x422\x5\x239\x11D\x2\x422\x423\x5\x23B\x11E\x2\x423"+ + "\x424\x5\x23D\x11F\x2\x424\x425\x5\x249\x125\x2\x425\x426\x5\x24D\x127"+ + "\x2\x426\x427\x5\x23F\x120\x2\x427\x428\x5\x251\x129\x2\x428\x429\x5\x259"+ + "\x12D\x2\x429\x42A\x5\x255\x12B\x2\x42A\x9E\x3\x2\x2\x2\x42B\x42C\x5\x239"+ + "\x11D\x2\x42C\x42D\x5\x23B\x11E\x2\x42D\x42E\x5\x23D\x11F\x2\x42E\x42F"+ + "\x5\x24F\x128\x2\x42F\x430\x5\x235\x11B\x2\x430\x431\x5\x245\x123\x2\x431"+ + "\xA0\x3\x2\x2\x2\x432\x433\x5\x239\x11D\x2\x433\x434\x5\x23B\x11E\x2\x434"+ + "\x435\x5\x23D\x11F\x2\x435\x436\x5\x257\x12C\x2\x436\x437\x5\x24D\x127"+ + "\x2\x437\x438\x5\x23F\x120\x2\x438\xA2\x3\x2\x2\x2\x439\x43A\x5\x239\x11D"+ + "\x2\x43A\x43B\x5\x23B\x11E\x2\x43B\x43C\x5\x23D\x11F\x2\x43C\x43D\x5\x257"+ + "\x12C\x2\x43D\x43E\x5\x259\x12D\x2\x43E\x43F\x5\x255\x12B\x2\x43F\xA4"+ + "\x3\x2\x2\x2\x440\x441\x5\x239\x11D\x2\x441\x442\x5\x23B\x11E\x2\x442"+ + "\x443\x5\x23D\x11F\x2\x443\x444\x5\x25D\x12F\x2\x444\x445\x5\x233\x11A"+ + "\x2\x445\x446\x5\x255\x12B\x2\x446\xA6\x3\x2\x2\x2\x447\x448\x5\x239\x11D"+ + "\x2\x448\x449\x5\x243\x122\x2\x449\x44A\x5\x24B\x126\x2\x44A\xA8\x3\x2"+ + "\x2\x2\x44B\x44C\x5\x239\x11D\x2\x44C\x44D\x5\x24F\x128\x2\x44D\xAA\x3"+ + "\x2\x2\x2\x44E\x44F\x5\x239\x11D\x2\x44F\x450\x5\x24F\x128\x2\x450\x451"+ + "\x5\x25B\x12E\x2\x451\x452\x5\x235\x11B\x2\x452\x453\x5\x249\x125\x2\x453"+ + "\x454\x5\x23B\x11E\x2\x454\xAC\x3\x2\x2\x2\x455\x456\x5\x23B\x11E\x2\x456"+ + "\x457\x5\x233\x11A\x2\x457\x458\x5\x237\x11C\x2\x458\x459\x5\x241\x121"+ + "\x2\x459\xAE\x3\x2\x2\x2\x45A\x45B\x5\x23B\x11E\x2\x45B\x45C\x5\x249\x125"+ + "\x2\x45C\x45D\x5\x257\x12C\x2\x45D\x45E\x5\x23B\x11E\x2\x45E\xB0\x3\x2"+ + "\x2\x2\x45F\x460\x5\x23B\x11E\x2\x460\x461\x5\x249\x125\x2\x461\x462\x5"+ + "\x257\x12C\x2\x462\x463\x5\x23B\x11E\x2\x463\x464\x5\x243\x122\x2\x464"+ + "\x465\x5\x23D\x11F\x2\x465\xB2\x3\x2\x2\x2\x466\x467\x5\x23B\x11E\x2\x467"+ + "\x468\x5\x24B\x126\x2\x468\x469\x5\x251\x129\x2\x469\x46A\x5\x259\x12D"+ + "\x2\x46A\x46B\x5\x263\x132\x2\x46B\xB4\x3\x2\x2\x2\x46C\x46D\x5\x23B\x11E"+ + "\x2\x46D\x46E\x5\x24D\x127\x2\x46E\x46F\x5\x239\x11D\x2\x46F\x470\x5\x225"+ + "\x113\x2\x470\x471\x5\x23B\x11E\x2\x471\x472\x5\x24D\x127\x2\x472\x473"+ + "\x5\x25B\x12E\x2\x473\x474\x5\x24B\x126\x2\x474\xB6\x3\x2\x2\x2\x475\x476"+ + "\x5\x23B\x11E\x2\x476\x477\x5\x24D\x127\x2\x477\x478\x5\x239\x11D\x2\x478"+ + "\x479\x5\x225\x113\x2\x479\x47A\x5\x23D\x11F\x2\x47A\x47B\x5\x25B\x12E"+ + "\x2\x47B\x47C\x5\x24D\x127\x2\x47C\x47D\x5\x237\x11C\x2\x47D\x47E\x5\x259"+ + "\x12D\x2\x47E\x47F\x5\x243\x122\x2\x47F\x480\x5\x24F\x128\x2\x480\x481"+ + "\x5\x24D\x127\x2\x481\xB8\x3\x2\x2\x2\x482\x483\x5\x23B\x11E\x2\x483\x484"+ + "\x5\x24D\x127\x2\x484\x485\x5\x239\x11D\x2\x485\x486\x5\x225\x113\x2\x486"+ + "\x487\x5\x243\x122\x2\x487\x488\x5\x23D\x11F\x2\x488\xBA\x3\x2\x2\x2\x489"+ + "\x48A\x5\x23B\x11E\x2\x48A\x48B\x5\x24D\x127\x2\x48B\x48C\x5\x239\x11D"+ + "\x2\x48C\x48D\x5\x225\x113\x2\x48D\x48E\x5\x251\x129\x2\x48E\x48F\x5\x255"+ + "\x12B\x2\x48F\x490\x5\x24F\x128\x2\x490\x491\x5\x251\x129\x2\x491\x492"+ + "\x5\x23B\x11E\x2\x492\x493\x5\x255\x12B\x2\x493\x494\x5\x259\x12D\x2\x494"+ + "\x495\x5\x263\x132\x2\x495\xBC\x3\x2\x2\x2\x496\x497\x5\x23B\x11E\x2\x497"+ + "\x498\x5\x24D\x127\x2\x498\x499\x5\x239\x11D\x2\x499\x49A\x5\x225\x113"+ + "\x2\x49A\x49B\x5\x257\x12C\x2\x49B\x49C\x5\x23B\x11E\x2\x49C\x49D\x5\x249"+ + "\x125\x2\x49D\x49E\x5\x23B\x11E\x2\x49E\x49F\x5\x237\x11C\x2\x49F\x4A0"+ + "\x5\x259\x12D\x2\x4A0\xBE\x3\x2\x2\x2\x4A1\x4A2\x5\x23B\x11E\x2\x4A2\x4A3"+ + "\x5\x24D\x127\x2\x4A3\x4A4\x5\x239\x11D\x2\x4A4\x4A5\x5\x225\x113\x2\x4A5"+ + "\x4A6\x5\x257\x12C\x2\x4A6\x4A7\x5\x25B\x12E\x2\x4A7\x4A8\x5\x235\x11B"+ + "\x2\x4A8\xC0\x3\x2\x2\x2\x4A9\x4AA\x5\x23B\x11E\x2\x4AA\x4AB\x5\x24D\x127"+ + "\x2\x4AB\x4AC\x5\x239\x11D\x2\x4AC\x4AD\x5\x225\x113\x2\x4AD\x4AE\x5\x259"+ + "\x12D\x2\x4AE\x4AF\x5\x263\x132\x2\x4AF\x4B0\x5\x251\x129\x2\x4B0\x4B1"+ + "\x5\x23B\x11E\x2\x4B1\xC2\x3\x2\x2\x2\x4B2\x4B3\x5\x23B\x11E\x2\x4B3\x4B4"+ + "\x5\x24D\x127\x2\x4B4\x4B5\x5\x239\x11D\x2\x4B5\x4B6\x5\x225\x113\x2\x4B6"+ + "\x4B7\x5\x25F\x130\x2\x4B7\x4B8\x5\x243\x122\x2\x4B8\x4B9\x5\x259\x12D"+ + "\x2\x4B9\x4BA\x5\x241\x121\x2\x4BA\xC4\x3\x2\x2\x2\x4BB\x4BC\x5\x23B\x11E"+ + "\x2\x4BC\x4BD\x5\x24D\x127\x2\x4BD\x4BE\x5\x239\x11D\x2\x4BE\xC6\x3\x2"+ + "\x2\x2\x4BF\x4C0\x5\x23B\x11E\x2\x4C0\x4C1\x5\x24D\x127\x2\x4C1\x4C2\x5"+ + "\x25B\x12E\x2\x4C2\x4C3\x5\x24B\x126\x2\x4C3\xC8\x3\x2\x2\x2\x4C4\x4C5"+ + "\x5\x23B\x11E\x2\x4C5\x4C6\x5\x253\x12A\x2\x4C6\x4C7\x5\x25D\x12F\x2\x4C7"+ + "\xCA\x3\x2\x2\x2\x4C8\x4C9\x5\x23B\x11E\x2\x4C9\x4CA\x5\x255\x12B\x2\x4CA"+ + "\x4CB\x5\x233\x11A\x2\x4CB\x4CC\x5\x257\x12C\x2\x4CC\x4CD\x5\x23B\x11E"+ + "\x2\x4CD\xCC\x3\x2\x2\x2\x4CE\x4CF\x5\x23B\x11E\x2\x4CF\x4D0\x5\x255\x12B"+ + "\x2\x4D0\x4D1\x5\x255\x12B\x2\x4D1\x4D2\x5\x24F\x128\x2\x4D2\x4D3\x5\x255"+ + "\x12B\x2\x4D3\xCE\x3\x2\x2\x2\x4D4\x4D5\x5\x23B\x11E\x2\x4D5\x4D6\x5\x25D"+ + "\x12F\x2\x4D6\x4D7\x5\x23B\x11E\x2\x4D7\x4D8\x5\x24D\x127\x2\x4D8\x4D9"+ + "\x5\x259\x12D\x2\x4D9\xD0\x3\x2\x2\x2\x4DA\x4DB\x5\x23B\x11E\x2\x4DB\x4DC"+ + "\x5\x261\x131\x2\x4DC\x4DD\x5\x243\x122\x2\x4DD\x4DE\x5\x259\x12D\x2\x4DE"+ + "\x4DF\x5\x225\x113\x2\x4DF\x4E0\x5\x239\x11D\x2\x4E0\x4E1\x5\x24F\x128"+ + "\x2\x4E1\xD2\x3\x2\x2\x2\x4E2\x4E3\x5\x23B\x11E\x2\x4E3\x4E4\x5\x261\x131"+ + "\x2\x4E4\x4E5\x5\x243\x122\x2\x4E5\x4E6\x5\x259\x12D\x2\x4E6\x4E7\x5\x225"+ + "\x113\x2\x4E7\x4E8\x5\x23D\x11F\x2\x4E8\x4E9\x5\x24F\x128\x2\x4E9\x4EA"+ + "\x5\x255\x12B\x2\x4EA\xD4\x3\x2\x2\x2\x4EB\x4EC\x5\x23B\x11E\x2\x4EC\x4ED"+ + "\x5\x261\x131\x2\x4ED\x4EE\x5\x243\x122\x2\x4EE\x4EF\x5\x259\x12D\x2\x4EF"+ + "\x4F0\x5\x225\x113\x2\x4F0\x4F1\x5\x23D\x11F\x2\x4F1\x4F2\x5\x25B\x12E"+ + "\x2\x4F2\x4F3\x5\x24D\x127\x2\x4F3\x4F4\x5\x237\x11C\x2\x4F4\x4F5\x5\x259"+ + "\x12D\x2\x4F5\x4F6\x5\x243\x122\x2\x4F6\x4F7\x5\x24F\x128\x2\x4F7\x4F8"+ + "\x5\x24D\x127\x2\x4F8\xD6\x3\x2\x2\x2\x4F9\x4FA\x5\x23B\x11E\x2\x4FA\x4FB"+ + "\x5\x261\x131\x2\x4FB\x4FC\x5\x243\x122\x2\x4FC\x4FD\x5\x259\x12D\x2\x4FD"+ + "\x4FE\x5\x225\x113\x2\x4FE\x4FF\x5\x251\x129\x2\x4FF\x500\x5\x255\x12B"+ + "\x2\x500\x501\x5\x24F\x128\x2\x501\x502\x5\x251\x129\x2\x502\x503\x5\x23B"+ + "\x11E\x2\x503\x504\x5\x255\x12B\x2\x504\x505\x5\x259\x12D\x2\x505\x506"+ + "\x5\x263\x132\x2\x506\xD8\x3\x2\x2\x2\x507\x508\x5\x23B\x11E\x2\x508\x509"+ + "\x5\x261\x131\x2\x509\x50A\x5\x243\x122\x2\x50A\x50B\x5\x259\x12D\x2\x50B"+ + "\x50C\x5\x225\x113\x2\x50C\x50D\x5\x257\x12C\x2\x50D\x50E\x5\x25B\x12E"+ + "\x2\x50E\x50F\x5\x235\x11B\x2\x50F\xDA\x3\x2\x2\x2\x510\x511\x5\x23D\x11F"+ + "\x2\x511\x512\x5\x233\x11A\x2\x512\x513\x5\x249\x125\x2\x513\x514\x5\x257"+ + "\x12C\x2\x514\x515\x5\x23B\x11E\x2\x515\xDC\x3\x2\x2\x2\x516\x517\x5\x23D"+ + "\x11F\x2\x517\x518\x5\x255\x12B\x2\x518\x519\x5\x243\x122\x2\x519\x51A"+ + "\x5\x23B\x11E\x2\x51A\x51B\x5\x24D\x127\x2\x51B\x51C\x5\x239\x11D\x2\x51C"+ + "\xDE\x3\x2\x2\x2\x51D\x51E\x5\x23D\x11F\x2\x51E\x51F\x5\x24F\x128\x2\x51F"+ + "\x520\x5\x255\x12B\x2\x520\xE0\x3\x2\x2\x2\x521\x522\x5\x23D\x11F\x2\x522"+ + "\x523\x5\x25B\x12E\x2\x523\x524\x5\x24D\x127\x2\x524\x525\x5\x237\x11C"+ + "\x2\x525\x526\x5\x259\x12D\x2\x526\x527\x5\x243\x122\x2\x527\x528\x5\x24F"+ + "\x128\x2\x528\x529\x5\x24D\x127\x2\x529\xE2\x3\x2\x2\x2\x52A\x52B\x5\x23F"+ + "\x120\x2\x52B\x52C\x5\x23B\x11E\x2\x52C\x52D\x5\x259\x12D\x2\x52D\xE4"+ + "\x3\x2\x2\x2\x52E\x52F\x5\x23F\x120\x2\x52F\x530\x5\x249\x125\x2\x530"+ + "\x531\x5\x24F\x128\x2\x531\x532\x5\x235\x11B\x2\x532\x533\x5\x233\x11A"+ + "\x2\x533\x534\x5\x249\x125\x2\x534\xE6\x3\x2\x2\x2\x535\x536\x5\x23F\x120"+ + "\x2\x536\x537\x5\x24F\x128\x2\x537\x538\x5\x257\x12C\x2\x538\x539\x5\x25B"+ + "\x12E\x2\x539\x53A\x5\x235\x11B\x2\x53A\xE8\x3\x2\x2\x2\x53B\x53C\x5\x23F"+ + "\x120\x2\x53C\x53D\x5\x24F\x128\x2\x53D\x53E\x5\x259\x12D\x2\x53E\x53F"+ + "\x5\x24F\x128\x2\x53F\xEA\x3\x2\x2\x2\x540\x541\x5\x243\x122\x2\x541\x542"+ + "\x5\x23D\x11F\x2\x542\xEC\x3\x2\x2\x2\x543\x544\x5\x243\x122\x2\x544\x545"+ + "\x5\x24B\x126\x2\x545\x546\x5\x251\x129\x2\x546\xEE\x3\x2\x2\x2\x547\x548"+ + "\x5\x243\x122\x2\x548\x549\x5\x24B\x126\x2\x549\x54A\x5\x251\x129\x2\x54A"+ + "\x54B\x5\x249\x125\x2\x54B\x54C\x5\x23B\x11E\x2\x54C\x54D\x5\x24B\x126"+ + "\x2\x54D\x54E\x5\x23B\x11E\x2\x54E\x54F\x5\x24D\x127\x2\x54F\x550\x5\x259"+ + "\x12D\x2\x550\x551\x5\x257\x12C\x2\x551\xF0\x3\x2\x2\x2\x552\x553\x5\x243"+ + "\x122\x2\x553\x554\x5\x24D\x127\x2\x554\xF2\x3\x2\x2\x2\x555\x556\x5\x243"+ + "\x122\x2\x556\x557\x5\x24D\x127\x2\x557\x558\x5\x251\x129\x2\x558\x559"+ + "\x5\x25B\x12E\x2\x559\x55A\x5\x259\x12D\x2\x55A\xF4\x3\x2\x2\x2\x55B\x55C"+ + "\x5\x243\x122\x2\x55C\x55D\x5\x257\x12C\x2\x55D\xF6\x3\x2\x2\x2\x55E\x55F"+ + "\x5\x243\x122\x2\x55F\x560\x5\x24D\x127\x2\x560\x561\x5\x259\x12D\x2\x561"+ + "\x562\x5\x23B\x11E\x2\x562\x563\x5\x23F\x120\x2\x563\x564\x5\x23B\x11E"+ + "\x2\x564\x565\x5\x255\x12B\x2\x565\xF8\x3\x2\x2\x2\x566\x567\x5\x249\x125"+ + "\x2\x567\x568\x5\x24F\x128\x2\x568\x569\x5\x237\x11C\x2\x569\x56A\x5\x247"+ + "\x124\x2\x56A\xFA\x3\x2\x2\x2\x56B\x56C\x5\x249\x125\x2\x56C\x56D\x5\x24F"+ + "\x128\x2\x56D\x56E\x5\x24D\x127\x2\x56E\x56F\x5\x23F\x120\x2\x56F\xFC"+ + "\x3\x2\x2\x2\x570\x571\x5\x249\x125\x2\x571\x572\x5\x24F\x128\x2\x572"+ + "\x573\x5\x24F\x128\x2\x573\x574\x5\x251\x129\x2\x574\xFE\x3\x2\x2\x2\x575"+ + "\x576\x5\x249\x125\x2\x576\x577\x5\x23B\x11E\x2\x577\x578\x5\x259\x12D"+ + "\x2\x578\x100\x3\x2\x2\x2\x579\x57A\x5\x249\x125\x2\x57A\x57B\x5\x243"+ + "\x122\x2\x57B\x57C\x5\x235\x11B\x2\x57C\x102\x3\x2\x2\x2\x57D\x57E\x5"+ + "\x249\x125\x2\x57E\x57F\x5\x243\x122\x2\x57F\x580\x5\x247\x124\x2\x580"+ + "\x581\x5\x23B\x11E\x2\x581\x104\x3\x2\x2\x2\x582\x583\x5\x249\x125\x2"+ + "\x583\x584\x5\x243\x122\x2\x584\x585\x5\x24D\x127\x2\x585\x586\x5\x23B"+ + "\x11E\x2\x586\x587\x5\x225\x113\x2\x587\x588\x5\x243\x122\x2\x588\x589"+ + "\x5\x24D\x127\x2\x589\x58A\x5\x251\x129\x2\x58A\x58B\x5\x25B\x12E\x2\x58B"+ + "\x58C\x5\x259\x12D\x2\x58C\x106\x3\x2\x2\x2\x58D\x58E\x5\x249\x125\x2"+ + "\x58E\x58F\x5\x24F\x128\x2\x58F\x590\x5\x237\x11C\x2\x590\x591\x5\x247"+ + "\x124\x2\x591\x592\x5\x225\x113\x2\x592\x593\x5\x255\x12B\x2\x593\x594"+ + "\x5\x23B\x11E\x2\x594\x595\x5\x233\x11A\x2\x595\x596\x5\x239\x11D\x2\x596"+ + "\x108\x3\x2\x2\x2\x597\x598\x5\x249\x125\x2\x598\x599\x5\x24F\x128\x2"+ + "\x599\x59A\x5\x237\x11C\x2\x59A\x59B\x5\x247\x124\x2\x59B\x59C\x5\x225"+ + "\x113\x2\x59C\x59D\x5\x25F\x130\x2\x59D\x59E\x5\x255\x12B\x2\x59E\x59F"+ + "\x5\x243\x122\x2\x59F\x5A0\x5\x259\x12D\x2\x5A0\x5A1\x5\x23B\x11E\x2\x5A1"+ + "\x10A\x3\x2\x2\x2\x5A2\x5A3\x5\x249\x125\x2\x5A3\x5A4\x5\x24F\x128\x2"+ + "\x5A4\x5A5\x5\x237\x11C\x2\x5A5\x5A6\x5\x247\x124\x2\x5A6\x5A7\x5\x225"+ + "\x113\x2\x5A7\x5A8\x5\x255\x12B\x2\x5A8\x5A9\x5\x23B\x11E\x2\x5A9\x5AA"+ + "\x5\x233\x11A\x2\x5AA\x5AB\x5\x239\x11D\x2\x5AB\x5AC\x5\x225\x113\x2\x5AC"+ + "\x5AD\x5\x25F\x130\x2\x5AD\x5AE\x5\x255\x12B\x2\x5AE\x5AF\x5\x243\x122"+ + "\x2\x5AF\x5B0\x5\x259\x12D\x2\x5B0\x5B1\x5\x23B\x11E\x2\x5B1\x10C\x3\x2"+ + "\x2\x2\x5B2\x5B3\x5\x249\x125\x2\x5B3\x5B4\x5\x257\x12C\x2\x5B4\x5B5\x5"+ + "\x23B\x11E\x2\x5B5\x5B6\x5\x259\x12D\x2\x5B6\x10E\x3\x2\x2\x2\x5B7\x5B8"+ + "\x5\x24B\x126\x2\x5B8\x5B9\x5\x23B\x11E\x2\x5B9\x110\x3\x2\x2\x2\x5BA"+ + "\x5BB\x5\x24B\x126\x2\x5BB\x5BC\x5\x243\x122\x2\x5BC\x5BD\x5\x239\x11D"+ + "\x2\x5BD\x112\x3\x2\x2\x2\x5BE\x5BF\x5\x24B\x126\x2\x5BF\x5C0\x5\x24F"+ + "\x128\x2\x5C0\x5C1\x5\x239\x11D\x2\x5C1\x114\x3\x2\x2\x2\x5C2\x5C3\x5"+ + "\x24D\x127\x2\x5C3\x5C4\x5\x23B\x11E\x2\x5C4\x5C5\x5\x261\x131\x2\x5C5"+ + "\x5C6\x5\x259\x12D\x2\x5C6\x116\x3\x2\x2\x2\x5C7\x5C8\x5\x24D\x127\x2"+ + "\x5C8\x5C9\x5\x23B\x11E\x2\x5C9\x5CA\x5\x25F\x130\x2\x5CA\x118\x3\x2\x2"+ + "\x2\x5CB\x5CC\x5\x24D\x127\x2\x5CC\x5CD\x5\x24F\x128\x2\x5CD\x5CE\x5\x259"+ + "\x12D\x2\x5CE\x11A\x3\x2\x2\x2\x5CF\x5D0\x5\x24D\x127\x2\x5D0\x5D1\x5"+ + "\x24F\x128\x2\x5D1\x5D2\x5\x259\x12D\x2\x5D2\x5D3\x5\x241\x121\x2\x5D3"+ + "\x5D4\x5\x243\x122\x2\x5D4\x5D5\x5\x24D\x127\x2\x5D5\x5D6\x5\x23F\x120"+ + "\x2\x5D6\x11C\x3\x2\x2\x2\x5D7\x5D8\x5\x24D\x127\x2\x5D8\x5D9\x5\x25B"+ + "\x12E\x2\x5D9\x5DA\x5\x249\x125\x2\x5DA\x5DB\x5\x249\x125\x2\x5DB\x11E"+ + "\x3\x2\x2\x2\x5DC\x5DD\x5\x24F\x128\x2\x5DD\x5DE\x5\x24D\x127\x2\x5DE"+ + "\x120\x3\x2\x2\x2\x5DF\x5E0\x5\x24F\x128\x2\x5E0\x5E1\x5\x24D\x127\x2"+ + "\x5E1\x5E2\x5\x225\x113\x2\x5E2\x5E3\x5\x23B\x11E\x2\x5E3\x5E4\x5\x255"+ + "\x12B\x2\x5E4\x5E5\x5\x255\x12B\x2\x5E5\x5E6\x5\x24F\x128\x2\x5E6\x5E7"+ + "\x5\x255\x12B\x2\x5E7\x122\x3\x2\x2\x2\x5E8\x5E9\x5\x24F\x128\x2\x5E9"+ + "\x5EA\x5\x24D\x127\x2\x5EA\x5EB\x5\x225\x113\x2\x5EB\x5EC\x5\x249\x125"+ + "\x2\x5EC\x5ED\x5\x24F\x128\x2\x5ED\x5EE\x5\x237\x11C\x2\x5EE\x5EF\x5\x233"+ + "\x11A\x2\x5EF\x5F0\x5\x249\x125\x2\x5F0\x5F1\x5\x225\x113\x2\x5F1\x5F2"+ + "\x5\x23B\x11E\x2\x5F2\x5F3\x5\x255\x12B\x2\x5F3\x5F4\x5\x255\x12B\x2\x5F4"+ + "\x5F5\x5\x24F\x128\x2\x5F5\x5F6\x5\x255\x12B\x2\x5F6\x124\x3\x2\x2\x2"+ + "\x5F7\x5F8\x5\x24F\x128\x2\x5F8\x5F9\x5\x251\x129\x2\x5F9\x5FA\x5\x23B"+ + "\x11E\x2\x5FA\x5FB\x5\x24D\x127\x2\x5FB\x126\x3\x2\x2\x2\x5FC\x5FD\x5"+ + "\x24F\x128\x2\x5FD\x5FE\x5\x251\x129\x2\x5FE\x5FF\x5\x259\x12D\x2\x5FF"+ + "\x600\x5\x243\x122\x2\x600\x601\x5\x24F\x128\x2\x601\x602\x5\x24D\x127"+ + "\x2\x602\x603\x5\x233\x11A\x2\x603\x604\x5\x249\x125\x2\x604\x128\x3\x2"+ + "\x2\x2\x605\x606\x5\x24F\x128\x2\x606\x607\x5\x251\x129\x2\x607\x608\x5"+ + "\x259\x12D\x2\x608\x609\x5\x243\x122\x2\x609\x60A\x5\x24F\x128\x2\x60A"+ + "\x60B\x5\x24D\x127\x2\x60B\x60C\x5\x225\x113\x2\x60C\x60D\x5\x235\x11B"+ + "\x2\x60D\x60E\x5\x233\x11A\x2\x60E\x60F\x5\x257\x12C\x2\x60F\x610\x5\x23B"+ + "\x11E\x2\x610\x12A\x3\x2\x2\x2\x611\x612\x5\x24F\x128\x2\x612\x613\x5"+ + "\x251\x129\x2\x613\x614\x5\x259\x12D\x2\x614\x615\x5\x243\x122\x2\x615"+ + "\x616\x5\x24F\x128\x2\x616\x617\x5\x24D\x127\x2\x617\x618\x5\x225\x113"+ + "\x2\x618\x619\x5\x23B\x11E\x2\x619\x61A\x5\x261\x131\x2\x61A\x61B\x5\x251"+ + "\x129\x2\x61B\x61C\x5\x249\x125\x2\x61C\x61D\x5\x243\x122\x2\x61D\x61E"+ + "\x5\x237\x11C\x2\x61E\x61F\x5\x243\x122\x2\x61F\x620\x5\x259\x12D\x2\x620"+ + "\x12C\x3\x2\x2\x2\x621\x622\x5\x24F\x128\x2\x622\x623\x5\x251\x129\x2"+ + "\x623\x624\x5\x259\x12D\x2\x624\x625\x5\x243\x122\x2\x625\x626\x5\x24F"+ + "\x128\x2\x626\x627\x5\x24D\x127\x2\x627\x628\x5\x225\x113\x2\x628\x629"+ + "\x5\x237\x11C\x2\x629\x62A\x5\x24F\x128\x2\x62A\x62B\x5\x24B\x126\x2\x62B"+ + "\x62C\x5\x251\x129\x2\x62C\x62D\x5\x233\x11A\x2\x62D\x62E\x5\x255\x12B"+ + "\x2\x62E\x62F\x5\x23B\x11E\x2\x62F\x12E\x3\x2\x2\x2\x630\x631\x5\x24F"+ + "\x128\x2\x631\x632\x5\x251\x129\x2\x632\x633\x5\x259\x12D\x2\x633\x634"+ + "\x5\x243\x122\x2\x634\x635\x5\x24F\x128\x2\x635\x636\x5\x24D\x127\x2\x636"+ + "\x637\x5\x225\x113\x2\x637\x638\x5\x251\x129\x2\x638\x639\x5\x255\x12B"+ + "\x2\x639\x63A\x5\x243\x122\x2\x63A\x63B\x5\x25D\x12F\x2\x63B\x63C\x5\x233"+ + "\x11A\x2\x63C\x63D\x5\x259\x12D\x2\x63D\x63E\x5\x23B\x11E\x2\x63E\x63F"+ + "\x5\x225\x113\x2\x63F\x640\x5\x24B\x126\x2\x640\x641\x5\x24F\x128\x2\x641"+ + "\x642\x5\x239\x11D\x2\x642\x643\x5\x25B\x12E\x2\x643\x644\x5\x249\x125"+ + "\x2\x644\x645\x5\x23B\x11E\x2\x645\x130\x3\x2\x2\x2\x646\x647\x5\x24F"+ + "\x128\x2\x647\x648\x5\x255\x12B\x2\x648\x132\x3\x2\x2\x2\x649\x64A\x5"+ + "\x24F\x128\x2\x64A\x64B\x5\x25B\x12E\x2\x64B\x64C\x5\x259\x12D\x2\x64C"+ + "\x64D\x5\x251\x129\x2\x64D\x64E\x5\x25B\x12E\x2\x64E\x64F\x5\x259\x12D"+ + "\x2\x64F\x134\x3\x2\x2\x2\x650\x651\x5\x251\x129\x2\x651\x652\x5\x233"+ + "\x11A\x2\x652\x653\x5\x255\x12B\x2\x653\x654\x5\x233\x11A\x2\x654\x655"+ + "\x5\x24B\x126\x2\x655\x656\x5\x233\x11A\x2\x656\x657\x5\x255\x12B\x2\x657"+ + "\x658\x5\x255\x12B\x2\x658\x659\x5\x233\x11A\x2\x659\x65A\x5\x263\x132"+ + "\x2\x65A\x136\x3\x2\x2\x2\x65B\x65C\x5\x251\x129\x2\x65C\x65D\x5\x255"+ + "\x12B\x2\x65D\x65E\x5\x23B\x11E\x2\x65E\x65F\x5\x257\x12C\x2\x65F\x660"+ + "\x5\x23B\x11E\x2\x660\x661\x5\x255\x12B\x2\x661\x662\x5\x25D\x12F\x2\x662"+ + "\x663\x5\x23B\x11E\x2\x663\x138\x3\x2\x2\x2\x664\x665\x5\x251\x129\x2"+ + "\x665\x666\x5\x255\x12B\x2\x666\x667\x5\x243\x122\x2\x667\x668\x5\x24D"+ + "\x127\x2\x668\x669\x5\x259\x12D\x2\x669\x13A\x3\x2\x2\x2\x66A\x66B\x5"+ + "\x251\x129\x2\x66B\x66C\x5\x255\x12B\x2\x66C\x66D\x5\x243\x122\x2\x66D"+ + "\x66E\x5\x25D\x12F\x2\x66E\x66F\x5\x233\x11A\x2\x66F\x670\x5\x259\x12D"+ + "\x2\x670\x671\x5\x23B\x11E\x2\x671\x13C\x3\x2\x2\x2\x672\x673\x5\x251"+ + "\x129\x2\x673\x674\x5\x255\x12B\x2\x674\x675\x5\x24F\x128\x2\x675\x676"+ + "\x5\x251\x129\x2\x676\x677\x5\x23B\x11E\x2\x677\x678\x5\x255\x12B\x2\x678"+ + "\x679\x5\x259\x12D\x2\x679\x67A\x5\x263\x132\x2\x67A\x67B\x5\x225\x113"+ + "\x2\x67B\x67C\x5\x23F\x120\x2\x67C\x67D\x5\x23B\x11E\x2\x67D\x67E\x5\x259"+ + "\x12D\x2\x67E\x13E\x3\x2\x2\x2\x67F\x680\x5\x251\x129\x2\x680\x681\x5"+ + "\x255\x12B\x2\x681\x682\x5\x24F\x128\x2\x682\x683\x5\x251\x129\x2\x683"+ + "\x684\x5\x23B\x11E\x2\x684\x685\x5\x255\x12B\x2\x685\x686\x5\x259\x12D"+ + "\x2\x686\x687\x5\x263\x132\x2\x687\x688\x5\x225\x113\x2\x688\x689\x5\x249"+ + "\x125\x2\x689\x68A\x5\x23B\x11E\x2\x68A\x68B\x5\x259\x12D\x2\x68B\x140"+ + "\x3\x2\x2\x2\x68C\x68D\x5\x251\x129\x2\x68D\x68E\x5\x255\x12B\x2\x68E"+ + "\x68F\x5\x24F\x128\x2\x68F\x690\x5\x251\x129\x2\x690\x691\x5\x23B\x11E"+ + "\x2\x691\x692\x5\x255\x12B\x2\x692\x693\x5\x259\x12D\x2\x693\x694\x5\x263"+ + "\x132\x2\x694\x695\x5\x225\x113\x2\x695\x696\x5\x257\x12C\x2\x696\x697"+ + "\x5\x23B\x11E\x2\x697\x698\x5\x259\x12D\x2\x698\x142\x3\x2\x2\x2\x699"+ + "\x69A\x5\x251\x129\x2\x69A\x69B\x5\x259\x12D\x2\x69B\x69C\x5\x255\x12B"+ + "\x2\x69C\x69D\x5\x257\x12C\x2\x69D\x69E\x5\x233\x11A\x2\x69E\x69F\x5\x23D"+ + "\x11F\x2\x69F\x6A0\x5\x23B\x11E\x2\x6A0\x144\x3\x2\x2\x2\x6A1\x6A2\x5"+ + "\x251\x129\x2\x6A2\x6A3\x5\x25B\x12E\x2\x6A3\x6A4\x5\x235\x11B\x2\x6A4"+ + "\x6A5\x5\x249\x125\x2\x6A5\x6A6\x5\x243\x122\x2\x6A6\x6A7\x5\x237\x11C"+ + "\x2\x6A7\x146\x3\x2\x2\x2\x6A8\x6A9\x5\x251\x129\x2\x6A9\x6AA\x5\x25B"+ + "\x12E\x2\x6AA\x6AB\x5\x259\x12D\x2\x6AB\x148\x3\x2\x2\x2\x6AC\x6AD\x5"+ + "\x255\x12B\x2\x6AD\x6AE\x5\x233\x11A\x2\x6AE\x6AF\x5\x24D\x127\x2\x6AF"+ + "\x6B0\x5\x239\x11D\x2\x6B0\x6B1\x5\x24F\x128\x2\x6B1\x6B2\x5\x24B\x126"+ + "\x2\x6B2\x14A\x3\x2\x2\x2\x6B3\x6B4\x5\x255\x12B\x2\x6B4\x6B5\x5\x233"+ + "\x11A\x2\x6B5\x6B6\x5\x243\x122\x2\x6B6\x6B7\x5\x257\x12C\x2\x6B7\x6B8"+ + "\x5\x23B\x11E\x2\x6B8\x6B9\x5\x23B\x11E\x2\x6B9\x6BA\x5\x25D\x12F\x2\x6BA"+ + "\x6BB\x5\x23B\x11E\x2\x6BB\x6BC\x5\x24D\x127\x2\x6BC\x6BD\x5\x259\x12D"+ + "\x2\x6BD\x14C\x3\x2\x2\x2\x6BE\x6BF\x5\x255\x12B\x2\x6BF\x6C0\x5\x23B"+ + "\x11E\x2\x6C0\x6C1\x5\x233\x11A\x2\x6C1\x6C2\x5\x239\x11D\x2\x6C2\x14E"+ + "\x3\x2\x2\x2\x6C3\x6C4\x5\x255\x12B\x2\x6C4\x6C5\x5\x23B\x11E\x2\x6C5"+ + "\x6C6\x5\x233\x11A\x2\x6C6\x6C7\x5\x239\x11D\x2\x6C7\x6C8\x5\x225\x113"+ + "\x2\x6C8\x6C9\x5\x25F\x130\x2\x6C9\x6CA\x5\x255\x12B\x2\x6CA\x6CB\x5\x243"+ + "\x122\x2\x6CB\x6CC\x5\x259\x12D\x2\x6CC\x6CD\x5\x23B\x11E\x2\x6CD\x150"+ + "\x3\x2\x2\x2\x6CE\x6CF\x5\x255\x12B\x2\x6CF\x6D0\x5\x23B\x11E\x2\x6D0"+ + "\x6D1\x5\x239\x11D\x2\x6D1\x6D2\x5\x243\x122\x2\x6D2\x6D3\x5\x24B\x126"+ + "\x2\x6D3\x152\x3\x2\x2\x2\x6D4\x6D5\x5\x255\x12B\x2\x6D5\x6D6\x5\x23B"+ + "\x11E\x2\x6D6\x6D7\x5\x24B\x126\x2\x6D7\x154\x3\x2\x2\x2\x6D8\x6D9\x5"+ + "\x255\x12B\x2\x6D9\x6DA\x5\x23B\x11E\x2\x6DA\x6DB\x5\x257\x12C\x2\x6DB"+ + "\x6DC\x5\x23B\x11E\x2\x6DC\x6DD\x5\x259\x12D\x2\x6DD\x156\x3\x2\x2\x2"+ + "\x6DE\x6DF\x5\x255\x12B\x2\x6DF\x6E0\x5\x23B\x11E\x2\x6E0\x6E1\x5\x257"+ + "\x12C\x2\x6E1\x6E2\x5\x25B\x12E\x2\x6E2\x6E3\x5\x24B\x126\x2\x6E3\x6E4"+ + "\x5\x23B\x11E\x2\x6E4\x158\x3\x2\x2\x2\x6E5\x6E6\x5\x255\x12B\x2\x6E6"+ + "\x6E7\x5\x23B\x11E\x2\x6E7\x6E8\x5\x259\x12D\x2\x6E8\x6E9\x5\x25B\x12E"+ + "\x2\x6E9\x6EA\x5\x255\x12B\x2\x6EA\x6EB\x5\x24D\x127\x2\x6EB\x15A\x3\x2"+ + "\x2\x2\x6EC\x6ED\x5\x255\x12B\x2\x6ED\x6EE\x5\x257\x12C\x2\x6EE\x6EF\x5"+ + "\x23B\x11E\x2\x6EF\x6F0\x5\x259\x12D\x2\x6F0\x15C\x3\x2\x2\x2\x6F1\x6F2"+ + "\x5\x257\x12C\x2\x6F2\x6F3\x5\x23B\x11E\x2\x6F3\x6F4\x5\x23B\x11E\x2\x6F4"+ + "\x6F5\x5\x247\x124\x2\x6F5\x15E\x3\x2\x2\x2\x6F6\x6F7\x5\x257\x12C\x2"+ + "\x6F7\x6F8\x5\x23B\x11E\x2\x6F8\x6F9\x5\x249\x125\x2\x6F9\x6FA\x5\x23B"+ + "\x11E\x2\x6FA\x6FB\x5\x237\x11C\x2\x6FB\x6FC\x5\x259\x12D\x2\x6FC\x160"+ + "\x3\x2\x2\x2\x6FD\x6FE\x5\x257\x12C\x2\x6FE\x6FF\x5\x23B\x11E\x2\x6FF"+ + "\x700\x5\x259\x12D\x2\x700\x162\x3\x2\x2\x2\x701\x702\x5\x257\x12C\x2"+ + "\x702\x703\x5\x241\x121\x2\x703\x704\x5\x233\x11A\x2\x704\x705\x5\x255"+ + "\x12B\x2\x705\x706\x5\x23B\x11E\x2\x706\x707\x5\x239\x11D\x2\x707\x164"+ + "\x3\x2\x2\x2\x708\x709\x5\x257\x12C\x2\x709\x70A\x5\x243\x122\x2\x70A"+ + "\x70B\x5\x24D\x127\x2\x70B\x70C\x5\x23F\x120\x2\x70C\x70D\x5\x249\x125"+ + "\x2\x70D\x70E\x5\x23B\x11E\x2\x70E\x166\x3\x2\x2\x2\x70F\x710\x5\x257"+ + "\x12C\x2\x710\x711\x5\x251\x129\x2\x711\x712\x5\x237\x11C\x2\x712\x168"+ + "\x3\x2\x2\x2\x713\x714\x5\x257\x12C\x2\x714\x715\x5\x259\x12D\x2\x715"+ + "\x716\x5\x233\x11A\x2\x716\x717\x5\x259\x12D\x2\x717\x718\x5\x243\x122"+ + "\x2\x718\x719\x5\x237\x11C\x2\x719\x16A\x3\x2\x2\x2\x71A\x71B\x5\x257"+ + "\x12C\x2\x71B\x71C\x5\x259\x12D\x2\x71C\x71D\x5\x23B\x11E\x2\x71D\x71E"+ + "\x5\x251\x129\x2\x71E\x16C\x3\x2\x2\x2\x71F\x720\x5\x257\x12C\x2\x720"+ + "\x721\x5\x259\x12D\x2\x721\x722\x5\x24F\x128\x2\x722\x723\x5\x251\x129"+ + "\x2\x723\x16E\x3\x2\x2\x2\x724\x725\x5\x257\x12C\x2\x725\x726\x5\x259"+ + "\x12D\x2\x726\x727\x5\x255\x12B\x2\x727\x728\x5\x243\x122\x2\x728\x729"+ + "\x5\x24D\x127\x2\x729\x72A\x5\x23F\x120\x2\x72A\x170\x3\x2\x2\x2\x72B"+ + "\x72C\x5\x257\x12C\x2\x72C\x72D\x5\x25B\x12E\x2\x72D\x72E\x5\x235\x11B"+ + "\x2\x72E\x172\x3\x2\x2\x2\x72F\x730\x5\x259\x12D\x2\x730\x731\x5\x233"+ + "\x11A\x2\x731\x732\x5\x235\x11B\x2\x732\x174\x3\x2\x2\x2\x733\x734\x5"+ + "\x259\x12D\x2\x734\x735\x5\x23B\x11E\x2\x735\x736\x5\x261\x131\x2\x736"+ + "\x737\x5\x259\x12D\x2\x737\x176\x3\x2\x2\x2\x738\x739\x5\x259\x12D\x2"+ + "\x739\x73A\x5\x241\x121\x2\x73A\x73B\x5\x23B\x11E\x2\x73B\x73C\x5\x24D"+ + "\x127\x2\x73C\x178\x3\x2\x2\x2\x73D\x73E\x5\x259\x12D\x2\x73E\x73F\x5"+ + "\x24F\x128\x2\x73F\x17A\x3\x2\x2\x2\x740\x741\x5\x259\x12D\x2\x741\x742"+ + "\x5\x255\x12B\x2\x742\x743\x5\x25B\x12E\x2\x743\x744\x5\x23B\x11E\x2\x744"+ + "\x17C\x3\x2\x2\x2\x745\x746\x5\x259\x12D\x2\x746\x747\x5\x263\x132\x2"+ + "\x747\x748\x5\x251\x129\x2\x748\x749\x5\x23B\x11E\x2\x749\x17E\x3\x2\x2"+ + "\x2\x74A\x74B\x5\x259\x12D\x2\x74B\x74C\x5\x263\x132\x2\x74C\x74D\x5\x251"+ + "\x129\x2\x74D\x74E\x5\x23B\x11E\x2\x74E\x74F\x5\x24F\x128\x2\x74F\x750"+ + "\x5\x23D\x11F\x2\x750\x180\x3\x2\x2\x2\x751\x752\x5\x25B\x12E\x2\x752"+ + "\x753\x5\x24D\x127\x2\x753\x754\x5\x249\x125\x2\x754\x755\x5\x24F\x128"+ + "\x2\x755\x756\x5\x237\x11C\x2\x756\x757\x5\x247\x124\x2\x757\x182\x3\x2"+ + "\x2\x2\x758\x759\x5\x25B\x12E\x2\x759\x75A\x5\x24D\x127\x2\x75A\x75B\x5"+ + "\x259\x12D\x2\x75B\x75C\x5\x243\x122\x2\x75C\x75D\x5\x249\x125\x2\x75D"+ + "\x184\x3\x2\x2\x2\x75E\x75F\x5\x25D\x12F\x2\x75F\x760\x5\x233\x11A\x2"+ + "\x760\x761\x5\x255\x12B\x2\x761\x762\x5\x243\x122\x2\x762\x763\x5\x233"+ + "\x11A\x2\x763\x764\x5\x24D\x127\x2\x764\x765\x5\x259\x12D\x2\x765\x186"+ + "\x3\x2\x2\x2\x766\x767\x5\x25D\x12F\x2\x767\x768\x5\x23B\x11E\x2\x768"+ + "\x769\x5\x255\x12B\x2\x769\x76A\x5\x257\x12C\x2\x76A\x76B\x5\x243\x122"+ + "\x2\x76B\x76C\x5\x24F\x128\x2\x76C\x76D\x5\x24D\x127\x2\x76D\x188\x3\x2"+ + "\x2\x2\x76E\x76F\x5\x25F\x130\x2\x76F\x770\x5\x23B\x11E\x2\x770\x771\x5"+ + "\x24D\x127\x2\x771\x772\x5\x239\x11D\x2\x772\x18A\x3\x2\x2\x2\x773\x774"+ + "\x5\x25F\x130\x2\x774\x775\x5\x241\x121\x2\x775\x776\x5\x243\x122\x2\x776"+ + "\x777\x5\x249\x125\x2\x777\x778\x5\x23B\x11E\x2\x778\x18C\x3\x2\x2\x2"+ + "\x779\x77A\x5\x25F\x130\x2\x77A\x77B\x5\x243\x122\x2\x77B\x77C\x5\x239"+ + "\x11D\x2\x77C\x77D\x5\x259\x12D\x2\x77D\x77E\x5\x241\x121\x2\x77E\x18E"+ + "\x3\x2\x2\x2\x77F\x780\x5\x25F\x130\x2\x780\x781\x5\x243\x122\x2\x781"+ + "\x782\x5\x259\x12D\x2\x782\x783\x5\x241\x121\x2\x783\x190\x3\x2\x2\x2"+ + "\x784\x785\x5\x25F\x130\x2\x785\x786\x5\x243\x122\x2\x786\x787\x5\x259"+ + "\x12D\x2\x787\x788\x5\x241\x121\x2\x788\x789\x5\x23B\x11E\x2\x789\x78A"+ + "\x5\x25D\x12F\x2\x78A\x78B\x5\x23B\x11E\x2\x78B\x78C\x5\x24D\x127\x2\x78C"+ + "\x78D\x5\x259\x12D\x2\x78D\x78E\x5\x257\x12C\x2\x78E\x192\x3\x2\x2\x2"+ + "\x78F\x790\x5\x25F\x130\x2\x790\x791\x5\x255\x12B\x2\x791\x792\x5\x243"+ + "\x122\x2\x792\x793\x5\x259\x12D\x2\x793\x794\x5\x23B\x11E\x2\x794\x194"+ + "\x3\x2\x2\x2\x795\x796\x5\x261\x131\x2\x796\x797\x5\x24F\x128\x2\x797"+ + "\x798\x5\x255\x12B\x2\x798\x196\x3\x2\x2\x2\x799\x79A\a<\x2\x2\x79A\x79B"+ + "\a?\x2\x2\x79B\x198\x3\x2\x2\x2\x79C\x79D\a\x31\x2\x2\x79D\x19A\x3\x2"+ + "\x2\x2\x79E\x79F\a^\x2\x2\x79F\x19C\x3\x2\x2\x2\x7A0\x7A1\a?\x2\x2\x7A1"+ + "\x19E\x3\x2\x2\x2\x7A2\x7A3\a@\x2\x2\x7A3\x7A7\a?\x2\x2\x7A4\x7A5\a?\x2"+ + "\x2\x7A5\x7A7\a@\x2\x2\x7A6\x7A2\x3\x2\x2\x2\x7A6\x7A4\x3\x2\x2\x2\x7A7"+ + "\x1A0\x3\x2\x2\x2\x7A8\x7A9\a@\x2\x2\x7A9\x1A2\x3\x2\x2\x2\x7AA\x7AB\a"+ + ">\x2\x2\x7AB\x7AF\a?\x2\x2\x7AC\x7AD\a?\x2\x2\x7AD\x7AF\a>\x2\x2\x7AE"+ + "\x7AA\x3\x2\x2\x2\x7AE\x7AC\x3\x2\x2\x2\x7AF\x1A4\x3\x2\x2\x2\x7B0\x7B1"+ + "\a*\x2\x2\x7B1\x1A6\x3\x2\x2\x2\x7B2\x7B3\a>\x2\x2\x7B3\x1A8\x3\x2\x2"+ + "\x2\x7B4\x7B5\a/\x2\x2\x7B5\x1AA\x3\x2\x2\x2\x7B6\x7B7\a,\x2\x2\x7B7\x1AC"+ + "\x3\x2\x2\x2\x7B8\x7B9\a>\x2\x2\x7B9\x7BD\a@\x2\x2\x7BA\x7BB\a@\x2\x2"+ + "\x7BB\x7BD\a>\x2\x2\x7BC\x7B8\x3\x2\x2\x2\x7BC\x7BA\x3\x2\x2\x2\x7BD\x1AE"+ + "\x3\x2\x2\x2\x7BE\x7BF\a-\x2\x2\x7BF\x1B0\x3\x2\x2\x2\x7C0\x7C1\a`\x2"+ + "\x2\x7C1\x1B2\x3\x2\x2\x2\x7C2\x7C3\a+\x2\x2\x7C3\x1B4\x3\x2\x2\x2\x7C4"+ + "\x7C6\x5\x225\x113\x2\x7C5\x7C4\x3\x2\x2\x2\x7C6\x7C9\x3\x2\x2\x2\x7C7"+ + "\x7C5\x3\x2\x2\x2\x7C7\x7C8\x3\x2\x2\x2\x7C8\x7CA\x3\x2\x2\x2\x7C9\x7C7"+ + "\x3\x2\x2\x2\x7CA\x7CB\x5Y-\x2\x7CB\x7CD\x5\x85\x43\x2\x7CC\x7CE\x5\x225"+ + "\x113\x2\x7CD\x7CC\x3\x2\x2\x2\x7CE\x7CF\x3\x2\x2\x2\x7CF\x7CD\x3\x2\x2"+ + "\x2\x7CF\x7D0\x3\x2\x2\x2\x7D0\x1B6\x3\x2\x2\x2\x7D1\x7D3\x5\x225\x113"+ + "\x2\x7D2\x7D1\x3\x2\x2\x2\x7D3\x7D6\x3\x2\x2\x2\x7D4\x7D2\x3\x2\x2\x2"+ + "\x7D4\x7D5\x3\x2\x2\x2\x7D5\x7D7\x3\x2\x2\x2\x7D6\x7D4\x3\x2\x2\x2\x7D7"+ + "\x7D8\x5Y-\x2\x7D8\x7D9\x5\x243\x122\x2\x7D9\x7DB\x5\x23D\x11F\x2\x7DA"+ + "\x7DC\x5\x225\x113\x2\x7DB\x7DA\x3\x2\x2\x2\x7DC\x7DD\x3\x2\x2\x2\x7DD"+ + "\x7DB\x3\x2\x2\x2\x7DD\x7DE\x3\x2\x2\x2\x7DE\x1B8\x3\x2\x2\x2\x7DF\x7E1"+ + "\x5\x225\x113\x2\x7E0\x7DF\x3\x2\x2\x2\x7E1\x7E4\x3\x2\x2\x2\x7E2\x7E0"+ + "\x3\x2\x2\x2\x7E2\x7E3\x3\x2\x2\x2\x7E3\x7E5\x3\x2\x2\x2\x7E4\x7E2\x3"+ + "\x2\x2\x2\x7E5\x7E6\x5Y-\x2\x7E6\x7E7\x5\x23B\x11E\x2\x7E7\x7E8\x5\x249"+ + "\x125\x2\x7E8\x7E9\x5\x257\x12C\x2\x7E9\x7EA\x5\x23B\x11E\x2\x7EA\x7EB"+ + "\x5\x243\x122\x2\x7EB\x7ED\x5\x23D\x11F\x2\x7EC\x7EE\x5\x225\x113\x2\x7ED"+ + "\x7EC\x3\x2\x2\x2\x7EE\x7EF\x3\x2\x2\x2\x7EF\x7ED\x3\x2\x2\x2\x7EF\x7F0"+ + "\x3\x2\x2\x2\x7F0\x1BA\x3\x2\x2\x2\x7F1\x7F3\x5\x225\x113\x2\x7F2\x7F1"+ + "\x3\x2\x2\x2\x7F3\x7F6\x3\x2\x2\x2\x7F4\x7F2\x3\x2\x2\x2\x7F4\x7F5\x3"+ + "\x2\x2\x2\x7F5\x7F7\x3\x2\x2\x2\x7F6\x7F4\x3\x2\x2\x2\x7F7\x7F8\x5Y-\x2"+ + "\x7F8\x7F9\x5\x23B\x11E\x2\x7F9\x7FA\x5\x249\x125\x2\x7FA\x7FB\x5\x257"+ + "\x12C\x2\x7FB\x7FF\x5\x23B\x11E\x2\x7FC\x7FE\x5\x225\x113\x2\x7FD\x7FC"+ + "\x3\x2\x2\x2\x7FE\x801\x3\x2\x2\x2\x7FF\x7FD\x3\x2\x2\x2\x7FF\x800\x3"+ + "\x2\x2\x2\x800\x80A\x3\x2\x2\x2\x801\x7FF\x3\x2\x2\x2\x802\x807\x5\x221"+ + "\x111\x2\x803\x806\x5\x22B\x116\x2\x804\x806\n\x2\x2\x2\x805\x803\x3\x2"+ + "\x2\x2\x805\x804\x3\x2\x2\x2\x806\x809\x3\x2\x2\x2\x807\x805\x3\x2\x2"+ + "\x2\x807\x808\x3\x2\x2\x2\x808\x80B\x3\x2\x2\x2\x809\x807\x3\x2\x2\x2"+ + "\x80A\x802\x3\x2\x2\x2\x80A\x80B\x3\x2\x2\x2\x80B\x80E\x3\x2\x2\x2\x80C"+ + "\x80F\x5\x21F\x110\x2\x80D\x80F\a\x2\x2\x3\x80E\x80C\x3\x2\x2\x2\x80E"+ + "\x80D\x3\x2\x2\x2\x80F\x1BC\x3\x2\x2\x2\x810\x812\x5\x225\x113\x2\x811"+ + "\x810\x3\x2\x2\x2\x812\x815\x3\x2\x2\x2\x813\x811\x3\x2\x2\x2\x813\x814"+ + "\x3\x2\x2\x2\x814\x816\x3\x2\x2\x2\x815\x813\x3\x2\x2\x2\x816\x817\x5"+ + "Y-\x2\x817\x818\x5\x23B\x11E\x2\x818\x819\x5\x24D\x127\x2\x819\x81D\x5"+ + "\x239\x11D\x2\x81A\x81C\x5\x225\x113\x2\x81B\x81A\x3\x2\x2\x2\x81C\x81F"+ + "\x3\x2\x2\x2\x81D\x81B\x3\x2\x2\x2\x81D\x81E\x3\x2\x2\x2\x81E\x820\x3"+ + "\x2\x2\x2\x81F\x81D\x3\x2\x2\x2\x820\x821\x5\x243\x122\x2\x821\x825\x5"+ + "\x23D\x11F\x2\x822\x824\x5\x225\x113\x2\x823\x822\x3\x2\x2\x2\x824\x827"+ + "\x3\x2\x2\x2\x825\x823\x3\x2\x2\x2\x825\x826\x3\x2\x2\x2\x826\x830\x3"+ + "\x2\x2\x2\x827\x825\x3\x2\x2\x2\x828\x82D\x5\x221\x111\x2\x829\x82C\x5"+ + "\x22B\x116\x2\x82A\x82C\n\x2\x2\x2\x82B\x829\x3\x2\x2\x2\x82B\x82A\x3"+ + "\x2\x2\x2\x82C\x82F\x3\x2\x2\x2\x82D\x82B\x3\x2\x2\x2\x82D\x82E\x3\x2"+ + "\x2\x2\x82E\x831\x3\x2\x2\x2\x82F\x82D\x3\x2\x2\x2\x830\x828\x3\x2\x2"+ + "\x2\x830\x831\x3\x2\x2\x2\x831\x834\x3\x2\x2\x2\x832\x835\x5\x21F\x110"+ + "\x2\x833\x835\a\x2\x2\x3\x834\x832\x3\x2\x2\x2\x834\x833\x3\x2\x2\x2\x835"+ + "\x1BE\x3\x2\x2\x2\x836\x837\a]\x2\x2\x837\x1C0\x3\x2\x2\x2\x838\x839\a"+ + "_\x2\x2\x839\x1C2\x3\x2\x2\x2\x83A\x840\a$\x2\x2\x83B\x83F\n\x3\x2\x2"+ + "\x83C\x83D\a$\x2\x2\x83D\x83F\a$\x2\x2\x83E\x83B\x3\x2\x2\x2\x83E\x83C"+ + "\x3\x2\x2\x2\x83F\x842\x3\x2\x2\x2\x840\x83E\x3\x2\x2\x2\x840\x841\x3"+ + "\x2\x2\x2\x841\x843\x3\x2\x2\x2\x842\x840\x3\x2\x2\x2\x843\x844\a$\x2"+ + "\x2\x844\x1C4\x3\x2\x2\x2\x845\x846\a(\x2\x2\x846\x847\aQ\x2\x2\x847\x849"+ + "\x3\x2\x2\x2\x848\x84A\t\x4\x2\x2\x849\x848\x3\x2\x2\x2\x84A\x84B\x3\x2"+ + "\x2\x2\x84B\x849\x3\x2\x2\x2\x84B\x84C\x3\x2\x2\x2\x84C\x84E\x3\x2\x2"+ + "\x2\x84D\x84F\x5\x1CF\xE8\x2\x84E\x84D\x3\x2\x2\x2\x84E\x84F\x3\x2\x2"+ + "\x2\x84F\x1C6\x3\x2\x2\x2\x850\x851\a(\x2\x2\x851\x852\aJ\x2\x2\x852\x854"+ + "\x3\x2\x2\x2\x853\x855\t\x5\x2\x2\x854\x853\x3\x2\x2\x2\x855\x856\x3\x2"+ + "\x2\x2\x856\x854\x3\x2\x2\x2\x856\x857\x3\x2\x2\x2\x857\x859\x3\x2\x2"+ + "\x2\x858\x85A\x5\x1CF\xE8\x2\x859\x858\x3\x2\x2\x2\x859\x85A\x3\x2\x2"+ + "\x2\x85A\x1C8\x3\x2\x2\x2\x85B\x85D\x5\x1CB\xE6\x2\x85C\x85E\x5\x1D1\xE9"+ + "\x2\x85D\x85C\x3\x2\x2\x2\x85D\x85E\x3\x2\x2\x2\x85E\x863\x3\x2\x2\x2"+ + "\x85F\x860\x5\x1D9\xED\x2\x860\x861\x5\x1D1\xE9\x2\x861\x863\x3\x2\x2"+ + "\x2\x862\x85B\x3\x2\x2\x2\x862\x85F\x3\x2\x2\x2\x863\x1CA\x3\x2\x2\x2"+ + "\x864\x865\x5\x1D9\xED\x2\x865\x866\x5\x1D3\xEA\x2\x866\x875\x3\x2\x2"+ + "\x2\x867\x868\x5\x1D9\xED\x2\x868\x86A\a\x30\x2\x2\x869\x86B\x5\x1D9\xED"+ + "\x2\x86A\x869\x3\x2\x2\x2\x86A\x86B\x3\x2\x2\x2\x86B\x86D\x3\x2\x2\x2"+ + "\x86C\x86E\x5\x1D3\xEA\x2\x86D\x86C\x3\x2\x2\x2\x86D\x86E\x3\x2\x2\x2"+ + "\x86E\x875\x3\x2\x2\x2\x86F\x870\a\x30\x2\x2\x870\x872\x5\x1D9\xED\x2"+ + "\x871\x873\x5\x1D3\xEA\x2\x872\x871\x3\x2\x2\x2\x872\x873\x3\x2\x2\x2"+ + "\x873\x875\x3\x2\x2\x2\x874\x864\x3\x2\x2\x2\x874\x867\x3\x2\x2\x2\x874"+ + "\x86F\x3\x2\x2\x2\x875\x1CC\x3\x2\x2\x2\x876\x878\x5\x1D9\xED\x2\x877"+ + "\x879\x5\x1CF\xE8\x2\x878\x877\x3\x2\x2\x2\x878\x879\x3\x2\x2\x2\x879"+ + "\x1CE\x3\x2\x2\x2\x87A\x87B\t\x6\x2\x2\x87B\x1D0\x3\x2\x2\x2\x87C\x87D"+ + "\t\a\x2\x2\x87D\x1D2\x3\x2\x2\x2\x87E\x880\x5\x1D5\xEB\x2\x87F\x881\x5"+ + "\x1D7\xEC\x2\x880\x87F\x3\x2\x2\x2\x880\x881\x3\x2\x2\x2\x881\x883\x3"+ + "\x2\x2\x2\x882\x884\x5\x22F\x118\x2\x883\x882\x3\x2\x2\x2\x884\x885\x3"+ + "\x2\x2\x2\x885\x883\x3\x2\x2\x2\x885\x886\x3\x2\x2\x2\x886\x1D4\x3\x2"+ + "\x2\x2\x887\x888\t\b\x2\x2\x888\x1D6\x3\x2\x2\x2\x889\x88A\t\t\x2\x2\x88A"+ + "\x1D8\x3\x2\x2\x2\x88B\x88D\x5\x22F\x118\x2\x88C\x88B\x3\x2\x2\x2\x88D"+ + "\x88E\x3\x2\x2\x2\x88E\x88C\x3\x2\x2\x2\x88E\x88F\x3\x2\x2\x2\x88F\x1DA"+ + "\x3\x2\x2\x2\x890\x891\a%\x2\x2\x891\x892\x5\x1DD\xEF\x2\x892\x893\a%"+ + "\x2\x2\x893\x1DC\x3\x2\x2\x2\x894\x896\x5\x1DF\xF0\x2\x895\x897\x5\x225"+ + "\x113\x2\x896\x895\x3\x2\x2\x2\x896\x897\x3\x2\x2\x2\x897\x898\x3\x2\x2"+ + "\x2\x898\x899\x5\x1EB\xF6\x2\x899\x89D\x3\x2\x2\x2\x89A\x89D\x5\x1DF\xF0"+ + "\x2\x89B\x89D\x5\x1EB\xF6\x2\x89C\x894\x3\x2\x2\x2\x89C\x89A\x3\x2\x2"+ + "\x2\x89C\x89B\x3\x2\x2\x2\x89D\x1DE\x3\x2\x2\x2\x89E\x89F\x5\x1E1\xF1"+ + "\x2\x89F\x8A0\x5\x1E3\xF2\x2\x8A0\x8A4\x5\x1E1\xF1\x2\x8A1\x8A2\x5\x1E3"+ + "\xF2\x2\x8A2\x8A3\x5\x1E1\xF1\x2\x8A3\x8A5\x3\x2\x2\x2\x8A4\x8A1\x3\x2"+ + "\x2\x2\x8A4\x8A5\x3\x2\x2\x2\x8A5\x1E0\x3\x2\x2\x2\x8A6\x8A8\x5\x22F\x118"+ + "\x2\x8A7\x8A6\x3\x2\x2\x2\x8A8\x8A9\x3\x2\x2\x2\x8A9\x8A7\x3\x2\x2\x2"+ + "\x8A9\x8AA\x3\x2\x2\x2\x8AA\x8AD\x3\x2\x2\x2\x8AB\x8AD\x5\x1E5\xF3\x2"+ + "\x8AC\x8A7\x3\x2\x2\x2\x8AC\x8AB\x3\x2\x2\x2\x8AD\x1E2\x3\x2\x2\x2\x8AE"+ + "\x8B0\x5\x225\x113\x2\x8AF\x8AE\x3\x2\x2\x2\x8AF\x8B0\x3\x2\x2\x2\x8B0"+ + "\x8B2\x3\x2\x2\x2\x8B1\x8B3\t\n\x2\x2\x8B2\x8B1\x3\x2\x2\x2\x8B2\x8B3"+ + "\x3\x2\x2\x2\x8B3\x8B5\x3\x2\x2\x2\x8B4\x8B6\x5\x225\x113\x2\x8B5\x8B4"+ + "\x3\x2\x2\x2\x8B5\x8B6\x3\x2\x2\x2\x8B6\x1E4\x3\x2\x2\x2\x8B7\x8BA\x5"+ + "\x1E7\xF4\x2\x8B8\x8BA\x5\x1E9\xF5\x2\x8B9\x8B7\x3\x2\x2\x2\x8B9\x8B8"+ + "\x3\x2\x2\x2\x8BA\x1E6\x3\x2\x2\x2\x8BB\x8C8\x5\x1F1\xF9\x2\x8BC\x8C8"+ + "\x5\x1F3\xFA\x2\x8BD\x8C8\x5\x1F5\xFB\x2\x8BE\x8C8\x5\x1F7\xFC\x2\x8BF"+ + "\x8C8\x5\x1F9\xFD\x2\x8C0\x8C8\x5\x1FB\xFE\x2\x8C1\x8C8\x5\x1FD\xFF\x2"+ + "\x8C2\x8C8\x5\x1FF\x100\x2\x8C3\x8C8\x5\x201\x101\x2\x8C4\x8C8\x5\x203"+ + "\x102\x2\x8C5\x8C8\x5\x205\x103\x2\x8C6\x8C8\x5\x207\x104\x2\x8C7\x8BB"+ + "\x3\x2\x2\x2\x8C7\x8BC\x3\x2\x2\x2\x8C7\x8BD\x3\x2\x2\x2\x8C7\x8BE\x3"+ + "\x2\x2\x2\x8C7\x8BF\x3\x2\x2\x2\x8C7\x8C0\x3\x2\x2\x2\x8C7\x8C1\x3\x2"+ + "\x2\x2\x8C7\x8C2\x3\x2\x2\x2\x8C7\x8C3\x3\x2\x2\x2\x8C7\x8C4\x3\x2\x2"+ + "\x2\x8C7\x8C5\x3\x2\x2\x2\x8C7\x8C6\x3\x2\x2\x2\x8C8\x1E8\x3\x2\x2\x2"+ + "\x8C9\x8D5\x5\x209\x105\x2\x8CA\x8D5\x5\x20B\x106\x2\x8CB\x8D5\x5\x20D"+ + "\x107\x2\x8CC\x8D5\x5\x20F\x108\x2\x8CD\x8D5\x5\x211\x109\x2\x8CE\x8D5"+ + "\x5\x213\x10A\x2\x8CF\x8D5\x5\x215\x10B\x2\x8D0\x8D5\x5\x217\x10C\x2\x8D1"+ + "\x8D5\x5\x219\x10D\x2\x8D2\x8D5\x5\x21B\x10E\x2\x8D3\x8D5\x5\x21D\x10F"+ + "\x2\x8D4\x8C9\x3\x2\x2\x2\x8D4\x8CA\x3\x2\x2\x2\x8D4\x8CB\x3\x2\x2\x2"+ + "\x8D4\x8CC\x3\x2\x2\x2\x8D4\x8CD\x3\x2\x2\x2\x8D4\x8CE\x3\x2\x2\x2\x8D4"+ + "\x8CF\x3\x2\x2\x2\x8D4\x8D0\x3\x2\x2\x2\x8D4\x8D1\x3\x2\x2\x2\x8D4\x8D2"+ + "\x3\x2\x2\x2\x8D4\x8D3\x3\x2\x2\x2\x8D5\x1EA\x3\x2\x2\x2\x8D6\x8D8\x5"+ + "\x22F\x118\x2\x8D7\x8D6\x3\x2\x2\x2\x8D8\x8D9\x3\x2\x2\x2\x8D9\x8D7\x3"+ + "\x2\x2\x2\x8D9\x8DA\x3\x2\x2\x2\x8DA\x8DB\x3\x2\x2\x2\x8DB\x8DC\x5\x1EF"+ + "\xF8\x2\x8DC\x8F4\x3\x2\x2\x2\x8DD\x8DF\x5\x22F\x118\x2\x8DE\x8DD\x3\x2"+ + "\x2\x2\x8DF\x8E0\x3\x2\x2\x2\x8E0\x8DE\x3\x2\x2\x2\x8E0\x8E1\x3\x2\x2"+ + "\x2\x8E1\x8E2\x3\x2\x2\x2\x8E2\x8E4\x5\x1ED\xF7\x2\x8E3\x8E5\x5\x22F\x118"+ + "\x2\x8E4\x8E3\x3\x2\x2\x2\x8E5\x8E6\x3\x2\x2\x2\x8E6\x8E4\x3\x2\x2\x2"+ + "\x8E6\x8E7\x3\x2\x2\x2\x8E7\x8EE\x3\x2\x2\x2\x8E8\x8EA\x5\x1ED\xF7\x2"+ + "\x8E9\x8EB\x5\x22F\x118\x2\x8EA\x8E9\x3\x2\x2\x2\x8EB\x8EC\x3\x2\x2\x2"+ + "\x8EC\x8EA\x3\x2\x2\x2\x8EC\x8ED\x3\x2\x2\x2\x8ED\x8EF\x3\x2\x2\x2\x8EE"+ + "\x8E8\x3\x2\x2\x2\x8EE\x8EF\x3\x2\x2\x2\x8EF\x8F1\x3\x2\x2\x2\x8F0\x8F2"+ + "\x5\x1EF\xF8\x2\x8F1\x8F0\x3\x2\x2\x2\x8F1\x8F2\x3\x2\x2\x2\x8F2\x8F4"+ + "\x3\x2\x2\x2\x8F3\x8D7\x3\x2\x2\x2\x8F3\x8DE\x3\x2\x2\x2\x8F4\x1EC\x3"+ + "\x2\x2\x2\x8F5\x8F7\x5\x225\x113\x2\x8F6\x8F5\x3\x2\x2\x2\x8F6\x8F7\x3"+ + "\x2\x2\x2\x8F7\x8F8\x3\x2\x2\x2\x8F8\x8FA\t\v\x2\x2\x8F9\x8FB\x5\x225"+ + "\x113\x2\x8FA\x8F9\x3\x2\x2\x2\x8FA\x8FB\x3\x2\x2\x2\x8FB\x1EE\x3\x2\x2"+ + "\x2\x8FC\x8FE\x5\x225\x113\x2\x8FD\x8FC\x3\x2\x2\x2\x8FD\x8FE\x3\x2\x2"+ + "\x2\x8FE\x907\x3\x2\x2\x2\x8FF\x900\x5\x233\x11A\x2\x900\x901\x5\x24B"+ + "\x126\x2\x901\x908\x3\x2\x2\x2\x902\x903\x5\x251\x129\x2\x903\x904\x5"+ + "\x24B\x126\x2\x904\x908\x3\x2\x2\x2\x905\x908\x5\x233\x11A\x2\x906\x908"+ + "\x5\x251\x129\x2\x907\x8FF\x3\x2\x2\x2\x907\x902\x3\x2\x2\x2\x907\x905"+ + "\x3\x2\x2\x2\x907\x906\x3\x2\x2\x2\x908\x1F0\x3\x2\x2\x2\x909\x90A\x5"+ + "\x245\x123\x2\x90A\x90B\x5\x233\x11A\x2\x90B\x90C\x5\x24D\x127\x2\x90C"+ + "\x90D\x5\x25B\x12E\x2\x90D\x90E\x5\x233\x11A\x2\x90E\x90F\x5\x255\x12B"+ + "\x2\x90F\x910\x5\x263\x132\x2\x910\x1F2\x3\x2\x2\x2\x911\x912\x5\x23D"+ + "\x11F\x2\x912\x913\x5\x23B\x11E\x2\x913\x914\x5\x235\x11B\x2\x914\x915"+ + "\x5\x255\x12B\x2\x915\x916\x5\x25B\x12E\x2\x916\x917\x5\x233\x11A\x2\x917"+ + "\x918\x5\x255\x12B\x2\x918\x919\x5\x263\x132\x2\x919\x1F4\x3\x2\x2\x2"+ + "\x91A\x91B\x5\x24B\x126\x2\x91B\x91C\x5\x233\x11A\x2\x91C\x91D\x5\x255"+ + "\x12B\x2\x91D\x91E\x5\x237\x11C\x2\x91E\x91F\x5\x241\x121\x2\x91F\x1F6"+ + "\x3\x2\x2\x2\x920\x921\x5\x233\x11A\x2\x921\x922\x5\x251\x129\x2\x922"+ + "\x923\x5\x255\x12B\x2\x923\x924\x5\x243\x122\x2\x924\x925\x5\x249\x125"+ + "\x2\x925\x1F8\x3\x2\x2\x2\x926\x927\x5\x24B\x126\x2\x927\x928\x5\x233"+ + "\x11A\x2\x928\x929\x5\x263\x132\x2\x929\x1FA\x3\x2\x2\x2\x92A\x92B\x5"+ + "\x245\x123\x2\x92B\x92C\x5\x25B\x12E\x2\x92C\x92D\x5\x24D\x127\x2\x92D"+ + "\x92E\x5\x23B\x11E\x2\x92E\x1FC\x3\x2\x2\x2\x92F\x930\x5\x245\x123\x2"+ + "\x930\x931\x5\x25B\x12E\x2\x931\x932\x5\x249\x125\x2\x932\x933\x5\x263"+ + "\x132\x2\x933\x1FE\x3\x2\x2\x2\x934\x935\x5\x233\x11A\x2\x935\x936\x5"+ + "\x25B\x12E\x2\x936\x937\x5\x23F\x120\x2\x937\x938\x5\x25B\x12E\x2\x938"+ + "\x939\x5\x257\x12C\x2\x939\x93A\x5\x259\x12D\x2\x93A\x200\x3\x2\x2\x2"+ + "\x93B\x93C\x5\x257\x12C\x2\x93C\x93D\x5\x23B\x11E\x2\x93D\x93E\x5\x251"+ + "\x129\x2\x93E\x93F\x5\x259\x12D\x2\x93F\x940\x5\x23B\x11E\x2\x940\x941"+ + "\x5\x24B\x126\x2\x941\x942\x5\x235\x11B\x2\x942\x943\x5\x23B\x11E\x2\x943"+ + "\x944\x5\x255\x12B\x2\x944\x202\x3\x2\x2\x2\x945\x946\x5\x24F\x128\x2"+ + "\x946\x947\x5\x237\x11C\x2\x947\x948\x5\x259\x12D\x2\x948\x949\x5\x24F"+ + "\x128\x2\x949\x94A\x5\x235\x11B\x2\x94A\x94B\x5\x23B\x11E\x2\x94B\x94C"+ + "\x5\x255\x12B\x2\x94C\x204\x3\x2\x2\x2\x94D\x94E\x5\x24D\x127\x2\x94E"+ + "\x94F\x5\x24F\x128\x2\x94F\x950\x5\x25D\x12F\x2\x950\x951\x5\x23B\x11E"+ + "\x2\x951\x952\x5\x24B\x126\x2\x952\x953\x5\x235\x11B\x2\x953\x954\x5\x23B"+ + "\x11E\x2\x954\x955\x5\x255\x12B\x2\x955\x206\x3\x2\x2\x2\x956\x957\x5"+ + "\x239\x11D\x2\x957\x958\x5\x23B\x11E\x2\x958\x959\x5\x237\x11C\x2\x959"+ + "\x95A\x5\x23B\x11E\x2\x95A\x95B\x5\x24B\x126\x2\x95B\x95C\x5\x235\x11B"+ + "\x2\x95C\x95D\x5\x23B\x11E\x2\x95D\x95E\x5\x255\x12B\x2\x95E\x208\x3\x2"+ + "\x2\x2\x95F\x960\x5\x245\x123\x2\x960\x961\x5\x233\x11A\x2\x961\x962\x5"+ + "\x24D\x127\x2\x962\x20A\x3\x2\x2\x2\x963\x964\x5\x23D\x11F\x2\x964\x965"+ + "\x5\x23B\x11E\x2\x965\x966\x5\x235\x11B\x2\x966\x20C\x3\x2\x2\x2\x967"+ + "\x968\x5\x24B\x126\x2\x968\x969\x5\x233\x11A\x2\x969\x96A\x5\x255\x12B"+ + "\x2\x96A\x20E\x3\x2\x2\x2\x96B\x96C\x5\x233\x11A\x2\x96C\x96D\x5\x251"+ + "\x129\x2\x96D\x96E\x5\x255\x12B\x2\x96E\x210\x3\x2\x2\x2\x96F\x970\x5"+ + "\x245\x123\x2\x970\x971\x5\x25B\x12E\x2\x971\x972\x5\x24D\x127\x2\x972"+ + "\x212\x3\x2\x2\x2\x973\x974\x5\x245\x123\x2\x974\x975\x5\x25B\x12E\x2"+ + "\x975\x976\x5\x249\x125\x2\x976\x214\x3\x2\x2\x2\x977\x978\x5\x233\x11A"+ + "\x2\x978\x979\x5\x25B\x12E\x2\x979\x97A\x5\x23F\x120\x2\x97A\x216\x3\x2"+ + "\x2\x2\x97B\x97C\x5\x257\x12C\x2\x97C\x97D\x5\x23B\x11E\x2\x97D\x97E\x5"+ + "\x251\x129\x2\x97E\x218\x3\x2\x2\x2\x97F\x980\x5\x24F\x128\x2\x980\x981"+ + "\x5\x237\x11C\x2\x981\x982\x5\x259\x12D\x2\x982\x21A\x3\x2\x2\x2\x983"+ + "\x984\x5\x24D\x127\x2\x984\x985\x5\x24F\x128\x2\x985\x986\x5\x25D\x12F"+ + "\x2\x986\x21C\x3\x2\x2\x2\x987\x988\x5\x239\x11D\x2\x988\x989\x5\x23B"+ + "\x11E\x2\x989\x98A\x5\x237\x11C\x2\x98A\x21E\x3\x2\x2\x2\x98B\x98C\a\xF"+ + "\x2\x2\x98C\x98F\a\f\x2\x2\x98D\x98F\t\x2\x2\x2\x98E\x98B\x3\x2\x2\x2"+ + "\x98E\x98D\x3\x2\x2\x2\x98F\x220\x3\x2\x2\x2\x990\x991\a)\x2\x2\x991\x222"+ + "\x3\x2\x2\x2\x992\x993\a\x61\x2\x2\x993\x224\x3\x2\x2\x2\x994\x995\t\f"+ + "\x2\x2\x995\x226\x3\x2\x2\x2\x996\x998\a}\x2\x2\x997\x999\t\x5\x2\x2\x998"+ + "\x997\x3\x2\x2\x2\x999\x99A\x3\x2\x2\x2\x99A\x998\x3\x2\x2\x2\x99A\x99B"+ + "\x3\x2\x2\x2\x99B\x99C\x3\x2\x2\x2\x99C\x99E\a/\x2\x2\x99D\x99F\t\x5\x2"+ + "\x2\x99E\x99D\x3\x2\x2\x2\x99F\x9A0\x3\x2\x2\x2\x9A0\x99E\x3\x2\x2\x2"+ + "\x9A0\x9A1\x3\x2\x2\x2\x9A1\x9A2\x3\x2\x2\x2\x9A2\x9A4\a/\x2\x2\x9A3\x9A5"+ + "\t\x5\x2\x2\x9A4\x9A3\x3\x2\x2\x2\x9A5\x9A6\x3\x2\x2\x2\x9A6\x9A4\x3\x2"+ + "\x2\x2\x9A6\x9A7\x3\x2\x2\x2\x9A7\x9A8\x3\x2\x2\x2\x9A8\x9AA\a/\x2\x2"+ + "\x9A9\x9AB\t\x5\x2\x2\x9AA\x9A9\x3\x2\x2\x2\x9AB\x9AC\x3\x2\x2\x2\x9AC"+ + "\x9AA\x3\x2\x2\x2\x9AC\x9AD\x3\x2\x2\x2\x9AD\x9AE\x3\x2\x2\x2\x9AE\x9B0"+ + "\a/\x2\x2\x9AF\x9B1\t\x5\x2\x2\x9B0\x9AF\x3\x2\x2\x2\x9B1\x9B2\x3\x2\x2"+ + "\x2\x9B2\x9B0\x3\x2\x2\x2\x9B2\x9B3\x3\x2\x2\x2\x9B3\x9B4\x3\x2\x2\x2"+ + "\x9B4\x9B5\a\x7F\x2\x2\x9B5\x228\x3\x2\x2\x2\x9B6\x9BA\n\r\x2\x2\x9B7"+ + "\x9B9\n\xE\x2\x2\x9B8\x9B7\x3\x2\x2\x2\x9B9\x9BC\x3\x2\x2\x2\x9BA\x9B8"+ + "\x3\x2\x2\x2\x9BA\x9BB\x3\x2\x2\x2\x9BB\x9C6\x3\x2\x2\x2\x9BC\x9BA\x3"+ + "\x2\x2\x2\x9BD\x9BF\x5\x1BF\xE0\x2\x9BE\x9C0\n\xF\x2\x2\x9BF\x9BE\x3\x2"+ + "\x2\x2\x9C0\x9C1\x3\x2\x2\x2\x9C1\x9BF\x3\x2\x2\x2\x9C1\x9C2\x3\x2\x2"+ + "\x2\x9C2\x9C3\x3\x2\x2\x2\x9C3\x9C4\x5\x1C1\xE1\x2\x9C4\x9C6\x3\x2\x2"+ + "\x2\x9C5\x9B6\x3\x2\x2\x2\x9C5\x9BD\x3\x2\x2\x2\x9C6\x22A\x3\x2\x2\x2"+ + "\x9C7\x9C9\t\f\x2\x2\x9C8\x9C7\x3\x2\x2\x2\x9C9\x9CC\x3\x2\x2\x2\x9CA"+ + "\x9C8\x3\x2\x2\x2\x9CA\x9CB\x3\x2\x2\x2\x9CB\x9CD\x3\x2\x2\x2\x9CC\x9CA"+ + "\x3\x2\x2\x2\x9CD\x9D1\x5\x223\x112\x2\x9CE\x9D0\t\f\x2\x2\x9CF\x9CE\x3"+ + "\x2\x2\x2\x9D0\x9D3\x3\x2\x2\x2\x9D1\x9CF\x3\x2\x2\x2\x9D1\x9D2\x3\x2"+ + "\x2\x2\x9D2\x9D5\x3\x2\x2\x2\x9D3\x9D1\x3\x2\x2\x2\x9D4\x9D6\a\xF\x2\x2"+ + "\x9D5\x9D4\x3\x2\x2\x2\x9D5\x9D6\x3\x2\x2\x2\x9D6\x9D7\x3\x2\x2\x2\x9D7"+ + "\x9D8\a\f\x2\x2\x9D8\x22C\x3\x2\x2\x2\x9D9\x9DA\t\x10\x2\x2\x9DA\x22E"+ + "\x3\x2\x2\x2\x9DB\x9DC\t\x11\x2\x2\x9DC\x230\x3\x2\x2\x2\x9DD\x9DE\t\x12"+ + "\x2\x2\x9DE\x232\x3\x2\x2\x2\x9DF\x9E0\t\x13\x2\x2\x9E0\x234\x3\x2\x2"+ + "\x2\x9E1\x9E2\t\x14\x2\x2\x9E2\x236\x3\x2\x2\x2\x9E3\x9E4\t\x15\x2\x2"+ + "\x9E4\x238\x3\x2\x2\x2\x9E5\x9E6\t\x16\x2\x2\x9E6\x23A\x3\x2\x2\x2\x9E7"+ + "\x9E8\t\x17\x2\x2\x9E8\x23C\x3\x2\x2\x2\x9E9\x9EA\t\x18\x2\x2\x9EA\x23E"+ + "\x3\x2\x2\x2\x9EB\x9EC\t\x19\x2\x2\x9EC\x240\x3\x2\x2\x2\x9ED\x9EE\t\x1A"+ + "\x2\x2\x9EE\x242\x3\x2\x2\x2\x9EF\x9F0\t\x1B\x2\x2\x9F0\x244\x3\x2\x2"+ + "\x2\x9F1\x9F2\t\x1C\x2\x2\x9F2\x246\x3\x2\x2\x2\x9F3\x9F4\t\x1D\x2\x2"+ + "\x9F4\x248\x3\x2\x2\x2\x9F5\x9F6\t\x1E\x2\x2\x9F6\x24A\x3\x2\x2\x2\x9F7"+ + "\x9F8\t\x1F\x2\x2\x9F8\x24C\x3\x2\x2\x2\x9F9\x9FA\t \x2\x2\x9FA\x24E\x3"+ + "\x2\x2\x2\x9FB\x9FC\t!\x2\x2\x9FC\x250\x3\x2\x2\x2\x9FD\x9FE\t\"\x2\x2"+ + "\x9FE\x252\x3\x2\x2\x2\x9FF\xA00\t#\x2\x2\xA00\x254\x3\x2\x2\x2\xA01\xA02"+ + "\t$\x2\x2\xA02\x256\x3\x2\x2\x2\xA03\xA04\t%\x2\x2\xA04\x258\x3\x2\x2"+ + "\x2\xA05\xA06\t&\x2\x2\xA06\x25A\x3\x2\x2\x2\xA07\xA08\t\'\x2\x2\xA08"+ + "\x25C\x3\x2\x2\x2\xA09\xA0A\t(\x2\x2\xA0A\x25E\x3\x2\x2\x2\xA0B\xA0C\t"+ + ")\x2\x2\xA0C\x260\x3\x2\x2\x2\xA0D\xA0E\t*\x2\x2\xA0E\x262\x3\x2\x2\x2"+ + "\xA0F\xA10\t+\x2\x2\xA10\x264\x3\x2\x2\x2\xA11\xA12\t,\x2\x2\xA12\x266"+ + "\x3\x2\x2\x2\xA13\xA14\v\x2\x2\x2\xA14\x268\x3\x2\x2\x2K\x2\x7A6\x7AE"+ + "\x7BC\x7C7\x7CF\x7D4\x7DD\x7E2\x7EF\x7F4\x7FF\x805\x807\x80A\x80E\x813"+ + "\x81D\x825\x82B\x82D\x830\x834\x83E\x840\x84B\x84E\x856\x859\x85D\x862"+ + "\x86A\x86D\x872\x874\x878\x880\x885\x88E\x896\x89C\x8A4\x8A9\x8AC\x8AF"+ + "\x8B2\x8B5\x8B9\x8C7\x8D4\x8D9\x8E0\x8E6\x8EC\x8EE\x8F1\x8F3\x8F6\x8FA"+ + "\x8FD\x907\x98E\x99A\x9A0\x9A6\x9AC\x9B2\x9BA\x9C1\x9C5\x9CA\x9D1\x9D5"+ + "\x2"; public static readonly ATN _ATN = new ATNDeserializer().Deserialize(_serializedATN.ToCharArray()); } diff --git a/Rubberduck.Parsing/Grammar/VBALexer.g4 b/Rubberduck.Parsing/Grammar/VBALexer.g4 index 0398096eb2..a44fe825c6 100644 --- a/Rubberduck.Parsing/Grammar/VBALexer.g4 +++ b/Rubberduck.Parsing/Grammar/VBALexer.g4 @@ -70,11 +70,9 @@ ADDRESSOF : A D D R E S S O F; ALIAS : A L I A S; AND : A N D; ATTRIBUTE : A T T R I B U T E; -APPACTIVATE : A P P A C T I V A T E; APPEND : A P P E N D; AS : A S; BEGIN : B E G I N; -BEEP : B E E P; BINARY : B I N A R Y; BOOLEAN : B O O L E A N; BYVAL : B Y V A L; @@ -82,8 +80,6 @@ BYREF : B Y R E F; BYTE : B Y T E; CALL : C A L L; CASE : C A S E; -CHDIR : C H D I R; -CHDRIVE : C H D R I V E; CLASS : C L A S S; CLOSE : C L O S E; CONST : C O N S T; @@ -103,7 +99,6 @@ DEFOBJ : D E F O B J; DEFSNG : D E F S N G; DEFSTR : D E F S T R; DEFVAR : D E F V A R; -DELETESETTING : D E L E T E S E T T I N G; DIM : D I M; DO : D O; DOUBLE : D O U B L E; @@ -131,7 +126,6 @@ EXIT_FUNCTION : E X I T WS F U N C T I O N; EXIT_PROPERTY : E X I T WS P R O P E R T Y; EXIT_SUB : E X I T WS S U B; FALSE : F A L S E; -FILECOPY : F I L E C O P Y; FRIEND : F R I E N D; FOR : F O R; FUNCTION : F U N C T I O N; @@ -146,8 +140,6 @@ IN : I N; INPUT : I N P U T; IS : I S; INTEGER : I N T E G E R; -KILL: K I L L; -LOAD : L O A D; LOCK : L O C K; LONG : L O N G; LOOP : L O O P; @@ -161,9 +153,7 @@ LOCK_READ_WRITE : L O C K WS R E A D WS W R I T E; LSET : L S E T; ME : M E; MID : M I D; -MKDIR : M K D I R; MOD : M O D; -NAME : N A M E; NEXT : N E X T; NEW : N E W; NOT : N O T; @@ -191,7 +181,6 @@ PTRSAFE : P T R S A F E; PUBLIC : P U B L I C; PUT : P U T; RANDOM : R A N D O M; -RANDOMIZE : R A N D O M I Z E; RAISEEVENT : R A I S E E V E N T; READ : R E A D; READ_WRITE : R E A D WS W R I T E; @@ -200,15 +189,10 @@ REM : R E M; RESET : R E S E T; RESUME : R E S U M E; RETURN : R E T U R N; -RMDIR : R M D I R; RSET : R S E T; -SAVEPICTURE : S A V E P I C T U R E; -SAVESETTING : S A V E S E T T I N G; SEEK : S E E K; SELECT : S E L E C T; -SENDKEYS : S E N D K E Y S; SET : S E T; -SETATTR : S E T A T T R; SHARED : S H A R E D; SINGLE : S I N G L E; SPC : S P C; @@ -220,12 +204,10 @@ SUB : S U B; TAB : T A B; TEXT : T E X T; THEN : T H E N; -TIME : T I M E; TO : T O; TRUE : T R U E; TYPE : T Y P E; TYPEOF : T Y P E O F; -UNLOAD : U N L O A D; UNLOCK : U N L O C K; UNTIL : U N T I L; VARIANT : V A R I A N T; @@ -252,16 +234,16 @@ NEQ : '<>' | '><'; PLUS : '+'; POW : '^'; RPAREN : ')'; -HASHCONST : WS* HASH CONST; -HASHIF : WS* HASH I F; -HASHELSEIF : WS* HASH E L S E I F; -HASHELSE : WS* HASH E L S E; -HASHENDIF : WS* HASH E N D WS* I F; +HASHCONST : WS* HASH CONST WS+; +HASHIF : WS* HASH I F WS+; +HASHELSEIF : WS* HASH E L S E I F WS+; +HASHELSE : WS* HASH E L S E WS* (SINGLEQUOTE (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*)? (NEWLINE | EOF); +HASHENDIF : WS* HASH E N D WS* I F WS* (SINGLEQUOTE (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*)? (NEWLINE | EOF); L_SQUARE_BRACKET : '['; R_SQUARE_BRACKET : ']'; STRINGLITERAL : '"' (~["\r\n] | '""')* '"'; -OCTLITERAL : '&O' [0-8]+ '&'?; -HEXLITERAL : '&H' [0-9A-F]+ '&'?; +OCTLITERAL : '&O' [0-8]+ INTEGERTYPESUFFIX?; +HEXLITERAL : '&H' [0-9A-F]+ INTEGERTYPESUFFIX?; FLOATLITERAL : FLOATINGPOINTLITERAL FLOATINGPOINTTYPESUFFIX? | DECIMALLITERAL FLOATINGPOINTTYPESUFFIX; @@ -311,14 +293,12 @@ fragment OCT : O C T; fragment NOV : N O V; fragment DEC : D E C; NEWLINE : '\r' '\n' | [\r\n\u2028\u2029]; -REMCOMMENT : COLON? REM WS (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*; -COMMENT : SINGLEQUOTE (LINE_CONTINUATION | ~[\r\n\u2028\u2029@]) (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*; SINGLEQUOTE : '\''; UNDERSCORE : '_'; WS : [ \t]; +GUIDLITERAL : '{' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '}'; IDENTIFIER : ~[\[\]\(\)\r\n\t.,'"|!@#$%^&*-+:=; 0-9-/\\] ~[\[\]\(\)\r\n\t.,'"|!@#$%^&*-+:=; ]* | L_SQUARE_BRACKET (~[!\]\r\n])+ R_SQUARE_BRACKET; LINE_CONTINUATION : [ \t]* UNDERSCORE [ \t]* '\r'? '\n'; -GUIDLITERAL : '{' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '}'; fragment LETTER : [a-zA-Z_äöüÄÖÜ]; fragment DIGIT : [0-9]; fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ]; diff --git a/Rubberduck.Parsing/Grammar/VBAParser.cs b/Rubberduck.Parsing/Grammar/VBAParser.cs index 25d2137b96..cac88f5ce3 100644 --- a/Rubberduck.Parsing/Grammar/VBAParser.cs +++ b/Rubberduck.Parsing/Grammar/VBAParser.cs @@ -29,46 +29,45 @@ namespace Rubberduck.Parsing.Grammar { [System.CLSCompliant(false)] public partial class VBAParser : Parser { public const int - PRINT=166, ELSEIF=93, CBYTE=5, CLOSE=69, STATIC=196, MINUS=230, OPTION_EXPLICIT=159, - L_SQUARE_BRACKET=241, SETATTR=192, DOEVENTS=21, HASHENDIF=240, DATELITERAL=248, - ERROR=107, NOTHING=151, EACH=91, SUB=200, FILECOPY=115, STOP=198, LPAREN=228, - MID=144, CVERR=19, BEEP=58, AS=56, END_PROPERTY=98, AT=45, DATABASE=71, - GOSUB=121, CSNG=15, HASHCONST=236, CHDIR=66, POW=234, DOLLAR=47, PROPERTY_LET=169, - THEN=203, XOR=220, EXIT_FOR=110, DEFINT=79, HASHIF=237, UNLOCK=210, CALL=64, - LOCK_READ=139, SET=191, LOCK_READ_WRITE=141, ABS=1, LSET=142, RAISEEVENT=176, - MIDBTYPESUFFIX=32, SEEK=188, LONG=133, CBOOL=4, LIB=136, DIM=88, APPEND=55, - MKDIR=145, OPEN=156, DIV=222, PROPERTY_SET=170, CDBL=8, PERCENT=46, SENDKEYS=190, - END_SELECT=99, STRING=199, HASHELSEIF=238, SGN=37, REM=180, TO=205, DEFDBL=77, - BYVAL=61, FRIEND=116, LOOP=134, DELETESETTING=87, CLASS=68, DO=89, VARIANT=212, - END_WITH=102, DEFBOOL=74, OPTIONAL=157, ADDRESSOF=50, CONST=70, RSET=185, - INTEGER=129, CDEC=9, REMCOMMENT=250, ATTRIBUTE=53, OUTPUT=163, FOR=117, - PTRSAFE=171, EQ=224, BOOLEAN=60, CIRCLE=11, NAME=147, END_FUNCTION=96, - DEFSNG=84, DEFBYTE=75, NOT=150, CINT=10, SAVESETTING=187, END=103, PRESERVE=165, - ON_LOCAL_ERROR=155, FLOATLITERAL=246, HASHELSE=239, LOAD=131, BINARY=59, - LENB=28, RETURN=183, EXCLAMATIONPOINT=42, NEXT=148, GLOBAL=120, INPUTB=24, - IDENTIFIER=255, WS=254, EMPTY=94, CURRENCY=17, CCUR=6, MOD=146, WITHEVENTS=218, - COLON=40, DEFLNGLNG=81, STEP=197, TIME=204, OPTION_BASE=158, GT=226, PUT=173, - WITH=217, CSTR=16, LOCK_WRITE=140, LINE_CONTINUATION=256, TYPEOF=208, - DEFVAR=86, RMDIR=184, DEFLNG=80, UBOUND=38, FALSE=114, ERRORCHAR=258, - UNDERSCORE=253, INTEGERLITERAL=247, END_IF=97, LOCK=132, TEXT=202, SINGLEQUOTE=252, - SAVEPICTURE=186, MULT=231, SEMICOLON=41, BYTE=63, HEXLITERAL=245, ELSE=92, - IF=123, TYPE=207, AMPERSAND=48, DEFLNGPTR=82, ENUM=104, DEFOBJ=83, IN=126, - CHDRIVE=67, OPTION=34, DOT=43, EXIT_DO=109, GUIDLITERAL=257, IS=128, EQV=105, - WEND=214, FUNCTION=118, HASH=44, CASE=65, GEQ=225, GET=119, PUBLIC=172, - ON_ERROR=154, EXIT=22, MIDB=31, END_ENUM=95, GOTO=122, INTDIV=223, LONGPTR=30, - WIDTH=216, BEGIN=57, EXIT_SUB=113, ASSIGN=221, COMMENT=251, WRITE=219, - RANDOMIZE=175, DOUBLE=90, EXIT_PROPERTY=112, COMMA=39, RANDOM=174, PROPERTY_GET=168, - SELECT=189, PRIVATE=167, ERASE=106, TAB=201, BYREF=62, VERSION=213, NEQ=232, - END_TYPE=101, KILL=130, NEW=149, ARRAY=3, INPUT=127, SINGLE=194, UNLOAD=209, - ALIAS=51, SPC=195, LT=229, RESET=181, END_SUB=100, EVENT=108, READ_WRITE=178, - OPTION_COMPARE=160, ME=143, SCALE=36, CDATE=7, MIDTYPESUFFIX=33, NULL=152, - NEWLINE=249, TRUE=206, RPAREN=235, APPACTIVATE=54, IMP=124, STRINGLITERAL=243, - OCTLITERAL=244, READ=177, DATE=72, LIKE=137, AND=52, OPTION_PRIVATE_MODULE=161, - CLNGLNG=13, PLUS=233, ANY=2, RESUME=182, INT=25, SHARED=193, EXIT_FUNCTION=111, - PSET=35, ACCESS=49, LINE_INPUT=138, ON=153, OR=162, PARAMARRAY=164, LBOUND=26, - R_SQUARE_BRACKET=242, IMPLEMENTS=125, UNTIL=211, DEBUG=20, DEFCUR=78, - CLNGPTR=14, LONGLONG=29, DECLARE=73, DEFDATE=76, FIX=23, LEN=27, REDIM=179, - LEQ=227, DEFSTR=85, LET=135, WHILE=215, CVAR=18, CLNG=12, COLLECTION=259; + PRINT=156, ELSEIF=88, CBYTE=5, CLOSE=65, STATIC=180, MINUS=212, OPTION_EXPLICIT=149, + L_SQUARE_BRACKET=223, DOEVENTS=21, HASHENDIF=222, DATELITERAL=230, ERROR=102, + NOTHING=141, EACH=86, SUB=184, STOP=182, LPAREN=210, MID=136, CVERR=19, + AS=55, END_PROPERTY=93, AT=45, DATABASE=67, GOSUB=115, CSNG=15, HASHCONST=218, + POW=216, DOLLAR=47, PROPERTY_LET=159, THEN=187, XOR=202, EXIT_FOR=105, + DEFINT=75, HASHIF=219, UNLOCK=192, CALL=62, LOCK_READ=131, SET=176, LOCK_READ_WRITE=133, + ABS=1, LSET=134, RAISEEVENT=165, MIDBTYPESUFFIX=32, SEEK=174, LONG=125, + CBOOL=4, LIB=128, DIM=83, APPEND=54, OPEN=146, DIV=204, PROPERTY_SET=160, + CDBL=8, PERCENT=46, END_SELECT=94, STRING=183, HASHELSEIF=220, SGN=37, + REM=169, TO=188, DEFDBL=73, BYVAL=59, FRIEND=110, LOOP=126, CLASS=64, + DO=84, VARIANT=194, END_WITH=97, DEFBOOL=70, OPTIONAL=147, ADDRESSOF=50, + CONST=66, RSET=173, INTEGER=123, CDEC=9, ATTRIBUTE=53, OUTPUT=153, FOR=111, + PTRSAFE=161, EQ=206, BOOLEAN=58, CIRCLE=11, END_FUNCTION=91, DEFSNG=80, + DEFBYTE=71, NOT=140, CINT=10, END=98, PRESERVE=155, ON_LOCAL_ERROR=145, + FLOATLITERAL=228, HASHELSE=221, BINARY=57, LENB=28, RETURN=172, EXCLAMATIONPOINT=42, + NEXT=138, GLOBAL=114, INPUTB=24, IDENTIFIER=236, WS=234, EMPTY=89, CURRENCY=17, + CCUR=6, MOD=137, WITHEVENTS=200, COLON=40, DEFLNGLNG=77, STEP=181, OPTION_BASE=148, + GT=208, PUT=163, WITH=199, CSTR=16, LOCK_WRITE=132, LINE_CONTINUATION=237, + TYPEOF=191, DEFVAR=82, DEFLNG=76, UBOUND=38, FALSE=109, ERRORCHAR=238, + UNDERSCORE=233, INTEGERLITERAL=229, END_IF=92, LOCK=124, TEXT=186, SINGLEQUOTE=232, + MULT=213, SEMICOLON=41, BYTE=61, HEXLITERAL=227, ELSE=87, IF=117, TYPE=190, + AMPERSAND=48, DEFLNGPTR=78, ENUM=99, DEFOBJ=79, IN=120, OPTION=34, DOT=43, + EXIT_DO=104, GUIDLITERAL=235, IS=122, EQV=100, WEND=196, FUNCTION=112, + HASH=44, CASE=63, GEQ=207, GET=113, PUBLIC=162, ON_ERROR=144, EXIT=22, + MIDB=31, END_ENUM=90, GOTO=116, INTDIV=205, LONGPTR=30, WIDTH=198, BEGIN=56, + EXIT_SUB=108, ASSIGN=203, WRITE=201, DOUBLE=85, EXIT_PROPERTY=107, COMMA=39, + RANDOM=164, PROPERTY_GET=158, SELECT=175, PRIVATE=157, ERASE=101, TAB=185, + BYREF=60, VERSION=195, NEQ=214, END_TYPE=96, NEW=139, ARRAY=3, INPUT=121, + SINGLE=178, ALIAS=51, SPC=179, LT=211, RESET=170, END_SUB=95, EVENT=103, + READ_WRITE=167, OPTION_COMPARE=150, ME=135, SCALE=36, CDATE=7, MIDTYPESUFFIX=33, + NULL=142, NEWLINE=231, TRUE=189, RPAREN=217, IMP=118, STRINGLITERAL=225, + OCTLITERAL=226, READ=166, DATE=68, LIKE=129, AND=52, OPTION_PRIVATE_MODULE=151, + CLNGLNG=13, PLUS=215, ANY=2, RESUME=171, INT=25, SHARED=177, EXIT_FUNCTION=106, + PSET=35, ACCESS=49, LINE_INPUT=130, ON=143, OR=152, PARAMARRAY=154, LBOUND=26, + R_SQUARE_BRACKET=224, IMPLEMENTS=119, UNTIL=193, DEBUG=20, DEFCUR=74, + CLNGPTR=14, LONGLONG=29, DECLARE=69, DEFDATE=72, FIX=23, LEN=27, REDIM=168, + LEQ=209, DEFSTR=81, LET=127, WHILE=197, CVAR=18, CLNG=12, COLLECTION=239, + DELETESETTING=240, LOAD=241, RMDIR=242, SENDKEYS=243, SETATTR=244, ENDIF=245, + RESUME_NEXT=246; public static readonly string[] tokenNames = { "", "ABS", "ANY", "ARRAY", "CBOOL", "CBYTE", "CCUR", "CDATE", "CDBL", "CDEC", "CINT", "CIRCLE", "CLNG", "CLNGLNG", "CLNGPTR", "CSNG", @@ -76,112 +75,108 @@ public const int "INPUTB", "INT", "LBOUND", "LEN", "LENB", "LONGLONG", "LONGPTR", "MIDB", "MIDBTYPESUFFIX", "MIDTYPESUFFIX", "OPTION", "PSET", "SCALE", "SGN", "UBOUND", "','", "':'", "';'", "'!'", "'.'", "'#'", "'@'", "'%'", "'$'", "'&'", - "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPACTIVATE", "APPEND", - "AS", "BEGIN", "BEEP", "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", - "CALL", "CASE", "CHDIR", "CHDRIVE", "CLASS", "CLOSE", "CONST", "DATABASE", - "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", - "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", - "DEFVAR", "DELETESETTING", "DIM", "DO", "DOUBLE", "EACH", "ELSE", "ELSEIF", - "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", "END_SELECT", - "END_SUB", "END_TYPE", "END_WITH", "END", "ENUM", "EQV", "ERASE", "ERROR", - "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", - "FALSE", "FILECOPY", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", - "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "KILL", - "LOAD", "LOCK", "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", - "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", "ME", "MID", "MKDIR", "MOD", - "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "ON", "ON_ERROR", "ON_LOCAL_ERROR", - "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", "OPTION_COMPARE", - "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", "PRESERVE", "PRINT", - "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", "PTRSAFE", - "PUBLIC", "PUT", "RANDOM", "RANDOMIZE", "RAISEEVENT", "READ", "READ_WRITE", - "REDIM", "REM", "RESET", "RESUME", "RETURN", "RMDIR", "RSET", "SAVEPICTURE", - "SAVESETTING", "SEEK", "SELECT", "SENDKEYS", "SET", "SETATTR", "SHARED", - "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", "SUB", "TAB", "TEXT", - "THEN", "TIME", "TO", "TRUE", "TYPE", "TYPEOF", "UNLOAD", "UNLOCK", "UNTIL", - "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", - "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", "LEQ", "'('", - "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "HASHCONST", "HASHIF", - "HASHELSEIF", "HASHELSE", "HASHENDIF", "'['", "']'", "STRINGLITERAL", + "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPEND", "AS", "BEGIN", + "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CLASS", + "CLOSE", "CONST", "DATABASE", "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", + "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", + "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", "DIM", "DO", "DOUBLE", "EACH", + "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", + "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", "ENUM", "EQV", + "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", + "EXIT_SUB", "FALSE", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", + "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "LOCK", + "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", + "LOCK_READ_WRITE", "LSET", "ME", "MID", "MOD", "NEXT", "NEW", "NOT", "NOTHING", + "NULL", "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", + "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", + "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", + "PROPERTY_SET", "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", + "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", + "SELECT", "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", + "STRING", "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", + "UNLOCK", "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", + "WITHEVENTS", "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", + "LEQ", "'('", "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "HASHCONST", + "HASHIF", "HASHELSEIF", "HASHELSE", "HASHENDIF", "'['", "']'", "STRINGLITERAL", "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "INTEGERLITERAL", "DATELITERAL", - "NEWLINE", "REMCOMMENT", "COMMENT", "'''", "'_'", "WS", "IDENTIFIER", - "LINE_CONTINUATION", "GUIDLITERAL", "ERRORCHAR", "COLLECTION" + "NEWLINE", "'''", "'_'", "WS", "GUIDLITERAL", "IDENTIFIER", "LINE_CONTINUATION", + "ERRORCHAR", "COLLECTION", "DELETESETTING", "LOAD", "RMDIR", "SENDKEYS", + "SETATTR", "ENDIF", "RESUME_NEXT" }; public const int RULE_startRule = 0, RULE_module = 1, RULE_moduleHeader = 2, RULE_moduleConfig = 3, RULE_moduleConfigElement = 4, RULE_moduleAttributes = 5, RULE_moduleDeclarations = 6, RULE_moduleOption = 7, RULE_moduleDeclarationsElement = 8, RULE_moduleBody = 9, - RULE_moduleBodyElement = 10, RULE_attributeStmt = 11, RULE_block = 12, - RULE_blockStmt = 13, RULE_appactivateStmt = 14, RULE_beepStmt = 15, RULE_chdirStmt = 16, - RULE_chdriveStmt = 17, RULE_closeStmt = 18, RULE_constStmt = 19, RULE_constSubStmt = 20, - RULE_dateStmt = 21, RULE_declareStmt = 22, RULE_deftypeStmt = 23, RULE_deleteSettingStmt = 24, - RULE_doLoopStmt = 25, RULE_endStmt = 26, RULE_enumerationStmt = 27, RULE_enumerationStmt_Constant = 28, - RULE_eraseStmt = 29, RULE_errorStmt = 30, RULE_eventStmt = 31, RULE_exitStmt = 32, - RULE_filecopyStmt = 33, RULE_forEachStmt = 34, RULE_forNextStmt = 35, - RULE_functionStmt = 36, RULE_getStmt = 37, RULE_goSubStmt = 38, RULE_goToStmt = 39, - RULE_ifThenElseStmt = 40, RULE_ifBlockStmt = 41, RULE_ifConditionStmt = 42, - RULE_ifElseIfBlockStmt = 43, RULE_ifElseBlockStmt = 44, RULE_implementsStmt = 45, - RULE_inputStmt = 46, RULE_killStmt = 47, RULE_letStmt = 48, RULE_lineInputStmt = 49, - RULE_loadStmt = 50, RULE_lockStmt = 51, RULE_lsetStmt = 52, RULE_midStmt = 53, - RULE_mkdirStmt = 54, RULE_nameStmt = 55, RULE_onErrorStmt = 56, RULE_onGoToStmt = 57, - RULE_onGoSubStmt = 58, RULE_openStmt = 59, RULE_outputList = 60, RULE_outputList_Expression = 61, - RULE_printStmt = 62, RULE_propertyGetStmt = 63, RULE_propertySetStmt = 64, - RULE_propertyLetStmt = 65, RULE_putStmt = 66, RULE_raiseEventStmt = 67, - RULE_randomizeStmt = 68, RULE_redimStmt = 69, RULE_redimSubStmt = 70, - RULE_resetStmt = 71, RULE_resumeStmt = 72, RULE_returnStmt = 73, RULE_rmdirStmt = 74, - RULE_rsetStmt = 75, RULE_savepictureStmt = 76, RULE_saveSettingStmt = 77, - RULE_seekStmt = 78, RULE_selectCaseStmt = 79, RULE_sC_Selection = 80, - RULE_sC_Case = 81, RULE_sC_Cond = 82, RULE_sendkeysStmt = 83, RULE_setattrStmt = 84, - RULE_setStmt = 85, RULE_stopStmt = 86, RULE_subStmt = 87, RULE_timeStmt = 88, - RULE_typeStmt = 89, RULE_typeStmt_Element = 90, RULE_unloadStmt = 91, - RULE_unlockStmt = 92, RULE_valueStmt = 93, RULE_typeOfIsExpression = 94, - RULE_variableStmt = 95, RULE_variableListStmt = 96, RULE_variableSubStmt = 97, - RULE_whileWendStmt = 98, RULE_widthStmt = 99, RULE_withStmt = 100, RULE_withStmtExpression = 101, - RULE_writeStmt = 102, RULE_fileNumber = 103, RULE_explicitCallStmt = 104, - RULE_eCS_ProcedureCall = 105, RULE_eCS_MemberProcedureCall = 106, RULE_implicitCallStmt_InBlock = 107, - RULE_iCS_B_MemberProcedureCall = 108, RULE_iCS_B_ProcedureCall = 109, - RULE_implicitCallStmt_InStmt = 110, RULE_iCS_S_VariableOrProcedureCall = 111, - RULE_iCS_S_ProcedureOrArrayCall = 112, RULE_iCS_S_MembersCall = 113, RULE_iCS_S_MemberCall = 114, - RULE_iCS_S_DictionaryCall = 115, RULE_argsCall = 116, RULE_argCall = 117, - RULE_dictionaryCallStmt = 118, RULE_argList = 119, RULE_arg = 120, RULE_argDefaultValue = 121, - RULE_subscripts = 122, RULE_subscript = 123, RULE_identifier = 124, RULE_asTypeClause = 125, - RULE_baseType = 126, RULE_comparisonOperator = 127, RULE_complexType = 128, - RULE_fieldLength = 129, RULE_letterrange = 130, RULE_lineLabel = 131, - RULE_literal = 132, RULE_numberLiteral = 133, RULE_type = 134, RULE_typeHint = 135, - RULE_visibility = 136, RULE_keyword = 137, RULE_endOfLine = 138, RULE_endOfStatement = 139, - RULE_remComment = 140, RULE_comment = 141, RULE_annotationList = 142, - RULE_annotation = 143, RULE_annotationName = 144, RULE_annotationArgList = 145, - RULE_annotationArg = 146, RULE_whiteSpace = 147; + RULE_moduleBodyElement = 10, RULE_attributeStmt = 11, RULE_attributeName = 12, + RULE_attributeValue = 13, RULE_block = 14, RULE_blockStmt = 15, RULE_closeStmt = 16, + RULE_constStmt = 17, RULE_constSubStmt = 18, RULE_declareStmt = 19, RULE_deftypeStmt = 20, + RULE_doLoopStmt = 21, RULE_enumerationStmt = 22, RULE_enumerationStmt_Constant = 23, + RULE_eraseStmt = 24, RULE_errorStmt = 25, RULE_eventStmt = 26, RULE_exitStmt = 27, + RULE_forEachStmt = 28, RULE_forNextStmt = 29, RULE_functionStmt = 30, + RULE_functionName = 31, RULE_getStmt = 32, RULE_goSubStmt = 33, RULE_goToStmt = 34, + RULE_ifThenElseStmt = 35, RULE_ifBlockStmt = 36, RULE_ifConditionStmt = 37, + RULE_ifElseIfBlockStmt = 38, RULE_ifElseBlockStmt = 39, RULE_implementsStmt = 40, + RULE_inputStmt = 41, RULE_letStmt = 42, RULE_lineInputStmt = 43, RULE_lockStmt = 44, + RULE_lsetStmt = 45, RULE_midStmt = 46, RULE_onErrorStmt = 47, RULE_onGoToStmt = 48, + RULE_onGoSubStmt = 49, RULE_openStmt = 50, RULE_outputList = 51, RULE_outputList_Expression = 52, + RULE_printStmt = 53, RULE_propertyGetStmt = 54, RULE_propertySetStmt = 55, + RULE_propertyLetStmt = 56, RULE_putStmt = 57, RULE_raiseEventStmt = 58, + RULE_redimStmt = 59, RULE_redimSubStmt = 60, RULE_resetStmt = 61, RULE_resumeStmt = 62, + RULE_returnStmt = 63, RULE_rsetStmt = 64, RULE_stopStmt = 65, RULE_seekStmt = 66, + RULE_selectCaseStmt = 67, RULE_sC_Selection = 68, RULE_sC_Case = 69, RULE_sC_Cond = 70, + RULE_setStmt = 71, RULE_subStmt = 72, RULE_subroutineName = 73, RULE_typeStmt = 74, + RULE_typeStmt_Element = 75, RULE_unlockStmt = 76, RULE_valueStmt = 77, + RULE_typeOfIsExpression = 78, RULE_variableStmt = 79, RULE_variableListStmt = 80, + RULE_variableSubStmt = 81, RULE_whileWendStmt = 82, RULE_widthStmt = 83, + RULE_withStmt = 84, RULE_withStmtExpression = 85, RULE_writeStmt = 86, + RULE_fileNumber = 87, RULE_explicitCallStmt = 88, RULE_explicitCallStmtExpression = 89, + RULE_implicitCallStmt_InBlock = 90, RULE_iCS_B_MemberProcedureCall = 91, + RULE_iCS_B_ProcedureCall = 92, RULE_implicitCallStmt_InStmt = 93, RULE_iCS_S_VariableOrProcedureCall = 94, + RULE_iCS_S_ProcedureOrArrayCall = 95, RULE_iCS_S_VariableOrProcedureCallUnrestricted = 96, + RULE_iCS_S_ProcedureOrArrayCallUnrestricted = 97, RULE_iCS_S_MembersCall = 98, + RULE_iCS_S_MemberCall = 99, RULE_iCS_S_DictionaryCall = 100, RULE_argsCall = 101, + RULE_argCall = 102, RULE_dictionaryCallStmt = 103, RULE_argList = 104, + RULE_arg = 105, RULE_argDefaultValue = 106, RULE_subscripts = 107, RULE_subscript = 108, + RULE_unrestrictedIdentifier = 109, RULE_identifier = 110, RULE_asTypeClause = 111, + RULE_baseType = 112, RULE_comparisonOperator = 113, RULE_complexType = 114, + RULE_fieldLength = 115, RULE_letterrange = 116, RULE_lineLabel = 117, + RULE_literal = 118, RULE_numberLiteral = 119, RULE_type = 120, RULE_typeHint = 121, + RULE_visibility = 122, RULE_keyword = 123, RULE_markerKeyword = 124, RULE_statementKeyword = 125, + RULE_endOfLine = 126, RULE_endOfStatement = 127, RULE_commentOrAnnotation = 128, + RULE_remComment = 129, RULE_comment = 130, RULE_commentBody = 131, RULE_annotationList = 132, + RULE_annotation = 133, RULE_annotationName = 134, RULE_annotationArgList = 135, + RULE_annotationArg = 136, RULE_whiteSpace = 137; public static readonly string[] ruleNames = { "startRule", "module", "moduleHeader", "moduleConfig", "moduleConfigElement", "moduleAttributes", "moduleDeclarations", "moduleOption", "moduleDeclarationsElement", - "moduleBody", "moduleBodyElement", "attributeStmt", "block", "blockStmt", - "appactivateStmt", "beepStmt", "chdirStmt", "chdriveStmt", "closeStmt", - "constStmt", "constSubStmt", "dateStmt", "declareStmt", "deftypeStmt", - "deleteSettingStmt", "doLoopStmt", "endStmt", "enumerationStmt", "enumerationStmt_Constant", - "eraseStmt", "errorStmt", "eventStmt", "exitStmt", "filecopyStmt", "forEachStmt", - "forNextStmt", "functionStmt", "getStmt", "goSubStmt", "goToStmt", "ifThenElseStmt", + "moduleBody", "moduleBodyElement", "attributeStmt", "attributeName", "attributeValue", + "block", "blockStmt", "closeStmt", "constStmt", "constSubStmt", "declareStmt", + "deftypeStmt", "doLoopStmt", "enumerationStmt", "enumerationStmt_Constant", + "eraseStmt", "errorStmt", "eventStmt", "exitStmt", "forEachStmt", "forNextStmt", + "functionStmt", "functionName", "getStmt", "goSubStmt", "goToStmt", "ifThenElseStmt", "ifBlockStmt", "ifConditionStmt", "ifElseIfBlockStmt", "ifElseBlockStmt", - "implementsStmt", "inputStmt", "killStmt", "letStmt", "lineInputStmt", - "loadStmt", "lockStmt", "lsetStmt", "midStmt", "mkdirStmt", "nameStmt", - "onErrorStmt", "onGoToStmt", "onGoSubStmt", "openStmt", "outputList", - "outputList_Expression", "printStmt", "propertyGetStmt", "propertySetStmt", - "propertyLetStmt", "putStmt", "raiseEventStmt", "randomizeStmt", "redimStmt", - "redimSubStmt", "resetStmt", "resumeStmt", "returnStmt", "rmdirStmt", - "rsetStmt", "savepictureStmt", "saveSettingStmt", "seekStmt", "selectCaseStmt", - "sC_Selection", "sC_Case", "sC_Cond", "sendkeysStmt", "setattrStmt", "setStmt", - "stopStmt", "subStmt", "timeStmt", "typeStmt", "typeStmt_Element", "unloadStmt", - "unlockStmt", "valueStmt", "typeOfIsExpression", "variableStmt", "variableListStmt", + "implementsStmt", "inputStmt", "letStmt", "lineInputStmt", "lockStmt", + "lsetStmt", "midStmt", "onErrorStmt", "onGoToStmt", "onGoSubStmt", "openStmt", + "outputList", "outputList_Expression", "printStmt", "propertyGetStmt", + "propertySetStmt", "propertyLetStmt", "putStmt", "raiseEventStmt", "redimStmt", + "redimSubStmt", "resetStmt", "resumeStmt", "returnStmt", "rsetStmt", "stopStmt", + "seekStmt", "selectCaseStmt", "sC_Selection", "sC_Case", "sC_Cond", "setStmt", + "subStmt", "subroutineName", "typeStmt", "typeStmt_Element", "unlockStmt", + "valueStmt", "typeOfIsExpression", "variableStmt", "variableListStmt", "variableSubStmt", "whileWendStmt", "widthStmt", "withStmt", "withStmtExpression", - "writeStmt", "fileNumber", "explicitCallStmt", "eCS_ProcedureCall", "eCS_MemberProcedureCall", + "writeStmt", "fileNumber", "explicitCallStmt", "explicitCallStmtExpression", "implicitCallStmt_InBlock", "iCS_B_MemberProcedureCall", "iCS_B_ProcedureCall", "implicitCallStmt_InStmt", "iCS_S_VariableOrProcedureCall", "iCS_S_ProcedureOrArrayCall", + "iCS_S_VariableOrProcedureCallUnrestricted", "iCS_S_ProcedureOrArrayCallUnrestricted", "iCS_S_MembersCall", "iCS_S_MemberCall", "iCS_S_DictionaryCall", "argsCall", "argCall", "dictionaryCallStmt", "argList", "arg", "argDefaultValue", - "subscripts", "subscript", "identifier", "asTypeClause", "baseType", "comparisonOperator", - "complexType", "fieldLength", "letterrange", "lineLabel", "literal", "numberLiteral", - "type", "typeHint", "visibility", "keyword", "endOfLine", "endOfStatement", - "remComment", "comment", "annotationList", "annotation", "annotationName", - "annotationArgList", "annotationArg", "whiteSpace" + "subscripts", "subscript", "unrestrictedIdentifier", "identifier", "asTypeClause", + "baseType", "comparisonOperator", "complexType", "fieldLength", "letterrange", + "lineLabel", "literal", "numberLiteral", "type", "typeHint", "visibility", + "keyword", "markerKeyword", "statementKeyword", "endOfLine", "endOfStatement", + "commentOrAnnotation", "remComment", "comment", "commentBody", "annotationList", + "annotation", "annotationName", "annotationArgList", "annotationArg", + "whiteSpace" }; public override string GrammarFileName { get { return "VBAParser.g4"; } } @@ -198,7 +193,6 @@ public VBAParser(ITokenStream input) _interp = new ParserATNSimulator(this,_ATN); } public partial class StartRuleContext : ParserRuleContext { - public ITerminalNode Eof() { return GetToken(VBAParser.Eof, 0); } public ModuleContext module() { return GetRuleContext(0); } @@ -229,8 +223,7 @@ public StartRuleContext startRule() { try { EnterOuterAlt(_localctx, 1); { - State = 296; module(); - State = 297; Match(Eof); + State = 276; module(); } } catch (RecognitionException re) { @@ -248,9 +241,6 @@ public partial class ModuleContext : ParserRuleContext { public EndOfStatementContext endOfStatement(int i) { return GetRuleContext(i); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } public ModuleHeaderContext moduleHeader() { return GetRuleContext(0); } @@ -260,8 +250,8 @@ public ModuleConfigContext moduleConfig() { public ModuleAttributesContext moduleAttributes() { return GetRuleContext(0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } public ModuleBodyContext moduleBody() { return GetRuleContext(0); @@ -296,72 +286,63 @@ public override TResult Accept(IParseTreeVisitor visitor) { public ModuleContext module() { ModuleContext _localctx = new ModuleContext(_ctx, State); EnterRule(_localctx, 2, RULE_module); - int _la; try { EnterOuterAlt(_localctx, 1); { - State = 300; + State = 279; switch ( Interpreter.AdaptivePredict(_input,0,_ctx) ) { case 1: { - State = 299; whiteSpace(); + State = 278; whiteSpace(); } break; } - State = 302; endOfStatement(); - State = 306; + State = 281; endOfStatement(); + State = 285; switch ( Interpreter.AdaptivePredict(_input,1,_ctx) ) { case 1: { - State = 303; moduleHeader(); - State = 304; endOfStatement(); + State = 282; moduleHeader(); + State = 283; endOfStatement(); } break; } - State = 309; + State = 288; switch ( Interpreter.AdaptivePredict(_input,2,_ctx) ) { case 1: { - State = 308; moduleConfig(); + State = 287; moduleConfig(); } break; } - State = 311; endOfStatement(); - State = 313; + State = 290; endOfStatement(); + State = 292; switch ( Interpreter.AdaptivePredict(_input,3,_ctx) ) { case 1: { - State = 312; moduleAttributes(); + State = 291; moduleAttributes(); } break; } - State = 315; endOfStatement(); - State = 317; + State = 294; endOfStatement(); + State = 296; switch ( Interpreter.AdaptivePredict(_input,4,_ctx) ) { case 1: { - State = 316; moduleDeclarations(); + State = 295; moduleDeclarations(); } break; } - State = 319; endOfStatement(); - State = 321; + State = 298; endOfStatement(); + State = 300; switch ( Interpreter.AdaptivePredict(_input,5,_ctx) ) { case 1: { - State = 320; moduleBody(); + State = 299; moduleBody(); } break; } - State = 323; endOfStatement(); - State = 325; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 324; whiteSpace(); - } - } - + State = 302; endOfStatement(); } } catch (RecognitionException re) { @@ -417,26 +398,26 @@ public ModuleHeaderContext moduleHeader() { try { EnterOuterAlt(_localctx, 1); { - State = 327; Match(VERSION); - State = 328; whiteSpace(); - State = 329; numberLiteral(); - State = 331; - switch ( Interpreter.AdaptivePredict(_input,7,_ctx) ) { + State = 304; Match(VERSION); + State = 305; whiteSpace(); + State = 306; numberLiteral(); + State = 308; + switch ( Interpreter.AdaptivePredict(_input,6,_ctx) ) { case 1: { - State = 330; whiteSpace(); + State = 307; whiteSpace(); } break; } - State = 334; - switch ( Interpreter.AdaptivePredict(_input,8,_ctx) ) { + State = 311; + switch ( Interpreter.AdaptivePredict(_input,7,_ctx) ) { case 1: { - State = 333; Match(CLASS); + State = 310; Match(CLASS); } break; } - State = 336; endOfStatement(); + State = 313; endOfStatement(); } } catch (RecognitionException re) { @@ -463,8 +444,8 @@ public IReadOnlyList moduleConfigElement() { public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public IdentifierContext identifier() { - return GetRuleContext(0); + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); } public ModuleConfigElementContext moduleConfigElement(int i) { return GetRuleContext(i); @@ -500,28 +481,28 @@ public ModuleConfigContext moduleConfig() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 338; Match(BEGIN); - State = 346; - switch ( Interpreter.AdaptivePredict(_input,10,_ctx) ) { + State = 315; Match(BEGIN); + State = 323; + switch ( Interpreter.AdaptivePredict(_input,9,_ctx) ) { case 1: { - State = 339; whiteSpace(); - State = 340; Match(GUIDLITERAL); - State = 341; whiteSpace(); - State = 342; identifier(); - State = 344; - switch ( Interpreter.AdaptivePredict(_input,9,_ctx) ) { + State = 316; whiteSpace(); + State = 317; Match(GUIDLITERAL); + State = 318; whiteSpace(); + State = 319; unrestrictedIdentifier(); + State = 321; + switch ( Interpreter.AdaptivePredict(_input,8,_ctx) ) { case 1: { - State = 343; whiteSpace(); + State = 320; whiteSpace(); } break; } } break; } - State = 348; endOfStatement(); - State = 350; + State = 325; endOfStatement(); + State = 327; _errHandler.Sync(this); _alt = 1; do { @@ -529,18 +510,18 @@ public ModuleConfigContext moduleConfig() { case 1: { { - State = 349; moduleConfigElement(); + State = 326; moduleConfigElement(); } } break; default: throw new NoViableAltException(this); } - State = 352; + State = 329; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,11,_ctx); + _alt = Interpreter.AdaptivePredict(_input,10,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - State = 354; Match(END); + State = 331; Match(END); } } catch (RecognitionException re) { @@ -558,20 +539,20 @@ public partial class ModuleConfigElementContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode COLON() { return GetToken(VBAParser.COLON, 0); } - public LiteralContext literal() { - return GetRuleContext(0); + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } + public ITerminalNode COLON() { return GetToken(VBAParser.COLON, 0); } public NumberLiteralContext numberLiteral() { return GetRuleContext(0); } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); + } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } public EndOfStatementContext endOfStatement() { return GetRuleContext(0); } @@ -601,47 +582,50 @@ public ModuleConfigElementContext moduleConfigElement() { EnterRule(_localctx, 8, RULE_moduleConfigElement); int _la; try { + int _alt; EnterOuterAlt(_localctx, 1); { - State = 356; identifier(); - State = 360; + State = 333; unrestrictedIdentifier(); + State = 337; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS || _la==LINE_CONTINUATION) { { { - State = 357; whiteSpace(); + State = 334; whiteSpace(); } } - State = 362; + State = 339; _errHandler.Sync(this); _la = _input.La(1); } - State = 363; Match(EQ); - State = 367; + State = 340; Match(EQ); + State = 344; _errHandler.Sync(this); - _la = _input.La(1); - while (_la==WS || _la==LINE_CONTINUATION) { - { - { - State = 364; whiteSpace(); - } + _alt = Interpreter.AdaptivePredict(_input,12,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 341; whiteSpace(); + } + } } - State = 369; + State = 346; _errHandler.Sync(this); - _la = _input.La(1); + _alt = Interpreter.AdaptivePredict(_input,12,_ctx); } - State = 370; literal(); - State = 373; - switch ( Interpreter.AdaptivePredict(_input,14,_ctx) ) { + State = 347; valueStmt(0); + State = 350; + switch ( Interpreter.AdaptivePredict(_input,13,_ctx) ) { case 1: { - State = 371; Match(COLON); - State = 372; numberLiteral(); + State = 348; Match(COLON); + State = 349; numberLiteral(); } break; } - State = 375; endOfStatement(); + State = 352; endOfStatement(); } } catch (RecognitionException re) { @@ -696,7 +680,7 @@ public ModuleAttributesContext moduleAttributes() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 380; + State = 357; _errHandler.Sync(this); _alt = 1; do { @@ -704,17 +688,17 @@ public ModuleAttributesContext moduleAttributes() { case 1: { { - State = 377; attributeStmt(); - State = 378; endOfStatement(); + State = 354; attributeStmt(); + State = 355; endOfStatement(); } } break; default: throw new NoViableAltException(this); } - State = 382; + State = 359; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,15,_ctx); + _alt = Interpreter.AdaptivePredict(_input,14,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } } @@ -770,24 +754,24 @@ public ModuleDeclarationsContext moduleDeclarations() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 384; moduleDeclarationsElement(); - State = 390; + State = 361; moduleDeclarationsElement(); + State = 367; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,16,_ctx); + _alt = Interpreter.AdaptivePredict(_input,15,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 385; endOfStatement(); - State = 386; moduleDeclarationsElement(); + State = 362; endOfStatement(); + State = 363; moduleDeclarationsElement(); } } } - State = 392; + State = 369; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,16,_ctx); + _alt = Interpreter.AdaptivePredict(_input,15,_ctx); } - State = 393; endOfStatement(); + State = 370; endOfStatement(); } } catch (RecognitionException re) { @@ -900,24 +884,24 @@ public ModuleOptionContext moduleOption() { EnterRule(_localctx, 14, RULE_moduleOption); int _la; try { - State = 405; + State = 382; switch (_input.La(1)) { case OPTION_BASE: _localctx = new OptionBaseStmtContext(_localctx); EnterOuterAlt(_localctx, 1); { - State = 395; Match(OPTION_BASE); - State = 396; whiteSpace(); - State = 397; numberLiteral(); + State = 372; Match(OPTION_BASE); + State = 373; whiteSpace(); + State = 374; numberLiteral(); } break; case OPTION_COMPARE: _localctx = new OptionCompareStmtContext(_localctx); EnterOuterAlt(_localctx, 2); { - State = 399; Match(OPTION_COMPARE); - State = 400; whiteSpace(); - State = 401; + State = 376; Match(OPTION_COMPARE); + State = 377; whiteSpace(); + State = 378; _la = _input.La(1); if ( !(_la==BINARY || _la==DATABASE || _la==TEXT) ) { _errHandler.RecoverInline(this); @@ -929,14 +913,14 @@ public ModuleOptionContext moduleOption() { _localctx = new OptionExplicitStmtContext(_localctx); EnterOuterAlt(_localctx, 3); { - State = 403; Match(OPTION_EXPLICIT); + State = 380; Match(OPTION_EXPLICIT); } break; case OPTION_PRIVATE_MODULE: _localctx = new OptionPrivateModuleStmtContext(_localctx); EnterOuterAlt(_localctx, 4); { - State = 404; Match(OPTION_PRIVATE_MODULE); + State = 381; Match(OPTION_PRIVATE_MODULE); } break; default: @@ -1004,61 +988,61 @@ public ModuleDeclarationsElementContext moduleDeclarationsElement() { ModuleDeclarationsElementContext _localctx = new ModuleDeclarationsElementContext(_ctx, State); EnterRule(_localctx, 16, RULE_moduleDeclarationsElement); try { - State = 415; - switch ( Interpreter.AdaptivePredict(_input,18,_ctx) ) { + State = 392; + switch ( Interpreter.AdaptivePredict(_input,17,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 407; declareStmt(); + State = 384; declareStmt(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 408; enumerationStmt(); + State = 385; enumerationStmt(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 409; eventStmt(); + State = 386; eventStmt(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 410; constStmt(); + State = 387; constStmt(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 411; implementsStmt(); + State = 388; implementsStmt(); } break; case 6: EnterOuterAlt(_localctx, 6); { - State = 412; variableStmt(); + State = 389; variableStmt(); } break; case 7: EnterOuterAlt(_localctx, 7); { - State = 413; moduleOption(); + State = 390; moduleOption(); } break; case 8: EnterOuterAlt(_localctx, 8); { - State = 414; typeStmt(); + State = 391; typeStmt(); } break; } @@ -1115,24 +1099,24 @@ public ModuleBodyContext moduleBody() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 417; moduleBodyElement(); - State = 423; + State = 394; moduleBodyElement(); + State = 400; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,19,_ctx); + _alt = Interpreter.AdaptivePredict(_input,18,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 418; endOfStatement(); - State = 419; moduleBodyElement(); + State = 395; endOfStatement(); + State = 396; moduleBodyElement(); } } } - State = 425; + State = 402; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,19,_ctx); + _alt = Interpreter.AdaptivePredict(_input,18,_ctx); } - State = 426; endOfStatement(); + State = 403; endOfStatement(); } } catch (RecognitionException re) { @@ -1187,40 +1171,40 @@ public ModuleBodyElementContext moduleBodyElement() { ModuleBodyElementContext _localctx = new ModuleBodyElementContext(_ctx, State); EnterRule(_localctx, 20, RULE_moduleBodyElement); try { - State = 433; - switch ( Interpreter.AdaptivePredict(_input,20,_ctx) ) { + State = 410; + switch ( Interpreter.AdaptivePredict(_input,19,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 428; functionStmt(); + State = 405; functionStmt(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 429; propertyGetStmt(); + State = 406; propertyGetStmt(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 430; propertySetStmt(); + State = 407; propertySetStmt(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 431; propertyLetStmt(); + State = 408; propertyLetStmt(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 432; subStmt(); + State = 409; subStmt(); } break; } @@ -1240,20 +1224,20 @@ public partial class AttributeStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public LiteralContext literal(int i) { - return GetRuleContext(i); + public IReadOnlyList attributeValue() { + return GetRuleContexts(); } public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public IReadOnlyList literal() { - return GetRuleContexts(); - } public ITerminalNode ATTRIBUTE() { return GetToken(VBAParser.ATTRIBUTE, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); + public AttributeValueContext attributeValue(int i) { + return GetRuleContext(i); + } + public AttributeNameContext attributeName() { + return GetRuleContext(0); } public ITerminalNode COMMA(int i) { return GetToken(VBAParser.COMMA, i); @@ -1287,59 +1271,149 @@ public AttributeStmtContext attributeStmt() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 435; Match(ATTRIBUTE); - State = 436; whiteSpace(); - State = 437; implicitCallStmt_InStmt(); - State = 439; + State = 412; Match(ATTRIBUTE); + State = 413; whiteSpace(); + State = 414; attributeName(); + State = 416; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 438; whiteSpace(); + State = 415; whiteSpace(); } } - State = 441; Match(EQ); - State = 443; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 418; Match(EQ); + State = 420; + switch ( Interpreter.AdaptivePredict(_input,21,_ctx) ) { + case 1: { - State = 442; whiteSpace(); + State = 419; whiteSpace(); } + break; } - - State = 445; literal(); - State = 456; + State = 422; attributeValue(); + State = 433; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,25,_ctx); + _alt = Interpreter.AdaptivePredict(_input,24,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 447; + State = 424; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 446; whiteSpace(); + State = 423; whiteSpace(); } } - State = 449; Match(COMMA); - State = 451; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 426; Match(COMMA); + State = 428; + switch ( Interpreter.AdaptivePredict(_input,23,_ctx) ) { + case 1: { - State = 450; whiteSpace(); + State = 427; whiteSpace(); } + break; } - - State = 453; literal(); + State = 430; attributeValue(); } } } - State = 458; + State = 435; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,25,_ctx); + _alt = Interpreter.AdaptivePredict(_input,24,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AttributeNameContext : ParserRuleContext { + public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { + return GetRuleContext(0); + } + public AttributeNameContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_attributeName; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterAttributeName(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitAttributeName(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAttributeName(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AttributeNameContext attributeName() { + AttributeNameContext _localctx = new AttributeNameContext(_ctx, State); + EnterRule(_localctx, 24, RULE_attributeName); + try { + EnterOuterAlt(_localctx, 1); + { + State = 436; implicitCallStmt_InStmt(); } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class AttributeValueContext : ParserRuleContext { + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public AttributeValueContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_attributeValue; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterAttributeValue(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitAttributeValue(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitAttributeValue(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public AttributeValueContext attributeValue() { + AttributeValueContext _localctx = new AttributeValueContext(_ctx, State); + EnterRule(_localctx, 26, RULE_attributeValue); + try { + EnterOuterAlt(_localctx, 1); + { + State = 438; valueStmt(0); } } catch (RecognitionException re) { @@ -1389,29 +1463,29 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public BlockContext block() { BlockContext _localctx = new BlockContext(_ctx, State); - EnterRule(_localctx, 24, RULE_block); + EnterRule(_localctx, 28, RULE_block); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 459; blockStmt(); - State = 465; + State = 440; blockStmt(); + State = 446; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,26,_ctx); + _alt = Interpreter.AdaptivePredict(_input,25,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 460; endOfStatement(); - State = 461; blockStmt(); + State = 441; endOfStatement(); + State = 442; blockStmt(); } } } - State = 467; + State = 448; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,26,_ctx); + _alt = Interpreter.AdaptivePredict(_input,25,_ctx); } - State = 468; endOfStatement(); + State = 449; endOfStatement(); } } catch (RecognitionException re) { @@ -1429,23 +1503,32 @@ public partial class BlockStmtContext : ParserRuleContext { public GoToStmtContext goToStmt() { return GetRuleContext(0); } - public LoadStmtContext loadStmt() { - return GetRuleContext(0); - } - public ChdriveStmtContext chdriveStmt() { - return GetRuleContext(0); - } - public EndStmtContext endStmt() { - return GetRuleContext(0); + public LineInputStmtContext lineInputStmt() { + return GetRuleContext(0); } public LetStmtContext letStmt() { return GetRuleContext(0); } - public FilecopyStmtContext filecopyStmt() { - return GetRuleContext(0); + public InputStmtContext inputStmt() { + return GetRuleContext(0); + } + public ResetStmtContext resetStmt() { + return GetRuleContext(0); + } + public ImplementsStmtContext implementsStmt() { + return GetRuleContext(0); + } + public CloseStmtContext closeStmt() { + return GetRuleContext(0); + } + public GoSubStmtContext goSubStmt() { + return GetRuleContext(0); + } + public DeftypeStmtContext deftypeStmt() { + return GetRuleContext(0); } - public RmdirStmtContext rmdirStmt() { - return GetRuleContext(0); + public ReturnStmtContext returnStmt() { + return GetRuleContext(0); } public RsetStmtContext rsetStmt() { return GetRuleContext(0); @@ -1453,8 +1536,14 @@ public RsetStmtContext rsetStmt() { public EraseStmtContext eraseStmt() { return GetRuleContext(0); } - public ChdirStmtContext chdirStmt() { - return GetRuleContext(0); + public LockStmtContext lockStmt() { + return GetRuleContext(0); + } + public DoLoopStmtContext doLoopStmt() { + return GetRuleContext(0); + } + public LineLabelContext lineLabel() { + return GetRuleContext(0); } public WriteStmtContext writeStmt() { return GetRuleContext(0); @@ -1462,8 +1551,17 @@ public WriteStmtContext writeStmt() { public ExplicitCallStmtContext explicitCallStmt() { return GetRuleContext(0); } - public RandomizeStmtContext randomizeStmt() { - return GetRuleContext(0); + public LsetStmtContext lsetStmt() { + return GetRuleContext(0); + } + public MidStmtContext midStmt() { + return GetRuleContext(0); + } + public GetStmtContext getStmt() { + return GetRuleContext(0); + } + public OnGoToStmtContext onGoToStmt() { + return GetRuleContext(0); } public ConstStmtContext constStmt() { return GetRuleContext(0); @@ -1474,14 +1572,14 @@ public SelectCaseStmtContext selectCaseStmt() { public ImplicitCallStmt_InBlockContext implicitCallStmt_InBlock() { return GetRuleContext(0); } - public MkdirStmtContext mkdirStmt() { - return GetRuleContext(0); - } public RaiseEventStmtContext raiseEventStmt() { return GetRuleContext(0); } - public SavepictureStmtContext savepictureStmt() { - return GetRuleContext(0); + public WidthStmtContext widthStmt() { + return GetRuleContext(0); + } + public PrintStmtContext printStmt() { + return GetRuleContext(0); } public ExitStmtContext exitStmt() { return GetRuleContext(0); @@ -1492,12 +1590,6 @@ public IfThenElseStmtContext ifThenElseStmt() { public OpenStmtContext openStmt() { return GetRuleContext(0); } - public SetattrStmtContext setattrStmt() { - return GetRuleContext(0); - } - public SaveSettingStmtContext saveSettingStmt() { - return GetRuleContext(0); - } public AttributeStmtContext attributeStmt() { return GetRuleContext(0); } @@ -1510,21 +1602,21 @@ public ForNextStmtContext forNextStmt() { public RedimStmtContext redimStmt() { return GetRuleContext(0); } - public TimeStmtContext timeStmt() { - return GetRuleContext(0); - } public OnGoSubStmtContext onGoSubStmt() { return GetRuleContext(0); } - public SendkeysStmtContext sendkeysStmt() { - return GetRuleContext(0); - } - public DeleteSettingStmtContext deleteSettingStmt() { - return GetRuleContext(0); + public SeekStmtContext seekStmt() { + return GetRuleContext(0); } public ErrorStmtContext errorStmt() { return GetRuleContext(0); } + public ResumeStmtContext resumeStmt() { + return GetRuleContext(0); + } + public VariableStmtContext variableStmt() { + return GetRuleContext(0); + } public SetStmtContext setStmt() { return GetRuleContext(0); } @@ -1534,6 +1626,9 @@ public WithStmtContext withStmt() { public OnErrorStmtContext onErrorStmt() { return GetRuleContext(0); } + public PutStmtContext putStmt() { + return GetRuleContext(0); + } public WhileWendStmtContext whileWendStmt() { return GetRuleContext(0); } @@ -1543,573 +1638,352 @@ public UnlockStmtContext unlockStmt() { public StopStmtContext stopStmt() { return GetRuleContext(0); } - public NameStmtContext nameStmt() { - return GetRuleContext(0); - } - public LineInputStmtContext lineInputStmt() { - return GetRuleContext(0); - } - public DateStmtContext dateStmt() { - return GetRuleContext(0); - } - public InputStmtContext inputStmt() { - return GetRuleContext(0); - } - public ResetStmtContext resetStmt() { - return GetRuleContext(0); - } - public ImplementsStmtContext implementsStmt() { - return GetRuleContext(0); - } - public CloseStmtContext closeStmt() { - return GetRuleContext(0); - } - public GoSubStmtContext goSubStmt() { - return GetRuleContext(0); - } - public KillStmtContext killStmt() { - return GetRuleContext(0); - } - public DeftypeStmtContext deftypeStmt() { - return GetRuleContext(0); - } - public ReturnStmtContext returnStmt() { - return GetRuleContext(0); - } - public LockStmtContext lockStmt() { - return GetRuleContext(0); - } - public DoLoopStmtContext doLoopStmt() { - return GetRuleContext(0); + public BlockStmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { } - public LineLabelContext lineLabel() { - return GetRuleContext(0); + public override int RuleIndex { get { return RULE_blockStmt; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterBlockStmt(this); } - public BeepStmtContext beepStmt() { - return GetRuleContext(0); + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitBlockStmt(this); } - public AppactivateStmtContext appactivateStmt() { - return GetRuleContext(0); - } - public LsetStmtContext lsetStmt() { - return GetRuleContext(0); - } - public MidStmtContext midStmt() { - return GetRuleContext(0); - } - public GetStmtContext getStmt() { - return GetRuleContext(0); - } - public OnGoToStmtContext onGoToStmt() { - return GetRuleContext(0); - } - public WidthStmtContext widthStmt() { - return GetRuleContext(0); - } - public PrintStmtContext printStmt() { - return GetRuleContext(0); - } - public SeekStmtContext seekStmt() { - return GetRuleContext(0); - } - public ResumeStmtContext resumeStmt() { - return GetRuleContext(0); - } - public VariableStmtContext variableStmt() { - return GetRuleContext(0); - } - public PutStmtContext putStmt() { - return GetRuleContext(0); - } - public UnloadStmtContext unloadStmt() { - return GetRuleContext(0); - } - public BlockStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_blockStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterBlockStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitBlockStmt(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitBlockStmt(this); - else return visitor.VisitChildren(this); + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitBlockStmt(this); + else return visitor.VisitChildren(this); } } [RuleVersion(0)] public BlockStmtContext blockStmt() { BlockStmtContext _localctx = new BlockStmtContext(_ctx, State); - EnterRule(_localctx, 26, RULE_blockStmt); + EnterRule(_localctx, 30, RULE_blockStmt); try { - State = 536; - switch ( Interpreter.AdaptivePredict(_input,27,_ctx) ) { + State = 497; + switch ( Interpreter.AdaptivePredict(_input,26,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 470; lineLabel(); + State = 451; lineLabel(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 471; appactivateStmt(); + State = 452; attributeStmt(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 472; attributeStmt(); + State = 453; closeStmt(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 473; beepStmt(); + State = 454; constStmt(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 474; chdirStmt(); + State = 455; deftypeStmt(); } break; case 6: EnterOuterAlt(_localctx, 6); { - State = 475; chdriveStmt(); + State = 456; doLoopStmt(); } break; case 7: EnterOuterAlt(_localctx, 7); { - State = 476; closeStmt(); + State = 457; eraseStmt(); } break; case 8: EnterOuterAlt(_localctx, 8); { - State = 477; constStmt(); + State = 458; errorStmt(); } break; case 9: EnterOuterAlt(_localctx, 9); { - State = 478; dateStmt(); + State = 459; exitStmt(); } break; case 10: EnterOuterAlt(_localctx, 10); { - State = 479; deleteSettingStmt(); + State = 460; explicitCallStmt(); } break; case 11: EnterOuterAlt(_localctx, 11); { - State = 480; deftypeStmt(); + State = 461; forEachStmt(); } break; case 12: EnterOuterAlt(_localctx, 12); { - State = 481; doLoopStmt(); + State = 462; forNextStmt(); } break; case 13: EnterOuterAlt(_localctx, 13); { - State = 482; endStmt(); + State = 463; getStmt(); } break; case 14: EnterOuterAlt(_localctx, 14); { - State = 483; eraseStmt(); + State = 464; goSubStmt(); } break; case 15: EnterOuterAlt(_localctx, 15); { - State = 484; errorStmt(); + State = 465; goToStmt(); } break; case 16: EnterOuterAlt(_localctx, 16); { - State = 485; exitStmt(); + State = 466; ifThenElseStmt(); } break; case 17: EnterOuterAlt(_localctx, 17); { - State = 486; explicitCallStmt(); + State = 467; implementsStmt(); } break; case 18: EnterOuterAlt(_localctx, 18); { - State = 487; filecopyStmt(); + State = 468; inputStmt(); } break; case 19: EnterOuterAlt(_localctx, 19); { - State = 488; forEachStmt(); + State = 469; letStmt(); } break; case 20: EnterOuterAlt(_localctx, 20); { - State = 489; forNextStmt(); + State = 470; lineInputStmt(); } break; case 21: EnterOuterAlt(_localctx, 21); { - State = 490; getStmt(); + State = 471; lockStmt(); } break; case 22: EnterOuterAlt(_localctx, 22); { - State = 491; goSubStmt(); + State = 472; lsetStmt(); } break; case 23: EnterOuterAlt(_localctx, 23); { - State = 492; goToStmt(); + State = 473; midStmt(); } break; case 24: EnterOuterAlt(_localctx, 24); { - State = 493; ifThenElseStmt(); + State = 474; onErrorStmt(); } break; case 25: EnterOuterAlt(_localctx, 25); { - State = 494; implementsStmt(); + State = 475; onGoToStmt(); } break; case 26: EnterOuterAlt(_localctx, 26); { - State = 495; inputStmt(); + State = 476; onGoSubStmt(); } break; case 27: EnterOuterAlt(_localctx, 27); { - State = 496; killStmt(); + State = 477; openStmt(); } break; case 28: EnterOuterAlt(_localctx, 28); { - State = 497; letStmt(); + State = 478; printStmt(); } break; case 29: EnterOuterAlt(_localctx, 29); { - State = 498; lineInputStmt(); + State = 479; putStmt(); } break; case 30: EnterOuterAlt(_localctx, 30); { - State = 499; loadStmt(); + State = 480; raiseEventStmt(); } break; case 31: EnterOuterAlt(_localctx, 31); { - State = 500; lockStmt(); + State = 481; redimStmt(); } break; case 32: EnterOuterAlt(_localctx, 32); { - State = 501; lsetStmt(); + State = 482; resetStmt(); } break; case 33: EnterOuterAlt(_localctx, 33); { - State = 502; midStmt(); + State = 483; resumeStmt(); } break; case 34: EnterOuterAlt(_localctx, 34); { - State = 503; mkdirStmt(); + State = 484; returnStmt(); } break; case 35: EnterOuterAlt(_localctx, 35); { - State = 504; nameStmt(); + State = 485; rsetStmt(); } break; case 36: EnterOuterAlt(_localctx, 36); { - State = 505; onErrorStmt(); + State = 486; seekStmt(); } break; case 37: EnterOuterAlt(_localctx, 37); { - State = 506; onGoToStmt(); + State = 487; selectCaseStmt(); } break; case 38: EnterOuterAlt(_localctx, 38); { - State = 507; onGoSubStmt(); + State = 488; setStmt(); } break; case 39: EnterOuterAlt(_localctx, 39); { - State = 508; openStmt(); + State = 489; stopStmt(); } break; case 40: EnterOuterAlt(_localctx, 40); { - State = 509; printStmt(); + State = 490; unlockStmt(); } break; case 41: EnterOuterAlt(_localctx, 41); { - State = 510; putStmt(); + State = 491; variableStmt(); } break; case 42: EnterOuterAlt(_localctx, 42); { - State = 511; raiseEventStmt(); + State = 492; whileWendStmt(); } break; case 43: EnterOuterAlt(_localctx, 43); { - State = 512; randomizeStmt(); + State = 493; widthStmt(); } break; case 44: EnterOuterAlt(_localctx, 44); { - State = 513; redimStmt(); + State = 494; withStmt(); } break; case 45: EnterOuterAlt(_localctx, 45); { - State = 514; resetStmt(); + State = 495; writeStmt(); } break; case 46: EnterOuterAlt(_localctx, 46); { - State = 515; resumeStmt(); - } - break; - - case 47: - EnterOuterAlt(_localctx, 47); - { - State = 516; returnStmt(); - } - break; - - case 48: - EnterOuterAlt(_localctx, 48); - { - State = 517; rmdirStmt(); - } - break; - - case 49: - EnterOuterAlt(_localctx, 49); - { - State = 518; rsetStmt(); - } - break; - - case 50: - EnterOuterAlt(_localctx, 50); - { - State = 519; savepictureStmt(); - } - break; - - case 51: - EnterOuterAlt(_localctx, 51); - { - State = 520; saveSettingStmt(); - } - break; - - case 52: - EnterOuterAlt(_localctx, 52); - { - State = 521; seekStmt(); - } - break; - - case 53: - EnterOuterAlt(_localctx, 53); - { - State = 522; selectCaseStmt(); - } - break; - - case 54: - EnterOuterAlt(_localctx, 54); - { - State = 523; sendkeysStmt(); - } - break; - - case 55: - EnterOuterAlt(_localctx, 55); - { - State = 524; setattrStmt(); - } - break; - - case 56: - EnterOuterAlt(_localctx, 56); - { - State = 525; setStmt(); - } - break; - - case 57: - EnterOuterAlt(_localctx, 57); - { - State = 526; stopStmt(); - } - break; - - case 58: - EnterOuterAlt(_localctx, 58); - { - State = 527; timeStmt(); - } - break; - - case 59: - EnterOuterAlt(_localctx, 59); - { - State = 528; unloadStmt(); - } - break; - - case 60: - EnterOuterAlt(_localctx, 60); - { - State = 529; unlockStmt(); - } - break; - - case 61: - EnterOuterAlt(_localctx, 61); - { - State = 530; variableStmt(); - } - break; - - case 62: - EnterOuterAlt(_localctx, 62); - { - State = 531; whileWendStmt(); - } - break; - - case 63: - EnterOuterAlt(_localctx, 63); - { - State = 532; widthStmt(); - } - break; - - case 64: - EnterOuterAlt(_localctx, 64); - { - State = 533; withStmt(); - } - break; - - case 65: - EnterOuterAlt(_localctx, 65); - { - State = 534; writeStmt(); - } - break; - - case 66: - EnterOuterAlt(_localctx, 66); - { - State = 535; implicitCallStmt_InBlock(); + State = 496; implicitCallStmt_InBlock(); } break; } @@ -2125,74 +1999,92 @@ public BlockStmtContext blockStmt() { return _localctx; } - public partial class AppactivateStmtContext : ParserRuleContext { - public ITerminalNode APPACTIVATE() { return GetToken(VBAParser.APPACTIVATE, 0); } + public partial class CloseStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public ITerminalNode CLOSE() { return GetToken(VBAParser.CLOSE, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public IReadOnlyList fileNumber() { + return GetRuleContexts(); + } + public FileNumberContext fileNumber(int i) { + return GetRuleContext(i); + } + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); } - public AppactivateStmtContext(ParserRuleContext parent, int invokingState) + public CloseStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_appactivateStmt; } } + public override int RuleIndex { get { return RULE_closeStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterAppactivateStmt(this); + if (typedListener != null) typedListener.EnterCloseStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitAppactivateStmt(this); + if (typedListener != null) typedListener.ExitCloseStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitAppactivateStmt(this); + if (typedVisitor != null) return typedVisitor.VisitCloseStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public AppactivateStmtContext appactivateStmt() { - AppactivateStmtContext _localctx = new AppactivateStmtContext(_ctx, State); - EnterRule(_localctx, 28, RULE_appactivateStmt); + public CloseStmtContext closeStmt() { + CloseStmtContext _localctx = new CloseStmtContext(_ctx, State); + EnterRule(_localctx, 32, RULE_closeStmt); int _la; try { + int _alt; EnterOuterAlt(_localctx, 1); { - State = 538; Match(APPACTIVATE); - State = 539; whiteSpace(); - State = 540; valueStmt(0); - State = 549; + State = 499; Match(CLOSE); + State = 515; switch ( Interpreter.AdaptivePredict(_input,30,_ctx) ) { case 1: { - State = 542; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 541; whiteSpace(); - } - } + State = 500; whiteSpace(); + State = 501; fileNumber(); + State = 512; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,29,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 503; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 502; whiteSpace(); + } + } - State = 544; Match(COMMA); - State = 546; - switch ( Interpreter.AdaptivePredict(_input,29,_ctx) ) { - case 1: - { - State = 545; whiteSpace(); + State = 505; Match(COMMA); + State = 507; + switch ( Interpreter.AdaptivePredict(_input,28,_ctx) ) { + case 1: + { + State = 506; whiteSpace(); + } + break; + } + State = 509; fileNumber(); + } + } } - break; + State = 514; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,29,_ctx); } - State = 548; valueStmt(0); } break; } @@ -2209,36 +2101,100 @@ public AppactivateStmtContext appactivateStmt() { return _localctx; } - public partial class BeepStmtContext : ParserRuleContext { - public ITerminalNode BEEP() { return GetToken(VBAParser.BEEP, 0); } - public BeepStmtContext(ParserRuleContext parent, int invokingState) + public partial class ConstStmtContext : ParserRuleContext { + public ITerminalNode CONST() { return GetToken(VBAParser.CONST, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public IReadOnlyList constSubStmt() { + return GetRuleContexts(); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ConstSubStmtContext constSubStmt(int i) { + return GetRuleContext(i); + } + public VisibilityContext visibility() { + return GetRuleContext(0); + } + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); + } + public ConstStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_beepStmt; } } + public override int RuleIndex { get { return RULE_constStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterBeepStmt(this); + if (typedListener != null) typedListener.EnterConstStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitBeepStmt(this); + if (typedListener != null) typedListener.ExitConstStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitBeepStmt(this); + if (typedVisitor != null) return typedVisitor.VisitConstStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public BeepStmtContext beepStmt() { - BeepStmtContext _localctx = new BeepStmtContext(_ctx, State); - EnterRule(_localctx, 30, RULE_beepStmt); + public ConstStmtContext constStmt() { + ConstStmtContext _localctx = new ConstStmtContext(_ctx, State); + EnterRule(_localctx, 34, RULE_constStmt); + int _la; try { + int _alt; EnterOuterAlt(_localctx, 1); { - State = 551; Match(BEEP); + State = 520; + _la = _input.La(1); + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { + { + State = 517; visibility(); + State = 518; whiteSpace(); + } + } + + State = 522; Match(CONST); + State = 523; whiteSpace(); + State = 524; constSubStmt(); + State = 535; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,34,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 526; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 525; whiteSpace(); + } + } + + State = 528; Match(COMMA); + State = 530; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 529; whiteSpace(); + } + } + + State = 532; constSubStmt(); + } + } + } + State = 537; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,34,_ctx); + } } } catch (RecognitionException re) { @@ -2252,44 +2208,90 @@ public BeepStmtContext beepStmt() { return _localctx; } - public partial class ChdirStmtContext : ParserRuleContext { + public partial class ConstSubStmtContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } public ValueStmtContext valueStmt() { return GetRuleContext(0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public TypeHintContext typeHint() { + return GetRuleContext(0); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public AsTypeClauseContext asTypeClause() { + return GetRuleContext(0); + } + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } + public IdentifierContext identifier() { + return GetRuleContext(0); } - public ITerminalNode CHDIR() { return GetToken(VBAParser.CHDIR, 0); } - public ChdirStmtContext(ParserRuleContext parent, int invokingState) + public ConstSubStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_chdirStmt; } } + public override int RuleIndex { get { return RULE_constSubStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterChdirStmt(this); + if (typedListener != null) typedListener.EnterConstSubStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitChdirStmt(this); + if (typedListener != null) typedListener.ExitConstSubStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitChdirStmt(this); + if (typedVisitor != null) return typedVisitor.VisitConstSubStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ChdirStmtContext chdirStmt() { - ChdirStmtContext _localctx = new ChdirStmtContext(_ctx, State); - EnterRule(_localctx, 32, RULE_chdirStmt); + public ConstSubStmtContext constSubStmt() { + ConstSubStmtContext _localctx = new ConstSubStmtContext(_ctx, State); + EnterRule(_localctx, 36, RULE_constSubStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 553; Match(CHDIR); - State = 554; whiteSpace(); - State = 555; valueStmt(0); + State = 538; identifier(); + State = 540; + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { + { + State = 539; typeHint(); + } + } + + State = 545; + switch ( Interpreter.AdaptivePredict(_input,36,_ctx) ) { + case 1: + { + State = 542; whiteSpace(); + State = 543; asTypeClause(); + } + break; + } + State = 548; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 547; whiteSpace(); + } + } + + State = 550; Match(EQ); + State = 552; + switch ( Interpreter.AdaptivePredict(_input,38,_ctx) ) { + case 1: + { + State = 551; whiteSpace(); + } + break; + } + State = 554; valueStmt(0); } } catch (RecognitionException re) { @@ -2303,143 +2305,161 @@ public ChdirStmtContext chdirStmt() { return _localctx; } - public partial class ChdriveStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); - } - public ITerminalNode CHDRIVE() { return GetToken(VBAParser.CHDRIVE, 0); } - public ChdriveStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public partial class DeclareStmtContext : ParserRuleContext { + public ITerminalNode STRINGLITERAL(int i) { + return GetToken(VBAParser.STRINGLITERAL, i); } - public override int RuleIndex { get { return RULE_chdriveStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterChdriveStmt(this); + public ITerminalNode PTRSAFE() { return GetToken(VBAParser.PTRSAFE, 0); } + public ITerminalNode DECLARE() { return GetToken(VBAParser.DECLARE, 0); } + public ITerminalNode SUB() { return GetToken(VBAParser.SUB, 0); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitChdriveStmt(this); + public AsTypeClauseContext asTypeClause() { + return GetRuleContext(0); } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitChdriveStmt(this); - else return visitor.VisitChildren(this); + public IdentifierContext identifier() { + return GetRuleContext(0); } - } - - [RuleVersion(0)] - public ChdriveStmtContext chdriveStmt() { - ChdriveStmtContext _localctx = new ChdriveStmtContext(_ctx, State); - EnterRule(_localctx, 34, RULE_chdriveStmt); - try { - EnterOuterAlt(_localctx, 1); - { - State = 557; Match(CHDRIVE); - State = 558; whiteSpace(); - State = 559; valueStmt(0); - } + public VisibilityContext visibility() { + return GetRuleContext(0); } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); + public TypeHintContext typeHint(int i) { + return GetRuleContext(i); } - finally { - ExitRule(); + public ArgListContext argList() { + return GetRuleContext(0); } - return _localctx; - } - - public partial class CloseStmtContext : ParserRuleContext { + public ITerminalNode LIB() { return GetToken(VBAParser.LIB, 0); } + public ITerminalNode FUNCTION() { return GetToken(VBAParser.FUNCTION, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public ITerminalNode CLOSE() { return GetToken(VBAParser.CLOSE, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public IReadOnlyList fileNumber() { - return GetRuleContexts(); - } - public FileNumberContext fileNumber(int i) { - return GetRuleContext(i); - } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); + public IReadOnlyList STRINGLITERAL() { return GetTokens(VBAParser.STRINGLITERAL); } + public IReadOnlyList typeHint() { + return GetRuleContexts(); } - public CloseStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode ALIAS() { return GetToken(VBAParser.ALIAS, 0); } + public DeclareStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_closeStmt; } } + public override int RuleIndex { get { return RULE_declareStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterCloseStmt(this); + if (typedListener != null) typedListener.EnterDeclareStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitCloseStmt(this); + if (typedListener != null) typedListener.ExitDeclareStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitCloseStmt(this); + if (typedVisitor != null) return typedVisitor.VisitDeclareStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public CloseStmtContext closeStmt() { - CloseStmtContext _localctx = new CloseStmtContext(_ctx, State); - EnterRule(_localctx, 36, RULE_closeStmt); + public DeclareStmtContext declareStmt() { + DeclareStmtContext _localctx = new DeclareStmtContext(_ctx, State); + EnterRule(_localctx, 38, RULE_declareStmt); int _la; try { - int _alt; EnterOuterAlt(_localctx, 1); { - State = 561; Match(CLOSE); + State = 559; + _la = _input.La(1); + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { + { + State = 556; visibility(); + State = 557; whiteSpace(); + } + } + + State = 561; Match(DECLARE); + State = 562; whiteSpace(); + State = 565; + _la = _input.La(1); + if (_la==PTRSAFE) { + { + State = 563; Match(PTRSAFE); + State = 564; whiteSpace(); + } + } + + State = 572; + switch (_input.La(1)) { + case FUNCTION: + { + { + State = 567; Match(FUNCTION); + State = 569; + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { + { + State = 568; typeHint(); + } + } + + } + } + break; + case SUB: + { + State = 571; Match(SUB); + } + break; + default: + throw new NoViableAltException(this); + } + State = 574; whiteSpace(); + State = 575; identifier(); State = 577; - switch ( Interpreter.AdaptivePredict(_input,34,_ctx) ) { - case 1: + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { { - State = 562; whiteSpace(); - State = 563; fileNumber(); - State = 574; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,33,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 565; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 564; whiteSpace(); - } - } + State = 576; typeHint(); + } + } - State = 567; Match(COMMA); - State = 569; - switch ( Interpreter.AdaptivePredict(_input,32,_ctx) ) { - case 1: - { - State = 568; whiteSpace(); - } - break; - } - State = 571; fileNumber(); - } - } + State = 579; whiteSpace(); + State = 580; Match(LIB); + State = 581; whiteSpace(); + State = 582; Match(STRINGLITERAL); + State = 588; + switch ( Interpreter.AdaptivePredict(_input,44,_ctx) ) { + case 1: + { + State = 583; whiteSpace(); + State = 584; Match(ALIAS); + State = 585; whiteSpace(); + State = 586; Match(STRINGLITERAL); + } + break; + } + State = 594; + switch ( Interpreter.AdaptivePredict(_input,46,_ctx) ) { + case 1: + { + State = 591; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 590; whiteSpace(); } - State = 576; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,33,_ctx); } + + State = 593; argList(); + } + break; + } + State = 599; + switch ( Interpreter.AdaptivePredict(_input,47,_ctx) ) { + case 1: + { + State = 596; whiteSpace(); + State = 597; asTypeClause(); } break; } @@ -2456,99 +2476,104 @@ public CloseStmtContext closeStmt() { return _localctx; } - public partial class ConstStmtContext : ParserRuleContext { - public ITerminalNode CONST() { return GetToken(VBAParser.CONST, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public IReadOnlyList constSubStmt() { - return GetRuleContexts(); + public partial class DeftypeStmtContext : ParserRuleContext { + public ITerminalNode DEFOBJ() { return GetToken(VBAParser.DEFOBJ, 0); } + public ITerminalNode DEFINT() { return GetToken(VBAParser.DEFINT, 0); } + public IReadOnlyList letterrange() { + return GetRuleContexts(); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ConstSubStmtContext constSubStmt(int i) { - return GetRuleContext(i); - } - public VisibilityContext visibility() { - return GetRuleContext(0); - } + public ITerminalNode DEFLNGPTR() { return GetToken(VBAParser.DEFLNGPTR, 0); } + public ITerminalNode DEFBOOL() { return GetToken(VBAParser.DEFBOOL, 0); } public ITerminalNode COMMA(int i) { return GetToken(VBAParser.COMMA, i); } - public ConstStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode DEFDBL() { return GetToken(VBAParser.DEFDBL, 0); } + public ITerminalNode DEFBYTE() { return GetToken(VBAParser.DEFBYTE, 0); } + public ITerminalNode DEFSNG() { return GetToken(VBAParser.DEFSNG, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode DEFCUR() { return GetToken(VBAParser.DEFCUR, 0); } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public LetterrangeContext letterrange(int i) { + return GetRuleContext(i); + } + public ITerminalNode DEFDATE() { return GetToken(VBAParser.DEFDATE, 0); } + public ITerminalNode DEFLNG() { return GetToken(VBAParser.DEFLNG, 0); } + public ITerminalNode DEFSTR() { return GetToken(VBAParser.DEFSTR, 0); } + public ITerminalNode DEFLNGLNG() { return GetToken(VBAParser.DEFLNGLNG, 0); } + public ITerminalNode DEFVAR() { return GetToken(VBAParser.DEFVAR, 0); } + public DeftypeStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_constStmt; } } + public override int RuleIndex { get { return RULE_deftypeStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterConstStmt(this); + if (typedListener != null) typedListener.EnterDeftypeStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitConstStmt(this); + if (typedListener != null) typedListener.ExitDeftypeStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitConstStmt(this); + if (typedVisitor != null) return typedVisitor.VisitDeftypeStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ConstStmtContext constStmt() { - ConstStmtContext _localctx = new ConstStmtContext(_ctx, State); - EnterRule(_localctx, 38, RULE_constStmt); + public DeftypeStmtContext deftypeStmt() { + DeftypeStmtContext _localctx = new DeftypeStmtContext(_ctx, State); + EnterRule(_localctx, 40, RULE_deftypeStmt); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 582; + State = 601; _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { - { - State = 579; visibility(); - State = 580; whiteSpace(); - } + if ( !(((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (DEFBOOL - 70)) | (1L << (DEFBYTE - 70)) | (1L << (DEFDATE - 70)) | (1L << (DEFDBL - 70)) | (1L << (DEFCUR - 70)) | (1L << (DEFINT - 70)) | (1L << (DEFLNG - 70)) | (1L << (DEFLNGLNG - 70)) | (1L << (DEFLNGPTR - 70)) | (1L << (DEFOBJ - 70)) | (1L << (DEFSNG - 70)) | (1L << (DEFSTR - 70)) | (1L << (DEFVAR - 70)))) != 0)) ) { + _errHandler.RecoverInline(this); } - - State = 584; Match(CONST); - State = 585; whiteSpace(); - State = 586; constSubStmt(); - State = 597; + Consume(); + State = 602; whiteSpace(); + State = 603; letterrange(); + State = 614; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,38,_ctx); + _alt = Interpreter.AdaptivePredict(_input,50,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 588; + State = 605; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 587; whiteSpace(); + State = 604; whiteSpace(); } } - State = 590; Match(COMMA); - State = 592; + State = 607; Match(COMMA); + State = 609; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 591; whiteSpace(); + State = 608; whiteSpace(); } } - State = 594; constSubStmt(); + State = 611; letterrange(); } } } - State = 599; + State = 616; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,38,_ctx); + _alt = Interpreter.AdaptivePredict(_input,50,_ctx); } } } @@ -2563,91 +2588,123 @@ public ConstStmtContext constStmt() { return _localctx; } - public partial class ConstSubStmtContext : ParserRuleContext { + public partial class DoLoopStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } + public ITerminalNode DO() { return GetToken(VBAParser.DO, 0); } + public ITerminalNode LOOP() { return GetToken(VBAParser.LOOP, 0); } public ValueStmtContext valueStmt() { return GetRuleContext(0); } - public TypeHintContext typeHint() { - return GetRuleContext(0); - } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public AsTypeClauseContext asTypeClause() { - return GetRuleContext(0); - } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public IdentifierContext identifier() { - return GetRuleContext(0); + public ITerminalNode UNTIL() { return GetToken(VBAParser.UNTIL, 0); } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); } - public ConstSubStmtContext(ParserRuleContext parent, int invokingState) + public BlockContext block() { + return GetRuleContext(0); + } + public ITerminalNode WHILE() { return GetToken(VBAParser.WHILE, 0); } + public DoLoopStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_constSubStmt; } } + public override int RuleIndex { get { return RULE_doLoopStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterConstSubStmt(this); + if (typedListener != null) typedListener.EnterDoLoopStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitConstSubStmt(this); + if (typedListener != null) typedListener.ExitDoLoopStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitConstSubStmt(this); + if (typedVisitor != null) return typedVisitor.VisitDoLoopStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ConstSubStmtContext constSubStmt() { - ConstSubStmtContext _localctx = new ConstSubStmtContext(_ctx, State); - EnterRule(_localctx, 40, RULE_constSubStmt); + public DoLoopStmtContext doLoopStmt() { + DoLoopStmtContext _localctx = new DoLoopStmtContext(_ctx, State); + EnterRule(_localctx, 42, RULE_doLoopStmt); int _la; try { - EnterOuterAlt(_localctx, 1); - { - State = 600; identifier(); - State = 602; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { - { - State = 601; typeHint(); - } - } - - State = 607; - switch ( Interpreter.AdaptivePredict(_input,40,_ctx) ) { + State = 646; + switch ( Interpreter.AdaptivePredict(_input,54,_ctx) ) { case 1: + EnterOuterAlt(_localctx, 1); { - State = 604; whiteSpace(); - State = 605; asTypeClause(); + State = 617; Match(DO); + State = 618; endOfStatement(); + State = 620; + switch ( Interpreter.AdaptivePredict(_input,51,_ctx) ) { + case 1: + { + State = 619; block(); + } + break; + } + State = 622; Match(LOOP); } break; - } - State = 610; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + + case 2: + EnterOuterAlt(_localctx, 2); { - State = 609; whiteSpace(); + State = 624; Match(DO); + State = 625; whiteSpace(); + State = 626; + _la = _input.La(1); + if ( !(_la==UNTIL || _la==WHILE) ) { + _errHandler.RecoverInline(this); } - } + Consume(); + State = 627; whiteSpace(); + State = 628; valueStmt(0); + State = 629; endOfStatement(); + State = 631; + switch ( Interpreter.AdaptivePredict(_input,52,_ctx) ) { + case 1: + { + State = 630; block(); + } + break; + } + State = 633; Match(LOOP); + } + break; - State = 612; Match(EQ); - State = 614; - switch ( Interpreter.AdaptivePredict(_input,42,_ctx) ) { - case 1: + case 3: + EnterOuterAlt(_localctx, 3); { - State = 613; whiteSpace(); + State = 635; Match(DO); + State = 636; endOfStatement(); + State = 638; + switch ( Interpreter.AdaptivePredict(_input,53,_ctx) ) { + case 1: + { + State = 637; block(); + } + break; + } + State = 640; Match(LOOP); + State = 641; whiteSpace(); + State = 642; + _la = _input.La(1); + if ( !(_la==UNTIL || _la==WHILE) ) { + _errHandler.RecoverInline(this); + } + Consume(); + State = 643; whiteSpace(); + State = 644; valueStmt(0); } break; } - State = 616; valueStmt(0); - } } catch (RecognitionException re) { _localctx.exception = re; @@ -2660,65 +2717,85 @@ public ConstSubStmtContext constSubStmt() { return _localctx; } - public partial class DateStmtContext : ParserRuleContext { + public partial class EnumerationStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public IReadOnlyList enumerationStmt_Constant() { + return GetRuleContexts(); + } + public EnumerationStmt_ConstantContext enumerationStmt_Constant(int i) { + return GetRuleContext(i); } + public ITerminalNode ENUM() { return GetToken(VBAParser.ENUM, 0); } + public ITerminalNode END_ENUM() { return GetToken(VBAParser.END_ENUM, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ITerminalNode DATE() { return GetToken(VBAParser.DATE, 0); } - public DateStmtContext(ParserRuleContext parent, int invokingState) + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public VisibilityContext visibility() { + return GetRuleContext(0); + } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); + } + public EnumerationStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_dateStmt; } } + public override int RuleIndex { get { return RULE_enumerationStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterDateStmt(this); + if (typedListener != null) typedListener.EnterEnumerationStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitDateStmt(this); + if (typedListener != null) typedListener.ExitEnumerationStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitDateStmt(this); + if (typedVisitor != null) return typedVisitor.VisitEnumerationStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public DateStmtContext dateStmt() { - DateStmtContext _localctx = new DateStmtContext(_ctx, State); - EnterRule(_localctx, 42, RULE_dateStmt); + public EnumerationStmtContext enumerationStmt() { + EnumerationStmtContext _localctx = new EnumerationStmtContext(_ctx, State); + EnterRule(_localctx, 44, RULE_enumerationStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 618; Match(DATE); - State = 620; + State = 651; _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { - State = 619; whiteSpace(); + State = 648; visibility(); + State = 649; whiteSpace(); } } - State = 622; Match(EQ); - State = 624; - switch ( Interpreter.AdaptivePredict(_input,44,_ctx) ) { - case 1: + State = 653; Match(ENUM); + State = 654; whiteSpace(); + State = 655; identifier(); + State = 656; endOfStatement(); + State = 660; + _errHandler.Sync(this); + _la = _input.La(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << BEGIN) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (END_IF - 64)) | (1L << (EQV - 64)) | (1L << (FALSE - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (REM - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (XOR - 193)) | (1L << (IDENTIFIER - 193)) | (1L << (COLLECTION - 193)) | (1L << (DELETESETTING - 193)) | (1L << (LOAD - 193)) | (1L << (RMDIR - 193)) | (1L << (SENDKEYS - 193)) | (1L << (SETATTR - 193)))) != 0)) { + { { - State = 623; whiteSpace(); + State = 657; enumerationStmt_Constant(); } - break; + } + State = 662; + _errHandler.Sync(this); + _la = _input.La(1); } - State = 626; valueStmt(0); + State = 663; Match(END_ENUM); } } catch (RecognitionException re) { @@ -2732,164 +2809,78 @@ public DateStmtContext dateStmt() { return _localctx; } - public partial class DeclareStmtContext : ParserRuleContext { - public ITerminalNode STRINGLITERAL(int i) { - return GetToken(VBAParser.STRINGLITERAL, i); + public partial class EnumerationStmt_ConstantContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } - public ITerminalNode PTRSAFE() { return GetToken(VBAParser.PTRSAFE, 0); } - public ITerminalNode DECLARE() { return GetToken(VBAParser.DECLARE, 0); } - public ITerminalNode SUB() { return GetToken(VBAParser.SUB, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public AsTypeClauseContext asTypeClause() { - return GetRuleContext(0); - } + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } public IdentifierContext identifier() { return GetRuleContext(0); } - public VisibilityContext visibility() { - return GetRuleContext(0); - } - public TypeHintContext typeHint(int i) { - return GetRuleContext(i); - } - public ArgListContext argList() { - return GetRuleContext(0); - } - public ITerminalNode LIB() { return GetToken(VBAParser.LIB, 0); } - public ITerminalNode FUNCTION() { return GetToken(VBAParser.FUNCTION, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList STRINGLITERAL() { return GetTokens(VBAParser.STRINGLITERAL); } - public IReadOnlyList typeHint() { - return GetRuleContexts(); + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); } - public ITerminalNode ALIAS() { return GetToken(VBAParser.ALIAS, 0); } - public DeclareStmtContext(ParserRuleContext parent, int invokingState) + public EnumerationStmt_ConstantContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_declareStmt; } } + public override int RuleIndex { get { return RULE_enumerationStmt_Constant; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterDeclareStmt(this); + if (typedListener != null) typedListener.EnterEnumerationStmt_Constant(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitDeclareStmt(this); + if (typedListener != null) typedListener.ExitEnumerationStmt_Constant(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitDeclareStmt(this); + if (typedVisitor != null) return typedVisitor.VisitEnumerationStmt_Constant(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public DeclareStmtContext declareStmt() { - DeclareStmtContext _localctx = new DeclareStmtContext(_ctx, State); - EnterRule(_localctx, 44, RULE_declareStmt); + public EnumerationStmt_ConstantContext enumerationStmt_Constant() { + EnumerationStmt_ConstantContext _localctx = new EnumerationStmt_ConstantContext(_ctx, State); + EnterRule(_localctx, 46, RULE_enumerationStmt_Constant); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 631; - _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { - { - State = 628; visibility(); - State = 629; whiteSpace(); - } - } - - State = 633; Match(DECLARE); - State = 634; whiteSpace(); - State = 637; - _la = _input.La(1); - if (_la==PTRSAFE) { - { - State = 635; Match(PTRSAFE); - State = 636; whiteSpace(); - } - } - - State = 644; - switch (_input.La(1)) { - case FUNCTION: - { - { - State = 639; Match(FUNCTION); - State = 641; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { - { - State = 640; typeHint(); - } - } - - } - } - break; - case SUB: - { - State = 643; Match(SUB); - } - break; - default: - throw new NoViableAltException(this); - } - State = 646; whiteSpace(); - State = 647; identifier(); - State = 649; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { - { - State = 648; typeHint(); - } - } - - State = 651; whiteSpace(); - State = 652; Match(LIB); - State = 653; whiteSpace(); - State = 654; Match(STRINGLITERAL); - State = 660; - switch ( Interpreter.AdaptivePredict(_input,50,_ctx) ) { + State = 665; identifier(); + State = 674; + switch ( Interpreter.AdaptivePredict(_input,59,_ctx) ) { case 1: { - State = 655; whiteSpace(); - State = 656; Match(ALIAS); - State = 657; whiteSpace(); - State = 658; Match(STRINGLITERAL); - } - break; - } - State = 666; - switch ( Interpreter.AdaptivePredict(_input,52,_ctx) ) { - case 1: - { - State = 663; + State = 667; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 662; whiteSpace(); + State = 666; whiteSpace(); } } - State = 665; argList(); + State = 669; Match(EQ); + State = 671; + switch ( Interpreter.AdaptivePredict(_input,58,_ctx) ) { + case 1: + { + State = 670; whiteSpace(); + } + break; } - break; - } - State = 671; - switch ( Interpreter.AdaptivePredict(_input,53,_ctx) ) { - case 1: - { - State = 668; whiteSpace(); - State = 669; asTypeClause(); + State = 673; valueStmt(0); } break; } + State = 676; endOfStatement(); } } catch (RecognitionException re) { @@ -2903,104 +2894,87 @@ public DeclareStmtContext declareStmt() { return _localctx; } - public partial class DeftypeStmtContext : ParserRuleContext { - public ITerminalNode DEFOBJ() { return GetToken(VBAParser.DEFOBJ, 0); } - public ITerminalNode DEFINT() { return GetToken(VBAParser.DEFINT, 0); } - public IReadOnlyList letterrange() { - return GetRuleContexts(); + public partial class EraseStmtContext : ParserRuleContext { + public ITerminalNode ERASE() { return GetToken(VBAParser.ERASE, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode DEFLNGPTR() { return GetToken(VBAParser.DEFLNGPTR, 0); } - public ITerminalNode DEFBOOL() { return GetToken(VBAParser.DEFBOOL, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } public ITerminalNode COMMA(int i) { return GetToken(VBAParser.COMMA, i); } - public ITerminalNode DEFDBL() { return GetToken(VBAParser.DEFDBL, 0); } - public ITerminalNode DEFBYTE() { return GetToken(VBAParser.DEFBYTE, 0); } - public ITerminalNode DEFSNG() { return GetToken(VBAParser.DEFSNG, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode DEFCUR() { return GetToken(VBAParser.DEFCUR, 0); } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public LetterrangeContext letterrange(int i) { - return GetRuleContext(i); - } - public ITerminalNode DEFDATE() { return GetToken(VBAParser.DEFDATE, 0); } - public ITerminalNode DEFLNG() { return GetToken(VBAParser.DEFLNG, 0); } - public ITerminalNode DEFSTR() { return GetToken(VBAParser.DEFSTR, 0); } - public ITerminalNode DEFLNGLNG() { return GetToken(VBAParser.DEFLNGLNG, 0); } - public ITerminalNode DEFVAR() { return GetToken(VBAParser.DEFVAR, 0); } - public DeftypeStmtContext(ParserRuleContext parent, int invokingState) + public EraseStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_deftypeStmt; } } + public override int RuleIndex { get { return RULE_eraseStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterDeftypeStmt(this); + if (typedListener != null) typedListener.EnterEraseStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitDeftypeStmt(this); + if (typedListener != null) typedListener.ExitEraseStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitDeftypeStmt(this); + if (typedVisitor != null) return typedVisitor.VisitEraseStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public DeftypeStmtContext deftypeStmt() { - DeftypeStmtContext _localctx = new DeftypeStmtContext(_ctx, State); - EnterRule(_localctx, 46, RULE_deftypeStmt); + public EraseStmtContext eraseStmt() { + EraseStmtContext _localctx = new EraseStmtContext(_ctx, State); + EnterRule(_localctx, 48, RULE_eraseStmt); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 673; - _la = _input.La(1); - if ( !(((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (DEFBOOL - 74)) | (1L << (DEFBYTE - 74)) | (1L << (DEFDATE - 74)) | (1L << (DEFDBL - 74)) | (1L << (DEFCUR - 74)) | (1L << (DEFINT - 74)) | (1L << (DEFLNG - 74)) | (1L << (DEFLNGLNG - 74)) | (1L << (DEFLNGPTR - 74)) | (1L << (DEFOBJ - 74)) | (1L << (DEFSNG - 74)) | (1L << (DEFSTR - 74)) | (1L << (DEFVAR - 74)))) != 0)) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 674; whiteSpace(); - State = 675; letterrange(); - State = 686; + State = 678; Match(ERASE); + State = 679; whiteSpace(); + State = 680; valueStmt(0); + State = 691; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,56,_ctx); + _alt = Interpreter.AdaptivePredict(_input,62,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 677; + State = 682; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 676; whiteSpace(); + State = 681; whiteSpace(); } } - State = 679; Match(COMMA); - State = 681; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 684; Match(COMMA); + State = 686; + switch ( Interpreter.AdaptivePredict(_input,61,_ctx) ) { + case 1: { - State = 680; whiteSpace(); + State = 685; whiteSpace(); } + break; } - - State = 683; letterrange(); + State = 688; valueStmt(0); } } } - State = 688; + State = 693; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,56,_ctx); + _alt = Interpreter.AdaptivePredict(_input,62,_ctx); } } } @@ -3015,140 +2989,44 @@ public DeftypeStmtContext deftypeStmt() { return _localctx; } - public partial class DeleteSettingStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode DELETESETTING() { return GetToken(VBAParser.DELETESETTING, 0); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public partial class ErrorStmtContext : ParserRuleContext { + public ITerminalNode ERROR() { return GetToken(VBAParser.ERROR, 0); } + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } - public DeleteSettingStmtContext(ParserRuleContext parent, int invokingState) + public ErrorStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_deleteSettingStmt; } } + public override int RuleIndex { get { return RULE_errorStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterDeleteSettingStmt(this); + if (typedListener != null) typedListener.EnterErrorStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitDeleteSettingStmt(this); + if (typedListener != null) typedListener.ExitErrorStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitDeleteSettingStmt(this); + if (typedVisitor != null) return typedVisitor.VisitErrorStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public DeleteSettingStmtContext deleteSettingStmt() { - DeleteSettingStmtContext _localctx = new DeleteSettingStmtContext(_ctx, State); - EnterRule(_localctx, 48, RULE_deleteSettingStmt); - int _la; + public ErrorStmtContext errorStmt() { + ErrorStmtContext _localctx = new ErrorStmtContext(_ctx, State); + EnterRule(_localctx, 50, RULE_errorStmt); try { - State = 727; - switch ( Interpreter.AdaptivePredict(_input,64,_ctx) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 689; Match(DELETESETTING); - State = 690; whiteSpace(); - State = 691; valueStmt(0); - State = 693; - switch ( Interpreter.AdaptivePredict(_input,57,_ctx) ) { - case 1: - { - State = 692; whiteSpace(); - } - break; - } - } - break; - - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 695; Match(DELETESETTING); - State = 696; whiteSpace(); - State = 697; valueStmt(0); - State = 699; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 698; whiteSpace(); - } - } - - State = 701; Match(COMMA); - State = 703; - switch ( Interpreter.AdaptivePredict(_input,59,_ctx) ) { - case 1: - { - State = 702; whiteSpace(); - } - break; - } - State = 705; valueStmt(0); - } - break; - - case 3: - EnterOuterAlt(_localctx, 3); - { - State = 707; Match(DELETESETTING); - State = 708; whiteSpace(); - State = 709; valueStmt(0); - State = 711; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 710; whiteSpace(); - } - } - - State = 713; Match(COMMA); - State = 715; - switch ( Interpreter.AdaptivePredict(_input,61,_ctx) ) { - case 1: - { - State = 714; whiteSpace(); - } - break; - } - State = 717; valueStmt(0); - State = 719; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 718; whiteSpace(); - } - } - - State = 721; Match(COMMA); - State = 723; - switch ( Interpreter.AdaptivePredict(_input,63,_ctx) ) { - case 1: - { - State = 722; whiteSpace(); - } - break; - } - State = 725; valueStmt(0); - } - break; + EnterOuterAlt(_localctx, 1); + { + State = 694; Match(ERROR); + State = 695; whiteSpace(); + State = 696; valueStmt(0); } } catch (RecognitionException re) { @@ -3162,122 +3040,72 @@ public DeleteSettingStmtContext deleteSettingStmt() { return _localctx; } - public partial class DoLoopStmtContext : ParserRuleContext { + public partial class EventStmtContext : ParserRuleContext { + public ArgListContext argList() { + return GetRuleContext(0); + } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode DO() { return GetToken(VBAParser.DO, 0); } - public ITerminalNode LOOP() { return GetToken(VBAParser.LOOP, 0); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode UNTIL() { return GetToken(VBAParser.UNTIL, 0); } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); + public IdentifierContext identifier() { + return GetRuleContext(0); } - public BlockContext block() { - return GetRuleContext(0); + public VisibilityContext visibility() { + return GetRuleContext(0); } - public ITerminalNode WHILE() { return GetToken(VBAParser.WHILE, 0); } - public DoLoopStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode EVENT() { return GetToken(VBAParser.EVENT, 0); } + public EventStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_doLoopStmt; } } + public override int RuleIndex { get { return RULE_eventStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterDoLoopStmt(this); + if (typedListener != null) typedListener.EnterEventStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitDoLoopStmt(this); + if (typedListener != null) typedListener.ExitEventStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitDoLoopStmt(this); + if (typedVisitor != null) return typedVisitor.VisitEventStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public DoLoopStmtContext doLoopStmt() { - DoLoopStmtContext _localctx = new DoLoopStmtContext(_ctx, State); - EnterRule(_localctx, 50, RULE_doLoopStmt); + public EventStmtContext eventStmt() { + EventStmtContext _localctx = new EventStmtContext(_ctx, State); + EnterRule(_localctx, 52, RULE_eventStmt); int _la; try { - State = 758; - switch ( Interpreter.AdaptivePredict(_input,68,_ctx) ) { - case 1: - EnterOuterAlt(_localctx, 1); + EnterOuterAlt(_localctx, 1); + { + State = 701; + _la = _input.La(1); + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { - State = 729; Match(DO); - State = 730; endOfStatement(); - State = 732; - switch ( Interpreter.AdaptivePredict(_input,65,_ctx) ) { - case 1: - { - State = 731; block(); - } - break; - } - State = 734; Match(LOOP); + State = 698; visibility(); + State = 699; whiteSpace(); } - break; + } - case 2: - EnterOuterAlt(_localctx, 2); + State = 703; Match(EVENT); + State = 704; whiteSpace(); + State = 705; identifier(); + State = 707; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 736; Match(DO); - State = 737; whiteSpace(); - State = 738; - _la = _input.La(1); - if ( !(_la==UNTIL || _la==WHILE) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 739; whiteSpace(); - State = 740; valueStmt(0); - State = 741; endOfStatement(); - State = 743; - switch ( Interpreter.AdaptivePredict(_input,66,_ctx) ) { - case 1: - { - State = 742; block(); - } - break; + State = 706; whiteSpace(); } - State = 745; Match(LOOP); - } - break; + } - case 3: - EnterOuterAlt(_localctx, 3); - { - State = 747; Match(DO); - State = 748; endOfStatement(); - State = 750; - switch ( Interpreter.AdaptivePredict(_input,67,_ctx) ) { - case 1: - { - State = 749; block(); - } - break; - } - State = 752; Match(LOOP); - State = 753; whiteSpace(); - State = 754; - _la = _input.La(1); - if ( !(_la==UNTIL || _la==WHILE) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 755; whiteSpace(); - State = 756; valueStmt(0); - } - break; + State = 709; argList(); } } catch (RecognitionException re) { @@ -3291,36 +3119,46 @@ public DoLoopStmtContext doLoopStmt() { return _localctx; } - public partial class EndStmtContext : ParserRuleContext { - public ITerminalNode END() { return GetToken(VBAParser.END, 0); } - public EndStmtContext(ParserRuleContext parent, int invokingState) + public partial class ExitStmtContext : ParserRuleContext { + public ITerminalNode EXIT_SUB() { return GetToken(VBAParser.EXIT_SUB, 0); } + public ITerminalNode EXIT_PROPERTY() { return GetToken(VBAParser.EXIT_PROPERTY, 0); } + public ITerminalNode EXIT_FUNCTION() { return GetToken(VBAParser.EXIT_FUNCTION, 0); } + public ITerminalNode EXIT_DO() { return GetToken(VBAParser.EXIT_DO, 0); } + public ITerminalNode EXIT_FOR() { return GetToken(VBAParser.EXIT_FOR, 0); } + public ExitStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_endStmt; } } + public override int RuleIndex { get { return RULE_exitStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterEndStmt(this); + if (typedListener != null) typedListener.EnterExitStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitEndStmt(this); + if (typedListener != null) typedListener.ExitExitStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitEndStmt(this); + if (typedVisitor != null) return typedVisitor.VisitExitStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public EndStmtContext endStmt() { - EndStmtContext _localctx = new EndStmtContext(_ctx, State); - EnterRule(_localctx, 52, RULE_endStmt); + public ExitStmtContext exitStmt() { + ExitStmtContext _localctx = new ExitStmtContext(_ctx, State); + EnterRule(_localctx, 54, RULE_exitStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 760; Match(END); + State = 711; + _la = _input.La(1); + if ( !(((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (EXIT_DO - 104)) | (1L << (EXIT_FOR - 104)) | (1L << (EXIT_FUNCTION - 104)) | (1L << (EXIT_PROPERTY - 104)) | (1L << (EXIT_SUB - 104)))) != 0)) ) { + _errHandler.RecoverInline(this); + } + Consume(); } } catch (RecognitionException re) { @@ -3334,85 +3172,84 @@ public EndStmtContext endStmt() { return _localctx; } - public partial class EnumerationStmtContext : ParserRuleContext { + public partial class ForEachStmtContext : ParserRuleContext { + public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList enumerationStmt_Constant() { - return GetRuleContexts(); - } - public EnumerationStmt_ConstantContext enumerationStmt_Constant(int i) { - return GetRuleContext(i); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } - public ITerminalNode ENUM() { return GetToken(VBAParser.ENUM, 0); } - public ITerminalNode END_ENUM() { return GetToken(VBAParser.END_ENUM, 0); } + public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public VisibilityContext visibility() { - return GetRuleContext(0); - } + public ITerminalNode EACH() { return GetToken(VBAParser.EACH, 0); } public EndOfStatementContext endOfStatement() { return GetRuleContext(0); } - public EnumerationStmtContext(ParserRuleContext parent, int invokingState) + public BlockContext block() { + return GetRuleContext(0); + } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public ITerminalNode IN() { return GetToken(VBAParser.IN, 0); } + public ForEachStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_enumerationStmt; } } + public override int RuleIndex { get { return RULE_forEachStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterEnumerationStmt(this); + if (typedListener != null) typedListener.EnterForEachStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitEnumerationStmt(this); + if (typedListener != null) typedListener.ExitForEachStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitEnumerationStmt(this); + if (typedVisitor != null) return typedVisitor.VisitForEachStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public EnumerationStmtContext enumerationStmt() { - EnumerationStmtContext _localctx = new EnumerationStmtContext(_ctx, State); - EnterRule(_localctx, 54, RULE_enumerationStmt); - int _la; + public ForEachStmtContext forEachStmt() { + ForEachStmtContext _localctx = new ForEachStmtContext(_ctx, State); + EnterRule(_localctx, 56, RULE_forEachStmt); try { EnterOuterAlt(_localctx, 1); { - State = 765; - _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { + State = 713; Match(FOR); + State = 714; whiteSpace(); + State = 715; Match(EACH); + State = 716; whiteSpace(); + State = 717; valueStmt(0); + State = 718; whiteSpace(); + State = 719; Match(IN); + State = 720; whiteSpace(); + State = 721; valueStmt(0); + State = 722; endOfStatement(); + State = 724; + switch ( Interpreter.AdaptivePredict(_input,65,_ctx) ) { + case 1: { - State = 762; visibility(); - State = 763; whiteSpace(); + State = 723; block(); } + break; } - - State = 767; Match(ENUM); - State = 768; whiteSpace(); - State = 769; identifier(); - State = 770; endOfStatement(); - State = 774; - _errHandler.Sync(this); - _la = _input.La(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==COLLECTION) { - { + State = 726; Match(NEXT); + State = 730; + switch ( Interpreter.AdaptivePredict(_input,66,_ctx) ) { + case 1: { - State = 771; enumerationStmt_Constant(); - } + State = 727; whiteSpace(); + State = 728; valueStmt(0); } - State = 776; - _errHandler.Sync(this); - _la = _input.La(1); + break; } - State = 777; Match(END_ENUM); } } catch (RecognitionException re) { @@ -3426,78 +3263,113 @@ public EnumerationStmtContext enumerationStmt() { return _localctx; } - public partial class EnumerationStmt_ConstantContext : ParserRuleContext { + public partial class ForNextStmtContext : ParserRuleContext { + public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } + public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } + public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } + public ITerminalNode STEP() { return GetToken(VBAParser.STEP, 0); } public EndOfStatementContext endOfStatement() { return GetRuleContext(0); } - public EnumerationStmt_ConstantContext(ParserRuleContext parent, int invokingState) + public BlockContext block() { + return GetRuleContext(0); + } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public ForNextStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_enumerationStmt_Constant; } } + public override int RuleIndex { get { return RULE_forNextStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterEnumerationStmt_Constant(this); + if (typedListener != null) typedListener.EnterForNextStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitEnumerationStmt_Constant(this); + if (typedListener != null) typedListener.ExitForNextStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitEnumerationStmt_Constant(this); + if (typedVisitor != null) return typedVisitor.VisitForNextStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public EnumerationStmt_ConstantContext enumerationStmt_Constant() { - EnumerationStmt_ConstantContext _localctx = new EnumerationStmt_ConstantContext(_ctx, State); - EnterRule(_localctx, 56, RULE_enumerationStmt_Constant); + public ForNextStmtContext forNextStmt() { + ForNextStmtContext _localctx = new ForNextStmtContext(_ctx, State); + EnterRule(_localctx, 58, RULE_forNextStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 779; identifier(); - State = 788; - switch ( Interpreter.AdaptivePredict(_input,73,_ctx) ) { - case 1: + State = 732; Match(FOR); + State = 733; whiteSpace(); + State = 734; valueStmt(0); + State = 736; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 781; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 780; whiteSpace(); - } + State = 735; whiteSpace(); } + } - State = 783; Match(EQ); - State = 785; - switch ( Interpreter.AdaptivePredict(_input,72,_ctx) ) { - case 1: - { - State = 784; whiteSpace(); - } - break; + State = 738; Match(EQ); + State = 740; + switch ( Interpreter.AdaptivePredict(_input,68,_ctx) ) { + case 1: + { + State = 739; whiteSpace(); + } + break; + } + State = 742; valueStmt(0); + State = 743; whiteSpace(); + State = 744; Match(TO); + State = 745; whiteSpace(); + State = 746; valueStmt(0); + State = 752; + switch ( Interpreter.AdaptivePredict(_input,69,_ctx) ) { + case 1: + { + State = 747; whiteSpace(); + State = 748; Match(STEP); + State = 749; whiteSpace(); + State = 750; valueStmt(0); + } + break; + } + State = 754; endOfStatement(); + State = 756; + switch ( Interpreter.AdaptivePredict(_input,70,_ctx) ) { + case 1: + { + State = 755; block(); } - State = 787; valueStmt(0); + break; + } + State = 758; Match(NEXT); + State = 762; + switch ( Interpreter.AdaptivePredict(_input,71,_ctx) ) { + case 1: + { + State = 759; whiteSpace(); + State = 760; valueStmt(0); } break; } - State = 790; endOfStatement(); } } catch (RecognitionException re) { @@ -3511,88 +3383,143 @@ public EnumerationStmt_ConstantContext enumerationStmt_Constant() { return _localctx; } - public partial class EraseStmtContext : ParserRuleContext { - public ITerminalNode ERASE() { return GetToken(VBAParser.ERASE, 0); } + public partial class FunctionStmtContext : ParserRuleContext { + public ArgListContext argList() { + return GetRuleContext(0); + } + public FunctionNameContext functionName() { + return GetRuleContext(0); + } + public ITerminalNode FUNCTION() { return GetToken(VBAParser.FUNCTION, 0); } + public ITerminalNode END_FUNCTION() { return GetToken(VBAParser.END_FUNCTION, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); + public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } + public TypeHintContext typeHint() { + return GetRuleContext(0); } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public AsTypeClauseContext asTypeClause() { + return GetRuleContext(0); } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); + public VisibilityContext visibility() { + return GetRuleContext(0); } - public EraseStmtContext(ParserRuleContext parent, int invokingState) + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); + } + public BlockContext block() { + return GetRuleContext(0); + } + public FunctionStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_eraseStmt; } } + public override int RuleIndex { get { return RULE_functionStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterEraseStmt(this); + if (typedListener != null) typedListener.EnterFunctionStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitEraseStmt(this); + if (typedListener != null) typedListener.ExitFunctionStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitEraseStmt(this); + if (typedVisitor != null) return typedVisitor.VisitFunctionStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public EraseStmtContext eraseStmt() { - EraseStmtContext _localctx = new EraseStmtContext(_ctx, State); - EnterRule(_localctx, 58, RULE_eraseStmt); + public FunctionStmtContext functionStmt() { + FunctionStmtContext _localctx = new FunctionStmtContext(_ctx, State); + EnterRule(_localctx, 60, RULE_functionStmt); int _la; try { - int _alt; EnterOuterAlt(_localctx, 1); { - State = 792; Match(ERASE); - State = 793; whiteSpace(); - State = 794; valueStmt(0); - State = 805; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,76,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { + State = 767; + _la = _input.La(1); + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { + { + State = 764; visibility(); + State = 765; whiteSpace(); + } + } + + State = 771; + _la = _input.La(1); + if (_la==STATIC) { + { + State = 769; Match(STATIC); + State = 770; whiteSpace(); + } + } + + State = 773; Match(FUNCTION); + State = 775; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 774; whiteSpace(); + } + } + + State = 777; functionName(); + State = 779; + switch ( Interpreter.AdaptivePredict(_input,75,_ctx) ) { + case 1: + { + State = 778; typeHint(); + } + break; + } + State = 785; + switch ( Interpreter.AdaptivePredict(_input,77,_ctx) ) { + case 1: + { + State = 782; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 796; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 795; whiteSpace(); - } + State = 781; whiteSpace(); } + } - State = 798; Match(COMMA); - State = 800; - switch ( Interpreter.AdaptivePredict(_input,75,_ctx) ) { - case 1: - { - State = 799; whiteSpace(); - } - break; - } - State = 802; valueStmt(0); + State = 784; argList(); + } + break; + } + State = 791; + switch ( Interpreter.AdaptivePredict(_input,79,_ctx) ) { + case 1: + { + State = 788; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 787; whiteSpace(); } - } } - State = 807; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,76,_ctx); + + State = 790; asTypeClause(); + } + break; } + State = 793; endOfStatement(); + State = 795; + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_IF - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (LPAREN - 192)) | (1L << (MINUS - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (COLLECTION - 192)) | (1L << (DELETESETTING - 192)) | (1L << (LOAD - 192)) | (1L << (RMDIR - 192)) | (1L << (SENDKEYS - 192)) | (1L << (SETATTR - 192)) | (1L << (ENDIF - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + { + State = 794; block(); + } + } + + State = 797; Match(END_FUNCTION); } } catch (RecognitionException re) { @@ -3606,44 +3533,38 @@ public EraseStmtContext eraseStmt() { return _localctx; } - public partial class ErrorStmtContext : ParserRuleContext { - public ITerminalNode ERROR() { return GetToken(VBAParser.ERROR, 0); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public partial class FunctionNameContext : ParserRuleContext { + public IdentifierContext identifier() { + return GetRuleContext(0); } - public ErrorStmtContext(ParserRuleContext parent, int invokingState) + public FunctionNameContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_errorStmt; } } + public override int RuleIndex { get { return RULE_functionName; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterErrorStmt(this); + if (typedListener != null) typedListener.EnterFunctionName(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitErrorStmt(this); + if (typedListener != null) typedListener.ExitFunctionName(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitErrorStmt(this); + if (typedVisitor != null) return typedVisitor.VisitFunctionName(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ErrorStmtContext errorStmt() { - ErrorStmtContext _localctx = new ErrorStmtContext(_ctx, State); - EnterRule(_localctx, 60, RULE_errorStmt); + public FunctionNameContext functionName() { + FunctionNameContext _localctx = new FunctionNameContext(_ctx, State); + EnterRule(_localctx, 62, RULE_functionName); try { EnterOuterAlt(_localctx, 1); { - State = 808; Match(ERROR); - State = 809; whiteSpace(); - State = 810; valueStmt(0); + State = 799; identifier(); } } catch (RecognitionException re) { @@ -3657,72 +3578,101 @@ public ErrorStmtContext errorStmt() { return _localctx; } - public partial class EventStmtContext : ParserRuleContext { - public ArgListContext argList() { - return GetRuleContext(0); - } + public partial class GetStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public IdentifierContext identifier() { - return GetRuleContext(0); + public FileNumberContext fileNumber() { + return GetRuleContext(0); } - public VisibilityContext visibility() { - return GetRuleContext(0); + public ITerminalNode GET() { return GetToken(VBAParser.GET, 0); } + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); } - public ITerminalNode EVENT() { return GetToken(VBAParser.EVENT, 0); } - public EventStmtContext(ParserRuleContext parent, int invokingState) + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public GetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_eventStmt; } } + public override int RuleIndex { get { return RULE_getStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterEventStmt(this); + if (typedListener != null) typedListener.EnterGetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitEventStmt(this); + if (typedListener != null) typedListener.ExitGetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitEventStmt(this); + if (typedVisitor != null) return typedVisitor.VisitGetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public EventStmtContext eventStmt() { - EventStmtContext _localctx = new EventStmtContext(_ctx, State); - EnterRule(_localctx, 62, RULE_eventStmt); + public GetStmtContext getStmt() { + GetStmtContext _localctx = new GetStmtContext(_ctx, State); + EnterRule(_localctx, 64, RULE_getStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 815; + State = 801; Match(GET); + State = 802; whiteSpace(); + State = 803; fileNumber(); + State = 805; _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 812; visibility(); - State = 813; whiteSpace(); + State = 804; whiteSpace(); } } - State = 817; Match(EVENT); - State = 818; whiteSpace(); - State = 819; identifier(); - State = 821; + State = 807; Match(COMMA); + State = 809; + switch ( Interpreter.AdaptivePredict(_input,82,_ctx) ) { + case 1: + { + State = 808; whiteSpace(); + } + break; + } + State = 812; + switch ( Interpreter.AdaptivePredict(_input,83,_ctx) ) { + case 1: + { + State = 811; valueStmt(0); + } + break; + } + State = 815; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 820; whiteSpace(); + State = 814; whiteSpace(); } } - State = 823; argList(); + State = 817; Match(COMMA); + State = 819; + switch ( Interpreter.AdaptivePredict(_input,85,_ctx) ) { + case 1: + { + State = 818; whiteSpace(); + } + break; + } + State = 821; valueStmt(0); } } catch (RecognitionException re) { @@ -3736,46 +3686,44 @@ public EventStmtContext eventStmt() { return _localctx; } - public partial class ExitStmtContext : ParserRuleContext { - public ITerminalNode EXIT_SUB() { return GetToken(VBAParser.EXIT_SUB, 0); } - public ITerminalNode EXIT_PROPERTY() { return GetToken(VBAParser.EXIT_PROPERTY, 0); } - public ITerminalNode EXIT_FUNCTION() { return GetToken(VBAParser.EXIT_FUNCTION, 0); } - public ITerminalNode EXIT_DO() { return GetToken(VBAParser.EXIT_DO, 0); } - public ITerminalNode EXIT_FOR() { return GetToken(VBAParser.EXIT_FOR, 0); } - public ExitStmtContext(ParserRuleContext parent, int invokingState) + public partial class GoSubStmtContext : ParserRuleContext { + public ITerminalNode GOSUB() { return GetToken(VBAParser.GOSUB, 0); } + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); + } + public GoSubStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_exitStmt; } } + public override int RuleIndex { get { return RULE_goSubStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterExitStmt(this); + if (typedListener != null) typedListener.EnterGoSubStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitExitStmt(this); + if (typedListener != null) typedListener.ExitGoSubStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitExitStmt(this); + if (typedVisitor != null) return typedVisitor.VisitGoSubStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ExitStmtContext exitStmt() { - ExitStmtContext _localctx = new ExitStmtContext(_ctx, State); - EnterRule(_localctx, 64, RULE_exitStmt); - int _la; + public GoSubStmtContext goSubStmt() { + GoSubStmtContext _localctx = new GoSubStmtContext(_ctx, State); + EnterRule(_localctx, 66, RULE_goSubStmt); try { EnterOuterAlt(_localctx, 1); { - State = 825; - _la = _input.La(1); - if ( !(((((_la - 109)) & ~0x3f) == 0 && ((1L << (_la - 109)) & ((1L << (EXIT_DO - 109)) | (1L << (EXIT_FOR - 109)) | (1L << (EXIT_FUNCTION - 109)) | (1L << (EXIT_PROPERTY - 109)) | (1L << (EXIT_SUB - 109)))) != 0)) ) { - _errHandler.RecoverInline(this); - } - Consume(); + State = 823; Match(GOSUB); + State = 824; whiteSpace(); + State = 825; valueStmt(0); } } catch (RecognitionException re) { @@ -3789,70 +3737,44 @@ public ExitStmtContext exitStmt() { return _localctx; } - public partial class FilecopyStmtContext : ParserRuleContext { - public ITerminalNode FILECOPY() { return GetToken(VBAParser.FILECOPY, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); + public partial class GoToStmtContext : ParserRuleContext { + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } - public FilecopyStmtContext(ParserRuleContext parent, int invokingState) + public GoToStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_filecopyStmt; } } + public override int RuleIndex { get { return RULE_goToStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterFilecopyStmt(this); + if (typedListener != null) typedListener.EnterGoToStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitFilecopyStmt(this); + if (typedListener != null) typedListener.ExitGoToStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitFilecopyStmt(this); + if (typedVisitor != null) return typedVisitor.VisitGoToStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public FilecopyStmtContext filecopyStmt() { - FilecopyStmtContext _localctx = new FilecopyStmtContext(_ctx, State); - EnterRule(_localctx, 66, RULE_filecopyStmt); - int _la; + public GoToStmtContext goToStmt() { + GoToStmtContext _localctx = new GoToStmtContext(_ctx, State); + EnterRule(_localctx, 68, RULE_goToStmt); try { EnterOuterAlt(_localctx, 1); { - State = 827; Match(FILECOPY); + State = 827; Match(GOTO); State = 828; whiteSpace(); State = 829; valueStmt(0); - State = 831; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 830; whiteSpace(); - } - } - - State = 833; Match(COMMA); - State = 835; - switch ( Interpreter.AdaptivePredict(_input,80,_ctx) ) { - case 1: - { - State = 834; whiteSpace(); - } - break; - } - State = 837; valueStmt(0); } } catch (RecognitionException re) { @@ -3866,100 +3788,145 @@ public FilecopyStmtContext filecopyStmt() { return _localctx; } - public partial class ForEachStmtContext : ParserRuleContext { - public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } - public IdentifierContext identifier(int i) { - return GetRuleContext(i); + public partial class IfThenElseStmtContext : ParserRuleContext { + public IfThenElseStmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ifThenElseStmt; } } + + public IfThenElseStmtContext() { } + public virtual void CopyFrom(IfThenElseStmtContext context) { + base.CopyFrom(context); + } + } + public partial class BlockIfThenElseContext : IfThenElseStmtContext { + public IfElseIfBlockStmtContext ifElseIfBlockStmt(int i) { + return GetRuleContext(i); } + public ITerminalNode END_IF() { return GetToken(VBAParser.END_IF, 0); } + public IReadOnlyList ifElseIfBlockStmt() { + return GetRuleContexts(); + } + public IfBlockStmtContext ifBlockStmt() { + return GetRuleContext(0); + } + public IfElseBlockStmtContext ifElseBlockStmt() { + return GetRuleContext(0); + } + public BlockIfThenElseContext(IfThenElseStmtContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterBlockIfThenElse(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitBlockIfThenElse(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitBlockIfThenElse(this); + else return visitor.VisitChildren(this); + } + } + public partial class InlineIfThenElseContext : IfThenElseStmtContext { + public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } + public ITerminalNode IF() { return GetToken(VBAParser.IF, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public TypeHintContext typeHint() { - return GetRuleContext(0); + public IReadOnlyList blockStmt() { + return GetRuleContexts(); } - public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } + public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode EACH() { return GetToken(VBAParser.EACH, 0); } - public IReadOnlyList identifier() { - return GetRuleContexts(); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public BlockContext block() { - return GetRuleContext(0); + public IfConditionStmtContext ifConditionStmt() { + return GetRuleContext(0); } - public ITerminalNode IN() { return GetToken(VBAParser.IN, 0); } - public ForEachStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public BlockStmtContext blockStmt(int i) { + return GetRuleContext(i); } - public override int RuleIndex { get { return RULE_forEachStmt; } } + public InlineIfThenElseContext(IfThenElseStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterForEachStmt(this); + if (typedListener != null) typedListener.EnterInlineIfThenElse(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitForEachStmt(this); + if (typedListener != null) typedListener.ExitInlineIfThenElse(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitForEachStmt(this); + if (typedVisitor != null) return typedVisitor.VisitInlineIfThenElse(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ForEachStmtContext forEachStmt() { - ForEachStmtContext _localctx = new ForEachStmtContext(_ctx, State); - EnterRule(_localctx, 68, RULE_forEachStmt); + public IfThenElseStmtContext ifThenElseStmt() { + IfThenElseStmtContext _localctx = new IfThenElseStmtContext(_ctx, State); + EnterRule(_localctx, 70, RULE_ifThenElseStmt); int _la; try { - EnterOuterAlt(_localctx, 1); - { - State = 839; Match(FOR); - State = 840; whiteSpace(); - State = 841; Match(EACH); - State = 842; whiteSpace(); - State = 843; identifier(); - State = 845; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { - { - State = 844; typeHint(); - } - } - - State = 847; whiteSpace(); - State = 848; Match(IN); - State = 849; whiteSpace(); - State = 850; valueStmt(0); - State = 851; endOfStatement(); - State = 853; - switch ( Interpreter.AdaptivePredict(_input,82,_ctx) ) { + State = 857; + switch ( Interpreter.AdaptivePredict(_input,89,_ctx) ) { case 1: + _localctx = new InlineIfThenElseContext(_localctx); + EnterOuterAlt(_localctx, 1); { - State = 852; block(); + State = 831; Match(IF); + State = 832; whiteSpace(); + State = 833; ifConditionStmt(); + State = 834; whiteSpace(); + State = 835; Match(THEN); + State = 836; whiteSpace(); + State = 837; blockStmt(); + State = 843; + switch ( Interpreter.AdaptivePredict(_input,86,_ctx) ) { + case 1: + { + State = 838; whiteSpace(); + State = 839; Match(ELSE); + State = 840; whiteSpace(); + State = 841; blockStmt(); + } + break; + } } break; - } - State = 855; Match(NEXT); - State = 859; - switch ( Interpreter.AdaptivePredict(_input,83,_ctx) ) { - case 1: + + case 2: + _localctx = new BlockIfThenElseContext(_localctx); + EnterOuterAlt(_localctx, 2); { - State = 856; whiteSpace(); - State = 857; identifier(); + State = 845; ifBlockStmt(); + State = 849; + _errHandler.Sync(this); + _la = _input.La(1); + while (_la==ELSEIF) { + { + { + State = 846; ifElseIfBlockStmt(); + } + } + State = 851; + _errHandler.Sync(this); + _la = _input.La(1); + } + State = 853; + _la = _input.La(1); + if (_la==ELSE) { + { + State = 852; ifElseBlockStmt(); + } + } + + State = 855; Match(END_IF); } break; } - } } catch (RecognitionException re) { _localctx.exception = re; @@ -3972,153 +3939,110 @@ public ForEachStmtContext forEachStmt() { return _localctx; } - public partial class ForNextStmtContext : ParserRuleContext { - public IdentifierContext identifier(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); + public partial class IfBlockStmtContext : ParserRuleContext { + public ITerminalNode IF() { return GetToken(VBAParser.IF, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } + public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public AsTypeClauseContext asTypeClause() { - return GetRuleContext(0); - } - public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } - public ITerminalNode STEP() { return GetToken(VBAParser.STEP, 0); } - public IReadOnlyList identifier() { - return GetRuleContexts(); - } - public TypeHintContext typeHint(int i) { - return GetRuleContext(i); - } - public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList typeHint() { - return GetRuleContexts(); + public IfConditionStmtContext ifConditionStmt() { + return GetRuleContext(0); } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } public EndOfStatementContext endOfStatement() { return GetRuleContext(0); } public BlockContext block() { return GetRuleContext(0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public ForNextStmtContext(ParserRuleContext parent, int invokingState) + public IfBlockStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_forNextStmt; } } + public override int RuleIndex { get { return RULE_ifBlockStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterForNextStmt(this); + if (typedListener != null) typedListener.EnterIfBlockStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitForNextStmt(this); + if (typedListener != null) typedListener.ExitIfBlockStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitForNextStmt(this); + if (typedVisitor != null) return typedVisitor.VisitIfBlockStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ForNextStmtContext forNextStmt() { - ForNextStmtContext _localctx = new ForNextStmtContext(_ctx, State); - EnterRule(_localctx, 70, RULE_forNextStmt); - int _la; + public IfBlockStmtContext ifBlockStmt() { + IfBlockStmtContext _localctx = new IfBlockStmtContext(_ctx, State); + EnterRule(_localctx, 72, RULE_ifBlockStmt); try { EnterOuterAlt(_localctx, 1); { - State = 861; Match(FOR); + State = 859; Match(IF); + State = 860; whiteSpace(); + State = 861; ifConditionStmt(); State = 862; whiteSpace(); - State = 863; identifier(); - State = 865; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { - { - State = 864; typeHint(); - } - } - - State = 870; - switch ( Interpreter.AdaptivePredict(_input,85,_ctx) ) { + State = 863; Match(THEN); + State = 864; endOfStatement(); + State = 866; + switch ( Interpreter.AdaptivePredict(_input,90,_ctx) ) { case 1: { - State = 867; whiteSpace(); - State = 868; asTypeClause(); + State = 865; block(); } break; } - State = 873; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 872; whiteSpace(); - } } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } - State = 875; Match(EQ); - State = 877; - switch ( Interpreter.AdaptivePredict(_input,87,_ctx) ) { - case 1: - { - State = 876; whiteSpace(); - } - break; - } - State = 879; valueStmt(0); - State = 880; whiteSpace(); - State = 881; Match(TO); - State = 882; whiteSpace(); - State = 883; valueStmt(0); - State = 889; - switch ( Interpreter.AdaptivePredict(_input,88,_ctx) ) { - case 1: - { - State = 884; whiteSpace(); - State = 885; Match(STEP); - State = 886; whiteSpace(); - State = 887; valueStmt(0); - } - break; - } - State = 891; endOfStatement(); - State = 893; - switch ( Interpreter.AdaptivePredict(_input,89,_ctx) ) { - case 1: - { - State = 892; block(); - } - break; - } - State = 895; Match(NEXT); - State = 901; - switch ( Interpreter.AdaptivePredict(_input,91,_ctx) ) { - case 1: - { - State = 896; whiteSpace(); - State = 897; identifier(); - State = 899; - switch ( Interpreter.AdaptivePredict(_input,90,_ctx) ) { - case 1: - { - State = 898; typeHint(); - } - break; - } - } - break; - } + public partial class IfConditionStmtContext : ParserRuleContext { + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public IfConditionStmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_ifConditionStmt; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterIfConditionStmt(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitIfConditionStmt(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitIfConditionStmt(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public IfConditionStmtContext ifConditionStmt() { + IfConditionStmtContext _localctx = new IfConditionStmtContext(_ctx, State); + EnterRule(_localctx, 74, RULE_ifConditionStmt); + try { + EnterOuterAlt(_localctx, 1); + { + State = 868; valueStmt(0); } } catch (RecognitionException re) { @@ -4132,30 +4056,17 @@ public ForNextStmtContext forNextStmt() { return _localctx; } - public partial class FunctionStmtContext : ParserRuleContext { - public ArgListContext argList() { - return GetRuleContext(0); - } - public ITerminalNode FUNCTION() { return GetToken(VBAParser.FUNCTION, 0); } - public ITerminalNode END_FUNCTION() { return GetToken(VBAParser.END_FUNCTION, 0); } + public partial class IfElseIfBlockStmtContext : ParserRuleContext { + public ITerminalNode ELSEIF() { return GetToken(VBAParser.ELSEIF, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } - public TypeHintContext typeHint() { - return GetRuleContext(0); - } + public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public AsTypeClauseContext asTypeClause() { - return GetRuleContext(0); - } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public VisibilityContext visibility() { - return GetRuleContext(0); + public IfConditionStmtContext ifConditionStmt() { + return GetRuleContext(0); } public EndOfStatementContext endOfStatement() { return GetRuleContext(0); @@ -4163,112 +4074,47 @@ public EndOfStatementContext endOfStatement() { public BlockContext block() { return GetRuleContext(0); } - public FunctionStmtContext(ParserRuleContext parent, int invokingState) + public IfElseIfBlockStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_functionStmt; } } + public override int RuleIndex { get { return RULE_ifElseIfBlockStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterFunctionStmt(this); + if (typedListener != null) typedListener.EnterIfElseIfBlockStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitFunctionStmt(this); + if (typedListener != null) typedListener.ExitIfElseIfBlockStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitFunctionStmt(this); + if (typedVisitor != null) return typedVisitor.VisitIfElseIfBlockStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public FunctionStmtContext functionStmt() { - FunctionStmtContext _localctx = new FunctionStmtContext(_ctx, State); - EnterRule(_localctx, 72, RULE_functionStmt); - int _la; + public IfElseIfBlockStmtContext ifElseIfBlockStmt() { + IfElseIfBlockStmtContext _localctx = new IfElseIfBlockStmtContext(_ctx, State); + EnterRule(_localctx, 76, RULE_ifElseIfBlockStmt); try { EnterOuterAlt(_localctx, 1); { - State = 906; - _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { - { - State = 903; visibility(); - State = 904; whiteSpace(); - } - } - - State = 910; - _la = _input.La(1); - if (_la==STATIC) { - { - State = 908; Match(STATIC); - State = 909; whiteSpace(); - } - } - - State = 912; Match(FUNCTION); - State = 914; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 913; whiteSpace(); - } - } - - State = 916; identifier(); - State = 918; - switch ( Interpreter.AdaptivePredict(_input,95,_ctx) ) { - case 1: - { - State = 917; typeHint(); - } - break; - } - State = 924; - switch ( Interpreter.AdaptivePredict(_input,97,_ctx) ) { - case 1: - { - State = 921; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 920; whiteSpace(); - } - } - - State = 923; argList(); - } - break; - } - State = 930; - switch ( Interpreter.AdaptivePredict(_input,99,_ctx) ) { + State = 870; Match(ELSEIF); + State = 871; whiteSpace(); + State = 872; ifConditionStmt(); + State = 873; whiteSpace(); + State = 874; Match(THEN); + State = 875; endOfStatement(); + State = 877; + switch ( Interpreter.AdaptivePredict(_input,91,_ctx) ) { case 1: { - State = 927; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 926; whiteSpace(); - } - } - - State = 929; asTypeClause(); + State = 876; block(); } break; } - State = 932; endOfStatement(); - State = 934; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==LINE_CONTINUATION || _la==COLLECTION) { - { - State = 933; block(); - } - } - - State = 936; Match(END_FUNCTION); } } catch (RecognitionException re) { @@ -4282,101 +4128,51 @@ public FunctionStmtContext functionStmt() { return _localctx; } - public partial class GetStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public FileNumberContext fileNumber() { - return GetRuleContext(0); - } - public ITerminalNode GET() { return GetToken(VBAParser.GET, 0); } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); + public partial class IfElseBlockStmtContext : ParserRuleContext { + public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public BlockContext block() { + return GetRuleContext(0); } - public GetStmtContext(ParserRuleContext parent, int invokingState) + public IfElseBlockStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_getStmt; } } + public override int RuleIndex { get { return RULE_ifElseBlockStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterGetStmt(this); + if (typedListener != null) typedListener.EnterIfElseBlockStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitGetStmt(this); + if (typedListener != null) typedListener.ExitIfElseBlockStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitGetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitIfElseBlockStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public GetStmtContext getStmt() { - GetStmtContext _localctx = new GetStmtContext(_ctx, State); - EnterRule(_localctx, 74, RULE_getStmt); - int _la; + public IfElseBlockStmtContext ifElseBlockStmt() { + IfElseBlockStmtContext _localctx = new IfElseBlockStmtContext(_ctx, State); + EnterRule(_localctx, 78, RULE_ifElseBlockStmt); try { EnterOuterAlt(_localctx, 1); { - State = 938; Match(GET); - State = 939; whiteSpace(); - State = 940; fileNumber(); - State = 942; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 941; whiteSpace(); - } - } - - State = 944; Match(COMMA); - State = 946; - switch ( Interpreter.AdaptivePredict(_input,102,_ctx) ) { - case 1: - { - State = 945; whiteSpace(); - } - break; - } - State = 949; - switch ( Interpreter.AdaptivePredict(_input,103,_ctx) ) { - case 1: - { - State = 948; valueStmt(0); - } - break; - } - State = 952; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 951; whiteSpace(); - } - } - - State = 954; Match(COMMA); - State = 956; - switch ( Interpreter.AdaptivePredict(_input,105,_ctx) ) { + State = 879; Match(ELSE); + State = 880; endOfStatement(); + State = 882; + switch ( Interpreter.AdaptivePredict(_input,92,_ctx) ) { case 1: { - State = 955; whiteSpace(); + State = 881; block(); } break; } - State = 958; valueStmt(0); } } catch (RecognitionException re) { @@ -4390,44 +4186,44 @@ public GetStmtContext getStmt() { return _localctx; } - public partial class GoSubStmtContext : ParserRuleContext { - public ITerminalNode GOSUB() { return GetToken(VBAParser.GOSUB, 0); } + public partial class ImplementsStmtContext : ParserRuleContext { public ValueStmtContext valueStmt() { return GetRuleContext(0); } public WhiteSpaceContext whiteSpace() { return GetRuleContext(0); } - public GoSubStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode IMPLEMENTS() { return GetToken(VBAParser.IMPLEMENTS, 0); } + public ImplementsStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_goSubStmt; } } + public override int RuleIndex { get { return RULE_implementsStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterGoSubStmt(this); + if (typedListener != null) typedListener.EnterImplementsStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitGoSubStmt(this); + if (typedListener != null) typedListener.ExitImplementsStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitGoSubStmt(this); + if (typedVisitor != null) return typedVisitor.VisitImplementsStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public GoSubStmtContext goSubStmt() { - GoSubStmtContext _localctx = new GoSubStmtContext(_ctx, State); - EnterRule(_localctx, 76, RULE_goSubStmt); + public ImplementsStmtContext implementsStmt() { + ImplementsStmtContext _localctx = new ImplementsStmtContext(_ctx, State); + EnterRule(_localctx, 80, RULE_implementsStmt); try { EnterOuterAlt(_localctx, 1); { - State = 960; Match(GOSUB); - State = 961; whiteSpace(); - State = 962; valueStmt(0); + State = 884; Match(IMPLEMENTS); + State = 885; whiteSpace(); + State = 886; valueStmt(0); } } catch (RecognitionException re) { @@ -4441,48 +4237,99 @@ public GoSubStmtContext goSubStmt() { return _localctx; } - public partial class GoToStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class InputStmtContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } - public GoToStmtContext(ParserRuleContext parent, int invokingState) + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ITerminalNode INPUT() { return GetToken(VBAParser.INPUT, 0); } + public FileNumberContext fileNumber() { + return GetRuleContext(0); + } + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); + } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public InputStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_goToStmt; } } + public override int RuleIndex { get { return RULE_inputStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterGoToStmt(this); + if (typedListener != null) typedListener.EnterInputStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitGoToStmt(this); + if (typedListener != null) typedListener.ExitInputStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitGoToStmt(this); + if (typedVisitor != null) return typedVisitor.VisitInputStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public GoToStmtContext goToStmt() { - GoToStmtContext _localctx = new GoToStmtContext(_ctx, State); - EnterRule(_localctx, 78, RULE_goToStmt); + public InputStmtContext inputStmt() { + InputStmtContext _localctx = new InputStmtContext(_ctx, State); + EnterRule(_localctx, 82, RULE_inputStmt); + int _la; try { + int _alt; EnterOuterAlt(_localctx, 1); { - State = 964; Match(GOTO); - State = 965; whiteSpace(); - State = 966; valueStmt(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; + State = 888; Match(INPUT); + State = 889; whiteSpace(); + State = 890; fileNumber(); + State = 899; + _errHandler.Sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + State = 892; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 891; whiteSpace(); + } + } + + State = 894; Match(COMMA); + State = 896; + switch ( Interpreter.AdaptivePredict(_input,94,_ctx) ) { + case 1: + { + State = 895; whiteSpace(); + } + break; + } + State = 898; valueStmt(0); + } + } + break; + default: + throw new NoViableAltException(this); + } + State = 901; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,95,_ctx); + } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; _errHandler.ReportError(this, re); _errHandler.Recover(this, re); } @@ -4492,145 +4339,78 @@ public GoToStmtContext goToStmt() { return _localctx; } - public partial class IfThenElseStmtContext : ParserRuleContext { - public IfThenElseStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_ifThenElseStmt; } } - - public IfThenElseStmtContext() { } - public virtual void CopyFrom(IfThenElseStmtContext context) { - base.CopyFrom(context); - } - } - public partial class BlockIfThenElseContext : IfThenElseStmtContext { - public IfElseIfBlockStmtContext ifElseIfBlockStmt(int i) { - return GetRuleContext(i); - } - public ITerminalNode END_IF() { return GetToken(VBAParser.END_IF, 0); } - public IReadOnlyList ifElseIfBlockStmt() { - return GetRuleContexts(); - } - public IfBlockStmtContext ifBlockStmt() { - return GetRuleContext(0); - } - public IfElseBlockStmtContext ifElseBlockStmt() { - return GetRuleContext(0); - } - public BlockIfThenElseContext(IfThenElseStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterBlockIfThenElse(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitBlockIfThenElse(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitBlockIfThenElse(this); - else return visitor.VisitChildren(this); - } - } - public partial class InlineIfThenElseContext : IfThenElseStmtContext { - public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } - public ITerminalNode IF() { return GetToken(VBAParser.IF, 0); } + public partial class LetStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList blockStmt() { - return GetRuleContexts(); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } - public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public IfConditionStmtContext ifConditionStmt() { - return GetRuleContext(0); + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } + public ITerminalNode LET() { return GetToken(VBAParser.LET, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public BlockStmtContext blockStmt(int i) { - return GetRuleContext(i); + public LetStmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { } - public InlineIfThenElseContext(IfThenElseStmtContext context) { CopyFrom(context); } + public override int RuleIndex { get { return RULE_letStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterInlineIfThenElse(this); + if (typedListener != null) typedListener.EnterLetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitInlineIfThenElse(this); + if (typedListener != null) typedListener.ExitLetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitInlineIfThenElse(this); + if (typedVisitor != null) return typedVisitor.VisitLetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public IfThenElseStmtContext ifThenElseStmt() { - IfThenElseStmtContext _localctx = new IfThenElseStmtContext(_ctx, State); - EnterRule(_localctx, 80, RULE_ifThenElseStmt); + public LetStmtContext letStmt() { + LetStmtContext _localctx = new LetStmtContext(_ctx, State); + EnterRule(_localctx, 84, RULE_letStmt); int _la; try { - State = 994; - switch ( Interpreter.AdaptivePredict(_input,109,_ctx) ) { + EnterOuterAlt(_localctx, 1); + { + State = 905; + switch ( Interpreter.AdaptivePredict(_input,96,_ctx) ) { case 1: - _localctx = new InlineIfThenElseContext(_localctx); - EnterOuterAlt(_localctx, 1); { - State = 968; Match(IF); - State = 969; whiteSpace(); - State = 970; ifConditionStmt(); - State = 971; whiteSpace(); - State = 972; Match(THEN); - State = 973; whiteSpace(); - State = 974; blockStmt(); - State = 980; - switch ( Interpreter.AdaptivePredict(_input,106,_ctx) ) { - case 1: - { - State = 975; whiteSpace(); - State = 976; Match(ELSE); - State = 977; whiteSpace(); - State = 978; blockStmt(); - } - break; - } + State = 903; Match(LET); + State = 904; whiteSpace(); } break; - - case 2: - _localctx = new BlockIfThenElseContext(_localctx); - EnterOuterAlt(_localctx, 2); + } + State = 907; valueStmt(0); + State = 909; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 982; ifBlockStmt(); - State = 986; - _errHandler.Sync(this); - _la = _input.La(1); - while (_la==ELSEIF) { - { - { - State = 983; ifElseIfBlockStmt(); - } - } - State = 988; - _errHandler.Sync(this); - _la = _input.La(1); - } - State = 990; - _la = _input.La(1); - if (_la==ELSE) { - { - State = 989; ifElseBlockStmt(); - } + State = 908; whiteSpace(); } + } - State = 992; Match(END_IF); + State = 911; Match(EQ); + State = 913; + switch ( Interpreter.AdaptivePredict(_input,98,_ctx) ) { + case 1: + { + State = 912; whiteSpace(); } break; } + State = 915; valueStmt(0); + } } catch (RecognitionException re) { _localctx.exception = re; @@ -4643,65 +4423,70 @@ public IfThenElseStmtContext ifThenElseStmt() { return _localctx; } - public partial class IfBlockStmtContext : ParserRuleContext { - public ITerminalNode IF() { return GetToken(VBAParser.IF, 0); } + public partial class LineInputStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public IfConditionStmtContext ifConditionStmt() { - return GetRuleContext(0); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public BlockContext block() { - return GetRuleContext(0); + public FileNumberContext fileNumber() { + return GetRuleContext(0); } - public IfBlockStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode LINE_INPUT() { return GetToken(VBAParser.LINE_INPUT, 0); } + public LineInputStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_ifBlockStmt; } } + public override int RuleIndex { get { return RULE_lineInputStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterIfBlockStmt(this); + if (typedListener != null) typedListener.EnterLineInputStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitIfBlockStmt(this); + if (typedListener != null) typedListener.ExitLineInputStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitIfBlockStmt(this); + if (typedVisitor != null) return typedVisitor.VisitLineInputStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public IfBlockStmtContext ifBlockStmt() { - IfBlockStmtContext _localctx = new IfBlockStmtContext(_ctx, State); - EnterRule(_localctx, 82, RULE_ifBlockStmt); + public LineInputStmtContext lineInputStmt() { + LineInputStmtContext _localctx = new LineInputStmtContext(_ctx, State); + EnterRule(_localctx, 86, RULE_lineInputStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 996; Match(IF); - State = 997; whiteSpace(); - State = 998; ifConditionStmt(); - State = 999; whiteSpace(); - State = 1000; Match(THEN); - State = 1001; endOfStatement(); - State = 1003; - switch ( Interpreter.AdaptivePredict(_input,110,_ctx) ) { + State = 917; Match(LINE_INPUT); + State = 918; whiteSpace(); + State = 919; fileNumber(); + State = 921; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 920; whiteSpace(); + } + } + + State = 923; Match(COMMA); + State = 925; + switch ( Interpreter.AdaptivePredict(_input,100,_ctx) ) { case 1: { - State = 1002; block(); + State = 924; whiteSpace(); } break; } + State = 927; valueStmt(0); } } catch (RecognitionException re) { @@ -4715,38 +4500,89 @@ public IfBlockStmtContext ifBlockStmt() { return _localctx; } - public partial class IfConditionStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class LockStmtContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public IfConditionStmtContext(ParserRuleContext parent, int invokingState) + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } + public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } + public ITerminalNode LOCK() { return GetToken(VBAParser.LOCK, 0); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public LockStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_ifConditionStmt; } } + public override int RuleIndex { get { return RULE_lockStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterIfConditionStmt(this); + if (typedListener != null) typedListener.EnterLockStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitIfConditionStmt(this); + if (typedListener != null) typedListener.ExitLockStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitIfConditionStmt(this); + if (typedVisitor != null) return typedVisitor.VisitLockStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public IfConditionStmtContext ifConditionStmt() { - IfConditionStmtContext _localctx = new IfConditionStmtContext(_ctx, State); - EnterRule(_localctx, 84, RULE_ifConditionStmt); + public LockStmtContext lockStmt() { + LockStmtContext _localctx = new LockStmtContext(_ctx, State); + EnterRule(_localctx, 88, RULE_lockStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1005; valueStmt(0); + State = 929; Match(LOCK); + State = 930; whiteSpace(); + State = 931; valueStmt(0); + State = 947; + switch ( Interpreter.AdaptivePredict(_input,104,_ctx) ) { + case 1: + { + State = 933; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 932; whiteSpace(); + } + } + + State = 935; Match(COMMA); + State = 937; + switch ( Interpreter.AdaptivePredict(_input,102,_ctx) ) { + case 1: + { + State = 936; whiteSpace(); + } + break; + } + State = 939; valueStmt(0); + State = 945; + switch ( Interpreter.AdaptivePredict(_input,103,_ctx) ) { + case 1: + { + State = 940; whiteSpace(); + State = 941; Match(TO); + State = 942; whiteSpace(); + State = 943; valueStmt(0); + } + break; + } + } + break; + } } } catch (RecognitionException re) { @@ -4760,65 +4596,70 @@ public IfConditionStmtContext ifConditionStmt() { return _localctx; } - public partial class IfElseIfBlockStmtContext : ParserRuleContext { - public ITerminalNode ELSEIF() { return GetToken(VBAParser.ELSEIF, 0); } + public partial class LsetStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } + public ITerminalNode LSET() { return GetToken(VBAParser.LSET, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public IfConditionStmtContext ifConditionStmt() { - return GetRuleContext(0); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public BlockContext block() { - return GetRuleContext(0); + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public IfElseIfBlockStmtContext(ParserRuleContext parent, int invokingState) + public LsetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_ifElseIfBlockStmt; } } + public override int RuleIndex { get { return RULE_lsetStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterIfElseIfBlockStmt(this); + if (typedListener != null) typedListener.EnterLsetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitIfElseIfBlockStmt(this); + if (typedListener != null) typedListener.ExitLsetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitIfElseIfBlockStmt(this); + if (typedVisitor != null) return typedVisitor.VisitLsetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public IfElseIfBlockStmtContext ifElseIfBlockStmt() { - IfElseIfBlockStmtContext _localctx = new IfElseIfBlockStmtContext(_ctx, State); - EnterRule(_localctx, 86, RULE_ifElseIfBlockStmt); + public LsetStmtContext lsetStmt() { + LsetStmtContext _localctx = new LsetStmtContext(_ctx, State); + EnterRule(_localctx, 90, RULE_lsetStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1007; Match(ELSEIF); - State = 1008; whiteSpace(); - State = 1009; ifConditionStmt(); - State = 1010; whiteSpace(); - State = 1011; Match(THEN); - State = 1012; endOfStatement(); - State = 1014; - switch ( Interpreter.AdaptivePredict(_input,111,_ctx) ) { + State = 949; Match(LSET); + State = 950; whiteSpace(); + State = 951; valueStmt(0); + State = 953; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 952; whiteSpace(); + } + } + + State = 955; Match(EQ); + State = 957; + switch ( Interpreter.AdaptivePredict(_input,106,_ctx) ) { case 1: { - State = 1013; block(); + State = 956; whiteSpace(); } break; } + State = 959; valueStmt(0); } } catch (RecognitionException re) { @@ -4832,51 +4673,75 @@ public IfElseIfBlockStmtContext ifElseIfBlockStmt() { return _localctx; } - public partial class IfElseBlockStmtContext : ParserRuleContext { - public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); + public partial class MidStmtContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public BlockContext block() { - return GetRuleContext(0); + public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); } - public IfElseBlockStmtContext(ParserRuleContext parent, int invokingState) + public ArgsCallContext argsCall() { + return GetRuleContext(0); + } + public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } + public ITerminalNode MID() { return GetToken(VBAParser.MID, 0); } + public MidStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_ifElseBlockStmt; } } + public override int RuleIndex { get { return RULE_midStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterIfElseBlockStmt(this); + if (typedListener != null) typedListener.EnterMidStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitIfElseBlockStmt(this); + if (typedListener != null) typedListener.ExitMidStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitIfElseBlockStmt(this); + if (typedVisitor != null) return typedVisitor.VisitMidStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public IfElseBlockStmtContext ifElseBlockStmt() { - IfElseBlockStmtContext _localctx = new IfElseBlockStmtContext(_ctx, State); - EnterRule(_localctx, 88, RULE_ifElseBlockStmt); + public MidStmtContext midStmt() { + MidStmtContext _localctx = new MidStmtContext(_ctx, State); + EnterRule(_localctx, 92, RULE_midStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1016; Match(ELSE); - State = 1017; endOfStatement(); - State = 1019; - switch ( Interpreter.AdaptivePredict(_input,112,_ctx) ) { + State = 961; Match(MID); + State = 963; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 962; whiteSpace(); + } + } + + State = 965; Match(LPAREN); + State = 967; + switch ( Interpreter.AdaptivePredict(_input,108,_ctx) ) { case 1: { - State = 1018; block(); + State = 966; whiteSpace(); } break; } + State = 969; argsCall(); + State = 971; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 970; whiteSpace(); + } + } + + State = 973; Match(RPAREN); } } catch (RecognitionException re) { @@ -4890,44 +4755,75 @@ public IfElseBlockStmtContext ifElseBlockStmt() { return _localctx; } - public partial class ImplementsStmtContext : ParserRuleContext { + public partial class OnErrorStmtContext : ParserRuleContext { + public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode ON_ERROR() { return GetToken(VBAParser.ON_ERROR, 0); } public ValueStmtContext valueStmt() { return GetRuleContext(0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public ITerminalNode RESUME() { return GetToken(VBAParser.RESUME, 0); } + public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); } - public ITerminalNode IMPLEMENTS() { return GetToken(VBAParser.IMPLEMENTS, 0); } - public ImplementsStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode ON_LOCAL_ERROR() { return GetToken(VBAParser.ON_LOCAL_ERROR, 0); } + public OnErrorStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_implementsStmt; } } + public override int RuleIndex { get { return RULE_onErrorStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterImplementsStmt(this); + if (typedListener != null) typedListener.EnterOnErrorStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitImplementsStmt(this); + if (typedListener != null) typedListener.ExitOnErrorStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitImplementsStmt(this); + if (typedVisitor != null) return typedVisitor.VisitOnErrorStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ImplementsStmtContext implementsStmt() { - ImplementsStmtContext _localctx = new ImplementsStmtContext(_ctx, State); - EnterRule(_localctx, 90, RULE_implementsStmt); + public OnErrorStmtContext onErrorStmt() { + OnErrorStmtContext _localctx = new OnErrorStmtContext(_ctx, State); + EnterRule(_localctx, 94, RULE_onErrorStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1021; Match(IMPLEMENTS); - State = 1022; whiteSpace(); - State = 1023; valueStmt(0); + State = 975; + _la = _input.La(1); + if ( !(_la==ON_ERROR || _la==ON_LOCAL_ERROR) ) { + _errHandler.RecoverInline(this); + } + Consume(); + State = 976; whiteSpace(); + State = 985; + switch (_input.La(1)) { + case GOTO: + { + State = 977; Match(GOTO); + State = 978; whiteSpace(); + State = 979; valueStmt(0); + } + break; + case RESUME: + { + State = 981; Match(RESUME); + State = 982; whiteSpace(); + State = 983; Match(NEXT); + } + break; + default: + throw new NoViableAltException(this); + } } } catch (RecognitionException re) { @@ -4941,7 +4837,8 @@ public ImplementsStmtContext implementsStmt() { return _localctx; } - public partial class InputStmtContext : ParserRuleContext { + public partial class OnGoToStmtContext : ParserRuleContext { + public ITerminalNode ON() { return GetToken(VBAParser.ON, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } @@ -4949,87 +4846,84 @@ public IReadOnlyList valueStmt() { return GetRuleContexts(); } public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode INPUT() { return GetToken(VBAParser.INPUT, 0); } - public FileNumberContext fileNumber() { - return GetRuleContext(0); + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } public ITerminalNode COMMA(int i) { return GetToken(VBAParser.COMMA, i); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public InputStmtContext(ParserRuleContext parent, int invokingState) + public OnGoToStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_inputStmt; } } + public override int RuleIndex { get { return RULE_onGoToStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterInputStmt(this); + if (typedListener != null) typedListener.EnterOnGoToStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitInputStmt(this); + if (typedListener != null) typedListener.ExitOnGoToStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitInputStmt(this); + if (typedVisitor != null) return typedVisitor.VisitOnGoToStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public InputStmtContext inputStmt() { - InputStmtContext _localctx = new InputStmtContext(_ctx, State); - EnterRule(_localctx, 92, RULE_inputStmt); + public OnGoToStmtContext onGoToStmt() { + OnGoToStmtContext _localctx = new OnGoToStmtContext(_ctx, State); + EnterRule(_localctx, 96, RULE_onGoToStmt); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1025; Match(INPUT); - State = 1026; whiteSpace(); - State = 1027; fileNumber(); - State = 1036; + State = 987; Match(ON); + State = 988; whiteSpace(); + State = 989; valueStmt(0); + State = 990; whiteSpace(); + State = 991; Match(GOTO); + State = 992; whiteSpace(); + State = 993; valueStmt(0); + State = 1004; _errHandler.Sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: + _alt = Interpreter.AdaptivePredict(_input,113,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { { { - State = 1029; + State = 995; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1028; whiteSpace(); + State = 994; whiteSpace(); } } - State = 1031; Match(COMMA); - State = 1033; - switch ( Interpreter.AdaptivePredict(_input,114,_ctx) ) { + State = 997; Match(COMMA); + State = 999; + switch ( Interpreter.AdaptivePredict(_input,112,_ctx) ) { case 1: { - State = 1032; whiteSpace(); + State = 998; whiteSpace(); } break; } - State = 1035; valueStmt(0); - } + State = 1001; valueStmt(0); } - break; - default: - throw new NoViableAltException(this); + } } - State = 1038; + State = 1006; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,115,_ctx); - } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); + _alt = Interpreter.AdaptivePredict(_input,113,_ctx); + } } } catch (RecognitionException re) { @@ -5043,44 +4937,93 @@ public InputStmtContext inputStmt() { return _localctx; } - public partial class KillStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class OnGoSubStmtContext : ParserRuleContext { + public ITerminalNode ON() { return GetToken(VBAParser.ON, 0); } + public ITerminalNode GOSUB() { return GetToken(VBAParser.GOSUB, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); } - public ITerminalNode KILL() { return GetToken(VBAParser.KILL, 0); } - public KillStmtContext(ParserRuleContext parent, int invokingState) + public OnGoSubStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_killStmt; } } + public override int RuleIndex { get { return RULE_onGoSubStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterKillStmt(this); + if (typedListener != null) typedListener.EnterOnGoSubStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitKillStmt(this); + if (typedListener != null) typedListener.ExitOnGoSubStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitKillStmt(this); + if (typedVisitor != null) return typedVisitor.VisitOnGoSubStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public KillStmtContext killStmt() { - KillStmtContext _localctx = new KillStmtContext(_ctx, State); - EnterRule(_localctx, 94, RULE_killStmt); + public OnGoSubStmtContext onGoSubStmt() { + OnGoSubStmtContext _localctx = new OnGoSubStmtContext(_ctx, State); + EnterRule(_localctx, 98, RULE_onGoSubStmt); + int _la; try { + int _alt; EnterOuterAlt(_localctx, 1); { - State = 1040; Match(KILL); - State = 1041; whiteSpace(); - State = 1042; valueStmt(0); + State = 1007; Match(ON); + State = 1008; whiteSpace(); + State = 1009; valueStmt(0); + State = 1010; whiteSpace(); + State = 1011; Match(GOSUB); + State = 1012; whiteSpace(); + State = 1013; valueStmt(0); + State = 1024; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,116,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 1015; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1014; whiteSpace(); + } + } + + State = 1017; Match(COMMA); + State = 1019; + switch ( Interpreter.AdaptivePredict(_input,115,_ctx) ) { + case 1: + { + State = 1018; whiteSpace(); + } + break; + } + State = 1021; valueStmt(0); + } + } + } + State = 1026; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,116,_ctx); + } } } catch (RecognitionException re) { @@ -5094,77 +5037,141 @@ public KillStmtContext killStmt() { return _localctx; } - public partial class LetStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class OpenStmtContext : ParserRuleContext { + public ITerminalNode LOCK_WRITE() { return GetToken(VBAParser.LOCK_WRITE, 0); } + public ITerminalNode ACCESS() { return GetToken(VBAParser.ACCESS, 0); } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } + public ITerminalNode LOCK_READ_WRITE() { return GetToken(VBAParser.LOCK_READ_WRITE, 0); } + public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } + public ITerminalNode WRITE() { return GetToken(VBAParser.WRITE, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } + public ITerminalNode LEN() { return GetToken(VBAParser.LEN, 0); } + public FileNumberContext fileNumber() { + return GetRuleContext(0); + } + public ITerminalNode INPUT() { return GetToken(VBAParser.INPUT, 0); } + public ITerminalNode READ() { return GetToken(VBAParser.READ, 0); } + public ITerminalNode SHARED() { return GetToken(VBAParser.SHARED, 0); } + public ITerminalNode AS() { return GetToken(VBAParser.AS, 0); } + public ITerminalNode APPEND() { return GetToken(VBAParser.APPEND, 0); } + public ITerminalNode BINARY() { return GetToken(VBAParser.BINARY, 0); } + public ITerminalNode RANDOM() { return GetToken(VBAParser.RANDOM, 0); } + public ITerminalNode OPEN() { return GetToken(VBAParser.OPEN, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode LOCK_READ() { return GetToken(VBAParser.LOCK_READ, 0); } + public ITerminalNode OUTPUT() { return GetToken(VBAParser.OUTPUT, 0); } public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); + public ITerminalNode READ_WRITE() { return GetToken(VBAParser.READ_WRITE, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public ITerminalNode LET() { return GetToken(VBAParser.LET, 0); } - public LetStmtContext(ParserRuleContext parent, int invokingState) + public OpenStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_letStmt; } } + public override int RuleIndex { get { return RULE_openStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterLetStmt(this); + if (typedListener != null) typedListener.EnterOpenStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitLetStmt(this); + if (typedListener != null) typedListener.ExitOpenStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitLetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitOpenStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public LetStmtContext letStmt() { - LetStmtContext _localctx = new LetStmtContext(_ctx, State); - EnterRule(_localctx, 96, RULE_letStmt); + public OpenStmtContext openStmt() { + OpenStmtContext _localctx = new OpenStmtContext(_ctx, State); + EnterRule(_localctx, 100, RULE_openStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1046; - switch ( Interpreter.AdaptivePredict(_input,116,_ctx) ) { + State = 1027; Match(OPEN); + State = 1028; whiteSpace(); + State = 1029; valueStmt(0); + State = 1030; whiteSpace(); + State = 1031; Match(FOR); + State = 1032; whiteSpace(); + State = 1033; + _la = _input.La(1); + if ( !(_la==APPEND || _la==BINARY || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (INPUT - 121)) | (1L << (OUTPUT - 121)) | (1L << (RANDOM - 121)))) != 0)) ) { + _errHandler.RecoverInline(this); + } + Consume(); + State = 1039; + switch ( Interpreter.AdaptivePredict(_input,117,_ctx) ) { case 1: { - State = 1044; Match(LET); - State = 1045; whiteSpace(); + State = 1034; whiteSpace(); + State = 1035; Match(ACCESS); + State = 1036; whiteSpace(); + State = 1037; + _la = _input.La(1); + if ( !(((((_la - 166)) & ~0x3f) == 0 && ((1L << (_la - 166)) & ((1L << (READ - 166)) | (1L << (READ_WRITE - 166)) | (1L << (WRITE - 166)))) != 0)) ) { + _errHandler.RecoverInline(this); + } + Consume(); } break; } - State = 1048; implicitCallStmt_InStmt(); - State = 1050; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 1044; + switch ( Interpreter.AdaptivePredict(_input,118,_ctx) ) { + case 1: { - State = 1049; whiteSpace(); + State = 1041; whiteSpace(); + State = 1042; + _la = _input.La(1); + if ( !(((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (LOCK_READ - 131)) | (1L << (LOCK_WRITE - 131)) | (1L << (LOCK_READ_WRITE - 131)) | (1L << (SHARED - 131)))) != 0)) ) { + _errHandler.RecoverInline(this); + } + Consume(); } + break; } - - State = 1052; Match(EQ); - State = 1054; - switch ( Interpreter.AdaptivePredict(_input,118,_ctx) ) { + State = 1046; whiteSpace(); + State = 1047; Match(AS); + State = 1048; whiteSpace(); + State = 1049; fileNumber(); + State = 1061; + switch ( Interpreter.AdaptivePredict(_input,121,_ctx) ) { case 1: { - State = 1053; whiteSpace(); + State = 1050; whiteSpace(); + State = 1051; Match(LEN); + State = 1053; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1052; whiteSpace(); + } + } + + State = 1055; Match(EQ); + State = 1057; + switch ( Interpreter.AdaptivePredict(_input,120,_ctx) ) { + case 1: + { + State = 1056; whiteSpace(); + } + break; + } + State = 1059; valueStmt(0); } break; } - State = 1056; valueStmt(0); } } catch (RecognitionException re) { @@ -5178,71 +5185,169 @@ public LetStmtContext letStmt() { return _localctx; } - public partial class LineInputStmtContext : ParserRuleContext { + public partial class OutputListContext : ParserRuleContext { + public IReadOnlyList SEMICOLON() { return GetTokens(VBAParser.SEMICOLON); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public ITerminalNode SEMICOLON(int i) { + return GetToken(VBAParser.SEMICOLON, i); } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public FileNumberContext fileNumber() { - return GetRuleContext(0); + public IReadOnlyList outputList_Expression() { + return GetRuleContexts(); } - public ITerminalNode LINE_INPUT() { return GetToken(VBAParser.LINE_INPUT, 0); } - public LineInputStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); + } + public OutputList_ExpressionContext outputList_Expression(int i) { + return GetRuleContext(i); + } + public OutputListContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_lineInputStmt; } } + public override int RuleIndex { get { return RULE_outputList; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterLineInputStmt(this); + if (typedListener != null) typedListener.EnterOutputList(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitLineInputStmt(this); + if (typedListener != null) typedListener.ExitOutputList(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitLineInputStmt(this); + if (typedVisitor != null) return typedVisitor.VisitOutputList(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public LineInputStmtContext lineInputStmt() { - LineInputStmtContext _localctx = new LineInputStmtContext(_ctx, State); - EnterRule(_localctx, 98, RULE_lineInputStmt); + public OutputListContext outputList() { + OutputListContext _localctx = new OutputListContext(_ctx, State); + EnterRule(_localctx, 102, RULE_outputList); int _la; try { - EnterOuterAlt(_localctx, 1); - { - State = 1058; Match(LINE_INPUT); - State = 1059; whiteSpace(); - State = 1060; fileNumber(); - State = 1062; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + int _alt; + State = 1096; + switch ( Interpreter.AdaptivePredict(_input,131,_ctx) ) { + case 1: + EnterOuterAlt(_localctx, 1); { - State = 1061; whiteSpace(); + State = 1063; outputList_Expression(); + State = 1076; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,125,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 1065; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1064; whiteSpace(); + } + } + + State = 1067; + _la = _input.La(1); + if ( !(_la==COMMA || _la==SEMICOLON) ) { + _errHandler.RecoverInline(this); + } + Consume(); + State = 1069; + switch ( Interpreter.AdaptivePredict(_input,123,_ctx) ) { + case 1: + { + State = 1068; whiteSpace(); + } + break; + } + State = 1072; + switch ( Interpreter.AdaptivePredict(_input,124,_ctx) ) { + case 1: + { + State = 1071; outputList_Expression(); + } + break; + } + } + } + } + State = 1078; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,125,_ctx); } - } + } + break; - State = 1064; Match(COMMA); - State = 1066; - switch ( Interpreter.AdaptivePredict(_input,120,_ctx) ) { - case 1: + case 2: + EnterOuterAlt(_localctx, 2); { - State = 1065; whiteSpace(); + State = 1080; + switch ( Interpreter.AdaptivePredict(_input,126,_ctx) ) { + case 1: + { + State = 1079; outputList_Expression(); + } + break; + } + State = 1092; + _errHandler.Sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + State = 1083; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1082; whiteSpace(); + } + } + + State = 1085; + _la = _input.La(1); + if ( !(_la==COMMA || _la==SEMICOLON) ) { + _errHandler.RecoverInline(this); + } + Consume(); + State = 1087; + switch ( Interpreter.AdaptivePredict(_input,128,_ctx) ) { + case 1: + { + State = 1086; whiteSpace(); + } + break; + } + State = 1090; + switch ( Interpreter.AdaptivePredict(_input,129,_ctx) ) { + case 1: + { + State = 1089; outputList_Expression(); + } + break; + } + } + } + break; + default: + throw new NoViableAltException(this); + } + State = 1094; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,130,_ctx); + } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } break; } - State = 1068; valueStmt(0); - } } catch (RecognitionException re) { _localctx.exception = re; @@ -5255,44 +5360,103 @@ public LineInputStmtContext lineInputStmt() { return _localctx; } - public partial class LoadStmtContext : ParserRuleContext { + public partial class OutputList_ExpressionContext : ParserRuleContext { + public ITerminalNode TAB() { return GetToken(VBAParser.TAB, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } public ValueStmtContext valueStmt() { return GetRuleContext(0); } - public ITerminalNode LOAD() { return GetToken(VBAParser.LOAD, 0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } + public ITerminalNode SPC() { return GetToken(VBAParser.SPC, 0); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ArgsCallContext argsCall() { + return GetRuleContext(0); } - public LoadStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } + public OutputList_ExpressionContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_loadStmt; } } + public override int RuleIndex { get { return RULE_outputList_Expression; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterLoadStmt(this); + if (typedListener != null) typedListener.EnterOutputList_Expression(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitLoadStmt(this); + if (typedListener != null) typedListener.ExitOutputList_Expression(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitLoadStmt(this); + if (typedVisitor != null) return typedVisitor.VisitOutputList_Expression(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public LoadStmtContext loadStmt() { - LoadStmtContext _localctx = new LoadStmtContext(_ctx, State); - EnterRule(_localctx, 100, RULE_loadStmt); + public OutputList_ExpressionContext outputList_Expression() { + OutputList_ExpressionContext _localctx = new OutputList_ExpressionContext(_ctx, State); + EnterRule(_localctx, 104, RULE_outputList_Expression); + int _la; try { - EnterOuterAlt(_localctx, 1); - { - State = 1070; Match(LOAD); - State = 1071; whiteSpace(); - State = 1072; valueStmt(0); + State = 1115; + switch ( Interpreter.AdaptivePredict(_input,136,_ctx) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1098; valueStmt(0); + } + break; + + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1099; + _la = _input.La(1); + if ( !(_la==SPC || _la==TAB) ) { + _errHandler.RecoverInline(this); + } + Consume(); + State = 1113; + switch ( Interpreter.AdaptivePredict(_input,135,_ctx) ) { + case 1: + { + State = 1101; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1100; whiteSpace(); + } + } + + State = 1103; Match(LPAREN); + State = 1105; + switch ( Interpreter.AdaptivePredict(_input,133,_ctx) ) { + case 1: + { + State = 1104; whiteSpace(); + } + break; + } + State = 1107; argsCall(); + State = 1109; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1108; whiteSpace(); + } + } + + State = 1111; Match(RPAREN); + } + break; + } + } + break; } } catch (RecognitionException re) { @@ -5306,86 +5470,74 @@ public LoadStmtContext loadStmt() { return _localctx; } - public partial class LockStmtContext : ParserRuleContext { + public partial class PrintStmtContext : ParserRuleContext { + public ITerminalNode PRINT() { return GetToken(VBAParser.PRINT, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } - public ITerminalNode LOCK() { return GetToken(VBAParser.LOCK, 0); } + public OutputListContext outputList() { + return GetRuleContext(0); + } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public FileNumberContext fileNumber() { + return GetRuleContext(0); } - public LockStmtContext(ParserRuleContext parent, int invokingState) + public PrintStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_lockStmt; } } + public override int RuleIndex { get { return RULE_printStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterLockStmt(this); + if (typedListener != null) typedListener.EnterPrintStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitLockStmt(this); + if (typedListener != null) typedListener.ExitPrintStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitLockStmt(this); + if (typedVisitor != null) return typedVisitor.VisitPrintStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public LockStmtContext lockStmt() { - LockStmtContext _localctx = new LockStmtContext(_ctx, State); - EnterRule(_localctx, 102, RULE_lockStmt); + public PrintStmtContext printStmt() { + PrintStmtContext _localctx = new PrintStmtContext(_ctx, State); + EnterRule(_localctx, 106, RULE_printStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1074; Match(LOCK); - State = 1075; whiteSpace(); - State = 1076; valueStmt(0); - State = 1092; - switch ( Interpreter.AdaptivePredict(_input,124,_ctx) ) { - case 1: + State = 1117; Match(PRINT); + State = 1118; whiteSpace(); + State = 1119; fileNumber(); + State = 1121; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1078; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1077; whiteSpace(); - } + State = 1120; whiteSpace(); } + } - State = 1080; Match(COMMA); - State = 1082; - switch ( Interpreter.AdaptivePredict(_input,122,_ctx) ) { - case 1: - { - State = 1081; whiteSpace(); - } - break; - } - State = 1084; valueStmt(0); - State = 1090; - switch ( Interpreter.AdaptivePredict(_input,123,_ctx) ) { + State = 1123; Match(COMMA); + State = 1128; + switch ( Interpreter.AdaptivePredict(_input,139,_ctx) ) { + case 1: + { + State = 1125; + switch ( Interpreter.AdaptivePredict(_input,138,_ctx) ) { case 1: { - State = 1085; whiteSpace(); - State = 1086; Match(TO); - State = 1087; whiteSpace(); - State = 1088; valueStmt(0); + State = 1124; whiteSpace(); } break; } + State = 1127; outputList(); } break; } @@ -5402,70 +5554,129 @@ public LockStmtContext lockStmt() { return _localctx; } - public partial class LsetStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); + public partial class PropertyGetStmtContext : ParserRuleContext { + public ArgListContext argList() { + return GetRuleContext(0); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public FunctionNameContext functionName() { + return GetRuleContext(0); + } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } + public TypeHintContext typeHint() { + return GetRuleContext(0); } - public ITerminalNode LSET() { return GetToken(VBAParser.LSET, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); + public AsTypeClauseContext asTypeClause() { + return GetRuleContext(0); } - public LsetStmtContext(ParserRuleContext parent, int invokingState) + public VisibilityContext visibility() { + return GetRuleContext(0); + } + public ITerminalNode PROPERTY_GET() { return GetToken(VBAParser.PROPERTY_GET, 0); } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); + } + public BlockContext block() { + return GetRuleContext(0); + } + public ITerminalNode END_PROPERTY() { return GetToken(VBAParser.END_PROPERTY, 0); } + public PropertyGetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_lsetStmt; } } + public override int RuleIndex { get { return RULE_propertyGetStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterLsetStmt(this); + if (typedListener != null) typedListener.EnterPropertyGetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitLsetStmt(this); + if (typedListener != null) typedListener.ExitPropertyGetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitLsetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitPropertyGetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public LsetStmtContext lsetStmt() { - LsetStmtContext _localctx = new LsetStmtContext(_ctx, State); - EnterRule(_localctx, 104, RULE_lsetStmt); + public PropertyGetStmtContext propertyGetStmt() { + PropertyGetStmtContext _localctx = new PropertyGetStmtContext(_ctx, State); + EnterRule(_localctx, 108, RULE_propertyGetStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1094; Match(LSET); - State = 1095; whiteSpace(); - State = 1096; implicitCallStmt_InStmt(); - State = 1098; + State = 1133; _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { + { + State = 1130; visibility(); + State = 1131; whiteSpace(); + } + } + + State = 1137; + _la = _input.La(1); + if (_la==STATIC) { + { + State = 1135; Match(STATIC); + State = 1136; whiteSpace(); + } + } + + State = 1139; Match(PROPERTY_GET); + State = 1140; whiteSpace(); + State = 1141; functionName(); + State = 1143; + switch ( Interpreter.AdaptivePredict(_input,142,_ctx) ) { + case 1: { - State = 1097; whiteSpace(); + State = 1142; typeHint(); } + break; } + State = 1149; + switch ( Interpreter.AdaptivePredict(_input,144,_ctx) ) { + case 1: + { + State = 1146; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1145; whiteSpace(); + } + } - State = 1100; Match(EQ); - State = 1102; - switch ( Interpreter.AdaptivePredict(_input,126,_ctx) ) { + State = 1148; argList(); + } + break; + } + State = 1154; + switch ( Interpreter.AdaptivePredict(_input,145,_ctx) ) { case 1: { - State = 1101; whiteSpace(); + State = 1151; whiteSpace(); + State = 1152; asTypeClause(); } break; } - State = 1104; valueStmt(0); + State = 1156; endOfStatement(); + State = 1158; + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_IF - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (LPAREN - 192)) | (1L << (MINUS - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (COLLECTION - 192)) | (1L << (DELETESETTING - 192)) | (1L << (LOAD - 192)) | (1L << (RMDIR - 192)) | (1L << (SENDKEYS - 192)) | (1L << (SETATTR - 192)) | (1L << (ENDIF - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + { + State = 1157; block(); + } + } + + State = 1160; Match(END_PROPERTY); } } catch (RecognitionException re) { @@ -5479,75 +5690,106 @@ public LsetStmtContext lsetStmt() { return _localctx; } - public partial class MidStmtContext : ParserRuleContext { + public partial class PropertySetStmtContext : ParserRuleContext { + public ArgListContext argList() { + return GetRuleContext(0); + } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } + public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ArgsCallContext argsCall() { - return GetRuleContext(0); + public SubroutineNameContext subroutineName() { + return GetRuleContext(0); } - public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } - public ITerminalNode MID() { return GetToken(VBAParser.MID, 0); } - public MidStmtContext(ParserRuleContext parent, int invokingState) + public VisibilityContext visibility() { + return GetRuleContext(0); + } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); + } + public BlockContext block() { + return GetRuleContext(0); + } + public ITerminalNode PROPERTY_SET() { return GetToken(VBAParser.PROPERTY_SET, 0); } + public ITerminalNode END_PROPERTY() { return GetToken(VBAParser.END_PROPERTY, 0); } + public PropertySetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_midStmt; } } + public override int RuleIndex { get { return RULE_propertySetStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterMidStmt(this); + if (typedListener != null) typedListener.EnterPropertySetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitMidStmt(this); + if (typedListener != null) typedListener.ExitPropertySetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitMidStmt(this); + if (typedVisitor != null) return typedVisitor.VisitPropertySetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public MidStmtContext midStmt() { - MidStmtContext _localctx = new MidStmtContext(_ctx, State); - EnterRule(_localctx, 106, RULE_midStmt); + public PropertySetStmtContext propertySetStmt() { + PropertySetStmtContext _localctx = new PropertySetStmtContext(_ctx, State); + EnterRule(_localctx, 110, RULE_propertySetStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1106; Match(MID); - State = 1108; + State = 1165; _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { + { + State = 1162; visibility(); + State = 1163; whiteSpace(); + } + } + + State = 1169; + _la = _input.La(1); + if (_la==STATIC) { { - State = 1107; whiteSpace(); + State = 1167; Match(STATIC); + State = 1168; whiteSpace(); } } - State = 1110; Match(LPAREN); - State = 1112; - switch ( Interpreter.AdaptivePredict(_input,128,_ctx) ) { + State = 1171; Match(PROPERTY_SET); + State = 1172; whiteSpace(); + State = 1173; subroutineName(); + State = 1178; + switch ( Interpreter.AdaptivePredict(_input,150,_ctx) ) { case 1: { - State = 1111; whiteSpace(); + State = 1175; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1174; whiteSpace(); + } + } + + State = 1177; argList(); } break; } - State = 1114; argsCall(); - State = 1116; + State = 1180; endOfStatement(); + State = 1182; _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_IF - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (LPAREN - 192)) | (1L << (MINUS - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (COLLECTION - 192)) | (1L << (DELETESETTING - 192)) | (1L << (LOAD - 192)) | (1L << (RMDIR - 192)) | (1L << (SENDKEYS - 192)) | (1L << (SETATTR - 192)) | (1L << (ENDIF - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { { - State = 1115; whiteSpace(); + State = 1181; block(); } } - State = 1118; Match(RPAREN); + State = 1184; Match(END_PROPERTY); } } catch (RecognitionException re) { @@ -5561,44 +5803,106 @@ public MidStmtContext midStmt() { return _localctx; } - public partial class MkdirStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class PropertyLetStmtContext : ParserRuleContext { + public ITerminalNode PROPERTY_LET() { return GetToken(VBAParser.PROPERTY_LET, 0); } + public ArgListContext argList() { + return GetRuleContext(0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public SubroutineNameContext subroutineName() { + return GetRuleContext(0); + } + public VisibilityContext visibility() { + return GetRuleContext(0); + } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); + } + public BlockContext block() { + return GetRuleContext(0); } - public ITerminalNode MKDIR() { return GetToken(VBAParser.MKDIR, 0); } - public MkdirStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode END_PROPERTY() { return GetToken(VBAParser.END_PROPERTY, 0); } + public PropertyLetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_mkdirStmt; } } + public override int RuleIndex { get { return RULE_propertyLetStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterMkdirStmt(this); + if (typedListener != null) typedListener.EnterPropertyLetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitMkdirStmt(this); + if (typedListener != null) typedListener.ExitPropertyLetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitMkdirStmt(this); + if (typedVisitor != null) return typedVisitor.VisitPropertyLetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public MkdirStmtContext mkdirStmt() { - MkdirStmtContext _localctx = new MkdirStmtContext(_ctx, State); - EnterRule(_localctx, 108, RULE_mkdirStmt); + public PropertyLetStmtContext propertyLetStmt() { + PropertyLetStmtContext _localctx = new PropertyLetStmtContext(_ctx, State); + EnterRule(_localctx, 112, RULE_propertyLetStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1120; Match(MKDIR); - State = 1121; whiteSpace(); - State = 1122; valueStmt(0); + State = 1189; + _la = _input.La(1); + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { + { + State = 1186; visibility(); + State = 1187; whiteSpace(); + } + } + + State = 1193; + _la = _input.La(1); + if (_la==STATIC) { + { + State = 1191; Match(STATIC); + State = 1192; whiteSpace(); + } + } + + State = 1195; Match(PROPERTY_LET); + State = 1196; whiteSpace(); + State = 1197; subroutineName(); + State = 1202; + switch ( Interpreter.AdaptivePredict(_input,155,_ctx) ) { + case 1: + { + State = 1199; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1198; whiteSpace(); + } + } + + State = 1201; argList(); + } + break; + } + State = 1204; endOfStatement(); + State = 1206; + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_IF - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (LPAREN - 192)) | (1L << (MINUS - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (COLLECTION - 192)) | (1L << (DELETESETTING - 192)) | (1L << (LOAD - 192)) | (1L << (RMDIR - 192)) | (1L << (SENDKEYS - 192)) | (1L << (SETATTR - 192)) | (1L << (ENDIF - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + { + State = 1205; block(); + } + } + + State = 1208; Match(END_PROPERTY); } } catch (RecognitionException re) { @@ -5612,55 +5916,101 @@ public MkdirStmtContext mkdirStmt() { return _localctx; } - public partial class NameStmtContext : ParserRuleContext { + public partial class PutStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode NAME() { return GetToken(VBAParser.NAME, 0); } public IReadOnlyList valueStmt() { return GetRuleContexts(); } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } + public FileNumberContext fileNumber() { + return GetRuleContext(0); + } + public ITerminalNode PUT() { return GetToken(VBAParser.PUT, 0); } + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); + } public ValueStmtContext valueStmt(int i) { return GetRuleContext(i); } - public ITerminalNode AS() { return GetToken(VBAParser.AS, 0); } - public NameStmtContext(ParserRuleContext parent, int invokingState) + public PutStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_nameStmt; } } + public override int RuleIndex { get { return RULE_putStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterNameStmt(this); + if (typedListener != null) typedListener.EnterPutStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitNameStmt(this); + if (typedListener != null) typedListener.ExitPutStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitNameStmt(this); + if (typedVisitor != null) return typedVisitor.VisitPutStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public NameStmtContext nameStmt() { - NameStmtContext _localctx = new NameStmtContext(_ctx, State); - EnterRule(_localctx, 110, RULE_nameStmt); + public PutStmtContext putStmt() { + PutStmtContext _localctx = new PutStmtContext(_ctx, State); + EnterRule(_localctx, 114, RULE_putStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1124; Match(NAME); - State = 1125; whiteSpace(); - State = 1126; valueStmt(0); - State = 1127; whiteSpace(); - State = 1128; Match(AS); - State = 1129; whiteSpace(); - State = 1130; valueStmt(0); + State = 1210; Match(PUT); + State = 1211; whiteSpace(); + State = 1212; fileNumber(); + State = 1214; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1213; whiteSpace(); + } + } + + State = 1216; Match(COMMA); + State = 1218; + switch ( Interpreter.AdaptivePredict(_input,158,_ctx) ) { + case 1: + { + State = 1217; whiteSpace(); + } + break; + } + State = 1221; + switch ( Interpreter.AdaptivePredict(_input,159,_ctx) ) { + case 1: + { + State = 1220; valueStmt(0); + } + break; + } + State = 1224; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1223; whiteSpace(); + } + } + + State = 1226; Match(COMMA); + State = 1228; + switch ( Interpreter.AdaptivePredict(_input,161,_ctx) ) { + case 1: + { + State = 1227; whiteSpace(); + } + break; + } + State = 1230; valueStmt(0); } } catch (RecognitionException re) { @@ -5674,174 +6024,93 @@ public NameStmtContext nameStmt() { return _localctx; } - public partial class OnErrorStmtContext : ParserRuleContext { - public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } + public partial class RaiseEventStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode ON_ERROR() { return GetToken(VBAParser.ON_ERROR, 0); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public ITerminalNode RESUME() { return GetToken(VBAParser.RESUME, 0); } - public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } + public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } + public ITerminalNode RAISEEVENT() { return GetToken(VBAParser.RAISEEVENT, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode ON_LOCAL_ERROR() { return GetToken(VBAParser.ON_LOCAL_ERROR, 0); } - public OnErrorStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } + public ArgsCallContext argsCall() { + return GetRuleContext(0); + } + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public RaiseEventStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_onErrorStmt; } } + public override int RuleIndex { get { return RULE_raiseEventStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterOnErrorStmt(this); + if (typedListener != null) typedListener.EnterRaiseEventStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitOnErrorStmt(this); + if (typedListener != null) typedListener.ExitRaiseEventStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitOnErrorStmt(this); + if (typedVisitor != null) return typedVisitor.VisitRaiseEventStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public OnErrorStmtContext onErrorStmt() { - OnErrorStmtContext _localctx = new OnErrorStmtContext(_ctx, State); - EnterRule(_localctx, 112, RULE_onErrorStmt); + public RaiseEventStmtContext raiseEventStmt() { + RaiseEventStmtContext _localctx = new RaiseEventStmtContext(_ctx, State); + EnterRule(_localctx, 116, RULE_raiseEventStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1132; - _la = _input.La(1); - if ( !(_la==ON_ERROR || _la==ON_LOCAL_ERROR) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 1133; whiteSpace(); - State = 1142; - switch (_input.La(1)) { - case GOTO: - { - State = 1134; Match(GOTO); - State = 1135; whiteSpace(); - State = 1136; valueStmt(0); - } - break; - case RESUME: + State = 1232; Match(RAISEEVENT); + State = 1233; whiteSpace(); + State = 1234; identifier(); + State = 1249; + switch ( Interpreter.AdaptivePredict(_input,166,_ctx) ) { + case 1: { - State = 1138; Match(RESUME); - State = 1139; whiteSpace(); - State = 1140; Match(NEXT); + State = 1236; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1235; whiteSpace(); + } } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class OnGoToStmtContext : ParserRuleContext { - public ITerminalNode ON() { return GetToken(VBAParser.ON, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); - } - public OnGoToStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_onGoToStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterOnGoToStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitOnGoToStmt(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitOnGoToStmt(this); - else return visitor.VisitChildren(this); - } - } - [RuleVersion(0)] - public OnGoToStmtContext onGoToStmt() { - OnGoToStmtContext _localctx = new OnGoToStmtContext(_ctx, State); - EnterRule(_localctx, 114, RULE_onGoToStmt); - int _la; - try { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 1144; Match(ON); - State = 1145; whiteSpace(); - State = 1146; valueStmt(0); - State = 1147; whiteSpace(); - State = 1148; Match(GOTO); - State = 1149; whiteSpace(); - State = 1150; valueStmt(0); - State = 1161; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,133,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { + State = 1238; Match(LPAREN); + State = 1240; + switch ( Interpreter.AdaptivePredict(_input,163,_ctx) ) { + case 1: { + State = 1239; whiteSpace(); + } + break; + } + State = 1246; + switch ( Interpreter.AdaptivePredict(_input,165,_ctx) ) { + case 1: { - State = 1152; + State = 1242; argsCall(); + State = 1244; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1151; whiteSpace(); + State = 1243; whiteSpace(); } } - State = 1154; Match(COMMA); - State = 1156; - switch ( Interpreter.AdaptivePredict(_input,132,_ctx) ) { - case 1: - { - State = 1155; whiteSpace(); - } - break; - } - State = 1158; valueStmt(0); } - } + break; } - State = 1163; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,133,_ctx); + State = 1248; Match(RPAREN); + } + break; } } } @@ -5856,92 +6125,97 @@ public OnGoToStmtContext onGoToStmt() { return _localctx; } - public partial class OnGoSubStmtContext : ParserRuleContext { - public ITerminalNode ON() { return GetToken(VBAParser.ON, 0); } - public ITerminalNode GOSUB() { return GetToken(VBAParser.GOSUB, 0); } + public partial class RedimStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); + public IReadOnlyList redimSubStmt() { + return GetRuleContexts(); } public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public ITerminalNode REDIM() { return GetToken(VBAParser.REDIM, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } + public ITerminalNode PRESERVE() { return GetToken(VBAParser.PRESERVE, 0); } public ITerminalNode COMMA(int i) { return GetToken(VBAParser.COMMA, i); } - public OnGoSubStmtContext(ParserRuleContext parent, int invokingState) + public RedimSubStmtContext redimSubStmt(int i) { + return GetRuleContext(i); + } + public RedimStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_onGoSubStmt; } } + public override int RuleIndex { get { return RULE_redimStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterOnGoSubStmt(this); + if (typedListener != null) typedListener.EnterRedimStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitOnGoSubStmt(this); + if (typedListener != null) typedListener.ExitRedimStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitOnGoSubStmt(this); + if (typedVisitor != null) return typedVisitor.VisitRedimStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public OnGoSubStmtContext onGoSubStmt() { - OnGoSubStmtContext _localctx = new OnGoSubStmtContext(_ctx, State); - EnterRule(_localctx, 116, RULE_onGoSubStmt); + public RedimStmtContext redimStmt() { + RedimStmtContext _localctx = new RedimStmtContext(_ctx, State); + EnterRule(_localctx, 118, RULE_redimStmt); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1164; Match(ON); - State = 1165; whiteSpace(); - State = 1166; valueStmt(0); - State = 1167; whiteSpace(); - State = 1168; Match(GOSUB); - State = 1169; whiteSpace(); - State = 1170; valueStmt(0); - State = 1181; + State = 1251; Match(REDIM); + State = 1252; whiteSpace(); + State = 1255; + switch ( Interpreter.AdaptivePredict(_input,167,_ctx) ) { + case 1: + { + State = 1253; Match(PRESERVE); + State = 1254; whiteSpace(); + } + break; + } + State = 1257; redimSubStmt(); + State = 1268; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,136,_ctx); + _alt = Interpreter.AdaptivePredict(_input,170,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 1172; + State = 1259; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1171; whiteSpace(); + State = 1258; whiteSpace(); } } - State = 1174; Match(COMMA); - State = 1176; - switch ( Interpreter.AdaptivePredict(_input,135,_ctx) ) { + State = 1261; Match(COMMA); + State = 1263; + switch ( Interpreter.AdaptivePredict(_input,169,_ctx) ) { case 1: { - State = 1175; whiteSpace(); + State = 1262; whiteSpace(); } break; } - State = 1178; valueStmt(0); + State = 1265; redimSubStmt(); } } } - State = 1183; + State = 1270; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,136,_ctx); + _alt = Interpreter.AdaptivePredict(_input,170,_ctx); } } } @@ -5956,138 +6230,86 @@ public OnGoSubStmtContext onGoSubStmt() { return _localctx; } - public partial class OpenStmtContext : ParserRuleContext { - public ITerminalNode LOCK_WRITE() { return GetToken(VBAParser.LOCK_WRITE, 0); } - public ITerminalNode ACCESS() { return GetToken(VBAParser.ACCESS, 0); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); + public partial class RedimSubStmtContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public ITerminalNode LOCK_READ_WRITE() { return GetToken(VBAParser.LOCK_READ_WRITE, 0); } - public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } - public ITerminalNode WRITE() { return GetToken(VBAParser.WRITE, 0); } + public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode LEN() { return GetToken(VBAParser.LEN, 0); } - public FileNumberContext fileNumber() { - return GetRuleContext(0); + public AsTypeClauseContext asTypeClause() { + return GetRuleContext(0); } - public ITerminalNode INPUT() { return GetToken(VBAParser.INPUT, 0); } - public ITerminalNode READ() { return GetToken(VBAParser.READ, 0); } - public ITerminalNode SHARED() { return GetToken(VBAParser.SHARED, 0); } - public ITerminalNode AS() { return GetToken(VBAParser.AS, 0); } - public ITerminalNode APPEND() { return GetToken(VBAParser.APPEND, 0); } - public ITerminalNode BINARY() { return GetToken(VBAParser.BINARY, 0); } - public ITerminalNode RANDOM() { return GetToken(VBAParser.RANDOM, 0); } - public ITerminalNode OPEN() { return GetToken(VBAParser.OPEN, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); + public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } + public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { + return GetRuleContext(0); } - public ITerminalNode LOCK_READ() { return GetToken(VBAParser.LOCK_READ, 0); } - public ITerminalNode OUTPUT() { return GetToken(VBAParser.OUTPUT, 0); } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ITerminalNode READ_WRITE() { return GetToken(VBAParser.READ_WRITE, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public SubscriptsContext subscripts() { + return GetRuleContext(0); } - public OpenStmtContext(ParserRuleContext parent, int invokingState) + public RedimSubStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_openStmt; } } + public override int RuleIndex { get { return RULE_redimSubStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterOpenStmt(this); + if (typedListener != null) typedListener.EnterRedimSubStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitOpenStmt(this); + if (typedListener != null) typedListener.ExitRedimSubStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitOpenStmt(this); + if (typedVisitor != null) return typedVisitor.VisitRedimSubStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public OpenStmtContext openStmt() { - OpenStmtContext _localctx = new OpenStmtContext(_ctx, State); - EnterRule(_localctx, 118, RULE_openStmt); + public RedimSubStmtContext redimSubStmt() { + RedimSubStmtContext _localctx = new RedimSubStmtContext(_ctx, State); + EnterRule(_localctx, 120, RULE_redimSubStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1184; Match(OPEN); - State = 1185; whiteSpace(); - State = 1186; valueStmt(0); - State = 1187; whiteSpace(); - State = 1188; Match(FOR); - State = 1189; whiteSpace(); - State = 1190; + State = 1271; implicitCallStmt_InStmt(); + State = 1273; _la = _input.La(1); - if ( !(_la==APPEND || _la==BINARY || ((((_la - 127)) & ~0x3f) == 0 && ((1L << (_la - 127)) & ((1L << (INPUT - 127)) | (1L << (OUTPUT - 127)) | (1L << (RANDOM - 127)))) != 0)) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 1196; - switch ( Interpreter.AdaptivePredict(_input,137,_ctx) ) { - case 1: + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1191; whiteSpace(); - State = 1192; Match(ACCESS); - State = 1193; whiteSpace(); - State = 1194; - _la = _input.La(1); - if ( !(((((_la - 177)) & ~0x3f) == 0 && ((1L << (_la - 177)) & ((1L << (READ - 177)) | (1L << (READ_WRITE - 177)) | (1L << (WRITE - 177)))) != 0)) ) { - _errHandler.RecoverInline(this); - } - Consume(); + State = 1272; whiteSpace(); } - break; } - State = 1201; - switch ( Interpreter.AdaptivePredict(_input,138,_ctx) ) { + + State = 1275; Match(LPAREN); + State = 1277; + switch ( Interpreter.AdaptivePredict(_input,172,_ctx) ) { case 1: { - State = 1198; whiteSpace(); - State = 1199; - _la = _input.La(1); - if ( !(((((_la - 139)) & ~0x3f) == 0 && ((1L << (_la - 139)) & ((1L << (LOCK_READ - 139)) | (1L << (LOCK_WRITE - 139)) | (1L << (LOCK_READ_WRITE - 139)) | (1L << (SHARED - 139)))) != 0)) ) { - _errHandler.RecoverInline(this); - } - Consume(); + State = 1276; whiteSpace(); } break; } - State = 1203; whiteSpace(); - State = 1204; Match(AS); - State = 1205; whiteSpace(); - State = 1206; fileNumber(); - State = 1218; - switch ( Interpreter.AdaptivePredict(_input,141,_ctx) ) { - case 1: + State = 1279; subscripts(); + State = 1281; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1207; whiteSpace(); - State = 1208; Match(LEN); - State = 1210; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1209; whiteSpace(); - } + State = 1280; whiteSpace(); } + } - State = 1212; Match(EQ); - State = 1214; - switch ( Interpreter.AdaptivePredict(_input,140,_ctx) ) { - case 1: - { - State = 1213; whiteSpace(); - } - break; - } - State = 1216; valueStmt(0); + State = 1283; Match(RPAREN); + State = 1287; + switch ( Interpreter.AdaptivePredict(_input,174,_ctx) ) { + case 1: + { + State = 1284; whiteSpace(); + State = 1285; asTypeClause(); } break; } @@ -6104,168 +6326,36 @@ public OpenStmtContext openStmt() { return _localctx; } - public partial class OutputListContext : ParserRuleContext { - public IReadOnlyList SEMICOLON() { return GetTokens(VBAParser.SEMICOLON); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public ITerminalNode SEMICOLON(int i) { - return GetToken(VBAParser.SEMICOLON, i); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public IReadOnlyList outputList_Expression() { - return GetRuleContexts(); - } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); - } - public OutputList_ExpressionContext outputList_Expression(int i) { - return GetRuleContext(i); - } - public OutputListContext(ParserRuleContext parent, int invokingState) + public partial class ResetStmtContext : ParserRuleContext { + public ITerminalNode RESET() { return GetToken(VBAParser.RESET, 0); } + public ResetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_outputList; } } + public override int RuleIndex { get { return RULE_resetStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterOutputList(this); + if (typedListener != null) typedListener.EnterResetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitOutputList(this); + if (typedListener != null) typedListener.ExitResetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitOutputList(this); + if (typedVisitor != null) return typedVisitor.VisitResetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public OutputListContext outputList() { - OutputListContext _localctx = new OutputListContext(_ctx, State); - EnterRule(_localctx, 120, RULE_outputList); - int _la; + public ResetStmtContext resetStmt() { + ResetStmtContext _localctx = new ResetStmtContext(_ctx, State); + EnterRule(_localctx, 122, RULE_resetStmt); try { - int _alt; - State = 1253; - switch ( Interpreter.AdaptivePredict(_input,151,_ctx) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 1220; outputList_Expression(); - State = 1233; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,145,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 1222; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1221; whiteSpace(); - } - } - - State = 1224; - _la = _input.La(1); - if ( !(_la==COMMA || _la==SEMICOLON) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 1226; - switch ( Interpreter.AdaptivePredict(_input,143,_ctx) ) { - case 1: - { - State = 1225; whiteSpace(); - } - break; - } - State = 1229; - switch ( Interpreter.AdaptivePredict(_input,144,_ctx) ) { - case 1: - { - State = 1228; outputList_Expression(); - } - break; - } - } - } - } - State = 1235; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,145,_ctx); - } - } - break; - - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 1237; - switch ( Interpreter.AdaptivePredict(_input,146,_ctx) ) { - case 1: - { - State = 1236; outputList_Expression(); - } - break; - } - State = 1249; - _errHandler.Sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - State = 1240; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1239; whiteSpace(); - } - } - - State = 1242; - _la = _input.La(1); - if ( !(_la==COMMA || _la==SEMICOLON) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 1244; - switch ( Interpreter.AdaptivePredict(_input,148,_ctx) ) { - case 1: - { - State = 1243; whiteSpace(); - } - break; - } - State = 1247; - switch ( Interpreter.AdaptivePredict(_input,149,_ctx) ) { - case 1: - { - State = 1246; outputList_Expression(); - } - break; - } - } - } - break; - default: - throw new NoViableAltException(this); - } - State = 1251; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,150,_ctx); - } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - } - break; + EnterOuterAlt(_localctx, 1); + { + State = 1289; Match(RESET); } } catch (RecognitionException re) { @@ -6279,104 +6369,66 @@ public OutputListContext outputList() { return _localctx; } - public partial class OutputList_ExpressionContext : ParserRuleContext { - public ITerminalNode TAB() { return GetToken(VBAParser.TAB, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } + public partial class ResumeStmtContext : ParserRuleContext { + public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } public ValueStmtContext valueStmt() { return GetRuleContext(0); } - public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } - public ITerminalNode SPC() { return GetToken(VBAParser.SPC, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ArgsCallContext argsCall() { - return GetRuleContext(0); + public ITerminalNode RESUME() { return GetToken(VBAParser.RESUME, 0); } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } - public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } - public OutputList_ExpressionContext(ParserRuleContext parent, int invokingState) + public ResumeStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_outputList_Expression; } } + public override int RuleIndex { get { return RULE_resumeStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterOutputList_Expression(this); + if (typedListener != null) typedListener.EnterResumeStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitOutputList_Expression(this); + if (typedListener != null) typedListener.ExitResumeStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitOutputList_Expression(this); + if (typedVisitor != null) return typedVisitor.VisitResumeStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public OutputList_ExpressionContext outputList_Expression() { - OutputList_ExpressionContext _localctx = new OutputList_ExpressionContext(_ctx, State); - EnterRule(_localctx, 122, RULE_outputList_Expression); - int _la; + public ResumeStmtContext resumeStmt() { + ResumeStmtContext _localctx = new ResumeStmtContext(_ctx, State); + EnterRule(_localctx, 124, RULE_resumeStmt); try { - State = 1272; - switch ( Interpreter.AdaptivePredict(_input,156,_ctx) ) { + EnterOuterAlt(_localctx, 1); + { + State = 1291; Match(RESUME); + State = 1297; + switch ( Interpreter.AdaptivePredict(_input,176,_ctx) ) { case 1: - EnterOuterAlt(_localctx, 1); - { - State = 1255; valueStmt(0); - } - break; - - case 2: - EnterOuterAlt(_localctx, 2); { - State = 1256; - _la = _input.La(1); - if ( !(_la==SPC || _la==TAB) ) { - _errHandler.RecoverInline(this); - } - Consume(); - State = 1270; - switch ( Interpreter.AdaptivePredict(_input,155,_ctx) ) { + State = 1292; whiteSpace(); + State = 1295; + switch ( Interpreter.AdaptivePredict(_input,175,_ctx) ) { case 1: { - State = 1258; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1257; whiteSpace(); - } - } - - State = 1260; Match(LPAREN); - State = 1262; - switch ( Interpreter.AdaptivePredict(_input,153,_ctx) ) { - case 1: - { - State = 1261; whiteSpace(); - } - break; - } - State = 1264; argsCall(); - State = 1266; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1265; whiteSpace(); - } + State = 1293; Match(NEXT); } + break; - State = 1268; Match(RPAREN); + case 2: + { + State = 1294; valueStmt(0); } break; } } break; } + } } catch (RecognitionException re) { _localctx.exception = re; @@ -6389,77 +6441,36 @@ public OutputList_ExpressionContext outputList_Expression() { return _localctx; } - public partial class PrintStmtContext : ParserRuleContext { - public ITerminalNode PRINT() { return GetToken(VBAParser.PRINT, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } - public OutputListContext outputList() { - return GetRuleContext(0); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public FileNumberContext fileNumber() { - return GetRuleContext(0); - } - public PrintStmtContext(ParserRuleContext parent, int invokingState) + public partial class ReturnStmtContext : ParserRuleContext { + public ITerminalNode RETURN() { return GetToken(VBAParser.RETURN, 0); } + public ReturnStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_printStmt; } } + public override int RuleIndex { get { return RULE_returnStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterPrintStmt(this); + if (typedListener != null) typedListener.EnterReturnStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitPrintStmt(this); + if (typedListener != null) typedListener.ExitReturnStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitPrintStmt(this); + if (typedVisitor != null) return typedVisitor.VisitReturnStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public PrintStmtContext printStmt() { - PrintStmtContext _localctx = new PrintStmtContext(_ctx, State); - EnterRule(_localctx, 124, RULE_printStmt); - int _la; + public ReturnStmtContext returnStmt() { + ReturnStmtContext _localctx = new ReturnStmtContext(_ctx, State); + EnterRule(_localctx, 126, RULE_returnStmt); try { EnterOuterAlt(_localctx, 1); { - State = 1274; Match(PRINT); - State = 1275; whiteSpace(); - State = 1276; fileNumber(); - State = 1278; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1277; whiteSpace(); - } - } - - State = 1280; Match(COMMA); - State = 1285; - switch ( Interpreter.AdaptivePredict(_input,159,_ctx) ) { - case 1: - { - State = 1282; - switch ( Interpreter.AdaptivePredict(_input,158,_ctx) ) { - case 1: - { - State = 1281; whiteSpace(); - } - break; - } - State = 1284; outputList(); - } - break; - } + State = 1299; Match(RETURN); } } catch (RecognitionException re) { @@ -6473,129 +6484,70 @@ public PrintStmtContext printStmt() { return _localctx; } - public partial class PropertyGetStmtContext : ParserRuleContext { - public ArgListContext argList() { - return GetRuleContext(0); - } + public partial class RsetStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } - public TypeHintContext typeHint() { - return GetRuleContext(0); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } + public ITerminalNode RSET() { return GetToken(VBAParser.RSET, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public AsTypeClauseContext asTypeClause() { - return GetRuleContext(0); - } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public VisibilityContext visibility() { - return GetRuleContext(0); - } - public ITerminalNode PROPERTY_GET() { return GetToken(VBAParser.PROPERTY_GET, 0); } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public BlockContext block() { - return GetRuleContext(0); + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public ITerminalNode END_PROPERTY() { return GetToken(VBAParser.END_PROPERTY, 0); } - public PropertyGetStmtContext(ParserRuleContext parent, int invokingState) + public RsetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_propertyGetStmt; } } + public override int RuleIndex { get { return RULE_rsetStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterPropertyGetStmt(this); + if (typedListener != null) typedListener.EnterRsetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitPropertyGetStmt(this); + if (typedListener != null) typedListener.ExitRsetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitPropertyGetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitRsetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public PropertyGetStmtContext propertyGetStmt() { - PropertyGetStmtContext _localctx = new PropertyGetStmtContext(_ctx, State); - EnterRule(_localctx, 126, RULE_propertyGetStmt); + public RsetStmtContext rsetStmt() { + RsetStmtContext _localctx = new RsetStmtContext(_ctx, State); + EnterRule(_localctx, 128, RULE_rsetStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1290; + State = 1301; Match(RSET); + State = 1302; whiteSpace(); + State = 1303; valueStmt(0); + State = 1305; _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1287; visibility(); - State = 1288; whiteSpace(); + State = 1304; whiteSpace(); } } - State = 1294; - _la = _input.La(1); - if (_la==STATIC) { - { - State = 1292; Match(STATIC); - State = 1293; whiteSpace(); - } - } - - State = 1296; Match(PROPERTY_GET); - State = 1297; whiteSpace(); - State = 1298; identifier(); - State = 1300; - switch ( Interpreter.AdaptivePredict(_input,162,_ctx) ) { - case 1: - { - State = 1299; typeHint(); - } - break; - } - State = 1306; - switch ( Interpreter.AdaptivePredict(_input,164,_ctx) ) { - case 1: - { - State = 1303; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1302; whiteSpace(); - } - } - - State = 1305; argList(); - } - break; - } - State = 1311; - switch ( Interpreter.AdaptivePredict(_input,165,_ctx) ) { - case 1: + State = 1307; Match(EQ); + State = 1309; + switch ( Interpreter.AdaptivePredict(_input,178,_ctx) ) { + case 1: { State = 1308; whiteSpace(); - State = 1309; asTypeClause(); } break; } - State = 1313; endOfStatement(); - State = 1315; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==LINE_CONTINUATION || _la==COLLECTION) { - { - State = 1314; block(); - } - } - - State = 1317; Match(END_PROPERTY); + State = 1311; valueStmt(0); } } catch (RecognitionException re) { @@ -6609,106 +6561,36 @@ public PropertyGetStmtContext propertyGetStmt() { return _localctx; } - public partial class PropertySetStmtContext : ParserRuleContext { - public ArgListContext argList() { - return GetRuleContext(0); - } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public VisibilityContext visibility() { - return GetRuleContext(0); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public BlockContext block() { - return GetRuleContext(0); - } - public ITerminalNode PROPERTY_SET() { return GetToken(VBAParser.PROPERTY_SET, 0); } - public ITerminalNode END_PROPERTY() { return GetToken(VBAParser.END_PROPERTY, 0); } - public PropertySetStmtContext(ParserRuleContext parent, int invokingState) + public partial class StopStmtContext : ParserRuleContext { + public ITerminalNode STOP() { return GetToken(VBAParser.STOP, 0); } + public StopStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_propertySetStmt; } } + public override int RuleIndex { get { return RULE_stopStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterPropertySetStmt(this); + if (typedListener != null) typedListener.EnterStopStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitPropertySetStmt(this); + if (typedListener != null) typedListener.ExitStopStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitPropertySetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitStopStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public PropertySetStmtContext propertySetStmt() { - PropertySetStmtContext _localctx = new PropertySetStmtContext(_ctx, State); - EnterRule(_localctx, 128, RULE_propertySetStmt); - int _la; + public StopStmtContext stopStmt() { + StopStmtContext _localctx = new StopStmtContext(_ctx, State); + EnterRule(_localctx, 130, RULE_stopStmt); try { EnterOuterAlt(_localctx, 1); { - State = 1322; - _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { - { - State = 1319; visibility(); - State = 1320; whiteSpace(); - } - } - - State = 1326; - _la = _input.La(1); - if (_la==STATIC) { - { - State = 1324; Match(STATIC); - State = 1325; whiteSpace(); - } - } - - State = 1328; Match(PROPERTY_SET); - State = 1329; whiteSpace(); - State = 1330; identifier(); - State = 1335; - switch ( Interpreter.AdaptivePredict(_input,170,_ctx) ) { - case 1: - { - State = 1332; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1331; whiteSpace(); - } - } - - State = 1334; argList(); - } - break; - } - State = 1337; endOfStatement(); - State = 1339; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==LINE_CONTINUATION || _la==COLLECTION) { - { - State = 1338; block(); - } - } - - State = 1341; Match(END_PROPERTY); + State = 1313; Match(STOP); } } catch (RecognitionException re) { @@ -6722,106 +6604,70 @@ public PropertySetStmtContext propertySetStmt() { return _localctx; } - public partial class PropertyLetStmtContext : ParserRuleContext { - public ITerminalNode PROPERTY_LET() { return GetToken(VBAParser.PROPERTY_LET, 0); } - public ArgListContext argList() { - return GetRuleContext(0); - } + public partial class SeekStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public VisibilityContext visibility() { - return GetRuleContext(0); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public BlockContext block() { - return GetRuleContext(0); + public FileNumberContext fileNumber() { + return GetRuleContext(0); } - public ITerminalNode END_PROPERTY() { return GetToken(VBAParser.END_PROPERTY, 0); } - public PropertyLetStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode SEEK() { return GetToken(VBAParser.SEEK, 0); } + public SeekStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_propertyLetStmt; } } + public override int RuleIndex { get { return RULE_seekStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterPropertyLetStmt(this); + if (typedListener != null) typedListener.EnterSeekStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitPropertyLetStmt(this); + if (typedListener != null) typedListener.ExitSeekStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitPropertyLetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitSeekStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public PropertyLetStmtContext propertyLetStmt() { - PropertyLetStmtContext _localctx = new PropertyLetStmtContext(_ctx, State); - EnterRule(_localctx, 130, RULE_propertyLetStmt); + public SeekStmtContext seekStmt() { + SeekStmtContext _localctx = new SeekStmtContext(_ctx, State); + EnterRule(_localctx, 132, RULE_seekStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1346; - _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { - { - State = 1343; visibility(); - State = 1344; whiteSpace(); - } - } - - State = 1350; + State = 1315; Match(SEEK); + State = 1316; whiteSpace(); + State = 1317; fileNumber(); + State = 1319; _la = _input.La(1); - if (_la==STATIC) { + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1348; Match(STATIC); - State = 1349; whiteSpace(); + State = 1318; whiteSpace(); } } - State = 1352; Match(PROPERTY_LET); - State = 1353; whiteSpace(); - State = 1354; identifier(); - State = 1359; - switch ( Interpreter.AdaptivePredict(_input,175,_ctx) ) { + State = 1321; Match(COMMA); + State = 1323; + switch ( Interpreter.AdaptivePredict(_input,180,_ctx) ) { case 1: { - State = 1356; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1355; whiteSpace(); - } - } - - State = 1358; argList(); + State = 1322; whiteSpace(); } break; } - State = 1361; endOfStatement(); - State = 1363; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==LINE_CONTINUATION || _la==COLLECTION) { - { - State = 1362; block(); - } - } - - State = 1365; Match(END_PROPERTY); + State = 1325; valueStmt(0); } } catch (RecognitionException re) { @@ -6835,101 +6681,76 @@ public PropertyLetStmtContext propertyLetStmt() { return _localctx; } - public partial class PutStmtContext : ParserRuleContext { + public partial class SelectCaseStmtContext : ParserRuleContext { + public ITerminalNode CASE() { return GetToken(VBAParser.CASE, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); + public ITerminalNode END_SELECT() { return GetToken(VBAParser.END_SELECT, 0); } + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public FileNumberContext fileNumber() { - return GetRuleContext(0); + public ITerminalNode SELECT() { return GetToken(VBAParser.SELECT, 0); } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); } - public ITerminalNode PUT() { return GetToken(VBAParser.PUT, 0); } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); + public SC_CaseContext sC_Case(int i) { + return GetRuleContext(i); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); + public IReadOnlyList sC_Case() { + return GetRuleContexts(); } - public PutStmtContext(ParserRuleContext parent, int invokingState) + public SelectCaseStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_putStmt; } } + public override int RuleIndex { get { return RULE_selectCaseStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterPutStmt(this); + if (typedListener != null) typedListener.EnterSelectCaseStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitPutStmt(this); + if (typedListener != null) typedListener.ExitSelectCaseStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitPutStmt(this); + if (typedVisitor != null) return typedVisitor.VisitSelectCaseStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public PutStmtContext putStmt() { - PutStmtContext _localctx = new PutStmtContext(_ctx, State); - EnterRule(_localctx, 132, RULE_putStmt); + public SelectCaseStmtContext selectCaseStmt() { + SelectCaseStmtContext _localctx = new SelectCaseStmtContext(_ctx, State); + EnterRule(_localctx, 134, RULE_selectCaseStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1367; Match(PUT); - State = 1368; whiteSpace(); - State = 1369; fileNumber(); - State = 1371; + State = 1327; Match(SELECT); + State = 1328; whiteSpace(); + State = 1329; Match(CASE); + State = 1330; whiteSpace(); + State = 1331; valueStmt(0); + State = 1332; endOfStatement(); + State = 1336; + _errHandler.Sync(this); _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1370; whiteSpace(); - } - } - - State = 1373; Match(COMMA); - State = 1375; - switch ( Interpreter.AdaptivePredict(_input,178,_ctx) ) { - case 1: - { - State = 1374; whiteSpace(); - } - break; - } - State = 1378; - switch ( Interpreter.AdaptivePredict(_input,179,_ctx) ) { - case 1: + while (_la==CASE) { { - State = 1377; valueStmt(0); - } - break; - } - State = 1381; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1380; whiteSpace(); + State = 1333; sC_Case(); } - } - - State = 1383; Match(COMMA); - State = 1385; - switch ( Interpreter.AdaptivePredict(_input,181,_ctx) ) { - case 1: - { - State = 1384; whiteSpace(); } - break; + State = 1338; + _errHandler.Sync(this); + _la = _input.La(1); } - State = 1387; valueStmt(0); + State = 1339; Match(END_SELECT); } } catch (RecognitionException re) { @@ -6943,95 +6764,150 @@ public PutStmtContext putStmt() { return _localctx; } - public partial class RaiseEventStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } - public ITerminalNode RAISEEVENT() { return GetToken(VBAParser.RAISEEVENT, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } - public ArgsCallContext argsCall() { - return GetRuleContext(0); - } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public RaiseEventStmtContext(ParserRuleContext parent, int invokingState) + public partial class SC_SelectionContext : ParserRuleContext { + public SC_SelectionContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_raiseEventStmt; } } + public override int RuleIndex { get { return RULE_sC_Selection; } } + + public SC_SelectionContext() { } + public virtual void CopyFrom(SC_SelectionContext context) { + base.CopyFrom(context); + } + } + public partial class CaseCondValueContext : SC_SelectionContext { + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public CaseCondValueContext(SC_SelectionContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterRaiseEventStmt(this); + if (typedListener != null) typedListener.EnterCaseCondValue(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitRaiseEventStmt(this); + if (typedListener != null) typedListener.ExitCaseCondValue(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitRaiseEventStmt(this); + if (typedVisitor != null) return typedVisitor.VisitCaseCondValue(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public RaiseEventStmtContext raiseEventStmt() { - RaiseEventStmtContext _localctx = new RaiseEventStmtContext(_ctx, State); - EnterRule(_localctx, 134, RULE_raiseEventStmt); + public partial class CaseCondToContext : SC_SelectionContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public CaseCondToContext(SC_SelectionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterCaseCondTo(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitCaseCondTo(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCaseCondTo(this); + else return visitor.VisitChildren(this); + } + } + public partial class CaseCondIsContext : SC_SelectionContext { + public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public ComparisonOperatorContext comparisonOperator() { + return GetRuleContext(0); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public CaseCondIsContext(SC_SelectionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterCaseCondIs(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitCaseCondIs(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCaseCondIs(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SC_SelectionContext sC_Selection() { + SC_SelectionContext _localctx = new SC_SelectionContext(_ctx, State); + EnterRule(_localctx, 136, RULE_sC_Selection); int _la; try { - EnterOuterAlt(_localctx, 1); - { - State = 1389; Match(RAISEEVENT); - State = 1390; whiteSpace(); - State = 1391; identifier(); - State = 1406; - switch ( Interpreter.AdaptivePredict(_input,186,_ctx) ) { + State = 1358; + switch ( Interpreter.AdaptivePredict(_input,184,_ctx) ) { case 1: + _localctx = new CaseCondIsContext(_localctx); + EnterOuterAlt(_localctx, 1); { - State = 1393; + State = 1341; Match(IS); + State = 1343; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1392; whiteSpace(); + State = 1342; whiteSpace(); } } - State = 1395; Match(LPAREN); - State = 1397; + State = 1345; comparisonOperator(); + State = 1347; switch ( Interpreter.AdaptivePredict(_input,183,_ctx) ) { case 1: { - State = 1396; whiteSpace(); + State = 1346; whiteSpace(); } break; } - State = 1403; - switch ( Interpreter.AdaptivePredict(_input,185,_ctx) ) { - case 1: - { - State = 1399; argsCall(); - State = 1401; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1400; whiteSpace(); - } - } + State = 1349; valueStmt(0); + } + break; - } - break; + case 2: + _localctx = new CaseCondToContext(_localctx); + EnterOuterAlt(_localctx, 2); + { + State = 1351; valueStmt(0); + State = 1352; whiteSpace(); + State = 1353; Match(TO); + State = 1354; whiteSpace(); + State = 1355; valueStmt(0); } - State = 1405; Match(RPAREN); + break; + + case 3: + _localctx = new CaseCondValueContext(_localctx); + EnterOuterAlt(_localctx, 3); + { + State = 1357; valueStmt(0); } break; } - } } catch (RecognitionException re) { _localctx.exception = re; @@ -7044,48 +6920,56 @@ public RaiseEventStmtContext raiseEventStmt() { return _localctx; } - public partial class RandomizeStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } + public partial class SC_CaseContext : ParserRuleContext { + public ITerminalNode CASE() { return GetToken(VBAParser.CASE, 0); } public WhiteSpaceContext whiteSpace() { return GetRuleContext(0); } - public ITerminalNode RANDOMIZE() { return GetToken(VBAParser.RANDOMIZE, 0); } - public RandomizeStmtContext(ParserRuleContext parent, int invokingState) + public SC_CondContext sC_Cond() { + return GetRuleContext(0); + } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); + } + public BlockContext block() { + return GetRuleContext(0); + } + public SC_CaseContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_randomizeStmt; } } + public override int RuleIndex { get { return RULE_sC_Case; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterRandomizeStmt(this); + if (typedListener != null) typedListener.EnterSC_Case(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitRandomizeStmt(this); + if (typedListener != null) typedListener.ExitSC_Case(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitRandomizeStmt(this); + if (typedVisitor != null) return typedVisitor.VisitSC_Case(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public RandomizeStmtContext randomizeStmt() { - RandomizeStmtContext _localctx = new RandomizeStmtContext(_ctx, State); - EnterRule(_localctx, 136, RULE_randomizeStmt); + public SC_CaseContext sC_Case() { + SC_CaseContext _localctx = new SC_CaseContext(_ctx, State); + EnterRule(_localctx, 138, RULE_sC_Case); try { EnterOuterAlt(_localctx, 1); { - State = 1408; Match(RANDOMIZE); - State = 1412; - switch ( Interpreter.AdaptivePredict(_input,187,_ctx) ) { + State = 1360; Match(CASE); + State = 1361; whiteSpace(); + State = 1362; sC_Cond(); + State = 1363; endOfStatement(); + State = 1365; + switch ( Interpreter.AdaptivePredict(_input,185,_ctx) ) { case 1: { - State = 1409; whiteSpace(); - State = 1410; valueStmt(0); + State = 1364; block(); } break; } @@ -7102,98 +6986,124 @@ public RandomizeStmtContext randomizeStmt() { return _localctx; } - public partial class RedimStmtContext : ParserRuleContext { + public partial class SC_CondContext : ParserRuleContext { + public SC_CondContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sC_Cond; } } + + public SC_CondContext() { } + public virtual void CopyFrom(SC_CondContext context) { + base.CopyFrom(context); + } + } + public partial class CaseCondSelectionContext : SC_CondContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList redimSubStmt() { - return GetRuleContexts(); - } public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public ITerminalNode REDIM() { return GetToken(VBAParser.REDIM, 0); } + public IReadOnlyList sC_Selection() { + return GetRuleContexts(); + } + public SC_SelectionContext sC_Selection(int i) { + return GetRuleContext(i); + } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode PRESERVE() { return GetToken(VBAParser.PRESERVE, 0); } public ITerminalNode COMMA(int i) { return GetToken(VBAParser.COMMA, i); } - public RedimSubStmtContext redimSubStmt(int i) { - return GetRuleContext(i); + public CaseCondSelectionContext(SC_CondContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterCaseCondSelection(this); } - public RedimStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitCaseCondSelection(this); } - public override int RuleIndex { get { return RULE_redimStmt; } } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCaseCondSelection(this); + else return visitor.VisitChildren(this); + } + } + public partial class CaseCondElseContext : SC_CondContext { + public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } + public CaseCondElseContext(SC_CondContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterRedimStmt(this); + if (typedListener != null) typedListener.EnterCaseCondElse(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitRedimStmt(this); + if (typedListener != null) typedListener.ExitCaseCondElse(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitRedimStmt(this); + if (typedVisitor != null) return typedVisitor.VisitCaseCondElse(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public RedimStmtContext redimStmt() { - RedimStmtContext _localctx = new RedimStmtContext(_ctx, State); - EnterRule(_localctx, 138, RULE_redimStmt); + public SC_CondContext sC_Cond() { + SC_CondContext _localctx = new SC_CondContext(_ctx, State); + EnterRule(_localctx, 140, RULE_sC_Cond); int _la; try { int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 1414; Match(REDIM); - State = 1415; whiteSpace(); - State = 1418; - switch ( Interpreter.AdaptivePredict(_input,188,_ctx) ) { + State = 1382; + switch ( Interpreter.AdaptivePredict(_input,189,_ctx) ) { case 1: + _localctx = new CaseCondElseContext(_localctx); + EnterOuterAlt(_localctx, 1); { - State = 1416; Match(PRESERVE); - State = 1417; whiteSpace(); + State = 1367; Match(ELSE); } break; - } - State = 1420; redimSubStmt(); - State = 1431; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,191,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 1422; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + + case 2: + _localctx = new CaseCondSelectionContext(_localctx); + EnterOuterAlt(_localctx, 2); + { + State = 1368; sC_Selection(); + State = 1379; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,188,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { { - State = 1421; whiteSpace(); + State = 1370; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1369; whiteSpace(); + } } - } - State = 1424; Match(COMMA); - State = 1426; - switch ( Interpreter.AdaptivePredict(_input,190,_ctx) ) { - case 1: - { - State = 1425; whiteSpace(); + State = 1372; Match(COMMA); + State = 1374; + switch ( Interpreter.AdaptivePredict(_input,187,_ctx) ) { + case 1: + { + State = 1373; whiteSpace(); + } + break; } - break; - } - State = 1428; redimSubStmt(); + State = 1376; sC_Selection(); + } + } } - } + State = 1381; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,188,_ctx); } - State = 1433; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,191,_ctx); - } + } + break; } } catch (RecognitionException re) { @@ -7207,89 +7117,70 @@ public RedimStmtContext redimStmt() { return _localctx; } - public partial class RedimSubStmtContext : ParserRuleContext { + public partial class SetStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public AsTypeClauseContext asTypeClause() { - return GetRuleContext(0); - } - public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); - } - public SubscriptsContext subscripts() { - return GetRuleContext(0); + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } + public ITerminalNode SET() { return GetToken(VBAParser.SET, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public RedimSubStmtContext(ParserRuleContext parent, int invokingState) + public SetStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_redimSubStmt; } } + public override int RuleIndex { get { return RULE_setStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterRedimSubStmt(this); + if (typedListener != null) typedListener.EnterSetStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitRedimSubStmt(this); + if (typedListener != null) typedListener.ExitSetStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitRedimSubStmt(this); + if (typedVisitor != null) return typedVisitor.VisitSetStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public RedimSubStmtContext redimSubStmt() { - RedimSubStmtContext _localctx = new RedimSubStmtContext(_ctx, State); - EnterRule(_localctx, 140, RULE_redimSubStmt); + public SetStmtContext setStmt() { + SetStmtContext _localctx = new SetStmtContext(_ctx, State); + EnterRule(_localctx, 142, RULE_setStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1434; implicitCallStmt_InStmt(); - State = 1436; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1435; whiteSpace(); - } - } - - State = 1438; Match(LPAREN); - State = 1440; - switch ( Interpreter.AdaptivePredict(_input,193,_ctx) ) { - case 1: - { - State = 1439; whiteSpace(); - } - break; - } - State = 1442; subscripts(); - State = 1444; + State = 1384; Match(SET); + State = 1385; whiteSpace(); + State = 1386; valueStmt(0); + State = 1388; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1443; whiteSpace(); + State = 1387; whiteSpace(); } } - State = 1446; Match(RPAREN); - State = 1450; - switch ( Interpreter.AdaptivePredict(_input,195,_ctx) ) { + State = 1390; Match(EQ); + State = 1392; + switch ( Interpreter.AdaptivePredict(_input,191,_ctx) ) { case 1: { - State = 1447; whiteSpace(); - State = 1448; asTypeClause(); + State = 1391; whiteSpace(); } break; } + State = 1394; valueStmt(0); } } catch (RecognitionException re) { @@ -7303,108 +7194,113 @@ public RedimSubStmtContext redimSubStmt() { return _localctx; } - public partial class ResetStmtContext : ParserRuleContext { - public ITerminalNode RESET() { return GetToken(VBAParser.RESET, 0); } - public ResetStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_resetStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterResetStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitResetStmt(this); + public partial class SubStmtContext : ParserRuleContext { + public ArgListContext argList() { + return GetRuleContext(0); } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitResetStmt(this); - else return visitor.VisitChildren(this); + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - } - - [RuleVersion(0)] - public ResetStmtContext resetStmt() { - ResetStmtContext _localctx = new ResetStmtContext(_ctx, State); - EnterRule(_localctx, 142, RULE_resetStmt); - try { - EnterOuterAlt(_localctx, 1); - { - State = 1452; Match(RESET); - } + public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } + public ITerminalNode END_SUB() { return GetToken(VBAParser.END_SUB, 0); } + public ITerminalNode SUB() { return GetToken(VBAParser.SUB, 0); } + public SubroutineNameContext subroutineName() { + return GetRuleContext(0); } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); } - finally { - ExitRule(); + public VisibilityContext visibility() { + return GetRuleContext(0); } - return _localctx; - } - - public partial class ResumeStmtContext : ParserRuleContext { - public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } - public ITerminalNode RESUME() { return GetToken(VBAParser.RESUME, 0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); } - public IdentifierContext identifier() { - return GetRuleContext(0); + public BlockContext block() { + return GetRuleContext(0); } - public ResumeStmtContext(ParserRuleContext parent, int invokingState) + public SubStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_resumeStmt; } } + public override int RuleIndex { get { return RULE_subStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterResumeStmt(this); + if (typedListener != null) typedListener.EnterSubStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitResumeStmt(this); + if (typedListener != null) typedListener.ExitSubStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitResumeStmt(this); + if (typedVisitor != null) return typedVisitor.VisitSubStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ResumeStmtContext resumeStmt() { - ResumeStmtContext _localctx = new ResumeStmtContext(_ctx, State); - EnterRule(_localctx, 144, RULE_resumeStmt); + public SubStmtContext subStmt() { + SubStmtContext _localctx = new SubStmtContext(_ctx, State); + EnterRule(_localctx, 144, RULE_subStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1454; Match(RESUME); - State = 1460; - switch ( Interpreter.AdaptivePredict(_input,197,_ctx) ) { - case 1: + State = 1399; + _la = _input.La(1); + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { - State = 1455; whiteSpace(); - State = 1458; - switch ( Interpreter.AdaptivePredict(_input,196,_ctx) ) { - case 1: - { - State = 1456; Match(NEXT); - } - break; + State = 1396; visibility(); + State = 1397; whiteSpace(); + } + } - case 2: + State = 1403; + _la = _input.La(1); + if (_la==STATIC) { + { + State = 1401; Match(STATIC); + State = 1402; whiteSpace(); + } + } + + State = 1405; Match(SUB); + State = 1407; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1406; whiteSpace(); + } + } + + State = 1409; subroutineName(); + State = 1414; + switch ( Interpreter.AdaptivePredict(_input,196,_ctx) ) { + case 1: + { + State = 1411; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1457; identifier(); + State = 1410; whiteSpace(); } - break; } + + State = 1413; argList(); } break; } + State = 1416; endOfStatement(); + State = 1418; + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_IF - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (LPAREN - 192)) | (1L << (MINUS - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (COLLECTION - 192)) | (1L << (DELETESETTING - 192)) | (1L << (LOAD - 192)) | (1L << (RMDIR - 192)) | (1L << (SENDKEYS - 192)) | (1L << (SETATTR - 192)) | (1L << (ENDIF - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + { + State = 1417; block(); + } + } + + State = 1420; Match(END_SUB); } } catch (RecognitionException re) { @@ -7418,36 +7314,38 @@ public ResumeStmtContext resumeStmt() { return _localctx; } - public partial class ReturnStmtContext : ParserRuleContext { - public ITerminalNode RETURN() { return GetToken(VBAParser.RETURN, 0); } - public ReturnStmtContext(ParserRuleContext parent, int invokingState) + public partial class SubroutineNameContext : ParserRuleContext { + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public SubroutineNameContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_returnStmt; } } + public override int RuleIndex { get { return RULE_subroutineName; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterReturnStmt(this); + if (typedListener != null) typedListener.EnterSubroutineName(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitReturnStmt(this); + if (typedListener != null) typedListener.ExitSubroutineName(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitReturnStmt(this); + if (typedVisitor != null) return typedVisitor.VisitSubroutineName(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ReturnStmtContext returnStmt() { - ReturnStmtContext _localctx = new ReturnStmtContext(_ctx, State); - EnterRule(_localctx, 146, RULE_returnStmt); + public SubroutineNameContext subroutineName() { + SubroutineNameContext _localctx = new SubroutineNameContext(_ctx, State); + EnterRule(_localctx, 146, RULE_subroutineName); try { EnterOuterAlt(_localctx, 1); { - State = 1462; Match(RETURN); + State = 1422; identifier(); } } catch (RecognitionException re) { @@ -7461,44 +7359,85 @@ public ReturnStmtContext returnStmt() { return _localctx; } - public partial class RmdirStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class TypeStmtContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public ITerminalNode RMDIR() { return GetToken(VBAParser.RMDIR, 0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public IReadOnlyList typeStmt_Element() { + return GetRuleContexts(); + } + public ITerminalNode TYPE() { return GetToken(VBAParser.TYPE, 0); } + public TypeStmt_ElementContext typeStmt_Element(int i) { + return GetRuleContext(i); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public VisibilityContext visibility() { + return GetRuleContext(0); + } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); } - public RmdirStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode END_TYPE() { return GetToken(VBAParser.END_TYPE, 0); } + public TypeStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_rmdirStmt; } } + public override int RuleIndex { get { return RULE_typeStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterRmdirStmt(this); + if (typedListener != null) typedListener.EnterTypeStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitRmdirStmt(this); + if (typedListener != null) typedListener.ExitTypeStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitRmdirStmt(this); + if (typedVisitor != null) return typedVisitor.VisitTypeStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public RmdirStmtContext rmdirStmt() { - RmdirStmtContext _localctx = new RmdirStmtContext(_ctx, State); - EnterRule(_localctx, 148, RULE_rmdirStmt); + public TypeStmtContext typeStmt() { + TypeStmtContext _localctx = new TypeStmtContext(_ctx, State); + EnterRule(_localctx, 148, RULE_typeStmt); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1464; Match(RMDIR); - State = 1465; whiteSpace(); - State = 1466; valueStmt(0); + State = 1427; + _la = _input.La(1); + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { + { + State = 1424; visibility(); + State = 1425; whiteSpace(); + } + } + + State = 1429; Match(TYPE); + State = 1430; whiteSpace(); + State = 1431; identifier(); + State = 1432; endOfStatement(); + State = 1436; + _errHandler.Sync(this); + _la = _input.La(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << BEGIN) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (END_IF - 64)) | (1L << (EQV - 64)) | (1L << (FALSE - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (REM - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (XOR - 193)) | (1L << (IDENTIFIER - 193)) | (1L << (COLLECTION - 193)) | (1L << (DELETESETTING - 193)) | (1L << (LOAD - 193)) | (1L << (RMDIR - 193)) | (1L << (SENDKEYS - 193)) | (1L << (SETATTR - 193)))) != 0)) { + { + { + State = 1433; typeStmt_Element(); + } + } + State = 1438; + _errHandler.Sync(this); + _la = _input.La(1); + } + State = 1439; Match(END_TYPE); } } catch (RecognitionException re) { @@ -7512,70 +7451,107 @@ public RmdirStmtContext rmdirStmt() { return _localctx; } - public partial class RsetStmtContext : ParserRuleContext { + public partial class TypeStmt_ElementContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public ITerminalNode RSET() { return GetToken(VBAParser.RSET, 0); } + public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); + public AsTypeClauseContext asTypeClause() { + return GetRuleContext(0); } - public RsetStmtContext(ParserRuleContext parent, int invokingState) + public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public SubscriptsContext subscripts() { + return GetRuleContext(0); + } + public EndOfStatementContext endOfStatement() { + return GetRuleContext(0); + } + public TypeStmt_ElementContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_rsetStmt; } } + public override int RuleIndex { get { return RULE_typeStmt_Element; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterRsetStmt(this); + if (typedListener != null) typedListener.EnterTypeStmt_Element(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitRsetStmt(this); + if (typedListener != null) typedListener.ExitTypeStmt_Element(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitRsetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitTypeStmt_Element(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public RsetStmtContext rsetStmt() { - RsetStmtContext _localctx = new RsetStmtContext(_ctx, State); - EnterRule(_localctx, 150, RULE_rsetStmt); + public TypeStmt_ElementContext typeStmt_Element() { + TypeStmt_ElementContext _localctx = new TypeStmt_ElementContext(_ctx, State); + EnterRule(_localctx, 150, RULE_typeStmt_Element); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1468; Match(RSET); - State = 1469; whiteSpace(); - State = 1470; implicitCallStmt_InStmt(); - State = 1472; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 1441; identifier(); + State = 1456; + switch ( Interpreter.AdaptivePredict(_input,204,_ctx) ) { + case 1: { - State = 1471; whiteSpace(); + State = 1443; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1442; whiteSpace(); + } + } + + State = 1445; Match(LPAREN); + State = 1450; + switch ( Interpreter.AdaptivePredict(_input,202,_ctx) ) { + case 1: + { + State = 1447; + switch ( Interpreter.AdaptivePredict(_input,201,_ctx) ) { + case 1: + { + State = 1446; whiteSpace(); + } + break; + } + State = 1449; subscripts(); + } + break; + } + State = 1453; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1452; whiteSpace(); + } } - } - State = 1474; Match(EQ); - State = 1476; - switch ( Interpreter.AdaptivePredict(_input,199,_ctx) ) { + State = 1455; Match(RPAREN); + } + break; + } + State = 1461; + switch ( Interpreter.AdaptivePredict(_input,205,_ctx) ) { case 1: { - State = 1475; whiteSpace(); + State = 1458; whiteSpace(); + State = 1459; asTypeClause(); } break; } - State = 1478; valueStmt(0); + State = 1463; endOfStatement(); } } catch (RecognitionException re) { @@ -7589,7 +7565,7 @@ public RsetStmtContext rsetStmt() { return _localctx; } - public partial class SavepictureStmtContext : ParserRuleContext { + public partial class UnlockStmtContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } @@ -7600,59 +7576,81 @@ public IReadOnlyList valueStmt() { public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode SAVEPICTURE() { return GetToken(VBAParser.SAVEPICTURE, 0); } + public FileNumberContext fileNumber() { + return GetRuleContext(0); + } + public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } + public ITerminalNode UNLOCK() { return GetToken(VBAParser.UNLOCK, 0); } public ValueStmtContext valueStmt(int i) { return GetRuleContext(i); } - public SavepictureStmtContext(ParserRuleContext parent, int invokingState) + public UnlockStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_savepictureStmt; } } + public override int RuleIndex { get { return RULE_unlockStmt; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSavepictureStmt(this); + if (typedListener != null) typedListener.EnterUnlockStmt(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSavepictureStmt(this); + if (typedListener != null) typedListener.ExitUnlockStmt(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSavepictureStmt(this); + if (typedVisitor != null) return typedVisitor.VisitUnlockStmt(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public SavepictureStmtContext savepictureStmt() { - SavepictureStmtContext _localctx = new SavepictureStmtContext(_ctx, State); - EnterRule(_localctx, 152, RULE_savepictureStmt); + public UnlockStmtContext unlockStmt() { + UnlockStmtContext _localctx = new UnlockStmtContext(_ctx, State); + EnterRule(_localctx, 152, RULE_unlockStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1480; Match(SAVEPICTURE); - State = 1481; whiteSpace(); - State = 1482; valueStmt(0); - State = 1484; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 1465; Match(UNLOCK); + State = 1466; whiteSpace(); + State = 1467; fileNumber(); + State = 1483; + switch ( Interpreter.AdaptivePredict(_input,209,_ctx) ) { + case 1: { - State = 1483; whiteSpace(); + State = 1469; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1468; whiteSpace(); + } } - } - State = 1486; Match(COMMA); - State = 1488; - switch ( Interpreter.AdaptivePredict(_input,201,_ctx) ) { - case 1: - { - State = 1487; whiteSpace(); + State = 1471; Match(COMMA); + State = 1473; + switch ( Interpreter.AdaptivePredict(_input,207,_ctx) ) { + case 1: + { + State = 1472; whiteSpace(); + } + break; + } + State = 1475; valueStmt(0); + State = 1481; + switch ( Interpreter.AdaptivePredict(_input,208,_ctx) ) { + case 1: + { + State = 1476; whiteSpace(); + State = 1477; Match(TO); + State = 1478; whiteSpace(); + State = 1479; valueStmt(0); + } + break; + } } break; } - State = 1490; valueStmt(0); } } catch (RecognitionException re) { @@ -7666,1963 +7664,505 @@ public SavepictureStmtContext savepictureStmt() { return _localctx; } - public partial class SaveSettingStmtContext : ParserRuleContext { - public ITerminalNode SAVESETTING() { return GetToken(VBAParser.SAVESETTING, 0); } + public partial class ValueStmtContext : ParserRuleContext { + public ValueStmtContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_valueStmt; } } + + public ValueStmtContext() { } + public virtual void CopyFrom(ValueStmtContext context) { + base.CopyFrom(context); + } + } + public partial class VsAssignContext : ValueStmtContext { + public ITerminalNode ASSIGN() { return GetToken(VBAParser.ASSIGN, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); - } - public SaveSettingStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_saveSettingStmt; } } + public VsAssignContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSaveSettingStmt(this); + if (typedListener != null) typedListener.EnterVsAssign(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSaveSettingStmt(this); + if (typedListener != null) typedListener.ExitVsAssign(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSaveSettingStmt(this); + if (typedVisitor != null) return typedVisitor.VisitVsAssign(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SaveSettingStmtContext saveSettingStmt() { - SaveSettingStmtContext _localctx = new SaveSettingStmtContext(_ctx, State); - EnterRule(_localctx, 154, RULE_saveSettingStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1492; Match(SAVESETTING); - State = 1493; whiteSpace(); - State = 1494; valueStmt(0); - State = 1496; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1495; whiteSpace(); - } - } - - State = 1498; Match(COMMA); - State = 1500; - switch ( Interpreter.AdaptivePredict(_input,203,_ctx) ) { - case 1: - { - State = 1499; whiteSpace(); - } - break; - } - State = 1502; valueStmt(0); - State = 1504; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1503; whiteSpace(); - } - } - - State = 1506; Match(COMMA); - State = 1508; - switch ( Interpreter.AdaptivePredict(_input,205,_ctx) ) { - case 1: - { - State = 1507; whiteSpace(); - } - break; - } - State = 1510; valueStmt(0); - State = 1512; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1511; whiteSpace(); - } - } - - State = 1514; Match(COMMA); - State = 1516; - switch ( Interpreter.AdaptivePredict(_input,207,_ctx) ) { - case 1: - { - State = 1515; whiteSpace(); - } - break; - } - State = 1518; valueStmt(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class SeekStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } + public partial class VsNotContext : ValueStmtContext { + public ITerminalNode NOT() { return GetToken(VBAParser.NOT, 0); } public ValueStmtContext valueStmt() { return GetRuleContext(0); } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public FileNumberContext fileNumber() { - return GetRuleContext(0); - } - public ITerminalNode SEEK() { return GetToken(VBAParser.SEEK, 0); } - public SeekStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } - public override int RuleIndex { get { return RULE_seekStmt; } } + public VsNotContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSeekStmt(this); + if (typedListener != null) typedListener.EnterVsNot(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSeekStmt(this); + if (typedListener != null) typedListener.ExitVsNot(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSeekStmt(this); + if (typedVisitor != null) return typedVisitor.VisitVsNot(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SeekStmtContext seekStmt() { - SeekStmtContext _localctx = new SeekStmtContext(_ctx, State); - EnterRule(_localctx, 156, RULE_seekStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1520; Match(SEEK); - State = 1521; whiteSpace(); - State = 1522; fileNumber(); - State = 1524; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1523; whiteSpace(); - } - } - - State = 1526; Match(COMMA); - State = 1528; - switch ( Interpreter.AdaptivePredict(_input,209,_ctx) ) { - case 1: - { - State = 1527; whiteSpace(); - } - break; - } - State = 1530; valueStmt(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class SelectCaseStmtContext : ParserRuleContext { - public ITerminalNode CASE() { return GetToken(VBAParser.CASE, 0); } + public partial class VsStructContext : ValueStmtContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode END_SELECT() { return GetToken(VBAParser.END_SELECT, 0); } + public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } public ValueStmtContext valueStmt() { return GetRuleContext(0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode SELECT() { return GetToken(VBAParser.SELECT, 0); } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public SC_CaseContext sC_Case(int i) { - return GetRuleContext(i); - } - public IReadOnlyList sC_Case() { - return GetRuleContexts(); - } - public SelectCaseStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_selectCaseStmt; } } + public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } + public VsStructContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSelectCaseStmt(this); + if (typedListener != null) typedListener.EnterVsStruct(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSelectCaseStmt(this); + if (typedListener != null) typedListener.ExitVsStruct(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSelectCaseStmt(this); + if (typedVisitor != null) return typedVisitor.VisitVsStruct(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SelectCaseStmtContext selectCaseStmt() { - SelectCaseStmtContext _localctx = new SelectCaseStmtContext(_ctx, State); - EnterRule(_localctx, 158, RULE_selectCaseStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1532; Match(SELECT); - State = 1533; whiteSpace(); - State = 1534; Match(CASE); - State = 1535; whiteSpace(); - State = 1536; valueStmt(0); - State = 1537; endOfStatement(); - State = 1541; - _errHandler.Sync(this); - _la = _input.La(1); - while (_la==CASE) { - { - { - State = 1538; sC_Case(); - } - } - State = 1543; - _errHandler.Sync(this); - _la = _input.La(1); - } - State = 1544; Match(END_SELECT); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); + public partial class VsTypeOfContext : ValueStmtContext { + public TypeOfIsExpressionContext typeOfIsExpression() { + return GetRuleContext(0); } - finally { - ExitRule(); + public VsTypeOfContext(ValueStmtContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterVsTypeOf(this); } - return _localctx; - } - - public partial class SC_SelectionContext : ParserRuleContext { - public SC_SelectionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitVsTypeOf(this); } - public override int RuleIndex { get { return RULE_sC_Selection; } } - - public SC_SelectionContext() { } - public virtual void CopyFrom(SC_SelectionContext context) { - base.CopyFrom(context); + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitVsTypeOf(this); + else return visitor.VisitChildren(this); } } - public partial class CaseCondValueContext : SC_SelectionContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class VsICSContext : ValueStmtContext { + public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { + return GetRuleContext(0); } - public CaseCondValueContext(SC_SelectionContext context) { CopyFrom(context); } + public VsICSContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterCaseCondValue(this); + if (typedListener != null) typedListener.EnterVsICS(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitCaseCondValue(this); + if (typedListener != null) typedListener.ExitVsICS(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitCaseCondValue(this); + if (typedVisitor != null) return typedVisitor.VisitVsICS(this); else return visitor.VisitChildren(this); } } - public partial class CaseCondToContext : SC_SelectionContext { + public partial class VsRelationalContext : ValueStmtContext { + public ITerminalNode GEQ() { return GetToken(VBAParser.GEQ, 0); } + public ITerminalNode NEQ() { return GetToken(VBAParser.NEQ, 0); } + public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } public IReadOnlyList valueStmt() { return GetRuleContexts(); } + public ITerminalNode LEQ() { return GetToken(VBAParser.LEQ, 0); } + public ITerminalNode LT() { return GetToken(VBAParser.LT, 0); } + public ITerminalNode GT() { return GetToken(VBAParser.GT, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } + public ITerminalNode LIKE() { return GetToken(VBAParser.LIKE, 0); } public ValueStmtContext valueStmt(int i) { return GetRuleContext(i); } - public CaseCondToContext(SC_SelectionContext context) { CopyFrom(context); } + public VsRelationalContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterCaseCondTo(this); + if (typedListener != null) typedListener.EnterVsRelational(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitCaseCondTo(this); + if (typedListener != null) typedListener.ExitVsRelational(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitCaseCondTo(this); + if (typedVisitor != null) return typedVisitor.VisitVsRelational(this); else return visitor.VisitChildren(this); } } - public partial class CaseCondIsContext : SC_SelectionContext { - public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); } + public partial class VsXorContext : ValueStmtContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public ComparisonOperatorContext comparisonOperator() { - return GetRuleContext(0); + public ITerminalNode XOR() { return GetToken(VBAParser.XOR, 0); } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public CaseCondIsContext(SC_SelectionContext context) { CopyFrom(context); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public VsXorContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterCaseCondIs(this); + if (typedListener != null) typedListener.EnterVsXor(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitCaseCondIs(this); + if (typedListener != null) typedListener.ExitVsXor(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitCaseCondIs(this); + if (typedVisitor != null) return typedVisitor.VisitVsXor(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SC_SelectionContext sC_Selection() { - SC_SelectionContext _localctx = new SC_SelectionContext(_ctx, State); - EnterRule(_localctx, 160, RULE_sC_Selection); - int _la; - try { - State = 1563; - switch ( Interpreter.AdaptivePredict(_input,213,_ctx) ) { - case 1: - _localctx = new CaseCondIsContext(_localctx); - EnterOuterAlt(_localctx, 1); - { - State = 1546; Match(IS); - State = 1548; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1547; whiteSpace(); - } - } - - State = 1550; comparisonOperator(); - State = 1552; - switch ( Interpreter.AdaptivePredict(_input,212,_ctx) ) { - case 1: - { - State = 1551; whiteSpace(); - } - break; - } - State = 1554; valueStmt(0); - } - break; - - case 2: - _localctx = new CaseCondToContext(_localctx); - EnterOuterAlt(_localctx, 2); - { - State = 1556; valueStmt(0); - State = 1557; whiteSpace(); - State = 1558; Match(TO); - State = 1559; whiteSpace(); - State = 1560; valueStmt(0); - } - break; - - case 3: - _localctx = new CaseCondValueContext(_localctx); - EnterOuterAlt(_localctx, 3); - { - State = 1562; valueStmt(0); - } - break; - } + public partial class VsAndContext : ValueStmtContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } - finally { - ExitRule(); + public ITerminalNode AND() { return GetToken(VBAParser.AND, 0); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); } - return _localctx; - } - - public partial class SC_CaseContext : ParserRuleContext { - public ITerminalNode CASE() { return GetToken(VBAParser.CASE, 0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public SC_CondContext sC_Cond() { - return GetRuleContext(0); + public VsAndContext(ValueStmtContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterVsAnd(this); } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitVsAnd(this); } - public BlockContext block() { - return GetRuleContext(0); + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitVsAnd(this); + else return visitor.VisitChildren(this); } - public SC_CaseContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + } + public partial class VsPowContext : ValueStmtContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public override int RuleIndex { get { return RULE_sC_Case; } } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public ITerminalNode POW() { return GetToken(VBAParser.POW, 0); } + public VsPowContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSC_Case(this); + if (typedListener != null) typedListener.EnterVsPow(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSC_Case(this); + if (typedListener != null) typedListener.ExitVsPow(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSC_Case(this); + if (typedVisitor != null) return typedVisitor.VisitVsPow(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SC_CaseContext sC_Case() { - SC_CaseContext _localctx = new SC_CaseContext(_ctx, State); - EnterRule(_localctx, 162, RULE_sC_Case); - try { - EnterOuterAlt(_localctx, 1); - { - State = 1565; Match(CASE); - State = 1566; whiteSpace(); - State = 1567; sC_Cond(); - State = 1568; endOfStatement(); - State = 1570; - switch ( Interpreter.AdaptivePredict(_input,214,_ctx) ) { - case 1: - { - State = 1569; block(); - } - break; - } - } + public partial class VsAddContext : ValueStmtContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } - finally { - ExitRule(); + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); } - return _localctx; - } - - public partial class SC_CondContext : ParserRuleContext { - public SC_CondContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public ITerminalNode PLUS() { return GetToken(VBAParser.PLUS, 0); } + public ITerminalNode MINUS() { return GetToken(VBAParser.MINUS, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public override int RuleIndex { get { return RULE_sC_Cond; } } - - public SC_CondContext() { } - public virtual void CopyFrom(SC_CondContext context) { - base.CopyFrom(context); + public VsAddContext(ValueStmtContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterVsAdd(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitVsAdd(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitVsAdd(this); + else return visitor.VisitChildren(this); } } - public partial class CaseCondSelectionContext : SC_CondContext { + public partial class VsModContext : ValueStmtContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public IReadOnlyList sC_Selection() { - return GetRuleContexts(); - } - public SC_SelectionContext sC_Selection(int i) { - return GetRuleContext(i); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); + public ITerminalNode MOD() { return GetToken(VBAParser.MOD, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public CaseCondSelectionContext(SC_CondContext context) { CopyFrom(context); } + public VsModContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterCaseCondSelection(this); + if (typedListener != null) typedListener.EnterVsMod(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitCaseCondSelection(this); + if (typedListener != null) typedListener.ExitVsMod(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitCaseCondSelection(this); + if (typedVisitor != null) return typedVisitor.VisitVsMod(this); else return visitor.VisitChildren(this); } } - public partial class CaseCondElseContext : SC_CondContext { - public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } - public CaseCondElseContext(SC_CondContext context) { CopyFrom(context); } + public partial class VsIntDivContext : ValueStmtContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public IReadOnlyList valueStmt() { + return GetRuleContexts(); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ITerminalNode INTDIV() { return GetToken(VBAParser.INTDIV, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public VsIntDivContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterCaseCondElse(this); + if (typedListener != null) typedListener.EnterVsIntDiv(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitCaseCondElse(this); + if (typedListener != null) typedListener.ExitVsIntDiv(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitCaseCondElse(this); + if (typedVisitor != null) return typedVisitor.VisitVsIntDiv(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SC_CondContext sC_Cond() { - SC_CondContext _localctx = new SC_CondContext(_ctx, State); - EnterRule(_localctx, 164, RULE_sC_Cond); - int _la; - try { - int _alt; - State = 1587; - switch ( Interpreter.AdaptivePredict(_input,218,_ctx) ) { - case 1: - _localctx = new CaseCondElseContext(_localctx); - EnterOuterAlt(_localctx, 1); - { - State = 1572; Match(ELSE); - } - break; - - case 2: - _localctx = new CaseCondSelectionContext(_localctx); - EnterOuterAlt(_localctx, 2); - { - State = 1573; sC_Selection(); - State = 1584; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,217,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 1575; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1574; whiteSpace(); - } - } - - State = 1577; Match(COMMA); - State = 1579; - switch ( Interpreter.AdaptivePredict(_input,216,_ctx) ) { - case 1: - { - State = 1578; whiteSpace(); - } - break; - } - State = 1581; sC_Selection(); - } - } - } - State = 1586; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,217,_ctx); - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class SendkeysStmtContext : ParserRuleContext { + public partial class VsAmpContext : ValueStmtContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ITerminalNode SENDKEYS() { return GetToken(VBAParser.SENDKEYS, 0); } public IReadOnlyList valueStmt() { return GetRuleContexts(); } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } + public ITerminalNode AMPERSAND() { return GetToken(VBAParser.AMPERSAND, 0); } public ValueStmtContext valueStmt(int i) { return GetRuleContext(i); } - public SendkeysStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public VsAmpContext(ValueStmtContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterVsAmp(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitVsAmp(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitVsAmp(this); + else return visitor.VisitChildren(this); + } + } + public partial class VsAddressOfContext : ValueStmtContext { + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public ITerminalNode ADDRESSOF() { return GetToken(VBAParser.ADDRESSOF, 0); } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } - public override int RuleIndex { get { return RULE_sendkeysStmt; } } + public VsAddressOfContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSendkeysStmt(this); + if (typedListener != null) typedListener.EnterVsAddressOf(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSendkeysStmt(this); + if (typedListener != null) typedListener.ExitVsAddressOf(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSendkeysStmt(this); + if (typedVisitor != null) return typedVisitor.VisitVsAddressOf(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SendkeysStmtContext sendkeysStmt() { - SendkeysStmtContext _localctx = new SendkeysStmtContext(_ctx, State); - EnterRule(_localctx, 166, RULE_sendkeysStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1589; Match(SENDKEYS); - State = 1590; whiteSpace(); - State = 1591; valueStmt(0); - State = 1600; - switch ( Interpreter.AdaptivePredict(_input,221,_ctx) ) { - case 1: - { - State = 1593; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1592; whiteSpace(); - } - } - - State = 1595; Match(COMMA); - State = 1597; - switch ( Interpreter.AdaptivePredict(_input,220,_ctx) ) { - case 1: - { - State = 1596; whiteSpace(); - } - break; - } - State = 1599; valueStmt(0); - } - break; - } - } + public partial class VsNewContext : ValueStmtContext { + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } - finally { - ExitRule(); + public ITerminalNode NEW() { return GetToken(VBAParser.NEW, 0); } + public VsNewContext(ValueStmtContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterVsNew(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitVsNew(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitVsNew(this); + else return visitor.VisitChildren(this); } - return _localctx; } - - public partial class SetattrStmtContext : ParserRuleContext { + public partial class VsOrContext : ValueStmtContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } public IReadOnlyList valueStmt() { return GetRuleContexts(); } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } - public ITerminalNode SETATTR() { return GetToken(VBAParser.SETATTR, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } + public ITerminalNode OR() { return GetToken(VBAParser.OR, 0); } public ValueStmtContext valueStmt(int i) { return GetRuleContext(i); } - public SetattrStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_setattrStmt; } } + public VsOrContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSetattrStmt(this); + if (typedListener != null) typedListener.EnterVsOr(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSetattrStmt(this); + if (typedListener != null) typedListener.ExitVsOr(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSetattrStmt(this); + if (typedVisitor != null) return typedVisitor.VisitVsOr(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SetattrStmtContext setattrStmt() { - SetattrStmtContext _localctx = new SetattrStmtContext(_ctx, State); - EnterRule(_localctx, 168, RULE_setattrStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1602; Match(SETATTR); - State = 1603; whiteSpace(); - State = 1604; valueStmt(0); - State = 1606; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1605; whiteSpace(); - } - } - - State = 1608; Match(COMMA); - State = 1610; - switch ( Interpreter.AdaptivePredict(_input,223,_ctx) ) { - case 1: - { - State = 1609; whiteSpace(); - } - break; - } - State = 1612; valueStmt(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class SetStmtContext : ParserRuleContext { + public partial class VsMultContext : ValueStmtContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } + public ITerminalNode MULT() { return GetToken(VBAParser.MULT, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); - } - public ITerminalNode SET() { return GetToken(VBAParser.SET, 0); } - public SetStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); } - public override int RuleIndex { get { return RULE_setStmt; } } + public ITerminalNode DIV() { return GetToken(VBAParser.DIV, 0); } + public VsMultContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSetStmt(this); + if (typedListener != null) typedListener.EnterVsMult(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSetStmt(this); + if (typedListener != null) typedListener.ExitVsMult(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSetStmt(this); + if (typedVisitor != null) return typedVisitor.VisitVsMult(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public SetStmtContext setStmt() { - SetStmtContext _localctx = new SetStmtContext(_ctx, State); - EnterRule(_localctx, 170, RULE_setStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1614; Match(SET); - State = 1615; whiteSpace(); - State = 1616; implicitCallStmt_InStmt(); - State = 1618; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1617; whiteSpace(); - } - } - - State = 1620; Match(EQ); - State = 1622; - switch ( Interpreter.AdaptivePredict(_input,225,_ctx) ) { - case 1: - { - State = 1621; whiteSpace(); - } - break; - } - State = 1624; valueStmt(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class StopStmtContext : ParserRuleContext { - public ITerminalNode STOP() { return GetToken(VBAParser.STOP, 0); } - public StopStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { + public partial class VsLiteralContext : ValueStmtContext { + public LiteralContext literal() { + return GetRuleContext(0); } - public override int RuleIndex { get { return RULE_stopStmt; } } + public VsLiteralContext(ValueStmtContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterStopStmt(this); + if (typedListener != null) typedListener.EnterVsLiteral(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitStopStmt(this); + if (typedListener != null) typedListener.ExitVsLiteral(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitStopStmt(this); + if (typedVisitor != null) return typedVisitor.VisitVsLiteral(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public StopStmtContext stopStmt() { - StopStmtContext _localctx = new StopStmtContext(_ctx, State); - EnterRule(_localctx, 172, RULE_stopStmt); - try { - EnterOuterAlt(_localctx, 1); - { - State = 1626; Match(STOP); - } + public partial class VsEqvContext : ValueStmtContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class SubStmtContext : ParserRuleContext { - public ArgListContext argList() { - return GetRuleContext(0); - } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } - public ITerminalNode END_SUB() { return GetToken(VBAParser.END_SUB, 0); } - public ITerminalNode SUB() { return GetToken(VBAParser.SUB, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public VisibilityContext visibility() { - return GetRuleContext(0); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public BlockContext block() { - return GetRuleContext(0); - } - public SubStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_subStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSubStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSubStmt(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSubStmt(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public SubStmtContext subStmt() { - SubStmtContext _localctx = new SubStmtContext(_ctx, State); - EnterRule(_localctx, 174, RULE_subStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1631; - _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { - { - State = 1628; visibility(); - State = 1629; whiteSpace(); - } - } - - State = 1635; - _la = _input.La(1); - if (_la==STATIC) { - { - State = 1633; Match(STATIC); - State = 1634; whiteSpace(); - } - } - - State = 1637; Match(SUB); - State = 1639; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1638; whiteSpace(); - } - } - - State = 1641; identifier(); - State = 1646; - switch ( Interpreter.AdaptivePredict(_input,230,_ctx) ) { - case 1: - { - State = 1643; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1642; whiteSpace(); - } - } - - State = 1645; argList(); - } - break; - } - State = 1648; endOfStatement(); - State = 1650; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==LINE_CONTINUATION || _la==COLLECTION) { - { - State = 1649; block(); - } - } - - State = 1652; Match(END_SUB); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class TimeStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public ITerminalNode TIME() { return GetToken(VBAParser.TIME, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public TimeStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_timeStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterTimeStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitTimeStmt(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitTimeStmt(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public TimeStmtContext timeStmt() { - TimeStmtContext _localctx = new TimeStmtContext(_ctx, State); - EnterRule(_localctx, 176, RULE_timeStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1654; Match(TIME); - State = 1656; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1655; whiteSpace(); - } - } - - State = 1658; Match(EQ); - State = 1660; - switch ( Interpreter.AdaptivePredict(_input,233,_ctx) ) { - case 1: - { - State = 1659; whiteSpace(); - } - break; - } - State = 1662; valueStmt(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class TypeStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList typeStmt_Element() { - return GetRuleContexts(); - } - public ITerminalNode TYPE() { return GetToken(VBAParser.TYPE, 0); } - public TypeStmt_ElementContext typeStmt_Element(int i) { - return GetRuleContext(i); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public VisibilityContext visibility() { - return GetRuleContext(0); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public ITerminalNode END_TYPE() { return GetToken(VBAParser.END_TYPE, 0); } - public TypeStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_typeStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterTypeStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitTypeStmt(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitTypeStmt(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public TypeStmtContext typeStmt() { - TypeStmtContext _localctx = new TypeStmtContext(_ctx, State); - EnterRule(_localctx, 178, RULE_typeStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1667; - _la = _input.La(1); - if (((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) { - { - State = 1664; visibility(); - State = 1665; whiteSpace(); - } - } - - State = 1669; Match(TYPE); - State = 1670; whiteSpace(); - State = 1671; identifier(); - State = 1672; endOfStatement(); - State = 1676; - _errHandler.Sync(this); - _la = _input.La(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==COLLECTION) { - { - { - State = 1673; typeStmt_Element(); - } - } - State = 1678; - _errHandler.Sync(this); - _la = _input.La(1); - } - State = 1679; Match(END_TYPE); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class TypeStmt_ElementContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public AsTypeClauseContext asTypeClause() { - return GetRuleContext(0); - } - public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public SubscriptsContext subscripts() { - return GetRuleContext(0); - } - public EndOfStatementContext endOfStatement() { - return GetRuleContext(0); - } - public TypeStmt_ElementContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_typeStmt_Element; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterTypeStmt_Element(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitTypeStmt_Element(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitTypeStmt_Element(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public TypeStmt_ElementContext typeStmt_Element() { - TypeStmt_ElementContext _localctx = new TypeStmt_ElementContext(_ctx, State); - EnterRule(_localctx, 180, RULE_typeStmt_Element); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1681; identifier(); - State = 1696; - switch ( Interpreter.AdaptivePredict(_input,240,_ctx) ) { - case 1: - { - State = 1683; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1682; whiteSpace(); - } - } - - State = 1685; Match(LPAREN); - State = 1690; - switch ( Interpreter.AdaptivePredict(_input,238,_ctx) ) { - case 1: - { - State = 1687; - switch ( Interpreter.AdaptivePredict(_input,237,_ctx) ) { - case 1: - { - State = 1686; whiteSpace(); - } - break; - } - State = 1689; subscripts(); - } - break; - } - State = 1693; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1692; whiteSpace(); - } - } - - State = 1695; Match(RPAREN); - } - break; - } - State = 1701; - switch ( Interpreter.AdaptivePredict(_input,241,_ctx) ) { - case 1: - { - State = 1698; whiteSpace(); - State = 1699; asTypeClause(); - } - break; - } - State = 1703; endOfStatement(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class UnloadStmtContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); - } - public ITerminalNode UNLOAD() { return GetToken(VBAParser.UNLOAD, 0); } - public UnloadStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_unloadStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterUnloadStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitUnloadStmt(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitUnloadStmt(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public UnloadStmtContext unloadStmt() { - UnloadStmtContext _localctx = new UnloadStmtContext(_ctx, State); - EnterRule(_localctx, 182, RULE_unloadStmt); - try { - EnterOuterAlt(_localctx, 1); - { - State = 1705; Match(UNLOAD); - State = 1706; whiteSpace(); - State = 1707; valueStmt(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class UnlockStmtContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public ITerminalNode COMMA() { return GetToken(VBAParser.COMMA, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public FileNumberContext fileNumber() { - return GetRuleContext(0); - } - public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } - public ITerminalNode UNLOCK() { return GetToken(VBAParser.UNLOCK, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public UnlockStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_unlockStmt; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterUnlockStmt(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitUnlockStmt(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitUnlockStmt(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public UnlockStmtContext unlockStmt() { - UnlockStmtContext _localctx = new UnlockStmtContext(_ctx, State); - EnterRule(_localctx, 184, RULE_unlockStmt); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 1709; Match(UNLOCK); - State = 1710; whiteSpace(); - State = 1711; fileNumber(); - State = 1727; - switch ( Interpreter.AdaptivePredict(_input,245,_ctx) ) { - case 1: - { - State = 1713; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1712; whiteSpace(); - } - } - - State = 1715; Match(COMMA); - State = 1717; - switch ( Interpreter.AdaptivePredict(_input,243,_ctx) ) { - case 1: - { - State = 1716; whiteSpace(); - } - break; - } - State = 1719; valueStmt(0); - State = 1725; - switch ( Interpreter.AdaptivePredict(_input,244,_ctx) ) { - case 1: - { - State = 1720; whiteSpace(); - State = 1721; Match(TO); - State = 1722; whiteSpace(); - State = 1723; valueStmt(0); - } - break; - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class ValueStmtContext : ParserRuleContext { - public ValueStmtContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_valueStmt; } } - - public ValueStmtContext() { } - public virtual void CopyFrom(ValueStmtContext context) { - base.CopyFrom(context); - } - } - public partial class VsAssignContext : ValueStmtContext { - public ITerminalNode ASSIGN() { return GetToken(VBAParser.ASSIGN, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); - } - public VsAssignContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsAssign(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsAssign(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsAssign(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsNotContext : ValueStmtContext { - public ITerminalNode NOT() { return GetToken(VBAParser.NOT, 0); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); - } - public VsNotContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsNot(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsNot(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsNot(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsStructContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode LPAREN() { return GetToken(VBAParser.LPAREN, 0); } - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } - public VsStructContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsStruct(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsStruct(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsStruct(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsTypeOfContext : ValueStmtContext { - public TypeOfIsExpressionContext typeOfIsExpression() { - return GetRuleContext(0); - } - public VsTypeOfContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsTypeOf(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsTypeOf(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsTypeOf(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsICSContext : ValueStmtContext { - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); - } - public VsICSContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsICS(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsICS(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsICS(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsRelationalContext : ValueStmtContext { - public ITerminalNode GEQ() { return GetToken(VBAParser.GEQ, 0); } - public ITerminalNode NEQ() { return GetToken(VBAParser.NEQ, 0); } - public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public ITerminalNode LEQ() { return GetToken(VBAParser.LEQ, 0); } - public ITerminalNode LT() { return GetToken(VBAParser.LT, 0); } - public ITerminalNode GT() { return GetToken(VBAParser.GT, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ITerminalNode LIKE() { return GetToken(VBAParser.LIKE, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsRelationalContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsRelational(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsRelational(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsRelational(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsXorContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode XOR() { return GetToken(VBAParser.XOR, 0); } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsXorContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsXor(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsXor(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsXor(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsAndContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public ITerminalNode AND() { return GetToken(VBAParser.AND, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsAndContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsAnd(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsAnd(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsAnd(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsPowContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public ITerminalNode POW() { return GetToken(VBAParser.POW, 0); } - public VsPowContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsPow(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsPow(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsPow(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsAddContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode PLUS() { return GetToken(VBAParser.PLUS, 0); } - public ITerminalNode MINUS() { return GetToken(VBAParser.MINUS, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsAddContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsAdd(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsAdd(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsAdd(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsModContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode MOD() { return GetToken(VBAParser.MOD, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsModContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsMod(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsMod(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsMod(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsIntDivContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode INTDIV() { return GetToken(VBAParser.INTDIV, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsIntDivContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsIntDiv(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsIntDiv(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsIntDiv(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsAmpContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode AMPERSAND() { return GetToken(VBAParser.AMPERSAND, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsAmpContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsAmp(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsAmp(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsAmp(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsAddressOfContext : ValueStmtContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public ITerminalNode ADDRESSOF() { return GetToken(VBAParser.ADDRESSOF, 0); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); - } - public VsAddressOfContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsAddressOf(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsAddressOf(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsAddressOf(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsNewContext : ValueStmtContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); - } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); - } - public ITerminalNode NEW() { return GetToken(VBAParser.NEW, 0); } - public VsNewContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsNew(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsNew(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsNew(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsOrContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode OR() { return GetToken(VBAParser.OR, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public VsOrContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsOr(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsOr(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsOr(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsMultContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public ITerminalNode MULT() { return GetToken(VBAParser.MULT, 0); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public ITerminalNode DIV() { return GetToken(VBAParser.DIV, 0); } - public VsMultContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsMult(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsMult(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsMult(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsLiteralContext : ValueStmtContext { - public LiteralContext literal() { - return GetRuleContext(0); - } - public VsLiteralContext(ValueStmtContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterVsLiteral(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitVsLiteral(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitVsLiteral(this); - else return visitor.VisitChildren(this); - } - } - public partial class VsEqvContext : ValueStmtContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } public ITerminalNode EQV() { return GetToken(VBAParser.EQV, 0); } public IReadOnlyList whiteSpace() { @@ -9728,31 +8268,31 @@ private ValueStmtContext valueStmt(int _p) { int _parentState = State; ValueStmtContext _localctx = new ValueStmtContext(_ctx, _parentState); ValueStmtContext _prevctx = _localctx; - int _startState = 186; - EnterRecursionRule(_localctx, 186, RULE_valueStmt, _p); + int _startState = 154; + EnterRecursionRule(_localctx, 154, RULE_valueStmt, _p); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1774; - switch ( Interpreter.AdaptivePredict(_input,254,_ctx) ) { + State = 1530; + switch ( Interpreter.AdaptivePredict(_input,218,_ctx) ) { case 1: { _localctx = new VsNewContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1730; Match(NEW); - State = 1732; - switch ( Interpreter.AdaptivePredict(_input,246,_ctx) ) { + State = 1486; Match(NEW); + State = 1488; + switch ( Interpreter.AdaptivePredict(_input,210,_ctx) ) { case 1: { - State = 1731; whiteSpace(); + State = 1487; whiteSpace(); } break; } - State = 1734; valueStmt(19); + State = 1490; valueStmt(19); } break; @@ -9761,16 +8301,16 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsAddressOfContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1735; Match(ADDRESSOF); - State = 1737; - switch ( Interpreter.AdaptivePredict(_input,247,_ctx) ) { + State = 1491; Match(ADDRESSOF); + State = 1493; + switch ( Interpreter.AdaptivePredict(_input,211,_ctx) ) { case 1: { - State = 1736; whiteSpace(); + State = 1492; whiteSpace(); } break; } - State = 1739; valueStmt(16); + State = 1495; valueStmt(16); } break; @@ -9779,25 +8319,25 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsAssignContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1740; implicitCallStmt_InStmt(); - State = 1742; + State = 1496; unrestrictedIdentifier(); + State = 1498; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1741; whiteSpace(); + State = 1497; whiteSpace(); } } - State = 1744; Match(ASSIGN); - State = 1746; - switch ( Interpreter.AdaptivePredict(_input,249,_ctx) ) { + State = 1500; Match(ASSIGN); + State = 1502; + switch ( Interpreter.AdaptivePredict(_input,213,_ctx) ) { case 1: { - State = 1745; whiteSpace(); + State = 1501; whiteSpace(); } break; } - State = 1748; valueStmt(15); + State = 1504; valueStmt(15); } break; @@ -9806,16 +8346,16 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsNegationContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1750; Match(MINUS); - State = 1752; - switch ( Interpreter.AdaptivePredict(_input,250,_ctx) ) { + State = 1506; Match(MINUS); + State = 1508; + switch ( Interpreter.AdaptivePredict(_input,214,_ctx) ) { case 1: { - State = 1751; whiteSpace(); + State = 1507; whiteSpace(); } break; } - State = 1754; valueStmt(13); + State = 1510; valueStmt(13); } break; @@ -9824,16 +8364,16 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsNotContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1755; Match(NOT); - State = 1757; - switch ( Interpreter.AdaptivePredict(_input,251,_ctx) ) { + State = 1511; Match(NOT); + State = 1513; + switch ( Interpreter.AdaptivePredict(_input,215,_ctx) ) { case 1: { - State = 1756; whiteSpace(); + State = 1512; whiteSpace(); } break; } - State = 1759; valueStmt(6); + State = 1515; valueStmt(6); } break; @@ -9842,7 +8382,7 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsLiteralContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1760; literal(); + State = 1516; literal(); } break; @@ -9851,7 +8391,7 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsICSContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1761; implicitCallStmt_InStmt(); + State = 1517; implicitCallStmt_InStmt(); } break; @@ -9860,25 +8400,25 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsStructContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1762; Match(LPAREN); - State = 1764; - switch ( Interpreter.AdaptivePredict(_input,252,_ctx) ) { + State = 1518; Match(LPAREN); + State = 1520; + switch ( Interpreter.AdaptivePredict(_input,216,_ctx) ) { case 1: { - State = 1763; whiteSpace(); + State = 1519; whiteSpace(); } break; } - State = 1766; valueStmt(0); - State = 1768; + State = 1522; valueStmt(0); + State = 1524; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1767; whiteSpace(); + State = 1523; whiteSpace(); } } - State = 1770; Match(RPAREN); + State = 1526; Match(RPAREN); } break; @@ -9887,7 +8427,7 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsTypeOfContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1772; typeOfIsExpression(); + State = 1528; typeOfIsExpression(); } break; @@ -9896,45 +8436,45 @@ private ValueStmtContext valueStmt(int _p) { _localctx = new VsMidContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 1773; midStmt(); + State = 1529; midStmt(); } break; } _ctx.stop = _input.Lt(-1); - State = 1886; + State = 1642; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,280,_ctx); + _alt = Interpreter.AdaptivePredict(_input,244,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { if ( _parseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 1884; - switch ( Interpreter.AdaptivePredict(_input,279,_ctx) ) { + State = 1640; + switch ( Interpreter.AdaptivePredict(_input,243,_ctx) ) { case 1: { _localctx = new VsPowContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1776; + State = 1532; if (!(Precpred(_ctx, 14))) throw new FailedPredicateException(this, "Precpred(_ctx, 14)"); - State = 1778; + State = 1534; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1777; whiteSpace(); + State = 1533; whiteSpace(); } } - State = 1780; Match(POW); - State = 1782; - switch ( Interpreter.AdaptivePredict(_input,256,_ctx) ) { + State = 1536; Match(POW); + State = 1538; + switch ( Interpreter.AdaptivePredict(_input,220,_ctx) ) { case 1: { - State = 1781; whiteSpace(); + State = 1537; whiteSpace(); } break; } - State = 1784; valueStmt(15); + State = 1540; valueStmt(15); } break; @@ -9942,31 +8482,31 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsMultContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1785; + State = 1541; if (!(Precpred(_ctx, 12))) throw new FailedPredicateException(this, "Precpred(_ctx, 12)"); - State = 1787; + State = 1543; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1786; whiteSpace(); + State = 1542; whiteSpace(); } } - State = 1789; + State = 1545; _la = _input.La(1); if ( !(_la==DIV || _la==MULT) ) { _errHandler.RecoverInline(this); } Consume(); - State = 1791; - switch ( Interpreter.AdaptivePredict(_input,258,_ctx) ) { + State = 1547; + switch ( Interpreter.AdaptivePredict(_input,222,_ctx) ) { case 1: { - State = 1790; whiteSpace(); + State = 1546; whiteSpace(); } break; } - State = 1793; valueStmt(13); + State = 1549; valueStmt(13); } break; @@ -9974,26 +8514,26 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsIntDivContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1794; + State = 1550; if (!(Precpred(_ctx, 11))) throw new FailedPredicateException(this, "Precpred(_ctx, 11)"); - State = 1796; + State = 1552; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1795; whiteSpace(); + State = 1551; whiteSpace(); } } - State = 1798; Match(INTDIV); - State = 1800; - switch ( Interpreter.AdaptivePredict(_input,260,_ctx) ) { + State = 1554; Match(INTDIV); + State = 1556; + switch ( Interpreter.AdaptivePredict(_input,224,_ctx) ) { case 1: { - State = 1799; whiteSpace(); + State = 1555; whiteSpace(); } break; } - State = 1802; valueStmt(12); + State = 1558; valueStmt(12); } break; @@ -10001,26 +8541,26 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsModContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1803; + State = 1559; if (!(Precpred(_ctx, 10))) throw new FailedPredicateException(this, "Precpred(_ctx, 10)"); - State = 1805; + State = 1561; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1804; whiteSpace(); + State = 1560; whiteSpace(); } } - State = 1807; Match(MOD); - State = 1809; - switch ( Interpreter.AdaptivePredict(_input,262,_ctx) ) { + State = 1563; Match(MOD); + State = 1565; + switch ( Interpreter.AdaptivePredict(_input,226,_ctx) ) { case 1: { - State = 1808; whiteSpace(); + State = 1564; whiteSpace(); } break; } - State = 1811; valueStmt(11); + State = 1567; valueStmt(11); } break; @@ -10028,31 +8568,31 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsAddContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1812; + State = 1568; if (!(Precpred(_ctx, 9))) throw new FailedPredicateException(this, "Precpred(_ctx, 9)"); - State = 1814; + State = 1570; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1813; whiteSpace(); + State = 1569; whiteSpace(); } } - State = 1816; + State = 1572; _la = _input.La(1); if ( !(_la==MINUS || _la==PLUS) ) { _errHandler.RecoverInline(this); } Consume(); - State = 1818; - switch ( Interpreter.AdaptivePredict(_input,264,_ctx) ) { + State = 1574; + switch ( Interpreter.AdaptivePredict(_input,228,_ctx) ) { case 1: { - State = 1817; whiteSpace(); + State = 1573; whiteSpace(); } break; } - State = 1820; valueStmt(10); + State = 1576; valueStmt(10); } break; @@ -10060,26 +8600,26 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsAmpContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1821; + State = 1577; if (!(Precpred(_ctx, 8))) throw new FailedPredicateException(this, "Precpred(_ctx, 8)"); - State = 1823; + State = 1579; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1822; whiteSpace(); + State = 1578; whiteSpace(); } } - State = 1825; Match(AMPERSAND); - State = 1827; - switch ( Interpreter.AdaptivePredict(_input,266,_ctx) ) { + State = 1581; Match(AMPERSAND); + State = 1583; + switch ( Interpreter.AdaptivePredict(_input,230,_ctx) ) { case 1: { - State = 1826; whiteSpace(); + State = 1582; whiteSpace(); } break; } - State = 1829; valueStmt(9); + State = 1585; valueStmt(9); } break; @@ -10087,31 +8627,31 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsRelationalContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1830; + State = 1586; if (!(Precpred(_ctx, 7))) throw new FailedPredicateException(this, "Precpred(_ctx, 7)"); - State = 1832; + State = 1588; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1831; whiteSpace(); + State = 1587; whiteSpace(); } } - State = 1834; + State = 1590; _la = _input.La(1); - if ( !(_la==IS || _la==LIKE || ((((_la - 224)) & ~0x3f) == 0 && ((1L << (_la - 224)) & ((1L << (EQ - 224)) | (1L << (GEQ - 224)) | (1L << (GT - 224)) | (1L << (LEQ - 224)) | (1L << (LT - 224)) | (1L << (NEQ - 224)))) != 0)) ) { + if ( !(_la==IS || _la==LIKE || ((((_la - 206)) & ~0x3f) == 0 && ((1L << (_la - 206)) & ((1L << (EQ - 206)) | (1L << (GEQ - 206)) | (1L << (GT - 206)) | (1L << (LEQ - 206)) | (1L << (LT - 206)) | (1L << (NEQ - 206)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); - State = 1836; - switch ( Interpreter.AdaptivePredict(_input,268,_ctx) ) { + State = 1592; + switch ( Interpreter.AdaptivePredict(_input,232,_ctx) ) { case 1: { - State = 1835; whiteSpace(); + State = 1591; whiteSpace(); } break; } - State = 1838; valueStmt(8); + State = 1594; valueStmt(8); } break; @@ -10119,26 +8659,26 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsAndContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1839; + State = 1595; if (!(Precpred(_ctx, 5))) throw new FailedPredicateException(this, "Precpred(_ctx, 5)"); - State = 1841; + State = 1597; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1840; whiteSpace(); + State = 1596; whiteSpace(); } } - State = 1843; Match(AND); - State = 1845; - switch ( Interpreter.AdaptivePredict(_input,270,_ctx) ) { + State = 1599; Match(AND); + State = 1601; + switch ( Interpreter.AdaptivePredict(_input,234,_ctx) ) { case 1: { - State = 1844; whiteSpace(); + State = 1600; whiteSpace(); } break; } - State = 1847; valueStmt(6); + State = 1603; valueStmt(6); } break; @@ -10146,26 +8686,26 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsOrContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1848; + State = 1604; if (!(Precpred(_ctx, 4))) throw new FailedPredicateException(this, "Precpred(_ctx, 4)"); - State = 1850; + State = 1606; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1849; whiteSpace(); + State = 1605; whiteSpace(); } } - State = 1852; Match(OR); - State = 1854; - switch ( Interpreter.AdaptivePredict(_input,272,_ctx) ) { + State = 1608; Match(OR); + State = 1610; + switch ( Interpreter.AdaptivePredict(_input,236,_ctx) ) { case 1: { - State = 1853; whiteSpace(); + State = 1609; whiteSpace(); } break; } - State = 1856; valueStmt(5); + State = 1612; valueStmt(5); } break; @@ -10173,26 +8713,26 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsXorContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1857; + State = 1613; if (!(Precpred(_ctx, 3))) throw new FailedPredicateException(this, "Precpred(_ctx, 3)"); - State = 1859; + State = 1615; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1858; whiteSpace(); + State = 1614; whiteSpace(); } } - State = 1861; Match(XOR); - State = 1863; - switch ( Interpreter.AdaptivePredict(_input,274,_ctx) ) { + State = 1617; Match(XOR); + State = 1619; + switch ( Interpreter.AdaptivePredict(_input,238,_ctx) ) { case 1: { - State = 1862; whiteSpace(); + State = 1618; whiteSpace(); } break; } - State = 1865; valueStmt(4); + State = 1621; valueStmt(4); } break; @@ -10200,26 +8740,26 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsEqvContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1866; + State = 1622; if (!(Precpred(_ctx, 2))) throw new FailedPredicateException(this, "Precpred(_ctx, 2)"); - State = 1868; + State = 1624; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1867; whiteSpace(); + State = 1623; whiteSpace(); } } - State = 1870; Match(EQV); - State = 1872; - switch ( Interpreter.AdaptivePredict(_input,276,_ctx) ) { + State = 1626; Match(EQV); + State = 1628; + switch ( Interpreter.AdaptivePredict(_input,240,_ctx) ) { case 1: { - State = 1871; whiteSpace(); + State = 1627; whiteSpace(); } break; } - State = 1874; valueStmt(3); + State = 1630; valueStmt(3); } break; @@ -10227,34 +8767,34 @@ private ValueStmtContext valueStmt(int _p) { { _localctx = new VsImpContext(new ValueStmtContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_valueStmt); - State = 1875; + State = 1631; if (!(Precpred(_ctx, 1))) throw new FailedPredicateException(this, "Precpred(_ctx, 1)"); - State = 1877; + State = 1633; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1876; whiteSpace(); + State = 1632; whiteSpace(); } } - State = 1879; Match(IMP); - State = 1881; - switch ( Interpreter.AdaptivePredict(_input,278,_ctx) ) { + State = 1635; Match(IMP); + State = 1637; + switch ( Interpreter.AdaptivePredict(_input,242,_ctx) ) { case 1: { - State = 1880; whiteSpace(); + State = 1636; whiteSpace(); } break; } - State = 1883; valueStmt(2); + State = 1639; valueStmt(2); } break; } } } - State = 1888; + State = 1644; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,280,_ctx); + _alt = Interpreter.AdaptivePredict(_input,244,_ctx); } } } @@ -10307,21 +8847,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypeOfIsExpressionContext typeOfIsExpression() { TypeOfIsExpressionContext _localctx = new TypeOfIsExpressionContext(_ctx, State); - EnterRule(_localctx, 188, RULE_typeOfIsExpression); + EnterRule(_localctx, 156, RULE_typeOfIsExpression); try { EnterOuterAlt(_localctx, 1); { - State = 1889; Match(TYPEOF); - State = 1890; whiteSpace(); - State = 1891; valueStmt(0); - State = 1897; - switch ( Interpreter.AdaptivePredict(_input,281,_ctx) ) { + State = 1645; Match(TYPEOF); + State = 1646; whiteSpace(); + State = 1647; valueStmt(0); + State = 1653; + switch ( Interpreter.AdaptivePredict(_input,245,_ctx) ) { case 1: { - State = 1892; whiteSpace(); - State = 1893; Match(IS); - State = 1894; whiteSpace(); - State = 1895; type(); + State = 1648; whiteSpace(); + State = 1649; Match(IS); + State = 1650; whiteSpace(); + State = 1651; type(); } break; } @@ -10377,20 +8917,20 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public VariableStmtContext variableStmt() { VariableStmtContext _localctx = new VariableStmtContext(_ctx, State); - EnterRule(_localctx, 190, RULE_variableStmt); + EnterRule(_localctx, 158, RULE_variableStmt); try { EnterOuterAlt(_localctx, 1); { - State = 1902; + State = 1658; switch (_input.La(1)) { case DIM: { - State = 1899; Match(DIM); + State = 1655; Match(DIM); } break; case STATIC: { - State = 1900; Match(STATIC); + State = 1656; Match(STATIC); } break; case FRIEND: @@ -10398,23 +8938,23 @@ public VariableStmtContext variableStmt() { case PRIVATE: case PUBLIC: { - State = 1901; visibility(); + State = 1657; visibility(); } break; default: throw new NoViableAltException(this); } - State = 1904; whiteSpace(); - State = 1907; - switch ( Interpreter.AdaptivePredict(_input,283,_ctx) ) { + State = 1660; whiteSpace(); + State = 1663; + switch ( Interpreter.AdaptivePredict(_input,247,_ctx) ) { case 1: { - State = 1905; Match(WITHEVENTS); - State = 1906; whiteSpace(); + State = 1661; Match(WITHEVENTS); + State = 1662; whiteSpace(); } break; } - State = 1909; variableListStmt(); + State = 1665; variableListStmt(); } } catch (RecognitionException re) { @@ -10468,44 +9008,44 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public VariableListStmtContext variableListStmt() { VariableListStmtContext _localctx = new VariableListStmtContext(_ctx, State); - EnterRule(_localctx, 192, RULE_variableListStmt); + EnterRule(_localctx, 160, RULE_variableListStmt); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1911; variableSubStmt(); - State = 1922; + State = 1667; variableSubStmt(); + State = 1678; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,286,_ctx); + _alt = Interpreter.AdaptivePredict(_input,250,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 1913; + State = 1669; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1912; whiteSpace(); + State = 1668; whiteSpace(); } } - State = 1915; Match(COMMA); - State = 1917; + State = 1671; Match(COMMA); + State = 1673; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1916; whiteSpace(); + State = 1672; whiteSpace(); } } - State = 1919; variableSubStmt(); + State = 1675; variableSubStmt(); } } } - State = 1924; + State = 1680; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,286,_ctx); + _alt = Interpreter.AdaptivePredict(_input,250,_ctx); } } } @@ -10564,75 +9104,75 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public VariableSubStmtContext variableSubStmt() { VariableSubStmtContext _localctx = new VariableSubStmtContext(_ctx, State); - EnterRule(_localctx, 194, RULE_variableSubStmt); + EnterRule(_localctx, 162, RULE_variableSubStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1925; identifier(); - State = 1943; - switch ( Interpreter.AdaptivePredict(_input,292,_ctx) ) { + State = 1681; identifier(); + State = 1699; + switch ( Interpreter.AdaptivePredict(_input,256,_ctx) ) { case 1: { - State = 1927; + State = 1683; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1926; whiteSpace(); + State = 1682; whiteSpace(); } } - State = 1929; Match(LPAREN); - State = 1931; - switch ( Interpreter.AdaptivePredict(_input,288,_ctx) ) { + State = 1685; Match(LPAREN); + State = 1687; + switch ( Interpreter.AdaptivePredict(_input,252,_ctx) ) { case 1: { - State = 1930; whiteSpace(); + State = 1686; whiteSpace(); } break; } - State = 1937; + State = 1693; _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (LPAREN - 192)) | (1L << (MINUS - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==LINE_CONTINUATION || _la==COLLECTION) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_IF - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (LPAREN - 192)) | (1L << (MINUS - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (COLLECTION - 192)) | (1L << (DELETESETTING - 192)) | (1L << (LOAD - 192)) | (1L << (RMDIR - 192)) | (1L << (SENDKEYS - 192)) | (1L << (SETATTR - 192)) | (1L << (ENDIF - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { { - State = 1933; subscripts(); - State = 1935; + State = 1689; subscripts(); + State = 1691; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1934; whiteSpace(); + State = 1690; whiteSpace(); } } } } - State = 1939; Match(RPAREN); - State = 1941; - switch ( Interpreter.AdaptivePredict(_input,291,_ctx) ) { + State = 1695; Match(RPAREN); + State = 1697; + switch ( Interpreter.AdaptivePredict(_input,255,_ctx) ) { case 1: { - State = 1940; whiteSpace(); + State = 1696; whiteSpace(); } break; } } break; } - State = 1946; - switch ( Interpreter.AdaptivePredict(_input,293,_ctx) ) { + State = 1702; + switch ( Interpreter.AdaptivePredict(_input,257,_ctx) ) { case 1: { - State = 1945; typeHint(); + State = 1701; typeHint(); } break; } - State = 1951; - switch ( Interpreter.AdaptivePredict(_input,294,_ctx) ) { + State = 1707; + switch ( Interpreter.AdaptivePredict(_input,258,_ctx) ) { case 1: { - State = 1948; whiteSpace(); - State = 1949; asTypeClause(); + State = 1704; whiteSpace(); + State = 1705; asTypeClause(); } break; } @@ -10687,23 +9227,23 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WhileWendStmtContext whileWendStmt() { WhileWendStmtContext _localctx = new WhileWendStmtContext(_ctx, State); - EnterRule(_localctx, 196, RULE_whileWendStmt); + EnterRule(_localctx, 164, RULE_whileWendStmt); try { EnterOuterAlt(_localctx, 1); { - State = 1953; Match(WHILE); - State = 1954; whiteSpace(); - State = 1955; valueStmt(0); - State = 1956; endOfStatement(); - State = 1958; - switch ( Interpreter.AdaptivePredict(_input,295,_ctx) ) { + State = 1709; Match(WHILE); + State = 1710; whiteSpace(); + State = 1711; valueStmt(0); + State = 1712; endOfStatement(); + State = 1714; + switch ( Interpreter.AdaptivePredict(_input,259,_ctx) ) { case 1: { - State = 1957; block(); + State = 1713; block(); } break; } - State = 1960; Match(WEND); + State = 1716; Match(WEND); } } catch (RecognitionException re) { @@ -10755,32 +9295,32 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WidthStmtContext widthStmt() { WidthStmtContext _localctx = new WidthStmtContext(_ctx, State); - EnterRule(_localctx, 198, RULE_widthStmt); + EnterRule(_localctx, 166, RULE_widthStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1962; Match(WIDTH); - State = 1963; whiteSpace(); - State = 1964; fileNumber(); - State = 1966; + State = 1718; Match(WIDTH); + State = 1719; whiteSpace(); + State = 1720; fileNumber(); + State = 1722; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1965; whiteSpace(); + State = 1721; whiteSpace(); } } - State = 1968; Match(COMMA); - State = 1970; - switch ( Interpreter.AdaptivePredict(_input,297,_ctx) ) { + State = 1724; Match(COMMA); + State = 1726; + switch ( Interpreter.AdaptivePredict(_input,261,_ctx) ) { case 1: { - State = 1969; whiteSpace(); + State = 1725; whiteSpace(); } break; } - State = 1972; valueStmt(0); + State = 1728; valueStmt(0); } } catch (RecognitionException re) { @@ -10832,24 +9372,23 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WithStmtContext withStmt() { WithStmtContext _localctx = new WithStmtContext(_ctx, State); - EnterRule(_localctx, 200, RULE_withStmt); - int _la; + EnterRule(_localctx, 168, RULE_withStmt); try { EnterOuterAlt(_localctx, 1); { - State = 1974; Match(WITH); - State = 1975; whiteSpace(); - State = 1976; withStmtExpression(); - State = 1977; endOfStatement(); - State = 1979; - _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || _la==LINE_CONTINUATION || _la==COLLECTION) { + State = 1730; Match(WITH); + State = 1731; whiteSpace(); + State = 1732; withStmtExpression(); + State = 1733; endOfStatement(); + State = 1735; + switch ( Interpreter.AdaptivePredict(_input,262,_ctx) ) { + case 1: { - State = 1978; block(); + State = 1734; block(); } + break; } - - State = 1981; Match(END_WITH); + State = 1737; Match(END_WITH); } } catch (RecognitionException re) { @@ -10864,16 +9403,9 @@ public WithStmtContext withStmt() { } public partial class WithStmtExpressionContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); - } - public TypeContext type() { - return GetRuleContext(0); - } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } - public ITerminalNode NEW() { return GetToken(VBAParser.NEW, 0); } public WithStmtExpressionContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -10897,28 +9429,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WithStmtExpressionContext withStmtExpression() { WithStmtExpressionContext _localctx = new WithStmtExpressionContext(_ctx, State); - EnterRule(_localctx, 202, RULE_withStmtExpression); + EnterRule(_localctx, 170, RULE_withStmtExpression); try { EnterOuterAlt(_localctx, 1); { - State = 1988; - switch ( Interpreter.AdaptivePredict(_input,299,_ctx) ) { - case 1: - { - State = 1983; implicitCallStmt_InStmt(); - } - break; - - case 2: - { - { - State = 1984; Match(NEW); - State = 1985; whiteSpace(); - State = 1986; type(); - } - } - break; - } + State = 1739; valueStmt(0); } } catch (RecognitionException re) { @@ -10970,36 +9485,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WriteStmtContext writeStmt() { WriteStmtContext _localctx = new WriteStmtContext(_ctx, State); - EnterRule(_localctx, 204, RULE_writeStmt); + EnterRule(_localctx, 172, RULE_writeStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1990; Match(WRITE); - State = 1991; whiteSpace(); - State = 1992; fileNumber(); - State = 1994; + State = 1741; Match(WRITE); + State = 1742; whiteSpace(); + State = 1743; fileNumber(); + State = 1745; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1993; whiteSpace(); + State = 1744; whiteSpace(); } } - State = 1996; Match(COMMA); - State = 2001; - switch ( Interpreter.AdaptivePredict(_input,302,_ctx) ) { + State = 1747; Match(COMMA); + State = 1752; + switch ( Interpreter.AdaptivePredict(_input,265,_ctx) ) { case 1: { - State = 1998; - switch ( Interpreter.AdaptivePredict(_input,301,_ctx) ) { + State = 1749; + switch ( Interpreter.AdaptivePredict(_input,264,_ctx) ) { case 1: { - State = 1997; whiteSpace(); + State = 1748; whiteSpace(); } break; } - State = 2000; outputList(); + State = 1751; outputList(); } break; } @@ -11044,20 +9559,20 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public FileNumberContext fileNumber() { FileNumberContext _localctx = new FileNumberContext(_ctx, State); - EnterRule(_localctx, 206, RULE_fileNumber); + EnterRule(_localctx, 174, RULE_fileNumber); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2004; + State = 1755; _la = _input.La(1); if (_la==HASH) { { - State = 2003; Match(HASH); + State = 1754; Match(HASH); } } - State = 2006; valueStmt(0); + State = 1757; valueStmt(0); } } catch (RecognitionException re) { @@ -11072,11 +9587,12 @@ public FileNumberContext fileNumber() { } public partial class ExplicitCallStmtContext : ParserRuleContext { - public ECS_ProcedureCallContext eCS_ProcedureCall() { - return GetRuleContext(0); + public ITerminalNode CALL() { return GetToken(VBAParser.CALL, 0); } + public ExplicitCallStmtExpressionContext explicitCallStmtExpression() { + return GetRuleContext(0); } - public ECS_MemberProcedureCallContext eCS_MemberProcedureCall() { - return GetRuleContext(0); + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } public ExplicitCallStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) @@ -11101,23 +9617,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ExplicitCallStmtContext explicitCallStmt() { ExplicitCallStmtContext _localctx = new ExplicitCallStmtContext(_ctx, State); - EnterRule(_localctx, 208, RULE_explicitCallStmt); + EnterRule(_localctx, 176, RULE_explicitCallStmt); try { - State = 2010; - switch ( Interpreter.AdaptivePredict(_input,304,_ctx) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 2008; eCS_ProcedureCall(); - } - break; - - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 2009; eCS_MemberProcedureCall(); - } - break; + EnterOuterAlt(_localctx, 1); + { + State = 1759; Match(CALL); + State = 1760; whiteSpace(); + State = 1761; explicitCallStmtExpression(); } } catch (RecognitionException re) { @@ -11131,18 +9637,19 @@ public ExplicitCallStmtContext explicitCallStmt() { return _localctx; } - public partial class ECS_ProcedureCallContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode RPAREN(int i) { - return GetToken(VBAParser.RPAREN, i); + public partial class ExplicitCallStmtExpressionContext : ParserRuleContext { + public ExplicitCallStmtExpressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { } - public IReadOnlyList LPAREN() { return GetTokens(VBAParser.LPAREN); } - public ITerminalNode CALL() { return GetToken(VBAParser.CALL, 0); } - public TypeHintContext typeHint() { - return GetRuleContext(0); + public override int RuleIndex { get { return RULE_explicitCallStmtExpression; } } + + public ExplicitCallStmtExpressionContext() { } + public virtual void CopyFrom(ExplicitCallStmtExpressionContext context) { + base.CopyFrom(context); } + } + public partial class ECS_MemberCallContext : ExplicitCallStmtExpressionContext { public IReadOnlyList whiteSpace() { return GetRuleContexts(); } @@ -11153,129 +9660,55 @@ public ArgsCallContext argsCall() { public IdentifierContext identifier() { return GetRuleContext(0); } - public IReadOnlyList subscripts() { - return GetRuleContexts(); + public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { + return GetRuleContext(0); } public SubscriptsContext subscripts(int i) { return GetRuleContext(i); } + public ITerminalNode DOT() { return GetToken(VBAParser.DOT, 0); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode RPAREN(int i) { + return GetToken(VBAParser.RPAREN, i); + } + public IReadOnlyList LPAREN() { return GetTokens(VBAParser.LPAREN); } + public TypeHintContext typeHint() { + return GetRuleContext(0); + } + public IReadOnlyList subscripts() { + return GetRuleContexts(); + } public ITerminalNode LPAREN(int i) { return GetToken(VBAParser.LPAREN, i); } - public ECS_ProcedureCallContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_eCS_ProcedureCall; } } + public ECS_MemberCallContext(ExplicitCallStmtExpressionContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterECS_ProcedureCall(this); + if (typedListener != null) typedListener.EnterECS_MemberCall(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitECS_ProcedureCall(this); + if (typedListener != null) typedListener.ExitECS_MemberCall(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitECS_ProcedureCall(this); + if (typedVisitor != null) return typedVisitor.VisitECS_MemberCall(this); else return visitor.VisitChildren(this); } } - - [RuleVersion(0)] - public ECS_ProcedureCallContext eCS_ProcedureCall() { - ECS_ProcedureCallContext _localctx = new ECS_ProcedureCallContext(_ctx, State); - EnterRule(_localctx, 210, RULE_eCS_ProcedureCall); - int _la; - try { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 2012; Match(CALL); - State = 2013; whiteSpace(); - State = 2014; identifier(); - State = 2016; - switch ( Interpreter.AdaptivePredict(_input,305,_ctx) ) { - case 1: - { - State = 2015; typeHint(); - } - break; - } - State = 2031; - switch ( Interpreter.AdaptivePredict(_input,309,_ctx) ) { - case 1: - { - State = 2019; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 2018; whiteSpace(); - } - } - - State = 2021; Match(LPAREN); - State = 2023; - switch ( Interpreter.AdaptivePredict(_input,307,_ctx) ) { - case 1: - { - State = 2022; whiteSpace(); - } - break; - } - State = 2025; argsCall(); - State = 2027; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 2026; whiteSpace(); - } - } - - State = 2029; Match(RPAREN); - } - break; - } - State = 2042; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,311,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 2034; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 2033; whiteSpace(); - } - } - - State = 2036; Match(LPAREN); - State = 2037; subscripts(); - State = 2038; Match(RPAREN); - } - } - } - State = 2044; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,311,_ctx); - } - } + public partial class ECS_ProcedureCallContext : ExplicitCallStmtExpressionContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); + public ITerminalNode RPAREN(int i) { + return GetToken(VBAParser.RPAREN, i); } - finally { - ExitRule(); + public IReadOnlyList LPAREN() { return GetTokens(VBAParser.LPAREN); } + public TypeHintContext typeHint() { + return GetRuleContext(0); } - return _localctx; - } - - public partial class ECS_MemberProcedureCallContext : ParserRuleContext { - public ITerminalNode CALL() { return GetToken(VBAParser.CALL, 0); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } @@ -11286,137 +9719,198 @@ public ArgsCallContext argsCall() { public IdentifierContext identifier() { return GetRuleContext(0); } - public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { - return GetRuleContext(0); + public IReadOnlyList subscripts() { + return GetRuleContexts(); } public SubscriptsContext subscripts(int i) { return GetRuleContext(i); } - public ITerminalNode DOT() { return GetToken(VBAParser.DOT, 0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public ITerminalNode RPAREN(int i) { - return GetToken(VBAParser.RPAREN, i); - } - public IReadOnlyList LPAREN() { return GetTokens(VBAParser.LPAREN); } - public TypeHintContext typeHint() { - return GetRuleContext(0); - } - public IReadOnlyList subscripts() { - return GetRuleContexts(); - } public ITerminalNode LPAREN(int i) { return GetToken(VBAParser.LPAREN, i); } - public ECS_MemberProcedureCallContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_eCS_MemberProcedureCall; } } + public ECS_ProcedureCallContext(ExplicitCallStmtExpressionContext context) { CopyFrom(context); } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterECS_MemberProcedureCall(this); + if (typedListener != null) typedListener.EnterECS_ProcedureCall(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitECS_MemberProcedureCall(this); + if (typedListener != null) typedListener.ExitECS_ProcedureCall(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitECS_MemberProcedureCall(this); + if (typedVisitor != null) return typedVisitor.VisitECS_ProcedureCall(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ECS_MemberProcedureCallContext eCS_MemberProcedureCall() { - ECS_MemberProcedureCallContext _localctx = new ECS_MemberProcedureCallContext(_ctx, State); - EnterRule(_localctx, 212, RULE_eCS_MemberProcedureCall); + public ExplicitCallStmtExpressionContext explicitCallStmtExpression() { + ExplicitCallStmtExpressionContext _localctx = new ExplicitCallStmtExpressionContext(_ctx, State); + EnterRule(_localctx, 178, RULE_explicitCallStmtExpression); int _la; try { int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 2045; Match(CALL); - State = 2046; whiteSpace(); - State = 2048; - switch ( Interpreter.AdaptivePredict(_input,312,_ctx) ) { + State = 1829; + switch ( Interpreter.AdaptivePredict(_input,282,_ctx) ) { case 1: + _localctx = new ECS_MemberCallContext(_localctx); + EnterOuterAlt(_localctx, 1); { - State = 2047; implicitCallStmt_InStmt(); + State = 1764; + switch ( Interpreter.AdaptivePredict(_input,267,_ctx) ) { + case 1: + { + State = 1763; implicitCallStmt_InStmt(); + } + break; } - break; - } - State = 2050; Match(DOT); - State = 2051; identifier(); - State = 2053; - switch ( Interpreter.AdaptivePredict(_input,313,_ctx) ) { - case 1: - { - State = 2052; typeHint(); + State = 1766; Match(DOT); + State = 1767; identifier(); + State = 1769; + switch ( Interpreter.AdaptivePredict(_input,268,_ctx) ) { + case 1: + { + State = 1768; typeHint(); + } + break; } - break; - } - State = 2068; - switch ( Interpreter.AdaptivePredict(_input,317,_ctx) ) { - case 1: - { - State = 2056; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 1784; + switch ( Interpreter.AdaptivePredict(_input,272,_ctx) ) { + case 1: { - State = 2055; whiteSpace(); + State = 1772; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1771; whiteSpace(); + } } + + State = 1774; Match(LPAREN); + State = 1776; + switch ( Interpreter.AdaptivePredict(_input,270,_ctx) ) { + case 1: + { + State = 1775; whiteSpace(); + } + break; + } + State = 1778; argsCall(); + State = 1780; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1779; whiteSpace(); + } + } + + State = 1782; Match(RPAREN); + } + break; + } + State = 1795; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,274,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 1787; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1786; whiteSpace(); + } + } + + State = 1789; Match(LPAREN); + State = 1790; subscripts(); + State = 1791; Match(RPAREN); + } + } + } + State = 1797; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,274,_ctx); } + } + break; - State = 2058; Match(LPAREN); - State = 2060; - switch ( Interpreter.AdaptivePredict(_input,315,_ctx) ) { + case 2: + _localctx = new ECS_ProcedureCallContext(_localctx); + EnterOuterAlt(_localctx, 2); + { + State = 1798; identifier(); + State = 1800; + switch ( Interpreter.AdaptivePredict(_input,275,_ctx) ) { case 1: { - State = 2059; whiteSpace(); + State = 1799; typeHint(); } break; } - State = 2062; argsCall(); - State = 2064; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 1815; + switch ( Interpreter.AdaptivePredict(_input,279,_ctx) ) { + case 1: { - State = 2063; whiteSpace(); + State = 1803; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1802; whiteSpace(); + } } - } - State = 2066; Match(RPAREN); - } - break; - } - State = 2079; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,319,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 2071; + State = 1805; Match(LPAREN); + State = 1807; + switch ( Interpreter.AdaptivePredict(_input,277,_ctx) ) { + case 1: + { + State = 1806; whiteSpace(); + } + break; + } + State = 1809; argsCall(); + State = 1811; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2070; whiteSpace(); + State = 1810; whiteSpace(); } } - State = 2073; Match(LPAREN); - State = 2074; subscripts(); - State = 2075; Match(RPAREN); + State = 1813; Match(RPAREN); } - } + break; } - State = 2081; + State = 1826; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,319,_ctx); - } + _alt = Interpreter.AdaptivePredict(_input,281,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 1818; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1817; whiteSpace(); + } + } + + State = 1820; Match(LPAREN); + State = 1821; subscripts(); + State = 1822; Match(RPAREN); + } + } + } + State = 1828; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,281,_ctx); + } + } + break; } } catch (RecognitionException re) { @@ -11460,21 +9954,21 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ImplicitCallStmt_InBlockContext implicitCallStmt_InBlock() { ImplicitCallStmt_InBlockContext _localctx = new ImplicitCallStmt_InBlockContext(_ctx, State); - EnterRule(_localctx, 214, RULE_implicitCallStmt_InBlock); + EnterRule(_localctx, 180, RULE_implicitCallStmt_InBlock); try { - State = 2084; - switch ( Interpreter.AdaptivePredict(_input,320,_ctx) ) { + State = 1833; + switch ( Interpreter.AdaptivePredict(_input,283,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2082; iCS_B_MemberProcedureCall(); + State = 1831; iCS_B_MemberProcedureCall(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2083; iCS_B_ProcedureCall(); + State = 1832; iCS_B_ProcedureCall(); } break; } @@ -11498,9 +9992,6 @@ public ArgsCallContext argsCall() { return GetRuleContext(0); } public IReadOnlyList RPAREN() { return GetTokens(VBAParser.RPAREN); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { return GetRuleContext(0); } @@ -11521,6 +10012,9 @@ public ITerminalNode RPAREN(int i) { public TypeHintContext typeHint() { return GetRuleContext(0); } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); + } public IReadOnlyList subscripts() { return GetRuleContexts(); } @@ -11550,95 +10044,95 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ICS_B_MemberProcedureCallContext iCS_B_MemberProcedureCall() { ICS_B_MemberProcedureCallContext _localctx = new ICS_B_MemberProcedureCallContext(_ctx, State); - EnterRule(_localctx, 216, RULE_iCS_B_MemberProcedureCall); + EnterRule(_localctx, 182, RULE_iCS_B_MemberProcedureCall); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2087; - switch ( Interpreter.AdaptivePredict(_input,321,_ctx) ) { + State = 1836; + switch ( Interpreter.AdaptivePredict(_input,284,_ctx) ) { case 1: { - State = 2086; implicitCallStmt_InStmt(); + State = 1835; implicitCallStmt_InStmt(); } break; } - State = 2090; + State = 1839; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2089; whiteSpace(); + State = 1838; whiteSpace(); } } - State = 2092; Match(DOT); - State = 2094; + State = 1841; Match(DOT); + State = 1843; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2093; whiteSpace(); + State = 1842; whiteSpace(); } } - State = 2096; identifier(); - State = 2098; - switch ( Interpreter.AdaptivePredict(_input,324,_ctx) ) { + State = 1845; unrestrictedIdentifier(); + State = 1847; + switch ( Interpreter.AdaptivePredict(_input,287,_ctx) ) { case 1: { - State = 2097; typeHint(); + State = 1846; typeHint(); } break; } - State = 2103; - switch ( Interpreter.AdaptivePredict(_input,325,_ctx) ) { + State = 1852; + switch ( Interpreter.AdaptivePredict(_input,288,_ctx) ) { case 1: { - State = 2100; whiteSpace(); - State = 2101; argsCall(); + State = 1849; whiteSpace(); + State = 1850; argsCall(); } break; } - State = 2109; - switch ( Interpreter.AdaptivePredict(_input,327,_ctx) ) { + State = 1858; + switch ( Interpreter.AdaptivePredict(_input,290,_ctx) ) { case 1: { - State = 2106; + State = 1855; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2105; whiteSpace(); + State = 1854; whiteSpace(); } } - State = 2108; dictionaryCallStmt(); + State = 1857; dictionaryCallStmt(); } break; } - State = 2120; + State = 1869; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,329,_ctx); + _alt = Interpreter.AdaptivePredict(_input,292,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2112; + State = 1861; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2111; whiteSpace(); + State = 1860; whiteSpace(); } } - State = 2114; Match(LPAREN); - State = 2115; subscripts(); - State = 2116; Match(RPAREN); + State = 1863; Match(LPAREN); + State = 1864; subscripts(); + State = 1865; Match(RPAREN); } } } - State = 2122; + State = 1871; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,329,_ctx); + _alt = Interpreter.AdaptivePredict(_input,292,_ctx); } } } @@ -11703,46 +10197,46 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ICS_B_ProcedureCallContext iCS_B_ProcedureCall() { ICS_B_ProcedureCallContext _localctx = new ICS_B_ProcedureCallContext(_ctx, State); - EnterRule(_localctx, 218, RULE_iCS_B_ProcedureCall); + EnterRule(_localctx, 184, RULE_iCS_B_ProcedureCall); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2123; identifier(); - State = 2127; - switch ( Interpreter.AdaptivePredict(_input,330,_ctx) ) { + State = 1872; identifier(); + State = 1876; + switch ( Interpreter.AdaptivePredict(_input,293,_ctx) ) { case 1: { - State = 2124; whiteSpace(); - State = 2125; argsCall(); + State = 1873; whiteSpace(); + State = 1874; argsCall(); } break; } - State = 2138; + State = 1887; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,332,_ctx); + _alt = Interpreter.AdaptivePredict(_input,295,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2130; + State = 1879; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2129; whiteSpace(); + State = 1878; whiteSpace(); } } - State = 2132; Match(LPAREN); - State = 2133; subscripts(); - State = 2134; Match(RPAREN); + State = 1881; Match(LPAREN); + State = 1882; subscripts(); + State = 1883; Match(RPAREN); } } } - State = 2140; + State = 1889; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,332,_ctx); + _alt = Interpreter.AdaptivePredict(_input,295,_ctx); } } } @@ -11793,38 +10287,335 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { ImplicitCallStmt_InStmtContext _localctx = new ImplicitCallStmt_InStmtContext(_ctx, State); - EnterRule(_localctx, 220, RULE_implicitCallStmt_InStmt); + EnterRule(_localctx, 186, RULE_implicitCallStmt_InStmt); + try { + State = 1894; + switch ( Interpreter.AdaptivePredict(_input,296,_ctx) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 1890; iCS_S_MembersCall(); + } + break; + + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 1891; iCS_S_VariableOrProcedureCall(); + } + break; + + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 1892; iCS_S_ProcedureOrArrayCall(); + } + break; + + case 4: + EnterOuterAlt(_localctx, 4); + { + State = 1893; iCS_S_DictionaryCall(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ICS_S_VariableOrProcedureCallContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode RPAREN(int i) { + return GetToken(VBAParser.RPAREN, i); + } + public IReadOnlyList LPAREN() { return GetTokens(VBAParser.LPAREN); } + public TypeHintContext typeHint() { + return GetRuleContext(0); + } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public IReadOnlyList RPAREN() { return GetTokens(VBAParser.RPAREN); } + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public IReadOnlyList subscripts() { + return GetRuleContexts(); + } + public SubscriptsContext subscripts(int i) { + return GetRuleContext(i); + } + public DictionaryCallStmtContext dictionaryCallStmt() { + return GetRuleContext(0); + } + public ITerminalNode LPAREN(int i) { + return GetToken(VBAParser.LPAREN, i); + } + public ICS_S_VariableOrProcedureCallContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_iCS_S_VariableOrProcedureCall; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterICS_S_VariableOrProcedureCall(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitICS_S_VariableOrProcedureCall(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitICS_S_VariableOrProcedureCall(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ICS_S_VariableOrProcedureCallContext iCS_S_VariableOrProcedureCall() { + ICS_S_VariableOrProcedureCallContext _localctx = new ICS_S_VariableOrProcedureCallContext(_ctx, State); + EnterRule(_localctx, 188, RULE_iCS_S_VariableOrProcedureCall); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1896; identifier(); + State = 1898; + switch ( Interpreter.AdaptivePredict(_input,297,_ctx) ) { + case 1: + { + State = 1897; typeHint(); + } + break; + } + State = 1904; + switch ( Interpreter.AdaptivePredict(_input,299,_ctx) ) { + case 1: + { + State = 1901; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1900; whiteSpace(); + } + } + + State = 1903; dictionaryCallStmt(); + } + break; + } + State = 1915; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,301,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 1907; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1906; whiteSpace(); + } + } + + State = 1909; Match(LPAREN); + State = 1910; subscripts(); + State = 1911; Match(RPAREN); + } + } + } + State = 1917; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,301,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ICS_S_ProcedureOrArrayCallContext : ParserRuleContext { + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public IReadOnlyList RPAREN() { return GetTokens(VBAParser.RPAREN); } + public ArgsCallContext argsCall() { + return GetRuleContext(0); + } + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public BaseTypeContext baseType() { + return GetRuleContext(0); + } + public SubscriptsContext subscripts(int i) { + return GetRuleContext(i); + } + public DictionaryCallStmtContext dictionaryCallStmt() { + return GetRuleContext(0); + } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode RPAREN(int i) { + return GetToken(VBAParser.RPAREN, i); + } + public IReadOnlyList LPAREN() { return GetTokens(VBAParser.LPAREN); } + public TypeHintContext typeHint() { + return GetRuleContext(0); + } + public IReadOnlyList subscripts() { + return GetRuleContexts(); + } + public ITerminalNode LPAREN(int i) { + return GetToken(VBAParser.LPAREN, i); + } + public ICS_S_ProcedureOrArrayCallContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_iCS_S_ProcedureOrArrayCall; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterICS_S_ProcedureOrArrayCall(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitICS_S_ProcedureOrArrayCall(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitICS_S_ProcedureOrArrayCall(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ICS_S_ProcedureOrArrayCallContext iCS_S_ProcedureOrArrayCall() { + ICS_S_ProcedureOrArrayCallContext _localctx = new ICS_S_ProcedureOrArrayCallContext(_ctx, State); + EnterRule(_localctx, 190, RULE_iCS_S_ProcedureOrArrayCall); + int _la; try { - State = 2145; - switch ( Interpreter.AdaptivePredict(_input,333,_ctx) ) { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 1920; + switch ( Interpreter.AdaptivePredict(_input,302,_ctx) ) { case 1: - EnterOuterAlt(_localctx, 1); { - State = 2141; iCS_S_MembersCall(); + State = 1918; identifier(); } break; case 2: - EnterOuterAlt(_localctx, 2); { - State = 2142; iCS_S_VariableOrProcedureCall(); + State = 1919; baseType(); } break; + } + State = 1923; + _la = _input.La(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { + { + State = 1922; typeHint(); + } + } - case 3: - EnterOuterAlt(_localctx, 3); + State = 1926; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1925; whiteSpace(); + } + } + + State = 1928; Match(LPAREN); + State = 1930; + switch ( Interpreter.AdaptivePredict(_input,305,_ctx) ) { + case 1: { - State = 2143; iCS_S_ProcedureOrArrayCall(); + State = 1929; whiteSpace(); } break; + } + State = 1936; + switch ( Interpreter.AdaptivePredict(_input,307,_ctx) ) { + case 1: + { + State = 1932; argsCall(); + State = 1934; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1933; whiteSpace(); + } + } - case 4: - EnterOuterAlt(_localctx, 4); + } + break; + } + State = 1938; Match(RPAREN); + State = 1943; + switch ( Interpreter.AdaptivePredict(_input,309,_ctx) ) { + case 1: { - State = 2144; iCS_S_DictionaryCall(); + State = 1940; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1939; whiteSpace(); + } + } + + State = 1942; dictionaryCallStmt(); } break; } + State = 1954; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,311,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 1946; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1945; whiteSpace(); + } + } + + State = 1948; Match(LPAREN); + State = 1949; subscripts(); + State = 1950; Match(RPAREN); + } + } + } + State = 1956; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,311,_ctx); + } + } } catch (RecognitionException re) { _localctx.exception = re; @@ -11837,7 +10628,7 @@ public ImplicitCallStmt_InStmtContext implicitCallStmt_InStmt() { return _localctx; } - public partial class ICS_S_VariableOrProcedureCallContext : ParserRuleContext { + public partial class ICS_S_VariableOrProcedureCallUnrestrictedContext : ParserRuleContext { public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } @@ -11848,13 +10639,13 @@ public ITerminalNode RPAREN(int i) { public TypeHintContext typeHint() { return GetRuleContext(0); } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); + } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } public IReadOnlyList RPAREN() { return GetTokens(VBAParser.RPAREN); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } public IReadOnlyList subscripts() { return GetRuleContexts(); } @@ -11867,84 +10658,84 @@ public DictionaryCallStmtContext dictionaryCallStmt() { public ITerminalNode LPAREN(int i) { return GetToken(VBAParser.LPAREN, i); } - public ICS_S_VariableOrProcedureCallContext(ParserRuleContext parent, int invokingState) + public ICS_S_VariableOrProcedureCallUnrestrictedContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_iCS_S_VariableOrProcedureCall; } } + public override int RuleIndex { get { return RULE_iCS_S_VariableOrProcedureCallUnrestricted; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterICS_S_VariableOrProcedureCall(this); + if (typedListener != null) typedListener.EnterICS_S_VariableOrProcedureCallUnrestricted(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitICS_S_VariableOrProcedureCall(this); + if (typedListener != null) typedListener.ExitICS_S_VariableOrProcedureCallUnrestricted(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitICS_S_VariableOrProcedureCall(this); + if (typedVisitor != null) return typedVisitor.VisitICS_S_VariableOrProcedureCallUnrestricted(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ICS_S_VariableOrProcedureCallContext iCS_S_VariableOrProcedureCall() { - ICS_S_VariableOrProcedureCallContext _localctx = new ICS_S_VariableOrProcedureCallContext(_ctx, State); - EnterRule(_localctx, 222, RULE_iCS_S_VariableOrProcedureCall); + public ICS_S_VariableOrProcedureCallUnrestrictedContext iCS_S_VariableOrProcedureCallUnrestricted() { + ICS_S_VariableOrProcedureCallUnrestrictedContext _localctx = new ICS_S_VariableOrProcedureCallUnrestrictedContext(_ctx, State); + EnterRule(_localctx, 192, RULE_iCS_S_VariableOrProcedureCallUnrestricted); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2147; identifier(); - State = 2149; - switch ( Interpreter.AdaptivePredict(_input,334,_ctx) ) { + State = 1957; unrestrictedIdentifier(); + State = 1959; + switch ( Interpreter.AdaptivePredict(_input,312,_ctx) ) { case 1: { - State = 2148; typeHint(); + State = 1958; typeHint(); } break; } - State = 2155; - switch ( Interpreter.AdaptivePredict(_input,336,_ctx) ) { + State = 1965; + switch ( Interpreter.AdaptivePredict(_input,314,_ctx) ) { case 1: { - State = 2152; + State = 1962; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2151; whiteSpace(); + State = 1961; whiteSpace(); } } - State = 2154; dictionaryCallStmt(); + State = 1964; dictionaryCallStmt(); } break; } - State = 2166; + State = 1976; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,338,_ctx); + _alt = Interpreter.AdaptivePredict(_input,316,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2158; + State = 1968; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2157; whiteSpace(); + State = 1967; whiteSpace(); } } - State = 2160; Match(LPAREN); - State = 2161; subscripts(); - State = 2162; Match(RPAREN); + State = 1970; Match(LPAREN); + State = 1971; subscripts(); + State = 1972; Match(RPAREN); } } } - State = 2168; + State = 1978; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,338,_ctx); + _alt = Interpreter.AdaptivePredict(_input,316,_ctx); } } } @@ -11959,7 +10750,7 @@ public ICS_S_VariableOrProcedureCallContext iCS_S_VariableOrProcedureCall() { return _localctx; } - public partial class ICS_S_ProcedureOrArrayCallContext : ParserRuleContext { + public partial class ICS_S_ProcedureOrArrayCallUnrestrictedContext : ParserRuleContext { public IReadOnlyList whiteSpace() { return GetRuleContexts(); } @@ -11967,9 +10758,6 @@ public IReadOnlyList whiteSpace() { public ArgsCallContext argsCall() { return GetRuleContext(0); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } public BaseTypeContext baseType() { return GetRuleContext(0); } @@ -11989,137 +10777,140 @@ public ITerminalNode RPAREN(int i) { public TypeHintContext typeHint() { return GetRuleContext(0); } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); + } public IReadOnlyList subscripts() { return GetRuleContexts(); } public ITerminalNode LPAREN(int i) { return GetToken(VBAParser.LPAREN, i); } - public ICS_S_ProcedureOrArrayCallContext(ParserRuleContext parent, int invokingState) + public ICS_S_ProcedureOrArrayCallUnrestrictedContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_iCS_S_ProcedureOrArrayCall; } } + public override int RuleIndex { get { return RULE_iCS_S_ProcedureOrArrayCallUnrestricted; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterICS_S_ProcedureOrArrayCall(this); + if (typedListener != null) typedListener.EnterICS_S_ProcedureOrArrayCallUnrestricted(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitICS_S_ProcedureOrArrayCall(this); + if (typedListener != null) typedListener.ExitICS_S_ProcedureOrArrayCallUnrestricted(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitICS_S_ProcedureOrArrayCall(this); + if (typedVisitor != null) return typedVisitor.VisitICS_S_ProcedureOrArrayCallUnrestricted(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ICS_S_ProcedureOrArrayCallContext iCS_S_ProcedureOrArrayCall() { - ICS_S_ProcedureOrArrayCallContext _localctx = new ICS_S_ProcedureOrArrayCallContext(_ctx, State); - EnterRule(_localctx, 224, RULE_iCS_S_ProcedureOrArrayCall); + public ICS_S_ProcedureOrArrayCallUnrestrictedContext iCS_S_ProcedureOrArrayCallUnrestricted() { + ICS_S_ProcedureOrArrayCallUnrestrictedContext _localctx = new ICS_S_ProcedureOrArrayCallUnrestrictedContext(_ctx, State); + EnterRule(_localctx, 194, RULE_iCS_S_ProcedureOrArrayCallUnrestricted); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2171; - switch ( Interpreter.AdaptivePredict(_input,339,_ctx) ) { + State = 1981; + switch ( Interpreter.AdaptivePredict(_input,317,_ctx) ) { case 1: { - State = 2169; identifier(); + State = 1979; unrestrictedIdentifier(); } break; case 2: { - State = 2170; baseType(); + State = 1980; baseType(); } break; } - State = 2174; + State = 1984; _la = _input.La(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { { - State = 2173; typeHint(); + State = 1983; typeHint(); } } - State = 2177; + State = 1987; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2176; whiteSpace(); + State = 1986; whiteSpace(); } } - State = 2179; Match(LPAREN); - State = 2181; - switch ( Interpreter.AdaptivePredict(_input,342,_ctx) ) { + State = 1989; Match(LPAREN); + State = 1991; + switch ( Interpreter.AdaptivePredict(_input,320,_ctx) ) { case 1: { - State = 2180; whiteSpace(); + State = 1990; whiteSpace(); } break; } - State = 2187; - switch ( Interpreter.AdaptivePredict(_input,344,_ctx) ) { + State = 1997; + switch ( Interpreter.AdaptivePredict(_input,322,_ctx) ) { case 1: { - State = 2183; argsCall(); - State = 2185; + State = 1993; argsCall(); + State = 1995; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2184; whiteSpace(); + State = 1994; whiteSpace(); } } } break; } - State = 2189; Match(RPAREN); - State = 2194; - switch ( Interpreter.AdaptivePredict(_input,346,_ctx) ) { + State = 1999; Match(RPAREN); + State = 2004; + switch ( Interpreter.AdaptivePredict(_input,324,_ctx) ) { case 1: { - State = 2191; + State = 2001; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2190; whiteSpace(); + State = 2000; whiteSpace(); } } - State = 2193; dictionaryCallStmt(); + State = 2003; dictionaryCallStmt(); } break; } - State = 2205; + State = 2015; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,348,_ctx); + _alt = Interpreter.AdaptivePredict(_input,326,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2197; + State = 2007; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2196; whiteSpace(); + State = 2006; whiteSpace(); } } - State = 2199; Match(LPAREN); - State = 2200; subscripts(); - State = 2201; Match(RPAREN); + State = 2009; Match(LPAREN); + State = 2010; subscripts(); + State = 2011; Match(RPAREN); } } } - State = 2207; + State = 2017; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,348,_ctx); + _alt = Interpreter.AdaptivePredict(_input,326,_ctx); } } } @@ -12193,27 +10984,27 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ICS_S_MembersCallContext iCS_S_MembersCall() { ICS_S_MembersCallContext _localctx = new ICS_S_MembersCallContext(_ctx, State); - EnterRule(_localctx, 226, RULE_iCS_S_MembersCall); + EnterRule(_localctx, 196, RULE_iCS_S_MembersCall); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2210; - switch ( Interpreter.AdaptivePredict(_input,349,_ctx) ) { + State = 2020; + switch ( Interpreter.AdaptivePredict(_input,327,_ctx) ) { case 1: { - State = 2208; iCS_S_VariableOrProcedureCall(); + State = 2018; iCS_S_VariableOrProcedureCall(); } break; case 2: { - State = 2209; iCS_S_ProcedureOrArrayCall(); + State = 2019; iCS_S_ProcedureOrArrayCall(); } break; } - State = 2216; + State = 2026; _errHandler.Sync(this); _alt = 1; do { @@ -12221,12 +11012,12 @@ public ICS_S_MembersCallContext iCS_S_MembersCall() { case 1: { { - State = 2212; iCS_S_MemberCall(); - State = 2214; - switch ( Interpreter.AdaptivePredict(_input,350,_ctx) ) { + State = 2022; iCS_S_MemberCall(); + State = 2024; + switch ( Interpreter.AdaptivePredict(_input,328,_ctx) ) { case 1: { - State = 2213; whiteSpace(); + State = 2023; whiteSpace(); } break; } @@ -12236,50 +11027,50 @@ public ICS_S_MembersCallContext iCS_S_MembersCall() { default: throw new NoViableAltException(this); } - State = 2218; + State = 2028; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,351,_ctx); + _alt = Interpreter.AdaptivePredict(_input,329,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - State = 2224; - switch ( Interpreter.AdaptivePredict(_input,353,_ctx) ) { + State = 2034; + switch ( Interpreter.AdaptivePredict(_input,331,_ctx) ) { case 1: { - State = 2221; + State = 2031; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2220; whiteSpace(); + State = 2030; whiteSpace(); } } - State = 2223; dictionaryCallStmt(); + State = 2033; dictionaryCallStmt(); } break; } - State = 2235; + State = 2045; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,355,_ctx); + _alt = Interpreter.AdaptivePredict(_input,333,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2227; + State = 2037; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2226; whiteSpace(); + State = 2036; whiteSpace(); } } - State = 2229; Match(LPAREN); - State = 2230; subscripts(); - State = 2231; Match(RPAREN); + State = 2039; Match(LPAREN); + State = 2040; subscripts(); + State = 2041; Match(RPAREN); } } } - State = 2237; + State = 2047; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,355,_ctx); + _alt = Interpreter.AdaptivePredict(_input,333,_ctx); } } } @@ -12296,16 +11087,16 @@ public ICS_S_MembersCallContext iCS_S_MembersCall() { public partial class ICS_S_MemberCallContext : ParserRuleContext { public ITerminalNode DOT() { return GetToken(VBAParser.DOT, 0); } + public ICS_S_ProcedureOrArrayCallUnrestrictedContext iCS_S_ProcedureOrArrayCallUnrestricted() { + return GetRuleContext(0); + } + public ICS_S_VariableOrProcedureCallUnrestrictedContext iCS_S_VariableOrProcedureCallUnrestricted() { + return GetRuleContext(0); + } public ITerminalNode EXCLAMATIONPOINT() { return GetToken(VBAParser.EXCLAMATIONPOINT, 0); } public WhiteSpaceContext whiteSpace() { return GetRuleContext(0); } - public ICS_S_VariableOrProcedureCallContext iCS_S_VariableOrProcedureCall() { - return GetRuleContext(0); - } - public ICS_S_ProcedureOrArrayCallContext iCS_S_ProcedureOrArrayCall() { - return GetRuleContext(0); - } public ICS_S_MemberCallContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -12329,36 +11120,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ICS_S_MemberCallContext iCS_S_MemberCall() { ICS_S_MemberCallContext _localctx = new ICS_S_MemberCallContext(_ctx, State); - EnterRule(_localctx, 228, RULE_iCS_S_MemberCall); + EnterRule(_localctx, 198, RULE_iCS_S_MemberCall); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2238; + State = 2048; _la = _input.La(1); if ( !(_la==EXCLAMATIONPOINT || _la==DOT) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2240; + State = 2050; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2239; whiteSpace(); + State = 2049; whiteSpace(); } } - State = 2244; - switch ( Interpreter.AdaptivePredict(_input,357,_ctx) ) { + State = 2054; + switch ( Interpreter.AdaptivePredict(_input,335,_ctx) ) { case 1: { - State = 2242; iCS_S_VariableOrProcedureCall(); + State = 2052; iCS_S_VariableOrProcedureCallUnrestricted(); } break; case 2: { - State = 2243; iCS_S_ProcedureOrArrayCall(); + State = 2053; iCS_S_ProcedureOrArrayCallUnrestricted(); } break; } @@ -12405,20 +11196,20 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ICS_S_DictionaryCallContext iCS_S_DictionaryCall() { ICS_S_DictionaryCallContext _localctx = new ICS_S_DictionaryCallContext(_ctx, State); - EnterRule(_localctx, 230, RULE_iCS_S_DictionaryCall); + EnterRule(_localctx, 200, RULE_iCS_S_DictionaryCall); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2247; + State = 2057; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2246; whiteSpace(); + State = 2056; whiteSpace(); } } - State = 2249; dictionaryCallStmt(); + State = 2059; dictionaryCallStmt(); } } catch (RecognitionException re) { @@ -12476,100 +11267,100 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ArgsCallContext argsCall() { ArgsCallContext _localctx = new ArgsCallContext(_ctx, State); - EnterRule(_localctx, 232, RULE_argsCall); + EnterRule(_localctx, 202, RULE_argsCall); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2263; + State = 2073; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,362,_ctx); + _alt = Interpreter.AdaptivePredict(_input,340,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2252; - switch ( Interpreter.AdaptivePredict(_input,359,_ctx) ) { + State = 2062; + switch ( Interpreter.AdaptivePredict(_input,337,_ctx) ) { case 1: { - State = 2251; argCall(); + State = 2061; argCall(); } break; } - State = 2255; + State = 2065; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2254; whiteSpace(); + State = 2064; whiteSpace(); } } - State = 2257; + State = 2067; _la = _input.La(1); if ( !(_la==COMMA || _la==SEMICOLON) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2259; - switch ( Interpreter.AdaptivePredict(_input,361,_ctx) ) { + State = 2069; + switch ( Interpreter.AdaptivePredict(_input,339,_ctx) ) { case 1: { - State = 2258; whiteSpace(); + State = 2068; whiteSpace(); } break; } } } } - State = 2265; + State = 2075; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,362,_ctx); + _alt = Interpreter.AdaptivePredict(_input,340,_ctx); } - State = 2266; argCall(); - State = 2279; + State = 2076; argCall(); + State = 2089; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,366,_ctx); + _alt = Interpreter.AdaptivePredict(_input,344,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2268; + State = 2078; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2267; whiteSpace(); + State = 2077; whiteSpace(); } } - State = 2270; + State = 2080; _la = _input.La(1); if ( !(_la==COMMA || _la==SEMICOLON) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2272; - switch ( Interpreter.AdaptivePredict(_input,364,_ctx) ) { + State = 2082; + switch ( Interpreter.AdaptivePredict(_input,342,_ctx) ) { case 1: { - State = 2271; whiteSpace(); + State = 2081; whiteSpace(); } break; } - State = 2275; - switch ( Interpreter.AdaptivePredict(_input,365,_ctx) ) { + State = 2085; + switch ( Interpreter.AdaptivePredict(_input,343,_ctx) ) { case 1: { - State = 2274; argCall(); + State = 2084; argCall(); } break; } } } } - State = 2281; + State = 2091; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,366,_ctx); + _alt = Interpreter.AdaptivePredict(_input,344,_ctx); } } } @@ -12619,42 +11410,42 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ArgCallContext argCall() { ArgCallContext _localctx = new ArgCallContext(_ctx, State); - EnterRule(_localctx, 234, RULE_argCall); + EnterRule(_localctx, 204, RULE_argCall); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2283; - switch ( Interpreter.AdaptivePredict(_input,367,_ctx) ) { + State = 2093; + switch ( Interpreter.AdaptivePredict(_input,345,_ctx) ) { case 1: { - State = 2282; Match(LPAREN); + State = 2092; Match(LPAREN); } break; } - State = 2287; - switch ( Interpreter.AdaptivePredict(_input,368,_ctx) ) { + State = 2097; + switch ( Interpreter.AdaptivePredict(_input,346,_ctx) ) { case 1: { - State = 2285; + State = 2095; _la = _input.La(1); if ( !(_la==BYVAL || _la==BYREF || _la==PARAMARRAY) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2286; whiteSpace(); + State = 2096; whiteSpace(); } break; } - State = 2290; + State = 2100; _la = _input.La(1); if (_la==RPAREN) { { - State = 2289; Match(RPAREN); + State = 2099; Match(RPAREN); } } - State = 2292; valueStmt(0); + State = 2102; valueStmt(0); } } catch (RecognitionException re) { @@ -12673,12 +11464,12 @@ public TypeHintContext typeHint() { return GetRuleContext(0); } public ITerminalNode EXCLAMATIONPOINT() { return GetToken(VBAParser.EXCLAMATIONPOINT, 0); } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); + } public WhiteSpaceContext whiteSpace() { return GetRuleContext(0); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } public DictionaryCallStmtContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -12702,26 +11493,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public DictionaryCallStmtContext dictionaryCallStmt() { DictionaryCallStmtContext _localctx = new DictionaryCallStmtContext(_ctx, State); - EnterRule(_localctx, 236, RULE_dictionaryCallStmt); + EnterRule(_localctx, 206, RULE_dictionaryCallStmt); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2294; Match(EXCLAMATIONPOINT); - State = 2296; + State = 2104; Match(EXCLAMATIONPOINT); + State = 2106; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2295; whiteSpace(); + State = 2105; whiteSpace(); } } - State = 2298; identifier(); - State = 2300; - switch ( Interpreter.AdaptivePredict(_input,371,_ctx) ) { + State = 2108; unrestrictedIdentifier(); + State = 2110; + switch ( Interpreter.AdaptivePredict(_input,349,_ctx) ) { case 1: { - State = 2299; typeHint(); + State = 2109; typeHint(); } break; } @@ -12780,70 +11571,70 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ArgListContext argList() { ArgListContext _localctx = new ArgListContext(_ctx, State); - EnterRule(_localctx, 238, RULE_argList); + EnterRule(_localctx, 208, RULE_argList); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2302; Match(LPAREN); - State = 2320; - switch ( Interpreter.AdaptivePredict(_input,376,_ctx) ) { + State = 2112; Match(LPAREN); + State = 2130; + switch ( Interpreter.AdaptivePredict(_input,354,_ctx) ) { case 1: { - State = 2304; + State = 2114; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2303; whiteSpace(); + State = 2113; whiteSpace(); } } - State = 2306; arg(); - State = 2317; + State = 2116; arg(); + State = 2127; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,375,_ctx); + _alt = Interpreter.AdaptivePredict(_input,353,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2308; + State = 2118; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2307; whiteSpace(); + State = 2117; whiteSpace(); } } - State = 2310; Match(COMMA); - State = 2312; + State = 2120; Match(COMMA); + State = 2122; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2311; whiteSpace(); + State = 2121; whiteSpace(); } } - State = 2314; arg(); + State = 2124; arg(); } } } - State = 2319; + State = 2129; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,375,_ctx); + _alt = Interpreter.AdaptivePredict(_input,353,_ctx); } } break; } - State = 2323; + State = 2133; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2322; whiteSpace(); + State = 2132; whiteSpace(); } } - State = 2325; Match(RPAREN); + State = 2135; Match(RPAREN); } } catch (RecognitionException re) { @@ -12870,6 +11661,9 @@ public TypeHintContext typeHint() { return GetRuleContext(0); } public ITerminalNode OPTIONAL() { return GetToken(VBAParser.OPTIONAL, 0); } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); + } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } @@ -12877,9 +11671,6 @@ public AsTypeClauseContext asTypeClause() { return GetRuleContext(0); } public ITerminalNode RPAREN() { return GetToken(VBAParser.RPAREN, 0); } - public IdentifierContext identifier() { - return GetRuleContext(0); - } public ITerminalNode PARAMARRAY() { return GetToken(VBAParser.PARAMARRAY, 0); } public ITerminalNode BYVAL() { return GetToken(VBAParser.BYVAL, 0); } public ArgContext(ParserRuleContext parent, int invokingState) @@ -12905,108 +11696,258 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ArgContext arg() { ArgContext _localctx = new ArgContext(_ctx, State); - EnterRule(_localctx, 240, RULE_arg); + EnterRule(_localctx, 210, RULE_arg); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2329; - switch ( Interpreter.AdaptivePredict(_input,378,_ctx) ) { + State = 2139; + switch ( Interpreter.AdaptivePredict(_input,356,_ctx) ) { case 1: { - State = 2327; Match(OPTIONAL); - State = 2328; whiteSpace(); + State = 2137; Match(OPTIONAL); + State = 2138; whiteSpace(); } break; } - State = 2333; - switch ( Interpreter.AdaptivePredict(_input,379,_ctx) ) { + State = 2143; + switch ( Interpreter.AdaptivePredict(_input,357,_ctx) ) { case 1: { - State = 2331; + State = 2141; _la = _input.La(1); if ( !(_la==BYVAL || _la==BYREF) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2332; whiteSpace(); + State = 2142; whiteSpace(); } break; } - State = 2337; - switch ( Interpreter.AdaptivePredict(_input,380,_ctx) ) { + State = 2147; + switch ( Interpreter.AdaptivePredict(_input,358,_ctx) ) { case 1: { - State = 2335; Match(PARAMARRAY); - State = 2336; whiteSpace(); + State = 2145; Match(PARAMARRAY); + State = 2146; whiteSpace(); } break; } - State = 2339; identifier(); - State = 2341; + State = 2149; unrestrictedIdentifier(); + State = 2151; _la = _input.La(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) { { - State = 2340; typeHint(); + State = 2150; typeHint(); } } - State = 2351; - switch ( Interpreter.AdaptivePredict(_input,384,_ctx) ) { + State = 2161; + switch ( Interpreter.AdaptivePredict(_input,362,_ctx) ) { case 1: { - State = 2344; + State = 2154; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2343; whiteSpace(); + State = 2153; whiteSpace(); } } - State = 2346; Match(LPAREN); - State = 2348; + State = 2156; Match(LPAREN); + State = 2158; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2347; whiteSpace(); + State = 2157; whiteSpace(); } } - State = 2350; Match(RPAREN); + State = 2160; Match(RPAREN); } break; } - State = 2357; - switch ( Interpreter.AdaptivePredict(_input,386,_ctx) ) { + State = 2167; + switch ( Interpreter.AdaptivePredict(_input,364,_ctx) ) { case 1: { - State = 2354; + State = 2164; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2353; whiteSpace(); + State = 2163; whiteSpace(); } } - State = 2356; asTypeClause(); + State = 2166; asTypeClause(); } break; } - State = 2363; - switch ( Interpreter.AdaptivePredict(_input,388,_ctx) ) { + State = 2173; + switch ( Interpreter.AdaptivePredict(_input,366,_ctx) ) { case 1: { - State = 2360; + State = 2170; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2359; whiteSpace(); + State = 2169; whiteSpace(); + } + } + + State = 2172; argDefaultValue(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class ArgDefaultValueContext : ParserRuleContext { + public ValueStmtContext valueStmt() { + return GetRuleContext(0); + } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); + } + public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } + public ArgDefaultValueContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_argDefaultValue; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterArgDefaultValue(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitArgDefaultValue(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitArgDefaultValue(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ArgDefaultValueContext argDefaultValue() { + ArgDefaultValueContext _localctx = new ArgDefaultValueContext(_ctx, State); + EnterRule(_localctx, 212, RULE_argDefaultValue); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2175; Match(EQ); + State = 2177; + switch ( Interpreter.AdaptivePredict(_input,367,_ctx) ) { + case 1: + { + State = 2176; whiteSpace(); + } + break; + } + State = 2179; valueStmt(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SubscriptsContext : ParserRuleContext { + public IReadOnlyList subscript() { + return GetRuleContexts(); + } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public SubscriptContext subscript(int i) { + return GetRuleContext(i); + } + public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ITerminalNode COMMA(int i) { + return GetToken(VBAParser.COMMA, i); + } + public SubscriptsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_subscripts; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterSubscripts(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitSubscripts(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitSubscripts(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SubscriptsContext subscripts() { + SubscriptsContext _localctx = new SubscriptsContext(_ctx, State); + EnterRule(_localctx, 214, RULE_subscripts); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 2181; subscript(); + State = 2192; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,370,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 2183; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 2182; whiteSpace(); + } } - } - State = 2362; argDefaultValue(); + State = 2185; Match(COMMA); + State = 2187; + switch ( Interpreter.AdaptivePredict(_input,369,_ctx) ) { + case 1: + { + State = 2186; whiteSpace(); + } + break; + } + State = 2189; subscript(); + } + } } - break; + State = 2194; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,370,_ctx); } } } @@ -13021,51 +11962,59 @@ public ArgContext arg() { return _localctx; } - public partial class ArgDefaultValueContext : ParserRuleContext { - public ValueStmtContext valueStmt() { - return GetRuleContext(0); + public partial class SubscriptContext : ParserRuleContext { + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); } - public WhiteSpaceContext whiteSpace() { - return GetRuleContext(0); + public IReadOnlyList valueStmt() { + return GetRuleContexts(); } - public ITerminalNode EQ() { return GetToken(VBAParser.EQ, 0); } - public ArgDefaultValueContext(ParserRuleContext parent, int invokingState) + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } + public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } + public ValueStmtContext valueStmt(int i) { + return GetRuleContext(i); + } + public SubscriptContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_argDefaultValue; } } + public override int RuleIndex { get { return RULE_subscript; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterArgDefaultValue(this); + if (typedListener != null) typedListener.EnterSubscript(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitArgDefaultValue(this); + if (typedListener != null) typedListener.ExitSubscript(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitArgDefaultValue(this); + if (typedVisitor != null) return typedVisitor.VisitSubscript(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ArgDefaultValueContext argDefaultValue() { - ArgDefaultValueContext _localctx = new ArgDefaultValueContext(_ctx, State); - EnterRule(_localctx, 242, RULE_argDefaultValue); + public SubscriptContext subscript() { + SubscriptContext _localctx = new SubscriptContext(_ctx, State); + EnterRule(_localctx, 216, RULE_subscript); try { EnterOuterAlt(_localctx, 1); { - State = 2365; Match(EQ); - State = 2367; - switch ( Interpreter.AdaptivePredict(_input,389,_ctx) ) { + State = 2200; + switch ( Interpreter.AdaptivePredict(_input,371,_ctx) ) { case 1: { - State = 2366; whiteSpace(); + State = 2195; valueStmt(0); + State = 2196; whiteSpace(); + State = 2197; Match(TO); + State = 2198; whiteSpace(); } break; } - State = 2369; valueStmt(0); + State = 2202; valueStmt(0); } } catch (RecognitionException re) { @@ -13079,151 +12028,245 @@ public ArgDefaultValueContext argDefaultValue() { return _localctx; } - public partial class SubscriptsContext : ParserRuleContext { - public IReadOnlyList subscript() { - return GetRuleContexts(); + public partial class UnrestrictedIdentifierContext : ParserRuleContext { + public MarkerKeywordContext markerKeyword() { + return GetRuleContext(0); } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public SubscriptContext subscript(int i) { - return GetRuleContext(i); - } - public IReadOnlyList COMMA() { return GetTokens(VBAParser.COMMA); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); + public IdentifierContext identifier() { + return GetRuleContext(0); } - public ITerminalNode COMMA(int i) { - return GetToken(VBAParser.COMMA, i); + public StatementKeywordContext statementKeyword() { + return GetRuleContext(0); } - public SubscriptsContext(ParserRuleContext parent, int invokingState) + public UnrestrictedIdentifierContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_subscripts; } } + public override int RuleIndex { get { return RULE_unrestrictedIdentifier; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSubscripts(this); + if (typedListener != null) typedListener.EnterUnrestrictedIdentifier(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSubscripts(this); + if (typedListener != null) typedListener.ExitUnrestrictedIdentifier(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSubscripts(this); + if (typedVisitor != null) return typedVisitor.VisitUnrestrictedIdentifier(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public SubscriptsContext subscripts() { - SubscriptsContext _localctx = new SubscriptsContext(_ctx, State); - EnterRule(_localctx, 244, RULE_subscripts); - int _la; + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + UnrestrictedIdentifierContext _localctx = new UnrestrictedIdentifierContext(_ctx, State); + EnterRule(_localctx, 218, RULE_unrestrictedIdentifier); try { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 2371; subscript(); - State = 2382; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,392,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 2373; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 2372; whiteSpace(); - } - } - - State = 2375; Match(COMMA); - State = 2377; - switch ( Interpreter.AdaptivePredict(_input,391,_ctx) ) { - case 1: - { - State = 2376; whiteSpace(); - } - break; - } - State = 2379; subscript(); - } - } + State = 2207; + switch (_input.La(1)) { + case ABS: + case ANY: + case ARRAY: + case CBOOL: + case CBYTE: + case CCUR: + case CDATE: + case CDBL: + case CDEC: + case CINT: + case CIRCLE: + case CLNG: + case CLNGLNG: + case CLNGPTR: + case CSNG: + case CSTR: + case CURRENCY: + case CVAR: + case CVERR: + case DEBUG: + case DOEVENTS: + case FIX: + case INPUTB: + case INT: + case LBOUND: + case LEN: + case LENB: + case LONGLONG: + case LONGPTR: + case MIDB: + case MIDBTYPESUFFIX: + case MIDTYPESUFFIX: + case PSET: + case SCALE: + case SGN: + case UBOUND: + case ADDRESSOF: + case ALIAS: + case AND: + case ATTRIBUTE: + case BEGIN: + case BOOLEAN: + case BYVAL: + case BYREF: + case BYTE: + case CLASS: + case DATABASE: + case DATE: + case DOUBLE: + case END_IF: + case EQV: + case FALSE: + case IMP: + case IN: + case IS: + case INTEGER: + case LONG: + case LIB: + case LIKE: + case ME: + case MID: + case MOD: + case NEW: + case NOT: + case NOTHING: + case NULL: + case OPTIONAL: + case OR: + case PARAMARRAY: + case PRESERVE: + case REM: + case SINGLE: + case SPC: + case STRING: + case TAB: + case TEXT: + case THEN: + case TO: + case TRUE: + case TYPEOF: + case UNTIL: + case VARIANT: + case VERSION: + case WITHEVENTS: + case XOR: + case IDENTIFIER: + case COLLECTION: + case DELETESETTING: + case LOAD: + case RMDIR: + case SENDKEYS: + case SETATTR: + EnterOuterAlt(_localctx, 1); + { + State = 2204; identifier(); + } + break; + case EXIT: + case OPTION: + case ACCESS: + case APPEND: + case BINARY: + case CALL: + case CASE: + case CLOSE: + case CONST: + case DECLARE: + case DEFBOOL: + case DEFBYTE: + case DEFDATE: + case DEFDBL: + case DEFCUR: + case DEFINT: + case DEFLNG: + case DEFLNGLNG: + case DEFLNGPTR: + case DEFOBJ: + case DEFSNG: + case DEFSTR: + case DEFVAR: + case DIM: + case DO: + case ELSE: + case ELSEIF: + case END_SELECT: + case END_WITH: + case END: + case ENUM: + case ERASE: + case ERROR: + case EVENT: + case EXIT_DO: + case EXIT_FOR: + case EXIT_FUNCTION: + case EXIT_PROPERTY: + case EXIT_SUB: + case FRIEND: + case FOR: + case FUNCTION: + case GET: + case GLOBAL: + case GOSUB: + case GOTO: + case IF: + case IMPLEMENTS: + case INPUT: + case LOCK: + case LOOP: + case LET: + case LINE_INPUT: + case LOCK_READ: + case LOCK_WRITE: + case LOCK_READ_WRITE: + case LSET: + case NEXT: + case ON: + case ON_ERROR: + case OPEN: + case OUTPUT: + case PRINT: + case PRIVATE: + case PUBLIC: + case PUT: + case RANDOM: + case RAISEEVENT: + case READ: + case READ_WRITE: + case REDIM: + case RESET: + case RESUME: + case RETURN: + case RSET: + case SEEK: + case SELECT: + case SET: + case SHARED: + case STATIC: + case STEP: + case STOP: + case SUB: + case TYPE: + case UNLOCK: + case WEND: + case WHILE: + case WIDTH: + case WITH: + case WRITE: + case ENDIF: + case RESUME_NEXT: + EnterOuterAlt(_localctx, 2); + { + State = 2205; statementKeyword(); } - State = 2384; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,392,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class SubscriptContext : ParserRuleContext { - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public IReadOnlyList valueStmt() { - return GetRuleContexts(); - } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); - } - public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } - public ValueStmtContext valueStmt(int i) { - return GetRuleContext(i); - } - public SubscriptContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_subscript; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterSubscript(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitSubscript(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitSubscript(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public SubscriptContext subscript() { - SubscriptContext _localctx = new SubscriptContext(_ctx, State); - EnterRule(_localctx, 246, RULE_subscript); - try { - EnterOuterAlt(_localctx, 1); - { - State = 2390; - switch ( Interpreter.AdaptivePredict(_input,393,_ctx) ) { - case 1: + break; + case AS: + EnterOuterAlt(_localctx, 3); { - State = 2385; valueStmt(0); - State = 2386; whiteSpace(); - State = 2387; Match(TO); - State = 2388; whiteSpace(); + State = 2206; markerKeyword(); } break; - } - State = 2392; valueStmt(0); + default: + throw new NoViableAltException(this); } } catch (RecognitionException re) { @@ -13265,14 +12308,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IdentifierContext identifier() { IdentifierContext _localctx = new IdentifierContext(_ctx, State); - EnterRule(_localctx, 248, RULE_identifier); + EnterRule(_localctx, 220, RULE_identifier); try { - State = 2396; + State = 2211; switch (_input.La(1)) { case IDENTIFIER: EnterOuterAlt(_localctx, 1); { - State = 2394; Match(IDENTIFIER); + State = 2209; Match(IDENTIFIER); } break; case ABS: @@ -13296,7 +12339,6 @@ public IdentifierContext identifier() { case CVERR: case DEBUG: case DOEVENTS: - case EXIT: case FIX: case INPUTB: case INT: @@ -13308,159 +12350,68 @@ public IdentifierContext identifier() { case MIDB: case MIDBTYPESUFFIX: case MIDTYPESUFFIX: - case OPTION: case PSET: case SCALE: case SGN: case UBOUND: - case ACCESS: case ADDRESSOF: case ALIAS: case AND: case ATTRIBUTE: - case APPACTIVATE: - case APPEND: - case AS: case BEGIN: - case BEEP: - case BINARY: case BOOLEAN: case BYVAL: case BYREF: case BYTE: - case CALL: - case CASE: - case CHDIR: - case CHDRIVE: case CLASS: - case CLOSE: - case CONST: case DATABASE: case DATE: - case DECLARE: - case DEFBOOL: - case DEFBYTE: - case DEFDATE: - case DEFDBL: - case DEFCUR: - case DEFINT: - case DEFLNG: - case DEFLNGLNG: - case DEFLNGPTR: - case DEFOBJ: - case DEFSNG: - case DEFSTR: - case DEFVAR: - case DELETESETTING: - case DIM: - case DO: case DOUBLE: - case EACH: - case ELSE: - case ELSEIF: case END_IF: - case END: - case ENUM: case EQV: - case ERASE: - case ERROR: - case EVENT: case FALSE: - case FILECOPY: - case FRIEND: - case FOR: - case FUNCTION: - case GET: - case GLOBAL: - case GOSUB: - case GOTO: - case IF: case IMP: - case IMPLEMENTS: case IN: - case INPUT: case IS: case INTEGER: - case KILL: - case LOAD: - case LOCK: case LONG: - case LOOP: - case LET: case LIB: case LIKE: - case LSET: case ME: case MID: - case MKDIR: case MOD: - case NAME: - case NEXT: case NEW: case NOT: case NOTHING: case NULL: - case ON: - case OPEN: case OPTIONAL: case OR: - case OUTPUT: case PARAMARRAY: case PRESERVE: - case PRINT: - case PRIVATE: - case PUBLIC: - case PUT: - case RANDOM: - case RANDOMIZE: - case RAISEEVENT: - case READ: - case REDIM: case REM: - case RESET: - case RESUME: - case RETURN: - case RMDIR: - case RSET: - case SAVEPICTURE: - case SAVESETTING: - case SEEK: - case SELECT: - case SENDKEYS: - case SET: - case SETATTR: - case SHARED: case SINGLE: case SPC: - case STATIC: - case STEP: - case STOP: case STRING: - case SUB: case TAB: case TEXT: case THEN: - case TIME: case TO: case TRUE: - case TYPE: case TYPEOF: - case UNLOAD: - case UNLOCK: case UNTIL: case VARIANT: case VERSION: - case WEND: - case WHILE: - case WIDTH: - case WITH: case WITHEVENTS: - case WRITE: case XOR: case COLLECTION: + case DELETESETTING: + case LOAD: + case RMDIR: + case SENDKEYS: + case SETATTR: EnterOuterAlt(_localctx, 2); { - State = 2395; keyword(); + State = 2210; keyword(); } break; default: @@ -13516,43 +12467,43 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public AsTypeClauseContext asTypeClause() { AsTypeClauseContext _localctx = new AsTypeClauseContext(_ctx, State); - EnterRule(_localctx, 250, RULE_asTypeClause); + EnterRule(_localctx, 222, RULE_asTypeClause); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2398; Match(AS); - State = 2400; + State = 2213; Match(AS); + State = 2215; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2399; whiteSpace(); + State = 2214; whiteSpace(); } } - State = 2404; - switch ( Interpreter.AdaptivePredict(_input,396,_ctx) ) { + State = 2219; + switch ( Interpreter.AdaptivePredict(_input,375,_ctx) ) { case 1: { - State = 2402; Match(NEW); - State = 2403; whiteSpace(); + State = 2217; Match(NEW); + State = 2218; whiteSpace(); } break; } - State = 2406; type(); - State = 2411; - switch ( Interpreter.AdaptivePredict(_input,398,_ctx) ) { + State = 2221; type(); + State = 2226; + switch ( Interpreter.AdaptivePredict(_input,377,_ctx) ) { case 1: { - State = 2408; + State = 2223; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2407; whiteSpace(); + State = 2222; whiteSpace(); } } - State = 2410; fieldLength(); + State = 2225; fieldLength(); } break; } @@ -13605,14 +12556,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public BaseTypeContext baseType() { BaseTypeContext _localctx = new BaseTypeContext(_ctx, State); - EnterRule(_localctx, 252, RULE_baseType); + EnterRule(_localctx, 224, RULE_baseType); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2413; + State = 2228; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENCY) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << BOOLEAN) | (1L << BYTE))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (DATE - 72)) | (1L << (DOUBLE - 72)) | (1L << (INTEGER - 72)) | (1L << (LONG - 72)))) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & ((1L << (SINGLE - 194)) | (1L << (STRING - 194)) | (1L << (VARIANT - 194)))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENCY) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << BOOLEAN) | (1L << BYTE))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (DATE - 68)) | (1L << (DOUBLE - 68)) | (1L << (INTEGER - 68)) | (1L << (LONG - 68)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (SINGLE - 178)) | (1L << (STRING - 178)) | (1L << (VARIANT - 178)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -13661,14 +12612,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ComparisonOperatorContext comparisonOperator() { ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, State); - EnterRule(_localctx, 254, RULE_comparisonOperator); + EnterRule(_localctx, 226, RULE_comparisonOperator); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2415; + State = 2230; _la = _input.La(1); - if ( !(_la==IS || _la==LIKE || ((((_la - 224)) & ~0x3f) == 0 && ((1L << (_la - 224)) & ((1L << (EQ - 224)) | (1L << (GEQ - 224)) | (1L << (GT - 224)) | (1L << (LEQ - 224)) | (1L << (LT - 224)) | (1L << (NEQ - 224)))) != 0)) ) { + if ( !(_la==IS || _la==LIKE || ((((_la - 206)) & ~0x3f) == 0 && ((1L << (_la - 206)) & ((1L << (EQ - 206)) | (1L << (GEQ - 206)) | (1L << (GT - 206)) | (1L << (LEQ - 206)) | (1L << (LT - 206)) | (1L << (NEQ - 206)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -13723,33 +12674,33 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ComplexTypeContext complexType() { ComplexTypeContext _localctx = new ComplexTypeContext(_ctx, State); - EnterRule(_localctx, 256, RULE_complexType); + EnterRule(_localctx, 228, RULE_complexType); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2417; identifier(); - State = 2422; + State = 2232; identifier(); + State = 2237; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,399,_ctx); + _alt = Interpreter.AdaptivePredict(_input,378,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2418; + State = 2233; _la = _input.La(1); if ( !(_la==EXCLAMATIONPOINT || _la==DOT) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2419; identifier(); + State = 2234; identifier(); } } } - State = 2424; + State = 2239; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,399,_ctx); + _alt = Interpreter.AdaptivePredict(_input,378,_ctx); } } } @@ -13798,28 +12749,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public FieldLengthContext fieldLength() { FieldLengthContext _localctx = new FieldLengthContext(_ctx, State); - EnterRule(_localctx, 258, RULE_fieldLength); + EnterRule(_localctx, 230, RULE_fieldLength); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2425; Match(MULT); - State = 2427; + State = 2240; Match(MULT); + State = 2242; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2426; whiteSpace(); + State = 2241; whiteSpace(); } } - State = 2431; + State = 2246; switch (_input.La(1)) { case OCTLITERAL: case HEXLITERAL: case FLOATLITERAL: case INTEGERLITERAL: { - State = 2429; numberLiteral(); + State = 2244; numberLiteral(); } break; case ABS: @@ -13843,7 +12794,6 @@ public FieldLengthContext fieldLength() { case CVERR: case DEBUG: case DOEVENTS: - case EXIT: case FIX: case INPUTB: case INT: @@ -13855,159 +12805,68 @@ public FieldLengthContext fieldLength() { case MIDB: case MIDBTYPESUFFIX: case MIDTYPESUFFIX: - case OPTION: case PSET: case SCALE: case SGN: case UBOUND: - case ACCESS: case ADDRESSOF: case ALIAS: case AND: case ATTRIBUTE: - case APPACTIVATE: - case APPEND: - case AS: case BEGIN: - case BEEP: - case BINARY: case BOOLEAN: case BYVAL: case BYREF: case BYTE: - case CALL: - case CASE: - case CHDIR: - case CHDRIVE: case CLASS: - case CLOSE: - case CONST: case DATABASE: case DATE: - case DECLARE: - case DEFBOOL: - case DEFBYTE: - case DEFDATE: - case DEFDBL: - case DEFCUR: - case DEFINT: - case DEFLNG: - case DEFLNGLNG: - case DEFLNGPTR: - case DEFOBJ: - case DEFSNG: - case DEFSTR: - case DEFVAR: - case DELETESETTING: - case DIM: - case DO: case DOUBLE: - case EACH: - case ELSE: - case ELSEIF: case END_IF: - case END: - case ENUM: case EQV: - case ERASE: - case ERROR: - case EVENT: case FALSE: - case FILECOPY: - case FRIEND: - case FOR: - case FUNCTION: - case GET: - case GLOBAL: - case GOSUB: - case GOTO: - case IF: case IMP: - case IMPLEMENTS: case IN: - case INPUT: case IS: case INTEGER: - case KILL: - case LOAD: - case LOCK: case LONG: - case LOOP: - case LET: case LIB: case LIKE: - case LSET: case ME: case MID: - case MKDIR: case MOD: - case NAME: - case NEXT: case NEW: case NOT: case NOTHING: case NULL: - case ON: - case OPEN: case OPTIONAL: case OR: - case OUTPUT: case PARAMARRAY: case PRESERVE: - case PRINT: - case PRIVATE: - case PUBLIC: - case PUT: - case RANDOM: - case RANDOMIZE: - case RAISEEVENT: - case READ: - case REDIM: case REM: - case RESET: - case RESUME: - case RETURN: - case RMDIR: - case RSET: - case SAVEPICTURE: - case SAVESETTING: - case SEEK: - case SELECT: - case SENDKEYS: - case SET: - case SETATTR: - case SHARED: case SINGLE: case SPC: - case STATIC: - case STEP: - case STOP: case STRING: - case SUB: case TAB: case TEXT: case THEN: - case TIME: case TO: case TRUE: - case TYPE: case TYPEOF: - case UNLOAD: - case UNLOCK: case UNTIL: case VARIANT: case VERSION: - case WEND: - case WHILE: - case WIDTH: - case WITH: case WITHEVENTS: - case WRITE: case XOR: case IDENTIFIER: case COLLECTION: + case DELETESETTING: + case LOAD: + case RMDIR: + case SENDKEYS: + case SETATTR: { - State = 2430; identifier(); + State = 2245; identifier(); } break; default: @@ -14063,34 +12922,34 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public LetterrangeContext letterrange() { LetterrangeContext _localctx = new LetterrangeContext(_ctx, State); - EnterRule(_localctx, 260, RULE_letterrange); + EnterRule(_localctx, 232, RULE_letterrange); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2433; identifier(); - State = 2442; - switch ( Interpreter.AdaptivePredict(_input,404,_ctx) ) { + State = 2248; identifier(); + State = 2257; + switch ( Interpreter.AdaptivePredict(_input,383,_ctx) ) { case 1: { - State = 2435; + State = 2250; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2434; whiteSpace(); + State = 2249; whiteSpace(); } } - State = 2437; Match(MINUS); - State = 2439; + State = 2252; Match(MINUS); + State = 2254; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2438; whiteSpace(); + State = 2253; whiteSpace(); } } - State = 2441; identifier(); + State = 2256; identifier(); } break; } @@ -14138,11 +12997,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public LineLabelContext lineLabel() { LineLabelContext _localctx = new LineLabelContext(_ctx, State); - EnterRule(_localctx, 262, RULE_lineLabel); + EnterRule(_localctx, 234, RULE_lineLabel); try { EnterOuterAlt(_localctx, 1); { - State = 2446; + State = 2261; switch (_input.La(1)) { case ABS: case ANY: @@ -14165,7 +13024,6 @@ public LineLabelContext lineLabel() { case CVERR: case DEBUG: case DOEVENTS: - case EXIT: case FIX: case INPUTB: case INT: @@ -14177,159 +13035,68 @@ public LineLabelContext lineLabel() { case MIDB: case MIDBTYPESUFFIX: case MIDTYPESUFFIX: - case OPTION: case PSET: case SCALE: case SGN: case UBOUND: - case ACCESS: case ADDRESSOF: case ALIAS: case AND: - case ATTRIBUTE: - case APPACTIVATE: - case APPEND: - case AS: + case ATTRIBUTE: case BEGIN: - case BEEP: - case BINARY: case BOOLEAN: case BYVAL: case BYREF: case BYTE: - case CALL: - case CASE: - case CHDIR: - case CHDRIVE: case CLASS: - case CLOSE: - case CONST: case DATABASE: case DATE: - case DECLARE: - case DEFBOOL: - case DEFBYTE: - case DEFDATE: - case DEFDBL: - case DEFCUR: - case DEFINT: - case DEFLNG: - case DEFLNGLNG: - case DEFLNGPTR: - case DEFOBJ: - case DEFSNG: - case DEFSTR: - case DEFVAR: - case DELETESETTING: - case DIM: - case DO: case DOUBLE: - case EACH: - case ELSE: - case ELSEIF: case END_IF: - case END: - case ENUM: case EQV: - case ERASE: - case ERROR: - case EVENT: case FALSE: - case FILECOPY: - case FRIEND: - case FOR: - case FUNCTION: - case GET: - case GLOBAL: - case GOSUB: - case GOTO: - case IF: case IMP: - case IMPLEMENTS: case IN: - case INPUT: case IS: case INTEGER: - case KILL: - case LOAD: - case LOCK: case LONG: - case LOOP: - case LET: case LIB: case LIKE: - case LSET: case ME: case MID: - case MKDIR: case MOD: - case NAME: - case NEXT: case NEW: case NOT: case NOTHING: case NULL: - case ON: - case OPEN: case OPTIONAL: case OR: - case OUTPUT: case PARAMARRAY: case PRESERVE: - case PRINT: - case PRIVATE: - case PUBLIC: - case PUT: - case RANDOM: - case RANDOMIZE: - case RAISEEVENT: - case READ: - case REDIM: case REM: - case RESET: - case RESUME: - case RETURN: - case RMDIR: - case RSET: - case SAVEPICTURE: - case SAVESETTING: - case SEEK: - case SELECT: - case SENDKEYS: - case SET: - case SETATTR: - case SHARED: case SINGLE: case SPC: - case STATIC: - case STEP: - case STOP: case STRING: - case SUB: case TAB: case TEXT: case THEN: - case TIME: case TO: case TRUE: - case TYPE: case TYPEOF: - case UNLOAD: - case UNLOCK: case UNTIL: case VARIANT: case VERSION: - case WEND: - case WHILE: - case WIDTH: - case WITH: case WITHEVENTS: - case WRITE: case XOR: case IDENTIFIER: case COLLECTION: + case DELETESETTING: + case LOAD: + case RMDIR: + case SENDKEYS: + case SETATTR: { - State = 2444; identifier(); + State = 2259; identifier(); } break; case OCTLITERAL: @@ -14337,13 +13104,13 @@ public LineLabelContext lineLabel() { case FLOATLITERAL: case INTEGERLITERAL: { - State = 2445; numberLiteral(); + State = 2260; numberLiteral(); } break; default: throw new NoViableAltException(this); } - State = 2448; Match(COLON); + State = 2263; Match(COLON); } } catch (RecognitionException re) { @@ -14391,9 +13158,9 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public LiteralContext literal() { LiteralContext _localctx = new LiteralContext(_ctx, State); - EnterRule(_localctx, 264, RULE_literal); + EnterRule(_localctx, 236, RULE_literal); try { - State = 2458; + State = 2273; switch (_input.La(1)) { case OCTLITERAL: case HEXLITERAL: @@ -14401,49 +13168,49 @@ public LiteralContext literal() { case INTEGERLITERAL: EnterOuterAlt(_localctx, 1); { - State = 2450; numberLiteral(); + State = 2265; numberLiteral(); } break; case DATELITERAL: EnterOuterAlt(_localctx, 2); { - State = 2451; Match(DATELITERAL); + State = 2266; Match(DATELITERAL); } break; case STRINGLITERAL: EnterOuterAlt(_localctx, 3); { - State = 2452; Match(STRINGLITERAL); + State = 2267; Match(STRINGLITERAL); } break; case TRUE: EnterOuterAlt(_localctx, 4); { - State = 2453; Match(TRUE); + State = 2268; Match(TRUE); } break; case FALSE: EnterOuterAlt(_localctx, 5); { - State = 2454; Match(FALSE); + State = 2269; Match(FALSE); } break; case NOTHING: EnterOuterAlt(_localctx, 6); { - State = 2455; Match(NOTHING); + State = 2270; Match(NOTHING); } break; case NULL: EnterOuterAlt(_localctx, 7); { - State = 2456; Match(NULL); + State = 2271; Match(NULL); } break; case EMPTY: EnterOuterAlt(_localctx, 8); { - State = 2457; Match(EMPTY); + State = 2272; Match(EMPTY); } break; default: @@ -14489,14 +13256,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NumberLiteralContext numberLiteral() { NumberLiteralContext _localctx = new NumberLiteralContext(_ctx, State); - EnterRule(_localctx, 266, RULE_numberLiteral); + EnterRule(_localctx, 238, RULE_numberLiteral); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2460; + State = 2275; _la = _input.La(1); - if ( !(((((_la - 244)) & ~0x3f) == 0 && ((1L << (_la - 244)) & ((1L << (OCTLITERAL - 244)) | (1L << (HEXLITERAL - 244)) | (1L << (FLOATLITERAL - 244)) | (1L << (INTEGERLITERAL - 244)))) != 0)) ) { + if ( !(((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OCTLITERAL - 226)) | (1L << (HEXLITERAL - 226)) | (1L << (FLOATLITERAL - 226)) | (1L << (INTEGERLITERAL - 226)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -14551,47 +13318,47 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypeContext type() { TypeContext _localctx = new TypeContext(_ctx, State); - EnterRule(_localctx, 268, RULE_type); + EnterRule(_localctx, 240, RULE_type); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2464; - switch ( Interpreter.AdaptivePredict(_input,407,_ctx) ) { + State = 2279; + switch ( Interpreter.AdaptivePredict(_input,386,_ctx) ) { case 1: { - State = 2462; baseType(); + State = 2277; baseType(); } break; case 2: { - State = 2463; complexType(); + State = 2278; complexType(); } break; } - State = 2474; - switch ( Interpreter.AdaptivePredict(_input,410,_ctx) ) { + State = 2289; + switch ( Interpreter.AdaptivePredict(_input,389,_ctx) ) { case 1: { - State = 2467; + State = 2282; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2466; whiteSpace(); + State = 2281; whiteSpace(); } } - State = 2469; Match(LPAREN); - State = 2471; + State = 2284; Match(LPAREN); + State = 2286; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2470; whiteSpace(); + State = 2285; whiteSpace(); } } - State = 2473; Match(RPAREN); + State = 2288; Match(RPAREN); } break; } @@ -14639,12 +13406,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypeHintContext typeHint() { TypeHintContext _localctx = new TypeHintContext(_ctx, State); - EnterRule(_localctx, 270, RULE_typeHint); + EnterRule(_localctx, 242, RULE_typeHint); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2476; + State = 2291; _la = _input.La(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) ) { _errHandler.RecoverInline(this); @@ -14691,14 +13458,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public VisibilityContext visibility() { VisibilityContext _localctx = new VisibilityContext(_ctx, State); - EnterRule(_localctx, 272, RULE_visibility); + EnterRule(_localctx, 244, RULE_visibility); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2478; + State = 2293; _la = _input.La(1); - if ( !(((((_la - 116)) & ~0x3f) == 0 && ((1L << (_la - 116)) & ((1L << (FRIEND - 116)) | (1L << (GLOBAL - 116)) | (1L << (PRIVATE - 116)) | (1L << (PUBLIC - 116)))) != 0)) ) { + if ( !(((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -14716,223 +13483,317 @@ public VisibilityContext visibility() { } public partial class KeywordContext : ParserRuleContext { - public ITerminalNode CASE() { return GetToken(VBAParser.CASE, 0); } - public ITerminalNode APPACTIVATE() { return GetToken(VBAParser.APPACTIVATE, 0); } - public ITerminalNode DEFOBJ() { return GetToken(VBAParser.DEFOBJ, 0); } - public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } - public ITerminalNode IF() { return GetToken(VBAParser.IF, 0); } - public ITerminalNode RESET() { return GetToken(VBAParser.RESET, 0); } public ITerminalNode CLNGLNG() { return GetToken(VBAParser.CLNGLNG, 0); } + public ITerminalNode INTEGER() { return GetToken(VBAParser.INTEGER, 0); } + public ITerminalNode FALSE() { return GetToken(VBAParser.FALSE, 0); } public ITerminalNode XOR() { return GetToken(VBAParser.XOR, 0); } - public ITerminalNode TIME() { return GetToken(VBAParser.TIME, 0); } - public ITerminalNode RAISEEVENT() { return GetToken(VBAParser.RAISEEVENT, 0); } + public ITerminalNode END_IF() { return GetToken(VBAParser.END_IF, 0); } public ITerminalNode LOAD() { return GetToken(VBAParser.LOAD, 0); } + public ITerminalNode PRESERVE() { return GetToken(VBAParser.PRESERVE, 0); } + public ITerminalNode LENB() { return GetToken(VBAParser.LENB, 0); } public ITerminalNode MIDTYPESUFFIX() { return GetToken(VBAParser.MIDTYPESUFFIX, 0); } public ITerminalNode SCALE() { return GetToken(VBAParser.SCALE, 0); } public ITerminalNode BYREF() { return GetToken(VBAParser.BYREF, 0); } - public ITerminalNode DEFSNG() { return GetToken(VBAParser.DEFSNG, 0); } - public ITerminalNode GOSUB() { return GetToken(VBAParser.GOSUB, 0); } public ITerminalNode DEBUG() { return GetToken(VBAParser.DEBUG, 0); } public ITerminalNode CLNGPTR() { return GetToken(VBAParser.CLNGPTR, 0); } - public ITerminalNode ENUM() { return GetToken(VBAParser.ENUM, 0); } - public ITerminalNode GLOBAL() { return GetToken(VBAParser.GLOBAL, 0); } + public ITerminalNode NULL() { return GetToken(VBAParser.NULL, 0); } + public ITerminalNode BEGIN() { return GetToken(VBAParser.BEGIN, 0); } + public ITerminalNode IMP() { return GetToken(VBAParser.IMP, 0); } public ITerminalNode PARAMARRAY() { return GetToken(VBAParser.PARAMARRAY, 0); } public ITerminalNode ME() { return GetToken(VBAParser.ME, 0); } + public ITerminalNode INPUTB() { return GetToken(VBAParser.INPUTB, 0); } public ITerminalNode CDEC() { return GetToken(VBAParser.CDEC, 0); } - public ITerminalNode SUB() { return GetToken(VBAParser.SUB, 0); } - public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } - public ITerminalNode LSET() { return GetToken(VBAParser.LSET, 0); } - public ITerminalNode WIDTH() { return GetToken(VBAParser.WIDTH, 0); } + public ITerminalNode NOTHING() { return GetToken(VBAParser.NOTHING, 0); } + public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } + public ITerminalNode DATABASE() { return GetToken(VBAParser.DATABASE, 0); } public ITerminalNode CSNG() { return GetToken(VBAParser.CSNG, 0); } public ITerminalNode LONGPTR() { return GetToken(VBAParser.LONGPTR, 0); } + public ITerminalNode BYTE() { return GetToken(VBAParser.BYTE, 0); } public ITerminalNode STRING() { return GetToken(VBAParser.STRING, 0); } public ITerminalNode MOD() { return GetToken(VBAParser.MOD, 0); } public ITerminalNode OR() { return GetToken(VBAParser.OR, 0); } + public ITerminalNode CURRENCY() { return GetToken(VBAParser.CURRENCY, 0); } public ITerminalNode DOUBLE() { return GetToken(VBAParser.DOUBLE, 0); } public ITerminalNode BYVAL() { return GetToken(VBAParser.BYVAL, 0); } public ITerminalNode IN() { return GetToken(VBAParser.IN, 0); } - public ITerminalNode BINARY() { return GetToken(VBAParser.BINARY, 0); } - public ITerminalNode SAVESETTING() { return GetToken(VBAParser.SAVESETTING, 0); } + public ITerminalNode CIRCLE() { return GetToken(VBAParser.CIRCLE, 0); } + public ITerminalNode LEN(int i) { + return GetToken(VBAParser.LEN, i); + } + public ITerminalNode TAB() { return GetToken(VBAParser.TAB, 0); } public ITerminalNode TEXT() { return GetToken(VBAParser.TEXT, 0); } - public ITerminalNode SENDKEYS() { return GetToken(VBAParser.SENDKEYS, 0); } + public ITerminalNode CBOOL() { return GetToken(VBAParser.CBOOL, 0); } + public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); } public ITerminalNode MIDBTYPESUFFIX() { return GetToken(VBAParser.MIDBTYPESUFFIX, 0); } + public ITerminalNode SENDKEYS() { return GetToken(VBAParser.SENDKEYS, 0); } public ITerminalNode SGN() { return GetToken(VBAParser.SGN, 0); } + public ITerminalNode ALIAS() { return GetToken(VBAParser.ALIAS, 0); } public ITerminalNode CBYTE() { return GetToken(VBAParser.CBYTE, 0); } - public ITerminalNode PUBLIC() { return GetToken(VBAParser.PUBLIC, 0); } - public ITerminalNode PUT() { return GetToken(VBAParser.PUT, 0); } + public ITerminalNode CVERR() { return GetToken(VBAParser.CVERR, 0); } + public ITerminalNode DATE() { return GetToken(VBAParser.DATE, 0); } + public ITerminalNode FIX() { return GetToken(VBAParser.FIX, 0); } + public ITerminalNode CLASS() { return GetToken(VBAParser.CLASS, 0); } public ITerminalNode CVAR() { return GetToken(VBAParser.CVAR, 0); } - public ITerminalNode MKDIR() { return GetToken(VBAParser.MKDIR, 0); } public ITerminalNode SINGLE() { return GetToken(VBAParser.SINGLE, 0); } + public ITerminalNode CSTR() { return GetToken(VBAParser.CSTR, 0); } public ITerminalNode LONGLONG() { return GetToken(VBAParser.LONGLONG, 0); } - public ITerminalNode ERROR() { return GetToken(VBAParser.ERROR, 0); } - public ITerminalNode TYPE() { return GetToken(VBAParser.TYPE, 0); } public ITerminalNode CDATE() { return GetToken(VBAParser.CDATE, 0); } - public ITerminalNode CALL() { return GetToken(VBAParser.CALL, 0); } - public ITerminalNode RMDIR() { return GetToken(VBAParser.RMDIR, 0); } + public ITerminalNode CINT() { return GetToken(VBAParser.CINT, 0); } public ITerminalNode ABS() { return GetToken(VBAParser.ABS, 0); } + public ITerminalNode EQV() { return GetToken(VBAParser.EQV, 0); } + public ITerminalNode RMDIR() { return GetToken(VBAParser.RMDIR, 0); } public ITerminalNode SPC() { return GetToken(VBAParser.SPC, 0); } + public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } public ITerminalNode INT() { return GetToken(VBAParser.INT, 0); } - public ITerminalNode AS() { return GetToken(VBAParser.AS, 0); } public ITerminalNode NOT() { return GetToken(VBAParser.NOT, 0); } - public ITerminalNode BEEP() { return GetToken(VBAParser.BEEP, 0); } public ITerminalNode LBOUND() { return GetToken(VBAParser.LBOUND, 0); } public ITerminalNode UBOUND() { return GetToken(VBAParser.UBOUND, 0); } - public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } - public ITerminalNode DO() { return GetToken(VBAParser.DO, 0); } - public ITerminalNode DIM() { return GetToken(VBAParser.DIM, 0); } - public ITerminalNode OPTION() { return GetToken(VBAParser.OPTION, 0); } - public ITerminalNode OUTPUT() { return GetToken(VBAParser.OUTPUT, 0); } - public ITerminalNode KILL() { return GetToken(VBAParser.KILL, 0); } - public ITerminalNode IMPLEMENTS() { return GetToken(VBAParser.IMPLEMENTS, 0); } - public ITerminalNode VERSION() { return GetToken(VBAParser.VERSION, 0); } + public ITerminalNode DELETESETTING() { return GetToken(VBAParser.DELETESETTING, 0); } + public ITerminalNode DOEVENTS() { return GetToken(VBAParser.DOEVENTS, 0); } + public ITerminalNode AND() { return GetToken(VBAParser.AND, 0); } + public ITerminalNode MID() { return GetToken(VBAParser.MID, 0); } public ITerminalNode ARRAY() { return GetToken(VBAParser.ARRAY, 0); } - public ITerminalNode ACCESS() { return GetToken(VBAParser.ACCESS, 0); } + public ITerminalNode VERSION() { return GetToken(VBAParser.VERSION, 0); } public ITerminalNode COLLECTION() { return GetToken(VBAParser.COLLECTION, 0); } - public ITerminalNode DECLARE() { return GetToken(VBAParser.DECLARE, 0); } public ITerminalNode TRUE() { return GetToken(VBAParser.TRUE, 0); } - public ITerminalNode RESUME() { return GetToken(VBAParser.RESUME, 0); } public ITerminalNode VARIANT() { return GetToken(VBAParser.VARIANT, 0); } public ITerminalNode MIDB() { return GetToken(VBAParser.MIDB, 0); } + public ITerminalNode SETATTR() { return GetToken(VBAParser.SETATTR, 0); } + public IReadOnlyList LEN() { return GetTokens(VBAParser.LEN); } public ITerminalNode BOOLEAN() { return GetToken(VBAParser.BOOLEAN, 0); } - public ITerminalNode DEFLNGPTR() { return GetToken(VBAParser.DEFLNGPTR, 0); } - public ITerminalNode WHILE() { return GetToken(VBAParser.WHILE, 0); } - public ITerminalNode EXIT() { return GetToken(VBAParser.EXIT, 0); } - public ITerminalNode DEFDBL() { return GetToken(VBAParser.DEFDBL, 0); } - public ITerminalNode FUNCTION() { return GetToken(VBAParser.FUNCTION, 0); } + public ITerminalNode ANY() { return GetToken(VBAParser.ANY, 0); } + public ITerminalNode CCUR() { return GetToken(VBAParser.CCUR, 0); } + public ITerminalNode NEW() { return GetToken(VBAParser.NEW, 0); } + public ITerminalNode LIB() { return GetToken(VBAParser.LIB, 0); } public ITerminalNode LONG() { return GetToken(VBAParser.LONG, 0); } public ITerminalNode REM() { return GetToken(VBAParser.REM, 0); } - public ITerminalNode RSET() { return GetToken(VBAParser.RSET, 0); } + public ITerminalNode OPTIONAL() { return GetToken(VBAParser.OPTIONAL, 0); } public ITerminalNode ADDRESSOF() { return GetToken(VBAParser.ADDRESSOF, 0); } - public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } public ITerminalNode ATTRIBUTE() { return GetToken(VBAParser.ATTRIBUTE, 0); } public ITerminalNode TYPEOF() { return GetToken(VBAParser.TYPEOF, 0); } public ITerminalNode PSET() { return GetToken(VBAParser.PSET, 0); } - public ITerminalNode SELECT() { return GetToken(VBAParser.SELECT, 0); } - public ITerminalNode UNLOCK() { return GetToken(VBAParser.UNLOCK, 0); } - public ITerminalNode SET() { return GetToken(VBAParser.SET, 0); } + public ITerminalNode UNTIL() { return GetToken(VBAParser.UNTIL, 0); } + public ITerminalNode LIKE() { return GetToken(VBAParser.LIKE, 0); } public ITerminalNode CDBL() { return GetToken(VBAParser.CDBL, 0); } public ITerminalNode CLNG() { return GetToken(VBAParser.CLNG, 0); } + public ITerminalNode WITHEVENTS() { return GetToken(VBAParser.WITHEVENTS, 0); } + public KeywordContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_keyword; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterKeyword(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitKeyword(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitKeyword(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public KeywordContext keyword() { + KeywordContext _localctx = new KeywordContext(_ctx, State); + EnterRule(_localctx, 246, RULE_keyword); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2295; + _la = _input.La(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << BEGIN) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (END_IF - 64)) | (1L << (EQV - 64)) | (1L << (FALSE - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (REM - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (XOR - 193)) | (1L << (COLLECTION - 193)) | (1L << (DELETESETTING - 193)) | (1L << (LOAD - 193)) | (1L << (RMDIR - 193)) | (1L << (SENDKEYS - 193)) | (1L << (SETATTR - 193)))) != 0)) ) { + _errHandler.RecoverInline(this); + } + Consume(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class MarkerKeywordContext : ParserRuleContext { + public ITerminalNode AS() { return GetToken(VBAParser.AS, 0); } + public MarkerKeywordContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_markerKeyword; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterMarkerKeyword(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitMarkerKeyword(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitMarkerKeyword(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public MarkerKeywordContext markerKeyword() { + MarkerKeywordContext _localctx = new MarkerKeywordContext(_ctx, State); + EnterRule(_localctx, 248, RULE_markerKeyword); + try { + EnterOuterAlt(_localctx, 1); + { + State = 2297; Match(AS); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class StatementKeywordContext : ParserRuleContext { + public ITerminalNode CASE() { return GetToken(VBAParser.CASE, 0); } + public ITerminalNode DEFOBJ() { return GetToken(VBAParser.DEFOBJ, 0); } + public ITerminalNode ELSE() { return GetToken(VBAParser.ELSE, 0); } + public ITerminalNode LOCK_WRITE() { return GetToken(VBAParser.LOCK_WRITE, 0); } + public ITerminalNode IF() { return GetToken(VBAParser.IF, 0); } + public ITerminalNode RESET() { return GetToken(VBAParser.RESET, 0); } public ITerminalNode ERASE() { return GetToken(VBAParser.ERASE, 0); } - public ITerminalNode INTEGER() { return GetToken(VBAParser.INTEGER, 0); } - public ITerminalNode FALSE() { return GetToken(VBAParser.FALSE, 0); } - public ITerminalNode END_IF() { return GetToken(VBAParser.END_IF, 0); } - public ITerminalNode PRESERVE() { return GetToken(VBAParser.PRESERVE, 0); } + public ITerminalNode WRITE(int i) { + return GetToken(VBAParser.WRITE, i); + } + public ITerminalNode END_SELECT() { return GetToken(VBAParser.END_SELECT, 0); } + public ITerminalNode ON_ERROR() { return GetToken(VBAParser.ON_ERROR, 0); } + public ITerminalNode RAISEEVENT() { return GetToken(VBAParser.RAISEEVENT, 0); } public ITerminalNode STOP() { return GetToken(VBAParser.STOP, 0); } public ITerminalNode SHARED() { return GetToken(VBAParser.SHARED, 0); } public ITerminalNode APPEND() { return GetToken(VBAParser.APPEND, 0); } - public ITerminalNode CHDIR() { return GetToken(VBAParser.CHDIR, 0); } - public ITerminalNode LENB() { return GetToken(VBAParser.LENB, 0); } public ITerminalNode PRIVATE() { return GetToken(VBAParser.PRIVATE, 0); } - public ITerminalNode UNLOAD() { return GetToken(VBAParser.UNLOAD, 0); } public ITerminalNode DEFBYTE() { return GetToken(VBAParser.DEFBYTE, 0); } + public ITerminalNode DEFSNG() { return GetToken(VBAParser.DEFSNG, 0); } + public ITerminalNode GOSUB() { return GetToken(VBAParser.GOSUB, 0); } public ITerminalNode RETURN() { return GetToken(VBAParser.RETURN, 0); } - public ITerminalNode NULL() { return GetToken(VBAParser.NULL, 0); } - public ITerminalNode NAME() { return GetToken(VBAParser.NAME, 0); } - public ITerminalNode BEGIN() { return GetToken(VBAParser.BEGIN, 0); } + public ITerminalNode ENUM() { return GetToken(VBAParser.ENUM, 0); } + public ITerminalNode ENDIF() { return GetToken(VBAParser.ENDIF, 0); } public ITerminalNode LOCK() { return GetToken(VBAParser.LOCK, 0); } + public ITerminalNode GLOBAL() { return GetToken(VBAParser.GLOBAL, 0); } public ITerminalNode WEND() { return GetToken(VBAParser.WEND, 0); } public ITerminalNode DEFSTR() { return GetToken(VBAParser.DEFSTR, 0); } - public ITerminalNode IMP() { return GetToken(VBAParser.IMP, 0); } public ITerminalNode DEFLNGLNG() { return GetToken(VBAParser.DEFLNGLNG, 0); } public ITerminalNode DEFVAR() { return GetToken(VBAParser.DEFVAR, 0); } - public ITerminalNode CHDRIVE() { return GetToken(VBAParser.CHDRIVE, 0); } + public ITerminalNode EXIT_DO() { return GetToken(VBAParser.EXIT_DO, 0); } public ITerminalNode EVENT() { return GetToken(VBAParser.EVENT, 0); } public ITerminalNode CONST() { return GetToken(VBAParser.CONST, 0); } - public ITerminalNode INPUTB() { return GetToken(VBAParser.INPUTB, 0); } public ITerminalNode ELSEIF() { return GetToken(VBAParser.ELSEIF, 0); } public ITerminalNode PRINT() { return GetToken(VBAParser.PRINT, 0); } public ITerminalNode DEFINT() { return GetToken(VBAParser.DEFINT, 0); } - public ITerminalNode NOTHING() { return GetToken(VBAParser.NOTHING, 0); } - public ITerminalNode THEN() { return GetToken(VBAParser.THEN, 0); } - public ITerminalNode DATABASE() { return GetToken(VBAParser.DATABASE, 0); } - public ITerminalNode BYTE() { return GetToken(VBAParser.BYTE, 0); } + public ITerminalNode SUB() { return GetToken(VBAParser.SUB, 0); } + public ITerminalNode FOR() { return GetToken(VBAParser.FOR, 0); } + public ITerminalNode LSET() { return GetToken(VBAParser.LSET, 0); } + public ITerminalNode WIDTH() { return GetToken(VBAParser.WIDTH, 0); } public ITerminalNode INPUT() { return GetToken(VBAParser.INPUT, 0); } public ITerminalNode STEP() { return GetToken(VBAParser.STEP, 0); } - public ITerminalNode SAVEPICTURE() { return GetToken(VBAParser.SAVEPICTURE, 0); } public ITerminalNode SEEK() { return GetToken(VBAParser.SEEK, 0); } - public ITerminalNode CURRENCY() { return GetToken(VBAParser.CURRENCY, 0); } - public ITerminalNode CIRCLE() { return GetToken(VBAParser.CIRCLE, 0); } - public ITerminalNode LEN(int i) { - return GetToken(VBAParser.LEN, i); - } - public ITerminalNode TAB() { return GetToken(VBAParser.TAB, 0); } + public ITerminalNode BINARY() { return GetToken(VBAParser.BINARY, 0); } public ITerminalNode RANDOM() { return GetToken(VBAParser.RANDOM, 0); } - public ITerminalNode CBOOL() { return GetToken(VBAParser.CBOOL, 0); } - public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); } public ITerminalNode LOOP() { return GetToken(VBAParser.LOOP, 0); } public ITerminalNode DEFCUR() { return GetToken(VBAParser.DEFCUR, 0); } - public ITerminalNode ALIAS() { return GetToken(VBAParser.ALIAS, 0); } - public ITerminalNode DATE() { return GetToken(VBAParser.DATE, 0); } + public ITerminalNode PUBLIC() { return GetToken(VBAParser.PUBLIC, 0); } public ITerminalNode DEFDATE() { return GetToken(VBAParser.DEFDATE, 0); } - public ITerminalNode CVERR() { return GetToken(VBAParser.CVERR, 0); } - public ITerminalNode FIX() { return GetToken(VBAParser.FIX, 0); } - public ITerminalNode CLASS() { return GetToken(VBAParser.CLASS, 0); } + public ITerminalNode PUT() { return GetToken(VBAParser.PUT, 0); } public ITerminalNode LET() { return GetToken(VBAParser.LET, 0); } - public ITerminalNode CSTR() { return GetToken(VBAParser.CSTR, 0); } public ITerminalNode FRIEND() { return GetToken(VBAParser.FRIEND, 0); } - public ITerminalNode CINT() { return GetToken(VBAParser.CINT, 0); } - public ITerminalNode EQV() { return GetToken(VBAParser.EQV, 0); } + public ITerminalNode TYPE() { return GetToken(VBAParser.TYPE, 0); } + public ITerminalNode ERROR() { return GetToken(VBAParser.ERROR, 0); } + public ITerminalNode CALL() { return GetToken(VBAParser.CALL, 0); } public ITerminalNode READ() { return GetToken(VBAParser.READ, 0); } - public ITerminalNode TO() { return GetToken(VBAParser.TO, 0); } public ITerminalNode DEFBOOL() { return GetToken(VBAParser.DEFBOOL, 0); } + public ITerminalNode RESUME_NEXT() { return GetToken(VBAParser.RESUME_NEXT, 0); } public ITerminalNode OPEN() { return GetToken(VBAParser.OPEN, 0); } - public ITerminalNode DELETESETTING() { return GetToken(VBAParser.DELETESETTING, 0); } + public ITerminalNode STATIC() { return GetToken(VBAParser.STATIC, 0); } + public ITerminalNode LOCK_READ() { return GetToken(VBAParser.LOCK_READ, 0); } + public ITerminalNode DO() { return GetToken(VBAParser.DO, 0); } + public ITerminalNode DIM() { return GetToken(VBAParser.DIM, 0); } + public ITerminalNode OPTION() { return GetToken(VBAParser.OPTION, 0); } public ITerminalNode CLOSE() { return GetToken(VBAParser.CLOSE, 0); } - public ITerminalNode DOEVENTS() { return GetToken(VBAParser.DOEVENTS, 0); } - public ITerminalNode AND() { return GetToken(VBAParser.AND, 0); } + public ITerminalNode OUTPUT() { return GetToken(VBAParser.OUTPUT, 0); } + public ITerminalNode LINE_INPUT() { return GetToken(VBAParser.LINE_INPUT, 0); } public ITerminalNode DEFLNG() { return GetToken(VBAParser.DEFLNG, 0); } - public ITerminalNode MID() { return GetToken(VBAParser.MID, 0); } + public ITerminalNode IMPLEMENTS() { return GetToken(VBAParser.IMPLEMENTS, 0); } public ITerminalNode ON() { return GetToken(VBAParser.ON, 0); } public ITerminalNode WITH() { return GetToken(VBAParser.WITH, 0); } - public ITerminalNode SETATTR() { return GetToken(VBAParser.SETATTR, 0); } - public ITerminalNode WRITE() { return GetToken(VBAParser.WRITE, 0); } - public IReadOnlyList LEN() { return GetTokens(VBAParser.LEN); } - public ITerminalNode EACH() { return GetToken(VBAParser.EACH, 0); } - public ITerminalNode NEW() { return GetToken(VBAParser.NEW, 0); } - public ITerminalNode ANY() { return GetToken(VBAParser.ANY, 0); } - public ITerminalNode CCUR() { return GetToken(VBAParser.CCUR, 0); } + public ITerminalNode ACCESS() { return GetToken(VBAParser.ACCESS, 0); } + public ITerminalNode EXIT_SUB() { return GetToken(VBAParser.EXIT_SUB, 0); } + public ITerminalNode DECLARE() { return GetToken(VBAParser.DECLARE, 0); } + public ITerminalNode LOCK_READ_WRITE() { return GetToken(VBAParser.LOCK_READ_WRITE, 0); } + public ITerminalNode RESUME() { return GetToken(VBAParser.RESUME, 0); } + public IReadOnlyList WRITE() { return GetTokens(VBAParser.WRITE); } + public ITerminalNode DEFLNGPTR() { return GetToken(VBAParser.DEFLNGPTR, 0); } + public ITerminalNode WHILE() { return GetToken(VBAParser.WHILE, 0); } + public ITerminalNode EXIT() { return GetToken(VBAParser.EXIT, 0); } public ITerminalNode GET() { return GetToken(VBAParser.GET, 0); } - public ITerminalNode FILECOPY() { return GetToken(VBAParser.FILECOPY, 0); } - public ITerminalNode LIB() { return GetToken(VBAParser.LIB, 0); } + public ITerminalNode EXIT_FOR() { return GetToken(VBAParser.EXIT_FOR, 0); } + public ITerminalNode DEFDBL() { return GetToken(VBAParser.DEFDBL, 0); } public ITerminalNode NEXT() { return GetToken(VBAParser.NEXT, 0); } - public ITerminalNode OPTIONAL() { return GetToken(VBAParser.OPTIONAL, 0); } + public ITerminalNode FUNCTION() { return GetToken(VBAParser.FUNCTION, 0); } + public ITerminalNode END_WITH() { return GetToken(VBAParser.END_WITH, 0); } + public ITerminalNode RSET() { return GetToken(VBAParser.RSET, 0); } + public ITerminalNode GOTO() { return GetToken(VBAParser.GOTO, 0); } public ITerminalNode REDIM() { return GetToken(VBAParser.REDIM, 0); } + public ITerminalNode EXIT_PROPERTY() { return GetToken(VBAParser.EXIT_PROPERTY, 0); } public ITerminalNode END() { return GetToken(VBAParser.END, 0); } - public ITerminalNode UNTIL() { return GetToken(VBAParser.UNTIL, 0); } - public ITerminalNode LIKE() { return GetToken(VBAParser.LIKE, 0); } - public ITerminalNode RANDOMIZE() { return GetToken(VBAParser.RANDOMIZE, 0); } - public ITerminalNode WITHEVENTS() { return GetToken(VBAParser.WITHEVENTS, 0); } - public KeywordContext(ParserRuleContext parent, int invokingState) + public ITerminalNode SELECT() { return GetToken(VBAParser.SELECT, 0); } + public ITerminalNode EXIT_FUNCTION() { return GetToken(VBAParser.EXIT_FUNCTION, 0); } + public ITerminalNode READ_WRITE() { return GetToken(VBAParser.READ_WRITE, 0); } + public ITerminalNode UNLOCK() { return GetToken(VBAParser.UNLOCK, 0); } + public ITerminalNode SET() { return GetToken(VBAParser.SET, 0); } + public StatementKeywordContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_keyword; } } + public override int RuleIndex { get { return RULE_statementKeyword; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterKeyword(this); + if (typedListener != null) typedListener.EnterStatementKeyword(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitKeyword(this); + if (typedListener != null) typedListener.ExitStatementKeyword(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitKeyword(this); + if (typedVisitor != null) return typedVisitor.VisitStatementKeyword(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public KeywordContext keyword() { - KeywordContext _localctx = new KeywordContext(_ctx, State); - EnterRule(_localctx, 274, RULE_keyword); + public StatementKeywordContext statementKeyword() { + StatementKeywordContext _localctx = new StatementKeywordContext(_ctx, State); + EnterRule(_localctx, 250, RULE_statementKeyword); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2480; + State = 2299; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (END_IF - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)))) != 0) || _la==COLLECTION) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXIT) | (1L << OPTION) | (1L << ACCESS) | (1L << APPEND) | (1L << BINARY) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (CLOSE - 65)) | (1L << (CONST - 65)) | (1L << (DECLARE - 65)) | (1L << (DEFBOOL - 65)) | (1L << (DEFBYTE - 65)) | (1L << (DEFDATE - 65)) | (1L << (DEFDBL - 65)) | (1L << (DEFCUR - 65)) | (1L << (DEFINT - 65)) | (1L << (DEFLNG - 65)) | (1L << (DEFLNGLNG - 65)) | (1L << (DEFLNGPTR - 65)) | (1L << (DEFOBJ - 65)) | (1L << (DEFSNG - 65)) | (1L << (DEFSTR - 65)) | (1L << (DEFVAR - 65)) | (1L << (DIM - 65)) | (1L << (DO - 65)) | (1L << (ELSE - 65)) | (1L << (ELSEIF - 65)) | (1L << (END_SELECT - 65)) | (1L << (END_WITH - 65)) | (1L << (END - 65)) | (1L << (ENUM - 65)) | (1L << (ERASE - 65)) | (1L << (ERROR - 65)) | (1L << (EVENT - 65)) | (1L << (EXIT_DO - 65)) | (1L << (EXIT_FOR - 65)) | (1L << (EXIT_FUNCTION - 65)) | (1L << (EXIT_PROPERTY - 65)) | (1L << (EXIT_SUB - 65)) | (1L << (FRIEND - 65)) | (1L << (FOR - 65)) | (1L << (FUNCTION - 65)) | (1L << (GET - 65)) | (1L << (GLOBAL - 65)) | (1L << (GOSUB - 65)) | (1L << (GOTO - 65)) | (1L << (IF - 65)) | (1L << (IMPLEMENTS - 65)) | (1L << (INPUT - 65)) | (1L << (LOCK - 65)) | (1L << (LOOP - 65)) | (1L << (LET - 65)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (LINE_INPUT - 130)) | (1L << (LOCK_READ - 130)) | (1L << (LOCK_WRITE - 130)) | (1L << (LOCK_READ_WRITE - 130)) | (1L << (LSET - 130)) | (1L << (NEXT - 130)) | (1L << (ON - 130)) | (1L << (ON_ERROR - 130)) | (1L << (OPEN - 130)) | (1L << (OUTPUT - 130)) | (1L << (PRINT - 130)) | (1L << (PRIVATE - 130)) | (1L << (PUBLIC - 130)) | (1L << (PUT - 130)) | (1L << (RANDOM - 130)) | (1L << (RAISEEVENT - 130)) | (1L << (READ - 130)) | (1L << (READ_WRITE - 130)) | (1L << (REDIM - 130)) | (1L << (RESET - 130)) | (1L << (RESUME - 130)) | (1L << (RETURN - 130)) | (1L << (RSET - 130)) | (1L << (SEEK - 130)) | (1L << (SELECT - 130)) | (1L << (SET - 130)) | (1L << (SHARED - 130)) | (1L << (STATIC - 130)) | (1L << (STEP - 130)) | (1L << (STOP - 130)) | (1L << (SUB - 130)) | (1L << (TYPE - 130)) | (1L << (UNLOCK - 130)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (WEND - 196)) | (1L << (WHILE - 196)) | (1L << (WIDTH - 196)) | (1L << (WITH - 196)) | (1L << (WRITE - 196)) | (1L << (ENDIF - 196)) | (1L << (RESUME_NEXT - 196)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -14950,127 +13811,258 @@ public KeywordContext keyword() { } public partial class EndOfLineContext : ParserRuleContext { - public CommentContext comment() { - return GetRuleContext(0); + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); + } + public CommentOrAnnotationContext commentOrAnnotation() { + return GetRuleContext(0); + } + public EndOfLineContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_endOfLine; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterEndOfLine(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitEndOfLine(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitEndOfLine(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public EndOfLineContext endOfLine() { + EndOfLineContext _localctx = new EndOfLineContext(_ctx, State); + EnterRule(_localctx, 252, RULE_endOfLine); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 2302; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 2301; whiteSpace(); + } + } + + State = 2305; + _la = _input.La(1); + if (_la==REM || _la==SINGLEQUOTE) { + { + State = 2304; commentOrAnnotation(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class EndOfStatementContext : ParserRuleContext { + public IReadOnlyList endOfLine() { + return GetRuleContexts(); } public WhiteSpaceContext whiteSpace(int i) { return GetRuleContext(i); } - public AnnotationListContext annotationList() { - return GetRuleContext(0); + public EndOfLineContext endOfLine(int i) { + return GetRuleContext(i); + } + public ITerminalNode Eof() { return GetToken(VBAParser.Eof, 0); } + public ITerminalNode COLON(int i) { + return GetToken(VBAParser.COLON, i); } public IReadOnlyList NEWLINE() { return GetTokens(VBAParser.NEWLINE); } public ITerminalNode NEWLINE(int i) { return GetToken(VBAParser.NEWLINE, i); } + public IReadOnlyList COLON() { return GetTokens(VBAParser.COLON); } public IReadOnlyList whiteSpace() { return GetRuleContexts(); } + public EndOfStatementContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_endOfStatement; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.EnterEndOfStatement(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAParserListener typedListener = listener as IVBAParserListener; + if (typedListener != null) typedListener.ExitEndOfStatement(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitEndOfStatement(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public EndOfStatementContext endOfStatement() { + EndOfStatementContext _localctx = new EndOfStatementContext(_ctx, State); + EnterRule(_localctx, 254, RULE_endOfStatement); + int _la; + try { + int _alt; + State = 2329; + switch ( Interpreter.AdaptivePredict(_input,397,_ctx) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 2323; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,396,_ctx); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { + if ( _alt==1 ) { + { + { + State = 2319; + switch ( Interpreter.AdaptivePredict(_input,395,_ctx) ) { + case 1: + { + { + State = 2307; endOfLine(); + State = 2308; Match(NEWLINE); + State = 2310; + switch ( Interpreter.AdaptivePredict(_input,392,_ctx) ) { + case 1: + { + State = 2309; whiteSpace(); + } + break; + } + } + } + break; + + case 2: + { + { + State = 2313; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 2312; whiteSpace(); + } + } + + State = 2315; Match(COLON); + State = 2317; + switch ( Interpreter.AdaptivePredict(_input,394,_ctx) ) { + case 1: + { + State = 2316; whiteSpace(); + } + break; + } + } + } + break; + } + } + } + } + State = 2325; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,396,_ctx); + } + } + break; + + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 2326; endOfLine(); + State = 2327; Match(Eof); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class CommentOrAnnotationContext : ParserRuleContext { + public CommentContext comment() { + return GetRuleContext(0); + } + public AnnotationListContext annotationList() { + return GetRuleContext(0); + } public RemCommentContext remComment() { return GetRuleContext(0); } - public EndOfLineContext(ParserRuleContext parent, int invokingState) + public CommentOrAnnotationContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_endOfLine; } } + public override int RuleIndex { get { return RULE_commentOrAnnotation; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterEndOfLine(this); + if (typedListener != null) typedListener.EnterCommentOrAnnotation(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitEndOfLine(this); + if (typedListener != null) typedListener.ExitCommentOrAnnotation(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitEndOfLine(this); + if (typedVisitor != null) return typedVisitor.VisitCommentOrAnnotation(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public EndOfLineContext endOfLine() { - EndOfLineContext _localctx = new EndOfLineContext(_ctx, State); - EnterRule(_localctx, 276, RULE_endOfLine); - int _la; + public CommentOrAnnotationContext commentOrAnnotation() { + CommentOrAnnotationContext _localctx = new CommentOrAnnotationContext(_ctx, State); + EnterRule(_localctx, 256, RULE_commentOrAnnotation); try { - int _alt; - State = 2501; - switch ( Interpreter.AdaptivePredict(_input,416,_ctx) ) { + State = 2334; + switch ( Interpreter.AdaptivePredict(_input,398,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2483; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 2482; whiteSpace(); - } - } - - State = 2492; - switch (_input.La(1)) { - case NEWLINE: - { - State = 2486; - _errHandler.Sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - State = 2485; Match(NEWLINE); - } - } - break; - default: - throw new NoViableAltException(this); - } - State = 2488; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,412,_ctx); - } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - } - break; - case COMMENT: - case SINGLEQUOTE: - { - State = 2490; comment(); - } - break; - case REMCOMMENT: - { - State = 2491; remComment(); - } - break; - default: - throw new NoViableAltException(this); - } - State = 2495; - switch ( Interpreter.AdaptivePredict(_input,414,_ctx) ) { - case 1: - { - State = 2494; whiteSpace(); - } - break; - } + State = 2331; annotationList(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2498; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 2497; whiteSpace(); - } + State = 2332; comment(); } + break; - State = 2500; annotationList(); + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 2333; remComment(); } break; } @@ -15086,94 +14078,51 @@ public EndOfLineContext endOfLine() { return _localctx; } - public partial class EndOfStatementContext : ParserRuleContext { - public IReadOnlyList endOfLine() { - return GetRuleContexts(); - } - public WhiteSpaceContext whiteSpace(int i) { - return GetRuleContext(i); - } - public EndOfLineContext endOfLine(int i) { - return GetRuleContext(i); - } - public ITerminalNode COLON(int i) { - return GetToken(VBAParser.COLON, i); + public partial class RemCommentContext : ParserRuleContext { + public CommentBodyContext commentBody() { + return GetRuleContext(0); } - public IReadOnlyList COLON() { return GetTokens(VBAParser.COLON); } - public IReadOnlyList whiteSpace() { - return GetRuleContexts(); + public ITerminalNode REM() { return GetToken(VBAParser.REM, 0); } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); } - public EndOfStatementContext(ParserRuleContext parent, int invokingState) + public RemCommentContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_endOfStatement; } } + public override int RuleIndex { get { return RULE_remComment; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterEndOfStatement(this); + if (typedListener != null) typedListener.EnterRemComment(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitEndOfStatement(this); + if (typedListener != null) typedListener.ExitRemComment(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitEndOfStatement(this); + if (typedVisitor != null) return typedVisitor.VisitRemComment(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public EndOfStatementContext endOfStatement() { - EndOfStatementContext _localctx = new EndOfStatementContext(_ctx, State); - EnterRule(_localctx, 278, RULE_endOfStatement); - int _la; + public RemCommentContext remComment() { + RemCommentContext _localctx = new RemCommentContext(_ctx, State); + EnterRule(_localctx, 258, RULE_remComment); try { - int _alt; EnterOuterAlt(_localctx, 1); { - State = 2513; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,420,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - State = 2511; - switch ( Interpreter.AdaptivePredict(_input,419,_ctx) ) { - case 1: - { - State = 2503; endOfLine(); - } - break; - - case 2: - { - State = 2505; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 2504; whiteSpace(); - } - } - - State = 2507; Match(COLON); - State = 2509; - switch ( Interpreter.AdaptivePredict(_input,418,_ctx) ) { - case 1: - { - State = 2508; whiteSpace(); - } - break; - } - } - break; - } - } + State = 2336; Match(REM); + State = 2338; + switch ( Interpreter.AdaptivePredict(_input,399,_ctx) ) { + case 1: + { + State = 2337; whiteSpace(); } - State = 2515; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,420,_ctx); + break; } + State = 2340; commentBody(); } } catch (RecognitionException re) { @@ -15187,36 +14136,40 @@ public EndOfStatementContext endOfStatement() { return _localctx; } - public partial class RemCommentContext : ParserRuleContext { - public ITerminalNode REMCOMMENT() { return GetToken(VBAParser.REMCOMMENT, 0); } - public RemCommentContext(ParserRuleContext parent, int invokingState) + public partial class CommentContext : ParserRuleContext { + public CommentBodyContext commentBody() { + return GetRuleContext(0); + } + public ITerminalNode SINGLEQUOTE() { return GetToken(VBAParser.SINGLEQUOTE, 0); } + public CommentContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_remComment; } } + public override int RuleIndex { get { return RULE_comment; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterRemComment(this); + if (typedListener != null) typedListener.EnterComment(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitRemComment(this); + if (typedListener != null) typedListener.ExitComment(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitRemComment(this); + if (typedVisitor != null) return typedVisitor.VisitComment(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public RemCommentContext remComment() { - RemCommentContext _localctx = new RemCommentContext(_ctx, State); - EnterRule(_localctx, 280, RULE_remComment); + public CommentContext comment() { + CommentContext _localctx = new CommentContext(_ctx, State); + EnterRule(_localctx, 260, RULE_comment); try { EnterOuterAlt(_localctx, 1); { - State = 2516; Match(REMCOMMENT); + State = 2342; Match(SINGLEQUOTE); + State = 2343; commentBody(); } } catch (RecognitionException re) { @@ -15230,43 +14183,72 @@ public RemCommentContext remComment() { return _localctx; } - public partial class CommentContext : ParserRuleContext { - public ITerminalNode COMMENT() { return GetToken(VBAParser.COMMENT, 0); } - public ITerminalNode SINGLEQUOTE() { return GetToken(VBAParser.SINGLEQUOTE, 0); } - public CommentContext(ParserRuleContext parent, int invokingState) + public partial class CommentBodyContext : ParserRuleContext { + public IReadOnlyList LINE_CONTINUATION() { return GetTokens(VBAParser.LINE_CONTINUATION); } + public IReadOnlyList NEWLINE() { return GetTokens(VBAParser.NEWLINE); } + public ITerminalNode NEWLINE(int i) { + return GetToken(VBAParser.NEWLINE, i); + } + public ITerminalNode LINE_CONTINUATION(int i) { + return GetToken(VBAParser.LINE_CONTINUATION, i); + } + public CommentBodyContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_comment; } } + public override int RuleIndex { get { return RULE_commentBody; } } public override void EnterRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.EnterComment(this); + if (typedListener != null) typedListener.EnterCommentBody(this); } public override void ExitRule(IParseTreeListener listener) { IVBAParserListener typedListener = listener as IVBAParserListener; - if (typedListener != null) typedListener.ExitComment(this); + if (typedListener != null) typedListener.ExitCommentBody(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAParserVisitor typedVisitor = visitor as IVBAParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitComment(this); + if (typedVisitor != null) return typedVisitor.VisitCommentBody(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public CommentContext comment() { - CommentContext _localctx = new CommentContext(_ctx, State); - EnterRule(_localctx, 282, RULE_comment); + public CommentBodyContext commentBody() { + CommentBodyContext _localctx = new CommentBodyContext(_ctx, State); + EnterRule(_localctx, 262, RULE_commentBody); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2518; + State = 2349; + _errHandler.Sync(this); _la = _input.La(1); - if ( !(_la==COMMENT || _la==SINGLEQUOTE) ) { - _errHandler.RecoverInline(this); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (HASHCONST - 192)) | (1L << (HASHIF - 192)) | (1L << (HASHELSEIF - 192)) | (1L << (HASHELSE - 192)) | (1L << (HASHENDIF - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)) | (1L << (COLLECTION - 192)) | (1L << (DELETESETTING - 192)) | (1L << (LOAD - 192)) | (1L << (RMDIR - 192)) | (1L << (SENDKEYS - 192)) | (1L << (SETATTR - 192)) | (1L << (ENDIF - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + { + State = 2347; + switch ( Interpreter.AdaptivePredict(_input,400,_ctx) ) { + case 1: + { + State = 2345; Match(LINE_CONTINUATION); + } + break; + + case 2: + { + State = 2346; + _la = _input.La(1); + if ( _la <= 0 || (_la==NEWLINE) ) { + _errHandler.RecoverInline(this); + } + Consume(); + } + break; + } + } + State = 2351; + _errHandler.Sync(this); + _la = _input.La(1); } - Consume(); } } catch (RecognitionException re) { @@ -15281,13 +14263,23 @@ public CommentContext comment() { } public partial class AnnotationListContext : ParserRuleContext { + public IReadOnlyList AT() { return GetTokens(VBAParser.AT); } public IReadOnlyList annotation() { return GetRuleContexts(); } + public WhiteSpaceContext whiteSpace(int i) { + return GetRuleContext(i); + } + public ITerminalNode AT(int i) { + return GetToken(VBAParser.AT, i); + } public ITerminalNode SINGLEQUOTE() { return GetToken(VBAParser.SINGLEQUOTE, 0); } public AnnotationContext annotation(int i) { return GetRuleContext(i); } + public IReadOnlyList whiteSpace() { + return GetRuleContexts(); + } public AnnotationListContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -15311,22 +14303,31 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public AnnotationListContext annotationList() { AnnotationListContext _localctx = new AnnotationListContext(_ctx, State); - EnterRule(_localctx, 284, RULE_annotationList); + EnterRule(_localctx, 264, RULE_annotationList); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 2520; Match(SINGLEQUOTE); - State = 2522; + State = 2352; Match(SINGLEQUOTE); + State = 2358; _errHandler.Sync(this); _la = _input.La(1); do { { { - State = 2521; annotation(); + State = 2353; Match(AT); + State = 2354; annotation(); + State = 2356; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 2355; whiteSpace(); + } + } + } } - State = 2524; + State = 2360; _errHandler.Sync(this); _la = _input.La(1); } while ( _la==AT ); @@ -15344,7 +14345,6 @@ public AnnotationListContext annotationList() { } public partial class AnnotationContext : ParserRuleContext { - public ITerminalNode AT() { return GetToken(VBAParser.AT, 0); } public AnnotationNameContext annotationName() { return GetRuleContext(0); } @@ -15374,17 +14374,16 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public AnnotationContext annotation() { AnnotationContext _localctx = new AnnotationContext(_ctx, State); - EnterRule(_localctx, 286, RULE_annotation); + EnterRule(_localctx, 266, RULE_annotation); try { EnterOuterAlt(_localctx, 1); { - State = 2526; Match(AT); - State = 2527; annotationName(); - State = 2529; - switch ( Interpreter.AdaptivePredict(_input,422,_ctx) ) { + State = 2362; annotationName(); + State = 2364; + switch ( Interpreter.AdaptivePredict(_input,404,_ctx) ) { case 1: { - State = 2528; annotationArgList(); + State = 2363; annotationArgList(); } break; } @@ -15402,7 +14401,9 @@ public AnnotationContext annotation() { } public partial class AnnotationNameContext : ParserRuleContext { - public ITerminalNode IDENTIFIER() { return GetToken(VBAParser.IDENTIFIER, 0); } + public UnrestrictedIdentifierContext unrestrictedIdentifier() { + return GetRuleContext(0); + } public AnnotationNameContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -15426,11 +14427,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public AnnotationNameContext annotationName() { AnnotationNameContext _localctx = new AnnotationNameContext(_ctx, State); - EnterRule(_localctx, 288, RULE_annotationName); + EnterRule(_localctx, 268, RULE_annotationName); try { EnterOuterAlt(_localctx, 1); { - State = 2531; Match(IDENTIFIER); + State = 2366; unrestrictedIdentifier(); } } catch (RecognitionException re) { @@ -15486,34 +14487,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public AnnotationArgListContext annotationArgList() { AnnotationArgListContext _localctx = new AnnotationArgListContext(_ctx, State); - EnterRule(_localctx, 290, RULE_annotationArgList); + EnterRule(_localctx, 270, RULE_annotationArgList); int _la; try { int _alt; - State = 2594; - switch ( Interpreter.AdaptivePredict(_input,438,_ctx) ) { + State = 2420; + switch ( Interpreter.AdaptivePredict(_input,416,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2533; whiteSpace(); - State = 2534; annotationArg(); - State = 2536; - switch ( Interpreter.AdaptivePredict(_input,423,_ctx) ) { - case 1: - { - State = 2535; whiteSpace(); - } - break; - } + State = 2368; whiteSpace(); + State = 2369; annotationArg(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2538; whiteSpace(); - State = 2539; annotationArg(); - State = 2548; + State = 2371; whiteSpace(); + State = 2372; annotationArg(); + State = 2381; _errHandler.Sync(this); _alt = 1; do { @@ -15521,100 +14514,84 @@ public AnnotationArgListContext annotationArgList() { case 1: { { - State = 2541; + State = 2374; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2540; whiteSpace(); + State = 2373; whiteSpace(); } } - State = 2543; Match(COMMA); - State = 2545; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 2376; Match(COMMA); + State = 2378; + switch ( Interpreter.AdaptivePredict(_input,406,_ctx) ) { + case 1: { - State = 2544; whiteSpace(); + State = 2377; whiteSpace(); } + break; } - - State = 2547; annotationArg(); + State = 2380; annotationArg(); } } break; default: throw new NoViableAltException(this); } - State = 2550; + State = 2383; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,426,_ctx); + _alt = Interpreter.AdaptivePredict(_input,407,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - State = 2553; - switch ( Interpreter.AdaptivePredict(_input,427,_ctx) ) { - case 1: - { - State = 2552; whiteSpace(); - } - break; - } } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 2556; + State = 2386; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2555; whiteSpace(); + State = 2385; whiteSpace(); } } - State = 2558; Match(LPAREN); - State = 2560; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 2388; Match(LPAREN); + State = 2390; + switch ( Interpreter.AdaptivePredict(_input,409,_ctx) ) { + case 1: { - State = 2559; whiteSpace(); + State = 2389; whiteSpace(); } + break; } - - State = 2562; annotationArg(); - State = 2564; + State = 2392; annotationArg(); + State = 2394; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2563; whiteSpace(); + State = 2393; whiteSpace(); } } - State = 2566; Match(RPAREN); - State = 2568; - switch ( Interpreter.AdaptivePredict(_input,431,_ctx) ) { - case 1: - { - State = 2567; whiteSpace(); - } - break; - } + State = 2396; Match(RPAREN); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 2571; + State = 2399; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2570; whiteSpace(); + State = 2398; whiteSpace(); } } - State = 2573; Match(LPAREN); - State = 2574; annotationArg(); - State = 2583; + State = 2401; Match(LPAREN); + State = 2402; annotationArg(); + State = 2411; _errHandler.Sync(this); _alt = 1; do { @@ -15622,51 +14599,43 @@ public AnnotationArgListContext annotationArgList() { case 1: { { - State = 2576; + State = 2404; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2575; whiteSpace(); + State = 2403; whiteSpace(); } } - State = 2578; Match(COMMA); - State = 2580; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { + State = 2406; Match(COMMA); + State = 2408; + switch ( Interpreter.AdaptivePredict(_input,413,_ctx) ) { + case 1: { - State = 2579; whiteSpace(); + State = 2407; whiteSpace(); } + break; } - - State = 2582; annotationArg(); + State = 2410; annotationArg(); } } break; default: throw new NoViableAltException(this); } - State = 2585; + State = 2413; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,435,_ctx); + _alt = Interpreter.AdaptivePredict(_input,414,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - State = 2588; + State = 2416; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2587; whiteSpace(); + State = 2415; whiteSpace(); } } - State = 2590; Match(RPAREN); - State = 2592; - switch ( Interpreter.AdaptivePredict(_input,437,_ctx) ) { - case 1: - { - State = 2591; whiteSpace(); - } - break; - } + State = 2418; Match(RPAREN); } break; } @@ -15683,10 +14652,9 @@ public AnnotationArgListContext annotationArgList() { } public partial class AnnotationArgContext : ParserRuleContext { - public LiteralContext literal() { - return GetRuleContext(0); + public ValueStmtContext valueStmt() { + return GetRuleContext(0); } - public ITerminalNode IDENTIFIER() { return GetToken(VBAParser.IDENTIFIER, 0); } public AnnotationArgContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -15710,34 +14678,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public AnnotationArgContext annotationArg() { AnnotationArgContext _localctx = new AnnotationArgContext(_ctx, State); - EnterRule(_localctx, 292, RULE_annotationArg); + EnterRule(_localctx, 272, RULE_annotationArg); try { - State = 2598; - switch (_input.La(1)) { - case IDENTIFIER: - EnterOuterAlt(_localctx, 1); - { - State = 2596; Match(IDENTIFIER); - } - break; - case EMPTY: - case FALSE: - case NOTHING: - case NULL: - case TRUE: - case STRINGLITERAL: - case OCTLITERAL: - case HEXLITERAL: - case FLOATLITERAL: - case INTEGERLITERAL: - case DATELITERAL: - EnterOuterAlt(_localctx, 2); - { - State = 2597; literal(); - } - break; - default: - throw new NoViableAltException(this); + EnterOuterAlt(_localctx, 1); + { + State = 2422; valueStmt(0); } } catch (RecognitionException re) { @@ -15783,13 +14728,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public WhiteSpaceContext whiteSpace() { WhiteSpaceContext _localctx = new WhiteSpaceContext(_ctx, State); - EnterRule(_localctx, 294, RULE_whiteSpace); + EnterRule(_localctx, 274, RULE_whiteSpace); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2601; + State = 2425; _errHandler.Sync(this); _alt = 1; do { @@ -15797,7 +14742,7 @@ public WhiteSpaceContext whiteSpace() { case 1: { { - State = 2600; + State = 2424; _la = _input.La(1); if ( !(_la==WS || _la==LINE_CONTINUATION) ) { _errHandler.RecoverInline(this); @@ -15809,9 +14754,9 @@ public WhiteSpaceContext whiteSpace() { default: throw new NoViableAltException(this); } - State = 2603; + State = 2427; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,440,_ctx); + _alt = Interpreter.AdaptivePredict(_input,417,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } } @@ -15828,7 +14773,7 @@ public WhiteSpaceContext whiteSpace() { public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { - case 93: return valueStmt_sempred((ValueStmtContext)_localctx, predIndex); + case 77: return valueStmt_sempred((ValueStmtContext)_localctx, predIndex); } return true; } @@ -15862,7 +14807,7 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) { } public static readonly string _serializedATN = - "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\x105\xA30\x4\x2"+ + "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\xF8\x980\x4\x2"+ "\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b\t\b\x4"+ "\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF\x4\x10"+ "\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15\t\x15"+ @@ -15881,1208 +14826,1130 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) { "q\tq\x4r\tr\x4s\ts\x4t\tt\x4u\tu\x4v\tv\x4w\tw\x4x\tx\x4y\ty\x4z\tz\x4"+ "{\t{\x4|\t|\x4}\t}\x4~\t~\x4\x7F\t\x7F\x4\x80\t\x80\x4\x81\t\x81\x4\x82"+ "\t\x82\x4\x83\t\x83\x4\x84\t\x84\x4\x85\t\x85\x4\x86\t\x86\x4\x87\t\x87"+ - "\x4\x88\t\x88\x4\x89\t\x89\x4\x8A\t\x8A\x4\x8B\t\x8B\x4\x8C\t\x8C\x4\x8D"+ - "\t\x8D\x4\x8E\t\x8E\x4\x8F\t\x8F\x4\x90\t\x90\x4\x91\t\x91\x4\x92\t\x92"+ - "\x4\x93\t\x93\x4\x94\t\x94\x4\x95\t\x95\x3\x2\x3\x2\x3\x2\x3\x3\x5\x3"+ - "\x12F\n\x3\x3\x3\x3\x3\x3\x3\x3\x3\x5\x3\x135\n\x3\x3\x3\x5\x3\x138\n"+ - "\x3\x3\x3\x3\x3\x5\x3\x13C\n\x3\x3\x3\x3\x3\x5\x3\x140\n\x3\x3\x3\x3\x3"+ - "\x5\x3\x144\n\x3\x3\x3\x3\x3\x5\x3\x148\n\x3\x3\x4\x3\x4\x3\x4\x3\x4\x5"+ - "\x4\x14E\n\x4\x3\x4\x5\x4\x151\n\x4\x3\x4\x3\x4\x3\x5\x3\x5\x3\x5\x3\x5"+ - "\x3\x5\x3\x5\x5\x5\x15B\n\x5\x5\x5\x15D\n\x5\x3\x5\x3\x5\x6\x5\x161\n"+ - "\x5\r\x5\xE\x5\x162\x3\x5\x3\x5\x3\x6\x3\x6\a\x6\x169\n\x6\f\x6\xE\x6"+ - "\x16C\v\x6\x3\x6\x3\x6\a\x6\x170\n\x6\f\x6\xE\x6\x173\v\x6\x3\x6\x3\x6"+ - "\x3\x6\x5\x6\x178\n\x6\x3\x6\x3\x6\x3\a\x3\a\x3\a\x6\a\x17F\n\a\r\a\xE"+ - "\a\x180\x3\b\x3\b\x3\b\x3\b\a\b\x187\n\b\f\b\xE\b\x18A\v\b\x3\b\x3\b\x3"+ - "\t\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x5\t\x198\n\t\x3\n\x3"+ - "\n\x3\n\x3\n\x3\n\x3\n\x3\n\x3\n\x5\n\x1A2\n\n\x3\v\x3\v\x3\v\x3\v\a\v"+ - "\x1A8\n\v\f\v\xE\v\x1AB\v\v\x3\v\x3\v\x3\f\x3\f\x3\f\x3\f\x3\f\x5\f\x1B4"+ - "\n\f\x3\r\x3\r\x3\r\x3\r\x5\r\x1BA\n\r\x3\r\x3\r\x5\r\x1BE\n\r\x3\r\x3"+ - "\r\x5\r\x1C2\n\r\x3\r\x3\r\x5\r\x1C6\n\r\x3\r\a\r\x1C9\n\r\f\r\xE\r\x1CC"+ - "\v\r\x3\xE\x3\xE\x3\xE\x3\xE\a\xE\x1D2\n\xE\f\xE\xE\xE\x1D5\v\xE\x3\xE"+ - "\x3\xE\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3"+ - "\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF"+ - "\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3"+ - "\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF"+ - "\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3"+ - "\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x5\xF\x21B\n"+ - "\xF\x3\x10\x3\x10\x3\x10\x3\x10\x5\x10\x221\n\x10\x3\x10\x3\x10\x5\x10"+ - "\x225\n\x10\x3\x10\x5\x10\x228\n\x10\x3\x11\x3\x11\x3\x12\x3\x12\x3\x12"+ - "\x3\x12\x3\x13\x3\x13\x3\x13\x3\x13\x3\x14\x3\x14\x3\x14\x3\x14\x5\x14"+ - "\x238\n\x14\x3\x14\x3\x14\x5\x14\x23C\n\x14\x3\x14\a\x14\x23F\n\x14\f"+ - "\x14\xE\x14\x242\v\x14\x5\x14\x244\n\x14\x3\x15\x3\x15\x3\x15\x5\x15\x249"+ - "\n\x15\x3\x15\x3\x15\x3\x15\x3\x15\x5\x15\x24F\n\x15\x3\x15\x3\x15\x5"+ - "\x15\x253\n\x15\x3\x15\a\x15\x256\n\x15\f\x15\xE\x15\x259\v\x15\x3\x16"+ - "\x3\x16\x5\x16\x25D\n\x16\x3\x16\x3\x16\x3\x16\x5\x16\x262\n\x16\x3\x16"+ - "\x5\x16\x265\n\x16\x3\x16\x3\x16\x5\x16\x269\n\x16\x3\x16\x3\x16\x3\x17"+ - "\x3\x17\x5\x17\x26F\n\x17\x3\x17\x3\x17\x5\x17\x273\n\x17\x3\x17\x3\x17"+ - "\x3\x18\x3\x18\x3\x18\x5\x18\x27A\n\x18\x3\x18\x3\x18\x3\x18\x3\x18\x5"+ - "\x18\x280\n\x18\x3\x18\x3\x18\x5\x18\x284\n\x18\x3\x18\x5\x18\x287\n\x18"+ - "\x3\x18\x3\x18\x3\x18\x5\x18\x28C\n\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3"+ - "\x18\x3\x18\x3\x18\x3\x18\x3\x18\x5\x18\x297\n\x18\x3\x18\x5\x18\x29A"+ - "\n\x18\x3\x18\x5\x18\x29D\n\x18\x3\x18\x3\x18\x3\x18\x5\x18\x2A2\n\x18"+ - "\x3\x19\x3\x19\x3\x19\x3\x19\x5\x19\x2A8\n\x19\x3\x19\x3\x19\x5\x19\x2AC"+ - "\n\x19\x3\x19\a\x19\x2AF\n\x19\f\x19\xE\x19\x2B2\v\x19\x3\x1A\x3\x1A\x3"+ - "\x1A\x3\x1A\x5\x1A\x2B8\n\x1A\x3\x1A\x3\x1A\x3\x1A\x3\x1A\x5\x1A\x2BE"+ - "\n\x1A\x3\x1A\x3\x1A\x5\x1A\x2C2\n\x1A\x3\x1A\x3\x1A\x3\x1A\x3\x1A\x3"+ - "\x1A\x3\x1A\x5\x1A\x2CA\n\x1A\x3\x1A\x3\x1A\x5\x1A\x2CE\n\x1A\x3\x1A\x3"+ - "\x1A\x5\x1A\x2D2\n\x1A\x3\x1A\x3\x1A\x5\x1A\x2D6\n\x1A\x3\x1A\x3\x1A\x5"+ - "\x1A\x2DA\n\x1A\x3\x1B\x3\x1B\x3\x1B\x5\x1B\x2DF\n\x1B\x3\x1B\x3\x1B\x3"+ - "\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x5\x1B\x2EA\n\x1B\x3\x1B"+ - "\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x5\x1B\x2F1\n\x1B\x3\x1B\x3\x1B\x3\x1B\x3"+ - "\x1B\x3\x1B\x3\x1B\x5\x1B\x2F9\n\x1B\x3\x1C\x3\x1C\x3\x1D\x3\x1D\x3\x1D"+ - "\x5\x1D\x300\n\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\a\x1D\x307\n\x1D"+ - "\f\x1D\xE\x1D\x30A\v\x1D\x3\x1D\x3\x1D\x3\x1E\x3\x1E\x5\x1E\x310\n\x1E"+ - "\x3\x1E\x3\x1E\x5\x1E\x314\n\x1E\x3\x1E\x5\x1E\x317\n\x1E\x3\x1E\x3\x1E"+ - "\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x5\x1F\x31F\n\x1F\x3\x1F\x3\x1F\x5\x1F\x323"+ - "\n\x1F\x3\x1F\a\x1F\x326\n\x1F\f\x1F\xE\x1F\x329\v\x1F\x3 \x3 \x3 \x3"+ - " \x3!\x3!\x3!\x5!\x332\n!\x3!\x3!\x3!\x3!\x5!\x338\n!\x3!\x3!\x3\"\x3"+ - "\"\x3#\x3#\x3#\x3#\x5#\x342\n#\x3#\x3#\x5#\x346\n#\x3#\x3#\x3$\x3$\x3"+ - "$\x3$\x3$\x3$\x5$\x350\n$\x3$\x3$\x3$\x3$\x3$\x3$\x5$\x358\n$\x3$\x3$"+ - "\x3$\x3$\x5$\x35E\n$\x3%\x3%\x3%\x3%\x5%\x364\n%\x3%\x3%\x3%\x5%\x369"+ - "\n%\x3%\x5%\x36C\n%\x3%\x3%\x5%\x370\n%\x3%\x3%\x3%\x3%\x3%\x3%\x3%\x3"+ - "%\x3%\x3%\x5%\x37C\n%\x3%\x3%\x5%\x380\n%\x3%\x3%\x3%\x3%\x5%\x386\n%"+ - "\x5%\x388\n%\x3&\x3&\x3&\x5&\x38D\n&\x3&\x3&\x5&\x391\n&\x3&\x3&\x5&\x395"+ - "\n&\x3&\x3&\x5&\x399\n&\x3&\x5&\x39C\n&\x3&\x5&\x39F\n&\x3&\x5&\x3A2\n"+ - "&\x3&\x5&\x3A5\n&\x3&\x3&\x5&\x3A9\n&\x3&\x3&\x3\'\x3\'\x3\'\x3\'\x5\'"+ - "\x3B1\n\'\x3\'\x3\'\x5\'\x3B5\n\'\x3\'\x5\'\x3B8\n\'\x3\'\x5\'\x3BB\n"+ - "\'\x3\'\x3\'\x5\'\x3BF\n\'\x3\'\x3\'\x3(\x3(\x3(\x3(\x3)\x3)\x3)\x3)\x3"+ - "*\x3*\x3*\x3*\x3*\x3*\x3*\x3*\x3*\x3*\x3*\x3*\x5*\x3D7\n*\x3*\x3*\a*\x3DB"+ - "\n*\f*\xE*\x3DE\v*\x3*\x5*\x3E1\n*\x3*\x3*\x5*\x3E5\n*\x3+\x3+\x3+\x3"+ - "+\x3+\x3+\x3+\x5+\x3EE\n+\x3,\x3,\x3-\x3-\x3-\x3-\x3-\x3-\x3-\x5-\x3F9"+ - "\n-\x3.\x3.\x3.\x5.\x3FE\n.\x3/\x3/\x3/\x3/\x3\x30\x3\x30\x3\x30\x3\x30"+ - "\x5\x30\x408\n\x30\x3\x30\x3\x30\x5\x30\x40C\n\x30\x3\x30\x6\x30\x40F"+ - "\n\x30\r\x30\xE\x30\x410\x3\x31\x3\x31\x3\x31\x3\x31\x3\x32\x3\x32\x5"+ - "\x32\x419\n\x32\x3\x32\x3\x32\x5\x32\x41D\n\x32\x3\x32\x3\x32\x5\x32\x421"+ - "\n\x32\x3\x32\x3\x32\x3\x33\x3\x33\x3\x33\x3\x33\x5\x33\x429\n\x33\x3"+ - "\x33\x3\x33\x5\x33\x42D\n\x33\x3\x33\x3\x33\x3\x34\x3\x34\x3\x34\x3\x34"+ - "\x3\x35\x3\x35\x3\x35\x3\x35\x5\x35\x439\n\x35\x3\x35\x3\x35\x5\x35\x43D"+ - "\n\x35\x3\x35\x3\x35\x3\x35\x3\x35\x3\x35\x3\x35\x5\x35\x445\n\x35\x5"+ - "\x35\x447\n\x35\x3\x36\x3\x36\x3\x36\x3\x36\x5\x36\x44D\n\x36\x3\x36\x3"+ - "\x36\x5\x36\x451\n\x36\x3\x36\x3\x36\x3\x37\x3\x37\x5\x37\x457\n\x37\x3"+ - "\x37\x3\x37\x5\x37\x45B\n\x37\x3\x37\x3\x37\x5\x37\x45F\n\x37\x3\x37\x3"+ - "\x37\x3\x38\x3\x38\x3\x38\x3\x38\x3\x39\x3\x39\x3\x39\x3\x39\x3\x39\x3"+ - "\x39\x3\x39\x3\x39\x3:\x3:\x3:\x3:\x3:\x3:\x3:\x3:\x3:\x3:\x5:\x479\n"+ - ":\x3;\x3;\x3;\x3;\x3;\x3;\x3;\x3;\x5;\x483\n;\x3;\x3;\x5;\x487\n;\x3;"+ - "\a;\x48A\n;\f;\xE;\x48D\v;\x3<\x3<\x3<\x3<\x3<\x3<\x3<\x3<\x5<\x497\n"+ - "<\x3<\x3<\x5<\x49B\n<\x3<\a<\x49E\n<\f<\xE<\x4A1\v<\x3=\x3=\x3=\x3=\x3"+ - "=\x3=\x3=\x3=\x3=\x3=\x3=\x3=\x5=\x4AF\n=\x3=\x3=\x3=\x5=\x4B4\n=\x3="+ - "\x3=\x3=\x3=\x3=\x3=\x3=\x5=\x4BD\n=\x3=\x3=\x5=\x4C1\n=\x3=\x3=\x5=\x4C5"+ - "\n=\x3>\x3>\x5>\x4C9\n>\x3>\x3>\x5>\x4CD\n>\x3>\x5>\x4D0\n>\a>\x4D2\n"+ - ">\f>\xE>\x4D5\v>\x3>\x5>\x4D8\n>\x3>\x5>\x4DB\n>\x3>\x3>\x5>\x4DF\n>\x3"+ - ">\x5>\x4E2\n>\x6>\x4E4\n>\r>\xE>\x4E5\x5>\x4E8\n>\x3?\x3?\x3?\x5?\x4ED"+ - "\n?\x3?\x3?\x5?\x4F1\n?\x3?\x3?\x5?\x4F5\n?\x3?\x3?\x5?\x4F9\n?\x5?\x4FB"+ - "\n?\x3@\x3@\x3@\x3@\x5@\x501\n@\x3@\x3@\x5@\x505\n@\x3@\x5@\x508\n@\x3"+ - "\x41\x3\x41\x3\x41\x5\x41\x50D\n\x41\x3\x41\x3\x41\x5\x41\x511\n\x41\x3"+ - "\x41\x3\x41\x3\x41\x3\x41\x5\x41\x517\n\x41\x3\x41\x5\x41\x51A\n\x41\x3"+ - "\x41\x5\x41\x51D\n\x41\x3\x41\x3\x41\x3\x41\x5\x41\x522\n\x41\x3\x41\x3"+ - "\x41\x5\x41\x526\n\x41\x3\x41\x3\x41\x3\x42\x3\x42\x3\x42\x5\x42\x52D"+ - "\n\x42\x3\x42\x3\x42\x5\x42\x531\n\x42\x3\x42\x3\x42\x3\x42\x3\x42\x5"+ - "\x42\x537\n\x42\x3\x42\x5\x42\x53A\n\x42\x3\x42\x3\x42\x5\x42\x53E\n\x42"+ - "\x3\x42\x3\x42\x3\x43\x3\x43\x3\x43\x5\x43\x545\n\x43\x3\x43\x3\x43\x5"+ - "\x43\x549\n\x43\x3\x43\x3\x43\x3\x43\x3\x43\x5\x43\x54F\n\x43\x3\x43\x5"+ - "\x43\x552\n\x43\x3\x43\x3\x43\x5\x43\x556\n\x43\x3\x43\x3\x43\x3\x44\x3"+ - "\x44\x3\x44\x3\x44\x5\x44\x55E\n\x44\x3\x44\x3\x44\x5\x44\x562\n\x44\x3"+ - "\x44\x5\x44\x565\n\x44\x3\x44\x5\x44\x568\n\x44\x3\x44\x3\x44\x5\x44\x56C"+ - "\n\x44\x3\x44\x3\x44\x3\x45\x3\x45\x3\x45\x3\x45\x5\x45\x574\n\x45\x3"+ - "\x45\x3\x45\x5\x45\x578\n\x45\x3\x45\x3\x45\x5\x45\x57C\n\x45\x5\x45\x57E"+ - "\n\x45\x3\x45\x5\x45\x581\n\x45\x3\x46\x3\x46\x3\x46\x3\x46\x5\x46\x587"+ - "\n\x46\x3G\x3G\x3G\x3G\x5G\x58D\nG\x3G\x3G\x5G\x591\nG\x3G\x3G\x5G\x595"+ - "\nG\x3G\aG\x598\nG\fG\xEG\x59B\vG\x3H\x3H\x5H\x59F\nH\x3H\x3H\x5H\x5A3"+ - "\nH\x3H\x3H\x5H\x5A7\nH\x3H\x3H\x3H\x3H\x5H\x5AD\nH\x3I\x3I\x3J\x3J\x3"+ - "J\x3J\x5J\x5B5\nJ\x5J\x5B7\nJ\x3K\x3K\x3L\x3L\x3L\x3L\x3M\x3M\x3M\x3M"+ - "\x5M\x5C3\nM\x3M\x3M\x5M\x5C7\nM\x3M\x3M\x3N\x3N\x3N\x3N\x5N\x5CF\nN\x3"+ - "N\x3N\x5N\x5D3\nN\x3N\x3N\x3O\x3O\x3O\x3O\x5O\x5DB\nO\x3O\x3O\x5O\x5DF"+ - "\nO\x3O\x3O\x5O\x5E3\nO\x3O\x3O\x5O\x5E7\nO\x3O\x3O\x5O\x5EB\nO\x3O\x3"+ - "O\x5O\x5EF\nO\x3O\x3O\x3P\x3P\x3P\x3P\x5P\x5F7\nP\x3P\x3P\x5P\x5FB\nP"+ - "\x3P\x3P\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\aQ\x606\nQ\fQ\xEQ\x609\vQ\x3Q\x3"+ - "Q\x3R\x3R\x5R\x60F\nR\x3R\x3R\x5R\x613\nR\x3R\x3R\x3R\x3R\x3R\x3R\x3R"+ - "\x3R\x3R\x5R\x61E\nR\x3S\x3S\x3S\x3S\x3S\x5S\x625\nS\x3T\x3T\x3T\x5T\x62A"+ - "\nT\x3T\x3T\x5T\x62E\nT\x3T\aT\x631\nT\fT\xET\x634\vT\x5T\x636\nT\x3U"+ - "\x3U\x3U\x3U\x5U\x63C\nU\x3U\x3U\x5U\x640\nU\x3U\x5U\x643\nU\x3V\x3V\x3"+ - "V\x3V\x5V\x649\nV\x3V\x3V\x5V\x64D\nV\x3V\x3V\x3W\x3W\x3W\x3W\x5W\x655"+ - "\nW\x3W\x3W\x5W\x659\nW\x3W\x3W\x3X\x3X\x3Y\x3Y\x3Y\x5Y\x662\nY\x3Y\x3"+ - "Y\x5Y\x666\nY\x3Y\x3Y\x5Y\x66A\nY\x3Y\x3Y\x5Y\x66E\nY\x3Y\x5Y\x671\nY"+ - "\x3Y\x3Y\x5Y\x675\nY\x3Y\x3Y\x3Z\x3Z\x5Z\x67B\nZ\x3Z\x3Z\x5Z\x67F\nZ\x3"+ - "Z\x3Z\x3[\x3[\x3[\x5[\x686\n[\x3[\x3[\x3[\x3[\x3[\a[\x68D\n[\f[\xE[\x690"+ - "\v[\x3[\x3[\x3\\\x3\\\x5\\\x696\n\\\x3\\\x3\\\x5\\\x69A\n\\\x3\\\x5\\"+ - "\x69D\n\\\x3\\\x5\\\x6A0\n\\\x3\\\x5\\\x6A3\n\\\x3\\\x3\\\x3\\\x5\\\x6A8"+ - "\n\\\x3\\\x3\\\x3]\x3]\x3]\x3]\x3^\x3^\x3^\x3^\x5^\x6B4\n^\x3^\x3^\x5"+ - "^\x6B8\n^\x3^\x3^\x3^\x3^\x3^\x3^\x5^\x6C0\n^\x5^\x6C2\n^\x3_\x3_\x3_"+ - "\x5_\x6C7\n_\x3_\x3_\x3_\x5_\x6CC\n_\x3_\x3_\x3_\x5_\x6D1\n_\x3_\x3_\x5"+ - "_\x6D5\n_\x3_\x3_\x3_\x3_\x5_\x6DB\n_\x3_\x3_\x3_\x5_\x6E0\n_\x3_\x3_"+ - "\x3_\x3_\x3_\x5_\x6E7\n_\x3_\x3_\x5_\x6EB\n_\x3_\x3_\x3_\x3_\x5_\x6F1"+ - "\n_\x3_\x3_\x5_\x6F5\n_\x3_\x3_\x5_\x6F9\n_\x3_\x3_\x3_\x5_\x6FE\n_\x3"+ - "_\x3_\x5_\x702\n_\x3_\x3_\x3_\x5_\x707\n_\x3_\x3_\x5_\x70B\n_\x3_\x3_"+ - "\x3_\x5_\x710\n_\x3_\x3_\x5_\x714\n_\x3_\x3_\x3_\x5_\x719\n_\x3_\x3_\x5"+ - "_\x71D\n_\x3_\x3_\x3_\x5_\x722\n_\x3_\x3_\x5_\x726\n_\x3_\x3_\x3_\x5_"+ - "\x72B\n_\x3_\x3_\x5_\x72F\n_\x3_\x3_\x3_\x5_\x734\n_\x3_\x3_\x5_\x738"+ - "\n_\x3_\x3_\x3_\x5_\x73D\n_\x3_\x3_\x5_\x741\n_\x3_\x3_\x3_\x5_\x746\n"+ - "_\x3_\x3_\x5_\x74A\n_\x3_\x3_\x3_\x5_\x74F\n_\x3_\x3_\x5_\x753\n_\x3_"+ - "\x3_\x3_\x5_\x758\n_\x3_\x3_\x5_\x75C\n_\x3_\a_\x75F\n_\f_\xE_\x762\v"+ - "_\x3`\x3`\x3`\x3`\x3`\x3`\x3`\x3`\x5`\x76C\n`\x3\x61\x3\x61\x3\x61\x5"+ - "\x61\x771\n\x61\x3\x61\x3\x61\x3\x61\x5\x61\x776\n\x61\x3\x61\x3\x61\x3"+ - "\x62\x3\x62\x5\x62\x77C\n\x62\x3\x62\x3\x62\x5\x62\x780\n\x62\x3\x62\a"+ - "\x62\x783\n\x62\f\x62\xE\x62\x786\v\x62\x3\x63\x3\x63\x5\x63\x78A\n\x63"+ - "\x3\x63\x3\x63\x5\x63\x78E\n\x63\x3\x63\x3\x63\x5\x63\x792\n\x63\x5\x63"+ - "\x794\n\x63\x3\x63\x3\x63\x5\x63\x798\n\x63\x5\x63\x79A\n\x63\x3\x63\x5"+ - "\x63\x79D\n\x63\x3\x63\x3\x63\x3\x63\x5\x63\x7A2\n\x63\x3\x64\x3\x64\x3"+ - "\x64\x3\x64\x3\x64\x5\x64\x7A9\n\x64\x3\x64\x3\x64\x3\x65\x3\x65\x3\x65"+ - "\x3\x65\x5\x65\x7B1\n\x65\x3\x65\x3\x65\x5\x65\x7B5\n\x65\x3\x65\x3\x65"+ - "\x3\x66\x3\x66\x3\x66\x3\x66\x3\x66\x5\x66\x7BE\n\x66\x3\x66\x3\x66\x3"+ - "g\x3g\x3g\x3g\x3g\x5g\x7C7\ng\x3h\x3h\x3h\x3h\x5h\x7CD\nh\x3h\x3h\x5h"+ - "\x7D1\nh\x3h\x5h\x7D4\nh\x3i\x5i\x7D7\ni\x3i\x3i\x3j\x3j\x5j\x7DD\nj\x3"+ - "k\x3k\x3k\x3k\x5k\x7E3\nk\x3k\x5k\x7E6\nk\x3k\x3k\x5k\x7EA\nk\x3k\x3k"+ - "\x5k\x7EE\nk\x3k\x3k\x5k\x7F2\nk\x3k\x5k\x7F5\nk\x3k\x3k\x3k\x3k\ak\x7FB"+ - "\nk\fk\xEk\x7FE\vk\x3l\x3l\x3l\x5l\x803\nl\x3l\x3l\x3l\x5l\x808\nl\x3"+ - "l\x5l\x80B\nl\x3l\x3l\x5l\x80F\nl\x3l\x3l\x5l\x813\nl\x3l\x3l\x5l\x817"+ - "\nl\x3l\x5l\x81A\nl\x3l\x3l\x3l\x3l\al\x820\nl\fl\xEl\x823\vl\x3m\x3m"+ - "\x5m\x827\nm\x3n\x5n\x82A\nn\x3n\x5n\x82D\nn\x3n\x3n\x5n\x831\nn\x3n\x3"+ - "n\x5n\x835\nn\x3n\x3n\x3n\x5n\x83A\nn\x3n\x5n\x83D\nn\x3n\x5n\x840\nn"+ - "\x3n\x5n\x843\nn\x3n\x3n\x3n\x3n\an\x849\nn\fn\xEn\x84C\vn\x3o\x3o\x3"+ - "o\x3o\x5o\x852\no\x3o\x5o\x855\no\x3o\x3o\x3o\x3o\ao\x85B\no\fo\xEo\x85E"+ - "\vo\x3p\x3p\x3p\x3p\x5p\x864\np\x3q\x3q\x5q\x868\nq\x3q\x5q\x86B\nq\x3"+ - "q\x5q\x86E\nq\x3q\x5q\x871\nq\x3q\x3q\x3q\x3q\aq\x877\nq\fq\xEq\x87A\v"+ - "q\x3r\x3r\x5r\x87E\nr\x3r\x5r\x881\nr\x3r\x5r\x884\nr\x3r\x3r\x5r\x888"+ - "\nr\x3r\x3r\x5r\x88C\nr\x5r\x88E\nr\x3r\x3r\x5r\x892\nr\x3r\x5r\x895\n"+ - "r\x3r\x5r\x898\nr\x3r\x3r\x3r\x3r\ar\x89E\nr\fr\xEr\x8A1\vr\x3s\x3s\x5"+ - "s\x8A5\ns\x3s\x3s\x5s\x8A9\ns\x6s\x8AB\ns\rs\xEs\x8AC\x3s\x5s\x8B0\ns"+ - "\x3s\x5s\x8B3\ns\x3s\x5s\x8B6\ns\x3s\x3s\x3s\x3s\as\x8BC\ns\fs\xEs\x8BF"+ - "\vs\x3t\x3t\x5t\x8C3\nt\x3t\x3t\x5t\x8C7\nt\x3u\x5u\x8CA\nu\x3u\x3u\x3"+ - "v\x5v\x8CF\nv\x3v\x5v\x8D2\nv\x3v\x3v\x5v\x8D6\nv\av\x8D8\nv\fv\xEv\x8DB"+ - "\vv\x3v\x3v\x5v\x8DF\nv\x3v\x3v\x5v\x8E3\nv\x3v\x5v\x8E6\nv\av\x8E8\n"+ - "v\fv\xEv\x8EB\vv\x3w\x5w\x8EE\nw\x3w\x3w\x5w\x8F2\nw\x3w\x5w\x8F5\nw\x3"+ - "w\x3w\x3x\x3x\x5x\x8FB\nx\x3x\x3x\x5x\x8FF\nx\x3y\x3y\x5y\x903\ny\x3y"+ - "\x3y\x5y\x907\ny\x3y\x3y\x5y\x90B\ny\x3y\ay\x90E\ny\fy\xEy\x911\vy\x5"+ - "y\x913\ny\x3y\x5y\x916\ny\x3y\x3y\x3z\x3z\x5z\x91C\nz\x3z\x3z\x5z\x920"+ - "\nz\x3z\x3z\x5z\x924\nz\x3z\x3z\x5z\x928\nz\x3z\x5z\x92B\nz\x3z\x3z\x5"+ - "z\x92F\nz\x3z\x5z\x932\nz\x3z\x5z\x935\nz\x3z\x5z\x938\nz\x3z\x5z\x93B"+ - "\nz\x3z\x5z\x93E\nz\x3{\x3{\x5{\x942\n{\x3{\x3{\x3|\x3|\x5|\x948\n|\x3"+ - "|\x3|\x5|\x94C\n|\x3|\a|\x94F\n|\f|\xE|\x952\v|\x3}\x3}\x3}\x3}\x3}\x5"+ - "}\x959\n}\x3}\x3}\x3~\x3~\x5~\x95F\n~\x3\x7F\x3\x7F\x5\x7F\x963\n\x7F"+ - "\x3\x7F\x3\x7F\x5\x7F\x967\n\x7F\x3\x7F\x3\x7F\x5\x7F\x96B\n\x7F\x3\x7F"+ - "\x5\x7F\x96E\n\x7F\x3\x80\x3\x80\x3\x81\x3\x81\x3\x82\x3\x82\x3\x82\a"+ - "\x82\x977\n\x82\f\x82\xE\x82\x97A\v\x82\x3\x83\x3\x83\x5\x83\x97E\n\x83"+ - "\x3\x83\x3\x83\x5\x83\x982\n\x83\x3\x84\x3\x84\x5\x84\x986\n\x84\x3\x84"+ - "\x3\x84\x5\x84\x98A\n\x84\x3\x84\x5\x84\x98D\n\x84\x3\x85\x3\x85\x5\x85"+ - "\x991\n\x85\x3\x85\x3\x85\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3"+ - "\x86\x3\x86\x5\x86\x99D\n\x86\x3\x87\x3\x87\x3\x88\x3\x88\x5\x88\x9A3"+ - "\n\x88\x3\x88\x5\x88\x9A6\n\x88\x3\x88\x3\x88\x5\x88\x9AA\n\x88\x3\x88"+ - "\x5\x88\x9AD\n\x88\x3\x89\x3\x89\x3\x8A\x3\x8A\x3\x8B\x3\x8B\x3\x8C\x5"+ - "\x8C\x9B6\n\x8C\x3\x8C\x6\x8C\x9B9\n\x8C\r\x8C\xE\x8C\x9BA\x3\x8C\x3\x8C"+ - "\x5\x8C\x9BF\n\x8C\x3\x8C\x5\x8C\x9C2\n\x8C\x3\x8C\x5\x8C\x9C5\n\x8C\x3"+ - "\x8C\x5\x8C\x9C8\n\x8C\x3\x8D\x3\x8D\x5\x8D\x9CC\n\x8D\x3\x8D\x3\x8D\x5"+ - "\x8D\x9D0\n\x8D\a\x8D\x9D2\n\x8D\f\x8D\xE\x8D\x9D5\v\x8D\x3\x8E\x3\x8E"+ - "\x3\x8F\x3\x8F\x3\x90\x3\x90\x6\x90\x9DD\n\x90\r\x90\xE\x90\x9DE\x3\x91"+ - "\x3\x91\x3\x91\x5\x91\x9E4\n\x91\x3\x92\x3\x92\x3\x93\x3\x93\x3\x93\x5"+ - "\x93\x9EB\n\x93\x3\x93\x3\x93\x3\x93\x5\x93\x9F0\n\x93\x3\x93\x3\x93\x5"+ - "\x93\x9F4\n\x93\x3\x93\x6\x93\x9F7\n\x93\r\x93\xE\x93\x9F8\x3\x93\x5\x93"+ - "\x9FC\n\x93\x3\x93\x5\x93\x9FF\n\x93\x3\x93\x3\x93\x5\x93\xA03\n\x93\x3"+ - "\x93\x3\x93\x5\x93\xA07\n\x93\x3\x93\x3\x93\x5\x93\xA0B\n\x93\x3\x93\x5"+ - "\x93\xA0E\n\x93\x3\x93\x3\x93\x3\x93\x5\x93\xA13\n\x93\x3\x93\x3\x93\x5"+ - "\x93\xA17\n\x93\x3\x93\x6\x93\xA1A\n\x93\r\x93\xE\x93\xA1B\x3\x93\x5\x93"+ - "\xA1F\n\x93\x3\x93\x3\x93\x5\x93\xA23\n\x93\x5\x93\xA25\n\x93\x3\x94\x3"+ - "\x94\x5\x94\xA29\n\x94\x3\x95\x6\x95\xA2C\n\x95\r\x95\xE\x95\xA2D\x3\x95"+ - "\x2\x2\x3\xBC\x96\x2\x2\x4\x2\x6\x2\b\x2\n\x2\f\x2\xE\x2\x10\x2\x12\x2"+ - "\x14\x2\x16\x2\x18\x2\x1A\x2\x1C\x2\x1E\x2 \x2\"\x2$\x2&\x2(\x2*\x2,\x2"+ - ".\x2\x30\x2\x32\x2\x34\x2\x36\x2\x38\x2:\x2<\x2>\x2@\x2\x42\x2\x44\x2"+ - "\x46\x2H\x2J\x2L\x2N\x2P\x2R\x2T\x2V\x2X\x2Z\x2\\\x2^\x2`\x2\x62\x2\x64"+ - "\x2\x66\x2h\x2j\x2l\x2n\x2p\x2r\x2t\x2v\x2x\x2z\x2|\x2~\x2\x80\x2\x82"+ - "\x2\x84\x2\x86\x2\x88\x2\x8A\x2\x8C\x2\x8E\x2\x90\x2\x92\x2\x94\x2\x96"+ - "\x2\x98\x2\x9A\x2\x9C\x2\x9E\x2\xA0\x2\xA2\x2\xA4\x2\xA6\x2\xA8\x2\xAA"+ - "\x2\xAC\x2\xAE\x2\xB0\x2\xB2\x2\xB4\x2\xB6\x2\xB8\x2\xBA\x2\xBC\x2\xBE"+ - "\x2\xC0\x2\xC2\x2\xC4\x2\xC6\x2\xC8\x2\xCA\x2\xCC\x2\xCE\x2\xD0\x2\xD2"+ - "\x2\xD4\x2\xD6\x2\xD8\x2\xDA\x2\xDC\x2\xDE\x2\xE0\x2\xE2\x2\xE4\x2\xE6"+ - "\x2\xE8\x2\xEA\x2\xEC\x2\xEE\x2\xF0\x2\xF2\x2\xF4\x2\xF6\x2\xF8\x2\xFA"+ - "\x2\xFC\x2\xFE\x2\x100\x2\x102\x2\x104\x2\x106\x2\x108\x2\x10A\x2\x10C"+ - "\x2\x10E\x2\x110\x2\x112\x2\x114\x2\x116\x2\x118\x2\x11A\x2\x11C\x2\x11E"+ - "\x2\x120\x2\x122\x2\x124\x2\x126\x2\x128\x2\x2\x19\x5\x2==II\xCC\xCC\x3"+ - "\x2LX\x4\x2\xD5\xD5\xD9\xD9\x3\x2os\x3\x2\x9C\x9D\a\x2\x39\x39==\x81\x81"+ - "\xA5\xA5\xB0\xB0\x4\x2\xB3\xB4\xDD\xDD\x4\x2\x8D\x8F\xC3\xC3\x4\x2))+"+ - "+\x4\x2\xC5\xC5\xCB\xCB\x4\x2\xE0\xE0\xE9\xE9\x4\x2\xE8\xE8\xEB\xEB\a"+ - "\x2\x82\x82\x8B\x8B\xE2\xE5\xE7\xE7\xEA\xEA\x3\x2,-\x4\x2?@\xA6\xA6\x3"+ - "\x2?@\r\x2\x13\x13\x1F >>\x41\x41JJ\\\\\x83\x83\x87\x87\xC4\xC4\xC9\xC9"+ - "\xD6\xD6\x3\x2\xF6\xF9\x5\x2,,.\x32\xEC\xEC\x6\x2vvzz\xA9\xA9\xAE\xAE"+ - "\r\x2\x3(\x33_\x63\x63int\x8B\x90\x9B\x9E\x9F\xA4\xA9\xAE\xB3\xB5\xDE"+ - "\x105\x105\x3\x2\xFD\xFE\x4\x2\x100\x100\x102\x102\xBC1\x2\x12A\x3\x2"+ - "\x2\x2\x4\x12E\x3\x2\x2\x2\x6\x149\x3\x2\x2\x2\b\x154\x3\x2\x2\x2\n\x166"+ - "\x3\x2\x2\x2\f\x17E\x3\x2\x2\x2\xE\x182\x3\x2\x2\x2\x10\x197\x3\x2\x2"+ - "\x2\x12\x1A1\x3\x2\x2\x2\x14\x1A3\x3\x2\x2\x2\x16\x1B3\x3\x2\x2\x2\x18"+ - "\x1B5\x3\x2\x2\x2\x1A\x1CD\x3\x2\x2\x2\x1C\x21A\x3\x2\x2\x2\x1E\x21C\x3"+ - "\x2\x2\x2 \x229\x3\x2\x2\x2\"\x22B\x3\x2\x2\x2$\x22F\x3\x2\x2\x2&\x233"+ - "\x3\x2\x2\x2(\x248\x3\x2\x2\x2*\x25A\x3\x2\x2\x2,\x26C\x3\x2\x2\x2.\x279"+ - "\x3\x2\x2\x2\x30\x2A3\x3\x2\x2\x2\x32\x2D9\x3\x2\x2\x2\x34\x2F8\x3\x2"+ - "\x2\x2\x36\x2FA\x3\x2\x2\x2\x38\x2FF\x3\x2\x2\x2:\x30D\x3\x2\x2\x2<\x31A"+ - "\x3\x2\x2\x2>\x32A\x3\x2\x2\x2@\x331\x3\x2\x2\x2\x42\x33B\x3\x2\x2\x2"+ - "\x44\x33D\x3\x2\x2\x2\x46\x349\x3\x2\x2\x2H\x35F\x3\x2\x2\x2J\x38C\x3"+ - "\x2\x2\x2L\x3AC\x3\x2\x2\x2N\x3C2\x3\x2\x2\x2P\x3C6\x3\x2\x2\x2R\x3E4"+ - "\x3\x2\x2\x2T\x3E6\x3\x2\x2\x2V\x3EF\x3\x2\x2\x2X\x3F1\x3\x2\x2\x2Z\x3FA"+ - "\x3\x2\x2\x2\\\x3FF\x3\x2\x2\x2^\x403\x3\x2\x2\x2`\x412\x3\x2\x2\x2\x62"+ - "\x418\x3\x2\x2\x2\x64\x424\x3\x2\x2\x2\x66\x430\x3\x2\x2\x2h\x434\x3\x2"+ - "\x2\x2j\x448\x3\x2\x2\x2l\x454\x3\x2\x2\x2n\x462\x3\x2\x2\x2p\x466\x3"+ - "\x2\x2\x2r\x46E\x3\x2\x2\x2t\x47A\x3\x2\x2\x2v\x48E\x3\x2\x2\x2x\x4A2"+ - "\x3\x2\x2\x2z\x4E7\x3\x2\x2\x2|\x4FA\x3\x2\x2\x2~\x4FC\x3\x2\x2\x2\x80"+ - "\x50C\x3\x2\x2\x2\x82\x52C\x3\x2\x2\x2\x84\x544\x3\x2\x2\x2\x86\x559\x3"+ - "\x2\x2\x2\x88\x56F\x3\x2\x2\x2\x8A\x582\x3\x2\x2\x2\x8C\x588\x3\x2\x2"+ - "\x2\x8E\x59C\x3\x2\x2\x2\x90\x5AE\x3\x2\x2\x2\x92\x5B0\x3\x2\x2\x2\x94"+ - "\x5B8\x3\x2\x2\x2\x96\x5BA\x3\x2\x2\x2\x98\x5BE\x3\x2\x2\x2\x9A\x5CA\x3"+ - "\x2\x2\x2\x9C\x5D6\x3\x2\x2\x2\x9E\x5F2\x3\x2\x2\x2\xA0\x5FE\x3\x2\x2"+ - "\x2\xA2\x61D\x3\x2\x2\x2\xA4\x61F\x3\x2\x2\x2\xA6\x635\x3\x2\x2\x2\xA8"+ - "\x637\x3\x2\x2\x2\xAA\x644\x3\x2\x2\x2\xAC\x650\x3\x2\x2\x2\xAE\x65C\x3"+ - "\x2\x2\x2\xB0\x661\x3\x2\x2\x2\xB2\x678\x3\x2\x2\x2\xB4\x685\x3\x2\x2"+ - "\x2\xB6\x693\x3\x2\x2\x2\xB8\x6AB\x3\x2\x2\x2\xBA\x6AF\x3\x2\x2\x2\xBC"+ - "\x6F0\x3\x2\x2\x2\xBE\x763\x3\x2\x2\x2\xC0\x770\x3\x2\x2\x2\xC2\x779\x3"+ - "\x2\x2\x2\xC4\x787\x3\x2\x2\x2\xC6\x7A3\x3\x2\x2\x2\xC8\x7AC\x3\x2\x2"+ - "\x2\xCA\x7B8\x3\x2\x2\x2\xCC\x7C6\x3\x2\x2\x2\xCE\x7C8\x3\x2\x2\x2\xD0"+ - "\x7D6\x3\x2\x2\x2\xD2\x7DC\x3\x2\x2\x2\xD4\x7DE\x3\x2\x2\x2\xD6\x7FF\x3"+ - "\x2\x2\x2\xD8\x826\x3\x2\x2\x2\xDA\x829\x3\x2\x2\x2\xDC\x84D\x3\x2\x2"+ - "\x2\xDE\x863\x3\x2\x2\x2\xE0\x865\x3\x2\x2\x2\xE2\x87D\x3\x2\x2\x2\xE4"+ - "\x8A4\x3\x2\x2\x2\xE6\x8C0\x3\x2\x2\x2\xE8\x8C9\x3\x2\x2\x2\xEA\x8D9\x3"+ - "\x2\x2\x2\xEC\x8ED\x3\x2\x2\x2\xEE\x8F8\x3\x2\x2\x2\xF0\x900\x3\x2\x2"+ - "\x2\xF2\x91B\x3\x2\x2\x2\xF4\x93F\x3\x2\x2\x2\xF6\x945\x3\x2\x2\x2\xF8"+ - "\x958\x3\x2\x2\x2\xFA\x95E\x3\x2\x2\x2\xFC\x960\x3\x2\x2\x2\xFE\x96F\x3"+ - "\x2\x2\x2\x100\x971\x3\x2\x2\x2\x102\x973\x3\x2\x2\x2\x104\x97B\x3\x2"+ - "\x2\x2\x106\x983\x3\x2\x2\x2\x108\x990\x3\x2\x2\x2\x10A\x99C\x3\x2\x2"+ - "\x2\x10C\x99E\x3\x2\x2\x2\x10E\x9A2\x3\x2\x2\x2\x110\x9AE\x3\x2\x2\x2"+ - "\x112\x9B0\x3\x2\x2\x2\x114\x9B2\x3\x2\x2\x2\x116\x9C7\x3\x2\x2\x2\x118"+ - "\x9D3\x3\x2\x2\x2\x11A\x9D6\x3\x2\x2\x2\x11C\x9D8\x3\x2\x2\x2\x11E\x9DA"+ - "\x3\x2\x2\x2\x120\x9E0\x3\x2\x2\x2\x122\x9E5\x3\x2\x2\x2\x124\xA24\x3"+ - "\x2\x2\x2\x126\xA28\x3\x2\x2\x2\x128\xA2B\x3\x2\x2\x2\x12A\x12B\x5\x4"+ - "\x3\x2\x12B\x12C\a\x2\x2\x3\x12C\x3\x3\x2\x2\x2\x12D\x12F\x5\x128\x95"+ - "\x2\x12E\x12D\x3\x2\x2\x2\x12E\x12F\x3\x2\x2\x2\x12F\x130\x3\x2\x2\x2"+ - "\x130\x134\x5\x118\x8D\x2\x131\x132\x5\x6\x4\x2\x132\x133\x5\x118\x8D"+ - "\x2\x133\x135\x3\x2\x2\x2\x134\x131\x3\x2\x2\x2\x134\x135\x3\x2\x2\x2"+ - "\x135\x137\x3\x2\x2\x2\x136\x138\x5\b\x5\x2\x137\x136\x3\x2\x2\x2\x137"+ - "\x138\x3\x2\x2\x2\x138\x139\x3\x2\x2\x2\x139\x13B\x5\x118\x8D\x2\x13A"+ - "\x13C\x5\f\a\x2\x13B\x13A\x3\x2\x2\x2\x13B\x13C\x3\x2\x2\x2\x13C\x13D"+ - "\x3\x2\x2\x2\x13D\x13F\x5\x118\x8D\x2\x13E\x140\x5\xE\b\x2\x13F\x13E\x3"+ - "\x2\x2\x2\x13F\x140\x3\x2\x2\x2\x140\x141\x3\x2\x2\x2\x141\x143\x5\x118"+ - "\x8D\x2\x142\x144\x5\x14\v\x2\x143\x142\x3\x2\x2\x2\x143\x144\x3\x2\x2"+ - "\x2\x144\x145\x3\x2\x2\x2\x145\x147\x5\x118\x8D\x2\x146\x148\x5\x128\x95"+ - "\x2\x147\x146\x3\x2\x2\x2\x147\x148\x3\x2\x2\x2\x148\x5\x3\x2\x2\x2\x149"+ - "\x14A\a\xD7\x2\x2\x14A\x14B\x5\x128\x95\x2\x14B\x14D\x5\x10C\x87\x2\x14C"+ - "\x14E\x5\x128\x95\x2\x14D\x14C\x3\x2\x2\x2\x14D\x14E\x3\x2\x2\x2\x14E"+ - "\x150\x3\x2\x2\x2\x14F\x151\a\x46\x2\x2\x150\x14F\x3\x2\x2\x2\x150\x151"+ - "\x3\x2\x2\x2\x151\x152\x3\x2\x2\x2\x152\x153\x5\x118\x8D\x2\x153\a\x3"+ - "\x2\x2\x2\x154\x15C\a;\x2\x2\x155\x156\x5\x128\x95\x2\x156\x157\a\x103"+ - "\x2\x2\x157\x158\x5\x128\x95\x2\x158\x15A\x5\xFA~\x2\x159\x15B\x5\x128"+ - "\x95\x2\x15A\x159\x3\x2\x2\x2\x15A\x15B\x3\x2\x2\x2\x15B\x15D\x3\x2\x2"+ - "\x2\x15C\x155\x3\x2\x2\x2\x15C\x15D\x3\x2\x2\x2\x15D\x15E\x3\x2\x2\x2"+ - "\x15E\x160\x5\x118\x8D\x2\x15F\x161\x5\n\x6\x2\x160\x15F\x3\x2\x2\x2\x161"+ - "\x162\x3\x2\x2\x2\x162\x160\x3\x2\x2\x2\x162\x163\x3\x2\x2\x2\x163\x164"+ - "\x3\x2\x2\x2\x164\x165\ai\x2\x2\x165\t\x3\x2\x2\x2\x166\x16A\x5\xFA~\x2"+ - "\x167\x169\x5\x128\x95\x2\x168\x167\x3\x2\x2\x2\x169\x16C\x3\x2\x2\x2"+ - "\x16A\x168\x3\x2\x2\x2\x16A\x16B\x3\x2\x2\x2\x16B\x16D\x3\x2\x2\x2\x16C"+ - "\x16A\x3\x2\x2\x2\x16D\x171\a\xE2\x2\x2\x16E\x170\x5\x128\x95\x2\x16F"+ - "\x16E\x3\x2\x2\x2\x170\x173\x3\x2\x2\x2\x171\x16F\x3\x2\x2\x2\x171\x172"+ - "\x3\x2\x2\x2\x172\x174\x3\x2\x2\x2\x173\x171\x3\x2\x2\x2\x174\x177\x5"+ - "\x10A\x86\x2\x175\x176\a*\x2\x2\x176\x178\x5\x10C\x87\x2\x177\x175\x3"+ - "\x2\x2\x2\x177\x178\x3\x2\x2\x2\x178\x179\x3\x2\x2\x2\x179\x17A\x5\x118"+ - "\x8D\x2\x17A\v\x3\x2\x2\x2\x17B\x17C\x5\x18\r\x2\x17C\x17D\x5\x118\x8D"+ - "\x2\x17D\x17F\x3\x2\x2\x2\x17E\x17B\x3\x2\x2\x2\x17F\x180\x3\x2\x2\x2"+ - "\x180\x17E\x3\x2\x2\x2\x180\x181\x3\x2\x2\x2\x181\r\x3\x2\x2\x2\x182\x188"+ - "\x5\x12\n\x2\x183\x184\x5\x118\x8D\x2\x184\x185\x5\x12\n\x2\x185\x187"+ - "\x3\x2\x2\x2\x186\x183\x3\x2\x2\x2\x187\x18A\x3\x2\x2\x2\x188\x186\x3"+ - "\x2\x2\x2\x188\x189\x3\x2\x2\x2\x189\x18B\x3\x2\x2\x2\x18A\x188\x3\x2"+ - "\x2\x2\x18B\x18C\x5\x118\x8D\x2\x18C\xF\x3\x2\x2\x2\x18D\x18E\a\xA0\x2"+ - "\x2\x18E\x18F\x5\x128\x95\x2\x18F\x190\x5\x10C\x87\x2\x190\x198\x3\x2"+ - "\x2\x2\x191\x192\a\xA2\x2\x2\x192\x193\x5\x128\x95\x2\x193\x194\t\x2\x2"+ - "\x2\x194\x198\x3\x2\x2\x2\x195\x198\a\xA1\x2\x2\x196\x198\a\xA3\x2\x2"+ - "\x197\x18D\x3\x2\x2\x2\x197\x191\x3\x2\x2\x2\x197\x195\x3\x2\x2\x2\x197"+ - "\x196\x3\x2\x2\x2\x198\x11\x3\x2\x2\x2\x199\x1A2\x5.\x18\x2\x19A\x1A2"+ - "\x5\x38\x1D\x2\x19B\x1A2\x5@!\x2\x19C\x1A2\x5(\x15\x2\x19D\x1A2\x5\\/"+ - "\x2\x19E\x1A2\x5\xC0\x61\x2\x19F\x1A2\x5\x10\t\x2\x1A0\x1A2\x5\xB4[\x2"+ - "\x1A1\x199\x3\x2\x2\x2\x1A1\x19A\x3\x2\x2\x2\x1A1\x19B\x3\x2\x2\x2\x1A1"+ - "\x19C\x3\x2\x2\x2\x1A1\x19D\x3\x2\x2\x2\x1A1\x19E\x3\x2\x2\x2\x1A1\x19F"+ - "\x3\x2\x2\x2\x1A1\x1A0\x3\x2\x2\x2\x1A2\x13\x3\x2\x2\x2\x1A3\x1A9\x5\x16"+ - "\f\x2\x1A4\x1A5\x5\x118\x8D\x2\x1A5\x1A6\x5\x16\f\x2\x1A6\x1A8\x3\x2\x2"+ - "\x2\x1A7\x1A4\x3\x2\x2\x2\x1A8\x1AB\x3\x2\x2\x2\x1A9\x1A7\x3\x2\x2\x2"+ - "\x1A9\x1AA\x3\x2\x2\x2\x1AA\x1AC\x3\x2\x2\x2\x1AB\x1A9\x3\x2\x2\x2\x1AC"+ - "\x1AD\x5\x118\x8D\x2\x1AD\x15\x3\x2\x2\x2\x1AE\x1B4\x5J&\x2\x1AF\x1B4"+ - "\x5\x80\x41\x2\x1B0\x1B4\x5\x82\x42\x2\x1B1\x1B4\x5\x84\x43\x2\x1B2\x1B4"+ - "\x5\xB0Y\x2\x1B3\x1AE\x3\x2\x2\x2\x1B3\x1AF\x3\x2\x2\x2\x1B3\x1B0\x3\x2"+ - "\x2\x2\x1B3\x1B1\x3\x2\x2\x2\x1B3\x1B2\x3\x2\x2\x2\x1B4\x17\x3\x2\x2\x2"+ - "\x1B5\x1B6\a\x37\x2\x2\x1B6\x1B7\x5\x128\x95\x2\x1B7\x1B9\x5\xDEp\x2\x1B8"+ - "\x1BA\x5\x128\x95\x2\x1B9\x1B8\x3\x2\x2\x2\x1B9\x1BA\x3\x2\x2\x2\x1BA"+ - "\x1BB\x3\x2\x2\x2\x1BB\x1BD\a\xE2\x2\x2\x1BC\x1BE\x5\x128\x95\x2\x1BD"+ - "\x1BC\x3\x2\x2\x2\x1BD\x1BE\x3\x2\x2\x2\x1BE\x1BF\x3\x2\x2\x2\x1BF\x1CA"+ - "\x5\x10A\x86\x2\x1C0\x1C2\x5\x128\x95\x2\x1C1\x1C0\x3\x2\x2\x2\x1C1\x1C2"+ - "\x3\x2\x2\x2\x1C2\x1C3\x3\x2\x2\x2\x1C3\x1C5\a)\x2\x2\x1C4\x1C6\x5\x128"+ - "\x95\x2\x1C5\x1C4\x3\x2\x2\x2\x1C5\x1C6\x3\x2\x2\x2\x1C6\x1C7\x3\x2\x2"+ - "\x2\x1C7\x1C9\x5\x10A\x86\x2\x1C8\x1C1\x3\x2\x2\x2\x1C9\x1CC\x3\x2\x2"+ - "\x2\x1CA\x1C8\x3\x2\x2\x2\x1CA\x1CB\x3\x2\x2\x2\x1CB\x19\x3\x2\x2\x2\x1CC"+ - "\x1CA\x3\x2\x2\x2\x1CD\x1D3\x5\x1C\xF\x2\x1CE\x1CF\x5\x118\x8D\x2\x1CF"+ - "\x1D0\x5\x1C\xF\x2\x1D0\x1D2\x3\x2\x2\x2\x1D1\x1CE\x3\x2\x2\x2\x1D2\x1D5"+ - "\x3\x2\x2\x2\x1D3\x1D1\x3\x2\x2\x2\x1D3\x1D4\x3\x2\x2\x2\x1D4\x1D6\x3"+ - "\x2\x2\x2\x1D5\x1D3\x3\x2\x2\x2\x1D6\x1D7\x5\x118\x8D\x2\x1D7\x1B\x3\x2"+ - "\x2\x2\x1D8\x21B\x5\x108\x85\x2\x1D9\x21B\x5\x1E\x10\x2\x1DA\x21B\x5\x18"+ - "\r\x2\x1DB\x21B\x5 \x11\x2\x1DC\x21B\x5\"\x12\x2\x1DD\x21B\x5$\x13\x2"+ - "\x1DE\x21B\x5&\x14\x2\x1DF\x21B\x5(\x15\x2\x1E0\x21B\x5,\x17\x2\x1E1\x21B"+ - "\x5\x32\x1A\x2\x1E2\x21B\x5\x30\x19\x2\x1E3\x21B\x5\x34\x1B\x2\x1E4\x21B"+ - "\x5\x36\x1C\x2\x1E5\x21B\x5<\x1F\x2\x1E6\x21B\x5> \x2\x1E7\x21B\x5\x42"+ - "\"\x2\x1E8\x21B\x5\xD2j\x2\x1E9\x21B\x5\x44#\x2\x1EA\x21B\x5\x46$\x2\x1EB"+ - "\x21B\x5H%\x2\x1EC\x21B\x5L\'\x2\x1ED\x21B\x5N(\x2\x1EE\x21B\x5P)\x2\x1EF"+ - "\x21B\x5R*\x2\x1F0\x21B\x5\\/\x2\x1F1\x21B\x5^\x30\x2\x1F2\x21B\x5`\x31"+ - "\x2\x1F3\x21B\x5\x62\x32\x2\x1F4\x21B\x5\x64\x33\x2\x1F5\x21B\x5\x66\x34"+ - "\x2\x1F6\x21B\x5h\x35\x2\x1F7\x21B\x5j\x36\x2\x1F8\x21B\x5l\x37\x2\x1F9"+ - "\x21B\x5n\x38\x2\x1FA\x21B\x5p\x39\x2\x1FB\x21B\x5r:\x2\x1FC\x21B\x5t"+ - ";\x2\x1FD\x21B\x5v<\x2\x1FE\x21B\x5x=\x2\x1FF\x21B\x5~@\x2\x200\x21B\x5"+ - "\x86\x44\x2\x201\x21B\x5\x88\x45\x2\x202\x21B\x5\x8A\x46\x2\x203\x21B"+ - "\x5\x8CG\x2\x204\x21B\x5\x90I\x2\x205\x21B\x5\x92J\x2\x206\x21B\x5\x94"+ - "K\x2\x207\x21B\x5\x96L\x2\x208\x21B\x5\x98M\x2\x209\x21B\x5\x9AN\x2\x20A"+ - "\x21B\x5\x9CO\x2\x20B\x21B\x5\x9EP\x2\x20C\x21B\x5\xA0Q\x2\x20D\x21B\x5"+ - "\xA8U\x2\x20E\x21B\x5\xAAV\x2\x20F\x21B\x5\xACW\x2\x210\x21B\x5\xAEX\x2"+ - "\x211\x21B\x5\xB2Z\x2\x212\x21B\x5\xB8]\x2\x213\x21B\x5\xBA^\x2\x214\x21B"+ - "\x5\xC0\x61\x2\x215\x21B\x5\xC6\x64\x2\x216\x21B\x5\xC8\x65\x2\x217\x21B"+ - "\x5\xCA\x66\x2\x218\x21B\x5\xCEh\x2\x219\x21B\x5\xD8m\x2\x21A\x1D8\x3"+ - "\x2\x2\x2\x21A\x1D9\x3\x2\x2\x2\x21A\x1DA\x3\x2\x2\x2\x21A\x1DB\x3\x2"+ - "\x2\x2\x21A\x1DC\x3\x2\x2\x2\x21A\x1DD\x3\x2\x2\x2\x21A\x1DE\x3\x2\x2"+ - "\x2\x21A\x1DF\x3\x2\x2\x2\x21A\x1E0\x3\x2\x2\x2\x21A\x1E1\x3\x2\x2\x2"+ - "\x21A\x1E2\x3\x2\x2\x2\x21A\x1E3\x3\x2\x2\x2\x21A\x1E4\x3\x2\x2\x2\x21A"+ - "\x1E5\x3\x2\x2\x2\x21A\x1E6\x3\x2\x2\x2\x21A\x1E7\x3\x2\x2\x2\x21A\x1E8"+ - "\x3\x2\x2\x2\x21A\x1E9\x3\x2\x2\x2\x21A\x1EA\x3\x2\x2\x2\x21A\x1EB\x3"+ - "\x2\x2\x2\x21A\x1EC\x3\x2\x2\x2\x21A\x1ED\x3\x2\x2\x2\x21A\x1EE\x3\x2"+ - "\x2\x2\x21A\x1EF\x3\x2\x2\x2\x21A\x1F0\x3\x2\x2\x2\x21A\x1F1\x3\x2\x2"+ - "\x2\x21A\x1F2\x3\x2\x2\x2\x21A\x1F3\x3\x2\x2\x2\x21A\x1F4\x3\x2\x2\x2"+ - "\x21A\x1F5\x3\x2\x2\x2\x21A\x1F6\x3\x2\x2\x2\x21A\x1F7\x3\x2\x2\x2\x21A"+ - "\x1F8\x3\x2\x2\x2\x21A\x1F9\x3\x2\x2\x2\x21A\x1FA\x3\x2\x2\x2\x21A\x1FB"+ - "\x3\x2\x2\x2\x21A\x1FC\x3\x2\x2\x2\x21A\x1FD\x3\x2\x2\x2\x21A\x1FE\x3"+ - "\x2\x2\x2\x21A\x1FF\x3\x2\x2\x2\x21A\x200\x3\x2\x2\x2\x21A\x201\x3\x2"+ - "\x2\x2\x21A\x202\x3\x2\x2\x2\x21A\x203\x3\x2\x2\x2\x21A\x204\x3\x2\x2"+ - "\x2\x21A\x205\x3\x2\x2\x2\x21A\x206\x3\x2\x2\x2\x21A\x207\x3\x2\x2\x2"+ - "\x21A\x208\x3\x2\x2\x2\x21A\x209\x3\x2\x2\x2\x21A\x20A\x3\x2\x2\x2\x21A"+ - "\x20B\x3\x2\x2\x2\x21A\x20C\x3\x2\x2\x2\x21A\x20D\x3\x2\x2\x2\x21A\x20E"+ - "\x3\x2\x2\x2\x21A\x20F\x3\x2\x2\x2\x21A\x210\x3\x2\x2\x2\x21A\x211\x3"+ - "\x2\x2\x2\x21A\x212\x3\x2\x2\x2\x21A\x213\x3\x2\x2\x2\x21A\x214\x3\x2"+ - "\x2\x2\x21A\x215\x3\x2\x2\x2\x21A\x216\x3\x2\x2\x2\x21A\x217\x3\x2\x2"+ - "\x2\x21A\x218\x3\x2\x2\x2\x21A\x219\x3\x2\x2\x2\x21B\x1D\x3\x2\x2\x2\x21C"+ - "\x21D\a\x38\x2\x2\x21D\x21E\x5\x128\x95\x2\x21E\x227\x5\xBC_\x2\x21F\x221"+ - "\x5\x128\x95\x2\x220\x21F\x3\x2\x2\x2\x220\x221\x3\x2\x2\x2\x221\x222"+ - "\x3\x2\x2\x2\x222\x224\a)\x2\x2\x223\x225\x5\x128\x95\x2\x224\x223\x3"+ - "\x2\x2\x2\x224\x225\x3\x2\x2\x2\x225\x226\x3\x2\x2\x2\x226\x228\x5\xBC"+ - "_\x2\x227\x220\x3\x2\x2\x2\x227\x228\x3\x2\x2\x2\x228\x1F\x3\x2\x2\x2"+ - "\x229\x22A\a<\x2\x2\x22A!\x3\x2\x2\x2\x22B\x22C\a\x44\x2\x2\x22C\x22D"+ - "\x5\x128\x95\x2\x22D\x22E\x5\xBC_\x2\x22E#\x3\x2\x2\x2\x22F\x230\a\x45"+ - "\x2\x2\x230\x231\x5\x128\x95\x2\x231\x232\x5\xBC_\x2\x232%\x3\x2\x2\x2"+ - "\x233\x243\aG\x2\x2\x234\x235\x5\x128\x95\x2\x235\x240\x5\xD0i\x2\x236"+ - "\x238\x5\x128\x95\x2\x237\x236\x3\x2\x2\x2\x237\x238\x3\x2\x2\x2\x238"+ - "\x239\x3\x2\x2\x2\x239\x23B\a)\x2\x2\x23A\x23C\x5\x128\x95\x2\x23B\x23A"+ - "\x3\x2\x2\x2\x23B\x23C\x3\x2\x2\x2\x23C\x23D\x3\x2\x2\x2\x23D\x23F\x5"+ - "\xD0i\x2\x23E\x237\x3\x2\x2\x2\x23F\x242\x3\x2\x2\x2\x240\x23E\x3\x2\x2"+ - "\x2\x240\x241\x3\x2\x2\x2\x241\x244\x3\x2\x2\x2\x242\x240\x3\x2\x2\x2"+ - "\x243\x234\x3\x2\x2\x2\x243\x244\x3\x2\x2\x2\x244\'\x3\x2\x2\x2\x245\x246"+ - "\x5\x112\x8A\x2\x246\x247\x5\x128\x95\x2\x247\x249\x3\x2\x2\x2\x248\x245"+ - "\x3\x2\x2\x2\x248\x249\x3\x2\x2\x2\x249\x24A\x3\x2\x2\x2\x24A\x24B\aH"+ - "\x2\x2\x24B\x24C\x5\x128\x95\x2\x24C\x257\x5*\x16\x2\x24D\x24F\x5\x128"+ - "\x95\x2\x24E\x24D\x3\x2\x2\x2\x24E\x24F\x3\x2\x2\x2\x24F\x250\x3\x2\x2"+ - "\x2\x250\x252\a)\x2\x2\x251\x253\x5\x128\x95\x2\x252\x251\x3\x2\x2\x2"+ - "\x252\x253\x3\x2\x2\x2\x253\x254\x3\x2\x2\x2\x254\x256\x5*\x16\x2\x255"+ - "\x24E\x3\x2\x2\x2\x256\x259\x3\x2\x2\x2\x257\x255\x3\x2\x2\x2\x257\x258"+ - "\x3\x2\x2\x2\x258)\x3\x2\x2\x2\x259\x257\x3\x2\x2\x2\x25A\x25C\x5\xFA"+ - "~\x2\x25B\x25D\x5\x110\x89\x2\x25C\x25B\x3\x2\x2\x2\x25C\x25D\x3\x2\x2"+ - "\x2\x25D\x261\x3\x2\x2\x2\x25E\x25F\x5\x128\x95\x2\x25F\x260\x5\xFC\x7F"+ - "\x2\x260\x262\x3\x2\x2\x2\x261\x25E\x3\x2\x2\x2\x261\x262\x3\x2\x2\x2"+ - "\x262\x264\x3\x2\x2\x2\x263\x265\x5\x128\x95\x2\x264\x263\x3\x2\x2\x2"+ - "\x264\x265\x3\x2\x2\x2\x265\x266\x3\x2\x2\x2\x266\x268\a\xE2\x2\x2\x267"+ - "\x269\x5\x128\x95\x2\x268\x267\x3\x2\x2\x2\x268\x269\x3\x2\x2\x2\x269"+ - "\x26A\x3\x2\x2\x2\x26A\x26B\x5\xBC_\x2\x26B+\x3\x2\x2\x2\x26C\x26E\aJ"+ - "\x2\x2\x26D\x26F\x5\x128\x95\x2\x26E\x26D\x3\x2\x2\x2\x26E\x26F\x3\x2"+ - "\x2\x2\x26F\x270\x3\x2\x2\x2\x270\x272\a\xE2\x2\x2\x271\x273\x5\x128\x95"+ - "\x2\x272\x271\x3\x2\x2\x2\x272\x273\x3\x2\x2\x2\x273\x274\x3\x2\x2\x2"+ - "\x274\x275\x5\xBC_\x2\x275-\x3\x2\x2\x2\x276\x277\x5\x112\x8A\x2\x277"+ - "\x278\x5\x128\x95\x2\x278\x27A\x3\x2\x2\x2\x279\x276\x3\x2\x2\x2\x279"+ - "\x27A\x3\x2\x2\x2\x27A\x27B\x3\x2\x2\x2\x27B\x27C\aK\x2\x2\x27C\x27F\x5"+ - "\x128\x95\x2\x27D\x27E\a\xAD\x2\x2\x27E\x280\x5\x128\x95\x2\x27F\x27D"+ - "\x3\x2\x2\x2\x27F\x280\x3\x2\x2\x2\x280\x286\x3\x2\x2\x2\x281\x283\ax"+ - "\x2\x2\x282\x284\x5\x110\x89\x2\x283\x282\x3\x2\x2\x2\x283\x284\x3\x2"+ - "\x2\x2\x284\x287\x3\x2\x2\x2\x285\x287\a\xCA\x2\x2\x286\x281\x3\x2\x2"+ - "\x2\x286\x285\x3\x2\x2\x2\x287\x288\x3\x2\x2\x2\x288\x289\x5\x128\x95"+ - "\x2\x289\x28B\x5\xFA~\x2\x28A\x28C\x5\x110\x89\x2\x28B\x28A\x3\x2\x2\x2"+ - "\x28B\x28C\x3\x2\x2\x2\x28C\x28D\x3\x2\x2\x2\x28D\x28E\x5\x128\x95\x2"+ - "\x28E\x28F\a\x8A\x2\x2\x28F\x290\x5\x128\x95\x2\x290\x296\a\xF5\x2\x2"+ - "\x291\x292\x5\x128\x95\x2\x292\x293\a\x35\x2\x2\x293\x294\x5\x128\x95"+ - "\x2\x294\x295\a\xF5\x2\x2\x295\x297\x3\x2\x2\x2\x296\x291\x3\x2\x2\x2"+ - "\x296\x297\x3\x2\x2\x2\x297\x29C\x3\x2\x2\x2\x298\x29A\x5\x128\x95\x2"+ - "\x299\x298\x3\x2\x2\x2\x299\x29A\x3\x2\x2\x2\x29A\x29B\x3\x2\x2\x2\x29B"+ - "\x29D\x5\xF0y\x2\x29C\x299\x3\x2\x2\x2\x29C\x29D\x3\x2\x2\x2\x29D\x2A1"+ - "\x3\x2\x2\x2\x29E\x29F\x5\x128\x95\x2\x29F\x2A0\x5\xFC\x7F\x2\x2A0\x2A2"+ - "\x3\x2\x2\x2\x2A1\x29E\x3\x2\x2\x2\x2A1\x2A2\x3\x2\x2\x2\x2A2/\x3\x2\x2"+ - "\x2\x2A3\x2A4\t\x3\x2\x2\x2A4\x2A5\x5\x128\x95\x2\x2A5\x2B0\x5\x106\x84"+ - "\x2\x2A6\x2A8\x5\x128\x95\x2\x2A7\x2A6\x3\x2\x2\x2\x2A7\x2A8\x3\x2\x2"+ - "\x2\x2A8\x2A9\x3\x2\x2\x2\x2A9\x2AB\a)\x2\x2\x2AA\x2AC\x5\x128\x95\x2"+ - "\x2AB\x2AA\x3\x2\x2\x2\x2AB\x2AC\x3\x2\x2\x2\x2AC\x2AD\x3\x2\x2\x2\x2AD"+ - "\x2AF\x5\x106\x84\x2\x2AE\x2A7\x3\x2\x2\x2\x2AF\x2B2\x3\x2\x2\x2\x2B0"+ - "\x2AE\x3\x2\x2\x2\x2B0\x2B1\x3\x2\x2\x2\x2B1\x31\x3\x2\x2\x2\x2B2\x2B0"+ - "\x3\x2\x2\x2\x2B3\x2B4\aY\x2\x2\x2B4\x2B5\x5\x128\x95\x2\x2B5\x2B7\x5"+ - "\xBC_\x2\x2B6\x2B8\x5\x128\x95\x2\x2B7\x2B6\x3\x2\x2\x2\x2B7\x2B8\x3\x2"+ - "\x2\x2\x2B8\x2DA\x3\x2\x2\x2\x2B9\x2BA\aY\x2\x2\x2BA\x2BB\x5\x128\x95"+ - "\x2\x2BB\x2BD\x5\xBC_\x2\x2BC\x2BE\x5\x128\x95\x2\x2BD\x2BC\x3\x2\x2\x2"+ - "\x2BD\x2BE\x3\x2\x2\x2\x2BE\x2BF\x3\x2\x2\x2\x2BF\x2C1\a)\x2\x2\x2C0\x2C2"+ - "\x5\x128\x95\x2\x2C1\x2C0\x3\x2\x2\x2\x2C1\x2C2\x3\x2\x2\x2\x2C2\x2C3"+ - "\x3\x2\x2\x2\x2C3\x2C4\x5\xBC_\x2\x2C4\x2DA\x3\x2\x2\x2\x2C5\x2C6\aY\x2"+ - "\x2\x2C6\x2C7\x5\x128\x95\x2\x2C7\x2C9\x5\xBC_\x2\x2C8\x2CA\x5\x128\x95"+ - "\x2\x2C9\x2C8\x3\x2\x2\x2\x2C9\x2CA\x3\x2\x2\x2\x2CA\x2CB\x3\x2\x2\x2"+ - "\x2CB\x2CD\a)\x2\x2\x2CC\x2CE\x5\x128\x95\x2\x2CD\x2CC\x3\x2\x2\x2\x2CD"+ - "\x2CE\x3\x2\x2\x2\x2CE\x2CF\x3\x2\x2\x2\x2CF\x2D1\x5\xBC_\x2\x2D0\x2D2"+ - "\x5\x128\x95\x2\x2D1\x2D0\x3\x2\x2\x2\x2D1\x2D2\x3\x2\x2\x2\x2D2\x2D3"+ - "\x3\x2\x2\x2\x2D3\x2D5\a)\x2\x2\x2D4\x2D6\x5\x128\x95\x2\x2D5\x2D4\x3"+ - "\x2\x2\x2\x2D5\x2D6\x3\x2\x2\x2\x2D6\x2D7\x3\x2\x2\x2\x2D7\x2D8\x5\xBC"+ - "_\x2\x2D8\x2DA\x3\x2\x2\x2\x2D9\x2B3\x3\x2\x2\x2\x2D9\x2B9\x3\x2\x2\x2"+ - "\x2D9\x2C5\x3\x2\x2\x2\x2DA\x33\x3\x2\x2\x2\x2DB\x2DC\a[\x2\x2\x2DC\x2DE"+ - "\x5\x118\x8D\x2\x2DD\x2DF\x5\x1A\xE\x2\x2DE\x2DD\x3\x2\x2\x2\x2DE\x2DF"+ - "\x3\x2\x2\x2\x2DF\x2E0\x3\x2\x2\x2\x2E0\x2E1\a\x88\x2\x2\x2E1\x2F9\x3"+ - "\x2\x2\x2\x2E2\x2E3\a[\x2\x2\x2E3\x2E4\x5\x128\x95\x2\x2E4\x2E5\t\x4\x2"+ - "\x2\x2E5\x2E6\x5\x128\x95\x2\x2E6\x2E7\x5\xBC_\x2\x2E7\x2E9\x5\x118\x8D"+ - "\x2\x2E8\x2EA\x5\x1A\xE\x2\x2E9\x2E8\x3\x2\x2\x2\x2E9\x2EA\x3\x2\x2\x2"+ - "\x2EA\x2EB\x3\x2\x2\x2\x2EB\x2EC\a\x88\x2\x2\x2EC\x2F9\x3\x2\x2\x2\x2ED"+ - "\x2EE\a[\x2\x2\x2EE\x2F0\x5\x118\x8D\x2\x2EF\x2F1\x5\x1A\xE\x2\x2F0\x2EF"+ - "\x3\x2\x2\x2\x2F0\x2F1\x3\x2\x2\x2\x2F1\x2F2\x3\x2\x2\x2\x2F2\x2F3\a\x88"+ - "\x2\x2\x2F3\x2F4\x5\x128\x95\x2\x2F4\x2F5\t\x4\x2\x2\x2F5\x2F6\x5\x128"+ - "\x95\x2\x2F6\x2F7\x5\xBC_\x2\x2F7\x2F9\x3\x2\x2\x2\x2F8\x2DB\x3\x2\x2"+ - "\x2\x2F8\x2E2\x3\x2\x2\x2\x2F8\x2ED\x3\x2\x2\x2\x2F9\x35\x3\x2\x2\x2\x2FA"+ - "\x2FB\ai\x2\x2\x2FB\x37\x3\x2\x2\x2\x2FC\x2FD\x5\x112\x8A\x2\x2FD\x2FE"+ - "\x5\x128\x95\x2\x2FE\x300\x3\x2\x2\x2\x2FF\x2FC\x3\x2\x2\x2\x2FF\x300"+ - "\x3\x2\x2\x2\x300\x301\x3\x2\x2\x2\x301\x302\aj\x2\x2\x302\x303\x5\x128"+ - "\x95\x2\x303\x304\x5\xFA~\x2\x304\x308\x5\x118\x8D\x2\x305\x307\x5:\x1E"+ - "\x2\x306\x305\x3\x2\x2\x2\x307\x30A\x3\x2\x2\x2\x308\x306\x3\x2\x2\x2"+ - "\x308\x309\x3\x2\x2\x2\x309\x30B\x3\x2\x2\x2\x30A\x308\x3\x2\x2\x2\x30B"+ - "\x30C\a\x61\x2\x2\x30C\x39\x3\x2\x2\x2\x30D\x316\x5\xFA~\x2\x30E\x310"+ - "\x5\x128\x95\x2\x30F\x30E\x3\x2\x2\x2\x30F\x310\x3\x2\x2\x2\x310\x311"+ - "\x3\x2\x2\x2\x311\x313\a\xE2\x2\x2\x312\x314\x5\x128\x95\x2\x313\x312"+ - "\x3\x2\x2\x2\x313\x314\x3\x2\x2\x2\x314\x315\x3\x2\x2\x2\x315\x317\x5"+ - "\xBC_\x2\x316\x30F\x3\x2\x2\x2\x316\x317\x3\x2\x2\x2\x317\x318\x3\x2\x2"+ - "\x2\x318\x319\x5\x118\x8D\x2\x319;\x3\x2\x2\x2\x31A\x31B\al\x2\x2\x31B"+ - "\x31C\x5\x128\x95\x2\x31C\x327\x5\xBC_\x2\x31D\x31F\x5\x128\x95\x2\x31E"+ - "\x31D\x3\x2\x2\x2\x31E\x31F\x3\x2\x2\x2\x31F\x320\x3\x2\x2\x2\x320\x322"+ - "\a)\x2\x2\x321\x323\x5\x128\x95\x2\x322\x321\x3\x2\x2\x2\x322\x323\x3"+ - "\x2\x2\x2\x323\x324\x3\x2\x2\x2\x324\x326\x5\xBC_\x2\x325\x31E\x3\x2\x2"+ - "\x2\x326\x329\x3\x2\x2\x2\x327\x325\x3\x2\x2\x2\x327\x328\x3\x2\x2\x2"+ - "\x328=\x3\x2\x2\x2\x329\x327\x3\x2\x2\x2\x32A\x32B\am\x2\x2\x32B\x32C"+ - "\x5\x128\x95\x2\x32C\x32D\x5\xBC_\x2\x32D?\x3\x2\x2\x2\x32E\x32F\x5\x112"+ - "\x8A\x2\x32F\x330\x5\x128\x95\x2\x330\x332\x3\x2\x2\x2\x331\x32E\x3\x2"+ - "\x2\x2\x331\x332\x3\x2\x2\x2\x332\x333\x3\x2\x2\x2\x333\x334\an\x2\x2"+ - "\x334\x335\x5\x128\x95\x2\x335\x337\x5\xFA~\x2\x336\x338\x5\x128\x95\x2"+ - "\x337\x336\x3\x2\x2\x2\x337\x338\x3\x2\x2\x2\x338\x339\x3\x2\x2\x2\x339"+ - "\x33A\x5\xF0y\x2\x33A\x41\x3\x2\x2\x2\x33B\x33C\t\x5\x2\x2\x33C\x43\x3"+ - "\x2\x2\x2\x33D\x33E\au\x2\x2\x33E\x33F\x5\x128\x95\x2\x33F\x341\x5\xBC"+ - "_\x2\x340\x342\x5\x128\x95\x2\x341\x340\x3\x2\x2\x2\x341\x342\x3\x2\x2"+ - "\x2\x342\x343\x3\x2\x2\x2\x343\x345\a)\x2\x2\x344\x346\x5\x128\x95\x2"+ - "\x345\x344\x3\x2\x2\x2\x345\x346\x3\x2\x2\x2\x346\x347\x3\x2\x2\x2\x347"+ - "\x348\x5\xBC_\x2\x348\x45\x3\x2\x2\x2\x349\x34A\aw\x2\x2\x34A\x34B\x5"+ - "\x128\x95\x2\x34B\x34C\a]\x2\x2\x34C\x34D\x5\x128\x95\x2\x34D\x34F\x5"+ - "\xFA~\x2\x34E\x350\x5\x110\x89\x2\x34F\x34E\x3\x2\x2\x2\x34F\x350\x3\x2"+ - "\x2\x2\x350\x351\x3\x2\x2\x2\x351\x352\x5\x128\x95\x2\x352\x353\a\x80"+ - "\x2\x2\x353\x354\x5\x128\x95\x2\x354\x355\x5\xBC_\x2\x355\x357\x5\x118"+ - "\x8D\x2\x356\x358\x5\x1A\xE\x2\x357\x356\x3\x2\x2\x2\x357\x358\x3\x2\x2"+ - "\x2\x358\x359\x3\x2\x2\x2\x359\x35D\a\x96\x2\x2\x35A\x35B\x5\x128\x95"+ - "\x2\x35B\x35C\x5\xFA~\x2\x35C\x35E\x3\x2\x2\x2\x35D\x35A\x3\x2\x2\x2\x35D"+ - "\x35E\x3\x2\x2\x2\x35EG\x3\x2\x2\x2\x35F\x360\aw\x2\x2\x360\x361\x5\x128"+ - "\x95\x2\x361\x363\x5\xFA~\x2\x362\x364\x5\x110\x89\x2\x363\x362\x3\x2"+ - "\x2\x2\x363\x364\x3\x2\x2\x2\x364\x368\x3\x2\x2\x2\x365\x366\x5\x128\x95"+ - "\x2\x366\x367\x5\xFC\x7F\x2\x367\x369\x3\x2\x2\x2\x368\x365\x3\x2\x2\x2"+ - "\x368\x369\x3\x2\x2\x2\x369\x36B\x3\x2\x2\x2\x36A\x36C\x5\x128\x95\x2"+ - "\x36B\x36A\x3\x2\x2\x2\x36B\x36C\x3\x2\x2\x2\x36C\x36D\x3\x2\x2\x2\x36D"+ - "\x36F\a\xE2\x2\x2\x36E\x370\x5\x128\x95\x2\x36F\x36E\x3\x2\x2\x2\x36F"+ - "\x370\x3\x2\x2\x2\x370\x371\x3\x2\x2\x2\x371\x372\x5\xBC_\x2\x372\x373"+ - "\x5\x128\x95\x2\x373\x374\a\xCF\x2\x2\x374\x375\x5\x128\x95\x2\x375\x37B"+ - "\x5\xBC_\x2\x376\x377\x5\x128\x95\x2\x377\x378\a\xC7\x2\x2\x378\x379\x5"+ - "\x128\x95\x2\x379\x37A\x5\xBC_\x2\x37A\x37C\x3\x2\x2\x2\x37B\x376\x3\x2"+ - "\x2\x2\x37B\x37C\x3\x2\x2\x2\x37C\x37D\x3\x2\x2\x2\x37D\x37F\x5\x118\x8D"+ - "\x2\x37E\x380\x5\x1A\xE\x2\x37F\x37E\x3\x2\x2\x2\x37F\x380\x3\x2\x2\x2"+ - "\x380\x381\x3\x2\x2\x2\x381\x387\a\x96\x2\x2\x382\x383\x5\x128\x95\x2"+ - "\x383\x385\x5\xFA~\x2\x384\x386\x5\x110\x89\x2\x385\x384\x3\x2\x2\x2\x385"+ - "\x386\x3\x2\x2\x2\x386\x388\x3\x2\x2\x2\x387\x382\x3\x2\x2\x2\x387\x388"+ - "\x3\x2\x2\x2\x388I\x3\x2\x2\x2\x389\x38A\x5\x112\x8A\x2\x38A\x38B\x5\x128"+ - "\x95\x2\x38B\x38D\x3\x2\x2\x2\x38C\x389\x3\x2\x2\x2\x38C\x38D\x3\x2\x2"+ - "\x2\x38D\x390\x3\x2\x2\x2\x38E\x38F\a\xC6\x2\x2\x38F\x391\x5\x128\x95"+ - "\x2\x390\x38E\x3\x2\x2\x2\x390\x391\x3\x2\x2\x2\x391\x392\x3\x2\x2\x2"+ - "\x392\x394\ax\x2\x2\x393\x395\x5\x128\x95\x2\x394\x393\x3\x2\x2\x2\x394"+ - "\x395\x3\x2\x2\x2\x395\x396\x3\x2\x2\x2\x396\x398\x5\xFA~\x2\x397\x399"+ - "\x5\x110\x89\x2\x398\x397\x3\x2\x2\x2\x398\x399\x3\x2\x2\x2\x399\x39E"+ - "\x3\x2\x2\x2\x39A\x39C\x5\x128\x95\x2\x39B\x39A\x3\x2\x2\x2\x39B\x39C"+ - "\x3\x2\x2\x2\x39C\x39D\x3\x2\x2\x2\x39D\x39F\x5\xF0y\x2\x39E\x39B\x3\x2"+ - "\x2\x2\x39E\x39F\x3\x2\x2\x2\x39F\x3A4\x3\x2\x2\x2\x3A0\x3A2\x5\x128\x95"+ - "\x2\x3A1\x3A0\x3\x2\x2\x2\x3A1\x3A2\x3\x2\x2\x2\x3A2\x3A3\x3\x2\x2\x2"+ - "\x3A3\x3A5\x5\xFC\x7F\x2\x3A4\x3A1\x3\x2\x2\x2\x3A4\x3A5\x3\x2\x2\x2\x3A5"+ - "\x3A6\x3\x2\x2\x2\x3A6\x3A8\x5\x118\x8D\x2\x3A7\x3A9\x5\x1A\xE\x2\x3A8"+ - "\x3A7\x3\x2\x2\x2\x3A8\x3A9\x3\x2\x2\x2\x3A9\x3AA\x3\x2\x2\x2\x3AA\x3AB"+ - "\a\x62\x2\x2\x3ABK\x3\x2\x2\x2\x3AC\x3AD\ay\x2\x2\x3AD\x3AE\x5\x128\x95"+ - "\x2\x3AE\x3B0\x5\xD0i\x2\x3AF\x3B1\x5\x128\x95\x2\x3B0\x3AF\x3\x2\x2\x2"+ - "\x3B0\x3B1\x3\x2\x2\x2\x3B1\x3B2\x3\x2\x2\x2\x3B2\x3B4\a)\x2\x2\x3B3\x3B5"+ - "\x5\x128\x95\x2\x3B4\x3B3\x3\x2\x2\x2\x3B4\x3B5\x3\x2\x2\x2\x3B5\x3B7"+ - "\x3\x2\x2\x2\x3B6\x3B8\x5\xBC_\x2\x3B7\x3B6\x3\x2\x2\x2\x3B7\x3B8\x3\x2"+ - "\x2\x2\x3B8\x3BA\x3\x2\x2\x2\x3B9\x3BB\x5\x128\x95\x2\x3BA\x3B9\x3\x2"+ - "\x2\x2\x3BA\x3BB\x3\x2\x2\x2\x3BB\x3BC\x3\x2\x2\x2\x3BC\x3BE\a)\x2\x2"+ - "\x3BD\x3BF\x5\x128\x95\x2\x3BE\x3BD\x3\x2\x2\x2\x3BE\x3BF\x3\x2\x2\x2"+ - "\x3BF\x3C0\x3\x2\x2\x2\x3C0\x3C1\x5\xBC_\x2\x3C1M\x3\x2\x2\x2\x3C2\x3C3"+ - "\a{\x2\x2\x3C3\x3C4\x5\x128\x95\x2\x3C4\x3C5\x5\xBC_\x2\x3C5O\x3\x2\x2"+ - "\x2\x3C6\x3C7\a|\x2\x2\x3C7\x3C8\x5\x128\x95\x2\x3C8\x3C9\x5\xBC_\x2\x3C9"+ - "Q\x3\x2\x2\x2\x3CA\x3CB\a}\x2\x2\x3CB\x3CC\x5\x128\x95\x2\x3CC\x3CD\x5"+ - "V,\x2\x3CD\x3CE\x5\x128\x95\x2\x3CE\x3CF\a\xCD\x2\x2\x3CF\x3D0\x5\x128"+ - "\x95\x2\x3D0\x3D6\x5\x1C\xF\x2\x3D1\x3D2\x5\x128\x95\x2\x3D2\x3D3\a^\x2"+ - "\x2\x3D3\x3D4\x5\x128\x95\x2\x3D4\x3D5\x5\x1C\xF\x2\x3D5\x3D7\x3\x2\x2"+ - "\x2\x3D6\x3D1\x3\x2\x2\x2\x3D6\x3D7\x3\x2\x2\x2\x3D7\x3E5\x3\x2\x2\x2"+ - "\x3D8\x3DC\x5T+\x2\x3D9\x3DB\x5X-\x2\x3DA\x3D9\x3\x2\x2\x2\x3DB\x3DE\x3"+ - "\x2\x2\x2\x3DC\x3DA\x3\x2\x2\x2\x3DC\x3DD\x3\x2\x2\x2\x3DD\x3E0\x3\x2"+ - "\x2\x2\x3DE\x3DC\x3\x2\x2\x2\x3DF\x3E1\x5Z.\x2\x3E0\x3DF\x3\x2\x2\x2\x3E0"+ - "\x3E1\x3\x2\x2\x2\x3E1\x3E2\x3\x2\x2\x2\x3E2\x3E3\a\x63\x2\x2\x3E3\x3E5"+ - "\x3\x2\x2\x2\x3E4\x3CA\x3\x2\x2\x2\x3E4\x3D8\x3\x2\x2\x2\x3E5S\x3\x2\x2"+ - "\x2\x3E6\x3E7\a}\x2\x2\x3E7\x3E8\x5\x128\x95\x2\x3E8\x3E9\x5V,\x2\x3E9"+ - "\x3EA\x5\x128\x95\x2\x3EA\x3EB\a\xCD\x2\x2\x3EB\x3ED\x5\x118\x8D\x2\x3EC"+ - "\x3EE\x5\x1A\xE\x2\x3ED\x3EC\x3\x2\x2\x2\x3ED\x3EE\x3\x2\x2\x2\x3EEU\x3"+ - "\x2\x2\x2\x3EF\x3F0\x5\xBC_\x2\x3F0W\x3\x2\x2\x2\x3F1\x3F2\a_\x2\x2\x3F2"+ - "\x3F3\x5\x128\x95\x2\x3F3\x3F4\x5V,\x2\x3F4\x3F5\x5\x128\x95\x2\x3F5\x3F6"+ - "\a\xCD\x2\x2\x3F6\x3F8\x5\x118\x8D\x2\x3F7\x3F9\x5\x1A\xE\x2\x3F8\x3F7"+ - "\x3\x2\x2\x2\x3F8\x3F9\x3\x2\x2\x2\x3F9Y\x3\x2\x2\x2\x3FA\x3FB\a^\x2\x2"+ - "\x3FB\x3FD\x5\x118\x8D\x2\x3FC\x3FE\x5\x1A\xE\x2\x3FD\x3FC\x3\x2\x2\x2"+ - "\x3FD\x3FE\x3\x2\x2\x2\x3FE[\x3\x2\x2\x2\x3FF\x400\a\x7F\x2\x2\x400\x401"+ - "\x5\x128\x95\x2\x401\x402\x5\xBC_\x2\x402]\x3\x2\x2\x2\x403\x404\a\x81"+ - "\x2\x2\x404\x405\x5\x128\x95\x2\x405\x40E\x5\xD0i\x2\x406\x408\x5\x128"+ - "\x95\x2\x407\x406\x3\x2\x2\x2\x407\x408\x3\x2\x2\x2\x408\x409\x3\x2\x2"+ - "\x2\x409\x40B\a)\x2\x2\x40A\x40C\x5\x128\x95\x2\x40B\x40A\x3\x2\x2\x2"+ - "\x40B\x40C\x3\x2\x2\x2\x40C\x40D\x3\x2\x2\x2\x40D\x40F\x5\xBC_\x2\x40E"+ - "\x407\x3\x2\x2\x2\x40F\x410\x3\x2\x2\x2\x410\x40E\x3\x2\x2\x2\x410\x411"+ - "\x3\x2\x2\x2\x411_\x3\x2\x2\x2\x412\x413\a\x84\x2\x2\x413\x414\x5\x128"+ - "\x95\x2\x414\x415\x5\xBC_\x2\x415\x61\x3\x2\x2\x2\x416\x417\a\x89\x2\x2"+ - "\x417\x419\x5\x128\x95\x2\x418\x416\x3\x2\x2\x2\x418\x419\x3\x2\x2\x2"+ - "\x419\x41A\x3\x2\x2\x2\x41A\x41C\x5\xDEp\x2\x41B\x41D\x5\x128\x95\x2\x41C"+ - "\x41B\x3\x2\x2\x2\x41C\x41D\x3\x2\x2\x2\x41D\x41E\x3\x2\x2\x2\x41E\x420"+ - "\a\xE2\x2\x2\x41F\x421\x5\x128\x95\x2\x420\x41F\x3\x2\x2\x2\x420\x421"+ - "\x3\x2\x2\x2\x421\x422\x3\x2\x2\x2\x422\x423\x5\xBC_\x2\x423\x63\x3\x2"+ - "\x2\x2\x424\x425\a\x8C\x2\x2\x425\x426\x5\x128\x95\x2\x426\x428\x5\xD0"+ - "i\x2\x427\x429\x5\x128\x95\x2\x428\x427\x3\x2\x2\x2\x428\x429\x3\x2\x2"+ - "\x2\x429\x42A\x3\x2\x2\x2\x42A\x42C\a)\x2\x2\x42B\x42D\x5\x128\x95\x2"+ - "\x42C\x42B\x3\x2\x2\x2\x42C\x42D\x3\x2\x2\x2\x42D\x42E\x3\x2\x2\x2\x42E"+ - "\x42F\x5\xBC_\x2\x42F\x65\x3\x2\x2\x2\x430\x431\a\x85\x2\x2\x431\x432"+ - "\x5\x128\x95\x2\x432\x433\x5\xBC_\x2\x433g\x3\x2\x2\x2\x434\x435\a\x86"+ - "\x2\x2\x435\x436\x5\x128\x95\x2\x436\x446\x5\xBC_\x2\x437\x439\x5\x128"+ - "\x95\x2\x438\x437\x3\x2\x2\x2\x438\x439\x3\x2\x2\x2\x439\x43A\x3\x2\x2"+ - "\x2\x43A\x43C\a)\x2\x2\x43B\x43D\x5\x128\x95\x2\x43C\x43B\x3\x2\x2\x2"+ - "\x43C\x43D\x3\x2\x2\x2\x43D\x43E\x3\x2\x2\x2\x43E\x444\x5\xBC_\x2\x43F"+ - "\x440\x5\x128\x95\x2\x440\x441\a\xCF\x2\x2\x441\x442\x5\x128\x95\x2\x442"+ - "\x443\x5\xBC_\x2\x443\x445\x3\x2\x2\x2\x444\x43F\x3\x2\x2\x2\x444\x445"+ - "\x3\x2\x2\x2\x445\x447\x3\x2\x2\x2\x446\x438\x3\x2\x2\x2\x446\x447\x3"+ - "\x2\x2\x2\x447i\x3\x2\x2\x2\x448\x449\a\x90\x2\x2\x449\x44A\x5\x128\x95"+ - "\x2\x44A\x44C\x5\xDEp\x2\x44B\x44D\x5\x128\x95\x2\x44C\x44B\x3\x2\x2\x2"+ - "\x44C\x44D\x3\x2\x2\x2\x44D\x44E\x3\x2\x2\x2\x44E\x450\a\xE2\x2\x2\x44F"+ - "\x451\x5\x128\x95\x2\x450\x44F\x3\x2\x2\x2\x450\x451\x3\x2\x2\x2\x451"+ - "\x452\x3\x2\x2\x2\x452\x453\x5\xBC_\x2\x453k\x3\x2\x2\x2\x454\x456\a\x92"+ - "\x2\x2\x455\x457\x5\x128\x95\x2\x456\x455\x3\x2\x2\x2\x456\x457\x3\x2"+ - "\x2\x2\x457\x458\x3\x2\x2\x2\x458\x45A\a\xE6\x2\x2\x459\x45B\x5\x128\x95"+ - "\x2\x45A\x459\x3\x2\x2\x2\x45A\x45B\x3\x2\x2\x2\x45B\x45C\x3\x2\x2\x2"+ - "\x45C\x45E\x5\xEAv\x2\x45D\x45F\x5\x128\x95\x2\x45E\x45D\x3\x2\x2\x2\x45E"+ - "\x45F\x3\x2\x2\x2\x45F\x460\x3\x2\x2\x2\x460\x461\a\xED\x2\x2\x461m\x3"+ - "\x2\x2\x2\x462\x463\a\x93\x2\x2\x463\x464\x5\x128\x95\x2\x464\x465\x5"+ - "\xBC_\x2\x465o\x3\x2\x2\x2\x466\x467\a\x95\x2\x2\x467\x468\x5\x128\x95"+ - "\x2\x468\x469\x5\xBC_\x2\x469\x46A\x5\x128\x95\x2\x46A\x46B\a:\x2\x2\x46B"+ - "\x46C\x5\x128\x95\x2\x46C\x46D\x5\xBC_\x2\x46Dq\x3\x2\x2\x2\x46E\x46F"+ - "\t\x6\x2\x2\x46F\x478\x5\x128\x95\x2\x470\x471\a|\x2\x2\x471\x472\x5\x128"+ - "\x95\x2\x472\x473\x5\xBC_\x2\x473\x479\x3\x2\x2\x2\x474\x475\a\xB8\x2"+ - "\x2\x475\x476\x5\x128\x95\x2\x476\x477\a\x96\x2\x2\x477\x479\x3\x2\x2"+ - "\x2\x478\x470\x3\x2\x2\x2\x478\x474\x3\x2\x2\x2\x479s\x3\x2\x2\x2\x47A"+ - "\x47B\a\x9B\x2\x2\x47B\x47C\x5\x128\x95\x2\x47C\x47D\x5\xBC_\x2\x47D\x47E"+ - "\x5\x128\x95\x2\x47E\x47F\a|\x2\x2\x47F\x480\x5\x128\x95\x2\x480\x48B"+ - "\x5\xBC_\x2\x481\x483\x5\x128\x95\x2\x482\x481\x3\x2\x2\x2\x482\x483\x3"+ - "\x2\x2\x2\x483\x484\x3\x2\x2\x2\x484\x486\a)\x2\x2\x485\x487\x5\x128\x95"+ - "\x2\x486\x485\x3\x2\x2\x2\x486\x487\x3\x2\x2\x2\x487\x488\x3\x2\x2\x2"+ - "\x488\x48A\x5\xBC_\x2\x489\x482\x3\x2\x2\x2\x48A\x48D\x3\x2\x2\x2\x48B"+ - "\x489\x3\x2\x2\x2\x48B\x48C\x3\x2\x2\x2\x48Cu\x3\x2\x2\x2\x48D\x48B\x3"+ - "\x2\x2\x2\x48E\x48F\a\x9B\x2\x2\x48F\x490\x5\x128\x95\x2\x490\x491\x5"+ - "\xBC_\x2\x491\x492\x5\x128\x95\x2\x492\x493\a{\x2\x2\x493\x494\x5\x128"+ - "\x95\x2\x494\x49F\x5\xBC_\x2\x495\x497\x5\x128\x95\x2\x496\x495\x3\x2"+ - "\x2\x2\x496\x497\x3\x2\x2\x2\x497\x498\x3\x2\x2\x2\x498\x49A\a)\x2\x2"+ - "\x499\x49B\x5\x128\x95\x2\x49A\x499\x3\x2\x2\x2\x49A\x49B\x3\x2\x2\x2"+ - "\x49B\x49C\x3\x2\x2\x2\x49C\x49E\x5\xBC_\x2\x49D\x496\x3\x2\x2\x2\x49E"+ - "\x4A1\x3\x2\x2\x2\x49F\x49D\x3\x2\x2\x2\x49F\x4A0\x3\x2\x2\x2\x4A0w\x3"+ - "\x2\x2\x2\x4A1\x49F\x3\x2\x2\x2\x4A2\x4A3\a\x9E\x2\x2\x4A3\x4A4\x5\x128"+ - "\x95\x2\x4A4\x4A5\x5\xBC_\x2\x4A5\x4A6\x5\x128\x95\x2\x4A6\x4A7\aw\x2"+ - "\x2\x4A7\x4A8\x5\x128\x95\x2\x4A8\x4AE\t\a\x2\x2\x4A9\x4AA\x5\x128\x95"+ - "\x2\x4AA\x4AB\a\x33\x2\x2\x4AB\x4AC\x5\x128\x95\x2\x4AC\x4AD\t\b\x2\x2"+ - "\x4AD\x4AF\x3\x2\x2\x2\x4AE\x4A9\x3\x2\x2\x2\x4AE\x4AF\x3\x2\x2\x2\x4AF"+ - "\x4B3\x3\x2\x2\x2\x4B0\x4B1\x5\x128\x95\x2\x4B1\x4B2\t\t\x2\x2\x4B2\x4B4"+ - "\x3\x2\x2\x2\x4B3\x4B0\x3\x2\x2\x2\x4B3\x4B4\x3\x2\x2\x2\x4B4\x4B5\x3"+ - "\x2\x2\x2\x4B5\x4B6\x5\x128\x95\x2\x4B6\x4B7\a:\x2\x2\x4B7\x4B8\x5\x128"+ - "\x95\x2\x4B8\x4C4\x5\xD0i\x2\x4B9\x4BA\x5\x128\x95\x2\x4BA\x4BC\a\x1D"+ - "\x2\x2\x4BB\x4BD\x5\x128\x95\x2\x4BC\x4BB\x3\x2\x2\x2\x4BC\x4BD\x3\x2"+ - "\x2\x2\x4BD\x4BE\x3\x2\x2\x2\x4BE\x4C0\a\xE2\x2\x2\x4BF\x4C1\x5\x128\x95"+ - "\x2\x4C0\x4BF\x3\x2\x2\x2\x4C0\x4C1\x3\x2\x2\x2\x4C1\x4C2\x3\x2\x2\x2"+ - "\x4C2\x4C3\x5\xBC_\x2\x4C3\x4C5\x3\x2\x2\x2\x4C4\x4B9\x3\x2\x2\x2\x4C4"+ - "\x4C5\x3\x2\x2\x2\x4C5y\x3\x2\x2\x2\x4C6\x4D3\x5|?\x2\x4C7\x4C9\x5\x128"+ - "\x95\x2\x4C8\x4C7\x3\x2\x2\x2\x4C8\x4C9\x3\x2\x2\x2\x4C9\x4CA\x3\x2\x2"+ - "\x2\x4CA\x4CC\t\n\x2\x2\x4CB\x4CD\x5\x128\x95\x2\x4CC\x4CB\x3\x2\x2\x2"+ - "\x4CC\x4CD\x3\x2\x2\x2\x4CD\x4CF\x3\x2\x2\x2\x4CE\x4D0\x5|?\x2\x4CF\x4CE"+ - "\x3\x2\x2\x2\x4CF\x4D0\x3\x2\x2\x2\x4D0\x4D2\x3\x2\x2\x2\x4D1\x4C8\x3"+ - "\x2\x2\x2\x4D2\x4D5\x3\x2\x2\x2\x4D3\x4D1\x3\x2\x2\x2\x4D3\x4D4\x3\x2"+ - "\x2\x2\x4D4\x4E8\x3\x2\x2\x2\x4D5\x4D3\x3\x2\x2\x2\x4D6\x4D8\x5|?\x2\x4D7"+ - "\x4D6\x3\x2\x2\x2\x4D7\x4D8\x3\x2\x2\x2\x4D8\x4E3\x3\x2\x2\x2\x4D9\x4DB"+ - "\x5\x128\x95\x2\x4DA\x4D9\x3\x2\x2\x2\x4DA\x4DB\x3\x2\x2\x2\x4DB\x4DC"+ - "\x3\x2\x2\x2\x4DC\x4DE\t\n\x2\x2\x4DD\x4DF\x5\x128\x95\x2\x4DE\x4DD\x3"+ - "\x2\x2\x2\x4DE\x4DF\x3\x2\x2\x2\x4DF\x4E1\x3\x2\x2\x2\x4E0\x4E2\x5|?\x2"+ - "\x4E1\x4E0\x3\x2\x2\x2\x4E1\x4E2\x3\x2\x2\x2\x4E2\x4E4\x3\x2\x2\x2\x4E3"+ - "\x4DA\x3\x2\x2\x2\x4E4\x4E5\x3\x2\x2\x2\x4E5\x4E3\x3\x2\x2\x2\x4E5\x4E6"+ - "\x3\x2\x2\x2\x4E6\x4E8\x3\x2\x2\x2\x4E7\x4C6\x3\x2\x2\x2\x4E7\x4D7\x3"+ - "\x2\x2\x2\x4E8{\x3\x2\x2\x2\x4E9\x4FB\x5\xBC_\x2\x4EA\x4F8\t\v\x2\x2\x4EB"+ - "\x4ED\x5\x128\x95\x2\x4EC\x4EB\x3\x2\x2\x2\x4EC\x4ED\x3\x2\x2\x2\x4ED"+ - "\x4EE\x3\x2\x2\x2\x4EE\x4F0\a\xE6\x2\x2\x4EF\x4F1\x5\x128\x95\x2\x4F0"+ - "\x4EF\x3\x2\x2\x2\x4F0\x4F1\x3\x2\x2\x2\x4F1\x4F2\x3\x2\x2\x2\x4F2\x4F4"+ - "\x5\xEAv\x2\x4F3\x4F5\x5\x128\x95\x2\x4F4\x4F3\x3\x2\x2\x2\x4F4\x4F5\x3"+ - "\x2\x2\x2\x4F5\x4F6\x3\x2\x2\x2\x4F6\x4F7\a\xED\x2\x2\x4F7\x4F9\x3\x2"+ - "\x2\x2\x4F8\x4EC\x3\x2\x2\x2\x4F8\x4F9\x3\x2\x2\x2\x4F9\x4FB\x3\x2\x2"+ - "\x2\x4FA\x4E9\x3\x2\x2\x2\x4FA\x4EA\x3\x2\x2\x2\x4FB}\x3\x2\x2\x2\x4FC"+ - "\x4FD\a\xA8\x2\x2\x4FD\x4FE\x5\x128\x95\x2\x4FE\x500\x5\xD0i\x2\x4FF\x501"+ - "\x5\x128\x95\x2\x500\x4FF\x3\x2\x2\x2\x500\x501\x3\x2\x2\x2\x501\x502"+ - "\x3\x2\x2\x2\x502\x507\a)\x2\x2\x503\x505\x5\x128\x95\x2\x504\x503\x3"+ - "\x2\x2\x2\x504\x505\x3\x2\x2\x2\x505\x506\x3\x2\x2\x2\x506\x508\x5z>\x2"+ - "\x507\x504\x3\x2\x2\x2\x507\x508\x3\x2\x2\x2\x508\x7F\x3\x2\x2\x2\x509"+ - "\x50A\x5\x112\x8A\x2\x50A\x50B\x5\x128\x95\x2\x50B\x50D\x3\x2\x2\x2\x50C"+ - "\x509\x3\x2\x2\x2\x50C\x50D\x3\x2\x2\x2\x50D\x510\x3\x2\x2\x2\x50E\x50F"+ - "\a\xC6\x2\x2\x50F\x511\x5\x128\x95\x2\x510\x50E\x3\x2\x2\x2\x510\x511"+ - "\x3\x2\x2\x2\x511\x512\x3\x2\x2\x2\x512\x513\a\xAA\x2\x2\x513\x514\x5"+ - "\x128\x95\x2\x514\x516\x5\xFA~\x2\x515\x517\x5\x110\x89\x2\x516\x515\x3"+ - "\x2\x2\x2\x516\x517\x3\x2\x2\x2\x517\x51C\x3\x2\x2\x2\x518\x51A\x5\x128"+ - "\x95\x2\x519\x518\x3\x2\x2\x2\x519\x51A\x3\x2\x2\x2\x51A\x51B\x3\x2\x2"+ - "\x2\x51B\x51D\x5\xF0y\x2\x51C\x519\x3\x2\x2\x2\x51C\x51D\x3\x2\x2\x2\x51D"+ - "\x521\x3\x2\x2\x2\x51E\x51F\x5\x128\x95\x2\x51F\x520\x5\xFC\x7F\x2\x520"+ - "\x522\x3\x2\x2\x2\x521\x51E\x3\x2\x2\x2\x521\x522\x3\x2\x2\x2\x522\x523"+ - "\x3\x2\x2\x2\x523\x525\x5\x118\x8D\x2\x524\x526\x5\x1A\xE\x2\x525\x524"+ - "\x3\x2\x2\x2\x525\x526\x3\x2\x2\x2\x526\x527\x3\x2\x2\x2\x527\x528\a\x64"+ - "\x2\x2\x528\x81\x3\x2\x2\x2\x529\x52A\x5\x112\x8A\x2\x52A\x52B\x5\x128"+ - "\x95\x2\x52B\x52D\x3\x2\x2\x2\x52C\x529\x3\x2\x2\x2\x52C\x52D\x3\x2\x2"+ - "\x2\x52D\x530\x3\x2\x2\x2\x52E\x52F\a\xC6\x2\x2\x52F\x531\x5\x128\x95"+ - "\x2\x530\x52E\x3\x2\x2\x2\x530\x531\x3\x2\x2\x2\x531\x532\x3\x2\x2\x2"+ - "\x532\x533\a\xAC\x2\x2\x533\x534\x5\x128\x95\x2\x534\x539\x5\xFA~\x2\x535"+ - "\x537\x5\x128\x95\x2\x536\x535\x3\x2\x2\x2\x536\x537\x3\x2\x2\x2\x537"+ - "\x538\x3\x2\x2\x2\x538\x53A\x5\xF0y\x2\x539\x536\x3\x2\x2\x2\x539\x53A"+ - "\x3\x2\x2\x2\x53A\x53B\x3\x2\x2\x2\x53B\x53D\x5\x118\x8D\x2\x53C\x53E"+ - "\x5\x1A\xE\x2\x53D\x53C\x3\x2\x2\x2\x53D\x53E\x3\x2\x2\x2\x53E\x53F\x3"+ - "\x2\x2\x2\x53F\x540\a\x64\x2\x2\x540\x83\x3\x2\x2\x2\x541\x542\x5\x112"+ - "\x8A\x2\x542\x543\x5\x128\x95\x2\x543\x545\x3\x2\x2\x2\x544\x541\x3\x2"+ - "\x2\x2\x544\x545\x3\x2\x2\x2\x545\x548\x3\x2\x2\x2\x546\x547\a\xC6\x2"+ - "\x2\x547\x549\x5\x128\x95\x2\x548\x546\x3\x2\x2\x2\x548\x549\x3\x2\x2"+ - "\x2\x549\x54A\x3\x2\x2\x2\x54A\x54B\a\xAB\x2\x2\x54B\x54C\x5\x128\x95"+ - "\x2\x54C\x551\x5\xFA~\x2\x54D\x54F\x5\x128\x95\x2\x54E\x54D\x3\x2\x2\x2"+ - "\x54E\x54F\x3\x2\x2\x2\x54F\x550\x3\x2\x2\x2\x550\x552\x5\xF0y\x2\x551"+ - "\x54E\x3\x2\x2\x2\x551\x552\x3\x2\x2\x2\x552\x553\x3\x2\x2\x2\x553\x555"+ - "\x5\x118\x8D\x2\x554\x556\x5\x1A\xE\x2\x555\x554\x3\x2\x2\x2\x555\x556"+ - "\x3\x2\x2\x2\x556\x557\x3\x2\x2\x2\x557\x558\a\x64\x2\x2\x558\x85\x3\x2"+ - "\x2\x2\x559\x55A\a\xAF\x2\x2\x55A\x55B\x5\x128\x95\x2\x55B\x55D\x5\xD0"+ - "i\x2\x55C\x55E\x5\x128\x95\x2\x55D\x55C\x3\x2\x2\x2\x55D\x55E\x3\x2\x2"+ - "\x2\x55E\x55F\x3\x2\x2\x2\x55F\x561\a)\x2\x2\x560\x562\x5\x128\x95\x2"+ - "\x561\x560\x3\x2\x2\x2\x561\x562\x3\x2\x2\x2\x562\x564\x3\x2\x2\x2\x563"+ - "\x565\x5\xBC_\x2\x564\x563\x3\x2\x2\x2\x564\x565\x3\x2\x2\x2\x565\x567"+ - "\x3\x2\x2\x2\x566\x568\x5\x128\x95\x2\x567\x566\x3\x2\x2\x2\x567\x568"+ - "\x3\x2\x2\x2\x568\x569\x3\x2\x2\x2\x569\x56B\a)\x2\x2\x56A\x56C\x5\x128"+ - "\x95\x2\x56B\x56A\x3\x2\x2\x2\x56B\x56C\x3\x2\x2\x2\x56C\x56D\x3\x2\x2"+ - "\x2\x56D\x56E\x5\xBC_\x2\x56E\x87\x3\x2\x2\x2\x56F\x570\a\xB2\x2\x2\x570"+ - "\x571\x5\x128\x95\x2\x571\x580\x5\xFA~\x2\x572\x574\x5\x128\x95\x2\x573"+ - "\x572\x3\x2\x2\x2\x573\x574\x3\x2\x2\x2\x574\x575\x3\x2\x2\x2\x575\x577"+ - "\a\xE6\x2\x2\x576\x578\x5\x128\x95\x2\x577\x576\x3\x2\x2\x2\x577\x578"+ - "\x3\x2\x2\x2\x578\x57D\x3\x2\x2\x2\x579\x57B\x5\xEAv\x2\x57A\x57C\x5\x128"+ - "\x95\x2\x57B\x57A\x3\x2\x2\x2\x57B\x57C\x3\x2\x2\x2\x57C\x57E\x3\x2\x2"+ - "\x2\x57D\x579\x3\x2\x2\x2\x57D\x57E\x3\x2\x2\x2\x57E\x57F\x3\x2\x2\x2"+ - "\x57F\x581\a\xED\x2\x2\x580\x573\x3\x2\x2\x2\x580\x581\x3\x2\x2\x2\x581"+ - "\x89\x3\x2\x2\x2\x582\x586\a\xB1\x2\x2\x583\x584\x5\x128\x95\x2\x584\x585"+ - "\x5\xBC_\x2\x585\x587\x3\x2\x2\x2\x586\x583\x3\x2\x2\x2\x586\x587\x3\x2"+ - "\x2\x2\x587\x8B\x3\x2\x2\x2\x588\x589\a\xB5\x2\x2\x589\x58C\x5\x128\x95"+ - "\x2\x58A\x58B\a\xA7\x2\x2\x58B\x58D\x5\x128\x95\x2\x58C\x58A\x3\x2\x2"+ - "\x2\x58C\x58D\x3\x2\x2\x2\x58D\x58E\x3\x2\x2\x2\x58E\x599\x5\x8EH\x2\x58F"+ - "\x591\x5\x128\x95\x2\x590\x58F\x3\x2\x2\x2\x590\x591\x3\x2\x2\x2\x591"+ - "\x592\x3\x2\x2\x2\x592\x594\a)\x2\x2\x593\x595\x5\x128\x95\x2\x594\x593"+ - "\x3\x2\x2\x2\x594\x595\x3\x2\x2\x2\x595\x596\x3\x2\x2\x2\x596\x598\x5"+ - "\x8EH\x2\x597\x590\x3\x2\x2\x2\x598\x59B\x3\x2\x2\x2\x599\x597\x3\x2\x2"+ - "\x2\x599\x59A\x3\x2\x2\x2\x59A\x8D\x3\x2\x2\x2\x59B\x599\x3\x2\x2\x2\x59C"+ - "\x59E\x5\xDEp\x2\x59D\x59F\x5\x128\x95\x2\x59E\x59D\x3\x2\x2\x2\x59E\x59F"+ - "\x3\x2\x2\x2\x59F\x5A0\x3\x2\x2\x2\x5A0\x5A2\a\xE6\x2\x2\x5A1\x5A3\x5"+ - "\x128\x95\x2\x5A2\x5A1\x3\x2\x2\x2\x5A2\x5A3\x3\x2\x2\x2\x5A3\x5A4\x3"+ - "\x2\x2\x2\x5A4\x5A6\x5\xF6|\x2\x5A5\x5A7\x5\x128\x95\x2\x5A6\x5A5\x3\x2"+ - "\x2\x2\x5A6\x5A7\x3\x2\x2\x2\x5A7\x5A8\x3\x2\x2\x2\x5A8\x5AC\a\xED\x2"+ - "\x2\x5A9\x5AA\x5\x128\x95\x2\x5AA\x5AB\x5\xFC\x7F\x2\x5AB\x5AD\x3\x2\x2"+ - "\x2\x5AC\x5A9\x3\x2\x2\x2\x5AC\x5AD\x3\x2\x2\x2\x5AD\x8F\x3\x2\x2\x2\x5AE"+ - "\x5AF\a\xB7\x2\x2\x5AF\x91\x3\x2\x2\x2\x5B0\x5B6\a\xB8\x2\x2\x5B1\x5B4"+ - "\x5\x128\x95\x2\x5B2\x5B5\a\x96\x2\x2\x5B3\x5B5\x5\xFA~\x2\x5B4\x5B2\x3"+ - "\x2\x2\x2\x5B4\x5B3\x3\x2\x2\x2\x5B5\x5B7\x3\x2\x2\x2\x5B6\x5B1\x3\x2"+ - "\x2\x2\x5B6\x5B7\x3\x2\x2\x2\x5B7\x93\x3\x2\x2\x2\x5B8\x5B9\a\xB9\x2\x2"+ - "\x5B9\x95\x3\x2\x2\x2\x5BA\x5BB\a\xBA\x2\x2\x5BB\x5BC\x5\x128\x95\x2\x5BC"+ - "\x5BD\x5\xBC_\x2\x5BD\x97\x3\x2\x2\x2\x5BE\x5BF\a\xBB\x2\x2\x5BF\x5C0"+ - "\x5\x128\x95\x2\x5C0\x5C2\x5\xDEp\x2\x5C1\x5C3\x5\x128\x95\x2\x5C2\x5C1"+ - "\x3\x2\x2\x2\x5C2\x5C3\x3\x2\x2\x2\x5C3\x5C4\x3\x2\x2\x2\x5C4\x5C6\a\xE2"+ - "\x2\x2\x5C5\x5C7\x5\x128\x95\x2\x5C6\x5C5\x3\x2\x2\x2\x5C6\x5C7\x3\x2"+ - "\x2\x2\x5C7\x5C8\x3\x2\x2\x2\x5C8\x5C9\x5\xBC_\x2\x5C9\x99\x3\x2\x2\x2"+ - "\x5CA\x5CB\a\xBC\x2\x2\x5CB\x5CC\x5\x128\x95\x2\x5CC\x5CE\x5\xBC_\x2\x5CD"+ - "\x5CF\x5\x128\x95\x2\x5CE\x5CD\x3\x2\x2\x2\x5CE\x5CF\x3\x2\x2\x2\x5CF"+ - "\x5D0\x3\x2\x2\x2\x5D0\x5D2\a)\x2\x2\x5D1\x5D3\x5\x128\x95\x2\x5D2\x5D1"+ - "\x3\x2\x2\x2\x5D2\x5D3\x3\x2\x2\x2\x5D3\x5D4\x3\x2\x2\x2\x5D4\x5D5\x5"+ - "\xBC_\x2\x5D5\x9B\x3\x2\x2\x2\x5D6\x5D7\a\xBD\x2\x2\x5D7\x5D8\x5\x128"+ - "\x95\x2\x5D8\x5DA\x5\xBC_\x2\x5D9\x5DB\x5\x128\x95\x2\x5DA\x5D9\x3\x2"+ - "\x2\x2\x5DA\x5DB\x3\x2\x2\x2\x5DB\x5DC\x3\x2\x2\x2\x5DC\x5DE\a)\x2\x2"+ - "\x5DD\x5DF\x5\x128\x95\x2\x5DE\x5DD\x3\x2\x2\x2\x5DE\x5DF\x3\x2\x2\x2"+ - "\x5DF\x5E0\x3\x2\x2\x2\x5E0\x5E2\x5\xBC_\x2\x5E1\x5E3\x5\x128\x95\x2\x5E2"+ - "\x5E1\x3\x2\x2\x2\x5E2\x5E3\x3\x2\x2\x2\x5E3\x5E4\x3\x2\x2\x2\x5E4\x5E6"+ - "\a)\x2\x2\x5E5\x5E7\x5\x128\x95\x2\x5E6\x5E5\x3\x2\x2\x2\x5E6\x5E7\x3"+ - "\x2\x2\x2\x5E7\x5E8\x3\x2\x2\x2\x5E8\x5EA\x5\xBC_\x2\x5E9\x5EB\x5\x128"+ - "\x95\x2\x5EA\x5E9\x3\x2\x2\x2\x5EA\x5EB\x3\x2\x2\x2\x5EB\x5EC\x3\x2\x2"+ - "\x2\x5EC\x5EE\a)\x2\x2\x5ED\x5EF\x5\x128\x95\x2\x5EE\x5ED\x3\x2\x2\x2"+ - "\x5EE\x5EF\x3\x2\x2\x2\x5EF\x5F0\x3\x2\x2\x2\x5F0\x5F1\x5\xBC_\x2\x5F1"+ - "\x9D\x3\x2\x2\x2\x5F2\x5F3\a\xBE\x2\x2\x5F3\x5F4\x5\x128\x95\x2\x5F4\x5F6"+ - "\x5\xD0i\x2\x5F5\x5F7\x5\x128\x95\x2\x5F6\x5F5\x3\x2\x2\x2\x5F6\x5F7\x3"+ - "\x2\x2\x2\x5F7\x5F8\x3\x2\x2\x2\x5F8\x5FA\a)\x2\x2\x5F9\x5FB\x5\x128\x95"+ - "\x2\x5FA\x5F9\x3\x2\x2\x2\x5FA\x5FB\x3\x2\x2\x2\x5FB\x5FC\x3\x2\x2\x2"+ - "\x5FC\x5FD\x5\xBC_\x2\x5FD\x9F\x3\x2\x2\x2\x5FE\x5FF\a\xBF\x2\x2\x5FF"+ - "\x600\x5\x128\x95\x2\x600\x601\a\x43\x2\x2\x601\x602\x5\x128\x95\x2\x602"+ - "\x603\x5\xBC_\x2\x603\x607\x5\x118\x8D\x2\x604\x606\x5\xA4S\x2\x605\x604"+ - "\x3\x2\x2\x2\x606\x609\x3\x2\x2\x2\x607\x605\x3\x2\x2\x2\x607\x608\x3"+ - "\x2\x2\x2\x608\x60A\x3\x2\x2\x2\x609\x607\x3\x2\x2\x2\x60A\x60B\a\x65"+ - "\x2\x2\x60B\xA1\x3\x2\x2\x2\x60C\x60E\a\x82\x2\x2\x60D\x60F\x5\x128\x95"+ - "\x2\x60E\x60D\x3\x2\x2\x2\x60E\x60F\x3\x2\x2\x2\x60F\x610\x3\x2\x2\x2"+ - "\x610\x612\x5\x100\x81\x2\x611\x613\x5\x128\x95\x2\x612\x611\x3\x2\x2"+ - "\x2\x612\x613\x3\x2\x2\x2\x613\x614\x3\x2\x2\x2\x614\x615\x5\xBC_\x2\x615"+ - "\x61E\x3\x2\x2\x2\x616\x617\x5\xBC_\x2\x617\x618\x5\x128\x95\x2\x618\x619"+ - "\a\xCF\x2\x2\x619\x61A\x5\x128\x95\x2\x61A\x61B\x5\xBC_\x2\x61B\x61E\x3"+ - "\x2\x2\x2\x61C\x61E\x5\xBC_\x2\x61D\x60C\x3\x2\x2\x2\x61D\x616\x3\x2\x2"+ - "\x2\x61D\x61C\x3\x2\x2\x2\x61E\xA3\x3\x2\x2\x2\x61F\x620\a\x43\x2\x2\x620"+ - "\x621\x5\x128\x95\x2\x621\x622\x5\xA6T\x2\x622\x624\x5\x118\x8D\x2\x623"+ - "\x625\x5\x1A\xE\x2\x624\x623\x3\x2\x2\x2\x624\x625\x3\x2\x2\x2\x625\xA5"+ - "\x3\x2\x2\x2\x626\x636\a^\x2\x2\x627\x632\x5\xA2R\x2\x628\x62A\x5\x128"+ - "\x95\x2\x629\x628\x3\x2\x2\x2\x629\x62A\x3\x2\x2\x2\x62A\x62B\x3\x2\x2"+ - "\x2\x62B\x62D\a)\x2\x2\x62C\x62E\x5\x128\x95\x2\x62D\x62C\x3\x2\x2\x2"+ - "\x62D\x62E\x3\x2\x2\x2\x62E\x62F\x3\x2\x2\x2\x62F\x631\x5\xA2R\x2\x630"+ - "\x629\x3\x2\x2\x2\x631\x634\x3\x2\x2\x2\x632\x630\x3\x2\x2\x2\x632\x633"+ - "\x3\x2\x2\x2\x633\x636\x3\x2\x2\x2\x634\x632\x3\x2\x2\x2\x635\x626\x3"+ - "\x2\x2\x2\x635\x627\x3\x2\x2\x2\x636\xA7\x3\x2\x2\x2\x637\x638\a\xC0\x2"+ - "\x2\x638\x639\x5\x128\x95\x2\x639\x642\x5\xBC_\x2\x63A\x63C\x5\x128\x95"+ - "\x2\x63B\x63A\x3\x2\x2\x2\x63B\x63C\x3\x2\x2\x2\x63C\x63D\x3\x2\x2\x2"+ - "\x63D\x63F\a)\x2\x2\x63E\x640\x5\x128\x95\x2\x63F\x63E\x3\x2\x2\x2\x63F"+ - "\x640\x3\x2\x2\x2\x640\x641\x3\x2\x2\x2\x641\x643\x5\xBC_\x2\x642\x63B"+ - "\x3\x2\x2\x2\x642\x643\x3\x2\x2\x2\x643\xA9\x3\x2\x2\x2\x644\x645\a\xC2"+ - "\x2\x2\x645\x646\x5\x128\x95\x2\x646\x648\x5\xBC_\x2\x647\x649\x5\x128"+ - "\x95\x2\x648\x647\x3\x2\x2\x2\x648\x649\x3\x2\x2\x2\x649\x64A\x3\x2\x2"+ - "\x2\x64A\x64C\a)\x2\x2\x64B\x64D\x5\x128\x95\x2\x64C\x64B\x3\x2\x2\x2"+ - "\x64C\x64D\x3\x2\x2\x2\x64D\x64E\x3\x2\x2\x2\x64E\x64F\x5\xBC_\x2\x64F"+ - "\xAB\x3\x2\x2\x2\x650\x651\a\xC1\x2\x2\x651\x652\x5\x128\x95\x2\x652\x654"+ - "\x5\xDEp\x2\x653\x655\x5\x128\x95\x2\x654\x653\x3\x2\x2\x2\x654\x655\x3"+ - "\x2\x2\x2\x655\x656\x3\x2\x2\x2\x656\x658\a\xE2\x2\x2\x657\x659\x5\x128"+ - "\x95\x2\x658\x657\x3\x2\x2\x2\x658\x659\x3\x2\x2\x2\x659\x65A\x3\x2\x2"+ - "\x2\x65A\x65B\x5\xBC_\x2\x65B\xAD\x3\x2\x2\x2\x65C\x65D\a\xC8\x2\x2\x65D"+ - "\xAF\x3\x2\x2\x2\x65E\x65F\x5\x112\x8A\x2\x65F\x660\x5\x128\x95\x2\x660"+ - "\x662\x3\x2\x2\x2\x661\x65E\x3\x2\x2\x2\x661\x662\x3\x2\x2\x2\x662\x665"+ - "\x3\x2\x2\x2\x663\x664\a\xC6\x2\x2\x664\x666\x5\x128\x95\x2\x665\x663"+ - "\x3\x2\x2\x2\x665\x666\x3\x2\x2\x2\x666\x667\x3\x2\x2\x2\x667\x669\a\xCA"+ - "\x2\x2\x668\x66A\x5\x128\x95\x2\x669\x668\x3\x2\x2\x2\x669\x66A\x3\x2"+ - "\x2\x2\x66A\x66B\x3\x2\x2\x2\x66B\x670\x5\xFA~\x2\x66C\x66E\x5\x128\x95"+ - "\x2\x66D\x66C\x3\x2\x2\x2\x66D\x66E\x3\x2\x2\x2\x66E\x66F\x3\x2\x2\x2"+ - "\x66F\x671\x5\xF0y\x2\x670\x66D\x3\x2\x2\x2\x670\x671\x3\x2\x2\x2\x671"+ - "\x672\x3\x2\x2\x2\x672\x674\x5\x118\x8D\x2\x673\x675\x5\x1A\xE\x2\x674"+ - "\x673\x3\x2\x2\x2\x674\x675\x3\x2\x2\x2\x675\x676\x3\x2\x2\x2\x676\x677"+ - "\a\x66\x2\x2\x677\xB1\x3\x2\x2\x2\x678\x67A\a\xCE\x2\x2\x679\x67B\x5\x128"+ - "\x95\x2\x67A\x679\x3\x2\x2\x2\x67A\x67B\x3\x2\x2\x2\x67B\x67C\x3\x2\x2"+ - "\x2\x67C\x67E\a\xE2\x2\x2\x67D\x67F\x5\x128\x95\x2\x67E\x67D\x3\x2\x2"+ - "\x2\x67E\x67F\x3\x2\x2\x2\x67F\x680\x3\x2\x2\x2\x680\x681\x5\xBC_\x2\x681"+ - "\xB3\x3\x2\x2\x2\x682\x683\x5\x112\x8A\x2\x683\x684\x5\x128\x95\x2\x684"+ - "\x686\x3\x2\x2\x2\x685\x682\x3\x2\x2\x2\x685\x686\x3\x2\x2\x2\x686\x687"+ - "\x3\x2\x2\x2\x687\x688\a\xD1\x2\x2\x688\x689\x5\x128\x95\x2\x689\x68A"+ - "\x5\xFA~\x2\x68A\x68E\x5\x118\x8D\x2\x68B\x68D\x5\xB6\\\x2\x68C\x68B\x3"+ - "\x2\x2\x2\x68D\x690\x3\x2\x2\x2\x68E\x68C\x3\x2\x2\x2\x68E\x68F\x3\x2"+ - "\x2\x2\x68F\x691\x3\x2\x2\x2\x690\x68E\x3\x2\x2\x2\x691\x692\ag\x2\x2"+ - "\x692\xB5\x3\x2\x2\x2\x693\x6A2\x5\xFA~\x2\x694\x696\x5\x128\x95\x2\x695"+ - "\x694\x3\x2\x2\x2\x695\x696\x3\x2\x2\x2\x696\x697\x3\x2\x2\x2\x697\x69C"+ - "\a\xE6\x2\x2\x698\x69A\x5\x128\x95\x2\x699\x698\x3\x2\x2\x2\x699\x69A"+ - "\x3\x2\x2\x2\x69A\x69B\x3\x2\x2\x2\x69B\x69D\x5\xF6|\x2\x69C\x699\x3\x2"+ - "\x2\x2\x69C\x69D\x3\x2\x2\x2\x69D\x69F\x3\x2\x2\x2\x69E\x6A0\x5\x128\x95"+ - "\x2\x69F\x69E\x3\x2\x2\x2\x69F\x6A0\x3\x2\x2\x2\x6A0\x6A1\x3\x2\x2\x2"+ - "\x6A1\x6A3\a\xED\x2\x2\x6A2\x695\x3\x2\x2\x2\x6A2\x6A3\x3\x2\x2\x2\x6A3"+ - "\x6A7\x3\x2\x2\x2\x6A4\x6A5\x5\x128\x95\x2\x6A5\x6A6\x5\xFC\x7F\x2\x6A6"+ - "\x6A8\x3\x2\x2\x2\x6A7\x6A4\x3\x2\x2\x2\x6A7\x6A8\x3\x2\x2\x2\x6A8\x6A9"+ - "\x3\x2\x2\x2\x6A9\x6AA\x5\x118\x8D\x2\x6AA\xB7\x3\x2\x2\x2\x6AB\x6AC\a"+ - "\xD3\x2\x2\x6AC\x6AD\x5\x128\x95\x2\x6AD\x6AE\x5\xBC_\x2\x6AE\xB9\x3\x2"+ - "\x2\x2\x6AF\x6B0\a\xD4\x2\x2\x6B0\x6B1\x5\x128\x95\x2\x6B1\x6C1\x5\xD0"+ - "i\x2\x6B2\x6B4\x5\x128\x95\x2\x6B3\x6B2\x3\x2\x2\x2\x6B3\x6B4\x3\x2\x2"+ - "\x2\x6B4\x6B5\x3\x2\x2\x2\x6B5\x6B7\a)\x2\x2\x6B6\x6B8\x5\x128\x95\x2"+ - "\x6B7\x6B6\x3\x2\x2\x2\x6B7\x6B8\x3\x2\x2\x2\x6B8\x6B9\x3\x2\x2\x2\x6B9"+ - "\x6BF\x5\xBC_\x2\x6BA\x6BB\x5\x128\x95\x2\x6BB\x6BC\a\xCF\x2\x2\x6BC\x6BD"+ - "\x5\x128\x95\x2\x6BD\x6BE\x5\xBC_\x2\x6BE\x6C0\x3\x2\x2\x2\x6BF\x6BA\x3"+ - "\x2\x2\x2\x6BF\x6C0\x3\x2\x2\x2\x6C0\x6C2\x3\x2\x2\x2\x6C1\x6B3\x3\x2"+ - "\x2\x2\x6C1\x6C2\x3\x2\x2\x2\x6C2\xBB\x3\x2\x2\x2\x6C3\x6C4\b_\x1\x2\x6C4"+ - "\x6C6\a\x97\x2\x2\x6C5\x6C7\x5\x128\x95\x2\x6C6\x6C5\x3\x2\x2\x2\x6C6"+ - "\x6C7\x3\x2\x2\x2\x6C7\x6C8\x3\x2\x2\x2\x6C8\x6F1\x5\xBC_\x15\x6C9\x6CB"+ - "\a\x34\x2\x2\x6CA\x6CC\x5\x128\x95\x2\x6CB\x6CA\x3\x2\x2\x2\x6CB\x6CC"+ - "\x3\x2\x2\x2\x6CC\x6CD\x3\x2\x2\x2\x6CD\x6F1\x5\xBC_\x12\x6CE\x6D0\x5"+ - "\xDEp\x2\x6CF\x6D1\x5\x128\x95\x2\x6D0\x6CF\x3\x2\x2\x2\x6D0\x6D1\x3\x2"+ - "\x2\x2\x6D1\x6D2\x3\x2\x2\x2\x6D2\x6D4\a\xDF\x2\x2\x6D3\x6D5\x5\x128\x95"+ - "\x2\x6D4\x6D3\x3\x2\x2\x2\x6D4\x6D5\x3\x2\x2\x2\x6D5\x6D6\x3\x2\x2\x2"+ - "\x6D6\x6D7\x5\xBC_\x11\x6D7\x6F1\x3\x2\x2\x2\x6D8\x6DA\a\xE8\x2\x2\x6D9"+ - "\x6DB\x5\x128\x95\x2\x6DA\x6D9\x3\x2\x2\x2\x6DA\x6DB\x3\x2\x2\x2\x6DB"+ - "\x6DC\x3\x2\x2\x2\x6DC\x6F1\x5\xBC_\xF\x6DD\x6DF\a\x98\x2\x2\x6DE\x6E0"+ - "\x5\x128\x95\x2\x6DF\x6DE\x3\x2\x2\x2\x6DF\x6E0\x3\x2\x2\x2\x6E0\x6E1"+ - "\x3\x2\x2\x2\x6E1\x6F1\x5\xBC_\b\x6E2\x6F1\x5\x10A\x86\x2\x6E3\x6F1\x5"+ - "\xDEp\x2\x6E4\x6E6\a\xE6\x2\x2\x6E5\x6E7\x5\x128\x95\x2\x6E6\x6E5\x3\x2"+ - "\x2\x2\x6E6\x6E7\x3\x2\x2\x2\x6E7\x6E8\x3\x2\x2\x2\x6E8\x6EA\x5\xBC_\x2"+ - "\x6E9\x6EB\x5\x128\x95\x2\x6EA\x6E9\x3\x2\x2\x2\x6EA\x6EB\x3\x2\x2\x2"+ - "\x6EB\x6EC\x3\x2\x2\x2\x6EC\x6ED\a\xED\x2\x2\x6ED\x6F1\x3\x2\x2\x2\x6EE"+ - "\x6F1\x5\xBE`\x2\x6EF\x6F1\x5l\x37\x2\x6F0\x6C3\x3\x2\x2\x2\x6F0\x6C9"+ - "\x3\x2\x2\x2\x6F0\x6CE\x3\x2\x2\x2\x6F0\x6D8\x3\x2\x2\x2\x6F0\x6DD\x3"+ - "\x2\x2\x2\x6F0\x6E2\x3\x2\x2\x2\x6F0\x6E3\x3\x2\x2\x2\x6F0\x6E4\x3\x2"+ - "\x2\x2\x6F0\x6EE\x3\x2\x2\x2\x6F0\x6EF\x3\x2\x2\x2\x6F1\x760\x3\x2\x2"+ - "\x2\x6F2\x6F4\f\x10\x2\x2\x6F3\x6F5\x5\x128\x95\x2\x6F4\x6F3\x3\x2\x2"+ - "\x2\x6F4\x6F5\x3\x2\x2\x2\x6F5\x6F6\x3\x2\x2\x2\x6F6\x6F8\a\xEC\x2\x2"+ - "\x6F7\x6F9\x5\x128\x95\x2\x6F8\x6F7\x3\x2\x2\x2\x6F8\x6F9\x3\x2\x2\x2"+ - "\x6F9\x6FA\x3\x2\x2\x2\x6FA\x75F\x5\xBC_\x11\x6FB\x6FD\f\xE\x2\x2\x6FC"+ - "\x6FE\x5\x128\x95\x2\x6FD\x6FC\x3\x2\x2\x2\x6FD\x6FE\x3\x2\x2\x2\x6FE"+ - "\x6FF\x3\x2\x2\x2\x6FF\x701\t\f\x2\x2\x700\x702\x5\x128\x95\x2\x701\x700"+ - "\x3\x2\x2\x2\x701\x702\x3\x2\x2\x2\x702\x703\x3\x2\x2\x2\x703\x75F\x5"+ - "\xBC_\xF\x704\x706\f\r\x2\x2\x705\x707\x5\x128\x95\x2\x706\x705\x3\x2"+ - "\x2\x2\x706\x707\x3\x2\x2\x2\x707\x708\x3\x2\x2\x2\x708\x70A\a\xE1\x2"+ - "\x2\x709\x70B\x5\x128\x95\x2\x70A\x709\x3\x2\x2\x2\x70A\x70B\x3\x2\x2"+ - "\x2\x70B\x70C\x3\x2\x2\x2\x70C\x75F\x5\xBC_\xE\x70D\x70F\f\f\x2\x2\x70E"+ - "\x710\x5\x128\x95\x2\x70F\x70E\x3\x2\x2\x2\x70F\x710\x3\x2\x2\x2\x710"+ - "\x711\x3\x2\x2\x2\x711\x713\a\x94\x2\x2\x712\x714\x5\x128\x95\x2\x713"+ - "\x712\x3\x2\x2\x2\x713\x714\x3\x2\x2\x2\x714\x715\x3\x2\x2\x2\x715\x75F"+ - "\x5\xBC_\r\x716\x718\f\v\x2\x2\x717\x719\x5\x128\x95\x2\x718\x717\x3\x2"+ - "\x2\x2\x718\x719\x3\x2\x2\x2\x719\x71A\x3\x2\x2\x2\x71A\x71C\t\r\x2\x2"+ - "\x71B\x71D\x5\x128\x95\x2\x71C\x71B\x3\x2\x2\x2\x71C\x71D\x3\x2\x2\x2"+ - "\x71D\x71E\x3\x2\x2\x2\x71E\x75F\x5\xBC_\f\x71F\x721\f\n\x2\x2\x720\x722"+ - "\x5\x128\x95\x2\x721\x720\x3\x2\x2\x2\x721\x722\x3\x2\x2\x2\x722\x723"+ - "\x3\x2\x2\x2\x723\x725\a\x32\x2\x2\x724\x726\x5\x128\x95\x2\x725\x724"+ - "\x3\x2\x2\x2\x725\x726\x3\x2\x2\x2\x726\x727\x3\x2\x2\x2\x727\x75F\x5"+ - "\xBC_\v\x728\x72A\f\t\x2\x2\x729\x72B\x5\x128\x95\x2\x72A\x729\x3\x2\x2"+ - "\x2\x72A\x72B\x3\x2\x2\x2\x72B\x72C\x3\x2\x2\x2\x72C\x72E\t\xE\x2\x2\x72D"+ - "\x72F\x5\x128\x95\x2\x72E\x72D\x3\x2\x2\x2\x72E\x72F\x3\x2\x2\x2\x72F"+ - "\x730\x3\x2\x2\x2\x730\x75F\x5\xBC_\n\x731\x733\f\a\x2\x2\x732\x734\x5"+ - "\x128\x95\x2\x733\x732\x3\x2\x2\x2\x733\x734\x3\x2\x2\x2\x734\x735\x3"+ - "\x2\x2\x2\x735\x737\a\x36\x2\x2\x736\x738\x5\x128\x95\x2\x737\x736\x3"+ - "\x2\x2\x2\x737\x738\x3\x2\x2\x2\x738\x739\x3\x2\x2\x2\x739\x75F\x5\xBC"+ - "_\b\x73A\x73C\f\x6\x2\x2\x73B\x73D\x5\x128\x95\x2\x73C\x73B\x3\x2\x2\x2"+ - "\x73C\x73D\x3\x2\x2\x2\x73D\x73E\x3\x2\x2\x2\x73E\x740\a\xA4\x2\x2\x73F"+ - "\x741\x5\x128\x95\x2\x740\x73F\x3\x2\x2\x2\x740\x741\x3\x2\x2\x2\x741"+ - "\x742\x3\x2\x2\x2\x742\x75F\x5\xBC_\a\x743\x745\f\x5\x2\x2\x744\x746\x5"+ - "\x128\x95\x2\x745\x744\x3\x2\x2\x2\x745\x746\x3\x2\x2\x2\x746\x747\x3"+ - "\x2\x2\x2\x747\x749\a\xDE\x2\x2\x748\x74A\x5\x128\x95\x2\x749\x748\x3"+ - "\x2\x2\x2\x749\x74A\x3\x2\x2\x2\x74A\x74B\x3\x2\x2\x2\x74B\x75F\x5\xBC"+ - "_\x6\x74C\x74E\f\x4\x2\x2\x74D\x74F\x5\x128\x95\x2\x74E\x74D\x3\x2\x2"+ - "\x2\x74E\x74F\x3\x2\x2\x2\x74F\x750\x3\x2\x2\x2\x750\x752\ak\x2\x2\x751"+ - "\x753\x5\x128\x95\x2\x752\x751\x3\x2\x2\x2\x752\x753\x3\x2\x2\x2\x753"+ - "\x754\x3\x2\x2\x2\x754\x75F\x5\xBC_\x5\x755\x757\f\x3\x2\x2\x756\x758"+ - "\x5\x128\x95\x2\x757\x756\x3\x2\x2\x2\x757\x758\x3\x2\x2\x2\x758\x759"+ - "\x3\x2\x2\x2\x759\x75B\a~\x2\x2\x75A\x75C\x5\x128\x95\x2\x75B\x75A\x3"+ - "\x2\x2\x2\x75B\x75C\x3\x2\x2\x2\x75C\x75D\x3\x2\x2\x2\x75D\x75F\x5\xBC"+ - "_\x4\x75E\x6F2\x3\x2\x2\x2\x75E\x6FB\x3\x2\x2\x2\x75E\x704\x3\x2\x2\x2"+ - "\x75E\x70D\x3\x2\x2\x2\x75E\x716\x3\x2\x2\x2\x75E\x71F\x3\x2\x2\x2\x75E"+ - "\x728\x3\x2\x2\x2\x75E\x731\x3\x2\x2\x2\x75E\x73A\x3\x2\x2\x2\x75E\x743"+ - "\x3\x2\x2\x2\x75E\x74C\x3\x2\x2\x2\x75E\x755\x3\x2\x2\x2\x75F\x762\x3"+ - "\x2\x2\x2\x760\x75E\x3\x2\x2\x2\x760\x761\x3\x2\x2\x2\x761\xBD\x3\x2\x2"+ - "\x2\x762\x760\x3\x2\x2\x2\x763\x764\a\xD2\x2\x2\x764\x765\x5\x128\x95"+ - "\x2\x765\x76B\x5\xBC_\x2\x766\x767\x5\x128\x95\x2\x767\x768\a\x82\x2\x2"+ - "\x768\x769\x5\x128\x95\x2\x769\x76A\x5\x10E\x88\x2\x76A\x76C\x3\x2\x2"+ - "\x2\x76B\x766\x3\x2\x2\x2\x76B\x76C\x3\x2\x2\x2\x76C\xBF\x3\x2\x2\x2\x76D"+ - "\x771\aZ\x2\x2\x76E\x771\a\xC6\x2\x2\x76F\x771\x5\x112\x8A\x2\x770\x76D"+ - "\x3\x2\x2\x2\x770\x76E\x3\x2\x2\x2\x770\x76F\x3\x2\x2\x2\x771\x772\x3"+ - "\x2\x2\x2\x772\x775\x5\x128\x95\x2\x773\x774\a\xDC\x2\x2\x774\x776\x5"+ - "\x128\x95\x2\x775\x773\x3\x2\x2\x2\x775\x776\x3\x2\x2\x2\x776\x777\x3"+ - "\x2\x2\x2\x777\x778\x5\xC2\x62\x2\x778\xC1\x3\x2\x2\x2\x779\x784\x5\xC4"+ - "\x63\x2\x77A\x77C\x5\x128\x95\x2\x77B\x77A\x3\x2\x2\x2\x77B\x77C\x3\x2"+ - "\x2\x2\x77C\x77D\x3\x2\x2\x2\x77D\x77F\a)\x2\x2\x77E\x780\x5\x128\x95"+ - "\x2\x77F\x77E\x3\x2\x2\x2\x77F\x780\x3\x2\x2\x2\x780\x781\x3\x2\x2\x2"+ - "\x781\x783\x5\xC4\x63\x2\x782\x77B\x3\x2\x2\x2\x783\x786\x3\x2\x2\x2\x784"+ - "\x782\x3\x2\x2\x2\x784\x785\x3\x2\x2\x2\x785\xC3\x3\x2\x2\x2\x786\x784"+ - "\x3\x2\x2\x2\x787\x799\x5\xFA~\x2\x788\x78A\x5\x128\x95\x2\x789\x788\x3"+ - "\x2\x2\x2\x789\x78A\x3\x2\x2\x2\x78A\x78B\x3\x2\x2\x2\x78B\x78D\a\xE6"+ - "\x2\x2\x78C\x78E\x5\x128\x95\x2\x78D\x78C\x3\x2\x2\x2\x78D\x78E\x3\x2"+ - "\x2\x2\x78E\x793\x3\x2\x2\x2\x78F\x791\x5\xF6|\x2\x790\x792\x5\x128\x95"+ - "\x2\x791\x790\x3\x2\x2\x2\x791\x792\x3\x2\x2\x2\x792\x794\x3\x2\x2\x2"+ - "\x793\x78F\x3\x2\x2\x2\x793\x794\x3\x2\x2\x2\x794\x795\x3\x2\x2\x2\x795"+ - "\x797\a\xED\x2\x2\x796\x798\x5\x128\x95\x2\x797\x796\x3\x2\x2\x2\x797"+ - "\x798\x3\x2\x2\x2\x798\x79A\x3\x2\x2\x2\x799\x789\x3\x2\x2\x2\x799\x79A"+ - "\x3\x2\x2\x2\x79A\x79C\x3\x2\x2\x2\x79B\x79D\x5\x110\x89\x2\x79C\x79B"+ - "\x3\x2\x2\x2\x79C\x79D\x3\x2\x2\x2\x79D\x7A1\x3\x2\x2\x2\x79E\x79F\x5"+ - "\x128\x95\x2\x79F\x7A0\x5\xFC\x7F\x2\x7A0\x7A2\x3\x2\x2\x2\x7A1\x79E\x3"+ - "\x2\x2\x2\x7A1\x7A2\x3\x2\x2\x2\x7A2\xC5\x3\x2\x2\x2\x7A3\x7A4\a\xD9\x2"+ - "\x2\x7A4\x7A5\x5\x128\x95\x2\x7A5\x7A6\x5\xBC_\x2\x7A6\x7A8\x5\x118\x8D"+ - "\x2\x7A7\x7A9\x5\x1A\xE\x2\x7A8\x7A7\x3\x2\x2\x2\x7A8\x7A9\x3\x2\x2\x2"+ - "\x7A9\x7AA\x3\x2\x2\x2\x7AA\x7AB\a\xD8\x2\x2\x7AB\xC7\x3\x2\x2\x2\x7AC"+ - "\x7AD\a\xDA\x2\x2\x7AD\x7AE\x5\x128\x95\x2\x7AE\x7B0\x5\xD0i\x2\x7AF\x7B1"+ - "\x5\x128\x95\x2\x7B0\x7AF\x3\x2\x2\x2\x7B0\x7B1\x3\x2\x2\x2\x7B1\x7B2"+ - "\x3\x2\x2\x2\x7B2\x7B4\a)\x2\x2\x7B3\x7B5\x5\x128\x95\x2\x7B4\x7B3\x3"+ - "\x2\x2\x2\x7B4\x7B5\x3\x2\x2\x2\x7B5\x7B6\x3\x2\x2\x2\x7B6\x7B7\x5\xBC"+ - "_\x2\x7B7\xC9\x3\x2\x2\x2\x7B8\x7B9\a\xDB\x2\x2\x7B9\x7BA\x5\x128\x95"+ - "\x2\x7BA\x7BB\x5\xCCg\x2\x7BB\x7BD\x5\x118\x8D\x2\x7BC\x7BE\x5\x1A\xE"+ - "\x2\x7BD\x7BC\x3\x2\x2\x2\x7BD\x7BE\x3\x2\x2\x2\x7BE\x7BF\x3\x2\x2\x2"+ - "\x7BF\x7C0\ah\x2\x2\x7C0\xCB\x3\x2\x2\x2\x7C1\x7C7\x5\xDEp\x2\x7C2\x7C3"+ - "\a\x97\x2\x2\x7C3\x7C4\x5\x128\x95\x2\x7C4\x7C5\x5\x10E\x88\x2\x7C5\x7C7"+ - "\x3\x2\x2\x2\x7C6\x7C1\x3\x2\x2\x2\x7C6\x7C2\x3\x2\x2\x2\x7C7\xCD\x3\x2"+ - "\x2\x2\x7C8\x7C9\a\xDD\x2\x2\x7C9\x7CA\x5\x128\x95\x2\x7CA\x7CC\x5\xD0"+ - "i\x2\x7CB\x7CD\x5\x128\x95\x2\x7CC\x7CB\x3\x2\x2\x2\x7CC\x7CD\x3\x2\x2"+ - "\x2\x7CD\x7CE\x3\x2\x2\x2\x7CE\x7D3\a)\x2\x2\x7CF\x7D1\x5\x128\x95\x2"+ - "\x7D0\x7CF\x3\x2\x2\x2\x7D0\x7D1\x3\x2\x2\x2\x7D1\x7D2\x3\x2\x2\x2\x7D2"+ - "\x7D4\x5z>\x2\x7D3\x7D0\x3\x2\x2\x2\x7D3\x7D4\x3\x2\x2\x2\x7D4\xCF\x3"+ - "\x2\x2\x2\x7D5\x7D7\a.\x2\x2\x7D6\x7D5\x3\x2\x2\x2\x7D6\x7D7\x3\x2\x2"+ - "\x2\x7D7\x7D8\x3\x2\x2\x2\x7D8\x7D9\x5\xBC_\x2\x7D9\xD1\x3\x2\x2\x2\x7DA"+ - "\x7DD\x5\xD4k\x2\x7DB\x7DD\x5\xD6l\x2\x7DC\x7DA\x3\x2\x2\x2\x7DC\x7DB"+ - "\x3\x2\x2\x2\x7DD\xD3\x3\x2\x2\x2\x7DE\x7DF\a\x42\x2\x2\x7DF\x7E0\x5\x128"+ - "\x95\x2\x7E0\x7E2\x5\xFA~\x2\x7E1\x7E3\x5\x110\x89\x2\x7E2\x7E1\x3\x2"+ - "\x2\x2\x7E2\x7E3\x3\x2\x2\x2\x7E3\x7F1\x3\x2\x2\x2\x7E4\x7E6\x5\x128\x95"+ - "\x2\x7E5\x7E4\x3\x2\x2\x2\x7E5\x7E6\x3\x2\x2\x2\x7E6\x7E7\x3\x2\x2\x2"+ - "\x7E7\x7E9\a\xE6\x2\x2\x7E8\x7EA\x5\x128\x95\x2\x7E9\x7E8\x3\x2\x2\x2"+ - "\x7E9\x7EA\x3\x2\x2\x2\x7EA\x7EB\x3\x2\x2\x2\x7EB\x7ED\x5\xEAv\x2\x7EC"+ - "\x7EE\x5\x128\x95\x2\x7ED\x7EC\x3\x2\x2\x2\x7ED\x7EE\x3\x2\x2\x2\x7EE"+ - "\x7EF\x3\x2\x2\x2\x7EF\x7F0\a\xED\x2\x2\x7F0\x7F2\x3\x2\x2\x2\x7F1\x7E5"+ - "\x3\x2\x2\x2\x7F1\x7F2\x3\x2\x2\x2\x7F2\x7FC\x3\x2\x2\x2\x7F3\x7F5\x5"+ - "\x128\x95\x2\x7F4\x7F3\x3\x2\x2\x2\x7F4\x7F5\x3\x2\x2\x2\x7F5\x7F6\x3"+ - "\x2\x2\x2\x7F6\x7F7\a\xE6\x2\x2\x7F7\x7F8\x5\xF6|\x2\x7F8\x7F9\a\xED\x2"+ - "\x2\x7F9\x7FB\x3\x2\x2\x2\x7FA\x7F4\x3\x2\x2\x2\x7FB\x7FE\x3\x2\x2\x2"+ - "\x7FC\x7FA\x3\x2\x2\x2\x7FC\x7FD\x3\x2\x2\x2\x7FD\xD5\x3\x2\x2\x2\x7FE"+ - "\x7FC\x3\x2\x2\x2\x7FF\x800\a\x42\x2\x2\x800\x802\x5\x128\x95\x2\x801"+ - "\x803\x5\xDEp\x2\x802\x801\x3\x2\x2\x2\x802\x803\x3\x2\x2\x2\x803\x804"+ - "\x3\x2\x2\x2\x804\x805\a-\x2\x2\x805\x807\x5\xFA~\x2\x806\x808\x5\x110"+ - "\x89\x2\x807\x806\x3\x2\x2\x2\x807\x808\x3\x2\x2\x2\x808\x816\x3\x2\x2"+ - "\x2\x809\x80B\x5\x128\x95\x2\x80A\x809\x3\x2\x2\x2\x80A\x80B\x3\x2\x2"+ - "\x2\x80B\x80C\x3\x2\x2\x2\x80C\x80E\a\xE6\x2\x2\x80D\x80F\x5\x128\x95"+ - "\x2\x80E\x80D\x3\x2\x2\x2\x80E\x80F\x3\x2\x2\x2\x80F\x810\x3\x2\x2\x2"+ - "\x810\x812\x5\xEAv\x2\x811\x813\x5\x128\x95\x2\x812\x811\x3\x2\x2\x2\x812"+ - "\x813\x3\x2\x2\x2\x813\x814\x3\x2\x2\x2\x814\x815\a\xED\x2\x2\x815\x817"+ - "\x3\x2\x2\x2\x816\x80A\x3\x2\x2\x2\x816\x817\x3\x2\x2\x2\x817\x821\x3"+ - "\x2\x2\x2\x818\x81A\x5\x128\x95\x2\x819\x818\x3\x2\x2\x2\x819\x81A\x3"+ - "\x2\x2\x2\x81A\x81B\x3\x2\x2\x2\x81B\x81C\a\xE6\x2\x2\x81C\x81D\x5\xF6"+ - "|\x2\x81D\x81E\a\xED\x2\x2\x81E\x820\x3\x2\x2\x2\x81F\x819\x3\x2\x2\x2"+ - "\x820\x823\x3\x2\x2\x2\x821\x81F\x3\x2\x2\x2\x821\x822\x3\x2\x2\x2\x822"+ - "\xD7\x3\x2\x2\x2\x823\x821\x3\x2\x2\x2\x824\x827\x5\xDAn\x2\x825\x827"+ - "\x5\xDCo\x2\x826\x824\x3\x2\x2\x2\x826\x825\x3\x2\x2\x2\x827\xD9\x3\x2"+ - "\x2\x2\x828\x82A\x5\xDEp\x2\x829\x828\x3\x2\x2\x2\x829\x82A\x3\x2\x2\x2"+ - "\x82A\x82C\x3\x2\x2\x2\x82B\x82D\x5\x128\x95\x2\x82C\x82B\x3\x2\x2\x2"+ - "\x82C\x82D\x3\x2\x2\x2\x82D\x82E\x3\x2\x2\x2\x82E\x830\a-\x2\x2\x82F\x831"+ - "\x5\x128\x95\x2\x830\x82F\x3\x2\x2\x2\x830\x831\x3\x2\x2\x2\x831\x832"+ - "\x3\x2\x2\x2\x832\x834\x5\xFA~\x2\x833\x835\x5\x110\x89\x2\x834\x833\x3"+ - "\x2\x2\x2\x834\x835\x3\x2\x2\x2\x835\x839\x3\x2\x2\x2\x836\x837\x5\x128"+ - "\x95\x2\x837\x838\x5\xEAv\x2\x838\x83A\x3\x2\x2\x2\x839\x836\x3\x2\x2"+ - "\x2\x839\x83A\x3\x2\x2\x2\x83A\x83F\x3\x2\x2\x2\x83B\x83D\x5\x128\x95"+ - "\x2\x83C\x83B\x3\x2\x2\x2\x83C\x83D\x3\x2\x2\x2\x83D\x83E\x3\x2\x2\x2"+ - "\x83E\x840\x5\xEEx\x2\x83F\x83C\x3\x2\x2\x2\x83F\x840\x3\x2\x2\x2\x840"+ - "\x84A\x3\x2\x2\x2\x841\x843\x5\x128\x95\x2\x842\x841\x3\x2\x2\x2\x842"+ - "\x843\x3\x2\x2\x2\x843\x844\x3\x2\x2\x2\x844\x845\a\xE6\x2\x2\x845\x846"+ - "\x5\xF6|\x2\x846\x847\a\xED\x2\x2\x847\x849\x3\x2\x2\x2\x848\x842\x3\x2"+ - "\x2\x2\x849\x84C\x3\x2\x2\x2\x84A\x848\x3\x2\x2\x2\x84A\x84B\x3\x2\x2"+ - "\x2\x84B\xDB\x3\x2\x2\x2\x84C\x84A\x3\x2\x2\x2\x84D\x851\x5\xFA~\x2\x84E"+ - "\x84F\x5\x128\x95\x2\x84F\x850\x5\xEAv\x2\x850\x852\x3\x2\x2\x2\x851\x84E"+ - "\x3\x2\x2\x2\x851\x852\x3\x2\x2\x2\x852\x85C\x3\x2\x2\x2\x853\x855\x5"+ - "\x128\x95\x2\x854\x853\x3\x2\x2\x2\x854\x855\x3\x2\x2\x2\x855\x856\x3"+ - "\x2\x2\x2\x856\x857\a\xE6\x2\x2\x857\x858\x5\xF6|\x2\x858\x859\a\xED\x2"+ - "\x2\x859\x85B\x3\x2\x2\x2\x85A\x854\x3\x2\x2\x2\x85B\x85E\x3\x2\x2\x2"+ - "\x85C\x85A\x3\x2\x2\x2\x85C\x85D\x3\x2\x2\x2\x85D\xDD\x3\x2\x2\x2\x85E"+ - "\x85C\x3\x2\x2\x2\x85F\x864\x5\xE4s\x2\x860\x864\x5\xE0q\x2\x861\x864"+ - "\x5\xE2r\x2\x862\x864\x5\xE8u\x2\x863\x85F\x3\x2\x2\x2\x863\x860\x3\x2"+ - "\x2\x2\x863\x861\x3\x2\x2\x2\x863\x862\x3\x2\x2\x2\x864\xDF\x3\x2\x2\x2"+ - "\x865\x867\x5\xFA~\x2\x866\x868\x5\x110\x89\x2\x867\x866\x3\x2\x2\x2\x867"+ - "\x868\x3\x2\x2\x2\x868\x86D\x3\x2\x2\x2\x869\x86B\x5\x128\x95\x2\x86A"+ - "\x869\x3\x2\x2\x2\x86A\x86B\x3\x2\x2\x2\x86B\x86C\x3\x2\x2\x2\x86C\x86E"+ - "\x5\xEEx\x2\x86D\x86A\x3\x2\x2\x2\x86D\x86E\x3\x2\x2\x2\x86E\x878\x3\x2"+ - "\x2\x2\x86F\x871\x5\x128\x95\x2\x870\x86F\x3\x2\x2\x2\x870\x871\x3\x2"+ - "\x2\x2\x871\x872\x3\x2\x2\x2\x872\x873\a\xE6\x2\x2\x873\x874\x5\xF6|\x2"+ - "\x874\x875\a\xED\x2\x2\x875\x877\x3\x2\x2\x2\x876\x870\x3\x2\x2\x2\x877"+ - "\x87A\x3\x2\x2\x2\x878\x876\x3\x2\x2\x2\x878\x879\x3\x2\x2\x2\x879\xE1"+ - "\x3\x2\x2\x2\x87A\x878\x3\x2\x2\x2\x87B\x87E\x5\xFA~\x2\x87C\x87E\x5\xFE"+ - "\x80\x2\x87D\x87B\x3\x2\x2\x2\x87D\x87C\x3\x2\x2\x2\x87E\x880\x3\x2\x2"+ - "\x2\x87F\x881\x5\x110\x89\x2\x880\x87F\x3\x2\x2\x2\x880\x881\x3\x2\x2"+ - "\x2\x881\x883\x3\x2\x2\x2\x882\x884\x5\x128\x95\x2\x883\x882\x3\x2\x2"+ - "\x2\x883\x884\x3\x2\x2\x2\x884\x885\x3\x2\x2\x2\x885\x887\a\xE6\x2\x2"+ - "\x886\x888\x5\x128\x95\x2\x887\x886\x3\x2\x2\x2\x887\x888\x3\x2\x2\x2"+ - "\x888\x88D\x3\x2\x2\x2\x889\x88B\x5\xEAv\x2\x88A\x88C\x5\x128\x95\x2\x88B"+ - "\x88A\x3\x2\x2\x2\x88B\x88C\x3\x2\x2\x2\x88C\x88E\x3\x2\x2\x2\x88D\x889"+ - "\x3\x2\x2\x2\x88D\x88E\x3\x2\x2\x2\x88E\x88F\x3\x2\x2\x2\x88F\x894\a\xED"+ - "\x2\x2\x890\x892\x5\x128\x95\x2\x891\x890\x3\x2\x2\x2\x891\x892\x3\x2"+ - "\x2\x2\x892\x893\x3\x2\x2\x2\x893\x895\x5\xEEx\x2\x894\x891\x3\x2\x2\x2"+ - "\x894\x895\x3\x2\x2\x2\x895\x89F\x3\x2\x2\x2\x896\x898\x5\x128\x95\x2"+ - "\x897\x896\x3\x2\x2\x2\x897\x898\x3\x2\x2\x2\x898\x899\x3\x2\x2\x2\x899"+ - "\x89A\a\xE6\x2\x2\x89A\x89B\x5\xF6|\x2\x89B\x89C\a\xED\x2\x2\x89C\x89E"+ - "\x3\x2\x2\x2\x89D\x897\x3\x2\x2\x2\x89E\x8A1\x3\x2\x2\x2\x89F\x89D\x3"+ - "\x2\x2\x2\x89F\x8A0\x3\x2\x2\x2\x8A0\xE3\x3\x2\x2\x2\x8A1\x89F\x3\x2\x2"+ - "\x2\x8A2\x8A5\x5\xE0q\x2\x8A3\x8A5\x5\xE2r\x2\x8A4\x8A2\x3\x2\x2\x2\x8A4"+ - "\x8A3\x3\x2\x2\x2\x8A4\x8A5\x3\x2\x2\x2\x8A5\x8AA\x3\x2\x2\x2\x8A6\x8A8"+ - "\x5\xE6t\x2\x8A7\x8A9\x5\x128\x95\x2\x8A8\x8A7\x3\x2\x2\x2\x8A8\x8A9\x3"+ - "\x2\x2\x2\x8A9\x8AB\x3\x2\x2\x2\x8AA\x8A6\x3\x2\x2\x2\x8AB\x8AC\x3\x2"+ - "\x2\x2\x8AC\x8AA\x3\x2\x2\x2\x8AC\x8AD\x3\x2\x2\x2\x8AD\x8B2\x3\x2\x2"+ - "\x2\x8AE\x8B0\x5\x128\x95\x2\x8AF\x8AE\x3\x2\x2\x2\x8AF\x8B0\x3\x2\x2"+ - "\x2\x8B0\x8B1\x3\x2\x2\x2\x8B1\x8B3\x5\xEEx\x2\x8B2\x8AF\x3\x2\x2\x2\x8B2"+ - "\x8B3\x3\x2\x2\x2\x8B3\x8BD\x3\x2\x2\x2\x8B4\x8B6\x5\x128\x95\x2\x8B5"+ - "\x8B4\x3\x2\x2\x2\x8B5\x8B6\x3\x2\x2\x2\x8B6\x8B7\x3\x2\x2\x2\x8B7\x8B8"+ - "\a\xE6\x2\x2\x8B8\x8B9\x5\xF6|\x2\x8B9\x8BA\a\xED\x2\x2\x8BA\x8BC\x3\x2"+ - "\x2\x2\x8BB\x8B5\x3\x2\x2\x2\x8BC\x8BF\x3\x2\x2\x2\x8BD\x8BB\x3\x2\x2"+ - "\x2\x8BD\x8BE\x3\x2\x2\x2\x8BE\xE5\x3\x2\x2\x2\x8BF\x8BD\x3\x2\x2\x2\x8C0"+ - "\x8C2\t\xF\x2\x2\x8C1\x8C3\x5\x128\x95\x2\x8C2\x8C1\x3\x2\x2\x2\x8C2\x8C3"+ - "\x3\x2\x2\x2\x8C3\x8C6\x3\x2\x2\x2\x8C4\x8C7\x5\xE0q\x2\x8C5\x8C7\x5\xE2"+ - "r\x2\x8C6\x8C4\x3\x2\x2\x2\x8C6\x8C5\x3\x2\x2\x2\x8C7\xE7\x3\x2\x2\x2"+ - "\x8C8\x8CA\x5\x128\x95\x2\x8C9\x8C8\x3\x2\x2\x2\x8C9\x8CA\x3\x2\x2\x2"+ - "\x8CA\x8CB\x3\x2\x2\x2\x8CB\x8CC\x5\xEEx\x2\x8CC\xE9\x3\x2\x2\x2\x8CD"+ - "\x8CF\x5\xECw\x2\x8CE\x8CD\x3\x2\x2\x2\x8CE\x8CF\x3\x2\x2\x2\x8CF\x8D1"+ - "\x3\x2\x2\x2\x8D0\x8D2\x5\x128\x95\x2\x8D1\x8D0\x3\x2\x2\x2\x8D1\x8D2"+ - "\x3\x2\x2\x2\x8D2\x8D3\x3\x2\x2\x2\x8D3\x8D5\t\n\x2\x2\x8D4\x8D6\x5\x128"+ - "\x95\x2\x8D5\x8D4\x3\x2\x2\x2\x8D5\x8D6\x3\x2\x2\x2\x8D6\x8D8\x3\x2\x2"+ - "\x2\x8D7\x8CE\x3\x2\x2\x2\x8D8\x8DB\x3\x2\x2\x2\x8D9\x8D7\x3\x2\x2\x2"+ - "\x8D9\x8DA\x3\x2\x2\x2\x8DA\x8DC\x3\x2\x2\x2\x8DB\x8D9\x3\x2\x2\x2\x8DC"+ - "\x8E9\x5\xECw\x2\x8DD\x8DF\x5\x128\x95\x2\x8DE\x8DD\x3\x2\x2\x2\x8DE\x8DF"+ - "\x3\x2\x2\x2\x8DF\x8E0\x3\x2\x2\x2\x8E0\x8E2\t\n\x2\x2\x8E1\x8E3\x5\x128"+ - "\x95\x2\x8E2\x8E1\x3\x2\x2\x2\x8E2\x8E3\x3\x2\x2\x2\x8E3\x8E5\x3\x2\x2"+ - "\x2\x8E4\x8E6\x5\xECw\x2\x8E5\x8E4\x3\x2\x2\x2\x8E5\x8E6\x3\x2\x2\x2\x8E6"+ - "\x8E8\x3\x2\x2\x2\x8E7\x8DE\x3\x2\x2\x2\x8E8\x8EB\x3\x2\x2\x2\x8E9\x8E7"+ - "\x3\x2\x2\x2\x8E9\x8EA\x3\x2\x2\x2\x8EA\xEB\x3\x2\x2\x2\x8EB\x8E9\x3\x2"+ - "\x2\x2\x8EC\x8EE\a\xE6\x2\x2\x8ED\x8EC\x3\x2\x2\x2\x8ED\x8EE\x3\x2\x2"+ - "\x2\x8EE\x8F1\x3\x2\x2\x2\x8EF\x8F0\t\x10\x2\x2\x8F0\x8F2\x5\x128\x95"+ - "\x2\x8F1\x8EF\x3\x2\x2\x2\x8F1\x8F2\x3\x2\x2\x2\x8F2\x8F4\x3\x2\x2\x2"+ - "\x8F3\x8F5\a\xED\x2\x2\x8F4\x8F3\x3\x2\x2\x2\x8F4\x8F5\x3\x2\x2\x2\x8F5"+ - "\x8F6\x3\x2\x2\x2\x8F6\x8F7\x5\xBC_\x2\x8F7\xED\x3\x2\x2\x2\x8F8\x8FA"+ - "\a,\x2\x2\x8F9\x8FB\x5\x128\x95\x2\x8FA\x8F9\x3\x2\x2\x2\x8FA\x8FB\x3"+ - "\x2\x2\x2\x8FB\x8FC\x3\x2\x2\x2\x8FC\x8FE\x5\xFA~\x2\x8FD\x8FF\x5\x110"+ - "\x89\x2\x8FE\x8FD\x3\x2\x2\x2\x8FE\x8FF\x3\x2\x2\x2\x8FF\xEF\x3\x2\x2"+ - "\x2\x900\x912\a\xE6\x2\x2\x901\x903\x5\x128\x95\x2\x902\x901\x3\x2\x2"+ - "\x2\x902\x903\x3\x2\x2\x2\x903\x904\x3\x2\x2\x2\x904\x90F\x5\xF2z\x2\x905"+ - "\x907\x5\x128\x95\x2\x906\x905\x3\x2\x2\x2\x906\x907\x3\x2\x2\x2\x907"+ - "\x908\x3\x2\x2\x2\x908\x90A\a)\x2\x2\x909\x90B\x5\x128\x95\x2\x90A\x909"+ - "\x3\x2\x2\x2\x90A\x90B\x3\x2\x2\x2\x90B\x90C\x3\x2\x2\x2\x90C\x90E\x5"+ - "\xF2z\x2\x90D\x906\x3\x2\x2\x2\x90E\x911\x3\x2\x2\x2\x90F\x90D\x3\x2\x2"+ - "\x2\x90F\x910\x3\x2\x2\x2\x910\x913\x3\x2\x2\x2\x911\x90F\x3\x2\x2\x2"+ - "\x912\x902\x3\x2\x2\x2\x912\x913\x3\x2\x2\x2\x913\x915\x3\x2\x2\x2\x914"+ - "\x916\x5\x128\x95\x2\x915\x914\x3\x2\x2\x2\x915\x916\x3\x2\x2\x2\x916"+ - "\x917\x3\x2\x2\x2\x917\x918\a\xED\x2\x2\x918\xF1\x3\x2\x2\x2\x919\x91A"+ - "\a\x9F\x2\x2\x91A\x91C\x5\x128\x95\x2\x91B\x919\x3\x2\x2\x2\x91B\x91C"+ - "\x3\x2\x2\x2\x91C\x91F\x3\x2\x2\x2\x91D\x91E\t\x11\x2\x2\x91E\x920\x5"+ - "\x128\x95\x2\x91F\x91D\x3\x2\x2\x2\x91F\x920\x3\x2\x2\x2\x920\x923\x3"+ - "\x2\x2\x2\x921\x922\a\xA6\x2\x2\x922\x924\x5\x128\x95\x2\x923\x921\x3"+ - "\x2\x2\x2\x923\x924\x3\x2\x2\x2\x924\x925\x3\x2\x2\x2\x925\x927\x5\xFA"+ - "~\x2\x926\x928\x5\x110\x89\x2\x927\x926\x3\x2\x2\x2\x927\x928\x3\x2\x2"+ - "\x2\x928\x931\x3\x2\x2\x2\x929\x92B\x5\x128\x95\x2\x92A\x929\x3\x2\x2"+ - "\x2\x92A\x92B\x3\x2\x2\x2\x92B\x92C\x3\x2\x2\x2\x92C\x92E\a\xE6\x2\x2"+ - "\x92D\x92F\x5\x128\x95\x2\x92E\x92D\x3\x2\x2\x2\x92E\x92F\x3\x2\x2\x2"+ - "\x92F\x930\x3\x2\x2\x2\x930\x932\a\xED\x2\x2\x931\x92A\x3\x2\x2\x2\x931"+ - "\x932\x3\x2\x2\x2\x932\x937\x3\x2\x2\x2\x933\x935\x5\x128\x95\x2\x934"+ - "\x933\x3\x2\x2\x2\x934\x935\x3\x2\x2\x2\x935\x936\x3\x2\x2\x2\x936\x938"+ - "\x5\xFC\x7F\x2\x937\x934\x3\x2\x2\x2\x937\x938\x3\x2\x2\x2\x938\x93D\x3"+ - "\x2\x2\x2\x939\x93B\x5\x128\x95\x2\x93A\x939\x3\x2\x2\x2\x93A\x93B\x3"+ - "\x2\x2\x2\x93B\x93C\x3\x2\x2\x2\x93C\x93E\x5\xF4{\x2\x93D\x93A\x3\x2\x2"+ - "\x2\x93D\x93E\x3\x2\x2\x2\x93E\xF3\x3\x2\x2\x2\x93F\x941\a\xE2\x2\x2\x940"+ - "\x942\x5\x128\x95\x2\x941\x940\x3\x2\x2\x2\x941\x942\x3\x2\x2\x2\x942"+ - "\x943\x3\x2\x2\x2\x943\x944\x5\xBC_\x2\x944\xF5\x3\x2\x2\x2\x945\x950"+ - "\x5\xF8}\x2\x946\x948\x5\x128\x95\x2\x947\x946\x3\x2\x2\x2\x947\x948\x3"+ - "\x2\x2\x2\x948\x949\x3\x2\x2\x2\x949\x94B\a)\x2\x2\x94A\x94C\x5\x128\x95"+ - "\x2\x94B\x94A\x3\x2\x2\x2\x94B\x94C\x3\x2\x2\x2\x94C\x94D\x3\x2\x2\x2"+ - "\x94D\x94F\x5\xF8}\x2\x94E\x947\x3\x2\x2\x2\x94F\x952\x3\x2\x2\x2\x950"+ - "\x94E\x3\x2\x2\x2\x950\x951\x3\x2\x2\x2\x951\xF7\x3\x2\x2\x2\x952\x950"+ - "\x3\x2\x2\x2\x953\x954\x5\xBC_\x2\x954\x955\x5\x128\x95\x2\x955\x956\a"+ - "\xCF\x2\x2\x956\x957\x5\x128\x95\x2\x957\x959\x3\x2\x2\x2\x958\x953\x3"+ - "\x2\x2\x2\x958\x959\x3\x2\x2\x2\x959\x95A\x3\x2\x2\x2\x95A\x95B\x5\xBC"+ - "_\x2\x95B\xF9\x3\x2\x2\x2\x95C\x95F\a\x101\x2\x2\x95D\x95F\x5\x114\x8B"+ - "\x2\x95E\x95C\x3\x2\x2\x2\x95E\x95D\x3\x2\x2\x2\x95F\xFB\x3\x2\x2\x2\x960"+ - "\x962\a:\x2\x2\x961\x963\x5\x128\x95\x2\x962\x961\x3\x2\x2\x2\x962\x963"+ - "\x3\x2\x2\x2\x963\x966\x3\x2\x2\x2\x964\x965\a\x97\x2\x2\x965\x967\x5"+ - "\x128\x95\x2\x966\x964\x3\x2\x2\x2\x966\x967\x3\x2\x2\x2\x967\x968\x3"+ - "\x2\x2\x2\x968\x96D\x5\x10E\x88\x2\x969\x96B\x5\x128\x95\x2\x96A\x969"+ - "\x3\x2\x2\x2\x96A\x96B\x3\x2\x2\x2\x96B\x96C\x3\x2\x2\x2\x96C\x96E\x5"+ - "\x104\x83\x2\x96D\x96A\x3\x2\x2\x2\x96D\x96E\x3\x2\x2\x2\x96E\xFD\x3\x2"+ - "\x2\x2\x96F\x970\t\x12\x2\x2\x970\xFF\x3\x2\x2\x2\x971\x972\t\xE\x2\x2"+ - "\x972\x101\x3\x2\x2\x2\x973\x978\x5\xFA~\x2\x974\x975\t\xF\x2\x2\x975"+ - "\x977\x5\xFA~\x2\x976\x974\x3\x2\x2\x2\x977\x97A\x3\x2\x2\x2\x978\x976"+ - "\x3\x2\x2\x2\x978\x979\x3\x2\x2\x2\x979\x103\x3\x2\x2\x2\x97A\x978\x3"+ - "\x2\x2\x2\x97B\x97D\a\xE9\x2\x2\x97C\x97E\x5\x128\x95\x2\x97D\x97C\x3"+ - "\x2\x2\x2\x97D\x97E\x3\x2\x2\x2\x97E\x981\x3\x2\x2\x2\x97F\x982\x5\x10C"+ - "\x87\x2\x980\x982\x5\xFA~\x2\x981\x97F\x3\x2\x2\x2\x981\x980\x3\x2\x2"+ - "\x2\x982\x105\x3\x2\x2\x2\x983\x98C\x5\xFA~\x2\x984\x986\x5\x128\x95\x2"+ - "\x985\x984\x3\x2\x2\x2\x985\x986\x3\x2\x2\x2\x986\x987\x3\x2\x2\x2\x987"+ - "\x989\a\xE8\x2\x2\x988\x98A\x5\x128\x95\x2\x989\x988\x3\x2\x2\x2\x989"+ - "\x98A\x3\x2\x2\x2\x98A\x98B\x3\x2\x2\x2\x98B\x98D\x5\xFA~\x2\x98C\x985"+ - "\x3\x2\x2\x2\x98C\x98D\x3\x2\x2\x2\x98D\x107\x3\x2\x2\x2\x98E\x991\x5"+ - "\xFA~\x2\x98F\x991\x5\x10C\x87\x2\x990\x98E\x3\x2\x2\x2\x990\x98F\x3\x2"+ - "\x2\x2\x991\x992\x3\x2\x2\x2\x992\x993\a*\x2\x2\x993\x109\x3\x2\x2\x2"+ - "\x994\x99D\x5\x10C\x87\x2\x995\x99D\a\xFA\x2\x2\x996\x99D\a\xF5\x2\x2"+ - "\x997\x99D\a\xD0\x2\x2\x998\x99D\at\x2\x2\x999\x99D\a\x99\x2\x2\x99A\x99D"+ - "\a\x9A\x2\x2\x99B\x99D\a`\x2\x2\x99C\x994\x3\x2\x2\x2\x99C\x995\x3\x2"+ - "\x2\x2\x99C\x996\x3\x2\x2\x2\x99C\x997\x3\x2\x2\x2\x99C\x998\x3\x2\x2"+ - "\x2\x99C\x999\x3\x2\x2\x2\x99C\x99A\x3\x2\x2\x2\x99C\x99B\x3\x2\x2\x2"+ - "\x99D\x10B\x3\x2\x2\x2\x99E\x99F\t\x13\x2\x2\x99F\x10D\x3\x2\x2\x2\x9A0"+ - "\x9A3\x5\xFE\x80\x2\x9A1\x9A3\x5\x102\x82\x2\x9A2\x9A0\x3\x2\x2\x2\x9A2"+ - "\x9A1\x3\x2\x2\x2\x9A3\x9AC\x3\x2\x2\x2\x9A4\x9A6\x5\x128\x95\x2\x9A5"+ - "\x9A4\x3\x2\x2\x2\x9A5\x9A6\x3\x2\x2\x2\x9A6\x9A7\x3\x2\x2\x2\x9A7\x9A9"+ - "\a\xE6\x2\x2\x9A8\x9AA\x5\x128\x95\x2\x9A9\x9A8\x3\x2\x2\x2\x9A9\x9AA"+ - "\x3\x2\x2\x2\x9AA\x9AB\x3\x2\x2\x2\x9AB\x9AD\a\xED\x2\x2\x9AC\x9A5\x3"+ - "\x2\x2\x2\x9AC\x9AD\x3\x2\x2\x2\x9AD\x10F\x3\x2\x2\x2\x9AE\x9AF\t\x14"+ - "\x2\x2\x9AF\x111\x3\x2\x2\x2\x9B0\x9B1\t\x15\x2\x2\x9B1\x113\x3\x2\x2"+ - "\x2\x9B2\x9B3\t\x16\x2\x2\x9B3\x115\x3\x2\x2\x2\x9B4\x9B6\x5\x128\x95"+ - "\x2\x9B5\x9B4\x3\x2\x2\x2\x9B5\x9B6\x3\x2\x2\x2\x9B6\x9BE\x3\x2\x2\x2"+ - "\x9B7\x9B9\a\xFB\x2\x2\x9B8\x9B7\x3\x2\x2\x2\x9B9\x9BA\x3\x2\x2\x2\x9BA"+ - "\x9B8\x3\x2\x2\x2\x9BA\x9BB\x3\x2\x2\x2\x9BB\x9BF\x3\x2\x2\x2\x9BC\x9BF"+ - "\x5\x11C\x8F\x2\x9BD\x9BF\x5\x11A\x8E\x2\x9BE\x9B8\x3\x2\x2\x2\x9BE\x9BC"+ - "\x3\x2\x2\x2\x9BE\x9BD\x3\x2\x2\x2\x9BF\x9C1\x3\x2\x2\x2\x9C0\x9C2\x5"+ - "\x128\x95\x2\x9C1\x9C0\x3\x2\x2\x2\x9C1\x9C2\x3\x2\x2\x2\x9C2\x9C8\x3"+ - "\x2\x2\x2\x9C3\x9C5\x5\x128\x95\x2\x9C4\x9C3\x3\x2\x2\x2\x9C4\x9C5\x3"+ - "\x2\x2\x2\x9C5\x9C6\x3\x2\x2\x2\x9C6\x9C8\x5\x11E\x90\x2\x9C7\x9B5\x3"+ - "\x2\x2\x2\x9C7\x9C4\x3\x2\x2\x2\x9C8\x117\x3\x2\x2\x2\x9C9\x9D2\x5\x116"+ - "\x8C\x2\x9CA\x9CC\x5\x128\x95\x2\x9CB\x9CA\x3\x2\x2\x2\x9CB\x9CC\x3\x2"+ - "\x2\x2\x9CC\x9CD\x3\x2\x2\x2\x9CD\x9CF\a*\x2\x2\x9CE\x9D0\x5\x128\x95"+ - "\x2\x9CF\x9CE\x3\x2\x2\x2\x9CF\x9D0\x3\x2\x2\x2\x9D0\x9D2\x3\x2\x2\x2"+ - "\x9D1\x9C9\x3\x2\x2\x2\x9D1\x9CB\x3\x2\x2\x2\x9D2\x9D5\x3\x2\x2\x2\x9D3"+ - "\x9D1\x3\x2\x2\x2\x9D3\x9D4\x3\x2\x2\x2\x9D4\x119\x3\x2\x2\x2\x9D5\x9D3"+ - "\x3\x2\x2\x2\x9D6\x9D7\a\xFC\x2\x2\x9D7\x11B\x3\x2\x2\x2\x9D8\x9D9\t\x17"+ - "\x2\x2\x9D9\x11D\x3\x2\x2\x2\x9DA\x9DC\a\xFE\x2\x2\x9DB\x9DD\x5\x120\x91"+ - "\x2\x9DC\x9DB\x3\x2\x2\x2\x9DD\x9DE\x3\x2\x2\x2\x9DE\x9DC\x3\x2\x2\x2"+ - "\x9DE\x9DF\x3\x2\x2\x2\x9DF\x11F\x3\x2\x2\x2\x9E0\x9E1\a/\x2\x2\x9E1\x9E3"+ - "\x5\x122\x92\x2\x9E2\x9E4\x5\x124\x93\x2\x9E3\x9E2\x3\x2\x2\x2\x9E3\x9E4"+ - "\x3\x2\x2\x2\x9E4\x121\x3\x2\x2\x2\x9E5\x9E6\a\x101\x2\x2\x9E6\x123\x3"+ - "\x2\x2\x2\x9E7\x9E8\x5\x128\x95\x2\x9E8\x9EA\x5\x126\x94\x2\x9E9\x9EB"+ - "\x5\x128\x95\x2\x9EA\x9E9\x3\x2\x2\x2\x9EA\x9EB\x3\x2\x2\x2\x9EB\xA25"+ - "\x3\x2\x2\x2\x9EC\x9ED\x5\x128\x95\x2\x9ED\x9F6\x5\x126\x94\x2\x9EE\x9F0"+ - "\x5\x128\x95\x2\x9EF\x9EE\x3\x2\x2\x2\x9EF\x9F0\x3\x2\x2\x2\x9F0\x9F1"+ - "\x3\x2\x2\x2\x9F1\x9F3\a)\x2\x2\x9F2\x9F4\x5\x128\x95\x2\x9F3\x9F2\x3"+ - "\x2\x2\x2\x9F3\x9F4\x3\x2\x2\x2\x9F4\x9F5\x3\x2\x2\x2\x9F5\x9F7\x5\x126"+ - "\x94\x2\x9F6\x9EF\x3\x2\x2\x2\x9F7\x9F8\x3\x2\x2\x2\x9F8\x9F6\x3\x2\x2"+ - "\x2\x9F8\x9F9\x3\x2\x2\x2\x9F9\x9FB\x3\x2\x2\x2\x9FA\x9FC\x5\x128\x95"+ - "\x2\x9FB\x9FA\x3\x2\x2\x2\x9FB\x9FC\x3\x2\x2\x2\x9FC\xA25\x3\x2\x2\x2"+ - "\x9FD\x9FF\x5\x128\x95\x2\x9FE\x9FD\x3\x2\x2\x2\x9FE\x9FF\x3\x2\x2\x2"+ - "\x9FF\xA00\x3\x2\x2\x2\xA00\xA02\a\xE6\x2\x2\xA01\xA03\x5\x128\x95\x2"+ - "\xA02\xA01\x3\x2\x2\x2\xA02\xA03\x3\x2\x2\x2\xA03\xA04\x3\x2\x2\x2\xA04"+ - "\xA06\x5\x126\x94\x2\xA05\xA07\x5\x128\x95\x2\xA06\xA05\x3\x2\x2\x2\xA06"+ - "\xA07\x3\x2\x2\x2\xA07\xA08\x3\x2\x2\x2\xA08\xA0A\a\xED\x2\x2\xA09\xA0B"+ - "\x5\x128\x95\x2\xA0A\xA09\x3\x2\x2\x2\xA0A\xA0B\x3\x2\x2\x2\xA0B\xA25"+ - "\x3\x2\x2\x2\xA0C\xA0E\x5\x128\x95\x2\xA0D\xA0C\x3\x2\x2\x2\xA0D\xA0E"+ - "\x3\x2\x2\x2\xA0E\xA0F\x3\x2\x2\x2\xA0F\xA10\a\xE6\x2\x2\xA10\xA19\x5"+ - "\x126\x94\x2\xA11\xA13\x5\x128\x95\x2\xA12\xA11\x3\x2\x2\x2\xA12\xA13"+ - "\x3\x2\x2\x2\xA13\xA14\x3\x2\x2\x2\xA14\xA16\a)\x2\x2\xA15\xA17\x5\x128"+ - "\x95\x2\xA16\xA15\x3\x2\x2\x2\xA16\xA17\x3\x2\x2\x2\xA17\xA18\x3\x2\x2"+ - "\x2\xA18\xA1A\x5\x126\x94\x2\xA19\xA12\x3\x2\x2\x2\xA1A\xA1B\x3\x2\x2"+ - "\x2\xA1B\xA19\x3\x2\x2\x2\xA1B\xA1C\x3\x2\x2\x2\xA1C\xA1E\x3\x2\x2\x2"+ - "\xA1D\xA1F\x5\x128\x95\x2\xA1E\xA1D\x3\x2\x2\x2\xA1E\xA1F\x3\x2\x2\x2"+ - "\xA1F\xA20\x3\x2\x2\x2\xA20\xA22\a\xED\x2\x2\xA21\xA23\x5\x128\x95\x2"+ - "\xA22\xA21\x3\x2\x2\x2\xA22\xA23\x3\x2\x2\x2\xA23\xA25\x3\x2\x2\x2\xA24"+ - "\x9E7\x3\x2\x2\x2\xA24\x9EC\x3\x2\x2\x2\xA24\x9FE\x3\x2\x2\x2\xA24\xA0D"+ - "\x3\x2\x2\x2\xA25\x125\x3\x2\x2\x2\xA26\xA29\a\x101\x2\x2\xA27\xA29\x5"+ - "\x10A\x86\x2\xA28\xA26\x3\x2\x2\x2\xA28\xA27\x3\x2\x2\x2\xA29\x127\x3"+ - "\x2\x2\x2\xA2A\xA2C\t\x18\x2\x2\xA2B\xA2A\x3\x2\x2\x2\xA2C\xA2D\x3\x2"+ - "\x2\x2\xA2D\xA2B\x3\x2\x2\x2\xA2D\xA2E\x3\x2\x2\x2\xA2E\x129\x3\x2\x2"+ - "\x2\x1BB\x12E\x134\x137\x13B\x13F\x143\x147\x14D\x150\x15A\x15C\x162\x16A"+ - "\x171\x177\x180\x188\x197\x1A1\x1A9\x1B3\x1B9\x1BD\x1C1\x1C5\x1CA\x1D3"+ - "\x21A\x220\x224\x227\x237\x23B\x240\x243\x248\x24E\x252\x257\x25C\x261"+ - "\x264\x268\x26E\x272\x279\x27F\x283\x286\x28B\x296\x299\x29C\x2A1\x2A7"+ - "\x2AB\x2B0\x2B7\x2BD\x2C1\x2C9\x2CD\x2D1\x2D5\x2D9\x2DE\x2E9\x2F0\x2F8"+ - "\x2FF\x308\x30F\x313\x316\x31E\x322\x327\x331\x337\x341\x345\x34F\x357"+ - "\x35D\x363\x368\x36B\x36F\x37B\x37F\x385\x387\x38C\x390\x394\x398\x39B"+ - "\x39E\x3A1\x3A4\x3A8\x3B0\x3B4\x3B7\x3BA\x3BE\x3D6\x3DC\x3E0\x3E4\x3ED"+ - "\x3F8\x3FD\x407\x40B\x410\x418\x41C\x420\x428\x42C\x438\x43C\x444\x446"+ - "\x44C\x450\x456\x45A\x45E\x478\x482\x486\x48B\x496\x49A\x49F\x4AE\x4B3"+ - "\x4BC\x4C0\x4C4\x4C8\x4CC\x4CF\x4D3\x4D7\x4DA\x4DE\x4E1\x4E5\x4E7\x4EC"+ - "\x4F0\x4F4\x4F8\x4FA\x500\x504\x507\x50C\x510\x516\x519\x51C\x521\x525"+ - "\x52C\x530\x536\x539\x53D\x544\x548\x54E\x551\x555\x55D\x561\x564\x567"+ - "\x56B\x573\x577\x57B\x57D\x580\x586\x58C\x590\x594\x599\x59E\x5A2\x5A6"+ - "\x5AC\x5B4\x5B6\x5C2\x5C6\x5CE\x5D2\x5DA\x5DE\x5E2\x5E6\x5EA\x5EE\x5F6"+ - "\x5FA\x607\x60E\x612\x61D\x624\x629\x62D\x632\x635\x63B\x63F\x642\x648"+ - "\x64C\x654\x658\x661\x665\x669\x66D\x670\x674\x67A\x67E\x685\x68E\x695"+ - "\x699\x69C\x69F\x6A2\x6A7\x6B3\x6B7\x6BF\x6C1\x6C6\x6CB\x6D0\x6D4\x6DA"+ - "\x6DF\x6E6\x6EA\x6F0\x6F4\x6F8\x6FD\x701\x706\x70A\x70F\x713\x718\x71C"+ - "\x721\x725\x72A\x72E\x733\x737\x73C\x740\x745\x749\x74E\x752\x757\x75B"+ - "\x75E\x760\x76B\x770\x775\x77B\x77F\x784\x789\x78D\x791\x793\x797\x799"+ - "\x79C\x7A1\x7A8\x7B0\x7B4\x7BD\x7C6\x7CC\x7D0\x7D3\x7D6\x7DC\x7E2\x7E5"+ - "\x7E9\x7ED\x7F1\x7F4\x7FC\x802\x807\x80A\x80E\x812\x816\x819\x821\x826"+ - "\x829\x82C\x830\x834\x839\x83C\x83F\x842\x84A\x851\x854\x85C\x863\x867"+ - "\x86A\x86D\x870\x878\x87D\x880\x883\x887\x88B\x88D\x891\x894\x897\x89F"+ - "\x8A4\x8A8\x8AC\x8AF\x8B2\x8B5\x8BD\x8C2\x8C6\x8C9\x8CE\x8D1\x8D5\x8D9"+ - "\x8DE\x8E2\x8E5\x8E9\x8ED\x8F1\x8F4\x8FA\x8FE\x902\x906\x90A\x90F\x912"+ - "\x915\x91B\x91F\x923\x927\x92A\x92E\x931\x934\x937\x93A\x93D\x941\x947"+ - "\x94B\x950\x958\x95E\x962\x966\x96A\x96D\x978\x97D\x981\x985\x989\x98C"+ - "\x990\x99C\x9A2\x9A5\x9A9\x9AC\x9B5\x9BA\x9BE\x9C1\x9C4\x9C7\x9CB\x9CF"+ - "\x9D1\x9D3\x9DE\x9E3\x9EA\x9EF\x9F3\x9F8\x9FB\x9FE\xA02\xA06\xA0A\xA0D"+ - "\xA12\xA16\xA1B\xA1E\xA22\xA24\xA28\xA2D"; + "\x4\x88\t\x88\x4\x89\t\x89\x4\x8A\t\x8A\x4\x8B\t\x8B\x3\x2\x3\x2\x3\x3"+ + "\x5\x3\x11A\n\x3\x3\x3\x3\x3\x3\x3\x3\x3\x5\x3\x120\n\x3\x3\x3\x5\x3\x123"+ + "\n\x3\x3\x3\x3\x3\x5\x3\x127\n\x3\x3\x3\x3\x3\x5\x3\x12B\n\x3\x3\x3\x3"+ + "\x3\x5\x3\x12F\n\x3\x3\x3\x3\x3\x3\x4\x3\x4\x3\x4\x3\x4\x5\x4\x137\n\x4"+ + "\x3\x4\x5\x4\x13A\n\x4\x3\x4\x3\x4\x3\x5\x3\x5\x3\x5\x3\x5\x3\x5\x3\x5"+ + "\x5\x5\x144\n\x5\x5\x5\x146\n\x5\x3\x5\x3\x5\x6\x5\x14A\n\x5\r\x5\xE\x5"+ + "\x14B\x3\x5\x3\x5\x3\x6\x3\x6\a\x6\x152\n\x6\f\x6\xE\x6\x155\v\x6\x3\x6"+ + "\x3\x6\a\x6\x159\n\x6\f\x6\xE\x6\x15C\v\x6\x3\x6\x3\x6\x3\x6\x5\x6\x161"+ + "\n\x6\x3\x6\x3\x6\x3\a\x3\a\x3\a\x6\a\x168\n\a\r\a\xE\a\x169\x3\b\x3\b"+ + "\x3\b\x3\b\a\b\x170\n\b\f\b\xE\b\x173\v\b\x3\b\x3\b\x3\t\x3\t\x3\t\x3"+ + "\t\x3\t\x3\t\x3\t\x3\t\x3\t\x3\t\x5\t\x181\n\t\x3\n\x3\n\x3\n\x3\n\x3"+ + "\n\x3\n\x3\n\x3\n\x5\n\x18B\n\n\x3\v\x3\v\x3\v\x3\v\a\v\x191\n\v\f\v\xE"+ + "\v\x194\v\v\x3\v\x3\v\x3\f\x3\f\x3\f\x3\f\x3\f\x5\f\x19D\n\f\x3\r\x3\r"+ + "\x3\r\x3\r\x5\r\x1A3\n\r\x3\r\x3\r\x5\r\x1A7\n\r\x3\r\x3\r\x5\r\x1AB\n"+ + "\r\x3\r\x3\r\x5\r\x1AF\n\r\x3\r\a\r\x1B2\n\r\f\r\xE\r\x1B5\v\r\x3\xE\x3"+ + "\xE\x3\xF\x3\xF\x3\x10\x3\x10\x3\x10\x3\x10\a\x10\x1BF\n\x10\f\x10\xE"+ + "\x10\x1C2\v\x10\x3\x10\x3\x10\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11"+ + "\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11"+ + "\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11"+ + "\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11"+ + "\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11"+ + "\x5\x11\x1F4\n\x11\x3\x12\x3\x12\x3\x12\x3\x12\x5\x12\x1FA\n\x12\x3\x12"+ + "\x3\x12\x5\x12\x1FE\n\x12\x3\x12\a\x12\x201\n\x12\f\x12\xE\x12\x204\v"+ + "\x12\x5\x12\x206\n\x12\x3\x13\x3\x13\x3\x13\x5\x13\x20B\n\x13\x3\x13\x3"+ + "\x13\x3\x13\x3\x13\x5\x13\x211\n\x13\x3\x13\x3\x13\x5\x13\x215\n\x13\x3"+ + "\x13\a\x13\x218\n\x13\f\x13\xE\x13\x21B\v\x13\x3\x14\x3\x14\x5\x14\x21F"+ + "\n\x14\x3\x14\x3\x14\x3\x14\x5\x14\x224\n\x14\x3\x14\x5\x14\x227\n\x14"+ + "\x3\x14\x3\x14\x5\x14\x22B\n\x14\x3\x14\x3\x14\x3\x15\x3\x15\x3\x15\x5"+ + "\x15\x232\n\x15\x3\x15\x3\x15\x3\x15\x3\x15\x5\x15\x238\n\x15\x3\x15\x3"+ + "\x15\x5\x15\x23C\n\x15\x3\x15\x5\x15\x23F\n\x15\x3\x15\x3\x15\x3\x15\x5"+ + "\x15\x244\n\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15"+ + "\x3\x15\x5\x15\x24F\n\x15\x3\x15\x5\x15\x252\n\x15\x3\x15\x5\x15\x255"+ + "\n\x15\x3\x15\x3\x15\x3\x15\x5\x15\x25A\n\x15\x3\x16\x3\x16\x3\x16\x3"+ + "\x16\x5\x16\x260\n\x16\x3\x16\x3\x16\x5\x16\x264\n\x16\x3\x16\a\x16\x267"+ + "\n\x16\f\x16\xE\x16\x26A\v\x16\x3\x17\x3\x17\x3\x17\x5\x17\x26F\n\x17"+ + "\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x5\x17"+ + "\x27A\n\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x5\x17\x281\n\x17\x3\x17"+ + "\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x5\x17\x289\n\x17\x3\x18\x3\x18\x3"+ + "\x18\x5\x18\x28E\n\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\a\x18\x295\n"+ + "\x18\f\x18\xE\x18\x298\v\x18\x3\x18\x3\x18\x3\x19\x3\x19\x5\x19\x29E\n"+ + "\x19\x3\x19\x3\x19\x5\x19\x2A2\n\x19\x3\x19\x5\x19\x2A5\n\x19\x3\x19\x3"+ + "\x19\x3\x1A\x3\x1A\x3\x1A\x3\x1A\x5\x1A\x2AD\n\x1A\x3\x1A\x3\x1A\x5\x1A"+ + "\x2B1\n\x1A\x3\x1A\a\x1A\x2B4\n\x1A\f\x1A\xE\x1A\x2B7\v\x1A\x3\x1B\x3"+ + "\x1B\x3\x1B\x3\x1B\x3\x1C\x3\x1C\x3\x1C\x5\x1C\x2C0\n\x1C\x3\x1C\x3\x1C"+ + "\x3\x1C\x3\x1C\x5\x1C\x2C6\n\x1C\x3\x1C\x3\x1C\x3\x1D\x3\x1D\x3\x1E\x3"+ + "\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x5"+ + "\x1E\x2D7\n\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x5\x1E\x2DD\n\x1E\x3\x1F\x3"+ + "\x1F\x3\x1F\x3\x1F\x5\x1F\x2E3\n\x1F\x3\x1F\x3\x1F\x5\x1F\x2E7\n\x1F\x3"+ + "\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x5"+ + "\x1F\x2F3\n\x1F\x3\x1F\x3\x1F\x5\x1F\x2F7\n\x1F\x3\x1F\x3\x1F\x3\x1F\x3"+ + "\x1F\x5\x1F\x2FD\n\x1F\x3 \x3 \x3 \x5 \x302\n \x3 \x3 \x5 \x306\n \x3"+ + " \x3 \x5 \x30A\n \x3 \x3 \x5 \x30E\n \x3 \x5 \x311\n \x3 \x5 \x314\n "+ + "\x3 \x5 \x317\n \x3 \x5 \x31A\n \x3 \x3 \x5 \x31E\n \x3 \x3 \x3!\x3!\x3"+ + "\"\x3\"\x3\"\x3\"\x5\"\x328\n\"\x3\"\x3\"\x5\"\x32C\n\"\x3\"\x5\"\x32F"+ + "\n\"\x3\"\x5\"\x332\n\"\x3\"\x3\"\x5\"\x336\n\"\x3\"\x3\"\x3#\x3#\x3#"+ + "\x3#\x3$\x3$\x3$\x3$\x3%\x3%\x3%\x3%\x3%\x3%\x3%\x3%\x3%\x3%\x3%\x3%\x5"+ + "%\x34E\n%\x3%\x3%\a%\x352\n%\f%\xE%\x355\v%\x3%\x5%\x358\n%\x3%\x3%\x5"+ + "%\x35C\n%\x3&\x3&\x3&\x3&\x3&\x3&\x3&\x5&\x365\n&\x3\'\x3\'\x3(\x3(\x3"+ + "(\x3(\x3(\x3(\x3(\x5(\x370\n(\x3)\x3)\x3)\x5)\x375\n)\x3*\x3*\x3*\x3*"+ + "\x3+\x3+\x3+\x3+\x5+\x37F\n+\x3+\x3+\x5+\x383\n+\x3+\x6+\x386\n+\r+\xE"+ + "+\x387\x3,\x3,\x5,\x38C\n,\x3,\x3,\x5,\x390\n,\x3,\x3,\x5,\x394\n,\x3"+ + ",\x3,\x3-\x3-\x3-\x3-\x5-\x39C\n-\x3-\x3-\x5-\x3A0\n-\x3-\x3-\x3.\x3."+ + "\x3.\x3.\x5.\x3A8\n.\x3.\x3.\x5.\x3AC\n.\x3.\x3.\x3.\x3.\x3.\x3.\x5.\x3B4"+ + "\n.\x5.\x3B6\n.\x3/\x3/\x3/\x3/\x5/\x3BC\n/\x3/\x3/\x5/\x3C0\n/\x3/\x3"+ + "/\x3\x30\x3\x30\x5\x30\x3C6\n\x30\x3\x30\x3\x30\x5\x30\x3CA\n\x30\x3\x30"+ + "\x3\x30\x5\x30\x3CE\n\x30\x3\x30\x3\x30\x3\x31\x3\x31\x3\x31\x3\x31\x3"+ + "\x31\x3\x31\x3\x31\x3\x31\x3\x31\x3\x31\x5\x31\x3DC\n\x31\x3\x32\x3\x32"+ + "\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x5\x32\x3E6\n\x32\x3\x32\x3"+ + "\x32\x5\x32\x3EA\n\x32\x3\x32\a\x32\x3ED\n\x32\f\x32\xE\x32\x3F0\v\x32"+ + "\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x5\x33\x3FA\n"+ + "\x33\x3\x33\x3\x33\x5\x33\x3FE\n\x33\x3\x33\a\x33\x401\n\x33\f\x33\xE"+ + "\x33\x404\v\x33\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34"+ + "\x3\x34\x3\x34\x3\x34\x3\x34\x5\x34\x412\n\x34\x3\x34\x3\x34\x3\x34\x5"+ + "\x34\x417\n\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x5\x34"+ + "\x420\n\x34\x3\x34\x3\x34\x5\x34\x424\n\x34\x3\x34\x3\x34\x5\x34\x428"+ + "\n\x34\x3\x35\x3\x35\x5\x35\x42C\n\x35\x3\x35\x3\x35\x5\x35\x430\n\x35"+ + "\x3\x35\x5\x35\x433\n\x35\a\x35\x435\n\x35\f\x35\xE\x35\x438\v\x35\x3"+ + "\x35\x5\x35\x43B\n\x35\x3\x35\x5\x35\x43E\n\x35\x3\x35\x3\x35\x5\x35\x442"+ + "\n\x35\x3\x35\x5\x35\x445\n\x35\x6\x35\x447\n\x35\r\x35\xE\x35\x448\x5"+ + "\x35\x44B\n\x35\x3\x36\x3\x36\x3\x36\x5\x36\x450\n\x36\x3\x36\x3\x36\x5"+ + "\x36\x454\n\x36\x3\x36\x3\x36\x5\x36\x458\n\x36\x3\x36\x3\x36\x5\x36\x45C"+ + "\n\x36\x5\x36\x45E\n\x36\x3\x37\x3\x37\x3\x37\x3\x37\x5\x37\x464\n\x37"+ + "\x3\x37\x3\x37\x5\x37\x468\n\x37\x3\x37\x5\x37\x46B\n\x37\x3\x38\x3\x38"+ + "\x3\x38\x5\x38\x470\n\x38\x3\x38\x3\x38\x5\x38\x474\n\x38\x3\x38\x3\x38"+ + "\x3\x38\x3\x38\x5\x38\x47A\n\x38\x3\x38\x5\x38\x47D\n\x38\x3\x38\x5\x38"+ + "\x480\n\x38\x3\x38\x3\x38\x3\x38\x5\x38\x485\n\x38\x3\x38\x3\x38\x5\x38"+ + "\x489\n\x38\x3\x38\x3\x38\x3\x39\x3\x39\x3\x39\x5\x39\x490\n\x39\x3\x39"+ + "\x3\x39\x5\x39\x494\n\x39\x3\x39\x3\x39\x3\x39\x3\x39\x5\x39\x49A\n\x39"+ + "\x3\x39\x5\x39\x49D\n\x39\x3\x39\x3\x39\x5\x39\x4A1\n\x39\x3\x39\x3\x39"+ + "\x3:\x3:\x3:\x5:\x4A8\n:\x3:\x3:\x5:\x4AC\n:\x3:\x3:\x3:\x3:\x5:\x4B2"+ + "\n:\x3:\x5:\x4B5\n:\x3:\x3:\x5:\x4B9\n:\x3:\x3:\x3;\x3;\x3;\x3;\x5;\x4C1"+ + "\n;\x3;\x3;\x5;\x4C5\n;\x3;\x5;\x4C8\n;\x3;\x5;\x4CB\n;\x3;\x3;\x5;\x4CF"+ + "\n;\x3;\x3;\x3<\x3<\x3<\x3<\x5<\x4D7\n<\x3<\x3<\x5<\x4DB\n<\x3<\x3<\x5"+ + "<\x4DF\n<\x5<\x4E1\n<\x3<\x5<\x4E4\n<\x3=\x3=\x3=\x3=\x5=\x4EA\n=\x3="+ + "\x3=\x5=\x4EE\n=\x3=\x3=\x5=\x4F2\n=\x3=\a=\x4F5\n=\f=\xE=\x4F8\v=\x3"+ + ">\x3>\x5>\x4FC\n>\x3>\x3>\x5>\x500\n>\x3>\x3>\x5>\x504\n>\x3>\x3>\x3>"+ + "\x3>\x5>\x50A\n>\x3?\x3?\x3@\x3@\x3@\x3@\x5@\x512\n@\x5@\x514\n@\x3\x41"+ + "\x3\x41\x3\x42\x3\x42\x3\x42\x3\x42\x5\x42\x51C\n\x42\x3\x42\x3\x42\x5"+ + "\x42\x520\n\x42\x3\x42\x3\x42\x3\x43\x3\x43\x3\x44\x3\x44\x3\x44\x3\x44"+ + "\x5\x44\x52A\n\x44\x3\x44\x3\x44\x5\x44\x52E\n\x44\x3\x44\x3\x44\x3\x45"+ + "\x3\x45\x3\x45\x3\x45\x3\x45\x3\x45\x3\x45\a\x45\x539\n\x45\f\x45\xE\x45"+ + "\x53C\v\x45\x3\x45\x3\x45\x3\x46\x3\x46\x5\x46\x542\n\x46\x3\x46\x3\x46"+ + "\x5\x46\x546\n\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3"+ + "\x46\x3\x46\x5\x46\x551\n\x46\x3G\x3G\x3G\x3G\x3G\x5G\x558\nG\x3H\x3H"+ + "\x3H\x5H\x55D\nH\x3H\x3H\x5H\x561\nH\x3H\aH\x564\nH\fH\xEH\x567\vH\x5"+ + "H\x569\nH\x3I\x3I\x3I\x3I\x5I\x56F\nI\x3I\x3I\x5I\x573\nI\x3I\x3I\x3J"+ + "\x3J\x3J\x5J\x57A\nJ\x3J\x3J\x5J\x57E\nJ\x3J\x3J\x5J\x582\nJ\x3J\x3J\x5"+ + "J\x586\nJ\x3J\x5J\x589\nJ\x3J\x3J\x5J\x58D\nJ\x3J\x3J\x3K\x3K\x3L\x3L"+ + "\x3L\x5L\x596\nL\x3L\x3L\x3L\x3L\x3L\aL\x59D\nL\fL\xEL\x5A0\vL\x3L\x3"+ + "L\x3M\x3M\x5M\x5A6\nM\x3M\x3M\x5M\x5AA\nM\x3M\x5M\x5AD\nM\x3M\x5M\x5B0"+ + "\nM\x3M\x5M\x5B3\nM\x3M\x3M\x3M\x5M\x5B8\nM\x3M\x3M\x3N\x3N\x3N\x3N\x5"+ + "N\x5C0\nN\x3N\x3N\x5N\x5C4\nN\x3N\x3N\x3N\x3N\x3N\x3N\x5N\x5CC\nN\x5N"+ + "\x5CE\nN\x3O\x3O\x3O\x5O\x5D3\nO\x3O\x3O\x3O\x5O\x5D8\nO\x3O\x3O\x3O\x5"+ + "O\x5DD\nO\x3O\x3O\x5O\x5E1\nO\x3O\x3O\x3O\x3O\x5O\x5E7\nO\x3O\x3O\x3O"+ + "\x5O\x5EC\nO\x3O\x3O\x3O\x3O\x3O\x5O\x5F3\nO\x3O\x3O\x5O\x5F7\nO\x3O\x3"+ + "O\x3O\x3O\x5O\x5FD\nO\x3O\x3O\x5O\x601\nO\x3O\x3O\x5O\x605\nO\x3O\x3O"+ + "\x3O\x5O\x60A\nO\x3O\x3O\x5O\x60E\nO\x3O\x3O\x3O\x5O\x613\nO\x3O\x3O\x5"+ + "O\x617\nO\x3O\x3O\x3O\x5O\x61C\nO\x3O\x3O\x5O\x620\nO\x3O\x3O\x3O\x5O"+ + "\x625\nO\x3O\x3O\x5O\x629\nO\x3O\x3O\x3O\x5O\x62E\nO\x3O\x3O\x5O\x632"+ + "\nO\x3O\x3O\x3O\x5O\x637\nO\x3O\x3O\x5O\x63B\nO\x3O\x3O\x3O\x5O\x640\n"+ + "O\x3O\x3O\x5O\x644\nO\x3O\x3O\x3O\x5O\x649\nO\x3O\x3O\x5O\x64D\nO\x3O"+ + "\x3O\x3O\x5O\x652\nO\x3O\x3O\x5O\x656\nO\x3O\x3O\x3O\x5O\x65B\nO\x3O\x3"+ + "O\x5O\x65F\nO\x3O\x3O\x3O\x5O\x664\nO\x3O\x3O\x5O\x668\nO\x3O\aO\x66B"+ + "\nO\fO\xEO\x66E\vO\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x5P\x678\nP\x3Q\x3"+ + "Q\x3Q\x5Q\x67D\nQ\x3Q\x3Q\x3Q\x5Q\x682\nQ\x3Q\x3Q\x3R\x3R\x5R\x688\nR"+ + "\x3R\x3R\x5R\x68C\nR\x3R\aR\x68F\nR\fR\xER\x692\vR\x3S\x3S\x5S\x696\n"+ + "S\x3S\x3S\x5S\x69A\nS\x3S\x3S\x5S\x69E\nS\x5S\x6A0\nS\x3S\x3S\x5S\x6A4"+ + "\nS\x5S\x6A6\nS\x3S\x5S\x6A9\nS\x3S\x3S\x3S\x5S\x6AE\nS\x3T\x3T\x3T\x3"+ + "T\x3T\x5T\x6B5\nT\x3T\x3T\x3U\x3U\x3U\x3U\x5U\x6BD\nU\x3U\x3U\x5U\x6C1"+ + "\nU\x3U\x3U\x3V\x3V\x3V\x3V\x3V\x5V\x6CA\nV\x3V\x3V\x3W\x3W\x3X\x3X\x3"+ + "X\x3X\x5X\x6D4\nX\x3X\x3X\x5X\x6D8\nX\x3X\x5X\x6DB\nX\x3Y\x5Y\x6DE\nY"+ + "\x3Y\x3Y\x3Z\x3Z\x3Z\x3Z\x3[\x5[\x6E7\n[\x3[\x3[\x3[\x5[\x6EC\n[\x3[\x5"+ + "[\x6EF\n[\x3[\x3[\x5[\x6F3\n[\x3[\x3[\x5[\x6F7\n[\x3[\x3[\x5[\x6FB\n["+ + "\x3[\x5[\x6FE\n[\x3[\x3[\x3[\x3[\a[\x704\n[\f[\xE[\x707\v[\x3[\x3[\x5"+ + "[\x70B\n[\x3[\x5[\x70E\n[\x3[\x3[\x5[\x712\n[\x3[\x3[\x5[\x716\n[\x3["+ + "\x3[\x5[\x71A\n[\x3[\x5[\x71D\n[\x3[\x3[\x3[\x3[\a[\x723\n[\f[\xE[\x726"+ + "\v[\x5[\x728\n[\x3\\\x3\\\x5\\\x72C\n\\\x3]\x5]\x72F\n]\x3]\x5]\x732\n"+ + "]\x3]\x3]\x5]\x736\n]\x3]\x3]\x5]\x73A\n]\x3]\x3]\x3]\x5]\x73F\n]\x3]"+ + "\x5]\x742\n]\x3]\x5]\x745\n]\x3]\x5]\x748\n]\x3]\x3]\x3]\x3]\a]\x74E\n"+ + "]\f]\xE]\x751\v]\x3^\x3^\x3^\x3^\x5^\x757\n^\x3^\x5^\x75A\n^\x3^\x3^\x3"+ + "^\x3^\a^\x760\n^\f^\xE^\x763\v^\x3_\x3_\x3_\x3_\x5_\x769\n_\x3`\x3`\x5"+ + "`\x76D\n`\x3`\x5`\x770\n`\x3`\x5`\x773\n`\x3`\x5`\x776\n`\x3`\x3`\x3`"+ + "\x3`\a`\x77C\n`\f`\xE`\x77F\v`\x3\x61\x3\x61\x5\x61\x783\n\x61\x3\x61"+ + "\x5\x61\x786\n\x61\x3\x61\x5\x61\x789\n\x61\x3\x61\x3\x61\x5\x61\x78D"+ + "\n\x61\x3\x61\x3\x61\x5\x61\x791\n\x61\x5\x61\x793\n\x61\x3\x61\x3\x61"+ + "\x5\x61\x797\n\x61\x3\x61\x5\x61\x79A\n\x61\x3\x61\x5\x61\x79D\n\x61\x3"+ + "\x61\x3\x61\x3\x61\x3\x61\a\x61\x7A3\n\x61\f\x61\xE\x61\x7A6\v\x61\x3"+ + "\x62\x3\x62\x5\x62\x7AA\n\x62\x3\x62\x5\x62\x7AD\n\x62\x3\x62\x5\x62\x7B0"+ + "\n\x62\x3\x62\x5\x62\x7B3\n\x62\x3\x62\x3\x62\x3\x62\x3\x62\a\x62\x7B9"+ + "\n\x62\f\x62\xE\x62\x7BC\v\x62\x3\x63\x3\x63\x5\x63\x7C0\n\x63\x3\x63"+ + "\x5\x63\x7C3\n\x63\x3\x63\x5\x63\x7C6\n\x63\x3\x63\x3\x63\x5\x63\x7CA"+ + "\n\x63\x3\x63\x3\x63\x5\x63\x7CE\n\x63\x5\x63\x7D0\n\x63\x3\x63\x3\x63"+ + "\x5\x63\x7D4\n\x63\x3\x63\x5\x63\x7D7\n\x63\x3\x63\x5\x63\x7DA\n\x63\x3"+ + "\x63\x3\x63\x3\x63\x3\x63\a\x63\x7E0\n\x63\f\x63\xE\x63\x7E3\v\x63\x3"+ + "\x64\x3\x64\x5\x64\x7E7\n\x64\x3\x64\x3\x64\x5\x64\x7EB\n\x64\x6\x64\x7ED"+ + "\n\x64\r\x64\xE\x64\x7EE\x3\x64\x5\x64\x7F2\n\x64\x3\x64\x5\x64\x7F5\n"+ + "\x64\x3\x64\x5\x64\x7F8\n\x64\x3\x64\x3\x64\x3\x64\x3\x64\a\x64\x7FE\n"+ + "\x64\f\x64\xE\x64\x801\v\x64\x3\x65\x3\x65\x5\x65\x805\n\x65\x3\x65\x3"+ + "\x65\x5\x65\x809\n\x65\x3\x66\x5\x66\x80C\n\x66\x3\x66\x3\x66\x3g\x5g"+ + "\x811\ng\x3g\x5g\x814\ng\x3g\x3g\x5g\x818\ng\ag\x81A\ng\fg\xEg\x81D\v"+ + "g\x3g\x3g\x5g\x821\ng\x3g\x3g\x5g\x825\ng\x3g\x5g\x828\ng\ag\x82A\ng\f"+ + "g\xEg\x82D\vg\x3h\x5h\x830\nh\x3h\x3h\x5h\x834\nh\x3h\x5h\x837\nh\x3h"+ + "\x3h\x3i\x3i\x5i\x83D\ni\x3i\x3i\x5i\x841\ni\x3j\x3j\x5j\x845\nj\x3j\x3"+ + "j\x5j\x849\nj\x3j\x3j\x5j\x84D\nj\x3j\aj\x850\nj\fj\xEj\x853\vj\x5j\x855"+ + "\nj\x3j\x5j\x858\nj\x3j\x3j\x3k\x3k\x5k\x85E\nk\x3k\x3k\x5k\x862\nk\x3"+ + "k\x3k\x5k\x866\nk\x3k\x3k\x5k\x86A\nk\x3k\x5k\x86D\nk\x3k\x3k\x5k\x871"+ + "\nk\x3k\x5k\x874\nk\x3k\x5k\x877\nk\x3k\x5k\x87A\nk\x3k\x5k\x87D\nk\x3"+ + "k\x5k\x880\nk\x3l\x3l\x5l\x884\nl\x3l\x3l\x3m\x3m\x5m\x88A\nm\x3m\x3m"+ + "\x5m\x88E\nm\x3m\am\x891\nm\fm\xEm\x894\vm\x3n\x3n\x3n\x3n\x3n\x5n\x89B"+ + "\nn\x3n\x3n\x3o\x3o\x3o\x5o\x8A2\no\x3p\x3p\x5p\x8A6\np\x3q\x3q\x5q\x8AA"+ + "\nq\x3q\x3q\x5q\x8AE\nq\x3q\x3q\x5q\x8B2\nq\x3q\x5q\x8B5\nq\x3r\x3r\x3"+ + "s\x3s\x3t\x3t\x3t\at\x8BE\nt\ft\xEt\x8C1\vt\x3u\x3u\x5u\x8C5\nu\x3u\x3"+ + "u\x5u\x8C9\nu\x3v\x3v\x5v\x8CD\nv\x3v\x3v\x5v\x8D1\nv\x3v\x5v\x8D4\nv"+ + "\x3w\x3w\x5w\x8D8\nw\x3w\x3w\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x5x\x8E4"+ + "\nx\x3y\x3y\x3z\x3z\x5z\x8EA\nz\x3z\x5z\x8ED\nz\x3z\x3z\x5z\x8F1\nz\x3"+ + "z\x5z\x8F4\nz\x3{\x3{\x3|\x3|\x3}\x3}\x3~\x3~\x3\x7F\x3\x7F\x3\x80\x5"+ + "\x80\x901\n\x80\x3\x80\x5\x80\x904\n\x80\x3\x81\x3\x81\x3\x81\x5\x81\x909"+ + "\n\x81\x3\x81\x5\x81\x90C\n\x81\x3\x81\x3\x81\x5\x81\x910\n\x81\x5\x81"+ + "\x912\n\x81\a\x81\x914\n\x81\f\x81\xE\x81\x917\v\x81\x3\x81\x3\x81\x3"+ + "\x81\x5\x81\x91C\n\x81\x3\x82\x3\x82\x3\x82\x5\x82\x921\n\x82\x3\x83\x3"+ + "\x83\x5\x83\x925\n\x83\x3\x83\x3\x83\x3\x84\x3\x84\x3\x84\x3\x85\x3\x85"+ + "\a\x85\x92E\n\x85\f\x85\xE\x85\x931\v\x85\x3\x86\x3\x86\x3\x86\x3\x86"+ + "\x5\x86\x937\n\x86\x6\x86\x939\n\x86\r\x86\xE\x86\x93A\x3\x87\x3\x87\x5"+ + "\x87\x93F\n\x87\x3\x88\x3\x88\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89"+ + "\x5\x89\x949\n\x89\x3\x89\x3\x89\x5\x89\x94D\n\x89\x3\x89\x6\x89\x950"+ + "\n\x89\r\x89\xE\x89\x951\x3\x89\x5\x89\x955\n\x89\x3\x89\x3\x89\x5\x89"+ + "\x959\n\x89\x3\x89\x3\x89\x5\x89\x95D\n\x89\x3\x89\x3\x89\x3\x89\x5\x89"+ + "\x962\n\x89\x3\x89\x3\x89\x3\x89\x5\x89\x967\n\x89\x3\x89\x3\x89\x5\x89"+ + "\x96B\n\x89\x3\x89\x6\x89\x96E\n\x89\r\x89\xE\x89\x96F\x3\x89\x5\x89\x973"+ + "\n\x89\x3\x89\x3\x89\x5\x89\x977\n\x89\x3\x8A\x3\x8A\x3\x8B\x6\x8B\x97C"+ + "\n\x8B\r\x8B\xE\x8B\x97D\x3\x8B\x2\x2\x3\x9C\x8C\x2\x2\x4\x2\x6\x2\b\x2"+ + "\n\x2\f\x2\xE\x2\x10\x2\x12\x2\x14\x2\x16\x2\x18\x2\x1A\x2\x1C\x2\x1E"+ + "\x2 \x2\"\x2$\x2&\x2(\x2*\x2,\x2.\x2\x30\x2\x32\x2\x34\x2\x36\x2\x38\x2"+ + ":\x2<\x2>\x2@\x2\x42\x2\x44\x2\x46\x2H\x2J\x2L\x2N\x2P\x2R\x2T\x2V\x2"+ + "X\x2Z\x2\\\x2^\x2`\x2\x62\x2\x64\x2\x66\x2h\x2j\x2l\x2n\x2p\x2r\x2t\x2"+ + "v\x2x\x2z\x2|\x2~\x2\x80\x2\x82\x2\x84\x2\x86\x2\x88\x2\x8A\x2\x8C\x2"+ + "\x8E\x2\x90\x2\x92\x2\x94\x2\x96\x2\x98\x2\x9A\x2\x9C\x2\x9E\x2\xA0\x2"+ + "\xA2\x2\xA4\x2\xA6\x2\xA8\x2\xAA\x2\xAC\x2\xAE\x2\xB0\x2\xB2\x2\xB4\x2"+ + "\xB6\x2\xB8\x2\xBA\x2\xBC\x2\xBE\x2\xC0\x2\xC2\x2\xC4\x2\xC6\x2\xC8\x2"+ + "\xCA\x2\xCC\x2\xCE\x2\xD0\x2\xD2\x2\xD4\x2\xD6\x2\xD8\x2\xDA\x2\xDC\x2"+ + "\xDE\x2\xE0\x2\xE2\x2\xE4\x2\xE6\x2\xE8\x2\xEA\x2\xEC\x2\xEE\x2\xF0\x2"+ + "\xF2\x2\xF4\x2\xF6\x2\xF8\x2\xFA\x2\xFC\x2\xFE\x2\x100\x2\x102\x2\x104"+ + "\x2\x106\x2\x108\x2\x10A\x2\x10C\x2\x10E\x2\x110\x2\x112\x2\x114\x2\x2"+ + "\x1A\x5\x2;;\x45\x45\xBC\xBC\x3\x2HT\x4\x2\xC3\xC3\xC7\xC7\x3\x2jn\x3"+ + "\x2\x92\x93\a\x2\x38\x38;;{{\x9B\x9B\xA6\xA6\x4\x2\xA8\xA9\xCB\xCB\x4"+ + "\x2\x85\x87\xB3\xB3\x4\x2))++\x4\x2\xB5\xB5\xBB\xBB\x4\x2\xCE\xCE\xD7"+ + "\xD7\x4\x2\xD6\xD6\xD9\xD9\a\x2||\x83\x83\xD0\xD3\xD5\xD5\xD8\xD8\x3\x2"+ + ",-\x4\x2=>\x9C\x9C\x3\x2=>\r\x2\x13\x13\x1F <\x301\x3\x2\x2\x2@\x321"+ + "\x3\x2\x2\x2\x42\x323\x3\x2\x2\x2\x44\x339\x3\x2\x2\x2\x46\x33D\x3\x2"+ + "\x2\x2H\x35B\x3\x2\x2\x2J\x35D\x3\x2\x2\x2L\x366\x3\x2\x2\x2N\x368\x3"+ + "\x2\x2\x2P\x371\x3\x2\x2\x2R\x376\x3\x2\x2\x2T\x37A\x3\x2\x2\x2V\x38B"+ + "\x3\x2\x2\x2X\x397\x3\x2\x2\x2Z\x3A3\x3\x2\x2\x2\\\x3B7\x3\x2\x2\x2^\x3C3"+ + "\x3\x2\x2\x2`\x3D1\x3\x2\x2\x2\x62\x3DD\x3\x2\x2\x2\x64\x3F1\x3\x2\x2"+ + "\x2\x66\x405\x3\x2\x2\x2h\x44A\x3\x2\x2\x2j\x45D\x3\x2\x2\x2l\x45F\x3"+ + "\x2\x2\x2n\x46F\x3\x2\x2\x2p\x48F\x3\x2\x2\x2r\x4A7\x3\x2\x2\x2t\x4BC"+ + "\x3\x2\x2\x2v\x4D2\x3\x2\x2\x2x\x4E5\x3\x2\x2\x2z\x4F9\x3\x2\x2\x2|\x50B"+ + "\x3\x2\x2\x2~\x50D\x3\x2\x2\x2\x80\x515\x3\x2\x2\x2\x82\x517\x3\x2\x2"+ + "\x2\x84\x523\x3\x2\x2\x2\x86\x525\x3\x2\x2\x2\x88\x531\x3\x2\x2\x2\x8A"+ + "\x550\x3\x2\x2\x2\x8C\x552\x3\x2\x2\x2\x8E\x568\x3\x2\x2\x2\x90\x56A\x3"+ + "\x2\x2\x2\x92\x579\x3\x2\x2\x2\x94\x590\x3\x2\x2\x2\x96\x595\x3\x2\x2"+ + "\x2\x98\x5A3\x3\x2\x2\x2\x9A\x5BB\x3\x2\x2\x2\x9C\x5FC\x3\x2\x2\x2\x9E"+ + "\x66F\x3\x2\x2\x2\xA0\x67C\x3\x2\x2\x2\xA2\x685\x3\x2\x2\x2\xA4\x693\x3"+ + "\x2\x2\x2\xA6\x6AF\x3\x2\x2\x2\xA8\x6B8\x3\x2\x2\x2\xAA\x6C4\x3\x2\x2"+ + "\x2\xAC\x6CD\x3\x2\x2\x2\xAE\x6CF\x3\x2\x2\x2\xB0\x6DD\x3\x2\x2\x2\xB2"+ + "\x6E1\x3\x2\x2\x2\xB4\x727\x3\x2\x2\x2\xB6\x72B\x3\x2\x2\x2\xB8\x72E\x3"+ + "\x2\x2\x2\xBA\x752\x3\x2\x2\x2\xBC\x768\x3\x2\x2\x2\xBE\x76A\x3\x2\x2"+ + "\x2\xC0\x782\x3\x2\x2\x2\xC2\x7A7\x3\x2\x2\x2\xC4\x7BF\x3\x2\x2\x2\xC6"+ + "\x7E6\x3\x2\x2\x2\xC8\x802\x3\x2\x2\x2\xCA\x80B\x3\x2\x2\x2\xCC\x81B\x3"+ + "\x2\x2\x2\xCE\x82F\x3\x2\x2\x2\xD0\x83A\x3\x2\x2\x2\xD2\x842\x3\x2\x2"+ + "\x2\xD4\x85D\x3\x2\x2\x2\xD6\x881\x3\x2\x2\x2\xD8\x887\x3\x2\x2\x2\xDA"+ + "\x89A\x3\x2\x2\x2\xDC\x8A1\x3\x2\x2\x2\xDE\x8A5\x3\x2\x2\x2\xE0\x8A7\x3"+ + "\x2\x2\x2\xE2\x8B6\x3\x2\x2\x2\xE4\x8B8\x3\x2\x2\x2\xE6\x8BA\x3\x2\x2"+ + "\x2\xE8\x8C2\x3\x2\x2\x2\xEA\x8CA\x3\x2\x2\x2\xEC\x8D7\x3\x2\x2\x2\xEE"+ + "\x8E3\x3\x2\x2\x2\xF0\x8E5\x3\x2\x2\x2\xF2\x8E9\x3\x2\x2\x2\xF4\x8F5\x3"+ + "\x2\x2\x2\xF6\x8F7\x3\x2\x2\x2\xF8\x8F9\x3\x2\x2\x2\xFA\x8FB\x3\x2\x2"+ + "\x2\xFC\x8FD\x3\x2\x2\x2\xFE\x900\x3\x2\x2\x2\x100\x91B\x3\x2\x2\x2\x102"+ + "\x920\x3\x2\x2\x2\x104\x922\x3\x2\x2\x2\x106\x928\x3\x2\x2\x2\x108\x92F"+ + "\x3\x2\x2\x2\x10A\x932\x3\x2\x2\x2\x10C\x93C\x3\x2\x2\x2\x10E\x940\x3"+ + "\x2\x2\x2\x110\x976\x3\x2\x2\x2\x112\x978\x3\x2\x2\x2\x114\x97B\x3\x2"+ + "\x2\x2\x116\x117\x5\x4\x3\x2\x117\x3\x3\x2\x2\x2\x118\x11A\x5\x114\x8B"+ + "\x2\x119\x118\x3\x2\x2\x2\x119\x11A\x3\x2\x2\x2\x11A\x11B\x3\x2\x2\x2"+ + "\x11B\x11F\x5\x100\x81\x2\x11C\x11D\x5\x6\x4\x2\x11D\x11E\x5\x100\x81"+ + "\x2\x11E\x120\x3\x2\x2\x2\x11F\x11C\x3\x2\x2\x2\x11F\x120\x3\x2\x2\x2"+ + "\x120\x122\x3\x2\x2\x2\x121\x123\x5\b\x5\x2\x122\x121\x3\x2\x2\x2\x122"+ + "\x123\x3\x2\x2\x2\x123\x124\x3\x2\x2\x2\x124\x126\x5\x100\x81\x2\x125"+ + "\x127\x5\f\a\x2\x126\x125\x3\x2\x2\x2\x126\x127\x3\x2\x2\x2\x127\x128"+ + "\x3\x2\x2\x2\x128\x12A\x5\x100\x81\x2\x129\x12B\x5\xE\b\x2\x12A\x129\x3"+ + "\x2\x2\x2\x12A\x12B\x3\x2\x2\x2\x12B\x12C\x3\x2\x2\x2\x12C\x12E\x5\x100"+ + "\x81\x2\x12D\x12F\x5\x14\v\x2\x12E\x12D\x3\x2\x2\x2\x12E\x12F\x3\x2\x2"+ + "\x2\x12F\x130\x3\x2\x2\x2\x130\x131\x5\x100\x81\x2\x131\x5\x3\x2\x2\x2"+ + "\x132\x133\a\xC5\x2\x2\x133\x134\x5\x114\x8B\x2\x134\x136\x5\xF0y\x2\x135"+ + "\x137\x5\x114\x8B\x2\x136\x135\x3\x2\x2\x2\x136\x137\x3\x2\x2\x2\x137"+ + "\x139\x3\x2\x2\x2\x138\x13A\a\x42\x2\x2\x139\x138\x3\x2\x2\x2\x139\x13A"+ + "\x3\x2\x2\x2\x13A\x13B\x3\x2\x2\x2\x13B\x13C\x5\x100\x81\x2\x13C\a\x3"+ + "\x2\x2\x2\x13D\x145\a:\x2\x2\x13E\x13F\x5\x114\x8B\x2\x13F\x140\a\xED"+ + "\x2\x2\x140\x141\x5\x114\x8B\x2\x141\x143\x5\xDCo\x2\x142\x144\x5\x114"+ + "\x8B\x2\x143\x142\x3\x2\x2\x2\x143\x144\x3\x2\x2\x2\x144\x146\x3\x2\x2"+ + "\x2\x145\x13E\x3\x2\x2\x2\x145\x146\x3\x2\x2\x2\x146\x147\x3\x2\x2\x2"+ + "\x147\x149\x5\x100\x81\x2\x148\x14A\x5\n\x6\x2\x149\x148\x3\x2\x2\x2\x14A"+ + "\x14B\x3\x2\x2\x2\x14B\x149\x3\x2\x2\x2\x14B\x14C\x3\x2\x2\x2\x14C\x14D"+ + "\x3\x2\x2\x2\x14D\x14E\a\x64\x2\x2\x14E\t\x3\x2\x2\x2\x14F\x153\x5\xDC"+ + "o\x2\x150\x152\x5\x114\x8B\x2\x151\x150\x3\x2\x2\x2\x152\x155\x3\x2\x2"+ + "\x2\x153\x151\x3\x2\x2\x2\x153\x154\x3\x2\x2\x2\x154\x156\x3\x2\x2\x2"+ + "\x155\x153\x3\x2\x2\x2\x156\x15A\a\xD0\x2\x2\x157\x159\x5\x114\x8B\x2"+ + "\x158\x157\x3\x2\x2\x2\x159\x15C\x3\x2\x2\x2\x15A\x158\x3\x2\x2\x2\x15A"+ + "\x15B\x3\x2\x2\x2\x15B\x15D\x3\x2\x2\x2\x15C\x15A\x3\x2\x2\x2\x15D\x160"+ + "\x5\x9CO\x2\x15E\x15F\a*\x2\x2\x15F\x161\x5\xF0y\x2\x160\x15E\x3\x2\x2"+ + "\x2\x160\x161\x3\x2\x2\x2\x161\x162\x3\x2\x2\x2\x162\x163\x5\x100\x81"+ + "\x2\x163\v\x3\x2\x2\x2\x164\x165\x5\x18\r\x2\x165\x166\x5\x100\x81\x2"+ + "\x166\x168\x3\x2\x2\x2\x167\x164\x3\x2\x2\x2\x168\x169\x3\x2\x2\x2\x169"+ + "\x167\x3\x2\x2\x2\x169\x16A\x3\x2\x2\x2\x16A\r\x3\x2\x2\x2\x16B\x171\x5"+ + "\x12\n\x2\x16C\x16D\x5\x100\x81\x2\x16D\x16E\x5\x12\n\x2\x16E\x170\x3"+ + "\x2\x2\x2\x16F\x16C\x3\x2\x2\x2\x170\x173\x3\x2\x2\x2\x171\x16F\x3\x2"+ + "\x2\x2\x171\x172\x3\x2\x2\x2\x172\x174\x3\x2\x2\x2\x173\x171\x3\x2\x2"+ + "\x2\x174\x175\x5\x100\x81\x2\x175\xF\x3\x2\x2\x2\x176\x177\a\x96\x2\x2"+ + "\x177\x178\x5\x114\x8B\x2\x178\x179\x5\xF0y\x2\x179\x181\x3\x2\x2\x2\x17A"+ + "\x17B\a\x98\x2\x2\x17B\x17C\x5\x114\x8B\x2\x17C\x17D\t\x2\x2\x2\x17D\x181"+ + "\x3\x2\x2\x2\x17E\x181\a\x97\x2\x2\x17F\x181\a\x99\x2\x2\x180\x176\x3"+ + "\x2\x2\x2\x180\x17A\x3\x2\x2\x2\x180\x17E\x3\x2\x2\x2\x180\x17F\x3\x2"+ + "\x2\x2\x181\x11\x3\x2\x2\x2\x182\x18B\x5(\x15\x2\x183\x18B\x5.\x18\x2"+ + "\x184\x18B\x5\x36\x1C\x2\x185\x18B\x5$\x13\x2\x186\x18B\x5R*\x2\x187\x18B"+ + "\x5\xA0Q\x2\x188\x18B\x5\x10\t\x2\x189\x18B\x5\x96L\x2\x18A\x182\x3\x2"+ + "\x2\x2\x18A\x183\x3\x2\x2\x2\x18A\x184\x3\x2\x2\x2\x18A\x185\x3\x2\x2"+ + "\x2\x18A\x186\x3\x2\x2\x2\x18A\x187\x3\x2\x2\x2\x18A\x188\x3\x2\x2\x2"+ + "\x18A\x189\x3\x2\x2\x2\x18B\x13\x3\x2\x2\x2\x18C\x192\x5\x16\f\x2\x18D"+ + "\x18E\x5\x100\x81\x2\x18E\x18F\x5\x16\f\x2\x18F\x191\x3\x2\x2\x2\x190"+ + "\x18D\x3\x2\x2\x2\x191\x194\x3\x2\x2\x2\x192\x190\x3\x2\x2\x2\x192\x193"+ + "\x3\x2\x2\x2\x193\x195\x3\x2\x2\x2\x194\x192\x3\x2\x2\x2\x195\x196\x5"+ + "\x100\x81\x2\x196\x15\x3\x2\x2\x2\x197\x19D\x5> \x2\x198\x19D\x5n\x38"+ + "\x2\x199\x19D\x5p\x39\x2\x19A\x19D\x5r:\x2\x19B\x19D\x5\x92J\x2\x19C\x197"+ + "\x3\x2\x2\x2\x19C\x198\x3\x2\x2\x2\x19C\x199\x3\x2\x2\x2\x19C\x19A\x3"+ + "\x2\x2\x2\x19C\x19B\x3\x2\x2\x2\x19D\x17\x3\x2\x2\x2\x19E\x19F\a\x37\x2"+ + "\x2\x19F\x1A0\x5\x114\x8B\x2\x1A0\x1A2\x5\x1A\xE\x2\x1A1\x1A3\x5\x114"+ + "\x8B\x2\x1A2\x1A1\x3\x2\x2\x2\x1A2\x1A3\x3\x2\x2\x2\x1A3\x1A4\x3\x2\x2"+ + "\x2\x1A4\x1A6\a\xD0\x2\x2\x1A5\x1A7\x5\x114\x8B\x2\x1A6\x1A5\x3\x2\x2"+ + "\x2\x1A6\x1A7\x3\x2\x2\x2\x1A7\x1A8\x3\x2\x2\x2\x1A8\x1B3\x5\x1C\xF\x2"+ + "\x1A9\x1AB\x5\x114\x8B\x2\x1AA\x1A9\x3\x2\x2\x2\x1AA\x1AB\x3\x2\x2\x2"+ + "\x1AB\x1AC\x3\x2\x2\x2\x1AC\x1AE\a)\x2\x2\x1AD\x1AF\x5\x114\x8B\x2\x1AE"+ + "\x1AD\x3\x2\x2\x2\x1AE\x1AF\x3\x2\x2\x2\x1AF\x1B0\x3\x2\x2\x2\x1B0\x1B2"+ + "\x5\x1C\xF\x2\x1B1\x1AA\x3\x2\x2\x2\x1B2\x1B5\x3\x2\x2\x2\x1B3\x1B1\x3"+ + "\x2\x2\x2\x1B3\x1B4\x3\x2\x2\x2\x1B4\x19\x3\x2\x2\x2\x1B5\x1B3\x3\x2\x2"+ + "\x2\x1B6\x1B7\x5\xBC_\x2\x1B7\x1B\x3\x2\x2\x2\x1B8\x1B9\x5\x9CO\x2\x1B9"+ + "\x1D\x3\x2\x2\x2\x1BA\x1C0\x5 \x11\x2\x1BB\x1BC\x5\x100\x81\x2\x1BC\x1BD"+ + "\x5 \x11\x2\x1BD\x1BF\x3\x2\x2\x2\x1BE\x1BB\x3\x2\x2\x2\x1BF\x1C2\x3\x2"+ + "\x2\x2\x1C0\x1BE\x3\x2\x2\x2\x1C0\x1C1\x3\x2\x2\x2\x1C1\x1C3\x3\x2\x2"+ + "\x2\x1C2\x1C0\x3\x2\x2\x2\x1C3\x1C4\x5\x100\x81\x2\x1C4\x1F\x3\x2\x2\x2"+ + "\x1C5\x1F4\x5\xECw\x2\x1C6\x1F4\x5\x18\r\x2\x1C7\x1F4\x5\"\x12\x2\x1C8"+ + "\x1F4\x5$\x13\x2\x1C9\x1F4\x5*\x16\x2\x1CA\x1F4\x5,\x17\x2\x1CB\x1F4\x5"+ + "\x32\x1A\x2\x1CC\x1F4\x5\x34\x1B\x2\x1CD\x1F4\x5\x38\x1D\x2\x1CE\x1F4"+ + "\x5\xB2Z\x2\x1CF\x1F4\x5:\x1E\x2\x1D0\x1F4\x5<\x1F\x2\x1D1\x1F4\x5\x42"+ + "\"\x2\x1D2\x1F4\x5\x44#\x2\x1D3\x1F4\x5\x46$\x2\x1D4\x1F4\x5H%\x2\x1D5"+ + "\x1F4\x5R*\x2\x1D6\x1F4\x5T+\x2\x1D7\x1F4\x5V,\x2\x1D8\x1F4\x5X-\x2\x1D9"+ + "\x1F4\x5Z.\x2\x1DA\x1F4\x5\\/\x2\x1DB\x1F4\x5^\x30\x2\x1DC\x1F4\x5`\x31"+ + "\x2\x1DD\x1F4\x5\x62\x32\x2\x1DE\x1F4\x5\x64\x33\x2\x1DF\x1F4\x5\x66\x34"+ + "\x2\x1E0\x1F4\x5l\x37\x2\x1E1\x1F4\x5t;\x2\x1E2\x1F4\x5v<\x2\x1E3\x1F4"+ + "\x5x=\x2\x1E4\x1F4\x5|?\x2\x1E5\x1F4\x5~@\x2\x1E6\x1F4\x5\x80\x41\x2\x1E7"+ + "\x1F4\x5\x82\x42\x2\x1E8\x1F4\x5\x86\x44\x2\x1E9\x1F4\x5\x88\x45\x2\x1EA"+ + "\x1F4\x5\x90I\x2\x1EB\x1F4\x5\x84\x43\x2\x1EC\x1F4\x5\x9AN\x2\x1ED\x1F4"+ + "\x5\xA0Q\x2\x1EE\x1F4\x5\xA6T\x2\x1EF\x1F4\x5\xA8U\x2\x1F0\x1F4\x5\xAA"+ + "V\x2\x1F1\x1F4\x5\xAEX\x2\x1F2\x1F4\x5\xB6\\\x2\x1F3\x1C5\x3\x2\x2\x2"+ + "\x1F3\x1C6\x3\x2\x2\x2\x1F3\x1C7\x3\x2\x2\x2\x1F3\x1C8\x3\x2\x2\x2\x1F3"+ + "\x1C9\x3\x2\x2\x2\x1F3\x1CA\x3\x2\x2\x2\x1F3\x1CB\x3\x2\x2\x2\x1F3\x1CC"+ + "\x3\x2\x2\x2\x1F3\x1CD\x3\x2\x2\x2\x1F3\x1CE\x3\x2\x2\x2\x1F3\x1CF\x3"+ + "\x2\x2\x2\x1F3\x1D0\x3\x2\x2\x2\x1F3\x1D1\x3\x2\x2\x2\x1F3\x1D2\x3\x2"+ + "\x2\x2\x1F3\x1D3\x3\x2\x2\x2\x1F3\x1D4\x3\x2\x2\x2\x1F3\x1D5\x3\x2\x2"+ + "\x2\x1F3\x1D6\x3\x2\x2\x2\x1F3\x1D7\x3\x2\x2\x2\x1F3\x1D8\x3\x2\x2\x2"+ + "\x1F3\x1D9\x3\x2\x2\x2\x1F3\x1DA\x3\x2\x2\x2\x1F3\x1DB\x3\x2\x2\x2\x1F3"+ + "\x1DC\x3\x2\x2\x2\x1F3\x1DD\x3\x2\x2\x2\x1F3\x1DE\x3\x2\x2\x2\x1F3\x1DF"+ + "\x3\x2\x2\x2\x1F3\x1E0\x3\x2\x2\x2\x1F3\x1E1\x3\x2\x2\x2\x1F3\x1E2\x3"+ + "\x2\x2\x2\x1F3\x1E3\x3\x2\x2\x2\x1F3\x1E4\x3\x2\x2\x2\x1F3\x1E5\x3\x2"+ + "\x2\x2\x1F3\x1E6\x3\x2\x2\x2\x1F3\x1E7\x3\x2\x2\x2\x1F3\x1E8\x3\x2\x2"+ + "\x2\x1F3\x1E9\x3\x2\x2\x2\x1F3\x1EA\x3\x2\x2\x2\x1F3\x1EB\x3\x2\x2\x2"+ + "\x1F3\x1EC\x3\x2\x2\x2\x1F3\x1ED\x3\x2\x2\x2\x1F3\x1EE\x3\x2\x2\x2\x1F3"+ + "\x1EF\x3\x2\x2\x2\x1F3\x1F0\x3\x2\x2\x2\x1F3\x1F1\x3\x2\x2\x2\x1F3\x1F2"+ + "\x3\x2\x2\x2\x1F4!\x3\x2\x2\x2\x1F5\x205\a\x43\x2\x2\x1F6\x1F7\x5\x114"+ + "\x8B\x2\x1F7\x202\x5\xB0Y\x2\x1F8\x1FA\x5\x114\x8B\x2\x1F9\x1F8\x3\x2"+ + "\x2\x2\x1F9\x1FA\x3\x2\x2\x2\x1FA\x1FB\x3\x2\x2\x2\x1FB\x1FD\a)\x2\x2"+ + "\x1FC\x1FE\x5\x114\x8B\x2\x1FD\x1FC\x3\x2\x2\x2\x1FD\x1FE\x3\x2\x2\x2"+ + "\x1FE\x1FF\x3\x2\x2\x2\x1FF\x201\x5\xB0Y\x2\x200\x1F9\x3\x2\x2\x2\x201"+ + "\x204\x3\x2\x2\x2\x202\x200\x3\x2\x2\x2\x202\x203\x3\x2\x2\x2\x203\x206"+ + "\x3\x2\x2\x2\x204\x202\x3\x2\x2\x2\x205\x1F6\x3\x2\x2\x2\x205\x206\x3"+ + "\x2\x2\x2\x206#\x3\x2\x2\x2\x207\x208\x5\xF6|\x2\x208\x209\x5\x114\x8B"+ + "\x2\x209\x20B\x3\x2\x2\x2\x20A\x207\x3\x2\x2\x2\x20A\x20B\x3\x2\x2\x2"+ + "\x20B\x20C\x3\x2\x2\x2\x20C\x20D\a\x44\x2\x2\x20D\x20E\x5\x114\x8B\x2"+ + "\x20E\x219\x5&\x14\x2\x20F\x211\x5\x114\x8B\x2\x210\x20F\x3\x2\x2\x2\x210"+ + "\x211\x3\x2\x2\x2\x211\x212\x3\x2\x2\x2\x212\x214\a)\x2\x2\x213\x215\x5"+ + "\x114\x8B\x2\x214\x213\x3\x2\x2\x2\x214\x215\x3\x2\x2\x2\x215\x216\x3"+ + "\x2\x2\x2\x216\x218\x5&\x14\x2\x217\x210\x3\x2\x2\x2\x218\x21B\x3\x2\x2"+ + "\x2\x219\x217\x3\x2\x2\x2\x219\x21A\x3\x2\x2\x2\x21A%\x3\x2\x2\x2\x21B"+ + "\x219\x3\x2\x2\x2\x21C\x21E\x5\xDEp\x2\x21D\x21F\x5\xF4{\x2\x21E\x21D"+ + "\x3\x2\x2\x2\x21E\x21F\x3\x2\x2\x2\x21F\x223\x3\x2\x2\x2\x220\x221\x5"+ + "\x114\x8B\x2\x221\x222\x5\xE0q\x2\x222\x224\x3\x2\x2\x2\x223\x220\x3\x2"+ + "\x2\x2\x223\x224\x3\x2\x2\x2\x224\x226\x3\x2\x2\x2\x225\x227\x5\x114\x8B"+ + "\x2\x226\x225\x3\x2\x2\x2\x226\x227\x3\x2\x2\x2\x227\x228\x3\x2\x2\x2"+ + "\x228\x22A\a\xD0\x2\x2\x229\x22B\x5\x114\x8B\x2\x22A\x229\x3\x2\x2\x2"+ + "\x22A\x22B\x3\x2\x2\x2\x22B\x22C\x3\x2\x2\x2\x22C\x22D\x5\x9CO\x2\x22D"+ + "\'\x3\x2\x2\x2\x22E\x22F\x5\xF6|\x2\x22F\x230\x5\x114\x8B\x2\x230\x232"+ + "\x3\x2\x2\x2\x231\x22E\x3\x2\x2\x2\x231\x232\x3\x2\x2\x2\x232\x233\x3"+ + "\x2\x2\x2\x233\x234\aG\x2\x2\x234\x237\x5\x114\x8B\x2\x235\x236\a\xA3"+ + "\x2\x2\x236\x238\x5\x114\x8B\x2\x237\x235\x3\x2\x2\x2\x237\x238\x3\x2"+ + "\x2\x2\x238\x23E\x3\x2\x2\x2\x239\x23B\ar\x2\x2\x23A\x23C\x5\xF4{\x2\x23B"+ + "\x23A\x3\x2\x2\x2\x23B\x23C\x3\x2\x2\x2\x23C\x23F\x3\x2\x2\x2\x23D\x23F"+ + "\a\xBA\x2\x2\x23E\x239\x3\x2\x2\x2\x23E\x23D\x3\x2\x2\x2\x23F\x240\x3"+ + "\x2\x2\x2\x240\x241\x5\x114\x8B\x2\x241\x243\x5\xDEp\x2\x242\x244\x5\xF4"+ + "{\x2\x243\x242\x3\x2\x2\x2\x243\x244\x3\x2\x2\x2\x244\x245\x3\x2\x2\x2"+ + "\x245\x246\x5\x114\x8B\x2\x246\x247\a\x82\x2\x2\x247\x248\x5\x114\x8B"+ + "\x2\x248\x24E\a\xE3\x2\x2\x249\x24A\x5\x114\x8B\x2\x24A\x24B\a\x35\x2"+ + "\x2\x24B\x24C\x5\x114\x8B\x2\x24C\x24D\a\xE3\x2\x2\x24D\x24F\x3\x2\x2"+ + "\x2\x24E\x249\x3\x2\x2\x2\x24E\x24F\x3\x2\x2\x2\x24F\x254\x3\x2\x2\x2"+ + "\x250\x252\x5\x114\x8B\x2\x251\x250\x3\x2\x2\x2\x251\x252\x3\x2\x2\x2"+ + "\x252\x253\x3\x2\x2\x2\x253\x255\x5\xD2j\x2\x254\x251\x3\x2\x2\x2\x254"+ + "\x255\x3\x2\x2\x2\x255\x259\x3\x2\x2\x2\x256\x257\x5\x114\x8B\x2\x257"+ + "\x258\x5\xE0q\x2\x258\x25A\x3\x2\x2\x2\x259\x256\x3\x2\x2\x2\x259\x25A"+ + "\x3\x2\x2\x2\x25A)\x3\x2\x2\x2\x25B\x25C\t\x3\x2\x2\x25C\x25D\x5\x114"+ + "\x8B\x2\x25D\x268\x5\xEAv\x2\x25E\x260\x5\x114\x8B\x2\x25F\x25E\x3\x2"+ + "\x2\x2\x25F\x260\x3\x2\x2\x2\x260\x261\x3\x2\x2\x2\x261\x263\a)\x2\x2"+ + "\x262\x264\x5\x114\x8B\x2\x263\x262\x3\x2\x2\x2\x263\x264\x3\x2\x2\x2"+ + "\x264\x265\x3\x2\x2\x2\x265\x267\x5\xEAv\x2\x266\x25F\x3\x2\x2\x2\x267"+ + "\x26A\x3\x2\x2\x2\x268\x266\x3\x2\x2\x2\x268\x269\x3\x2\x2\x2\x269+\x3"+ + "\x2\x2\x2\x26A\x268\x3\x2\x2\x2\x26B\x26C\aV\x2\x2\x26C\x26E\x5\x100\x81"+ + "\x2\x26D\x26F\x5\x1E\x10\x2\x26E\x26D\x3\x2\x2\x2\x26E\x26F\x3\x2\x2\x2"+ + "\x26F\x270\x3\x2\x2\x2\x270\x271\a\x80\x2\x2\x271\x289\x3\x2\x2\x2\x272"+ + "\x273\aV\x2\x2\x273\x274\x5\x114\x8B\x2\x274\x275\t\x4\x2\x2\x275\x276"+ + "\x5\x114\x8B\x2\x276\x277\x5\x9CO\x2\x277\x279\x5\x100\x81\x2\x278\x27A"+ + "\x5\x1E\x10\x2\x279\x278\x3\x2\x2\x2\x279\x27A\x3\x2\x2\x2\x27A\x27B\x3"+ + "\x2\x2\x2\x27B\x27C\a\x80\x2\x2\x27C\x289\x3\x2\x2\x2\x27D\x27E\aV\x2"+ + "\x2\x27E\x280\x5\x100\x81\x2\x27F\x281\x5\x1E\x10\x2\x280\x27F\x3\x2\x2"+ + "\x2\x280\x281\x3\x2\x2\x2\x281\x282\x3\x2\x2\x2\x282\x283\a\x80\x2\x2"+ + "\x283\x284\x5\x114\x8B\x2\x284\x285\t\x4\x2\x2\x285\x286\x5\x114\x8B\x2"+ + "\x286\x287\x5\x9CO\x2\x287\x289\x3\x2\x2\x2\x288\x26B\x3\x2\x2\x2\x288"+ + "\x272\x3\x2\x2\x2\x288\x27D\x3\x2\x2\x2\x289-\x3\x2\x2\x2\x28A\x28B\x5"+ + "\xF6|\x2\x28B\x28C\x5\x114\x8B\x2\x28C\x28E\x3\x2\x2\x2\x28D\x28A\x3\x2"+ + "\x2\x2\x28D\x28E\x3\x2\x2\x2\x28E\x28F\x3\x2\x2\x2\x28F\x290\a\x65\x2"+ + "\x2\x290\x291\x5\x114\x8B\x2\x291\x292\x5\xDEp\x2\x292\x296\x5\x100\x81"+ + "\x2\x293\x295\x5\x30\x19\x2\x294\x293\x3\x2\x2\x2\x295\x298\x3\x2\x2\x2"+ + "\x296\x294\x3\x2\x2\x2\x296\x297\x3\x2\x2\x2\x297\x299\x3\x2\x2\x2\x298"+ + "\x296\x3\x2\x2\x2\x299\x29A\a\\\x2\x2\x29A/\x3\x2\x2\x2\x29B\x2A4\x5\xDE"+ + "p\x2\x29C\x29E\x5\x114\x8B\x2\x29D\x29C\x3\x2\x2\x2\x29D\x29E\x3\x2\x2"+ + "\x2\x29E\x29F\x3\x2\x2\x2\x29F\x2A1\a\xD0\x2\x2\x2A0\x2A2\x5\x114\x8B"+ + "\x2\x2A1\x2A0\x3\x2\x2\x2\x2A1\x2A2\x3\x2\x2\x2\x2A2\x2A3\x3\x2\x2\x2"+ + "\x2A3\x2A5\x5\x9CO\x2\x2A4\x29D\x3\x2\x2\x2\x2A4\x2A5\x3\x2\x2\x2\x2A5"+ + "\x2A6\x3\x2\x2\x2\x2A6\x2A7\x5\x100\x81\x2\x2A7\x31\x3\x2\x2\x2\x2A8\x2A9"+ + "\ag\x2\x2\x2A9\x2AA\x5\x114\x8B\x2\x2AA\x2B5\x5\x9CO\x2\x2AB\x2AD\x5\x114"+ + "\x8B\x2\x2AC\x2AB\x3\x2\x2\x2\x2AC\x2AD\x3\x2\x2\x2\x2AD\x2AE\x3\x2\x2"+ + "\x2\x2AE\x2B0\a)\x2\x2\x2AF\x2B1\x5\x114\x8B\x2\x2B0\x2AF\x3\x2\x2\x2"+ + "\x2B0\x2B1\x3\x2\x2\x2\x2B1\x2B2\x3\x2\x2\x2\x2B2\x2B4\x5\x9CO\x2\x2B3"+ + "\x2AC\x3\x2\x2\x2\x2B4\x2B7\x3\x2\x2\x2\x2B5\x2B3\x3\x2\x2\x2\x2B5\x2B6"+ + "\x3\x2\x2\x2\x2B6\x33\x3\x2\x2\x2\x2B7\x2B5\x3\x2\x2\x2\x2B8\x2B9\ah\x2"+ + "\x2\x2B9\x2BA\x5\x114\x8B\x2\x2BA\x2BB\x5\x9CO\x2\x2BB\x35\x3\x2\x2\x2"+ + "\x2BC\x2BD\x5\xF6|\x2\x2BD\x2BE\x5\x114\x8B\x2\x2BE\x2C0\x3\x2\x2\x2\x2BF"+ + "\x2BC\x3\x2\x2\x2\x2BF\x2C0\x3\x2\x2\x2\x2C0\x2C1\x3\x2\x2\x2\x2C1\x2C2"+ + "\ai\x2\x2\x2C2\x2C3\x5\x114\x8B\x2\x2C3\x2C5\x5\xDEp\x2\x2C4\x2C6\x5\x114"+ + "\x8B\x2\x2C5\x2C4\x3\x2\x2\x2\x2C5\x2C6\x3\x2\x2\x2\x2C6\x2C7\x3\x2\x2"+ + "\x2\x2C7\x2C8\x5\xD2j\x2\x2C8\x37\x3\x2\x2\x2\x2C9\x2CA\t\x5\x2\x2\x2CA"+ + "\x39\x3\x2\x2\x2\x2CB\x2CC\aq\x2\x2\x2CC\x2CD\x5\x114\x8B\x2\x2CD\x2CE"+ + "\aX\x2\x2\x2CE\x2CF\x5\x114\x8B\x2\x2CF\x2D0\x5\x9CO\x2\x2D0\x2D1\x5\x114"+ + "\x8B\x2\x2D1\x2D2\az\x2\x2\x2D2\x2D3\x5\x114\x8B\x2\x2D3\x2D4\x5\x9CO"+ + "\x2\x2D4\x2D6\x5\x100\x81\x2\x2D5\x2D7\x5\x1E\x10\x2\x2D6\x2D5\x3\x2\x2"+ + "\x2\x2D6\x2D7\x3\x2\x2\x2\x2D7\x2D8\x3\x2\x2\x2\x2D8\x2DC\a\x8C\x2\x2"+ + "\x2D9\x2DA\x5\x114\x8B\x2\x2DA\x2DB\x5\x9CO\x2\x2DB\x2DD\x3\x2\x2\x2\x2DC"+ + "\x2D9\x3\x2\x2\x2\x2DC\x2DD\x3\x2\x2\x2\x2DD;\x3\x2\x2\x2\x2DE\x2DF\a"+ + "q\x2\x2\x2DF\x2E0\x5\x114\x8B\x2\x2E0\x2E2\x5\x9CO\x2\x2E1\x2E3\x5\x114"+ + "\x8B\x2\x2E2\x2E1\x3\x2\x2\x2\x2E2\x2E3\x3\x2\x2\x2\x2E3\x2E4\x3\x2\x2"+ + "\x2\x2E4\x2E6\a\xD0\x2\x2\x2E5\x2E7\x5\x114\x8B\x2\x2E6\x2E5\x3\x2\x2"+ + "\x2\x2E6\x2E7\x3\x2\x2\x2\x2E7\x2E8\x3\x2\x2\x2\x2E8\x2E9\x5\x9CO\x2\x2E9"+ + "\x2EA\x5\x114\x8B\x2\x2EA\x2EB\a\xBE\x2\x2\x2EB\x2EC\x5\x114\x8B\x2\x2EC"+ + "\x2F2\x5\x9CO\x2\x2ED\x2EE\x5\x114\x8B\x2\x2EE\x2EF\a\xB7\x2\x2\x2EF\x2F0"+ + "\x5\x114\x8B\x2\x2F0\x2F1\x5\x9CO\x2\x2F1\x2F3\x3\x2\x2\x2\x2F2\x2ED\x3"+ + "\x2\x2\x2\x2F2\x2F3\x3\x2\x2\x2\x2F3\x2F4\x3\x2\x2\x2\x2F4\x2F6\x5\x100"+ + "\x81\x2\x2F5\x2F7\x5\x1E\x10\x2\x2F6\x2F5\x3\x2\x2\x2\x2F6\x2F7\x3\x2"+ + "\x2\x2\x2F7\x2F8\x3\x2\x2\x2\x2F8\x2FC\a\x8C\x2\x2\x2F9\x2FA\x5\x114\x8B"+ + "\x2\x2FA\x2FB\x5\x9CO\x2\x2FB\x2FD\x3\x2\x2\x2\x2FC\x2F9\x3\x2\x2\x2\x2FC"+ + "\x2FD\x3\x2\x2\x2\x2FD=\x3\x2\x2\x2\x2FE\x2FF\x5\xF6|\x2\x2FF\x300\x5"+ + "\x114\x8B\x2\x300\x302\x3\x2\x2\x2\x301\x2FE\x3\x2\x2\x2\x301\x302\x3"+ + "\x2\x2\x2\x302\x305\x3\x2\x2\x2\x303\x304\a\xB6\x2\x2\x304\x306\x5\x114"+ + "\x8B\x2\x305\x303\x3\x2\x2\x2\x305\x306\x3\x2\x2\x2\x306\x307\x3\x2\x2"+ + "\x2\x307\x309\ar\x2\x2\x308\x30A\x5\x114\x8B\x2\x309\x308\x3\x2\x2\x2"+ + "\x309\x30A\x3\x2\x2\x2\x30A\x30B\x3\x2\x2\x2\x30B\x30D\x5@!\x2\x30C\x30E"+ + "\x5\xF4{\x2\x30D\x30C\x3\x2\x2\x2\x30D\x30E\x3\x2\x2\x2\x30E\x313\x3\x2"+ + "\x2\x2\x30F\x311\x5\x114\x8B\x2\x310\x30F\x3\x2\x2\x2\x310\x311\x3\x2"+ + "\x2\x2\x311\x312\x3\x2\x2\x2\x312\x314\x5\xD2j\x2\x313\x310\x3\x2\x2\x2"+ + "\x313\x314\x3\x2\x2\x2\x314\x319\x3\x2\x2\x2\x315\x317\x5\x114\x8B\x2"+ + "\x316\x315\x3\x2\x2\x2\x316\x317\x3\x2\x2\x2\x317\x318\x3\x2\x2\x2\x318"+ + "\x31A\x5\xE0q\x2\x319\x316\x3\x2\x2\x2\x319\x31A\x3\x2\x2\x2\x31A\x31B"+ + "\x3\x2\x2\x2\x31B\x31D\x5\x100\x81\x2\x31C\x31E\x5\x1E\x10\x2\x31D\x31C"+ + "\x3\x2\x2\x2\x31D\x31E\x3\x2\x2\x2\x31E\x31F\x3\x2\x2\x2\x31F\x320\a]"+ + "\x2\x2\x320?\x3\x2\x2\x2\x321\x322\x5\xDEp\x2\x322\x41\x3\x2\x2\x2\x323"+ + "\x324\as\x2\x2\x324\x325\x5\x114\x8B\x2\x325\x327\x5\xB0Y\x2\x326\x328"+ + "\x5\x114\x8B\x2\x327\x326\x3\x2\x2\x2\x327\x328\x3\x2\x2\x2\x328\x329"+ + "\x3\x2\x2\x2\x329\x32B\a)\x2\x2\x32A\x32C\x5\x114\x8B\x2\x32B\x32A\x3"+ + "\x2\x2\x2\x32B\x32C\x3\x2\x2\x2\x32C\x32E\x3\x2\x2\x2\x32D\x32F\x5\x9C"+ + "O\x2\x32E\x32D\x3\x2\x2\x2\x32E\x32F\x3\x2\x2\x2\x32F\x331\x3\x2\x2\x2"+ + "\x330\x332\x5\x114\x8B\x2\x331\x330\x3\x2\x2\x2\x331\x332\x3\x2\x2\x2"+ + "\x332\x333\x3\x2\x2\x2\x333\x335\a)\x2\x2\x334\x336\x5\x114\x8B\x2\x335"+ + "\x334\x3\x2\x2\x2\x335\x336\x3\x2\x2\x2\x336\x337\x3\x2\x2\x2\x337\x338"+ + "\x5\x9CO\x2\x338\x43\x3\x2\x2\x2\x339\x33A\au\x2\x2\x33A\x33B\x5\x114"+ + "\x8B\x2\x33B\x33C\x5\x9CO\x2\x33C\x45\x3\x2\x2\x2\x33D\x33E\av\x2\x2\x33E"+ + "\x33F\x5\x114\x8B\x2\x33F\x340\x5\x9CO\x2\x340G\x3\x2\x2\x2\x341\x342"+ + "\aw\x2\x2\x342\x343\x5\x114\x8B\x2\x343\x344\x5L\'\x2\x344\x345\x5\x114"+ + "\x8B\x2\x345\x346\a\xBD\x2\x2\x346\x347\x5\x114\x8B\x2\x347\x34D\x5 \x11"+ + "\x2\x348\x349\x5\x114\x8B\x2\x349\x34A\aY\x2\x2\x34A\x34B\x5\x114\x8B"+ + "\x2\x34B\x34C\x5 \x11\x2\x34C\x34E\x3\x2\x2\x2\x34D\x348\x3\x2\x2\x2\x34D"+ + "\x34E\x3\x2\x2\x2\x34E\x35C\x3\x2\x2\x2\x34F\x353\x5J&\x2\x350\x352\x5"+ + "N(\x2\x351\x350\x3\x2\x2\x2\x352\x355\x3\x2\x2\x2\x353\x351\x3\x2\x2\x2"+ + "\x353\x354\x3\x2\x2\x2\x354\x357\x3\x2\x2\x2\x355\x353\x3\x2\x2\x2\x356"+ + "\x358\x5P)\x2\x357\x356\x3\x2\x2\x2\x357\x358\x3\x2\x2\x2\x358\x359\x3"+ + "\x2\x2\x2\x359\x35A\a^\x2\x2\x35A\x35C\x3\x2\x2\x2\x35B\x341\x3\x2\x2"+ + "\x2\x35B\x34F\x3\x2\x2\x2\x35CI\x3\x2\x2\x2\x35D\x35E\aw\x2\x2\x35E\x35F"+ + "\x5\x114\x8B\x2\x35F\x360\x5L\'\x2\x360\x361\x5\x114\x8B\x2\x361\x362"+ + "\a\xBD\x2\x2\x362\x364\x5\x100\x81\x2\x363\x365\x5\x1E\x10\x2\x364\x363"+ + "\x3\x2\x2\x2\x364\x365\x3\x2\x2\x2\x365K\x3\x2\x2\x2\x366\x367\x5\x9C"+ + "O\x2\x367M\x3\x2\x2\x2\x368\x369\aZ\x2\x2\x369\x36A\x5\x114\x8B\x2\x36A"+ + "\x36B\x5L\'\x2\x36B\x36C\x5\x114\x8B\x2\x36C\x36D\a\xBD\x2\x2\x36D\x36F"+ + "\x5\x100\x81\x2\x36E\x370\x5\x1E\x10\x2\x36F\x36E\x3\x2\x2\x2\x36F\x370"+ + "\x3\x2\x2\x2\x370O\x3\x2\x2\x2\x371\x372\aY\x2\x2\x372\x374\x5\x100\x81"+ + "\x2\x373\x375\x5\x1E\x10\x2\x374\x373\x3\x2\x2\x2\x374\x375\x3\x2\x2\x2"+ + "\x375Q\x3\x2\x2\x2\x376\x377\ay\x2\x2\x377\x378\x5\x114\x8B\x2\x378\x379"+ + "\x5\x9CO\x2\x379S\x3\x2\x2\x2\x37A\x37B\a{\x2\x2\x37B\x37C\x5\x114\x8B"+ + "\x2\x37C\x385\x5\xB0Y\x2\x37D\x37F\x5\x114\x8B\x2\x37E\x37D\x3\x2\x2\x2"+ + "\x37E\x37F\x3\x2\x2\x2\x37F\x380\x3\x2\x2\x2\x380\x382\a)\x2\x2\x381\x383"+ + "\x5\x114\x8B\x2\x382\x381\x3\x2\x2\x2\x382\x383\x3\x2\x2\x2\x383\x384"+ + "\x3\x2\x2\x2\x384\x386\x5\x9CO\x2\x385\x37E\x3\x2\x2\x2\x386\x387\x3\x2"+ + "\x2\x2\x387\x385\x3\x2\x2\x2\x387\x388\x3\x2\x2\x2\x388U\x3\x2\x2\x2\x389"+ + "\x38A\a\x81\x2\x2\x38A\x38C\x5\x114\x8B\x2\x38B\x389\x3\x2\x2\x2\x38B"+ + "\x38C\x3\x2\x2\x2\x38C\x38D\x3\x2\x2\x2\x38D\x38F\x5\x9CO\x2\x38E\x390"+ + "\x5\x114\x8B\x2\x38F\x38E\x3\x2\x2\x2\x38F\x390\x3\x2\x2\x2\x390\x391"+ + "\x3\x2\x2\x2\x391\x393\a\xD0\x2\x2\x392\x394\x5\x114\x8B\x2\x393\x392"+ + "\x3\x2\x2\x2\x393\x394\x3\x2\x2\x2\x394\x395\x3\x2\x2\x2\x395\x396\x5"+ + "\x9CO\x2\x396W\x3\x2\x2\x2\x397\x398\a\x84\x2\x2\x398\x399\x5\x114\x8B"+ + "\x2\x399\x39B\x5\xB0Y\x2\x39A\x39C\x5\x114\x8B\x2\x39B\x39A\x3\x2\x2\x2"+ + "\x39B\x39C\x3\x2\x2\x2\x39C\x39D\x3\x2\x2\x2\x39D\x39F\a)\x2\x2\x39E\x3A0"+ + "\x5\x114\x8B\x2\x39F\x39E\x3\x2\x2\x2\x39F\x3A0\x3\x2\x2\x2\x3A0\x3A1"+ + "\x3\x2\x2\x2\x3A1\x3A2\x5\x9CO\x2\x3A2Y\x3\x2\x2\x2\x3A3\x3A4\a~\x2\x2"+ + "\x3A4\x3A5\x5\x114\x8B\x2\x3A5\x3B5\x5\x9CO\x2\x3A6\x3A8\x5\x114\x8B\x2"+ + "\x3A7\x3A6\x3\x2\x2\x2\x3A7\x3A8\x3\x2\x2\x2\x3A8\x3A9\x3\x2\x2\x2\x3A9"+ + "\x3AB\a)\x2\x2\x3AA\x3AC\x5\x114\x8B\x2\x3AB\x3AA\x3\x2\x2\x2\x3AB\x3AC"+ + "\x3\x2\x2\x2\x3AC\x3AD\x3\x2\x2\x2\x3AD\x3B3\x5\x9CO\x2\x3AE\x3AF\x5\x114"+ + "\x8B\x2\x3AF\x3B0\a\xBE\x2\x2\x3B0\x3B1\x5\x114\x8B\x2\x3B1\x3B2\x5\x9C"+ + "O\x2\x3B2\x3B4\x3\x2\x2\x2\x3B3\x3AE\x3\x2\x2\x2\x3B3\x3B4\x3\x2\x2\x2"+ + "\x3B4\x3B6\x3\x2\x2\x2\x3B5\x3A7\x3\x2\x2\x2\x3B5\x3B6\x3\x2\x2\x2\x3B6"+ + "[\x3\x2\x2\x2\x3B7\x3B8\a\x88\x2\x2\x3B8\x3B9\x5\x114\x8B\x2\x3B9\x3BB"+ + "\x5\x9CO\x2\x3BA\x3BC\x5\x114\x8B\x2\x3BB\x3BA\x3\x2\x2\x2\x3BB\x3BC\x3"+ + "\x2\x2\x2\x3BC\x3BD\x3\x2\x2\x2\x3BD\x3BF\a\xD0\x2\x2\x3BE\x3C0\x5\x114"+ + "\x8B\x2\x3BF\x3BE\x3\x2\x2\x2\x3BF\x3C0\x3\x2\x2\x2\x3C0\x3C1\x3\x2\x2"+ + "\x2\x3C1\x3C2\x5\x9CO\x2\x3C2]\x3\x2\x2\x2\x3C3\x3C5\a\x8A\x2\x2\x3C4"+ + "\x3C6\x5\x114\x8B\x2\x3C5\x3C4\x3\x2\x2\x2\x3C5\x3C6\x3\x2\x2\x2\x3C6"+ + "\x3C7\x3\x2\x2\x2\x3C7\x3C9\a\xD4\x2\x2\x3C8\x3CA\x5\x114\x8B\x2\x3C9"+ + "\x3C8\x3\x2\x2\x2\x3C9\x3CA\x3\x2\x2\x2\x3CA\x3CB\x3\x2\x2\x2\x3CB\x3CD"+ + "\x5\xCCg\x2\x3CC\x3CE\x5\x114\x8B\x2\x3CD\x3CC\x3\x2\x2\x2\x3CD\x3CE\x3"+ + "\x2\x2\x2\x3CE\x3CF\x3\x2\x2\x2\x3CF\x3D0\a\xDB\x2\x2\x3D0_\x3\x2\x2\x2"+ + "\x3D1\x3D2\t\x6\x2\x2\x3D2\x3DB\x5\x114\x8B\x2\x3D3\x3D4\av\x2\x2\x3D4"+ + "\x3D5\x5\x114\x8B\x2\x3D5\x3D6\x5\x9CO\x2\x3D6\x3DC\x3\x2\x2\x2\x3D7\x3D8"+ + "\a\xAD\x2\x2\x3D8\x3D9\x5\x114\x8B\x2\x3D9\x3DA\a\x8C\x2\x2\x3DA\x3DC"+ + "\x3\x2\x2\x2\x3DB\x3D3\x3\x2\x2\x2\x3DB\x3D7\x3\x2\x2\x2\x3DC\x61\x3\x2"+ + "\x2\x2\x3DD\x3DE\a\x91\x2\x2\x3DE\x3DF\x5\x114\x8B\x2\x3DF\x3E0\x5\x9C"+ + "O\x2\x3E0\x3E1\x5\x114\x8B\x2\x3E1\x3E2\av\x2\x2\x3E2\x3E3\x5\x114\x8B"+ + "\x2\x3E3\x3EE\x5\x9CO\x2\x3E4\x3E6\x5\x114\x8B\x2\x3E5\x3E4\x3\x2\x2\x2"+ + "\x3E5\x3E6\x3\x2\x2\x2\x3E6\x3E7\x3\x2\x2\x2\x3E7\x3E9\a)\x2\x2\x3E8\x3EA"+ + "\x5\x114\x8B\x2\x3E9\x3E8\x3\x2\x2\x2\x3E9\x3EA\x3\x2\x2\x2\x3EA\x3EB"+ + "\x3\x2\x2\x2\x3EB\x3ED\x5\x9CO\x2\x3EC\x3E5\x3\x2\x2\x2\x3ED\x3F0\x3\x2"+ + "\x2\x2\x3EE\x3EC\x3\x2\x2\x2\x3EE\x3EF\x3\x2\x2\x2\x3EF\x63\x3\x2\x2\x2"+ + "\x3F0\x3EE\x3\x2\x2\x2\x3F1\x3F2\a\x91\x2\x2\x3F2\x3F3\x5\x114\x8B\x2"+ + "\x3F3\x3F4\x5\x9CO\x2\x3F4\x3F5\x5\x114\x8B\x2\x3F5\x3F6\au\x2\x2\x3F6"+ + "\x3F7\x5\x114\x8B\x2\x3F7\x402\x5\x9CO\x2\x3F8\x3FA\x5\x114\x8B\x2\x3F9"+ + "\x3F8\x3\x2\x2\x2\x3F9\x3FA\x3\x2\x2\x2\x3FA\x3FB\x3\x2\x2\x2\x3FB\x3FD"+ + "\a)\x2\x2\x3FC\x3FE\x5\x114\x8B\x2\x3FD\x3FC\x3\x2\x2\x2\x3FD\x3FE\x3"+ + "\x2\x2\x2\x3FE\x3FF\x3\x2\x2\x2\x3FF\x401\x5\x9CO\x2\x400\x3F9\x3\x2\x2"+ + "\x2\x401\x404\x3\x2\x2\x2\x402\x400\x3\x2\x2\x2\x402\x403\x3\x2\x2\x2"+ + "\x403\x65\x3\x2\x2\x2\x404\x402\x3\x2\x2\x2\x405\x406\a\x94\x2\x2\x406"+ + "\x407\x5\x114\x8B\x2\x407\x408\x5\x9CO\x2\x408\x409\x5\x114\x8B\x2\x409"+ + "\x40A\aq\x2\x2\x40A\x40B\x5\x114\x8B\x2\x40B\x411\t\a\x2\x2\x40C\x40D"+ + "\x5\x114\x8B\x2\x40D\x40E\a\x33\x2\x2\x40E\x40F\x5\x114\x8B\x2\x40F\x410"+ + "\t\b\x2\x2\x410\x412\x3\x2\x2\x2\x411\x40C\x3\x2\x2\x2\x411\x412\x3\x2"+ + "\x2\x2\x412\x416\x3\x2\x2\x2\x413\x414\x5\x114\x8B\x2\x414\x415\t\t\x2"+ + "\x2\x415\x417\x3\x2\x2\x2\x416\x413\x3\x2\x2\x2\x416\x417\x3\x2\x2\x2"+ + "\x417\x418\x3\x2\x2\x2\x418\x419\x5\x114\x8B\x2\x419\x41A\a\x39\x2\x2"+ + "\x41A\x41B\x5\x114\x8B\x2\x41B\x427\x5\xB0Y\x2\x41C\x41D\x5\x114\x8B\x2"+ + "\x41D\x41F\a\x1D\x2\x2\x41E\x420\x5\x114\x8B\x2\x41F\x41E\x3\x2\x2\x2"+ + "\x41F\x420\x3\x2\x2\x2\x420\x421\x3\x2\x2\x2\x421\x423\a\xD0\x2\x2\x422"+ + "\x424\x5\x114\x8B\x2\x423\x422\x3\x2\x2\x2\x423\x424\x3\x2\x2\x2\x424"+ + "\x425\x3\x2\x2\x2\x425\x426\x5\x9CO\x2\x426\x428\x3\x2\x2\x2\x427\x41C"+ + "\x3\x2\x2\x2\x427\x428\x3\x2\x2\x2\x428g\x3\x2\x2\x2\x429\x436\x5j\x36"+ + "\x2\x42A\x42C\x5\x114\x8B\x2\x42B\x42A\x3\x2\x2\x2\x42B\x42C\x3\x2\x2"+ + "\x2\x42C\x42D\x3\x2\x2\x2\x42D\x42F\t\n\x2\x2\x42E\x430\x5\x114\x8B\x2"+ + "\x42F\x42E\x3\x2\x2\x2\x42F\x430\x3\x2\x2\x2\x430\x432\x3\x2\x2\x2\x431"+ + "\x433\x5j\x36\x2\x432\x431\x3\x2\x2\x2\x432\x433\x3\x2\x2\x2\x433\x435"+ + "\x3\x2\x2\x2\x434\x42B\x3\x2\x2\x2\x435\x438\x3\x2\x2\x2\x436\x434\x3"+ + "\x2\x2\x2\x436\x437\x3\x2\x2\x2\x437\x44B\x3\x2\x2\x2\x438\x436\x3\x2"+ + "\x2\x2\x439\x43B\x5j\x36\x2\x43A\x439\x3\x2\x2\x2\x43A\x43B\x3\x2\x2\x2"+ + "\x43B\x446\x3\x2\x2\x2\x43C\x43E\x5\x114\x8B\x2\x43D\x43C\x3\x2\x2\x2"+ + "\x43D\x43E\x3\x2\x2\x2\x43E\x43F\x3\x2\x2\x2\x43F\x441\t\n\x2\x2\x440"+ + "\x442\x5\x114\x8B\x2\x441\x440\x3\x2\x2\x2\x441\x442\x3\x2\x2\x2\x442"+ + "\x444\x3\x2\x2\x2\x443\x445\x5j\x36\x2\x444\x443\x3\x2\x2\x2\x444\x445"+ + "\x3\x2\x2\x2\x445\x447\x3\x2\x2\x2\x446\x43D\x3\x2\x2\x2\x447\x448\x3"+ + "\x2\x2\x2\x448\x446\x3\x2\x2\x2\x448\x449\x3\x2\x2\x2\x449\x44B\x3\x2"+ + "\x2\x2\x44A\x429\x3\x2\x2\x2\x44A\x43A\x3\x2\x2\x2\x44Bi\x3\x2\x2\x2\x44C"+ + "\x45E\x5\x9CO\x2\x44D\x45B\t\v\x2\x2\x44E\x450\x5\x114\x8B\x2\x44F\x44E"+ + "\x3\x2\x2\x2\x44F\x450\x3\x2\x2\x2\x450\x451\x3\x2\x2\x2\x451\x453\a\xD4"+ + "\x2\x2\x452\x454\x5\x114\x8B\x2\x453\x452\x3\x2\x2\x2\x453\x454\x3\x2"+ + "\x2\x2\x454\x455\x3\x2\x2\x2\x455\x457\x5\xCCg\x2\x456\x458\x5\x114\x8B"+ + "\x2\x457\x456\x3\x2\x2\x2\x457\x458\x3\x2\x2\x2\x458\x459\x3\x2\x2\x2"+ + "\x459\x45A\a\xDB\x2\x2\x45A\x45C\x3\x2\x2\x2\x45B\x44F\x3\x2\x2\x2\x45B"+ + "\x45C\x3\x2\x2\x2\x45C\x45E\x3\x2\x2\x2\x45D\x44C\x3\x2\x2\x2\x45D\x44D"+ + "\x3\x2\x2\x2\x45Ek\x3\x2\x2\x2\x45F\x460\a\x9E\x2\x2\x460\x461\x5\x114"+ + "\x8B\x2\x461\x463\x5\xB0Y\x2\x462\x464\x5\x114\x8B\x2\x463\x462\x3\x2"+ + "\x2\x2\x463\x464\x3\x2\x2\x2\x464\x465\x3\x2\x2\x2\x465\x46A\a)\x2\x2"+ + "\x466\x468\x5\x114\x8B\x2\x467\x466\x3\x2\x2\x2\x467\x468\x3\x2\x2\x2"+ + "\x468\x469\x3\x2\x2\x2\x469\x46B\x5h\x35\x2\x46A\x467\x3\x2\x2\x2\x46A"+ + "\x46B\x3\x2\x2\x2\x46Bm\x3\x2\x2\x2\x46C\x46D\x5\xF6|\x2\x46D\x46E\x5"+ + "\x114\x8B\x2\x46E\x470\x3\x2\x2\x2\x46F\x46C\x3\x2\x2\x2\x46F\x470\x3"+ + "\x2\x2\x2\x470\x473\x3\x2\x2\x2\x471\x472\a\xB6\x2\x2\x472\x474\x5\x114"+ + "\x8B\x2\x473\x471\x3\x2\x2\x2\x473\x474\x3\x2\x2\x2\x474\x475\x3\x2\x2"+ + "\x2\x475\x476\a\xA0\x2\x2\x476\x477\x5\x114\x8B\x2\x477\x479\x5@!\x2\x478"+ + "\x47A\x5\xF4{\x2\x479\x478\x3\x2\x2\x2\x479\x47A\x3\x2\x2\x2\x47A\x47F"+ + "\x3\x2\x2\x2\x47B\x47D\x5\x114\x8B\x2\x47C\x47B\x3\x2\x2\x2\x47C\x47D"+ + "\x3\x2\x2\x2\x47D\x47E\x3\x2\x2\x2\x47E\x480\x5\xD2j\x2\x47F\x47C\x3\x2"+ + "\x2\x2\x47F\x480\x3\x2\x2\x2\x480\x484\x3\x2\x2\x2\x481\x482\x5\x114\x8B"+ + "\x2\x482\x483\x5\xE0q\x2\x483\x485\x3\x2\x2\x2\x484\x481\x3\x2\x2\x2\x484"+ + "\x485\x3\x2\x2\x2\x485\x486\x3\x2\x2\x2\x486\x488\x5\x100\x81\x2\x487"+ + "\x489\x5\x1E\x10\x2\x488\x487\x3\x2\x2\x2\x488\x489\x3\x2\x2\x2\x489\x48A"+ + "\x3\x2\x2\x2\x48A\x48B\a_\x2\x2\x48Bo\x3\x2\x2\x2\x48C\x48D\x5\xF6|\x2"+ + "\x48D\x48E\x5\x114\x8B\x2\x48E\x490\x3\x2\x2\x2\x48F\x48C\x3\x2\x2\x2"+ + "\x48F\x490\x3\x2\x2\x2\x490\x493\x3\x2\x2\x2\x491\x492\a\xB6\x2\x2\x492"+ + "\x494\x5\x114\x8B\x2\x493\x491\x3\x2\x2\x2\x493\x494\x3\x2\x2\x2\x494"+ + "\x495\x3\x2\x2\x2\x495\x496\a\xA2\x2\x2\x496\x497\x5\x114\x8B\x2\x497"+ + "\x49C\x5\x94K\x2\x498\x49A\x5\x114\x8B\x2\x499\x498\x3\x2\x2\x2\x499\x49A"+ + "\x3\x2\x2\x2\x49A\x49B\x3\x2\x2\x2\x49B\x49D\x5\xD2j\x2\x49C\x499\x3\x2"+ + "\x2\x2\x49C\x49D\x3\x2\x2\x2\x49D\x49E\x3\x2\x2\x2\x49E\x4A0\x5\x100\x81"+ + "\x2\x49F\x4A1\x5\x1E\x10\x2\x4A0\x49F\x3\x2\x2\x2\x4A0\x4A1\x3\x2\x2\x2"+ + "\x4A1\x4A2\x3\x2\x2\x2\x4A2\x4A3\a_\x2\x2\x4A3q\x3\x2\x2\x2\x4A4\x4A5"+ + "\x5\xF6|\x2\x4A5\x4A6\x5\x114\x8B\x2\x4A6\x4A8\x3\x2\x2\x2\x4A7\x4A4\x3"+ + "\x2\x2\x2\x4A7\x4A8\x3\x2\x2\x2\x4A8\x4AB\x3\x2\x2\x2\x4A9\x4AA\a\xB6"+ + "\x2\x2\x4AA\x4AC\x5\x114\x8B\x2\x4AB\x4A9\x3\x2\x2\x2\x4AB\x4AC\x3\x2"+ + "\x2\x2\x4AC\x4AD\x3\x2\x2\x2\x4AD\x4AE\a\xA1\x2\x2\x4AE\x4AF\x5\x114\x8B"+ + "\x2\x4AF\x4B4\x5\x94K\x2\x4B0\x4B2\x5\x114\x8B\x2\x4B1\x4B0\x3\x2\x2\x2"+ + "\x4B1\x4B2\x3\x2\x2\x2\x4B2\x4B3\x3\x2\x2\x2\x4B3\x4B5\x5\xD2j\x2\x4B4"+ + "\x4B1\x3\x2\x2\x2\x4B4\x4B5\x3\x2\x2\x2\x4B5\x4B6\x3\x2\x2\x2\x4B6\x4B8"+ + "\x5\x100\x81\x2\x4B7\x4B9\x5\x1E\x10\x2\x4B8\x4B7\x3\x2\x2\x2\x4B8\x4B9"+ + "\x3\x2\x2\x2\x4B9\x4BA\x3\x2\x2\x2\x4BA\x4BB\a_\x2\x2\x4BBs\x3\x2\x2\x2"+ + "\x4BC\x4BD\a\xA5\x2\x2\x4BD\x4BE\x5\x114\x8B\x2\x4BE\x4C0\x5\xB0Y\x2\x4BF"+ + "\x4C1\x5\x114\x8B\x2\x4C0\x4BF\x3\x2\x2\x2\x4C0\x4C1\x3\x2\x2\x2\x4C1"+ + "\x4C2\x3\x2\x2\x2\x4C2\x4C4\a)\x2\x2\x4C3\x4C5\x5\x114\x8B\x2\x4C4\x4C3"+ + "\x3\x2\x2\x2\x4C4\x4C5\x3\x2\x2\x2\x4C5\x4C7\x3\x2\x2\x2\x4C6\x4C8\x5"+ + "\x9CO\x2\x4C7\x4C6\x3\x2\x2\x2\x4C7\x4C8\x3\x2\x2\x2\x4C8\x4CA\x3\x2\x2"+ + "\x2\x4C9\x4CB\x5\x114\x8B\x2\x4CA\x4C9\x3\x2\x2\x2\x4CA\x4CB\x3\x2\x2"+ + "\x2\x4CB\x4CC\x3\x2\x2\x2\x4CC\x4CE\a)\x2\x2\x4CD\x4CF\x5\x114\x8B\x2"+ + "\x4CE\x4CD\x3\x2\x2\x2\x4CE\x4CF\x3\x2\x2\x2\x4CF\x4D0\x3\x2\x2\x2\x4D0"+ + "\x4D1\x5\x9CO\x2\x4D1u\x3\x2\x2\x2\x4D2\x4D3\a\xA7\x2\x2\x4D3\x4D4\x5"+ + "\x114\x8B\x2\x4D4\x4E3\x5\xDEp\x2\x4D5\x4D7\x5\x114\x8B\x2\x4D6\x4D5\x3"+ + "\x2\x2\x2\x4D6\x4D7\x3\x2\x2\x2\x4D7\x4D8\x3\x2\x2\x2\x4D8\x4DA\a\xD4"+ + "\x2\x2\x4D9\x4DB\x5\x114\x8B\x2\x4DA\x4D9\x3\x2\x2\x2\x4DA\x4DB\x3\x2"+ + "\x2\x2\x4DB\x4E0\x3\x2\x2\x2\x4DC\x4DE\x5\xCCg\x2\x4DD\x4DF\x5\x114\x8B"+ + "\x2\x4DE\x4DD\x3\x2\x2\x2\x4DE\x4DF\x3\x2\x2\x2\x4DF\x4E1\x3\x2\x2\x2"+ + "\x4E0\x4DC\x3\x2\x2\x2\x4E0\x4E1\x3\x2\x2\x2\x4E1\x4E2\x3\x2\x2\x2\x4E2"+ + "\x4E4\a\xDB\x2\x2\x4E3\x4D6\x3\x2\x2\x2\x4E3\x4E4\x3\x2\x2\x2\x4E4w\x3"+ + "\x2\x2\x2\x4E5\x4E6\a\xAA\x2\x2\x4E6\x4E9\x5\x114\x8B\x2\x4E7\x4E8\a\x9D"+ + "\x2\x2\x4E8\x4EA\x5\x114\x8B\x2\x4E9\x4E7\x3\x2\x2\x2\x4E9\x4EA\x3\x2"+ + "\x2\x2\x4EA\x4EB\x3\x2\x2\x2\x4EB\x4F6\x5z>\x2\x4EC\x4EE\x5\x114\x8B\x2"+ + "\x4ED\x4EC\x3\x2\x2\x2\x4ED\x4EE\x3\x2\x2\x2\x4EE\x4EF\x3\x2\x2\x2\x4EF"+ + "\x4F1\a)\x2\x2\x4F0\x4F2\x5\x114\x8B\x2\x4F1\x4F0\x3\x2\x2\x2\x4F1\x4F2"+ + "\x3\x2\x2\x2\x4F2\x4F3\x3\x2\x2\x2\x4F3\x4F5\x5z>\x2\x4F4\x4ED\x3\x2\x2"+ + "\x2\x4F5\x4F8\x3\x2\x2\x2\x4F6\x4F4\x3\x2\x2\x2\x4F6\x4F7\x3\x2\x2\x2"+ + "\x4F7y\x3\x2\x2\x2\x4F8\x4F6\x3\x2\x2\x2\x4F9\x4FB\x5\xBC_\x2\x4FA\x4FC"+ + "\x5\x114\x8B\x2\x4FB\x4FA\x3\x2\x2\x2\x4FB\x4FC\x3\x2\x2\x2\x4FC\x4FD"+ + "\x3\x2\x2\x2\x4FD\x4FF\a\xD4\x2\x2\x4FE\x500\x5\x114\x8B\x2\x4FF\x4FE"+ + "\x3\x2\x2\x2\x4FF\x500\x3\x2\x2\x2\x500\x501\x3\x2\x2\x2\x501\x503\x5"+ + "\xD8m\x2\x502\x504\x5\x114\x8B\x2\x503\x502\x3\x2\x2\x2\x503\x504\x3\x2"+ + "\x2\x2\x504\x505\x3\x2\x2\x2\x505\x509\a\xDB\x2\x2\x506\x507\x5\x114\x8B"+ + "\x2\x507\x508\x5\xE0q\x2\x508\x50A\x3\x2\x2\x2\x509\x506\x3\x2\x2\x2\x509"+ + "\x50A\x3\x2\x2\x2\x50A{\x3\x2\x2\x2\x50B\x50C\a\xAC\x2\x2\x50C}\x3\x2"+ + "\x2\x2\x50D\x513\a\xAD\x2\x2\x50E\x511\x5\x114\x8B\x2\x50F\x512\a\x8C"+ + "\x2\x2\x510\x512\x5\x9CO\x2\x511\x50F\x3\x2\x2\x2\x511\x510\x3\x2\x2\x2"+ + "\x512\x514\x3\x2\x2\x2\x513\x50E\x3\x2\x2\x2\x513\x514\x3\x2\x2\x2\x514"+ + "\x7F\x3\x2\x2\x2\x515\x516\a\xAE\x2\x2\x516\x81\x3\x2\x2\x2\x517\x518"+ + "\a\xAF\x2\x2\x518\x519\x5\x114\x8B\x2\x519\x51B\x5\x9CO\x2\x51A\x51C\x5"+ + "\x114\x8B\x2\x51B\x51A\x3\x2\x2\x2\x51B\x51C\x3\x2\x2\x2\x51C\x51D\x3"+ + "\x2\x2\x2\x51D\x51F\a\xD0\x2\x2\x51E\x520\x5\x114\x8B\x2\x51F\x51E\x3"+ + "\x2\x2\x2\x51F\x520\x3\x2\x2\x2\x520\x521\x3\x2\x2\x2\x521\x522\x5\x9C"+ + "O\x2\x522\x83\x3\x2\x2\x2\x523\x524\a\xB8\x2\x2\x524\x85\x3\x2\x2\x2\x525"+ + "\x526\a\xB0\x2\x2\x526\x527\x5\x114\x8B\x2\x527\x529\x5\xB0Y\x2\x528\x52A"+ + "\x5\x114\x8B\x2\x529\x528\x3\x2\x2\x2\x529\x52A\x3\x2\x2\x2\x52A\x52B"+ + "\x3\x2\x2\x2\x52B\x52D\a)\x2\x2\x52C\x52E\x5\x114\x8B\x2\x52D\x52C\x3"+ + "\x2\x2\x2\x52D\x52E\x3\x2\x2\x2\x52E\x52F\x3\x2\x2\x2\x52F\x530\x5\x9C"+ + "O\x2\x530\x87\x3\x2\x2\x2\x531\x532\a\xB1\x2\x2\x532\x533\x5\x114\x8B"+ + "\x2\x533\x534\a\x41\x2\x2\x534\x535\x5\x114\x8B\x2\x535\x536\x5\x9CO\x2"+ + "\x536\x53A\x5\x100\x81\x2\x537\x539\x5\x8CG\x2\x538\x537\x3\x2\x2\x2\x539"+ + "\x53C\x3\x2\x2\x2\x53A\x538\x3\x2\x2\x2\x53A\x53B\x3\x2\x2\x2\x53B\x53D"+ + "\x3\x2\x2\x2\x53C\x53A\x3\x2\x2\x2\x53D\x53E\a`\x2\x2\x53E\x89\x3\x2\x2"+ + "\x2\x53F\x541\a|\x2\x2\x540\x542\x5\x114\x8B\x2\x541\x540\x3\x2\x2\x2"+ + "\x541\x542\x3\x2\x2\x2\x542\x543\x3\x2\x2\x2\x543\x545\x5\xE4s\x2\x544"+ + "\x546\x5\x114\x8B\x2\x545\x544\x3\x2\x2\x2\x545\x546\x3\x2\x2\x2\x546"+ + "\x547\x3\x2\x2\x2\x547\x548\x5\x9CO\x2\x548\x551\x3\x2\x2\x2\x549\x54A"+ + "\x5\x9CO\x2\x54A\x54B\x5\x114\x8B\x2\x54B\x54C\a\xBE\x2\x2\x54C\x54D\x5"+ + "\x114\x8B\x2\x54D\x54E\x5\x9CO\x2\x54E\x551\x3\x2\x2\x2\x54F\x551\x5\x9C"+ + "O\x2\x550\x53F\x3\x2\x2\x2\x550\x549\x3\x2\x2\x2\x550\x54F\x3\x2\x2\x2"+ + "\x551\x8B\x3\x2\x2\x2\x552\x553\a\x41\x2\x2\x553\x554\x5\x114\x8B\x2\x554"+ + "\x555\x5\x8EH\x2\x555\x557\x5\x100\x81\x2\x556\x558\x5\x1E\x10\x2\x557"+ + "\x556\x3\x2\x2\x2\x557\x558\x3\x2\x2\x2\x558\x8D\x3\x2\x2\x2\x559\x569"+ + "\aY\x2\x2\x55A\x565\x5\x8A\x46\x2\x55B\x55D\x5\x114\x8B\x2\x55C\x55B\x3"+ + "\x2\x2\x2\x55C\x55D\x3\x2\x2\x2\x55D\x55E\x3\x2\x2\x2\x55E\x560\a)\x2"+ + "\x2\x55F\x561\x5\x114\x8B\x2\x560\x55F\x3\x2\x2\x2\x560\x561\x3\x2\x2"+ + "\x2\x561\x562\x3\x2\x2\x2\x562\x564\x5\x8A\x46\x2\x563\x55C\x3\x2\x2\x2"+ + "\x564\x567\x3\x2\x2\x2\x565\x563\x3\x2\x2\x2\x565\x566\x3\x2\x2\x2\x566"+ + "\x569\x3\x2\x2\x2\x567\x565\x3\x2\x2\x2\x568\x559\x3\x2\x2\x2\x568\x55A"+ + "\x3\x2\x2\x2\x569\x8F\x3\x2\x2\x2\x56A\x56B\a\xB2\x2\x2\x56B\x56C\x5\x114"+ + "\x8B\x2\x56C\x56E\x5\x9CO\x2\x56D\x56F\x5\x114\x8B\x2\x56E\x56D\x3\x2"+ + "\x2\x2\x56E\x56F\x3\x2\x2\x2\x56F\x570\x3\x2\x2\x2\x570\x572\a\xD0\x2"+ + "\x2\x571\x573\x5\x114\x8B\x2\x572\x571\x3\x2\x2\x2\x572\x573\x3\x2\x2"+ + "\x2\x573\x574\x3\x2\x2\x2\x574\x575\x5\x9CO\x2\x575\x91\x3\x2\x2\x2\x576"+ + "\x577\x5\xF6|\x2\x577\x578\x5\x114\x8B\x2\x578\x57A\x3\x2\x2\x2\x579\x576"+ + "\x3\x2\x2\x2\x579\x57A\x3\x2\x2\x2\x57A\x57D\x3\x2\x2\x2\x57B\x57C\a\xB6"+ + "\x2\x2\x57C\x57E\x5\x114\x8B\x2\x57D\x57B\x3\x2\x2\x2\x57D\x57E\x3\x2"+ + "\x2\x2\x57E\x57F\x3\x2\x2\x2\x57F\x581\a\xBA\x2\x2\x580\x582\x5\x114\x8B"+ + "\x2\x581\x580\x3\x2\x2\x2\x581\x582\x3\x2\x2\x2\x582\x583\x3\x2\x2\x2"+ + "\x583\x588\x5\x94K\x2\x584\x586\x5\x114\x8B\x2\x585\x584\x3\x2\x2\x2\x585"+ + "\x586\x3\x2\x2\x2\x586\x587\x3\x2\x2\x2\x587\x589\x5\xD2j\x2\x588\x585"+ + "\x3\x2\x2\x2\x588\x589\x3\x2\x2\x2\x589\x58A\x3\x2\x2\x2\x58A\x58C\x5"+ + "\x100\x81\x2\x58B\x58D\x5\x1E\x10\x2\x58C\x58B\x3\x2\x2\x2\x58C\x58D\x3"+ + "\x2\x2\x2\x58D\x58E\x3\x2\x2\x2\x58E\x58F\a\x61\x2\x2\x58F\x93\x3\x2\x2"+ + "\x2\x590\x591\x5\xDEp\x2\x591\x95\x3\x2\x2\x2\x592\x593\x5\xF6|\x2\x593"+ + "\x594\x5\x114\x8B\x2\x594\x596\x3\x2\x2\x2\x595\x592\x3\x2\x2\x2\x595"+ + "\x596\x3\x2\x2\x2\x596\x597\x3\x2\x2\x2\x597\x598\a\xC0\x2\x2\x598\x599"+ + "\x5\x114\x8B\x2\x599\x59A\x5\xDEp\x2\x59A\x59E\x5\x100\x81\x2\x59B\x59D"+ + "\x5\x98M\x2\x59C\x59B\x3\x2\x2\x2\x59D\x5A0\x3\x2\x2\x2\x59E\x59C\x3\x2"+ + "\x2\x2\x59E\x59F\x3\x2\x2\x2\x59F\x5A1\x3\x2\x2\x2\x5A0\x59E\x3\x2\x2"+ + "\x2\x5A1\x5A2\a\x62\x2\x2\x5A2\x97\x3\x2\x2\x2\x5A3\x5B2\x5\xDEp\x2\x5A4"+ + "\x5A6\x5\x114\x8B\x2\x5A5\x5A4\x3\x2\x2\x2\x5A5\x5A6\x3\x2\x2\x2\x5A6"+ + "\x5A7\x3\x2\x2\x2\x5A7\x5AC\a\xD4\x2\x2\x5A8\x5AA\x5\x114\x8B\x2\x5A9"+ + "\x5A8\x3\x2\x2\x2\x5A9\x5AA\x3\x2\x2\x2\x5AA\x5AB\x3\x2\x2\x2\x5AB\x5AD"+ + "\x5\xD8m\x2\x5AC\x5A9\x3\x2\x2\x2\x5AC\x5AD\x3\x2\x2\x2\x5AD\x5AF\x3\x2"+ + "\x2\x2\x5AE\x5B0\x5\x114\x8B\x2\x5AF\x5AE\x3\x2\x2\x2\x5AF\x5B0\x3\x2"+ + "\x2\x2\x5B0\x5B1\x3\x2\x2\x2\x5B1\x5B3\a\xDB\x2\x2\x5B2\x5A5\x3\x2\x2"+ + "\x2\x5B2\x5B3\x3\x2\x2\x2\x5B3\x5B7\x3\x2\x2\x2\x5B4\x5B5\x5\x114\x8B"+ + "\x2\x5B5\x5B6\x5\xE0q\x2\x5B6\x5B8\x3\x2\x2\x2\x5B7\x5B4\x3\x2\x2\x2\x5B7"+ + "\x5B8\x3\x2\x2\x2\x5B8\x5B9\x3\x2\x2\x2\x5B9\x5BA\x5\x100\x81\x2\x5BA"+ + "\x99\x3\x2\x2\x2\x5BB\x5BC\a\xC2\x2\x2\x5BC\x5BD\x5\x114\x8B\x2\x5BD\x5CD"+ + "\x5\xB0Y\x2\x5BE\x5C0\x5\x114\x8B\x2\x5BF\x5BE\x3\x2\x2\x2\x5BF\x5C0\x3"+ + "\x2\x2\x2\x5C0\x5C1\x3\x2\x2\x2\x5C1\x5C3\a)\x2\x2\x5C2\x5C4\x5\x114\x8B"+ + "\x2\x5C3\x5C2\x3\x2\x2\x2\x5C3\x5C4\x3\x2\x2\x2\x5C4\x5C5\x3\x2\x2\x2"+ + "\x5C5\x5CB\x5\x9CO\x2\x5C6\x5C7\x5\x114\x8B\x2\x5C7\x5C8\a\xBE\x2\x2\x5C8"+ + "\x5C9\x5\x114\x8B\x2\x5C9\x5CA\x5\x9CO\x2\x5CA\x5CC\x3\x2\x2\x2\x5CB\x5C6"+ + "\x3\x2\x2\x2\x5CB\x5CC\x3\x2\x2\x2\x5CC\x5CE\x3\x2\x2\x2\x5CD\x5BF\x3"+ + "\x2\x2\x2\x5CD\x5CE\x3\x2\x2\x2\x5CE\x9B\x3\x2\x2\x2\x5CF\x5D0\bO\x1\x2"+ + "\x5D0\x5D2\a\x8D\x2\x2\x5D1\x5D3\x5\x114\x8B\x2\x5D2\x5D1\x3\x2\x2\x2"+ + "\x5D2\x5D3\x3\x2\x2\x2\x5D3\x5D4\x3\x2\x2\x2\x5D4\x5FD\x5\x9CO\x15\x5D5"+ + "\x5D7\a\x34\x2\x2\x5D6\x5D8\x5\x114\x8B\x2\x5D7\x5D6\x3\x2\x2\x2\x5D7"+ + "\x5D8\x3\x2\x2\x2\x5D8\x5D9\x3\x2\x2\x2\x5D9\x5FD\x5\x9CO\x12\x5DA\x5DC"+ + "\x5\xDCo\x2\x5DB\x5DD\x5\x114\x8B\x2\x5DC\x5DB\x3\x2\x2\x2\x5DC\x5DD\x3"+ + "\x2\x2\x2\x5DD\x5DE\x3\x2\x2\x2\x5DE\x5E0\a\xCD\x2\x2\x5DF\x5E1\x5\x114"+ + "\x8B\x2\x5E0\x5DF\x3\x2\x2\x2\x5E0\x5E1\x3\x2\x2\x2\x5E1\x5E2\x3\x2\x2"+ + "\x2\x5E2\x5E3\x5\x9CO\x11\x5E3\x5FD\x3\x2\x2\x2\x5E4\x5E6\a\xD6\x2\x2"+ + "\x5E5\x5E7\x5\x114\x8B\x2\x5E6\x5E5\x3\x2\x2\x2\x5E6\x5E7\x3\x2\x2\x2"+ + "\x5E7\x5E8\x3\x2\x2\x2\x5E8\x5FD\x5\x9CO\xF\x5E9\x5EB\a\x8E\x2\x2\x5EA"+ + "\x5EC\x5\x114\x8B\x2\x5EB\x5EA\x3\x2\x2\x2\x5EB\x5EC\x3\x2\x2\x2\x5EC"+ + "\x5ED\x3\x2\x2\x2\x5ED\x5FD\x5\x9CO\b\x5EE\x5FD\x5\xEEx\x2\x5EF\x5FD\x5"+ + "\xBC_\x2\x5F0\x5F2\a\xD4\x2\x2\x5F1\x5F3\x5\x114\x8B\x2\x5F2\x5F1\x3\x2"+ + "\x2\x2\x5F2\x5F3\x3\x2\x2\x2\x5F3\x5F4\x3\x2\x2\x2\x5F4\x5F6\x5\x9CO\x2"+ + "\x5F5\x5F7\x5\x114\x8B\x2\x5F6\x5F5\x3\x2\x2\x2\x5F6\x5F7\x3\x2\x2\x2"+ + "\x5F7\x5F8\x3\x2\x2\x2\x5F8\x5F9\a\xDB\x2\x2\x5F9\x5FD\x3\x2\x2\x2\x5FA"+ + "\x5FD\x5\x9EP\x2\x5FB\x5FD\x5^\x30\x2\x5FC\x5CF\x3\x2\x2\x2\x5FC\x5D5"+ + "\x3\x2\x2\x2\x5FC\x5DA\x3\x2\x2\x2\x5FC\x5E4\x3\x2\x2\x2\x5FC\x5E9\x3"+ + "\x2\x2\x2\x5FC\x5EE\x3\x2\x2\x2\x5FC\x5EF\x3\x2\x2\x2\x5FC\x5F0\x3\x2"+ + "\x2\x2\x5FC\x5FA\x3\x2\x2\x2\x5FC\x5FB\x3\x2\x2\x2\x5FD\x66C\x3\x2\x2"+ + "\x2\x5FE\x600\f\x10\x2\x2\x5FF\x601\x5\x114\x8B\x2\x600\x5FF\x3\x2\x2"+ + "\x2\x600\x601\x3\x2\x2\x2\x601\x602\x3\x2\x2\x2\x602\x604\a\xDA\x2\x2"+ + "\x603\x605\x5\x114\x8B\x2\x604\x603\x3\x2\x2\x2\x604\x605\x3\x2\x2\x2"+ + "\x605\x606\x3\x2\x2\x2\x606\x66B\x5\x9CO\x11\x607\x609\f\xE\x2\x2\x608"+ + "\x60A\x5\x114\x8B\x2\x609\x608\x3\x2\x2\x2\x609\x60A\x3\x2\x2\x2\x60A"+ + "\x60B\x3\x2\x2\x2\x60B\x60D\t\f\x2\x2\x60C\x60E\x5\x114\x8B\x2\x60D\x60C"+ + "\x3\x2\x2\x2\x60D\x60E\x3\x2\x2\x2\x60E\x60F\x3\x2\x2\x2\x60F\x66B\x5"+ + "\x9CO\xF\x610\x612\f\r\x2\x2\x611\x613\x5\x114\x8B\x2\x612\x611\x3\x2"+ + "\x2\x2\x612\x613\x3\x2\x2\x2\x613\x614\x3\x2\x2\x2\x614\x616\a\xCF\x2"+ + "\x2\x615\x617\x5\x114\x8B\x2\x616\x615\x3\x2\x2\x2\x616\x617\x3\x2\x2"+ + "\x2\x617\x618\x3\x2\x2\x2\x618\x66B\x5\x9CO\xE\x619\x61B\f\f\x2\x2\x61A"+ + "\x61C\x5\x114\x8B\x2\x61B\x61A\x3\x2\x2\x2\x61B\x61C\x3\x2\x2\x2\x61C"+ + "\x61D\x3\x2\x2\x2\x61D\x61F\a\x8B\x2\x2\x61E\x620\x5\x114\x8B\x2\x61F"+ + "\x61E\x3\x2\x2\x2\x61F\x620\x3\x2\x2\x2\x620\x621\x3\x2\x2\x2\x621\x66B"+ + "\x5\x9CO\r\x622\x624\f\v\x2\x2\x623\x625\x5\x114\x8B\x2\x624\x623\x3\x2"+ + "\x2\x2\x624\x625\x3\x2\x2\x2\x625\x626\x3\x2\x2\x2\x626\x628\t\r\x2\x2"+ + "\x627\x629\x5\x114\x8B\x2\x628\x627\x3\x2\x2\x2\x628\x629\x3\x2\x2\x2"+ + "\x629\x62A\x3\x2\x2\x2\x62A\x66B\x5\x9CO\f\x62B\x62D\f\n\x2\x2\x62C\x62E"+ + "\x5\x114\x8B\x2\x62D\x62C\x3\x2\x2\x2\x62D\x62E\x3\x2\x2\x2\x62E\x62F"+ + "\x3\x2\x2\x2\x62F\x631\a\x32\x2\x2\x630\x632\x5\x114\x8B\x2\x631\x630"+ + "\x3\x2\x2\x2\x631\x632\x3\x2\x2\x2\x632\x633\x3\x2\x2\x2\x633\x66B\x5"+ + "\x9CO\v\x634\x636\f\t\x2\x2\x635\x637\x5\x114\x8B\x2\x636\x635\x3\x2\x2"+ + "\x2\x636\x637\x3\x2\x2\x2\x637\x638\x3\x2\x2\x2\x638\x63A\t\xE\x2\x2\x639"+ + "\x63B\x5\x114\x8B\x2\x63A\x639\x3\x2\x2\x2\x63A\x63B\x3\x2\x2\x2\x63B"+ + "\x63C\x3\x2\x2\x2\x63C\x66B\x5\x9CO\n\x63D\x63F\f\a\x2\x2\x63E\x640\x5"+ + "\x114\x8B\x2\x63F\x63E\x3\x2\x2\x2\x63F\x640\x3\x2\x2\x2\x640\x641\x3"+ + "\x2\x2\x2\x641\x643\a\x36\x2\x2\x642\x644\x5\x114\x8B\x2\x643\x642\x3"+ + "\x2\x2\x2\x643\x644\x3\x2\x2\x2\x644\x645\x3\x2\x2\x2\x645\x66B\x5\x9C"+ + "O\b\x646\x648\f\x6\x2\x2\x647\x649\x5\x114\x8B\x2\x648\x647\x3\x2\x2\x2"+ + "\x648\x649\x3\x2\x2\x2\x649\x64A\x3\x2\x2\x2\x64A\x64C\a\x9A\x2\x2\x64B"+ + "\x64D\x5\x114\x8B\x2\x64C\x64B\x3\x2\x2\x2\x64C\x64D\x3\x2\x2\x2\x64D"+ + "\x64E\x3\x2\x2\x2\x64E\x66B\x5\x9CO\a\x64F\x651\f\x5\x2\x2\x650\x652\x5"+ + "\x114\x8B\x2\x651\x650\x3\x2\x2\x2\x651\x652\x3\x2\x2\x2\x652\x653\x3"+ + "\x2\x2\x2\x653\x655\a\xCC\x2\x2\x654\x656\x5\x114\x8B\x2\x655\x654\x3"+ + "\x2\x2\x2\x655\x656\x3\x2\x2\x2\x656\x657\x3\x2\x2\x2\x657\x66B\x5\x9C"+ + "O\x6\x658\x65A\f\x4\x2\x2\x659\x65B\x5\x114\x8B\x2\x65A\x659\x3\x2\x2"+ + "\x2\x65A\x65B\x3\x2\x2\x2\x65B\x65C\x3\x2\x2\x2\x65C\x65E\a\x66\x2\x2"+ + "\x65D\x65F\x5\x114\x8B\x2\x65E\x65D\x3\x2\x2\x2\x65E\x65F\x3\x2\x2\x2"+ + "\x65F\x660\x3\x2\x2\x2\x660\x66B\x5\x9CO\x5\x661\x663\f\x3\x2\x2\x662"+ + "\x664\x5\x114\x8B\x2\x663\x662\x3\x2\x2\x2\x663\x664\x3\x2\x2\x2\x664"+ + "\x665\x3\x2\x2\x2\x665\x667\ax\x2\x2\x666\x668\x5\x114\x8B\x2\x667\x666"+ + "\x3\x2\x2\x2\x667\x668\x3\x2\x2\x2\x668\x669\x3\x2\x2\x2\x669\x66B\x5"+ + "\x9CO\x4\x66A\x5FE\x3\x2\x2\x2\x66A\x607\x3\x2\x2\x2\x66A\x610\x3\x2\x2"+ + "\x2\x66A\x619\x3\x2\x2\x2\x66A\x622\x3\x2\x2\x2\x66A\x62B\x3\x2\x2\x2"+ + "\x66A\x634\x3\x2\x2\x2\x66A\x63D\x3\x2\x2\x2\x66A\x646\x3\x2\x2\x2\x66A"+ + "\x64F\x3\x2\x2\x2\x66A\x658\x3\x2\x2\x2\x66A\x661\x3\x2\x2\x2\x66B\x66E"+ + "\x3\x2\x2\x2\x66C\x66A\x3\x2\x2\x2\x66C\x66D\x3\x2\x2\x2\x66D\x9D\x3\x2"+ + "\x2\x2\x66E\x66C\x3\x2\x2\x2\x66F\x670\a\xC1\x2\x2\x670\x671\x5\x114\x8B"+ + "\x2\x671\x677\x5\x9CO\x2\x672\x673\x5\x114\x8B\x2\x673\x674\a|\x2\x2\x674"+ + "\x675\x5\x114\x8B\x2\x675\x676\x5\xF2z\x2\x676\x678\x3\x2\x2\x2\x677\x672"+ + "\x3\x2\x2\x2\x677\x678\x3\x2\x2\x2\x678\x9F\x3\x2\x2\x2\x679\x67D\aU\x2"+ + "\x2\x67A\x67D\a\xB6\x2\x2\x67B\x67D\x5\xF6|\x2\x67C\x679\x3\x2\x2\x2\x67C"+ + "\x67A\x3\x2\x2\x2\x67C\x67B\x3\x2\x2\x2\x67D\x67E\x3\x2\x2\x2\x67E\x681"+ + "\x5\x114\x8B\x2\x67F\x680\a\xCA\x2\x2\x680\x682\x5\x114\x8B\x2\x681\x67F"+ + "\x3\x2\x2\x2\x681\x682\x3\x2\x2\x2\x682\x683\x3\x2\x2\x2\x683\x684\x5"+ + "\xA2R\x2\x684\xA1\x3\x2\x2\x2\x685\x690\x5\xA4S\x2\x686\x688\x5\x114\x8B"+ + "\x2\x687\x686\x3\x2\x2\x2\x687\x688\x3\x2\x2\x2\x688\x689\x3\x2\x2\x2"+ + "\x689\x68B\a)\x2\x2\x68A\x68C\x5\x114\x8B\x2\x68B\x68A\x3\x2\x2\x2\x68B"+ + "\x68C\x3\x2\x2\x2\x68C\x68D\x3\x2\x2\x2\x68D\x68F\x5\xA4S\x2\x68E\x687"+ + "\x3\x2\x2\x2\x68F\x692\x3\x2\x2\x2\x690\x68E\x3\x2\x2\x2\x690\x691\x3"+ + "\x2\x2\x2\x691\xA3\x3\x2\x2\x2\x692\x690\x3\x2\x2\x2\x693\x6A5\x5\xDE"+ + "p\x2\x694\x696\x5\x114\x8B\x2\x695\x694\x3\x2\x2\x2\x695\x696\x3\x2\x2"+ + "\x2\x696\x697\x3\x2\x2\x2\x697\x699\a\xD4\x2\x2\x698\x69A\x5\x114\x8B"+ + "\x2\x699\x698\x3\x2\x2\x2\x699\x69A\x3\x2\x2\x2\x69A\x69F\x3\x2\x2\x2"+ + "\x69B\x69D\x5\xD8m\x2\x69C\x69E\x5\x114\x8B\x2\x69D\x69C\x3\x2\x2\x2\x69D"+ + "\x69E\x3\x2\x2\x2\x69E\x6A0\x3\x2\x2\x2\x69F\x69B\x3\x2\x2\x2\x69F\x6A0"+ + "\x3\x2\x2\x2\x6A0\x6A1\x3\x2\x2\x2\x6A1\x6A3\a\xDB\x2\x2\x6A2\x6A4\x5"+ + "\x114\x8B\x2\x6A3\x6A2\x3\x2\x2\x2\x6A3\x6A4\x3\x2\x2\x2\x6A4\x6A6\x3"+ + "\x2\x2\x2\x6A5\x695\x3\x2\x2\x2\x6A5\x6A6\x3\x2\x2\x2\x6A6\x6A8\x3\x2"+ + "\x2\x2\x6A7\x6A9\x5\xF4{\x2\x6A8\x6A7\x3\x2\x2\x2\x6A8\x6A9\x3\x2\x2\x2"+ + "\x6A9\x6AD\x3\x2\x2\x2\x6AA\x6AB\x5\x114\x8B\x2\x6AB\x6AC\x5\xE0q\x2\x6AC"+ + "\x6AE\x3\x2\x2\x2\x6AD\x6AA\x3\x2\x2\x2\x6AD\x6AE\x3\x2\x2\x2\x6AE\xA5"+ + "\x3\x2\x2\x2\x6AF\x6B0\a\xC7\x2\x2\x6B0\x6B1\x5\x114\x8B\x2\x6B1\x6B2"+ + "\x5\x9CO\x2\x6B2\x6B4\x5\x100\x81\x2\x6B3\x6B5\x5\x1E\x10\x2\x6B4\x6B3"+ + "\x3\x2\x2\x2\x6B4\x6B5\x3\x2\x2\x2\x6B5\x6B6\x3\x2\x2\x2\x6B6\x6B7\a\xC6"+ + "\x2\x2\x6B7\xA7\x3\x2\x2\x2\x6B8\x6B9\a\xC8\x2\x2\x6B9\x6BA\x5\x114\x8B"+ + "\x2\x6BA\x6BC\x5\xB0Y\x2\x6BB\x6BD\x5\x114\x8B\x2\x6BC\x6BB\x3\x2\x2\x2"+ + "\x6BC\x6BD\x3\x2\x2\x2\x6BD\x6BE\x3\x2\x2\x2\x6BE\x6C0\a)\x2\x2\x6BF\x6C1"+ + "\x5\x114\x8B\x2\x6C0\x6BF\x3\x2\x2\x2\x6C0\x6C1\x3\x2\x2\x2\x6C1\x6C2"+ + "\x3\x2\x2\x2\x6C2\x6C3\x5\x9CO\x2\x6C3\xA9\x3\x2\x2\x2\x6C4\x6C5\a\xC9"+ + "\x2\x2\x6C5\x6C6\x5\x114\x8B\x2\x6C6\x6C7\x5\xACW\x2\x6C7\x6C9\x5\x100"+ + "\x81\x2\x6C8\x6CA\x5\x1E\x10\x2\x6C9\x6C8\x3\x2\x2\x2\x6C9\x6CA\x3\x2"+ + "\x2\x2\x6CA\x6CB\x3\x2\x2\x2\x6CB\x6CC\a\x63\x2\x2\x6CC\xAB\x3\x2\x2\x2"+ + "\x6CD\x6CE\x5\x9CO\x2\x6CE\xAD\x3\x2\x2\x2\x6CF\x6D0\a\xCB\x2\x2\x6D0"+ + "\x6D1\x5\x114\x8B\x2\x6D1\x6D3\x5\xB0Y\x2\x6D2\x6D4\x5\x114\x8B\x2\x6D3"+ + "\x6D2\x3\x2\x2\x2\x6D3\x6D4\x3\x2\x2\x2\x6D4\x6D5\x3\x2\x2\x2\x6D5\x6DA"+ + "\a)\x2\x2\x6D6\x6D8\x5\x114\x8B\x2\x6D7\x6D6\x3\x2\x2\x2\x6D7\x6D8\x3"+ + "\x2\x2\x2\x6D8\x6D9\x3\x2\x2\x2\x6D9\x6DB\x5h\x35\x2\x6DA\x6D7\x3\x2\x2"+ + "\x2\x6DA\x6DB\x3\x2\x2\x2\x6DB\xAF\x3\x2\x2\x2\x6DC\x6DE\a.\x2\x2\x6DD"+ + "\x6DC\x3\x2\x2\x2\x6DD\x6DE\x3\x2\x2\x2\x6DE\x6DF\x3\x2\x2\x2\x6DF\x6E0"+ + "\x5\x9CO\x2\x6E0\xB1\x3\x2\x2\x2\x6E1\x6E2\a@\x2\x2\x6E2\x6E3\x5\x114"+ + "\x8B\x2\x6E3\x6E4\x5\xB4[\x2\x6E4\xB3\x3\x2\x2\x2\x6E5\x6E7\x5\xBC_\x2"+ + "\x6E6\x6E5\x3\x2\x2\x2\x6E6\x6E7\x3\x2\x2\x2\x6E7\x6E8\x3\x2\x2\x2\x6E8"+ + "\x6E9\a-\x2\x2\x6E9\x6EB\x5\xDEp\x2\x6EA\x6EC\x5\xF4{\x2\x6EB\x6EA\x3"+ + "\x2\x2\x2\x6EB\x6EC\x3\x2\x2\x2\x6EC\x6FA\x3\x2\x2\x2\x6ED\x6EF\x5\x114"+ + "\x8B\x2\x6EE\x6ED\x3\x2\x2\x2\x6EE\x6EF\x3\x2\x2\x2\x6EF\x6F0\x3\x2\x2"+ + "\x2\x6F0\x6F2\a\xD4\x2\x2\x6F1\x6F3\x5\x114\x8B\x2\x6F2\x6F1\x3\x2\x2"+ + "\x2\x6F2\x6F3\x3\x2\x2\x2\x6F3\x6F4\x3\x2\x2\x2\x6F4\x6F6\x5\xCCg\x2\x6F5"+ + "\x6F7\x5\x114\x8B\x2\x6F6\x6F5\x3\x2\x2\x2\x6F6\x6F7\x3\x2\x2\x2\x6F7"+ + "\x6F8\x3\x2\x2\x2\x6F8\x6F9\a\xDB\x2\x2\x6F9\x6FB\x3\x2\x2\x2\x6FA\x6EE"+ + "\x3\x2\x2\x2\x6FA\x6FB\x3\x2\x2\x2\x6FB\x705\x3\x2\x2\x2\x6FC\x6FE\x5"+ + "\x114\x8B\x2\x6FD\x6FC\x3\x2\x2\x2\x6FD\x6FE\x3\x2\x2\x2\x6FE\x6FF\x3"+ + "\x2\x2\x2\x6FF\x700\a\xD4\x2\x2\x700\x701\x5\xD8m\x2\x701\x702\a\xDB\x2"+ + "\x2\x702\x704\x3\x2\x2\x2\x703\x6FD\x3\x2\x2\x2\x704\x707\x3\x2\x2\x2"+ + "\x705\x703\x3\x2\x2\x2\x705\x706\x3\x2\x2\x2\x706\x728\x3\x2\x2\x2\x707"+ + "\x705\x3\x2\x2\x2\x708\x70A\x5\xDEp\x2\x709\x70B\x5\xF4{\x2\x70A\x709"+ + "\x3\x2\x2\x2\x70A\x70B\x3\x2\x2\x2\x70B\x719\x3\x2\x2\x2\x70C\x70E\x5"+ + "\x114\x8B\x2\x70D\x70C\x3\x2\x2\x2\x70D\x70E\x3\x2\x2\x2\x70E\x70F\x3"+ + "\x2\x2\x2\x70F\x711\a\xD4\x2\x2\x710\x712\x5\x114\x8B\x2\x711\x710\x3"+ + "\x2\x2\x2\x711\x712\x3\x2\x2\x2\x712\x713\x3\x2\x2\x2\x713\x715\x5\xCC"+ + "g\x2\x714\x716\x5\x114\x8B\x2\x715\x714\x3\x2\x2\x2\x715\x716\x3\x2\x2"+ + "\x2\x716\x717\x3\x2\x2\x2\x717\x718\a\xDB\x2\x2\x718\x71A\x3\x2\x2\x2"+ + "\x719\x70D\x3\x2\x2\x2\x719\x71A\x3\x2\x2\x2\x71A\x724\x3\x2\x2\x2\x71B"+ + "\x71D\x5\x114\x8B\x2\x71C\x71B\x3\x2\x2\x2\x71C\x71D\x3\x2\x2\x2\x71D"+ + "\x71E\x3\x2\x2\x2\x71E\x71F\a\xD4\x2\x2\x71F\x720\x5\xD8m\x2\x720\x721"+ + "\a\xDB\x2\x2\x721\x723\x3\x2\x2\x2\x722\x71C\x3\x2\x2\x2\x723\x726\x3"+ + "\x2\x2\x2\x724\x722\x3\x2\x2\x2\x724\x725\x3\x2\x2\x2\x725\x728\x3\x2"+ + "\x2\x2\x726\x724\x3\x2\x2\x2\x727\x6E6\x3\x2\x2\x2\x727\x708\x3\x2\x2"+ + "\x2\x728\xB5\x3\x2\x2\x2\x729\x72C\x5\xB8]\x2\x72A\x72C\x5\xBA^\x2\x72B"+ + "\x729\x3\x2\x2\x2\x72B\x72A\x3\x2\x2\x2\x72C\xB7\x3\x2\x2\x2\x72D\x72F"+ + "\x5\xBC_\x2\x72E\x72D\x3\x2\x2\x2\x72E\x72F\x3\x2\x2\x2\x72F\x731\x3\x2"+ + "\x2\x2\x730\x732\x5\x114\x8B\x2\x731\x730\x3\x2\x2\x2\x731\x732\x3\x2"+ + "\x2\x2\x732\x733\x3\x2\x2\x2\x733\x735\a-\x2\x2\x734\x736\x5\x114\x8B"+ + "\x2\x735\x734\x3\x2\x2\x2\x735\x736\x3\x2\x2\x2\x736\x737\x3\x2\x2\x2"+ + "\x737\x739\x5\xDCo\x2\x738\x73A\x5\xF4{\x2\x739\x738\x3\x2\x2\x2\x739"+ + "\x73A\x3\x2\x2\x2\x73A\x73E\x3\x2\x2\x2\x73B\x73C\x5\x114\x8B\x2\x73C"+ + "\x73D\x5\xCCg\x2\x73D\x73F\x3\x2\x2\x2\x73E\x73B\x3\x2\x2\x2\x73E\x73F"+ + "\x3\x2\x2\x2\x73F\x744\x3\x2\x2\x2\x740\x742\x5\x114\x8B\x2\x741\x740"+ + "\x3\x2\x2\x2\x741\x742\x3\x2\x2\x2\x742\x743\x3\x2\x2\x2\x743\x745\x5"+ + "\xD0i\x2\x744\x741\x3\x2\x2\x2\x744\x745\x3\x2\x2\x2\x745\x74F\x3\x2\x2"+ + "\x2\x746\x748\x5\x114\x8B\x2\x747\x746\x3\x2\x2\x2\x747\x748\x3\x2\x2"+ + "\x2\x748\x749\x3\x2\x2\x2\x749\x74A\a\xD4\x2\x2\x74A\x74B\x5\xD8m\x2\x74B"+ + "\x74C\a\xDB\x2\x2\x74C\x74E\x3\x2\x2\x2\x74D\x747\x3\x2\x2\x2\x74E\x751"+ + "\x3\x2\x2\x2\x74F\x74D\x3\x2\x2\x2\x74F\x750\x3\x2\x2\x2\x750\xB9\x3\x2"+ + "\x2\x2\x751\x74F\x3\x2\x2\x2\x752\x756\x5\xDEp\x2\x753\x754\x5\x114\x8B"+ + "\x2\x754\x755\x5\xCCg\x2\x755\x757\x3\x2\x2\x2\x756\x753\x3\x2\x2\x2\x756"+ + "\x757\x3\x2\x2\x2\x757\x761\x3\x2\x2\x2\x758\x75A\x5\x114\x8B\x2\x759"+ + "\x758\x3\x2\x2\x2\x759\x75A\x3\x2\x2\x2\x75A\x75B\x3\x2\x2\x2\x75B\x75C"+ + "\a\xD4\x2\x2\x75C\x75D\x5\xD8m\x2\x75D\x75E\a\xDB\x2\x2\x75E\x760\x3\x2"+ + "\x2\x2\x75F\x759\x3\x2\x2\x2\x760\x763\x3\x2\x2\x2\x761\x75F\x3\x2\x2"+ + "\x2\x761\x762\x3\x2\x2\x2\x762\xBB\x3\x2\x2\x2\x763\x761\x3\x2\x2\x2\x764"+ + "\x769\x5\xC6\x64\x2\x765\x769\x5\xBE`\x2\x766\x769\x5\xC0\x61\x2\x767"+ + "\x769\x5\xCA\x66\x2\x768\x764\x3\x2\x2\x2\x768\x765\x3\x2\x2\x2\x768\x766"+ + "\x3\x2\x2\x2\x768\x767\x3\x2\x2\x2\x769\xBD\x3\x2\x2\x2\x76A\x76C\x5\xDE"+ + "p\x2\x76B\x76D\x5\xF4{\x2\x76C\x76B\x3\x2\x2\x2\x76C\x76D\x3\x2\x2\x2"+ + "\x76D\x772\x3\x2\x2\x2\x76E\x770\x5\x114\x8B\x2\x76F\x76E\x3\x2\x2\x2"+ + "\x76F\x770\x3\x2\x2\x2\x770\x771\x3\x2\x2\x2\x771\x773\x5\xD0i\x2\x772"+ + "\x76F\x3\x2\x2\x2\x772\x773\x3\x2\x2\x2\x773\x77D\x3\x2\x2\x2\x774\x776"+ + "\x5\x114\x8B\x2\x775\x774\x3\x2\x2\x2\x775\x776\x3\x2\x2\x2\x776\x777"+ + "\x3\x2\x2\x2\x777\x778\a\xD4\x2\x2\x778\x779\x5\xD8m\x2\x779\x77A\a\xDB"+ + "\x2\x2\x77A\x77C\x3\x2\x2\x2\x77B\x775\x3\x2\x2\x2\x77C\x77F\x3\x2\x2"+ + "\x2\x77D\x77B\x3\x2\x2\x2\x77D\x77E\x3\x2\x2\x2\x77E\xBF\x3\x2\x2\x2\x77F"+ + "\x77D\x3\x2\x2\x2\x780\x783\x5\xDEp\x2\x781\x783\x5\xE2r\x2\x782\x780"+ + "\x3\x2\x2\x2\x782\x781\x3\x2\x2\x2\x783\x785\x3\x2\x2\x2\x784\x786\x5"+ + "\xF4{\x2\x785\x784\x3\x2\x2\x2\x785\x786\x3\x2\x2\x2\x786\x788\x3\x2\x2"+ + "\x2\x787\x789\x5\x114\x8B\x2\x788\x787\x3\x2\x2\x2\x788\x789\x3\x2\x2"+ + "\x2\x789\x78A\x3\x2\x2\x2\x78A\x78C\a\xD4\x2\x2\x78B\x78D\x5\x114\x8B"+ + "\x2\x78C\x78B\x3\x2\x2\x2\x78C\x78D\x3\x2\x2\x2\x78D\x792\x3\x2\x2\x2"+ + "\x78E\x790\x5\xCCg\x2\x78F\x791\x5\x114\x8B\x2\x790\x78F\x3\x2\x2\x2\x790"+ + "\x791\x3\x2\x2\x2\x791\x793\x3\x2\x2\x2\x792\x78E\x3\x2\x2\x2\x792\x793"+ + "\x3\x2\x2\x2\x793\x794\x3\x2\x2\x2\x794\x799\a\xDB\x2\x2\x795\x797\x5"+ + "\x114\x8B\x2\x796\x795\x3\x2\x2\x2\x796\x797\x3\x2\x2\x2\x797\x798\x3"+ + "\x2\x2\x2\x798\x79A\x5\xD0i\x2\x799\x796\x3\x2\x2\x2\x799\x79A\x3\x2\x2"+ + "\x2\x79A\x7A4\x3\x2\x2\x2\x79B\x79D\x5\x114\x8B\x2\x79C\x79B\x3\x2\x2"+ + "\x2\x79C\x79D\x3\x2\x2\x2\x79D\x79E\x3\x2\x2\x2\x79E\x79F\a\xD4\x2\x2"+ + "\x79F\x7A0\x5\xD8m\x2\x7A0\x7A1\a\xDB\x2\x2\x7A1\x7A3\x3\x2\x2\x2\x7A2"+ + "\x79C\x3\x2\x2\x2\x7A3\x7A6\x3\x2\x2\x2\x7A4\x7A2\x3\x2\x2\x2\x7A4\x7A5"+ + "\x3\x2\x2\x2\x7A5\xC1\x3\x2\x2\x2\x7A6\x7A4\x3\x2\x2\x2\x7A7\x7A9\x5\xDC"+ + "o\x2\x7A8\x7AA\x5\xF4{\x2\x7A9\x7A8\x3\x2\x2\x2\x7A9\x7AA\x3\x2\x2\x2"+ + "\x7AA\x7AF\x3\x2\x2\x2\x7AB\x7AD\x5\x114\x8B\x2\x7AC\x7AB\x3\x2\x2\x2"+ + "\x7AC\x7AD\x3\x2\x2\x2\x7AD\x7AE\x3\x2\x2\x2\x7AE\x7B0\x5\xD0i\x2\x7AF"+ + "\x7AC\x3\x2\x2\x2\x7AF\x7B0\x3\x2\x2\x2\x7B0\x7BA\x3\x2\x2\x2\x7B1\x7B3"+ + "\x5\x114\x8B\x2\x7B2\x7B1\x3\x2\x2\x2\x7B2\x7B3\x3\x2\x2\x2\x7B3\x7B4"+ + "\x3\x2\x2\x2\x7B4\x7B5\a\xD4\x2\x2\x7B5\x7B6\x5\xD8m\x2\x7B6\x7B7\a\xDB"+ + "\x2\x2\x7B7\x7B9\x3\x2\x2\x2\x7B8\x7B2\x3\x2\x2\x2\x7B9\x7BC\x3\x2\x2"+ + "\x2\x7BA\x7B8\x3\x2\x2\x2\x7BA\x7BB\x3\x2\x2\x2\x7BB\xC3\x3\x2\x2\x2\x7BC"+ + "\x7BA\x3\x2\x2\x2\x7BD\x7C0\x5\xDCo\x2\x7BE\x7C0\x5\xE2r\x2\x7BF\x7BD"+ + "\x3\x2\x2\x2\x7BF\x7BE\x3\x2\x2\x2\x7C0\x7C2\x3\x2\x2\x2\x7C1\x7C3\x5"+ + "\xF4{\x2\x7C2\x7C1\x3\x2\x2\x2\x7C2\x7C3\x3\x2\x2\x2\x7C3\x7C5\x3\x2\x2"+ + "\x2\x7C4\x7C6\x5\x114\x8B\x2\x7C5\x7C4\x3\x2\x2\x2\x7C5\x7C6\x3\x2\x2"+ + "\x2\x7C6\x7C7\x3\x2\x2\x2\x7C7\x7C9\a\xD4\x2\x2\x7C8\x7CA\x5\x114\x8B"+ + "\x2\x7C9\x7C8\x3\x2\x2\x2\x7C9\x7CA\x3\x2\x2\x2\x7CA\x7CF\x3\x2\x2\x2"+ + "\x7CB\x7CD\x5\xCCg\x2\x7CC\x7CE\x5\x114\x8B\x2\x7CD\x7CC\x3\x2\x2\x2\x7CD"+ + "\x7CE\x3\x2\x2\x2\x7CE\x7D0\x3\x2\x2\x2\x7CF\x7CB\x3\x2\x2\x2\x7CF\x7D0"+ + "\x3\x2\x2\x2\x7D0\x7D1\x3\x2\x2\x2\x7D1\x7D6\a\xDB\x2\x2\x7D2\x7D4\x5"+ + "\x114\x8B\x2\x7D3\x7D2\x3\x2\x2\x2\x7D3\x7D4\x3\x2\x2\x2\x7D4\x7D5\x3"+ + "\x2\x2\x2\x7D5\x7D7\x5\xD0i\x2\x7D6\x7D3\x3\x2\x2\x2\x7D6\x7D7\x3\x2\x2"+ + "\x2\x7D7\x7E1\x3\x2\x2\x2\x7D8\x7DA\x5\x114\x8B\x2\x7D9\x7D8\x3\x2\x2"+ + "\x2\x7D9\x7DA\x3\x2\x2\x2\x7DA\x7DB\x3\x2\x2\x2\x7DB\x7DC\a\xD4\x2\x2"+ + "\x7DC\x7DD\x5\xD8m\x2\x7DD\x7DE\a\xDB\x2\x2\x7DE\x7E0\x3\x2\x2\x2\x7DF"+ + "\x7D9\x3\x2\x2\x2\x7E0\x7E3\x3\x2\x2\x2\x7E1\x7DF\x3\x2\x2\x2\x7E1\x7E2"+ + "\x3\x2\x2\x2\x7E2\xC5\x3\x2\x2\x2\x7E3\x7E1\x3\x2\x2\x2\x7E4\x7E7\x5\xBE"+ + "`\x2\x7E5\x7E7\x5\xC0\x61\x2\x7E6\x7E4\x3\x2\x2\x2\x7E6\x7E5\x3\x2\x2"+ + "\x2\x7E6\x7E7\x3\x2\x2\x2\x7E7\x7EC\x3\x2\x2\x2\x7E8\x7EA\x5\xC8\x65\x2"+ + "\x7E9\x7EB\x5\x114\x8B\x2\x7EA\x7E9\x3\x2\x2\x2\x7EA\x7EB\x3\x2\x2\x2"+ + "\x7EB\x7ED\x3\x2\x2\x2\x7EC\x7E8\x3\x2\x2\x2\x7ED\x7EE\x3\x2\x2\x2\x7EE"+ + "\x7EC\x3\x2\x2\x2\x7EE\x7EF\x3\x2\x2\x2\x7EF\x7F4\x3\x2\x2\x2\x7F0\x7F2"+ + "\x5\x114\x8B\x2\x7F1\x7F0\x3\x2\x2\x2\x7F1\x7F2\x3\x2\x2\x2\x7F2\x7F3"+ + "\x3\x2\x2\x2\x7F3\x7F5\x5\xD0i\x2\x7F4\x7F1\x3\x2\x2\x2\x7F4\x7F5\x3\x2"+ + "\x2\x2\x7F5\x7FF\x3\x2\x2\x2\x7F6\x7F8\x5\x114\x8B\x2\x7F7\x7F6\x3\x2"+ + "\x2\x2\x7F7\x7F8\x3\x2\x2\x2\x7F8\x7F9\x3\x2\x2\x2\x7F9\x7FA\a\xD4\x2"+ + "\x2\x7FA\x7FB\x5\xD8m\x2\x7FB\x7FC\a\xDB\x2\x2\x7FC\x7FE\x3\x2\x2\x2\x7FD"+ + "\x7F7\x3\x2\x2\x2\x7FE\x801\x3\x2\x2\x2\x7FF\x7FD\x3\x2\x2\x2\x7FF\x800"+ + "\x3\x2\x2\x2\x800\xC7\x3\x2\x2\x2\x801\x7FF\x3\x2\x2\x2\x802\x804\t\xF"+ + "\x2\x2\x803\x805\x5\x114\x8B\x2\x804\x803\x3\x2\x2\x2\x804\x805\x3\x2"+ + "\x2\x2\x805\x808\x3\x2\x2\x2\x806\x809\x5\xC2\x62\x2\x807\x809\x5\xC4"+ + "\x63\x2\x808\x806\x3\x2\x2\x2\x808\x807\x3\x2\x2\x2\x809\xC9\x3\x2\x2"+ + "\x2\x80A\x80C\x5\x114\x8B\x2\x80B\x80A\x3\x2\x2\x2\x80B\x80C\x3\x2\x2"+ + "\x2\x80C\x80D\x3\x2\x2\x2\x80D\x80E\x5\xD0i\x2\x80E\xCB\x3\x2\x2\x2\x80F"+ + "\x811\x5\xCEh\x2\x810\x80F\x3\x2\x2\x2\x810\x811\x3\x2\x2\x2\x811\x813"+ + "\x3\x2\x2\x2\x812\x814\x5\x114\x8B\x2\x813\x812\x3\x2\x2\x2\x813\x814"+ + "\x3\x2\x2\x2\x814\x815\x3\x2\x2\x2\x815\x817\t\n\x2\x2\x816\x818\x5\x114"+ + "\x8B\x2\x817\x816\x3\x2\x2\x2\x817\x818\x3\x2\x2\x2\x818\x81A\x3\x2\x2"+ + "\x2\x819\x810\x3\x2\x2\x2\x81A\x81D\x3\x2\x2\x2\x81B\x819\x3\x2\x2\x2"+ + "\x81B\x81C\x3\x2\x2\x2\x81C\x81E\x3\x2\x2\x2\x81D\x81B\x3\x2\x2\x2\x81E"+ + "\x82B\x5\xCEh\x2\x81F\x821\x5\x114\x8B\x2\x820\x81F\x3\x2\x2\x2\x820\x821"+ + "\x3\x2\x2\x2\x821\x822\x3\x2\x2\x2\x822\x824\t\n\x2\x2\x823\x825\x5\x114"+ + "\x8B\x2\x824\x823\x3\x2\x2\x2\x824\x825\x3\x2\x2\x2\x825\x827\x3\x2\x2"+ + "\x2\x826\x828\x5\xCEh\x2\x827\x826\x3\x2\x2\x2\x827\x828\x3\x2\x2\x2\x828"+ + "\x82A\x3\x2\x2\x2\x829\x820\x3\x2\x2\x2\x82A\x82D\x3\x2\x2\x2\x82B\x829"+ + "\x3\x2\x2\x2\x82B\x82C\x3\x2\x2\x2\x82C\xCD\x3\x2\x2\x2\x82D\x82B\x3\x2"+ + "\x2\x2\x82E\x830\a\xD4\x2\x2\x82F\x82E\x3\x2\x2\x2\x82F\x830\x3\x2\x2"+ + "\x2\x830\x833\x3\x2\x2\x2\x831\x832\t\x10\x2\x2\x832\x834\x5\x114\x8B"+ + "\x2\x833\x831\x3\x2\x2\x2\x833\x834\x3\x2\x2\x2\x834\x836\x3\x2\x2\x2"+ + "\x835\x837\a\xDB\x2\x2\x836\x835\x3\x2\x2\x2\x836\x837\x3\x2\x2\x2\x837"+ + "\x838\x3\x2\x2\x2\x838\x839\x5\x9CO\x2\x839\xCF\x3\x2\x2\x2\x83A\x83C"+ + "\a,\x2\x2\x83B\x83D\x5\x114\x8B\x2\x83C\x83B\x3\x2\x2\x2\x83C\x83D\x3"+ + "\x2\x2\x2\x83D\x83E\x3\x2\x2\x2\x83E\x840\x5\xDCo\x2\x83F\x841\x5\xF4"+ + "{\x2\x840\x83F\x3\x2\x2\x2\x840\x841\x3\x2\x2\x2\x841\xD1\x3\x2\x2\x2"+ + "\x842\x854\a\xD4\x2\x2\x843\x845\x5\x114\x8B\x2\x844\x843\x3\x2\x2\x2"+ + "\x844\x845\x3\x2\x2\x2\x845\x846\x3\x2\x2\x2\x846\x851\x5\xD4k\x2\x847"+ + "\x849\x5\x114\x8B\x2\x848\x847\x3\x2\x2\x2\x848\x849\x3\x2\x2\x2\x849"+ + "\x84A\x3\x2\x2\x2\x84A\x84C\a)\x2\x2\x84B\x84D\x5\x114\x8B\x2\x84C\x84B"+ + "\x3\x2\x2\x2\x84C\x84D\x3\x2\x2\x2\x84D\x84E\x3\x2\x2\x2\x84E\x850\x5"+ + "\xD4k\x2\x84F\x848\x3\x2\x2\x2\x850\x853\x3\x2\x2\x2\x851\x84F\x3\x2\x2"+ + "\x2\x851\x852\x3\x2\x2\x2\x852\x855\x3\x2\x2\x2\x853\x851\x3\x2\x2\x2"+ + "\x854\x844\x3\x2\x2\x2\x854\x855\x3\x2\x2\x2\x855\x857\x3\x2\x2\x2\x856"+ + "\x858\x5\x114\x8B\x2\x857\x856\x3\x2\x2\x2\x857\x858\x3\x2\x2\x2\x858"+ + "\x859\x3\x2\x2\x2\x859\x85A\a\xDB\x2\x2\x85A\xD3\x3\x2\x2\x2\x85B\x85C"+ + "\a\x95\x2\x2\x85C\x85E\x5\x114\x8B\x2\x85D\x85B\x3\x2\x2\x2\x85D\x85E"+ + "\x3\x2\x2\x2\x85E\x861\x3\x2\x2\x2\x85F\x860\t\x11\x2\x2\x860\x862\x5"+ + "\x114\x8B\x2\x861\x85F\x3\x2\x2\x2\x861\x862\x3\x2\x2\x2\x862\x865\x3"+ + "\x2\x2\x2\x863\x864\a\x9C\x2\x2\x864\x866\x5\x114\x8B\x2\x865\x863\x3"+ + "\x2\x2\x2\x865\x866\x3\x2\x2\x2\x866\x867\x3\x2\x2\x2\x867\x869\x5\xDC"+ + "o\x2\x868\x86A\x5\xF4{\x2\x869\x868\x3\x2\x2\x2\x869\x86A\x3\x2\x2\x2"+ + "\x86A\x873\x3\x2\x2\x2\x86B\x86D\x5\x114\x8B\x2\x86C\x86B\x3\x2\x2\x2"+ + "\x86C\x86D\x3\x2\x2\x2\x86D\x86E\x3\x2\x2\x2\x86E\x870\a\xD4\x2\x2\x86F"+ + "\x871\x5\x114\x8B\x2\x870\x86F\x3\x2\x2\x2\x870\x871\x3\x2\x2\x2\x871"+ + "\x872\x3\x2\x2\x2\x872\x874\a\xDB\x2\x2\x873\x86C\x3\x2\x2\x2\x873\x874"+ + "\x3\x2\x2\x2\x874\x879\x3\x2\x2\x2\x875\x877\x5\x114\x8B\x2\x876\x875"+ + "\x3\x2\x2\x2\x876\x877\x3\x2\x2\x2\x877\x878\x3\x2\x2\x2\x878\x87A\x5"+ + "\xE0q\x2\x879\x876\x3\x2\x2\x2\x879\x87A\x3\x2\x2\x2\x87A\x87F\x3\x2\x2"+ + "\x2\x87B\x87D\x5\x114\x8B\x2\x87C\x87B\x3\x2\x2\x2\x87C\x87D\x3\x2\x2"+ + "\x2\x87D\x87E\x3\x2\x2\x2\x87E\x880\x5\xD6l\x2\x87F\x87C\x3\x2\x2\x2\x87F"+ + "\x880\x3\x2\x2\x2\x880\xD5\x3\x2\x2\x2\x881\x883\a\xD0\x2\x2\x882\x884"+ + "\x5\x114\x8B\x2\x883\x882\x3\x2\x2\x2\x883\x884\x3\x2\x2\x2\x884\x885"+ + "\x3\x2\x2\x2\x885\x886\x5\x9CO\x2\x886\xD7\x3\x2\x2\x2\x887\x892\x5\xDA"+ + "n\x2\x888\x88A\x5\x114\x8B\x2\x889\x888\x3\x2\x2\x2\x889\x88A\x3\x2\x2"+ + "\x2\x88A\x88B\x3\x2\x2\x2\x88B\x88D\a)\x2\x2\x88C\x88E\x5\x114\x8B\x2"+ + "\x88D\x88C\x3\x2\x2\x2\x88D\x88E\x3\x2\x2\x2\x88E\x88F\x3\x2\x2\x2\x88F"+ + "\x891\x5\xDAn\x2\x890\x889\x3\x2\x2\x2\x891\x894\x3\x2\x2\x2\x892\x890"+ + "\x3\x2\x2\x2\x892\x893\x3\x2\x2\x2\x893\xD9\x3\x2\x2\x2\x894\x892\x3\x2"+ + "\x2\x2\x895\x896\x5\x9CO\x2\x896\x897\x5\x114\x8B\x2\x897\x898\a\xBE\x2"+ + "\x2\x898\x899\x5\x114\x8B\x2\x899\x89B\x3\x2\x2\x2\x89A\x895\x3\x2\x2"+ + "\x2\x89A\x89B\x3\x2\x2\x2\x89B\x89C\x3\x2\x2\x2\x89C\x89D\x5\x9CO\x2\x89D"+ + "\xDB\x3\x2\x2\x2\x89E\x8A2\x5\xDEp\x2\x89F\x8A2\x5\xFC\x7F\x2\x8A0\x8A2"+ + "\x5\xFA~\x2\x8A1\x89E\x3\x2\x2\x2\x8A1\x89F\x3\x2\x2\x2\x8A1\x8A0\x3\x2"+ + "\x2\x2\x8A2\xDD\x3\x2\x2\x2\x8A3\x8A6\a\xEE\x2\x2\x8A4\x8A6\x5\xF8}\x2"+ + "\x8A5\x8A3\x3\x2\x2\x2\x8A5\x8A4\x3\x2\x2\x2\x8A6\xDF\x3\x2\x2\x2\x8A7"+ + "\x8A9\a\x39\x2\x2\x8A8\x8AA\x5\x114\x8B\x2\x8A9\x8A8\x3\x2\x2\x2\x8A9"+ + "\x8AA\x3\x2\x2\x2\x8AA\x8AD\x3\x2\x2\x2\x8AB\x8AC\a\x8D\x2\x2\x8AC\x8AE"+ + "\x5\x114\x8B\x2\x8AD\x8AB\x3\x2\x2\x2\x8AD\x8AE\x3\x2\x2\x2\x8AE\x8AF"+ + "\x3\x2\x2\x2\x8AF\x8B4\x5\xF2z\x2\x8B0\x8B2\x5\x114\x8B\x2\x8B1\x8B0\x3"+ + "\x2\x2\x2\x8B1\x8B2\x3\x2\x2\x2\x8B2\x8B3\x3\x2\x2\x2\x8B3\x8B5\x5\xE8"+ + "u\x2\x8B4\x8B1\x3\x2\x2\x2\x8B4\x8B5\x3\x2\x2\x2\x8B5\xE1\x3\x2\x2\x2"+ + "\x8B6\x8B7\t\x12\x2\x2\x8B7\xE3\x3\x2\x2\x2\x8B8\x8B9\t\xE\x2\x2\x8B9"+ + "\xE5\x3\x2\x2\x2\x8BA\x8BF\x5\xDEp\x2\x8BB\x8BC\t\xF\x2\x2\x8BC\x8BE\x5"+ + "\xDEp\x2\x8BD\x8BB\x3\x2\x2\x2\x8BE\x8C1\x3\x2\x2\x2\x8BF\x8BD\x3\x2\x2"+ + "\x2\x8BF\x8C0\x3\x2\x2\x2\x8C0\xE7\x3\x2\x2\x2\x8C1\x8BF\x3\x2\x2\x2\x8C2"+ + "\x8C4\a\xD7\x2\x2\x8C3\x8C5\x5\x114\x8B\x2\x8C4\x8C3\x3\x2\x2\x2\x8C4"+ + "\x8C5\x3\x2\x2\x2\x8C5\x8C8\x3\x2\x2\x2\x8C6\x8C9\x5\xF0y\x2\x8C7\x8C9"+ + "\x5\xDEp\x2\x8C8\x8C6\x3\x2\x2\x2\x8C8\x8C7\x3\x2\x2\x2\x8C9\xE9\x3\x2"+ + "\x2\x2\x8CA\x8D3\x5\xDEp\x2\x8CB\x8CD\x5\x114\x8B\x2\x8CC\x8CB\x3\x2\x2"+ + "\x2\x8CC\x8CD\x3\x2\x2\x2\x8CD\x8CE\x3\x2\x2\x2\x8CE\x8D0\a\xD6\x2\x2"+ + "\x8CF\x8D1\x5\x114\x8B\x2\x8D0\x8CF\x3\x2\x2\x2\x8D0\x8D1\x3\x2\x2\x2"+ + "\x8D1\x8D2\x3\x2\x2\x2\x8D2\x8D4\x5\xDEp\x2\x8D3\x8CC\x3\x2\x2\x2\x8D3"+ + "\x8D4\x3\x2\x2\x2\x8D4\xEB\x3\x2\x2\x2\x8D5\x8D8\x5\xDEp\x2\x8D6\x8D8"+ + "\x5\xF0y\x2\x8D7\x8D5\x3\x2\x2\x2\x8D7\x8D6\x3\x2\x2\x2\x8D8\x8D9\x3\x2"+ + "\x2\x2\x8D9\x8DA\a*\x2\x2\x8DA\xED\x3\x2\x2\x2\x8DB\x8E4\x5\xF0y\x2\x8DC"+ + "\x8E4\a\xE8\x2\x2\x8DD\x8E4\a\xE3\x2\x2\x8DE\x8E4\a\xBF\x2\x2\x8DF\x8E4"+ + "\ao\x2\x2\x8E0\x8E4\a\x8F\x2\x2\x8E1\x8E4\a\x90\x2\x2\x8E2\x8E4\a[\x2"+ + "\x2\x8E3\x8DB\x3\x2\x2\x2\x8E3\x8DC\x3\x2\x2\x2\x8E3\x8DD\x3\x2\x2\x2"+ + "\x8E3\x8DE\x3\x2\x2\x2\x8E3\x8DF\x3\x2\x2\x2\x8E3\x8E0\x3\x2\x2\x2\x8E3"+ + "\x8E1\x3\x2\x2\x2\x8E3\x8E2\x3\x2\x2\x2\x8E4\xEF\x3\x2\x2\x2\x8E5\x8E6"+ + "\t\x13\x2\x2\x8E6\xF1\x3\x2\x2\x2\x8E7\x8EA\x5\xE2r\x2\x8E8\x8EA\x5\xE6"+ + "t\x2\x8E9\x8E7\x3\x2\x2\x2\x8E9\x8E8\x3\x2\x2\x2\x8EA\x8F3\x3\x2\x2\x2"+ + "\x8EB\x8ED\x5\x114\x8B\x2\x8EC\x8EB\x3\x2\x2\x2\x8EC\x8ED\x3\x2\x2\x2"+ + "\x8ED\x8EE\x3\x2\x2\x2\x8EE\x8F0\a\xD4\x2\x2\x8EF\x8F1\x5\x114\x8B\x2"+ + "\x8F0\x8EF\x3\x2\x2\x2\x8F0\x8F1\x3\x2\x2\x2\x8F1\x8F2\x3\x2\x2\x2\x8F2"+ + "\x8F4\a\xDB\x2\x2\x8F3\x8EC\x3\x2\x2\x2\x8F3\x8F4\x3\x2\x2\x2\x8F4\xF3"+ + "\x3\x2\x2\x2\x8F5\x8F6\t\x14\x2\x2\x8F6\xF5\x3\x2\x2\x2\x8F7\x8F8\t\x15"+ + "\x2\x2\x8F8\xF7\x3\x2\x2\x2\x8F9\x8FA\t\x16\x2\x2\x8FA\xF9\x3\x2\x2\x2"+ + "\x8FB\x8FC\a\x39\x2\x2\x8FC\xFB\x3\x2\x2\x2\x8FD\x8FE\t\x17\x2\x2\x8FE"+ + "\xFD\x3\x2\x2\x2\x8FF\x901\x5\x114\x8B\x2\x900\x8FF\x3\x2\x2\x2\x900\x901"+ + "\x3\x2\x2\x2\x901\x903\x3\x2\x2\x2\x902\x904\x5\x102\x82\x2\x903\x902"+ + "\x3\x2\x2\x2\x903\x904\x3\x2\x2\x2\x904\xFF\x3\x2\x2\x2\x905\x906\x5\xFE"+ + "\x80\x2\x906\x908\a\xE9\x2\x2\x907\x909\x5\x114\x8B\x2\x908\x907\x3\x2"+ + "\x2\x2\x908\x909\x3\x2\x2\x2\x909\x912\x3\x2\x2\x2\x90A\x90C\x5\x114\x8B"+ + "\x2\x90B\x90A\x3\x2\x2\x2\x90B\x90C\x3\x2\x2\x2\x90C\x90D\x3\x2\x2\x2"+ + "\x90D\x90F\a*\x2\x2\x90E\x910\x5\x114\x8B\x2\x90F\x90E\x3\x2\x2\x2\x90F"+ + "\x910\x3\x2\x2\x2\x910\x912\x3\x2\x2\x2\x911\x905\x3\x2\x2\x2\x911\x90B"+ + "\x3\x2\x2\x2\x912\x914\x3\x2\x2\x2\x913\x911\x3\x2\x2\x2\x914\x917\x3"+ + "\x2\x2\x2\x915\x913\x3\x2\x2\x2\x915\x916\x3\x2\x2\x2\x916\x91C\x3\x2"+ + "\x2\x2\x917\x915\x3\x2\x2\x2\x918\x919\x5\xFE\x80\x2\x919\x91A\a\x2\x2"+ + "\x3\x91A\x91C\x3\x2\x2\x2\x91B\x915\x3\x2\x2\x2\x91B\x918\x3\x2\x2\x2"+ + "\x91C\x101\x3\x2\x2\x2\x91D\x921\x5\x10A\x86\x2\x91E\x921\x5\x106\x84"+ + "\x2\x91F\x921\x5\x104\x83\x2\x920\x91D\x3\x2\x2\x2\x920\x91E\x3\x2\x2"+ + "\x2\x920\x91F\x3\x2\x2\x2\x921\x103\x3\x2\x2\x2\x922\x924\a\xAB\x2\x2"+ + "\x923\x925\x5\x114\x8B\x2\x924\x923\x3\x2\x2\x2\x924\x925\x3\x2\x2\x2"+ + "\x925\x926\x3\x2\x2\x2\x926\x927\x5\x108\x85\x2\x927\x105\x3\x2\x2\x2"+ + "\x928\x929\a\xEA\x2\x2\x929\x92A\x5\x108\x85\x2\x92A\x107\x3\x2\x2\x2"+ + "\x92B\x92E\a\xEF\x2\x2\x92C\x92E\n\x18\x2\x2\x92D\x92B\x3\x2\x2\x2\x92D"+ + "\x92C\x3\x2\x2\x2\x92E\x931\x3\x2\x2\x2\x92F\x92D\x3\x2\x2\x2\x92F\x930"+ + "\x3\x2\x2\x2\x930\x109\x3\x2\x2\x2\x931\x92F\x3\x2\x2\x2\x932\x938\a\xEA"+ + "\x2\x2\x933\x934\a/\x2\x2\x934\x936\x5\x10C\x87\x2\x935\x937\x5\x114\x8B"+ + "\x2\x936\x935\x3\x2\x2\x2\x936\x937\x3\x2\x2\x2\x937\x939\x3\x2\x2\x2"+ + "\x938\x933\x3\x2\x2\x2\x939\x93A\x3\x2\x2\x2\x93A\x938\x3\x2\x2\x2\x93A"+ + "\x93B\x3\x2\x2\x2\x93B\x10B\x3\x2\x2\x2\x93C\x93E\x5\x10E\x88\x2\x93D"+ + "\x93F\x5\x110\x89\x2\x93E\x93D\x3\x2\x2\x2\x93E\x93F\x3\x2\x2\x2\x93F"+ + "\x10D\x3\x2\x2\x2\x940\x941\x5\xDCo\x2\x941\x10F\x3\x2\x2\x2\x942\x943"+ + "\x5\x114\x8B\x2\x943\x944\x5\x112\x8A\x2\x944\x977\x3\x2\x2\x2\x945\x946"+ + "\x5\x114\x8B\x2\x946\x94F\x5\x112\x8A\x2\x947\x949\x5\x114\x8B\x2\x948"+ + "\x947\x3\x2\x2\x2\x948\x949\x3\x2\x2\x2\x949\x94A\x3\x2\x2\x2\x94A\x94C"+ + "\a)\x2\x2\x94B\x94D\x5\x114\x8B\x2\x94C\x94B\x3\x2\x2\x2\x94C\x94D\x3"+ + "\x2\x2\x2\x94D\x94E\x3\x2\x2\x2\x94E\x950\x5\x112\x8A\x2\x94F\x948\x3"+ + "\x2\x2\x2\x950\x951\x3\x2\x2\x2\x951\x94F\x3\x2\x2\x2\x951\x952\x3\x2"+ + "\x2\x2\x952\x977\x3\x2\x2\x2\x953\x955\x5\x114\x8B\x2\x954\x953\x3\x2"+ + "\x2\x2\x954\x955\x3\x2\x2\x2\x955\x956\x3\x2\x2\x2\x956\x958\a\xD4\x2"+ + "\x2\x957\x959\x5\x114\x8B\x2\x958\x957\x3\x2\x2\x2\x958\x959\x3\x2\x2"+ + "\x2\x959\x95A\x3\x2\x2\x2\x95A\x95C\x5\x112\x8A\x2\x95B\x95D\x5\x114\x8B"+ + "\x2\x95C\x95B\x3\x2\x2\x2\x95C\x95D\x3\x2\x2\x2\x95D\x95E\x3\x2\x2\x2"+ + "\x95E\x95F\a\xDB\x2\x2\x95F\x977\x3\x2\x2\x2\x960\x962\x5\x114\x8B\x2"+ + "\x961\x960\x3\x2\x2\x2\x961\x962\x3\x2\x2\x2\x962\x963\x3\x2\x2\x2\x963"+ + "\x964\a\xD4\x2\x2\x964\x96D\x5\x112\x8A\x2\x965\x967\x5\x114\x8B\x2\x966"+ + "\x965\x3\x2\x2\x2\x966\x967\x3\x2\x2\x2\x967\x968\x3\x2\x2\x2\x968\x96A"+ + "\a)\x2\x2\x969\x96B\x5\x114\x8B\x2\x96A\x969\x3\x2\x2\x2\x96A\x96B\x3"+ + "\x2\x2\x2\x96B\x96C\x3\x2\x2\x2\x96C\x96E\x5\x112\x8A\x2\x96D\x966\x3"+ + "\x2\x2\x2\x96E\x96F\x3\x2\x2\x2\x96F\x96D\x3\x2\x2\x2\x96F\x970\x3\x2"+ + "\x2\x2\x970\x972\x3\x2\x2\x2\x971\x973\x5\x114\x8B\x2\x972\x971\x3\x2"+ + "\x2\x2\x972\x973\x3\x2\x2\x2\x973\x974\x3\x2\x2\x2\x974\x975\a\xDB\x2"+ + "\x2\x975\x977\x3\x2\x2\x2\x976\x942\x3\x2\x2\x2\x976\x945\x3\x2\x2\x2"+ + "\x976\x954\x3\x2\x2\x2\x976\x961\x3\x2\x2\x2\x977\x111\x3\x2\x2\x2\x978"+ + "\x979\x5\x9CO\x2\x979\x113\x3\x2\x2\x2\x97A\x97C\t\x19\x2\x2\x97B\x97A"+ + "\x3\x2\x2\x2\x97C\x97D\x3\x2\x2\x2\x97D\x97B\x3\x2\x2\x2\x97D\x97E\x3"+ + "\x2\x2\x2\x97E\x115\x3\x2\x2\x2\x1A4\x119\x11F\x122\x126\x12A\x12E\x136"+ + "\x139\x143\x145\x14B\x153\x15A\x160\x169\x171\x180\x18A\x192\x19C\x1A2"+ + "\x1A6\x1AA\x1AE\x1B3\x1C0\x1F3\x1F9\x1FD\x202\x205\x20A\x210\x214\x219"+ + "\x21E\x223\x226\x22A\x231\x237\x23B\x23E\x243\x24E\x251\x254\x259\x25F"+ + "\x263\x268\x26E\x279\x280\x288\x28D\x296\x29D\x2A1\x2A4\x2AC\x2B0\x2B5"+ + "\x2BF\x2C5\x2D6\x2DC\x2E2\x2E6\x2F2\x2F6\x2FC\x301\x305\x309\x30D\x310"+ + "\x313\x316\x319\x31D\x327\x32B\x32E\x331\x335\x34D\x353\x357\x35B\x364"+ + "\x36F\x374\x37E\x382\x387\x38B\x38F\x393\x39B\x39F\x3A7\x3AB\x3B3\x3B5"+ + "\x3BB\x3BF\x3C5\x3C9\x3CD\x3DB\x3E5\x3E9\x3EE\x3F9\x3FD\x402\x411\x416"+ + "\x41F\x423\x427\x42B\x42F\x432\x436\x43A\x43D\x441\x444\x448\x44A\x44F"+ + "\x453\x457\x45B\x45D\x463\x467\x46A\x46F\x473\x479\x47C\x47F\x484\x488"+ + "\x48F\x493\x499\x49C\x4A0\x4A7\x4AB\x4B1\x4B4\x4B8\x4C0\x4C4\x4C7\x4CA"+ + "\x4CE\x4D6\x4DA\x4DE\x4E0\x4E3\x4E9\x4ED\x4F1\x4F6\x4FB\x4FF\x503\x509"+ + "\x511\x513\x51B\x51F\x529\x52D\x53A\x541\x545\x550\x557\x55C\x560\x565"+ + "\x568\x56E\x572\x579\x57D\x581\x585\x588\x58C\x595\x59E\x5A5\x5A9\x5AC"+ + "\x5AF\x5B2\x5B7\x5BF\x5C3\x5CB\x5CD\x5D2\x5D7\x5DC\x5E0\x5E6\x5EB\x5F2"+ + "\x5F6\x5FC\x600\x604\x609\x60D\x612\x616\x61B\x61F\x624\x628\x62D\x631"+ + "\x636\x63A\x63F\x643\x648\x64C\x651\x655\x65A\x65E\x663\x667\x66A\x66C"+ + "\x677\x67C\x681\x687\x68B\x690\x695\x699\x69D\x69F\x6A3\x6A5\x6A8\x6AD"+ + "\x6B4\x6BC\x6C0\x6C9\x6D3\x6D7\x6DA\x6DD\x6E6\x6EB\x6EE\x6F2\x6F6\x6FA"+ + "\x6FD\x705\x70A\x70D\x711\x715\x719\x71C\x724\x727\x72B\x72E\x731\x735"+ + "\x739\x73E\x741\x744\x747\x74F\x756\x759\x761\x768\x76C\x76F\x772\x775"+ + "\x77D\x782\x785\x788\x78C\x790\x792\x796\x799\x79C\x7A4\x7A9\x7AC\x7AF"+ + "\x7B2\x7BA\x7BF\x7C2\x7C5\x7C9\x7CD\x7CF\x7D3\x7D6\x7D9\x7E1\x7E6\x7EA"+ + "\x7EE\x7F1\x7F4\x7F7\x7FF\x804\x808\x80B\x810\x813\x817\x81B\x820\x824"+ + "\x827\x82B\x82F\x833\x836\x83C\x840\x844\x848\x84C\x851\x854\x857\x85D"+ + "\x861\x865\x869\x86C\x870\x873\x876\x879\x87C\x87F\x883\x889\x88D\x892"+ + "\x89A\x8A1\x8A5\x8A9\x8AD\x8B1\x8B4\x8BF\x8C4\x8C8\x8CC\x8D0\x8D3\x8D7"+ + "\x8E3\x8E9\x8EC\x8F0\x8F3\x900\x903\x908\x90B\x90F\x911\x915\x91B\x920"+ + "\x924\x92D\x92F\x936\x93A\x93E\x948\x94C\x951\x954\x958\x95C\x961\x966"+ + "\x96A\x96F\x972\x976\x97D"; public static readonly ATN _ATN = new ATNDeserializer().Deserialize(_serializedATN.ToCharArray()); } diff --git a/Rubberduck.Parsing/Grammar/VBAParser.g4 b/Rubberduck.Parsing/Grammar/VBAParser.g4 index 1e2723d0e9..d180bf7ee0 100644 --- a/Rubberduck.Parsing/Grammar/VBAParser.g4 +++ b/Rubberduck.Parsing/Grammar/VBAParser.g4 @@ -21,7 +21,7 @@ parser grammar VBAParser; options { tokenVocab = VBALexer; } -startRule : module EOF; +startRule : module; module : whiteSpace? @@ -31,19 +31,18 @@ module : moduleAttributes? endOfStatement moduleDeclarations? endOfStatement moduleBody? endOfStatement - whiteSpace? ; moduleHeader : VERSION whiteSpace numberLiteral whiteSpace? CLASS? endOfStatement; moduleConfig : - BEGIN (whiteSpace GUIDLITERAL whiteSpace identifier whiteSpace?)? endOfStatement + BEGIN (whiteSpace GUIDLITERAL whiteSpace unrestrictedIdentifier whiteSpace?)? endOfStatement moduleConfigElement+ END ; moduleConfigElement : - identifier whiteSpace* EQ whiteSpace* literal (COLON numberLiteral)? endOfStatement + unrestrictedIdentifier whiteSpace* EQ whiteSpace* valueStmt (COLON numberLiteral)? endOfStatement ; moduleAttributes : (attributeStmt endOfStatement)+; @@ -79,29 +78,23 @@ moduleBodyElement : | subStmt ; -attributeStmt : ATTRIBUTE whiteSpace implicitCallStmt_InStmt whiteSpace? EQ whiteSpace? literal (whiteSpace? COMMA whiteSpace? literal)*; +attributeStmt : ATTRIBUTE whiteSpace attributeName whiteSpace? EQ whiteSpace? attributeValue (whiteSpace? COMMA whiteSpace? attributeValue)*; +attributeName : implicitCallStmt_InStmt; +attributeValue : valueStmt; block : blockStmt (endOfStatement blockStmt)* endOfStatement; blockStmt : lineLabel - | appactivateStmt | attributeStmt - | beepStmt - | chdirStmt - | chdriveStmt | closeStmt | constStmt - | dateStmt - | deleteSettingStmt | deftypeStmt | doLoopStmt - | endStmt | eraseStmt | errorStmt - | exitStmt + | exitStmt | explicitCallStmt - | filecopyStmt | forEachStmt | forNextStmt | getStmt @@ -110,15 +103,11 @@ blockStmt : | ifThenElseStmt | implementsStmt | inputStmt - | killStmt | letStmt | lineInputStmt - | loadStmt | lockStmt | lsetStmt | midStmt - | mkdirStmt - | nameStmt | onErrorStmt | onGoToStmt | onGoSubStmt @@ -126,23 +115,15 @@ blockStmt : | printStmt | putStmt | raiseEventStmt - | randomizeStmt | redimStmt | resetStmt | resumeStmt | returnStmt - | rmdirStmt | rsetStmt - | savepictureStmt - | saveSettingStmt | seekStmt | selectCaseStmt - | sendkeysStmt - | setattrStmt | setStmt - | stopStmt - | timeStmt - | unloadStmt + | stopStmt | unlockStmt | variableStmt | whileWendStmt @@ -152,22 +133,12 @@ blockStmt : | implicitCallStmt_InBlock ; -appactivateStmt : APPACTIVATE whiteSpace valueStmt (whiteSpace? COMMA whiteSpace? valueStmt)?; - -beepStmt : BEEP; - -chdirStmt : CHDIR whiteSpace valueStmt; - -chdriveStmt : CHDRIVE whiteSpace valueStmt; - closeStmt : CLOSE (whiteSpace fileNumber (whiteSpace? COMMA whiteSpace? fileNumber)*)?; constStmt : (visibility whiteSpace)? CONST whiteSpace constSubStmt (whiteSpace? COMMA whiteSpace? constSubStmt)*; constSubStmt : identifier typeHint? (whiteSpace asTypeClause)? whiteSpace? EQ whiteSpace? valueStmt; -dateStmt : DATE whiteSpace? EQ whiteSpace? valueStmt; - declareStmt : (visibility whiteSpace)? DECLARE whiteSpace (PTRSAFE whiteSpace)? ((FUNCTION typeHint?) | SUB) whiteSpace identifier typeHint? whiteSpace LIB whiteSpace STRINGLITERAL (whiteSpace ALIAS whiteSpace STRINGLITERAL)? (whiteSpace? argList)? (whiteSpace asTypeClause)?; deftypeStmt : @@ -179,11 +150,6 @@ deftypeStmt : letterrange (whiteSpace? COMMA whiteSpace? letterrange)* ; -deleteSettingStmt : - DELETESETTING whiteSpace valueStmt whiteSpace? - | DELETESETTING whiteSpace valueStmt whiteSpace? COMMA whiteSpace? valueStmt - | DELETESETTING whiteSpace valueStmt whiteSpace? COMMA whiteSpace? valueStmt whiteSpace? COMMA whiteSpace? valueStmt; - doLoopStmt : DO endOfStatement block? @@ -198,8 +164,6 @@ doLoopStmt : LOOP whiteSpace (WHILE | UNTIL) whiteSpace valueStmt ; -endStmt : END; - enumerationStmt: (visibility whiteSpace)? ENUM whiteSpace identifier endOfStatement enumerationStmt_Constant* @@ -216,25 +180,24 @@ eventStmt : (visibility whiteSpace)? EVENT whiteSpace identifier whiteSpace? arg exitStmt : EXIT_DO | EXIT_FOR | EXIT_FUNCTION | EXIT_PROPERTY | EXIT_SUB; -filecopyStmt : FILECOPY whiteSpace valueStmt whiteSpace? COMMA whiteSpace? valueStmt; - forEachStmt : - FOR whiteSpace EACH whiteSpace identifier typeHint? whiteSpace IN whiteSpace valueStmt endOfStatement + FOR whiteSpace EACH whiteSpace valueStmt whiteSpace IN whiteSpace valueStmt endOfStatement block? - NEXT (whiteSpace identifier)? + NEXT (whiteSpace valueStmt)? ; forNextStmt : - FOR whiteSpace identifier typeHint? (whiteSpace asTypeClause)? whiteSpace? EQ whiteSpace? valueStmt whiteSpace TO whiteSpace valueStmt (whiteSpace STEP whiteSpace valueStmt)? endOfStatement + FOR whiteSpace valueStmt whiteSpace? EQ whiteSpace? valueStmt whiteSpace TO whiteSpace valueStmt (whiteSpace STEP whiteSpace valueStmt)? endOfStatement block? - NEXT (whiteSpace identifier typeHint?)? + NEXT (whiteSpace valueStmt)? ; functionStmt : - (visibility whiteSpace)? (STATIC whiteSpace)? FUNCTION whiteSpace? identifier typeHint? (whiteSpace? argList)? (whiteSpace? asTypeClause)? endOfStatement + (visibility whiteSpace)? (STATIC whiteSpace)? FUNCTION whiteSpace? functionName typeHint? (whiteSpace? argList)? (whiteSpace? asTypeClause)? endOfStatement block? END_FUNCTION ; +functionName : identifier; getStmt : GET whiteSpace fileNumber whiteSpace? COMMA whiteSpace? valueStmt? whiteSpace? COMMA whiteSpace? valueStmt; @@ -268,26 +231,19 @@ implementsStmt : IMPLEMENTS whiteSpace valueStmt; inputStmt : INPUT whiteSpace fileNumber (whiteSpace? COMMA whiteSpace? valueStmt)+; -killStmt : KILL whiteSpace valueStmt; - -letStmt : (LET whiteSpace)? implicitCallStmt_InStmt whiteSpace? EQ whiteSpace? valueStmt; +letStmt : (LET whiteSpace)? valueStmt whiteSpace? EQ whiteSpace? valueStmt; lineInputStmt : LINE_INPUT whiteSpace fileNumber whiteSpace? COMMA whiteSpace? valueStmt; -loadStmt : LOAD whiteSpace valueStmt; - lockStmt : LOCK whiteSpace valueStmt (whiteSpace? COMMA whiteSpace? valueStmt (whiteSpace TO whiteSpace valueStmt)?)?; -lsetStmt : LSET whiteSpace implicitCallStmt_InStmt whiteSpace? EQ whiteSpace? valueStmt; +lsetStmt : LSET whiteSpace valueStmt whiteSpace? EQ whiteSpace? valueStmt; midStmt : MID whiteSpace? LPAREN whiteSpace? argsCall whiteSpace? RPAREN; -mkdirStmt : MKDIR whiteSpace valueStmt; - -nameStmt : NAME whiteSpace valueStmt whiteSpace AS whiteSpace valueStmt; - onErrorStmt : (ON_ERROR | ON_LOCAL_ERROR) whiteSpace (GOTO whiteSpace valueStmt | RESUME whiteSpace NEXT); +// TODO: only first valueStmt is correct, rest should be IDENTIFIER/INTEGERs? onGoToStmt : ON whiteSpace valueStmt whiteSpace GOTO whiteSpace valueStmt (whiteSpace? COMMA whiteSpace? valueStmt)*; onGoSubStmt : ON whiteSpace valueStmt whiteSpace GOSUB whiteSpace valueStmt (whiteSpace? COMMA whiteSpace? valueStmt)*; @@ -313,19 +269,19 @@ outputList_Expression : printStmt : PRINT whiteSpace fileNumber whiteSpace? COMMA (whiteSpace? outputList)?; propertyGetStmt : - (visibility whiteSpace)? (STATIC whiteSpace)? PROPERTY_GET whiteSpace identifier typeHint? (whiteSpace? argList)? (whiteSpace asTypeClause)? endOfStatement + (visibility whiteSpace)? (STATIC whiteSpace)? PROPERTY_GET whiteSpace functionName typeHint? (whiteSpace? argList)? (whiteSpace asTypeClause)? endOfStatement block? END_PROPERTY ; propertySetStmt : - (visibility whiteSpace)? (STATIC whiteSpace)? PROPERTY_SET whiteSpace identifier (whiteSpace? argList)? endOfStatement + (visibility whiteSpace)? (STATIC whiteSpace)? PROPERTY_SET whiteSpace subroutineName (whiteSpace? argList)? endOfStatement block? END_PROPERTY ; propertyLetStmt : - (visibility whiteSpace)? (STATIC whiteSpace)? PROPERTY_LET whiteSpace identifier (whiteSpace? argList)? endOfStatement + (visibility whiteSpace)? (STATIC whiteSpace)? PROPERTY_LET whiteSpace subroutineName (whiteSpace? argList)? endOfStatement block? END_PROPERTY ; @@ -334,25 +290,20 @@ putStmt : PUT whiteSpace fileNumber whiteSpace? COMMA whiteSpace? valueStmt? whi raiseEventStmt : RAISEEVENT whiteSpace identifier (whiteSpace? LPAREN whiteSpace? (argsCall whiteSpace?)? RPAREN)?; -randomizeStmt : RANDOMIZE (whiteSpace valueStmt)?; - redimStmt : REDIM whiteSpace (PRESERVE whiteSpace)? redimSubStmt (whiteSpace? COMMA whiteSpace? redimSubStmt)*; redimSubStmt : implicitCallStmt_InStmt whiteSpace? LPAREN whiteSpace? subscripts whiteSpace? RPAREN (whiteSpace asTypeClause)?; resetStmt : RESET; -resumeStmt : RESUME (whiteSpace (NEXT | identifier))?; +resumeStmt : RESUME (whiteSpace (NEXT | valueStmt))?; returnStmt : RETURN; -rmdirStmt : RMDIR whiteSpace valueStmt; +rsetStmt : RSET whiteSpace valueStmt whiteSpace? EQ whiteSpace? valueStmt; -rsetStmt : RSET whiteSpace implicitCallStmt_InStmt whiteSpace? EQ whiteSpace? valueStmt; - -savepictureStmt : SAVEPICTURE whiteSpace valueStmt whiteSpace? COMMA whiteSpace? valueStmt; - -saveSettingStmt : SAVESETTING whiteSpace valueStmt whiteSpace? COMMA whiteSpace? valueStmt whiteSpace? COMMA whiteSpace? valueStmt whiteSpace? COMMA whiteSpace? valueStmt; +// 5.4.2.11 Stop Statement +stopStmt : STOP; seekStmt : SEEK whiteSpace fileNumber whiteSpace? COMMA whiteSpace? valueStmt; @@ -378,21 +329,14 @@ sC_Cond : | sC_Selection (whiteSpace? COMMA whiteSpace? sC_Selection)* # caseCondSelection ; -sendkeysStmt : SENDKEYS whiteSpace valueStmt (whiteSpace? COMMA whiteSpace? valueStmt)?; - -setattrStmt : SETATTR whiteSpace valueStmt whiteSpace? COMMA whiteSpace? valueStmt; - -setStmt : SET whiteSpace implicitCallStmt_InStmt whiteSpace? EQ whiteSpace? valueStmt; - -stopStmt : STOP; +setStmt : SET whiteSpace valueStmt whiteSpace? EQ whiteSpace? valueStmt; subStmt : - (visibility whiteSpace)? (STATIC whiteSpace)? SUB whiteSpace? identifier (whiteSpace? argList)? endOfStatement + (visibility whiteSpace)? (STATIC whiteSpace)? SUB whiteSpace? subroutineName (whiteSpace? argList)? endOfStatement block? END_SUB ; - -timeStmt : TIME whiteSpace? EQ whiteSpace? valueStmt; +subroutineName : identifier; typeStmt : (visibility whiteSpace)? TYPE whiteSpace identifier endOfStatement @@ -402,8 +346,6 @@ typeStmt : typeStmt_Element : identifier (whiteSpace? LPAREN (whiteSpace? subscripts)? whiteSpace? RPAREN)? (whiteSpace asTypeClause)? endOfStatement; -unloadStmt : UNLOAD whiteSpace valueStmt; - unlockStmt : UNLOCK whiteSpace fileNumber (whiteSpace? COMMA whiteSpace? valueStmt (whiteSpace TO whiteSpace valueStmt)?)?; valueStmt : @@ -414,7 +356,7 @@ valueStmt : | typeOfIsExpression # vsTypeOf | midStmt # vsMid | ADDRESSOF whiteSpace? valueStmt # vsAddressOf - | implicitCallStmt_InStmt whiteSpace? ASSIGN whiteSpace? valueStmt # vsAssign + | unrestrictedIdentifier whiteSpace? ASSIGN whiteSpace? valueStmt # vsAssign | valueStmt whiteSpace? POW whiteSpace? valueStmt # vsPow | MINUS whiteSpace? valueStmt # vsNegation | valueStmt whiteSpace? (MULT | DIV) whiteSpace? valueStmt # vsMult @@ -448,33 +390,30 @@ whileWendStmt : widthStmt : WIDTH whiteSpace fileNumber whiteSpace? COMMA whiteSpace? valueStmt; withStmt : - // TODO: withStmtExpression should actually be an expression, i.e. a valueStmt. WITH whiteSpace withStmtExpression endOfStatement block? END_WITH ; -withStmtExpression : (implicitCallStmt_InStmt | (NEW whiteSpace type)); +withStmtExpression : valueStmt; writeStmt : WRITE whiteSpace fileNumber whiteSpace? COMMA (whiteSpace? outputList)?; fileNumber : HASH? valueStmt; -explicitCallStmt : - eCS_ProcedureCall - | eCS_MemberProcedureCall -; - -eCS_ProcedureCall : CALL whiteSpace identifier typeHint? (whiteSpace? LPAREN whiteSpace? argsCall whiteSpace? RPAREN)? (whiteSpace? LPAREN subscripts RPAREN)*; +explicitCallStmt : CALL whiteSpace explicitCallStmtExpression; -eCS_MemberProcedureCall : CALL whiteSpace implicitCallStmt_InStmt? DOT identifier typeHint? (whiteSpace? LPAREN whiteSpace? argsCall whiteSpace? RPAREN)? (whiteSpace? LPAREN subscripts RPAREN)*; +explicitCallStmtExpression : + implicitCallStmt_InStmt? DOT identifier typeHint? (whiteSpace? LPAREN whiteSpace? argsCall whiteSpace? RPAREN)? (whiteSpace? LPAREN subscripts RPAREN)* # ECS_MemberCall + | identifier typeHint? (whiteSpace? LPAREN whiteSpace? argsCall whiteSpace? RPAREN)? (whiteSpace? LPAREN subscripts RPAREN)* # ECS_ProcedureCall +; implicitCallStmt_InBlock : iCS_B_MemberProcedureCall | iCS_B_ProcedureCall ; -iCS_B_MemberProcedureCall : implicitCallStmt_InStmt? whiteSpace? DOT whiteSpace? identifier typeHint? (whiteSpace argsCall)? (whiteSpace? dictionaryCallStmt)? (whiteSpace? LPAREN subscripts RPAREN)*; +iCS_B_MemberProcedureCall : implicitCallStmt_InStmt? whiteSpace? DOT whiteSpace? unrestrictedIdentifier typeHint? (whiteSpace argsCall)? (whiteSpace? dictionaryCallStmt)? (whiteSpace? LPAREN subscripts RPAREN)*; iCS_B_ProcedureCall : identifier (whiteSpace argsCall)? (whiteSpace? LPAREN subscripts RPAREN)*; @@ -486,12 +425,14 @@ implicitCallStmt_InStmt : ; iCS_S_VariableOrProcedureCall : identifier typeHint? (whiteSpace? dictionaryCallStmt)? (whiteSpace? LPAREN subscripts RPAREN)*; - iCS_S_ProcedureOrArrayCall : (identifier | baseType) typeHint? whiteSpace? LPAREN whiteSpace? (argsCall whiteSpace?)? RPAREN (whiteSpace? dictionaryCallStmt)? (whiteSpace? LPAREN subscripts RPAREN)*; +iCS_S_VariableOrProcedureCallUnrestricted : unrestrictedIdentifier typeHint? (whiteSpace? dictionaryCallStmt)? (whiteSpace? LPAREN subscripts RPAREN)*; +iCS_S_ProcedureOrArrayCallUnrestricted : (unrestrictedIdentifier | baseType) typeHint? whiteSpace? LPAREN whiteSpace? (argsCall whiteSpace?)? RPAREN (whiteSpace? dictionaryCallStmt)? (whiteSpace? LPAREN subscripts RPAREN)*; + iCS_S_MembersCall : (iCS_S_VariableOrProcedureCall | iCS_S_ProcedureOrArrayCall)? (iCS_S_MemberCall whiteSpace?)+ (whiteSpace? dictionaryCallStmt)? (whiteSpace? LPAREN subscripts RPAREN)*; -iCS_S_MemberCall : (DOT | EXCLAMATIONPOINT) whiteSpace? (iCS_S_VariableOrProcedureCall | iCS_S_ProcedureOrArrayCall); +iCS_S_MemberCall : (DOT | EXCLAMATIONPOINT) whiteSpace? (iCS_S_VariableOrProcedureCallUnrestricted | iCS_S_ProcedureOrArrayCallUnrestricted); iCS_S_DictionaryCall : whiteSpace? dictionaryCallStmt; @@ -499,11 +440,11 @@ argsCall : (argCall? whiteSpace? (COMMA | SEMICOLON) whiteSpace?)* argCall (whit argCall : LPAREN? ((BYVAL | BYREF | PARAMARRAY) whiteSpace)? RPAREN? valueStmt; -dictionaryCallStmt : EXCLAMATIONPOINT whiteSpace? identifier typeHint?; +dictionaryCallStmt : EXCLAMATIONPOINT whiteSpace? unrestrictedIdentifier typeHint?; argList : LPAREN (whiteSpace? arg (whiteSpace? COMMA whiteSpace? arg)*)? whiteSpace? RPAREN; -arg : (OPTIONAL whiteSpace)? ((BYVAL | BYREF) whiteSpace)? (PARAMARRAY whiteSpace)? identifier typeHint? (whiteSpace? LPAREN whiteSpace? RPAREN)? (whiteSpace? asTypeClause)? (whiteSpace? argDefaultValue)?; +arg : (OPTIONAL whiteSpace)? ((BYVAL | BYREF) whiteSpace)? (PARAMARRAY whiteSpace)? unrestrictedIdentifier typeHint? (whiteSpace? LPAREN whiteSpace? RPAREN)? (whiteSpace? asTypeClause)? (whiteSpace? argDefaultValue)?; argDefaultValue : EQ whiteSpace? valueStmt; @@ -511,6 +452,8 @@ subscripts : subscript (whiteSpace? COMMA whiteSpace? subscript)*; subscript : (valueStmt whiteSpace TO whiteSpace)? valueStmt; +unrestrictedIdentifier : identifier | statementKeyword | markerKeyword; + identifier : IDENTIFIER | keyword; asTypeClause : AS whiteSpace? (NEW whiteSpace)? type (whiteSpace? fieldLength)?; @@ -538,55 +481,224 @@ typeHint : PERCENT | AMPERSAND | POW | EXCLAMATIONPOINT | HASH | AT | DOLLAR; visibility : PRIVATE | PUBLIC | FRIEND | GLOBAL; keyword : - ACCESS | ADDRESSOF | ALIAS | AND | ATTRIBUTE | APPACTIVATE | APPEND | AS | - BEEP | BEGIN | BINARY | BOOLEAN | BYVAL | BYREF | BYTE | - CALL | CASE | CLASS | CLOSE | CHDIR | CHDRIVE | COLLECTION | CONST | - DATABASE | DATE | DECLARE | DEFBOOL | DEFBYTE | DEFCUR | DEFDBL | DEFDATE | DEFINT | DEFLNG | DEFLNGLNG | DEFLNGPTR | DEFOBJ | DEFSNG | DEFSTR | DEFVAR | DELETESETTING | DIM | DO | DOUBLE | - EACH | ELSE | ELSEIF | END | ENUM | EQV | ERASE | ERROR | EVENT | - FALSE | FILECOPY | FRIEND | FOR | FUNCTION | - GET | GLOBAL | GOSUB | GOTO | - IF | IMP | IMPLEMENTS | IN | INPUT | IS | INTEGER | - KILL | - LOAD | LOCK | LONG | LOOP | LEN | LET | LIB | LIKE | LSET | - ME | MID | MKDIR | MOD | - NAME | NEXT | NEW | NOT | NOTHING | NULL | - ON | OPEN | OPTIONAL | OR | OUTPUT | - PARAMARRAY | PRESERVE | PRINT | PRIVATE | PUBLIC | PUT | - RANDOM | RANDOMIZE | RAISEEVENT | READ | REDIM | REM | RESET | RESUME | RETURN | RMDIR | RSET | - SAVEPICTURE | SAVESETTING | SEEK | SELECT | SENDKEYS | SET | SETATTR | SHARED | SINGLE | SPC | STATIC | STEP | STOP | STRING | SUB | - TAB | TEXT | THEN | TIME | TO | TRUE | TYPE | TYPEOF | - UNLOAD | UNLOCK | UNTIL | - VARIANT | VERSION | - WEND | WHILE | WIDTH | WITH | WITHEVENTS | WRITE | - XOR | ABS | ANY | ARRAY | CBOOL | CBYTE | CCUR | - CDATE | CDBL | CDEC | CINT | CIRCLE | CLNG | CLNGLNG | CLNGPTR | CSNG | CSTR | CURRENCY | CVAR | - CVERR | DEBUG | DOEVENTS | END_IF | EXIT | FIX | INPUTB | INT | LBOUND | - LEN | LENB | LONGLONG | LONGPTR | MIDB | MIDBTYPESUFFIX | MIDTYPESUFFIX | OPTION | PSET | SCALE | SGN | UBOUND + ABS + | ADDRESSOF + | ALIAS + | AND + | ANY + | ARRAY + | ATTRIBUTE + | BEGIN + | BOOLEAN + | BYREF + | BYTE + | BYVAL + | CBOOL + | CBYTE + | CCUR + | CDATE + | CDBL + | CDEC + | CINT + | CIRCLE + | CLASS + | CLNG + | CLNGLNG + | CLNGPTR + | COLLECTION + | CSNG + | CSTR + | CURRENCY + | CVAR + | CVERR + | DATABASE + | DATE + | DEBUG + | DELETESETTING + | DOEVENTS + | DOUBLE + | END_IF + | EQV + | FALSE + | FIX + | IMP + | IN + | INPUTB + | INT + | INTEGER + | IS + | LBOUND + | LEN + | LEN + | LENB + | LIB + | LIKE + | LOAD + | LONG + | LONGLONG + | LONGPTR + | ME + | MID + | MIDB + | MIDBTYPESUFFIX + | MIDTYPESUFFIX + | MOD + | NEW + | NOT + | NOTHING + | NULL + | OPTIONAL + | OR + | PARAMARRAY + | PRESERVE + | PSET + | REM + | RMDIR + | SCALE + | SENDKEYS + | SETATTR + | SGN + | SINGLE + | SPC + | STRING + | TAB + | TEXT + | THEN + | TO + | TRUE + | TYPEOF + | UBOUND + | UNTIL + | VARIANT + | VERSION + | WITHEVENTS + | XOR +; + +markerKeyword : AS; + +statementKeyword : + CALL + | CASE + | CLOSE + | CONST + | DECLARE + | DEFBOOL + | DEFBYTE + | DEFCUR + | DEFDATE + | DEFDBL + | DEFINT + | DEFLNG + | DEFLNGLNG + | DEFLNGPTR + | DEFOBJ + | DEFSNG + | DEFSTR + | DEFVAR + | DIM + | DO + | ELSE + | ELSEIF + | END + | ENDIF + | ENUM + | ERASE + | EVENT + | EXIT + | FOR + | FRIEND + | FUNCTION + | GET + | GLOBAL + | GOSUB + | GOTO + | IF + | IMPLEMENTS + | INPUT + | LET + | LOCK + | LOOP + | LSET + | NEXT + | ON + | OPEN + | OPTION + | PRINT + | PRIVATE + | PUBLIC + | PUT + | RAISEEVENT + | REDIM + | RESUME + | RETURN + | RSET + | SEEK + | SELECT + | SET + | STATIC + | STOP + | SUB + | TYPE + | UNLOCK + | WEND + | WHILE + | WITH + | WRITE + | STEP + | EXIT_DO + | EXIT_FOR + | EXIT_FUNCTION + | EXIT_PROPERTY + | EXIT_SUB + | END_SELECT + | END_WITH + | ON_ERROR + | RESUME_NEXT + | ERROR + | APPEND + | BINARY + | OUTPUT + | RANDOM + | ACCESS + | READ + | WRITE + | READ_WRITE + | SHARED + | LOCK_READ + | LOCK_WRITE + | LOCK_READ_WRITE + | RESET + | LINE_INPUT + | WIDTH ; endOfLine : - whiteSpace? (NEWLINE+ | comment | remComment) whiteSpace? - | whiteSpace? annotationList + whiteSpace? commentOrAnnotation? ; -endOfStatement : (endOfLine | whiteSpace? COLON whiteSpace?)*; - -remComment : REMCOMMENT; - -comment : SINGLEQUOTE | COMMENT; - -annotationList : SINGLEQUOTE annotation+; - -annotation : AT annotationName annotationArgList?; - -annotationName : IDENTIFIER; +endOfStatement : + (((endOfLine NEWLINE whiteSpace?)|(whiteSpace? COLON whiteSpace?)))* + | endOfLine EOF +; +// Annotations must come before comments because of precedence. ANTLR4 matches as much as possible then chooses the one that comes first. +commentOrAnnotation : + annotationList + | comment + | remComment +; +remComment : REM whiteSpace? commentBody; +comment : SINGLEQUOTE commentBody; +commentBody : (LINE_CONTINUATION | ~NEWLINE)*; +annotationList : SINGLEQUOTE (AT annotation whiteSpace?)+; +annotation : annotationName annotationArgList?; +annotationName : unrestrictedIdentifier; annotationArgList : - whiteSpace annotationArg whiteSpace? - | whiteSpace annotationArg (whiteSpace? COMMA whiteSpace? annotationArg)+ whiteSpace? - | whiteSpace? LPAREN whiteSpace? annotationArg whiteSpace? RPAREN whiteSpace? - | whiteSpace? LPAREN annotationArg (whiteSpace? COMMA whiteSpace? annotationArg)+ whiteSpace? RPAREN whiteSpace?; - -annotationArg : IDENTIFIER | literal; + whiteSpace annotationArg + | whiteSpace annotationArg (whiteSpace? COMMA whiteSpace? annotationArg)+ + | whiteSpace? LPAREN whiteSpace? annotationArg whiteSpace? RPAREN + | whiteSpace? LPAREN annotationArg (whiteSpace? COMMA whiteSpace? annotationArg)+ whiteSpace? RPAREN; +annotationArg : valueStmt; whiteSpace : (WS | LINE_CONTINUATION)+; \ No newline at end of file diff --git a/Rubberduck.Parsing/Grammar/VBAParserBaseListener.cs b/Rubberduck.Parsing/Grammar/VBAParserBaseListener.cs index 51edf2a84a..44134af8b7 100644 --- a/Rubberduck.Parsing/Grammar/VBAParserBaseListener.cs +++ b/Rubberduck.Parsing/Grammar/VBAParserBaseListener.cs @@ -46,19 +46,6 @@ public virtual void EnterSeekStmt([NotNull] VBAParser.SeekStmtContext context) { /// The parse tree. public virtual void ExitSeekStmt([NotNull] VBAParser.SeekStmtContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterDeleteSettingStmt([NotNull] VBAParser.DeleteSettingStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitDeleteSettingStmt([NotNull] VBAParser.DeleteSettingStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -85,32 +72,6 @@ public virtual void EnterConstStmt([NotNull] VBAParser.ConstStmtContext context) /// The parse tree. public virtual void ExitConstStmt([NotNull] VBAParser.ConstStmtContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterECS_MemberProcedureCall([NotNull] VBAParser.ECS_MemberProcedureCallContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitECS_MemberProcedureCall([NotNull] VBAParser.ECS_MemberProcedureCallContext context) { } - - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterSetattrStmt([NotNull] VBAParser.SetattrStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitSetattrStmt([NotNull] VBAParser.SetattrStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -163,6 +124,19 @@ public virtual void EnterTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementCo /// The parse tree. public virtual void ExitTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -293,19 +267,6 @@ public virtual void EnterRemComment([NotNull] VBAParser.RemCommentContext contex /// The parse tree. public virtual void ExitRemComment([NotNull] VBAParser.RemCommentContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterTimeStmt([NotNull] VBAParser.TimeStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitTimeStmt([NotNull] VBAParser.TimeStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -372,17 +333,17 @@ public virtual void EnterFieldLength([NotNull] VBAParser.FieldLengthContext cont public virtual void ExitFieldLength([NotNull] VBAParser.FieldLengthContext context) { } /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void EnterECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context) { } + public virtual void EnterECS_MemberCall([NotNull] VBAParser.ECS_MemberCallContext context) { } /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void ExitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context) { } + public virtual void ExitECS_MemberCall([NotNull] VBAParser.ECS_MemberCallContext context) { } /// /// Enter a parse tree produced by . @@ -592,19 +553,6 @@ public virtual void EnterICS_B_MemberProcedureCall([NotNull] VBAParser.ICS_B_Mem /// The parse tree. public virtual void ExitICS_B_MemberProcedureCall([NotNull] VBAParser.ICS_B_MemberProcedureCallContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterFilecopyStmt([NotNull] VBAParser.FilecopyStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitFilecopyStmt([NotNull] VBAParser.FilecopyStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -709,19 +657,6 @@ public virtual void EnterArgCall([NotNull] VBAParser.ArgCallContext context) { } /// The parse tree. public virtual void ExitArgCall([NotNull] VBAParser.ArgCallContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterNameStmt([NotNull] VBAParser.NameStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitNameStmt([NotNull] VBAParser.NameStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -761,19 +696,6 @@ public virtual void EnterConstSubStmt([NotNull] VBAParser.ConstSubStmtContext co /// The parse tree. public virtual void ExitConstSubStmt([NotNull] VBAParser.ConstSubStmtContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterDateStmt([NotNull] VBAParser.DateStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitDateStmt([NotNull] VBAParser.DateStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -814,30 +736,30 @@ public virtual void EnterRedimStmt([NotNull] VBAParser.RedimStmtContext context) public virtual void ExitRedimStmt([NotNull] VBAParser.RedimStmtContext context) { } /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void EnterSaveSettingStmt([NotNull] VBAParser.SaveSettingStmtContext context) { } + public virtual void EnterLiteral([NotNull] VBAParser.LiteralContext context) { } /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void ExitSaveSettingStmt([NotNull] VBAParser.SaveSettingStmtContext context) { } + public virtual void ExitLiteral([NotNull] VBAParser.LiteralContext context) { } /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void EnterLiteral([NotNull] VBAParser.LiteralContext context) { } + public virtual void EnterICS_S_ProcedureOrArrayCallUnrestricted([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallUnrestrictedContext context) { } /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void ExitLiteral([NotNull] VBAParser.LiteralContext context) { } + public virtual void ExitICS_S_ProcedureOrArrayCallUnrestricted([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallUnrestrictedContext context) { } /// /// Enter a parse tree produced by . @@ -930,19 +852,6 @@ public virtual void EnterEventStmt([NotNull] VBAParser.EventStmtContext context) /// The parse tree. public virtual void ExitEventStmt([NotNull] VBAParser.EventStmtContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterMkdirStmt([NotNull] VBAParser.MkdirStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitMkdirStmt([NotNull] VBAParser.MkdirStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -969,19 +878,6 @@ public virtual void EnterResumeStmt([NotNull] VBAParser.ResumeStmtContext contex /// The parse tree. public virtual void ExitResumeStmt([NotNull] VBAParser.ResumeStmtContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterSendkeysStmt([NotNull] VBAParser.SendkeysStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitSendkeysStmt([NotNull] VBAParser.SendkeysStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1021,19 +917,6 @@ public virtual void EnterVsNot([NotNull] VBAParser.VsNotContext context) { } /// The parse tree. public virtual void ExitVsNot([NotNull] VBAParser.VsNotContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterChdriveStmt([NotNull] VBAParser.ChdriveStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitChdriveStmt([NotNull] VBAParser.ChdriveStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1060,19 +943,6 @@ public virtual void EnterEndOfLine([NotNull] VBAParser.EndOfLineContext context) /// The parse tree. public virtual void ExitEndOfLine([NotNull] VBAParser.EndOfLineContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterRandomizeStmt([NotNull] VBAParser.RandomizeStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitRandomizeStmt([NotNull] VBAParser.RandomizeStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1112,19 +982,6 @@ public virtual void EnterVsAnd([NotNull] VBAParser.VsAndContext context) { } /// The parse tree. public virtual void ExitVsAnd([NotNull] VBAParser.VsAndContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterEndStmt([NotNull] VBAParser.EndStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitEndStmt([NotNull] VBAParser.EndStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1152,30 +1009,30 @@ public virtual void EnterBlockIfThenElse([NotNull] VBAParser.BlockIfThenElseCont public virtual void ExitBlockIfThenElse([NotNull] VBAParser.BlockIfThenElseContext context) { } /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void EnterSavepictureStmt([NotNull] VBAParser.SavepictureStmtContext context) { } + public virtual void EnterVsAmp([NotNull] VBAParser.VsAmpContext context) { } /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void ExitSavepictureStmt([NotNull] VBAParser.SavepictureStmtContext context) { } + public virtual void ExitVsAmp([NotNull] VBAParser.VsAmpContext context) { } /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void EnterVsAmp([NotNull] VBAParser.VsAmpContext context) { } + public virtual void EnterSubroutineName([NotNull] VBAParser.SubroutineNameContext context) { } /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void ExitVsAmp([NotNull] VBAParser.VsAmpContext context) { } + public virtual void ExitSubroutineName([NotNull] VBAParser.SubroutineNameContext context) { } /// /// Enter a parse tree produced by . @@ -1385,19 +1242,6 @@ public virtual void EnterVsRelational([NotNull] VBAParser.VsRelationalContext co /// The parse tree. public virtual void ExitVsRelational([NotNull] VBAParser.VsRelationalContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterChdirStmt([NotNull] VBAParser.ChdirStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitChdirStmt([NotNull] VBAParser.ChdirStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1437,6 +1281,19 @@ public virtual void EnterInlineIfThenElse([NotNull] VBAParser.InlineIfThenElseCo /// The parse tree. public virtual void ExitInlineIfThenElse([NotNull] VBAParser.InlineIfThenElseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterStatementKeyword([NotNull] VBAParser.StatementKeywordContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitStatementKeyword([NotNull] VBAParser.StatementKeywordContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1528,19 +1385,6 @@ public virtual void EnterAnnotationArg([NotNull] VBAParser.AnnotationArgContext /// The parse tree. public virtual void ExitAnnotationArg([NotNull] VBAParser.AnnotationArgContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterUnloadStmt([NotNull] VBAParser.UnloadStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitUnloadStmt([NotNull] VBAParser.UnloadStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1594,17 +1438,17 @@ public virtual void EnterVisibility([NotNull] VBAParser.VisibilityContext contex public virtual void ExitVisibility([NotNull] VBAParser.VisibilityContext context) { } /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void EnterBeepStmt([NotNull] VBAParser.BeepStmtContext context) { } + public virtual void EnterAttributeValue([NotNull] VBAParser.AttributeValueContext context) { } /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// The default implementation does nothing. /// /// The parse tree. - public virtual void ExitBeepStmt([NotNull] VBAParser.BeepStmtContext context) { } + public virtual void ExitAttributeValue([NotNull] VBAParser.AttributeValueContext context) { } /// /// Enter a parse tree produced by . @@ -1710,19 +1554,6 @@ public virtual void EnterVsMod([NotNull] VBAParser.VsModContext context) { } /// The parse tree. public virtual void ExitVsMod([NotNull] VBAParser.VsModContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterKillStmt([NotNull] VBAParser.KillStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitKillStmt([NotNull] VBAParser.KillStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1736,19 +1567,6 @@ public virtual void EnterVsOr([NotNull] VBAParser.VsOrContext context) { } /// The parse tree. public virtual void ExitVsOr([NotNull] VBAParser.VsOrContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterRmdirStmt([NotNull] VBAParser.RmdirStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitRmdirStmt([NotNull] VBAParser.RmdirStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1775,19 +1593,6 @@ public virtual void EnterCaseCondElse([NotNull] VBAParser.CaseCondElseContext co /// The parse tree. public virtual void ExitCaseCondElse([NotNull] VBAParser.CaseCondElseContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterAppactivateStmt([NotNull] VBAParser.AppactivateStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitAppactivateStmt([NotNull] VBAParser.AppactivateStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1905,19 +1710,6 @@ public virtual void EnterPropertyGetStmt([NotNull] VBAParser.PropertyGetStmtCont /// The parse tree. public virtual void ExitPropertyGetStmt([NotNull] VBAParser.PropertyGetStmtContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterLoadStmt([NotNull] VBAParser.LoadStmtContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitLoadStmt([NotNull] VBAParser.LoadStmtContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -1957,6 +1749,32 @@ public virtual void EnterOpenStmt([NotNull] VBAParser.OpenStmtContext context) { /// The parse tree. public virtual void ExitOpenStmt([NotNull] VBAParser.OpenStmtContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterMarkerKeyword([NotNull] VBAParser.MarkerKeywordContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitMarkerKeyword([NotNull] VBAParser.MarkerKeywordContext context) { } + + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterAttributeName([NotNull] VBAParser.AttributeNameContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitAttributeName([NotNull] VBAParser.AttributeNameContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -2048,6 +1866,19 @@ public virtual void EnterSC_Case([NotNull] VBAParser.SC_CaseContext context) { } /// The parse tree. public virtual void ExitSC_Case([NotNull] VBAParser.SC_CaseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterFunctionName([NotNull] VBAParser.FunctionNameContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitFunctionName([NotNull] VBAParser.FunctionNameContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -2061,6 +1892,19 @@ public virtual void EnterVariableListStmt([NotNull] VBAParser.VariableListStmtCo /// The parse tree. public virtual void ExitVariableListStmt([NotNull] VBAParser.VariableListStmtContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterICS_S_VariableOrProcedureCallUnrestricted([NotNull] VBAParser.ICS_S_VariableOrProcedureCallUnrestrictedContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitICS_S_VariableOrProcedureCallUnrestricted([NotNull] VBAParser.ICS_S_VariableOrProcedureCallUnrestrictedContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -2100,6 +1944,19 @@ public virtual void EnterVsXor([NotNull] VBAParser.VsXorContext context) { } /// The parse tree. public virtual void ExitVsXor([NotNull] VBAParser.VsXorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterCommentOrAnnotation([NotNull] VBAParser.CommentOrAnnotationContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitCommentOrAnnotation([NotNull] VBAParser.CommentOrAnnotationContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -2243,6 +2100,19 @@ public virtual void EnterEraseStmt([NotNull] VBAParser.EraseStmtContext context) /// The parse tree. public virtual void ExitEraseStmt([NotNull] VBAParser.EraseStmtContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterCommentBody([NotNull] VBAParser.CommentBodyContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitCommentBody([NotNull] VBAParser.CommentBodyContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -2308,6 +2178,19 @@ public virtual void EnterModuleBodyElement([NotNull] VBAParser.ModuleBodyElement /// The parse tree. public virtual void ExitModuleBodyElement([NotNull] VBAParser.ModuleBodyElementContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterUnrestrictedIdentifier([NotNull] VBAParser.UnrestrictedIdentifierContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitUnrestrictedIdentifier([NotNull] VBAParser.UnrestrictedIdentifierContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. diff --git a/Rubberduck.Parsing/Grammar/VBAParserBaseVisitor.cs b/Rubberduck.Parsing/Grammar/VBAParserBaseVisitor.cs index 09998cec9d..edafe556c8 100644 --- a/Rubberduck.Parsing/Grammar/VBAParserBaseVisitor.cs +++ b/Rubberduck.Parsing/Grammar/VBAParserBaseVisitor.cs @@ -43,17 +43,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitSeekStmt([NotNull] VBAParser.SeekStmtContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitDeleteSettingStmt([NotNull] VBAParser.DeleteSettingStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -77,18 +66,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitECS_MemberProcedureCall([NotNull] VBAParser.ECS_MemberProcedureCallContext context) { return VisitChildren(context); } - - /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -96,10 +74,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitSetattrStmt([NotNull] VBAParser.SetattrStmtContext context) { return VisitChildren(context); } + public virtual Result VisitArgDefaultValue([NotNull] VBAParser.ArgDefaultValueContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -107,10 +85,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitArgDefaultValue([NotNull] VBAParser.ArgDefaultValueContext context) { return VisitChildren(context); } + public virtual Result VisitPropertyLetStmt([NotNull] VBAParser.PropertyLetStmtContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -118,10 +96,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitPropertyLetStmt([NotNull] VBAParser.PropertyLetStmtContext context) { return VisitChildren(context); } + public virtual Result VisitModuleAttributes([NotNull] VBAParser.ModuleAttributesContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -129,10 +107,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitModuleAttributes([NotNull] VBAParser.ModuleAttributesContext context) { return VisitChildren(context); } + public virtual Result VisitTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -140,7 +118,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementContext context) { return VisitChildren(context); } + public virtual Result VisitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . @@ -252,17 +230,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitRemComment([NotNull] VBAParser.RemCommentContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitTimeStmt([NotNull] VBAParser.TimeStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -319,7 +286,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -327,7 +294,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context) { return VisitChildren(context); } + public virtual Result VisitECS_MemberCall([NotNull] VBAParser.ECS_MemberCallContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . @@ -505,17 +472,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitICS_B_MemberProcedureCall([NotNull] VBAParser.ICS_B_MemberProcedureCallContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitFilecopyStmt([NotNull] VBAParser.FilecopyStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -604,17 +560,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitArgCall([NotNull] VBAParser.ArgCallContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitNameStmt([NotNull] VBAParser.NameStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -648,17 +593,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitConstSubStmt([NotNull] VBAParser.ConstSubStmtContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitDateStmt([NotNull] VBAParser.DateStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -693,7 +627,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -701,10 +635,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitSaveSettingStmt([NotNull] VBAParser.SaveSettingStmtContext context) { return VisitChildren(context); } + public virtual Result VisitLiteral([NotNull] VBAParser.LiteralContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -712,7 +646,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitLiteral([NotNull] VBAParser.LiteralContext context) { return VisitChildren(context); } + public virtual Result VisitICS_S_ProcedureOrArrayCallUnrestricted([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallUnrestrictedContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . @@ -791,17 +725,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitEventStmt([NotNull] VBAParser.EventStmtContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitMkdirStmt([NotNull] VBAParser.MkdirStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -824,17 +747,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitResumeStmt([NotNull] VBAParser.ResumeStmtContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSendkeysStmt([NotNull] VBAParser.SendkeysStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -868,17 +780,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitVsNot([NotNull] VBAParser.VsNotContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitChdriveStmt([NotNull] VBAParser.ChdriveStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -901,17 +802,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitEndOfLine([NotNull] VBAParser.EndOfLineContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitRandomizeStmt([NotNull] VBAParser.RandomizeStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -945,17 +835,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitVsAnd([NotNull] VBAParser.VsAndContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitEndStmt([NotNull] VBAParser.EndStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -979,7 +858,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -987,10 +866,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitSavepictureStmt([NotNull] VBAParser.SavepictureStmtContext context) { return VisitChildren(context); } + public virtual Result VisitVsAmp([NotNull] VBAParser.VsAmpContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -998,7 +877,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitVsAmp([NotNull] VBAParser.VsAmpContext context) { return VisitChildren(context); } + public virtual Result VisitSubroutineName([NotNull] VBAParser.SubroutineNameContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . @@ -1177,7 +1056,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1185,10 +1064,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitChdirStmt([NotNull] VBAParser.ChdirStmtContext context) { return VisitChildren(context); } + public virtual Result VisitLineInputStmt([NotNull] VBAParser.LineInputStmtContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1196,10 +1075,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitLineInputStmt([NotNull] VBAParser.LineInputStmtContext context) { return VisitChildren(context); } + public virtual Result VisitTypeStmt([NotNull] VBAParser.TypeStmtContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1207,10 +1086,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitTypeStmt([NotNull] VBAParser.TypeStmtContext context) { return VisitChildren(context); } + public virtual Result VisitInlineIfThenElse([NotNull] VBAParser.InlineIfThenElseContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1218,7 +1097,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitInlineIfThenElse([NotNull] VBAParser.InlineIfThenElseContext context) { return VisitChildren(context); } + public virtual Result VisitStatementKeyword([NotNull] VBAParser.StatementKeywordContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . @@ -1297,17 +1176,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitAnnotationArg([NotNull] VBAParser.AnnotationArgContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitUnloadStmt([NotNull] VBAParser.UnloadStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -1353,7 +1221,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1361,7 +1229,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitBeepStmt([NotNull] VBAParser.BeepStmtContext context) { return VisitChildren(context); } + public virtual Result VisitAttributeValue([NotNull] VBAParser.AttributeValueContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . @@ -1451,17 +1319,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitVsMod([NotNull] VBAParser.VsModContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitKillStmt([NotNull] VBAParser.KillStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -1473,17 +1330,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitVsOr([NotNull] VBAParser.VsOrContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitRmdirStmt([NotNull] VBAParser.RmdirStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -1506,17 +1352,6 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitCaseCondElse([NotNull] VBAParser.CaseCondElseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitAppactivateStmt([NotNull] VBAParser.AppactivateStmtContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -1617,7 +1452,7 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1625,10 +1460,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitLoadStmt([NotNull] VBAParser.LoadStmtContext context) { return VisitChildren(context); } + public virtual Result VisitBaseType([NotNull] VBAParser.BaseTypeContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1636,10 +1471,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitBaseType([NotNull] VBAParser.BaseTypeContext context) { return VisitChildren(context); } + public virtual Result VisitICS_S_ProcedureOrArrayCall([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1647,10 +1482,10 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitICS_S_ProcedureOrArrayCall([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallContext context) { return VisitChildren(context); } + public virtual Result VisitOpenStmt([NotNull] VBAParser.OpenStmtContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -1658,7 +1493,18 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitor /// The parse tree. /// The visitor result. - public virtual Result VisitOpenStmt([NotNull] VBAParser.OpenStmtContext context) { return VisitChildren(context); } + public virtual Result VisitMarkerKeyword([NotNull] VBAParser.MarkerKeywordContext context) { return VisitChildren(context); } + + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAttributeName([NotNull] VBAParser.AttributeNameContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . @@ -1737,6 +1583,17 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitSC_Case([NotNull] VBAParser.SC_CaseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFunctionName([NotNull] VBAParser.FunctionNameContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// @@ -1748,6 +1605,17 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitVariableListStmt([NotNull] VBAParser.VariableListStmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitICS_S_VariableOrProcedureCallUnrestricted([NotNull] VBAParser.ICS_S_VariableOrProcedureCallUnrestrictedContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// @@ -1781,6 +1649,17 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitVsXor([NotNull] VBAParser.VsXorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCommentOrAnnotation([NotNull] VBAParser.CommentOrAnnotationContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// @@ -1902,6 +1781,17 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitEraseStmt([NotNull] VBAParser.EraseStmtContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCommentBody([NotNull] VBAParser.CommentBodyContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// @@ -1957,6 +1847,17 @@ public partial class VBAParserBaseVisitor : AbstractParseTreeVisitorThe visitor result. public virtual Result VisitModuleBodyElement([NotNull] VBAParser.ModuleBodyElementContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitUnrestrictedIdentifier([NotNull] VBAParser.UnrestrictedIdentifierContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// diff --git a/Rubberduck.Parsing/Grammar/VBAParserListener.cs b/Rubberduck.Parsing/Grammar/VBAParserListener.cs index 8854da9959..9505c2645a 100644 --- a/Rubberduck.Parsing/Grammar/VBAParserListener.cs +++ b/Rubberduck.Parsing/Grammar/VBAParserListener.cs @@ -40,17 +40,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitSeekStmt([NotNull] VBAParser.SeekStmtContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterDeleteSettingStmt([NotNull] VBAParser.DeleteSettingStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitDeleteSettingStmt([NotNull] VBAParser.DeleteSettingStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -73,28 +62,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitConstStmt([NotNull] VBAParser.ConstStmtContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterECS_MemberProcedureCall([NotNull] VBAParser.ECS_MemberProcedureCallContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitECS_MemberProcedureCall([NotNull] VBAParser.ECS_MemberProcedureCallContext context); - - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSetattrStmt([NotNull] VBAParser.SetattrStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSetattrStmt([NotNull] VBAParser.SetattrStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -139,6 +106,19 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementContext context); + /// + /// Enter a parse tree produced by the ECS_ProcedureCall + /// labeled alternative in . + /// + /// The parse tree. + void EnterECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context); + /// + /// Exit a parse tree produced by the ECS_ProcedureCall + /// labeled alternative in . + /// + /// The parse tree. + void ExitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context); + /// /// Enter a parse tree produced by . /// @@ -253,17 +233,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitRemComment([NotNull] VBAParser.RemCommentContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterTimeStmt([NotNull] VBAParser.TimeStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitTimeStmt([NotNull] VBAParser.TimeStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -322,15 +291,17 @@ public interface IVBAParserListener : IParseTreeListener { void ExitFieldLength([NotNull] VBAParser.FieldLengthContext context); /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by the ECS_MemberCall + /// labeled alternative in . /// /// The parse tree. - void EnterECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context); + void EnterECS_MemberCall([NotNull] VBAParser.ECS_MemberCallContext context); /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by the ECS_MemberCall + /// labeled alternative in . /// /// The parse tree. - void ExitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context); + void ExitECS_MemberCall([NotNull] VBAParser.ECS_MemberCallContext context); /// /// Enter a parse tree produced by . @@ -510,17 +481,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitICS_B_MemberProcedureCall([NotNull] VBAParser.ICS_B_MemberProcedureCallContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterFilecopyStmt([NotNull] VBAParser.FilecopyStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitFilecopyStmt([NotNull] VBAParser.FilecopyStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -613,17 +573,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitArgCall([NotNull] VBAParser.ArgCallContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterNameStmt([NotNull] VBAParser.NameStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitNameStmt([NotNull] VBAParser.NameStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -657,17 +606,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitConstSubStmt([NotNull] VBAParser.ConstSubStmtContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterDateStmt([NotNull] VBAParser.DateStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitDateStmt([NotNull] VBAParser.DateStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -704,26 +642,26 @@ public interface IVBAParserListener : IParseTreeListener { void ExitRedimStmt([NotNull] VBAParser.RedimStmtContext context); /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// /// The parse tree. - void EnterSaveSettingStmt([NotNull] VBAParser.SaveSettingStmtContext context); + void EnterLiteral([NotNull] VBAParser.LiteralContext context); /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// /// The parse tree. - void ExitSaveSettingStmt([NotNull] VBAParser.SaveSettingStmtContext context); + void ExitLiteral([NotNull] VBAParser.LiteralContext context); /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// /// The parse tree. - void EnterLiteral([NotNull] VBAParser.LiteralContext context); + void EnterICS_S_ProcedureOrArrayCallUnrestricted([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallUnrestrictedContext context); /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// /// The parse tree. - void ExitLiteral([NotNull] VBAParser.LiteralContext context); + void ExitICS_S_ProcedureOrArrayCallUnrestricted([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallUnrestrictedContext context); /// /// Enter a parse tree produced by . @@ -806,17 +744,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitEventStmt([NotNull] VBAParser.EventStmtContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterMkdirStmt([NotNull] VBAParser.MkdirStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitMkdirStmt([NotNull] VBAParser.MkdirStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -839,17 +766,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitResumeStmt([NotNull] VBAParser.ResumeStmtContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSendkeysStmt([NotNull] VBAParser.SendkeysStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSendkeysStmt([NotNull] VBAParser.SendkeysStmtContext context); - /// /// Enter a parse tree produced by the optionExplicitStmt /// labeled alternative in . @@ -887,17 +803,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitVsNot([NotNull] VBAParser.VsNotContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterChdriveStmt([NotNull] VBAParser.ChdriveStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitChdriveStmt([NotNull] VBAParser.ChdriveStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -920,17 +825,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitEndOfLine([NotNull] VBAParser.EndOfLineContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterRandomizeStmt([NotNull] VBAParser.RandomizeStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitRandomizeStmt([NotNull] VBAParser.RandomizeStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -966,17 +860,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitVsAnd([NotNull] VBAParser.VsAndContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterEndStmt([NotNull] VBAParser.EndStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitEndStmt([NotNull] VBAParser.EndStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -1002,28 +885,28 @@ public interface IVBAParserListener : IParseTreeListener { void ExitBlockIfThenElse([NotNull] VBAParser.BlockIfThenElseContext context); /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by the vsAmp + /// labeled alternative in . /// /// The parse tree. - void EnterSavepictureStmt([NotNull] VBAParser.SavepictureStmtContext context); + void EnterVsAmp([NotNull] VBAParser.VsAmpContext context); /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by the vsAmp + /// labeled alternative in . /// /// The parse tree. - void ExitSavepictureStmt([NotNull] VBAParser.SavepictureStmtContext context); + void ExitVsAmp([NotNull] VBAParser.VsAmpContext context); /// - /// Enter a parse tree produced by the vsAmp - /// labeled alternative in . + /// Enter a parse tree produced by . /// /// The parse tree. - void EnterVsAmp([NotNull] VBAParser.VsAmpContext context); + void EnterSubroutineName([NotNull] VBAParser.SubroutineNameContext context); /// - /// Exit a parse tree produced by the vsAmp - /// labeled alternative in . + /// Exit a parse tree produced by . /// /// The parse tree. - void ExitVsAmp([NotNull] VBAParser.VsAmpContext context); + void ExitSubroutineName([NotNull] VBAParser.SubroutineNameContext context); /// /// Enter a parse tree produced by . @@ -1211,17 +1094,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitVsRelational([NotNull] VBAParser.VsRelationalContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterChdirStmt([NotNull] VBAParser.ChdirStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitChdirStmt([NotNull] VBAParser.ChdirStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -1257,6 +1129,17 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitInlineIfThenElse([NotNull] VBAParser.InlineIfThenElseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterStatementKeyword([NotNull] VBAParser.StatementKeywordContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitStatementKeyword([NotNull] VBAParser.StatementKeywordContext context); + /// /// Enter a parse tree produced by . /// @@ -1336,17 +1219,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitAnnotationArg([NotNull] VBAParser.AnnotationArgContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterUnloadStmt([NotNull] VBAParser.UnloadStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitUnloadStmt([NotNull] VBAParser.UnloadStmtContext context); - /// /// Enter a parse tree produced by the vsAssign /// labeled alternative in . @@ -1394,15 +1266,15 @@ public interface IVBAParserListener : IParseTreeListener { void ExitVisibility([NotNull] VBAParser.VisibilityContext context); /// - /// Enter a parse tree produced by . + /// Enter a parse tree produced by . /// /// The parse tree. - void EnterBeepStmt([NotNull] VBAParser.BeepStmtContext context); + void EnterAttributeValue([NotNull] VBAParser.AttributeValueContext context); /// - /// Exit a parse tree produced by . + /// Exit a parse tree produced by . /// /// The parse tree. - void ExitBeepStmt([NotNull] VBAParser.BeepStmtContext context); + void ExitAttributeValue([NotNull] VBAParser.AttributeValueContext context); /// /// Enter a parse tree produced by the vsTypeOf @@ -1498,17 +1370,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitVsMod([NotNull] VBAParser.VsModContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterKillStmt([NotNull] VBAParser.KillStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitKillStmt([NotNull] VBAParser.KillStmtContext context); - /// /// Enter a parse tree produced by the vsOr /// labeled alternative in . @@ -1522,17 +1383,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitVsOr([NotNull] VBAParser.VsOrContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterRmdirStmt([NotNull] VBAParser.RmdirStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitRmdirStmt([NotNull] VBAParser.RmdirStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -1557,17 +1407,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitCaseCondElse([NotNull] VBAParser.CaseCondElseContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterAppactivateStmt([NotNull] VBAParser.AppactivateStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitAppactivateStmt([NotNull] VBAParser.AppactivateStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -1669,17 +1508,6 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitPropertyGetStmt([NotNull] VBAParser.PropertyGetStmtContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterLoadStmt([NotNull] VBAParser.LoadStmtContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitLoadStmt([NotNull] VBAParser.LoadStmtContext context); - /// /// Enter a parse tree produced by . /// @@ -1713,6 +1541,28 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitOpenStmt([NotNull] VBAParser.OpenStmtContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterMarkerKeyword([NotNull] VBAParser.MarkerKeywordContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitMarkerKeyword([NotNull] VBAParser.MarkerKeywordContext context); + + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterAttributeName([NotNull] VBAParser.AttributeNameContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitAttributeName([NotNull] VBAParser.AttributeNameContext context); + /// /// Enter a parse tree produced by . /// @@ -1790,6 +1640,17 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitSC_Case([NotNull] VBAParser.SC_CaseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterFunctionName([NotNull] VBAParser.FunctionNameContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitFunctionName([NotNull] VBAParser.FunctionNameContext context); + /// /// Enter a parse tree produced by . /// @@ -1801,6 +1662,17 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitVariableListStmt([NotNull] VBAParser.VariableListStmtContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterICS_S_VariableOrProcedureCallUnrestricted([NotNull] VBAParser.ICS_S_VariableOrProcedureCallUnrestrictedContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitICS_S_VariableOrProcedureCallUnrestricted([NotNull] VBAParser.ICS_S_VariableOrProcedureCallUnrestrictedContext context); + /// /// Enter a parse tree produced by . /// @@ -1836,6 +1708,17 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitVsXor([NotNull] VBAParser.VsXorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterCommentOrAnnotation([NotNull] VBAParser.CommentOrAnnotationContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitCommentOrAnnotation([NotNull] VBAParser.CommentOrAnnotationContext context); + /// /// Enter a parse tree produced by . /// @@ -1959,6 +1842,17 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitEraseStmt([NotNull] VBAParser.EraseStmtContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterCommentBody([NotNull] VBAParser.CommentBodyContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitCommentBody([NotNull] VBAParser.CommentBodyContext context); + /// /// Enter a parse tree produced by . /// @@ -2018,6 +1912,17 @@ public interface IVBAParserListener : IParseTreeListener { /// The parse tree. void ExitModuleBodyElement([NotNull] VBAParser.ModuleBodyElementContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterUnrestrictedIdentifier([NotNull] VBAParser.UnrestrictedIdentifierContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitUnrestrictedIdentifier([NotNull] VBAParser.UnrestrictedIdentifierContext context); + /// /// Enter a parse tree produced by the vsMid /// labeled alternative in . diff --git a/Rubberduck.Parsing/Grammar/VBAParserVisitor.cs b/Rubberduck.Parsing/Grammar/VBAParserVisitor.cs index 05c14b907f..66c4faf33a 100644 --- a/Rubberduck.Parsing/Grammar/VBAParserVisitor.cs +++ b/Rubberduck.Parsing/Grammar/VBAParserVisitor.cs @@ -37,13 +37,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitSeekStmt([NotNull] VBAParser.SeekStmtContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitDeleteSettingStmt([NotNull] VBAParser.DeleteSettingStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -58,20 +51,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitConstStmt([NotNull] VBAParser.ConstStmtContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitECS_MemberProcedureCall([NotNull] VBAParser.ECS_MemberProcedureCallContext context); - - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSetattrStmt([NotNull] VBAParser.SetattrStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -100,6 +79,14 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementContext context); + /// + /// Visit a parse tree produced by the ECS_ProcedureCall + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context); + /// /// Visit a parse tree produced by . /// @@ -172,13 +159,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitRemComment([NotNull] VBAParser.RemCommentContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitTimeStmt([NotNull] VBAParser.TimeStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -216,11 +196,12 @@ public interface IVBAParserVisitor : IParseTreeVisitor { Result VisitFieldLength([NotNull] VBAParser.FieldLengthContext context); /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by the ECS_MemberCall + /// labeled alternative in . /// /// The parse tree. /// The visitor result. - Result VisitECS_ProcedureCall([NotNull] VBAParser.ECS_ProcedureCallContext context); + Result VisitECS_MemberCall([NotNull] VBAParser.ECS_MemberCallContext context); /// /// Visit a parse tree produced by . @@ -335,13 +316,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitICS_B_MemberProcedureCall([NotNull] VBAParser.ICS_B_MemberProcedureCallContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitFilecopyStmt([NotNull] VBAParser.FilecopyStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -400,13 +374,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitArgCall([NotNull] VBAParser.ArgCallContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitNameStmt([NotNull] VBAParser.NameStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -428,13 +395,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitConstSubStmt([NotNull] VBAParser.ConstSubStmtContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitDateStmt([NotNull] VBAParser.DateStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -458,18 +418,18 @@ public interface IVBAParserVisitor : IParseTreeVisitor { Result VisitRedimStmt([NotNull] VBAParser.RedimStmtContext context); /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The parse tree. /// The visitor result. - Result VisitSaveSettingStmt([NotNull] VBAParser.SaveSettingStmtContext context); + Result VisitLiteral([NotNull] VBAParser.LiteralContext context); /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The parse tree. /// The visitor result. - Result VisitLiteral([NotNull] VBAParser.LiteralContext context); + Result VisitICS_S_ProcedureOrArrayCallUnrestricted([NotNull] VBAParser.ICS_S_ProcedureOrArrayCallUnrestrictedContext context); /// /// Visit a parse tree produced by . @@ -522,13 +482,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitEventStmt([NotNull] VBAParser.EventStmtContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitMkdirStmt([NotNull] VBAParser.MkdirStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -543,13 +496,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitResumeStmt([NotNull] VBAParser.ResumeStmtContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSendkeysStmt([NotNull] VBAParser.SendkeysStmtContext context); - /// /// Visit a parse tree produced by the optionExplicitStmt /// labeled alternative in . @@ -573,13 +519,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitVsNot([NotNull] VBAParser.VsNotContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitChdriveStmt([NotNull] VBAParser.ChdriveStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -594,13 +533,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitEndOfLine([NotNull] VBAParser.EndOfLineContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitRandomizeStmt([NotNull] VBAParser.RandomizeStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -623,13 +555,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitVsAnd([NotNull] VBAParser.VsAndContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitEndStmt([NotNull] VBAParser.EndStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -646,19 +571,19 @@ public interface IVBAParserVisitor : IParseTreeVisitor { Result VisitBlockIfThenElse([NotNull] VBAParser.BlockIfThenElseContext context); /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by the vsAmp + /// labeled alternative in . /// /// The parse tree. /// The visitor result. - Result VisitSavepictureStmt([NotNull] VBAParser.SavepictureStmtContext context); + Result VisitVsAmp([NotNull] VBAParser.VsAmpContext context); /// - /// Visit a parse tree produced by the vsAmp - /// labeled alternative in . + /// Visit a parse tree produced by . /// /// The parse tree. /// The visitor result. - Result VisitVsAmp([NotNull] VBAParser.VsAmpContext context); + Result VisitSubroutineName([NotNull] VBAParser.SubroutineNameContext context); /// /// Visit a parse tree produced by . @@ -777,13 +702,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitVsRelational([NotNull] VBAParser.VsRelationalContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitChdirStmt([NotNull] VBAParser.ChdirStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -806,6 +724,13 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitInlineIfThenElse([NotNull] VBAParser.InlineIfThenElseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitStatementKeyword([NotNull] VBAParser.StatementKeywordContext context); + /// /// Visit a parse tree produced by . /// @@ -856,13 +781,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitAnnotationArg([NotNull] VBAParser.AnnotationArgContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitUnloadStmt([NotNull] VBAParser.UnloadStmtContext context); - /// /// Visit a parse tree produced by the vsAssign /// labeled alternative in . @@ -893,11 +811,11 @@ public interface IVBAParserVisitor : IParseTreeVisitor { Result VisitVisibility([NotNull] VBAParser.VisibilityContext context); /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The parse tree. /// The visitor result. - Result VisitBeepStmt([NotNull] VBAParser.BeepStmtContext context); + Result VisitAttributeValue([NotNull] VBAParser.AttributeValueContext context); /// /// Visit a parse tree produced by the vsTypeOf @@ -958,13 +876,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitVsMod([NotNull] VBAParser.VsModContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitKillStmt([NotNull] VBAParser.KillStmtContext context); - /// /// Visit a parse tree produced by the vsOr /// labeled alternative in . @@ -973,13 +884,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitVsOr([NotNull] VBAParser.VsOrContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitRmdirStmt([NotNull] VBAParser.RmdirStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -995,13 +899,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitCaseCondElse([NotNull] VBAParser.CaseCondElseContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitAppactivateStmt([NotNull] VBAParser.AppactivateStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -1066,13 +963,6 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitPropertyGetStmt([NotNull] VBAParser.PropertyGetStmtContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitLoadStmt([NotNull] VBAParser.LoadStmtContext context); - /// /// Visit a parse tree produced by . /// @@ -1094,6 +984,20 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitOpenStmt([NotNull] VBAParser.OpenStmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMarkerKeyword([NotNull] VBAParser.MarkerKeywordContext context); + + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAttributeName([NotNull] VBAParser.AttributeNameContext context); + /// /// Visit a parse tree produced by . /// @@ -1143,6 +1047,13 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitSC_Case([NotNull] VBAParser.SC_CaseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFunctionName([NotNull] VBAParser.FunctionNameContext context); + /// /// Visit a parse tree produced by . /// @@ -1150,6 +1061,13 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitVariableListStmt([NotNull] VBAParser.VariableListStmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitICS_S_VariableOrProcedureCallUnrestricted([NotNull] VBAParser.ICS_S_VariableOrProcedureCallUnrestrictedContext context); + /// /// Visit a parse tree produced by . /// @@ -1172,6 +1090,13 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitVsXor([NotNull] VBAParser.VsXorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCommentOrAnnotation([NotNull] VBAParser.CommentOrAnnotationContext context); + /// /// Visit a parse tree produced by . /// @@ -1250,6 +1175,13 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitEraseStmt([NotNull] VBAParser.EraseStmtContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCommentBody([NotNull] VBAParser.CommentBodyContext context); + /// /// Visit a parse tree produced by . /// @@ -1287,6 +1219,13 @@ public interface IVBAParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitModuleBodyElement([NotNull] VBAParser.ModuleBodyElementContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitUnrestrictedIdentifier([NotNull] VBAParser.UnrestrictedIdentifierContext context); + /// /// Visit a parse tree produced by the vsMid /// labeled alternative in . diff --git a/Rubberduck.Parsing/ParserRuleContextExtensions.cs b/Rubberduck.Parsing/ParserRuleContextExtensions.cs index 40f3a0d7cd..c7d9706d9a 100644 --- a/Rubberduck.Parsing/ParserRuleContextExtensions.cs +++ b/Rubberduck.Parsing/ParserRuleContextExtensions.cs @@ -43,7 +43,7 @@ public static string Signature(this VBAParser.FunctionStmtContext context) var visibility = context.visibility(); var visibilityText = visibility == null ? string.Empty : visibility.GetText(); - var identifierText = context.identifier().GetText(); + var identifierText = context.functionName().identifier().GetText(); var argsText = context.argList().GetText(); var asType = context.asTypeClause(); @@ -57,7 +57,7 @@ public static string Signature(this VBAParser.SubStmtContext context) var visibility = context.visibility(); var visibilityText = visibility == null ? string.Empty : visibility.GetText(); - var identifierText = context.identifier().GetText(); + var identifierText = context.subroutineName().GetText(); var argsText = context.argList().GetText(); return (visibilityText + ' ' + Tokens.Sub + ' ' + identifierText + argsText).Trim(); @@ -68,7 +68,7 @@ public static string Signature(this VBAParser.PropertyGetStmtContext context) var visibility = context.visibility(); var visibilityText = visibility == null ? string.Empty : visibility.GetText(); - var identifierText = context.identifier().GetText(); + var identifierText = context.functionName().identifier().GetText(); var argsText = context.argList().GetText(); var asType = context.asTypeClause(); @@ -82,7 +82,7 @@ public static string Signature(this VBAParser.PropertyLetStmtContext context) var visibility = context.visibility(); var visibilityText = visibility == null ? string.Empty : visibility.GetText(); - var identifierText = context.identifier().GetText(); + var identifierText = context.subroutineName().GetText(); var argsText = context.argList().GetText(); return (visibilityText + ' ' + Tokens.Property + ' ' + Tokens.Let + ' ' + identifierText + argsText).Trim(); @@ -93,7 +93,7 @@ public static string Signature(this VBAParser.PropertySetStmtContext context) var visibility = context.visibility(); var visibilityText = visibility == null ? string.Empty : visibility.GetText(); - var identifierText = context.identifier().GetText(); + var identifierText = context.subroutineName().GetText(); var argsText = context.argList().GetText(); return (visibilityText + ' ' + Tokens.Property + ' ' + Tokens.Set + ' ' + identifierText + argsText).Trim(); diff --git a/Rubberduck.Parsing/Preprocessing/HexNumberLiteralExpression.cs b/Rubberduck.Parsing/Preprocessing/HexNumberLiteralExpression.cs index bc0334e1fb..8d7e6e56ca 100644 --- a/Rubberduck.Parsing/Preprocessing/HexNumberLiteralExpression.cs +++ b/Rubberduck.Parsing/Preprocessing/HexNumberLiteralExpression.cs @@ -14,7 +14,10 @@ public HexNumberLiteralExpression(IExpression tokenText) public override IValue Evaluate() { string literal = _tokenText.Evaluate().AsString; - literal = literal.Replace("&H", "").Replace("&", ""); + literal = literal.Replace("&H", "") + .Replace("&", "") + .Replace("%", "") + .Replace("^", ""); var number = (decimal)int.Parse(literal, NumberStyles.HexNumber); return new DecimalValue(number); } diff --git a/Rubberduck.Parsing/Preprocessing/NumberLiteralExpression.cs b/Rubberduck.Parsing/Preprocessing/NumberLiteralExpression.cs index b235ecf7a6..86a4c0ac4a 100644 --- a/Rubberduck.Parsing/Preprocessing/NumberLiteralExpression.cs +++ b/Rubberduck.Parsing/Preprocessing/NumberLiteralExpression.cs @@ -14,7 +14,14 @@ public NumberLiteralExpression(IExpression tokenText) public override IValue Evaluate() { string literal = _tokenText.Evaluate().AsString; - var number = decimal.Parse(literal.Replace("#", "").Replace("&", "").Replace("@", ""), NumberStyles.Float, CultureInfo.InvariantCulture); + var number = decimal.Parse(literal + .Replace("%", "") + .Replace("&", "") + .Replace("^", "") + .Replace("!", "") + .Replace("#", "") + .Replace("@", "") + , NumberStyles.Float, CultureInfo.InvariantCulture); return new DecimalValue(number); } } diff --git a/Rubberduck.Parsing/Preprocessing/OctNumberLiteralExpression.cs b/Rubberduck.Parsing/Preprocessing/OctNumberLiteralExpression.cs index 8d574482b6..df2a47f065 100644 --- a/Rubberduck.Parsing/Preprocessing/OctNumberLiteralExpression.cs +++ b/Rubberduck.Parsing/Preprocessing/OctNumberLiteralExpression.cs @@ -14,7 +14,10 @@ public OctNumberLiteralExpression(IExpression tokenText) public override IValue Evaluate() { string literal = _tokenText.Evaluate().AsString; - literal = literal.Replace("&O", "").Replace("&", ""); + literal = literal.Replace("&O", "") + .Replace("&", "") + .Replace("%", "") + .Replace("^", ""); var number = (decimal)Convert.ToInt32(literal, 8); return new DecimalValue(number); } diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs index cb8ff776f1..3498d54e6b 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs @@ -29,46 +29,43 @@ namespace Rubberduck.Parsing.Preprocessing { [System.CLSCompliant(false)] public partial class VBAConditionalCompilationParser : Parser { public const int - PRINT=166, ELSEIF=93, CBYTE=5, CLOSE=69, STATIC=196, MINUS=230, OPTION_EXPLICIT=159, - L_SQUARE_BRACKET=241, SETATTR=192, DOEVENTS=21, HASHENDIF=240, DATELITERAL=248, - ERROR=107, NOTHING=151, EACH=91, SUB=200, FILECOPY=115, STOP=198, LPAREN=228, - MID=144, CVERR=19, BEEP=58, AS=56, END_PROPERTY=98, AT=45, DATABASE=71, - GOSUB=121, CSNG=15, HASHCONST=236, CHDIR=66, POW=234, DOLLAR=47, PROPERTY_LET=169, - THEN=203, XOR=220, EXIT_FOR=110, DEFINT=79, HASHIF=237, UNLOCK=210, CALL=64, - LOCK_READ=139, SET=191, LOCK_READ_WRITE=141, ABS=1, LSET=142, RAISEEVENT=176, - MIDBTYPESUFFIX=32, SEEK=188, LONG=133, CBOOL=4, LIB=136, DIM=88, APPEND=55, - MKDIR=145, OPEN=156, DIV=222, PROPERTY_SET=170, CDBL=8, PERCENT=46, SENDKEYS=190, - END_SELECT=99, STRING=199, HASHELSEIF=238, SGN=37, REM=180, TO=205, DEFDBL=77, - BYVAL=61, FRIEND=116, LOOP=134, DELETESETTING=87, CLASS=68, DO=89, VARIANT=212, - END_WITH=102, DEFBOOL=74, OPTIONAL=157, ADDRESSOF=50, CONST=70, RSET=185, - INTEGER=129, CDEC=9, REMCOMMENT=250, ATTRIBUTE=53, OUTPUT=163, FOR=117, - PTRSAFE=171, EQ=224, BOOLEAN=60, CIRCLE=11, NAME=147, END_FUNCTION=96, - DEFSNG=84, DEFBYTE=75, NOT=150, CINT=10, SAVESETTING=187, END=103, PRESERVE=165, - ON_LOCAL_ERROR=155, FLOATLITERAL=246, HASHELSE=239, LOAD=131, BINARY=59, - LENB=28, RETURN=183, EXCLAMATIONPOINT=42, NEXT=148, GLOBAL=120, INPUTB=24, - IDENTIFIER=255, WS=254, EMPTY=94, CURRENCY=17, CCUR=6, MOD=146, WITHEVENTS=218, - COLON=40, DEFLNGLNG=81, STEP=197, TIME=204, OPTION_BASE=158, GT=226, PUT=173, - WITH=217, CSTR=16, LOCK_WRITE=140, LINE_CONTINUATION=256, TYPEOF=208, - DEFVAR=86, RMDIR=184, DEFLNG=80, UBOUND=38, FALSE=114, ERRORCHAR=258, - UNDERSCORE=253, INTEGERLITERAL=247, END_IF=97, LOCK=132, TEXT=202, SINGLEQUOTE=252, - SAVEPICTURE=186, MULT=231, SEMICOLON=41, BYTE=63, HEXLITERAL=245, ELSE=92, - IF=123, TYPE=207, AMPERSAND=48, DEFLNGPTR=82, ENUM=104, DEFOBJ=83, IN=126, - CHDRIVE=67, OPTION=34, DOT=43, EXIT_DO=109, GUIDLITERAL=257, IS=128, EQV=105, - WEND=214, FUNCTION=118, HASH=44, CASE=65, GEQ=225, GET=119, PUBLIC=172, - ON_ERROR=154, EXIT=22, MIDB=31, END_ENUM=95, GOTO=122, INTDIV=223, LONGPTR=30, - WIDTH=216, BEGIN=57, EXIT_SUB=113, ASSIGN=221, COMMENT=251, WRITE=219, - RANDOMIZE=175, DOUBLE=90, EXIT_PROPERTY=112, COMMA=39, RANDOM=174, PROPERTY_GET=168, - SELECT=189, PRIVATE=167, ERASE=106, TAB=201, BYREF=62, VERSION=213, NEQ=232, - END_TYPE=101, KILL=130, NEW=149, ARRAY=3, INPUT=127, SINGLE=194, UNLOAD=209, - ALIAS=51, SPC=195, LT=229, RESET=181, END_SUB=100, EVENT=108, READ_WRITE=178, - OPTION_COMPARE=160, ME=143, SCALE=36, CDATE=7, MIDTYPESUFFIX=33, NULL=152, - NEWLINE=249, TRUE=206, RPAREN=235, APPACTIVATE=54, IMP=124, STRINGLITERAL=243, - OCTLITERAL=244, READ=177, DATE=72, LIKE=137, AND=52, OPTION_PRIVATE_MODULE=161, - CLNGLNG=13, PLUS=233, ANY=2, RESUME=182, INT=25, SHARED=193, EXIT_FUNCTION=111, - PSET=35, ACCESS=49, LINE_INPUT=138, ON=153, OR=162, PARAMARRAY=164, LBOUND=26, - R_SQUARE_BRACKET=242, IMPLEMENTS=125, UNTIL=211, DEBUG=20, DEFCUR=78, - CLNGPTR=14, LONGLONG=29, DECLARE=73, DEFDATE=76, FIX=23, LEN=27, REDIM=179, - LEQ=227, DEFSTR=85, LET=135, WHILE=215, CVAR=18, CLNG=12; + PRINT=156, ELSEIF=88, CBYTE=5, CLOSE=65, STATIC=180, MINUS=212, OPTION_EXPLICIT=149, + L_SQUARE_BRACKET=223, DOEVENTS=21, HASHENDIF=222, DATELITERAL=230, ERROR=102, + NOTHING=141, EACH=86, SUB=184, STOP=182, LPAREN=210, MID=136, CVERR=19, + AS=55, END_PROPERTY=93, AT=45, DATABASE=67, GOSUB=115, CSNG=15, HASHCONST=218, + POW=216, DOLLAR=47, PROPERTY_LET=159, THEN=187, XOR=202, EXIT_FOR=105, + DEFINT=75, HASHIF=219, UNLOCK=192, CALL=62, LOCK_READ=131, SET=176, LOCK_READ_WRITE=133, + ABS=1, LSET=134, RAISEEVENT=165, MIDBTYPESUFFIX=32, SEEK=174, LONG=125, + CBOOL=4, LIB=128, DIM=83, APPEND=54, OPEN=146, DIV=204, PROPERTY_SET=160, + CDBL=8, PERCENT=46, END_SELECT=94, STRING=183, HASHELSEIF=220, SGN=37, + REM=169, TO=188, DEFDBL=73, BYVAL=59, FRIEND=110, LOOP=126, CLASS=64, + DO=84, VARIANT=194, END_WITH=97, DEFBOOL=70, OPTIONAL=147, ADDRESSOF=50, + CONST=66, RSET=173, INTEGER=123, CDEC=9, ATTRIBUTE=53, OUTPUT=153, FOR=111, + PTRSAFE=161, EQ=206, BOOLEAN=58, CIRCLE=11, END_FUNCTION=91, DEFSNG=80, + DEFBYTE=71, NOT=140, CINT=10, END=98, PRESERVE=155, ON_LOCAL_ERROR=145, + FLOATLITERAL=228, HASHELSE=221, BINARY=57, LENB=28, RETURN=172, EXCLAMATIONPOINT=42, + NEXT=138, GLOBAL=114, INPUTB=24, IDENTIFIER=236, WS=234, EMPTY=89, CURRENCY=17, + CCUR=6, MOD=137, WITHEVENTS=200, COLON=40, DEFLNGLNG=77, STEP=181, OPTION_BASE=148, + GT=208, PUT=163, WITH=199, CSTR=16, LOCK_WRITE=132, LINE_CONTINUATION=237, + TYPEOF=191, DEFVAR=82, DEFLNG=76, UBOUND=38, FALSE=109, ERRORCHAR=238, + UNDERSCORE=233, INTEGERLITERAL=229, END_IF=92, LOCK=124, TEXT=186, SINGLEQUOTE=232, + MULT=213, SEMICOLON=41, BYTE=61, HEXLITERAL=227, ELSE=87, IF=117, TYPE=190, + AMPERSAND=48, DEFLNGPTR=78, ENUM=99, DEFOBJ=79, IN=120, OPTION=34, DOT=43, + EXIT_DO=104, GUIDLITERAL=235, IS=122, EQV=100, WEND=196, FUNCTION=112, + HASH=44, CASE=63, GEQ=207, GET=113, PUBLIC=162, ON_ERROR=144, EXIT=22, + MIDB=31, END_ENUM=90, GOTO=116, INTDIV=205, LONGPTR=30, WIDTH=198, BEGIN=56, + EXIT_SUB=108, ASSIGN=203, WRITE=201, DOUBLE=85, EXIT_PROPERTY=107, COMMA=39, + RANDOM=164, PROPERTY_GET=158, SELECT=175, PRIVATE=157, ERASE=101, TAB=185, + BYREF=60, VERSION=195, NEQ=214, END_TYPE=96, NEW=139, ARRAY=3, INPUT=121, + SINGLE=178, ALIAS=51, SPC=179, LT=211, RESET=170, END_SUB=95, EVENT=103, + READ_WRITE=167, OPTION_COMPARE=150, ME=135, SCALE=36, CDATE=7, MIDTYPESUFFIX=33, + NULL=142, NEWLINE=231, TRUE=189, RPAREN=217, IMP=118, STRINGLITERAL=225, + OCTLITERAL=226, READ=166, DATE=68, LIKE=129, AND=52, OPTION_PRIVATE_MODULE=151, + CLNGLNG=13, PLUS=215, ANY=2, RESUME=171, INT=25, SHARED=177, EXIT_FUNCTION=106, + PSET=35, ACCESS=49, LINE_INPUT=130, ON=143, OR=152, PARAMARRAY=154, LBOUND=26, + R_SQUARE_BRACKET=224, IMPLEMENTS=119, UNTIL=193, DEBUG=20, DEFCUR=74, + CLNGPTR=14, LONGLONG=29, DECLARE=69, DEFDATE=72, FIX=23, LEN=27, REDIM=168, + LEQ=209, DEFSTR=81, LET=127, WHILE=197, CVAR=18, CLNG=12; public static readonly string[] tokenNames = { "", "ABS", "ANY", "ARRAY", "CBOOL", "CBYTE", "CCUR", "CDATE", "CDBL", "CDEC", "CINT", "CIRCLE", "CLNG", "CLNGLNG", "CLNGPTR", "CSNG", @@ -76,47 +73,44 @@ public const int "INPUTB", "INT", "LBOUND", "LEN", "LENB", "LONGLONG", "LONGPTR", "MIDB", "MIDBTYPESUFFIX", "MIDTYPESUFFIX", "OPTION", "PSET", "SCALE", "SGN", "UBOUND", "','", "':'", "';'", "'!'", "'.'", "'#'", "'@'", "'%'", "'$'", "'&'", - "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPACTIVATE", "APPEND", - "AS", "BEGIN", "BEEP", "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", - "CALL", "CASE", "CHDIR", "CHDRIVE", "CLASS", "CLOSE", "CONST", "DATABASE", - "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", - "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", - "DEFVAR", "DELETESETTING", "DIM", "DO", "DOUBLE", "EACH", "ELSE", "ELSEIF", - "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", "END_SELECT", - "END_SUB", "END_TYPE", "END_WITH", "END", "ENUM", "EQV", "ERASE", "ERROR", - "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", - "FALSE", "FILECOPY", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", - "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "KILL", - "LOAD", "LOCK", "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", - "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", "ME", "MID", "MKDIR", "MOD", - "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "ON", "ON_ERROR", "ON_LOCAL_ERROR", - "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", "OPTION_COMPARE", - "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", "PRESERVE", "PRINT", - "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", "PTRSAFE", - "PUBLIC", "PUT", "RANDOM", "RANDOMIZE", "RAISEEVENT", "READ", "READ_WRITE", - "REDIM", "REM", "RESET", "RESUME", "RETURN", "RMDIR", "RSET", "SAVEPICTURE", - "SAVESETTING", "SEEK", "SELECT", "SENDKEYS", "SET", "SETATTR", "SHARED", - "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", "SUB", "TAB", "TEXT", - "THEN", "TIME", "TO", "TRUE", "TYPE", "TYPEOF", "UNLOAD", "UNLOCK", "UNTIL", - "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", - "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", "LEQ", "'('", - "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "HASHCONST", "HASHIF", - "HASHELSEIF", "HASHELSE", "HASHENDIF", "'['", "']'", "STRINGLITERAL", + "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPEND", "AS", "BEGIN", + "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CLASS", + "CLOSE", "CONST", "DATABASE", "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", + "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", + "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", "DIM", "DO", "DOUBLE", "EACH", + "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", + "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", "ENUM", "EQV", + "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", + "EXIT_SUB", "FALSE", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", + "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "LOCK", + "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", + "LOCK_READ_WRITE", "LSET", "ME", "MID", "MOD", "NEXT", "NEW", "NOT", "NOTHING", + "NULL", "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", + "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", + "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", + "PROPERTY_SET", "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", + "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", + "SELECT", "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", + "STRING", "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", + "UNLOCK", "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", + "WITHEVENTS", "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", + "LEQ", "'('", "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "HASHCONST", + "HASHIF", "HASHELSEIF", "HASHELSE", "HASHENDIF", "'['", "']'", "STRINGLITERAL", "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "INTEGERLITERAL", "DATELITERAL", - "NEWLINE", "REMCOMMENT", "COMMENT", "'''", "'_'", "WS", "IDENTIFIER", - "LINE_CONTINUATION", "GUIDLITERAL", "ERRORCHAR" + "NEWLINE", "'''", "'_'", "WS", "GUIDLITERAL", "IDENTIFIER", "LINE_CONTINUATION", + "ERRORCHAR" }; public const int RULE_compilationUnit = 0, RULE_ccBlock = 1, RULE_ccConst = 2, RULE_logicalLine = 3, - RULE_extendedLine = 4, RULE_ccVarLhs = 5, RULE_ccExpression = 6, RULE_ccIfBlock = 7, - RULE_ccIf = 8, RULE_ccElseIfBlock = 9, RULE_ccElseIf = 10, RULE_ccElseBlock = 11, - RULE_ccElse = 12, RULE_ccEndIf = 13, RULE_ccEol = 14, RULE_intrinsicFunction = 15, - RULE_intrinsicFunctionName = 16, RULE_name = 17, RULE_typeHint = 18, RULE_literal = 19; + RULE_ccVarLhs = 4, RULE_ccExpression = 5, RULE_ccIfBlock = 6, RULE_ccIf = 7, + RULE_ccElseIfBlock = 8, RULE_ccElseIf = 9, RULE_ccElseBlock = 10, RULE_ccElse = 11, + RULE_ccEndIf = 12, RULE_ccEol = 13, RULE_intrinsicFunction = 14, RULE_intrinsicFunctionName = 15, + RULE_name = 16, RULE_typeHint = 17, RULE_literal = 18, RULE_comment = 19; public static readonly string[] ruleNames = { - "compilationUnit", "ccBlock", "ccConst", "logicalLine", "extendedLine", - "ccVarLhs", "ccExpression", "ccIfBlock", "ccIf", "ccElseIfBlock", "ccElseIf", - "ccElseBlock", "ccElse", "ccEndIf", "ccEol", "intrinsicFunction", "intrinsicFunctionName", - "name", "typeHint", "literal" + "compilationUnit", "ccBlock", "ccConst", "logicalLine", "ccVarLhs", "ccExpression", + "ccIfBlock", "ccIf", "ccElseIfBlock", "ccElseIf", "ccElseBlock", "ccElse", + "ccEndIf", "ccEol", "intrinsicFunction", "intrinsicFunctionName", "name", + "typeHint", "literal", "comment" }; public override string GrammarFileName { get { return "VBAConditionalCompilationParser.g4"; } } @@ -229,27 +223,259 @@ public CcBlockContext ccBlock() { State = 48; _errHandler.Sync(this); _la = _input.La(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPACTIVATE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BEEP) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CHDIR - 64)) | (1L << (CHDRIVE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DELETESETTING - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FILECOPY - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (IS - 128)) | (1L << (INTEGER - 128)) | (1L << (KILL - 128)) | (1L << (LOAD - 128)) | (1L << (LOCK - 128)) | (1L << (LONG - 128)) | (1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MKDIR - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RANDOMIZE - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RMDIR - 128)) | (1L << (RSET - 128)) | (1L << (SAVEPICTURE - 128)) | (1L << (SAVESETTING - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SENDKEYS - 128)) | (1L << (SET - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (SETATTR - 192)) | (1L << (SHARED - 192)) | (1L << (SINGLE - 192)) | (1L << (SPC - 192)) | (1L << (STATIC - 192)) | (1L << (STEP - 192)) | (1L << (STOP - 192)) | (1L << (STRING - 192)) | (1L << (SUB - 192)) | (1L << (TAB - 192)) | (1L << (TEXT - 192)) | (1L << (THEN - 192)) | (1L << (TIME - 192)) | (1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOAD - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (HASHCONST - 192)) | (1L << (HASHIF - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (NEWLINE - 192)) | (1L << (REMCOMMENT - 192)) | (1L << (COMMENT - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (IDENTIFIER - 192)))) != 0) || ((((_la - 256)) & ~0x3f) == 0 && ((1L << (_la - 256)) & ((1L << (LINE_CONTINUATION - 256)) | (1L << (GUIDLITERAL - 256)) | (1L << (ERRORCHAR - 256)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (HASHCONST - 192)) | (1L << (HASHIF - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (NEWLINE - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)))) != 0)) { { State = 46; - switch ( Interpreter.AdaptivePredict(_input,0,_ctx) ) { - case 1: + switch (_input.La(1)) { + case HASHCONST: { State = 43; ccConst(); } break; - - case 2: + case HASHIF: { State = 44; ccIfBlock(); } break; - - case 3: + case ABS: + case ANY: + case ARRAY: + case CBOOL: + case CBYTE: + case CCUR: + case CDATE: + case CDBL: + case CDEC: + case CINT: + case CIRCLE: + case CLNG: + case CLNGLNG: + case CLNGPTR: + case CSNG: + case CSTR: + case CURRENCY: + case CVAR: + case CVERR: + case DEBUG: + case DOEVENTS: + case EXIT: + case FIX: + case INPUTB: + case INT: + case LBOUND: + case LEN: + case LENB: + case LONGLONG: + case LONGPTR: + case MIDB: + case MIDBTYPESUFFIX: + case MIDTYPESUFFIX: + case OPTION: + case PSET: + case SCALE: + case SGN: + case UBOUND: + case COMMA: + case COLON: + case SEMICOLON: + case EXCLAMATIONPOINT: + case DOT: + case HASH: + case AT: + case PERCENT: + case DOLLAR: + case AMPERSAND: + case ACCESS: + case ADDRESSOF: + case ALIAS: + case AND: + case ATTRIBUTE: + case APPEND: + case AS: + case BEGIN: + case BINARY: + case BOOLEAN: + case BYVAL: + case BYREF: + case BYTE: + case CALL: + case CASE: + case CLASS: + case CLOSE: + case CONST: + case DATABASE: + case DATE: + case DECLARE: + case DEFBOOL: + case DEFBYTE: + case DEFDATE: + case DEFDBL: + case DEFCUR: + case DEFINT: + case DEFLNG: + case DEFLNGLNG: + case DEFLNGPTR: + case DEFOBJ: + case DEFSNG: + case DEFSTR: + case DEFVAR: + case DIM: + case DO: + case DOUBLE: + case EACH: + case ELSE: + case ELSEIF: + case EMPTY: + case END_ENUM: + case END_FUNCTION: + case END_IF: + case END_PROPERTY: + case END_SELECT: + case END_SUB: + case END_TYPE: + case END_WITH: + case END: + case ENUM: + case EQV: + case ERASE: + case ERROR: + case EVENT: + case EXIT_DO: + case EXIT_FOR: + case EXIT_FUNCTION: + case EXIT_PROPERTY: + case EXIT_SUB: + case FALSE: + case FRIEND: + case FOR: + case FUNCTION: + case GET: + case GLOBAL: + case GOSUB: + case GOTO: + case IF: + case IMP: + case IMPLEMENTS: + case IN: + case INPUT: + case IS: + case INTEGER: + case LOCK: + case LONG: + case LOOP: + case LET: + case LIB: + case LIKE: + case LINE_INPUT: + case LOCK_READ: + case LOCK_WRITE: + case LOCK_READ_WRITE: + case LSET: + case ME: + case MID: + case MOD: + case NEXT: + case NEW: + case NOT: + case NOTHING: + case NULL: + case ON: + case ON_ERROR: + case ON_LOCAL_ERROR: + case OPEN: + case OPTIONAL: + case OPTION_BASE: + case OPTION_EXPLICIT: + case OPTION_COMPARE: + case OPTION_PRIVATE_MODULE: + case OR: + case OUTPUT: + case PARAMARRAY: + case PRESERVE: + case PRINT: + case PRIVATE: + case PROPERTY_GET: + case PROPERTY_LET: + case PROPERTY_SET: + case PTRSAFE: + case PUBLIC: + case PUT: + case RANDOM: + case RAISEEVENT: + case READ: + case READ_WRITE: + case REDIM: + case REM: + case RESET: + case RESUME: + case RETURN: + case RSET: + case SEEK: + case SELECT: + case SET: + case SHARED: + case SINGLE: + case SPC: + case STATIC: + case STEP: + case STOP: + case STRING: + case SUB: + case TAB: + case TEXT: + case THEN: + case TO: + case TRUE: + case TYPE: + case TYPEOF: + case UNLOCK: + case UNTIL: + case VARIANT: + case VERSION: + case WEND: + case WHILE: + case WIDTH: + case WITH: + case WITHEVENTS: + case WRITE: + case XOR: + case ASSIGN: + case DIV: + case INTDIV: + case EQ: + case GEQ: + case GT: + case LEQ: + case LPAREN: + case LT: + case MINUS: + case MULT: + case NEQ: + case PLUS: + case POW: + case RPAREN: + case L_SQUARE_BRACKET: + case R_SQUARE_BRACKET: + case STRINGLITERAL: + case OCTLITERAL: + case HEXLITERAL: + case FLOATLITERAL: + case INTEGERLITERAL: + case DATELITERAL: + case NEWLINE: + case SINGLEQUOTE: + case UNDERSCORE: + case WS: + case GUIDLITERAL: + case IDENTIFIER: + case LINE_CONTINUATION: + case ERRORCHAR: { State = 45; logicalLine(); } break; + default: + throw new NoViableAltException(this); } } State = 50; @@ -313,63 +539,37 @@ public CcConstContext ccConst() { try { EnterOuterAlt(_localctx, 1); { + State = 51; Match(HASHCONST); + State = 52; ccVarLhs(); State = 54; _errHandler.Sync(this); _la = _input.La(1); - while (_la==WS) { - { - { - State = 51; Match(WS); - } - } - State = 56; - _errHandler.Sync(this); - _la = _input.La(1); - } - State = 57; Match(HASHCONST); - State = 59; - _errHandler.Sync(this); - _la = _input.La(1); do { { { - State = 58; Match(WS); + State = 53; Match(WS); } } - State = 61; - _errHandler.Sync(this); - _la = _input.La(1); - } while ( _la==WS ); - State = 63; ccVarLhs(); - State = 65; - _errHandler.Sync(this); - _la = _input.La(1); - do { - { - { - State = 64; Match(WS); - } - } - State = 67; + State = 56; _errHandler.Sync(this); _la = _input.La(1); } while ( _la==WS ); - State = 69; Match(EQ); - State = 71; + State = 58; Match(EQ); + State = 60; _errHandler.Sync(this); _la = _input.La(1); do { { { - State = 70; Match(WS); + State = 59; Match(WS); } } - State = 73; + State = 62; _errHandler.Sync(this); _la = _input.La(1); } while ( _la==WS ); - State = 75; ccExpression(0); - State = 76; ccEol(); + State = 64; ccExpression(0); + State = 65; ccEol(); } } catch (RecognitionException re) { @@ -384,171 +584,93 @@ public CcConstContext ccConst() { } public partial class LogicalLineContext : ParserRuleContext { - public IReadOnlyList extendedLine() { - return GetRuleContexts(); - } - public ExtendedLineContext extendedLine(int i) { - return GetRuleContext(i); - } - public LogicalLineContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_logicalLine; } } - public override void EnterRule(IParseTreeListener listener) { - IVBAConditionalCompilationParserListener typedListener = listener as IVBAConditionalCompilationParserListener; - if (typedListener != null) typedListener.EnterLogicalLine(this); - } - public override void ExitRule(IParseTreeListener listener) { - IVBAConditionalCompilationParserListener typedListener = listener as IVBAConditionalCompilationParserListener; - if (typedListener != null) typedListener.ExitLogicalLine(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IVBAConditionalCompilationParserVisitor typedVisitor = visitor as IVBAConditionalCompilationParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitLogicalLine(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public LogicalLineContext logicalLine() { - LogicalLineContext _localctx = new LogicalLineContext(_ctx, State); - EnterRule(_localctx, 6, RULE_logicalLine); - try { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 79; - _errHandler.Sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - State = 78; extendedLine(); - } - } - break; - default: - throw new NoViableAltException(this); - } - State = 81; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,6,_ctx); - } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.ReportError(this, re); - _errHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class ExtendedLineContext : ParserRuleContext { public IReadOnlyList HASHIF() { return GetTokens(VBAConditionalCompilationParser.HASHIF); } public IReadOnlyList HASHENDIF() { return GetTokens(VBAConditionalCompilationParser.HASHENDIF); } - public ITerminalNode HASHENDIF(int i) { - return GetToken(VBAConditionalCompilationParser.HASHENDIF, i); - } - public ITerminalNode NEWLINE() { return GetToken(VBAConditionalCompilationParser.NEWLINE, 0); } - public IReadOnlyList HASHELSE() { return GetTokens(VBAConditionalCompilationParser.HASHELSE); } - public IReadOnlyList HASHELSEIF() { return GetTokens(VBAConditionalCompilationParser.HASHELSEIF); } public ITerminalNode HASHCONST(int i) { return GetToken(VBAConditionalCompilationParser.HASHCONST, i); } public ITerminalNode HASHIF(int i) { return GetToken(VBAConditionalCompilationParser.HASHIF, i); } - public IReadOnlyList LINE_CONTINUATION() { return GetTokens(VBAConditionalCompilationParser.LINE_CONTINUATION); } - public ITerminalNode LINE_CONTINUATION(int i) { - return GetToken(VBAConditionalCompilationParser.LINE_CONTINUATION, i); + public ITerminalNode HASHENDIF(int i) { + return GetToken(VBAConditionalCompilationParser.HASHENDIF, i); } + public IReadOnlyList HASHELSE() { return GetTokens(VBAConditionalCompilationParser.HASHELSE); } + public ITerminalNode NEWLINE() { return GetToken(VBAConditionalCompilationParser.NEWLINE, 0); } public IReadOnlyList HASHCONST() { return GetTokens(VBAConditionalCompilationParser.HASHCONST); } + public IReadOnlyList HASHELSEIF() { return GetTokens(VBAConditionalCompilationParser.HASHELSEIF); } public ITerminalNode HASHELSEIF(int i) { return GetToken(VBAConditionalCompilationParser.HASHELSEIF, i); } public ITerminalNode HASHELSE(int i) { return GetToken(VBAConditionalCompilationParser.HASHELSE, i); } - public ExtendedLineContext(ParserRuleContext parent, int invokingState) + public LogicalLineContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_extendedLine; } } + public override int RuleIndex { get { return RULE_logicalLine; } } public override void EnterRule(IParseTreeListener listener) { IVBAConditionalCompilationParserListener typedListener = listener as IVBAConditionalCompilationParserListener; - if (typedListener != null) typedListener.EnterExtendedLine(this); + if (typedListener != null) typedListener.EnterLogicalLine(this); } public override void ExitRule(IParseTreeListener listener) { IVBAConditionalCompilationParserListener typedListener = listener as IVBAConditionalCompilationParserListener; - if (typedListener != null) typedListener.ExitExtendedLine(this); + if (typedListener != null) typedListener.ExitLogicalLine(this); } public override TResult Accept(IParseTreeVisitor visitor) { IVBAConditionalCompilationParserVisitor typedVisitor = visitor as IVBAConditionalCompilationParserVisitor; - if (typedVisitor != null) return typedVisitor.VisitExtendedLine(this); + if (typedVisitor != null) return typedVisitor.VisitLogicalLine(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public ExtendedLineContext extendedLine() { - ExtendedLineContext _localctx = new ExtendedLineContext(_ctx, State); - EnterRule(_localctx, 8, RULE_extendedLine); + public LogicalLineContext logicalLine() { + LogicalLineContext _localctx = new LogicalLineContext(_ctx, State); + EnterRule(_localctx, 6, RULE_logicalLine); int _la; try { int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 85; - _errHandler.Sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - State = 85; - switch ( Interpreter.AdaptivePredict(_input,7,_ctx) ) { + State = 73; + switch ( Interpreter.AdaptivePredict(_input,5,_ctx) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 68; + _errHandler.Sync(this); + _alt = 1; + do { + switch (_alt) { case 1: { - State = 83; Match(LINE_CONTINUATION); - } - break; - - case 2: { - State = 84; + State = 67; _la = _input.La(1); - if ( _la <= 0 || (((((_la - 236)) & ~0x3f) == 0 && ((1L << (_la - 236)) & ((1L << (HASHCONST - 236)) | (1L << (HASHIF - 236)) | (1L << (HASHELSEIF - 236)) | (1L << (HASHELSE - 236)) | (1L << (HASHENDIF - 236)))) != 0)) ) { + if ( _la <= 0 || (((((_la - 218)) & ~0x3f) == 0 && ((1L << (_la - 218)) & ((1L << (HASHCONST - 218)) | (1L << (HASHIF - 218)) | (1L << (HASHELSEIF - 218)) | (1L << (HASHELSE - 218)) | (1L << (HASHENDIF - 218)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); } + } break; + default: + throw new NoViableAltException(this); } - } - break; - default: - throw new NoViableAltException(this); + State = 70; + _errHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(_input,4,_ctx); + } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } - State = 87; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,8,_ctx); - } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - State = 90; - switch ( Interpreter.AdaptivePredict(_input,9,_ctx) ) { - case 1: + break; + + case 2: + EnterOuterAlt(_localctx, 2); { - State = 89; Match(NEWLINE); + State = 72; Match(NEWLINE); } break; } - } } catch (RecognitionException re) { _localctx.exception = re; @@ -588,11 +710,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcVarLhsContext ccVarLhs() { CcVarLhsContext _localctx = new CcVarLhsContext(_ctx, State); - EnterRule(_localctx, 10, RULE_ccVarLhs); + EnterRule(_localctx, 8, RULE_ccVarLhs); try { EnterOuterAlt(_localctx, 1); { - State = 92; name(); + State = 75; name(); } } catch (RecognitionException re) { @@ -680,84 +802,84 @@ private CcExpressionContext ccExpression(int _p) { int _parentState = State; CcExpressionContext _localctx = new CcExpressionContext(_ctx, _parentState); CcExpressionContext _prevctx = _localctx; - int _startState = 12; - EnterRecursionRule(_localctx, 12, RULE_ccExpression, _p); + int _startState = 10; + EnterRecursionRule(_localctx, 10, RULE_ccExpression, _p); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 130; + State = 113; switch (_input.La(1)) { case MINUS: { - State = 95; Match(MINUS); - State = 99; + State = 78; Match(MINUS); + State = 82; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 96; Match(WS); + State = 79; Match(WS); } } - State = 101; + State = 84; _errHandler.Sync(this); _la = _input.La(1); } - State = 102; ccExpression(16); + State = 85; ccExpression(16); } break; case NOT: { - State = 103; Match(NOT); - State = 107; + State = 86; Match(NOT); + State = 90; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 104; Match(WS); + State = 87; Match(WS); } } - State = 109; + State = 92; _errHandler.Sync(this); _la = _input.La(1); } - State = 110; ccExpression(9); + State = 93; ccExpression(9); } break; case LPAREN: { - State = 111; Match(LPAREN); - State = 115; + State = 94; Match(LPAREN); + State = 98; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 112; Match(WS); + State = 95; Match(WS); } } - State = 117; + State = 100; _errHandler.Sync(this); _la = _input.La(1); } - State = 118; ccExpression(0); - State = 122; + State = 101; ccExpression(0); + State = 105; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 119; Match(WS); + State = 102; Match(WS); } } - State = 124; + State = 107; _errHandler.Sync(this); _la = _input.La(1); } - State = 125; Match(RPAREN); + State = 108; Match(RPAREN); } break; case ABS: @@ -779,7 +901,7 @@ private CcExpressionContext ccExpression(int _p) { case LENB: case SGN: { - State = 127; intrinsicFunction(); + State = 110; intrinsicFunction(); } break; case EMPTY: @@ -794,62 +916,62 @@ private CcExpressionContext ccExpression(int _p) { case INTEGERLITERAL: case DATELITERAL: { - State = 128; literal(); + State = 111; literal(); } break; case IDENTIFIER: { - State = 129; name(); + State = 112; name(); } break; default: throw new NoViableAltException(this); } _ctx.stop = _input.Lt(-1); - State = 314; + State = 297; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,40,_ctx); + _alt = Interpreter.AdaptivePredict(_input,36,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { if ( _parseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 312; - switch ( Interpreter.AdaptivePredict(_input,39,_ctx) ) { + State = 295; + switch ( Interpreter.AdaptivePredict(_input,35,_ctx) ) { case 1: { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 132; + State = 115; if (!(Precpred(_ctx, 17))) throw new FailedPredicateException(this, "Precpred(_ctx, 17)"); - State = 136; + State = 119; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 133; Match(WS); + State = 116; Match(WS); } } - State = 138; + State = 121; _errHandler.Sync(this); _la = _input.La(1); } - State = 139; Match(POW); - State = 143; + State = 122; Match(POW); + State = 126; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 140; Match(WS); + State = 123; Match(WS); } } - State = 145; + State = 128; _errHandler.Sync(this); _la = _input.La(1); } - State = 146; ccExpression(18); + State = 129; ccExpression(18); } break; @@ -857,41 +979,41 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 147; + State = 130; if (!(Precpred(_ctx, 15))) throw new FailedPredicateException(this, "Precpred(_ctx, 15)"); - State = 151; + State = 134; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 148; Match(WS); + State = 131; Match(WS); } } - State = 153; + State = 136; _errHandler.Sync(this); _la = _input.La(1); } - State = 154; + State = 137; _la = _input.La(1); if ( !(_la==DIV || _la==MULT) ) { _errHandler.RecoverInline(this); } Consume(); - State = 158; + State = 141; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 155; Match(WS); + State = 138; Match(WS); } } - State = 160; + State = 143; _errHandler.Sync(this); _la = _input.La(1); } - State = 161; ccExpression(16); + State = 144; ccExpression(16); } break; @@ -899,36 +1021,36 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 162; + State = 145; if (!(Precpred(_ctx, 14))) throw new FailedPredicateException(this, "Precpred(_ctx, 14)"); - State = 166; + State = 149; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 163; Match(WS); + State = 146; Match(WS); } } - State = 168; + State = 151; _errHandler.Sync(this); _la = _input.La(1); } - State = 169; Match(INTDIV); - State = 173; + State = 152; Match(INTDIV); + State = 156; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 170; Match(WS); + State = 153; Match(WS); } } - State = 175; + State = 158; _errHandler.Sync(this); _la = _input.La(1); } - State = 176; ccExpression(15); + State = 159; ccExpression(15); } break; @@ -936,36 +1058,36 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 177; + State = 160; if (!(Precpred(_ctx, 13))) throw new FailedPredicateException(this, "Precpred(_ctx, 13)"); - State = 181; + State = 164; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 178; Match(WS); + State = 161; Match(WS); } } - State = 183; + State = 166; _errHandler.Sync(this); _la = _input.La(1); } - State = 184; Match(MOD); - State = 188; + State = 167; Match(MOD); + State = 171; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 185; Match(WS); + State = 168; Match(WS); } } - State = 190; + State = 173; _errHandler.Sync(this); _la = _input.La(1); } - State = 191; ccExpression(14); + State = 174; ccExpression(14); } break; @@ -973,41 +1095,41 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 192; + State = 175; if (!(Precpred(_ctx, 12))) throw new FailedPredicateException(this, "Precpred(_ctx, 12)"); - State = 196; + State = 179; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 193; Match(WS); + State = 176; Match(WS); } } - State = 198; + State = 181; _errHandler.Sync(this); _la = _input.La(1); } - State = 199; + State = 182; _la = _input.La(1); if ( !(_la==MINUS || _la==PLUS) ) { _errHandler.RecoverInline(this); } Consume(); - State = 203; + State = 186; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 200; Match(WS); + State = 183; Match(WS); } } - State = 205; + State = 188; _errHandler.Sync(this); _la = _input.La(1); } - State = 206; ccExpression(13); + State = 189; ccExpression(13); } break; @@ -1015,36 +1137,36 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 207; + State = 190; if (!(Precpred(_ctx, 11))) throw new FailedPredicateException(this, "Precpred(_ctx, 11)"); - State = 211; + State = 194; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 208; Match(WS); + State = 191; Match(WS); } } - State = 213; + State = 196; _errHandler.Sync(this); _la = _input.La(1); } - State = 214; Match(AMPERSAND); - State = 218; + State = 197; Match(AMPERSAND); + State = 201; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 215; Match(WS); + State = 198; Match(WS); } } - State = 220; + State = 203; _errHandler.Sync(this); _la = _input.La(1); } - State = 221; ccExpression(12); + State = 204; ccExpression(12); } break; @@ -1052,41 +1174,41 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 222; + State = 205; if (!(Precpred(_ctx, 10))) throw new FailedPredicateException(this, "Precpred(_ctx, 10)"); - State = 226; + State = 209; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 223; Match(WS); + State = 206; Match(WS); } } - State = 228; + State = 211; _errHandler.Sync(this); _la = _input.La(1); } - State = 229; + State = 212; _la = _input.La(1); - if ( !(_la==IS || _la==LIKE || ((((_la - 224)) & ~0x3f) == 0 && ((1L << (_la - 224)) & ((1L << (EQ - 224)) | (1L << (GEQ - 224)) | (1L << (GT - 224)) | (1L << (LEQ - 224)) | (1L << (LT - 224)) | (1L << (NEQ - 224)))) != 0)) ) { + if ( !(_la==IS || _la==LIKE || ((((_la - 206)) & ~0x3f) == 0 && ((1L << (_la - 206)) & ((1L << (EQ - 206)) | (1L << (GEQ - 206)) | (1L << (GT - 206)) | (1L << (LEQ - 206)) | (1L << (LT - 206)) | (1L << (NEQ - 206)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); - State = 233; + State = 216; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 230; Match(WS); + State = 213; Match(WS); } } - State = 235; + State = 218; _errHandler.Sync(this); _la = _input.La(1); } - State = 236; ccExpression(11); + State = 219; ccExpression(11); } break; @@ -1094,36 +1216,36 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 237; + State = 220; if (!(Precpred(_ctx, 8))) throw new FailedPredicateException(this, "Precpred(_ctx, 8)"); - State = 241; + State = 224; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 238; Match(WS); + State = 221; Match(WS); } } - State = 243; + State = 226; _errHandler.Sync(this); _la = _input.La(1); } - State = 244; Match(AND); - State = 248; + State = 227; Match(AND); + State = 231; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 245; Match(WS); + State = 228; Match(WS); } } - State = 250; + State = 233; _errHandler.Sync(this); _la = _input.La(1); } - State = 251; ccExpression(9); + State = 234; ccExpression(9); } break; @@ -1131,36 +1253,36 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 252; + State = 235; if (!(Precpred(_ctx, 7))) throw new FailedPredicateException(this, "Precpred(_ctx, 7)"); - State = 256; + State = 239; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 253; Match(WS); + State = 236; Match(WS); } } - State = 258; + State = 241; _errHandler.Sync(this); _la = _input.La(1); } - State = 259; Match(OR); - State = 263; + State = 242; Match(OR); + State = 246; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 260; Match(WS); + State = 243; Match(WS); } } - State = 265; + State = 248; _errHandler.Sync(this); _la = _input.La(1); } - State = 266; ccExpression(8); + State = 249; ccExpression(8); } break; @@ -1168,36 +1290,36 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 267; + State = 250; if (!(Precpred(_ctx, 6))) throw new FailedPredicateException(this, "Precpred(_ctx, 6)"); - State = 271; + State = 254; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 268; Match(WS); + State = 251; Match(WS); } } - State = 273; + State = 256; _errHandler.Sync(this); _la = _input.La(1); } - State = 274; Match(XOR); - State = 278; + State = 257; Match(XOR); + State = 261; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 275; Match(WS); + State = 258; Match(WS); } } - State = 280; + State = 263; _errHandler.Sync(this); _la = _input.La(1); } - State = 281; ccExpression(7); + State = 264; ccExpression(7); } break; @@ -1205,36 +1327,36 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 282; + State = 265; if (!(Precpred(_ctx, 5))) throw new FailedPredicateException(this, "Precpred(_ctx, 5)"); - State = 286; + State = 269; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 283; Match(WS); + State = 266; Match(WS); } } - State = 288; + State = 271; _errHandler.Sync(this); _la = _input.La(1); } - State = 289; Match(EQV); - State = 293; + State = 272; Match(EQV); + State = 276; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 290; Match(WS); + State = 273; Match(WS); } } - State = 295; + State = 278; _errHandler.Sync(this); _la = _input.La(1); } - State = 296; ccExpression(6); + State = 279; ccExpression(6); } break; @@ -1242,44 +1364,44 @@ private CcExpressionContext ccExpression(int _p) { { _localctx = new CcExpressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_ccExpression); - State = 297; + State = 280; if (!(Precpred(_ctx, 4))) throw new FailedPredicateException(this, "Precpred(_ctx, 4)"); - State = 301; + State = 284; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 298; Match(WS); + State = 281; Match(WS); } } - State = 303; + State = 286; _errHandler.Sync(this); _la = _input.La(1); } - State = 304; Match(IMP); - State = 308; + State = 287; Match(IMP); + State = 291; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 305; Match(WS); + State = 288; Match(WS); } } - State = 310; + State = 293; _errHandler.Sync(this); _la = _input.La(1); } - State = 311; ccExpression(5); + State = 294; ccExpression(5); } break; } } } - State = 316; + State = 299; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,40,_ctx); + _alt = Interpreter.AdaptivePredict(_input,36,_ctx); } } } @@ -1336,35 +1458,35 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcIfBlockContext ccIfBlock() { CcIfBlockContext _localctx = new CcIfBlockContext(_ctx, State); - EnterRule(_localctx, 14, RULE_ccIfBlock); + EnterRule(_localctx, 12, RULE_ccIfBlock); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 317; ccIf(); - State = 318; ccBlock(); - State = 322; + State = 300; ccIf(); + State = 301; ccBlock(); + State = 305; _errHandler.Sync(this); _la = _input.La(1); while (_la==HASHELSEIF) { { { - State = 319; ccElseIfBlock(); + State = 302; ccElseIfBlock(); } } - State = 324; + State = 307; _errHandler.Sync(this); _la = _input.La(1); } - State = 326; + State = 309; _la = _input.La(1); if (_la==HASHELSE) { { - State = 325; ccElseBlock(); + State = 308; ccElseBlock(); } } - State = 328; ccEndIf(); + State = 311; ccEndIf(); } } catch (RecognitionException re) { @@ -1414,41 +1536,41 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcIfContext ccIf() { CcIfContext _localctx = new CcIfContext(_ctx, State); - EnterRule(_localctx, 16, RULE_ccIf); + EnterRule(_localctx, 14, RULE_ccIf); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 330; Match(HASHIF); - State = 332; + State = 313; Match(HASHIF); + State = 314; ccExpression(0); + State = 316; _errHandler.Sync(this); _la = _input.La(1); do { { { - State = 331; Match(WS); + State = 315; Match(WS); } } - State = 334; + State = 318; _errHandler.Sync(this); _la = _input.La(1); } while ( _la==WS ); - State = 336; ccExpression(0); - State = 338; + State = 320; Match(THEN); + State = 324; _errHandler.Sync(this); _la = _input.La(1); - do { + while (_la==WS) { { { - State = 337; Match(WS); + State = 321; Match(WS); } } - State = 340; + State = 326; _errHandler.Sync(this); _la = _input.La(1); - } while ( _la==WS ); - State = 342; Match(THEN); - State = 343; ccEol(); + } + State = 327; ccEol(); } } catch (RecognitionException re) { @@ -1492,12 +1614,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcElseIfBlockContext ccElseIfBlock() { CcElseIfBlockContext _localctx = new CcElseIfBlockContext(_ctx, State); - EnterRule(_localctx, 18, RULE_ccElseIfBlock); + EnterRule(_localctx, 16, RULE_ccElseIfBlock); try { EnterOuterAlt(_localctx, 1); { - State = 345; ccElseIf(); - State = 346; ccBlock(); + State = 329; ccElseIf(); + State = 330; ccBlock(); } } catch (RecognitionException re) { @@ -1547,41 +1669,41 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcElseIfContext ccElseIf() { CcElseIfContext _localctx = new CcElseIfContext(_ctx, State); - EnterRule(_localctx, 20, RULE_ccElseIf); + EnterRule(_localctx, 18, RULE_ccElseIf); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 348; Match(HASHELSEIF); - State = 350; + State = 332; Match(HASHELSEIF); + State = 333; ccExpression(0); + State = 335; _errHandler.Sync(this); _la = _input.La(1); do { { { - State = 349; Match(WS); + State = 334; Match(WS); } } - State = 352; + State = 337; _errHandler.Sync(this); _la = _input.La(1); } while ( _la==WS ); - State = 354; ccExpression(0); - State = 356; + State = 339; Match(THEN); + State = 343; _errHandler.Sync(this); _la = _input.La(1); - do { + while (_la==WS) { { { - State = 355; Match(WS); + State = 340; Match(WS); } } - State = 358; + State = 345; _errHandler.Sync(this); _la = _input.La(1); - } while ( _la==WS ); - State = 360; Match(THEN); - State = 361; ccEol(); + } + State = 346; ccEol(); } } catch (RecognitionException re) { @@ -1625,12 +1747,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcElseBlockContext ccElseBlock() { CcElseBlockContext _localctx = new CcElseBlockContext(_ctx, State); - EnterRule(_localctx, 22, RULE_ccElseBlock); + EnterRule(_localctx, 20, RULE_ccElseBlock); try { EnterOuterAlt(_localctx, 1); { - State = 363; ccElse(); - State = 364; ccBlock(); + State = 348; ccElse(); + State = 349; ccBlock(); } } catch (RecognitionException re) { @@ -1646,9 +1768,6 @@ public CcElseBlockContext ccElseBlock() { public partial class CcElseContext : ParserRuleContext { public ITerminalNode HASHELSE() { return GetToken(VBAConditionalCompilationParser.HASHELSE, 0); } - public CcEolContext ccEol() { - return GetRuleContext(0); - } public CcElseContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -1672,12 +1791,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcElseContext ccElse() { CcElseContext _localctx = new CcElseContext(_ctx, State); - EnterRule(_localctx, 24, RULE_ccElse); + EnterRule(_localctx, 22, RULE_ccElse); try { EnterOuterAlt(_localctx, 1); { - State = 366; Match(HASHELSE); - State = 367; ccEol(); + State = 351; Match(HASHELSE); } } catch (RecognitionException re) { @@ -1693,9 +1811,6 @@ public CcElseContext ccElse() { public partial class CcEndIfContext : ParserRuleContext { public ITerminalNode HASHENDIF() { return GetToken(VBAConditionalCompilationParser.HASHENDIF, 0); } - public CcEolContext ccEol() { - return GetRuleContext(0); - } public CcEndIfContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -1719,12 +1834,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcEndIfContext ccEndIf() { CcEndIfContext _localctx = new CcEndIfContext(_ctx, State); - EnterRule(_localctx, 26, RULE_ccEndIf); + EnterRule(_localctx, 24, RULE_ccEndIf); try { EnterOuterAlt(_localctx, 1); { - State = 369; Match(HASHENDIF); - State = 370; ccEol(); + State = 353; Match(HASHENDIF); } } catch (RecognitionException re) { @@ -1739,11 +1853,11 @@ public CcEndIfContext ccEndIf() { } public partial class CcEolContext : ParserRuleContext { - public ITerminalNode SINGLEQUOTE() { return GetToken(VBAConditionalCompilationParser.SINGLEQUOTE, 0); } - public IReadOnlyList NEWLINE() { return GetTokens(VBAConditionalCompilationParser.NEWLINE); } - public ITerminalNode NEWLINE(int i) { - return GetToken(VBAConditionalCompilationParser.NEWLINE, i); + public CommentContext comment() { + return GetRuleContext(0); } + public ITerminalNode Eof() { return GetToken(VBAConditionalCompilationParser.Eof, 0); } + public ITerminalNode NEWLINE() { return GetToken(VBAConditionalCompilationParser.NEWLINE, 0); } public CcEolContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -1767,48 +1881,25 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CcEolContext ccEol() { CcEolContext _localctx = new CcEolContext(_ctx, State); - EnterRule(_localctx, 28, RULE_ccEol); + EnterRule(_localctx, 26, RULE_ccEol); int _la; try { - int _alt; EnterOuterAlt(_localctx, 1); { - State = 379; - switch ( Interpreter.AdaptivePredict(_input,48,_ctx) ) { - case 1: + State = 356; + _la = _input.La(1); + if (_la==SINGLEQUOTE) { { - State = 372; Match(SINGLEQUOTE); - State = 376; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,47,_ctx); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { - if ( _alt==1 ) { - { - { - State = 373; - _la = _input.La(1); - if ( _la <= 0 || (_la==NEWLINE) ) { - _errHandler.RecoverInline(this); - } - Consume(); - } - } - } - State = 378; - _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,47,_ctx); - } + State = 355; comment(); } - break; } - State = 382; - switch ( Interpreter.AdaptivePredict(_input,49,_ctx) ) { - case 1: - { - State = 381; Match(NEWLINE); - } - break; + + State = 358; + _la = _input.La(1); + if ( !(_la==Eof || _la==NEWLINE) ) { + _errHandler.RecoverInline(this); } + Consume(); } } catch (RecognitionException re) { @@ -1858,41 +1949,41 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntrinsicFunctionContext intrinsicFunction() { IntrinsicFunctionContext _localctx = new IntrinsicFunctionContext(_ctx, State); - EnterRule(_localctx, 30, RULE_intrinsicFunction); + EnterRule(_localctx, 28, RULE_intrinsicFunction); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 384; intrinsicFunctionName(); - State = 385; Match(LPAREN); - State = 389; + State = 360; intrinsicFunctionName(); + State = 361; Match(LPAREN); + State = 365; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 386; Match(WS); + State = 362; Match(WS); } } - State = 391; + State = 367; _errHandler.Sync(this); _la = _input.La(1); } - State = 392; ccExpression(0); - State = 396; + State = 368; ccExpression(0); + State = 372; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 393; Match(WS); + State = 369; Match(WS); } } - State = 398; + State = 374; _errHandler.Sync(this); _la = _input.La(1); } - State = 399; Match(RPAREN); + State = 375; Match(RPAREN); } } catch (RecognitionException re) { @@ -1948,12 +2039,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntrinsicFunctionNameContext intrinsicFunctionName() { IntrinsicFunctionNameContext _localctx = new IntrinsicFunctionNameContext(_ctx, State); - EnterRule(_localctx, 32, RULE_intrinsicFunctionName); + EnterRule(_localctx, 30, RULE_intrinsicFunctionName); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 401; + State = 377; _la = _input.La(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CVAR) | (1L << FIX) | (1L << INT) | (1L << LEN) | (1L << LENB) | (1L << SGN))) != 0)) ) { _errHandler.RecoverInline(this); @@ -2000,16 +2091,16 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NameContext name() { NameContext _localctx = new NameContext(_ctx, State); - EnterRule(_localctx, 34, RULE_name); + EnterRule(_localctx, 32, RULE_name); try { EnterOuterAlt(_localctx, 1); { - State = 403; Match(IDENTIFIER); - State = 405; - switch ( Interpreter.AdaptivePredict(_input,52,_ctx) ) { + State = 379; Match(IDENTIFIER); + State = 381; + switch ( Interpreter.AdaptivePredict(_input,46,_ctx) ) { case 1: { - State = 404; typeHint(); + State = 380; typeHint(); } break; } @@ -2057,12 +2148,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public TypeHintContext typeHint() { TypeHintContext _localctx = new TypeHintContext(_ctx, State); - EnterRule(_localctx, 36, RULE_typeHint); + EnterRule(_localctx, 34, RULE_typeHint); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 407; + State = 383; _la = _input.La(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) ) { _errHandler.RecoverInline(this); @@ -2116,14 +2207,14 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public LiteralContext literal() { LiteralContext _localctx = new LiteralContext(_ctx, State); - EnterRule(_localctx, 38, RULE_literal); + EnterRule(_localctx, 36, RULE_literal); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 409; + State = 385; _la = _input.La(1); - if ( !(((((_la - 94)) & ~0x3f) == 0 && ((1L << (_la - 94)) & ((1L << (EMPTY - 94)) | (1L << (FALSE - 94)) | (1L << (NOTHING - 94)) | (1L << (NULL - 94)))) != 0) || ((((_la - 206)) & ~0x3f) == 0 && ((1L << (_la - 206)) & ((1L << (TRUE - 206)) | (1L << (STRINGLITERAL - 206)) | (1L << (OCTLITERAL - 206)) | (1L << (HEXLITERAL - 206)) | (1L << (FLOATLITERAL - 206)) | (1L << (INTEGERLITERAL - 206)) | (1L << (DATELITERAL - 206)))) != 0)) ) { + if ( !(((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (EMPTY - 89)) | (1L << (FALSE - 89)) | (1L << (NOTHING - 89)) | (1L << (NULL - 89)))) != 0) || ((((_la - 189)) & ~0x3f) == 0 && ((1L << (_la - 189)) & ((1L << (TRUE - 189)) | (1L << (STRINGLITERAL - 189)) | (1L << (OCTLITERAL - 189)) | (1L << (HEXLITERAL - 189)) | (1L << (FLOATLITERAL - 189)) | (1L << (INTEGERLITERAL - 189)) | (1L << (DATELITERAL - 189)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -2140,9 +2231,90 @@ public LiteralContext literal() { return _localctx; } + public partial class CommentContext : ParserRuleContext { + public ITerminalNode SINGLEQUOTE() { return GetToken(VBAConditionalCompilationParser.SINGLEQUOTE, 0); } + public IReadOnlyList LINE_CONTINUATION() { return GetTokens(VBAConditionalCompilationParser.LINE_CONTINUATION); } + public IReadOnlyList NEWLINE() { return GetTokens(VBAConditionalCompilationParser.NEWLINE); } + public ITerminalNode NEWLINE(int i) { + return GetToken(VBAConditionalCompilationParser.NEWLINE, i); + } + public ITerminalNode LINE_CONTINUATION(int i) { + return GetToken(VBAConditionalCompilationParser.LINE_CONTINUATION, i); + } + public CommentContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_comment; } } + public override void EnterRule(IParseTreeListener listener) { + IVBAConditionalCompilationParserListener typedListener = listener as IVBAConditionalCompilationParserListener; + if (typedListener != null) typedListener.EnterComment(this); + } + public override void ExitRule(IParseTreeListener listener) { + IVBAConditionalCompilationParserListener typedListener = listener as IVBAConditionalCompilationParserListener; + if (typedListener != null) typedListener.ExitComment(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IVBAConditionalCompilationParserVisitor typedVisitor = visitor as IVBAConditionalCompilationParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitComment(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CommentContext comment() { + CommentContext _localctx = new CommentContext(_ctx, State); + EnterRule(_localctx, 38, RULE_comment); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 387; Match(SINGLEQUOTE); + State = 392; + _errHandler.Sync(this); + _la = _input.La(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)) | (1L << (TYPE - 128)) | (1L << (TYPEOF - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (HASHCONST - 192)) | (1L << (HASHIF - 192)) | (1L << (HASHELSEIF - 192)) | (1L << (HASHELSE - 192)) | (1L << (HASHENDIF - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)))) != 0)) { + { + State = 390; + switch ( Interpreter.AdaptivePredict(_input,47,_ctx) ) { + case 1: + { + State = 388; Match(LINE_CONTINUATION); + } + break; + + case 2: + { + State = 389; + _la = _input.La(1); + if ( _la <= 0 || (_la==NEWLINE) ) { + _errHandler.RecoverInline(this); + } + Consume(); + } + break; + } + } + State = 394; + _errHandler.Sync(this); + _la = _input.La(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.ReportError(this, re); + _errHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { - case 6: return ccExpression_sempred((CcExpressionContext)_localctx, predIndex); + case 5: return ccExpression_sempred((CcExpressionContext)_localctx, predIndex); } return true; } @@ -2176,179 +2348,170 @@ private bool ccExpression_sempred(CcExpressionContext _localctx, int predIndex) } public static readonly string _serializedATN = - "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\x104\x19E\x4\x2"+ + "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\xF0\x18E\x4\x2"+ "\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b\t\b\x4"+ "\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF\x4\x10"+ "\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15\t\x15"+ "\x3\x2\x3\x2\x3\x2\x3\x3\x3\x3\x3\x3\a\x3\x31\n\x3\f\x3\xE\x3\x34\v\x3"+ - "\x3\x4\a\x4\x37\n\x4\f\x4\xE\x4:\v\x4\x3\x4\x3\x4\x6\x4>\n\x4\r\x4\xE"+ - "\x4?\x3\x4\x3\x4\x6\x4\x44\n\x4\r\x4\xE\x4\x45\x3\x4\x3\x4\x6\x4J\n\x4"+ - "\r\x4\xE\x4K\x3\x4\x3\x4\x3\x4\x3\x5\x6\x5R\n\x5\r\x5\xE\x5S\x3\x6\x3"+ - "\x6\x6\x6X\n\x6\r\x6\xE\x6Y\x3\x6\x5\x6]\n\x6\x3\a\x3\a\x3\b\x3\b\x3\b"+ - "\a\b\x64\n\b\f\b\xE\bg\v\b\x3\b\x3\b\x3\b\a\bl\n\b\f\b\xE\bo\v\b\x3\b"+ - "\x3\b\x3\b\a\bt\n\b\f\b\xE\bw\v\b\x3\b\x3\b\a\b{\n\b\f\b\xE\b~\v\b\x3"+ - "\b\x3\b\x3\b\x3\b\x3\b\x5\b\x85\n\b\x3\b\x3\b\a\b\x89\n\b\f\b\xE\b\x8C"+ - "\v\b\x3\b\x3\b\a\b\x90\n\b\f\b\xE\b\x93\v\b\x3\b\x3\b\x3\b\a\b\x98\n\b"+ - "\f\b\xE\b\x9B\v\b\x3\b\x3\b\a\b\x9F\n\b\f\b\xE\b\xA2\v\b\x3\b\x3\b\x3"+ - "\b\a\b\xA7\n\b\f\b\xE\b\xAA\v\b\x3\b\x3\b\a\b\xAE\n\b\f\b\xE\b\xB1\v\b"+ - "\x3\b\x3\b\x3\b\a\b\xB6\n\b\f\b\xE\b\xB9\v\b\x3\b\x3\b\a\b\xBD\n\b\f\b"+ - "\xE\b\xC0\v\b\x3\b\x3\b\x3\b\a\b\xC5\n\b\f\b\xE\b\xC8\v\b\x3\b\x3\b\a"+ - "\b\xCC\n\b\f\b\xE\b\xCF\v\b\x3\b\x3\b\x3\b\a\b\xD4\n\b\f\b\xE\b\xD7\v"+ - "\b\x3\b\x3\b\a\b\xDB\n\b\f\b\xE\b\xDE\v\b\x3\b\x3\b\x3\b\a\b\xE3\n\b\f"+ - "\b\xE\b\xE6\v\b\x3\b\x3\b\a\b\xEA\n\b\f\b\xE\b\xED\v\b\x3\b\x3\b\x3\b"+ - "\a\b\xF2\n\b\f\b\xE\b\xF5\v\b\x3\b\x3\b\a\b\xF9\n\b\f\b\xE\b\xFC\v\b\x3"+ - "\b\x3\b\x3\b\a\b\x101\n\b\f\b\xE\b\x104\v\b\x3\b\x3\b\a\b\x108\n\b\f\b"+ - "\xE\b\x10B\v\b\x3\b\x3\b\x3\b\a\b\x110\n\b\f\b\xE\b\x113\v\b\x3\b\x3\b"+ - "\a\b\x117\n\b\f\b\xE\b\x11A\v\b\x3\b\x3\b\x3\b\a\b\x11F\n\b\f\b\xE\b\x122"+ - "\v\b\x3\b\x3\b\a\b\x126\n\b\f\b\xE\b\x129\v\b\x3\b\x3\b\x3\b\a\b\x12E"+ - "\n\b\f\b\xE\b\x131\v\b\x3\b\x3\b\a\b\x135\n\b\f\b\xE\b\x138\v\b\x3\b\a"+ - "\b\x13B\n\b\f\b\xE\b\x13E\v\b\x3\t\x3\t\x3\t\a\t\x143\n\t\f\t\xE\t\x146"+ - "\v\t\x3\t\x5\t\x149\n\t\x3\t\x3\t\x3\n\x3\n\x6\n\x14F\n\n\r\n\xE\n\x150"+ - "\x3\n\x3\n\x6\n\x155\n\n\r\n\xE\n\x156\x3\n\x3\n\x3\n\x3\v\x3\v\x3\v\x3"+ - "\f\x3\f\x6\f\x161\n\f\r\f\xE\f\x162\x3\f\x3\f\x6\f\x167\n\f\r\f\xE\f\x168"+ - "\x3\f\x3\f\x3\f\x3\r\x3\r\x3\r\x3\xE\x3\xE\x3\xE\x3\xF\x3\xF\x3\xF\x3"+ - "\x10\x3\x10\a\x10\x179\n\x10\f\x10\xE\x10\x17C\v\x10\x5\x10\x17E\n\x10"+ - "\x3\x10\x5\x10\x181\n\x10\x3\x11\x3\x11\x3\x11\a\x11\x186\n\x11\f\x11"+ - "\xE\x11\x189\v\x11\x3\x11\x3\x11\a\x11\x18D\n\x11\f\x11\xE\x11\x190\v"+ - "\x11\x3\x11\x3\x11\x3\x12\x3\x12\x3\x13\x3\x13\x5\x13\x198\n\x13\x3\x14"+ - "\x3\x14\x3\x15\x3\x15\x3\x15\x2\x2\x3\xE\x16\x2\x2\x4\x2\x6\x2\b\x2\n"+ - "\x2\f\x2\xE\x2\x10\x2\x12\x2\x14\x2\x16\x2\x18\x2\x1A\x2\x1C\x2\x1E\x2"+ - " \x2\"\x2$\x2&\x2(\x2\x2\n\x3\x2\xEE\xF2\x4\x2\xE0\xE0\xE9\xE9\x4\x2\xE8"+ - "\xE8\xEB\xEB\a\x2\x82\x82\x8B\x8B\xE2\xE5\xE7\xE7\xEA\xEA\x3\x2\xFB\xFB"+ - "\v\x2\x3\x3\x6\n\f\f\xE\x12\x14\x14\x19\x19\x1B\x1B\x1D\x1E\'\'\x5\x2"+ - ",,.\x32\xEC\xEC\a\x2``tt\x99\x9A\xD0\xD0\xF5\xFA\x1CD\x2*\x3\x2\x2\x2"+ - "\x4\x32\x3\x2\x2\x2\x6\x38\x3\x2\x2\x2\bQ\x3\x2\x2\x2\nW\x3\x2\x2\x2\f"+ - "^\x3\x2\x2\x2\xE\x84\x3\x2\x2\x2\x10\x13F\x3\x2\x2\x2\x12\x14C\x3\x2\x2"+ - "\x2\x14\x15B\x3\x2\x2\x2\x16\x15E\x3\x2\x2\x2\x18\x16D\x3\x2\x2\x2\x1A"+ - "\x170\x3\x2\x2\x2\x1C\x173\x3\x2\x2\x2\x1E\x17D\x3\x2\x2\x2 \x182\x3\x2"+ - "\x2\x2\"\x193\x3\x2\x2\x2$\x195\x3\x2\x2\x2&\x199\x3\x2\x2\x2(\x19B\x3"+ - "\x2\x2\x2*+\x5\x4\x3\x2+,\a\x2\x2\x3,\x3\x3\x2\x2\x2-\x31\x5\x6\x4\x2"+ - ".\x31\x5\x10\t\x2/\x31\x5\b\x5\x2\x30-\x3\x2\x2\x2\x30.\x3\x2\x2\x2\x30"+ - "/\x3\x2\x2\x2\x31\x34\x3\x2\x2\x2\x32\x30\x3\x2\x2\x2\x32\x33\x3\x2\x2"+ - "\x2\x33\x5\x3\x2\x2\x2\x34\x32\x3\x2\x2\x2\x35\x37\a\x100\x2\x2\x36\x35"+ - "\x3\x2\x2\x2\x37:\x3\x2\x2\x2\x38\x36\x3\x2\x2\x2\x38\x39\x3\x2\x2\x2"+ - "\x39;\x3\x2\x2\x2:\x38\x3\x2\x2\x2;=\a\xEE\x2\x2<>\a\x100\x2\x2=<\x3\x2"+ - "\x2\x2>?\x3\x2\x2\x2?=\x3\x2\x2\x2?@\x3\x2\x2\x2@\x41\x3\x2\x2\x2\x41"+ - "\x43\x5\f\a\x2\x42\x44\a\x100\x2\x2\x43\x42\x3\x2\x2\x2\x44\x45\x3\x2"+ - "\x2\x2\x45\x43\x3\x2\x2\x2\x45\x46\x3\x2\x2\x2\x46G\x3\x2\x2\x2GI\a\xE2"+ - "\x2\x2HJ\a\x100\x2\x2IH\x3\x2\x2\x2JK\x3\x2\x2\x2KI\x3\x2\x2\x2KL\x3\x2"+ - "\x2\x2LM\x3\x2\x2\x2MN\x5\xE\b\x2NO\x5\x1E\x10\x2O\a\x3\x2\x2\x2PR\x5"+ - "\n\x6\x2QP\x3\x2\x2\x2RS\x3\x2\x2\x2SQ\x3\x2\x2\x2ST\x3\x2\x2\x2T\t\x3"+ - "\x2\x2\x2UX\a\x102\x2\x2VX\n\x2\x2\x2WU\x3\x2\x2\x2WV\x3\x2\x2\x2XY\x3"+ - "\x2\x2\x2YW\x3\x2\x2\x2YZ\x3\x2\x2\x2Z\\\x3\x2\x2\x2[]\a\xFB\x2\x2\\["+ - "\x3\x2\x2\x2\\]\x3\x2\x2\x2]\v\x3\x2\x2\x2^_\x5$\x13\x2_\r\x3\x2\x2\x2"+ - "`\x61\b\b\x1\x2\x61\x65\a\xE8\x2\x2\x62\x64\a\x100\x2\x2\x63\x62\x3\x2"+ - "\x2\x2\x64g\x3\x2\x2\x2\x65\x63\x3\x2\x2\x2\x65\x66\x3\x2\x2\x2\x66h\x3"+ - "\x2\x2\x2g\x65\x3\x2\x2\x2h\x85\x5\xE\b\x12im\a\x98\x2\x2jl\a\x100\x2"+ - "\x2kj\x3\x2\x2\x2lo\x3\x2\x2\x2mk\x3\x2\x2\x2mn\x3\x2\x2\x2np\x3\x2\x2"+ - "\x2om\x3\x2\x2\x2p\x85\x5\xE\b\vqu\a\xE6\x2\x2rt\a\x100\x2\x2sr\x3\x2"+ - "\x2\x2tw\x3\x2\x2\x2us\x3\x2\x2\x2uv\x3\x2\x2\x2vx\x3\x2\x2\x2wu\x3\x2"+ - "\x2\x2x|\x5\xE\b\x2y{\a\x100\x2\x2zy\x3\x2\x2\x2{~\x3\x2\x2\x2|z\x3\x2"+ - "\x2\x2|}\x3\x2\x2\x2}\x7F\x3\x2\x2\x2~|\x3\x2\x2\x2\x7F\x80\a\xED\x2\x2"+ - "\x80\x85\x3\x2\x2\x2\x81\x85\x5 \x11\x2\x82\x85\x5(\x15\x2\x83\x85\x5"+ - "$\x13\x2\x84`\x3\x2\x2\x2\x84i\x3\x2\x2\x2\x84q\x3\x2\x2\x2\x84\x81\x3"+ - "\x2\x2\x2\x84\x82\x3\x2\x2\x2\x84\x83\x3\x2\x2\x2\x85\x13C\x3\x2\x2\x2"+ - "\x86\x8A\f\x13\x2\x2\x87\x89\a\x100\x2\x2\x88\x87\x3\x2\x2\x2\x89\x8C"+ - "\x3\x2\x2\x2\x8A\x88\x3\x2\x2\x2\x8A\x8B\x3\x2\x2\x2\x8B\x8D\x3\x2\x2"+ - "\x2\x8C\x8A\x3\x2\x2\x2\x8D\x91\a\xEC\x2\x2\x8E\x90\a\x100\x2\x2\x8F\x8E"+ - "\x3\x2\x2\x2\x90\x93\x3\x2\x2\x2\x91\x8F\x3\x2\x2\x2\x91\x92\x3\x2\x2"+ - "\x2\x92\x94\x3\x2\x2\x2\x93\x91\x3\x2\x2\x2\x94\x13B\x5\xE\b\x14\x95\x99"+ - "\f\x11\x2\x2\x96\x98\a\x100\x2\x2\x97\x96\x3\x2\x2\x2\x98\x9B\x3\x2\x2"+ - "\x2\x99\x97\x3\x2\x2\x2\x99\x9A\x3\x2\x2\x2\x9A\x9C\x3\x2\x2\x2\x9B\x99"+ - "\x3\x2\x2\x2\x9C\xA0\t\x3\x2\x2\x9D\x9F\a\x100\x2\x2\x9E\x9D\x3\x2\x2"+ - "\x2\x9F\xA2\x3\x2\x2\x2\xA0\x9E\x3\x2\x2\x2\xA0\xA1\x3\x2\x2\x2\xA1\xA3"+ - "\x3\x2\x2\x2\xA2\xA0\x3\x2\x2\x2\xA3\x13B\x5\xE\b\x12\xA4\xA8\f\x10\x2"+ - "\x2\xA5\xA7\a\x100\x2\x2\xA6\xA5\x3\x2\x2\x2\xA7\xAA\x3\x2\x2\x2\xA8\xA6"+ - "\x3\x2\x2\x2\xA8\xA9\x3\x2\x2\x2\xA9\xAB\x3\x2\x2\x2\xAA\xA8\x3\x2\x2"+ - "\x2\xAB\xAF\a\xE1\x2\x2\xAC\xAE\a\x100\x2\x2\xAD\xAC\x3\x2\x2\x2\xAE\xB1"+ - "\x3\x2\x2\x2\xAF\xAD\x3\x2\x2\x2\xAF\xB0\x3\x2\x2\x2\xB0\xB2\x3\x2\x2"+ - "\x2\xB1\xAF\x3\x2\x2\x2\xB2\x13B\x5\xE\b\x11\xB3\xB7\f\xF\x2\x2\xB4\xB6"+ - "\a\x100\x2\x2\xB5\xB4\x3\x2\x2\x2\xB6\xB9\x3\x2\x2\x2\xB7\xB5\x3\x2\x2"+ - "\x2\xB7\xB8\x3\x2\x2\x2\xB8\xBA\x3\x2\x2\x2\xB9\xB7\x3\x2\x2\x2\xBA\xBE"+ - "\a\x94\x2\x2\xBB\xBD\a\x100\x2\x2\xBC\xBB\x3\x2\x2\x2\xBD\xC0\x3\x2\x2"+ - "\x2\xBE\xBC\x3\x2\x2\x2\xBE\xBF\x3\x2\x2\x2\xBF\xC1\x3\x2\x2\x2\xC0\xBE"+ - "\x3\x2\x2\x2\xC1\x13B\x5\xE\b\x10\xC2\xC6\f\xE\x2\x2\xC3\xC5\a\x100\x2"+ - "\x2\xC4\xC3\x3\x2\x2\x2\xC5\xC8\x3\x2\x2\x2\xC6\xC4\x3\x2\x2\x2\xC6\xC7"+ - "\x3\x2\x2\x2\xC7\xC9\x3\x2\x2\x2\xC8\xC6\x3\x2\x2\x2\xC9\xCD\t\x4\x2\x2"+ - "\xCA\xCC\a\x100\x2\x2\xCB\xCA\x3\x2\x2\x2\xCC\xCF\x3\x2\x2\x2\xCD\xCB"+ - "\x3\x2\x2\x2\xCD\xCE\x3\x2\x2\x2\xCE\xD0\x3\x2\x2\x2\xCF\xCD\x3\x2\x2"+ - "\x2\xD0\x13B\x5\xE\b\xF\xD1\xD5\f\r\x2\x2\xD2\xD4\a\x100\x2\x2\xD3\xD2"+ - "\x3\x2\x2\x2\xD4\xD7\x3\x2\x2\x2\xD5\xD3\x3\x2\x2\x2\xD5\xD6\x3\x2\x2"+ - "\x2\xD6\xD8\x3\x2\x2\x2\xD7\xD5\x3\x2\x2\x2\xD8\xDC\a\x32\x2\x2\xD9\xDB"+ - "\a\x100\x2\x2\xDA\xD9\x3\x2\x2\x2\xDB\xDE\x3\x2\x2\x2\xDC\xDA\x3\x2\x2"+ - "\x2\xDC\xDD\x3\x2\x2\x2\xDD\xDF\x3\x2\x2\x2\xDE\xDC\x3\x2\x2\x2\xDF\x13B"+ - "\x5\xE\b\xE\xE0\xE4\f\f\x2\x2\xE1\xE3\a\x100\x2\x2\xE2\xE1\x3\x2\x2\x2"+ - "\xE3\xE6\x3\x2\x2\x2\xE4\xE2\x3\x2\x2\x2\xE4\xE5\x3\x2\x2\x2\xE5\xE7\x3"+ - "\x2\x2\x2\xE6\xE4\x3\x2\x2\x2\xE7\xEB\t\x5\x2\x2\xE8\xEA\a\x100\x2\x2"+ - "\xE9\xE8\x3\x2\x2\x2\xEA\xED\x3\x2\x2\x2\xEB\xE9\x3\x2\x2\x2\xEB\xEC\x3"+ - "\x2\x2\x2\xEC\xEE\x3\x2\x2\x2\xED\xEB\x3\x2\x2\x2\xEE\x13B\x5\xE\b\r\xEF"+ - "\xF3\f\n\x2\x2\xF0\xF2\a\x100\x2\x2\xF1\xF0\x3\x2\x2\x2\xF2\xF5\x3\x2"+ - "\x2\x2\xF3\xF1\x3\x2\x2\x2\xF3\xF4\x3\x2\x2\x2\xF4\xF6\x3\x2\x2\x2\xF5"+ - "\xF3\x3\x2\x2\x2\xF6\xFA\a\x36\x2\x2\xF7\xF9\a\x100\x2\x2\xF8\xF7\x3\x2"+ - "\x2\x2\xF9\xFC\x3\x2\x2\x2\xFA\xF8\x3\x2\x2\x2\xFA\xFB\x3\x2\x2\x2\xFB"+ - "\xFD\x3\x2\x2\x2\xFC\xFA\x3\x2\x2\x2\xFD\x13B\x5\xE\b\v\xFE\x102\f\t\x2"+ - "\x2\xFF\x101\a\x100\x2\x2\x100\xFF\x3\x2\x2\x2\x101\x104\x3\x2\x2\x2\x102"+ - "\x100\x3\x2\x2\x2\x102\x103\x3\x2\x2\x2\x103\x105\x3\x2\x2\x2\x104\x102"+ - "\x3\x2\x2\x2\x105\x109\a\xA4\x2\x2\x106\x108\a\x100\x2\x2\x107\x106\x3"+ - "\x2\x2\x2\x108\x10B\x3\x2\x2\x2\x109\x107\x3\x2\x2\x2\x109\x10A\x3\x2"+ - "\x2\x2\x10A\x10C\x3\x2\x2\x2\x10B\x109\x3\x2\x2\x2\x10C\x13B\x5\xE\b\n"+ - "\x10D\x111\f\b\x2\x2\x10E\x110\a\x100\x2\x2\x10F\x10E\x3\x2\x2\x2\x110"+ - "\x113\x3\x2\x2\x2\x111\x10F\x3\x2\x2\x2\x111\x112\x3\x2\x2\x2\x112\x114"+ - "\x3\x2\x2\x2\x113\x111\x3\x2\x2\x2\x114\x118\a\xDE\x2\x2\x115\x117\a\x100"+ - "\x2\x2\x116\x115\x3\x2\x2\x2\x117\x11A\x3\x2\x2\x2\x118\x116\x3\x2\x2"+ - "\x2\x118\x119\x3\x2\x2\x2\x119\x11B\x3\x2\x2\x2\x11A\x118\x3\x2\x2\x2"+ - "\x11B\x13B\x5\xE\b\t\x11C\x120\f\a\x2\x2\x11D\x11F\a\x100\x2\x2\x11E\x11D"+ - "\x3\x2\x2\x2\x11F\x122\x3\x2\x2\x2\x120\x11E\x3\x2\x2\x2\x120\x121\x3"+ - "\x2\x2\x2\x121\x123\x3\x2\x2\x2\x122\x120\x3\x2\x2\x2\x123\x127\ak\x2"+ - "\x2\x124\x126\a\x100\x2\x2\x125\x124\x3\x2\x2\x2\x126\x129\x3\x2\x2\x2"+ - "\x127\x125\x3\x2\x2\x2\x127\x128\x3\x2\x2\x2\x128\x12A\x3\x2\x2\x2\x129"+ - "\x127\x3\x2\x2\x2\x12A\x13B\x5\xE\b\b\x12B\x12F\f\x6\x2\x2\x12C\x12E\a"+ - "\x100\x2\x2\x12D\x12C\x3\x2\x2\x2\x12E\x131\x3\x2\x2\x2\x12F\x12D\x3\x2"+ - "\x2\x2\x12F\x130\x3\x2\x2\x2\x130\x132\x3\x2\x2\x2\x131\x12F\x3\x2\x2"+ - "\x2\x132\x136\a~\x2\x2\x133\x135\a\x100\x2\x2\x134\x133\x3\x2\x2\x2\x135"+ - "\x138\x3\x2\x2\x2\x136\x134\x3\x2\x2\x2\x136\x137\x3\x2\x2\x2\x137\x139"+ - "\x3\x2\x2\x2\x138\x136\x3\x2\x2\x2\x139\x13B\x5\xE\b\a\x13A\x86\x3\x2"+ - "\x2\x2\x13A\x95\x3\x2\x2\x2\x13A\xA4\x3\x2\x2\x2\x13A\xB3\x3\x2\x2\x2"+ - "\x13A\xC2\x3\x2\x2\x2\x13A\xD1\x3\x2\x2\x2\x13A\xE0\x3\x2\x2\x2\x13A\xEF"+ - "\x3\x2\x2\x2\x13A\xFE\x3\x2\x2\x2\x13A\x10D\x3\x2\x2\x2\x13A\x11C\x3\x2"+ - "\x2\x2\x13A\x12B\x3\x2\x2\x2\x13B\x13E\x3\x2\x2\x2\x13C\x13A\x3\x2\x2"+ - "\x2\x13C\x13D\x3\x2\x2\x2\x13D\xF\x3\x2\x2\x2\x13E\x13C\x3\x2\x2\x2\x13F"+ - "\x140\x5\x12\n\x2\x140\x144\x5\x4\x3\x2\x141\x143\x5\x14\v\x2\x142\x141"+ - "\x3\x2\x2\x2\x143\x146\x3\x2\x2\x2\x144\x142\x3\x2\x2\x2\x144\x145\x3"+ - "\x2\x2\x2\x145\x148\x3\x2\x2\x2\x146\x144\x3\x2\x2\x2\x147\x149\x5\x18"+ - "\r\x2\x148\x147\x3\x2\x2\x2\x148\x149\x3\x2\x2\x2\x149\x14A\x3\x2\x2\x2"+ - "\x14A\x14B\x5\x1C\xF\x2\x14B\x11\x3\x2\x2\x2\x14C\x14E\a\xEF\x2\x2\x14D"+ - "\x14F\a\x100\x2\x2\x14E\x14D\x3\x2\x2\x2\x14F\x150\x3\x2\x2\x2\x150\x14E"+ - "\x3\x2\x2\x2\x150\x151\x3\x2\x2\x2\x151\x152\x3\x2\x2\x2\x152\x154\x5"+ - "\xE\b\x2\x153\x155\a\x100\x2\x2\x154\x153\x3\x2\x2\x2\x155\x156\x3\x2"+ - "\x2\x2\x156\x154\x3\x2\x2\x2\x156\x157\x3\x2\x2\x2\x157\x158\x3\x2\x2"+ - "\x2\x158\x159\a\xCD\x2\x2\x159\x15A\x5\x1E\x10\x2\x15A\x13\x3\x2\x2\x2"+ - "\x15B\x15C\x5\x16\f\x2\x15C\x15D\x5\x4\x3\x2\x15D\x15\x3\x2\x2\x2\x15E"+ - "\x160\a\xF0\x2\x2\x15F\x161\a\x100\x2\x2\x160\x15F\x3\x2\x2\x2\x161\x162"+ - "\x3\x2\x2\x2\x162\x160\x3\x2\x2\x2\x162\x163\x3\x2\x2\x2\x163\x164\x3"+ - "\x2\x2\x2\x164\x166\x5\xE\b\x2\x165\x167\a\x100\x2\x2\x166\x165\x3\x2"+ - "\x2\x2\x167\x168\x3\x2\x2\x2\x168\x166\x3\x2\x2\x2\x168\x169\x3\x2\x2"+ - "\x2\x169\x16A\x3\x2\x2\x2\x16A\x16B\a\xCD\x2\x2\x16B\x16C\x5\x1E\x10\x2"+ - "\x16C\x17\x3\x2\x2\x2\x16D\x16E\x5\x1A\xE\x2\x16E\x16F\x5\x4\x3\x2\x16F"+ - "\x19\x3\x2\x2\x2\x170\x171\a\xF1\x2\x2\x171\x172\x5\x1E\x10\x2\x172\x1B"+ - "\x3\x2\x2\x2\x173\x174\a\xF2\x2\x2\x174\x175\x5\x1E\x10\x2\x175\x1D\x3"+ - "\x2\x2\x2\x176\x17A\a\xFE\x2\x2\x177\x179\n\x6\x2\x2\x178\x177\x3\x2\x2"+ - "\x2\x179\x17C\x3\x2\x2\x2\x17A\x178\x3\x2\x2\x2\x17A\x17B\x3\x2\x2\x2"+ - "\x17B\x17E\x3\x2\x2\x2\x17C\x17A\x3\x2\x2\x2\x17D\x176\x3\x2\x2\x2\x17D"+ - "\x17E\x3\x2\x2\x2\x17E\x180\x3\x2\x2\x2\x17F\x181\a\xFB\x2\x2\x180\x17F"+ - "\x3\x2\x2\x2\x180\x181\x3\x2\x2\x2\x181\x1F\x3\x2\x2\x2\x182\x183\x5\""+ - "\x12\x2\x183\x187\a\xE6\x2\x2\x184\x186\a\x100\x2\x2\x185\x184\x3\x2\x2"+ - "\x2\x186\x189\x3\x2\x2\x2\x187\x185\x3\x2\x2\x2\x187\x188\x3\x2\x2\x2"+ - "\x188\x18A\x3\x2\x2\x2\x189\x187\x3\x2\x2\x2\x18A\x18E\x5\xE\b\x2\x18B"+ - "\x18D\a\x100\x2\x2\x18C\x18B\x3\x2\x2\x2\x18D\x190\x3\x2\x2\x2\x18E\x18C"+ - "\x3\x2\x2\x2\x18E\x18F\x3\x2\x2\x2\x18F\x191\x3\x2\x2\x2\x190\x18E\x3"+ - "\x2\x2\x2\x191\x192\a\xED\x2\x2\x192!\x3\x2\x2\x2\x193\x194\t\a\x2\x2"+ - "\x194#\x3\x2\x2\x2\x195\x197\a\x101\x2\x2\x196\x198\x5&\x14\x2\x197\x196"+ - "\x3\x2\x2\x2\x197\x198\x3\x2\x2\x2\x198%\x3\x2\x2\x2\x199\x19A\t\b\x2"+ - "\x2\x19A\'\x3\x2\x2\x2\x19B\x19C\t\t\x2\x2\x19C)\x3\x2\x2\x2\x37\x30\x32"+ - "\x38?\x45KSWY\\\x65mu|\x84\x8A\x91\x99\xA0\xA8\xAF\xB7\xBE\xC6\xCD\xD5"+ - "\xDC\xE4\xEB\xF3\xFA\x102\x109\x111\x118\x120\x127\x12F\x136\x13A\x13C"+ - "\x144\x148\x150\x156\x162\x168\x17A\x17D\x180\x187\x18E\x197"; + "\x3\x4\x3\x4\x3\x4\x6\x4\x39\n\x4\r\x4\xE\x4:\x3\x4\x3\x4\x6\x4?\n\x4"+ + "\r\x4\xE\x4@\x3\x4\x3\x4\x3\x4\x3\x5\x6\x5G\n\x5\r\x5\xE\x5H\x3\x5\x5"+ + "\x5L\n\x5\x3\x6\x3\x6\x3\a\x3\a\x3\a\a\aS\n\a\f\a\xE\aV\v\a\x3\a\x3\a"+ + "\x3\a\a\a[\n\a\f\a\xE\a^\v\a\x3\a\x3\a\x3\a\a\a\x63\n\a\f\a\xE\a\x66\v"+ + "\a\x3\a\x3\a\a\aj\n\a\f\a\xE\am\v\a\x3\a\x3\a\x3\a\x3\a\x3\a\x5\at\n\a"+ + "\x3\a\x3\a\a\ax\n\a\f\a\xE\a{\v\a\x3\a\x3\a\a\a\x7F\n\a\f\a\xE\a\x82\v"+ + "\a\x3\a\x3\a\x3\a\a\a\x87\n\a\f\a\xE\a\x8A\v\a\x3\a\x3\a\a\a\x8E\n\a\f"+ + "\a\xE\a\x91\v\a\x3\a\x3\a\x3\a\a\a\x96\n\a\f\a\xE\a\x99\v\a\x3\a\x3\a"+ + "\a\a\x9D\n\a\f\a\xE\a\xA0\v\a\x3\a\x3\a\x3\a\a\a\xA5\n\a\f\a\xE\a\xA8"+ + "\v\a\x3\a\x3\a\a\a\xAC\n\a\f\a\xE\a\xAF\v\a\x3\a\x3\a\x3\a\a\a\xB4\n\a"+ + "\f\a\xE\a\xB7\v\a\x3\a\x3\a\a\a\xBB\n\a\f\a\xE\a\xBE\v\a\x3\a\x3\a\x3"+ + "\a\a\a\xC3\n\a\f\a\xE\a\xC6\v\a\x3\a\x3\a\a\a\xCA\n\a\f\a\xE\a\xCD\v\a"+ + "\x3\a\x3\a\x3\a\a\a\xD2\n\a\f\a\xE\a\xD5\v\a\x3\a\x3\a\a\a\xD9\n\a\f\a"+ + "\xE\a\xDC\v\a\x3\a\x3\a\x3\a\a\a\xE1\n\a\f\a\xE\a\xE4\v\a\x3\a\x3\a\a"+ + "\a\xE8\n\a\f\a\xE\a\xEB\v\a\x3\a\x3\a\x3\a\a\a\xF0\n\a\f\a\xE\a\xF3\v"+ + "\a\x3\a\x3\a\a\a\xF7\n\a\f\a\xE\a\xFA\v\a\x3\a\x3\a\x3\a\a\a\xFF\n\a\f"+ + "\a\xE\a\x102\v\a\x3\a\x3\a\a\a\x106\n\a\f\a\xE\a\x109\v\a\x3\a\x3\a\x3"+ + "\a\a\a\x10E\n\a\f\a\xE\a\x111\v\a\x3\a\x3\a\a\a\x115\n\a\f\a\xE\a\x118"+ + "\v\a\x3\a\x3\a\x3\a\a\a\x11D\n\a\f\a\xE\a\x120\v\a\x3\a\x3\a\a\a\x124"+ + "\n\a\f\a\xE\a\x127\v\a\x3\a\a\a\x12A\n\a\f\a\xE\a\x12D\v\a\x3\b\x3\b\x3"+ + "\b\a\b\x132\n\b\f\b\xE\b\x135\v\b\x3\b\x5\b\x138\n\b\x3\b\x3\b\x3\t\x3"+ + "\t\x3\t\x6\t\x13F\n\t\r\t\xE\t\x140\x3\t\x3\t\a\t\x145\n\t\f\t\xE\t\x148"+ + "\v\t\x3\t\x3\t\x3\n\x3\n\x3\n\x3\v\x3\v\x3\v\x6\v\x152\n\v\r\v\xE\v\x153"+ + "\x3\v\x3\v\a\v\x158\n\v\f\v\xE\v\x15B\v\v\x3\v\x3\v\x3\f\x3\f\x3\f\x3"+ + "\r\x3\r\x3\xE\x3\xE\x3\xF\x5\xF\x167\n\xF\x3\xF\x3\xF\x3\x10\x3\x10\x3"+ + "\x10\a\x10\x16E\n\x10\f\x10\xE\x10\x171\v\x10\x3\x10\x3\x10\a\x10\x175"+ + "\n\x10\f\x10\xE\x10\x178\v\x10\x3\x10\x3\x10\x3\x11\x3\x11\x3\x12\x3\x12"+ + "\x5\x12\x180\n\x12\x3\x13\x3\x13\x3\x14\x3\x14\x3\x15\x3\x15\x3\x15\a"+ + "\x15\x189\n\x15\f\x15\xE\x15\x18C\v\x15\x3\x15\x2\x2\x3\f\x16\x2\x2\x4"+ + "\x2\x6\x2\b\x2\n\x2\f\x2\xE\x2\x10\x2\x12\x2\x14\x2\x16\x2\x18\x2\x1A"+ + "\x2\x1C\x2\x1E\x2 \x2\"\x2$\x2&\x2(\x2\x2\v\x3\x2\xDC\xE0\x4\x2\xCE\xCE"+ + "\xD7\xD7\x4\x2\xD6\xD6\xD9\xD9\a\x2||\x83\x83\xD0\xD3\xD5\xD5\xD8\xD8"+ + "\x3\x3\xE9\xE9\v\x2\x3\x3\x6\n\f\f\xE\x12\x14\x14\x19\x19\x1B\x1B\x1D"+ + "\x1E\'\'\x5\x2,,.\x32\xDA\xDA\a\x2[[oo\x8F\x90\xBF\xBF\xE3\xE8\x3\x2\xE9"+ + "\xE9\x1B9\x2*\x3\x2\x2\x2\x4\x32\x3\x2\x2\x2\x6\x35\x3\x2\x2\x2\bK\x3"+ + "\x2\x2\x2\nM\x3\x2\x2\x2\fs\x3\x2\x2\x2\xE\x12E\x3\x2\x2\x2\x10\x13B\x3"+ + "\x2\x2\x2\x12\x14B\x3\x2\x2\x2\x14\x14E\x3\x2\x2\x2\x16\x15E\x3\x2\x2"+ + "\x2\x18\x161\x3\x2\x2\x2\x1A\x163\x3\x2\x2\x2\x1C\x166\x3\x2\x2\x2\x1E"+ + "\x16A\x3\x2\x2\x2 \x17B\x3\x2\x2\x2\"\x17D\x3\x2\x2\x2$\x181\x3\x2\x2"+ + "\x2&\x183\x3\x2\x2\x2(\x185\x3\x2\x2\x2*+\x5\x4\x3\x2+,\a\x2\x2\x3,\x3"+ + "\x3\x2\x2\x2-\x31\x5\x6\x4\x2.\x31\x5\xE\b\x2/\x31\x5\b\x5\x2\x30-\x3"+ + "\x2\x2\x2\x30.\x3\x2\x2\x2\x30/\x3\x2\x2\x2\x31\x34\x3\x2\x2\x2\x32\x30"+ + "\x3\x2\x2\x2\x32\x33\x3\x2\x2\x2\x33\x5\x3\x2\x2\x2\x34\x32\x3\x2\x2\x2"+ + "\x35\x36\a\xDC\x2\x2\x36\x38\x5\n\x6\x2\x37\x39\a\xEC\x2\x2\x38\x37\x3"+ + "\x2\x2\x2\x39:\x3\x2\x2\x2:\x38\x3\x2\x2\x2:;\x3\x2\x2\x2;<\x3\x2\x2\x2"+ + "<>\a\xD0\x2\x2=?\a\xEC\x2\x2>=\x3\x2\x2\x2?@\x3\x2\x2\x2@>\x3\x2\x2\x2"+ + "@\x41\x3\x2\x2\x2\x41\x42\x3\x2\x2\x2\x42\x43\x5\f\a\x2\x43\x44\x5\x1C"+ + "\xF\x2\x44\a\x3\x2\x2\x2\x45G\n\x2\x2\x2\x46\x45\x3\x2\x2\x2GH\x3\x2\x2"+ + "\x2H\x46\x3\x2\x2\x2HI\x3\x2\x2\x2IL\x3\x2\x2\x2JL\a\xE9\x2\x2K\x46\x3"+ + "\x2\x2\x2KJ\x3\x2\x2\x2L\t\x3\x2\x2\x2MN\x5\"\x12\x2N\v\x3\x2\x2\x2OP"+ + "\b\a\x1\x2PT\a\xD6\x2\x2QS\a\xEC\x2\x2RQ\x3\x2\x2\x2SV\x3\x2\x2\x2TR\x3"+ + "\x2\x2\x2TU\x3\x2\x2\x2UW\x3\x2\x2\x2VT\x3\x2\x2\x2Wt\x5\f\a\x12X\\\a"+ + "\x8E\x2\x2Y[\a\xEC\x2\x2ZY\x3\x2\x2\x2[^\x3\x2\x2\x2\\Z\x3\x2\x2\x2\\"+ + "]\x3\x2\x2\x2]_\x3\x2\x2\x2^\\\x3\x2\x2\x2_t\x5\f\a\v`\x64\a\xD4\x2\x2"+ + "\x61\x63\a\xEC\x2\x2\x62\x61\x3\x2\x2\x2\x63\x66\x3\x2\x2\x2\x64\x62\x3"+ + "\x2\x2\x2\x64\x65\x3\x2\x2\x2\x65g\x3\x2\x2\x2\x66\x64\x3\x2\x2\x2gk\x5"+ + "\f\a\x2hj\a\xEC\x2\x2ih\x3\x2\x2\x2jm\x3\x2\x2\x2ki\x3\x2\x2\x2kl\x3\x2"+ + "\x2\x2ln\x3\x2\x2\x2mk\x3\x2\x2\x2no\a\xDB\x2\x2ot\x3\x2\x2\x2pt\x5\x1E"+ + "\x10\x2qt\x5&\x14\x2rt\x5\"\x12\x2sO\x3\x2\x2\x2sX\x3\x2\x2\x2s`\x3\x2"+ + "\x2\x2sp\x3\x2\x2\x2sq\x3\x2\x2\x2sr\x3\x2\x2\x2t\x12B\x3\x2\x2\x2uy\f"+ + "\x13\x2\x2vx\a\xEC\x2\x2wv\x3\x2\x2\x2x{\x3\x2\x2\x2yw\x3\x2\x2\x2yz\x3"+ + "\x2\x2\x2z|\x3\x2\x2\x2{y\x3\x2\x2\x2|\x80\a\xDA\x2\x2}\x7F\a\xEC\x2\x2"+ + "~}\x3\x2\x2\x2\x7F\x82\x3\x2\x2\x2\x80~\x3\x2\x2\x2\x80\x81\x3\x2\x2\x2"+ + "\x81\x83\x3\x2\x2\x2\x82\x80\x3\x2\x2\x2\x83\x12A\x5\f\a\x14\x84\x88\f"+ + "\x11\x2\x2\x85\x87\a\xEC\x2\x2\x86\x85\x3\x2\x2\x2\x87\x8A\x3\x2\x2\x2"+ + "\x88\x86\x3\x2\x2\x2\x88\x89\x3\x2\x2\x2\x89\x8B\x3\x2\x2\x2\x8A\x88\x3"+ + "\x2\x2\x2\x8B\x8F\t\x3\x2\x2\x8C\x8E\a\xEC\x2\x2\x8D\x8C\x3\x2\x2\x2\x8E"+ + "\x91\x3\x2\x2\x2\x8F\x8D\x3\x2\x2\x2\x8F\x90\x3\x2\x2\x2\x90\x92\x3\x2"+ + "\x2\x2\x91\x8F\x3\x2\x2\x2\x92\x12A\x5\f\a\x12\x93\x97\f\x10\x2\x2\x94"+ + "\x96\a\xEC\x2\x2\x95\x94\x3\x2\x2\x2\x96\x99\x3\x2\x2\x2\x97\x95\x3\x2"+ + "\x2\x2\x97\x98\x3\x2\x2\x2\x98\x9A\x3\x2\x2\x2\x99\x97\x3\x2\x2\x2\x9A"+ + "\x9E\a\xCF\x2\x2\x9B\x9D\a\xEC\x2\x2\x9C\x9B\x3\x2\x2\x2\x9D\xA0\x3\x2"+ + "\x2\x2\x9E\x9C\x3\x2\x2\x2\x9E\x9F\x3\x2\x2\x2\x9F\xA1\x3\x2\x2\x2\xA0"+ + "\x9E\x3\x2\x2\x2\xA1\x12A\x5\f\a\x11\xA2\xA6\f\xF\x2\x2\xA3\xA5\a\xEC"+ + "\x2\x2\xA4\xA3\x3\x2\x2\x2\xA5\xA8\x3\x2\x2\x2\xA6\xA4\x3\x2\x2\x2\xA6"+ + "\xA7\x3\x2\x2\x2\xA7\xA9\x3\x2\x2\x2\xA8\xA6\x3\x2\x2\x2\xA9\xAD\a\x8B"+ + "\x2\x2\xAA\xAC\a\xEC\x2\x2\xAB\xAA\x3\x2\x2\x2\xAC\xAF\x3\x2\x2\x2\xAD"+ + "\xAB\x3\x2\x2\x2\xAD\xAE\x3\x2\x2\x2\xAE\xB0\x3\x2\x2\x2\xAF\xAD\x3\x2"+ + "\x2\x2\xB0\x12A\x5\f\a\x10\xB1\xB5\f\xE\x2\x2\xB2\xB4\a\xEC\x2\x2\xB3"+ + "\xB2\x3\x2\x2\x2\xB4\xB7\x3\x2\x2\x2\xB5\xB3\x3\x2\x2\x2\xB5\xB6\x3\x2"+ + "\x2\x2\xB6\xB8\x3\x2\x2\x2\xB7\xB5\x3\x2\x2\x2\xB8\xBC\t\x4\x2\x2\xB9"+ + "\xBB\a\xEC\x2\x2\xBA\xB9\x3\x2\x2\x2\xBB\xBE\x3\x2\x2\x2\xBC\xBA\x3\x2"+ + "\x2\x2\xBC\xBD\x3\x2\x2\x2\xBD\xBF\x3\x2\x2\x2\xBE\xBC\x3\x2\x2\x2\xBF"+ + "\x12A\x5\f\a\xF\xC0\xC4\f\r\x2\x2\xC1\xC3\a\xEC\x2\x2\xC2\xC1\x3\x2\x2"+ + "\x2\xC3\xC6\x3\x2\x2\x2\xC4\xC2\x3\x2\x2\x2\xC4\xC5\x3\x2\x2\x2\xC5\xC7"+ + "\x3\x2\x2\x2\xC6\xC4\x3\x2\x2\x2\xC7\xCB\a\x32\x2\x2\xC8\xCA\a\xEC\x2"+ + "\x2\xC9\xC8\x3\x2\x2\x2\xCA\xCD\x3\x2\x2\x2\xCB\xC9\x3\x2\x2\x2\xCB\xCC"+ + "\x3\x2\x2\x2\xCC\xCE\x3\x2\x2\x2\xCD\xCB\x3\x2\x2\x2\xCE\x12A\x5\f\a\xE"+ + "\xCF\xD3\f\f\x2\x2\xD0\xD2\a\xEC\x2\x2\xD1\xD0\x3\x2\x2\x2\xD2\xD5\x3"+ + "\x2\x2\x2\xD3\xD1\x3\x2\x2\x2\xD3\xD4\x3\x2\x2\x2\xD4\xD6\x3\x2\x2\x2"+ + "\xD5\xD3\x3\x2\x2\x2\xD6\xDA\t\x5\x2\x2\xD7\xD9\a\xEC\x2\x2\xD8\xD7\x3"+ + "\x2\x2\x2\xD9\xDC\x3\x2\x2\x2\xDA\xD8\x3\x2\x2\x2\xDA\xDB\x3\x2\x2\x2"+ + "\xDB\xDD\x3\x2\x2\x2\xDC\xDA\x3\x2\x2\x2\xDD\x12A\x5\f\a\r\xDE\xE2\f\n"+ + "\x2\x2\xDF\xE1\a\xEC\x2\x2\xE0\xDF\x3\x2\x2\x2\xE1\xE4\x3\x2\x2\x2\xE2"+ + "\xE0\x3\x2\x2\x2\xE2\xE3\x3\x2\x2\x2\xE3\xE5\x3\x2\x2\x2\xE4\xE2\x3\x2"+ + "\x2\x2\xE5\xE9\a\x36\x2\x2\xE6\xE8\a\xEC\x2\x2\xE7\xE6\x3\x2\x2\x2\xE8"+ + "\xEB\x3\x2\x2\x2\xE9\xE7\x3\x2\x2\x2\xE9\xEA\x3\x2\x2\x2\xEA\xEC\x3\x2"+ + "\x2\x2\xEB\xE9\x3\x2\x2\x2\xEC\x12A\x5\f\a\v\xED\xF1\f\t\x2\x2\xEE\xF0"+ + "\a\xEC\x2\x2\xEF\xEE\x3\x2\x2\x2\xF0\xF3\x3\x2\x2\x2\xF1\xEF\x3\x2\x2"+ + "\x2\xF1\xF2\x3\x2\x2\x2\xF2\xF4\x3\x2\x2\x2\xF3\xF1\x3\x2\x2\x2\xF4\xF8"+ + "\a\x9A\x2\x2\xF5\xF7\a\xEC\x2\x2\xF6\xF5\x3\x2\x2\x2\xF7\xFA\x3\x2\x2"+ + "\x2\xF8\xF6\x3\x2\x2\x2\xF8\xF9\x3\x2\x2\x2\xF9\xFB\x3\x2\x2\x2\xFA\xF8"+ + "\x3\x2\x2\x2\xFB\x12A\x5\f\a\n\xFC\x100\f\b\x2\x2\xFD\xFF\a\xEC\x2\x2"+ + "\xFE\xFD\x3\x2\x2\x2\xFF\x102\x3\x2\x2\x2\x100\xFE\x3\x2\x2\x2\x100\x101"+ + "\x3\x2\x2\x2\x101\x103\x3\x2\x2\x2\x102\x100\x3\x2\x2\x2\x103\x107\a\xCC"+ + "\x2\x2\x104\x106\a\xEC\x2\x2\x105\x104\x3\x2\x2\x2\x106\x109\x3\x2\x2"+ + "\x2\x107\x105\x3\x2\x2\x2\x107\x108\x3\x2\x2\x2\x108\x10A\x3\x2\x2\x2"+ + "\x109\x107\x3\x2\x2\x2\x10A\x12A\x5\f\a\t\x10B\x10F\f\a\x2\x2\x10C\x10E"+ + "\a\xEC\x2\x2\x10D\x10C\x3\x2\x2\x2\x10E\x111\x3\x2\x2\x2\x10F\x10D\x3"+ + "\x2\x2\x2\x10F\x110\x3\x2\x2\x2\x110\x112\x3\x2\x2\x2\x111\x10F\x3\x2"+ + "\x2\x2\x112\x116\a\x66\x2\x2\x113\x115\a\xEC\x2\x2\x114\x113\x3\x2\x2"+ + "\x2\x115\x118\x3\x2\x2\x2\x116\x114\x3\x2\x2\x2\x116\x117\x3\x2\x2\x2"+ + "\x117\x119\x3\x2\x2\x2\x118\x116\x3\x2\x2\x2\x119\x12A\x5\f\a\b\x11A\x11E"+ + "\f\x6\x2\x2\x11B\x11D\a\xEC\x2\x2\x11C\x11B\x3\x2\x2\x2\x11D\x120\x3\x2"+ + "\x2\x2\x11E\x11C\x3\x2\x2\x2\x11E\x11F\x3\x2\x2\x2\x11F\x121\x3\x2\x2"+ + "\x2\x120\x11E\x3\x2\x2\x2\x121\x125\ax\x2\x2\x122\x124\a\xEC\x2\x2\x123"+ + "\x122\x3\x2\x2\x2\x124\x127\x3\x2\x2\x2\x125\x123\x3\x2\x2\x2\x125\x126"+ + "\x3\x2\x2\x2\x126\x128\x3\x2\x2\x2\x127\x125\x3\x2\x2\x2\x128\x12A\x5"+ + "\f\a\a\x129u\x3\x2\x2\x2\x129\x84\x3\x2\x2\x2\x129\x93\x3\x2\x2\x2\x129"+ + "\xA2\x3\x2\x2\x2\x129\xB1\x3\x2\x2\x2\x129\xC0\x3\x2\x2\x2\x129\xCF\x3"+ + "\x2\x2\x2\x129\xDE\x3\x2\x2\x2\x129\xED\x3\x2\x2\x2\x129\xFC\x3\x2\x2"+ + "\x2\x129\x10B\x3\x2\x2\x2\x129\x11A\x3\x2\x2\x2\x12A\x12D\x3\x2\x2\x2"+ + "\x12B\x129\x3\x2\x2\x2\x12B\x12C\x3\x2\x2\x2\x12C\r\x3\x2\x2\x2\x12D\x12B"+ + "\x3\x2\x2\x2\x12E\x12F\x5\x10\t\x2\x12F\x133\x5\x4\x3\x2\x130\x132\x5"+ + "\x12\n\x2\x131\x130\x3\x2\x2\x2\x132\x135\x3\x2\x2\x2\x133\x131\x3\x2"+ + "\x2\x2\x133\x134\x3\x2\x2\x2\x134\x137\x3\x2\x2\x2\x135\x133\x3\x2\x2"+ + "\x2\x136\x138\x5\x16\f\x2\x137\x136\x3\x2\x2\x2\x137\x138\x3\x2\x2\x2"+ + "\x138\x139\x3\x2\x2\x2\x139\x13A\x5\x1A\xE\x2\x13A\xF\x3\x2\x2\x2\x13B"+ + "\x13C\a\xDD\x2\x2\x13C\x13E\x5\f\a\x2\x13D\x13F\a\xEC\x2\x2\x13E\x13D"+ + "\x3\x2\x2\x2\x13F\x140\x3\x2\x2\x2\x140\x13E\x3\x2\x2\x2\x140\x141\x3"+ + "\x2\x2\x2\x141\x142\x3\x2\x2\x2\x142\x146\a\xBD\x2\x2\x143\x145\a\xEC"+ + "\x2\x2\x144\x143\x3\x2\x2\x2\x145\x148\x3\x2\x2\x2\x146\x144\x3\x2\x2"+ + "\x2\x146\x147\x3\x2\x2\x2\x147\x149\x3\x2\x2\x2\x148\x146\x3\x2\x2\x2"+ + "\x149\x14A\x5\x1C\xF\x2\x14A\x11\x3\x2\x2\x2\x14B\x14C\x5\x14\v\x2\x14C"+ + "\x14D\x5\x4\x3\x2\x14D\x13\x3\x2\x2\x2\x14E\x14F\a\xDE\x2\x2\x14F\x151"+ + "\x5\f\a\x2\x150\x152\a\xEC\x2\x2\x151\x150\x3\x2\x2\x2\x152\x153\x3\x2"+ + "\x2\x2\x153\x151\x3\x2\x2\x2\x153\x154\x3\x2\x2\x2\x154\x155\x3\x2\x2"+ + "\x2\x155\x159\a\xBD\x2\x2\x156\x158\a\xEC\x2\x2\x157\x156\x3\x2\x2\x2"+ + "\x158\x15B\x3\x2\x2\x2\x159\x157\x3\x2\x2\x2\x159\x15A\x3\x2\x2\x2\x15A"+ + "\x15C\x3\x2\x2\x2\x15B\x159\x3\x2\x2\x2\x15C\x15D\x5\x1C\xF\x2\x15D\x15"+ + "\x3\x2\x2\x2\x15E\x15F\x5\x18\r\x2\x15F\x160\x5\x4\x3\x2\x160\x17\x3\x2"+ + "\x2\x2\x161\x162\a\xDF\x2\x2\x162\x19\x3\x2\x2\x2\x163\x164\a\xE0\x2\x2"+ + "\x164\x1B\x3\x2\x2\x2\x165\x167\x5(\x15\x2\x166\x165\x3\x2\x2\x2\x166"+ + "\x167\x3\x2\x2\x2\x167\x168\x3\x2\x2\x2\x168\x169\t\x6\x2\x2\x169\x1D"+ + "\x3\x2\x2\x2\x16A\x16B\x5 \x11\x2\x16B\x16F\a\xD4\x2\x2\x16C\x16E\a\xEC"+ + "\x2\x2\x16D\x16C\x3\x2\x2\x2\x16E\x171\x3\x2\x2\x2\x16F\x16D\x3\x2\x2"+ + "\x2\x16F\x170\x3\x2\x2\x2\x170\x172\x3\x2\x2\x2\x171\x16F\x3\x2\x2\x2"+ + "\x172\x176\x5\f\a\x2\x173\x175\a\xEC\x2\x2\x174\x173\x3\x2\x2\x2\x175"+ + "\x178\x3\x2\x2\x2\x176\x174\x3\x2\x2\x2\x176\x177\x3\x2\x2\x2\x177\x179"+ + "\x3\x2\x2\x2\x178\x176\x3\x2\x2\x2\x179\x17A\a\xDB\x2\x2\x17A\x1F\x3\x2"+ + "\x2\x2\x17B\x17C\t\a\x2\x2\x17C!\x3\x2\x2\x2\x17D\x17F\a\xEE\x2\x2\x17E"+ + "\x180\x5$\x13\x2\x17F\x17E\x3\x2\x2\x2\x17F\x180\x3\x2\x2\x2\x180#\x3"+ + "\x2\x2\x2\x181\x182\t\b\x2\x2\x182%\x3\x2\x2\x2\x183\x184\t\t\x2\x2\x184"+ + "\'\x3\x2\x2\x2\x185\x18A\a\xEA\x2\x2\x186\x189\a\xEF\x2\x2\x187\x189\n"+ + "\n\x2\x2\x188\x186\x3\x2\x2\x2\x188\x187\x3\x2\x2\x2\x189\x18C\x3\x2\x2"+ + "\x2\x18A\x188\x3\x2\x2\x2\x18A\x18B\x3\x2\x2\x2\x18B)\x3\x2\x2\x2\x18C"+ + "\x18A\x3\x2\x2\x2\x33\x30\x32:@HKT\\\x64ksy\x80\x88\x8F\x97\x9E\xA6\xAD"+ + "\xB5\xBC\xC4\xCB\xD3\xDA\xE2\xE9\xF1\xF8\x100\x107\x10F\x116\x11E\x125"+ + "\x129\x12B\x133\x137\x140\x146\x153\x159\x166\x16F\x176\x17F\x188\x18A"; public static readonly ATN _ATN = new ATNDeserializer().Deserialize(_serializedATN.ToCharArray()); } diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.g4 b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.g4 index c820fe6e36..b9d9726844 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.g4 +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.g4 @@ -6,11 +6,12 @@ compilationUnit : ccBlock EOF; ccBlock : (ccConst | ccIfBlock | logicalLine)*; -ccConst : WS* HASHCONST WS+ ccVarLhs WS+ EQ WS+ ccExpression ccEol; +ccConst : HASHCONST ccVarLhs WS+ EQ WS+ ccExpression ccEol; -logicalLine : extendedLine+; - -extendedLine : (LINE_CONTINUATION | ~(HASHCONST | HASHIF | HASHELSEIF | HASHELSE | HASHENDIF))+ NEWLINE?; +logicalLine : + ~(HASHCONST | HASHIF | HASHELSEIF | HASHELSE | HASHENDIF)+ + | NEWLINE +; ccVarLhs : name; @@ -36,19 +37,19 @@ ccExpression : ccIfBlock : ccIf ccBlock ccElseIfBlock* ccElseBlock? ccEndIf; -ccIf : HASHIF WS+ ccExpression WS+ THEN ccEol; +ccIf : HASHIF ccExpression WS+ THEN WS* ccEol; ccElseIfBlock : ccElseIf ccBlock; -ccElseIf : HASHELSEIF WS+ ccExpression WS+ THEN ccEol; +ccElseIf : HASHELSEIF ccExpression WS+ THEN WS* ccEol; ccElseBlock : ccElse ccBlock; -ccElse : HASHELSE ccEol; +ccElse : HASHELSE; -ccEndIf : HASHENDIF ccEol; +ccEndIf : HASHENDIF; -ccEol : (SINGLEQUOTE ~NEWLINE*)? NEWLINE?; +ccEol : comment? (NEWLINE | EOF); intrinsicFunction : intrinsicFunctionName LPAREN WS* ccExpression WS* RPAREN; @@ -77,4 +78,6 @@ name : IDENTIFIER typeHint?; typeHint : PERCENT | AMPERSAND | POW | EXCLAMATIONPOINT | HASH | AT | DOLLAR; -literal : DATELITERAL | HEXLITERAL | OCTLITERAL | FLOATLITERAL | INTEGERLITERAL | STRINGLITERAL | TRUE | FALSE | NOTHING | NULL | EMPTY; \ No newline at end of file +literal : DATELITERAL | HEXLITERAL | OCTLITERAL | FLOATLITERAL | INTEGERLITERAL | STRINGLITERAL | TRUE | FALSE | NOTHING | NULL | EMPTY; + +comment: SINGLEQUOTE (LINE_CONTINUATION | ~NEWLINE)*; \ No newline at end of file diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs index 04a3484b51..c86a4c9e46 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs @@ -150,19 +150,6 @@ public virtual void EnterTypeHint([NotNull] VBAConditionalCompilationParser.Type /// The parse tree. public virtual void ExitTypeHint([NotNull] VBAConditionalCompilationParser.TypeHintContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterExtendedLine([NotNull] VBAConditionalCompilationParser.ExtendedLineContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitExtendedLine([NotNull] VBAConditionalCompilationParser.ExtendedLineContext context) { } - /// /// Enter a parse tree produced by . /// The default implementation does nothing. @@ -280,6 +267,19 @@ public virtual void EnterCcElse([NotNull] VBAConditionalCompilationParser.CcElse /// The parse tree. public virtual void ExitCcElse([NotNull] VBAConditionalCompilationParser.CcElseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterComment([NotNull] VBAConditionalCompilationParser.CommentContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitComment([NotNull] VBAConditionalCompilationParser.CommentContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs index 503239ccff..d4ba7baf28 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs @@ -131,17 +131,6 @@ public partial class VBAConditionalCompilationParserBaseVisitor : Abstra /// The visitor result. public virtual Result VisitTypeHint([NotNull] VBAConditionalCompilationParser.TypeHintContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitExtendedLine([NotNull] VBAConditionalCompilationParser.ExtendedLineContext context) { return VisitChildren(context); } - /// /// Visit a parse tree produced by . /// @@ -241,6 +230,17 @@ public partial class VBAConditionalCompilationParserBaseVisitor : Abstra /// The visitor result. public virtual Result VisitCcElse([NotNull] VBAConditionalCompilationParser.CcElseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitComment([NotNull] VBAConditionalCompilationParser.CommentContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs index 20f1643f14..30460edb24 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs @@ -128,17 +128,6 @@ public interface IVBAConditionalCompilationParserListener : IParseTreeListener { /// The parse tree. void ExitTypeHint([NotNull] VBAConditionalCompilationParser.TypeHintContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterExtendedLine([NotNull] VBAConditionalCompilationParser.ExtendedLineContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitExtendedLine([NotNull] VBAConditionalCompilationParser.ExtendedLineContext context); - /// /// Enter a parse tree produced by . /// @@ -238,6 +227,17 @@ public interface IVBAConditionalCompilationParserListener : IParseTreeListener { /// The parse tree. void ExitCcElse([NotNull] VBAConditionalCompilationParser.CcElseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterComment([NotNull] VBAConditionalCompilationParser.CommentContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitComment([NotNull] VBAConditionalCompilationParser.CommentContext context); + /// /// Enter a parse tree produced by . /// diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs index e5113de5e0..caaaaa8e82 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs @@ -93,13 +93,6 @@ public interface IVBAConditionalCompilationParserVisitor : IParseTreeVis /// The visitor result. Result VisitTypeHint([NotNull] VBAConditionalCompilationParser.TypeHintContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitExtendedLine([NotNull] VBAConditionalCompilationParser.ExtendedLineContext context); - /// /// Visit a parse tree produced by . /// @@ -163,6 +156,13 @@ public interface IVBAConditionalCompilationParserVisitor : IParseTreeVis /// The visitor result. Result VisitCcElse([NotNull] VBAConditionalCompilationParser.CcElseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitComment([NotNull] VBAConditionalCompilationParser.CommentContext context); + /// /// Visit a parse tree produced by . /// diff --git a/Rubberduck.Parsing/Reflection/Member.cs b/Rubberduck.Parsing/Reflection/Member.cs index bf78302db1..3593430595 100644 --- a/Rubberduck.Parsing/Reflection/Member.cs +++ b/Rubberduck.Parsing/Reflection/Member.cs @@ -95,8 +95,7 @@ public static bool TryParse(string[] body, QualifiedModuleName qualifiedModuleNa body = body.Select(line => line.Trim().Replace("\r", string.Empty)).ToArray(); var withoutKeyword = signature.Substring((Keywords.First(keyword => signature.StartsWith(keyword))).Length); - var name = withoutKeyword.Split(' ')[1] - .Split('(')[0]; + var name = withoutKeyword.Split('(')[0].Trim(); var type = GetMemberType(signature, withoutKeyword); var visibility = GetMemberVisibility(signature); diff --git a/Rubberduck.Parsing/Rubberduck.Parsing.csproj b/Rubberduck.Parsing/Rubberduck.Parsing.csproj index 1eb77702f7..92df6997a1 100644 --- a/Rubberduck.Parsing/Rubberduck.Parsing.csproj +++ b/Rubberduck.Parsing/Rubberduck.Parsing.csproj @@ -50,6 +50,9 @@ False ..\libs\Microsoft.Vbe.Interop.dll + + True + ..\packages\NLog.4.0.1\lib\net45\NLog.dll True @@ -74,16 +77,37 @@ + + + + + + + + + + + + + + + + + + + + + @@ -201,13 +225,23 @@ - + + + + + + + + + + + diff --git a/Rubberduck.Parsing/Symbols/AccessibilityCheck.cs b/Rubberduck.Parsing/Symbols/AccessibilityCheck.cs index 585cda0694..539129183a 100644 --- a/Rubberduck.Parsing/Symbols/AccessibilityCheck.cs +++ b/Rubberduck.Parsing/Symbols/AccessibilityCheck.cs @@ -63,7 +63,13 @@ public static bool IsMemberAccessible(Declaration callingProject, Declaration ca { return calleeHasSameParent; } - var memberModule = Declaration.GetMemberModule(calleeMember); + var memberModule = Declaration.GetModuleParent(calleeMember); + // TODO: Fix this? + // Assume null = built in declaration which is always accessible. + if (memberModule == null) + { + return true; + } if (IsModuleAccessible(callingProject, callingModule, memberModule) && calleeMember.ParentScopeDeclaration.DeclarationType.HasFlag(DeclarationType.Module)) { if (calleeMember.DeclarationType.HasFlag(DeclarationType.EnumerationMember) || calleeMember.DeclarationType.HasFlag(DeclarationType.UserDefinedTypeMember)) diff --git a/Rubberduck.Parsing/Symbols/BindingMigrationHelper.cs b/Rubberduck.Parsing/Symbols/BindingMigrationHelper.cs deleted file mode 100644 index 26144a5c06..0000000000 --- a/Rubberduck.Parsing/Symbols/BindingMigrationHelper.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Antlr4.Runtime; - -namespace Rubberduck.Parsing.Symbols -{ - public static class BindingMigrationHelper - { - public static bool HasParent(RuleContext context) - { - if (context == null) - { - return false; - } - if (context.Parent is T) - { - return true; - } - return HasParent(context.Parent); - } - } -} diff --git a/Rubberduck.Parsing/Symbols/BoundExpressionVisitor.cs b/Rubberduck.Parsing/Symbols/BoundExpressionVisitor.cs index 295d931216..3e6f6458ce 100644 --- a/Rubberduck.Parsing/Symbols/BoundExpressionVisitor.cs +++ b/Rubberduck.Parsing/Symbols/BoundExpressionVisitor.cs @@ -1,31 +1,95 @@ -using Rubberduck.Parsing.Binding; +using Antlr4.Runtime; +using Rubberduck.Parsing.Binding; using System; namespace Rubberduck.Parsing.Symbols { public sealed class BoundExpressionVisitor { - public void AddIdentifierReferences(IBoundExpression boundExpression, Func referenceCreator) + public void AddIdentifierReferences(IBoundExpression boundExpression, Func referenceCreator) { Visit((dynamic)boundExpression, referenceCreator); } - private void Visit(SimpleNameExpression expression, Func referenceCreator) + private void Visit(SimpleNameExpression expression, Func referenceCreator) { - expression.ReferencedDeclaration.AddReference(referenceCreator(expression.ReferencedDeclaration)); + expression.ReferencedDeclaration.AddReference(referenceCreator(expression.Context, expression.Context.GetText(), expression.ReferencedDeclaration)); } - private void Visit(MemberAccessExpression expression, Func referenceCreator) + private void Visit(MemberAccessExpression expression, Func referenceCreator) { Visit((dynamic)expression.LExpression, referenceCreator); - expression.ReferencedDeclaration.AddReference(referenceCreator(expression.ReferencedDeclaration)); + // Expressions could be unbound thus not have a referenced declaration. The lexpression might still be bindable though. + if (expression.Classification != ExpressionClassification.Unbound) + { + expression.ReferencedDeclaration.AddReference(referenceCreator(expression.UnrestrictedNameContext, expression.UnrestrictedNameContext.GetText(), expression.ReferencedDeclaration)); + } } - private void Visit(NewExpression expression, Func referenceCreator) + private void Visit(IndexExpression expression, Func referenceCreator) + { + Visit((dynamic)expression.LExpression, referenceCreator); + if (expression.Classification != ExpressionClassification.Unbound + && expression.ReferencedDeclaration != null + && expression.LExpression.ReferencedDeclaration != expression.ReferencedDeclaration) + { + // Referenced declaration could also be null if e.g. it's an array and the array is a "base type" such as String. + if (expression.ReferencedDeclaration != null) + { + expression.ReferencedDeclaration.AddReference(referenceCreator(expression.Context, expression.LExpression.Context.GetText(), expression.ReferencedDeclaration)); + } + } + // Argument List not affected by being unbound. + foreach (var argument in expression.ArgumentList.Arguments) + { + if (argument.Expression != null) + { + Visit((dynamic)argument.Expression, referenceCreator); + } + if (argument.NamedArgumentExpression != null) + { + Visit((dynamic)argument.NamedArgumentExpression, referenceCreator); + } + } + } + + private void Visit(NewExpression expression, Func referenceCreator) { // We don't need to add a reference to the NewExpression's referenced declaration since that's covered // with its TypeExpression. Visit((dynamic)expression.TypeExpression, referenceCreator); } + + private void Visit(ParenthesizedExpression expression, Func referenceCreator) + { + Visit((dynamic)expression.Expression, referenceCreator); + } + + private void Visit(TypeOfIsExpression expression, Func referenceCreator) + { + Visit((dynamic)expression.Expression, referenceCreator); + Visit((dynamic)expression.TypeExpression, referenceCreator); + } + + private void Visit(BinaryOpExpression expression, Func referenceCreator) + { + Visit((dynamic)expression.Left, referenceCreator); + Visit((dynamic)expression.Right, referenceCreator); + } + + private void Visit(UnaryOpExpression expression, Func referenceCreator) + { + Visit((dynamic)expression.Expr, referenceCreator); + } + + private void Visit(LiteralExpression expression, Func referenceCreator) + { + // Nothing to do here. + } + + private void Visit(InstanceExpression expression, Func referenceCreator) + { + expression.ReferencedDeclaration.AddReference(referenceCreator(expression.Context, "Me", expression.ReferencedDeclaration)); + } } } diff --git a/Rubberduck.Parsing/Symbols/ClassModuleDeclaration.cs b/Rubberduck.Parsing/Symbols/ClassModuleDeclaration.cs index e76bce4427..af13ebff74 100644 --- a/Rubberduck.Parsing/Symbols/ClassModuleDeclaration.cs +++ b/Rubberduck.Parsing/Symbols/ClassModuleDeclaration.cs @@ -9,6 +9,10 @@ namespace Rubberduck.Parsing.Symbols public sealed class ClassModuleDeclaration : Declaration { private readonly bool _isExposed; + private readonly bool _isGlobalClassModule; + private readonly List _supertypeNames; + private readonly List _supertypes; + private readonly List _subtypes; public ClassModuleDeclaration( QualifiedMemberName qualifiedName, @@ -17,7 +21,8 @@ public ClassModuleDeclaration( bool isBuiltIn, IEnumerable annotations, Attributes attributes, - bool isExposed = false) + bool isExposed = false, + bool isGlobalClassModule = false) : base( qualifiedName, projectDeclaration, @@ -34,6 +39,10 @@ public ClassModuleDeclaration( attributes) { _isExposed = isExposed; + _isGlobalClassModule = isGlobalClassModule; + _supertypeNames = new List(); + _supertypes = new List(); + _subtypes = new List(); } /// @@ -53,5 +62,85 @@ public bool IsExposed return _isExposed || attributeIsExposed; } } + + public bool IsGlobalClassModule + { + get + { + bool attributeIsGlobalClassModule = false; + IEnumerable value; + if (Attributes.TryGetValue("VB_GlobalNamespace", out value)) + { + attributeIsGlobalClassModule = value.Single() == "True"; + } + return _isGlobalClassModule || attributeIsGlobalClassModule; + } + } + + /// + /// Gets an attribute value indicating whether a class has a predeclared ID. + /// Such classes can be treated as "static classes", or as far as resolving is concerned, as standard modules. + /// + public bool HasPredeclaredId + { + get + { + IEnumerable value; + if (Attributes.TryGetValue("VB_PredeclaredId", out value)) + { + return value.Single() == "True"; + } + return false; + } + } + + public bool HasDefaultInstanceVariable + { + get + { + return HasPredeclaredId || IsGlobalClassModule; + } + } + + public Declaration DefaultMember { get; internal set; } + + public List SupertypeNames + { + get + { + return _supertypeNames; + } + } + + public List Supertypes + { + get + { + return _supertypes; + } + } + + public List Subtypes + { + get + { + return _subtypes; + } + } + + public void AddSupertype(string supertypeName) + { + _supertypeNames.Add(supertypeName); + } + + public void AddSupertype(Declaration supertype) + { + _supertypes.Add(supertype); + } + + public void AddSubtype(Declaration subtype) + { + _subtypes.Add(subtype); + } } } diff --git a/Rubberduck.Parsing/Symbols/Declaration.cs b/Rubberduck.Parsing/Symbols/Declaration.cs index e4a153f1a0..023a7d4519 100644 --- a/Rubberduck.Parsing/Symbols/Declaration.cs +++ b/Rubberduck.Parsing/Symbols/Declaration.cs @@ -19,6 +19,23 @@ namespace Rubberduck.Parsing.Symbols [DebuggerDisplay("({DeclarationType}) {Accessibility} {IdentifierName} As {AsTypeName} | {Selection}")] public class Declaration : IEquatable { + public static readonly string[] BASE_TYPES = new string[] + { + "BOOLEAN", + "BYTE", + "CURRENCY", + "DATE", + "DOUBLE", + "INTEGER", + "LONG", + "LONGLONG", + "LONGPTR", + "SINGLE", + "STRING", + "VARIANT", + "OBJECT" + }; + public Declaration( QualifiedMemberName qualifiedName, Declaration parentDeclaration, @@ -42,33 +59,33 @@ public Declaration( } public Declaration( - QualifiedMemberName qualifiedName, - Declaration parentDeclaration, + QualifiedMemberName qualifiedName, + Declaration parentDeclaration, string parentScope, - string asTypeName, - bool isSelfAssigned, + string asTypeName, + bool isSelfAssigned, bool isWithEvents, - Accessibility accessibility, - DeclarationType declarationType, + Accessibility accessibility, + DeclarationType declarationType, bool isBuiltIn = true, - IEnumerable annotations = null, + IEnumerable annotations = null, Attributes attributes = null) - :this(qualifiedName, parentDeclaration, parentScope, asTypeName, isSelfAssigned, isWithEvents, accessibility, declarationType, null, Selection.Home, isBuiltIn, annotations, attributes) - {} + : this(qualifiedName, parentDeclaration, parentScope, asTypeName, isSelfAssigned, isWithEvents, accessibility, declarationType, null, Selection.Home, isBuiltIn, annotations, attributes) + { } public Declaration( - QualifiedMemberName qualifiedName, - Declaration parentDeclaration, + QualifiedMemberName qualifiedName, + Declaration parentDeclaration, string parentScope, - string asTypeName, - bool isSelfAssigned, + string asTypeName, + bool isSelfAssigned, bool isWithEvents, - Accessibility accessibility, - DeclarationType declarationType, - ParserRuleContext context, - Selection selection, + Accessibility accessibility, + DeclarationType declarationType, + ParserRuleContext context, + Selection selection, bool isBuiltIn = false, - IEnumerable annotations = null, + IEnumerable annotations = null, Attributes attributes = null) { _qualifiedName = qualifiedName; @@ -105,30 +122,40 @@ public Declaration( _customFolder = result; } - public static Declaration GetMemberModule(Declaration member) + public static bool HasParameter(DeclarationType declarationType) { - if (member.ParentDeclaration == null) + return + declarationType.HasFlag(DeclarationType.Property) + || declarationType == DeclarationType.Function + || declarationType == DeclarationType.Procedure + || declarationType == DeclarationType.LibraryFunction + || declarationType == DeclarationType.LibraryProcedure; + } + + public static Declaration GetModuleParent(Declaration declaration) + { + if (declaration == null) { return null; } - if (member.ParentDeclaration.DeclarationType == DeclarationType.ClassModule || member.ParentDeclaration.DeclarationType == DeclarationType.ProceduralModule) + if (declaration.DeclarationType == DeclarationType.ClassModule || declaration.DeclarationType == DeclarationType.ProceduralModule) { - return member.ParentDeclaration; + return declaration; } - return GetMemberModule(member.ParentDeclaration); + return GetModuleParent(declaration.ParentDeclaration); } - public static Declaration GetMemberProject(Declaration declaration) + public static Declaration GetProjectParent(Declaration declaration) { - if (declaration.ParentDeclaration == null) + if (declaration == null) { return null; } - if (declaration.ParentDeclaration.DeclarationType == DeclarationType.Project) + if (declaration.DeclarationType == DeclarationType.Project) { - return declaration.ParentDeclaration; + return declaration; } - return GetMemberProject(declaration.ParentDeclaration); + return GetProjectParent(declaration.ParentDeclaration); } private readonly bool _isBuiltIn; @@ -188,43 +215,6 @@ public IEnumerable MemberCalls private readonly Attributes _attributes; public IReadOnlyDictionary> Attributes { get { return _attributes; } } - /// - /// Gets an attribute value indicating whether a class has a predeclared ID. - /// Such classes can be treated as "static classes", or as far as resolving is concerned, as standard modules. - /// - public bool HasPredeclaredId - { - get - { - IEnumerable value; - if (_attributes.TryGetValue("VB_PredeclaredId", out value)) - { - return value.Single() == "True"; - } - - return false; - } - } - - /// - /// Gets an attribute value indicating whether a member is a class' default member. - /// If this value is true, any reference to an instance of the class it's the default member of, - /// should count as a member call to this member. - /// - public bool IsDefaultMember - { - get - { - IEnumerable value; - if (_attributes.TryGetValue("VB_UserMemId", out value)) - { - return value.Single() == "0"; - } - - return false; - } - } - /// /// Gets an attribute value that contains the docstring for a member. /// @@ -273,10 +263,9 @@ public void AddReference(IdentifierReference reference) { return; } - - if (reference.Context.Parent != _context + if (reference.Context.Parent != _context && !_references.Select(r => r.Context).Contains(reference.Context.Parent) - && !_references.Any(r => r.QualifiedModuleName == reference.QualifiedModuleName + && !_references.Any(r => r.QualifiedModuleName == reference.QualifiedModuleName && r.Selection.StartLine == reference.Selection.StartLine && r.Selection.EndLine == reference.Selection.EndLine && r.Selection.StartColumn == reference.Selection.StartColumn @@ -321,6 +310,19 @@ public void AddMemberCall(IdentifierReference reference) /// public string ProjectId { get { return _projectId; } } + public string ProjectName + { + get + { + if (Project != null) + { + return Project.Name; + } + // Referenced projects have their identifier name set as their project name. + return IdentifierName; + } + } + /// /// Gets the name of the VBComponent the declaration is made in. /// @@ -353,29 +355,39 @@ public void AddMemberCall(IdentifierReference reference) /// and Variant if applicable but unspecified. /// public string AsTypeName { get { return _asTypeName; } } + + public bool AsTypeIsBaseType + { + get + { + return string.IsNullOrWhiteSpace(AsTypeName) || BASE_TYPES.Contains(_asTypeName.ToUpperInvariant()); + } + } + + public Declaration AsTypeDeclaration { get; internal set; } private bool? _isArray; private readonly IReadOnlyList _neverArray = new[] { - DeclarationType.ClassModule, - DeclarationType.Control, - DeclarationType.Document, - DeclarationType.Enumeration, - DeclarationType.EnumerationMember, - DeclarationType.Event, - DeclarationType.Function, - DeclarationType.LibraryFunction, - DeclarationType.LibraryProcedure, - DeclarationType.LineLabel, - DeclarationType.ProceduralModule, - DeclarationType.ModuleOption, - DeclarationType.Project, - DeclarationType.Procedure, - DeclarationType.PropertyGet, - DeclarationType.PropertyLet, - DeclarationType.PropertyLet, - DeclarationType.UserDefinedType, + DeclarationType.ClassModule, + DeclarationType.Control, + DeclarationType.Document, + DeclarationType.Enumeration, + DeclarationType.EnumerationMember, + DeclarationType.Event, + DeclarationType.Function, + DeclarationType.LibraryFunction, + DeclarationType.LibraryProcedure, + DeclarationType.LineLabel, + DeclarationType.ProceduralModule, + DeclarationType.ModuleOption, + DeclarationType.Project, + DeclarationType.Procedure, + DeclarationType.PropertyGet, + DeclarationType.PropertyLet, + DeclarationType.PropertyLet, + DeclarationType.UserDefinedType, DeclarationType.Constant, }; @@ -407,20 +419,25 @@ public virtual bool IsArray() private readonly IReadOnlyList _neverSpecified = new[] { - DeclarationType.Procedure, - DeclarationType.PropertyLet, - DeclarationType.PropertySet, - DeclarationType.UserDefinedType, - DeclarationType.ClassModule, - DeclarationType.Control, - DeclarationType.Enumeration, - DeclarationType.EnumerationMember, - DeclarationType.LibraryProcedure, - DeclarationType.LineLabel, - DeclarationType.ModuleOption, - DeclarationType.Project, + DeclarationType.Procedure, + DeclarationType.PropertyLet, + DeclarationType.PropertySet, + DeclarationType.UserDefinedType, + DeclarationType.ClassModule, + DeclarationType.Control, + DeclarationType.Enumeration, + DeclarationType.EnumerationMember, + DeclarationType.LibraryProcedure, + DeclarationType.LineLabel, + DeclarationType.ModuleOption, + DeclarationType.Project, }; + public VBAParser.AsTypeClauseContext GetAsTypeContext() + { + return (VBAParser.AsTypeClauseContext)((dynamic)Context).asTypeClause(); + } + public virtual bool IsTypeSpecified() { if (Context == null || _neverSpecified.Any(item => DeclarationType.HasFlag(item))) @@ -465,19 +482,19 @@ public bool HasTypeHint() private readonly IReadOnlyList _neverHinted = new[] { - DeclarationType.ClassModule, - DeclarationType.LineLabel, - DeclarationType.ModuleOption, - DeclarationType.Project, - DeclarationType.Control, - DeclarationType.Enumeration, - DeclarationType.EnumerationMember, - DeclarationType.LibraryProcedure, - DeclarationType.Procedure, - DeclarationType.PropertyLet, - DeclarationType.PropertySet, + DeclarationType.ClassModule, + DeclarationType.LineLabel, + DeclarationType.ModuleOption, + DeclarationType.Project, + DeclarationType.Control, + DeclarationType.Enumeration, + DeclarationType.EnumerationMember, + DeclarationType.LibraryProcedure, + DeclarationType.Procedure, + DeclarationType.PropertyLet, + DeclarationType.PropertySet, DeclarationType.UserDefinedType, - DeclarationType.UserDefinedTypeMember, + DeclarationType.UserDefinedTypeMember, }; public bool HasTypeHint(out string token) @@ -491,7 +508,7 @@ public bool HasTypeHint(out string token) try { - var hint = ((dynamic) Context).typeHint(); + var hint = ((dynamic)Context).typeHint(); token = hint == null ? null : hint.GetText(); _hasTypeHint = hint != null; return _hasTypeHint.Value; @@ -596,12 +613,12 @@ public override int GetHashCode() unchecked { var hash = 17; - hash = hash*23 + QualifiedName.QualifiedModuleName.GetHashCode(); - hash = hash*23 + _identifierName.GetHashCode(); - hash = hash*23 + _declarationType.GetHashCode(); - hash = hash*23 + Scope.GetHashCode(); - hash = hash*23 + _parentScope.GetHashCode(); - hash = hash*23 + _selection.GetHashCode(); + hash = hash * 23 + QualifiedName.QualifiedModuleName.GetHashCode(); + hash = hash * 23 + _identifierName.GetHashCode(); + hash = hash * 23 + _declarationType.GetHashCode(); + hash = hash * 23 + Scope.GetHashCode(); + hash = hash * 23 + _parentScope.GetHashCode(); + hash = hash * 23 + _selection.GetHashCode(); return hash; } } diff --git a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs index 58a1216001..db89b4e272 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs @@ -13,6 +13,7 @@ public class DeclarationFinder { private readonly IDictionary _comments; private readonly IDictionary _annotations; + private readonly IReadOnlyList _declarations; private readonly IDictionary _declarationsByName; public DeclarationFinder( @@ -24,12 +25,10 @@ public DeclarationFinder( .ToDictionary(grouping => grouping.Key, grouping => grouping.ToArray()); _annotations = annotations.GroupBy(node => node.QualifiedSelection.QualifiedName) .ToDictionary(grouping => grouping.Key, grouping => grouping.ToArray()); + _declarations = declarations; _declarationsByName = declarations.GroupBy(declaration => new { - IdentifierName = /*declaration.Project != null && - declaration.DeclarationType.HasFlag(DeclarationType.Project) - ? declaration.Project.Name.ToLowerInvariant() - : */declaration.IdentifierName.ToLowerInvariant() + IdentifierName = declaration.IdentifierName.ToLowerInvariant() }) .ToDictionary(grouping => grouping.Key.IdentifierName, grouping => grouping.ToArray()); } @@ -43,6 +42,21 @@ public DeclarationFinder( Accessibility.Implicit, }); + public IEnumerable FindDeclarationsWithNonBaseAsType() + { + return _declarations + .Where(d => + !string.IsNullOrWhiteSpace(d.AsTypeName) + && !d.AsTypeIsBaseType + && d.DeclarationType != DeclarationType.Project + && d.DeclarationType != DeclarationType.ProceduralModule).ToList(); + } + + public IEnumerable FindClasses() + { + return _declarations.Where(d => d.DeclarationType == DeclarationType.ClassModule).ToList(); + } + public IEnumerable ModuleComments(QualifiedModuleName module) { CommentNode[] result; @@ -54,6 +68,12 @@ public IEnumerable ModuleComments(QualifiedModuleName module) return new List(); } + public Declaration FindParameter(Declaration procedure, string parameterName) + { + var matches = MatchName(parameterName); + return matches.Where(m => procedure.Equals(m.ParentDeclaration) && m.DeclarationType == DeclarationType.Parameter).FirstOrDefault(); + } + public IEnumerable ModuleAnnotations(QualifiedModuleName module) { IAnnotation[] result; @@ -78,6 +98,18 @@ public bool IsMatch(string declarationName, string potentialMatchName) return string.Equals(declarationName, potentialMatchName, StringComparison.OrdinalIgnoreCase); } + public Declaration FindEvent(Declaration module, string eventName) + { + var matches = MatchName(eventName); + return matches.Where(m => module.Equals(Declaration.GetModuleParent(m)) && m.DeclarationType == DeclarationType.Event).FirstOrDefault(); + } + + public Declaration FindLabel(Declaration procedure, string label) + { + var matches = MatchName(label); + return matches.Where(m => procedure.Equals(m.ParentDeclaration) && m.DeclarationType == DeclarationType.LineLabel).FirstOrDefault(); + } + public IEnumerable MatchName(string name) { var normalizedName = name.ToLowerInvariant(); @@ -86,19 +118,6 @@ public IEnumerable MatchName(string name) { return result; } - if (_declarationsByName.TryGetValue("_" + normalizedName, out result)) - { - return result; - } - if (_declarationsByName.TryGetValue("i" + normalizedName, out result)) - { - return result; - } - if (_declarationsByName.TryGetValue("_i" + normalizedName, out result)) - { - return result; - } - return new List(); } @@ -197,15 +216,26 @@ public Declaration FindReferencedProject(Declaration callingProject, string refe public Declaration FindModuleEnclosingProjectWithoutEnclosingModule(Declaration callingProject, Declaration callingModule, string calleeModuleName, DeclarationType moduleType) { var nameMatches = MatchName(calleeModuleName); - var moduleMatches = nameMatches.Where(m => + var moduleMatches = nameMatches.Where(m => m.DeclarationType.HasFlag(moduleType) - && Declaration.GetMemberProject(m).Equals(callingProject) + && Declaration.GetProjectParent(m).Equals(callingProject) && !m.Equals(callingModule)); var accessibleModules = moduleMatches.Where(calledModule => AccessibilityCheck.IsModuleAccessible(callingProject, callingModule, calledModule)); var match = accessibleModules.FirstOrDefault(); return match; } + public Declaration FindDefaultInstanceVariableClassEnclosingProject(Declaration callingProject, Declaration callingModule, string defaultInstanceVariableClassName) + { + var nameMatches = MatchName(defaultInstanceVariableClassName); + var moduleMatches = nameMatches.Where(m => + m.DeclarationType == DeclarationType.ClassModule && ((ClassModuleDeclaration)m).HasDefaultInstanceVariable + && Declaration.GetProjectParent(m).Equals(callingProject)); + var accessibleModules = moduleMatches.Where(calledModule => AccessibilityCheck.IsModuleAccessible(callingProject, callingModule, calledModule)); + var match = accessibleModules.FirstOrDefault(); + return match; + } + public Declaration FindModuleReferencedProject(Declaration callingProject, Declaration callingModule, string calleeModuleName, DeclarationType moduleType) { var moduleMatches = FindAllInReferencedProjectByPriority(callingProject, calleeModuleName, p => p.DeclarationType.HasFlag(moduleType)); @@ -216,49 +246,88 @@ public Declaration FindModuleReferencedProject(Declaration callingProject, Decla public Declaration FindModuleReferencedProject(Declaration callingProject, Declaration callingModule, Declaration referencedProject, string calleeModuleName, DeclarationType moduleType) { - var moduleMatches = FindAllInReferencedProjectByPriority(callingProject, calleeModuleName, p => referencedProject.Equals(Declaration.GetMemberProject(p)) && p.DeclarationType.HasFlag(moduleType)); + var moduleMatches = FindAllInReferencedProjectByPriority(callingProject, calleeModuleName, p => referencedProject.Equals(Declaration.GetProjectParent(p)) && p.DeclarationType.HasFlag(moduleType)); var accessibleModules = moduleMatches.Where(calledModule => AccessibilityCheck.IsModuleAccessible(callingProject, callingModule, calledModule)); var match = accessibleModules.FirstOrDefault(); return match; } + public Declaration FindMemberWithParent(Declaration callingProject, Declaration callingModule, Declaration callingParent, Declaration parent, string memberName, DeclarationType memberType) + { + var allMatches = MatchName(memberName); + var memberMatches = allMatches.Where(m => + m.DeclarationType.HasFlag(memberType) + && parent.Equals(m.ParentDeclaration)); + var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); + var match = accessibleMembers.FirstOrDefault(); + if (match != null) + { + return match; + } + // If we don't have a match, try to find the match in one of the implemented interfaces/classes. + if (parent.DeclarationType == DeclarationType.ClassModule) + { + foreach (var supertype in ((ClassModuleDeclaration)parent).Supertypes) + { + var supertypeMember = FindMemberWithParent(callingProject, callingModule, callingParent, supertype, memberName, memberType); + if (supertypeMember != null) + { + return supertypeMember; + } + } + } + return null; + } + public Declaration FindMemberEnclosingModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, string memberName, DeclarationType memberType) { var allMatches = MatchName(memberName); var memberMatches = allMatches.Where(m => m.DeclarationType.HasFlag(memberType) - && Declaration.GetMemberProject(m).Equals(callingProject) - && callingModule.Equals(Declaration.GetMemberModule(m))); + && Declaration.GetProjectParent(m).Equals(callingProject) + && callingModule.Equals(Declaration.GetModuleParent(m))); var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); var match = accessibleMembers.FirstOrDefault(); return match; } - public Declaration FindMemberEnclosedProjectWithoutEnclosingModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, string memberName, DeclarationType memberType) + public Declaration FindMemberEnclosingProcedure(Declaration enclosingProcedure, string memberName, DeclarationType memberType) { - return FindMemberEnclosedProjectWithoutEnclosingModule(callingProject, callingModule, callingParent, memberName, memberType, DeclarationType.Module); + var allMatches = MatchName(memberName); + var memberMatches = allMatches.Where(m => + m.DeclarationType.HasFlag(memberType) + && enclosingProcedure.Equals(m.ParentDeclaration)); + var match = memberMatches.FirstOrDefault(); + return match; } - public Declaration FindMemberEnclosedProjectWithoutEnclosingModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, string memberName, DeclarationType memberType, DeclarationType moduleType) + public Declaration FindMemberEnclosedProjectWithoutEnclosingModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, string memberName, DeclarationType memberType) { var allMatches = MatchName(memberName); var memberMatches = allMatches.Where(m => m.DeclarationType.HasFlag(memberType) - && Declaration.GetMemberModule(m).DeclarationType.HasFlag(moduleType) - && Declaration.GetMemberProject(m).Equals(callingProject) - && !callingModule.Equals(Declaration.GetMemberModule(m))); + // TODO: Fix this? + // Assume no module = built-in, not checkable thus we conservatively include it in the matches. + && (Declaration.GetModuleParent(m) == null || Declaration.GetModuleParent(m).DeclarationType == DeclarationType.ProceduralModule) + && Declaration.GetProjectParent(m).Equals(callingProject) + && !callingModule.Equals(Declaration.GetModuleParent(m))); var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); var match = accessibleMembers.FirstOrDefault(); return match; } + private static bool IsInstanceSensitive(DeclarationType memberType) + { + return memberType.HasFlag(DeclarationType.Variable) || memberType == DeclarationType.Constant || memberType.HasFlag(DeclarationType.Procedure) || memberType.HasFlag(DeclarationType.Function); + } + public Declaration FindMemberEnclosedProjectInModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, Declaration memberModule, string memberName, DeclarationType memberType) { var allMatches = MatchName(memberName); var memberMatches = allMatches.Where(m => m.DeclarationType.HasFlag(memberType) - && Declaration.GetMemberProject(m).Equals(callingProject) - && memberModule.Equals(Declaration.GetMemberModule(m))); + && Declaration.GetProjectParent(m).Equals(callingProject) + && memberModule.Equals(Declaration.GetModuleParent(m))); var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); var match = accessibleMembers.FirstOrDefault(); return match; @@ -266,7 +335,24 @@ public Declaration FindMemberEnclosedProjectInModule(Declaration callingProject, public Declaration FindMemberReferencedProject(Declaration callingProject, Declaration callingModule, Declaration callingParent, string memberName, DeclarationType memberType) { - var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => p.DeclarationType.HasFlag(memberType)); + bool isInstanceSensitive = IsInstanceSensitive(memberType); + var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => (!isInstanceSensitive || Declaration.GetModuleParent(p) == null || Declaration.GetModuleParent(p).DeclarationType != DeclarationType.ClassModule) && p.DeclarationType.HasFlag(memberType)); + var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); + var match = accessibleMembers.FirstOrDefault(); + return match; + } + + public Declaration FindMemberReferencedProjectInModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, DeclarationType moduleType, string memberName, DeclarationType memberType) + { + var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => p.DeclarationType.HasFlag(memberType) && (Declaration.GetModuleParent(p) == null || Declaration.GetModuleParent(p).DeclarationType == moduleType)); + var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); + var match = accessibleMembers.FirstOrDefault(); + return match; + } + + public Declaration FindMemberReferencedProjectInGlobalClassModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, string memberName, DeclarationType memberType) + { + var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => p.DeclarationType.HasFlag(memberType) && (Declaration.GetModuleParent(p) == null || Declaration.GetModuleParent(p).DeclarationType == DeclarationType.ClassModule) && ((ClassModuleDeclaration)Declaration.GetModuleParent(p)).IsGlobalClassModule); var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); var match = accessibleMembers.FirstOrDefault(); return match; @@ -274,7 +360,7 @@ public Declaration FindMemberReferencedProject(Declaration callingProject, Decla public Declaration FindMemberReferencedProjectInModule(Declaration callingProject, Declaration callingModule, Declaration callingParent, Declaration memberModule, string memberName, DeclarationType memberType) { - var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => p.DeclarationType.HasFlag(memberType) && memberModule.Equals(Declaration.GetMemberModule(p))); + var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => p.DeclarationType.HasFlag(memberType) && memberModule.Equals(Declaration.GetModuleParent(p))); var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); var match = accessibleMembers.FirstOrDefault(); return match; @@ -282,7 +368,7 @@ public Declaration FindMemberReferencedProjectInModule(Declaration callingProjec public Declaration FindMemberReferencedProject(Declaration callingProject, Declaration callingModule, Declaration callingParent, Declaration referencedProject, string memberName, DeclarationType memberType) { - var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => p.DeclarationType.HasFlag(memberType) && referencedProject.Equals(Declaration.GetMemberProject(p))); + var memberMatches = FindAllInReferencedProjectByPriority(callingProject, memberName, p => p.DeclarationType.HasFlag(memberType) && referencedProject.Equals(Declaration.GetProjectParent(p))); var accessibleMembers = memberMatches.Where(m => AccessibilityCheck.IsMemberAccessible(callingProject, callingModule, callingParent, m)); var match = accessibleMembers.FirstOrDefault(); return match; diff --git a/Rubberduck.Parsing/Symbols/DeclarationSymbolsListener.cs b/Rubberduck.Parsing/Symbols/DeclarationSymbolsListener.cs index 40f39f8df0..6485268e6f 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationSymbolsListener.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationSymbolsListener.cs @@ -8,6 +8,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Antlr4.Runtime.Misc; +using Microsoft.Vbe.Interop.Forms; namespace Rubberduck.Parsing.Symbols { @@ -140,11 +142,17 @@ private void DeclareControlsAsMembers(VBComponent form) { return; } - - // using dynamic typing here, because not only MSForms could have a Controls collection (e.g. MS-Access forms are 'document' modules). - foreach (var control in ((dynamic)designer).Controls) + if (!(designer is UserForm)) { - var declaration = new Declaration(_qualifiedName.QualifyMemberName(control.Name), _parentDeclaration, _currentScopeDeclaration, "Control", true, true, Accessibility.Public, DeclarationType.Control, null, Selection.Home); + return; + } + // "using dynamic typing here, because not only MSForms could have a Controls collection (e.g. MS-Access forms are 'document' modules)." + // Note: Dynamic doesn't seem to support explicit interfaces that's why we cast it anyway, MS Access forms apparently have to be treated specially anyway. + var userForm = (UserForm)designer; + foreach (Control control in userForm.Controls) + { + // The as type declaration should be TextBox, CheckBox, etc. depending on the type. + var declaration = new Declaration(_qualifiedName.QualifyMemberName(control.Name), _parentDeclaration, _currentScopeDeclaration, "Control", true, true, Accessibility.Public, DeclarationType.Control, null, Selection.Home, false); OnNewDeclaration(declaration); } } @@ -160,6 +168,10 @@ private Declaration CreateDeclaration(string identifierName, string asTypeName, var isParamArray = argContext.PARAMARRAY() != null; var isArray = argContext.LPAREN() != null; result = new ParameterDeclaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, context, selection, asTypeName, isOptional, isByRef, isArray, isParamArray); + if (Declaration.HasParameter(_parentDeclaration.DeclarationType)) + { + ((IDeclarationWithParameter)_parentDeclaration).AddParameter(result); + } } else { @@ -171,7 +183,38 @@ private Declaration CreateDeclaration(string identifierName, string asTypeName, } var annotations = FindAnnotations(selection.StartLine); - result = new Declaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, asTypeName, selfAssigned, withEvents, accessibility, declarationType, context, selection, false, annotations, attributes); + if (declarationType == DeclarationType.Procedure) + { + result = new SubroutineDeclaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, asTypeName, accessibility, context, selection, false, annotations, attributes); + } + else if (declarationType == DeclarationType.Function) + { + result = new FunctionDeclaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, asTypeName, accessibility, context, selection, false, annotations, attributes); + } + else if (declarationType == DeclarationType.LibraryProcedure || declarationType == DeclarationType.LibraryFunction) + { + result = new ExternalProcedureDeclaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, declarationType, asTypeName, accessibility, context, selection, false, annotations); + } + else if (declarationType == DeclarationType.PropertyGet) + { + result = new PropertyGetDeclaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, asTypeName, accessibility, context, selection, false, annotations, attributes); + } + else if (declarationType == DeclarationType.PropertySet) + { + result = new PropertySetDeclaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, asTypeName, accessibility, context, selection, false, annotations, attributes); + } + else if (declarationType == DeclarationType.PropertyLet) + { + result = new PropertyLetDeclaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, asTypeName, accessibility, context, selection, false, annotations, attributes); + } + else + { + result = new Declaration(new QualifiedMemberName(_qualifiedName, identifierName), _parentDeclaration, _currentScopeDeclaration, asTypeName, selfAssigned, withEvents, accessibility, declarationType, context, selection, false, annotations, attributes); + } + if (_parentDeclaration.DeclarationType == DeclarationType.ClassModule && result is ICanBeDefaultMember && ((ICanBeDefaultMember)result).IsDefaultMember) + { + ((ClassModuleDeclaration)_parentDeclaration).DefaultMember = result; + } } OnNewDeclaration(result); @@ -224,6 +267,12 @@ private void SetCurrentScope(Declaration procedureDeclaration, string name) _parentDeclaration = procedureDeclaration; } + public override void EnterImplementsStmt(VBAParser.ImplementsStmtContext context) + { + // The expression will be later resolved to the actual declaration. Have to split the work up because we have to gather/create all declarations first. + ((ClassModuleDeclaration)_moduleDeclaration).AddSupertype(context.valueStmt().GetText()); + } + public override void EnterOptionBaseStmt(VBAParser.OptionBaseStmtContext context) { OnNewDeclaration(CreateDeclaration(context.GetText(), string.Empty, Accessibility.Implicit, DeclarationType.ModuleOption, context, context.GetSelection())); @@ -251,14 +300,13 @@ public override void ExitOptionPrivateModuleStmt(VBAParser.OptionPrivateModuleSt public override void EnterSubStmt(VBAParser.SubStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); - var identifier = context.identifier(); + var identifier = context.subroutineName(); if (identifier == null) { return; } - - var name = context.identifier().GetText(); - var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.Procedure, context, context.identifier().GetSelection()); + var name = context.subroutineName().GetText(); + var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.Procedure, context, context.subroutineName().GetSelection()); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); } @@ -271,7 +319,7 @@ public override void ExitSubStmt(VBAParser.SubStmtContext context) public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); - var identifier = context.identifier(); + var identifier = context.functionName().identifier(); if (identifier == null) { return; @@ -282,8 +330,7 @@ public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context) var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); - - var declaration = CreateDeclaration(name, asTypeName, accessibility, DeclarationType.Function, context, context.identifier().GetSelection()); + var declaration = CreateDeclaration(name, asTypeName, accessibility, DeclarationType.Function, context, context.functionName().identifier().GetSelection()); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); } @@ -296,7 +343,7 @@ public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context) public override void EnterPropertyGetStmt(VBAParser.PropertyGetStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); - var identifier = context.identifier(); + var identifier = context.functionName().identifier(); if (identifier == null) { return; @@ -307,8 +354,7 @@ public override void EnterPropertyGetStmt(VBAParser.PropertyGetStmtContext conte var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); - - var declaration = CreateDeclaration(name, asTypeName, accessibility, DeclarationType.PropertyGet, context, context.identifier().GetSelection()); + var declaration = CreateDeclaration(name, asTypeName, accessibility, DeclarationType.PropertyGet, context, context.functionName().identifier().GetSelection()); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); @@ -322,14 +368,14 @@ public override void ExitPropertyGetStmt(VBAParser.PropertyGetStmtContext contex public override void EnterPropertyLetStmt(VBAParser.PropertyLetStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); - var identifier = context.identifier(); + var identifier = context.subroutineName(); if (identifier == null) { return; } var name = identifier.GetText(); - var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.PropertyLet, context, context.identifier().GetSelection()); + var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.PropertyLet, context, context.subroutineName().GetSelection()); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); } @@ -342,14 +388,14 @@ public override void ExitPropertyLetStmt(VBAParser.PropertyLetStmtContext contex public override void EnterPropertySetStmt(VBAParser.PropertySetStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); - var identifier = context.identifier(); + var identifier = context.subroutineName(); if (identifier == null) { return; } var name = identifier.GetText(); - var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.PropertySet, context, context.identifier().GetSelection()); + var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.PropertySet, context, context.subroutineName().GetSelection()); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); @@ -399,7 +445,6 @@ public override void EnterDeclareStmt(VBAParser.DeclareStmtContext context) ? Tokens.Variant : asTypeClause.type().GetText() : null; - var selection = nameContext.GetSelection(); var declarationType = hasReturnType @@ -426,8 +471,7 @@ public override void EnterArgList(VBAParser.ArgListContext context) var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); - - var identifier = argContext.identifier(); + var identifier = argContext.unrestrictedIdentifier(); if (identifier == null) { return; @@ -456,7 +500,6 @@ public override void EnterVariableSubStmt(VBAParser.VariableSubStmtContext conte var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); - var withEvents = parent.WITHEVENTS() != null; var selfAssigned = asTypeClause != null && asTypeClause.NEW() != null; @@ -472,7 +515,6 @@ public override void EnterConstSubStmt(VBAParser.ConstSubStmtContext context) var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); - var identifier = context.identifier(); if (identifier == null) { @@ -512,7 +554,6 @@ public override void EnterTypeStmt_Element(VBAParser.TypeStmt_ElementContext con var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); - OnNewDeclaration(CreateDeclaration(context.identifier().GetText(), asTypeName, Accessibility.Implicit, DeclarationType.UserDefinedTypeMember, context, context.identifier().GetSelection())); } diff --git a/Rubberduck.Parsing/Symbols/DeclarationType.cs b/Rubberduck.Parsing/Symbols/DeclarationType.cs index a6156c198e..cbfea0131a 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationType.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationType.cs @@ -9,25 +9,25 @@ public enum DeclarationType Module = 1 << 1, ProceduralModule = 1 << 2 | Module, ClassModule = 1 << 3 | Module, - Control = 1 << 4, - UserForm = 1 << 5, - Document = 1 << 6, - ModuleOption = 1 << 7, - Member = 1 << 8, - Procedure = 1 << 9 | Member, - Function = 1 << 10 | Member, - Property = 1 << 11 | Member, - PropertyGet = 1 << 12 | Property | Function, - PropertyLet = 1 << 13 | Property | Procedure, - PropertySet = 1 << 14 | Property | Procedure, - Parameter = 1 << 15, - Variable = 1 << 16, + UserForm = 1 << 4, + Document = 1 << 5, + ModuleOption = 1 << 6, + Member = 1 << 7, + Procedure = 1 << 8 | Member, + Function = 1 << 9 | Member, + Property = 1 << 10 | Member, + PropertyGet = 1 << 11 | Property | Function, + PropertyLet = 1 << 12 | Property | Procedure, + PropertySet = 1 << 13 | Property | Procedure, + Parameter = 1 << 14, + Variable = 1 << 15, + Control = 1 << 16 | Variable, Constant = 1 << 17, Enumeration = 1 << 18, - EnumerationMember = 1 << 19 | Constant, + EnumerationMember = 1 << 19, Event = 1 << 20, UserDefinedType = 1 << 21, - UserDefinedTypeMember = 1 << 22 | Variable, + UserDefinedTypeMember = 1 << 22, LibraryFunction = 1 << 23 | Function, LibraryProcedure = 1 << 24 | Procedure, LineLabel = 1 << 25 diff --git a/Rubberduck.Parsing/Symbols/ExternalProcedureDeclaration.cs b/Rubberduck.Parsing/Symbols/ExternalProcedureDeclaration.cs new file mode 100644 index 0000000000..9b07b8e011 --- /dev/null +++ b/Rubberduck.Parsing/Symbols/ExternalProcedureDeclaration.cs @@ -0,0 +1,55 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Annotations; +using Rubberduck.VBEditor; +using System.Collections.Generic; +using System.Linq; + +namespace Rubberduck.Parsing.Symbols +{ + public sealed class ExternalProcedureDeclaration : Declaration, IDeclarationWithParameter + { + private readonly List _parameters; + + public ExternalProcedureDeclaration( + QualifiedMemberName name, + Declaration parent, + Declaration parentScope, + DeclarationType declarationType, + string asTypeName, + Accessibility accessibility, + ParserRuleContext context, + Selection selection, + bool isBuiltIn, + IEnumerable annotations) + : base( + name, + parent, + parentScope, + asTypeName, + false, + false, + accessibility, + declarationType, + context, + selection, + isBuiltIn, + annotations, + null) + { + _parameters = new List(); + } + + public IEnumerable Parameters + { + get + { + return _parameters.ToList(); + } + } + + public void AddParameter(Declaration parameter) + { + _parameters.Add(parameter); + } + } +} diff --git a/Rubberduck.Parsing/Symbols/FunctionDeclaration.cs b/Rubberduck.Parsing/Symbols/FunctionDeclaration.cs new file mode 100644 index 0000000000..d88def8456 --- /dev/null +++ b/Rubberduck.Parsing/Symbols/FunctionDeclaration.cs @@ -0,0 +1,75 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; +using System.Collections.Generic; +using System.Linq; + +namespace Rubberduck.Parsing.Symbols +{ + public sealed class FunctionDeclaration : Declaration, IDeclarationWithParameter, ICanBeDefaultMember + { + private readonly List _parameters; + + public FunctionDeclaration( + QualifiedMemberName name, + Declaration parent, + Declaration parentScope, + string asTypeName, + Accessibility accessibility, + ParserRuleContext context, + Selection selection, + bool isBuiltIn, + IEnumerable annotations, + Attributes attributes) + : base( + name, + parent, + parentScope, + asTypeName, + false, + false, + accessibility, + DeclarationType.Function, + context, + selection, + isBuiltIn, + annotations, + attributes) + { + _parameters = new List(); + } + + public IEnumerable Parameters + { + get + { + return _parameters.ToList(); + } + } + + public void AddParameter(Declaration parameter) + { + _parameters.Add(parameter); + } + + /// + /// Gets an attribute value indicating whether a member is a class' default member. + /// If this value is true, any reference to an instance of the class it's the default member of, + /// should count as a member call to this member. + /// + public bool IsDefaultMember + { + get + { + IEnumerable value; + if (Attributes.TryGetValue(IdentifierName + ".VB_UserMemId", out value)) + { + return value.Single() == "0"; + } + + return false; + } + } + } +} diff --git a/Rubberduck.Parsing/Symbols/ICanBeDefaultMember.cs b/Rubberduck.Parsing/Symbols/ICanBeDefaultMember.cs new file mode 100644 index 0000000000..d3a356b261 --- /dev/null +++ b/Rubberduck.Parsing/Symbols/ICanBeDefaultMember.cs @@ -0,0 +1,7 @@ +namespace Rubberduck.Parsing.Symbols +{ + public interface ICanBeDefaultMember + { + bool IsDefaultMember { get; } + } +} diff --git a/Rubberduck.Parsing/Symbols/IDeclarationWithParameter.cs b/Rubberduck.Parsing/Symbols/IDeclarationWithParameter.cs new file mode 100644 index 0000000000..63e5a621fd --- /dev/null +++ b/Rubberduck.Parsing/Symbols/IDeclarationWithParameter.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace Rubberduck.Parsing.Symbols +{ + public interface IDeclarationWithParameter + { + IEnumerable Parameters { get; } + void AddParameter(Declaration parameter); + } +} diff --git a/Rubberduck.Parsing/Symbols/IdentifierReference.cs b/Rubberduck.Parsing/Symbols/IdentifierReference.cs index 679537ab73..34a021cce8 100644 --- a/Rubberduck.Parsing/Symbols/IdentifierReference.cs +++ b/Rubberduck.Parsing/Symbols/IdentifierReference.cs @@ -14,7 +14,7 @@ public IdentifierReference( Declaration parentScopingDeclaration, Declaration parentNonScopingDeclaration, string identifierName, - Selection selection, + Selection selection, ParserRuleContext context, Declaration declaration, bool isAssignmentTarget = false, @@ -80,30 +80,7 @@ public bool IsInspectionDisabled(string inspectionName) public bool HasExplicitCallStatement() { - var memberProcedureCall = Context.Parent as VBAParser.ECS_MemberProcedureCallContext; - var procedureCall = Context.Parent as VBAParser.ECS_ProcedureCallContext; - - return HasExplicitCallStatement(memberProcedureCall) || HasExplicitCallStatement(procedureCall); - } - - private bool HasExplicitCallStatement(VBAParser.ECS_MemberProcedureCallContext call) - { - if (call == null) - { - return false; - } - var statement = call.CALL(); - return statement != null && statement.Symbol.Text == Tokens.Call; - } - - private bool HasExplicitCallStatement(VBAParser.ECS_ProcedureCallContext call) - { - if (call == null) - { - return false; - } - var statement = call.CALL(); - return statement != null && statement.Symbol.Text == Tokens.Call; + return Context.Parent is VBAParser.ExplicitCallStmtContext; } private bool? _hasTypeHint; diff --git a/Rubberduck.Parsing/Symbols/IdentifierReferenceListener.cs b/Rubberduck.Parsing/Symbols/IdentifierReferenceListener.cs index ec2cbfd9b0..296f8626b4 100644 --- a/Rubberduck.Parsing/Symbols/IdentifierReferenceListener.cs +++ b/Rubberduck.Parsing/Symbols/IdentifierReferenceListener.cs @@ -1,3 +1,4 @@ +using Antlr4.Runtime.Misc; using Rubberduck.Parsing.Grammar; namespace Rubberduck.Parsing.Symbols @@ -24,7 +25,7 @@ private void SetCurrentScope(string identifier, DeclarationType type) public override void EnterSubStmt(VBAParser.SubStmtContext context) { - SetCurrentScope(context.identifier().GetText(), DeclarationType.Procedure); + SetCurrentScope(context.subroutineName().GetText(), DeclarationType.Procedure); } public override void ExitSubStmt(VBAParser.SubStmtContext context) @@ -34,7 +35,7 @@ public override void ExitSubStmt(VBAParser.SubStmtContext context) public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context) { - SetCurrentScope(context.identifier().GetText(), DeclarationType.Function); + SetCurrentScope(context.functionName().identifier().GetText(), DeclarationType.Function); } public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context) @@ -44,7 +45,7 @@ public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context) public override void EnterPropertyGetStmt(VBAParser.PropertyGetStmtContext context) { - SetCurrentScope(context.identifier().GetText(), DeclarationType.PropertyGet); + SetCurrentScope(context.functionName().identifier().GetText(), DeclarationType.PropertyGet); } public override void ExitPropertyGetStmt(VBAParser.PropertyGetStmtContext context) @@ -54,7 +55,7 @@ public override void ExitPropertyGetStmt(VBAParser.PropertyGetStmtContext contex public override void EnterPropertyLetStmt(VBAParser.PropertyLetStmtContext context) { - SetCurrentScope(context.identifier().GetText(), DeclarationType.PropertyLet); + SetCurrentScope(context.subroutineName().GetText(), DeclarationType.PropertyLet); } public override void ExitPropertyLetStmt(VBAParser.PropertyLetStmtContext context) @@ -64,7 +65,7 @@ public override void ExitPropertyLetStmt(VBAParser.PropertyLetStmtContext contex public override void EnterPropertySetStmt(VBAParser.PropertySetStmtContext context) { - SetCurrentScope(context.identifier().GetText(), DeclarationType.PropertySet); + SetCurrentScope(context.subroutineName().GetText(), DeclarationType.PropertySet); } public override void ExitPropertySetStmt(VBAParser.PropertySetStmtContext context) @@ -75,6 +76,7 @@ public override void ExitPropertySetStmt(VBAParser.PropertySetStmtContext contex public override void EnterEnumerationStmt(VBAParser.EnumerationStmtContext context) { SetCurrentScope(context.identifier().GetText(), DeclarationType.Enumeration); + _resolver.Resolve(context); } public override void ExitEnumerationStmt(VBAParser.EnumerationStmtContext context) @@ -101,103 +103,198 @@ public override void ExitWithStmt(VBAParser.WithStmtContext context) { _resolver.ExitWithBlock(); } + + public override void EnterBlockIfThenElse(VBAParser.BlockIfThenElseContext context) + { + _resolver.Resolve(context); + } + + public override void EnterInlineIfThenElse(VBAParser.InlineIfThenElseContext context) + { + _resolver.Resolve(context); + } + + public override void EnterSelectCaseStmt(VBAParser.SelectCaseStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterGoToStmt(VBAParser.GoToStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterOnGoToStmt(VBAParser.OnGoToStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterGoSubStmt([NotNull] VBAParser.GoSubStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterOnGoSubStmt(VBAParser.OnGoSubStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterExplicitCallStmt(VBAParser.ExplicitCallStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterConstStmt(VBAParser.ConstStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterRedimStmt(VBAParser.RedimStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterEraseStmt(VBAParser.EraseStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterMidStmt(VBAParser.MidStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterLsetStmt(VBAParser.LsetStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterRsetStmt(VBAParser.RsetStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterImplicitCallStmt_InBlock(VBAParser.ImplicitCallStmt_InBlockContext context) + { + _resolver.Resolve(context); + } - public override void EnterICS_B_ProcedureCall(VBAParser.ICS_B_ProcedureCallContext context) + public override void EnterWhileWendStmt(VBAParser.WhileWendStmtContext context) { _resolver.Resolve(context); } - public override void EnterICS_B_MemberProcedureCall(VBAParser.ICS_B_MemberProcedureCallContext context) + public override void EnterOpenStmt(VBAParser.OpenStmtContext context) { _resolver.Resolve(context); } - public override void EnterICS_S_VariableOrProcedureCall(VBAParser.ICS_S_VariableOrProcedureCallContext context) + public override void EnterCloseStmt(VBAParser.CloseStmtContext context) { - if (context.Parent.GetType() != typeof(VBAParser.ICS_S_MemberCallContext)) - { - _resolver.Resolve(context); - } + _resolver.Resolve(context); } - public override void EnterICS_S_ProcedureOrArrayCall(VBAParser.ICS_S_ProcedureOrArrayCallContext context) + public override void EnterSeekStmt([NotNull] VBAParser.SeekStmtContext context) { - if (context.Parent.GetType() != typeof(VBAParser.ICS_S_MemberCallContext)) - { - _resolver.Resolve(context); - } + _resolver.Resolve(context); } - public override void EnterICS_S_MembersCall(VBAParser.ICS_S_MembersCallContext context) + public override void EnterLockStmt([NotNull] VBAParser.LockStmtContext context) { - // Implement statements are handled separately and directly through new binding expressions. - // Prevent duplicate references. - if (BindingMigrationHelper.HasParent(context)) - { - return; - } _resolver.Resolve(context); } - public override void EnterICS_S_DictionaryCall(VBAParser.ICS_S_DictionaryCallContext context) + public override void EnterUnlockStmt([NotNull] VBAParser.UnlockStmtContext context) { - if (context.Parent.GetType() != typeof(VBAParser.ICS_S_MemberCallContext)) - { - _resolver.Resolve(context); - } + _resolver.Resolve(context); } - public override void EnterLetStmt(VBAParser.LetStmtContext context) + public override void EnterLineInputStmt([NotNull] VBAParser.LineInputStmtContext context) { _resolver.Resolve(context); } - public override void EnterSetStmt(VBAParser.SetStmtContext context) + public override void EnterWidthStmt([NotNull] VBAParser.WidthStmtContext context) { _resolver.Resolve(context); } - public override void EnterAsTypeClause(VBAParser.AsTypeClauseContext context) + public override void EnterPrintStmt([NotNull] VBAParser.PrintStmtContext context) { _resolver.Resolve(context); } - public override void EnterForNextStmt(VBAParser.ForNextStmtContext context) + public override void EnterWriteStmt([NotNull] VBAParser.WriteStmtContext context) { _resolver.Resolve(context); } - public override void EnterForEachStmt(VBAParser.ForEachStmtContext context) + public override void EnterInputStmt([NotNull] VBAParser.InputStmtContext context) { _resolver.Resolve(context); } - public override void EnterImplementsStmt(VBAParser.ImplementsStmtContext context) + public override void EnterPutStmt([NotNull] VBAParser.PutStmtContext context) { _resolver.Resolve(context); } - public override void EnterVsAddressOf(VBAParser.VsAddressOfContext context) - { + public override void EnterGetStmt([NotNull] VBAParser.GetStmtContext context) + { _resolver.Resolve(context); } - public override void EnterRaiseEventStmt(VBAParser.RaiseEventStmtContext context) + public override void EnterOnErrorStmt(VBAParser.OnErrorStmtContext context) { _resolver.Resolve(context); } - public override void EnterResumeStmt(VBAParser.ResumeStmtContext context) + public override void EnterErrorStmt(VBAParser.ErrorStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterLetStmt(VBAParser.LetStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterSetStmt(VBAParser.SetStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterAsTypeClause(VBAParser.AsTypeClauseContext context) + { + _resolver.Resolve(context); + } + + public override void EnterForNextStmt(VBAParser.ForNextStmtContext context) { _resolver.Resolve(context); } - public override void EnterFieldLength(VBAParser.FieldLengthContext context) + public override void EnterForEachStmt(VBAParser.ForEachStmtContext context) { _resolver.Resolve(context); } - public override void EnterVsAssign(VBAParser.VsAssignContext context) + public override void EnterDoLoopStmt([NotNull] VBAParser.DoLoopStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterImplementsStmt(VBAParser.ImplementsStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterRaiseEventStmt(VBAParser.RaiseEventStmtContext context) + { + _resolver.Resolve(context); + } + + public override void EnterResumeStmt(VBAParser.ResumeStmtContext context) { _resolver.Resolve(context); } diff --git a/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs b/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs index a9d7033014..59092d1287 100644 --- a/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs +++ b/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs @@ -1,87 +1,44 @@ -using System; +using Antlr4.Runtime; +using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.Binding; +using Rubberduck.Parsing.Grammar; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; -using Antlr4.Runtime; -using Microsoft.Vbe.Interop; -using Rubberduck.Parsing.Grammar; -using Rubberduck.VBEditor; -using Rubberduck.Parsing.Annotations; -using Rubberduck.Parsing.Binding; namespace Rubberduck.Parsing.Symbols { - public class IdentifierReferenceResolver + public sealed class IdentifierReferenceResolver { private readonly DeclarationFinder _declarationFinder; - - private enum ContextAccessorType - { - GetValueOrReference, - AssignValue, - AssignReference, - AssignValueOrReference = AssignValue | AssignReference - } - private readonly QualifiedModuleName _qualifiedModuleName; - - private readonly IReadOnlyList _moduleTypes; - private readonly IReadOnlyList _memberTypes; - private readonly IReadOnlyList _returningMemberTypes; - - private readonly Stack _withBlockQualifiers; - private readonly HashSet _alreadyResolved; - + private readonly Stack _withBlockExpressions; private readonly Declaration _moduleDeclaration; - private Declaration _currentScope; private Declaration _currentParent; - private readonly BindingService _bindingService; private readonly BoundExpressionVisitor _boundExpressionVisitor; public IdentifierReferenceResolver(QualifiedModuleName qualifiedModuleName, DeclarationFinder finder) { _declarationFinder = finder; - _qualifiedModuleName = qualifiedModuleName; - - _withBlockQualifiers = new Stack(); - _alreadyResolved = new HashSet(); - - _moduleTypes = new[] - { - DeclarationType.ProceduralModule, - DeclarationType.ClassModule, - }; - - _memberTypes = new[] - { - DeclarationType.Procedure, - DeclarationType.Function, - DeclarationType.PropertyGet, - DeclarationType.PropertyLet, - DeclarationType.PropertySet, - }; - - _returningMemberTypes = new[] - { - DeclarationType.Function, - DeclarationType.PropertyGet, - }; - + _withBlockExpressions = new Stack(); _moduleDeclaration = finder.MatchName(_qualifiedModuleName.ComponentName) .SingleOrDefault(item => (item.DeclarationType == DeclarationType.ClassModule || item.DeclarationType == DeclarationType.ProceduralModule) && item.QualifiedName.QualifiedModuleName.Equals(_qualifiedModuleName)); - SetCurrentScope(); - + var typeBindingContext = new TypeBindingContext(_declarationFinder); + var procedurePointerBindingContext = new ProcedurePointerBindingContext(_declarationFinder); _bindingService = new BindingService( - new DefaultBindingContext(_declarationFinder), - new TypeBindingContext(_declarationFinder), - new ProcedurePointerBindingContext(_declarationFinder)); + _declarationFinder, + new DefaultBindingContext(_declarationFinder, typeBindingContext, procedurePointerBindingContext), + typeBindingContext, + procedurePointerBindingContext); _boundExpressionVisitor = new BoundExpressionVisitor(); } @@ -89,7 +46,6 @@ public void SetCurrentScope() { _currentScope = _moduleDeclaration; _currentParent = _moduleDeclaration; - _alreadyResolved.Clear(); } public void SetCurrentScope(string memberName, DeclarationType type) @@ -109,46 +65,39 @@ public void EnterWithBlock(VBAParser.WithStmtContext context) { Declaration qualifier = null; var expr = context.withStmtExpression(); - - if (expr.NEW() == null) + var typeExpression = expr.GetText(); + var boundExpression = _bindingService.ResolveDefault(_moduleDeclaration, _currentParent, typeExpression, GetInnerMostWithExpression(), ResolutionStatementContext.Undefined); + if (boundExpression != null) { - // TODO: Use valueStmt and resolve expression. - qualifier = ResolveInternal(expr.implicitCallStmt_InStmt(), _currentScope, ContextAccessorType.GetValueOrReference); + _boundExpressionVisitor.AddIdentifierReferences(boundExpression, (exprCtx, identifier, declaration) => CreateReference(expr, identifier, declaration, RubberduckParserState.CreateBindingSelection(expr, exprCtx))); + qualifier = boundExpression.ReferencedDeclaration; } - else + // note: pushes null if unresolved + _withBlockExpressions.Push(boundExpression); + } + + private IBoundExpression GetInnerMostWithExpression() + { + if (_withBlockExpressions.Any()) { - var type = expr.type(); - var baseType = type.baseType(); - if (baseType == null) - { - string typeExpression = expr.GetText(); - var boundExpression = _bindingService.ResolveDefault(_moduleDeclaration, _currentScope, typeExpression); - if (boundExpression != null) - { - _boundExpressionVisitor.AddIdentifierReferences(boundExpression, declaration => CreateReference(type.complexType(), declaration)); - qualifier = boundExpression.ReferencedDeclaration; - } - } + return _withBlockExpressions.Peek(); } - // note: pushes null if unresolved - _withBlockQualifiers.Push(qualifier); + return null; } public void ExitWithBlock() { - _withBlockQualifiers.Pop(); + _withBlockExpressions.Pop(); } - private IdentifierReference CreateReference(ParserRuleContext callSiteContext, Declaration callee, bool isAssignmentTarget = false, bool hasExplicitLetStatement = false) + private IdentifierReference CreateReference(ParserRuleContext callSiteContext, string identifier, Declaration callee, Selection selection, bool isAssignmentTarget = false, bool hasExplicitLetStatement = false) { - if (callSiteContext == null || _currentScope == null || _alreadyResolved.Contains(callSiteContext)) + if (callSiteContext == null || _currentScope == null) { return null; } - var name = callSiteContext.GetText(); - var selection = callSiteContext.GetSelection(); var annotations = FindAnnotations(selection.StartLine); - return new IdentifierReference(_qualifiedModuleName, _currentScope, _currentParent, name, selection, callSiteContext, callee, isAssignmentTarget, hasExplicitLetStatement, annotations); + return new IdentifierReference(_qualifiedModuleName, _currentScope, _currentParent, identifier, selection, callSiteContext, callee, isAssignmentTarget, hasExplicitLetStatement, annotations); } private IEnumerable FindAnnotations(int line) @@ -164,811 +113,311 @@ private IEnumerable FindAnnotations(int line) return new List(); } - private void ResolveType(VBAParser.ICS_S_MembersCallContext context) - { - var first = context.iCS_S_VariableOrProcedureCall().identifier(); - var identifiers = new[] { first }.Concat(context.iCS_S_MemberCall() - .Select(member => member.iCS_S_VariableOrProcedureCall().identifier())) - .ToList(); - ResolveType(identifiers); - } - - private Declaration ResolveType(VBAParser.ComplexTypeContext context) + public void Resolve(VBAParser.OnErrorStmtContext context) { - if (context == null) - { - return null; - } - - var identifiers = context.identifier() - .Select(identifier => identifier) - .ToList(); - - // if there's only 1 identifier, resolve to the tightest-scope match: - if (identifiers.Count == 1) + if (context.valueStmt() == null) { - var type = ResolveInScopeType(identifiers.Single().GetText(), _currentScope); - if (type != null && !_alreadyResolved.Contains(context)) - { - type.AddReference(CreateReference(context, type)); - _alreadyResolved.Add(context); - } - return type; + return; } - - // if there's 2 or more identifiers, resolve to the deepest path: - return ResolveType(identifiers); + ResolveLabel(context.valueStmt(), context.valueStmt().GetText()); } - private Declaration ResolveType(IList identifiers) + public void Resolve(VBAParser.ErrorStmtContext context) { - var first = identifiers[0].GetText(); - var projectMatch = _declarationFinder.FindProject(first, _currentScope); - - if (projectMatch != null) - { - var projectReference = CreateReference(identifiers[0], projectMatch); - - // matches current project. 2nd identifier could be: - // - standard module (only if there's a 3rd identifier) - // - class module - // - UDT - // - Enum - if (identifiers.Count == 3) - { - var moduleMatch = _declarationFinder.FindStdModule(identifiers[1].GetText(), _currentScope); - if (moduleMatch != null) - { - var moduleReference = CreateReference(identifiers[1], moduleMatch); - - // 3rd identifier can only be a UDT - var udtMatch = _declarationFinder.FindUserDefinedType(identifiers[2].GetText(), moduleMatch); - if (udtMatch != null) - { - var udtReference = CreateReference(identifiers[2], udtMatch); - - if (!_alreadyResolved.Contains(projectReference.Context)) - { - projectMatch.AddReference(projectReference); - _alreadyResolved.Add(projectReference.Context); - } - - if (!_alreadyResolved.Contains(moduleReference.Context)) - { - moduleMatch.AddReference(moduleReference); - _alreadyResolved.Add(moduleReference.Context); - } - - if (!_alreadyResolved.Contains(udtReference.Context)) - { - udtMatch.AddReference(udtReference); - _alreadyResolved.Add(udtReference.Context); - } - - return udtMatch; - } - var enumMatch = _declarationFinder.FindEnum(identifiers[2].GetText(), moduleMatch); - if (enumMatch != null) - { - var enumReference = CreateReference(identifiers[2], enumMatch); - - if (!_alreadyResolved.Contains(projectReference.Context)) - { - projectMatch.AddReference(projectReference); - _alreadyResolved.Add(projectReference.Context); - } - - if (!_alreadyResolved.Contains(moduleReference.Context)) - { - moduleMatch.AddReference(moduleReference); - _alreadyResolved.Add(moduleReference.Context); - } - - if (!_alreadyResolved.Contains(enumReference.Context)) - { - enumMatch.AddReference(enumReference); - _alreadyResolved.Add(enumReference.Context); - } - - return enumMatch; - } - } - } - else - { - if (projectReference != null && !_alreadyResolved.Contains(projectReference.Context)) - { - projectMatch.AddReference(projectReference); - _alreadyResolved.Add(projectReference.Context); - } - - var match = _declarationFinder.FindClass(projectMatch, identifiers[1].GetText()) - ?? _declarationFinder.FindUserDefinedType(identifiers[1].GetText()) - ?? _declarationFinder.FindEnum(identifiers[1].GetText()); - if (match != null) - { - var reference = CreateReference(identifiers[1], match); - if (reference != null && !_alreadyResolved.Contains(reference.Context)) - { - match.AddReference(reference); - _alreadyResolved.Add(reference.Context); - } - return match; - } - } - } - - // first identifier didn't match current project. - // if there are 3 identifiers, type isn't in current project. - if (identifiers.Count != 3) - { - - var moduleMatch = _declarationFinder.FindStdModule(identifiers[0].GetText(), projectMatch); - if (moduleMatch != null) - { - var moduleReference = CreateReference(identifiers[0], moduleMatch); - - // 2nd identifier can only be a UDT or enum - var match = _declarationFinder.FindUserDefinedType(identifiers[1].GetText(), moduleMatch) - ?? _declarationFinder.FindEnum(identifiers[1].GetText(), moduleMatch); - if (match != null) - { - var reference = CreateReference(identifiers[1], match); - - if (!_alreadyResolved.Contains(moduleReference.Context)) - { - moduleMatch.AddReference(moduleReference); - _alreadyResolved.Add(moduleReference.Context); - } - - if (!_alreadyResolved.Contains(reference.Context)) - { - match.AddReference(reference); - _alreadyResolved.Add(reference.Context); - } - - return match; - } - } - } - - return null; + ResolveDefault(context.valueStmt(), context.valueStmt().GetText()); } - private Declaration ResolveInScopeType(string identifier, Declaration scope) + private void ResolveLabel(ParserRuleContext context, string label) { - var matches = _declarationFinder.MatchTypeName(identifier).ToList(); - if (matches.Count == 1) - { - return matches.Single(); - } - - if (matches.Count(match => match.ProjectId == scope.ProjectId) == 1) + var labelDeclaration = _bindingService.ResolveGoTo(_currentParent, label); + if (labelDeclaration != null) { - return matches.Single(match => match.ProjectId == scope.ProjectId); + labelDeclaration.AddReference(CreateReference(context, context.GetText(), labelDeclaration, context.GetSelection())); } - - // more than one matching identifiers found. - // if it matches a UDT or enum in the current scope, resolve to that type. - var sameScopeUdt = matches.Where(declaration => - declaration.ProjectId == scope.ProjectId - && (declaration.DeclarationType == DeclarationType.UserDefinedType - || declaration.DeclarationType == DeclarationType.Enumeration) - && declaration.ParentDeclaration.Equals(scope)) - .ToList(); - - if (sameScopeUdt.Count == 1) - { - return sameScopeUdt.Single(); - } - - // todo: try to resolve identifier using referenced projects - - return null; } - private Declaration ResolveType(Declaration parent) + private void ResolveDefault(ParserRuleContext context, string expression, ResolutionStatementContext statementContext = ResolutionStatementContext.Undefined, bool isAssignmentTarget = false, bool hasExplicitLetStatement = false) { - if (parent != null && (parent.DeclarationType == DeclarationType.UserDefinedType - || parent.DeclarationType == DeclarationType.Enumeration - || parent.DeclarationType == DeclarationType.Project - || parent.DeclarationType == DeclarationType.ProceduralModule - || (parent.DeclarationType == DeclarationType.ClassModule && (parent.IsBuiltIn || parent.HasPredeclaredId)))) - { - return parent; - } - - if (parent == null || parent.AsTypeName == null) - { - return null; - } - - var identifier = parent.AsTypeName.Contains(".") - ? parent.AsTypeName.Split('.').Last() // bug: this can't be right - : parent.AsTypeName; - - identifier = identifier.StartsWith("VT_") ? parent.IdentifierName : identifier; - - var matches = _declarationFinder.MatchTypeName(identifier).ToList(); - if (matches.Count == 1) + var boundExpression = _bindingService.ResolveDefault(_moduleDeclaration, _currentParent, expression, GetInnerMostWithExpression(), statementContext); + if (boundExpression != null) { - return matches.Single(); + _boundExpressionVisitor.AddIdentifierReferences(boundExpression, (exprCtx, identifier, declaration) => CreateReference(context, identifier, declaration, RubberduckParserState.CreateBindingSelection(context, exprCtx), isAssignmentTarget, hasExplicitLetStatement)); } - - var result = matches.Where(item => - (item.DeclarationType == DeclarationType.UserDefinedType - || item.DeclarationType == DeclarationType.Enumeration) - && item.ProjectId == _currentScope.ProjectId - && item.ComponentName == _currentScope.ComponentName) - .ToList(); - - if (!result.Any()) + else { - result = matches.Where(item => - _moduleTypes.Contains(item.DeclarationType) - && item.ProjectId == _currentScope.ProjectId) - .ToList(); + Debug.WriteLine(string.Format("Failed to resolve {0}. Possible causes include: COM Coclass/Interface mixup / Alias / Bug in the resolver.", expression)); } + } - if (!result.Any()) + private void ResolveType(ParserRuleContext context, string expression) + { + var boundExpression = _bindingService.ResolveType(_moduleDeclaration, _currentParent, expression); + if (boundExpression != null) { - result = matches.Where(item => - _moduleTypes.Contains(item.DeclarationType)) - .ToList(); + _boundExpressionVisitor.AddIdentifierReferences(boundExpression, (exprCtx, identifier, declaration) => CreateReference(context, identifier, declaration, RubberduckParserState.CreateBindingSelection(context, exprCtx))); } - - return result.Count == 1 ? result.SingleOrDefault() : - matches.Count == 1 ? matches.First() : null; } - private static readonly Type[] IdentifierContexts = + public void Resolve(VBAParser.GoToStmtContext context) { - typeof (VBAParser.IdentifierContext), - }; + ResolveLabel(context.valueStmt(), context.valueStmt().GetText()); + } - private Declaration ResolveInternal(ParserRuleContext callSiteContext, Declaration localScope, ContextAccessorType accessorType = ContextAccessorType.GetValueOrReference, VBAParser.DictionaryCallStmtContext fieldCall = null, bool hasExplicitLetStatement = false, bool isAssignmentTarget = false) + public void Resolve(VBAParser.OnGoToStmtContext context) { - if (callSiteContext == null) + ResolveDefault(context.valueStmt()[0], context.valueStmt()[0].GetText()); + for (int labelIndex = 1; labelIndex < context.valueStmt().Count; labelIndex++) { - return null; - } - - if (!IdentifierContexts.Contains(callSiteContext.GetType())) - { - throw new ArgumentException("'" + callSiteContext.GetType().Name + "' is not an identifier context.", "callSiteContext"); - } - - if (localScope == null) - { - localScope = _currentScope; - } - - if (localScope == null) - { - return null; - } - - var parentContext = callSiteContext.Parent; - var identifierName = callSiteContext.GetText(); - if (identifierName.StartsWith("[") && identifierName.EndsWith("]")) - { - // square-bracketed identifier may contain a '!' symbol; identifier name is at the left of it. - identifierName = identifierName.Substring(1, identifierName.Length - 2)/*.Split('!').First()*/; - // problem, is that IdentifierReference should work off IDENTIFIER tokens, not AmbiguousIdentifierContext. - // not sure what the better fix is. + ResolveLabel(context.valueStmt()[labelIndex], context.valueStmt()[labelIndex].GetText()); } - - var sibling = parentContext.ChildCount > 1 ? parentContext.GetChild(1) : null; - var hasStringQualifier = sibling is VBAParser.TypeHintContext && sibling.GetText() == "$"; - - Declaration callee = null; - if (localScope.DeclarationType == DeclarationType.UserDefinedType) - { - callee = _declarationFinder.MatchName(identifierName).SingleOrDefault(item => item.Context != null && item.Context.Parent == localScope.Context); - } - else - { - callee = Resolve(identifierName, localScope, accessorType, parentContext is VBAParser.ICS_S_VariableOrProcedureCallContext, isAssignmentTarget, hasStringQualifier); - } - - - if (callee == null) - { - // calls inside With block can still refer to identifiers in _currentScope - localScope = _currentScope; - identifierName = callSiteContext.GetText(); - callee = FindLocalScopeDeclaration(identifierName, localScope, parentContext is VBAParser.ICS_S_VariableOrProcedureCallContext, isAssignmentTarget) - ?? FindModuleScopeProcedure(identifierName, localScope, accessorType, isAssignmentTarget) - ?? FindModuleScopeDeclaration(identifierName, localScope) - ?? FindProjectScopeDeclaration(identifierName, Equals(localScope, _currentScope) ? null : localScope, accessorType, hasStringQualifier); - } - - if (callee == null) - { - return null; - } - - var reference = CreateReference(callSiteContext, callee, isAssignmentTarget, hasExplicitLetStatement); - if (reference != null && !_alreadyResolved.Contains(reference.Context)) - { - callee.AddReference(reference); - _alreadyResolved.Add(reference.Context); - _alreadyResolved.Add(callSiteContext); - } - - if (fieldCall != null) - { - return ResolveInternal(fieldCall, callee); - } - - return callee; } - private Declaration Resolve(string identifierName, Declaration localScope, ContextAccessorType accessorType, bool parentContextIsVariableOrProcedureCall = false, bool isAssignmentTarget = false, bool hasStringQualifier = false) + public void Resolve(VBAParser.GoSubStmtContext context) { - return FindLocalScopeDeclaration(identifierName, localScope, parentContextIsVariableOrProcedureCall, isAssignmentTarget) - ?? FindModuleScopeProcedure(identifierName, localScope, accessorType, isAssignmentTarget) - ?? FindModuleScopeDeclaration(identifierName, localScope) - ?? FindProjectScopeDeclaration(identifierName, Equals(localScope, _currentScope) ? null : localScope, accessorType, hasStringQualifier); + ResolveLabel(context.valueStmt(), context.valueStmt().GetText()); } - private Declaration ResolveInternal(VBAParser.ICS_S_VariableOrProcedureCallContext context, Declaration localScope, ContextAccessorType accessorType = ContextAccessorType.GetValueOrReference, bool hasExplicitLetStatement = false, bool isAssignmentTarget = false) + public void Resolve(VBAParser.OnGoSubStmtContext context) { - if (context == null) + ResolveDefault(context.valueStmt()[0], context.valueStmt()[0].GetText()); + for (int labelIndex = 1; labelIndex < context.valueStmt().Count; labelIndex++) { - return null; - } - if (BindingMigrationHelper.HasParent(context)) - { - return null; + ResolveLabel(context.valueStmt()[labelIndex], context.valueStmt()[labelIndex].GetText()); } - if (BindingMigrationHelper.HasParent(context)) - { - return null; - } - - var identifierContext = context.identifier(); - var fieldCall = context.dictionaryCallStmt(); + } - var result = ResolveInternal(identifierContext, localScope, accessorType, fieldCall, hasExplicitLetStatement, isAssignmentTarget); - if (result != null && localScope != null /*&& !localScope.DeclarationType.HasFlag(DeclarationType.Member)*/) + public void Resolve(VBAParser.RedimStmtContext context) + { + foreach (var redimStmt in context.redimSubStmt()) { - var reference = CreateReference(context.identifier(), result, isAssignmentTarget); - if (reference != null) + foreach (var dimSpec in redimStmt.subscripts().subscript()) { - result.AddReference(reference); - //localScope.AddMemberCall(reference); + foreach (var expr in dimSpec.valueStmt()) + { + ResolveDefault(expr, expr.GetText()); + } } } - - return result; } - private Declaration ResolveInternal(VBAParser.DictionaryCallStmtContext fieldCall, Declaration parent, bool hasExplicitLetStatement = false, bool isAssignmentTarget = false) + public void Resolve(VBAParser.WhileWendStmtContext context) { - if (fieldCall == null) - { - return null; - } - - var parentType = ResolveType(parent); - if (parentType == null) - { - return null; - } - - var fieldName = fieldCall.identifier().GetText(); - var result = _declarationFinder.MatchName(fieldName).SingleOrDefault(declaration => declaration.ParentScope == parentType.Scope); - if (result == null) - { - return null; - } - - var identifierContext = fieldCall.identifier(); - var reference = CreateReference(identifierContext, result, isAssignmentTarget, hasExplicitLetStatement); - result.AddReference(reference); - _alreadyResolved.Add(reference.Context); - - return result; + ResolveDefault(context.valueStmt(), context.valueStmt().GetText()); } - private Declaration ResolveInternal(VBAParser.ICS_S_ProcedureOrArrayCallContext context, Declaration localScope, ContextAccessorType accessorType = ContextAccessorType.GetValueOrReference, bool hasExplicitLetStatement = false, bool isAssignmentTarget = false) + public void Resolve(VBAParser.DoLoopStmtContext context) { - if (context == null) - { - return null; - } - - var identifierContext = context.identifier(); - var fieldCall = context.dictionaryCallStmt(); - // todo: understand WTF [baseType] is doing in that grammar rule... - - if (localScope == null) + if (context.valueStmt() == null) { - localScope = _currentScope; - } - - var result = ResolveInternal(identifierContext, localScope, accessorType, fieldCall, hasExplicitLetStatement, isAssignmentTarget); - if (result != null && !localScope.DeclarationType.HasFlag(DeclarationType.Member)) - { - localScope.AddMemberCall(CreateReference(context.identifier(), result)); + return; } - - return result; + ResolveDefault(context.valueStmt(), context.valueStmt().GetText()); } - private Declaration ResolveInternal(VBAParser.ICS_S_MembersCallContext context, ContextAccessorType accessorType, Declaration localScope = null, bool hasExplicitLetStatement = false, bool isAssignmentTarget = false) + public void Resolve(VBAParser.BlockIfThenElseContext context) { - if (context == null) - { - return null; - } - - Declaration parent; - if (_withBlockQualifiers.Any()) + ResolveDefault(context.ifBlockStmt().ifConditionStmt(), context.ifBlockStmt().ifConditionStmt().GetText()); + if (context.ifElseIfBlockStmt() != null) { - parent = _withBlockQualifiers.Peek(); - if (parent == null) + foreach (var elseIfBlock in context.ifElseIfBlockStmt()) { - // if parent is an unknown type, continuing any further will only cause issues. - return null; + ResolveDefault(elseIfBlock.ifConditionStmt(), elseIfBlock.ifConditionStmt().GetText()); } } - else - { - if (localScope == null) - { - localScope = _currentScope; - } - parent = ResolveInternal(context.iCS_S_ProcedureOrArrayCall(), localScope, accessorType, hasExplicitLetStatement) - ?? ResolveInternal(context.iCS_S_VariableOrProcedureCall(), localScope, accessorType, hasExplicitLetStatement); - } - - var chainedCalls = context.iCS_S_MemberCall(); - var lastCall = chainedCalls.Last(); - foreach (var memberCall in chainedCalls) - { - // if we're on the left side of an assignment, only the last memberCall is the assignment target. - var isLast = memberCall.Equals(lastCall); - var accessor = isLast - ? accessorType - : ContextAccessorType.GetValueOrReference; - var isTarget = isLast && isAssignmentTarget; - - var parentType = ResolveType(parent); + } - var member = ResolveInternal(memberCall.iCS_S_ProcedureOrArrayCall(), parentType, accessor, hasExplicitLetStatement, isTarget) - ?? ResolveInternal(memberCall.iCS_S_VariableOrProcedureCall(), parentType, accessor, hasExplicitLetStatement, isTarget); + public void Resolve(VBAParser.InlineIfThenElseContext context) + { + ResolveDefault(context.ifConditionStmt(), context.ifConditionStmt().GetText()); + } - if (member == null && parent != null) + public void Resolve(VBAParser.SelectCaseStmtContext context) + { + ResolveDefault(context.valueStmt(), context.valueStmt().GetText()); + if (context.sC_Case() != null) + { + foreach (var caseClauseBlock in context.sC_Case()) { - var parentComTypeName = string.Empty; - Property property = null; - try - { - property = parent.QualifiedName.QualifiedModuleName.Component.Properties.Item("Parent"); - } - catch (NotSupportedException) + var caseClause = caseClauseBlock.sC_Cond(); + if (caseClause is VBAParser.CaseCondSelectionContext) { - // okay, no "Parent" property. tough luck. - } - - if (property != null) - { - parentComTypeName = ComHelper.GetTypeName(property.Object); + foreach (var selectClause in ((VBAParser.CaseCondSelectionContext)caseClause).sC_Selection()) + { + if (selectClause is VBAParser.CaseCondIsContext) + { + var ctx = (VBAParser.CaseCondIsContext)selectClause; + ResolveDefault(ctx.valueStmt(), ctx.valueStmt().GetText()); + } + else if (selectClause is VBAParser.CaseCondToContext) + { + var ctx = (VBAParser.CaseCondToContext)selectClause; + ResolveDefault(ctx.valueStmt()[0], ctx.valueStmt()[0].GetText()); + ResolveDefault(ctx.valueStmt()[0], ctx.valueStmt()[0].GetText()); + } + else + { + var ctx = (VBAParser.CaseCondValueContext)selectClause; + ResolveDefault(ctx.valueStmt(), ctx.valueStmt().GetText()); + } + } } - - // if the member can't be found on the parentType, maybe we're looking at a document or form module? - parentType = _declarationFinder.FindClass(_moduleDeclaration.ParentDeclaration, parentComTypeName); - member = ResolveInternal(memberCall.iCS_S_ProcedureOrArrayCall(), parentType, accessor, hasExplicitLetStatement, isTarget) - ?? ResolveInternal(memberCall.iCS_S_VariableOrProcedureCall(), parentType, accessor, hasExplicitLetStatement, isTarget); } - - if (member == null) - { - // if member still can't be found, it's hopeless - return null; - } - - var memberReference = CreateReference(GetMemberCallIdentifierContext(memberCall), parent); - member.AddMemberCall(memberReference); - parent = ResolveType(member); - } - - var fieldCall = context.dictionaryCallStmt(); - if (fieldCall == null) - { - return parent; } - - return ResolveInternal(fieldCall, parent, hasExplicitLetStatement, isAssignmentTarget); } - private Declaration ResolveInternal(VBAParser.ImplicitCallStmt_InStmtContext callSiteContext, Declaration localScope, ContextAccessorType accessorType, bool hasExplicitLetStatement = false, bool isAssignmentTarget = false) + public void Resolve(VBAParser.LetStmtContext context) { - if (callSiteContext == null) - { - return null; - } - - var dictionaryCall = callSiteContext.iCS_S_DictionaryCall(); - var fieldCall = dictionaryCall == null ? null : dictionaryCall.dictionaryCallStmt(); + var letStatement = context.LET(); + ResolveDefault(context.valueStmt()[0], context.valueStmt()[0].GetText(), ResolutionStatementContext.LetStatement, true, letStatement != null); + ResolveDefault(context.valueStmt()[1], context.valueStmt()[1].GetText()); + } - return ResolveInternal(callSiteContext.iCS_S_VariableOrProcedureCall(), localScope, accessorType, hasExplicitLetStatement, isAssignmentTarget) - ?? ResolveInternal(callSiteContext.iCS_S_ProcedureOrArrayCall(), localScope, accessorType, hasExplicitLetStatement, isAssignmentTarget) - ?? ResolveInternal(callSiteContext.iCS_S_MembersCall(), accessorType, localScope, hasExplicitLetStatement, isAssignmentTarget) - ?? ResolveInternal(callSiteContext.iCS_S_DictionaryCall(), localScope, accessorType, fieldCall, hasExplicitLetStatement, isAssignmentTarget); + public void Resolve(VBAParser.SetStmtContext context) + { + ResolveDefault(context.valueStmt()[0], context.valueStmt()[0].GetText(), ResolutionStatementContext.SetStatement, true, false); + ResolveDefault(context.valueStmt()[1], context.valueStmt()[1].GetText()); } - private Declaration ResolveInternal(VBAParser.ICS_B_ProcedureCallContext context) + public void Resolve(VBAParser.ExplicitCallStmtContext context) { - if (context == null) - { - return null; - } + ResolveDefault(context.explicitCallStmtExpression(), context.explicitCallStmtExpression().GetText(), ResolutionStatementContext.CallStatement); + } - var identifierContext = context.identifier(); - var callee = ResolveInternal(identifierContext, _currentScope); - if (callee == null) + public void Resolve(VBAParser.ConstStmtContext context) + { + foreach (var constStmt in context.constSubStmt()) { - return null; + ResolveDefault(constStmt.valueStmt(), constStmt.valueStmt().GetText()); } + } - var reference = CreateReference(identifierContext, callee); - if (reference != null) + public void Resolve(VBAParser.EraseStmtContext context) + { + foreach (var expr in context.valueStmt()) { - callee.AddReference(reference); - _alreadyResolved.Add(reference.Context); + ResolveDefault(expr, expr.GetText()); } - return callee; } - public void Resolve(VBAParser.ICS_B_ProcedureCallContext context) + public void Resolve(VBAParser.OpenStmtContext context) { - if (_alreadyResolved.Contains(context)) + foreach (var expr in context.valueStmt()) { - return; + ResolveDefault(expr, expr.GetText()); } - - ResolveInternal(context); + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); } - public void Resolve(VBAParser.ICS_B_MemberProcedureCallContext context) + public void Resolve(VBAParser.CloseStmtContext context) { - if (_alreadyResolved.Contains(context)) + foreach (var expr in context.fileNumber()) { - return; + ResolveDefault(expr.valueStmt(), expr.valueStmt().GetText()); } + } - var parentScope = ResolveInternal(context.implicitCallStmt_InStmt(), _currentScope, ContextAccessorType.GetValueOrReference); - var parentType = ResolveType(parentScope); - - if (_withBlockQualifiers.Any()) - { - parentType = ResolveType(_withBlockQualifiers.Peek()); - parentScope = ResolveInternal(context.implicitCallStmt_InStmt(), parentType, ContextAccessorType.GetValueOrReference) - ?? ResolveInternal(context.identifier(), parentType); - parentType = ResolveType(parentScope); - } + public void Resolve(VBAParser.SeekStmtContext context) + { + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + ResolveDefault(context.valueStmt(), context.valueStmt().GetText()); + } - var identifierContext = context.identifier(); - Declaration member = null; - if (parentType != null) + public void Resolve(VBAParser.LockStmtContext context) + { + foreach (var expr in context.valueStmt()) { - member = _declarationFinder - .MatchName(identifierContext.GetText()) - .SingleOrDefault(item => - item.QualifiedName.QualifiedModuleName == parentType.QualifiedName.QualifiedModuleName - && item.DeclarationType != DeclarationType.Event); + ResolveDefault(expr, expr.GetText()); } - else - { - if (parentScope != null) - { - var parentComTypeName = string.Empty; - Property property = null; - try - { - property = parentScope.QualifiedName.QualifiedModuleName.Component.Properties.Item("Parent"); - } - catch (NotSupportedException) - { - // okay, there's no "Parent" property there. move on. - } - - if (property != null) - { - parentComTypeName = ComHelper.GetTypeName(property.Object); - } - - // if the member can't be found on the parentType, maybe we're looking at a document or form module? - parentType = _declarationFinder.FindClass(_moduleDeclaration.ParentDeclaration, parentComTypeName); - member = ResolveInternal(identifierContext, parentType); - } - } - - if (member != null) - { - var reference = CreateReference(identifierContext, member); + } - parentScope.AddMemberCall(CreateReference(context.identifier(), member)); - member.AddReference(reference); - _alreadyResolved.Add(reference.Context); - } - else + public void Resolve(VBAParser.UnlockStmtContext context) + { + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + foreach (var expr in context.valueStmt()) { - return; + ResolveDefault(expr, expr.GetText()); } - - var fieldCall = context.dictionaryCallStmt(); - ResolveInternal(fieldCall, member); } - public void Resolve(VBAParser.ICS_S_VariableOrProcedureCallContext context) + public void Resolve(VBAParser.LineInputStmtContext context) { - ResolveInternal(context, _currentScope); + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + ResolveDefault(context.valueStmt(), context.valueStmt().GetText()); } - public void Resolve(VBAParser.ICS_S_ProcedureOrArrayCallContext context) + public void Resolve(VBAParser.WidthStmtContext context) { - ResolveInternal(context, _currentScope); + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + ResolveDefault(context.valueStmt(), context.valueStmt().GetText()); } - public void Resolve(VBAParser.ICS_S_MembersCallContext context) + public void Resolve(VBAParser.PrintStmtContext context) { - if (context == null || _alreadyResolved.Contains(context)) - { - return; - } - - if (context.Parent.Parent.Parent is VBAParser.VsNewContext) - { - // if we're in a ValueStatement/New context, we're actually resolving for a type: - ResolveType(context); - return; - } - - Declaration parent; - if (_withBlockQualifiers.Any()) - { - parent = ResolveType(_withBlockQualifiers.Peek()); - if (parent == null) - { - return; - } - } - else - { - parent = ResolveInternal(context.iCS_S_ProcedureOrArrayCall(), _currentScope) - ?? ResolveInternal(context.iCS_S_VariableOrProcedureCall(), _currentScope); - parent = ResolveType(parent); - } - - if (parent != null && parent.Context != null) + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + foreach (var expr in context.outputList().outputList_Expression()) { - var identifierContext = ((dynamic)parent.Context).identifier() as VBAParser.IdentifierContext; - - var parentReference = CreateReference(identifierContext, parent); - if (parentReference != null) + if (expr.valueStmt() != null) { - parent.AddReference(parentReference); - _alreadyResolved.Add(parentReference.Context); + ResolveDefault(expr.valueStmt(), expr.valueStmt().GetText()); } + ResolveArgsCall(expr.argsCall()); } + } - if (parent == null) - { - - - return; - } - - var chainedCalls = context.iCS_S_MemberCall(); - foreach (var memberCall in chainedCalls) + public void Resolve(VBAParser.WriteStmtContext context) + { + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + foreach (var expr in context.outputList().outputList_Expression()) { - var notationToken = memberCall.children[0]; - if (notationToken.GetText() == "!") - { - // the memberCall is a shorthand reference to the type's default member. - // since the reference isn't explicit, we don't need to care for it. - // (and we couldn't handle it if we wanted to, since we aren't parsing member attributes) - return; - } - - var member = ResolveInternal(memberCall.iCS_S_ProcedureOrArrayCall(), parent) - ?? ResolveInternal(memberCall.iCS_S_VariableOrProcedureCall(), parent); - - if (member == null && parent != null) - { - var parentComTypeName = string.Empty; - Property property = null; - try - { - property = parent.QualifiedName.QualifiedModuleName.Component.Properties.Item("Parent"); - } - catch - { - // not all document components have a "Parent" property - that will blow up - } - - if (property != null) - { - parentComTypeName = ComHelper.GetTypeName(property.Object); - } - - // if the member can't be found on the parentType, maybe we're looking at a document or form module? - var parentType = _declarationFinder.FindClass(null, parentComTypeName); - member = ResolveInternal(memberCall.iCS_S_ProcedureOrArrayCall(), parentType) - ?? ResolveInternal(memberCall.iCS_S_VariableOrProcedureCall(), parentType); - } - - if (member == null) + if (expr.valueStmt() != null) { - return; + ResolveDefault(expr.valueStmt(), expr.valueStmt().GetText()); } - - member.AddReference(CreateReference(GetMemberCallIdentifierContext(memberCall), member)); - parent = ResolveType(member); - } - - var fieldCall = context.dictionaryCallStmt(); - if (fieldCall == null) - { - return; + ResolveArgsCall(expr.argsCall()); } - - ResolveInternal(fieldCall, parent); - _alreadyResolved.Add(context); } - private VBAParser.IdentifierContext GetMemberCallIdentifierContext(VBAParser.ICS_S_MemberCallContext callContext) + public void Resolve(VBAParser.InputStmtContext context) { - if (callContext == null) + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + foreach (var expr in context.valueStmt()) { - return null; - } - - var procedureOrArrayCall = callContext.iCS_S_ProcedureOrArrayCall(); - if (procedureOrArrayCall != null) - { - return procedureOrArrayCall.identifier(); + ResolveDefault(expr, expr.GetText()); } - - var variableOrProcedureCall = callContext.iCS_S_VariableOrProcedureCall(); - if (variableOrProcedureCall != null) - { - return variableOrProcedureCall.identifier(); - } - - return null; } - public void Resolve(VBAParser.ICS_S_DictionaryCallContext context) + public void Resolve(VBAParser.PutStmtContext context) { - TryResolve(context); + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + foreach (var expr in context.valueStmt()) + { + ResolveDefault(expr, expr.GetText()); + } } - private void TryResolve(TContext context) where TContext : ParserRuleContext + public void Resolve(VBAParser.GetStmtContext context) { - if (context == null || _alreadyResolved.Contains(context)) + ResolveDefault(context.fileNumber().valueStmt(), context.fileNumber().valueStmt().GetText()); + foreach (var expr in context.valueStmt()) { - return; + ResolveDefault(expr, expr.GetText()); } - - ResolveInternal(context, _currentScope); } - public void Resolve(VBAParser.LetStmtContext context) + public void Resolve(VBAParser.LsetStmtContext context) { - var leftSide = context.implicitCallStmt_InStmt(); - var letStatement = context.LET(); - ResolveInternal(leftSide, _currentScope, ContextAccessorType.AssignValue, letStatement != null, true); + foreach (var expr in context.valueStmt()) + { + ResolveDefault(expr, expr.GetText()); + } } - public void Resolve(VBAParser.SetStmtContext context) + public void Resolve(VBAParser.RsetStmtContext context) { - var leftSide = context.implicitCallStmt_InStmt(); - ResolveInternal(leftSide, _currentScope, ContextAccessorType.AssignReference, false, true); + foreach (var expr in context.valueStmt()) + { + ResolveDefault(expr, expr.GetText()); + } } public void Resolve(VBAParser.AsTypeClauseContext context) @@ -981,453 +430,120 @@ public void Resolve(VBAParser.AsTypeClauseContext context) var baseType = asType.baseType(); if (baseType != null) { + // Fixed-Length strings can have a constant-name as length that is a simple-name-expression that also has to be resolved. + var length = context.fieldLength(); + if (context.fieldLength() != null && context.fieldLength().identifier() != null) + { + ResolveDefault(context.fieldLength().identifier(), context.fieldLength().identifier().GetText()); + } return; } - string typeExpression = asType.complexType().GetText(); - var boundExpression = _bindingService.ResolveType(_moduleDeclaration, _currentScope, typeExpression); - if (boundExpression != null) - { - _boundExpressionVisitor.AddIdentifierReferences(boundExpression, declaration => CreateReference(asType.complexType(), declaration)); - } + ResolveType(asType.complexType(), asType.complexType().GetText()); } public void Resolve(VBAParser.ForNextStmtContext context) { - var identifiers = context.identifier(); - var identifier = ResolveInternal(identifiers[0], _currentScope, ContextAccessorType.AssignValue, null, false, true); - if (identifier == null) + var firstExpression = _bindingService.ResolveDefault(_moduleDeclaration, _currentParent, context.valueStmt()[0].GetText(), GetInnerMostWithExpression(), ResolutionStatementContext.Undefined); + if (firstExpression != null) { - return; + // each iteration counts as an assignment + _boundExpressionVisitor.AddIdentifierReferences(firstExpression, (exprCtx, identifier, declaration) => CreateReference(context.valueStmt()[0], identifier, declaration, RubberduckParserState.CreateBindingSelection(context.valueStmt()[0], exprCtx), true)); + // each iteration also counts as a plain usage + _boundExpressionVisitor.AddIdentifierReferences(firstExpression, (exprCtx, identifier, declaration) => CreateReference(context.valueStmt()[0], identifier, declaration, RubberduckParserState.CreateBindingSelection(context.valueStmt()[0], exprCtx))); } - - // each iteration counts as an assignment - var assignmentReference = CreateReference(identifiers[0], identifier, true); - identifier.AddReference(assignmentReference); - - // each iteration also counts as a plain usage - var usageReference = CreateReference(identifiers[0], identifier); - identifier.AddReference(usageReference); - - if (identifiers.Count > 1) + for (int exprIndex = 1; exprIndex < context.valueStmt().Count; exprIndex++) { - var endForBlockReference = CreateReference(identifiers[1], identifier); - identifier.AddReference(endForBlockReference); + ResolveDefault(context.valueStmt()[exprIndex], context.valueStmt()[exprIndex].GetText()); } } public void Resolve(VBAParser.ForEachStmtContext context) { - var identifiers = context.identifier(); - var identifier = ResolveInternal(identifiers[0], _currentScope, ContextAccessorType.AssignValue, null, false, true); - if (identifier == null) + var firstExpression = _bindingService.ResolveDefault(_moduleDeclaration, _currentParent, context.valueStmt()[0].GetText(), GetInnerMostWithExpression(), ResolutionStatementContext.Undefined); + if (firstExpression != null) { - return; + // each iteration counts as an assignment + _boundExpressionVisitor.AddIdentifierReferences(firstExpression, (exprCtx, identifier, declaration) => CreateReference(context.valueStmt()[0], identifier, declaration, RubberduckParserState.CreateBindingSelection(context.valueStmt()[0], exprCtx), true)); + // each iteration also counts as a plain usage + _boundExpressionVisitor.AddIdentifierReferences(firstExpression, (exprCtx, identifier, declaration) => CreateReference(context.valueStmt()[0], identifier, declaration, RubberduckParserState.CreateBindingSelection(context.valueStmt()[0], exprCtx))); } - // each iteration counts as an assignment - var assignmentReference = CreateReference(identifiers[0], identifier, true); - identifier.AddReference(assignmentReference); - - // each iteration also counts as a plain usage - CreateReference will return null here, need to create it manually. - var name = identifiers[0].GetText(); - var selection = identifiers[0].GetSelection(); - var annotations = FindAnnotations(selection.StartLine); - var usageReference = new IdentifierReference(_qualifiedModuleName, _currentScope, _currentParent, name, selection, identifiers[0], identifier, false, false, annotations); - identifier.AddReference(usageReference); - - if (identifiers.Count > 1) + for (int exprIndex = 1; exprIndex < context.valueStmt().Count; exprIndex++) { - identifier.AddReference(CreateReference(identifiers[1], identifier)); + ResolveDefault(context.valueStmt()[exprIndex], context.valueStmt()[exprIndex].GetText()); } } public void Resolve(VBAParser.ImplementsStmtContext context) { - var boundExpression = _bindingService.ResolveType(_moduleDeclaration, _currentScope, context.valueStmt().GetText()); - if (boundExpression != null) - { - _boundExpressionVisitor.AddIdentifierReferences(boundExpression, declaration => CreateReference(context.valueStmt(), declaration)); - } - } - - public void Resolve(VBAParser.VsAddressOfContext context) - { - var boundExpression = _bindingService.ResolveProcedurePointer(_moduleDeclaration, _currentScope, context.valueStmt().GetText()); - if (boundExpression != null) - { - _boundExpressionVisitor.AddIdentifierReferences(boundExpression, declaration => CreateReference(context.valueStmt(), declaration)); - } + ResolveType(context.valueStmt(), context.valueStmt().GetText()); } public void Resolve(VBAParser.RaiseEventStmtContext context) { - ResolveInternal(context.identifier(), _currentScope); - } - - public void Resolve(VBAParser.ResumeStmtContext context) - { - ResolveInternal(context.identifier(), _currentScope); - } - - public void Resolve(VBAParser.FieldLengthContext context) - { - ResolveInternal(context.identifier(), _currentScope); - } - - public void Resolve(VBAParser.VsAssignContext context) - { - // named parameter reference must be scoped to called procedure - var callee = FindParentCall(context); - ResolveInternal(context.implicitCallStmt_InStmt(), callee, ContextAccessorType.AssignValueOrReference); - } - - private Declaration FindParentCall(VBAParser.VsAssignContext context) - { - var calleeContext = context.Parent.Parent.Parent; - return ResolveInternal(calleeContext as VBAParser.ICS_B_ProcedureCallContext) - ?? ResolveInternal(calleeContext as VBAParser.ICS_S_VariableOrProcedureCallContext, _currentScope) - ?? ResolveInternal(calleeContext as VBAParser.ICS_S_ProcedureOrArrayCallContext, _currentScope) - ?? ResolveInternal(calleeContext as VBAParser.ICS_S_MembersCallContext, _currentScope); - } - - private Declaration FindFunctionOrPropertyGetter(string identifierName, Declaration localScope = null) - { - if (localScope == null) + var eventDeclaration = _bindingService.ResolveEvent(_moduleDeclaration, context.identifier().GetText()); + if (eventDeclaration != null) { - localScope = _currentScope; + eventDeclaration.AddReference(CreateReference(context.identifier(), context.identifier().GetText(), eventDeclaration, context.identifier().GetSelection())); } - - var matches = _declarationFinder.MatchName(identifierName); - var parent = matches.SingleOrDefault(item => - (item.DeclarationType.HasFlag(DeclarationType.Function) || item.DeclarationType.HasFlag(DeclarationType.PropertyGet)) - && item.Equals(localScope)); - - return parent; + ResolveArgsCall(context.argsCall()); } - private Declaration FindLocalScopeDeclaration(string identifierName, Declaration localScope = null, bool parentContextIsVariableOrProcedureCall = false, bool isAssignmentTarget = false) + public void Resolve(VBAParser.MidStmtContext context) { - if (localScope == null) - { - localScope = _currentScope; - } - - if (_moduleTypes.Contains(localScope.DeclarationType) || localScope.DeclarationType.HasFlag(DeclarationType.Project)) - { - // "local scope" is not intended to be module level. - return null; - } - - var matches = _declarationFinder.MatchName(identifierName); - - var results = matches.Where(item => - ((localScope.Equals(item.ParentDeclaration) - || (item.DeclarationType.HasFlag(DeclarationType.Parameter) && localScope.Equals(item.ParentScopeDeclaration))) - || (isAssignmentTarget && item.Scope == localScope.Scope)) - && localScope.Context.GetSelection().Contains(item.Selection) - && !_moduleTypes.Contains(item.DeclarationType)) - .ToList(); - - if (results.Count >= 1 && isAssignmentTarget - && _returningMemberTypes.Contains(localScope.DeclarationType) - && localScope.IdentifierName == identifierName - && parentContextIsVariableOrProcedureCall) - { - // if we have multiple matches and we're in a returning member, - // in an in-statement variable or procedure call context that's - // the target of an assignment, then we have to assume we're looking - // at the assignment of the member's return value, i.e.: - /* - * Property Get Foo() As Integer - * Foo = 42 '<~ this Foo here - * End Sub - */ - return FindFunctionOrPropertyGetter(identifierName, localScope); - } - - // if we're not returning a function/getter value, then there can be only one: - var result = results.Where(item => !item.Equals(localScope)).ToList(); - return result.Count == 1 ? result.SingleOrDefault() : null; + ResolveArgsCall(context.argsCall()); } - private Declaration FindModuleScopeDeclaration(string identifierName, Declaration localScope = null) + private void ResolveArgsCall(VBAParser.ArgsCallContext argsCall) { - if (localScope == null) - { - localScope = _currentScope; - } - - if (localScope.DeclarationType.HasFlag(DeclarationType.Project)) - { - return null; - } - - if (identifierName == "Me" && _moduleDeclaration.DeclarationType.HasFlag(DeclarationType.ClassModule)) + if (argsCall == null) { - return _moduleDeclaration; + return; } - - var scope = localScope; // avoid implicitly capturing 'this' - var matches = _declarationFinder.MatchName(identifierName).Where(item => !item.Equals(scope)).ToList(); - - var result = matches.Where(item => - (localScope.ParentScopeDeclaration == null || localScope.ParentScopeDeclaration.Equals(item.ParentScopeDeclaration)) - && !item.DeclarationType.HasFlag(DeclarationType.Member) - && !_moduleTypes.Contains(item.DeclarationType) - && item.DeclarationType != DeclarationType.UserDefinedType && item.DeclarationType != DeclarationType.Enumeration - && (item.DeclarationType != DeclarationType.Event || IsLocalEvent(item, localScope))) - .ToList(); - - if (matches.Any() && !result.Any()) + foreach (var argCall in argsCall.argCall()) { - result = matches.Where(item => - (localScope != null && localScope.Equals(item.ParentScopeDeclaration)) - && !item.DeclarationType.HasFlag(DeclarationType.Member) - && !_moduleTypes.Contains(item.DeclarationType) - && item.DeclarationType != DeclarationType.UserDefinedType && item.DeclarationType != DeclarationType.Enumeration - && (item.DeclarationType != DeclarationType.Event || IsLocalEvent(item, localScope))) - .ToList(); + ResolveDefault(argCall.valueStmt(), argCall.valueStmt().GetText()); } - - return result.Count == 1 ? result.SingleOrDefault() : null; // return null for multiple matches - } - - private bool IsLocalEvent(Declaration item, Declaration localScope) - { - return item.DeclarationType == DeclarationType.Event - && localScope.ProjectId == _currentScope.ProjectId - && localScope.ComponentName == _currentScope.ComponentName; } - private Declaration FindModuleScopeProcedure(string identifierName, Declaration localScope, ContextAccessorType accessorType, bool isAssignmentTarget = false) + public void Resolve(VBAParser.ResumeStmtContext context) { - if (localScope == null) - { - localScope = _currentScope; - } - - if (localScope.DeclarationType == DeclarationType.Project) + if (context.valueStmt() == null) { - return null; + return; } - - var matches = _declarationFinder.MatchName(identifierName); - var result = matches.Where(item => - _memberTypes.Contains(item.DeclarationType) - && localScope.ProjectId == item.ProjectId - && (localScope.ComponentName.Replace("_", string.Empty) == item.ComponentName.Replace("_", string.Empty)) - && (IsProcedure(item, localScope) || IsPropertyAccessor(item, accessorType, localScope, isAssignmentTarget))) - .ToList(); - - return result.Count == 1 ? result.SingleOrDefault() : null; - } - - private bool IsStdModuleMember(Declaration declaration) - { - return declaration.ParentDeclaration != null - && declaration.ParentDeclaration.DeclarationType == DeclarationType.ProceduralModule; - } - - private bool IsPublicEnum(Declaration declaration) - { - return (IsPublicOrGlobal(declaration) || declaration.Accessibility == Accessibility.Implicit) - && (declaration.DeclarationType == DeclarationType.Enumeration - || declaration.DeclarationType == DeclarationType.EnumerationMember); - } - - private bool IsStaticClass(Declaration declaration) - { - var isDocumentOrForm = !declaration.IsBuiltIn && - (declaration.QualifiedName.QualifiedModuleName.Component.Type == vbext_ComponentType.vbext_ct_Document - || - declaration.QualifiedName.QualifiedModuleName.Component.Type == vbext_ComponentType.vbext_ct_MSForm); - - return isDocumentOrForm || (declaration.ParentDeclaration != null - && declaration.ParentDeclaration.DeclarationType == DeclarationType.ClassModule - && declaration.ParentDeclaration.HasPredeclaredId); - + ResolveLabel(context.valueStmt(), context.valueStmt().GetText()); } - private readonly IReadOnlyList SpecialCasedTokens = new[]{ - Tokens.Error, - Tokens.Hex, - Tokens.Oct, - Tokens.Str, - Tokens.CurDir, - Tokens.Command, - Tokens.Environ, - Tokens.Chr, - Tokens.ChrW, - Tokens.Format, - Tokens.LCase, - Tokens.Left, - Tokens.LeftB, - Tokens.LTrim, - Tokens.Mid, - Tokens.MidB, - Tokens.Trim, - Tokens.Right, - Tokens.RightB, - Tokens.RTrim, - Tokens.UCase - }; - - private Declaration FindProjectScopeDeclaration(string identifierName, Declaration localScope = null, ContextAccessorType accessorType = ContextAccessorType.GetValueOrReference, bool hasStringQualifier = false) + public void Resolve(VBAParser.ImplicitCallStmt_InBlockContext context) { - var matches = _declarationFinder.MatchName(identifierName).Where(item => - item.DeclarationType == DeclarationType.Project - || item.DeclarationType == DeclarationType.ProceduralModule - || IsPublicEnum(item) - || IsStaticClass(item) - || IsStdModuleMember(item) - || (item.ParentScopeDeclaration != null && item.ParentScopeDeclaration.Equals(localScope))).ToList(); - - if (matches.Count == 1 && !SpecialCasedTokens.Contains(matches.Single().IdentifierName)) - { - return matches.Single(); - } - - if (localScope == null && _withBlockQualifiers.Any()) - { - localScope = _withBlockQualifiers.Peek(); - } - - var result = matches.Where(IsUserDeclarationInProjectScope).ToList(); - if (result.Count == 1) + ParserRuleContext subContext; + if (context.iCS_B_MemberProcedureCall() != null) { - return result.SingleOrDefault(); - } - - result = matches.Where(item => IsBuiltInDeclarationInScope(item, localScope)).ToList(); - if (result.Count == 1 && !SpecialCasedTokens.Contains(result.Single().IdentifierName)) - { - return result.SingleOrDefault(); + subContext = context.iCS_B_MemberProcedureCall(); } else { - var nonModules = matches.Where(item => !_moduleTypes.Contains(item.DeclarationType)).ToList(); - var temp = nonModules.Where(item => item.DeclarationType == - (accessorType == ContextAccessorType.GetValueOrReference - ? DeclarationType.PropertyGet - : item.DeclarationType)) - .ToList(); - if (temp.Count > 1) - { - if (localScope == null) - { - var names = new[] { "Global", "_Global" }; - var appGlobals = temp.Where(item => names.Contains(item.ParentDeclaration.IdentifierName)).ToList(); - if (appGlobals.Count == 1) - { - return appGlobals.Single(); - } - } - else - { - var names = new[] { localScope.IdentifierName, "I" + localScope.IdentifierName }; - var members = temp.Where(item => names.Contains(item.ParentScopeDeclaration.IdentifierName) - && item.DeclarationType == (accessorType == ContextAccessorType.GetValueOrReference - ? DeclarationType.PropertyGet - : item.DeclarationType)).ToList(); - if (members.Count == 1) - { - return members.Single(); - } - } - - Debug.WriteLine("Ambiguous match in '{0}': '{1}'", localScope == null ? "(unknown)" : localScope.IdentifierName, identifierName); - } - } - - // VBA.Strings.Left function is actually called _B_var_Left; - // VBA.Strings.Left$ is _B_str_Left. - // same for all $-terminated functions. - var surrogateName = hasStringQualifier - ? "_B_str_" + identifierName - : "_B_var_" + identifierName; - - matches = _declarationFinder.MatchName(surrogateName).ToList(); - if (matches.Count == 1) - { - return matches.Single(); + subContext = context.iCS_B_ProcedureCall(); } - - Debug.WriteLine("Unknown identifier in '{0}': '{1}'", localScope == null ? "(unknown)" : localScope.IdentifierName, identifierName); - return null; + string expr = subContext.GetText(); + // This represents a CALL statement without the CALL keyword which is slightly different than a normal expression because it does not allow parentheses around its argument list. + ResolveDefault(subContext, expr, ResolutionStatementContext.CallStatement); } - private static bool IsPublicOrGlobal(Declaration item) + public void Resolve(VBAParser.EnumerationStmtContext context) { - return item.Accessibility == Accessibility.Global - || item.Accessibility == Accessibility.Public; - } - - private bool IsUserDeclarationInProjectScope(Declaration item) - { - var isNonMemberUserDeclaration = !item.IsBuiltIn - && !item.DeclarationType.HasFlag(DeclarationType.Member) - // events can't be called outside the class they're declared in, exclude them as well: - && item.DeclarationType != DeclarationType.Event; - - // declaration is in-scope if it's public/global, or if it's a module/class: - return isNonMemberUserDeclaration && (IsPublicOrGlobal(item) || _moduleTypes.Contains(item.DeclarationType)); - } - - private static bool IsBuiltInDeclarationInScope(Declaration item, Declaration localScope) - { - var isBuiltInNonEvent = item.IsBuiltIn && item.DeclarationType != DeclarationType.Event; - - // if localScope is null, we can only resolve to a global: - // note: built-in declarations are designed that way - var isBuiltInGlobal = localScope == null && item.Accessibility == Accessibility.Global; - - // if localScope is not null, we can resolve to any public or global in that scope: - var isInLocalScope = (localScope != null && item.Accessibility == Accessibility.Global - && localScope.IdentifierName == item.ParentDeclaration.IdentifierName) - || (localScope != null && localScope.QualifiedName.QualifiedModuleName.Component != null - && localScope.QualifiedName.QualifiedModuleName.Component.Type == Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_Document - && item.Accessibility == Accessibility.Public && item.ParentDeclaration.DeclarationType == localScope.DeclarationType); - - return isBuiltInNonEvent && (isBuiltInGlobal || isInLocalScope); - } - - private static bool IsProcedure(Declaration item, Declaration localScope) - { - var isProcedure = item.DeclarationType == DeclarationType.Procedure - || item.DeclarationType == DeclarationType.Function; - var isSameModule = item.ProjectId == localScope.ProjectId - && item.ComponentName == localScope.ComponentName; - return isProcedure && isSameModule; - } - - private bool IsPropertyAccessor(Declaration item, ContextAccessorType accessorType, Declaration localScope, bool isAssignmentTarget = false) - { - var isProperty = item.DeclarationType.HasFlag(DeclarationType.Property); - if (!isProperty) + if (context.enumerationStmt_Constant() == null) { - return false; - } - - if (item.Equals(localScope) && item.DeclarationType == DeclarationType.PropertyGet) - { - // we're resolving the getter's return value assignment - return true; + return; } - if (item.Equals(localScope)) + foreach (var enumMember in context.enumerationStmt_Constant()) { - // getter can't reference setter.. right? - return false; + if (enumMember.valueStmt() != null) + { + ResolveDefault(enumMember.valueStmt(), enumMember.valueStmt().GetText()); + } } - - return (accessorType == ContextAccessorType.AssignValue && - item.DeclarationType == DeclarationType.PropertyLet) - || - (accessorType == ContextAccessorType.AssignReference && - item.DeclarationType == DeclarationType.PropertySet) - || - (accessorType == ContextAccessorType.GetValueOrReference && - item.DeclarationType == DeclarationType.PropertyGet && - !isAssignmentTarget); } } } \ No newline at end of file diff --git a/Rubberduck.Parsing/Symbols/ParameterDeclaration.cs b/Rubberduck.Parsing/Symbols/ParameterDeclaration.cs index 6cb06960f2..6c76710002 100644 --- a/Rubberduck.Parsing/Symbols/ParameterDeclaration.cs +++ b/Rubberduck.Parsing/Symbols/ParameterDeclaration.cs @@ -15,7 +15,7 @@ public class ParameterDeclaration : Declaration /// public ParameterDeclaration(QualifiedMemberName qualifiedName, Declaration parentDeclaration, - string asTypeName, + string asTypeName, bool isOptional, bool isByRef, bool isArray = false, @@ -35,8 +35,8 @@ public ParameterDeclaration(QualifiedMemberName qualifiedName, Declaration parentDeclaration, ParserRuleContext context, Selection selection, - string asTypeName, - bool isOptional, + string asTypeName, + bool isOptional, bool isByRef, bool isArray = false, bool isParamArray = false) diff --git a/Rubberduck.Parsing/Symbols/ParserRuleContextHelper.cs b/Rubberduck.Parsing/Symbols/ParserRuleContextHelper.cs new file mode 100644 index 0000000000..8c9e21a497 --- /dev/null +++ b/Rubberduck.Parsing/Symbols/ParserRuleContextHelper.cs @@ -0,0 +1,26 @@ +using Antlr4.Runtime; +using System; + +namespace Rubberduck.Parsing.Symbols +{ + public static class ParserRuleContextHelper + { + public static bool HasParent(RuleContext context) + { + return GetParent(context) != null; + } + + public static T GetParent(RuleContext context) + { + if (context == null) + { + return default(T); + } + if (context is T) + { + return (T)Convert.ChangeType(context, typeof(T)); + } + return GetParent(context.Parent); + } + } +} diff --git a/Rubberduck.Parsing/Symbols/ProceduralModuleDeclaration.cs b/Rubberduck.Parsing/Symbols/ProceduralModuleDeclaration.cs index 3522a65f34..54a2ebf1c7 100644 --- a/Rubberduck.Parsing/Symbols/ProceduralModuleDeclaration.cs +++ b/Rubberduck.Parsing/Symbols/ProceduralModuleDeclaration.cs @@ -11,7 +11,7 @@ public ProceduralModuleDeclaration( QualifiedMemberName qualifiedName, Declaration projectDeclaration, string name, - bool isBuiltIn, + bool isBuiltIn, IEnumerable annotations, Attributes attributes) : base( diff --git a/Rubberduck.Parsing/Symbols/ProjectDeclaration.cs b/Rubberduck.Parsing/Symbols/ProjectDeclaration.cs index f24a2d97fc..45b4719f12 100644 --- a/Rubberduck.Parsing/Symbols/ProjectDeclaration.cs +++ b/Rubberduck.Parsing/Symbols/ProjectDeclaration.cs @@ -15,7 +15,7 @@ public ProjectDeclaration( qualifiedName, null, (Declaration)null, - name, + name, false, false, Accessibility.Implicit, diff --git a/Rubberduck.Parsing/Symbols/PropertyGetDeclaration.cs b/Rubberduck.Parsing/Symbols/PropertyGetDeclaration.cs new file mode 100644 index 0000000000..cd221c48dc --- /dev/null +++ b/Rubberduck.Parsing/Symbols/PropertyGetDeclaration.cs @@ -0,0 +1,75 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; +using System.Collections.Generic; +using System.Linq; + +namespace Rubberduck.Parsing.Symbols +{ + public sealed class PropertyGetDeclaration : Declaration, IDeclarationWithParameter, ICanBeDefaultMember + { + private readonly List _parameters; + + public PropertyGetDeclaration( + QualifiedMemberName name, + Declaration parent, + Declaration parentScope, + string asTypeName, + Accessibility accessibility, + ParserRuleContext context, + Selection selection, + bool isBuiltIn, + IEnumerable annotations, + Attributes attributes) + : base( + name, + parent, + parentScope, + asTypeName, + false, + false, + accessibility, + DeclarationType.PropertyGet, + context, + selection, + isBuiltIn, + annotations, + attributes) + { + _parameters = new List(); + } + + public IEnumerable Parameters + { + get + { + return _parameters.ToList(); + } + } + + public void AddParameter(Declaration parameter) + { + _parameters.Add(parameter); + } + + /// + /// Gets an attribute value indicating whether a member is a class' default member. + /// If this value is true, any reference to an instance of the class it's the default member of, + /// should count as a member call to this member. + /// + public bool IsDefaultMember + { + get + { + IEnumerable value; + if (Attributes.TryGetValue(IdentifierName + ".VB_UserMemId", out value)) + { + return value.Single() == "0"; + } + + return false; + } + } + } +} diff --git a/Rubberduck.Parsing/Symbols/PropertyLetDeclaration.cs b/Rubberduck.Parsing/Symbols/PropertyLetDeclaration.cs new file mode 100644 index 0000000000..4b61f3b0f2 --- /dev/null +++ b/Rubberduck.Parsing/Symbols/PropertyLetDeclaration.cs @@ -0,0 +1,76 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; +using System.Collections.Generic; +using System; +using System.Linq; + +namespace Rubberduck.Parsing.Symbols +{ + public sealed class PropertyLetDeclaration : Declaration, IDeclarationWithParameter, ICanBeDefaultMember + { + private readonly List _parameters; + + public PropertyLetDeclaration( + QualifiedMemberName name, + Declaration parent, + Declaration parentScope, + string asTypeName, + Accessibility accessibility, + ParserRuleContext context, + Selection selection, + bool isBuiltIn, + IEnumerable annotations, + Attributes attributes) + : base( + name, + parent, + parentScope, + asTypeName, + false, + false, + accessibility, + DeclarationType.PropertyLet, + context, + selection, + isBuiltIn, + annotations, + attributes) + { + _parameters = new List(); + } + + public IEnumerable Parameters + { + get + { + return _parameters.ToList(); + } + } + + public void AddParameter(Declaration parameter) + { + _parameters.Add(parameter); + } + + /// + /// Gets an attribute value indicating whether a member is a class' default member. + /// If this value is true, any reference to an instance of the class it's the default member of, + /// should count as a member call to this member. + /// + public bool IsDefaultMember + { + get + { + IEnumerable value; + if (Attributes.TryGetValue(IdentifierName + ".VB_UserMemId", out value)) + { + return value.Single() == "0"; + } + + return false; + } + } + } +} diff --git a/Rubberduck.Parsing/Symbols/PropertySetDeclaration.cs b/Rubberduck.Parsing/Symbols/PropertySetDeclaration.cs new file mode 100644 index 0000000000..fc9d85f02c --- /dev/null +++ b/Rubberduck.Parsing/Symbols/PropertySetDeclaration.cs @@ -0,0 +1,75 @@ +using Antlr4.Runtime; +using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; +using System.Collections.Generic; +using System.Linq; + +namespace Rubberduck.Parsing.Symbols +{ + public sealed class PropertySetDeclaration : Declaration, IDeclarationWithParameter, ICanBeDefaultMember + { + private readonly List _parameters; + + public PropertySetDeclaration( + QualifiedMemberName name, + Declaration parent, + Declaration parentScope, + string asTypeName, + Accessibility accessibility, + ParserRuleContext context, + Selection selection, + bool isBuiltIn, + IEnumerable annotations, + Attributes attributes) + : base( + name, + parent, + parentScope, + asTypeName, + false, + false, + accessibility, + DeclarationType.PropertySet, + context, + selection, + isBuiltIn, + annotations, + attributes) + { + _parameters = new List(); + } + + public IEnumerable Parameters + { + get + { + return _parameters.ToList(); + } + } + + public void AddParameter(Declaration parameter) + { + _parameters.Add(parameter); + } + + /// + /// Gets an attribute value indicating whether a member is a class' default member. + /// If this value is true, any reference to an instance of the class it's the default member of, + /// should count as a member call to this member. + /// + public bool IsDefaultMember + { + get + { + IEnumerable value; + if (Attributes.TryGetValue(IdentifierName + ".VB_UserMemId", out value)) + { + return value.Single() == "0"; + } + + return false; + } + } + } +} diff --git a/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs b/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs index 6c80a76f60..b6f70f8485 100644 --- a/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs +++ b/Rubberduck.Parsing/Symbols/ReferencedDeclarationsCollector.cs @@ -18,6 +18,7 @@ using TYPEFLAGS = System.Runtime.InteropServices.ComTypes.TYPEFLAGS; using VARDESC = System.Runtime.InteropServices.ComTypes.VARDESC; using Rubberduck.Parsing.Annotations; +using System.Linq; namespace Rubberduck.Parsing.Symbols { @@ -83,7 +84,7 @@ private string GetTypeName(TYPEDESC desc, ITypeInfo info) switch (vt) { case VarEnum.VT_PTR: - tdesc = (TYPEDESC) Marshal.PtrToStructure(desc.lpValue, typeof (TYPEDESC)); + tdesc = (TYPEDESC)Marshal.PtrToStructure(desc.lpValue, typeof(TYPEDESC)); return GetTypeName(tdesc, info); case VarEnum.VT_USERDEFINED: unchecked @@ -94,7 +95,7 @@ private string GetTypeName(TYPEDESC desc, ITypeInfo info) return GetTypeName(refTypeInfo); } case VarEnum.VT_CARRAY: - tdesc = (TYPEDESC) Marshal.PtrToStructure(desc.lpValue, typeof (TYPEDESC)); + tdesc = (TYPEDESC)Marshal.PtrToStructure(desc.lpValue, typeof(TYPEDESC)); return GetTypeName(tdesc, info) + "()"; default: string result; @@ -143,7 +144,7 @@ public IEnumerable GetDeclarationsForReference(Reference reference) { typeLibrary.GetTypeInfo(i, out info); } - catch(NullReferenceException) + catch (NullReferenceException) { yield break; } @@ -172,7 +173,7 @@ public IEnumerable GetDeclarationsForReference(Reference reference) IntPtr typeAttributesPointer; info.GetTypeAttr(out typeAttributesPointer); - var typeAttributes = (TYPEATTR)Marshal.PtrToStructure(typeAttributesPointer, typeof (TYPEATTR)); + var typeAttributes = (TYPEATTR)Marshal.PtrToStructure(typeAttributesPointer, typeof(TYPEATTR)); //var implements = GetImplementedInterfaceNames(typeAttributes, info); var attributes = new Attributes(); @@ -188,14 +189,14 @@ public IEnumerable GetDeclarationsForReference(Reference reference) } else if (typeDeclarationType == DeclarationType.ClassModule) { - moduleDeclaration = new ClassModuleDeclaration(typeQualifiedMemberName, projectDeclaration, typeName, true, new List(), attributes, isExposed: true); + moduleDeclaration = new ClassModuleDeclaration(typeQualifiedMemberName, projectDeclaration, typeName, true, new List(), attributes, isExposed: true, isGlobalClassModule: true); } else { moduleDeclaration = new Declaration(typeQualifiedMemberName, projectDeclaration, projectDeclaration, typeName, false, false, Accessibility.Global, typeDeclarationType, null, Selection.Home, true, null, attributes); } yield return moduleDeclaration; - + for (var memberIndex = 0; memberIndex < typeAttributes.cFuncs; memberIndex++) { FUNCDESC memberDescriptor; @@ -205,13 +206,21 @@ public IEnumerable GetDeclarationsForReference(Reference reference) { continue; } - + if (moduleDeclaration.DeclarationType == DeclarationType.ClassModule && memberDeclaration is ICanBeDefaultMember && ((ICanBeDefaultMember)memberDeclaration).IsDefaultMember) + { + ((ClassModuleDeclaration)moduleDeclaration).DefaultMember = memberDeclaration; + } yield return memberDeclaration; var parameterCount = memberDescriptor.cParams - 1; for (var paramIndex = 0; paramIndex < parameterCount; paramIndex++) { - yield return CreateParameterDeclaration(memberNames, paramIndex, memberDescriptor, typeQualifiedModuleName, memberDeclaration); + var parameter = CreateParameterDeclaration(memberNames, paramIndex, memberDescriptor, typeQualifiedModuleName, memberDeclaration); + if (Declaration.HasParameter(memberDeclaration.DeclarationType)) + { + ((IDeclarationWithParameter)memberDeclaration).AddParameter(parameter); + } + yield return parameter; } } @@ -219,7 +228,7 @@ public IEnumerable GetDeclarationsForReference(Reference reference) { yield return CreateFieldDeclaration(info, fieldIndex, typeDeclarationType, typeQualifiedModuleName, moduleDeclaration); } - } + } } private Declaration CreateMemberDeclaration(out FUNCDESC memberDescriptor, TYPEKIND typeKind, ITypeInfo info, int memberIndex, @@ -227,21 +236,21 @@ private Declaration CreateMemberDeclaration(out FUNCDESC memberDescriptor, TYPEK { IntPtr memberDescriptorPointer; info.GetFuncDesc(memberIndex, out memberDescriptorPointer); - memberDescriptor = (FUNCDESC) Marshal.PtrToStructure(memberDescriptorPointer, typeof (FUNCDESC)); + memberDescriptor = (FUNCDESC)Marshal.PtrToStructure(memberDescriptorPointer, typeof(FUNCDESC)); if (memberDescriptor.callconv != CALLCONV.CC_STDCALL) { memberDescriptor = new FUNCDESC(); - memberNames = new string[] {}; + memberNames = new string[] { }; return null; } memberNames = new string[255]; int namesArrayLength; info.GetNames(memberDescriptor.memid, memberNames, 255, out namesArrayLength); - + var memberName = memberNames[0]; - var funcValueType = (VarEnum) memberDescriptor.elemdescFunc.tdesc.vt; + var funcValueType = (VarEnum)memberDescriptor.elemdescFunc.tdesc.vt; var memberDeclarationType = GetDeclarationType(memberDescriptor, funcValueType, typeKind); var asTypeName = string.Empty; @@ -251,7 +260,7 @@ private Declaration CreateMemberDeclaration(out FUNCDESC memberDescriptor, TYPEK { try { - var asTypeDesc = (TYPEDESC) Marshal.PtrToStructure(memberDescriptor.elemdescFunc.tdesc.lpValue, typeof (TYPEDESC)); + var asTypeDesc = (TYPEDESC)Marshal.PtrToStructure(memberDescriptor.elemdescFunc.tdesc.lpValue, typeof(TYPEDESC)); asTypeName = GetTypeName(asTypeDesc, info); } catch @@ -264,7 +273,6 @@ private Declaration CreateMemberDeclaration(out FUNCDESC memberDescriptor, TYPEK asTypeName = funcValueType.ToString(); //TypeNames[VarEnum.VT_VARIANT]; } } - var attributes = new Attributes(); if (memberName == "_NewEnum" && ((FUNCFLAGS)memberDescriptor.wFuncFlags).HasFlag(FUNCFLAGS.FUNCFLAG_FNONBROWSABLE)) { @@ -280,9 +288,93 @@ private Declaration CreateMemberDeclaration(out FUNCDESC memberDescriptor, TYPEK attributes.AddHiddenMemberAttribute(memberName); } - return new Declaration(new QualifiedMemberName(typeQualifiedModuleName, memberName), - moduleDeclaration, moduleDeclaration, asTypeName, false, false, Accessibility.Global, memberDeclarationType, - null, Selection.Home, true, null, attributes); + if (memberDeclarationType == DeclarationType.Procedure) + { + return new SubroutineDeclaration( + new QualifiedMemberName(typeQualifiedModuleName, memberName), + moduleDeclaration, + moduleDeclaration, + asTypeName, + Accessibility.Global, + null, + Selection.Home, + true, + null, + attributes); + } + else if (memberDeclarationType == DeclarationType.Function) + { + return new FunctionDeclaration( + new QualifiedMemberName(typeQualifiedModuleName, memberName), + moduleDeclaration, + moduleDeclaration, + asTypeName, + Accessibility.Global, + null, + Selection.Home, + true, + null, + attributes); + } + else if (memberDeclarationType == DeclarationType.PropertyGet) + { + return new PropertyGetDeclaration( + new QualifiedMemberName(typeQualifiedModuleName, memberName), + moduleDeclaration, + moduleDeclaration, + asTypeName, + Accessibility.Global, + null, + Selection.Home, + true, + null, + attributes); + } + else if (memberDeclarationType == DeclarationType.PropertySet) + { + return new PropertySetDeclaration( + new QualifiedMemberName(typeQualifiedModuleName, memberName), + moduleDeclaration, + moduleDeclaration, + asTypeName, + Accessibility.Global, + null, + Selection.Home, + true, + null, + attributes); + } + else if (memberDeclarationType == DeclarationType.PropertyLet) + { + return new PropertyLetDeclaration( + new QualifiedMemberName(typeQualifiedModuleName, memberName), + moduleDeclaration, + moduleDeclaration, + asTypeName, + Accessibility.Global, + null, + Selection.Home, + true, + null, + attributes); + } + else + { + return new Declaration( + new QualifiedMemberName(typeQualifiedModuleName, memberName), + moduleDeclaration, + moduleDeclaration, + asTypeName, + false, + false, + Accessibility.Global, + memberDeclarationType, + null, + Selection.Home, + true, + null, + attributes); + } } private Declaration CreateFieldDeclaration(ITypeInfo info, int fieldIndex, DeclarationType typeDeclarationType, @@ -291,14 +383,14 @@ private Declaration CreateFieldDeclaration(ITypeInfo info, int fieldIndex, Decla IntPtr ppVarDesc; info.GetVarDesc(fieldIndex, out ppVarDesc); - var varDesc = (VARDESC) Marshal.PtrToStructure(ppVarDesc, typeof (VARDESC)); + var varDesc = (VARDESC)Marshal.PtrToStructure(ppVarDesc, typeof(VARDESC)); var names = new string[255]; int namesArrayLength; info.GetNames(varDesc.memid, names, 255, out namesArrayLength); var fieldName = names[0]; - var fieldValueType = (VarEnum) varDesc.elemdescVar.tdesc.vt; + var fieldValueType = (VarEnum)varDesc.elemdescVar.tdesc.vt; var memberType = GetDeclarationType(varDesc, typeDeclarationType); string asTypeName; @@ -306,7 +398,6 @@ private Declaration CreateFieldDeclaration(ITypeInfo info, int fieldIndex, Decla { asTypeName = TypeNames[VarEnum.VT_VARIANT]; } - return new Declaration(new QualifiedMemberName(typeQualifiedModuleName, fieldName), moduleDeclaration, moduleDeclaration, asTypeName, false, false, Accessibility.Global, memberType, null, Selection.Home); @@ -317,20 +408,20 @@ private static ParameterDeclaration CreateParameterDeclaration(IReadOnlyList _parameters; + + public SubroutineDeclaration( + QualifiedMemberName name, + Declaration parent, + Declaration parentScope, + string asTypeName, + Accessibility accessibility, + ParserRuleContext context, + Selection selection, + bool isBuiltIn, + IEnumerable annotations, + Attributes attributes) + : base( + name, + parent, + parentScope, + asTypeName, + false, + false, + accessibility, + DeclarationType.Procedure, + context, + selection, + isBuiltIn, + annotations, + attributes) + { + _parameters = new List(); + } + + public IEnumerable Parameters + { + get + { + return _parameters.ToList(); + } + } + + public void AddParameter(Declaration parameter) + { + _parameters.Add(parameter); + } + + /// + /// Gets an attribute value indicating whether a member is a class' default member. + /// If this value is true, any reference to an instance of the class it's the default member of, + /// should count as a member call to this member. + /// + public bool IsDefaultMember + { + get + { + IEnumerable value; + if (Attributes.TryGetValue(IdentifierName + ".VB_UserMemId", out value)) + { + return value.Single() == "0"; + } + + return false; + } + } + } +} diff --git a/Rubberduck.Parsing/Symbols/TypeAnnotationPass.cs b/Rubberduck.Parsing/Symbols/TypeAnnotationPass.cs new file mode 100644 index 0000000000..b322f24eca --- /dev/null +++ b/Rubberduck.Parsing/Symbols/TypeAnnotationPass.cs @@ -0,0 +1,73 @@ +using Rubberduck.Parsing.Binding; +using System.Diagnostics; +using System.Linq; + +namespace Rubberduck.Parsing.Symbols +{ + public sealed class TypeAnnotationPass + { + private readonly DeclarationFinder _declarationFinder; + private readonly BindingService _bindingService; + private readonly BoundExpressionVisitor _boundExpressionVisitor; + + public TypeAnnotationPass(DeclarationFinder declarationFinder) + { + _declarationFinder = declarationFinder; + var typeBindingContext = new TypeBindingContext(_declarationFinder); + var procedurePointerBindingContext = new ProcedurePointerBindingContext(_declarationFinder); + _bindingService = new BindingService( + _declarationFinder, + new DefaultBindingContext(_declarationFinder, typeBindingContext, procedurePointerBindingContext), + typeBindingContext, + procedurePointerBindingContext); + _boundExpressionVisitor = new BoundExpressionVisitor(); + } + + public void Annotate() + { + Stopwatch stopwatch = Stopwatch.StartNew(); + foreach (var declaration in _declarationFinder.FindDeclarationsWithNonBaseAsType()) + { + AnnotateType(declaration); + } + stopwatch.Stop(); + Debug.WriteLine("Type annotations completed in {0}ms.", stopwatch.ElapsedMilliseconds); + } + + private void AnnotateType(Declaration declarationWithAsType) + { + // Classes are their own type, we treat the "as type" as the "declared type". + if (declarationWithAsType.DeclarationType == DeclarationType.ClassModule) + { + declarationWithAsType.AsTypeDeclaration = declarationWithAsType; + return; + } + + string typeExpression; + if (declarationWithAsType.IsTypeSpecified()) + { + var typeContext = declarationWithAsType.GetAsTypeContext(); + typeExpression = typeContext.type().complexType().GetText(); + } + else if (!string.IsNullOrWhiteSpace(declarationWithAsType.AsTypeName) && !Declaration.BASE_TYPES.Contains(declarationWithAsType.AsTypeName.ToUpperInvariant())) + { + typeExpression = declarationWithAsType.AsTypeName; + } + else + { + return; + } + var module = Declaration.GetModuleParent(declarationWithAsType); + if (module == null) + { + // TODO: Reference Collector does not add module, find workaround? + return; + } + var boundExpression = _bindingService.ResolveType(module, declarationWithAsType.ParentDeclaration, typeExpression); + if (boundExpression != null) + { + declarationWithAsType.AsTypeDeclaration = boundExpression.ReferencedDeclaration; + } + } + } +} \ No newline at end of file diff --git a/Rubberduck.Parsing/Symbols/TypeHierarchyPass.cs b/Rubberduck.Parsing/Symbols/TypeHierarchyPass.cs new file mode 100644 index 0000000000..60439d34ea --- /dev/null +++ b/Rubberduck.Parsing/Symbols/TypeHierarchyPass.cs @@ -0,0 +1,60 @@ +using Rubberduck.Parsing.Binding; +using System; +using System.Diagnostics; + +namespace Rubberduck.Parsing.Symbols +{ + public sealed class TypeHierarchyPass + { + private readonly DeclarationFinder _declarationFinder; + private readonly BindingService _bindingService; + private readonly BoundExpressionVisitor _boundExpressionVisitor; + + public TypeHierarchyPass(DeclarationFinder declarationFinder) + { + _declarationFinder = declarationFinder; + var typeBindingContext = new TypeBindingContext(_declarationFinder); + var procedurePointerBindingContext = new ProcedurePointerBindingContext(_declarationFinder); + _bindingService = new BindingService( + _declarationFinder, + new DefaultBindingContext(_declarationFinder, typeBindingContext, procedurePointerBindingContext), + typeBindingContext, + procedurePointerBindingContext); + _boundExpressionVisitor = new BoundExpressionVisitor(); + } + + public void Annotate() + { + Stopwatch stopwatch = Stopwatch.StartNew(); + foreach (var declaration in _declarationFinder.FindClasses()) + { + AddImplementedInterface(declaration); + } + stopwatch.Stop(); + Debug.WriteLine("Type hierarchies built in {0}ms.", stopwatch.ElapsedMilliseconds); + } + + private void AddImplementedInterface(Declaration potentialClassModule) + { + if (potentialClassModule.DeclarationType != DeclarationType.ClassModule) + { + return; + } + // TODO: Depending on how the responsibility of looking up built-in interfaces is split up, we might not have to do this here. + if (potentialClassModule.IsBuiltIn) + { + return; + } + var classModule = (ClassModuleDeclaration)potentialClassModule; + foreach (var implementedInterfaceName in classModule.SupertypeNames) + { + var implementedInterface = _bindingService.ResolveType(potentialClassModule, potentialClassModule, implementedInterfaceName); + if (implementedInterface != null) + { + classModule.AddSupertype(implementedInterface.ReferencedDeclaration); + ((ClassModuleDeclaration)implementedInterface.ReferencedDeclaration).AddSubtype(classModule); + } + } + } + } +} \ No newline at end of file diff --git a/Rubberduck.Parsing/VBA/AttributeParser.cs b/Rubberduck.Parsing/VBA/AttributeParser.cs index e42a94890d..935603cabb 100644 --- a/Rubberduck.Parsing/VBA/AttributeParser.cs +++ b/Rubberduck.Parsing/VBA/AttributeParser.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using Antlr4.Runtime; +using Antlr4.Runtime.Misc; using Antlr4.Runtime.Tree; using Microsoft.Vbe.Interop; using Rubberduck.Parsing.Grammar; @@ -56,10 +57,10 @@ public IDictionary, Attributes> Parse(VBComponent private class AttributeListener : VBAParserBaseListener { - private readonly Dictionary, Attributes> _attributes = + private readonly Dictionary, Attributes> _attributes = new Dictionary, Attributes>(); - public AttributeListener(Tuple scope) + public AttributeListener(Tuple scope) { _currentScope = scope; _currentScopeAttributes = new Attributes(); @@ -70,7 +71,7 @@ public IDictionary, Attributes> Attributes get { return _attributes; } } - private Tuple _currentScope; + private Tuple _currentScope; private Attributes _currentScopeAttributes; public override void ExitModuleAttributes(VBAParser.ModuleAttributesContext context) @@ -88,21 +89,38 @@ public override void ExitModuleAttributes(VBAParser.ModuleAttributesContext cont {typeof(VBAParser.PropertySetStmtContext), DeclarationType.PropertySet} }; - public override void EnterIdentifier(VBAParser.IdentifierContext context) + public override void EnterSubroutineName(VBAParser.SubroutineNameContext context) { - DeclarationType type; - if (!ScopingContextTypes.TryGetValue(context.Parent.GetType(), out type)) + if (ParserRuleContextHelper.HasParent(context)) { - return; + _currentScope = Tuple.Create(context.GetText(), DeclarationType.Procedure); } + else if (ParserRuleContextHelper.HasParent(context)) + { + _currentScope = Tuple.Create(context.GetText(), DeclarationType.PropertyGet); + } + } - _currentScope = Tuple.Create(context.GetText(), type); + public override void EnterFunctionName(VBAParser.FunctionNameContext context) + { + if (ParserRuleContextHelper.HasParent(context)) + { + _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.Function); + } + else if (ParserRuleContextHelper.HasParent(context)) + { + _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.PropertyLet); + } + else if (ParserRuleContextHelper.HasParent(context)) + { + _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.PropertySet); + } } public override void EnterSubStmt(VBAParser.SubStmtContext context) { _currentScopeAttributes = new Attributes(); - _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.Procedure); + _currentScope = Tuple.Create(context.subroutineName().GetText(), DeclarationType.Procedure); } public override void ExitSubStmt(VBAParser.SubStmtContext context) @@ -116,7 +134,7 @@ public override void ExitSubStmt(VBAParser.SubStmtContext context) public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context) { _currentScopeAttributes = new Attributes(); - _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.Function); + _currentScope = Tuple.Create(context.functionName().identifier().GetText(), DeclarationType.Function); } public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context) @@ -130,7 +148,7 @@ public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context) public override void EnterPropertyGetStmt(VBAParser.PropertyGetStmtContext context) { _currentScopeAttributes = new Attributes(); - _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.PropertyGet); + _currentScope = Tuple.Create(context.functionName().identifier().GetText(), DeclarationType.PropertyGet); } public override void ExitPropertyGetStmt(VBAParser.PropertyGetStmtContext context) @@ -144,7 +162,7 @@ public override void ExitPropertyGetStmt(VBAParser.PropertyGetStmtContext contex public override void EnterPropertyLetStmt(VBAParser.PropertyLetStmtContext context) { _currentScopeAttributes = new Attributes(); - _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.PropertyLet); + _currentScope = Tuple.Create(context.subroutineName().GetText(), DeclarationType.PropertyLet); } public override void ExitPropertyLetStmt(VBAParser.PropertyLetStmtContext context) @@ -158,7 +176,7 @@ public override void ExitPropertyLetStmt(VBAParser.PropertyLetStmtContext contex public override void EnterPropertySetStmt(VBAParser.PropertySetStmtContext context) { _currentScopeAttributes = new Attributes(); - _currentScope = Tuple.Create(context.identifier().GetText(), DeclarationType.PropertySet); + _currentScope = Tuple.Create(context.subroutineName().GetText(), DeclarationType.PropertySet); } public override void ExitPropertySetStmt(VBAParser.PropertySetStmtContext context) @@ -171,16 +189,16 @@ public override void ExitPropertySetStmt(VBAParser.PropertySetStmtContext contex public override void ExitAttributeStmt(VBAParser.AttributeStmtContext context) { - var name = context.implicitCallStmt_InStmt().GetText().Trim(); - var values = context.literal().Select(e => e.GetText().Replace("\"", string.Empty)).ToList(); + var name = context.attributeName().GetText().Trim(); + var values = context.attributeValue().Select(e => e.GetText().Replace("\"", string.Empty)).ToList(); _currentScopeAttributes.Add(name, values); } public override void ExitModuleConfigElement(VBAParser.ModuleConfigElementContext context) { - var name = context.identifier().GetText(); - var literal = context.literal(); - var values = new[] { literal == null ? string.Empty : literal.GetText()}; + var name = context.unrestrictedIdentifier().GetText(); + var literal = context.valueStmt(); + var values = new[] { literal == null ? string.Empty : literal.GetText() }; _currentScopeAttributes.Add(name, values); } } diff --git a/Rubberduck.Parsing/VBA/Nodes/ProcedureNode.cs b/Rubberduck.Parsing/VBA/Nodes/ProcedureNode.cs index 29ed74c5bc..e3f9b07768 100644 --- a/Rubberduck.Parsing/VBA/Nodes/ProcedureNode.cs +++ b/Rubberduck.Parsing/VBA/Nodes/ProcedureNode.cs @@ -19,7 +19,7 @@ public enum VBProcedureKind } public ProcedureNode(VBAParser.PropertySetStmtContext context, string scope, string localScope) - : this(context, scope, localScope, VBProcedureKind.PropertySet, context.visibility(), context.identifier(), null) + : this(context, scope, localScope, VBProcedureKind.PropertySet, context.visibility(), context.subroutineName().identifier(), null) { _argsListContext = context.argList(); _staticNode = context.STATIC(); @@ -27,7 +27,7 @@ public ProcedureNode(VBAParser.PropertySetStmtContext context, string scope, str } public ProcedureNode(VBAParser.PropertyLetStmtContext context, string scope, string localScope) - : this(context, scope, localScope, VBProcedureKind.PropertyLet, context.visibility(), context.identifier(), null) + : this(context, scope, localScope, VBProcedureKind.PropertyLet, context.visibility(), context.subroutineName().identifier(), null) { _argsListContext = context.argList(); _staticNode = context.STATIC(); @@ -35,7 +35,7 @@ public ProcedureNode(VBAParser.PropertyLetStmtContext context, string scope, str } public ProcedureNode(VBAParser.PropertyGetStmtContext context, string scope, string localScope) - : this(context, scope, localScope, VBProcedureKind.PropertyGet, context.visibility(), context.identifier(), () => context.asTypeClause()) + : this(context, scope, localScope, VBProcedureKind.PropertyGet, context.visibility(), context.functionName().identifier(), () => context.asTypeClause()) { _argsListContext = context.argList(); _staticNode = context.STATIC(); @@ -44,7 +44,7 @@ public ProcedureNode(VBAParser.PropertyGetStmtContext context, string scope, str } public ProcedureNode(VBAParser.FunctionStmtContext context, string scope, string localScope) - : this(context, scope, localScope, VBProcedureKind.Function, context.visibility(), context.identifier(), () => context.asTypeClause()) + : this(context, scope, localScope, VBProcedureKind.Function, context.visibility(), context.functionName().identifier(), () => context.asTypeClause()) { _argsListContext = context.argList(); _staticNode = context.STATIC(); @@ -53,7 +53,7 @@ public ProcedureNode(VBAParser.FunctionStmtContext context, string scope, string } public ProcedureNode(VBAParser.SubStmtContext context, string scope, string localScope) - : this(context, scope, localScope, VBProcedureKind.Sub, context.visibility(), context.identifier(), null) + : this(context, scope, localScope, VBProcedureKind.Sub, context.visibility(), context.subroutineName().identifier(), null) { _argsListContext = context.argList(); _staticNode = context.STATIC(); diff --git a/Rubberduck.Parsing/VBA/RubberduckParser.cs b/Rubberduck.Parsing/VBA/RubberduckParser.cs index 456a344ff3..07890b01c0 100644 --- a/Rubberduck.Parsing/VBA/RubberduckParser.cs +++ b/Rubberduck.Parsing/VBA/RubberduckParser.cs @@ -193,26 +193,74 @@ private void AddBuiltInDeclarations(IReadOnlyList projects) Debug.Assert(vba != null); - var errObject = finder.FindClass(vba, "ErrObject", true); - Debug.Assert(errObject != null); - - var qualifiedName = new QualifiedModuleName(vba.IdentifierName, vba.IdentifierName, errObject.IdentifierName); - var err = new Declaration(new QualifiedMemberName(qualifiedName, Tokens.Err), vba, "Global", errObject.IdentifierName, true, false, Accessibility.Global, DeclarationType.Variable); + var debugModuleName = new QualifiedModuleName(vba.QualifiedName.QualifiedModuleName.ProjectName, vba.QualifiedName.QualifiedModuleName.ProjectPath, "DebugClass"); + var debugModule = new ProceduralModuleDeclaration(new QualifiedMemberName(debugModuleName, "DebugModule"), vba, "DebugModule", true, new List(), new Attributes()); var debugClassName = new QualifiedModuleName(vba.QualifiedName.QualifiedModuleName.ProjectName, vba.QualifiedName.QualifiedModuleName.ProjectPath, "DebugClass"); var debugClass = new ClassModuleDeclaration(new QualifiedMemberName(debugClassName, "DebugClass"), vba, "DebugClass", true, new List(), new Attributes(), true); - var debugObject = new Declaration(new QualifiedMemberName(debugClassName, "Debug"), vba, "Global", "DebugClass", true, false, Accessibility.Global, DeclarationType.Variable); - var debugAssert = new Declaration(new QualifiedMemberName(debugClassName, "Assert"), debugObject, debugObject.Scope, null, false, false, Accessibility.Global, DeclarationType.Procedure); - var debugPrint = new Declaration(new QualifiedMemberName(debugClassName, "Print"), debugObject, debugObject.Scope, null, false, false, Accessibility.Global, DeclarationType.Procedure); - + var debugObject = new Declaration(new QualifiedMemberName(debugClassName, "Debug"), debugModule, "Global", "DebugClass", true, false, Accessibility.Global, DeclarationType.Variable); + var debugAssert = new SubroutineDeclaration(new QualifiedMemberName(debugClassName, "Assert"), debugClass, debugClass, null, Accessibility.Global, null, Selection.Home, true, null, new Attributes()); + var debugPrint = new SubroutineDeclaration(new QualifiedMemberName(debugClassName, "Print"), debugClass, debugClass, null, Accessibility.Global, null, Selection.Home, true, null, new Attributes()); lock (_state) { - _state.AddDeclaration(err); + _state.AddDeclaration(debugModule); _state.AddDeclaration(debugClass); _state.AddDeclaration(debugObject); _state.AddDeclaration(debugAssert); _state.AddDeclaration(debugPrint); } + + AddSpecialFormDeclarations(finder, vba); + } + + private void AddSpecialFormDeclarations(DeclarationFinder finder, Declaration vba) + { + // The Err function is inside this module as well. + var informationModule = finder.FindStdModule("Information", vba, true); + Debug.Assert(informationModule != null); + var arrayFunction = new FunctionDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Array"), informationModule, informationModule, "Variant", Accessibility.Public, null, Selection.Home, true, null, new Attributes()); + var circleFunction = new FunctionDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Circle"), informationModule, informationModule, "Variant", Accessibility.Public, null, Selection.Home, true, null, new Attributes()); + // INPUT is treated as an inputstmt in the grammar thus does not have a declaration created for it. + //var inputFunction = new SubroutineDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Input"), informationModule, informationModule, "Variant", Accessibility.Public, null, Selection.Home, true, null, new Attributes()); + //var numberParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Number"), inputFunction, "Integer", false, false); + //var filenumberParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Filenumber"), inputFunction, "Integer", false, false); + //inputFunction.AddParameter(numberParam); + //inputFunction.AddParameter(filenumberParam); + var inputBFunction = new SubroutineDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "InputB"), informationModule, informationModule, "Variant", Accessibility.Public, null, Selection.Home, true, null, new Attributes()); + var numberBParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Number"), inputBFunction, "Integer", false, false); + var filenumberBParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Filenumber"), inputBFunction, "Integer", false, false); + inputBFunction.AddParameter(numberBParam); + inputBFunction.AddParameter(filenumberBParam); + var lboundFunction = new FunctionDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "LBound"), informationModule, informationModule, "Long", Accessibility.Public, null, Selection.Home, true, null, new Attributes()); + var arrayNameParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Arrayname"), lboundFunction, "Integer", false, false); + var dimensionParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Dimension"), lboundFunction, "Integer", true, false); + lboundFunction.AddParameter(arrayNameParam); + lboundFunction.AddParameter(dimensionParam); + var scaleFunction = new SubroutineDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Scale"), informationModule, informationModule, "Variant", Accessibility.Public, null, Selection.Home, true, null, new Attributes()); + var flagsParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Flags"), scaleFunction, "Integer", false, false); + var x1Param = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "X1"), scaleFunction, "Single", false, false); + var y1Param = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Y1"), scaleFunction, "Single", false, false); + var x2Param = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "X2"), scaleFunction, "Single", false, false); + var y2Param = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Y2"), scaleFunction, "Single", false, false); + scaleFunction.AddParameter(flagsParam); + scaleFunction.AddParameter(x1Param); + scaleFunction.AddParameter(y1Param); + scaleFunction.AddParameter(x2Param); + scaleFunction.AddParameter(y2Param); + var uboundFunction = new FunctionDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "UBound"), informationModule, informationModule, "Integer", Accessibility.Public, null, Selection.Home, true, null, new Attributes()); + var arrayParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Array"), uboundFunction, "Variant", false, false, true); + var rankParam = new ParameterDeclaration(new QualifiedMemberName(informationModule.QualifiedName.QualifiedModuleName, "Rank"), uboundFunction, "Integer", true, false); + uboundFunction.AddParameter(arrayParam); + uboundFunction.AddParameter(rankParam); + lock (_state) + { + _state.AddDeclaration(arrayFunction); + _state.AddDeclaration(circleFunction); + _state.AddDeclaration(inputBFunction); + _state.AddDeclaration(lboundFunction); + _state.AddDeclaration(scaleFunction); + _state.AddDeclaration(uboundFunction); + } } private readonly HashSet _projectReferences = new HashSet(); @@ -310,15 +358,14 @@ public Task ParseAsync(VBComponent component, CancellationToken token, TokenStre } var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token, token); - - //var taskFactory = new TaskFactory(new StaTaskScheduler()); + var task = new Task(() => ParseAsyncInternal(component, linkedTokenSource.Token, rewriter)); _currentTasks.TryAdd(component, Tuple.Create(task, linkedTokenSource)); Tuple removedTask; task.ContinueWith(t => _currentTasks.TryRemove(component, out removedTask)); // default also executes on cancel - - task.Start(/*taskFactory.Scheduler*/); + // See http://stackoverflow.com/questions/6800705/why-is-taskscheduler-current-the-default-taskscheduler + task.Start(TaskScheduler.Default); return task; } @@ -433,6 +480,8 @@ private void ResolveInternal(CancellationToken token) // walk all parse trees (modified or not) for identifier references var finder = new DeclarationFinder(_state.AllDeclarations, _state.AllComments, _state.AllAnnotations); + new TypeAnnotationPass(finder).Annotate(); + new TypeHierarchyPass(finder).Annotate(); foreach (var kvp in _state.ParseTrees) { if (token.IsCancellationRequested) return; @@ -519,7 +568,6 @@ private void ResolveReferences(DeclarationFinder finder, VBComponent component, { return; } - var qualifiedName = new QualifiedModuleName(component); Debug.WriteLine("Resolving identifier references in '{0}'... (thread {1})", qualifiedName.Name, Thread.CurrentThread.ManagedThreadId); var resolver = new IdentifierReferenceResolver(qualifiedName, finder); @@ -530,6 +578,7 @@ private void ResolveReferences(DeclarationFinder finder, VBComponent component, try { walker.Walk(listener, tree); + _state.RebuildSelectionCache(); state = ParserState.Ready; } catch (Exception exception) @@ -551,19 +600,6 @@ private class ObsoleteCallStatementListener : VBAParserBaseListener public override void ExitExplicitCallStmt(VBAParser.ExplicitCallStmtContext context) { - var procedureCall = context.eCS_ProcedureCall(); - if (procedureCall != null) - { - if (procedureCall.CALL() != null) - { - _contexts.Add(context); - return; - } - } - - var memberCall = context.eCS_MemberProcedureCall(); - if (memberCall == null) return; - if (memberCall.CALL() == null) return; _contexts.Add(context); } } diff --git a/Rubberduck.Parsing/VBA/RubberduckParserState.cs b/Rubberduck.Parsing/VBA/RubberduckParserState.cs index c32ebed2a9..9288014706 100644 --- a/Rubberduck.Parsing/VBA/RubberduckParserState.cs +++ b/Rubberduck.Parsing/VBA/RubberduckParserState.cs @@ -77,7 +77,7 @@ public sealed class RubberduckParserState private readonly ConcurrentDictionary> _annotations = new ConcurrentDictionary>(); - + private readonly ConcurrentDictionary _moduleExceptions = new ConcurrentDictionary(); @@ -118,7 +118,7 @@ public void AddProject(VBProject project) foreach (var component in project.VBComponents.Cast()) { _moduleStates.TryAdd(new QualifiedModuleName(component), ParserState.Pending); - } + } } public void RemoveProject(string projectId) @@ -252,7 +252,7 @@ private ParserState EvaluateParserState() if (result == ParserState.Ready && moduleStates.Any(item => item != ParserState.Ready)) { - result = moduleStates.Except(new[] {ParserState.Ready}).Max(); + result = moduleStates.Except(new[] { ParserState.Ready }).Max(); } Debug.Assert(result != ParserState.Ready || moduleStates.All(item => item == ParserState.Ready)); @@ -268,18 +268,18 @@ public ParserState GetModuleState(VBComponent component) } private ParserState _status; - public ParserState Status - { + public ParserState Status + { get { return _status; } private set { if (_status != value) { - _status = value; + _status = value; Debug.WriteLine("ParserState changed to '{0}', raising OnStateChanged", value); OnStateChanged(_status); } - } + } } private IEnumerable _obsoleteCallContexts = new List(); @@ -376,12 +376,12 @@ public void SetModuleAnnotations(VBComponent component, IEnumerable /// /// Gets a copy of the collected declarations, including the built-in ones. /// - public IReadOnlyList AllDeclarations + public IReadOnlyList AllDeclarations { get { return _declarations.Values.SelectMany(declarations => declarations.Keys).ToList(); - } + } } /// @@ -391,7 +391,7 @@ public IReadOnlyList AllUserDeclarations { get { - return _declarations.Values.Where(declarations => + return _declarations.Values.Where(declarations => !declarations.Any(declaration => declaration.Key.IsBuiltIn)) .SelectMany(declarations => declarations.Keys) .ToList(); @@ -455,7 +455,7 @@ public bool ClearStateCache(VBComponent component) { var match = new QualifiedModuleName(component); var keys = _declarations.Keys.Where(kvp => kvp.Equals(match)) - .Union(new[]{match}).Distinct(); // make sure the key is present, even if there are no declarations left + .Union(new[] { match }).Distinct(); // make sure the key is present, even if there are no declarations left var success = true; var declarationsRemoved = 0; @@ -538,7 +538,7 @@ public bool HasAllParseTrees(IReadOnlyList expected) } return _parseTrees.Count == expected.Count; - } + } public TokenStreamRewriter GetRewriter(VBComponent component) { @@ -582,7 +582,7 @@ public bool IsNewOrModified(VBComponent component) var key = new QualifiedModuleName(component); return IsNewOrModified(key); } - + public bool IsNewOrModified(QualifiedModuleName key) { int current; @@ -598,9 +598,19 @@ public bool IsNewOrModified(QualifiedModuleName key) private QualifiedSelection _lastSelection; private Declaration _selectedDeclaration; + private List> _declarationSelections = new List>(); + + public void RebuildSelectionCache() + { + _declarationSelections.Clear(); + var declarations = AllDeclarations.Where(d => !d.IsBuiltIn).Select(d => Tuple.Create(d, d.Selection, d.QualifiedSelection.QualifiedName)); + var references = AllDeclarations.SelectMany(d => d.References.Select(r => Tuple.Create(d, r.Selection, r.QualifiedModuleName))); + _declarationSelections.AddRange(declarations.Union(references)); + } public Declaration FindSelectedDeclaration(CodePane activeCodePane, bool procedureLevelOnly = false) { + var selection = activeCodePane.GetQualifiedSelection(); if (selection.Equals(_lastSelection)) { @@ -617,32 +627,48 @@ public Declaration FindSelectedDeclaration(CodePane activeCodePane, bool procedu if (!selection.Equals(default(QualifiedSelection))) { - var matches = AllDeclarations - .Where(item => item.DeclarationType != DeclarationType.Project && - item.DeclarationType != DeclarationType.ModuleOption && - item.DeclarationType != DeclarationType.ClassModule && - item.DeclarationType != DeclarationType.ProceduralModule && - (IsSelectedDeclaration(selection.Value, item) || - item.References.Any(reference => IsSelectedReference(selection.Value, reference)))) - .ToList(); + var matches = _declarationSelections.Where(t => + t.Item3.Equals(selection.Value.QualifiedName) + && (t.Item2.ContainsFirstCharacter(selection.Value.Selection))).ToList(); try { if (matches.Count == 1) { - _selectedDeclaration = matches.Single(); + _selectedDeclaration = matches.Single().Item1; } else { Declaration match = null; if (procedureLevelOnly) { - match = matches.SingleOrDefault(item => item.DeclarationType.HasFlag(DeclarationType.Member)); + match = matches.Select(p => p.Item1).SingleOrDefault(item => item.DeclarationType.HasFlag(DeclarationType.Member)); } - // ambiguous (?), or no match - make the module be the current selection - match = match ?? AllUserDeclarations.SingleOrDefault(item => - (item.DeclarationType == DeclarationType.ClassModule || item.DeclarationType == DeclarationType.ProceduralModule) - && item.QualifiedName.QualifiedModuleName.Equals(selection.Value.QualifiedName)); + // No match + if (matches.Count == 0) + { + match = match ?? AllUserDeclarations.SingleOrDefault(item => + (item.DeclarationType == DeclarationType.ClassModule || item.DeclarationType == DeclarationType.ProceduralModule) + && item.QualifiedName.QualifiedModuleName.Equals(selection.Value.QualifiedName)); + } + else + { + // Idiotic approach to find the best declaration out of a set of overlapping declarations. + // The one closest to the start of the user selection with the smallest width wins. + var userSelection = selection.Value.Selection; + var groupedByStartDistance = matches + .GroupBy(d => Tuple.Create(Math.Abs(userSelection.StartLine - d.Item2.StartLine), Math.Abs(userSelection.StartColumn - d.Item2.StartColumn))) + .OrderBy(g => g.Key.Item1) + .ThenBy(g => g.Key.Item2); + foreach (var closeMatch in groupedByStartDistance) + { + var groupedByLength = closeMatch.Select(d => Tuple.Create(d.Item1, Tuple.Create(Math.Abs(d.Item2.EndLine - d.Item2.StartLine), Math.Abs(d.Item2.EndColumn - d.Item2.StartColumn)))) + .OrderBy(d => d.Item2.Item1) + .ThenBy(d => d.Item2.Item2).ToList(); + match = groupedByLength.Select(p => p.Item1).FirstOrDefault(); + break; + } + } _selectedDeclaration = match; } @@ -673,6 +699,24 @@ private static bool IsSelectedReference(QualifiedSelection selection, Identifier && reference.Selection.ContainsFirstCharacter(selection.Selection); } + public static Selection CreateBindingSelection(ParserRuleContext vbaGrammarContext, ParserRuleContext exprContext) + { + var k = exprContext.GetText(); + Selection vbaGrammarSelection = vbaGrammarContext.GetSelection(); + Selection exprSelection = exprContext.GetSelection(); + int lineOffset = vbaGrammarSelection.StartLine - 1; + int columnOffset = 0; + if (exprSelection.StartLine == 1) + { + columnOffset = vbaGrammarSelection.StartColumn - 1; + } + return new Selection( + exprSelection.StartLine + lineOffset, + exprSelection.StartColumn + columnOffset, + exprSelection.EndLine + lineOffset, + exprSelection.EndColumn + columnOffset); + } + public void RemoveBuiltInDeclarations(Reference reference) { var projectName = reference.Name; diff --git a/Rubberduck.Parsing/VBComponentExtensions.cs b/Rubberduck.Parsing/VBComponentExtensions.cs index c6a8f075eb..f7b79b4dc1 100644 --- a/Rubberduck.Parsing/VBComponentExtensions.cs +++ b/Rubberduck.Parsing/VBComponentExtensions.cs @@ -33,7 +33,7 @@ public static IEnumerable GetMembers(this VBComponent component, vbext_P private static IEnumerable GetMembers(this CodeModule module, vbext_ProcKind? procedureKind = null) { var currentLine = module.CountOfDeclarationLines + 1; - while (currentLine < module.CountOfLines) + while (currentLine <= module.CountOfLines) { vbext_ProcKind kind; var name = module.get_ProcOfLine(currentLine, out kind); diff --git a/Rubberduck.SmartIndenter/Indenter.cs b/Rubberduck.SmartIndenter/Indenter.cs index eed426463d..e0d03a62c6 100644 --- a/Rubberduck.SmartIndenter/Indenter.cs +++ b/Rubberduck.SmartIndenter/Indenter.cs @@ -1,8 +1,8 @@ -using System; +using Microsoft.Vbe.Interop; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using Microsoft.Vbe.Interop; namespace Rubberduck.SmartIndenter { @@ -106,7 +106,7 @@ public void Indent(VBProject project) private static bool HasCode(CodeModule module, ref int lineCount) { lineCount += module.CountOfLines; - for (var i = 0; i < module.CountOfLines; i++) + for (var i = 1; i <= module.CountOfLines; i++) { if (!string.IsNullOrWhiteSpace(module.Lines[i, 1])) { @@ -118,7 +118,7 @@ private static bool HasCode(CodeModule module, ref int lineCount) private static bool HasCode(CodeModule module) { - for (var i = 0; i < module.CountOfLines; i++) + for (var i = 1; i <= module.CountOfLines; i++) { if (!string.IsNullOrWhiteSpace(module.Lines[i, 1])) { diff --git a/Rubberduck.SmartIndenter/Rubberduck.SmartIndenter.csproj b/Rubberduck.SmartIndenter/Rubberduck.SmartIndenter.csproj index d7978b71b8..38e3f59085 100644 --- a/Rubberduck.SmartIndenter/Rubberduck.SmartIndenter.csproj +++ b/Rubberduck.SmartIndenter/Rubberduck.SmartIndenter.csproj @@ -70,6 +70,12 @@ + + + {A4A618E1-CBCA-435F-9C6C-5181E030ADFC} + Rubberduck.Parsing + +