I am helping my nephew for his C lab homework, it is a string manipulation assignment and applying Wang’s algorithm.
Here is the BNF representation for the input.
<s> ::= <l> # <r>
<l> ::= <list>| ε
<r> ::= <list>| ε
<list> ::= <f>|<f> , <list>
<f> ::= <letter>| - <f>| (<f><op><f>)
<op> ::= & | | | >
<letter> ::= A |... | Z
What is the best practice to handle and parse this kind of input in C? How can I parse this structure without using struct? Thanks in advance.
The most straightforward approach is to make every rule (or “production”) a function. This is called a “recursive descent” parser.
Write two routine that will peek at and get the next character as well.
This will give you some code that looks something like this (in pseudocode):
and so forth, for each rule.
The general idea: