<<

Index

Symbols determinization of finite automaton, 163 2I-automaton, 416, 417 Earley parser, 358 ε-move, 130 elimination of copy rules, 68 A of nullable nonterminals, 67 Abstract syntax tree, 45, 394, 429 of repeated right parts in grammar rules, Acceptance 70 by empty stack, 202 of spontaneous moves, 143 with final state, 207 ELR(1) parser construction, 260 Accepting mode of pushdown machine, 208 pointerless, 294 Accessible with vector stack, 272 state, 124, 246 finite automaton complementation, 189 subsets, 144 finite automaton determinization, see A-condition for attribute evaluation, 455 powerset construction Acyclic attribute grammar, 440, 441 from grammar to nondeterministic push- Acyclicity test, 441 down automaton, 202 Acyclic LST definition, 185 from to deterministic Algol 60, 60 finite automaton, see Berry-Sethi algo- rithm Berry-Sethi from regular expression to deterministic algorithm, 161–163 finite parser, see Berry-Sethi parser parser, 172, 179 from regular expression to grammar, 82 bottom-up parser construction, see from unilinear grammar to regular expres- ELR(1) parser construction sion, 87 cleaning local recognizer construction, 152 of a finite automaton, 124 merge of kernel-equivalent m-states, 291 of a grammar, 39 minimization of finite deterministic au- composition of local automata, 154 tomaton, 125 conversion of translation grammar to post- normalization of a grammar fix form, 409 into Chomsky form, 72 from a regular into Greibach form, 79 expression construction, 158 into operator form, 74

© Springer Nature Switzerland AG 2019 487 S. Crespi Reghizzi et al., Formal Languages and Compilation, Texts in Computer Science, https://doi.org/10.1007/978-3-030-04879-2 488 Index

into position restricted form, 80 Arithmetic expression, 42, 43, 53, 56, 63, 65, into real-time form, 78 69, 103 one-sweep evaluator construction, 443 calculating machine, 453 operator precedence parallel parser infix, 404 costruction, 343 machine net, 235 operator precedence sequential parser parenthesis-free, 86 construction, 331 polish, 393 pilot graph construction, 252 syntax chart, 238 powerset construction, 145 Artificial language, 5 predictive parser construction Attribute, 428, 430 as DPDA, 311 inherited, see right attribute by recursive procedures, 313 left, see left attribute predictive pushdown transducer construc- lexical, see lexical attribute tion, 400 right, see right attribute reduction synthesized, see left attribute of a grammar, see cleaning of a gram- Attribute grammar, 429, 457 mar A-condition, 455 of an automaton, see cleaning of a finite acyclic, 440 automaton applications, 457 syntax tree construction, 367 definition, 435 top-down parser construction, see predic- L-condition, 450 tive parser construction multi-sweep, 446, 464 topological sorting, 440 one-sweep, 442, 443 transformation of grammar recursion Attribute subgrammar, 446 immediate , 76 Automaton non-immediate left recursion, 77 ambiguous, 137, 221 Alphabet, 8 clean, 124 unary, 92 configuration, 118 Alphabetic homomorphism, 97, 388 equivalent, 119 Alternative, 19, 34 finite, 120 Ambiguity, 52 finite deterministic, 122 conditional instruction, 60, 392, 396 for local language, 152 decision in r.e., 186 from regular expression, 147, 148, 150 degree, 54 generalized, 139 EBNF, 104 local, 152 inherent, 62, 147, 221 minimization, 126 in r.e., 170, 182 nondeterministic, 133 of automaton, 137, 221 product, 190 of bilateral recursion, 55 real-time, 212 of circular derivation, 395 to regular expression, 139 of concatenation, 58 two-way, 424 of regular expression, 22, 84, 165 unidirectional, 118 of translation, 395 with spontaneous moves, 135 of union, 56 Available variables, 483 source grammar, 396 Axiom, 33, 34 versus nondeterminism, 221 Ambiguity degree B of r.e., 170 Back-end compiler, 461 ANTLR, 324, 352 Base of macro-state, 252 Aperiodic language, 193 Berry, 161 Arden identity, 88 Berry-Sethi, 147, 161 Index 489

