オフサイドルール

オフサイドルール(Off-side Rule)とは、一部のプログラミング言語において字下げによって文などのかたまりの範囲(ブロック)を示す規則である。すなわち、そのような言語ではブロックは字下げによって形成され識別される。この用語と考え方は ピーター・ランディン英語版 によるもので、ここでのoff-sideは「(左端)側から離れる」という意味だが、これはサッカーなどの球技におけるオフサイド規則 (offside law) のもじりと考えられる。

レイアウト・ルールと呼ぶこともある[1]

定義

前の行の空白以外の最初のトークンより左端寄りにある空白以外のトークンが新たな宣言の開始として解釈される。
— Peter J. Landin、"The Next 700 Programming Languages"[2]

ただし言語によっては、一見した見た目が似ているだけで、実際の規則は全く違う場合もある(ただし多くの文献などで、見た目の類似=同じもの、と紹介されているかもしれない)。

例えばHaskellの layout rule では[3]where, let, do, of という限定された4個のキーワードの直後のトークンが開き波括弧ではなかった場合にのみ、そのルールが発動し、改行とインデントの深さに応じて、いくつかの規則に従い、最初の開き波括弧、セミコロン及び閉じ波括弧が補完される、というものである。なおdoについてはdo式(do expressions)という[4]さらに別の、特別な記法の一部でもある。

注意

英語版ウィキペディアに示されている英文は実際にこのようであるのだが、その英文そのままの表現は原文献中には見当たらないようである(英語版の該当記事のnoteにある議論も参照のこと)。該当する箇所は4枚目(160頁)の左カラムの下端付近、段落の頭に (c) とある部分で、"the offside rule." という明確な表現があるのも確認できるが、そこにはルールとして次のようにある。

The southeast quadrant that just contains the phrase's first symbol must contain the entire phrase, except possibly for bracketed subsegments.

直訳すると以下のような感じであろうか。

フレーズの最初のシンボルをちょうど含む南東の象限(southeast quadrant)は、フレーズ全体を含まねばならない。ただし、ブラケットによって囲まれた部分がある場合はそこは例外である。

これを、現代においてよく使われる用語で再解釈すると、「フレーズ全体」とはブロックの全体のことで、「最初のシンボル」は begin といったようなキーワードないしその次のトークン(の最初の文字)、といった感じになる。英語版の文章の初出は不明だが、FOLDOCの当該の項[5]の文中に見られる。

コード例

