Multiple changes:
- Add the book and a few first pages - Add the code generator
This commit is contained in:
187
lepiter/98eic2i50ocb0va6cfou37q6u.bak
Normal file
187
lepiter/98eic2i50ocb0va6cfou37q6u.bak
Normal file
@@ -0,0 +1,187 @@
|
||||
{
|
||||
"__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"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user