{{위키데이터 속성 추적}}
컴퓨터 [[프로그래밍 언어]]의 [[블록 (프로그래밍)|블록]]들이 [[들여쓰기 방식|들여쓰기]]로 표현되는 경우 '''오프사이드 룰'''({{lang|en|off-side rule}})을 준수한다고 이야기된다.<ref>
{{콘퍼런스 인용
| first= G.
| last= Hutton
| editor-first= Kei
| editor-last= Davis
| editor2-first= John
| editor2-last= Hughes
| title= Parsing Using Combinators
| booktitle= Functional Programming: Proceedings of the 1989 Glasgow Workshop 21–23 August 1989, Fraserburgh, Scotland
| pages= 362–364
| publisher= Springer Science & Business Media
| date= Dec 6, 2012
| url= https://books.google.com/books?id=GiLjBwAAQBAJ&pg=PA363&dq=offside+rule+programming
| accessdate= September 3, 2015}}
</ref><ref>
{{콘퍼런스 인용
| first= D.A.
| last= Turner
| editor-first= Hans Wolfgang
| editor-last= Loidl
| editor2-first= Ricardo
| editor2-last= Peña
| title= Some History of Functional Programming Languages (Invited Talk)
| booktitle= Trends in Functional Programming: 13th International Symposium, TFP 2012, St Andrews, UK, June 12–14, 2012, Revised Selected Papers
| pages= 8
| publisher= Springer
| date= August 13, 2013
| url= https://books.google.com/books?id=B_25BQAAQBAJ&pg=PA8&dq=Offside+rule+programming
| accessdate= September 3, 2015}}</ref> 
이 용어는 [[축구]]의 [[오프사이드]] 규정의 말장난으로 추정되며 [[피터 J. 랜딘]]에 의해 만들어졌다. 반의어는 [[자유형 언어]], 특히 [[중괄호 프로그래밍 언어]]이며, 이 언어의 경우 들여쓰기가 의미없으며 들여쓰기는 단지 코드 서식의 문제일 뿐이다.

== 코드 예시 ==
다음은 [[파이썬]]의 들여쓰기 블록의 예시이다. 콜론은 가독성을 위한 파이썬 언어 문법의 일부이며<ref>{{웹 인용 |url=http://effbot.org/pyfaq/why-are-colons-required-for-the-if-while-def-class-statements.htm |제목=Python FAQ on colons |확인날짜=2020-06-16 |archive-date=2012-02-07 |archive-url=https://web.archive.org/web/20120207105346/http://effbot.org/pyfaq/why-are-colons-required-for-the-if-while-def-class-statements.htm }}</ref> 오프사이드 규칙 구현에 필수적인 것은 아니다.

파이썬에서 선언이 아닌 문의 경계를 정의하기 위해 이 규칙을 사용한다.
<syntaxhighlight lang="python">
def is_even(a: (int, float)) -> bool:
    """Determine whether number 'a' is even."""
    if int(a % 2) == 0:
        print('Even!')
        return True
    print('Odd!')
    return False
</syntaxhighlight>

또, 파이썬은 중괄호 안에서 오프사이드 룰을 유예시키기도 한다. 괄호 내 문들은 괄호가 일치하거나 일치하지 않을 때까지 계속한다:
<syntaxhighlight lang="python">
{
    "this": True,
    "that": False,
    "them": [1, 2,
3, 4, 5,
6, 7, 8,
9, 10, 11, 23]
}
</syntaxhighlight>

이 [[연관 배열|딕셔너리]]에서 키들은 들여쓰기가 되어 있으며 리스트는 두 줄로 분리되어 있다.

== 오프사이드 룰 언어 ==
; 프로그래밍 언어
* [[ABC (프로그래밍 언어)|ABC]]
* [[Boo]]
* 버디스크립트(BuddyScript)
* [[코브라 (프로그래밍 언어)|코브라]]
* [[커피스크립트]]
* Converge
* [[커리 (프로그래밍 언어)|커리]]
* [[Elixir]] (<code>, do:</code> 블록)
* [[Elm]]
* [[F 샤프|F#]] (초기 버전에서 <code>#light</code>를 지정할 때 룰 적용. 나중에 출시된 버전에서는 <code>#light "off"</code>가 아닐 때 적용됨<ref>{{웹 인용|url=https://blogs.msdn.microsoft.com/dsyme/2009/05/20/detailed-release-notes-for-the-f-may-2009-ctp-update-and-visual-studio-2010-beta1-releases/ |title=Detailed Release Notes for the F# May 2009 CTP Update and Visual Studio 2010 Beta1 releases |last=Syme |first=Don |archive-url=https://web.archive.org/web/20190121121601/https://blogs.msdn.microsoft.com/dsyme/2009/05/20/detailed-release-notes-for-the-f-may-2009-ctp-update-and-visual-studio-2010-beta1-releases/ |archive-date=2019-01-21}}</ref>)
* [[지니 (프로그래밍 언어)|지니]]
* [[하스켈]]<ref>[http://haskell.org/onlinereport/lexemes.html#sect2.7 The Haskell Report - Layout]</ref> (중괄호가 없는 상황에서 <code>where</code>, <code>let</code>, <code>do</code>, <code>case ... of</code> 절이 올 때)
* [[Inform 7]]
* [[ISWIM]]
* [[라이브스크립트]]
* [[미란다 (프로그래밍 언어)|미란다]]
* 문스크립트(MoonScript)<ref>[https://moonscript.org MoonScript, a language that compiles to Lua]</ref><ref>[https://moonscript.org/reference/#the-language/whitespace MoonScript 0.5.0 - Language Guide]</ref>
* [[Nemerle]]
* [[님 (프로그래밍 언어)|님]]
* [[occam]]
* [[PROMAL]]
* [[파이썬]]
* [[스킴 (프로그래밍 언어)|스킴]]
* [[스핀 (프로그래밍 언어)|스핀]]
* [[XL (프로그래밍 언어)|XL]]

; 기타 언어
* [[Haml]]
* [[Make (소프트웨어)|Make]] (빌드 도구)
* [[reStructuredText]]<ref>[http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#id38 reStructuredText Markup Specification - Indentation]</ref>
* [[Sass (스타일시트 언어)|Sass]]
* [[스타일러스 (스타일시트 언어)|스타일러스]]
* [[YAML]]

== 각주 ==
{{각주}}

{{FOLDOC}}
{{프로그래밍 언어}}

[[분류:프로그래밍 언어 주제]]