Какие языки программирования поддерживают метки с разрывами и продолжением? - PullRequest
5 голосов
/ 20 июня 2010

Я недавно прочитал о помеченных комментариях в java и возможности указать метку с помощью операторов break и continue. Какие другие языки поддерживают этот синтаксис?

Ответы [ 3 ]

5 голосов
/ 20 июня 2010

Вот список языков с Java-подобными метками;т.е. возможность ветвления из помеченного оператора или блока.

  • Java
  • Javascript
  • C # - C # поддерживает goto <label>, но не break <label> или continue <label>.
  • Ada - используя оператор exit <label>.
  • PL / SQL - с использованием операторов exit <label> или continue <label>.

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

  • Pascal
  • FORTRAN - FORTRANтакже имеет «вычисленное goto», в котором целевая метка выбирается во время выполнения, и «назначенное goto», которое является формой самоизменяющегося кода.
  • COBOL
  • C
  • C ++

Многие языки (также) поддерживают выброс и перехват исключений.Это можно рассматривать как обобщенную форму перехода к метке.Однако есть два важных различия:

  • «Точка выброса» не указывает местоположение, которое будет перехватывать исключение (т. Е. Метку).
  • Поток управления может выходить изтекущий вызов процедуры / функции / метода.

( Ruby's throw / catch, похоже, имеет аспекты обычной обработки исключений и помеченных операторов. Однако я склонен думать, что сметка не нуждается в лексической области видимости, это наиболее близко к обычной обработке исключений.)

пожалуйста, добавьте больше.

1 голос
/ 20 июня 2010

Хотите исчерпывающий список? Как вы собираетесь наградить ответ? Кто бы ни перечислял больше всего?

Basic, Pascal, Perl, все ассемблеры, я представляю (могу ли я получить баллы за каждого, кого я назову?

Возможно, вы захотите прочитать

http://en.wikipedia.org/wiki/Goto

http://en.wikipedia.org/wiki/Unstructured_programming

http://en.wikipedia.org/wiki/Considered_harmful

0 голосов
/ 20 июня 2010
  • C (и Objective-C из-за того, что это прямой надмножество c).
  • сборка Intel x86
  • Python
...