способ и система для записи макросов в синтаксисе, независимом от языка

Классы МПК:G06F9/44 устройства для выполнения специальных программ
Автор(ы):,
Патентообладатель(и):МАЙКРОСОФТ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2004-01-06
публикация патента:

Изобретение относится к способу записи макросов в вычислительной среде. Изобретение позволяет записывать макросы на множестве языков с минимальной нагрузкой для прикладной программы. Язык объектных команд (OIL) обеспечивает способ записи макросов в синтаксисе, независимом от компьютерного языка, что позволяет преобразовывать макрос в исходный код на множестве компьютерных языков без необходимости перезаписывать макрос или переводить макрос с записанного языка на другой язык, тем самым экономя время, необходимое для создания макросов на множестве компьютерных языков, уменьшая вероятность ошибок, которым свойственно возникать при неоднократном выполнении одной и той же задачи, и предоставляя пользователям программного продукта возможность записывать макросы на предпочтительном для них языке. 4 н. и 14 з.п. ф-лы, 5 ил. способ и система для записи макросов в синтаксисе, независимом   от языка, патент № 2347262

способ и система для записи макросов в синтаксисе, независимом   от языка, патент № 2347262 способ и система для записи макросов в синтаксисе, независимом   от языка, патент № 2347262 способ и система для записи макросов в синтаксисе, независимом   от языка, патент № 2347262 способ и система для записи макросов в синтаксисе, независимом   от языка, патент № 2347262 способ и система для записи макросов в синтаксисе, независимом   от языка, патент № 2347262 способ и система для записи макросов в синтаксисе, независимом   от языка, патент № 2347262

Формула изобретения

1. Реализуемый компьютером способ записи команд в синтаксисе, независимом от компьютерного языка, содержащий этапы, на которых принимают запрос на запись по меньшей мере одного действия в компьютерной системе,

инициируют систему записи в компьютерной системе для записи по меньшей мере одного действия, принимают по меньшей мере одно действие, осуществляемое в компьютерной системе,

записывают по меньшей мере одно действие, осуществляемое в компьютерной системе, с помощью системы записи, преобразовывают по меньшей мере одно действие, записанное с помощью системы записи, в по меньшей мере одну команду, имеющую синтаксис, независимый от компьютерного языка,

преобразовывают по меньшей мере одну команду, имеющую синтаксис, независимый от компьютерного языка, в список команд, имеющих синтаксис, независимый от компьютерного языка, причем данный список команд содержит операнд, так что этот операнд задан в качестве поименованной ячейки памяти, которая может быть изменена, принимают упомянутую команду, удостоверяются в том, правильно ли построен код упомянутой команды, при этом при удостоверении в том, правильно ли построен код упомянутой команды, определяют, содержит ли эта команда правильное количество операндов для выполнения вызова,

в ответ на удостоверение в том, что код построен правильно, выполняют запрос относительно того, оценивает ли верификатор упомянутую команду, чтобы определить, имеет ли смысл эта команда, на основе содержимого списка команд,

определяют, имеет ли смысл упомянутая команда, на основе содержимого списка команд и преобразовывают список команд в один из множества языков исходного кода, который готов для выполнения вызова.

2. Способ по п.1, дополнительно содержащий этапы, на которых определяют, приняла ли компьютерная система еще одно действие, содержащее по меньшей мере одну команду, принимают запрос на прекращение записи и заканчивают запись, выполняемую системой записи.

3. Способ по п.1, в котором этап преобразования по меньшей мере одной команды в список команд, имеющих синтаксис, независимый от компьютерного языка, содержит этапы, на которых создают список команд, транслируют по меньшей мере одно действие, выполненное в компьютерной системе, в команду, имеющую синтаксис, независимый от компьютерного языка,

добавляют команду, имеющую синтаксис, независимый от компьютерного языка, в список команд, содержащий по меньшей мере одну команду, имеющую синтаксис, независимый от компьютерного языка, передают список команд, содержащий по меньшей мере одну команду, имеющую синтаксис, независимый от компьютерного языка, по меньшей мере одному из множества процессоров, и преобразовывают список команд, содержащий по меньшей мере одну команду, имеющую синтаксис, независимый от компьютерного языка, в исходный код на конкретном языке в упомянутом по меньшей мере одном из множества процессоров.

4. Способ по п.3, в котором при удостоверении в том, правильно ли построен код упомянутой команды, определяют, содержит ли данная команда правильный тип операнда для выполнения вызова, при этом определение того, имеет ли упомянутая команда смысл, на основе содержимого списка команд выполняют на основе положительного результата определения того, что верификатор оценивает упомянутую команду, чтобы определить, имеет ли эта команда смысл.

5. Способ по п.3, в котором список команд создается компоновщиком, находящимся в прикладной программе, для каждого записываемого макроса.

6. Способ по п.5, в котором прикладная программа создает компоновщик для каждого записываемого макроса.

7. Способ по п.3, в котором для каждого макроса, записываемого в прикладной программе, компоновщик создает верификатор, карту переменных и список команд.

8. Способ по п.1, в котором исходный код, сгенерированный на упомянутом одном из множества языков исходного кода в результате упомянутого по меньшей мере одного действия, содержит макрос.

9. Способ по п.1, в котором код на упомянутом одном из множества языков исходного кода генерируется по меньшей мере одним из множества процессоров.

10. Способ по п.1, в котором список команд содержит по меньшей мере одну команду, которую процессор может распознать и преобразовать в исходный код в компьютерной системе, и

операнд, задающий информацию, над которой производит операцию или которой манипулирует упомянутая команда в компьютерной системе.

11. Машиночитаемый носитель, имеющий машиноисполняемые команды для осуществления этапов, перечисленных в п.1.

