Question: 4. When describing the structure of a programming language, we often use the formalisms of regular languages (to represent legal tokens) and context-free languages
4. When describing the structure of a programming language, we often use the formalisms of regular languages (to represent legal tokens) and context-free languages (to represent legal structures built up of these tokens). However, the formal machines that recognize these language families (finite-state automata and push-down automata) aren't imme- diately useful for scanning and parsing, respectively. Answer the following questions concerning how these machines are adapted for use in a compiler: (a) (2 points) To start off, the automata are recognizers: they simply say whether a string is in the language or not. What additional actions are needed for the tasks of scanning and parsing? (b) (2 points). A program usually consists of more than one token, and yet a finite-state au- tomaton only recognizes a single string. How can a compiler use a finite state automaton? (c) (2 points) Tokens are often not self-delimiting. For example, the string a 2i could be a single identifier token or could be three tokens (the identifier a followed by the number 2 followed by the identifier i). How is this ambiguity resolved in a compiler?
Step by Step Solution
There are 3 Steps involved in it
a Additional actions needed for scanning and parsing For the task of scanning additional actions are required to identify and categorize tokens within ... View full answer
Get step-by-step solutions from verified subject matter experts