以下の例は Python における字下げブロックを示している(コロンは可読性を高める構文上のマーカーでもある[6]

def is_even(a):
    if a / 2.0 == a / 2:
        return True
    else:
        return False

他の手法

前述のように、Landin による提案がオフサイドルールのはじまりと一般に認知されているが、クヌースStructured Programming with go to Statementsで引用している Dewey Val Schorreの Improved Organization for Procedural Languages(Landin の提案と同じく1966年)に、

Since the summer of 1960, I have been writing programs in outline form, using conventions of indentation to indicate the flow of control. (以下略)

とあり、ほぼ同時期に他にも(おそらく複数)独立して同様の試行が存在している。

以下ではオフサイドルール以外のブロックの記法について概観する。

Cで一般化した手法として、余分な空白を無視して波括弧 {} でブロックを表すという方法がある。この方法の利点は、自動的に読みやすく字下げすることが可能で、しかもそれによってコードの意味が変化しない点である。人間が読むとき字下げに目が行ってしまい、括弧で表現されている真の構造を読み違える可能性があるが、真の構造をきちんと反映するように自動で修正するという手がある。

LISP(のS式)は、全ての開始と終了を丸括弧ないし角括弧で明示する(中括弧を使用する言語と同様、余分な空白は無視される)。そもそもS式(S-expression)はプログラムコードのリスト構造による内部表現をそのまま一種のリテラルのようにして表現(express)したものである。

他の手法として、ブロックの開始と終了を記号ではなくキーワードで表現する方法がある。ここで論じている他の構文と同様字下げには意味が無い。

ALGOLで一般化した手法として、"begin" でブロックを開始し、"end" でブロックを終了するという方法がある(これは、具象構文(見た目)は大きく違うが、抽象構文としては波括弧の言語とさほど違うものではない)。

いくつかの言語では、繰り返しや条件分岐を表現するキーワードが暗黙のうちにブロックの開始(や終了)も表現する。構造化BASICなどでは、ブロックはブロックをともなうキーワード自身(例えば "IF")で開始され、前に "END" をつけたキーワード(例えば "ENDIF")で終了する。Bourne Shellの一部の文法などでは、ブロック終了を示すキーワードは開始するキーワードを逆に綴ったものである(例えば、"if" で始まるブロックは "fi" で終了する)。EiffelRubyでは、ブロックをともなうキーワード自身(たとえば"if")で開始され、"end"で終了する。

オフサイドルールを採用している言語

参考文献

  1. ^ たとえば The Haskell 98 Report 2 Lexical Structure2023年9月3日閲覧。
  2. ^ Landin, Peter J. (3 1966). “The next 700 programming languages”. Communications of the ACM 9 (3): 157–166. doi:10.1145/365230.365257. https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf. 
  3. ^ The Haskell 98 Report 2.7 Layout2023年9月3日閲覧。
  4. ^ The Haskell 98 Report 3.14 Do Expressions2023年9月3日閲覧。
  5. ^ https://foldoc.org/off-side+rule 2023年9月3日閲覧。
  6. ^ Design and History FAQ — Python 3.7.0a0 documentation2023年9月3日閲覧。
  7. ^ SRFI 49: Indentation-sensitive syntax2023年9月3日閲覧。
  8. ^ SRFI 110: Sweet-expressions (t-expressions) 2023年9月3日閲覧。

Read other articles:

Untuk negara, lihat Laos. Lengkuas Lengkuas (Alpinia galanga) Klasifikasi ilmiah Kerajaan: Plantae Divisi: Magnoliophyta Kelas: Liliopsida Ordo: Zingiberales Famili: Zingiberaceae Subfamili: Alpinioideae Tribus: Alpinieae Genus: Alpinia Spesies: A. galanga Nama binomial Alpinia galanga(L.) Willd. Sinonim Sumber:[1][2] A. galanga (L.) Swartz A. pyramidata Bl. Amomum medium Lour. Languas galanga (L.) Merr. L. galanga (L.) Stuntz. Maranta galanga L. Tumbuhan lengkuas Lengkua...

 

Este artículo se refiere o está relacionado con un evento de salud pública reciente o actualmente en curso. La información de este artículo puede cambiar frecuentemente. Por favor, no agregues datos especulativos y recuerda colocar referencias a fuentes fiables para dar más detalles. Pandemia de COVID-19 en Singapur Parte de la pandemia de COVID-19 De izquierda a derecha: Supermercado vacío por compras de pánico, puesto de vacunación, personas en el metro usando cubrebocas, puestos c...

 

American mathematician For other people named Michael Freedman, see Michael Freedman (disambiguation). Michael FreedmanFreedman in 2010BornMichael Hartley FreedmanApril 21, 1951 (1951-04-21) (age 72)Los Angeles, California, U.S.Alma materPrinceton University (PhD)Known forWork on the Generalized Poincaré conjecture in dimension 4Systolic geometryE8 manifoldAwardsSloan Research Fellowship (1980)MacArthur Fellowship (1984)Oswald Veblen Prize in Geometry (1986)Fields Medal (...

Mergozzo Gemeente in Italië Situering Regio Piëmont (PMN) Provincie Verbano-Cusio-Ossola (VB) Coördinaten 45° 58′ NB, 8° 26′ OL Algemeen Oppervlakte 27,4 km² Inwoners (1 januari 2018) 2.174[1] (77 inw./km²) Hoogte 196 m Overig Postcode 28040 Netnummer 0323 Naam inwoner mergozzesi ISTAT-code 103044 Portaal    Italië Mergozzo is een gemeente in de Italiaanse provincie Verbano-Cusio-Ossola (regio Piëmont) en telt 2097 inwoners (31-12-2004). De oppervlakte b...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أكتوبر 2019) هيرمان شيل (بالألمانية: Herman Schell)‏  معلومات شخصية الميلاد 28 فبراير 1850[1]  فرايبورغ  الوفاة 31 مايو 1906 (56 سنة) [1]  فورتسبورغ  مواطنة دوقية باد...

 

У Вікіпедії є статті про інших людей із прізвищем Аргунов. Аргунов Іван Петровичрос. Иван Аргунов Народження 1729[1][2][…]Російська імперія[4]Смерть 1802[1][2][…]  Москва, Російська імперіяКраїна  Російська імперіяЖанр портретДіяльність художникВчител...

' قرية بن قلام  - قرية -  تقسيم إداري البلد  اليمن المحافظة محافظة حضرموت المديرية مديرية ساة العزلة عزلة ساه السكان التعداد السكاني 2004 السكان 30   • الذكور 16   • الإناث 14   • عدد الأسر 3   • عدد المساكن 3 معلومات أخرى التوقيت توقيت اليمن (+3 غرينيتش) تعديل مص

 

أبشيرونسك    علم شعار الإحداثيات 44°27′39″N 39°44′26″E / 44.460833333333°N 39.740555555556°E / 44.460833333333; 39.740555555556  تاريخ التأسيس 1863  تقسيم إداري  البلد روسيا[2] الإمبراطورية الروسية الاتحاد السوفيتي[1]  خصائص جغرافية  المساحة 28 كيلومتر مربع  ارتفاع 200 مت

 

Black social media movement Black Twitter is an internet community largely consisting of the Black diaspora of users on the social network Twitter, focused on issues of interest to the black community[1][2][3][4] Feminista Jones described it in Salon as a collective of active, primarily African-American Twitter users who have created a virtual community proving adept at bringing about a wide range of sociopolitical changes.[5] A similar Black Twitter co...

Опис файлу Опис Емблема ФК Динамо Київ. Емблема ФК Динамо (Київ) з 2008 року Джерело Офіційний сайт Динамо Київ Автор зображення Лавренюк П.В. Ліцензія Це логотип (емблема) організації, товару, або заходу, що перебуває під захистом авторських прав та/або є товарним знаком. Вик...

 

Singing voice synthesizer software developed by Crypton Future Media This article is about the character. For the video game series which features Hatsune Miku, see Hatsune Miku: Project DIVA. For other uses, see Hatsune Miku (disambiguation). In this Japanese name, the surname is Hatsune. Hatsune MikuDeveloper(s)Crypton Future MediaInitial releaseAugust 31, 2007Stable releaseHatsune Miku NT (New Type) / November 27, 2020 Operating systemMicrosoft Windows, macOSPlatformPCAvailable inJapaneseE...

 

Музейно-краеведческий центр «Палаты Коробовых»отдел Калужского объединённого музея-заповедника Каменные палаты Коробова в Калуге Дата основания 1897 Местонахождение Калуга Адрес Россия, Калуга,ул. Плеханова, 88 Посетителей в год до 50 тыс. Директор Роянова Галина Ильинич...

Pelabuhan SibolgaLokasiNegaraIndonesiaLokasiSibolgaDetailOtoritas PelabuhanASDP Indonesia FerryStatistikKedatangan kapalSetiap hari Pelabuhan Sibolga salah satu pelabuhan di Sumatera Utara yang terletak di Kota Sibolga. Pelabuhan ini menghubungkan beberapa daerah di Sumatera Utara dengan daerah lain di Indonesia. Pelabuhan ini baru direnovasi pada tahun 2019 dan menjadi pelabuhan terbaik di Asia Pasifik. Fasilitas Untuk menunjang kualitas dan kecepatan pelayanan bongkar muat dan kegiatan ekso...

 

Railway station in Fife, Scotland, UK For other uses, see Dunfermline railway station (disambiguation). Dunfermline Queen MargaretScottish Gaelic: Dùn Phàrlain Banrigh Mairead[1]A view looking west towards Dunfermline City stationGeneral informationLocationDunfermline, FifeScotlandCoordinates56°04′49″N 3°25′17″W / 56.0803°N 3.4214°W / 56.0803; -3.4214Grid referenceNT116883Managed byScotRailPlatforms2Other informationStation codeDFLHistoryOriginal ...

 

Annual ski jumping event in Germany and Austria Four Hills TournamentVierschanzentourneelogotypeStatusactiveGenresporting eventDate(s)29/30 December – 6 JanuaryFrequencyannualCountryAustriaGermanyInaugurated1953 (1953)Most recent2022–23Previous event2021–22Organised byFISWebsitevierschanzentournee.com The Four Hills Tournament (German: Vierschanzentournee) or the German-Austrian Ski Jumping Week (German: Deutsch-Österreichische Skisprung-Woche) is a ski jumping event composed of f...

Kin no unko resting on a red backdrop Kin no unko (金のうんこ) or golden poo is a Japanese cultural phenomenon. It is a symbol of good luck, as the name is a pun meaning golden poo and good luck in Japanese.[1] By 2006, 2.7 million mobile phone charms in this form had been sold.[2][3] The symbol, or something similar to it called unchi, appears as an emoji available on many mobile devices that support a Unicode expansion made in the summer of 2014.[4] The ...

 

American sport shooter Ginny ThrasherVirginia Thrasher at the 2016 Summer OlympicsPersonal informationNationalityAmericanBorn (1997-02-28) February 28, 1997 (age 26)Rome, New York[1]EducationWest Virginia UniversityHeight5 ft 1 in (155 cm)[2]Weight119 lb (54 kg)[2]SportCountry United StatesSportShootingEventsAR40 (10m air rifle)STR3X20 (50m rifle 3 positions)University teamWest Virginia MountaineersAchievements and titlesHighest world...

 

History of China Storia della Cina Preistoria Paleolitico c. 500 000 anni fa – c. 8500 a.C. Neolitico c. 8500 – c. 2070 a.C. Antica Dinastia Xia c. 2100-c. 1600 a.C. Dinastia Shang c. 1600-c. 1046 a.C. Dinastia Zhou c. 1045-256 a.C.  Dinastia Zhou occidentale  Dinastia Zhou orientale    Periodo delle primavere e degli autunni    Periodo degli Stati Combattenti Imperiale Dinastia Qin 221-206 a.C. Dinastia Han 206 a.C.-220 d.C.   Dinastia Han occ...

Maxime Bôchersekitar tahun 1900Lahir(1867-08-28)28 Agustus 1867Boston, MassachusettsMeninggal12 September 1918(1918-09-12) (umur 51)Cambridge, MassachusettsKebangsaanAmerika SerikatAlmamaterUniversitas HarvardUniversitas GöttingenDikenal atasPersamaan diferensial, deret, dan aljabarKarier ilmiahBidangMatematikaInstitusiUniversitas HarvardPembimbing doktoralFelix KleinMahasiswa doktoralWilliam BrenkeDavid R. CurtissGriffith C. EvansLester R. FordWalter B. FordJames W. GloverCharles N. M...

 

1987 film by Bill Forsyth HousekeepingTheatrical release posterDirected byBill ForsythScreenplay byBill ForsythBased onHousekeepingby Marilynne RobinsonProduced byRobert F. ColesberryStarring Christine Lahti CinematographyMichael CoulterEdited byMichael EllisMusic byMichael GibbsProductioncompanyColumbia PicturesDistributed byColumbia PicturesRelease date November 25, 1987 (1987-11-25) (USA) Running time116 minutesCountryUnited StatesLanguageEnglishBudget$5 million[1 ...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!