On Friday, November 2, 2018 at 6:44:27 PM UTC-4, Michael Powell wrote:
>
>
>
> On Wednesday, October 31, 2018 at 1:17:46 PM UTC-4, Adam Cozzette wrote:
>>
>> I think that specification has suffered a little bit of neglect (sorry 
>> about that), because in practice our C++ parser is really the de facto 
>> standard and we have not recently made an effort to go through and make 
>> sure the official spec matches it perfectly. My reading of that string 
>> (/[^\0\n\\]/) is that it's a regular expression saying "any character other 
>> than null, newline, or backslash." But in general I would say the best bet 
>> is to resolve ambiguities by looking at what the C++ parser does.
>>
>
> I have a bit of an AST problem, I wonder if you have some C++ insight to 
> help sort it out. If I translate the grammar on its face to an AST via the 
> parser rules, I end up with a MessageBody that must be forward declared, in 
> C++ parlance, for use in both Group and Message. Does that sound about 
> right? There are probably ways around that, such as introducing AST 
> pointers, things of this nature; a bit beyond the scope of this discussion, 
> but, assuming Boost Spirit would be able to handle that? (TBD via 
> Boost/Spirit forums.)
>

FYI, https://wandbox.org/permlink/WeRqkmDR93Wqu8BI
 

> Provided my internal AST works, that's really all I need, to navigate it 
> and generate code given that.
>
> By the way, have you considered just reusing the C++ parser that's 
>> included in protoc? You can call protoc with the --descriptor_set_out flag 
>> to have it parse your .proto file and produce a serialized 
>> FileDescriptorSet proto as output. Then at that point it's easy to parse 
>> the descriptors using just about any language we support, and that should 
>> give you all the information you need, without the need for a new .proto 
>> file parser.
>>
>  
> I'm considering this as an approach, but I am a bit confused as  to the 
> starting point. It seems like it all starts "compiling" the proto .protos 
> into the plugin implementation language, i.e. C++? Or perhaps I am missing 
> something? Also, do I need to have the source aligned with the protoc 
> version also readily available? i.e. with requisite libs, includes, etc? 
> Seems like possibly yes.
>
> Getting past the sort of "getting started" baby steps, it seems 
> straightforward enough to receive the compiler request, navigate the protoc 
> metadata API, and return a response. It's the getting past part that I'm 
> not exactly certain what the starting point really is.
>
> On Wed, Oct 31, 2018 at 9:23 AM Michael Powell <mwpow...@gmail.com> wrote:
>>
>>> On Wed, Oct 31, 2018 at 12:22 PM Michael Powell <mwpow...@gmail.com> 
>>> wrote:
>>> >
>>> > Concerning Constant, literally from the v2 spec:
>>>
>>> Rather, Syntax section, excuse me...
>>>
>>> > syntax = "syntax" "=" quote "proto2" quote ";"
>>> >
>>> > Do I read that correctly you can expect either 'proto2' or "proto2",
>>> > but never 'proto2" nor "proto2' ?
>>> >
>>> > If accurate, that just seems to me to be lazy spec authorship...
>>> >
>>> > Thanks!
>>> > On Wed, Oct 31, 2018 at 12:07 PM Michael Powell <mwpow...@gmail.com> 
>>> wrote:
>>> > >
>>> > > Hello,
>>> > >
>>> > > I am writing a parser for the Proto language specification starting
>>> > > with v2. I need a little help interpreting one of the lines if you
>>> > > please:
>>> > >
>>> > > In the "String literals" section, what does this mean:
>>> > >
>>> > > charValue = hexEscape | octEscape | charEscape | /[^\0\n\\]/
>>> > >
>>> > > Specifically, the trailing list of character soup? I want to say that
>>> > > there are escaped characters in the sequence? Or am I to take that
>>> > > string literally? Or notwithstanding the enclosing forward slashes?
>>> > >
>>> > > Thanks much in advance!
>>> > >
>>> > > Best regards,
>>> > >
>>> > > Michael Powell
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Protocol Buffers" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to protobuf+u...@googlegroups.com.
>>> To post to this group, send email to prot...@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/protobuf.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to