12. Система для записи команд в синтаксисе, независимом от компьютерного языка, содержащая пользовательский интерфейс, сервер, связанный с пользовательским интерфейсом, модуль записи, связанный с базой данных, связанной с сервером, при этом модуль записи выполнен с возможностью записи действий, инициированных на пользовательском интерфейсе, компоновщик, связанный с модулем записи и выполненный с возможностью получения записанных действий от модуля записи и генерации по меньшей мере одной команды на основе записанного действия, список команд, связанный с компоновщиком и приспособленный для получения по меньшей мере одной команды, сгенерированной компоновщиком, по меньшей мере один из множества процессоров, связанных с компоновщиком, выполненный с возможностью приема списка команд и генерации по меньшей мере одного исходного кода, прикладную программу, связанную с базой данных и с множеством динамически присоединяемых библиотек, и верификатор, связанный с компоновщиком и с упомянутым по меньшей мере одним из множества процессоров, при этом верификатор выполнен с возможностью удостоверяться в том, правильно ли построен код упомянутой команды, посредством определения того, содержит ли эта команда правильное количество операндов для выполнения вызова, в ответ на удостоверение в том, что код построен правильно, выполнять запрос относительно того, оценивает ли верификатор упомянутую команду, чтобы определить, имеет ли смысл эта команда, на основе содержимого списка команд,

определять, имеет ли смысл упомянутая команда, на основе содержимого списка команд и преобразовывать список команд в один из множества языков исходного кода, который готов для выполнения вызова.

13. Система по п.12, дополнительно содержащая карту переменных, связанную с компоновщиком и с упомянутым по меньшей мере одним из множества процессоров, приспособленную для оценки списка команд в отношении переменных, содержащихся в командах.

14. Система по п.13, дополнительно содержащая подсистему для получения сгенерированного исходного кода и сохранения сгенерированного исходного кода для дальнейшего использования.

15. Система по п.12, в которой компоновщик размещен в прикладной программе.

16. Система по п.12, в которой компоновщик связан с множеством прикладных программ и способен компоновать команды в синтаксисе, независимом от компьютерного языка, для этого множества прикладных программ.

17. Машиночитаемый носитель, имеющий команды, предназначенные, при их исполнении процессором, для выполнения способа записи команд в синтаксисе, независимом от компьютерного языка, содержащего этапы, на которых

принимают запрос на запись по меньшей мере одного действия в компьютерной системе, инициируют систему записи в компьютерной системе для записи по меньшей мере одного действия, принимают по меньшей мере одно действие, выполненное в компьютерной системе, преобразовывают по меньшей мере одно действие, выполненное в компьютерной системе, в по меньшей мере одну команду, имеющую синтаксис, независимый от компьютерного языка, преобразовывают эту по меньшей мере одну команду в список команд, имеющих синтаксис, независимый от компьютерного языка, принимают упомянутую команду, определяют, содержит ли упомянутая команда правильное количество операндов для выполнения вызова, в ответ на определение того, что команда содержит правильное количество операндов для выполнения вызова, выполняют запрос относительно того, оценивает ли верификатор упомянутую команду, чтобы определить, имеет ли смысл эта команда, на основе содержимого списка команд, на основе положительного результата определения того, что верификатор оценивает упомянутую команду, чтобы определить, имеет ли смысл эта команда, определяют, имеет ли смысл упомянутая команда, на основе содержимого списка команд и преобразовывают список команд, имеющих синтаксис, независимый от компьютерного языка, в один из множества исходных кодов, который готов для выполнения вызова.

18. Машиночитаемый носитель по п.17, в котором способ дополнительно содержит этап, на котором определяют, содержит ли упомянутая команда правильный тип операнда для выполнения вызова, при этом в ответ на определение того, что упомянутая команда содержит правильный тип операнда для выполнения вызова, выполняют запрос относительно того, оценивает ли верификатор упомянутую команду, чтобы определить, имеет ли смысл эта команда, на основе содержимого списка команд.

Описание изобретения к патенту

Область техники, к которой относится изобретение

Изобретение относится, в целом, к системам записи макросов в вычислительной среде. В частности, настоящее изобретение относится к способу и системе для создания макрокоманд в синтаксисе, который не зависит от компьютерного языка, на котором макрос будет в конечном итоге записан, что позволяет транслировать макрос на несколько языков исходного кода без необходимости повторно создавать макрос.

Предшествующий уровень

Вычислительные устройства общеизвестны и широко используются. Примером вычислительного устройства может служить персональный компьютер, централизованный компьютерный терминал с доступом к компьютерному терминалу или широко распределенная система компьютерных устройств, объединенных в сеть, например Интернет. Хотя некоторые вычислительные устройства могут работать с малой степенью или без вмешательства человека, для работы многих вычислительных устройств требуется ввод данных оператором. Вычислительные устройства, например персональные компьютеры, обычно снабжены клавиатурой для ввода цифровой и текстовой информации.

В зависимости от типа работы, выполняемой вычислительным устройством, вычислительное устройство может иметь также и другие типы вводов. Например, с распространением графических интерфейсов пользователя значительно выросло использование устройств графического ввода. Устройства графического ввода включают в себя такие устройства, как компьютерная мышь, графические планшеты, кодирующие преобразователи и световые перья. Эти устройства позволяют перемещать и позиционировать на экране компьютера графический элемент, например курсор. Этот графический элемент можно использовать для выбора функциональных команд, чтобы направлять работу компьютера, или он может помогать при вводе информации.

Вышеупомянутая компьютерная мышь является одним из наиболее популярных устройств графического ввода. Мышь подключена к вычислительному устройству и используется для выбора команд и ввода графической информации. При перемещении мыши по поверхности вычислительное устройство воспринимает относительные перемещения мыши, в соответствии с которыми перемещает графический курсор. Кнопки мыши обеспечивают доступ к командам и их активацию, а также ввод графической информации путем установки курсора.

Вычислительные устройства также могут воспринимать другие формы пользовательского ввода, в зависимости от приложения, функционирующего на вычислительном устройстве, в том числе голосовой ввод, ввод с цифровой камеры, ввод с видеомагнитофона и ввод с других вычислительных ресурсов, подключенных к вычислительному устройству через локальную или глобальную сеть.

