diff options
| -rw-r--r-- | internal/generated/nqc.raku | 22 |
1 files changed, 8 insertions, 14 deletions
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 { <construct>* } - rule construct { <constant> | <statement> || <comment> } - rule constant { '#define' <identifier> <number> } + rule construct { <constant> | <statement> | <comment> } + rule constant { '#define' <identifier> <number> <-[\n]>+ } rule statement { <struct> ';' } rule struct { 'struct' <identifier> '{' <member>+ %% ';' '}' } rule member { <type> <identifier> <arraysize>? } @@ -26,8 +26,7 @@ grammar NQC { class NQCToGoActions { method TOP($/) { make "// This file was generated - don't change manually!\n" ~ - "package types\n\n" ~ - $<construct>.map(*.made).join('') + "package types\n\n" ~ $<construct>.map(*.made).join('') } method construct($/) { make $<constant>.made // $<statement>.made // '' } @@ -35,13 +34,10 @@ class NQCToGoActions { method constant($/) { make 'const ' ~ $<identifier> ~ ' = ' ~ $<number> ~ "\n" } method struct($/) { - make 'type ' ~ $<identifier>.made ~ " struct \{\n\t" ~ - $<member>.map(*.made).join("\n\t") ~ "\n\}" + make 'type ' ~ $<identifier>.made ~ " struct \{\n\t" ~ $<member>.map(*.made).join("\n\t") ~ "\n\}" } - method member($/) { - make $<identifier>.made ~ ' ' ~ ($<arraysize> ?? $<arraysize> !! '') ~ $<type>.made - } + method member($/) { make $<identifier>.made ~ ' ' ~ ($<arraysize> // '') ~ $<type>.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; |
