diff mbox

GIT master fails compilation for ACPI

Message ID 20131124112815.GA7528@redhat.com
State New
Headers show

Commit Message

Michael S. Tsirkin Nov. 24, 2013, 11:28 a.m. UTC
On Fri, Nov 22, 2013 at 09:19:49PM +0100, Erik Rull wrote:
> Paolo Bonzini wrote:
> >Il 22/11/2013 12:16, Erik Rull ha scritto:
> >>It's getting more and more complex to build qemu, is there a reason why everyone
> >>needs to build the acpi stuff by himself?
> >
> >It is only attempted if iasl is installed but as you said below, your
> >version is too old.  Please run "make V=1" so that we can see what is
> >the problem.
> >
> >>It should be something static like the bios binary files, right?
> >
> >ACPI tables are now generated by QEMU, so the ACPI compilation step
> >happens while compiling QEMU.
> >
> >>So you could provide the defaults directly and everyone that wants to modify the
> >>defaults is free to compile it by himself.
> >>
> >>And if these tools are required, please add an error message at configure
> >>runtime so that the successive errors at runtime will not appear, because
> >>compiling is then blocked by configure. And if the IASL is too old, a version
> >>check at configure runtime would be helpful as well.
> >
> >Good idea.  Any chance you could help?  Version 20090123 should be new
> >enough.
> 
> Hi Paolo,
> 
> Sure, here the V=1 result - I tried already some make options to get
> the verbose output, but I didn't find this trivial option :-)
> 
> erik@debian:~/qemu-test/qemu$ make V=1
> make  BUILD_DIR=/home/erik/qemu-test/qemu -C pixman V="1" all
> make[1]: Entering directory `/home/erik/qemu-test/qemu/pixman'
> make  all-recursive
> make[2]: Entering directory `/home/erik/qemu-test/qemu/pixman'
> Making all in pixman
> make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman/pixman'
> make  all-am
> make[4]: Entering directory `/home/erik/qemu-test/qemu/pixman/pixman'
> make[4]: Nothing to be done for `all-am'.
> make[4]: Leaving directory `/home/erik/qemu-test/qemu/pixman/pixman'
> make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman/pixman'
> Making all in test
> make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman/test'
> make[3]: Nothing to be done for `all'.
> make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman/test'
> make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman'
> make[3]: Nothing to be done for `all-am'.
> make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
> make[2]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
> make[1]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
> make  BUILD_DIR=/home/erik/qemu-test/qemu -C x86_64-softmmu V="1"
> TARGET_DIR="x86_64-softmmu/" all
> make[1]: Entering directory `/home/erik/qemu-test/qemu/x86_64-softmmu'
> cpp -P /home/erik/qemu-test/qemu/hw/i386/acpi-dsdt.dsl -o acpi-dsdt.dsl.i.orig
> python /home/erik/qemu-test/qemu/scripts/acpi_extract_preprocess.py
> acpi-dsdt.dsl.i.orig > acpi-dsdt.dsl.i
> iasl  -vs -l -tc -p acpi-dsdt acpi-dsdt.dsl.i   2>&1
> acpi-dsdt.dsl.i    84:             0x8000000000,
> Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
> 
> 
> acpi-dsdt.dsl.i    85:             0xFFFFFFFFFF,
> Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
> 
> 
> acpi-dsdt.dsl.i    87:             0x8000000000,
> Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
> 
> 
> ASL Input:  acpi-dsdt.dsl.i - 476 lines, 19189 bytes, 316 keywords
> Compilation complete. 3 Errors, 0 Warnings, 0 Remarks, 246 Optimizations
> make[1]: *** [hw/i386/acpi-dsdt.hex] Error 1
> make[1]: Leaving directory `/home/erik/qemu-test/qemu/x86_64-softmmu'
> make: *** [subdir-x86_64-softmmu] Error 2
> erik@debian:~/qemu-test/qemu$
> 
> Best regards,
> 
> Erik

This IASL version seems broken: apparently it can't process 64 bit
constants?

The assumption is that if you have iasl installed you
are a developer that wants to hack on iasl, so
we are trying to build ACPI from source.

We did go out of our way to support systems without IASL
though, so as a quick work-around you can just remove iasl
from your system, or add an iasl binary early in the path
that will return an error code when called with the -h
flag, e.g. use a shell script that simply does "exit 1"
or manually remove IASL= from config-host.mak
after running configure.

This will tell the build that you don't have iasl
so it will now build acpi from source.

I also sent patches that let you bypass the installed iasl
by configuring with --iasl=

As for support for old IASL versions - I downloaded
acpica-unix-20060912 from debian etch unpacked the original
tarball and applied the patch acpica-unix_20060912-3.2.diff
that came with etch. I then built the source on Fedora 19.

I had to change $$ = to $<n>$ = in a bunch of places
to make it build with modern bison (patch attached
if you are curious).

Afterwards I got a version of iasl that compiled
QEMU just fine, so the issue appears not to be with too-old iasl
generally, it's the specific version that is broken, maybe your distro
applied a broken patch?

Maybe we should just figure out what confuses your iasl.
Is your iasl able to compile the following chunk of code?


DefinitionBlock (
    "iasl-test.aml",    // Output Filename 
    "DSDT",             // Signature
    0x01,               // DSDT Compliance Revision
    "BXPC",             // OEMID
    "BXDSDT",           // TABLE ID
    0x1                 // OEM Revision
    )
{


    Name(CR64, ResourceTemplate() {
        QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
            0x00000000,          // Address Space Granularity
            0x8000000000,        // Address Range Minimum
            0xFFFFFFFFFF,        // Address Range Maximum
            0x00000000,          // Address Translation Offset
            0x8000000000,        // Address Length
            ,, PW64, AddressRangeMemory, TypeStatic)
    })

    CreateQWordField(CR64, PW64._MIN, PS64)

}

Comments

Erik Rull Nov. 25, 2013, 8:08 p.m. UTC | #1
Michael S. Tsirkin wrote:
> On Fri, Nov 22, 2013 at 09:19:49PM +0100, Erik Rull wrote:
>> Paolo Bonzini wrote:
>>> Il 22/11/2013 12:16, Erik Rull ha scritto:
>>>> It's getting more and more complex to build qemu, is there a reason why everyone
>>>> needs to build the acpi stuff by himself?
>>>
>>> It is only attempted if iasl is installed but as you said below, your
>>> version is too old.  Please run "make V=1" so that we can see what is
>>> the problem.
>>>
>>>> It should be something static like the bios binary files, right?
>>>
>>> ACPI tables are now generated by QEMU, so the ACPI compilation step
>>> happens while compiling QEMU.
>>>
>>>> So you could provide the defaults directly and everyone that wants to modify the
>>>> defaults is free to compile it by himself.
>>>>
>>>> And if these tools are required, please add an error message at configure
>>>> runtime so that the successive errors at runtime will not appear, because
>>>> compiling is then blocked by configure. And if the IASL is too old, a version
>>>> check at configure runtime would be helpful as well.
>>>
>>> Good idea.  Any chance you could help?  Version 20090123 should be new
>>> enough.
>>
>> Hi Paolo,
>>
>> Sure, here the V=1 result - I tried already some make options to get
>> the verbose output, but I didn't find this trivial option :-)
>>
>> erik@debian:~/qemu-test/qemu$ make V=1
>> make  BUILD_DIR=/home/erik/qemu-test/qemu -C pixman V="1" all
>> make[1]: Entering directory `/home/erik/qemu-test/qemu/pixman'
>> make  all-recursive
>> make[2]: Entering directory `/home/erik/qemu-test/qemu/pixman'
>> Making all in pixman
>> make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman/pixman'
>> make  all-am
>> make[4]: Entering directory `/home/erik/qemu-test/qemu/pixman/pixman'
>> make[4]: Nothing to be done for `all-am'.
>> make[4]: Leaving directory `/home/erik/qemu-test/qemu/pixman/pixman'
>> make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman/pixman'
>> Making all in test
>> make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman/test'
>> make[3]: Nothing to be done for `all'.
>> make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman/test'
>> make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman'
>> make[3]: Nothing to be done for `all-am'.
>> make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
>> make[2]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
>> make[1]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
>> make  BUILD_DIR=/home/erik/qemu-test/qemu -C x86_64-softmmu V="1"
>> TARGET_DIR="x86_64-softmmu/" all
>> make[1]: Entering directory `/home/erik/qemu-test/qemu/x86_64-softmmu'
>> cpp -P /home/erik/qemu-test/qemu/hw/i386/acpi-dsdt.dsl -o acpi-dsdt.dsl.i.orig
>> python /home/erik/qemu-test/qemu/scripts/acpi_extract_preprocess.py
>> acpi-dsdt.dsl.i.orig > acpi-dsdt.dsl.i
>> iasl  -vs -l -tc -p acpi-dsdt acpi-dsdt.dsl.i   2>&1
>> acpi-dsdt.dsl.i    84:             0x8000000000,
>> Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
>>
>>
>> acpi-dsdt.dsl.i    85:             0xFFFFFFFFFF,
>> Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
>>
>>
>> acpi-dsdt.dsl.i    87:             0x8000000000,
>> Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
>>
>>
>> ASL Input:  acpi-dsdt.dsl.i - 476 lines, 19189 bytes, 316 keywords
>> Compilation complete. 3 Errors, 0 Warnings, 0 Remarks, 246 Optimizations
>> make[1]: *** [hw/i386/acpi-dsdt.hex] Error 1
>> make[1]: Leaving directory `/home/erik/qemu-test/qemu/x86_64-softmmu'
>> make: *** [subdir-x86_64-softmmu] Error 2
>> erik@debian:~/qemu-test/qemu$
>>
>> Best regards,
>>
>> Erik
>
> This IASL version seems broken: apparently it can't process 64 bit
> constants?
>
> The assumption is that if you have iasl installed you
> are a developer that wants to hack on iasl, so
> we are trying to build ACPI from source.
>
> We did go out of our way to support systems without IASL
> though, so as a quick work-around you can just remove iasl
> from your system, or add an iasl binary early in the path
> that will return an error code when called with the -h
> flag, e.g. use a shell script that simply does "exit 1"
> or manually remove IASL= from config-host.mak
> after running configure.
>
> This will tell the build that you don't have iasl
> so it will now build acpi from source.
>
> I also sent patches that let you bypass the installed iasl
> by configuring with --iasl=
>
> As for support for old IASL versions - I downloaded
> acpica-unix-20060912 from debian etch unpacked the original
> tarball and applied the patch acpica-unix_20060912-3.2.diff
> that came with etch. I then built the source on Fedora 19.
>
> I had to change $$ = to $<n>$ = in a bunch of places
> to make it build with modern bison (patch attached
> if you are curious).
>
> Afterwards I got a version of iasl that compiled
> QEMU just fine, so the issue appears not to be with too-old iasl
> generally, it's the specific version that is broken, maybe your distro
> applied a broken patch?
>
> Maybe we should just figure out what confuses your iasl.
> Is your iasl able to compile the following chunk of code?
>
>
> DefinitionBlock (
>      "iasl-test.aml",    // Output Filename
>      "DSDT",             // Signature
>      0x01,               // DSDT Compliance Revision
>      "BXPC",             // OEMID
>      "BXDSDT",           // TABLE ID
>      0x1                 // OEM Revision
>      )
> {
>
>
>      Name(CR64, ResourceTemplate() {
>          QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
>              0x00000000,          // Address Space Granularity
>              0x8000000000,        // Address Range Minimum
>              0xFFFFFFFFFF,        // Address Range Maximum
>              0x00000000,          // Address Translation Offset
>              0x8000000000,        // Address Length
>              ,, PW64, AddressRangeMemory, TypeStatic)
>      })
>
>      CreateQWordField(CR64, PW64._MIN, PS64)
>
> }
>

