diff --git a/src/snc/snl.lem b/src/snc/snl.lem
index aeb3cd5fa85893287373475f2d2338abb0805bce..f22d9f88248bbf7325b08d8e142f6fcd8ceff7d7 100644
--- a/src/snc/snl.lem
+++ b/src/snc/snl.lem
@@ -479,8 +479,8 @@ member(p) ::= NAME(t).				{ p = expr(E_MEMBER, t); }
 functions(p) ::= .					{ p = 0; }
 functions(p) ::= functions(fs) function(f).		{ p = link_expr(fs, f); }
 
-function(p) ::= FUNCTION(l) basetype(t) declarator(d) block(b). {
-	p = expr(D_FUNCDEF, l, decl_add_base_type(d, t), b);
+function(p) ::= basetype(t) declarator(d) block(b). {
+	p = expr(D_FUNCDEF, token_from_expr(d), decl_add_base_type(d, t), b);
 }
 
 // Literal (C) code
diff --git a/src/snc/snl.re b/src/snc/snl.re
index 3d514522b19845afd23f31080ea9031124f73d32..1c7d1961b14de6c364d5bb2bbc9d77bbe79da017 100644
--- a/src/snc/snl.re
+++ b/src/snc/snl.re
@@ -245,7 +245,6 @@ snl:
 	"float"		{ TYPEWORD(FLOAT,	"float"); }
 	"for"		{ KEYWORD(FOR,		"for"); }
 	"foreign"	{ TYPEWORD(FOREIGN,	"foreign"); }
-	"function"	{ TYPEWORD(FUNCTION,	"function"); }
 	"if"		{ KEYWORD(IF,		"if"); }
 	"int"		{ TYPEWORD(INT,		"int"); }
 	"long"		{ TYPEWORD(LONG,	"long"); }