Как найти недостающую скобку

When I run the code it tells me there’s an error which is ')' expected near '=':

function restartLvl()
    for i = 1, #balloonTexts do
        display.remove(balloonTexts[i])
        print ("restart level")
    end

    score.text = '0'
    ballRemain.text = '3'
    balloonText = {}
    createBalloons(1, 3)

    if (askUser.isVisible = true) then  --this is the line where the error occured
        askUser.isVisible = false
    end

    if (yesBtn.isVisible = true) then
        yesBtn.isVisible = false
    end

    if (noBtn.isVisible = true) then
        noBtn.isVisible = false
    end
end

I don’t know how it is still missing a ‘)‘, because I closed all the brackets.

Peter Mortensen's user avatar

asked Mar 11, 2014 at 8:10

user3305142's user avatar

= is the assignment operator, == is the operator to test equality. Change it to:

if (askUser.isVisible == true) then
    askUser.isVisible = false
end

And all the others as well. The brackets () can be ommited for simplicity:

if askUser.isVisible == true then
    askUser.isVisible = false
end

If the value is a boolean, you can also do this because all values that are not nil or false are treated as true.

if askUser.isVisible then
    askUser.isVisible = false
end

answered Mar 11, 2014 at 8:13

Yu Hao's user avatar

Yu HaoYu Hao

119k44 gold badges230 silver badges289 bronze badges

4

This is not related to your answer but

I recommend you to use lua glider IDE because this type error can be detect well by using this IDE.

answered Mar 14, 2014 at 8:06

Pranav Khandelwal's user avatar

Делаю проэкт галерею на javascript, потерял скобку.

Ошибка расположена в функции arrows. Пишет, Uncaught SyntaxError: Illegal return statement.

