187 lines
4.7 KiB
Plaintext
187 lines
4.7 KiB
Plaintext
{
|
||
"__schema" : "4.1",
|
||
"__type" : "page",
|
||
"children" : {
|
||
"__type" : "snippets",
|
||
"items" : [
|
||
{
|
||
"__type" : "textSnippet",
|
||
"children" : {
|
||
"__type" : "snippets",
|
||
"items" : [ ]
|
||
},
|
||
"createEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"createTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:43:49.615762+02:00"
|
||
}
|
||
},
|
||
"editEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"editTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:50:20.524028+02:00"
|
||
}
|
||
},
|
||
"uid" : {
|
||
"__type" : "uid",
|
||
"uidString" : "sISlwzyZDQCZunK6Dqn2mw=="
|
||
},
|
||
"paragraphStyle" : {
|
||
"__type" : "textStyle"
|
||
},
|
||
"string" : "We’re going to start the process of integrating our language by making GT understand its syntax. To do that, we are going to write a parser."
|
||
},
|
||
{
|
||
"__type" : "textSnippet",
|
||
"children" : {
|
||
"__type" : "snippets",
|
||
"items" : [ ]
|
||
},
|
||
"createEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"createTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:50:22.703511+02:00"
|
||
}
|
||
},
|
||
"editEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"editTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:52:10.981298+02:00"
|
||
}
|
||
},
|
||
"uid" : {
|
||
"__type" : "uid",
|
||
"uidString" : "mZWIVj2ZDQCZ5a/iDqn2mw=="
|
||
},
|
||
"paragraphStyle" : {
|
||
"__type" : "textStyle"
|
||
},
|
||
"string" : "The prospect of riting a parser manually most likely elicits two responses from you: “this is going to be fun” or “what a nightmare”. Usually I fall into the first category, but depending on the complexity of the language’s grammar, I might also feel a little bit of the second option."
|
||
},
|
||
{
|
||
"__type" : "textSnippet",
|
||
"children" : {
|
||
"__type" : "snippets",
|
||
"items" : [ ]
|
||
},
|
||
"createEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"createTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:52:13.23472+02:00"
|
||
}
|
||
},
|
||
"editEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"editTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:57:02.826968+02:00"
|
||
}
|
||
},
|
||
"uid" : {
|
||
"__type" : "uid",
|
||
"uidString" : "gxItXT2ZDQCZ5wrNDqn2mw=="
|
||
},
|
||
"paragraphStyle" : {
|
||
"__type" : "textStyle"
|
||
},
|
||
"string" : "Luckily, we don’t have to bother with any of the manual labor required in writing a parser by hand. We have [SmaCC](http://www.refactoryworkers.com/SmaCC.html), a powerful version of the YACC trope of parser generators. With it, we can generate a parser for our language with relative ease, whether we have a grammar at hand or not."
|
||
},
|
||
{
|
||
"__type" : "textSnippet",
|
||
"children" : {
|
||
"__type" : "snippets",
|
||
"items" : [ ]
|
||
},
|
||
"createEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"createTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:57:08.353695+02:00"
|
||
}
|
||
},
|
||
"editEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"editTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:57:41.124314+02:00"
|
||
}
|
||
},
|
||
"uid" : {
|
||
"__type" : "uid",
|
||
"uidString" : "fDmIbj2ZDQCZ6ou1Dqn2mw=="
|
||
},
|
||
"paragraphStyle" : {
|
||
"__type" : "textStyle"
|
||
},
|
||
"string" : "You might also want to take a look at the esecti{{gtPage:How to parse sources in different languages|db=2j9m7db2i4oz116bexd7wbdxo}}"
|
||
}
|
||
]
|
||
},
|
||
"createEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"createTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:09:16.687265+02:00"
|
||
}
|
||
},
|
||
"editEmail" : {
|
||
"__type" : "email",
|
||
"emailString" : "<unknown>"
|
||
},
|
||
"editTime" : {
|
||
"__type" : "time",
|
||
"time" : {
|
||
"__type" : "dateAndTime",
|
||
"dateAndTimeString" : "2022-04-17T17:09:16.687265+02:00"
|
||
}
|
||
},
|
||
"pageType" : {
|
||
"__type" : "namedPage",
|
||
"title" : "Building a parser"
|
||
},
|
||
"uid" : {
|
||
"__type" : "uuid",
|
||
"uuid" : "56dba4c3-3c99-0d00-99b9-64b00ea9f69b"
|
||
}
|
||
} |