algorithm, 161–163 Codes and ambiguity, 58 parser, 172, 179 Coke-Younger-Kasami algorithm, 352 Berstel, 150, 386 Compaction of pilot, 290 Binary operator, 391 Compiler Block structure, 31 decomposition, 446 BMC, 139 language, 428 BNF grammar, 34, 277 Complement Boolean grammar, 109 automaton, 188 Bottom-up of language, 13 attribute evaluation, 455 of , 188 deterministic translation, 406 Completion in Earley parser, 356 parser with attribute evaluator, 453 Computation, 133, 206 syntax analysis, 231 label, 122, 133 Brzozowski and McCluskey, 139 length, 133 BS, see Berry-Sethi algorithm of nondeterministic automaton, 133 BSP, see Berry-Sethi parser of , 119 BuildTree (BT), 366 Concatenation, 9 of context-free languages, 51, 96 C of Dyck languages, 58 Cancellation rule of Dyck, 49 of languages, 12 Candidate, 243 Condensed skeleton tree, 45 identifier, 259 Conditional instruction, 60, 392, 396 Cardinality of language, 8 ambiguity, 60, 392, 396 Cartesian product of automata, 190 Configuration CF family, 84, 95, 99, 101, 209 of automaton, 118 closure properties, 51 of , 201, 206 Choice of a regular expression, 20 of Turing machine, 119 Chomsky Conflict hierarchy, 36, 105 convergence, 251 normal form, 36, 72 reduce-reduce, 251 Circular derivation, 40, 395 shift-reduce, 251 Clean automaton, 124, 471 Conjunctive grammar, 109 Cleaning Conservative approximation, 471 of a finite automaton, 124 Constant of a grammar, 39 folding, 483 Cleaveland, 109 propagation, 478, 481 Closing mark, 27 Context-dependent language, 105 Closure Context-free function, 243 deterministic, 215, 216 in Earley parser, 354 grammar of macro-state, 252 definition, 34 Closure properties from pushdown automaton, 210 of REG, 25 introduction, 32 of CF, 51, 95 translation, 389 of CF and REG, 95 Context-sensitive language, 105 of DET, 216 Control-flow graph, 467, 469 of input-driven L., 227 automaton, 469 under substitution, 99 language, 469 under translation, 426 Control instruction translation, 461 under transliteration, 99 Convergence conflict, 251, 253, 255 Code generation, 460 Convergent transitions, 253 490 Index

Copy-free normal form, 67 Double Greibach normal form, 80 Copy rule, 67 Double service lemma, 218 Correspondence between finite automaton Dyck and unilinear grammar, 137 cancellation rule, 49 Cross operation, 16 language, 49, 84, 96 concatenation, 58 D translation, 403 Dart, 306 Dynamic error, 460 Data-flow equations, 474, 479 liveness, 474 E reaching definitions, 479 Earley solution, 474 algorithm, 352, 357 Dead code, 483 closure, 354 Decidable language, 119 introductory example, 353 Decimal constant, 121, 123, 124, 135, 137 nonterminal shift, 356 Decision algorithm, 116 parser, 357 Decompiler, 388 completeness, 361 Decorated tree, 431, 433 completion algorithm, 357 Degree of operator, 391 computational complexity, 364 Dependence graph, 433, 438, 442 correctness, 361 of decorated tree, 433, 438 function BuildTree, 367 of semantic function, 438 grammar ambiguity, 372 Derivation, 37 grammar unambiguity, 373 circular, 40 nullable nonterminals, 369 EBNF, 103 optimization, 373 immediate, 21 syntax analysis algorithm, 358 left, 46 syntax tree construction, 366 of regular expression, 21 syntax tree construction complexity, right, 46 371 self-nesting, 91 terminal shift algorithm, 358 Deterministic vector, 357 finite automaton, 122 terminal shift, 355 language, 215, 216 vector, 357 unambiguity, 220 Early scanning, 277, 278 language families comparison, 346 EBNF grammar, 100, 233 pushdown automaton, 215 ambiguity, 104 subclasses, 221 derivation, 103 simple grammar, 223 translation, 405 Deterministic Finite Automaton (DFA), 122 Editing distance, 375 Deterministic Pushdown Automaton ELL(1) (DPDA), 215 condition, 286 Determinization of automaton, 142, 162, 163 direct, 306 DET family, 215, 216, 348 violation, 309 Dictionary, 8 parser Difference of languages, 13 direct construction, 305 Digrams, 150 step by step construction, 288 Directed Acyclic Graph (DAG), 178, 181 parsing, 282 Distance of strings, 375 PCFG, 298 Distinctly parenthesized grammar, 50, 223 violation remedy, 351 Distinguishability of states, 126 ELL(k) Document Type Definition (DTD), 228 condition, 323 Index 491