function showImage(event){
    //ПРОВЕРКА И УДАЛЕНИЕ
    //##############
    if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
    }
    if (document.querySelector(".OtherMiniMain")){
        document.querySelector(".OtherMiniMain").classList.remove(".OtherMiniMain");}
    let pictures=document.querySelector(".pictures");
    if (document.querySelector(".selected")){
        document.querySelector(".selected").classList.remove("selected");
    }
    if (document.querySelector(".open")){
        document.querySelector(".open").remove()
    }
    let OtherMains=document.querySelectorAll(".otherMain");
    for (item of OtherMains){
        item.remove()
    }
    let eventImage;
    if (document.querySelector(".miniUpdate")){
        eventImage=document.querySelector(".miniUpdate");
    }
    else {
        eventImage=event.target;
    }
    //ИНИЦИАЛИЗАЦИЯ
    //#############
    let heart=document.querySelector(".heart");
    if (!eventImage.classList.contains("chosenImg")){
        heart.classList.remove("beforeChose")
    }
    else{
        heart.classList.add("beforeChose")
    }
    let main=document.querySelector("main");
    let block=document.querySelector(".show");
    let imageDiv=document.querySelector(".ImgAndArrow");
    eventImage.classList.add("selected")
    block.hidden=false;
    let other=document.querySelector(".other")
    document.body.style.overflow="hidden";
    let image=document.createElement("img");
    image.src=eventImage.src;
    image.classList.add("open");
    imageDiv.append(image);
    let OtherMainImage=image.cloneNode();
    OtherMainImage.classList.add("otherMain");
    OtherMainImage.classList.remove("open");
    OtherMainImage.classList.add("OtherMiniMain")
    createSublings()
    function createSublings(){
        createMini(2,"-");
        createMini(1,"-");
        pictures.append(OtherMainImage)
        if (document.querySelector(".chosen").textContent=="Home"){
            let items=document.querySelectorAll(".chosenImg");
            if (getChosenIndex()==items.length-2){
                createMini(1,"+")
            }
            if (getChosenIndex()<item.length-2){
                createMini(1,"+");
               createMini(2,"+");
            }
            function getChosenIndex(){
                let col=0;
                for (item of items){
                    if (item.classList.contains("selected")){
                        return col
                    }
                    col++
                }

            }}
        else{
            if (getIndex()==main.children.length-2){
            createMini(1,"+");
        }
          if (getIndex()<main.children.length-2){
            createMini(1,"+");
            createMini(2,"+");
        }
        }
        function checkNoneDiv(){
            let col=0;
            for (item of document.querySelectorAll(".noneImageDiv")){
                col++
            }
            return col
        }
        // alert(checkNoneDiv())
        function createMini(num,znak){
            let coords=OtherMainImage.getBoundingClientRect();
            let image=OtherMainImage.cloneNode();
            let Children;
            if (document.querySelector(".chosen").textContent=="Home"){
                // alert("sdf")
                Children=main.querySelectorAll(".chosenImg")
            }
            else{
                Children=main.children
            }
            image.classList.remove("OtherMiniMain");
            if (znak=="-"){
                if (!Children[getIndex()-num]){
                    if (checkNoneDiv()>=2){
                        return
                    }
                    appendNoneDiv()
                    return
                }
                image.src=Children[getIndex()-num].src;
                image.dataset.number=`r${getIndex()-num}`;
                OtherMainImage.dataset.number=`r${Number(image.getAttribute("data-number").split("").slice(1).join(""))+num}`
              pictures.append(image);
            }
            if (znak=="+"){
                if (!Children[getIndex()+num]){
                    if (checkNoneDiv()>=2){
                        return
                    }
                    appendNoneDiv()
                    return
                }
                image.src=Children[getIndex()+num].src;
                image.dataset.number=`r${getIndex()+num}`;
                OtherMainImage.dataset.number=`r${Number(image.getAttribute("data-number").split("").slice(1).join(""))-num}`
                pictures.append(image);
            }
            function appendNoneDiv(){
                let noneDiv=document.createElement("div");
                noneDiv.classList.add("noneImageDiv")
                pictures.append(noneDiv)
            }
        }
        // alert(document.querySelector("main").children[0].src);
        // image.src=main.children[getIndex()-1].src
        // other.append(image);
        // let predImage=OtherMainImage.cloneNode();
        // predImage.style.left=`${coords.left-coords.width*2-45}px`
    }
    function getIndex(){
        let col=0;
        for (item of main.children){
            if (item.classList.contains("selected")){
                return col;
            }
            col++
        }

    }
    let miniClicks=document.querySelectorAll(".otherMain");
   for (item of miniClicks){
    item.addEventListener("click",miniClick)
   }
}
function hideShow(event){
    document.querySelector(".deleteWindow").hidden=true;
    for (item of document.querySelectorAll(".noneImageDiv")){
        item.remove()
    }
    let block=document.querySelector(".show");
    block.hidden=true;
    document.body.style.overflow="auto";
    if (document.querySelector(".miniUpdate")){
        document.querySelector(".miniUpdate").classList.remove("miniUpdate")
}
}   
function miniClick(event){
    document.querySelector(".deleteWindow").hidden=true;
    if (document.querySelector(".noneImageDiv")){
        for (item of document.querySelectorAll(".noneImageDiv")){
            item.remove()
        }
    }
    if (document.querySelector(".miniUpdate")){
        document.querySelector(".miniUpdate").classList.remove("miniUpdate")
    }
    let main=document.querySelector("main");
    if (event.target.getAttribute("data-number")==null){
        return
    }
    let classIndex=Number(event.target.getAttribute("data-number").split("").slice(1).join(""));
    main.children[classIndex].classList.add("miniUpdate");
    showImage()

}
function arrows(event){
    let canDelete;
    let num=1;
    let MainMini=document.querySelector(".OtherMiniMain");
    if (!MainMini){
        return
    }
    if (!MainMini.getAttribute("data-number")){
        hideShow()
        return
    }
    let classIndex=Number(MainMini.getAttribute("data-number").split("").slice(1).join(""));
    if (document.querySelector(".canDelete")){
        if (classIndex<=0){
            document.querySelector(".canDelete").classList.remove("canDelete")
            canDelete=document.querySelector(".arrowRight");
            num=0
        }
        else{
            canDelete=document.querySelector(".arrowLeft");
        }
    }
    else{
        if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
       }
        canDelete=event.target;
    }
    
    if (document.querySelector(".miniUpdate")){
        document.querySelector(".miniUpdate").classList.remove("miniUpdate")
    }
    if (event){
        if (event.key=="ArrowRight"){
            document.querySelector(".deleteWindow").hidden=true;
            let newIndex=classIndex+1;
        if (newIndex>=main.children.length){
            return
        }
        if (document.querySelector(".chosen").textContent=="Home"){
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }}
        if (newIndex==1){
            document.querySelector(".noneImageDiv").remove();
            document.querySelector(".noneImageDiv").remove()
        }
        if (newIndex==2){
            document.querySelector(".noneImageDiv").remove()

        }
        // if (main.children[newIndex])
       main.children[newIndex].classList.add("miniUpdate");
       // if (main.children[newIndex].classList.contains(""))
       showImage()}
       if (event.key=="ArrowLeft"){
        document.querySelector(".deleteWindow").hidden=true;
       let newIndex=classIndex-1;
        if (newIndex<=-1){
            return
        }
        if (document.querySelector(".chosen").textContent=="Home"){
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }}
       main.children[newIndex].classList.add("miniUpdate");
       showImage()
       }
    }

    if (canDelete.className=="arrowRight"){
        let newIndex=classIndex+num;
        if (newIndex>=main.children.length){
            return
        }
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }
        if (newIndex==1){
            document.querySelector(".noneImageDiv").remove();
            document.querySelector(".noneImageDiv").remove()
        }
        if (newIndex==2){
            document.querySelector(".noneImageDiv").remove()

        }
    }
       main.children[newIndex].classList.add("miniUpdate");
       showImage()}
    //LEFT
    if (canDelete.className=="arrowLeft"){
        let newIndex=classIndex-1;
        // if (newIndex<=-1){
        //  return
        // }
        if (document.querySelector(".chosen").textContent=="Home"){
            if (!main.children[newIndex].classList.contains("chosenImg")){
            return
        }}
       main.children[newIndex].classList.add("miniUpdate");
       showImage()
    }
    if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
    }
function deleteImage(event){
    if (!document.querySelector(".selected")){
        return
    }
    if (document.querySelector(".selected").classList.contains("chosenImg")){
        document.querySelector(".heart").classList.remove("beforeChose");
    }
    if (document.querySelector(".canDelete")){
        document.querySelector(".canDelete").classList.remove("canDelete")
    }
    let pictures=document.querySelector(".pictures");
    let selected=document.querySelector(".selected");
    let deleteWindow=document.querySelector(".deleteWindow");
    if (!selected){
        hideShow()
        return
    }
    ok=document.querySelector(".deleteOk");
    cancel=document.querySelector(".deleteCancel");
    if (event.key=="Delete"|| event.target.classList.contains("trash")){
        deleteWindow.hidden=false;
        ok.addEventListener("click",deleteWindowButttons);
        cancel.addEventListener("click",deleteWindowButttons);
        document.addEventListener("keydown",deleteWindowButttons)
    }
}
function deleteWindowButttons(event){
    let pictures=document.querySelector(".pictures");
    let selected=document.querySelector(".selected");
    let deleteWindow=document.querySelector(".deleteWindow");
    if (event.target.classList.contains("deleteOk") || event.key=="Enter"){
        selected.remove();
        deleteWindow.hidden=true;
       pictures.classList.add("canDelete");
       arrows()
    }
    if (event.target.classList.contains("deleteCancel") || event.key=="Escape"){
        deleteWindow.hidden=true;
    }
    
}
function showWindowfromImage(event){
    if (document.querySelector(".selectedForRight")){
        document.querySelector(".selectedForRight").classList.remove("selectedForRight")
    }
    event.target.classList.add("selectedForRight")
    let whiteWindow=document.querySelector(".window");
    let deleteW=document.querySelector(".windowDeleteImg");
    if (!event.target.parentNode.tagName){
        return
    }
    if (event.target.parentNode.tagName!="MAIN" || event.target.tagName!="IMG"){
        whiteWindow.hidden=true;
        return
    }
    // alert(event.target.parentNode.tagName)
    whiteWindow.hidden=false;
    whiteWindow.style.left=event.pageX+"px";
    whiteWindow.style.top=event.pageY+"px";
    deleteW.addEventListener("click",deleteOrChosen)
    event.preventDefault();
}
function deleteOrChosen(event){
    document.querySelector(".selectedForRight").remove()
}
function ShowChosenBlock(event){
    let show=document.querySelector(".show")
    let main=document.querySelector("main");
    let images=main.querySelectorAll("img");
    document.querySelector(".deleteWindow").hidden=true;
    show.hidden=true;
    if (event.target.textContent=="Chosen"){
        for (item of images){
            if (!item.classList.contains("chosenImg")){
                item.hidden=true;
        }
    }
        document.body.style.background="rgba(255, 197, 249, 1)";
        event.target.textContent="Home";
        return  
    }
    if (event.target.textContent=="Home"){
        for (item of images){
            item.hidden=false;
        }
        document.body.style.background="rgba(136, 134, 134, 1)";
        event.target.textContent="Chosen";
        return  
    }}