Hi all,

I disabled the iasl and it works now.

Thanks.

Best regards,

Erik
Michael S. Tsirkin Nov. 25, 2013, 8:34 p.m. UTC | #2
On Mon, Nov 25, 2013 at 09:08:20PM +0100, Erik Rull wrote:
> Michael S. Tsirkin wrote:
> >On Fri, Nov 22, 2013 at 09:19:49PM +0100, Erik Rull wrote:
> >>Paolo Bonzini wrote:
> >>>Il 22/11/2013 12:16, Erik Rull ha scritto:
> >>>>It's getting more and more complex to build qemu, is there a reason why everyone
> >>>>needs to build the acpi stuff by himself?
> >>>
> >>>It is only attempted if iasl is installed but as you said below, your
> >>>version is too old.  Please run "make V=1" so that we can see what is
> >>>the problem.
> >>>
> >>>>It should be something static like the bios binary files, right?
> >>>
> >>>ACPI tables are now generated by QEMU, so the ACPI compilation step
> >>>happens while compiling QEMU.
> >>>
> >>>>So you could provide the defaults directly and everyone that wants to modify the
> >>>>defaults is free to compile it by himself.
> >>>>
> >>>>And if these tools are required, please add an error message at configure
> >>>>runtime so that the successive errors at runtime will not appear, because
> >>>>compiling is then blocked by configure. And if the IASL is too old, a version
> >>>>check at configure runtime would be helpful as well.
> >>>
> >>>Good idea.  Any chance you could help?  Version 20090123 should be new
> >>>enough.
> >>
> >>Hi Paolo,
> >>
> >>Sure, here the V=1 result - I tried already some make options to get
> >>the verbose output, but I didn't find this trivial option :-)
> >>
> >>erik@debian:~/qemu-test/qemu$ make V=1
> >>make  BUILD_DIR=/home/erik/qemu-test/qemu -C pixman V="1" all
> >>make[1]: Entering directory `/home/erik/qemu-test/qemu/pixman'
> >>make  all-recursive
> >>make[2]: Entering directory `/home/erik/qemu-test/qemu/pixman'
> >>Making all in pixman
> >>make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman/pixman'
> >>make  all-am
> >>make[4]: Entering directory `/home/erik/qemu-test/qemu/pixman/pixman'
> >>make[4]: Nothing to be done for `all-am'.
> >>make[4]: Leaving directory `/home/erik/qemu-test/qemu/pixman/pixman'
> >>make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman/pixman'
> >>Making all in test
> >>make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman/test'
> >>make[3]: Nothing to be done for `all'.
> >>make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman/test'
> >>make[3]: Entering directory `/home/erik/qemu-test/qemu/pixman'
> >>make[3]: Nothing to be done for `all-am'.
> >>make[3]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
> >>make[2]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
> >>make[1]: Leaving directory `/home/erik/qemu-test/qemu/pixman'
> >>make  BUILD_DIR=/home/erik/qemu-test/qemu -C x86_64-softmmu V="1"
> >>TARGET_DIR="x86_64-softmmu/" all
> >>make[1]: Entering directory `/home/erik/qemu-test/qemu/x86_64-softmmu'
> >>cpp -P /home/erik/qemu-test/qemu/hw/i386/acpi-dsdt.dsl -o acpi-dsdt.dsl.i.orig
> >>python /home/erik/qemu-test/qemu/scripts/acpi_extract_preprocess.py
> >>acpi-dsdt.dsl.i.orig > acpi-dsdt.dsl.i
> >>iasl  -vs -l -tc -p acpi-dsdt acpi-dsdt.dsl.i   2>&1
> >>acpi-dsdt.dsl.i    84:             0x8000000000,
> >>Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
> >>
> >>
> >>acpi-dsdt.dsl.i    85:             0xFFFFFFFFFF,
> >>Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
> >>
> >>
> >>acpi-dsdt.dsl.i    87:             0x8000000000,
> >>Error    4094 -                   ^ Conversion error: AE_BAD_HEX_CONSTANT
> >>
> >>
> >>ASL Input:  acpi-dsdt.dsl.i - 476 lines, 19189 bytes, 316 keywords
> >>Compilation complete. 3 Errors, 0 Warnings, 0 Remarks, 246 Optimizations
> >>make[1]: *** [hw/i386/acpi-dsdt.hex] Error 1
> >>make[1]: Leaving directory `/home/erik/qemu-test/qemu/x86_64-softmmu'
> >>make: *** [subdir-x86_64-softmmu] Error 2
> >>erik@debian:~/qemu-test/qemu$
> >>
> >>Best regards,
> >>
> >>Erik
> >
> >This IASL version seems broken: apparently it can't process 64 bit
> >constants?
> >
> >The assumption is that if you have iasl installed you
> >are a developer that wants to hack on iasl, so
> >we are trying to build ACPI from source.
> >
> >We did go out of our way to support systems without IASL
> >though, so as a quick work-around you can just remove iasl
> >from your system, or add an iasl binary early in the path
> >that will return an error code when called with the -h
> >flag, e.g. use a shell script that simply does "exit 1"
> >or manually remove IASL= from config-host.mak
> >after running configure.
> >
> >This will tell the build that you don't have iasl
> >so it will now build acpi from source.
> >
> >I also sent patches that let you bypass the installed iasl
> >by configuring with --iasl=
> >
> >As for support for old IASL versions - I downloaded
> >acpica-unix-20060912 from debian etch unpacked the original
> >tarball and applied the patch acpica-unix_20060912-3.2.diff
> >that came with etch. I then built the source on Fedora 19.
> >
> >I had to change $$ = to $<n>$ = in a bunch of places
> >to make it build with modern bison (patch attached
> >if you are curious).
> >
> >Afterwards I got a version of iasl that compiled
> >QEMU just fine, so the issue appears not to be with too-old iasl
> >generally, it's the specific version that is broken, maybe your distro
> >applied a broken patch?
> >
> >Maybe we should just figure out what confuses your iasl.
> >Is your iasl able to compile the following chunk of code?
> >
> >
> >DefinitionBlock (
> >     "iasl-test.aml",    // Output Filename
> >     "DSDT",             // Signature
> >     0x01,               // DSDT Compliance Revision
> >     "BXPC",             // OEMID
> >     "BXDSDT",           // TABLE ID
> >     0x1                 // OEM Revision
> >     )
> >{
> >
> >
> >     Name(CR64, ResourceTemplate() {
> >         QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
> >             0x00000000,          // Address Space Granularity
> >             0x8000000000,        // Address Range Minimum
> >             0xFFFFFFFFFF,        // Address Range Maximum
> >             0x00000000,          // Address Translation Offset
> >             0x8000000000,        // Address Length
> >             ,, PW64, AddressRangeMemory, TypeStatic)
> >     })
> >
> >     CreateQWordField(CR64, PW64._MIN, PS64)
> >
> >}
> >
> 
> Hi all,
> 
> I disabled the iasl and it works now.
> 
> Thanks.
> 
> Best regards,
> 
> Erik
> 

where did you get this iasl btw?
diff mbox

Patch

--- aslcompiler.y	2013-11-24 12:01:42.596556550 +0200
+++ acpica-unix-20060912/compiler/aslcompiler.y	2013-11-24 12:05:06.336549346 +0200
@@ -790,11 +790,11 @@ 
 
 ASLCode
     : DefinitionBlockTerm
-    | error                         {YYABORT; $$ = NULL;}
+    | error                         {YYABORT; $<n>$ = NULL;}
     ;
 
 DefinitionBlockTerm
-    : PARSEOP_DEFINITIONBLOCK '('	{$$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
+    : PARSEOP_DEFINITIONBLOCK '('	{$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
         String ','
         String ','
         ByteConst ','
@@ -802,15 +802,15 @@ 
         String ','
         DWordConst
         ')'                         {TrSetEndLineNumber ($<n>3);}
-            '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
+            '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
     ;
 
 /* ACPI 3.0 -- allow semicolons between terms */
 
 TermList
-    :                               {$$ = NULL;}
-    | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
-    | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
+    :                               {$<n>$ = NULL;}
+    | TermList Term                 {$<n>$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
+    | TermList ';' Term             {$<n>$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
     ;
 
 Term
@@ -821,20 +821,20 @@ 
     | Type2StringOpcode             {}
     | Type2BufferOpcode             {}
     | Type2BufferOrStringOpcode     {}
-    | error                         {$$ = AslDoError(); yyclearin;}
+    | error                         {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CompilerDirective
     : IncludeTerm                   {}
-    | IncludeCStyleTerm             {$$ = NULL;}
-    | LineTerm						{$$ = NULL;}
+    | IncludeCStyleTerm             {$<n>$ = NULL;}
+    | LineTerm						{$<n>$ = NULL;}
     | ExternalTerm                  {}
     ;
 
 ObjectList
-    :                               {$$ = NULL;}
-    | ObjectList Object             {$$ = TrLinkPeerNode ($1,$2);}
-    | error                         {$$ = AslDoError(); yyclearin;}
+    :                               {$<n>$ = NULL;}
+    | ObjectList Object             {$<n>$ = TrLinkPeerNode ($1,$2);}
+    | error                         {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 Object
@@ -851,9 +851,9 @@ 
     ;
 
 BufferData
-    : Type5Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
-    | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
-    | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
+    : Type5Opcode                   {$<n>$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
+    | Type2BufferOrStringOpcode     {$<n>$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
+    | Type2BufferOpcode             {$<n>$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
     | BufferTerm                    {}
     ;
 
@@ -862,14 +862,14 @@ 
     ;
 
 IntegerData
-    : Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
-    | Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
+    : Type2IntegerOpcode            {$<n>$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
+    | Type3Opcode                   {$<n>$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
     | Integer                       {}
     | ConstTerm                     {}
     ;
 
 StringData
-    : Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
+    : Type2StringOpcode             {$<n>$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);}
     | String                        {}
     ;
 
@@ -903,42 +903,42 @@ 
 
 UserTerm
     : NameString '('                {TrUpdateNode (PARSEOP_METHODCALL, $1);}
-        ArgList ')'                 {$$ = TrLinkChildNode ($1,$4);}
+        ArgList ')'                 {$<n>$ = TrLinkChildNode ($1,$4);}
     ;
 
 ArgList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | TermArg
     | ArgList ','                   /* Allows a trailing comma at list end */
     | ArgList ','
-        TermArg                     {$$ = TrLinkPeerNode ($1,$3);}
+        TermArg                     {$<n>$ = TrLinkPeerNode ($1,$3);}
     ;
 
 /*
 Removed from TermArg due to reduce/reduce conflicts
-    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
-    | Type2StringOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
-    | Type2BufferOpcode             {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
-    | Type2BufferOrStringOpcode     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | Type2IntegerOpcode            {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | Type2StringOpcode             {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | Type2BufferOpcode             {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | Type2BufferOrStringOpcode     {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
 
 */
 
 TermArg
-    : Type2Opcode                   {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
-    | DataObject                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
-    | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
-    | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
-    | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    : Type2Opcode                   {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | DataObject                    {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | NameString                    {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | ArgTerm                       {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+    | LocalTerm                     {$<n>$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
     ;
 
 Target
-    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
-    | ','                           {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
-    | ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
+    :                               {$<n>$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
+    | ','                           {$<n>$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */
+    | ',' SuperName                 {$<n>$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
     ;
 
 RequiredTarget
-    : ',' SuperName                 {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
+    : ',' SuperName                 {$<n>$ = TrSetNodeFlags ($2, NODE_IS_TARGET);}
     ;
 
 SimpleTarget
@@ -950,40 +950,40 @@ 
 /* Rules for specifying the type of one method argument or return value */
 
 ParameterTypePackage
-    :                               {$$ = NULL;}
-    | ObjectTypeKeyword             {$$ = $1;}
+    :                               {$<n>$ = NULL;}
+    | ObjectTypeKeyword             {$<n>$ = $1;}
     | ParameterTypePackage ','
-        ObjectTypeKeyword           {$$ = TrLinkPeerNodes (2,$1,$3);}
+        ObjectTypeKeyword           {$<n>$ = TrLinkPeerNodes (2,$1,$3);}
     ;
 
 ParameterTypePackageList
-    :                               {$$ = NULL;}
-    | ObjectTypeKeyword             {$$ = $1;}
-    | '{' ParameterTypePackage '}'  {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ObjectTypeKeyword             {$<n>$ = $1;}
+    | '{' ParameterTypePackage '}'  {$<n>$ = $2;}
     ;
 
 OptionalParameterTypePackage
-    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
-    | ',' ParameterTypePackageList  {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
+    | ',' ParameterTypePackageList  {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
     ;
 
 /* Rules for specifying the types for method arguments */
 
 ParameterTypesPackage
-    : ParameterTypePackageList      {$$ = $1;}
+    : ParameterTypePackageList      {$<n>$ = $1;}
     | ParameterTypesPackage ','
-        ParameterTypePackageList    {$$ = TrLinkPeerNodes (2,$1,$3);}
+        ParameterTypePackageList    {$<n>$ = TrLinkPeerNodes (2,$1,$3);}
     ;
 
 ParameterTypesPackageList
-    :                               {$$ = NULL;}
-    | ObjectTypeKeyword             {$$ = $1;}
-    | '{' ParameterTypesPackage '}' {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ObjectTypeKeyword             {$<n>$ = $1;}
+    | '{' ParameterTypesPackage '}' {$<n>$ = $2;}
     ;
 
 OptionalParameterTypesPackage
-    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
-    | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
+    | ',' ParameterTypesPackageList {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
     ;
 
 
@@ -1111,14 +1111,14 @@ 
     ;
 
 IncludeTerm
-    : PARSEOP_INCLUDE '('			{$$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
-        String  ')'                 {$$ = TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
+    : PARSEOP_INCLUDE '('			{$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
+        String  ')'                 {$<n>$ = TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
         TermList
-        IncludeEndTerm              {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
+        IncludeEndTerm              {$<n>$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
     ;
 
 IncludeEndTerm
-    : PARSEOP_INCLUDE_END			{$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
+    : PARSEOP_INCLUDE_END			{$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
     ;
 
 IncludeCStyleTerm
@@ -1137,9 +1137,9 @@ 
         OptionalObjectTypeKeyword
         OptionalParameterTypePackage
         OptionalParameterTypesPackage
-        ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
     | PARSEOP_EXTERNAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
@@ -1147,7 +1147,7 @@ 
 
 
 BankFieldTerm
-    : PARSEOP_BANKFIELD '('			{$$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
+    : PARSEOP_BANKFIELD '('			{$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
         NameString
         NameStringItem
         TermArgItem
@@ -1155,17 +1155,17 @@ 
         ',' LockRuleKeyword
         ',' UpdateRuleKeyword
         ')' '{'
-            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
+            FieldUnitList '}'       {$<n>$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
     | PARSEOP_BANKFIELD '('
-        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
+        error ')' '{' error '}'     {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 FieldUnitList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | FieldUnit
     | FieldUnitList ','             /* Allows a trailing comma at list end */
     | FieldUnitList ','
-        FieldUnit                   {$$ = TrLinkPeerNode ($1,$3);}
+        FieldUnit                   {$<n>$ = TrLinkPeerNode ($1,$3);}
     ;
 
 FieldUnit
@@ -1175,225 +1175,225 @@ 
     ;
 
 FieldUnitEntry
-    : ',' AmlPackageLengthTerm      {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
+    : ',' AmlPackageLengthTerm      {$<n>$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);}
     | NameSeg ','
-        AmlPackageLengthTerm        {$$ = TrLinkChildNode ($1,$3);}
+        AmlPackageLengthTerm        {$<n>$ = TrLinkChildNode ($1,$3);}
     ;
 
 OffsetTerm
     : PARSEOP_OFFSET '('
         AmlPackageLengthTerm
-        ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
+        ')'                         {$<n>$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
     | PARSEOP_OFFSET '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 AccessAsTerm
     : PARSEOP_ACCESSAS '('
         AccessTypeKeyword
         OptionalAccessAttribTerm
-        ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
+        ')'                         {$<n>$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
     | PARSEOP_ACCESSAS '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CreateBitFieldTerm
-    : PARSEOP_CREATEBITFIELD '('	{$$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
+    : PARSEOP_CREATEBITFIELD '('	{$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
         TermArg
         TermArgItem
         NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_CREATEBITFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CreateByteFieldTerm
-    : PARSEOP_CREATEBYTEFIELD '('	{$$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
+    : PARSEOP_CREATEBYTEFIELD '('	{$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
         TermArg
         TermArgItem
         NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_CREATEBYTEFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CreateDWordFieldTerm
-    : PARSEOP_CREATEDWORDFIELD '('	{$$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
+    : PARSEOP_CREATEDWORDFIELD '('	{$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
         TermArg
         TermArgItem
         NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_CREATEDWORDFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CreateFieldTerm
-    : PARSEOP_CREATEFIELD '('		{$$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
+    : PARSEOP_CREATEFIELD '('		{$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
         TermArg
         TermArgItem
         TermArgItem
         NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_CREATEFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CreateQWordFieldTerm
-    : PARSEOP_CREATEQWORDFIELD '('	{$$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
+    : PARSEOP_CREATEQWORDFIELD '('	{$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
         TermArg
         TermArgItem
         NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_CREATEQWORDFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CreateWordFieldTerm
-    : PARSEOP_CREATEWORDFIELD '('	{$$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
+    : PARSEOP_CREATEWORDFIELD '('	{$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
         TermArg
         TermArgItem
         NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_CREATEWORDFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DataRegionTerm
-    : PARSEOP_DATATABLEREGION '('	{$$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
+    : PARSEOP_DATATABLEREGION '('	{$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
         NameString
         TermArgItem
         TermArgItem
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
     | PARSEOP_DATATABLEREGION '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DeviceTerm
-    : PARSEOP_DEVICE '('			{$$ = TrCreateLeafNode (PARSEOP_DEVICE);}
+    : PARSEOP_DEVICE '('			{$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
         NameString
         ')' '{'
-            ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
+            ObjectList '}'          {$<n>$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
     | PARSEOP_DEVICE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 EventTerm
-    : PARSEOP_EVENT '('				{$$ = TrCreateLeafNode (PARSEOP_EVENT);}
+    : PARSEOP_EVENT '('				{$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
         NameString
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_EVENT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 FieldTerm
-    : PARSEOP_FIELD '('				{$$ = TrCreateLeafNode (PARSEOP_FIELD);}
+    : PARSEOP_FIELD '('				{$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
         NameString
         ',' AccessTypeKeyword
         ',' LockRuleKeyword
         ',' UpdateRuleKeyword
         ')' '{'
-            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
+            FieldUnitList '}'       {$<n>$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
     | PARSEOP_FIELD '('
-        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
+        error ')' '{' error '}'     {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 FunctionTerm
-    : PARSEOP_FUNCTION '('			{$$ = TrCreateLeafNode (PARSEOP_METHOD);}
+    : PARSEOP_FUNCTION '('			{$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
         NameString
         OptionalParameterTypePackage
         OptionalParameterTypesPackage
         ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
+            TermList '}'            {$<n>$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
                                         TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
                                         TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
     | PARSEOP_FUNCTION '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 IndexFieldTerm
-    : PARSEOP_INDEXFIELD '('		{$$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
+    : PARSEOP_INDEXFIELD '('		{$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
         NameString
         NameStringItem
         ',' AccessTypeKeyword
         ',' LockRuleKeyword
         ',' UpdateRuleKeyword
         ')' '{'
-            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
+            FieldUnitList '}'       {$<n>$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
     | PARSEOP_INDEXFIELD '('
-        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
+        error ')' '{' error '}'     {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 MethodTerm
-    : PARSEOP_METHOD  '('			{$$ = TrCreateLeafNode (PARSEOP_METHOD);}
+    : PARSEOP_METHOD  '('			{$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
         NameString
-        OptionalByteConstExpr       {$$ = UtCheckIntegerRange ($5, 0, 7);}
+        OptionalByteConstExpr       {$<n>$ = UtCheckIntegerRange ($5, 0, 7);}
         OptionalSerializeRuleKeyword
         OptionalByteConstExpr
         OptionalParameterTypePackage
         OptionalParameterTypesPackage
         ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
+            TermList '}'            {$<n>$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
     | PARSEOP_METHOD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 MutexTerm
-    : PARSEOP_MUTEX '('				{$$ = TrCreateLeafNode (PARSEOP_MUTEX);}
+    : PARSEOP_MUTEX '('				{$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
         NameString
         ',' ByteConstExpr
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
     | PARSEOP_MUTEX '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 OpRegionTerm
-    : PARSEOP_OPERATIONREGION '('	{$$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
+    : PARSEOP_OPERATIONREGION '('	{$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
         NameString
         ',' OpRegionSpaceIdTerm
         TermArgItem
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
     | PARSEOP_OPERATIONREGION '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 OpRegionSpaceIdTerm
     : RegionSpaceKeyword            {}
-    | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
+    | ByteConst                     {$<n>$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
     ;
 
 PowerResTerm
-    : PARSEOP_POWERRESOURCE '('		{$$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
+    : PARSEOP_POWERRESOURCE '('		{$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
         NameString
         ',' ByteConstExpr
         ',' WordConstExpr
         ')' '{'
-            ObjectList '}'          {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
+            ObjectList '}'          {$<n>$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
     | PARSEOP_POWERRESOURCE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ProcessorTerm
-    : PARSEOP_PROCESSOR '('			{$$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
+    : PARSEOP_PROCESSOR '('			{$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
         NameString
         ',' ByteConstExpr
         OptionalDWordConstExpr
         OptionalByteConstExpr
         ')' '{'
-            ObjectList '}'          {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
+            ObjectList '}'          {$<n>$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
     | PARSEOP_PROCESSOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ThermalZoneTerm
-    : PARSEOP_THERMALZONE '('		{$$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
+    : PARSEOP_THERMALZONE '('		{$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
         NameString
         ')' '{'
-            ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
+            ObjectList '}'          {$<n>$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
     | PARSEOP_THERMALZONE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
@@ -1401,30 +1401,30 @@ 
 
 
 AliasTerm
-    : PARSEOP_ALIAS '('				{$$ = TrCreateLeafNode (PARSEOP_ALIAS);}
+    : PARSEOP_ALIAS '('				{$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
         NameString
         NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
     | PARSEOP_ALIAS '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 NameTerm
-    : PARSEOP_NAME '('				{$$ = TrCreateLeafNode (PARSEOP_NAME);}
+    : PARSEOP_NAME '('				{$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
         NameString
         ',' DataObject
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
     | PARSEOP_NAME '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ScopeTerm
-    : PARSEOP_SCOPE '('				{$$ = TrCreateLeafNode (PARSEOP_SCOPE);}
+    : PARSEOP_SCOPE '('				{$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
         NameString
         ')' '{'
-            ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
+            ObjectList '}'          {$<n>$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
     | PARSEOP_SCOPE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
@@ -1432,138 +1432,138 @@ 
 
 
 BreakTerm
-    : PARSEOP_BREAK					{$$ = TrCreateNode (PARSEOP_BREAK, 0);}
+    : PARSEOP_BREAK					{$<n>$ = TrCreateNode (PARSEOP_BREAK, 0);}
     ;
 
 BreakPointTerm
-    : PARSEOP_BREAKPOINT			{$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
+    : PARSEOP_BREAKPOINT			{$<n>$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
     ;
 
 ContinueTerm
-    : PARSEOP_CONTINUE				{$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
+    : PARSEOP_CONTINUE				{$<n>$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
     ;
 
 FatalTerm
-    : PARSEOP_FATAL '('				{$$ = TrCreateLeafNode (PARSEOP_FATAL);}
+    : PARSEOP_FATAL '('				{$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
         ByteConstExpr
         ',' DWordConstExpr
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
     | PARSEOP_FATAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 IfElseTerm
-    : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
+    : IfTerm ElseTerm               {$<n>$ = TrLinkPeerNode ($1,$2);}
     ;
 
 IfTerm
-    : PARSEOP_IF '('				{$$ = TrCreateLeafNode (PARSEOP_IF);}
+    : PARSEOP_IF '('				{$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
         TermArg
         ')' '{'
             TermList '}'
-                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+                                    {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_IF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ElseTerm
-    :                               {$$ = NULL;}
-    | PARSEOP_ELSE '{'				{$$ = TrCreateLeafNode (PARSEOP_ELSE);}
+    :                               {$<n>$ = NULL;}
+    | PARSEOP_ELSE '{'				{$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
         TermList '}'
-                                    {$$ = TrLinkChildren ($<n>3,1,$4);}
+                                    {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_ELSE '{'
-        error '}'                   {$$ = AslDoError(); yyclearin;}
+        error '}'                   {$<n>$ = AslDoError(); yyclearin;}
 
-    | PARSEOP_ELSEIF '('			{$$ = TrCreateLeafNode (PARSEOP_ELSE);}
-        TermArg						{$$ = TrCreateLeafNode (PARSEOP_IF);}
+    | PARSEOP_ELSEIF '('			{$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
+        TermArg						{$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
         ')' '{'
-        TermList '}'			    {$$ = TrLinkChildren ($<n>5,2,$4,$8);}
-        ElseTerm                    {$$ = TrLinkPeerNode ($<n>5,$11);}
-                                    {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
+        TermList '}'			    {$<n>$ = TrLinkChildren ($<n>5,2,$4,$8);}
+        ElseTerm                    {$<n>$ = TrLinkPeerNode ($<n>5,$11);}
+                                    {$<n>$ = TrLinkChildren ($<n>3,1,$<n>5);}
     | PARSEOP_ELSEIF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LoadTerm
-    : PARSEOP_LOAD '('				{$$ = TrCreateLeafNode (PARSEOP_LOAD);}
+    : PARSEOP_LOAD '('				{$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
         NameString
         RequiredTarget
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_LOAD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 NoOpTerm
-    : PARSEOP_NOOP					{$$ = TrCreateNode (PARSEOP_NOOP, 0);}
+    : PARSEOP_NOOP					{$<n>$ = TrCreateNode (PARSEOP_NOOP, 0);}
     ;
 
 NotifyTerm
-    : PARSEOP_NOTIFY '('			{$$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
+    : PARSEOP_NOTIFY '('			{$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
         SuperName
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_NOTIFY '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ReleaseTerm
-    : PARSEOP_RELEASE '('			{$$ = TrCreateLeafNode (PARSEOP_RELEASE);}
+    : PARSEOP_RELEASE '('			{$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_RELEASE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ResetTerm
-    : PARSEOP_RESET '('				{$$ = TrCreateLeafNode (PARSEOP_RESET);}
+    : PARSEOP_RESET '('				{$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_RESET '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ReturnTerm
-    : PARSEOP_RETURN '('			{$$ = TrCreateLeafNode (PARSEOP_RETURN);}
+    : PARSEOP_RETURN '('			{$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
         OptionalReturnArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_RETURN 				{$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrCreateLeafNode (PARSEOP_ZERO));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_RETURN 				{$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrCreateLeafNode (PARSEOP_ZERO));}
     | PARSEOP_RETURN '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 SignalTerm
-    : PARSEOP_SIGNAL '('			{$$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
+    : PARSEOP_SIGNAL '('			{$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_SIGNAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 SleepTerm
-    : PARSEOP_SLEEP '('				{$$ = TrCreateLeafNode (PARSEOP_SLEEP);}
+    : PARSEOP_SLEEP '('				{$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
         TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_SLEEP '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 StallTerm
-    : PARSEOP_STALL '('				{$$ = TrCreateLeafNode (PARSEOP_STALL);}
+    : PARSEOP_STALL '('				{$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
         TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_STALL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 SwitchTerm
-    : PARSEOP_SWITCH '('			{$$ = TrCreateLeafNode (PARSEOP_SWITCH);}
+    : PARSEOP_SWITCH '('			{$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
         TermArg
         ')' '{'
             CaseDefaultTermList '}'
-                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+                                    {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_SWITCH '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 /*
@@ -1571,391 +1571,391 @@ 
  */
 
 CaseDefaultTermList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | CaseTerm  {}
     | DefaultTerm   {}
     | CaseDefaultTermList
-        CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
+        CaseTerm                    {$<n>$ = TrLinkPeerNode ($1,$2);}
     | CaseDefaultTermList
-        DefaultTerm                 {$$ = TrLinkPeerNode ($1,$2);}
+        DefaultTerm                 {$<n>$ = TrLinkPeerNode ($1,$2);}
 
 /* Original - attempts to force zero or one default term within the switch */
 
 /*
 CaseDefaultTermList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | CaseTermList
         DefaultTerm
-        CaseTermList                {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
+        CaseTermList                {$<n>$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));}
     | CaseTermList
-        CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
+        CaseTerm                    {$<n>$ = TrLinkPeerNode ($1,$2);}
     ;
 
 CaseTermList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | CaseTerm                      {}
     | CaseTermList
-        CaseTerm                    {$$ = TrLinkPeerNode ($1,$2);}
+        CaseTerm                    {$<n>$ = TrLinkPeerNode ($1,$2);}
     ;
 */
 
 CaseTerm
-    : PARSEOP_CASE '('				{$$ = TrCreateLeafNode (PARSEOP_CASE);}
+    : PARSEOP_CASE '('				{$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
         DataObject
         ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+            TermList '}'            {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_CASE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DefaultTerm
-    : PARSEOP_DEFAULT '{'			{$$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
-        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
+    : PARSEOP_DEFAULT '{'			{$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
+        TermList '}'                {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_DEFAULT '{'
-        error '}'                   {$$ = AslDoError(); yyclearin;}
+        error '}'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 UnloadTerm
-    : PARSEOP_UNLOAD '('			{$$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
+    : PARSEOP_UNLOAD '('			{$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_UNLOAD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 WhileTerm
-    : PARSEOP_WHILE '('				{$$ = TrCreateLeafNode (PARSEOP_WHILE);}
+    : PARSEOP_WHILE '('				{$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
         TermArg
         ')' '{' TermList '}'
-                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+                                    {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_WHILE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
 /******* Type 2 opcodes *******************************************************/
 
 AcquireTerm
-    : PARSEOP_ACQUIRE '('			{$$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
+    : PARSEOP_ACQUIRE '('			{$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
         SuperName
         ',' WordConstExpr
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$6);}
     | PARSEOP_ACQUIRE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 AddTerm
-    : PARSEOP_ADD '('				{$$ = TrCreateLeafNode (PARSEOP_ADD);}
+    : PARSEOP_ADD '('				{$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_ADD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 AndTerm
-    : PARSEOP_AND '('				{$$ = TrCreateLeafNode (PARSEOP_AND);}
+    : PARSEOP_AND '('				{$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_AND '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ConcatTerm
-    : PARSEOP_CONCATENATE '('		{$$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
+    : PARSEOP_CONCATENATE '('		{$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_CONCATENATE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ConcatResTerm
-    : PARSEOP_CONCATENATERESTEMPLATE '('    {$$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
+    : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_CONCATENATERESTEMPLATE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CondRefOfTerm
-    : PARSEOP_CONDREFOF '('			{$$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
+    : PARSEOP_CONDREFOF '('			{$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
         SuperName
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_CONDREFOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 CopyObjectTerm
-    : PARSEOP_COPYOBJECT '('		{$$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
+    : PARSEOP_COPYOBJECT '('		{$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
         TermArg
         ',' SimpleTarget
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
     | PARSEOP_COPYOBJECT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DecTerm
-    : PARSEOP_DECREMENT '('			{$$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
+    : PARSEOP_DECREMENT '('			{$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_DECREMENT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DerefOfTerm
-    : PARSEOP_DEREFOF '('			{$$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
+    : PARSEOP_DEREFOF '('			{$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
         TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_DEREFOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DivideTerm
-    : PARSEOP_DIVIDE '('			{$$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
+    : PARSEOP_DIVIDE '('			{$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
         TermArg
         TermArgItem
         Target
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
     | PARSEOP_DIVIDE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 FindSetLeftBitTerm
-    : PARSEOP_FINDSETLEFTBIT '('	{$$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
+    : PARSEOP_FINDSETLEFTBIT '('	{$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_FINDSETLEFTBIT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 FindSetRightBitTerm
-    : PARSEOP_FINDSETRIGHTBIT '('	{$$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
+    : PARSEOP_FINDSETRIGHTBIT '('	{$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_FINDSETRIGHTBIT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 FromBCDTerm
-    : PARSEOP_FROMBCD '('			{$$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
+    : PARSEOP_FROMBCD '('			{$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_FROMBCD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 IncTerm
-    : PARSEOP_INCREMENT '('			{$$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
+    : PARSEOP_INCREMENT '('			{$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_INCREMENT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 IndexTerm
-    : PARSEOP_INDEX '('				{$$ = TrCreateLeafNode (PARSEOP_INDEX);}
+    : PARSEOP_INDEX '('				{$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_INDEX '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LAndTerm
-    : PARSEOP_LAND '('				{$$ = TrCreateLeafNode (PARSEOP_LAND);}
+    : PARSEOP_LAND '('				{$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_LAND '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LEqualTerm
-    : PARSEOP_LEQUAL '('			{$$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
+    : PARSEOP_LEQUAL '('			{$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_LEQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LGreaterTerm
-    : PARSEOP_LGREATER '('			{$$ = TrCreateLeafNode (PARSEOP_LGREATER);}
+    : PARSEOP_LGREATER '('			{$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_LGREATER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LGreaterEqualTerm
-    : PARSEOP_LGREATEREQUAL '('		{$$ = TrCreateLeafNode (PARSEOP_LLESS);}
+    : PARSEOP_LGREATEREQUAL '('		{$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
+        ')'                         {$<n>$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
     | PARSEOP_LGREATEREQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LLessTerm
-    : PARSEOP_LLESS '('				{$$ = TrCreateLeafNode (PARSEOP_LLESS);}
+    : PARSEOP_LLESS '('				{$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_LLESS '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LLessEqualTerm
-    : PARSEOP_LLESSEQUAL '('		{$$ = TrCreateLeafNode (PARSEOP_LGREATER);}
+    : PARSEOP_LLESSEQUAL '('		{$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
+        ')'                         {$<n>$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
     | PARSEOP_LLESSEQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LNotTerm
-    : PARSEOP_LNOT '('				{$$ = TrCreateLeafNode (PARSEOP_LNOT);}
+    : PARSEOP_LNOT '('				{$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
         TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_LNOT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LNotEqualTerm
-    : PARSEOP_LNOTEQUAL '('			{$$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
+    : PARSEOP_LNOTEQUAL '('			{$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
+        ')'                         {$<n>$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
     | PARSEOP_LNOTEQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LoadTableTerm
-    : PARSEOP_LOADTABLE '('			{$$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
+    : PARSEOP_LOADTABLE '('			{$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
         TermArg
         TermArgItem
         TermArgItem
         OptionalListString
         OptionalListString
         OptionalReference
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
     | PARSEOP_LOADTABLE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 LOrTerm
-    : PARSEOP_LOR '('				{$$ = TrCreateLeafNode (PARSEOP_LOR);}
+    : PARSEOP_LOR '('				{$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
         TermArg
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_LOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 MatchTerm
-    : PARSEOP_MATCH '('				{$$ = TrCreateLeafNode (PARSEOP_MATCH);}
+    : PARSEOP_MATCH '('				{$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
         TermArg
         ',' MatchOpKeyword
         TermArgItem
         ',' MatchOpKeyword
         TermArgItem
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
     | PARSEOP_MATCH '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 MidTerm
-    : PARSEOP_MID '('				{$$ = TrCreateLeafNode (PARSEOP_MID);}
+    : PARSEOP_MID '('				{$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
         TermArg
         TermArgItem
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
     | PARSEOP_MID '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ModTerm
-    : PARSEOP_MOD '('				{$$ = TrCreateLeafNode (PARSEOP_MOD);}
+    : PARSEOP_MOD '('				{$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_MOD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 MultiplyTerm
-    : PARSEOP_MULTIPLY '('			{$$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
+    : PARSEOP_MULTIPLY '('			{$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_MULTIPLY '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 NAndTerm
-    : PARSEOP_NAND '('				{$$ = TrCreateLeafNode (PARSEOP_NAND);}
+    : PARSEOP_NAND '('				{$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_NAND '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 NOrTerm
-    : PARSEOP_NOR '('				{$$ = TrCreateLeafNode (PARSEOP_NOR);}
+    : PARSEOP_NOR '('				{$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_NOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 NotTerm
-    : PARSEOP_NOT '('				{$$ = TrCreateLeafNode (PARSEOP_NOT);}
+    : PARSEOP_NOT '('				{$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_NOT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ObjectTypeTerm
-    : PARSEOP_OBJECTTYPE '('		{$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
+    : PARSEOP_OBJECTTYPE '('		{$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_OBJECTTYPE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 OrTerm
-    : PARSEOP_OR '('				{$$ = TrCreateLeafNode (PARSEOP_OR);}
+    : PARSEOP_OR '('				{$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_OR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 /*
@@ -1963,147 +1963,147 @@ 
  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
  */
 RefOfTerm
-    : PARSEOP_REFOF '('				{$$ = TrCreateLeafNode (PARSEOP_REFOF);}
+    : PARSEOP_REFOF '('				{$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
     | PARSEOP_REFOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ShiftLeftTerm
-    : PARSEOP_SHIFTLEFT '('			{$$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
+    : PARSEOP_SHIFTLEFT '('			{$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_SHIFTLEFT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ShiftRightTerm
-    : PARSEOP_SHIFTRIGHT '('		{$$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
+    : PARSEOP_SHIFTRIGHT '('		{$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_SHIFTRIGHT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 SizeOfTerm
-    : PARSEOP_SIZEOF '('			{$$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
+    : PARSEOP_SIZEOF '('			{$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
         SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,1,$4);}
     | PARSEOP_SIZEOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 StoreTerm
-    : PARSEOP_STORE '('				{$$ = TrCreateLeafNode (PARSEOP_STORE);}
+    : PARSEOP_STORE '('				{$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
         TermArg
         ',' SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
     | PARSEOP_STORE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 SubtractTerm
-    : PARSEOP_SUBTRACT '('			{$$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
+    : PARSEOP_SUBTRACT '('			{$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_SUBTRACT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 TimerTerm
-    : PARSEOP_TIMER '('			    {$$ = TrCreateLeafNode (PARSEOP_TIMER);}
-        ')'                         {$$ = TrLinkChildren ($<n>3,0);}
-    | PARSEOP_TIMER		            {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
+    : PARSEOP_TIMER '('			    {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,0);}
+    | PARSEOP_TIMER		            {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
     | PARSEOP_TIMER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ToBCDTerm
-    : PARSEOP_TOBCD '('				{$$ = TrCreateLeafNode (PARSEOP_TOBCD);}
+    : PARSEOP_TOBCD '('				{$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_TOBCD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ToBufferTerm
-    : PARSEOP_TOBUFFER '('			{$$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
+    : PARSEOP_TOBUFFER '('			{$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_TOBUFFER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ToDecimalStringTerm
-    : PARSEOP_TODECIMALSTRING '('	{$$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
+    : PARSEOP_TODECIMALSTRING '('	{$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_TODECIMALSTRING '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ToHexStringTerm
-    : PARSEOP_TOHEXSTRING '('		{$$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
+    : PARSEOP_TOHEXSTRING '('		{$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_TOHEXSTRING '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ToIntegerTerm
-    : PARSEOP_TOINTEGER '('			{$$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
+    : PARSEOP_TOINTEGER '('			{$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
         TermArg
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_TOINTEGER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ToStringTerm
-    : PARSEOP_TOSTRING '('			{$$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
+    : PARSEOP_TOSTRING '('			{$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
         TermArg
         OptionalCount
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_TOSTRING '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ToUUIDTerm
     : PARSEOP_TOUUID '('
-        StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
+        StringData ')'              {$<n>$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
     | PARSEOP_TOUUID '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 WaitTerm
-    : PARSEOP_WAIT '('				{$$ = TrCreateLeafNode (PARSEOP_WAIT);}
+    : PARSEOP_WAIT '('				{$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
         SuperName
         TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$5);}
     | PARSEOP_WAIT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 XOrTerm
-    : PARSEOP_XOR '('				{$$ = TrCreateLeafNode (PARSEOP_XOR);}
+    : PARSEOP_XOR '('				{$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
         TermArg
         TermArgItem
         Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
     | PARSEOP_XOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
@@ -2111,173 +2111,173 @@ 
 
 
 ObjectTypeKeyword
-    : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
-    | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
-    | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
-    | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
-    | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
-    | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
-    | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
-    | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
-    | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
-    | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
-    | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
-    | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
-    | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
-    | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
-    | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
-    | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
+    : PARSEOP_OBJECTTYPE_UNK                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
+    | PARSEOP_OBJECTTYPE_INT                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
+    | PARSEOP_OBJECTTYPE_STR                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
+    | PARSEOP_OBJECTTYPE_BUF                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
+    | PARSEOP_OBJECTTYPE_PKG                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
+    | PARSEOP_OBJECTTYPE_FLD                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
+    | PARSEOP_OBJECTTYPE_DEV                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
+    | PARSEOP_OBJECTTYPE_EVT                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
+    | PARSEOP_OBJECTTYPE_MTH                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
+    | PARSEOP_OBJECTTYPE_MTX                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
+    | PARSEOP_OBJECTTYPE_OPR                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
+    | PARSEOP_OBJECTTYPE_POW                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
+    | PARSEOP_OBJECTTYPE_PRO                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
+    | PARSEOP_OBJECTTYPE_THZ                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
+    | PARSEOP_OBJECTTYPE_BFF                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
+    | PARSEOP_OBJECTTYPE_DDB                {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
     ;
 
 AccessTypeKeyword
-    : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
-    | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
-    | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
-    | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
-    | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
-    | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
+    : PARSEOP_ACCESSTYPE_ANY                {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
+    | PARSEOP_ACCESSTYPE_BYTE               {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
+    | PARSEOP_ACCESSTYPE_WORD               {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
+    | PARSEOP_ACCESSTYPE_DWORD              {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
+    | PARSEOP_ACCESSTYPE_QWORD              {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
+    | PARSEOP_ACCESSTYPE_BUF                {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
     ;
 
 AccessAttribKeyword
-    : PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
-    | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
-    | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
-    | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
-    | PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
-    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
-    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
+    : PARSEOP_ACCESSATTRIB_QUICK            {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
+    | PARSEOP_ACCESSATTRIB_SND_RCV          {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
+    | PARSEOP_ACCESSATTRIB_BYTE             {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
+    | PARSEOP_ACCESSATTRIB_WORD             {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
+    | PARSEOP_ACCESSATTRIB_BLOCK            {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
+    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
+    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
     ;
 
 LockRuleKeyword
-    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
-    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
+    : PARSEOP_LOCKRULE_LOCK                 {$<n>$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
+    | PARSEOP_LOCKRULE_NOLOCK               {$<n>$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
     ;
 
 UpdateRuleKeyword
-    : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
-    | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
-    | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
+    : PARSEOP_UPDATERULE_PRESERVE           {$<n>$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
+    | PARSEOP_UPDATERULE_ONES               {$<n>$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
+    | PARSEOP_UPDATERULE_ZEROS              {$<n>$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
     ;
 
 
 RegionSpaceKeyword
-    : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
-    | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
-    | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
-    | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
-    | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
-    | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
-    | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
+    : PARSEOP_REGIONSPACE_IO                {$<n>$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
+    | PARSEOP_REGIONSPACE_MEM               {$<n>$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
+    | PARSEOP_REGIONSPACE_PCI               {$<n>$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
+    | PARSEOP_REGIONSPACE_EC                {$<n>$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
+    | PARSEOP_REGIONSPACE_SMBUS             {$<n>$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
+    | PARSEOP_REGIONSPACE_CMOS              {$<n>$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
+    | PARSEOP_REGIONSPACE_PCIBAR            {$<n>$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
     ;
 
 AddressSpaceKeyword
-    : ByteConst								{$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
+    : ByteConst								{$<n>$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
     | RegionSpaceKeyword					{}
-    | PARSEOP_ADDRESSSPACE_FFIXEDHW         {$$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);}
+    | PARSEOP_ADDRESSSPACE_FFIXEDHW         {$<n>$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);}
     ;
 
 
 SerializeRuleKeyword
-    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
-    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
+    : PARSEOP_SERIALIZERULE_SERIAL          {$<n>$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
+    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$<n>$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
     ;
 
 MatchOpKeyword
-    : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
-    | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
-    | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
-    | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
-    | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
-    | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
+    : PARSEOP_MATCHTYPE_MTR                 {$<n>$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
+    | PARSEOP_MATCHTYPE_MEQ                 {$<n>$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
+    | PARSEOP_MATCHTYPE_MLE                 {$<n>$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
+    | PARSEOP_MATCHTYPE_MLT                 {$<n>$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
+    | PARSEOP_MATCHTYPE_MGE                 {$<n>$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
+    | PARSEOP_MATCHTYPE_MGT                 {$<n>$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
     ;
 
 DMATypeKeyword
-    : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
-    | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
-    | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
-    | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
+    : PARSEOP_DMATYPE_A                     {$<n>$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
+    | PARSEOP_DMATYPE_COMPATIBILITY         {$<n>$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
+    | PARSEOP_DMATYPE_B                     {$<n>$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
+    | PARSEOP_DMATYPE_F                     {$<n>$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
     ;
 
 XferTypeKeyword
-    : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
-    | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
-    | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
+    : PARSEOP_XFERTYPE_8                    {$<n>$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
+    | PARSEOP_XFERTYPE_8_16                 {$<n>$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
+    | PARSEOP_XFERTYPE_16                   {$<n>$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
     ;
 
 ResourceTypeKeyword
-    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
-    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
+    : PARSEOP_RESOURCETYPE_CONSUMER         {$<n>$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
+    | PARSEOP_RESOURCETYPE_PRODUCER         {$<n>$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
     ;
 
 MinKeyword
-    : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
-    | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
+    : PARSEOP_MINTYPE_FIXED                 {$<n>$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
+    | PARSEOP_MINTYPE_NOTFIXED              {$<n>$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
     ;
 
 MaxKeyword
-    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
-    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
+    : PARSEOP_MAXTYPE_FIXED                 {$<n>$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
+    | PARSEOP_MAXTYPE_NOTFIXED              {$<n>$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
     ;
 
 DecodeKeyword
-    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
-    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
+    : PARSEOP_DECODETYPE_POS                {$<n>$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
+    | PARSEOP_DECODETYPE_SUB                {$<n>$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
     ;
 
 RangeTypeKeyword
-    : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
-    | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
-    | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
+    : PARSEOP_RANGETYPE_ISAONLY             {$<n>$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
+    | PARSEOP_RANGETYPE_NONISAONLY          {$<n>$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
+    | PARSEOP_RANGETYPE_ENTIRE              {$<n>$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
     ;
 
 MemTypeKeyword
-    : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
-    | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
-    | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
-    | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
+    : PARSEOP_MEMTYPE_CACHEABLE             {$<n>$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
+    | PARSEOP_MEMTYPE_WRITECOMBINING        {$<n>$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
+    | PARSEOP_MEMTYPE_PREFETCHABLE          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
+    | PARSEOP_MEMTYPE_NONCACHEABLE          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
     ;
 
 OptionalReadWriteKeyword
-    :                                       {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
-    | PARSEOP_READWRITETYPE_BOTH            {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
-    | PARSEOP_READWRITETYPE_READONLY        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
+    :                                       {$<n>$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
+    | PARSEOP_READWRITETYPE_BOTH            {$<n>$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
+    | PARSEOP_READWRITETYPE_READONLY        {$<n>$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
     ;
 
 InterruptTypeKeyword
-    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
-    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
+    : PARSEOP_INTTYPE_EDGE                  {$<n>$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
+    | PARSEOP_INTTYPE_LEVEL                 {$<n>$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
     ;
 
 InterruptLevel
-    : PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
-    | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
+    : PARSEOP_INTLEVEL_ACTIVEHIGH           {$<n>$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
+    | PARSEOP_INTLEVEL_ACTIVELOW            {$<n>$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
     ;
 
 ShareTypeKeyword
-    : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
-    | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
+    : PARSEOP_SHARETYPE_SHARED              {$<n>$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
+    | PARSEOP_SHARETYPE_EXCLUSIVE           {$<n>$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
     ;
 
 IODecodeKeyword
-    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
-    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
+    : PARSEOP_IODECODETYPE_16               {$<n>$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
+    | PARSEOP_IODECODETYPE_10               {$<n>$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
     ;
 
 TypeKeyword
-    : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
-    | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
+    : PARSEOP_TYPE_TRANSLATION              {$<n>$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
+    | PARSEOP_TYPE_STATIC                   {$<n>$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
     ;
 
 TranslationKeyword
-    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
-    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
+    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$<n>$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
+    | PARSEOP_TRANSLATIONTYPE_DENSE         {$<n>$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
     ;
 
 AddressKeyword
-    : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
-    | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
-    | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
-    | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
+    : PARSEOP_ADDRESSTYPE_MEMORY            {$<n>$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
+    | PARSEOP_ADDRESSTYPE_RESERVED          {$<n>$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
+    | PARSEOP_ADDRESSTYPE_NVS               {$<n>$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
+    | PARSEOP_ADDRESSTYPE_ACPI              {$<n>$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
     ;
 
 
@@ -2294,110 +2294,110 @@ 
     ;
 
 ArgTerm
-    : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
-    | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
-    | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
-    | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
-    | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
-    | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
-    | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
+    : PARSEOP_ARG0                  {$<n>$ = TrCreateLeafNode (PARSEOP_ARG0);}
+    | PARSEOP_ARG1                  {$<n>$ = TrCreateLeafNode (PARSEOP_ARG1);}
+    | PARSEOP_ARG2                  {$<n>$ = TrCreateLeafNode (PARSEOP_ARG2);}
+    | PARSEOP_ARG3                  {$<n>$ = TrCreateLeafNode (PARSEOP_ARG3);}
+    | PARSEOP_ARG4                  {$<n>$ = TrCreateLeafNode (PARSEOP_ARG4);}
+    | PARSEOP_ARG5                  {$<n>$ = TrCreateLeafNode (PARSEOP_ARG5);}
+    | PARSEOP_ARG6                  {$<n>$ = TrCreateLeafNode (PARSEOP_ARG6);}
     ;
 
 LocalTerm
-    : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
-    | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
-    | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
-    | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
-    | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
-    | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
-    | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
-    | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
+    : PARSEOP_LOCAL0                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
+    | PARSEOP_LOCAL1                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
+    | PARSEOP_LOCAL2                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
+    | PARSEOP_LOCAL3                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
+    | PARSEOP_LOCAL4                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
+    | PARSEOP_LOCAL5                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
+    | PARSEOP_LOCAL6                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
+    | PARSEOP_LOCAL7                {$<n>$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
     ;
 
 DebugTerm
-    : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
+    : PARSEOP_DEBUG                 {$<n>$ = TrCreateLeafNode (PARSEOP_DEBUG);}
     ;
 
 
 ByteConst
-    : Integer                       {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
+    : Integer                       {$<n>$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
     ;
 
 WordConst
-    : Integer                       {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
+    : Integer                       {$<n>$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
     ;
 
 DWordConst
-    : Integer                       {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
+    : Integer                       {$<n>$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
     ;
 
 QWordConst
-    : Integer                       {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
+    : Integer                       {$<n>$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
     ;
 
 Integer
-    : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
+    : PARSEOP_INTEGER               {$<n>$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
     ;
 
 String
-    : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
+    : PARSEOP_STRING_LITERAL        {$<n>$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
     ;
 
 ConstTerm
     : ConstExprTerm                 {}
-    | PARSEOP_REVISION              {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
+    | PARSEOP_REVISION              {$<n>$ = TrCreateLeafNode (PARSEOP_REVISION);}
     ;
 
 ByteConstExpr
-    : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
-    | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
-    | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
+    : Type3Opcode                   {$<n>$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
+    | Type2IntegerOpcode            {$<n>$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
+    | ConstExprTerm                 {$<n>$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
     | ByteConst                     {}
     ;
 
 WordConstExpr
-    : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
-    | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
-    | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
+    : Type3Opcode                   {$<n>$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
+    | Type2IntegerOpcode            {$<n>$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
+    | ConstExprTerm                 {$<n>$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
     | WordConst                     {}
     ;
 
 DWordConstExpr
-    : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
-    | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
-    | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
+    : Type3Opcode                   {$<n>$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
+    | Type2IntegerOpcode            {$<n>$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
+    | ConstExprTerm                 {$<n>$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
     | DWordConst                    {}
     ;
 
 QWordConstExpr
-    : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
-    | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
-    | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
+    : Type3Opcode                   {$<n>$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
+    | Type2IntegerOpcode            {$<n>$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
+    | ConstExprTerm                 {$<n>$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
     | QWordConst                    {}
     ;
 
 ConstExprTerm
-    : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
-    | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
-    | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_INTEGER_MAX);}
+    : PARSEOP_ZERO                  {$<n>$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
+    | PARSEOP_ONE                   {$<n>$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
+    | PARSEOP_ONES                  {$<n>$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_INTEGER_MAX);}
     ;
 
 /* OptionalCount must appear before ByteList or an incorrect reduction will result */
 
 OptionalCount
-    :                               {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
-    | ','                           {$$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
-    | ',' TermArg                   {$$ = $2;}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
+    | ','                           {$<n>$ = TrCreateLeafNode (PARSEOP_ONES);}       /* Placeholder is a OnesOp object */
+    | ',' TermArg                   {$<n>$ = $2;}
     ;
 
 
 BufferTerm
-    : PARSEOP_BUFFER '('            {$$ = TrCreateLeafNode (PARSEOP_BUFFER);}
+    : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
         OptionalTermArg
         ')' '{'
-            BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+            BufferTermData '}'      {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_BUFFER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 BufferTermData
@@ -2406,41 +2406,41 @@ 
     ;
 
 ByteList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | ByteConstExpr
     | ByteList ','                  /* Allows a trailing comma at list end */
     | ByteList ','
-        ByteConstExpr               {$$ = TrLinkPeerNode ($1,$3);}
+        ByteConstExpr               {$<n>$ = TrLinkPeerNode ($1,$3);}
     ;
 
 DWordList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | DWordConstExpr
     | DWordList ','                 /* Allows a trailing comma at list end */
     | DWordList ','
-        DWordConstExpr              {$$ = TrLinkPeerNode ($1,$3);}
+        DWordConstExpr              {$<n>$ = TrLinkPeerNode ($1,$3);}
     ;
 
 PackageTerm
-    : PARSEOP_PACKAGE '('           {$$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
+    : PARSEOP_PACKAGE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
         VarPackageLengthTerm
         ')' '{'
-            PackageList '}'         {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+            PackageList '}'         {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_PACKAGE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 VarPackageLengthTerm
-    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
-    | TermArg                       {$$ = $1;}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
+    | TermArg                       {$<n>$ = $1;}
     ;
 
 PackageList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | PackageElement
     | PackageList ','               /* Allows a trailing comma at list end */
     | PackageList ','
-        PackageElement              {$$ = TrLinkPeerNode ($1,$3);}
+        PackageElement              {$<n>$ = TrLinkPeerNode ($1,$3);}
     ;
 
 PackageElement
@@ -2450,9 +2450,9 @@ 
 
 EISAIDTerm
     : PARSEOP_EISAID '('
-        StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
+        StringData ')'              {$<n>$ = TrUpdateNode (PARSEOP_EISAID, $3);}
     | PARSEOP_EISAID '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
@@ -2466,7 +2466,7 @@ 
 ResourceTemplateTerm
     : PARSEOP_RESOURCETEMPLATE '(' ')'
         '{'
-        ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
+        ResourceMacroList '}'       {$<n>$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
                                           $5,
@@ -2474,17 +2474,17 @@ 
     ;
 
 UnicodeTerm
-    : PARSEOP_UNICODE '('           {$$ = TrCreateLeafNode (PARSEOP_UNICODE);}
+    : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
         StringData
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,2,0,$4);}
     | PARSEOP_UNICODE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ResourceMacroList
-    :                               {$$ = NULL;}
+    :                               {$<n>$ = NULL;}
     | ResourceMacroList
-        ResourceMacroTerm           {$$ = TrLinkPeerNode ($1,$2);}
+        ResourceMacroTerm           {$<n>$ = TrLinkPeerNode ($1,$2);}
     ;
 
 ResourceMacroTerm
@@ -2518,19 +2518,19 @@ 
     ;
 
 DMATerm
-    : PARSEOP_DMA '('               {$$ = TrCreateLeafNode (PARSEOP_DMA);}
+    : PARSEOP_DMA '('               {$<n>$ = TrCreateLeafNode (PARSEOP_DMA);}
         DMATypeKeyword
         OptionalBusMasterKeyword
         ',' XferTypeKeyword
         OptionalNameString_Last
         ')' '{'
-            ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
+            ByteList '}'            {$<n>$ = TrLinkChildren ($<n>3,5,$4,$5,$7,$8,$11);}
     | PARSEOP_DMA '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DWordIOTerm
-    : PARSEOP_DWORDIO '('           {$$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
+    : PARSEOP_DWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDIO);}
         OptionalResourceType_First
         OptionalMinType
         OptionalMaxType
@@ -2546,13 +2546,13 @@ 
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
     | PARSEOP_DWORDIO '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DWordMemoryTerm
-    : PARSEOP_DWORDMEMORY '('       {$$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
+    : PARSEOP_DWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);}
         OptionalResourceType_First
         OptionalDecodeType
         OptionalMinType
@@ -2569,14 +2569,14 @@ 
         OptionalNameString
         OptionalAddressRange
         OptionalType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
     | PARSEOP_DWORDMEMORY '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 DWordSpaceTerm
-    : PARSEOP_DWORDSPACE '('        {$$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
-        ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
+    : PARSEOP_DWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);}
+        ByteConstExpr               {$<n>$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
         OptionalResourceType
         OptionalDecodeType
         OptionalMinType
@@ -2590,21 +2590,21 @@ 
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
     | PARSEOP_DWORDSPACE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
 EndDependentFnTerm
     : PARSEOP_ENDDEPENDENTFN '('
-        ')'                         {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
+        ')'                         {$<n>$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);}
     | PARSEOP_ENDDEPENDENTFN '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ExtendedIOTerm
-    : PARSEOP_EXTENDEDIO '('        {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
+    : PARSEOP_EXTENDEDIO '('        {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);}
         OptionalResourceType_First
         OptionalMinType
         OptionalMaxType
@@ -2619,13 +2619,13 @@ 
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
     | PARSEOP_EXTENDEDIO '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ExtendedMemoryTerm
-    : PARSEOP_EXTENDEDMEMORY '('    {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
+    : PARSEOP_EXTENDEDMEMORY '('    {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);}
         OptionalResourceType_First
         OptionalDecodeType
         OptionalMinType
@@ -2641,14 +2641,14 @@ 
         OptionalNameString
         OptionalAddressRange
         OptionalType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
     | PARSEOP_EXTENDEDMEMORY '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 ExtendedSpaceTerm
-    : PARSEOP_EXTENDEDSPACE '('     {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
-        ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
+    : PARSEOP_EXTENDEDSPACE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);}
+        ByteConstExpr               {$<n>$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
         OptionalResourceType
         OptionalDecodeType
         OptionalMinType
@@ -2661,23 +2661,23 @@ 
         ',' QWordConstExpr
         OptionalQWordConstExpr
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
     | PARSEOP_EXTENDEDSPACE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 FixedIOTerm
-    : PARSEOP_FIXEDIO '('           {$$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
+    : PARSEOP_FIXEDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
         WordConstExpr
         ',' ByteConstExpr
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
     | PARSEOP_FIXEDIO '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 InterruptTerm
-    : PARSEOP_INTERRUPT '('         {$$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
+    : PARSEOP_INTERRUPT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
         OptionalResourceType_First
         ',' InterruptTypeKeyword
         ',' InterruptLevel
@@ -2686,84 +2686,84 @@ 
         OptionalStringData
         OptionalNameString_Last
         ')' '{'
-            DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
+            DWordList '}'           {$<n>$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
     | PARSEOP_INTERRUPT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 IOTerm
-    : PARSEOP_IO '('                {$$ = TrCreateLeafNode (PARSEOP_IO);}
+    : PARSEOP_IO '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IO);}
         IODecodeKeyword
         ',' WordConstExpr
         ',' WordConstExpr
         ',' ByteConstExpr
         ',' ByteConstExpr
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
     | PARSEOP_IO '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 IRQNoFlagsTerm
-    : PARSEOP_IRQNOFLAGS '('        {$$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
+    : PARSEOP_IRQNOFLAGS '('        {$<n>$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);}
         OptionalNameString_First
         ')' '{'
-            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+            ByteList '}'            {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_IRQNOFLAGS '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 IRQTerm
-    : PARSEOP_IRQ '('               {$$ = TrCreateLeafNode (PARSEOP_IRQ);}
+    : PARSEOP_IRQ '('               {$<n>$ = TrCreateLeafNode (PARSEOP_IRQ);}
         InterruptTypeKeyword
         ',' InterruptLevel
         OptionalShareType
         OptionalNameString_Last
         ')' '{'
-            ByteList '}'            {$$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
+            ByteList '}'            {$<n>$ = TrLinkChildren ($<n>3,5,$4,$6,$7,$8,$11);}
     | PARSEOP_IRQ '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 Memory24Term
-    : PARSEOP_MEMORY24 '('          {$$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
+    : PARSEOP_MEMORY24 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY24);}
         OptionalReadWriteKeyword
         ',' WordConstExpr
         ',' WordConstExpr
         ',' WordConstExpr
         ',' WordConstExpr
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
     | PARSEOP_MEMORY24 '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 Memory32FixedTerm
-    : PARSEOP_MEMORY32FIXED '('     {$$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
+    : PARSEOP_MEMORY32FIXED '('     {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);}
         OptionalReadWriteKeyword
         ',' DWordConstExpr
         ',' DWordConstExpr
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,4,$4,$6,$8,$9);}
     | PARSEOP_MEMORY32FIXED '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 Memory32Term
-    : PARSEOP_MEMORY32 '('          {$$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
+    : PARSEOP_MEMORY32 '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MEMORY32);}
         OptionalReadWriteKeyword
         ',' DWordConstExpr
         ',' DWordConstExpr
         ',' DWordConstExpr
         ',' DWordConstExpr
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$12,$13);}
     | PARSEOP_MEMORY32 '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 QWordIOTerm
-    : PARSEOP_QWORDIO '('           {$$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
+    : PARSEOP_QWORDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDIO);}
         OptionalResourceType_First
         OptionalMinType
         OptionalMaxType
@@ -2779,13 +2779,13 @@ 
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
     | PARSEOP_QWORDIO '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 QWordMemoryTerm
-    : PARSEOP_QWORDMEMORY '('       {$$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
+    : PARSEOP_QWORDMEMORY '('       {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);}
         OptionalResourceType_First
         OptionalDecodeType
         OptionalMinType
@@ -2802,14 +2802,14 @@ 
         OptionalNameString
         OptionalAddressRange
         OptionalType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
     | PARSEOP_QWORDMEMORY '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 QWordSpaceTerm
-    : PARSEOP_QWORDSPACE '('        {$$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
-        ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
+    : PARSEOP_QWORDSPACE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);}
+        ByteConstExpr               {$<n>$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
         OptionalResourceType
         OptionalDecodeType
         OptionalMinType
@@ -2823,62 +2823,62 @@ 
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
     | PARSEOP_QWORDSPACE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 RegisterTerm
-    : PARSEOP_REGISTER '('          {$$ = TrCreateLeafNode (PARSEOP_REGISTER);}
+    : PARSEOP_REGISTER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_REGISTER);}
         AddressSpaceKeyword
         ',' ByteConstExpr
         ',' ByteConstExpr
         ',' QWordConstExpr
         OptionalAccessSize
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
     | PARSEOP_REGISTER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 StartDependentFnTerm
-    : PARSEOP_STARTDEPENDENTFN '('  {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
+    : PARSEOP_STARTDEPENDENTFN '('  {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
         ByteConstExpr
         ',' ByteConstExpr
         ')' '{'
-        ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
+        ResourceMacroList '}'       {$<n>$ = TrLinkChildren ($<n>3,3,$4,$6,$9);}
     | PARSEOP_STARTDEPENDENTFN '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 StartDependentFnNoPriTerm
-    : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
+    : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
         ')' '{'
-        ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
+        ResourceMacroList '}'       {$<n>$ = TrLinkChildren ($<n>3,1,$6);}
     | PARSEOP_STARTDEPENDENTFN_NOPRI '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 VendorLongTerm
-    : PARSEOP_VENDORLONG '('        {$$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
+    : PARSEOP_VENDORLONG '('        {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORLONG);}
         OptionalNameString_First
         ')' '{'
-            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+            ByteList '}'            {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_VENDORLONG '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 VendorShortTerm
-    : PARSEOP_VENDORSHORT '('       {$$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
+    : PARSEOP_VENDORSHORT '('       {$<n>$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);}
         OptionalNameString_First
         ')' '{'
-            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+            ByteList '}'            {$<n>$ = TrLinkChildren ($<n>3,2,$4,$7);}
     | PARSEOP_VENDORSHORT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 WordBusNumberTerm
-    : PARSEOP_WORDBUSNUMBER '('     {$$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
+    : PARSEOP_WORDBUSNUMBER '('     {$<n>$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);}
         OptionalResourceType_First
         OptionalMinType
         OptionalMaxType
@@ -2891,13 +2891,13 @@ 
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
     | PARSEOP_WORDBUSNUMBER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 WordIOTerm
-    : PARSEOP_WORDIO '('            {$$ = TrCreateLeafNode (PARSEOP_WORDIO);}
+    : PARSEOP_WORDIO '('            {$<n>$ = TrCreateLeafNode (PARSEOP_WORDIO);}
         OptionalResourceType_First
         OptionalMinType
         OptionalMaxType
@@ -2913,14 +2913,14 @@ 
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
     | PARSEOP_WORDIO '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 WordSpaceTerm
-    : PARSEOP_WORDSPACE '('         {$$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
-        ByteConstExpr               {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
+    : PARSEOP_WORDSPACE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_WORDSPACE);}
+        ByteConstExpr               {$<n>$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);}
         OptionalResourceType
         OptionalDecodeType
         OptionalMinType
@@ -2934,9 +2934,9 @@ 
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
+        ')'                         {$<n>$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
     | PARSEOP_WORDSPACE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
+        error ')'                   {$<n>$ = AslDoError(); yyclearin;}
     ;
 
 
@@ -2946,14 +2946,14 @@ 
 
 NameString
     : NameSeg                       {}
-    | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
-    | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
-    | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
-    | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
+    | PARSEOP_NAMESTRING            {$<n>$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
+    | PARSEOP_IO                    {$<n>$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
+    | PARSEOP_DMA                   {$<n>$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
+    | PARSEOP_IRQ                   {$<n>$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
     ;
 
 NameSeg
-    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
+    : PARSEOP_NAMESEG               {$<n>$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
     ;
 
 
@@ -2961,178 +2961,178 @@ 
 
 
 AmlPackageLengthTerm
-    : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
+    : Integer                       {$<n>$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
     ;
 
 OptionalBusMasterKeyword
-    : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
-    | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
-    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
+    : ','                                       {$<n>$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
+    | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$<n>$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
+    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$<n>$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
     ;
 
 OptionalAccessAttribTerm
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' ByteConstExpr             {$$ = $2;}
-    | ',' AccessAttribKeyword       {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' ByteConstExpr             {$<n>$ = $2;}
+    | ',' AccessAttribKeyword       {$<n>$ = $2;}
     ;
 
 OptionalAccessSize
-    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
-    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
-    | ',' ByteConstExpr             {$$ = $2;}
+    :                               {$<n>$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
+    | ','                           {$<n>$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
+    | ',' ByteConstExpr             {$<n>$ = $2;}
     ;
 
 OptionalAddressRange
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' AddressKeyword            {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' AddressKeyword            {$<n>$ = $2;}
     ;
 
 OptionalByteConstExpr
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' ByteConstExpr             {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' ByteConstExpr             {$<n>$ = $2;}
     ;
 
 OptionalDecodeType
-    : ','                           {$$ = NULL;}
-    | ',' DecodeKeyword             {$$ = $2;}
+    : ','                           {$<n>$ = NULL;}
+    | ',' DecodeKeyword             {$<n>$ = $2;}
     ;
 
 OptionalDWordConstExpr
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' DWordConstExpr            {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' DWordConstExpr            {$<n>$ = $2;}
     ;
 
 OptionalListString
-    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
-    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
-    | ',' TermArg                   {$$ = $2;}
+    :                               {$<n>$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
+    | ','                           {$<n>$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
+    | ',' TermArg                   {$<n>$ = $2;}
     ;
 
 OptionalMaxType
-    : ','                           {$$ = NULL;}
-    | ',' MaxKeyword                {$$ = $2;}
+    : ','                           {$<n>$ = NULL;}
+    | ',' MaxKeyword                {$<n>$ = $2;}
     ;
 
 OptionalMemType
-    : ','                           {$$ = NULL;}
-    | ',' MemTypeKeyword            {$$ = $2;}
+    : ','                           {$<n>$ = NULL;}
+    | ',' MemTypeKeyword            {$<n>$ = $2;}
     ;
 
 OptionalMinType
-    : ','                           {$$ = NULL;}
-    | ',' MinKeyword                {$$ = $2;}
+    : ','                           {$<n>$ = NULL;}
+    | ',' MinKeyword                {$<n>$ = $2;}
     ;
 
 OptionalNameString
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' NameString                {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' NameString                {$<n>$ = $2;}
     ;
 
 OptionalNameString_Last
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' NameString                {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' NameString                {$<n>$ = $2;}
     ;
 
 OptionalNameString_First
-    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
-    | NameString                    {$$ = $1;}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_ZERO);}
+    | NameString                    {$<n>$ = $1;}
     ;
 
 OptionalObjectTypeKeyword
-    :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
-    | ',' ObjectTypeKeyword         {$$ = $2;}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
+    | ',' ObjectTypeKeyword         {$<n>$ = $2;}
     ;
 
 OptionalQWordConstExpr
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' QWordConstExpr            {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' QWordConstExpr            {$<n>$ = $2;}
     ;
 
 OptionalRangeType
-    : ','                           {$$ = NULL;}
-    | ',' RangeTypeKeyword          {$$ = $2;}
+    : ','                           {$<n>$ = NULL;}
+    | ',' RangeTypeKeyword          {$<n>$ = $2;}
     ;
 
 OptionalReference
-    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
-    | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
-    | ',' DataObject                {$$ = $2;}
-    | ',' NameString                {$$ = $2;}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
+    | ','                           {$<n>$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
+    | ',' DataObject                {$<n>$ = $2;}
+    | ',' NameString                {$<n>$ = $2;}
     ;
 
 OptionalResourceType_First
-    :                               {$$ = NULL;}
-    | ResourceTypeKeyword           {$$ = $1;}
+    :                               {$<n>$ = NULL;}
+    | ResourceTypeKeyword           {$<n>$ = $1;}
     ;
 
 OptionalResourceType
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' ResourceTypeKeyword       {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' ResourceTypeKeyword       {$<n>$ = $2;}
     ;
 
 OptionalSerializeRuleKeyword
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' SerializeRuleKeyword      {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' SerializeRuleKeyword      {$<n>$ = $2;}
     ;
 
 OptionalShareType
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' ShareTypeKeyword          {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' ShareTypeKeyword          {$<n>$ = $2;}
     ;
 
 OptionalStringData
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' StringData                {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' StringData                {$<n>$ = $2;}
     ;
 
 OptionalTermArg
-    :                               {$$ = NULL;}
-    | TermArg                       {$$ = $1;}
+    :                               {$<n>$ = NULL;}
+    | TermArg                       {$<n>$ = $1;}
     ;
 
 OptionalReturnArg
-    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
-    | TermArg                       {$$ = $1;}
+    :                               {$<n>$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
+    | TermArg                       {$<n>$ = $1;}
     ;
 
 OptionalType
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' TypeKeyword               {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' TypeKeyword               {$<n>$ = $2;}
     ;
 
 OptionalType_Last
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' TypeKeyword               {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' TypeKeyword               {$<n>$ = $2;}
     ;
 
 OptionalTranslationType_Last
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' TranslationKeyword        {$$ = $2;}
+    :                               {$<n>$ = NULL;}
+    | ','                           {$<n>$ = NULL;}
+    | ',' TranslationKeyword        {$<n>$ = $2;}
     ;
 
 
 TermArgItem
-    : ',' TermArg                   {$$ = $2;}
-    | ',' error                     {$$ = AslDoError (); yyclearin;}
+    : ',' TermArg                   {$<n>$ = $2;}
+    | ',' error                     {$<n>$ = AslDoError (); yyclearin;}
     ;
 
 NameStringItem
-    : ',' NameString                {$$ = $2;}
-    | ',' error                     {$$ = AslDoError (); yyclearin;}
+    : ',' NameString                {$<n>$ = $2;}
+    | ',' error                     {$<n>$ = AslDoError (); yyclearin;}
     ;