lex_ident.c revision 1.4 1 1.4 rillig /* $NetBSD: lex_ident.c,v 1.4 2022/04/22 21:21:20 rillig Exp $ */
2 1.1 rillig
3 1.1 rillig /*
4 1.3 rillig * Test lexing of word-like tokens, such as keywords, identifiers, numeric
5 1.3 rillig * constants, character constants, string literals.
6 1.1 rillig */
7 1.1 rillig
8 1.1 rillig /*
9 1.1 rillig * Conceptually, backslash-newline is replaced with nothing, in a very early
10 1.1 rillig * stage of the translation, see C11 5.1.1.2p1, item 2. Indent does not
11 1.1 rillig * preserve these; in most cases, they are simply removed.
12 1.1 rillig */
13 1.1 rillig #indent input
14 1.1 rillig in\
15 1.1 rillig t \
16 1.1 rillig var\
17 1.1 rillig iable;
18 1.1 rillig
19 1.1 rillig int
20 1.1 rillig no_backslash;
21 1.1 rillig
22 1.1 rillig /* $ See check_size_token. */
23 1.1 rillig /* $ The default buffer size is 200, the limit is 195. */
24 1.1 rillig struct long_tag_name_to_overflow_the_token_buffer_4567890\
25 1.1 rillig 12345678901234567890123456789012345678901234567890\
26 1.1 rillig 12345678901234567890123456789012345678901234567890\
27 1.1 rillig 12345678901234567890123456789012345678901234567890;
28 1.1 rillig
29 1.1 rillig /* $ See check_size_token. */
30 1.1 rillig /* $ The difference between limit and start got incremented to 595. */
31 1.1 rillig struct long_tag_name_to_overflow_the_token_buffer_4567890\
32 1.1 rillig 12345678901234567890123456789012345678901234567890\
33 1.1 rillig 12345678901234567890123456789012345678901234567890\
34 1.1 rillig 12345678901234567890123456789012345678901234567890\
35 1.1 rillig 12345678901234567890123456789012345678901234567890\
36 1.1 rillig 12345678901234567890123456789012345678901234567890\
37 1.1 rillig 12345678901234567890123456789012345678901234567890\
38 1.1 rillig 12345678901234567890123456789012345678901234567890\
39 1.1 rillig 12345678901234567890123456789012345678901234567890\
40 1.1 rillig 12345678901234567890123456789012345678901234567890\
41 1.1 rillig 12345678901234567890123456789012345678901234567890\
42 1.1 rillig 12345678901234567890123456789012345678901234567890;
43 1.1 rillig #indent end
44 1.1 rillig
45 1.1 rillig #indent run
46 1.1 rillig /* $ XXX: The indentation of the backslash is one short of a tab. */
47 1.1 rillig int \
48 1.1 rillig variable;
49 1.1 rillig
50 1.1 rillig int
51 1.1 rillig no_backslash;
52 1.1 rillig
53 1.1 rillig struct long_tag_name_to_overflow_the_token_buffer_4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890;
54 1.1 rillig
55 1.1 rillig struct long_tag_name_to_overflow_the_token_buffer_45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890;
56 1.1 rillig #indent end
57 1.1 rillig
58 1.1 rillig
59 1.1 rillig /* This is a syntax error; see lex_word. */
60 1.1 rillig #indent input
61 1.1 rillig int identifier\n;
62 1.1 rillig #indent end
63 1.1 rillig
64 1.1 rillig #indent run
65 1.2 rillig int identifier \ n;
66 1.1 rillig #indent end
67