parser, 324 deterministic, 122 ELR(1) left-, 138 condition, 254 transducer, 421, 422 grammar, 349 opposite passes, 424 language, 349 with look-ahead, 425 parser transducer for BSP, 178 pointerless, 294 Finite-state family, 136 vector-stack, 271 Flex, 425 parser construction, 252 Floyd, 219 ELR(k) operator precedence languages, 335, 337 grammar, 349 Followers, see set of followers language, 349 Follow set, see set of followers relation with ELR(1), 349 , 6 Empty string, 10 Free monoid, 15 Encryption, 388 Front-end compiler, 461 End-mark in conditional instructions, 396 FSA, 120 Engelfriet, 446 Environment, 457 G Epsilon move, 130 General Equations of unilinear grammar, 87, 88 automaton, 117 Equivalence parser, 352 of finite automata, 123, 128 Generalized automaton, 139 of grammars Goal-oriented, see predictive generalized structural, 65 Grammar strong, 65 ambiguity, 53 weak, 64 from ambiguous r.e., 84 Equivalent regular expressions, 22 attribute, 429 Error BNF, 34, 277 dynamic, 374 Boolean, 109 objective, 374 Chomsky classification, 105 recovery, 376, 377 clean, 39 panic mode, 377 cleaning, 39 panic mode with token insertion, 378 conjunctive, 109 reporting, 376 context-free, 32 semantic, 374 context-sensitive, 105 state, 123 EBNF, 100, 233 static, 374 equivalent, 38 subjective, 374 errors, 39 syntactic, 374, 375 extended context-free, 100, 233 treatment, 373 homogeneous, 36, 77 type, 374 invertible, 69 Expansion of nonterminal, 66 left-linear, 85 Extended regular expression, 188, 191 linear, 84 External attribute, 436 marked BNF grammar rule, 236 non-left-recursive, 76 F normal form, 37, 65 Finals, 150 of regular language, 82 Finding a word in text, 134 of Van Wijngarten, 109 FIN family, 20 operator, 74 Finite parenthesized, 50, 223 automaton, 120 representations, 35 492 Index

right-linear, 85, 129 parser, 379 right-linearized, 239 Infinite ambiguity degree simple deterministic, 223, 346 of r.e., 170 strictly unilinear, 86 Infix target, 389 operator, 392 translation, 389, 399 to postfix translation, 404 type 0, 105 Inherent ambiguity, 62, 147, 221 type 1, 105 Inherited attribute, see right attribute type 2, 105 Initial type 3, 85, 105 of a string, 10 unilinear, 85 state uniqueness, 136 Graph Initials, see set of initials context-sensitive, 106 Input-driven dependence, 433 family, 227 local automaton, 152 language, 223, 225, 227 parser control-flow, 298 Instruction scheduling, 467 pilot, 252 Interference between variables, 476 program control-flow, 468 Intermediate reachability, 39 language, 461 sibling, 442 representation, 461, 467 state-transition, 120 Internal attribute, 436 syntax chart, 237 Interprocedural static analysis, 468 syntax tree, 43 Intersection Graphical computation for ELL of context-free and regular language, 213 guide set, 317 of context-free languages, 96 prospect set, 316 of regular languages, 188, 190 set of initials, 315 Intraprocedural static analysis, 468 Graphical method for ELL, 314 Inverse translation, 387 examples, 318 Invertible grammar, 69, 223 pilot look-ahead, 322 IO-automaton, 421 Greibach normal form, 36, 78 sequential, 422 Guide Item, see candidate predicate, 464 Iteration operator, 16 set, 299, 306 graphical computation, 317 J graphical method, 314 JavaScript Object Notation (JSON), 48, 228, 329 H input-driven model, 228 Handle, 245, 259 Jumps, 461 Heilbrunner grammar complement, 217 Hierarchical list, 29 K Hierarchy of Chomsky, 105 Kernel Homomorphism equivalent macro-states, 253 alphabetic, 97 of macro-state, 252, 253 nonalphabetical, 98 Knuth, 244, 267, 282, 348 HTML, 228 L I Language, 8 ID family, 227 abstraction, 26 Incremental artificial, 5 compilation, 379 complement, 13 Index 493

conjunctive, 110 Lexeme, 447 context-free, 32, 38, 105, 209 Lexical context-sensitive, 105, 106 analysis, 447 decidable, 119 attribute, 436, 448, 449 Dyck, 49 class, 447, 448 empty, 8 closed and open, 448 equation, 87 finite and non-, 448 finite, 8 level, 447 formal, 6 segmentation, 448 formalized, 5 Linear generated, 37 grammar, 84 infinite, 8 language equation, 87 recursive derivations, 41 regular expression, 156 input-driven, 223, 225 syntax tree segments, 176, 177 local, 151 Linearized Syntax Trees (LST), 168, 169, locally testable, 151 172, 181 nullable, 10 construction, 181 recursive, 119 Linguistic abstraction, 26 recursively enumerable, 119 List regular, 20 abstract, 27 replica, 94, 110 concrete, 27 with center, 108, 110 hierarchical, 29 source, 386 with precedence, 29 substitution of, 28 with separators, 27 target, 99, 386 Live-in, 473 unary alphabet, 92 Liveness, 471, 474, 476 universal, 13 equations, 474 visibly pushdown, 223, 225 interval, 471, 473 with three equal powers, 93, 106, 110 Live-out, 473 with two equal powers, 90 Live variable, 471, 483 L-condition for attribute evaluation, 450 LL(1) Least fixed point, 475 grammar, 346 Left relation with LR(1), 347 attribute, 432, 435 LL(2) example, 323 derivation, 46 LL(k) quotient, 17, 281 grammar, 347 recursion, 36 relation with LR(k), 347 elimination, 77 Local immediate, 76 automaton, 152 LR(1), 282 language, 151, 193, 469 non-immediate, 77 automaton, 152 composition of, 153 top-down parsing, 285 normalized automaton, 153 recursive rule, 76 set, 156 elimination, 76 regular expression, 156 Left-linear grammar, 85, 138 testability, 151 Leftmost derivation, see left derivation Locally testable language, 193 Left/right terminal set, 327 Longest prefix rule, 448 Length of string, 9 Look-ahead Levenshtein distance, 375 extending, 275 Lex, 425 increasing, 322 494 Index

set, 243 Nondeterminism motivation, 131 graphical method, 322 Nondeterministic LR(1) automaton conversion to deterministic, family, 348 142, 162, 163 grammar, 348 finite automaton, 130, 133, 136 transformation, 275, 279 pushdown automaton, 202, 203 parser union, 219 relation with ELR(1), 267 Nondeterministic Finite Automata (NFA), superflous features, 270 133 relation with DET, 348 Non-left-recursive grammar, 76 LR(2) to LR(1), 277, 279 Non-LR(k), 282 LR(k) Non-nullable normal form, 66, 67 early scanning, 277 Nonterminal, 32 grammar, 275 alphabet, 34 left quotient, 281 expansion, 66 transformation, 282 nullable Lukasiewicz, 392 graphical method, 315 shift, 248 M in Earley parser, 356 M.r.e., 166 Normal form Machine net, 233 Chomsky, 72 Macro-state, 250 copy-free, 67 base, 252 Greibach, 78 closure, 252 non-nullable, 66, 67 kernel, 252 real-time, 78 Marked without repeated right parts, 69 abstract syntax tree, 167 Nullable BNF grammar rule, 236, 277, 279 language, 10 regular expression, 166 nonterminal, 66 syntax tree, 168 regular expression, 157 Marked Abstract Syntax Tree (MAST), 167 Numbered Marked Syntax Tree (MST), 168 input alphabet, 158 McNaughton, 194 regular expression, 156 Meaning, 428 Numerical constant, 121, 123, 124, 135, 137 Memory allocation, 476 Metagrammar, 34 O Metalanguage of regular expression, 33 One-sweep Minimal automaton, 125 attribute evaluation, 442 Minimization of finite automaton, 126 attribute grammar, 442, 443 Mirror reflection, 10 semantic evaluator construction, 443 Mixfix operator, 392 Opening mark, 27 M-state, see macro-state Operator Multiple transition property, 253 binary, 391 Multi-sweep semantic evaluator, 446 degree, 391 infix, 392 N mixfix, 392 Nerode relation, 126 postfix, 392 Nested structure, 31 prefix, 392 Network of finite machines, 233 unary, 392 Nivat theorem, 419 variadic, 391 Noncounting language, 193 Operator grammar, 74 Index 495

normal form, 36, 74 Pointerless ELR(1) parser, 294 Operator precedence Polish notation, 56, 391, 392 grammar, 326 Portability of compiler, 461 languages, 335, 337 Position restricted normal form, 80 relation, 326, 327 Postaccessible state, 124 sequential parser, 330, 331 Postfix Opposite passes, 424 normal form, 408 Optimization of program, 385, 467, 477, 481 operator, 392 Ordered Attribute Grammar (OAG), 446 Power of language, 12 P of string, 11 Palindrome, 32, 50, 390 Powerset construction, 145 nondeterminism, 220 Precedence pushdown machine, 207 of operators, 11 Panic mode error recovery, 377 relation, 326 Papert, 194 Prediction in Earley parser, 354 Parallel parser, 325, 343 Predictive Parenthesis parser, 310 language, 47, 223 direct construction, 305 redundant, 395 parser automaton, 311 Parenthesized pushdown automaton, 202 expression, 45 pushdown transducer, 400 grammar, 50, 223 Prefix, 10 tree, 45, 366 operator, 392 Parser, 230 Prefix-free language, 12 Berry-Sethi, 172, 179 Problematic regular expression, 171, 182 choice criteria, 350 Product Coke-Younger-Kasami, 352 machine, 190 Earley, 357 of automata, 190 for regular expressions, see Berry-Sethi Production, 34 general, 352 Program local, 325, 326 analysis, 467 parallel, 325, 339, 343 optimization, 385, 467, 477, 481 predictive, 310, 311 Projection, 98 recursive descent, 313 Prospect set, 299, 306 semantics-directed, 352, 463 graphical computation, 316 top-down and bottom-up, 231 Pumping property, 89 top-down deterministic, 311 Pure syntactic translation, 389 with attribute evaluation, 447 Pushdown automaton with attribute evaluator, 450 accepting modes, 208 with translation, 402 conversion to grammar, 210 Parser Control-Flow Graph (PCFG), 290, definition, 205 298 determinism, 215 direct construction, 305 deterministic subclasses, 221 Pilot forms of nondeterminism, 215 compaction, 290 on-line, 212 construction, 252 real-time, 206, 212, 222 graph, 252 time complexity, 204 machine of translator, 406 Pushdown Automaton (PDA), 120, 200, 202, Pin, 150 205, 209 PLZ-SYS, 464 Pushdown IO-automaton, 397 496 Index

