Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercuryпропущено... Перед собой поставил более глобальную задачу, написать синтаксический анализатор языка Си Чето мне нехорошо стало... пойду накапаю себе капель. А шо тут такого. Это ж не компилятор, а всего лишь парсер. Пишется за неделю, при условии что знаешь язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 16:26 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЭто ж не компилятор, а всего лишь парсер. Пишется за неделю, при условии что знаешь язык. Готовый YACC файл гуглится за минуту: http://www.quut.com/c/ANSI-C-grammar-y-2011.html Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 16:42 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну, чел же ясно сказал, что хочет придумать сам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 17:07 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Вчера начала думать более плотно над задачей по частичной имитации работы препроцессора. Составил общий алгоритм. И мне кажется уже понял как это будет работать. Но я не уверен что правильно организовал структуру данных. Как вы считаете ? Как правильней назвать структуры ? Мне кажется названия не совсем корректные. Подскажите пожалуйста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 07:24 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Только названия неправильные. Есть object-like и function-like macro. Согласно стандарту. ISO/IEC 9899:201x 6.10.3 Macro replacement6.10.3 Macro replacement Constraints 1 Two replacement lists are identical if and only if the preprocessing tokens in both have the same number, ordering, spelling, and white-space separation, where all white-space separations are considered identical. 2 An identifier currently defined as an object-like macro shall not be redefined by another #define preprocessing directive unless the second definition is an object-like macro definition and the two replacement lists are identical. Likewise, an identifier currently defined as a function-like macro shall not be redefined by another #define preprocessing directive unless the second definition is a function-like macro definition that has the same number and spelling of parameters, and the two replacement lists are identical. 3 There shall be white-space between the identifier and the replacement list in the definition of an object-like macro. 4 If the identifier-list in the macro definition does not end with an ellipsis, the number of arguments (including those arguments consisting of no preprocessing tokens) in an invocation of a function-like macro shall equal the number of parameters in the macro definition. Otherwise, there shall be more arguments in the invocation than there are parameters in the macro definition (excluding the ...). There shall exist a ) preprocessing token that terminates the invocation. 5 The identifier _ _VA_ARGS_ _ shall occur only in the replacement-list of a function-like macro that uses the ellipsis notation in the parameters. 6 A parameter identifier in a function-like macro shall be uniquely declared within its scope. Semantics 7 The identifier immediately following the define is called the macro name. There is one name space for macro names. Any white-space characters preceding or following the replacement list of preprocessing tokens are not considered part of the replacement list for either form of macro. 8 If a # preprocessing token, followed by an identifier, occurs lexically at the point at which a preprocessing directive could begin, the identifier is not subject to macro replacement. 9 A preprocessing directive of the form Код: plaintext 1. defines an object-like macro that causes each subsequent instance of the macro name171) to be replaced by the replacement list of preprocessing tokens that constitute the remainder of the directive. The replacement list is then rescanned for more macro names as specified below. 10 A preprocessing directive of the form Код: plaintext 1. 2. 3. defines a function-like macro with parameters, whose use is similar syntactically to a function call. The parameters are specified by the optional list of identifiers, whose scope extends from their declaration in the identifier list until the new-line character that terminates the #define preprocessing directive. Each subsequent instance of the function-like macro name followed by a ( as the next preprocessing token introduces the sequence of preprocessing tokens that is replaced by the replacement list in the definition (an invocation of the macro). The replaced sequence of preprocessing tokens is terminated by the matching ) preprocessing token, skipping intervening matched pairs of left and right parenthesis preprocessing tokens. Within the sequence of preprocessing tokens making up an invocation of a function-like macro, new-line is considered a normal white-space character. The sequence of preprocessing tokens bounded by the outside-most matching parentheses forms the list of arguments for the function-like macro. The individual arguments within the list are separated by comma preprocessing tokens, but comma preprocessing tokens between matching inner parentheses do not separate arguments. If there are sequences of preprocessing tokens within the list of arguments that would otherwise act as preprocessing directives,172) the behavior is undefined. 12 If there is a ... in the identifier-list in the macro definition, then the trailing arguments, including any separating comma preprocessing tokens, are merged to form a single item: the variable arguments. The number of arguments so combined is such that, following merger, the number of arguments is one more than the number of parameters in the macro definition (excluding the ...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 07:30 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury, # и ## будешь обрабатывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 08:08 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Изопропил, пока что не буду. Сначала нужно сделать это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 08:14 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСоставил общий алгоритм возможную рекурсию учёл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 08:38 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercuryСоставил общий алгоритм возможную рекурсию учёл? Да, буду проходить по тексту циклом до тех пор, пока количество замен за 1 проход не будет равно 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 08:41 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДа, буду проходить по тексту циклом до тех пор, пока количество замен за 1 проход не будет равно 0 рискуешь никогда не остановиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 08:48 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercuryДа, буду проходить по тексту циклом до тех пор, пока количество замен за 1 проход не будет равно 0 рискуешь никогда не остановиться тоже про это думал, но потом прочитал (позже найду где) что такое невозможно. хм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 08:51 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury, в твоём алгоритме - возможно на косвенную рекурсию обрати внимание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 09:05 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Для зацикливания достаточно написать: 1. заменить А на Б 2. заменить Б на А Предусматривай выход из такой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 09:11 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Препроцессоры С обычно однопроходные... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 11:16 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДа, буду проходить по тексту циклом до тех пор, пока количество замен за 1 проход не будет равно 0 Это неправильный подход. Вместо этого у вас должна быть функция, которая на входе получает идентификатор, а возвращает список токенов после подстановки макроса. И аналогично для function-like macro. И эти функции используются при токенизации текста перед парсингом. Это все естественно за один проход делается. Просто функции рекурсивные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 13:54 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Спасибо. А что вы можете сказать про предложенные структуры ? Я правильно их спроектировал, как вы считаете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 14:33 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСпасибо. А что вы можете сказать про предложенные структуры ? Я правильно их спроектировал, как вы считаете ? Ну можно и так. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 14:59 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Это самое важное сейчас. Спасибо. Завтра продолжу, у нас уже поздно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 15:11 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Надо только учесть, что в реальном проекте был бы не массив макросов, а хеш-таблица. Иначе не взлетит на больших исходниках, типа стандартных хедеров или winapi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 15:31 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury, наличие elipsis ( ... ) в макроопределении имеет смысл в структуре отразить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 16:59 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Сашик. Я тебе тест придумал. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 21:15 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
maytonСашик. Я тебе тест придумал. Код: plaintext 1. 2. 3. 4. 5. 6. Вот как :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 04:32 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Не нашёл в стандарте, а разве нет ограничений на макроимена(если неправильно называю, то поправьте пожалуйста) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 04:37 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Имена макросов должны быть идентификаторами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 13:22 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Тестирую функцию формирования пространства макроопределения. Подскажите пожалуйста, где я ошибаюсь в работе с памятью ?(или в другом месте) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. далее Код: plaintext 1. 2. 3. 4. 5. 6. 7. и начало функции в которой возникает ошибка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. и вот вызов функции Код: plaintext 1. 2. 3. 4. 5. 6. ошибка в функции add_macros. Диагностическое сообщениеавторUnhandled exception at 0x772BE753 (ntdll.dll) in preprocessing.exe: 0xC0000374: Куча была повреждена (parameters: 0x772F4270) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 04:29 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38782450&tid=2019118]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 168ms |

| 0 / 0 |
