soulnafein
soulnafein

Reputation: 1068

Treetop grammar line continuation

I'm trying to create a grammar for a language like the following

someVariable = This is a string, I know it doesn't have double quotes
anotherString = This string has a continuation _
      this means I can write it on multiple line _
      like this
anotherVariable = "This string is surrounded by quotes"

What are the correct Treetop grammar rules that parse the previous code correctly?

I should be able to extract the following values for the three variables

Thank you

Upvotes: 0

Views: 145

Answers (1)

cliffordheath
cliffordheath

Reputation: 2606

If you define the sequence "_\n" as if it was a single white-space character, and ensure that you test for that before you accept an end-of-line, your VB-style line continuation should just drop out. In VB, the newline "\n" is not white-space per se, but is a distinct statement termination character. You probably also need to deal with carriage returns, depending on your input character processing rules. I would write the white-space rule like this:

rule white
  ( [ \t] / "_\n" "\r"? )+
end

Then your statement rule looks like this:

rule variable_assignment
  white* var:([[:alpha:]]+) white* "=" white* value:((white / !"\n" .)*) "\n"
end

and your top rule:

rule top
    variable_assignment*
end

Your language doesn't seem to have any more apparent structure than that.

Upvotes: 1

Related Questions