diff --git a/shared/rascal/src/extract/RascalSyntax2BGF.rsc b/shared/rascal/src/extract/RascalSyntax2BGF.rsc
index fe675ac7..2cfd4cd7 100644
--- a/shared/rascal/src/extract/RascalSyntax2BGF.rsc
+++ b/shared/rascal/src/extract/RascalSyntax2BGF.rsc
@@ -57,6 +57,7 @@ default BGFProduction prod2prod(Production def) = production("", "?", syntax::BG
BGFExpression rhs2expr([Symbol s]) = symbol2expr(s);
BGFExpression rhs2expr(list[Symbol] seq) = syntax::BGF::sequence([symbol2expr(s) | s <- seq, layouts(_) !:= s]);
+BGFExpression symbol2expr(label(str x, Symbol s)) = syntax::BGF::selectable(x,symbol2expr(s));
BGFExpression symbol2expr(\sort(str x)) = syntax::BGF::nonterminal(x);
BGFExpression symbol2expr(conditional(\sort(str x),{except(_)})) = syntax::BGF::nonterminal(x); // cannot represent better in BGF
BGFExpression symbol2expr(\lex(str x)) = syntax::BGF::nonterminal(x);
diff --git a/topics/convergence/guided/bgf/rascal-c.bgf b/topics/convergence/guided/bgf/rascal-c.bgf
index e61a7b60..dc2f4609 100644
--- a/topics/convergence/guided/bgf/rascal-c.bgf
+++ b/topics/convergence/guided/bgf/rascal-c.bgf
@@ -1,2 +1,2 @@
-ProgramFunction\nExprNameExprExprifExprthenExprelseExprExprNameExprExprOpsExprExpr(Expr)ExprIntOps+Ops==Ops-FunctionNameName=Expr
+ProgramfunctionsFunction\nExprifcondExprthenthenbranchExprelseelsebranchExprExpr(eExpr)ExpriIntExpraNameExprlexprExpropOpsrexprExprExprfNamevargsExprOps+Ops==Ops-FunctionfNameargsName=bodyExpr
diff --git a/topics/fl/rascal/src/Concrete.rsc b/topics/fl/rascal/src/Concrete.rsc
index 6c56ae44..6321c750 100644
--- a/topics/fl/rascal/src/Concrete.rsc
+++ b/topics/fl/rascal/src/Concrete.rsc
@@ -1,15 +1,15 @@
@contributor{Vadim Zaytsev - vadim@grammarware.net - SWAT, CWI}
module Concrete
-start syntax Program = prg: {Function "\n"}+;
-syntax Function = fun: Name Name+ "=" Expr ;
+start syntax Program = prg: {Function "\n"}+ functions;
+syntax Function = fun: Name f Name+ args "=" Expr body;
syntax Expr
- = binary: Expr Ops Expr
- | apply: Name Expr!apply+
- | ifThenElse: "if" Expr "then" Expr "else" Expr
- | bracket "(" Expr ")"
- | argument: Name
- | literal: Int
+ = binary: Expr lexpr Ops op Expr rexpr
+ | apply: Name f Expr!apply+ vargs
+ | ifThenElse: "if" Expr cond "then" Expr thenbranch "else" Expr elsebranch
+ | bracket "(" Expr e ")"
+ | argument: Name a
+ | literal: Int i
;
syntax Ops