構文エラーの件No.03369
KOBO さん 02/09/12 20:55
 
お世話になります

大変初歩的な事項と思われるのですがご教授いただきたくお願いいたします

down のところで構文エラーになります

//---------------
disabledraw;
gofiletop;
while (code != -1) {
    golinetop2;           // 行先頭へ移動
    insert "<P><A href=\""; // hrefの挿入
    golineend2;           // 行末へ移動
  insert "\"><BR>";     // 行末文の挿入
  down;                 // 1桁下へ移動
}
endmacro;
//---------------


処理するデータ

\\Fchoso-sv10\top\workphase\presentation\/330idoutai/
\\Fchoso-sv10\top\workphase\presentation\/340tvsoushin/
\\Fchoso-sv10\top\workphase\presentation\/350radiosoushin/
\\Fchoso-sv10\top\workphase\presentation\/360eiseipokeberu/

頭に<P><A href=" を追加とお尻に "><BR> を追加するものです


ご多忙の折恐縮ですがよろしくお願い致します


以上
 

[ ]
RE:03369 構文エラーの件No.03370
きいろいまふらあ さん 02/09/12 22:40
 
>down のところで構文エラーになります

多分その一つ上の行でエラーになってると思います。

>  insert "\"><BR>";     // 行末文の挿入
>  down;                 // 1桁下へ移動

この2行、行頭の空白が全角スペースです。
半角スペースにしたら通ります。