Работая с вычислительным устройством, пользователь может взаимодействовать с устройствами ввода для управления вычислительным устройством. Для выполнения определенной операции вычислительное устройство многократно требует одной и той же последовательности вводов. Выполнение этого набора повторяющихся операций может включать в себя несколько вводов с одного или нескольких устройств ввода. Например, для выполнения определенной операции может требоваться инициировать программу с помощью мыши, а затем ввести в текстовом виде пароль доступа с помощью клавиатуры. Клавиатура, мышь и другие устройства ввода часто необходимы для завершения повторяющейся операции. Каждый раз, когда пользователь желает выполнить эту повторяющуюся операцию, ему приходится выполнять одну и ту же последовательность действий с использованием одних и тех же устройств ввода. Это не только занимает много времени, но также создает вероятность ошибки. Во многих случаях повторяющиеся операции можно упростить с помощью макроса (последовательности команд и/или нажатий клавиш, зарегистрированной в системе под уникальным именем).

Макросы используются для автоматизации повторяющихся вводов с помощью клавиатуры, мыши и других устройств ввода в конкретном приложении. В целом, макросы обычно представляют собой файлы, содержащие повторяющиеся команды. Вычислительное устройство может повторно воспроизводить однажды созданный макрос. Во многих прикладных программах предусмотрены возможности записи и воспроизведения макросов. В этих прикладных программах пользователь может записать макрос для выполнения определенной операции или последовательности операций и дать имя этому макросу. Затем эту операцию или последовательность операций можно осуществлять, выполняя этот поименованный макрос, тем самым экономя время и усилия пользователя, которые ушли бы на повторение всех этапов макроса. Для запуска макроса прикладная программа обычно имеет средство воспроизведения макросов, которое можно инициировать командой или посредством использования команды быстрого запуска.

Современная технология записи макросов, в общем случае, предусматривает запись макроса только на одном языке, Visual Basic for Applications (VBA). Однако существуют многие другие языки программирования, которые также можно использовать для записи и выполнения макросов. Кроме того, пользователь предпочитает записывать макросы на языке по своему выбору, в зависимости от своих личных предпочтений, образования и уровня профессионализма. Чтобы записывать макросы на языке, отличном от VBA, разработчику приложения приходится переписывать программу записи макросов для каждого языка, на котором пользователь желает записывать макрос. Такой процесс не только дорог и длителен, но также повышает вероятность ошибки и приводит к несогласованному поведению макросов, записанных на разных языках. Обеспечение способа и системы для записи макросов на множестве языков с минимальной нагрузкой для прикладной программы позволило бы сэкономить пользователям и разработчикам приложений время и деньги.

Сущность изобретения

Раскрытые здесь способы и система, отвечающие изобретению, обеспечивают средство записи компьютерного макроса в синтаксисе, независимом от компьютерного языка, что позволяет прикладной программе записывать команды только один раз, а затем преобразовывать команды в исходный код любого из ряда компьютерных языков. Таким образом, один аспект настоящего изобретения состоит в том, чтобы позволить пользователю, желающему записать макрос на одном или нескольких разных компьютерных языках, начинать запись макроса посредством включения системы записи в компьютерной системе. Система записи обычно содержит модуль записи макросов, загруженный в машину записи макросов. Модуль записи макросов и машина записи макросов могут размещаться в прикладной программе, функционирующей в компьютерной системе.

Затем пользователь может перейти к выполнению одного или нескольких действий, которые он желает записать в компьютерной системе. Действия обычно выполняются в прикладной программе, находящейся в компьютерной системе. Эти действия могут включать в себя последовательность команд или нажатий клавиш, происходящих при взаимодействии пользователя с прикладной программой. Прикладная программа обычно преобразует действия в последовательность команд, которая называется списком команд, имеющих синтаксис, независимый от компьютерного языка. Список команд обычно представляет машиночитаемую интерпретацию действий, осуществляемых пользователем и записанных системой записи. Независимый от компьютерного языка синтаксис команд позволяет преобразовывать однажды созданные команды в один или несколько исходных кодов на разных компьютерных языках. Синтаксис, независимый от компьютерного языка, обычно не отражает компьютерный язык, используемый прикладной программой.

Список команд обычно содержит команды и операнды в соотношении либо один к одному, либо один к нулю, соответственно. Операнд обычно задает информацию, над которой нужно произвести операцию или которой нужно манипулировать. Прикладная программа преобразует действия пользователя в список команд с помощью компоновщика, который может входить в состав прикладной программы. Команды в синтаксисе, независимом от компьютерного языка. По завершении список команд можно направлять на один или несколько процессоров для преобразования в исходный код на конкретном компьютерном языке. Поскольку список команд написан в синтаксисе, независимом от компьютерного языка, другие разработчики приложений и пользователи могут переводить список команд на другие компьютерные языки в зависимости от предпочтений разработчика или пользователя. Например, пользователь А желает записать макрос на языке А, а пользователь В желает записать макрос на языке В. Если оба пользователя записывают одни и те же действия, то генерируется один и тот же список команд с использованием независимого от языка синтаксиса, но разные процессоры переводят список команд на язык А и язык В. Другой иллюстративный вариант осуществления предусматривает одновременный перевод списка команд, созданного с использованием синтаксиса, независимого от языка, на множество компьютерных языков, без необходимости повторного создания команд и списка команд перед отправкой их на каждый отдельный процессор.

Перечень фигур чертежей

Для более полного понимания настоящего изобретения и его преимуществ обратимся к нижеследующему описанию совместно с прилагаемыми чертежами, в которых:

фиг.1А - блок-схема иллюстративной операционной среды для реализации различных вариантов осуществления настоящего изобретения;

фиг.1В - блок-схема системы компоновки и записи макросов для записи макросов на языке объектных команд, построенной согласно иллюстративному варианту осуществления настоящего изобретения;

фиг.2 - блок-схема унифицированного языка моделирования, иллюстрирующая построение списка команд с использованием языка объектных команд согласно иллюстративному варианту осуществления настоящего изобретения;

фиг.3 - логическая блок-схема процесса записи макроса с использованием языка объектных команд согласно иллюстративному варианту осуществления настоящего изобретения;

