LDraw.org Discussion Forums

Full Version: Writing a parser
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I'm starting to write my own parser that will convert an MPD file to JSON format.

Are the FILE, Name:, Author:, !LICENSE, ROTATION properties case-sensitive? Will they always be the same case as I typed them or should I ignore case?

Thanks.
Is good manner for parser to ignore case sensitive. This simplify your coding and open your world on a whole new opportunities.
(2020-02-20, 22:36)Michael Horvath Wrote: [ -> ]I'm starting to write my own parser that will convert an MPD file to JSON format.

Are the FILE, Name:, Author:, !LICENSE, ROTATION properties case-sensitive? Will they always be the same case or should I ignore case?

Thanks.

For METAs, per the spec:
"In a META command, a keyword follows the line type in the line. The keyword must be in all caps"

So I'd say that, yes, these commands are case-sensitive.

filenames, however, are not.
(2020-02-20, 22:57)Orion Pobursky Wrote: [ -> ]For METAs, per the spec:
"In a META command, a keyword follows the line type in the line. The keyword must be in all caps"

So I'd say that, yes, these commands are case-sensitive.

filenames, however, are not.

Are "Name:" and "Author:" META commands or some other type of command?

[edit]

Never mind. I see them listed in the docs. But you might want to update the "The keyword must be in all caps" bit since it's not always true.
(2020-02-20, 23:07)Michael Horvath Wrote: [ -> ]you might want to update the "The keyword must be in all caps" bit since it's not always true.

Name: and Author: are the only exceptions for backwards compatibility and to prevent recycling the entire library. You can consider them case-sensitive as well.
Also, what is the correct title for the "Unofficial Model" line? I have been calling it "blurb" because I don't know what to call it.
(2020-02-21, 3:02)Michael Horvath Wrote: [ -> ]Also, what is the correct title for the "Unofficial Model" line? I have been calling it "blurb" because I don't know what to call it.

That meta is documented here:
https://www.ldraw.org/article/218.html#filetype

This is another tricky one because the <type> is case-insensitive (except for library files which have a more restrictive guideline). I didnt know that until I just read it in the spec.
(2020-02-21, 4:04)Orion Pobursky Wrote: [ -> ]That meta is documented here:
https://www.ldraw.org/article/218.html#filetype

This is another tricky one because the <type> is case-insensitive (except for library files which have a more restrictive guideline). I didnt know that until I just read it in the spec.

Okay, thanks. Does this mean all MOCs should use "Unofficial Model"?
(2020-02-20, 22:36)Michael Horvath Wrote: [ -> ]I'm starting to write my own parser that will convert an MPD file to JSON format.

Are the FILE, Name:, Author:, !LICENSE, ROTATION properties case-sensitive? Will they always be the same case as I typed them or should I ignore case?

Thanks.

There are some old files, either distributed with the AIOI or in OMR (can't remember where) where "0 file " is in lower case.
If you ignore the case while detecting file headers, then you will face trouble with headers, such as:

Code:
0 FILE File_cabinet.ldr
0 File cabinet for Miniland Figures
0 Name: File_cabinet.ldr
...

My proposed solution for handling this is to:

1) Detect if there is any "0 FILE" statement. If such a statement exist, then only accept proper UPPER CASE 0 FILE statements
2) Otherwise, accept all "0 fILE" case insensitive statements as if they were "0 FILE" statements.
(2020-02-21, 11:07)Lasse Deleuran Wrote: [ -> ]My proposed solution for handling this is to:

1) Detect if there is any "0 FILE" statement. If such a statement exist, then only accept proper UPPER CASE 0 FILE statements
2) Otherwise, accept all "0 fILE" case insensitive statements as if they were "0 FILE" statements.

Since there is no "DESCRIPTION" meta tag, I am interpreting the first commented line without any recognized meta tag as the model description. This does not eliminate every possible issue however.
I forgot to post a link after I wrote this tool:

https://github.com/mjhorvath/Datsville/t...s/mpd2json

It parses an MPD model and outputs a JSON representation of it. I then input the JSON file into several other tools I created to do different stuff.
(2021-04-21, 3:18)Michael Horvath Wrote: [ -> ]I forgot to post a link after I wrote this tool:

https://github.com/mjhorvath/Datsville/t...s/mpd2json

It parses an MPD model and outputs a JSON representation of it. I then input the JSON file into several other tools I created to do stuff.

Link is not working
(2021-04-21, 6:40)Gerald Lasser Wrote: [ -> ]Link is not working

Thanks, I fixed the issue.