All these errors running basic Pegged helloworld example.

BBasile via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Sep 27 00:16:49 PDT 2015


On Sunday, 27 September 2015 at 06:30:37 UTC, Enjoys Math wrote:
> The example is:
>
> import pegged.grammar;
>
> mixin(grammar(`
> Arithmetic:
>     Term     < Factor (Add / Sub)*
>     Add      < "+" Factor
>     Sub      < "-" Factor
>     Factor   < Primary (Mul / Div)*
>     Mul      < "*" Primary
>     Div      < "/" Primary
>     Primary  < Parens / Neg / Pos / Number / Variable
>     Parens   < "(" Term ")"
>     Neg      < "-" Primary
>     Pos      < "+" Primary
>     Number   < ~([0-9]+)
>
>     Variable <- identifier
> `));
>
> I'm using Visual D and have C:\MyProjects\D\Pegged (the git 
> clone of pegged) added to the add'l imports field under project 
> properties > compiler.
>
> I'm getting errors like these:
>
> Error	1	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	2	Error 42: Symbol Undefined 
> _D6pegged7dynamic7grammar12__ModuleInfoZ	C:\MyProjects\D\PeggedPractice\	
>
> The # of errors was greatly reduced when I added the 3 pegged 
> source files to my project.   What can be going wrong?  Thanks!

You must also pass the source root with -I:

-IC:\MyProjects\D\Pegged

(and maybe you miss another source since there are 5:

     '..\repos\Pegged\pegged\grammar.d'
     '..\repos\Pegged\pegged\parser.d'
     '..\repos\Pegged\pegged\peg.d'
     '..\repos\Pegged\pegged\dynamic\grammar.d'
     '..\repos\Pegged\pegged\dynamic\peg.d'
)

By the way with Coedit you wouldn't have this kind of problems 
(Pegged is part of metaD). You can even run some test on Pegged 
without saving the file / without a project (this is called a 
runnable module). This is just what I've done.

At least compile pegged as a static lib, then it's simpler, you 
just have to pass the -I<root> pegged.lib and your custom sources 
files.


More information about the Digitalmars-d-learn mailing list