Skip to content

Commit f78c35b

Browse files
committed
Add some v52 keywords
1 parent 98e32c2 commit f78c35b

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed

frontends/lexer.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
#define VT '\013'
2525

26-
#define MAX_PNUT_VERSION 51 /* maximum PNut version we understand */
26+
#define MAX_PNUT_VERSION 52 /* maximum PNut version we understand */
2727

2828
int allow_type_names = 1;
2929

@@ -2540,6 +2540,12 @@ struct reservedword_soft {
25402540
{ "ln", SP_LOG, 51, 0 },
25412541
{ "exp", SP_EXP, 51, 0 },
25422542
{ "pow", SP_POW, 51, 0 },
2543+
2544+
/* v52 keywords */
2545+
{ "movbyts", SP_MOVBYTS, 52, 0 },
2546+
{ "endianl", SP_ENDIANL, 52, 0 },
2547+
{ "endianw", SP_ENDIANW, 52, 0 },
2548+
{ "debug_end_session", SP_DEBUG_END_SESSION, 52, 0 },
25432549
};
25442550

25452551
struct reservedword basic_keywords[] = {

frontends/spin/spin.y

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,13 @@ MakeFunccall(AST *func, AST *params, AST *numresults)
225225
return NewAST(AST_FUNCCALL, func, params);
226226
}
227227

228+
static AST *
229+
MakeFunccall1(AST *func, AST *arg1)
230+
{
231+
AST *exprlist = NewAST(AST_EXPRLIST, arg1, NULL);
232+
return MakeFunccall(func, exprlist, NULL);
233+
}
234+
228235
// special handling for things like "abc" | x
229236
// in Spin this is the same as "ab", "c" | x
230237

@@ -626,6 +633,11 @@ SpinDeclareInterface(AST *ident, AST *defs)
626633
%token SP_EXP "EXP"
627634
%token SP_POW "POW"
628635

636+
%token SP_MOVBYTS "MOVBYTS"
637+
%token SP_ENDIANL "ENDIANL"
638+
%token SP_ENDIANW "ENDIANW"
639+
%token SP_DEBUG_END_SESSION "DEBUG_END_SESSION"
640+
629641
%token SP_FADD "+."
630642
%token SP_FSUB "-."
631643
%token SP_FMUL "*."
@@ -2683,42 +2695,63 @@ funccall:
26832695
AST *arg1 = $3;
26842696
AST *ident = AstIdentifier("__builtin_log2f");
26852697

2686-
$$ = MakeFunccall(ident, arg1, NULL);
2698+
$$ = MakeFunccall1(ident, arg1);
26872699
}
26882700
| SP_EXP2 '(' expr ')'
26892701
{
26902702
AST *arg1 = $3;
26912703
AST *ident = AstIdentifier("__builtin_exp2f");
26922704

2693-
$$ = MakeFunccall(ident, arg1, NULL);
2705+
$$ = MakeFunccall1(ident, arg1);
26942706
}
26952707
| SP_LOG10 '(' expr ')'
26962708
{
26972709
AST *arg1 = $3;
26982710
AST *ident = AstIdentifier("__builtin_log10f");
26992711

2700-
$$ = MakeFunccall(ident, arg1, NULL);
2712+
$$ = MakeFunccall1(ident, arg1);
27012713
}
27022714
| SP_EXP10 '(' expr ')'
27032715
{
27042716
AST *arg1 = $3;
27052717
AST *ident = AstIdentifier("__builtin_exp10f");
27062718

2707-
$$ = MakeFunccall(ident, arg1, NULL);
2719+
$$ = MakeFunccall1(ident, arg1);
27082720
}
27092721
| SP_LOG '(' expr ')'
27102722
{
27112723
AST *arg1 = $3;
27122724
AST *ident = AstIdentifier("__builtin_logf");
27132725

2714-
$$ = MakeFunccall(ident, arg1, NULL);
2726+
$$ = MakeFunccall1(ident, arg1);
27152727
}
27162728
| SP_EXP '(' expr ')'
27172729
{
27182730
AST *arg1 = $3;
27192731
AST *ident = AstIdentifier("__builtin_expf");
27202732

2721-
$$ = MakeFunccall(ident, arg1, NULL);
2733+
$$ = MakeFunccall1(ident, arg1);
2734+
}
2735+
| SP_ENDIANL '(' expr ')'
2736+
{
2737+
AST *arg1 = $3;
2738+
AST *ident = AstIdentifier("__builtin_bswap32");
2739+
2740+
$$ = MakeFunccall1(ident, arg1);
2741+
}
2742+
| SP_ENDIANW '(' expr ')'
2743+
{
2744+
AST *arg1 = $3;
2745+
AST *ident = AstIdentifier("__builtin_bswap16");
2746+
2747+
$$ = MakeFunccall1(ident, arg1);
2748+
}
2749+
| SP_MOVBYTS '(' operandlist ')'
2750+
{
2751+
AST *args = $3;
2752+
AST *ident = AstIdentifier("__builtin_movbyts");
2753+
2754+
$$ = MakeFunccall(ident, args, NULL);
27222755
}
27232756
;
27242757

0 commit comments

Comments
 (0)