Orvid / Caprica

A compiler for the Papyrus scripting language used by the Creation Engine.
MIT License
83 stars 14 forks source link

Fatal Error: Unable to locate line at offset 481 #15

Open fireundubh opened 4 years ago

fireundubh commented 4 years ago

The latest build of Caprica fails early with this error:

Fatal Error: Unable to locate line at offset 481

The issue seems related to FO4_Papyrus_Flags.flg from 0.2.

The issue does not occur with Institute_Papyrus_Flags.flg but it also does not compile with the base game flags file.

fireundubh commented 4 years ago

I fixed-ish that issue by adding this to the CapricaUserFlagsParser:

            case TokenType::Identifier:
              if (cur.sValue == "PropertyGroup") {
                flag.validLocations |= CapricaUserFlagsDefinition::ValidLocations::PropertyGroup;
              }
              else if (cur.sValue == "StructMember") {
                flag.validLocations |= CapricaUserFlagsDefinition::ValidLocations::StructMember;
              }
              else {
                std::cout << "cur.type = " << cur.prettyString().c_str() << std::endl;
                consume();
                reportingContext.error(cur.location, "Unexpected token '%s'!", cur.prettyString().c_str());
                break;
              }
              consume();
              break;

But, honestly, the latest build just seems broken. I added a bunch of logging, and it seems the furthest Caprica gets is queuing the FileWriteJob.

E:\repos\Caprica\Caprica\bin\Debug>caprica
Parse: 10ms
Read: 0ms
Queuing FileWriteJob
Compiled N/A files in 0ms
Orvid commented 4 years ago

I'm gonna be honest, I have no idea what state the code in master is in, I can say for certain though that the only compile style it supports is compiling the entire scripts directory at once due to a change in how I was doing the scheduling that I never got around to implementing correctly for single-file compilation. (note that it still compiles everything before the DLC was released in < .5 seconds, so that wasn't really a major issue)

The code for Caprica hasn't been touched in > 2.5 years at this point, and I'd strongly recommend using the official Papyrus compiler included in the Creation Kit rather than Caprica. Caprica was only ever designed to be a workaround when the Creation Kit hadn't yet released.

I would accept PRs if you want to get it back up and running, but I have no plans to do so myself.