From 8d6c94f8681aea43620e2b4eebb6c7b46e2926dc Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 20 Feb 2024 22:49:13 +0200 Subject: minor improvements in the NQC parser --- internal/generated/nqc.raku | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'internal/generated') diff --git a/internal/generated/nqc.raku b/internal/generated/nqc.raku index c59688f..040617f 100644 --- a/internal/generated/nqc.raku +++ b/internal/generated/nqc.raku @@ -9,8 +9,8 @@ use v6.d; # Not quite C grammar NQC { rule TOP { * } - rule construct { | || } - rule constant { '#define' } + rule construct { | | } + rule constant { '#define' <-[\n]>+ } rule statement { ';' } rule struct { 'struct' '{' + %% ';' '}' } rule member { ? } @@ -26,8 +26,7 @@ grammar NQC { class NQCToGoActions { method TOP($/) { make "// This file was generated - don't change manually!\n" ~ - "package types\n\n" ~ - $.map(*.made).join('') + "package types\n\n" ~ $.map(*.made).join('') } method construct($/) { make $.made // $.made // '' } @@ -35,13 +34,10 @@ class NQCToGoActions { method constant($/) { make 'const ' ~ $ ~ ' = ' ~ $ ~ "\n" } method struct($/) { - make 'type ' ~ $.made ~ " struct \{\n\t" ~ - $.map(*.made).join("\n\t") ~ "\n\}" + make 'type ' ~ $.made ~ " struct \{\n\t" ~ $.map(*.made).join("\n\t") ~ "\n\}" } - method member($/) { - make $.made ~ ' ' ~ ($ ?? $ !! '') ~ $.made - } + method member($/) { make $.made ~ ' ' ~ ($ // '') ~ $.made } method type($/) { make do given ~$/ { @@ -49,13 +45,11 @@ class NQCToGoActions { when '__s32' { 'int32' } when '__u32' { 'uint32' } when '__u64' { 'uint64' } - }; + } } - method identifier($/) { - # Convert identifier from snake_case (C) to CamelCase (Go) - make $/.Str.split('_').map(*.tc).join('') - } + # Convert identifier from snake_case (C) to CamelCase (Go) + method identifier($/) { make $/.Str.split('_').map(*.tc).join('') } } say NQC.parse($*IN.slurp, :actions(NQCToGoActions)).made; -- cgit v1.2.3