1. C++ / Говнокод #18914

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    int expr_type=Expression();
    
    				if (param->Left != NULL)
    				{
    					param = param->Left;
    					if (param->node.NodeType == DATA_VAR)
    					{
    						SemantTree *type = (SemantTree *)param->node.Val.varible.VarType;
    						if (type->node.type != expr_type)
    						{
    							sc->PrintError("тип фактического параметра не приводится к типу соответствующего ему формального параметра", l);
    							return;
    						}
    					}
    					else//если не переменная
    					{
    						sc->PrintError("количество формальных и фактических параметров не совпадает", l);
    						return;
    					}
    				}
    				else//если вдруг левое поддерево==NULL
    				{
    					sc->PrintError("количество формальных и фактических параметров не совпадает", l);
    					return;
    				}
    				param_counter++;
    				if (param_counter>idr->node.Val.func.paramCount)//если счетчик фактических превысил кол-во формальных
    				{
    					sc->PrintError("количество формальных и фактических параметров не совпадает", l);
    					return;
    				}

    теория формальных языков. моя лаба по семантическому анализу))

    Запостил: vladimir94, 25 Октября 2015

    Комментарии (24) RSS

    • репост если не переменная, лайк если не оператор
      Ответить
      • Это где такие костыльные голосования?
        Ответить
        • ... vk (а в твиттере: fav, rt)
          Ответить
          • Пиздец. А штатную голосовалку им прикрутить влом?

            P.S. Ну хотя штатная голосовалка не будет раскручивать пост лайками и репостами...
            Ответить
            • ну фкантактике есть голосовалки, а вот в твиттере только так
              Ответить
              • В Твитторе таки сделали голосовалку, аж две:
                1. Создание опросов доступно только прямым партнёрам Твиттера (т. е. за большие деньги). Если в поиске Твиттера ввести "birdops.com", то можно найти все результаты голосований (можно ещё добавить в строку поиска lang:ru, чтобы отфильтровать по языку).
                2. Создание опросов доступно всем (ну почти всем, скоро откроют для всех), но есть куча ограничений: срок действия опроса строго 24 часа, только два варианта, нет автоматического распространения ссылки (голосование полностью анонимно). Пример голосовалки второго типа:
                https://twitter.com/Sweeeet_Donut/status/657650557675507712

                В общем, сделали настолько плохо, что лучше бы голосовалок не было совсем.
                Ответить
      • Комментарий, если вдруг левое поддерево==NULL.
        Ответить
    • > фактического параметра
      это называется "аргумент"
      Ответить
      • Ну, к слову, я где-то слышал про фактические и формальные параметры... В какой-то книжке на русском.
        Ответить
        • от мусье Попова?
          Ответить
        • Для f(x) = x + y набор {x} - фактические параметры, набор {x, y} - формальные?
          Для f(x) = x + y набор {x} - фактические параметры, набор {y} - формальные?
          Ответить
          • y в твоём случае - "свободная переменная"
            Ответить
            • А что тогда - "формальные"? Индексы?
              f_n(x) = x + y + n, {n} - формальные?
              Ответить
              • def f(a, b) = a + b
                a, b - "формальные параметры"

                f(1, 2)
                1, 2 - "фактические параметры"
                Ответить
              • Для f(x) = x + 5 набор {x} будет формальными параметрами. X играет роль только внутри, снаружи это «немая» переменная. Мы можем с таким же успехом написать:
                f(ы) = ы + 5
                или
                f(щ) = щ + 5
                Это будет та же самая функция.

                А в выражении у = f(3) + f(5) фактическими параметрами будут {3} в первом применении функции и {5} во втором применении.
                Ответить
              • P.S. Домашнее задание. Пусть
                def fact(n) = (n > 1) ? n * fact(n - 1) : 1

                Написать, что́ будет формальным параметром, а что — фактическим.
                Ответить
                • def fact(n (формальный)) = (n > 1) ? n * fact(n - 1 (фактический)) : 1

                  так?

                  Короче формальные в сигнатуре, фактический в вызове

                  n формальный
                  (n-1) фактический
                  Ответить
                  • А как же операторы? :)
                    Ответить
                    • какие такие операторы?
                      Ответить
                      • > ? *

                        У них тоже параметры есть...
                        Ответить
                        • Все они фактические
                          Ответить
                          • Фактические параметры — это то, что в данный момент подставлено слева от * и справа, а формальные — это сами места слева и справа от *.
                            Ответить
                • формальные - в описании функции, фактические - при вызове. если это интерпретатор, то в таблицы семантики (у меня - в поля узлов поддерева соответствующего) пишутся значения фактических и функция по сути не отличает их от локальных переменных.(у меня в поддереве для функции идут сначала формальные параметры потом локальные переменные).
                  Ответить

    Добавить комментарий