オフサイドルール
そもそもS式(S-expression)はプログラムコードのリスト構造による内部表現をそのまま一種のリテラルのようにして表現(express)したものである。
他の手法として、ブロックの開始と終了を記号ではなくキーワードで表現する方法がある。ここで論じている他の構文と同様字下げには意味が無い。
ALGOLで一般化した手法として、"begin" でブロックを開始し、"end" でブロックを終了するという方法がある(これは、具象構文(見た目)は大きく違うが、抽象構文としては波括弧の言語とさほど違うものではない)。
いくつかの言語では、繰り返しや条件分岐を表現するキーワードが暗黙のうちにブロックの開始(や終了)も表現する。構造化BASICなどでは、ブロックはブロックをともなうキーワード自身(例えば "IF")で開始され、前に "END" をつけたキーワード(例えば "ENDIF")で終了する。Bourne Shellの一部の文法などでは、ブロック終了を示すキーワードは開始するキーワードを逆に綴ったものである(例えば、"if" で始まるブロックは "fi" で終了する)。EiffelやRubyでは、ブロックをともなうキーワード自身(たとえば"if")で開始され、"end"で終了する。