Анимация
JavaScript
|
Главная Библионтека { Bitwise Not Primary } procedure NotIt; begin EmitLnCEOR #-1,D0); end; Испытайте ее сейчас с несколькими простыми случаями. Фактически, попробуйте пример с исключающим или: a&!b!a&b Вы должны получить код (без комментариев, конечно):
Это точно то, что мы хотели получить. Так что, по крайней мере, и для арифметических и для логических операторов наш новый приоритет и новый, более тонкий синтаксис, поддерживают друг друга. Даже специфическое, но допустимое выражение с ведущим addop: имеет смысл. SignedTerm игнорирует ведущий ~ как и должно быть, так как выражение эквивалентно: 0~x, что эквивалентно x. Когда мы взглянем на созданные нами БНФ, мы обнаружим, что наша булева алгебра добавляет теперь только одну дополнительную строку: <not factor> ::= [!] <factor> <factor> ::= <variable> <constant> ( <expression> ) <signed term> ::= [<addop>] <term> <term> ::= <not factor> (<mulop> <not factor>)* <expression> ::= <signed term> (<addop> <term>)* <assignment> ::= <variable> = <expression> Это большое улучшение предыдущих достижений. Будет ли сохраняться наша удача когда мы примемся за операторы отношений? Мы выясним это скоро, но мы должы будем дождаться следующей главы. У нас выдалась подходящая пауза и я хочу выдать эту главу в ваши руки. Уже прошел год с выпуска Главы 15. Я боюсь признаться, что вся эта текущая глава была готова уже давно, за исключением операторов отношений. Но эта информация совсем не дает вам ничего хорошего, сидя на моем жестком диске, и удерживая ее пока пока операторы отношений не будут сделаны, я не давал ее в ваши руки все это время. Пришло время выдать ее чтобы вы смогли получить из нее что-нибудь ценное. Кроме того, имеется большое количество серъезных философских вопросов, связанных с операторами отношений, и я предпочел бы сохранить их для отдельной главы, где я смог бы сделать это корректно. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 [ 97 ] |