dlang-community / Pegged

A Parsing Expression Grammar (PEG) module, using the D programming language.
534 stars 66 forks source link

Undefined symbols with basic helloworld Pegged example. #161

Open enjoysmath opened 9 years ago

enjoysmath commented 9 years ago

Hi, compiling the basic Arithmetic example for pegged in Visual D, I'm getting:

Error 1 Error 42: Symbol Undefined _D6pegged3peg9ParseTree9xtoHashFNbNeKxS6pegged3peg9ParseTreeZk (nothrow @trusted uint pegged.peg.ParseTree.xtoHash(ref const(pegged.peg.ParseTree))) C:\MyProjects\D\PeggedPractice\ Error 2 Error 42: Symbol Undefined _D6pegged3peg9ParseTree11xopEqualsFKxS6pegged3peg9ParseTreeKxS6pegged3peg9ParseTreeZb (bool pegged.peg.ParseTree.xopEquals(ref const(pegged.peg.ParseTree), ref const(pegged.peg.ParseTree))) C:\MyProjects\D\PeggedPractice\ Error 3 Error 42: Symbol Undefined _D6pegged3peg7arrayZ C:\MyProjects\D\PeggedPractice\ Error 4 Error 42: Symbol Undefined _D6pegged3peg9ParseTree8toStringMxFAyaZAya (const(immutable(char)[] function(immutable(char)[])) pegged.peg.ParseTree.toString) C:\MyProjects\D\PeggedPractice\ Error 5 Error 42: Symbol Undefined _D6pegged6parser42T13GenericPeggedTS6pegged3peg9ParseTreeZ13GenericPegged6Pegged6opCallFAyaZS6pegged3peg9ParseTree (pegged.peg.ParseTree pegged.parser.GenericPegged!(pegged.peg.ParseTree).GenericPegged.Pegged.opCall(immutable(char)[])) C:\MyProjects\D\PeggedPractice\ Error 6 Error 42: Symbol Undefined _D6pegged7grammar7arrayZ C:\MyProjects\D\PeggedPractice\ Error 7 Error 42: Symbol Undefined _D6pegged7grammar10spaceArrowFS6pegged3peg9ParseTreeZS6pegged3peg9ParseTree (pegged.peg.ParseTree pegged.grammar.spaceArrow(pegged.peg.ParseTree)) C:\MyProjects\D\PeggedPractice\ Error 8 Error 42: Symbol Undefined _D6pegged3peg530T5namedS4956pegged3peg473T7discardS4576pegged3peg431T10zeroOrMoreS4116pegg43BBC026FB8ABB41C0494D653635CB0F C:\MyProjects\D\PeggedPractice\ Error 9 Error 42: Symbol Undefined _D6pegged7dynamic7grammar7grammarFAyaHAyaDFS6pegged3peg9ParseTreeZS6pegged3peg9ParseTreeZS6pegged7dynamic7grammar14DynamicGrammar (pegged.dynamic.grammar.DynamicGrammar pegged.dynamic.grammar.grammar(immutable(char)[], pegged.peg.ParseTree delegate(pegged.peg.ParseTree)[immutable(char)[]])) C:\MyProjects\D\PeggedPractice\ Error 10 Error 42: Symbol Undefined _D6pegged3peg642T5namedS6006pegged3peg581T4fuseS5686pegged3peg537T15discardChildrenS5126peD787FCA5048530FFBEDA8319BFCF8F79 C:\MyProjects\D\PeggedPractice\ Error 11 Error 42: Symbol Undefined _D6pegged3peg9ParseTree6__initZ C:\MyProjects\D\PeggedPractice\ Error 12 Error 42: Symbol Undefined _D6pegged7dynamic7grammar12ModuleInfoZ C:\MyProjects\D\PeggedPractice\ Error 13 Error 42: Symbol Undefined _D6pegged7grammar12__ModuleInfoZ C:\MyProjects\D\PeggedPractice\

It's almost as if there's some library I need to link with, but I don't see one under the pegged directory. I have the folder C:\MyProjects\D\Pegged added to the add'l imports field in the project properties. Please show me how to fix these. I will even donate $$ if you don't have a lot of time. I love pegged. I've used it before, but I believe I included the pegged files in the project or something, but that doesn't seem proper.

PhilippeSigaud commented 8 years ago

Could you please send me the exact files you used?

XuTpuK commented 7 years ago

I confirm same problem. I use LDC2 with simple test:

import std.stdio;
import pegged.grammar;

mixin(grammar(`
Arithmetic:
    Term     < Factor (Add / Sub)*
    Add      < "+" Factor
    Sub      < "-" Factor
    Factor   < Power (Mul / Div)*
    Mul      < "*" Power
    Div      < "/" Power
    Power    < Primary ("^" Number)?
    Primary  < Parens / Neg / Pos / Number / Variable
    Parens   < "(" Term ")"
    Neg      < "-" Primary
    Pos      < "+" Primary
    Number   < ~([0-9]+)

    Variable <- identifier
`));

void main(string[] args) {
    auto tree = Arithmetic("1^7 + 2 * 3");

    writeln(tree);

    readln();
}

Command line:

ldc2 -I=C:\PathToPeggedFolder app.d

Command fails, giving same error as in report above + last lines:

app.obj : error LNK2001: unresolved external symbol _D6pegged7dynamic7grammar12__ModuleInfoZ app.exe : fatal error LNK1120: 32 unresolved externals Error: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe failed with status: 1120

Maybe "getting started" should include not only samples of grammar, but real usage too? (how people can use it with DMD/LDC/GDC)