фиг.4 - логическая блок-схема процесса создания списка команд для макроса с использованием языка объектных команд согласно иллюстративному варианту осуществления настоящего изобретения;

фиг.5 - логическая блок-схема процесса проверки правильности конструкции команды, написанной на языке объектных команд, согласно иллюстративному варианту осуществления настоящего изобретения.

Подробное описание иллюстративных вариантов осуществления

Настоящее изобретение поддерживает компьютерно реализуемый способ записи макроса на языке объектных команд (OIL), синтаксис которого не зависит от компьютерного языка. Такой независимый синтаксис можно использовать для записи макроса на одном языке с последующей реализацией на различных других языках программирования. Независимый синтаксис OIL помогает программистам преобразовывать командные этапы макроса на конкретном языке в универсальный набор команд, который можно приспособить к различным языкам. Благодаря использованию языка OIL программисту не приходится повторно создавать одни и те же макросы на различных языках. Для пояснения изобретения обратимся к прилагаемым чертежам.

Хотя иллюстративные варианты осуществления настоящего изобретения будут, в целом, описаны применительно к программному модулю и операционной системе, работающей на персональном компьютере, специалисты в данной области техники поймут, что настоящее изобретение можно также реализовать применительно к другим программным модулям для других типов компьютеров. Кроме того, специалистам в данной области техники очевидно, что настоящее изобретение можно реализовать в автономной или распределенной вычислительной среде. В распределенной вычислительной среде программные модули могут физически размещаться в разных локальных и удаленных запоминающих устройствах. Программные модули могут выполняться локально, т.е. в автономном режиме, или дистанционно, в режиме взаимодействия клиент-сервер. Примерами распределенных вычислительных сред являются учрежденческие локальные сети, сети в пределах большого предприятия и глобальная сеть Интернет.

Нижеследующее подробное описание, в основном, представлено в терминах процессов символических представлений операций посредством традиционных компонентов компьютера, включая процессоры, запоминающие устройства, устройства отображения и устройства ввода. Для осуществления этих процессов и операций можно использовать традиционные компоненты компьютеров в распределенной вычислительной среде, включая удаленные файловые серверы, удаленные компьютерные серверы и удаленные запоминающие устройства. Процессор осуществляет доступ к каждому из этих традиционных распределенных вычислительных компонентов через сеть связи.

Процессы и операции, осуществляемые компьютером, включают в себя манипуляцию сигналами с помощью процессора или удаленного сервера и сохранение этих сигналов в структурах данных, размещенных в одном или нескольких локальных или удаленных запоминающих устройствах. Такие структуры данных предусматривают физическое структурирование совокупности данных, хранящихся в запоминающем устройстве, и представляют собой конкретные электрические или магнитные элементы. Эти символические представления представляют собой средства, используемые специалистами в области программирования и конструирования компьютеров для наиболее эффективной передачи идей и открытий другим специалистам в данной области техники.

Настоящее изобретение предусматривает компьютерную программу, которая воплощает функции, описанные здесь и проиллюстрированные в прилагаемых логических блок-схемах. Заметим, однако, что существует много разных путей реализации настоящего изобретения в компьютерном программировании, и изобретение не следует считать ограниченным рамками одного набора команд компьютерной программы. Кроме того, опытный программист способен без труда написать такую компьютерную программу, чтобы реализовать раскрытое изобретение, на основании, например, логических блок-схем и соответствующего описания в тексте заявки. Поэтому мы не считаем необходимым раскрывать конкретный набор команд программного кода для пояснения того, как применять и использовать настоящее изобретение. Функциональность заявленной компьютерной программы, соответствующая изобретению, будет объяснена более подробно в нижеследующем описании, приведенном совместно с остальными фигурами, иллюстрирующими ход выполнения программы.

Теперь опишем аспекты настоящего изобретения и иллюстративную операционную среду для реализации настоящего изобретения со ссылкой на чертежи, в которых идентичные ссылочные позиции обозначают идентичные элементы на нескольких фигурах.

Фиг.1А - это блок-схема иллюстративной операционной среды 1 для реализации различных вариантов осуществления настоящего изобретения. Специалистам в данной области техники очевидно, что фиг.1А и соответствующее описание обеспечивают краткое, обобщенное описание одного иллюстративного варианта осуществления компьютерного оборудования и программных модулей, и что дополнительную информацию легко получить из соответствующих руководств по программированию, руководств пользователя и аналогичных изданий.

Иллюстративная операционная среда 1, показанная на фиг.1А, включает в себя вычислительное устройство общего назначения, в качестве которого может выступать персональный компьютер 10. Согласно фиг.1А персональный компьютер 10 работает в сетевой среде, имея логические соединения с удаленным сервером 110. Логические соединения между персональным компьютером 10 и удаленным сервером 110 представлены локальной сетью 12 и глобальной сетью 13. Специалистам в данной области техники очевидно, что в этой конфигурации клиент-сервер удаленный компьютер 110 может выполнять функцию файлового сервера или компьютерного сервера.

Персональный компьютер 10 содержит процессор 14, например микропроцессор "PENTIUM" производства Intel Corporation, Санта-Клара, Калифорния. Персональный компьютер также содержит системную память 15, включающую в себя постоянную память (ПЗУ) 16 и оперативную память (ОЗУ) 17, которые подключены к процессору 14 через системную шину 18. Иллюстративный вариант осуществления компьютера 10 предусматривает использование базовой системы ввода-вывода (BIOS) 19, которая хранится в ПЗУ 16. Специалистам в данной области техники известно, что BIOS 19 представляет собой набор основных процедур, которые помогают переносить информацию между элементами персонального компьютера. Специалистам в данной области также очевидно, что настоящее изобретение можно реализовать на компьютерах, имеющих другую архитектуру, например на компьютерах, в которых не используется BIOS 19 и в которых применяются микропроцессоры 14 других типов.

