Beginner Topic 15 of 50 Languages & Compilers
Lexical Analysis
Splitting source text into tokens.
How it works
Lexical analysis, or scanning, is the first compiler phase: it reads the source character stream and groups it into tokens such as identifiers, keywords, numbers, string literals, operators and punctuation, while discarding whitespace and comments. Token patterns are specified with regular expressions and implemented by deterministic finite automata, usually generated by tools such as Lex and Flex. The lexer applies the longest-match rule and prioritizes keywords over identifiers, and records positions for error messages.
Step-by-step walkthrough
- The source is a stream of characters, x = 3 + 4.
- The lexer groups them into tokens: ID(x) EQ NUM(3) PLUS NUM(4).
- Whitespace and comments are dropped.
- Tokens feed the parser.
- Regular expressions define each token type.
Where it is used
Compilers, interpreters, syntax highlighters, linters, formatters and query engines tokenize their input this way.
Common pitfall
Mistakes include handling nested comments, string escapes, unterminated literals, numeric formats and Unicode identifiers poorly. Ambiguities such as the greater-than sign versus a template bracket, or regular expression literals in JavaScript, need context. Report line and column in errors. Keep the lexer simple and let the parser deal with structure.
Where it fits in the course
Lexical Analysis is topic 15 of 50 in Languages & Compilers, rated Beginner. It follows Virtual Machines. The next topic is Parsing.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Languages & Compilers quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Languages & Compilers quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Lexical Analysis?
Where do people use Lexical Analysis?
What is the most common mistake with Lexical Analysis?
What should I learn before this topic?
How can I practice it?
Is Lexical Analysis hard to learn?
How long does it take to learn Lexical Analysis?
Which topics are related to Lexical Analysis?
What should I study after Lexical Analysis?
Related topics
- Virtual Machines (Languages & Compilers)
- Parsing (Languages & Compilers)
- Bytecode (Languages & Compilers)
- Abstract Syntax Trees (Languages & Compilers)
- Fourier Analysis of Images (Graphics, Vision & Media)
- Amortized Analysis (Algorithms)
- Performance Scaling Analysis (Concurrency & Parallelism)