Bird
Raised Fist0
Compiler Designknowledge~20 mins

Tokens, patterns, and lexemes in Compiler Design - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Token Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding the relationship between tokens, patterns, and lexemes

Which of the following best describes the relationship between tokens, patterns, and lexemes in lexical analysis?

AA lexeme is a category defined by a pattern, and a token is the actual string matching that pattern.
BA pattern is the actual string, a lexeme is the category, and a token is the rule to match them.
CA token is a category defined by a pattern, and a lexeme is the actual string matching that pattern.
DTokens, patterns, and lexemes all mean the same thing and are interchangeable terms.
Attempts:
2 left
💡 Hint

Think about what each term represents in the scanning process.

📋 Factual
intermediate
2:00remaining
Identifying lexemes from source code

Given the source code snippet: int count = 42;, which of the following is NOT a lexeme?

A"number"
B"count"
C"="
D"int"
Attempts:
2 left
💡 Hint

Lexemes are actual substrings from the source code.

🔍 Analysis
advanced
2:00remaining
Determining the token sequence from a code snippet

Consider the code snippet: sum = a + b * 10;. Which sequence of tokens correctly represents this snippet?

Aidentifier, assignment_operator, identifier, plus_operator, identifier, multiply_operator, number, semicolon
Bkeyword, assignment_operator, identifier, plus_operator, identifier, multiply_operator, number, semicolon
Cidentifier, equals_sign, identifier, plus_sign, identifier, multiply_sign, number, semicolon
Didentifier, assignment_operator, identifier, plus_operator, identifier, multiply_operator, number
Attempts:
2 left
💡 Hint

Focus on the categories of tokens, not the exact characters.

❓ Comparison
advanced
2:00remaining
Comparing patterns for identifiers

Which of the following patterns correctly describes a typical identifier in many programming languages?

AContains only digits and special characters.
BStarts with a digit, followed by letters or underscores.
CStarts with a special character, followed by letters or digits.
DStarts with a letter or underscore, followed by any number of letters, digits, or underscores.
Attempts:
2 left
💡 Hint

Think about common rules for variable names.

❓ Reasoning
expert
2:00remaining
Effect of ambiguous patterns on lexical analysis

Suppose a lexical analyzer has two patterns: one for keywords (e.g., "if", "while") and one for identifiers (any letter followed by letters or digits). If the input is "if", what will the lexical analyzer output and why?

AIt outputs both tokens "keyword" and "identifier" for the same lexeme.
BIt outputs the keyword token "if" because keyword patterns have higher priority.
CIt raises an error due to ambiguity between keyword and identifier patterns.
DIt outputs an identifier token "if" because identifiers match any letter sequence.
Attempts:
2 left
💡 Hint

Consider how lexical analyzers resolve conflicts between overlapping patterns.

Practice

(1/5)
1. What is a token in compiler design?
easy
A. The exact sequence of characters in the source code
B. A category or label for a group of characters
C. A rule describing valid sequences of characters
D. A syntax error found during compilation

Solution

  1. Step 1: Understand the role of tokens

    Tokens act like words in a sentence, grouping characters into meaningful categories.
  2. Step 2: Differentiate tokens from lexemes and patterns

    Lexemes are the actual text, patterns are rules, tokens are the labels for those texts.
  3. Final Answer:

    A category or label for a group of characters -> Option B
  4. Quick Check:

    Token = label/category [OK]
Hint: Tokens are like word types, not the words themselves [OK]
Common Mistakes:
  • Confusing tokens with lexemes
  • Thinking tokens are the exact text
  • Mixing tokens with syntax errors
2. Which of the following correctly describes a pattern in lexical analysis?
easy
A. The exact characters matched in the source code
B. A syntax error detected during compilation
C. The output of the parser after syntax analysis
D. A rule or regular expression defining valid tokens

Solution

  1. Step 1: Define what a pattern is

    Patterns describe the rules or formats that valid tokens must follow, often using regular expressions.
  2. Step 2: Eliminate incorrect options

    Exact characters are lexemes, parser output is unrelated, syntax errors are not patterns.
  3. Final Answer:

    A rule or regular expression defining valid tokens -> Option D
  4. Quick Check:

    Pattern = rule for tokens [OK]
Hint: Patterns are rules, not actual text [OK]
Common Mistakes:
  • Confusing patterns with lexemes
  • Thinking patterns are output of parsing
  • Mixing patterns with errors
3. Given the source code snippet: int count = 10; Which of the following is a correct lexeme for the token identifier?
medium
A. count
B. =
C. 10
D. int

Solution

  1. Step 1: Identify the token 'identifier'

    An identifier token represents names like variables or functions.
  2. Step 2: Match lexemes to token types

    In the snippet, 'count' is the variable name, so it is the lexeme for the identifier token.
  3. Final Answer:

    count -> Option A
  4. Quick Check:

    Identifier lexeme = count [OK]
Hint: Identifiers are names, not keywords or symbols [OK]
Common Mistakes:
  • Choosing keywords like 'int' as identifiers
  • Selecting numbers or operators as identifiers
  • Confusing lexemes with token types
4. Identify the error in this tokenization process for the input var_1 = 25;: Tokens identified are var (identifier), _1 (identifier), = (assignment), 25 (number), ; (semicolon).
medium
A. The underscore and digit should be part of the same identifier token
B. The assignment operator should be tokenized as two separate tokens
C. The number 25 should be split into two tokens '2' and '5'
D. The semicolon should not be a token

Solution

  1. Step 1: Understand identifier token rules

    Identifiers can include letters, digits, and underscores as one token, not split.
  2. Step 2: Analyze the given tokenization

    Splitting 'var_1' into 'var' and '_1' is incorrect; it should be one identifier token.
  3. Final Answer:

    The underscore and digit should be part of the same identifier token -> Option A
  4. Quick Check:

    Identifier tokens include underscores and digits [OK]
Hint: Keep underscores and digits inside one identifier token [OK]
Common Mistakes:
  • Splitting identifiers incorrectly
  • Misinterpreting assignment operator tokenization
  • Ignoring semicolon as a token
5. You want to design a lexical analyzer that recognizes tokens for integers and identifiers. Which pattern correctly matches an identifier but not an integer?
hard
A. [a-zA-Z0-9]+
B. [0-9]+
C. [a-zA-Z_][a-zA-Z0-9_]*
D. [0-9]*[a-zA-Z]+

Solution

  1. Step 1: Understand identifier and integer patterns

    Identifiers start with a letter or underscore, followed by letters, digits, or underscores. Integers are digits only.
  2. Step 2: Eliminate incorrect options

    A matches integers like '123'; B matches only integers; D fails to match identifiers ending in digits like 'var1'.
  3. Final Answer:

    [a-zA-Z_][a-zA-Z0-9_]* -> Option C
  4. Quick Check:

    Identifier pattern starts with letter/underscore [OK]
Hint: Identifiers start with letter/underscore, not digit [OK]
Common Mistakes:
  • Allowing digits as first character in identifiers
  • Confusing integer patterns with identifiers
  • Using patterns that match both integers and identifiers
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard