Running partcl on parrot [Was: Re: GCC failed with configure.pl]

Ashraya theemeraldsoul at gmail.com
Tue Aug 6 04:37:52 UTC 2013


Hello All,

I was successfully able to embed parrot APIs in C and execute the same.
Thanks a lot for your support. :)

I need another favour. I want to understand the workflow of how a C or perl
etc. file gets converted into the parse tree, past, post and pir. I want to
know in depth, how this is done. Can you please point me to the right docs
for this ?

Thanks & Regards,
Ashiva

Thanks & Regards,*
Ashraya S Shiva*


On Fri, Jul 26, 2013 at 10:02 AM, Ashraya <theemeraldsoul at gmail.com> wrote:

> A gentle reminder.. Can anyone please help me here ? I am not able to
> execute the generated .pir file.
>
> ashiva at ubuntu:~/EScript$ ./installable_escript Test/hello.es
> Hello World!
>
> ashiva at ubuntu:~/EScript$
> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/hello.es
>
> .HLL "escript"
>
> .namespace []
> .sub "_block1000"  :anon :subid("10_1374761960.96533")
> .annotate 'file', "Test/hello.es"
> .annotate 'line', 1
>     $P100 = "say"("Hello World!\n")
>     .return ($P100)
> .end
>
> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/hello.es> Test/hello.pir
> ashiva at ubuntu:~/EScript$
> ashiva at ubuntu:~/EScript$
> ashiva at ubuntu:~/EScript$ parrot Test/hello.pir
> Could not find sub say
> current instr.: '_block1000' pc 6 (Test/hello.pir:8) (Test/hello.es:1)
> ashiva at ubuntu:~/EScript$
>
> Thanks & Regards,
> Ashiva
>
> Thanks & Regards,*
> Ashraya S Shiva*
>
>
> On Thu, Jul 25, 2013 at 7:59 PM, Ashraya <theemeraldsoul at gmail.com> wrote:
>
>> Hi All,
>>
>> Apart from the problem in compiling my factorial program, I tried to
>> create a new language using the my_language_shell.pl given in PCT
>> documentation.
>> I followed the steps and created the skeleton for my language : EScript.
>>
>> When I tried printing "Hello World!", it printed properly.
>>
>> I tried generating the parse, past, post trees and it was all generated.
>> I even generated the .pir file for my hello.es
>>
>> Here is the snapshot :
>>
>> ashiva at ubuntu:~/EScript$ ./installable_escript Test/hello.es
>> Hello World!
>>
>> ashiva at ubuntu:~/EScript$
>>
>> However, if I try to execute the generated pir file, it throws an error :
>>
>> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/hello.es
>>
>> .HLL "escript"
>>
>> .namespace []
>> .sub "_block1000"  :anon :subid("10_1374761960.96533")
>> .annotate 'file', "Test/hello.es"
>> .annotate 'line', 1
>>     $P100 = "say"("Hello World!\n")
>>     .return ($P100)
>> .end
>>
>> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/hello.es> Test/hello.pir
>> ashiva at ubuntu:~/EScript$
>> ashiva at ubuntu:~/EScript$
>> ashiva at ubuntu:~/EScript$ parrot Test/hello.pir
>> Could not find sub say
>> current instr.: '_block1000' pc 6 (Test/hello.pir:8) (Test/hello.es:1)
>> ashiva at ubuntu:~/EScript$
>>
>>
>> Can anyone please tell me what's wrong in my steps ?
>>
>> Please help.
>>
>> Thanks a lot, in advance.
>>
>> With Best Regards,
>> Ashiva
>>
>> Thanks & Regards,*
>> Ashraya S Shiva*
>>
>>
>> On Wed, Jul 24, 2013 at 5:38 PM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>
>>> Hi All,
>>>
>>> I am trying to run a simple factorial program using parrot inside my C
>>> code.
>>>
>>> This is from the embed_new.pod tutorial.
>>>
>>> This line in the main function seems to be giving me some errors :
>>>
>>> Parrot_api_load_bytecode_file(interp, "foo.pbc", &pf)
>>>
>>>
>>> ashiva at ubuntu:~/Parrot/rakudo/Test$ gcc factorial.c `parrot_config
>>> embed-cflags` `parrot_config embed-ldflags`
>>> factorial.c: In function ‘main’:
>>> factorial.c:65:5: warning: passing argument 2 of
>>> ‘Parrot_api_load_bytecode_file’ from incompatible pointer type [enabled by
>>> default]
>>> In file included from factorial.c:2:0:
>>> ../parrot/include/parrot/api.h:324:12: note: expected ‘Parrot_String’
>>> but argument is of type ‘char *’
>>> ashiva at ubuntu:~/Parrot/rakudo/Test$
>>>
>>> Can anyone please suggest what I can possibly do to avoid these errors
>>> and run the pbc ?
>>>
>>> Thanks & Regards,
>>> Ashraya
>>>
>>>
>>> Thanks & Regards,*
>>> Ashraya S Shiva*
>>>
>>>
>>> On Wed, Jul 24, 2013 at 12:23 AM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>
>>>> Oh ok.. Thanks for the clarification, Will.
>>>>
>>>> Thank you all, for your patience. :)
>>>>
>>>> Thanks & Regards,*
>>>> Ashraya S Shiva*
>>>>
>>>>
>>>> On Wed, Jul 24, 2013 at 12:12 AM, Will Coleda <will at coleda.com> wrote:
>>>>
>>>>> FYI, I'm the partcl developer.
>>>>>
>>>>> Some notes about the status of partcl on parrot:
>>>>>
>>>>> https://github.com/partcl/partcl is the old, PIR based version - this
>>>>> version was more complete, written in PIR & C, but it is not even being
>>>>> tested regularly to insure that changes in parrot don't break it, as
>>>>> previous breaking changes are still unresolved.
>>>>>
>>>>> https://github.com/partcl/partcl-nqp is newer, and is targeting the
>>>>> nqp-rx that ships with parrot, which is, so far as I know, no longer
>>>>> maintained - a snapshot is bundled in with parrot.
>>>>>
>>>>> partcl-nqp  has a branch, nqp2, which is in the middle of trying to
>>>>> target the standalone nqp, which is being maintained. However, this is a
>>>>> work in progress, and I'm not sure the branch even compiles at this point.
>>>>> The goal is to 1) make this work with the new standalone NQP, and then to
>>>>> get this version as functional as the PIR version once was. But it's not an
>>>>> actively developed project.
>>>>>
>>>>> So, it looks like you're using the first version... and yes, I can
>>>>> reproduce your problem with my installed parrot (5.5.0-devel)
>>>>>
>>>>> I haven't done a bisect, but it looks like this file (Tcl::Glob) was
>>>>> installed as part of parrot's 5.0.0-devel branch, but isn't as of 5.5.0
>>>>>
>>>>> So, partcl on PIR is extra broken until that's fixed, or you could try
>>>>> with an older parrot version.
>>>>>
>>>>> Apologies.
>>>>>
>>>>> On Tue, Jul 23, 2013 at 2:18 PM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>>>
>>>>>> One more thing.. I am trying to compile TCL code here too..
>>>>>>
>>>>>> But it doesn't seem to work :
>>>>>>
>>>>>> ashiva at ubuntu:~/Parrot/rakudo/partcl$ ../parrot/parrot tcl.pbc -e
>>>>>> "puts {hello world}"
>>>>>> "load_bytecode" couldn't find file 'Tcl/Glob.pir'
>>>>>> current instr.: 'prepare_lib' pc 27748 (runtime/builtin/dict.pir:102)
>>>>>> called from Sub '_main' pc 0 (src/tclsh.pir:39)
>>>>>> called from Sub '_main' pc 3 (src/tclsh.pir:42)
>>>>>> ashiva at ubuntu:~/Parrot/rakudo/partcl$
>>>>>>
>>>>>>
>>>>>> I read in a conversation thread that this is working.. But I am not
>>>>>> able to understand where I am going wrong.
>>>>>>
>>>>>> Please help.
>>>>>>
>>>>>> Thanks a lot,
>>>>>> Ashraya
>>>>>>
>>>>>> Thanks & Regards,*
>>>>>> Ashraya S Shiva*
>>>>>>
>>>>>>
>>>>>> On Tue, Jul 23, 2013 at 9:54 PM, Will Coleda <will at coleda.com> wrote:
>>>>>>
>>>>>>> It sounds like you're trying to compile C code with parrot - Parrot
>>>>>>> is a compiler for the languages PIR and PASM, and provides an interpreter
>>>>>>> to run PBC (parrot bytecode).
>>>>>>>
>>>>>>> You can compile C code that interoperates with parrot (using the
>>>>>>> embed/extend interface), but you cannot use parrot to compile and run C
>>>>>>> code by itself. For that, you'd use a tool like GCC.
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jul 23, 2013 at 11:58 AM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Hello Duke,
>>>>>>>>
>>>>>>>> Let me rephrase my question.
>>>>>>>>
>>>>>>>> For example, I write a simple perl file, hello.pl :
>>>>>>>> #!/usr/bin/perl
>>>>>>>> print "Hello World"
>>>>>>>>
>>>>>>>> To compile this, I use :  parrot perl6.pbc hello.pl
>>>>>>>>
>>>>>>>> The output is : Hello World
>>>>>>>>
>>>>>>>> Similarly, if I have a C file, hello.c :
>>>>>>>>
>>>>>>>> #include<stdio.h>
>>>>>>>>
>>>>>>>> int main()
>>>>>>>> {
>>>>>>>>     printf("Hello World\n");
>>>>>>>>     return 0;
>>>>>>>> }
>>>>>>>>
>>>>>>>> How would I compile this to get the output?
>>>>>>>>
>>>>>>>> Note : I downloaded the c99 package for parrot from github but I
>>>>>>>> could not get this installed.
>>>>>>>>
>>>>>>>> Thanks & Regards,*
>>>>>>>> Ashraya S Shiva*
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jul 23, 2013 at 7:23 PM, Jonathan "Duke" Leto <
>>>>>>>> jonathan at leto.net> wrote:
>>>>>>>>
>>>>>>>>> Howdy Ashraya,
>>>>>>>>>
>>>>>>>>> I believe nobody is answering you because they don't quite
>>>>>>>>> understand
>>>>>>>>> what you mean.
>>>>>>>>>
>>>>>>>>> Could you ask your question another way, and give some more
>>>>>>>>> background
>>>>>>>>> about what you are trying to do?
>>>>>>>>>
>>>>>>>>> Duke
>>>>>>>>>
>>>>>>>>> On Sun, Jul 21, 2013 at 10:51 PM, Ashraya <
>>>>>>>>> theemeraldsoul at gmail.com> wrote:
>>>>>>>>> > A gentle reminder.. Please reply. How to convert a C code into
>>>>>>>>> PIR code ?
>>>>>>>>> >
>>>>>>>>> > Thanks & Regards,
>>>>>>>>> > Ashraya S Shiva
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > On Wed, Jul 17, 2013 at 4:30 PM, Ashraya <
>>>>>>>>> theemeraldsoul at gmail.com> wrote:
>>>>>>>>> >>
>>>>>>>>> >> Hello Duke,
>>>>>>>>> >>
>>>>>>>>> >> I am trying one of the examples in the .pod you have given :
>>>>>>>>> >>
>>>>>>>>> >>   /* foo.c */
>>>>>>>>> >>
>>>>>>>>> >>   /* specify the function prototype */
>>>>>>>>> >>   #ifdef __WIN32
>>>>>>>>> >>   __declspec(dllexport) void foo(void);
>>>>>>>>> >>   #else
>>>>>>>>> >>   void foo(void);
>>>>>>>>> >>   #endif
>>>>>>>>> >>
>>>>>>>>> >>   void foo(void) {
>>>>>>>>> >>     printf("Hello Parrot!\n");
>>>>>>>>> >>   }
>>>>>>>>> >>
>>>>>>>>> >> Then, after having compiled the file as a shared library, the
>>>>>>>>> PIR code
>>>>>>>>> >> looks like this:
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >> Here, how do I compile the .c file to produce a .pir file ??
>>>>>>>>> >>
>>>>>>>>> >> Thanks,
>>>>>>>>> >> Ashiva
>>>>>>>>> >>
>>>>>>>>> >> Thanks & Regards,
>>>>>>>>> >> Ashraya S Shiva
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >> On Wed, Jul 17, 2013 at 2:08 AM, Jonathan "Duke" Leto <
>>>>>>>>> jonathan at leto.net>
>>>>>>>>> >> wrote:
>>>>>>>>> >>>
>>>>>>>>> >>> Howdy,
>>>>>>>>> >>>
>>>>>>>>> >>> You can embed Parrot inside of a C or C++ application. It can
>>>>>>>>> be any
>>>>>>>>> >>> language, actually (it works with FORTRAN), but we have the
>>>>>>>>> best docs
>>>>>>>>> >>> for C and C++. I have embedded Parrot inside of PostgreSQL
>>>>>>>>> (PL/Parrot
>>>>>>>>> >>> [0]), but that uses the old interface [1]. The new interface
>>>>>>>>> [2] is
>>>>>>>>> >>> infinitely better, but has not been heavily used. But it was
>>>>>>>>> designed
>>>>>>>>> >>> very well by Whiteknight, so it is high quality.
>>>>>>>>> >>>
>>>>>>>>> >>> You can also call out to C/C++ libraries from parrot via
>>>>>>>>> "dlopen" and
>>>>>>>>> >>> cousins via the Native Call Interface (NCI) substem of Parrot
>>>>>>>>> [3].
>>>>>>>>> >>>
>>>>>>>>> >>> Which of those things do you want to do, or possibly both?
>>>>>>>>> >>>
>>>>>>>>> >>> Duke
>>>>>>>>> >>>
>>>>>>>>> >>> [0] http://pl.parrot.org
>>>>>>>>> >>> [1]
>>>>>>>>> https://github.com/parrot/parrot/blob/master/docs/embed.pod
>>>>>>>>> >>> [2]
>>>>>>>>> https://github.com/parrot/parrot/blob/master/docs/embed_new.pod
>>>>>>>>> >>> [3]
>>>>>>>>> >>>
>>>>>>>>> https://github.com/parrot/parrot/blob/master/docs/pdds/draft/pdd16_native_call.pod
>>>>>>>>> >>>
>>>>>>>>> >>>
>>>>>>>>> >>> On Tue, Jul 16, 2013 at 4:58 AM, Ashraya S <
>>>>>>>>> theemeraldsoul at gmail.com>
>>>>>>>>> >>> wrote:
>>>>>>>>> >>> > Hello All,
>>>>>>>>> >>> >
>>>>>>>>> >>> > I switched to my favorite Ubuntu and parrot got installed
>>>>>>>>> like a charm.
>>>>>>>>> >>> >
>>>>>>>>> >>> > However, I would like to know how parrot supports C program
>>>>>>>>> >>> > compilation.
>>>>>>>>> >>> > Is there any tutorial I can find ? I did not get much
>>>>>>>>> support for C in
>>>>>>>>> >>> > google. Got loads for perl and pasm.
>>>>>>>>> >>> >
>>>>>>>>> >>> > Please advise.
>>>>>>>>> >>> >
>>>>>>>>> >>> > Thanks,
>>>>>>>>> >>> > Ashiva
>>>>>>>>> >>> >
>>>>>>>>> >>> >
>>>>>>>>> >>> > On Wednesday, July 10, 2013 7:30:29 PM UTC+5:30, Coke wrote:
>>>>>>>>> >>> >>
>>>>>>>>> >>> >> Do you have a C compiler installed?
>>>>>>>>> >>> >>
>>>>>>>>> >>> >>
>>>>>>>>> >>> >> On Wed, Jul 10, 2013 at 6:39 AM, Ashraya S <
>>>>>>>>> theemer... at gmail.com>
>>>>>>>>> >>> >> wrote:
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> Hi All,
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> I am new to parrot and i am trying to install this in
>>>>>>>>> windows 7.
>>>>>>>>> >>> >>> I have installed perl and minGW and have added these to my
>>>>>>>>> PATH as
>>>>>>>>> >>> >>> well.
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> But i get the following error :
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> C:\Users\ashiva\Documents\GitHub\parrot>perl Configure.pl
>>>>>>>>> >>> >>> Parrot Version 5.5.0 Configure 2.0
>>>>>>>>> >>> >>> Copyright (C) 2001-2013, Parrot Foundation.
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> Hello, I'm Configure. My job is to poke and prod your
>>>>>>>>> system to
>>>>>>>>> >>> >>> figure
>>>>>>>>> >>> >>> out
>>>>>>>>> >>> >>> how to build Parrot. The process is completely automated,
>>>>>>>>> unless you
>>>>>>>>> >>> >>> passed in
>>>>>>>>> >>> >>> the `--ask' flag on the command line, in which case I'll
>>>>>>>>> prompt you
>>>>>>>>> >>> >>> for a
>>>>>>>>> >>> >>> few
>>>>>>>>> >>> >>> pieces of info.
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> Since you're running this program, you obviously have Perl
>>>>>>>>> 5--I'll be
>>>>>>>>> >>> >>> pulling
>>>>>>>>> >>> >>> some defaults from its configuration.
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> init::manifest -      Check
>>>>>>>>> >>> >>> MANIFEST.....................................done.
>>>>>>>>> >>> >>> init::defaults -      Set Configure's default
>>>>>>>>> >>> >>> values.....................done.
>>>>>>>>> >>> >>> init::install -       Set up installation
>>>>>>>>> >>> >>> paths..........................done.
>>>>>>>>> >>> >>> init::hints -         Load platform and local hints
>>>>>>>>> >>> >>> files................done.
>>>>>>>>> >>> >>> inter::progs -        Determine what C compiler and linker
>>>>>>>>> to
>>>>>>>>> >>> >>> use...Compilation
>>>>>>>>> >>> >>> failed with 'gcc'
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> C:\Users\ashiva\Documents\GitHub\parrot>
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> Please help me resolve this problem.
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> Thanks a lot, in advance.
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> --
>>>>>>>>> >>> >>> Ashiva
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>> _______________________________________________
>>>>>>>>> >>> >>> http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>>>> >>> >>>
>>>>>>>>> >>> >>
>>>>>>>>> >>> >>
>>>>>>>>> >>> >>
>>>>>>>>> >>> >> --
>>>>>>>>> >>> >> Will "Coke" Coleda
>>>>>>>>> >>> >
>>>>>>>>> >>> >
>>>>>>>>> >>> > _______________________________________________
>>>>>>>>> >>> > http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>>>> >>> >
>>>>>>>>> >>>
>>>>>>>>> >>>
>>>>>>>>> >>>
>>>>>>>>> >>> --
>>>>>>>>> >>> Jonathan "Duke" Leto <jonathan at leto.net>
>>>>>>>>> >>> Leto Labs LLC http://letolabs.com
>>>>>>>>> >>> 209.691.DUKE http://duke.leto.net
>>>>>>>>> >>> @dukeleto
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Jonathan "Duke" Leto <jonathan at leto.net>
>>>>>>>>> Leto Labs LLC http://letolabs.com
>>>>>>>>> 209.691.DUKE http://duke.leto.net
>>>>>>>>> @dukeleto
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Will "Coke" Coleda
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Will "Coke" Coleda
>>>>>
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.parrot.org/pipermail/parrot-dev/attachments/20130806/28de9e75/attachment-0001.html>


More information about the parrot-dev mailing list