В персональном компьютере 10 локальный носитель 20 на жестких дисках подключен к системной шине 18 через интерфейс 21 накопителей на жестких дисках. Дисковод 22 для дискет, используемый для чтения дискет 23 и записи на них, подключен к системной шине 18 через интерфейс 24 дисководов для дискет. Дисковод 25 для ПЗУ на компакт-диске (CD-ROM) или цифрового универсального диска (DVD), используемый для чтения дисков 26 CD-ROM или DVD, подключен к системной шине 18 через интерфейс 27 дисководов для CD-ROM или DVD.

Пользователь может вводить в персональный компьютер 10 команды и информацию с помощью устройств ввода, например клавиатуры 28 и/или указательного устройства, например мыши 29, которые подключены к системной шине 18 через интерфейс 30 последовательных портов. Другие типы указательных устройств (не показаны на фиг.1) включают в себя сенсорные панели, шаровые манипуляторы, перья кодирующего преобразователя, датчики положения головы, считывающие перчатки и другие устройства, пригодные для позиционирования курсора на мониторе 105. Монитор 105 или иного рода устройство отображения подключен к системной шине 18 через видеоадаптер 32.

Согласно фиг.1А в ПЗУ 16, ОЗУ 17, на накопителе 20 на жестких дисках, на дискете 23 или на диске CD-ROM/DVD может храниться ряд программных модулей, например операционная система 36, модуль 117 прикладной программы, модуль 37 программы броузера и текстовый редактор 38. Программные модули включают в себя процедуры, подпроцедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют отдельные абстрактные типы данных.

В этой сетевой среде удаленный сервер 110 соединен удаленным запоминающим устройством 33. Это удаленное запоминающее устройство 33 обычно является запоминающим устройством большой емкости, например накопителем на жестких дисках, дисководом для CD-ROM или DVD, магнитооптическим дисководом и т.п. Специалистам в данной области техники известно, что удаленный сервер 110 осуществляет доступ к программным модулям, например к модулю 117 прикладной программы, считывая машиночитаемые носители информации. Персональный компьютер 10 соединен с удаленным сервером 110 посредством сетевого интерфейса 34, который используется для связи по локальной сети (ЛС, LAN) 12.

В некоторых вариантах осуществления персональный компьютер 10 также соединен с удаленным сервером 110 посредством модема 35, который используется для связи по глобальной сети (ГС, WAN) 13, например Интернет. Модем 35 подключен к системной шине 18 через интерфейс 30 последовательных портов. Модем 35 также может быть подключен к коммутируемой телефонной сети общего пользования (КТСОП, PSTN) или к сети кабельного телевидения (КАТВ, CATV). Хотя на фиг.1А модем показан как внешний по отношению к персональному компьютеру 10, специалистам в данной области техники известно, что модем 35 может быть внутренним по отношению к персональному компьютеру 10 и, таким образом, обмениваться данными непосредственно через системную шину 18. Важно отметить, что соединение с удаленным сервером 110 одновременно через ЛС 12 и ГС 13 не требуется, но просто иллюстрирует различные способы обеспечения пакета связи между персональным компьютером 10 и удаленным сервером 110.

Специалистам в данной области техники известно, что персональный компьютер может обращаться к программным модулям, например операционной системе 36, модулю 117 прикладной программы, модулю 37 программы броузера и текстовому редактору 38, считывая машиночитаемые носители. В иллюстративных вариантах осуществления операционной среды 1 машиночитаемые носители могут включать в себя локальные или удаленные запоминающие устройства, в том числе накопитель 20 на жестких дисках, дискету 23, CD-ROM/DVD 26, ОЗУ 17, ПЗУ 16 и удаленное запоминающее устройство 33. В некоторых иллюстративных вариантах осуществления персонального компьютера 10 для хранения данных и программ используется локальный накопитель 20 на жестких дисках.

Хотя другие элементы персонального компьютера 10 и операционной среды 1 в целом не показаны, специалистам в данной области техники известны такие компоненты и межсоединения между ними. Соответственно, чтобы специалисты в данной области техники могли реализовать настоящее изобретение, не требуется раскрывать дополнительные подробности, касающиеся элементов персонального компьютера 10 и операционной среды 1 в целом.

На фиг.1В показана блок-схема системы компоновки и записи макросов для записи макросов на языке 100 OIL, построенной согласно иллюстративному варианту осуществления настоящего изобретения. Иллюстративная система 100 компоновки и записи макросов содержит пользовательский интерфейс 105, сервер 110, базу данных 115 и приложение 117. Приложение 117 содержит библиотеку 120 макросов, подсистему 125 Visual Studio for Applications (VSA) и/или подсистему 130 Visual Basic for Applications (VBA). Библиотека 120 макросов содержит процессоры 135 и машину 140 записи макросов. Машина 140 записи макросов содержит модуль 145 записи макросов, компоновщик 150, список 155 команд, верификатор 160 и карту 165 переменных. Подсистема 125 VSA содержит модуль 175 записи VSA. Подсистема 130 VBA содержит модуль 170 записи VBA.

Пользовательский интерфейс 105 подключен с возможностью обмена данными через компьютерную сеть к серверу 110. Пользовательский интерфейс 105 обеспечивает пользователя средством связи с сервером 110, базой данных 115 и приложением 117. Например, пользовательский интерфейс 105 может передавать информацию, в том числе данные и запросы, приложению 117 и базе данных 115 через сервер 110. Пользовательский интерфейс 105 может принимать информацию от базы данных 115 и приложения 117 через сервер 110. В одном иллюстративном варианте осуществления пользовательский интерфейс 105 представляет собой персональный компьютер.

Сервер 110 подключен с возможностью обмена данными через компьютерную сеть к пользовательскому интерфейсу 105 и базе данных 115. Сервер 110 обычно представляет собой компьютер или программу, который(ая) реагирует на команды пользователя, поступающие через пользовательский интерфейс 105.

База данных 115 подключена с возможностью обмена данными к серверу 110 и приложению 117. База данных 115 содержит информацию, относящуюся к прикладным программам, языковым процессорам и модулям записи макросов. В одном иллюстративном варианте осуществления база данных 115 представляет собой базу данных сервера языка структурированных запросов (SQL).

Приложение 117 - это прикладная программа, призванная помогать пользователю в осуществлении конкретной задачи, в том числе редактировании текстов, расчетах или инвентаризации.