function addToChosen(event){
    let selected=document.querySelector(".selected");
    if (selected.classList.contains("chosenImg")){
        selected.classList.remove("chosenImg")
        document.querySelector(".heart").classList.remove("beforeChose");
        return
    }
    selected.classList.add("chosenImg");
    document.querySelector(".heart").classList.add("beforeChose");

}



//РАБОТА ПРОГРАММЫ
let heart=document.querySelector(".heart");
heart.addEventListener("click", addToChosen)
let chosen=document.querySelector(".chosen");
chosen.addEventListener("click",ShowChosenBlock);
let bin=document.querySelector(".trash");
bin.addEventListener("click",deleteImage);
document.addEventListener("keydown",deleteImage);
let arrowLeft=document.querySelector(".arrowLeft");
let arrowRight=document.querySelector(".arrowRight");
arrowLeft.addEventListener("click",arrows);
arrowRight.addEventListener("click",arrows);
document.addEventListener("keydown",arrows)
let left=document.querySelector(".left");
left.addEventListener("click",hideShow)
let main=document.querySelector("main");
let images=main.querySelectorAll("img");
document.addEventListener("contextmenu",event=>event.preventDefault())
for (item of images){
    item.addEventListener("click",showImage);
    // item.addEventListener("contextmenu",showWindowfromImage);
}
let whiteWindow=document.querySelector(".window");
document.addEventListener("contextmenu",showWindowfromImage);
document.addEventListener("click",event=>whiteWindow.hidden=true);
document.addEventListener("scroll",event=>whiteWindow.hidden=true);
window.addEventListener("resize",event=>whiteWindow.hidden=true);

Здравствуйте уважаемые пользователи форума pawno-crmp.

Этот минуал подойдет тем, у кого в моде есть незакрытая скобка, и если стандартные способы не помогают найти ее. Если стандартными способами найти незакрытую скобку не получается, то Вы попали по адресу.

Итак, начнем.

Сегодня я столкнулся с такой проблемой, как незакрытая скобка. Как известно, если в коде имеется незакрытая скобка, то при компилировании компилятор вылетает не показав ошибку. Я перепробовал стандартные способы как найти незакрытую скобку, но они не подходят, так как у меня в коде (ну наверно не только у меня) есть за комментированные скрипты типа таких:

/*
public test()
{
new blablalbla;

*/ 
Дело в том, что программы подсчитывающие количество открытых и закрытых скобок считают за комментированные скобки, поэтому программа выдаст совсем не ту строку которую нужно.

Перейдем к делу.

Чтобы найти незакрытую скобку, я использовал это: (не знаю как назвать)

#error abc 
Если в коде ввести «это», компилятор выдаст ошибку. Опишу поподробнее.

Например незакрытая скобка находится на строке номер 5612. Если ввести #error abc дальше строки 5612, например 6719, то компилятор так же вылетит не выдав никаких ошибок, а если ввести #error abc  до строки 5612 например 3118, то компилятор выдаст ошибку «(3118) : fatal error 111: user error: abc». Думаю теперь вы поняли принцип поиска незакрытой скобки.