ブランクが長くて昔からこうだったか思い出せません。(^^;
ヘルプに書いてあるかな?

[ ]
RE:03370 構文エラーの件No.03371
番頭++ さん 02/09/13 04:21
 
> ヘルプに書いてあるかな?

「マクロのヘルプ」で「秀丸マクロの概要」に、
「秀丸マクロの文やキーワードは,すべて小文字だけで記述します。」とかは、
ありますが、一般的な言語関連の「常識」というか ...

.mac の「ファイルタイプ別の設定」で、「表示」タブで、
「全角空白を記号で表示」がお勧めかも ...

IME 関連の設定で「空白」は「半角」にするとか。

# 「定説」って、なんだろう ???

[ ]
RE:03371 構文エラーの件No.03372
たけのこ さん 02/09/13 09:30
 
たけのこです。

>「秀丸マクロの文やキーワードは,すべて小文字だけで記述します。」とかは、
>ありますが、一般的な言語関連の「常識」というか ...

面白い話題ですよね。フリースタイルの言語出身者から見ればたぶん秀丸マクロ
は比較的『常識』的なスタイルで記述しますが、例えばCOBOLのような固定スタ
イル出身者だと『アレレ?』かもしれません。『標識領域にアスタがあったらコ
メントだろ〜!!』

他に『なんで漢字を変数名に使えないんだ?』(Javaとか※)とか、『行番号は
どうやって指定するの?』(Fortranとか)とか、『行の連結記号はいらない
の?』(VBとか)とかってヒトもいるやもしれません。


※でも変数名、インスタンス名に漢字は使わない。ちなみにJavaでも全角空白は
特別扱い。スペースや水平タブとも違うし、普通の文字とも違う。そもそも全角
空白が文字定数やコメント以外の場所にあると、特別なエラーが出る。

[ ]
RE:03372 構文エラーの件No.03373
たけのこ さん 02/09/13 09:36
 
たけのこです。

※の部分、行頭に『私は』が抜けていました。念のため。

あ、あとJavaになれている人間からすると、真偽が数値型っていうのはかなり変……。

[ ]
RE:03370 構文エラーの件No.03374
KOBO さん 02/09/13 22:53
 
うまくいきました。ありがとうございました。

>>down のところで構文エラーになります
>
>多分その一つ上の行でエラーになってると思います。
>
>>  insert "\"><BR>";     // 行末文の挿入
>>  down;                 // 1桁下へ移動
>
>この2行、行頭の空白が全角スペースです。
>半角スペースにしたら通ります。
>
>ブランクが長くて昔からこうだったか思い出せません。(^^;
>ヘルプに書いてあるかな?

[ ]
RE:03371 構文エラーの件No.03375
KOBO さん 02/09/13 22:54
 
ありがとうございました。うまくいきました。

>> ヘルプに書いてあるかな?
>
>「マクロのヘルプ」で「秀丸マクロの概要」に、
>「秀丸マクロの文やキーワードは,すべて小文字だけで記述します。」とかは、
>ありますが、一般的な言語関連の「常識」というか ...
>
>.mac の「ファイルタイプ別の設定」で、「表示」タブで、
>「全角空白を記号で表示」がお勧めかも ...
>
>IME 関連の設定で「空白」は「半角」にするとか。
>
># 「定説」って、なんだろう ???

[ ]
RE:03372 構文エラーの件No.03376
KOBO さん 02/09/13 22:55
 

ありがとうございました。

>たけのこです。
>
>>「秀丸マクロの文やキーワードは,すべて小文字だけで記述します。」とかは、
>>ありますが、一般的な言語関連の「常識」というか ...
>
>面白い話題ですよね。フリースタイルの言語出身者から見ればたぶん秀丸マクロ
>は比較的『常識』的なスタイルで記述しますが、例えばCOBOLのような固定スタ
>イル出身者だと『アレレ?』かもしれません。『標識領域にアスタがあったらコ
>メントだろ〜!!』
>
>他に『なんで漢字を変数名に使えないんだ?』(Javaとか※)とか、『行番号は
>どうやって指定するの?』(Fortranとか)とか、『行の連結記号はいらない
>の?』(VBとか)とかってヒトもいるやもしれません。
>
>
>※でも変数名、インスタンス名に漢字は使わない。ちなみにJavaでも全角空白は
>特別扱い。スペースや水平タブとも違うし、普通の文字とも違う。そもそも全角
>空白が文字定数やコメント以外の場所にあると、特別なエラーが出る。

[ ]
RE:03372 構文エラーの件No.03377
安久津 さん 02/09/14 02:29
 
あくつです。
既にこの話題の関心を失ってると思いますが。(^^;)

● (1) 引用
hidesoft.4:03341| RE 03340 うまく変換できるようになりました。
>前のはうっかり行頭に全角スペースを入れてしまったのでエラーになるはずです。

● (2) 引用
hidesoft.4:03370| RE 03369 構文エラーの件
>この2行、行頭の空白が全角スペースです。
>半角スペースにしたら通ります。
>
>ブランクが長くて昔からこうだったか思い出せません。(^^;
>ヘルプに書いてあるかな?

● (3) 引用
hidesoft.4:03372| RE 03371 構文エラーの件
>※でも変数名、インスタンス名に漢字は使わない。ちなみにJavaでも全角空白は
>特別扱い。スペースや水平タブとも違うし、普通の文字とも違う。そもそも全角
>空白が文字定数やコメント以外の場所にあると、特別なエラーが出る。

● (4)
すごーく昔は知りませんが。
空白文字を許す場所に、全角空白があってもマクロは動きました。
これは確かです。
行頭のインデントを全部全角空白にして実験したことがあります。
v 3.00 以降です。

● (5)
//それと、変数名に漢字が使えます。

    $$へんすう="hoge";
    ##数値=123;
    message "hello world";
endmacro;

● (6)
//ただし、それを参照することはできません。#意味無いじゃん。

    $$へんすう="hoge";
    message $$へんすう;
endmacro;

● (7)
//ラベルは日本語で平気です。

    call らべる;
endmacro;
らべる:
    message "hello world";
return;

● (8) ラベル考( サブルーチン内サブルーチン 1 )
//メニューなどで使う内部サブルーチン。
//この場合、外側のサブルーチンとローカル変数は同じ。

main:
    // 初期化。
    showmenu:
    menuarray $$menu, ##size;
    ##i = result;
    if( ##i == -1 ){

    }else if( ##i == 0 ){
        goto showmenu;
    }

● (9) ラベル考( サブルーチン内サブルーチン 2 )
// hidemaru
// scheme の名前つき let 風に、秀丸ラベルを使う。
    call hanoi 3;
endmacro;
hanoi:
    ##2 = 'a'; ##3 = 'b'; ##4 = 'c';
    hanoi_iter:
    if( ##1 > 0 ){
        call hanoi_iter ##1 - 1, ##2, ##4, ##3;
        insert str(##1) + " 番の円盤を " + char(##2) + " 柱から " +
               char(##3) + " 柱へ移動。\n";
        call hanoi_iter ##1 - 1, ##4, ##3, ##2;
    }
return;

$ gosh -V
Gauche scheme interpreter, version 0.6.1 [sjis]
$ cat h.scm
(define (hanoi n)
  (let hanoi-iter ((i n) (a 'a) (b 'b) (c 'c))
    (if (> i 0)
        (begin
          (hanoi-iter (- i 1) a c b)
          (format #t "~a 番の円盤を ~a 柱から ~a 柱へ移動。~%" i a b)
          (hanoi-iter (- i 1) c b a)))))

$ gosh -l ./h.scm -e '(hanoi 3)' -e '(exit)'

● (10) スコープ
//外側のサブルーチンと異なるスコープを作るのでは無い。

    call fib 8;
    message str(##return);
endmacro;
// #_N はグローバル。
fib:
    if( ##1 <= 2 ) return 1;
    #_N = ##1; ##1 = 3; ##2 = 1; ##3 = 1;
    fib_iter:
        if( ##1 == #_N ){
            return ##2 + ##3;
        }else{
            call fib_iter ##1 + 1, ##3, ##2 + ##3;
        }
return ##return;

;; n は関数ローカル。
(define (fib n)
    (if (<= n 2)
        1
        (let fib-iter ((i 3) (n2 1) (n1 1))
            (if (= i n)
                (+ n2 n1)
                (fib-iter (+ i 1) n1 (+ n2 n1))))))

● (11) 上記をふまえた上での利用法
// カーソル位置のスタイルシートを得る。
    call getCSS colorcode & 0x1f;
    message $$return;
endmacro;
// ラベルにマルチバイト文字を使う。
getCSS:
    if( 0 ){
        // 他から使われることの無いサブルーチン。
        前景色ちょうだい:
            call RGBちょうだい ##1, 0;
        return $$return;
        背景色ちょうだい:
            call RGBちょうだい ##1, 1;
        return $$return;
        RGBちょうだい:
            ##bgr = getconfigcolor(##1, ##2);
            ##r = (##bgr & 0x0000ff) * 0x010000;
            ##g = (##bgr & 0x00ff00);
            ##b = (##bgr & 0xff0000) / 0x010000;
            ##rgb = ##r + ##g + ##b;
            $$rgb = rightstr("000000" + hex(##rgb), 6);
        return $$rgb;
    }
    call 前景色ちょうだい ##1; $$fg = $$return;
    call 背景色ちょうだい ##1; $$bg = $$return;
    $$css = "{ color=#" + $$fg + "; background=#" + $$bg;

    ##st = getconfigcolor(##1,2);
    if( ##st >= 8 ) ##st = 1;
    if( ##st & 0x01 ) $$css = $$css + "; font-weight:bold";
    if( ##st & 0x02 ) $$css = $$css + "; text-decoration:underline";
    if( ##st & 0x04 ) $$css = $$css + "; font-style:italic";

    $$css = $$css + " }";
return $$css;

[ ]
RE:03377 構文エラーの件No.03378
番頭++ さん 02/09/14 07:50
 
 : - 0x3A , ; - 0X3B , # - 0x23 , $ - 0x24

コンパイラ、インタプリタがコードされたモノを評価するときに、
ラベル (Entry Point) 、変数 (User Words) は、
初期のパス (または別のロジック) で評価 (デコード) する、事があります。
その後のパス (または別のロジック) で、
本文 (logic ???) を評価 (パース ???) する時には、
2 byte code の処理がないとか、かもしれません。

トークン (予約語) の区切り文字に「全角の空白」を許すのは、
「個人的」には嫌いです。「好み」かも ...

# 言語って、作者の好みで作られる 。。。

[ ]