Библиотека 120 макросов - это динамически присоединяемая библиотека. В одном иллюстративном варианте осуществления библиотека 120 макросов содержится в приложении 117, но библиотека 120 макросов может существовать независимо от приложения 117, что позволяет нескольким приложениям 117 обращаться к библиотеке макросов. Процессоры 135 содержат один или несколько из совокупности кодовых процессоров, включая процессор C Plus Plus (C++), процессор C Sharp (C#), процессор VBA и процессор Visual Basic.Net (VB.Net). Процессоры 135 обычно преобразовывают команды, полученные от машины 140 записи макросов, в исходный код на конкретном языке.

Модуль 145 записи, компоновщик 150, список 155 команд, верификатор 160 и карта 165 переменных обычно являются компонентами модели компонентных объектов (COM). В иллюстративном варианте осуществления модуль 145 записи, компоновщик 150, список 155 команд, верификатор 160 и карта 165 переменных входят в состав приложения 117. Однако в альтернативном иллюстративном варианте осуществления эти компоненты COM могут существовать независимо от приложения 117, что позволяет нескольким приложениям 117 обращаться к одному компоновщику 150. Модуль 145 записи представляет собой программу, которая записывает и сохраняет макросы, созданные действиями пользователя в пользовательском интерфейсе 105. Компоновщик 150 может создавать пустой список 155 команд, принимать информацию от модуля 145 записи, формировать команду с использованием синтаксиса, независимого от языка, передавать команды верификатору 160 и карте 165 переменных, чтобы гарантировать правильность конструкции команды, и добавлять команду в список 155 команд. Модуль 145 записи может затем направлять список 155 команд на процессоры 135 для преобразования списка 155 команд в исходный код на конкретном языке.

Список 155 команд представляет собой список пар команда-операнд, в которой операнд является необязательной частью команды в зависимости от формата команды. В одном иллюстративном варианте осуществления список команд содержит как команды, так и операнды в соотношении либо один к одному, либо один к нулю, соответственно. Однажды созданный список 155 команд обычно содержит набор команд в синтаксисе, независимом от компьютерного языка. Модуль 145 записи подает полный список команд на процессоры 135. Верификатор 160 определяет, содержат ли команды в списке 155 команд правильные количество и тип операндов. Например, верификатор 160 позволяет гарантировать, что процессоры 135 не столкнутся с трудностями при генерации исходных кодов из полученного списка 155 команд. Определив правильность конструкции, верификатор 160 направляет команду обратно на компоновщик 150. Карта 165 переменных может принимать команду от компоновщика 150, сохранять имена и типы переменных в команде, гарантировать, что пользователь не пытается создать переменную с тем же именем, но другого типа, и возвращать команду компоновщику 150.

Подсистема 125 VSA является динамически присоединяемой библиотекой, содержащей модуль 175 записи VSA. Модуль 175 записи VSA обычно записывает исходный код макроса, полученный от процессора 135 VSA, и сохраняет исходный код в приложении 117 VSA, ассоциированном с документом, в котором создан макрос.

Подсистема 130 VBA является динамически присоединяемой библиотекой, содержащей модуль 170 записи VBA. Модуль 170 записи VBA обычно принимает исходный код макроса от процессора 135 VBA и сохраняет исходный код в приложении 117 VBA, ассоциированном с документом, в котором создан макрос. В одном иллюстративном варианте осуществления, задачей системы 100 является создание списка 155 команд, который взаимодействует со стеком обработки, причем каждая команда имеет правильный тип и количество соответствующих операндов.

На фиг.2 изображена схема унифицированного языка моделирования (UML), иллюстрирующая внутреннюю структуру списка 200 команд, созданного с использованием синтаксиса, независимого от компьютерного языка, построенного согласно иллюстративному варианту осуществления настоящего изобретения. Согласно фиг.1В и 2 иллюстративный список 200 команд содержит команды 205 и операнды 250, входящие в состав списка 155 команд компоновщика 150. Команда 205 содержит callvirt 210, ldloc 215, stloc 220, ldc_i4 225, ldc_r8 230, ldstr 235, pop 240 и comment 245. Операнд 250 содержит переменную 255, метод 260 и литерал 265. На фиг.2 ромб 207 и обозначение 0..1 252 обычно выражают, что с каждой командой 205 в списке 155 команд ассоциировано либо нуль операндов, либо один операнд.

Переменная 255 выражает тип операнда 250, обычно определяемый как поименованная ячейка памяти, способная содержать данные, которые могут изменяться при выполнении программы. Метод 260 представляет собой тип операнда 250, определяемый как процесс, осуществляемый объектом при получении сообщения. Литерал 265 представляет собой тип операнда 250, определяемый как значение, используемое в приложении 117, которое выражается само по себе, а не как значение переменной или результат выражения. Примерами литералов 265 являются число «25», символ «а» и строка «hello».

Команда callvirt 210 представляет собой вызов виртуального метода. Операндом 250 команды callvirt 210 является метод 260. Команда callvirt 210 также требует, чтобы любые аргументы, ассоциированные с методом 260, уже находились в стеке обработки. Стек обработки используется при обработке списка 155 команд, причем размер стека обработки увеличивается и уменьшается в ходе обработки списка 155 команд. В одном иллюстративном варианте осуществления некоторые команды в списке 155 команд помещают элементы в стек обработки, некоторые - извлекают элементы из стека обработки, а некоторые команды оставляют стек обработки без изменений. Затем, callvirt 210 забирает аргументы из стека обработки и выполняет метод 260. Если метод 260 что-нибудь возвращает, то callvirt 210 помещает возвращенную информацию обратно в стек обработки. Команда ldloc 215 представляет собой действие загрузки локальной переменной и берет переменную 255, указанную командой ldloc 215, и помещает ее в стек обработки для использования с какой-нибудь другой целью, либо в другой операции сохранения, либо в вызове. Команда stloc 220 представляет собой действие по сохранению локальной переменной и берет значение из стека обработки и присваивает это значение переменной 255.

Команда ldc_i4 225 представляет собой загрузку четырехбайтового целого числа в стек обработки и в качестве операнда использует литерал 265. Например, если в качестве команды 205 используется ldc_i4 225, она должна брать числа, включающие в себя 4, 8 и 12. Команда ldc_r8 230 представляет собой загрузку восьмибайтового значения типа double в стек обработки. Как и в случае ldc_i4 225, операндом ldc_r8 является литерал 265. Команда ldstr 235 загружает строку в стек и использует в качестве операнда 250 литерал 265. Команда pop 240 не имеет операнда, но по этой команде наверху стека обработки просто выбрасывается любой находящийся там операнд 250. Команда comment 245 берет литерал 265 и представляет его в качестве строки в комментарии. Процессор 135 может изменить строку, чтобы привести ее к соответствующему формату языка.

Специалисту в данной области техники очевидно, что команды, показанные в составе списка 200 команд, являются лишь малым подмножеством всего возможного множества команд, в том числе арифметических и логических команд, которые можно обрабатывать с использованием синтаксиса, независимого от языка.

Фиг.3-5 представляют собой логические блок-схемы, иллюстрирующие компьютерно реализуемые процессы, выполняемые иллюстративным способом записи макроса в синтаксисе, независимом от компьютерного языка. На фиг.3 изображена логическая блок-схема 300, где показаны общие этапы иллюстративного процесса записи макроса в синтаксисе, независимом от компьютерного языка, в операционной среде иллюстративной системы 100 записи макросов, изображенной на фиг.1.

Согласно фиг.1В и 3 иллюстративный способ 300 начинается на этапе «начало» и переходит к этапу 305, на котором пользователь открывает приложение 117 с помощью пользовательского интерфейса 105. Пользовательский интерфейс 105 обычно представляет собой пункт, откуда клиент может иметь доступ к приложению 117 через сервер 110 и базу данных 115. Пользователь обычно открывает приложение 117, выбирая иконку, соответствующую приложению 117, на мониторе пользовательского интерфейса 105.

На этапе 310 пользователь начинает запись макроса. В одном иллюстративном варианте осуществления пользователь начинает записывать макрос, выбирая «запись макроса» в выпадающем меню приложения 117. Затем может открыться диалоговое окно, позволяющее пользователю ввести имя записываемого макроса, выбрать место сохранения макроса в базе данных 115 и обеспечить краткое описание макроса, например цель создания макроса или функцию макроса. Закончив описание макроса, пользователь может закрыть диалоговое окно, и приложение 117 начинает записывать макрос.

На этапе 315 пользователь выполняет записываемое действие, и приложение 117 выполняет записываемое действие на этапе 320. Записываемое действие - это любая операция, которую пользователь выполняет в приложении 117, включая нажатие клавиши, выбор данных из конкретной области приложения 117 или математический расчет. На этапе 325 производится определение, будет ли записано записываемое действие, осуществляемое пользователем. Если «нет», то происходит переход к этапу 365, на котором производится определение, производит ли пользователь еще одно записываемое действие. Если действие будет записано (ответ «да»), то выполняется переход к этапу 330.

На этапе 330 приложение 117 компонует список 155 команд в машине 140 записи макросов. Список 155 команд обычно содержит ряд команд, выражающих действие макроса в синтаксисе, независимом от компьютерного языка. Команды являются интерпретацией записанных действий пользователя в синтаксисе, независимом от компьютерного языка. На этапе 335 приложение 117 направляет список 155 команд на машину 140 записи макросов. На этапе 345 машина 140 записи макросов передает список 155 команд одному или нескольким процессорам 135. Когда передавать список 155 команд одному или нескольким процессорам 135, обычно определяет приложение 117. Например, когда пользователь завершает действие, которое будет генерировать соответствующую строку исходного кода, приложение 117 обычно передает список 155 команд, созданный на основании действий пользователя, процессору 135. Процессор 135 может находиться внутри или вовне приложения 117 и может включать в себя процессоры 135, способные генерировать код на нескольких компьютерных языках, например С++, C#, VBA и VB.Net. На этапе 345 модуль 145 записи макросов может передать один список 155 команд одному или нескольким процессорам 135 для генерации одного или нескольких типов исходного кода на конкретном языке, в зависимости от предусмотренного пользователем применения макроса и языковых предпочтений пользователя.

На этапе 350 процессор 135 преобразует список 135 команд из синтаксиса, независимого от компьютерного языка, в исходный код на конкретном языке, например, С++, C#, VBA и VB.Net. На этапе 355, процессор 135 направляет исходный код на конкретном языке в машину 140 записи макросов. На этапе 360 машина 140 записи макросов сохраняет исходный код на конкретном языке в соответствующем месте. В одном иллюстративном варианте осуществления соответствующие места для сохранения исходного кода включают в себя базу данных 115, подсистему 125 VSA, подсистему 130 VBA или приложение 117. Например, модуль 145 записи может отправить список 155 команд процессору 135 VBA для преобразования списка 155 команд в код VBA. Код VBA, полученный в результате преобразования, поступает в машину 140 записи макросов, которая направляет код VBA модулю 170 записи VBA в подсистеме 130 VBA. В одном иллюстративном варианте осуществления, приложение 117 определяет соответствующее место и предоставляет пользователю варианты выбора через пользовательский интерфейс 105. Тогда пользователь исходя из предоставленных вариантов выбора указывает соответствующее место. На этапе 361 компоновщик 150 удаляет список 155 команд. На этапе 362 приложение 117 удаляет компоновщик 150.

На этапе 365 производится определение, выполнил ли пользователь еще одно записываемое действие в приложении 117. Если «да», то осуществляется переход к этапу 325, чтобы определить, будет ли действие записано. Если пользователь не осуществляет другого записываемого действия (ответ «нет»), то осуществляется переход к этапу 370. На этапе 370 пользователь останавливает запись макроса в приложении 117. Пользователь может остановить запись макроса, выбрав опцию «остановить запись макроса» в выпадающем меню в приложении 117, появляющемся на мониторе пользовательского интерфейса 105. Теперь макрос записан в виде кода на конкретном языке и доступен пользователю в приложении 117. На этом способ 300 заканчивается на этапе «конец».

На фиг.4 изображена логическая блок-схема, иллюстрирующая иллюстративный компьютерно реализуемый способ составления списка 155 команд в синтаксисе, независимом от компьютерного языка, который осуществляется на этапе 330, указанном на фиг.3. Согласно фиг.1В, 3 и 4, способ 330 начинается с того, что, на этапе 405 пользователь выполняет записываемое действие в приложении 117. На этапе 410 приложение 117 создает компоновщик 150 в машине 140 записи макросов. Компоновщик 150 обычно создается для каждого записываемого пользовательского действия в приложении 117. Однако в альтернативном иллюстративном варианте осуществления компоновщик 150 может переустанавливаться с пустым списком 155 команд после того, как процессор 135 обработает предыдущий список 155 команд, что устраняет необходимость в создании нового компоновщика 150 для каждого записываемого пользовательского действия.

На этапе 415 компоновщик 150 создает в машине 140 записи макросов пустой список 155 команд, карту 165 переменных и верификатор 160. Обычно список 155 команд, карта 165 переменных и верификатор 160 создаются для каждого записываемого пользовательского действия в приложении 117. Однако другой иллюстративный вариант осуществления предусматривает переустановку списка 155 команд, карты 165 переменных и верификатора 160, и очистку списка 155 команд после того, как процессор 135 обработает предыдущий список 155 команд, что устраняет необходимость в создании новых списка 155 команд, карты 165 переменных и верификатора 160 для каждого записываемого пользовательского действия.

На этапе 420 приложение 117 транслирует порцию записываемого пользовательского действия в команду, имеющую синтаксис, независимый от компьютерного языка. На этапе 425 компоновщик 150, по мере необходимости, добавляет информацию из команды в карту 165 переменных. Компоновщик 150 добавляет информацию в карту 165 переменных, если команда содержит переменную, которая прежде не использовалась в более ранней команде. На этапе 445 компоновщик 150 передает команду верификатору 160. На этапе 450 верификатор 160 определяет, правильно ли создана команда. Чтобы определить, правильно ли создана команда, верификатор 160 проверяет код команды с целью проверки правильности конструкции кода, в том числе проверяет, содержит ли команда правильные типы и количество операндов или правильный тип информации для выполнения вызова.

На этапе 455 производится определение, использует ли компоновщик 150 верификатор 160 для определения правильности построения текущей команды в отношении содержимого списка 155 команд. Если «да», то происходит переход к этапу 460, на котором компоновщик 150 использует верификатор 160, чтобы определить, имеет ли смысл команда с учетом содержимого списка 155 команд. Затем процесс переходит к этапу 470. Если компоновщик 150 не использует верификатор 160 для определения правильности построения текущей команды в отношении содержимого списка 155 команд (ответ «нет»), то происходит переход к этапу 470. На этапе 470 компоновщик 150 добавляет команду к списку 155 команд.

На этапе 475 производится определение, завершен ли список 155 команд. Если «нет», то происходит переход к этапу 420, на котором приложение транслирует следующую порцию пользовательских действий в команды, имеющие синтаксис, независимый от компьютерного языка. Если список 155 завершен (ответ «да»), то происходит переход к этапу 335, указанному на фиг.3.

На фиг.5 изображена логическая блок-схема иллюстративного компьютерно реализуемого способа, осуществляемого верификатором 160 для определения правильности создания команды на этапе 450 по фиг.4. Согласно фиг.1В, 4 и 5 способ 450 начинается с того, что на этапе 510 верификатор 160 получает команду от компоновщика 150. На этапе 515 производится определение, содержит ли команда, полученная верификатором 160, правильные количество и тип операндов. Если «нет», то происходит переход к этапу 520, на котором создание списка 155 команд признается неудачным, и процесс заканчивается. Если команда содержит правильные количество и тип операндов (ответ «да»), то происходит переход к этапу 455, по фиг.4.

В заключение, настоящее изобретение позволяет пользователям и разработчикам создавать и применять макросы на различных языках программирования. Благодаря использованию независимого от языка синтаксиса OIL макрос можно создавать на одном языке и не нужно отдельно создавать его на других языках. Напротив, язык OIL преобразует команды исходного макроса в набор нейтральных команд, которые можно перевести на различные другие языки.

Очевидно, что настоящее изобретение удовлетворяет описанным здесь потребностям предшествующего уровня техники и отвечает вышеуказанным задачам. Хотя здесь были показаны и описаны несколько иллюстративных вариантов осуществления настоящего изобретения, специалисты в данной области техники могут внести в них разнообразные модификации и изменения, не выходя за рамки сущности и объема настоящего изобретения, установленные в прилагаемой формуле изобретения и ее эквивалентах. Например, способы настоящего изобретения можно применять к машиночитаемым командам помимо тех, которые обычно описываются как макросы.

Класс G06F9/44 устройства для выполнения специальных программ

устройство обработки информации, система обработки информации, способ обработки информации и носитель информации -  патент 2525746 (20.08.2014)
устройство воспроизведения, способ воспроизведения, устройство записи, способ записи, программа и структура данных -  патент 2525482 (20.08.2014)
расширяемость для основывающейся на web визуализации диаграмм -  патент 2524855 (10.08.2014)
моделирующий коап -  патент 2516703 (20.05.2014)
устройство и способ предоставления информации, терминальное устройство и способ обработки информации, и программа -  патент 2515717 (20.05.2014)
способ и устройство для классификации контента -  патент 2509352 (10.03.2014)
конфигурируемое разделение для параллельных данных -  патент 2503997 (10.01.2014)
кэширование и предоставление данных перед отправкой, относящихся к отправителю или получателю сообщения электронной почты -  патент 2501074 (10.12.2013)
протокол коммутации смеси мультимедийных данных для управления мультимедийными данными -  патент 2501070 (10.12.2013)
синхронизация жизненных циклов виртуальной машины и приложения -  патент 2498394 (10.11.2013)
Наверх