Pushdown transducer, 397, 399, 400 nullability, 157 from translation grammar, 399 numbered, 23, 156 nondeterministic, 400 problematic, 171 Thompson method, 147, 148 Q with complement, 188 Quotient with intersection, 188 of grammars, 281 Regular expression to automaton, 147 of languages, 17 Berry-Sethi, 161 structural method, 148 R Thompson, 148 Rabin and Scott, 416 Regular language, 20 machine, 416 intersection, 188 Rational translation, see regular translation pumping property, 89 Reachable Regular translation, 414 nonterminal, 39 expression, 416 state, 124 Repeated right parts, 69 Reaching definition, 477, 483 Replica, 94, 108, 110 always, 484 Reps, 432 Real-time Retargeting, 461 normal form, 78 Reversal, 10 property, 206, 212 as translation, 389 pushdown automaton, 222 of context-free language, 52, 96 Recognition algorithm, 116 of language, 11 Recognize, see accept recognizer of, 132 Recursion bilateral, 55 Right Recursive attribute, 432, 434, 435, 453 derivation, 41 derivation, 46 descent, 449 recursion, 36 parser, 284, 313 LR(1), 282 parser with attributes, 449 Right-linear grammar, 85, 129 translator, 403 Right-linearized grammar, 269, 312 machine net, 233 Rightmost derivation, see right derivation semantic evaluator, 445 Rule Recursive descent translator, 404 Chomsky normal, 36 Reduce move, 245 copy, 36, 67 Reduce-reduce conflict, 251, 255, 277 empty, 36 Reduce-shift conflict, see shift-reduce con- Greibach normal, 36 flict homogeneous, 36 Reflection, 10 homogeneous binary, 72 REG family, 20, 84, 95, 100 left-linear, 36 closure properties, 25 left-recursive, 36 included in CF, 84 linear, 36 Register assignment, 477 recursive, 36 Regular expression, 18 right-linear, 36 ambiguity, 22, 84, 85, 170 right-recursive, 36 Berry-Sethi method, 147 self-embedding, 36 extended, 24, 191 self-nesting, 36 from automaton, 139 subcategorization, 36 language defined, 22 terminal, 36 linear, 156 with operators, 36 metalanguage, 33 Run-time error, 460 Index 497

