Грамматика ANTLR для AutoHotkey v2C#

Место общения программистов C#
Ответить
Anonymous
 Грамматика ANTLR для AutoHotkey v2

Сообщение Anonymous »

Я работаю над проектом Transpile Autohotkey V2, чтобы C# с использованием Antlr4 и Roslyn, но сталкиваюсь с некоторыми проблемами, которые я не могу понять, как хорошо решить. < /p>
Для простоты я постараюсь поставить пример, используя только несколько грамматических элементов, описанных этими правилами: < /p>
  • Запреты начинаются в начале строка, предшествующие пробелы игнорируется.
  • Назначение определяется как SingleExpression: = SingleExpression , например, A: = 1 или a: = b: = 1 < /код>. Белости не являются обязательными, а новички разрешены с обеих сторон оператора назначения. < /Li>
    < /ol> действителен. (a := 1) := 2 приводит к присвоению 2 .
    3. Оператор вызова функции начинается с идентификатора или выражения в скобках (или доступа к члену, выходит за рамки этой статьи), за ним следуют пробелы, а затем следует список аргументов, разделенных запятыми.
    4. Любые два отдельных выражения могут быть неявно объединены в строку, по крайней мере, с одним пробелом между ними. Например, a := 1 2 объединяет цифры до 12 и присваивает их значению a. Конец строки допускается только в том случае, если конкатенация заключена в скобки или круглые скобки.

    Код: Выделить всё

    a := 1
    hello
    
    будет рассматриваться как два оператора: присвоение 1 и вызов функции hello.

    Код: Выделить всё

    a := (1
    2)
    
    считается одним из них, и назначается 12 .
    Явная конкатенация также возможна с оператором. , в каком случае С обеих сторон должно быть пробел/новая линия. Если с обеих сторон нет пробелов, то это доступ объекта. :: , за которым следует либо еще одна горячая клавиша (на отдельной строке), либо заявление. Например, a :: b: = 1 означает «создать горячую клавишу для ключа a , который затем назначает 1 переменной b . A :: msgbox Вызывает вызов функции для MSGBOX . Код> Создает функциональность, где нажатие клавиши отправляет вместо этого b . Msgbox - это горячая клавиша только потому, что ключ с именем msgbox не существует. Оператор выражения a: = 1 Повторяемый 300 000 раз анализируется и выполняется Autohotkey за

    Подробнее здесь: https://stackoverflow.com/questions/793 ... ohotkey-v2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»