Я делал так. С начало ввел  #error abc в середину мода, компилятор выдал ошибку «(3118) : fatal error 111: user error: abc». Далее ниже, и еще ниже. Я делал это до тех пор, пока компилятор не вылетел. И наконец-то я нашел незакрытую скобку.

Удачи Вам в поиске незакрытой скобки! 

Автор минуала я, DimanJeans!


#1

Пользователь офлайн
 

Отправлено 26 января 2013 — 01:07

  • Профессионал

В этом туториале я покажу вам,как искать пропущенную скобку.

Для этого нам потребуется:

  • ActivePerl ссылка
  • Скрипт Brackets ссылка

Устанавливаем ActivePerl, затем открываем архив со скриптом Brackets и содержимое папки perl в архиве,переносим в папу Perl,которая создалась при установке ActivePerl.

Теперь как проверить мод:

Берём мод(Именно исходник[.pwn]) и кидаем его в папку Perl.После этого открываем GUI в папке Perl.В левом верхнем углу мы наблюдаем кнопку «Open File» и указываем путь до нашего исходника,после того как вы указали путь,он просканирует ваш мод и покажет вам:

  • Кол-во закрытых скобок
  • Кол-во открытых скобок
  • Если где-то недостаёт какой-либо скобки,он покажет в каком месте.



На этом всё. Туториал подготовил: Darw1

Сообщение отредактировал iRusel: 18 августа 2014 — 20:36

Причина редактирования: Обновлена ссылка на скрипт

8



#2

Отправлено 26 января 2013 — 01:11

  • Профессионал

2



#3

Отправлено 09 марта 2013 — 21:14

  • Новичок

Открывю GUI — ничего не происходит…

0



#4

Отправлено 09 марта 2013 — 21:17

  • Профессионал

Просмотр сообщенияKorsar240 (09 марта 2013 — 21:14) писал:

Открывю GUI — ничего не происходит…

Perl установил?
скрипт закинул куда? В корень?

2



#5

Отправлено 09 марта 2013 — 21:27

  • Новичок

Перл установил естественно, скрипт закинул по пути:

D:ПапкаlibPerl

Добавь в скайп coag.dragon, есть вопрос…

0



#6

Отправлено 09 марта 2013 — 21:31

  • Профессионал

Скопируй скрипт в корень перла к примеру у меня перл установлен D:Program FilesPerl так и копируй скрипт

1



#7

Отправлено 09 марта 2013 — 21:49

  • Новичок

Всё получилось, спасибо iRusel!)

0



#8

Отправлено 12 марта 2013 — 14:49

  • Новичок

Нормальный?? За что репутацию снизил??? За то что просто не понял???

Сообщение отредактировал Korsar240: 12 марта 2013 — 14:50

1



#9

Отправлено 03 июля 2013 — 19:58

  • Banned


#10

Отправлено 20 января 2014 — 17:32

  • Местный

Привет ребята, а он лишние скобки показывает? :smile:

0


  • ← Предыдущая тема
  • Уроки
  • Следующая тема →

  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей

Если вы пропустили где-то скобку (не закрыли), то pawn выдаст 26 ошибок на функции, которые в моде объявлены. 

Если вы поставили лишнюю скобку, pawn вылетит.

Благодаря этому уроку вы сможете найти пропущенную скобку. 

1) Скачиваем эту программу. И открываем ее:

Спойлер

rAw-LC-Vg7w.jpg

2) Кликаем «Browse» и указываем путь до .pwn файла.

3) Нажимаем «Start». 

4) После, программа вам выдаст кол-во открытых и закрытых скобок. Эти числа должны совпадать. Если же нет, вы где-то не закрыли, или не открыли скобку. Также, программа выдаст строку, в которой скобка не закрыта / не открыта. 

Спойлер

kLr6dc3TRJU.jpg

Автор: Evqeniy

Работоспособность данного метода не проверена. В случае обнаружения неисправности, пишите в теме.

На этом все!

Понравилась статья? Поделить с друзьями:
  • Как составить свое меню на день
  • Как найти сайт на смарт тв
  • Как найти произведение дробей онлайн
  • Как найти нужный текст в блокноте
  • Как найти землянику на полянах