S Single-transition property, 286, 290 Sakarovitch, 141, 191, 386 Single-valued translation, 396 Scan in Earley parser, 355 Sink state, see trap state Scanner, 447 Skeleton tree, 45 Scheduling of instructions, 467 condensed, 45 Segments of linear syntax tree, 176, 177 Slice, 175 Self-nesting, 47 Source derivation, 91 grammar, 389 Semantic, 5, 383, 427, 428 ambiguity, 396 analysis, 428 language, 386 attribute, 428, 431 Spontaneous move, 130, 135, 205 lexical, 448 elimination, 142, 143 check, 457 Stack error, 457 candidate, 259 evaluator, 428, 442 macro-state, 259 multi-sweep, 446 m-state, 259 one-sweep, 442 Stack m-states (sms), 259 recursive, 445 Star function, 430, 435 of context-free language, 51, 96 interpretation, 64 operation, 14 metalanguage, 428, 435 properties, 15 predicate, 457 Star-free language, 193 procedure, 445 State rule, 430 accessible, 124 translation, 427 distinguishable, 125 Semantics-directed parser, 352, 463 postaccessible, 124 Sentence, 8 reachable, 124 ambiguous, 23 trap, 123 Sentential form, 38 useful, 124 Sequential useless, 124 function, 423 State-transition diagram, 120 transducer, 422 pushdown machine, 207 Set Static error, 457 guide, 317 Static program analysis, 460, 467, 486 look-ahead, 322 interprocedural, 468 nullable nonterminals, 315 intraprocedural, 468 of followers, 161, 241 STP, see single-transition property of initials, 150, 242, 315 Strictly unilinear grammar, 86 graphical computation, 315 String, 8 prospect, 316 empty, 10 Sethi, 161 form, 37 Set operations, 13 matching, 165 Shift Strong equivalence of grammars, 65 move, 244 Structural adequacy, 64, 86 terminal or nonterminal, 251 Subcategorization rule, 67 Shift-reduce Subjacent automaton, 418, 422, 423, 426 conflict, 251, 255, 279 pushdown, 397 parser with attribute evaluator, 453 Substitution, 28, 98 translator, 406 closure property, 99 Sibling graph, 442 Substring, 10 Simple deterministic grammar, 223, 346 Suffix, 10 498 Index

Symbol table, 374, 457 EBNF, 405 Syntactic postfix normal form, 408 analysis, 230 rule normalization, 399 error, 375 to pushdown transducer, 399 level, 447 infix to postfix, 404 procedure, 283, 313 rational, see regular translation semantic analyzer, 450 regular, see regular translation support, 430, 435 relation, 386 translation, 389 scheme, 389 scheme, 389 single-valued, 396 Syntactic-semantic analysis, 447 syntactic, 389 Syntax, 5, 6 Translator abstract, 26 Berry-Sethi, 172, 179 analysis, 230 bottom-up, 406 bottom-up and top-down, 231 comparison, 413 chart, 237, 469 top-down, 403 tree, 43 two-way, 424 abstract, 394, 429 with recursive procedures, 403 as translation, 412 Transliteration, 97, 388 Syntax-directed to words, 98 compiler, 428 Trap state, 123 translation, 148, 389, 428 Tree Synthesized attribute, see left attribute construction, 366 decorated, 431 T of regular expression, 165 Target of regular phrase, 165 grammar, 389 pattern matching, 461 language, 99, 386 syntax, 43 Terminal Turing machine, 105, 119 alphabet, 34 Two-input automaton, 416, 417 shiftinEarleyparser,355 Two-pass compiler, 429 symbol, 8 Type checking, 458 Thompson, 147, 148 Type 0 grammar, 105 Token, 447 Type 1 grammar, 105 TOL, 444 Type 2 grammar, 105 Tomita, 352 Type 3 grammar, 85, 105 Top-down deterministic translation, 403 U parsing, 282 Unary syntax analysis, 231 alphabet, 92 Topological sort, 440 operator, 392 TOR, 443 Undecidability TOS, 443 deterministic context-free language, 350 Transducer, see translator deterministic pushdown automaton, 350 Transduction, see translation LR(k), 350 Transition networks, 237 Undistinguishability of states, 126 Translation Unilinear grammar, 85, 136, 137 closure properties, 426 equations, 87 function, 386, 387, 423 Uninitialized variable, 485 sequential, 423 Union of context-free languages, 51, 96 grammar, 389, 399, 420 Universal language, 13, 15 Index 499

Unreachable code, 471, 483 use, 469 Useful state, 124 Variadic operator, 391 Useless Vector-stack parser, 271 assignment, 472 Vocabulary, 8 state, 124 VW grammar, 109 elimination, 124 variable definition, 477 W Uzgalis, 109 Weak equivalence of grammars, 64 Well-defined nonterminal, 39 V Word, 8 Van Wijngarten, 109 Variable X availability, 483 XML, 47, 228 definition, 468 suppressed, 479 Y initialization, 483, 484 Yang, 425