Keyword golfing
Many programming languages have the concept of keywords, special syntax items that are not just identifiers reserved by some library, but words reserved by the language itself.
The challenge is to write a minimal program for a language with such keywords, with as few characters as possible (code golf), while at the same time using every single keyword from the language.
The program need not do anything meaningful or perform any particular input/output, but it must compile cleanly with a conforming compiler and execute without run-time errors/crashes. Non-standard extensions and alternative non-standard keywords shall not be used.
Example, all keywords from the C language (as per the current C17 standard):
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
inline
int
long
register
restrict
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
_Alignas
_Alignof
_Atomic
_Bool
_Complex
_Generic
_Imaginary
_Noreturn
_Static_assert
_Thread_local
[Python 3.7], 231 bytes …
3y ago
Ruby 3.1.0, 274 259 249 bytes …
2y ago
Scala 3, 553 bytes ```scala …
3y ago
Lua 5.4.4, 147 bytes ``` l …
2y ago
BQN, 107 bytes ``` A↩C←A⇐¯ …
3y ago
[C (gcc)], 358 bytes …
1y ago
6 answers
C (gcc), 358 bytes
static inline _Noreturn float f(union u);extern _Thread_local _Complex long double*restrict B;main(void){_Atomic register enum {A};typedef _Alignas(unsigned char)struct S;_Static_assert(_Alignof(_Bool),"_Imaginary");do goto a;while(sizeof B);if(1)for(auto volatile const signed short int i;;)continue;else switch(_Generic(0,default:0))case 0:a:break;return;}
Since nobody dared to take on C since this was posted, here's my attempt. It fulfills the "doesn't crash" criteria (though returns an unspecified value from the program).
Disclaimer: I couldn't get _Imaginary
to work in gcc and clang doesn't even support complex numbers. Therefore I included the keyword inside a string literal, so that I won't get any unfair advantage against someone who can manage to get it working on some compiler.
0 comment threads
Python 3.7, 231 bytes
class C:pass
def g():
async def f():return;yield;await[3for()in()];nonlocal f
if None:
with lambda:3or 7and 8as q:del x
elif False:raise
else:assert 1is not 5
try:from x import*
except:global a
finally:9
while True:break;continue
2 comment threads
Scala 3, 553 bytes
package a
import E.Z as Z
import E.*
sealed trait T
open class Y{export E.Z as Q}
enum E[+A]derives CanEqual:
case Z
end E
private abstract final class X extends AnyRef with T{protected opaque type T>:0=0
lazy val x:X#T=0
override def toString:String={var e=0
while false do try 0 catch{case e=>throw e}finally{}
0 match{case _@0|1=>if true then(for a<-""yield null)else 0}
return new String(super.toString)}}
given[A[-C]<:[B]=>>B](using 0):0=0
object O
extension(x:0)transparent inline infix def x(y:0)(implicit c:0)=(a:0)=>(b:0)?=>null
@main def m={}
This includes soft keywords. The official list of keywords is here.
0 comment threads
Ruby 3.1.0, 274 259 249 bytes
-10 bytes thanks to Paradox in the Ruby discord
BEGIN{END{alias module class
begin rescue
retry ensure end
if self
elsif defined?
for$.in true do
super while false until 0unless not __ENCODING__ and __LINE__ or nil
undef redo
next end
return def break =yield end
case when __FILE__ then else end}}
41 total keywords that you can view here.
0 comment threads
Lua 5.4.4, 147 bytes
local function f()goto l::l::return end for _ in f do end if true and false then elseif""then else end repeat until""or not nil while""do break end
Check the list of keywords.
Thanks to @orthoplex for more shortening.
1 comment thread
BQN, 107 bytes
A↩C←A⇐¯π{_𝕣_:@;/⊏𝕩.y?𝕗‿∊𝕊⟨𝕤,⍷⟩𝕏𝕎𝔽𝕨𝔾𝕘}∞˙⌜˘¨´˝`(•Js⎉⊔⎊⌽⌾⍉⚇«∘»·∧○∨⍋⍒↑↓≍∾˜⥊⋈↕⊢⍟⊣¬!|≡≢/≥⟜≠=⊸≥⊐⊘⊒◶⊑><⌊⌈√⁼⋆+-×÷)⋄#
BQN doesn't have keywords but primitive symbols are reserved. It's quite funny how this manages to compile.
2 comment threads