Writing a scanner for Jzero
In this section, we will build a scanner for Jzero, our subset of the Java language. This extends the previous simple2
example to a realistic language size and adds column information, as well as additional lexical attributes for literal constants. The big change is the introduction of many regular expressions for more complex patterns than what we've seen previously. The entire Java language is recognized, but a significant fraction of Java categories cause executions to terminate with an error so that our grammar in the next chapter, along with the rest of the compiler, does not have to consider them.
The Jzero flex specification
Compared to the previous examples, a real programming language lex
specification will have a lot more, and more complicated, regular expressions. The following file is called javalex.l
and it will be presented in several pieces.
The beginning of javalex.l
includes the header and the regular expressions for comments...