Hi,
Would it be possible to extract a p(0) parser from it?

Yes, a p0 parser would be very easy to create.

- henrik

On Dec 27, 2010, at 11:03 PM, Luke Kanies wrote:

This xtext parser - I assume it's something you wrote for syntax validation in Eclipse...?


I haven't been able to spend much time on p(0), but it's getting enough attention that I'm pushing toward it again. I didn't really mean to announce anything, but enough people noticed my repo that I figured I'd mention it, and enough people have responded to the mention that I'm now scrambling a bit to figure out what and how to do it.

On Dec 21, 2010, at 1:50 PM, Henrik Lindberg wrote:

The corresponding definition for "type" from the puppet grammar is called "classname" and it is what is used to specify a resource "type". Written in (E)BNF the rules for the different types of names/ identifiers/references would be:

classname
  : NAME
  | CLASS_NAME
  | CLASS
  ;

NAME : (DEC | LOWER_ALPHA_CHAR) WORD_CHAR* ;
CLASS_NAME : (LOWER_ALPHA_CHAR WORD_CHAR*)? (NS LOWER_ALPHA_CHAR WORD_CHAR*)+;
CLASS_REF: (NS? UPPER_ALPHA_CHAR WORD_CHAR*)+ ;
DEC : '0'..'9' ;
LOWER_ALPHA_CHAR : 'a'..'z' ;
UPPER_ALPHA_CHAR : 'A'..'Z' ;
WORD_CHAR : (DEC | ALPHA_CHARACTER | UNDERSCORE) ;
ALPHA_CHARACTER : LOWER_ALPHA_CHAR | UPPER_ALPHA_CHAR ;
UNDERSCORE : '_' ;
NS : "::" ;
CLASS : "class" ;

This is what I am using in the Xtext based parser for .pp (and I double checked against the lexer/parser rules, but may have misunderstood something).


- henrik

On Dec 21, 2010, at 12:38 AM, Luke Kanies wrote:

Hi Kenn,

The BNF is definitely not complete - partially because I couldn't quite figure out how complete I could even make it. Or rather, I didn't take the time to do so. Can BNF include regexes?

In general, it should perfectly mirror the current state of Puppet's parser and lexer - that is, <type> should be defined as Puppet does, if at all possible[1]. I'd like to have it fleshed out with all of the regexes, and I'd much appreciate help in doing so.

1 - https://github.com/lak/puppet/blob/master/lib/puppet/parser/lexer.rb

On Dec 20, 2010, at 2:28 PM, Kenn Hussey wrote:

After looking at the BNF in more detail, I have a couple of questions:

1. Do you plan to provide definitions (regular expressions?) for the
<name>, <uc_name>, <naked_string>, and <quoted_string> elements?

2. Shouldn't the definition for <parameters> be recursive, e.g.,
<parameter> "," <parameters> instead of <parameter> "," <parameter>?
And if so, is <optional_comma> really needed?

3. Any further thoughts on what a suitable regular expression for
<type> might be?

Thanks,

Kenn


On Dec 20, 1:52 pm, Kenn Hussey <[email protected]> wrote:
Luke,

From the looks of things, this is quite relevant to the Puppet- related work we're doing at Cloudsmith (see Henrik Lindberg's recent post to the users group). We'd definitely like to help out, especially on the
Java front (most of our work is currently in Java). We've started
working with the BNF definition and will report back as soon as we
have something interesting to share.

Cheers,

Kenn

On Dec 2, 1:18 am, Luke Kanies <[email protected]> wrote:



Hi all,

Some have already noticed this, but I've begun a project to define and produce a minimal data-focused subset of Puppet's language, just like JSON is a data-focused subset of Javascript. I had initially called it MPF (for Minimal Puppet Format), but we've decided to use our internal name for it - p(0), or pzero:

https://github.com/lak/pzero

The only thing there so far is Jordan Sissel's work getting a Ragel parser to work, along with my attempt at a BNF definition. My hope is to have implementations in many languages:

* Ruby
* Python
* C
* Javascript
* Java

And I'd like each of these to be able to both parse and generate the format.

Jesse Wolfe first came up with this idea, and our goal is to have a language that any project or tool can use to describe desired system state. I'm especially interested in having tools for converting to and from existing data formats, like the rpm and dpkg manifest formats.

So anyway, if this is interesting to you, I'd love help on it. We're still in the formative stages of what it is and what it would do, but we're pretty excited by the potential. One of the things we clearly need to develop is a list of example files that each implementation could test against.

--
Tradition is what you resort to when you don't have the time or the
money to do it right.       -- Kurt Herbert Alder
---------------------------------------------------------------------
Luke Kanies  -|-  http://puppetlabs.com -|-   +1(615)594-8199

--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en .



--
Opportunity is missed by most people because it is dressed in overalls
and looks like work.        -- Thomas A. Edison
---------------------------------------------------------------------
Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199




--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en .



--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en .


--
Somebody has to do something, and it's just incredibly pathetic that it
has to be us.       --Jerry Garcia
---------------------------------------------------------------------
Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199




--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en .

--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to